//Onload functions
if ( !window._onLoadFunctions ) {
  var _onLoadFunctions = [];
}

//Add an onload function.
function addOnLoadFunction( onLoadFunction ) {
  _onLoadFunctions[_onLoadFunctions.length] = onLoadFunction;
}

//Execute onload functions.
function doOnLoad() {
  for ( var i = 0; i < _onLoadFunctions.length; i++ ) {
    _onLoadFunctions[i]();
  }
}

//search the document and build dropdown menus
var cssmenuids=["cssmenu1"] //Enter id(s) of CSS Horizontal UL menus, separated by commas
var csssubmenuoffset=-0.1 //Offset of submenus from main menu. Default is 0 pixels.

function createcssmenu2(){
for (var i=0; i<cssmenuids.length; i++){
   //var ultags=document.getElementById(cssmenuids[i]).getElementsByTagName("ul")    
    //for (var t=0; t<ultags.length; t++){
			//ultags[t].style.top=ultags[t].parentNode.offsetHeight/10 + csssubmenuoffset +"em"
    //}
  }
}

function handlemenu(inmenu) {
	if ($(inmenu).style.visibility=='visible') {
		$(inmenu).style.visibility='hidden';
	}else {
		$(inmenu).style.visibility='visible'; 
		switch (inmenu) {
			case 'sharelinks':
				$('helplinks').style.visibility='hidden';
				break;
			case 'helplinks':
				$('sharelinks').style.visibility='hidden';
				break;		
		}
	}
}

var ie5=document.all&&document.getElementById
var ns6=document.getElementById&&!document.all
function hidemenu(e){
	var firingobj=ie5? event.srcElement : e.target
	if (firingobj.className!="menu") {
		//document.getElementById('sharelinks').style.visibility="hidden"
		//document.getElementById('helplinks').style.visibility="hidden"
	}
}
if (ie5||ns6){
	document.onclick=hidemenu
}

if (window.addEventListener)
window.addEventListener("load", createcssmenu2, false)
else if (window.attachEvent)
window.attachEvent("onload", createcssmenu2)

//function for bookmark a page
function addbookmark(title, url){
	try {
		if (window.opera || window.sidebar) {
  		alert('Press "Ctrl + D" to bookmark the current page!');
  	} else if(document.all){ //IE
    	window.external.AddFavorite(url, title);
  	}
  	else {
  		alert("Your broswer doesn't support this functionality! Please use the bookmark menu provided by your browser.");
  	}
  }catch (E) {
  	alert("Your broswer doesn't support this functionality! Please use the bookmark menu provided by your browser.");
  }
}

//move div
var pickedUp = new Array("", false);
function getReadyToMove(element, evt) {
	var firingobj=ie5? event.srcElement : evt.target;
	if (firingobj.tagName!="INPUT" && firingobj.tagName!="TEXTAREA") {
		pickedUp[0] = element;
		pickedUp[1] = true;
		var curSelection = $(pickedUp[0]);
		pickedUp[2] = evt.clientY - parseInt(curSelection.style.top);
		pickedUp[3] = local_getPageWidth() - evt.clientX - parseInt(curSelection.style.right);
		curSelection.style.cursor = "move";
	}
}

function checkLoadedObjects(evt) {
	if (pickedUp[1] == true) {
		var currentSelection = document.getElementById(pickedUp[0]);
		currentSelection.style.position = "absolute";
		currentSelection.style.top = evt.clientY - pickedUp[2] + "px";
		currentSelection.style.right = local_getPageWidth() - evt.clientX  - pickedUp[3] + "px";
	}
}

function dropLoadedObject(evt) {
	if (pickedUp[1] == true) {
		var currentSelection = document.getElementById(pickedUp[0]);
		currentSelection.style.position = "absolute";
		currentSelection.style.top = evt.clientY - pickedUp[2] + "px";
		currentSelection.style.right = local_getPageWidth() - evt.clientX - pickedUp[3] + "px";
		pickedUp = new Array("", false);
		currentSelection.style.cursor = "default";
	}
}

