 var newSearchPage = false;
 var searchText = '';
 var myPageTemplateName = "";
function searchBoxEvent() {
 	 var resLibForm = $("baynote_searchBox");
     var inputEl = $('search');
     if (inputEl && resLibForm) {
		
		$(inputEl).addEvent('keyup', function() {
				 if (newSearchPage) {
					var value = $(inputEl).value;
					 if(myPageTemplateName != 'BMS10_Header'){
						 if (value != '') {
							 callAutoComplete($(inputEl));
						 } else {
							 recentSearch();	 
						 }
					 }
				 }
		});
		/*
		$(inputEl).keyup(function() {
				 var value = $(inputEl).val();
				 if (newSearchPage) {
					 if(myPageTemplateName != 'BMS10_Header'){
						 if (value != '') {
							 callAutoComplete($(inputEl));
						 } else {
							 recentSearch();	 
						 }
					 }
				 }
			 
 */
 
			$(inputEl).addEvent('blur', function() {
				clearTimeout(handleFocus_id);
				setTimeout("nowHide()",300);			
			});
	
			 
		$(inputEl).addEvent('focus', function() {
			clearTimeout(handleFocus_id);
			handleFocus_id = setTimeout( handleFocus, 100);
			
			
		});
			 
     }
}

var handleFocus_id;
function handleFocus(){

		$$('.header_search_suggest')[0].empty();
		/*
		$$('.header_search_suggest')[0].set({
		 styles: {
			visibility : 'visible',
			display:'block'
			}
		});*/
		var inputEl = $('search');
		 var value = $(inputEl).value;
		 if (newSearchPage) {
			 if(myPageTemplateName != 'BMS10_Header'){
				 if (value != '') {
					 callAutoComplete($(inputEl));
				 } else {
					 recentSearch();	 
				 }
			 }
		 }
}

function nowHide()
{
	$$('.header_search_suggest')[0].empty();
	$$('.header_search_suggest').set({styles:{'visibility' : 'hidden'}});
}

function addURLParameter(url, paramName, paramValue) {
	if (url.indexOf('?') >= 0) {
		url = url + '&' + paramName + '=' + paramValue
	} else {
		url = url + '?' + paramName + '=' + paramValue
	}
	return url;
}

