var lang = "en";

var pdfUrl = "http://62.181.232.231/url2pdf/?urlpdf=";
var tocHtml = "TOC.htm";
var searchHtml = "search.asp";
var returnUrl; //URL before switching to search
var fileBookmark = "";

// Navigation
var nInRow = 6; // Amount of items in row, in last row Joined chapters
var translMaster = 3; // Column Position in row of Master Text
var langSel = 3;  // Column Position of Translation for Swedish must be 4, default = 3
var htmlFileName; // Name of HTML file loaded to my_content
var navigRows; //Amount of rows in next array
var matchedNavRow; //matched navigation row number
var navigatePrev = ""; // This is html for PrevChapter
var navigateNext = ""; // This is html for NextChapter
var navigateGoto = ""; // This is html for Goto button 
var currHtml = ""; // This is current html for pdf button 
var joinedHtml = ""; // Joined file for pdf

//Structure: fileName1, Text1Default, Text1Se,  fileName2, Text2Default, Text2Se, ....
var navigFiles = new Array(
"", "","", "", "","",
"Foreword.htm", "T","", "Förord En", "Förord","",
"Abstract.htm", "T","", "Sammanfattning En", "Sammanfattning","Sammanfattning.pdf",
"RappTab_1.htm", "T","", "Nyckeldata En", "Nyckeldata","tabeller.pdf",
"RappTab_2.htm", "T","", "Nyckeldata En", "Key data","tabeller.pdf",
"Aimandmethod.htm", "T","", "Syfte och metod En", "Syfte och metod","1_Syfte_och_metod.pdf",
"Marketdevelopment.htm", "T","RappTab_3.htm", "Marknadsutveklingen En", "Marknadsutveklingen","Marknadsutveklingen.pdf",
"Telematics.htm", "T","RappTab_10.htm", "Telematik En", "Telematik","Telematik.pdf",
"Internationalroaming.htm", "T","RappTab_20.htm", "Internationellroaming En", "Internationellroaming","Internationellroaming.pdf",
"Cloudcomputing.htm", "T","RappTab_30.htm", "Cloudcomputing En", "Cloudcomputing","Cloudcomputing.pdf",
"Deltagarlista.htm", "","", "Deltagare En", "Deltagarlista","Deltagarlista.pdf",
"", "","", "", "","",
"RappTab_3.htm", "D","Marknadsutvecklingen.htm", "Marketdevelopment En", "Marketdevelopment","tabeller.pdf",
"RappTab_4.htm", "D","Marketdevelopment.htm", "Marketdevelopment En", "Marketdevelopment","tabels.pdf",
"RappTab_5.htm", "D","Marketdevelopment.htm", "Marketdevelopment En", "Marketdevelopment","tabels.pdf",
"RappTab_6.htm", "D","Marketdevelopment.htm", "Marketdevelopment En", "Marketdevelopment","tabels.pdf",
"RappTab_7.htm", "D","Marketdevelopment.htm", "Marketdevelopment En", "Marketdevelopment","tabels.pdf",
"RappTab_8.htm", "D","Marketdevelopment.htm", "Marketdevelopment En", "Marketdevelopment","tabels.pdf",
"RappTab_9.htm", "D","Marketdevelopment.htm", "Marketdevelopment En", "Marketdevelopment","tabels.pdf",
"RappTab_10.htm", "D","Marketdevelopment.htm", "Marketdevelopment En", "Marketdevelopment","tabels.pdf",
"RappTab_11.htm", "D","Marketdevelopment.htm", "Marketdevelopment En", "Marketdevelopment","tabels.pdf",
"RappTab_12.htm", "D","Marketdevelopment.htm", "Marketdevelopment En", "Marketdevelopment","tabels.pdf",
"RappTab_13.htm", "D","Marketdevelopment.htm", "Marketdevelopment En", "Marketdevelopment","tabels.pdf",
"RappTab_14.htm", "D","Marketdevelopment.htm", "Marketdevelopment En", "Marketdevelopment","tabels.pdf",
"RappTab_15.htm", "D","Marketdevelopment.htm", "Marketdevelopment En", "Marketdevelopment","tabels.pdf",
"RappTab_16.htm", "D","Marketdevelopment.htm", "Marketdevelopment En", "Marketdevelopment","tabels.pdf",
"RappTab_17.htm", "D","Marketdevelopment.htm", "Marketdevelopment En", "Marketdevelopment","tabels.pdf",
"RappTab_18.htm", "D","Marketdevelopment.htm", "Marketdevelopment En", "Marketdevelopment","tabels.pdf",
"RappTab_19.htm", "D","Marketdevelopment.htm", "Marketdevelopment En", "Marketdevelopment","tabels.pdf",
"RappTab_20.htm", "D","Marketdevelopment.htm", "Marketdevelopment En", "Marketdevelopment","tabels.pdf",
"RappTab_21.htm", "D","Marketdevelopment.htm", "Marketdevelopment En", "Marketdevelopment","tabels.pdf",
"RappTab_22.htm", "D","Marketdevelopment.htm", "Marketdevelopment En", "Marketdevelopment","tabels.pdf",
"RappTab_23.htm", "D","Marketdevelopment.htm", "Marketdevelopment En", "Marketdevelopment","tabels.pdf",
"RappTab_24.htm", "D","Marketdevelopment.htm", "Marketdevelopment En", "Marketdevelopment","tabels.pdf",
"RappTab_25.htm", "D","Marketdevelopment.htm", "Marketdevelopment En", "Marketdevelopment","tabels.pdf",
"RappTab_26.htm", "D","Marketdevelopment.htm", "Marketdevelopment En", "Marketdevelopment","tabels.pdf",
"RappTab_27.htm", "D","Marketdevelopment.htm", "Marketdevelopment En", "Marketdevelopment","tabels.pdf",
"RappTab_28.htm", "D","Marketdevelopment.htm", "Marketdevelopment En", "Marketdevelopment","tabels.pdf",
"RappTab_29.htm", "D","Marketdevelopment.htm", "Marketdevelopment En", "Marketdevelopment","tabels.pdf",
"RappTab_30.htm", "D","Marketdevelopment.htm", "Marketdevelopment En", "Marketdevelopment","tabels.pdf",
"RappTab_31.htm", "D","Marketdevelopment.htm", "Marketdevelopment En", "Marketdevelopment","tabels.pdf",
"RappTab_32.htm", "D","Marketdevelopment.htm", "Marketdevelopment En", "Marketdevelopment","tabels.pdf",
"RappTab_33.htm", "D","Marketdevelopment.htm", "Marketdevelopment En", "Marketdevelopment","tabels.pdf",
"RappTab_34.htm", "D","Marketdevelopment.htm", "Marketdevelopment En", "Marketdevelopment","tabels.pdf",
"RappTab_35.htm", "D","Deltagarlista.htm", "Deltagarlista En", "Deltagarlista","",
"", "","", "", "","",
"Deltagarlista.htm", "","", "Deltagare En", "Deltagare","Deltagarlista.pdf",
"", "","", "", "",""
  );