function local_getPageHeight() {
    var height;
    if ( self.innerHeight ) {
        height = self.innerHeight;
    } else if ( document.documentElement && document.documentElement.clientHeight ) {
        height = document.documentElement.clientHeight;
    } else if ( document.body ) {
        height = document.body.clientHeight;
    }
    return height;
}
var curwindow = '';
function local_getPageWidth() {
    var width;
    if ( self.innerWidth ) {
        width = self.innerWidth;
    } else if ( document.documentElement && document.documentElement.clientWidth ) {
        width = document.documentElement.clientWidth;
    } else if ( document.body ) {
        width = document.body.clientWidth;
    }
    return width;
}

		function getMultiby() {
			var x = document.getElementsByTagName("body")[0];
			if (window.getComputedStyle)
				var y = document.defaultView.getComputedStyle(x,null).getPropertyValue('font-size');
			else
				var y = x.currentStyle['fontSize'];
			return parseInt(y);
		}
		function getStyle(el,styleProp)
		{
			var x = document.getElementById(el);
		  if (x.currentStyle) {
				var y = x.currentStyle[styleProp];
				y = parseInt(y)*getMultiby();
			} else if (window.getComputedStyle)
				var y = document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp);
			return parseInt(y);
		}
		window.onresize = function() {
			recenter();
		}
		function recenter(inwindow) {
			if (!(inwindow)) {inwindow = curwindow;}
			if (inwindow=='') {return;}
			else {curwindow = inwindow;}
  		var inwidth = 0, inheight = 0;
  		if (!(window.opera)) {	
  			inwidth = getStyle(inwindow, 'width');
  			inheight = getStyle(inwindow, 'height');
  		}
  		if ( !(inheight) || (inheight == 0) ) {
  			switch (inwindow){
  				case 'feedback':
  					inheight = 22.5*getMultiby();
  					break;
  				case 'share':
  					inheight = 20*getMultiby();
  					break;
  				case 'url-link':
				  	inheight = 8.5*getMultiby();
  					break;		
  			}
  		}
  		if ( !(inwidth) || (inwidth == 0) ) {
  			switch (inwindow){
  				case 'feedback':
  					inwidth = 20*getMultiby();
  					break;
  				case 'share':
  					inwidth = 35.5*getMultiby();
  					break;
  				case 'url-link':
				  	inwidth = 35.5*getMultiby();
  					break;		
  			}
  		}  		
    	var mypageheight = local_getPageHeight();
    	var mypagewidth = local_getPageWidth();
    	$('shareback').style.width = Math.max(mypagewidth, 3000) + "px";
    	$('shareback').style.height = Math.max(mypageheight, 1200) + "px";  
			$(inwindow).style.right = (mypagewidth-inwidth)/2 + "px";
    	$(inwindow).style.top = (mypageheight-inheight)/2 + "px";
		}  
		function isIE6() {
			var browserName=navigator.appName; 
			if (browserName=="Microsoft Internet Explorer") {
				var curAgent = navigator.userAgent;
				var pos = curAgent.indexOf('MSIE');
				var bVersion = -1;
				if (pos >-1)
					bVersion = curAgent.substring( pos+5, pos+6);
				if (bVersion <= 6)
					return true;
			}
			return false;
		}		
		function displaycenter(inwindow) {
			recenter(inwindow);
    	$('shareback').style.display = 'block';
    	if (!isIE6()) {
    		document.getElementsByTagName("body")[0].style.overflow = 'hidden';
    	}
    	$(inwindow).style.display = 'block';
		}  

    function showurl() {
    	$('url').style.width = 33.6*getMultiby() + "px";
    	displaycenter('url-link');
    	$('url').select();
    	if (window.netscape) {$('urlhint').innerHTML = 'Press "Ctrl + C "to copy the link to the clipboard';}
      $('share').style.display='none';
      $('feedback').style.display = 'none';
      $('sharelinks').style.visibility='hidden';
      disableAll();
      enableAll($('url-link'));
      return false;
    }    
    
  function resetForm(inForm) {
  	switch (inForm) {
  		case 'feedback':
  					$('feedbackcomment').disabled = false;
      			$('feedbackemail').disabled = false;
      			$('feedbacksubmit').disabled = false;
      			$('feedbacksubject').disabled = false;
      			$('feedbackform').reset();
      			$('feedbackresult').style.display = 'none';
      			$('feedbackresultcontent').innerHTML = '';
      			feedbackvalidation.reset(); 
      			break;  
      case 'share':
      			$('shareform').reset();
      			$('to').disabled = false;
      			$('from').disabled = false;
      			$('message').disabled = false;
      			$('sharesubmit').disabled = false;
      			$('sharesubject').disabled = false;
      			$('shareresult').style.display = 'none';
      			$('shareresultcontent').innerHTML = '';
      			sharevalidation.reset(); 
      			break;
  	}  	
  }
  
  function inCollection(inKey, inCollection) {
  	for (var i=0; i<inCollection.length; i++)
  		if (inCollection[i] == inKey)
  			return true;
  	return false;
  }
  var disableTagCollection = new Array('input', 'a', 'textarea', 'select', 'li');
  function trim(str) {
  	return str.replace(/^\s+|\s+$/g, '') ;
  }
  function disableAll(node) {
		if (!node) node = document.getElementsByTagName("body")[0];
    var els = node.getElementsByTagName("*");
    for(var i=0,j=els.length; i<j; i++) {
    	if (inCollection(trim(els[i].tagName).toLowerCase(), disableTagCollection)){
    		els[i].tabIndex = -99;
    	}
    }
  }
  
  function enableAll(node) {
		if (!node) node = document.getElementsByTagName("body")[0];
    var els = node.getElementsByTagName("*");
    for(var i=0,j=els.length; i<j; i++){
    	if (inCollection(trim(els[i].tagName).toLowerCase(), disableTagCollection)){
    		els[i].tabIndex = 0;
    	}
    }
  }
  
  function afterclose() {
  	enableAll();
  	$('shareback').style.display = 'none';
  	if (!isIE6()) {
    	document.getElementsByTagName("body")[0].style.overflow = 'visible';
    }
    curwindow = '';
  }     
  function close_window(win) { 
      $(win).style.display = 'none';
      afterclose();
      return false;  	
  }
	function copyToClipboard(s)
    {
        var t = $(s).value;
        $(s).select();
        if( window.clipboardData && clipboardData.setData )
        {
            clipboardData.setData("Text", t);
        }
   else if (window.netscape)
   {
   		//if using firefox, you have to enable clipboard first. See http://www.febooti.com/support/website-help/website-javascript-copy-clipboard.html for details
       netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
       var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
     if (!clip) return;
       var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
     if (!trans) return;
       trans.addDataFlavor('text/unicode');
       var str = new Object();
     var len = new Object();
       var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
       var copytext=t;
       str.data=copytext;
       trans.setTransferData("text/unicode",str,copytext.length*2);
       var clipid=Components.interfaces.nsIClipboard;
       if (!clip) return false;
       clip.setData(trans,null,clipid.kGlobalClipboard);
   }
   return false;
    }

