// JavaScript Document
var baseUrl = "http://"+ document.domain;
/* Parameters----------------------------------------- */
var numSuggestCols = 2;  // Number of cloumns 
var maxSuggestItems = 10; // Maximum number of suggestions to be displayed
var minSuggestChar=3;	 // Minimum number of characters required to start sugessting
/* End Parameters----------------------------------------- */
var qStrList=new Array();
var vStrList=new Array();
var xhrObj=false;
var fldQueryVal="";
var prevQueryVal="";
var sData= new Array();
var vData= new Array();

function getSuggestionURLStr(){
	return document.frmSearch.Query.value +".txt";
	
}
function initSearch(){
	addEL(document.frmSearch.Query,"keyup",startSuggest,false);	 

}
function startSuggest(evt){
	var evtKey,tgtElement;
	if(window.event){
		evtKey=window.event.keyCode;
		tgtElement=window.event.srcElement;
	}else{
		evtKey=evt.keyCode;
		tgtElement=evt.target;
	}
	if((evtKey>=49 && evtKey<=221) || evtKey==8 || evtKey==32){

		fldQueryVal = tgtElement.value;
			if(fldQueryVal!=""){
				if(fldQueryVal!=prevQueryVal){
					
					fldQueryVal = trimString(fldQueryVal);
					if(fldQueryVal.length >= minSuggestChar ){
						 getSuggestion(fldQueryVal);
					}
					prevQueryVal=fldQueryVal;					
				}
			}else{ 
				document.getElementById("div_suggestions").innerHTML=document.getElementById("div_places_default").innerHTML;
				prevQueryVal="";
			}	
	}
}

function getSuggestion(fval){

	var qStr=getCleanStr(fval);
	var sURLStr= getSuggestionURLStr();
	callSuggest(qStr)
	/*if(typeof qStrList[prevQueryVal] != "undefined"){
	// Check for data for the current search string in the  previously suggested data
		var tempData= checkExistingSuggestions(qStr)
		if(tempData != null){
			qStrList[qStr] = tempData;
		}
	}
	if(typeof qStrList[qStr] == "undefined"){
	// Suggest data doesnot exist on the client and has to be feteched from the server	
			var sURLStr= getSuggestionURLStr();
			//loadSuggestData(fval,u);
			// call CGI script here 
			callSuggest(qStr)
			//showSuggestion(qStr,"asd|asdfff|asdadssda|asdasd")
			// call back function  for the CGI would be remoteCallback()

	}else{
	
	// If data for entered search string is already available in the suggest array and has been already suggested before
		showSuggestion(qStr,null);
		return;
	}*/

}
function remoteCallBack(){
		//alert("in remote Callback of main - " +   document.frmSearch.Query.value +" , "+ sData );
		showSuggestion(document.frmSearch.Query.value, sData);
		//removeScript('rs');
}
function showSuggestion(qStr,sData){

	var allSuggestionsTab = document.getElementById("div_suggestions_all");
	var tempObj = document.getElementById("div_suggestions");
	tempObj.innerHTML  = "";	

	if(sData == null){
		//if(document.getElementById("divS_"+qStr) != "null"){
		if(!document.getElementById("divS_"+qStr)){
			//alert(document.getElementById("divS_"+qStr).innerHTML);
			allSuggestionsTab.appendChild(createNewSTable(qStr));
		}			
	}else{	
		qStrList[qStr]=sData; // add new search data to the data array
		vStrList[qStr]=vData; // add new search data links to the datalinks array
		allSuggestionsTab.appendChild(createNewSTable(qStr));
	}

	tempObj.innerHTML  =  document.getElementById("divS_"+qStr).innerHTML;
	//remove script or cache it...

}
function noSuggestions(){
		var tempObj = document.getElementById("div_suggestions");
		tempObj.innerHTML  = "";	
}
function checkExistingSuggestions(qStr){
	var tempData="";
	var tempStr="";
	var count=0;
	var sArray = new Array();
	sArray = qStrList[prevQueryVal].split("|");
	for (i=0; i <sArray.length; i++){
		tempStr=sArray[i].toLowerCase();
			if(tempStr.match(qStr)){
			tempData = tempData + getCleanStr(sArray[i]) + "|";
			count++;
		}	
	}
	if(count >= maxSuggestItems) return tempData
	else return null;
}