// Translations
var nInRowTr = 3; // Amount of items in row for Translation
var translMasterTr = 1; // Column Position in row of Master Text (0-based)
var langSelTr = 1;  // Column Position of Translation for Swedish.

var translArr = new Array(
"tocbuttonUnhide", "Show Table of Content","Innehållsförteckning »",
"tocbuttonHide", "Hide Table of Content","Dölj innehåll",
"searchbuttonUnhide", "Show Search Funtions","Sökfunktioner »",
"searchbuttonHide", "Hide Search Functions","Dölj sökfunktioner",
"previousChapter", "« Previous Chapter","« Föregående kapitel",
"nextChapter", "Next Chapter »","Nästa kapitel »",
"previousTable", "« Previous Table","« Föregående tabell",
"nextTable", "Next Table »","Nästa tabell »",
"to", "To ...","Till ...",
"toSummary", "To Text Section ","Till textavsnittet",
"toTableSection", "To Table Section","Till tabellavsnittet",
"createPdf", "Create pdf-file","Skapa pdf med valt kapitel",
"help", "Help","Hjälp",
"header", "Market data – filtered on selected Company: ","Marknadsdata – begränsat till: ",
"area", "Area","Område",
"helptext", "Select an area or all areas and select a table or all tables within an area. Then press the Show Report button.","Välj ett område eller alla områden samt välj tabell eller alla tabeller inom ett område. Tryck sedan på Visa rapport.",
"table", "Table","Tabell",
"showreport", "Show Report","Visa rapport"
);


// =====================================================================

var innerframeset;
var buttonsFrame;
var TOCFrame;
var contentFrame; 

var framestate = "TOC"; // TOC, Search, TOC_h, Search_h

// Buttons
var pbPrevChapter;
var pbNextChapter;
var pbGoTo;
var pbTOC;
var pbPdf;
var pbSearch;