//PNG Fix for IE
function fix_png(){
if ( document.all && document.styleSheets && document.styleSheets[0] && document.styleSheets[0].addRule ) {
  document.styleSheets[0].addRule( 'div.png', "behavior:url('" + window.common_url + "include/iepngfix.htc')" );
  document.styleSheets[0].addRule( 'img.png', "behavior:url('" + window.common_url + "include/iepngfix.htc')" );
}
}
addOnLoadFunction(fix_png);

// Popup window
function popup( link, target, width, height ) {
  var left = (screen.availWidth - width)/2;
  var top = (screen.availHeight - height)/2;
  var style = 'toolbar=0,location=0,directories=0,status=1,menubar=0,scrollbars=0,resizable=1';
  var location = 'width=' + width + ',height=' + height + ',left=' + left + ',top=' + top;
  var thepopup = window.open( link, target, style + ',' + location );
  thepopup.focus();
  return true;
}


//Return a string with at most maxLen characters
function truncate( theString, maxLen ) {
  var newStr = '';
  if ( theString.length > maxLen ) {
    newStr = theString.substring( 0, maxLen - 3 ) + '...';
  } else {
    newStr = theString;
  }
  return newStr;
}

//Escape xml
function escapeXml( inputString ) {
  var outputString = '';
  for ( var i = 0; i < inputString.length; i++ ) {
    var ch = inputString.charAt( i );
    var code = inputString.charCodeAt( i );
    if ( ch == '&' ) {
      outputString += '&amp;';
    } else if ( ch == '<' ) {
      outputString += '&lt;';
    } else if ( ch == '>' ) {
      outputString += '&gt;';
    } else if ( ch == '"' ) {
      outputString += '&quot;';
    } else if ( ch == '\'' ) {
      outputString += '&#039;';
    } else if ( code > 0x7f ) {
      outputString += '&#' + code + ';';
    } else {
      outputString += ch;
    }
  }
  return outputString;
}

//Determine if character is a space
function isSpace( charCode ) {
  if ( charCode <= 0x20 || charCode == 0xA0 ) {
    return true;
  }
  return false;
}