function createNewSTable(qStr){	

	var sA = new Array();
	var vA = new Array();

	sA = qStrList[qStr].split("|");
	vA = vStrList[qStr].split("|");

	var d=document.createElement("div");
	d.setAttribute("id","divS_"+qStr);
	d.setAttribute("style","position: absolute; display: none; left: -5px; top: 168px; width: 160px;");
	var t=document.createElement("table");
	t.setAttribute("id","idT_"+qStr);
	t.setAttribute("cellspacing",0);
	t.setAttribute("cellpadding",0);
	t.setAttribute("border",0);
	t.className="suggestTab";
	d.appendChild(t);
	var tb=document.createElement("tbody");
	tb.setAttribute("id","idTB_"+qStr);
	t.appendChild(tb);
	var newRow,cell;
	var counter = maxSuggestItems;
	newRow =  tb.insertRow(tb.rows.length);
	cell = newRow.insertCell(0);
	cell.setAttribute("width" , 4);
	cell = newRow.insertCell(1);
	newRow =  tb.insertRow(tb.rows.length);
	cell = newRow.insertCell(0);
	cell.setAttribute("width" , 4);
	cell = newRow.insertCell(1);
	var resulthtml= "";
	var showhead = 1;
	if(sA.length > 1){
		for (i=0; i <sA.length; i++){
			if(sA[i]){
				if(showhead = 1){
					cell.innerHTML="<table cellspacing=0 cellpadding=0 border=0 width='100%'><tr><td><font color=#ff6600 size=2><B>Are you looking for:</B>&nbsp;</font></td><td align='right'><a href='#' class='sbcat' onclick='CloseDiv();'>[X]</a></td></tr></table><br>";
					showhead = 0;
				}
				//resulthtml =resulthtml+ " <a class=\"sbcat\" href='javascript:window.open(\""+vA[i]+"\",\"_self\")'>"+getCleanStr(sA[i]) +"<\/a> ";
				resulthtml = resulthtml + "<a class='sbcat' href='javascript:window.open(\""+baseUrl+"/searchtags.php?url=" + vA[i] + "&key=" + qStr + "\", \"_self\");'>"+trim(getCleanStr(sA[i]))+"</a>";
				counter--;
				
				if(counter == 0){
					break;
				}else {
					if((i+1)<sA.length)
						resulthtml =resulthtml+ ", ";
				}
			}
		}
	}
	if(sA.length == 15){
		resulthtml =resulthtml+ "<br><div align='right'><a href='"+baseUrl+"/completesearch.php?searchstr="+qStr+"' class='sbcat'>More...</a></div>";
	}
	cell.innerHTML = cell.innerHTML+resulthtml;
	
	if(cell.innerHTML == ''){
		document.getElementById("div_suggestions_all").style.visibility = 'hidden';
		document.getElementById("div_places_default").style.visibility = 'hidden';
		document.getElementById("div_suggestions").style.display = 'none';
	}
	else{
		document.getElementById("div_suggestions_all").style.visibility = 'hidden';
		document.getElementById("div_places_default").style.visibility = 'hidden';
		document.getElementById("div_suggestions").style.display = 'block';
	}
		return   d;

}

function CloseDiv(){
		document.getElementById("div_suggestions_all").style.visibility = 'hidden';
		document.getElementById("div_places_default").style.visibility = 'hidden';
		document.getElementById("div_suggestions").style.display = 'none';
}
/*function xcreateNewSTable(qStr){

		var sA = new Array();
		sA = qStrList[qStr].split("|");
		var d=document.createElement("div");
		d.setAttribute("id","divS_"+qStr);
		var t=document.createElement("table");
		t.setAttribute("id","idT_"+qStr);
		t.className="suggestTab";
		d.appendChild(t);
		var tb=document.createElement("tbody");
		tb.setAttribute("id","idTB_"+qStr);
		t.appendChild(tb);
		var newRow,cell;
		var counter = maxSuggestItems;
		for (i=0; i <sA.length; i++){
			newRow =  tb.insertRow(tb.rows.length);			
			for(j=0; j<numSuggestCols;j++){
				if(sA[i]){
					cell = newRow.insertCell(j);
					cell.innerHTML = "<a href=\'"+getCleanStr(sA[i]) + "\'>"+getCleanStr(sA[i]) +"<\/a>";i++
					cell.className="suggestTabTd " +numSuggestCols+ "col";
					counter--;
					if(counter == 0){	

						return d;
					}
				}	
			}
			i--;
		}

		return   d;

}*/

function getCleanStr(qStr) {
  var re = new RegExp("'");
  qStr = qStr.replace(re,"");
  return qStr;
}

function addEL(eObj,evtType,fn,c){
	if(eObj.addEventListener){
		eObj.addEventListener(evtType,fn,c);
	}else if(eObj.attachEvent){
		eObj.attachEvent("on"+evtType,fn);
	}
}
function removeEL(eObj,evtType,fn,c){
	if(eObj.removeEventListener){
		eObj.removeEventListener(evtType,fn,c);
	}else{
		eObj.detachEvent("on"+evtType,fn);
	}
}


function trimString (str) {
  //str = this != window? this : str;
  return str.replace(/^\s+/g, '').replace(/\s+$/g, '');
}

//remote scripting functions-------------------------------------------------
function callSuggest(qStr){
	if(qStr != "")	{
		var remoteScript=document.createElement('script'); 
		remoteScript.id = 'rs'; 
		remoteScript.setAttribute('type','text/javascript'); 
		//remoteScript.setAttribute('src','http://pm.greynium.com/holidaymakers_suggest/populate.php?searchstr='+ qStr ); 
		remoteScript.setAttribute('src','http://holidaymakers.in/populate.php?searchstr='+ qStr ); 
		//remoteScript.setAttribute('src','RemotePages/suggestor_'+ qStr +'.js'); 

		var hd=document.getElementsByTagName('head')[0]; 
		// Gotcha: set attribute and src BEFORE appending, or Safari won't work 
		hd.appendChild(remoteScript);
	}
}
function removeScript(id){ 
	var hd=document.getElementsByTagName('head')[0]; 
	alert(document.getElementById(id));
	hd.removeChild(document.getElementById(id)); 
	alert("after");
} 

// Removes leading whitespaces
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));
	
}