var TOCFrameWidth = "300px, *";
var noTOCFrameWidth = "1pt, *";
var TOCCurrWidth = TOCFrameWidth;

var IS_MSXML = false;

//Browser type
if( window.ActiveXObject ) IS_MSXML = true;

//====================================================================

function myload(locat) {
  //alert(locat);
  if (!buttonsFrame) {
    //alert(buttonsFrame);
    return;
  }  
//  if (locat.substr(locat.length - tocHtml.length) == tocHtml) return;
  currHtml = locat;
  prepareNamesLinks();
}

function framebuttonsText() {  //  framestate = "TOC" // TOC, Search, TOC_h, Search_h // pbTOC, pbSearch
      switch (framestate) { 
        case "TOC":    // TOC is shown
          pbTOC.value = translate("tocbuttonHide");
          pbTOC.disabled = false;
          pbSearch.value = translate("searchbuttonUnhide");
          pbSearch.disabled = false;       
          break;
          
        case "Search" :  // Search is shown
          pbTOC.value = translate("tocbuttonUnhide");
          pbTOC.disabled = false;
          pbSearch.value = translate("searchbuttonHide");
          pbSearch.disabled = false;          
          break;  
 
        case "TOC_h" :  // TOC is loaded but hidden
          pbTOC.value = translate("tocbuttonUnhide");
          pbTOC.disabled = false;
          pbSearch.value = translate("searchbuttonUnhide");
          pbSearch.disabled = false;          
          break; 
          
        case "Search_h" :  // Search is loaded but hidden
          pbTOC.value = translate("tocbuttonUnhide");
          pbTOC.disabled = false;
          pbSearch.value = translate("searchbuttonUnhide");
          pbSearch.disabled = false;          
          break; 
         
          
        default :
          alert(framestate);
          pbTOC.disabled = true;
          pbSearch.disabled = true;

      }
      
}

// translation
function translate(text) {
  // Find in translArr Array in first position in row.
  var transRows = translArr.length / nInRowTr -1;
  var row;
  var result = "*** " + text + " ***" ;
  var matchedTrRow = -1; //Not matched
  for (row=0; row <= transRows; row++) {
    result = translArr[nInRowTr * row];
    if (result == text) { //Found
       matchedTrRow = row;
       result = translArr[nInRowTr * row + langSelTr]; 
       return result;
    }
  }

  return result; // Not found
}

function init() {

  //alert("init()");
  
  innerframeset = window.frames["my_innerframeset"];
  contentFrame = window.frames["my_content"];
  TOCFrame = window.frames["my_toc"];
  buttonsFrame = window.frames["my_buttons"];
  
  toc_init ();
  buttons_init();
  
  //Load event
  if (IS_MSXML )  {
    contentFrame.attachEvent('onload',processLoad);
  }
  else {
    contentFrame.addEventListener('load',processLoad,false);
    //alert('AddedEventListener');
  }  
  
}

// According to file loaded into my_content frame
function processLoad () {
	if (!buttonsFrame) {
	  //alert(buttonsFrame);
	  return;
	}  
	var newLocation = "";
	try {
		newLocation = contentFrame.document.location;
	}
	catch(e) {
		newLocation = "";
	}
    myload(newLocation);
}
  

// Removes folders from whole file name
function htmlSource (path) {
var result;
var position;
var filepath;

  filepath = path.toString();
  try {
	filepath = unescape(filepath); //decodeURI gives error under FF
  }
  catch(e) {
	//alert(e);
  }
  //filepath = unescape(filepath);
  //alert(filepath);
  
  fileBookmark = "";
  position = filepath.lastIndexOf("#");
  if (position > 0) {
    fileBookmark = filepath.substr(position + 1, 128);
    filepath = filepath.substr( 0, position);
  }
  
  //alert(filepath);  
  
  position = filepath.lastIndexOf("/");
  if (position > 0) {
    return filepath.substr(position + 1, 128);
  }

  position = filepath.lastIndexOf("\\");
  if (position > 0) {
    return filepath.substr(position + 1, 128);
  }  
  

  
  return filepath;

}

function toc_init () {
  parent.document.all("my_innerframeset").cols=TOCFrameWidth;
}

function content_init() {
   
}