//Trim whitespace from ends of a string
function trim( inputString ) {
  var begin = 0;
  var end = inputString.length - 1;
  while ( begin < inputString.length && isSpace( inputString.charCodeAt( begin ) ) ) {
    begin++;
  }
  while ( end > begin && isSpace( inputString.charCodeAt( end ) ) ) {
    end--;
  }
  return inputString.substring( begin, end + 1 );
}

//Highlight keywords with bold tag

/*
function highlight( inputString, keyword ) {
  var outputString = '';
  var theInputString = inputString.toLowerCase();
  var matchStrings = keyword.toLowerCase().split( ' ' );
  matchStrings.sort( function( a, b ) { 
    if ( a.length < b.length ) return 1;
    else if ( a.length > b.length ) return -1;
    else return 0;
  } );
  for ( var i = 0; i < inputString.length; i++ ) {
    var matched = false;
    for ( var j = 0; j < matchStrings.length; j++ ) {
      if ( theInputString.indexOf( matchStrings[j], i ) == i ) {
        outputString += '<b>' + inputString.substring( i, i + matchStrings[j].length ) + '</b>';
        i += matchStrings[j].length - 1;
        matched = true;
        break;
      }
    }
    if ( !matched ) {
      outputString += inputString.charAt( i );
    }
  }
  return outputString;
}
*/

function highlight( inputString, keyword ) {
  return inputString;
}




//Get sponsored link ad


function getAd( genieSite, keyword, titleMax, descriptionMax ) {
  var adHtml = '';
  adHtml += '<li>';

  adHtml += '<div class="title">';
  adHtml += '<a href="' + escapeXml( genieSite.clickUrl ) + '" '
         + 'onmouseover="window.status=\'http://' + escapeXml( genieSite.displayUrl )
         + '\'; return true;" onmouseout="window.status=\'\'; return true;">'
         + highlight( escapeXml( truncate( genieSite.title, titleMax ) ), keyword ) + '</a>';
  adHtml += '</div>';

  adHtml += '<div class="description">'
  adHtml += '<a href="' + escapeXml( genieSite.clickUrl ) + '" '
         + 'onmouseover="window.status=\'http://' + escapeXml( genieSite.displayUrl )
         + '\'; return true;" onmouseout="window.status=\'\'; return true;">'
         + highlight( escapeXml( truncate( genieSite.description, descriptionMax ) ), keyword ) + '</a>';
  adHtml += '</div>';

  adHtml += '<div class="url">';
  adHtml += '<a href="' + escapeXml( genieSite.clickUrl ) + '" '
         + 'onmouseover="window.status=\'http://' + escapeXml( genieSite.displayUrl )
         + '\'; return true;" onmouseout="window.status=\'\'; return true;">'
         + highlight( escapeXml( genieSite.displayUrl ), keyword ) + '</a>';
  adHtml += '</div>';

  adHtml += '</li>';
  return adHtml;
}


//Get ads for page
function getAds( genieResult, keyword, offset, count, titleMax, descriptionMax ) {
  var adsHtml = ''
  if ( genieResult && genieResult.size > 0 ) {
    adsHtml += '<h2>Sponsored Results</h2>';
    adsHtml += '<ul>';
    for ( var i = offset; i < genieResult.size && i < offset + count; i++ ) {
      adsHtml += getAd( genieResult.sites[i], keyword, 70, 90 );
    }
    adsHtml += '</ul>';
  }
  return adsHtml;
}

//Show ads on page. 
function showAds( keyword, adsTop, adsRight ) {
  var genieResult = getGenieResult();

  // top ads
  if ( genieResult && genieResult.size > 0 && adsTop > 0 ) {
    var theDiv = document.getElementById( 'sponsoredTop' );
    var theAds = getAds( genieResult, keyword, 0, adsTop, 70, 90 );
    if ( theAds.length > 0 ) {
      theDiv.innerHTML = theAds;
      theDiv.style.display = 'block';
    }
  }

  // right ads
  if ( genieResult && genieResult.size > adsTop && adsRight > 0 ) {
    var theDiv = document.getElementById( 'sponsoredRight' );
    var theAds = getAds( genieResult, keyword, adsTop, adsRight, 30, 70 );
    if ( theAds.length > 0 ) {
      theDiv.innerHTML = theAds;
      theDiv.style.display = 'block';
    }
  }
}