function escapeJS(text){
	if(text){
		text = text.replace(/'/g,"\\'");
	}
	return text;
}

function hideRecentSearch(e) {
	if (!$(Event.element(e)).up('.autocomplete')) {
		document.getElementById('searchFields').className = '';
		loadingDiv('quickResults', 'hide');
		Event.stopObserving(document.body, 'click', hideRecentSearch);
	}
}

function recentSearch() {
	var recentTerms = decodeURIComponent(readCookie('recentSearchCookie'));
	var searchLink = '';
	// decodeURIComponent turns null in a 'null' string, so checking here
	if(recentTerms && recentTerms != 'null') {
		if(searchResultsLink.indexOf("?") > 0) {
			searchLink = searchResultsLink+'&onsite=0&q=';
		} else {
			searchLink = searchResultsLink+'?onsite=0&q=';
		}
		var termArray = recentTerms.split(':');
		var recentSearchTermHMTL = '<ul id=\"recentSearchTerms\">';
		for(var i=0; i<termArray.length; i++) {
			//recentSearchTermHMTL += '<li><a onclick=\"scas()\" href=\"'+searchLink+termArray[i]+'\">'+termArray[i]+'</a></li>';
			recentSearchTermHMTL += '<li><a href="#" onClick="javascript:submitSearchForm(\''+ termArray[i] +'\')">'+termArray[i]+'</a></li>';
		}
		recentSearchTermHMTL += '</ul>';	
		//document.getElementById('Autocomplete_search').innerHTML = recentSearchTermHMTL;
		//document.getElementById('searchFields').className = 'active';
		//loadingDiv('quickResults', 'show');
		$$('.header_search_suggest')[0].set({
		 styles: {
	        visibility : 'visible',
	        display:'block'
	    }, html: recentSearchTermHMTL
		});
	}	
}

function addTermToCookie(name, value, days) {
	var recentTerms = decodeURIComponent(readCookie('recentSearchCookie'));
	var newTerm = value;
	// decodeURIComponent turns null in a 'null' string, so checking here
	if(recentTerms && recentTerms != 'null') {
	    var	termArray = recentTerms.split(':');
		var count = 0;
		for(var i=0; i<termArray.length; i++){
			if (value != termArray[i]){
				newTerm = newTerm + ':'+ termArray[i];
				count++;
			}
			if(count == 4){break;}
		}
	}
	createCookie(name, newTerm, days);
}

function createCookie(name,value,days){
	 if (days) {
	     var date = new Date();
	     date.setTime(date.getTime()+(days*24*60*60*1000));
	     var expires = "; expires="+date.toGMTString();
	 }
	 else var expires = "";
	 document.cookie = name+"="+encodeURIComponent(value)+expires+"; path=/";
 }
 
 function readCookie(name) {
      var nameEQ = name + "=";
      if(document.cookie != null && document.cookie != '')
      {
	       var ca = document.cookie.split(';');
	       for(var i=0;i < ca.length;i++) {
	           var c = ca[i];
	           while (c.charAt(0)==' ') c = c.substring(1,c.length);
	           if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	       }
      }
      return null;
  }

function callAutoComplete(pQueryValue) {
	//removing leading and trailing spaces
	//var q = trim(pQueryValue.value);	
	var q = trim($(pQueryValue).value);
	if(q != '' && q.length != 0) {
		$$('.header_search_suggest')[0].empty();
		//document.getElementById('Autocomplete_search').innerHTML = '';
		//document.getElementById('searchFields').className = '';
		//loadingDiv('quickResults', 'hide');
		//document.getElementById('searchSubmit').className = 'searchSubmit searching';
	
		BaynoteAPI.getAjaxTag().send({
			bnURL: '/baynote/api',
			onSuccess: myGuideRestHandler,
			onFailure: myErrorHandler,
			params: {
				query: q,
				action: 'AutoComplete',
				size: 5,
				format: 'xml'
			}
		});
	} else {
		$$('.header_search_suggest')[0].empty();
		//document.getElementById('Autocomplete_search').innerHTML = '';
		//document.getElementById('searchFields').className = '';
		//loadingDiv('quickResults', 'hide');
		//document.getElementById('searchSubmit').className = 'searchSubmit';
		$$('.header_search_suggest').set({styles:{'display' : 'none'}});
	}
}
 
function myGuideRestHandler(responseText) {
	var guideDoc = parseXML(responseText);
	var tmTag = guideDoc.getElementsByTagName("tm");
	var terms = '';
	for(var i=0; i < tmTag.length; i++) {
		terms = terms + tmTag[i].childNodes[0].nodeValue + ":";
	}
	terms = terms.substring(0, terms.length-1);
	autoComplete(terms);
}
function myErrorHandler(responseText) {
	document.getElementById('Autocomplete_search').innerHTML = '';
	document.getElementById('searchFields').className = '';
	loadingDiv('quickResults', 'hide');
	document.getElementById('searchSubmit').className = 'searchSubmit';
}

function autoComplete(terms) {
	var searchLink = '';
	if(terms) {
		if(searchResultsLink.indexOf("?") > 0) {
			searchLink = searchResultsLink+'&onsite=0&q=';
		} else {
			searchLink = searchResultsLink+'?onsite=0&q=';
		}
		var termArray = terms.split(':');
		var recentSearchTermHMTL = '<ul id=\"recentSearchTerms\">';
		for(var i=0; i<termArray.length; i++) {
			//recentSearchTermHMTL += '<li><a href=\"'+searchLink+termArray[i]+'\">'+termArray[i]+'</a></li>';
			recentSearchTermHMTL += '<li><a href="#" onClick="javascript:submitSearchForm(\''+ termArray[i] +'\')">'+termArray[i]+'</a></li>';
		}
		recentSearchTermHMTL += '</ul>';	
		//document.getElementById('Autocomplete_search').innerHTML = recentSearchTermHMTL;
		//document.getElementById('searchFields').className = 'active';
		//loadingDiv('quickResults', 'show');
		//$$('.header_search_suggest')[0].html = ;
		
		$$('.header_search_suggest')[0].set({
		 styles: {
	        visibility : 'visible',
	        display:'block'
	    }, html: recentSearchTermHMTL
		});
	}
	//document.getElementById('searchSubmit').className = 'searchSubmit';
}

function submitSearchForm(query) {
	
	window.bmsSearchOnUnload();
	var form = $("baynote_searchBox");
	//$(':input[name=onsite]', form).val('0');
	$$('#baynote_searchBox :input[name=onsite]')[0].value =  '0';
	$$('#baynote_searchBox :input[name=q]')[0].value = query;
	if(myPageTemplateName == "BMS10_Header"){
		form.target = '_top'
	}
	//form.submit();
	submitSearchBMS(form,true,'SEARCH');
	
	return false;
}

function handleTipMouseOver(divId, display){
	var divObj = document.getElementById(divId);
	var linkSetActive = document.getElementById('btn_popularTip');
	var bubbleOutWrap = '';
	
	if (divObj.style.display == 'none') {
		linkSetActive.className = 'active';
		loadingDiv(divId, display);
		bubbleOutWrap += '<div id="bubbleOutWrap" style="width: 643px; height: 547px; position: absolute; z-index: 200; top: -106px; left: -159px;"' 
		bubbleOutWrap += 'onMouseOver="javascript:handleTipMouseOut(event);">';
		bubbleOutWrap += '<div id="bubbleOutDetect" style="margin: 0pt auto; width: 57%; height: 52%; position: relative; top: 19%; z-index: 201;" '; 
		bubbleOutWrap += 'onMouseOver="handleTipMouseOut(event)"></div></div>';
		divObj.parentNode.innerHTML += bubbleOutWrap;
	}
}

function handleTipMouseOut(event){
	var divDetect = document.getElementById('bubbleOutDetect');
	var evt = event || window.event
	element = evt.target || evt.srcElement;
	if(divDetect == element){
		if(window.event){
			evt.cancelBubbles = true;
		}else{
		 event.stop();
		}
	}else{
		var divObj = document.getElementById('popularTip');
		var linkSetActive = document.getElementById('btn_popularTip');
		divObj.parentNode.removeChild(document.getElementById('bubbleOutWrap'));
		linkSetActive.className = '';
		loadingDiv('popularTip', 'hide');
	}
}
function getDocDescription(result,smNodeValue){
	var description = smNodeValue;
	if(lib == '1' || gf == '1' || getANodeValue(result,"PageType") == "document"){
		var descA = getANodeValue(result,"Description");
		if(descA){
			description = descA;
		}
	}
	return description;
}
function getANodeValue(result,aNodeName){
	var aNodeValue = "";
	var aNodes = result.childNodes;		
	for(j = 0; j< aNodes.length; j++ ){
		var attr = aNodes[j].attributes;
		if(attr){
			if(attr.getNamedItem("n").nodeValue == aNodeName){
				aNodeValue = attr.getNamedItem("v").nodeValue;
				break;
			}
		}
	}
	return aNodeValue;
}

//This is to decode the Search term getting from request parameter
var Url = { 
	// public method for url encoding
	encode : function (string) {
		return escape(this._utf8_encode(string));
	},
 
	// public method for url decoding
	decode : function (string) {
		return this._utf8_decode(unescape(string));
	},
 
	// private method for UTF-8 encoding
	_utf8_encode : function (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";
 
		for (var n = 0; n < string.length; n++) { 
			var c = string.charCodeAt(n); 
			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			} 
		} 
		return utftext;
	},
 
	// private method for UTF-8 decoding
	_utf8_decode : function (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 LTrim(value) {
	var re = /\s*((\S+\s*)*)/;
	return value.replace(re, "$1");
}
// Removes ending whitespaces
function RTrim(value) {
	var re = /((\s*\S+)*)\s*/;
	return value.replace(re, "$1");
}
// Removes leading and ending whitespaces
function trim(value) {
	return LTrim(RTrim(value));
}

function parseXML(text) {
	if (window.DOMParser) {
		parser=new DOMParser();
		xmlDoc=parser.parseFromString(text,"text/xml");
	} else { // Internet Explorer
		isIE = true;
		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async="false";
		xmlDoc.loadXML(text);
	}
	return xmlDoc;
}

window.addEvent('load', function() {
		searchBoxEvent();
});