function buttons_init() {
  //if (pbPrevChapter) {
  //  return;
  //}
  //alert(buttonsFrame);
  
  pbPrevChapter = buttonsFrame.document.getElementById("pbprev");  
  pbNextChapter = buttonsFrame.document.getElementById("pbnext");  
  //pbGoTo = buttonsFrame.document.getElementById("pbgoto");         
  pbTOC = buttonsFrame.document.getElementById("pbtoc");       
  pbPdf = buttonsFrame.document.getElementById("pbpdf");          
  pbSearch = buttonsFrame.document.getElementById("pbsearch");   
  
  
  pbPdf.value = translate("createPdf");  
  
  pbTOC.value = translate("tocbuttonHide"); 
  pbSearch.value = translate("searchbuttonUnhide");  
  
  // button TOC
  if (IS_MSXML )  { 
    pbTOC.attachEvent('onclick',toggleToc);
  }
  else {
    //alert(pbTOC.htmlElement);
    pbTOC.addEventListener('click',toggleToc,false);
  }
  
  // button Search
  if (IS_MSXML )  { 
    pbSearch.attachEvent('onclick',toggleSearch);
  }
  else {
    pbSearch.addEventListener('click',toggleSearch,false);
  }
  
  // Previous Chapter
  if (IS_MSXML )  {
    pbPrevChapter.attachEvent('onclick',loadPrev);
  }
  else {
    pbPrevChapter.addEventListener('click',loadPrev,false);
  }
  
  // Next Chapter
  if (IS_MSXML )  {
    pbNextChapter.attachEvent('onclick',loadNext);
  }
  else {
    pbNextChapter.addEventListener('click',loadNext,false);
  }    
  
  
  // Go To
  if (IS_MSXML )  {
    //pbGoTo.attachEvent('onclick',loadGoto);
  }
  else {
    //alert("addEventListener");
    //pbGoTo.addEventListener('click',loadGoto,false);
  }
  
  // Pdf
  if (IS_MSXML )  {
    pbPdf.attachEvent('onclick',makePdf);
  }
  else {
    pbPdf.addEventListener('click',makePdf,false);
  }  
  
  // Initial load
  currHtml = contentFrame.document.location;  //navigFiles[nInRow]; //It is very first page from array
  prepareNamesLinks();    
}

// creates pdf
function makePdf() {
  var myurl;   
  var currHtml0;
  
  if (joinedHtml != "")
    currHtml0 = joinedHtml.toString();
  else
    currHtml0 = currHtml.toString();

  if (currHtml0.substr(0, 4) != "http" ) {
      currHtml = my_content.location;
      currHtml0 = currHtml.toString();
  }  

  //currHtml0 = "http://ds.unified-dialogs.com/ud/slweb.dll?CMD_PARAM=153030053?view?T8fm?Cbt4?&XQLANG=1";
  
  if (currHtml0 != "") {
    if (currHtml0.substr(0, 4) != "http" ) {
        currHtml = my_content.location;
    }
    if (currHtml0.substr(0, 4) != "http" ) {
      alert("Pdf making for local files not allowed.");
      return;
    }
    
    // Remove bookmark if any
      var position = currHtml0.lastIndexOf("#");
      if (position > 0) {
        currHtml0 = currHtml0.substr( 0, position);
      } 
          
    if(currHtml0.substr(currHtml0.length-4).toLowerCase() == ".pdf") {
      //alert(myurl);
      poptastic(currHtml0);
    }
    else {
      myurl = pdfUrl + currHtml0;
      
      //alert(myurl);
      //contentFrame.navigate(myurl);
      poptastic(myurl);
    }
  }
}

function poptastic(url)  {
   var newwindow;
     newwindow=window.open(url,'_blank','');
     if (newwindow && window.focus) {
      try{
        newwindow.focus();
      }
 	    catch(e) {
		    
	    }     
      
     }
    }


// Loads Previous chapter to content frame
function loadPrev() {
  if (navigatePrev != "") {
    parent.my_content.location.href = navigatePrev;
    //contentFrame.navigate(navigatePrev);
  }
}

// Loads Next chapter to content frame
function loadNext() {
  if (navigateNext != "") {
    parent.my_content.location.href = navigateNext;
    //contentFrame.navigate(navigateNext);
  }
}

// Loads Previous chapter to content frame
function loadGoto() {
  if (navigateGoto != "") {
    parent.my_content.location.href = navigateGoto;
    //contentFrame.navigate(navigateGoto);
  }
}

