


  var keyStr = "ABCDEFGHIJKLMNOP" + 
               "QRSTUVWXYZabcdef" + 
               "ghijklmnopqrstuv" + 
               "wxyz0123456789-/" + 
               "_"; 


  function decode64(input) { 
     var output = ""; 
     var chr1, chr2, chr3 = ""; 
     var enc1, enc2, enc3, enc4 = ""; 
     var i = 0; 
  
     // remove all characters that are not A-Z, a-z, 0-9, +, /, or = 
     var base64test = /[^A-Za-z0-9\-\/\_]/g; 
     if (base64test.exec(input)) { 
        alert("There were invalid base64 characters in the input text.\n" + 
              "Valid base64 characters are A-Z, a-z, 0-9, '-', '/',and '_'\n" + 
              "Expect errors in decoding."); 
     } 
     input = input.replace(/[^A-Za-z0-9\-\/\_]/g, ""); 
  
     do { 
        enc1 = keyStr.indexOf(input.charAt(i++)); 
        enc2 = keyStr.indexOf(input.charAt(i++)); 
        enc3 = keyStr.indexOf(input.charAt(i++)); 
        enc4 = keyStr.indexOf(input.charAt(i++)); 
  
        chr1 = (enc1 << 2) | (enc2 >> 4); 
        chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); 
        chr3 = ((enc3 & 3) << 6) | enc4; 
  
        output = output + String.fromCharCode(chr1); 
  
        if (enc3 != 64) { 
           output = output + String.fromCharCode(chr2); 
        } 
        if (enc4 != 64) { 
           output = output + String.fromCharCode(chr3); 
        } 
  
        chr1 = chr2 = chr3 = ""; 
        enc1 = enc2 = enc3 = enc4 = ""; 
  
     } while (i < input.length); 
  
     return Base64_utf8_decode(output); 
  } 

  function Base64_utf8_decode(utftext) { 
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;

        while ( i < utftext.length ) {

            c = utftext.charCodeAt(i);

            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else if((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i+1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            }
            else {
                c2 = utftext.charCodeAt(i+1);
                c3 = utftext.charCodeAt(i+2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }

        }

        return string;
    }

function decryptXOR(CodeKey, DataIn)
{
	var strDataOut = "";
	var codechar = "";
	for(ii=0;ii<DataIn.length;ii++)
	{
		//codechar = CodeKey.charCodeAt((ii%CodeKey.length));
		codechar = CodeKey.charCodeAt(((ii+1)%CodeKey.length));
		strDataOut+=String.fromCharCode(codechar^DataIn.charCodeAt(ii));
	}
        return strDataOut;
}


////////////////////////////////////////////////////////////////////////
//borrowed from http://isohunt.com/js/functions.js
////////////////////////////////////////////////////////////////////////
var smooth_timer;

function getBrowser(){
var BrowserDetect = {
  init: function () {
    this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
    this.version = this.searchVersion(navigator.userAgent)
            || this.searchVersion(navigator.appVersion)
            || "an unknown version";
    this.OS = this.searchString(this.dataOS) || "an unknown OS";
  },
  searchString: function (data) {
    for (var i=0;i<data.length;i++) {
      var dataString = data[i].string;
      var dataProp = data[i].prop;
      this.versionSearchString = data[i].versionSearch || data[i].identity;
      if (dataString) {
        if (dataString.indexOf(data[i].subString) != -1)
          return data[i].identity;
      }
      else if (dataProp)
      return data[i].identity;
    }
  },
  searchVersion: function (dataString) {
    var index = dataString.indexOf(this.versionSearchString);
    if (index == -1) return;
    return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
  },
  dataBrowser: [
          {       string: navigator.userAgent,
                  subString: "OmniWeb",
                  versionSearch: "OmniWeb/",
                  identity: "OmniWeb"
          },
          {
                  string: navigator.vendor,
                  subString: "Apple",
                  identity: "Safari"
          },
          {
                  prop: window.opera,
                  identity: "Opera"
          },
          {
                  string: navigator.vendor,
                  subString: "iCab",
                  identity: "iCab"
          },
          {
                  string: navigator.vendor,
                  subString: "KDE",
                  identity: "Konqueror"
          },
          {
                  string: navigator.userAgent,
                  subString: "Firefox",
                  identity: "Firefox"
          },
          {
                  string: navigator.vendor,
                  subString: "Camino",
                  identity: "Camino"
          },
          {               // for newer Netscapes (6+)
                  string: navigator.userAgent,
                  subString: "Netscape",
                  identity: "Netscape"
          },
          {
                  string: navigator.userAgent,
                  subString: "MSIE",
                  identity: "Explorer",
                  versionSearch: "MSIE"
          },
          {
                  string: navigator.userAgent,
                  subString: "Gecko",
                  identity: "Mozilla",
                  versionSearch: "rv"
          },
          {               // for older Netscapes (4-)
                  string: navigator.userAgent,
                  subString: "Mozilla",
                  identity: "Netscape",
                  versionSearch: "Mozilla"
          }
  ],
  dataOS : [
          {
                  string: navigator.platform,
                  subString: "Win",
                  identity: "Windows"
          },
          {
                  string: navigator.platform,
                  subString: "Mac",
                  identity: "Mac"
          },
          {
                  string: navigator.platform,
                  subString: "Linux",
                  identity: "Linux"
          }
  ]
};
  BrowserDetect.init();
  //return BrowserDetect.browser;
  return BrowserDetect;
}






////////////////////////////////////////////////////////////////////////
//	http://isohunt.com/js/functions.js
function servOC(spid, href, nColor, triangleI) {

  var trObj = (document.getElementById) ? document.getElementById('ihtr_' + spid) : eval("document.all['ihtr_" + spid + "']");
  var nameObj = (document.getElementById) ? document.getElementById('name_' + spid) : eval("document.all['name_" + spid + "']");
  //--var ifObj = (document.getElementById) ? document.getElementById('ihif_' + spid) : eval("document.all['ihif_" + spid + "']");

  var browserobj = getBrowser(); 
  var browser = browserobj.browser; 
 
 if (browser == "Firefox" || browser == "Mozilla" || browser == "Netscape" || browser == "Gecko" || browser == "Seamonkey"){
    //ageID.addEventListener("click", stopEvent, false);
    trObj.addEventListener("click", stopEvent, false);
    nameObj.addEventListener("click", stopEvent, false);
    nameObj.addEventListener("click", stopEvent, false);
  }
  else {
    window.event.cancelBubble = true;
  }; 

  //alert(trObj.id + nameObj.id + ifObj.id);
 
 if (trObj != null) {
    if (trObj.style.display=="none") {
      //--ifObj.style.height = "0px";
      trObj.style.display="";

      //nameObj.style.background="#ECECD9";
      nameObj.style.background="#000099";

      if (browser == "Safari" || browser == "Konquerors")
      {
         setTimeout("toggleDownUp('triangle_"+spid+"','down');",1);
      }   else {
        toggleDownUp('triangle_'+spid,'down');
      }
      //--if (!ifObj.src) {
	//--if (href.length > 1)
	//--{ ifObj.src = href; }
      //--}
      //--smoothHeight('ihif_' + spid, 0, 240, 60, 'o');
      smoothHeight('ihtr_' + spid, 0, 240, 60, 'o');

    }
    else {     
      nameObj.style.background=nColor;
      //--smoothHeight('ihif_' + spid, 240, 0, 60, 'ihtr_' + spid);
      smoothHeight('ihtr_' + spid, 240, 0, 60, 'ihtr_' + spid);
      if (browser == "Safari" || browser == "Konquerors")
      {
	setTimeout("toggleDownUp('triangle_"+spid+"','up');",1);
      } else {
        toggleDownUp('triangle_'+spid,'up');
      }
     /* triangleID.setAttribute('src', '/img/serp-toggle-up.gif');*/
    }
  }
}


function toggleDownUp(ele,pos)
{
	var ele = document.getElementById(ele);
	if (ele)
	{
		ele.setAttribute('src', '/images/serp-toggle-'+pos+'.gif');
	}
}


function smoothHeight(id, curH, targetH, stepH, mode)
{
  diff = targetH - curH;
  if (diff != 0)
  {
    newH = (diff > 0) ? curH + stepH : curH - stepH;
    ((document.getElementById) ? document.getElementById(id) : eval("document.all['" + id + "']")).style.height = newH + "px";
    if (smooth_timer) window.clearTimeout(smooth_timer);
    smooth_timer = window.setTimeout( "smoothHeight('" + id + "'," + newH + "," + targetH + "," + stepH + ",'" + mode + "')", 16 );
  }
  else if (mode != "o") ((document.getElementById) ? document.getElementById(mode) : eval("document.all['" + mode + "']")).style.display="none";
}


function stopEvent(ev) {
  // this ought to keep t-daddy from getting the click.
  ev.stopPropagation();
//return false;
// alert("event propagation halted.");
//  ev.cancelBubble = true;
}


//------------------------------------Not Used------------------------------
function servOCorig(i, href, nColor, triangleID) {
  var trObj = (document.getElementById) ? document.getElementById('ihtr' + i) : eval("document.all['ihtr" + i + "']");
  var nameObj = (document.getElementById) ? document.getElementById('name' + i) : eval("document.all['name" + i + "']");
  var ifObj = (document.getElementById) ? document.getElementById('ihif' + i) : eval("document.all['ihif" + i + "']");

  var ageID = document.getElementById('row_6_' + i);
  var browserobj = getBrowser(); 
  var browser = browserobj.browser; 

  if (browser == "Firefox" || browser == "Mozilla" || browser == "Netscape" || browser == "Gecko" || browser == "Seamonkey"){
    ageID.addEventListener("click", stopEvent, false);
    trObj.addEventListener("click", stopEvent, false);
    nameObj.addEventListener("click", stopEvent, false);
    nameObj.addEventListener("click", stopEvent, false);
  }
  else {
    window.event.cancelBubble = true;
  }; 
 if (trObj != null) {
    if (trObj.style.display=="none") {
      ifObj.style.height = "0px";
      trObj.style.display="";
      nameObj.style.background="#ECECD9";
      if (browser == "Safari" || browser == "Konquerors"){
         setTimeout("toggleDownUp('triangle_"+i+"','down');",1);
      }   else {
        toggleDownUp('triangle_'+i,'down');
      }
      if (!ifObj.src) ifObj.src = href;
      smoothHeight('ihif' + i, 0, 210, 42, 'o');

    }
    else {     
      nameObj.style.background=nColor;
      smoothHeight('ihif' + i, 210, 0, 42, 'ihtr' + i);
      if (browser == "Safari" || browser == "Konquerors"){
      setTimeout("toggleDownUp('triangle_"+i+"','up');",1);
      } else {
        toggleDownUp('triangle_'+i,'up');
      }
     /* triangleID.setAttribute('src', '/img/serp-toggle-up.gif');*/
    }
  }
}