// TOC Button pressed                         //  framestate = "TOC" // TOC, Search, TOC_h, Search_h // pbTOC, pbSearch
function toggleToc() {
      switch (framestate) 
      {
        case "TOC": // TOC is shown
          framestate = "TOC_h"; 
          parent.document.all("my_innerframeset").cols="*,100%";
          //innerframeset.cols = noTOCFrameWidth;
          TOCCurrWidth = noTOCFrameWidth;                   
          break; 
 
        case "TOC_h" :  // TOC is loaded but hidden
          framestate = "TOC";
          parent.document.all("my_innerframeset").cols=TOCFrameWidth;
          //innerframeset.cols = TOCFrameWidth;
          TOCCurrWidth = TOCFrameWidth;          
          break; 

        case "Search" :
        case "Search_h" :  // TOC is loaded but hidden
          framestate = "TOC";
          parent.my_toc.location.href = tocHtml;
          //TOCFrame.navigate(tocHtml);
          
          parent.document.all("my_innerframeset").cols=TOCFrameWidth;
          //innerframeset.cols = TOCFrameWidth;
          TOCCurrWidth = TOCFrameWidth;

          //Restore saved URL
          //alert('Restoring:' + returnUrl);
          if (returnUrl != '') {
              parent.my_content.location.href = returnUrl;
          }

          break;          
          
        default :
          alert(framestate + " 0");
          pbTOC.disabled = true;
          pbSearch.disabled = true;
      }

      // Buttons texts
      framebuttonsText();
}

// Search Button pressed                      //  framestate = "TOC" // TOC, Search, TOC_h, Search_h // pbTOC, pbSearch
function toggleSearch() {
      switch (framestate) 
      {
        case "Search" :  // Search is shown
          framestate = "Search_h"; 
          parent.document.all("my_innerframeset").cols="*,100%";
          //innerframeset.cols = noTOCFrameWidth;
          TOCCurrWidth = noTOCFrameWidth;

          break; 
 
        case "Search_h" :  // Search is loaded but hidden
          framestate = "Search";
          parent.document.all("my_innerframeset").cols=TOCFrameWidth;
          //innerframeset.cols = TOCFrameWidth;
          TOCCurrWidth = TOCFrameWidth;          
          break; 

        case "TOC":
        case "TOC_h" :  // TOC is loaded but hidden
          framestate = "Search";
          parent.my_toc.location.href = searchHtml;

          //alert(parent.my_content.location.href);
          // Url before switching to search
          returnUrl = parent.my_content.location.href;
          //alert('Saved:' + returnUrl);

          //TOCFrame.navigate(searchHtml);
          parent.document.all("my_innerframeset").cols=TOCFrameWidth;
          //innerframeset.cols = TOCFrameWidth;
          TOCCurrWidth = TOCFrameWidth;          
          break;
          
        default :
          alert(framestate + ' 1');
          pbTOC.disabled = true;
          pbSearch.disabled = true;
      }

      // Buttons texts
      framebuttonsText();
}


// Fills Buttons names and Previous/Next/Goto buttons  
function prepareNamesLinks () {  
  //alert(currHtml);
  
  htmlFileName = htmlSource(currHtml);
  var unescHtml;
  unescHtml = unescape(currHtml);
  
  // If it is initial load, skip then as not initialized
  if (!buttonsFrame) {
    //alert(buttonsFrame);
    return;
  }  

  // Find in navigFiles Array in first position in row.
  navigRows = navigFiles.length / nInRow;
  
  var row;
  var result;
  matchedNavRow = -1; //Not matched
  for (row=0; row <= navigRows; row++) {
    result = navigFiles[nInRow * row]; 
    if (result == htmlFileName || result == (htmlFileName + '#' + fileBookmark)) { //Found
       matchedNavRow = row;
       break;
    }
  }
  
  /*if(matchedNavRow<0) {
	alert("Not Matched currHtml=" + currHtml + 
		"\nhtmlFileName=" + htmlFileName);
  }*/
  
  
  // Joined Html if it must be created
  var joinedFile = "";
  if (matchedNavRow >= 0) joinedFile = navigFiles[matchedNavRow * nInRow + nInRow -1];
  if (joinedFile == "") {
    joinedHtml = "";
  }
  else {
    if (unescHtml != "") {
      joinedHtml = unescHtml.replace(htmlFileName, joinedFile);
    }
    else {
      joinedHtml = "";
    }
  }

  // Button names: 'Previous chapter', 'Next chapter', 'Goto'
  if (matchedNavRow >=0 ) {
      //var prevChapterName;
      //var nextChapterName;
      var gotoName;
      var currentSection;
      var tmp;
      
      
      // GOTO button
      currentSection = navigFiles[matchedNavRow * nInRow + 1];
      switch (currentSection) 
      {
        case "T" :  //This is Summary part, so GOTO must be to Data
          navigateGoto = navigFiles[matchedNavRow * nInRow + 2]; // This is html for Goto button
          //pbGoTo.disabled = (navigateGoto == "") ;
          //if(pbGoTo.disabled) pbGoTo.value = translate("to");
          //else pbGoTo.value = translate("toTableSection");
          pbPrevChapter.value = translate("previousChapter");
          pbNextChapter.value = translate("nextChapter");
          break;
          
        case "D" :  //This is Data part, so GOTO must be to Summary
          navigateGoto = navigFiles[matchedNavRow * nInRow + 2]; // This is html for Goto button
          //pbGoTo.disabled = (navigateGoto == "") ;
          //if(pbGoTo.disabled) pbGoTo.value = translate("to");
          //else pbGoTo.value = translate("toSummary"); 
          pbPrevChapter.value = translate("previousTable");
          pbNextChapter.value = translate("nextTable");
          break;   
          
        default :
          //pbGoTo.value = translate("to");
          navigateGoto = ""; 
          //pbGoTo.disabled = true;
          pbPrevChapter.value = translate("previousChapter");
          pbNextChapter.value = translate("nextChapter");
      }      
	

      //PrevChapter button
      tmp = navigFiles[(matchedNavRow - 1) * nInRow];
      if (tmp != "") {
        //prevChapterName = navigFiles[(matchedNavRow - 1) * nInRow + langSel];
        //pbPrevChapter.value +=  " (" + prevChapterName + ")";
        navigatePrev = navigFiles[(matchedNavRow - 1) * nInRow]; // This is html for PrevChapter 
        pbPrevChapter.disabled = false;
      }
      else {
        pbPrevChapter.disabled = true;
      }
      
       //NextChapter button
      tmp = navigFiles[(matchedNavRow + 1) * nInRow];
      if (tmp != "") {
        //nextChapterName = navigFiles[(matchedNavRow + 1) * nInRow + langSel];
        //pbNextChapter.value += " (" + nextChapterName + ")";
        navigateNext = navigFiles[(matchedNavRow + 1) * nInRow]; // This is html for NextChapter
        pbNextChapter.disabled = false;
      }
      else {
        pbNextChapter.disabled = true;
      }     
      

      
  }
  else { //Not matched navigation row
          //pbGoTo.value = translate("to"); 
          //pbGoTo.disabled = true;
          
          pbPrevChapter.value = translate("previousChapter"); 
          pbNextChapter.value = translate("nextChapter");   
          pbPrevChapter.disabled = true;     
          pbNextChapter.disabled = true;
  }
  //var buttons = new Array(pbGoTo, pbPrevChapter, pbNextChapter);
  var buttons = new Array(pbPrevChapter, pbNextChapter);
  for(bi=0; bi<buttons.length; bi++) {
	if (buttons[bi].disabled) buttons[bi].style.display = "none";
	else buttons[bi].style.display = "inline";
  }
  
}

////////////////////////////////////////////////
// GENERAL FUNCTIONS
////////////////////////////////////////////////

function addEvent(elm, evType, fn, useCapture) {
// cross-browser event handling for IE5+,  NS6 and Mozilla
	if (elm.addEventListener){
		elm.addEventListener(evType, fn, useCapture);
		return true;
	} else if (elm.attachEvent){
		var r = elm.attachEvent("on"+evType, fn);
		return r;
	}
}

function isBrowser(browser) {
  var d, dom, ie, ie4, ie5x, moz, mac, win, lin, old, ie5mac, ie5xwin, op;

  d = document;
  n = navigator;
  na = n.appVersion;
  nua = n.userAgent;
  win = ( na.indexOf( 'Win' ) != -1 );
  mac = ( na.indexOf( 'Mac' ) != -1 );
  lin = ( nua.indexOf( 'Linux' ) != -1 );

  if ( !d.layers ){
	 dom = ( d.getElementById );
	 op = ( nua.indexOf( 'Opera' ) != -1 );
	 konq = ( nua.indexOf( 'Konqueror' ) != -1 );
	 saf = ( nua.indexOf( 'Safari' ) != -1 );
	 moz = ( nua.indexOf( 'Gecko' ) != -1 && !saf && !konq);
	 ie = ( d.all && !op );
	 ie4 = ( ie && !dom );

	 ie5x = ( d.all && dom );
	 ie5mac = ( mac && ie5x );
	 ie5xwin = ( win && ie5x );
  }
  if (browser=='Safari') {
    return saf;
    
  }
}




