/*AUTHOR : Julien BOTTEMANNE (julien@domlike.net)DATE : 2006/07/16Visit my blog : www.domlike.netor contact me : julien@domlike.net*/// globale variable  Initialisation var Lines = new Array();var iLines = 0;var isLuckSearch = false;var timercount = 0;var timestart  = null;var logError = '';// handlervar myGlobalHandlers = {		onCreate: function(){			Element.show(AS_Result_ID_Activity);		},		onComplete: function() {			if(Ajax.activeRequestCount == 0){				SortLinesArray();				ShowLines();				Element.show(AS_Result_ID);				Element.hide(AS_Result_ID_Activity);			 }	 	}	};Ajax.Responders.register(myGlobalHandlers);function callLuck(){	isLuckSearch=true;	callSearch();}function callDomgle(){	//var searchStr = document.search.SearchString.value; //** 20110411 acc	var searchStr = document.getElementById("QueryString_1").value;	var allres    = document.getElementById("all_results").innerHTML;  //** 18-05-2010 - all_results	var url	    = window.location.href;	if (url.indexOf('WebSearchDom')==-1) {		//window.location.href = urlBase() + "/WebSearchDom?ReadForm&searchtype=1&SearchString=" + escape(searchStr); //** 18-05-2010 - all_results		window.location.href = urlBase() + "/WebSearchDom?ReadForm&searchtype=1&SearchString=" + escape(searchStr) + "&allres=" + allres; //** 18-05-2010 - all_results	} else {		isLuckSearch=false;		callSearch();	}}function getAllResults() {   //** 19-05-2010 - all_results	document.getElementById('all_results').innerHTML=1;	document.getElementById('nbResultLabel').innerHTML="";	document.getElementById('nbResult').innerHTML="";	document.getElementById('all_results_link').style.display="none";	callDomgle();}function callSearch(){	//var searchStr = document.search.SearchString.value; //** 20110411 acc	var searchStr = document.getElementById("QueryString_1").value;	var allres    = document.getElementById("all_results").innerHTML;  //** 18-05-2010 - all_results	var isFormACC = document.getElementById("isFormAccessible").innerHTML;  //** 04-04-2011 - flag che indica se il form \u00E8 accessibile	var searchlog = document.getElementById("searchlog").innerHTML;  //** 21-04-2011 - searchlog//o	var searchStr = getURLParam("searchstr");//o	document.search.SearchString.value = unescape(searchStr);	// Clear previous search	clearSearch();	if (searchStr=="") {		document.getElementById('searchResult').innerHTML = "Inserire una parola da ricercare"		return false;	}	var waitingStr = 		 "<span id=\"activityIndicator\" style=\"display:none\">Ricerca in corso ";	waitingStr = waitingStr + "<img id=\"systemWorking\" src=\"" + urlBase() + "/indicator.gif\" alt=\"indicatore attesa\"/>"; 	waitingStr = waitingStr + "</span>";	document.getElementById('searchResult').innerHTML = waitingStr;	timestart   = new Date();	iLines = 0;	Lines = new Array();	logError = '';	GoogleToNotesSearch.init();		// Translate query to the choosen syntax	if (AS_Query_Syntax=='google')		userQuery = GoogleToNotesSearch.parse(searchStr)	else		userQuery = replaceString(searchStr,'&','AND')			//Create a Hash of the parameters	var a=$H(		{			SearchString: userQuery,			ag_doc_Count: AS_Agent_MaxDoc,			AS_Field_Name_1: AS_Field_Name_1,			AS_Field_Name_2: AS_Field_Name_2,			AS_Field_Name_3: AS_Field_Name_3,			AS_Field_Name_4: AS_Field_Name_4,			AS_Field_Name_5: AS_Field_Name_5		}	);	// Call each targeted db	var targetParams =a.toQueryString();	var viewPath = AS_Agent_Name+'?OpenAgent';	for (var i=0; i<AS_DB_Path.length; i++)	{		if(AS_Proxy=='yes'){			//url=urlBase()+'/(proxy)?OpenAgent' //** 18-05-2010 - all_results			url=urlBase()+'/(proxy)?OpenAgent&allres='+allres+'&searchlog='+searchlog; //** (18-05-2010 - all_results) (21-04-2011- searchlog)			var params='';			params='urlToGet='+AS_SRV_Path[i]+AS_DB_Path[i]+viewPath+"&"+targetParams+'&rdm='+randomNumber();		}else{			var params=targetParams;			//var url = AS_SRV_Path[i]+AS_DB_Path[i]+viewPath; //** 18-05-2010 - all_results			var url = AS_SRV_Path[i]+AS_DB_Path[i]+viewPath+'&allres='+allres+'&searchlog='+searchlog; //**  (18-05-2010 - all_results) (21-04-2011- searchlog)		}		params = params + '&isformacc=' + isFormACC;		//alert( url );		eval("var myAjax = new Ajax.Request( url, { method: 'get', parameters: params,onComplete: BuildLinesArray,onFailure: function(t) {logError+='Error : '+t.status+ ' -- '+t.statusText+' -- location : " + url +"<br>'} })");	}}function BuildLinesArray(originalRequest){	if(originalRequest.status==200){		try		{			var xmldoc = originalRequest.responseXML;			var root = xmldoc.documentElement;			var results = root.getElementsByTagName("viewentry");			for (var i=0; i<results.length; i++)			{				/*if (i==0) {					var bbb = results[i].getElementsByTagName("entrydata");					alert(bbb[1].textContent)								}*/				Lines[iLines]=new Line(results[i].getElementsByTagName("entrydata"));				iLines++;			}		}catch (e){			logError+='XML parser error : Could not analyse results from one request<br>'		}	}}// Line object creationfunction Line(a){	// AS_Field_Name_Agt : url, dbtitle, score, author, form, creationdate, 	// creationdatedsp, field1, field2, field3, field4	for (var iProp=0; iProp<AS_Field_Name_Agt.length; iProp++)	{		macro="this."+AS_Field_Name_Agt[iProp]+"=getInnerText (a[iProp]);";		eval(macro);	}}// Sort resultsfunction SortLinesArray(){	Lines=Lines.sort(SortLines);}function SortLines(a,b){	A=eval('a.'+AS_Result_Sort_Column);	B=eval('b.'+AS_Result_Sort_Column);	if(AS_Result_Sort_Type=='des'){ return A>B?-1:A<B?1:0;}else{ return A>B?1:A<B?-1:0;}}//*********** getInnerText **************function getInnerText (node) {	if (typeof node.textContent != 'undefined') {		return node.textContent;	}else if (typeof node.innerText != 'undefined') {		return node.innerText;	}else if (typeof node.text != 'undefined') {		return node.text;	}else {		switch (node.nodeType) {		case 3:		case 4:			return node.nodeValue;		break;		case 1:		case 11:			var innerText = '';			for (var i = 0; i < node.childNodes.length; i++) {				innerText += getInnerText(node.childNodes[i]);			}			return innerText;			break;		default:			return '';		}	}}//************* ShowLines ***************// Display linesfunction ShowLines( ){	if (isLuckSearch && Lines.length>0) {		window.location.href=Lines[0].url;		return;	}		var string   = new Array();	var iLines   = 0;	var newText  = '';		//Delete all the lines	DeleteLines();		// Result Header	string.push(AS_Result_Header);		// Get URL parameters//	var start     = parseInt(getURLParam('start'));	// current start index shown//	var count     = parseInt(getURLParam('count'));	// number of item shown	var start     = parseInt(document.getElementById('start_items').innerHTML); // current start index shown	var count     = parseInt(document.getElementById('count_items').innerHTML); // number of item shown	var totLines  = Lines.length;					// total number of items (lines)	var toNum     = start + count - 1;				// current final index shown	var startx    = 0;							// start index of list x	var toNumx    = 0;							// final index of list x	var startxStr = "";							// startx=30 & totLines=101 => startxStr="030"	var toNumxStr = "";							// toNumx=59 & totLines=101 => toNumxStr="059"	var textlink  = "";							// text link	// Set total pages	// Parte intera del numero	var tmpTotPages = totLines/count;	var strTP       = '' + tmpTotPages;  	var point_posTP = strTP.indexOf ('.');   	var int_strTP   = strTP.substring (0, point_posTP >= 0 ? point_posTP : strTP.length);	var totPages    = parseInt(int_strTP);	if ((totLines%count)!=0) { totPages = totPages + 1; }	document.getElementById('total_pages').innerHTML = totPages;	// Set totLines	document.getElementById('total_items').innerHTML = totLines;		if (totPages != 0) {		var navBtn = createPrevNextBtn();	} else {		var navBtn = "";	}		// Lines loop		for (iLines=0; iLines<Lines.length; iLines++)	{			//******** Items will be displayed as list *********		var visib = "hidden";		if ((iLines%count)==0) {			if ((start <= iLines)&(iLines < toNum)) {				visib = "show";			}			startx = iLines;			toNumx = startx + count - 1;			if (iLines!=0) {				string.push('</ul>');			}			startxStr = fixNumToString(totLines, startx);			toNumxStr = fixNumToString(totLines, toNumx);			string.push('<ul id="items'+startxStr+toNumxStr+'" class="'+visib+'_items"');		}		//Check empty link		macro = 'Lines[iLines].'+AS_Field_Name_Dsp[AS_Result_Link];		textlink = eval(macro);				if (textlink!="") { // Begin link not empty			//Write the start row 			string.push(AS_Result_RowS);			// Columns loops			for (iCol=0; iCol < AS_Field_Name_Dsp.length; iCol++)			{				//Create link				macro='AS_Result_ColS_'+(iCol+1);				string.push(eval(macro));				if (iCol==AS_Result_Link){						if (AS_New_Windows=='yes') 							target = 'target="blank"' 						else							 target = ''						string.push('<a href="'+Lines[iLines].url+'" '+target+' title="vai al documento">');						macro = 'Lines[iLines].'+AS_Field_Name_Dsp[iCol];						textlink = eval(macro);						textlink = cutString(textlink, 120);						string.push(textlink);						string.push('</a>');					}else{						macro = 'Lines[iLines].'+AS_Field_Name_Dsp[iCol];						string.push(eval(macro));				}				macro='AS_Result_ColE_'+(iCol+1);				string.push(eval(macro));			} // end for iCol loop						//Write the end row 			string.push(AS_Result_RowE);		} // Begin link not empty			}	string.push('</ul>');	string.push(navBtn);	string.push(AS_Result_Footer);		// Set results label   //** 19-05-2010 - all_results	var allres    = document.getElementById('all_results').innerHTML;	var reslabel  = "Risultati pi\u00F9 significativi per ";	if (allres == "1") { 		reslabel = "Risultati per ";		document.getElementById('all_results_link').style.display = "none";	} else {		document.getElementById('all_results_link').style.display = "block";	}	document.getElementById('nbResultLabel').innerHTML = reslabel;	// Set results string	var writestring = string.join('');	$(AS_Result_ID).innerHTML = writestring;	// Set search string and results number	//var searchStr = document.search.SearchString.value; //** 20110411 acc	var searchStr = document.getElementById("QueryString_1").value;	$(AS_Result_ID_NB).innerHTML = searchStr + " : " + totLines;	displayItems();		// Print Time Process/*	var timeend = new Date();	var timedifference = timeend.getTime() - timestart	timeend.setTime(timedifference);	var seconds_passed = timeend.getSeconds();	var milliseconds_passed = timeend.getMilliseconds();	$(AS_Result_ID_NB).innerHTML=count+' ('+seconds_passed+'.'+milliseconds_passed+' seconds)';*/		// Print Error if needed	if(logError != ''){			$(AS_LogError_ID).innerHTML='Search processing error :<br>'+logError;			Element.show(AS_LogError_ID);	}		document.getElementById("varContainer").innerHTML = "";}function DeleteLines(){	$(AS_Result_ID).innerHTML='';}function replaceString(sString, sReplaceThis, sWithThis) {     if (sReplaceThis != "" && sReplaceThis != sWithThis) {      var counter = 0;      var start = 0;      var before = "";      var after = "";      while (counter<sString.length) {        start = sString.indexOf(sReplaceThis, counter);        if (start == -1){         break;         } else {           before = sString.substr(0, start);           after = sString.substr(start + sReplaceThis.length, sString.length);           sString = before + sWithThis + after;           counter = before.length + sWithThis.length;          }        }      }   return sString;  }  function randomNumber() {	return (Math.floor((99999999) * Math.random()+1));}function urlBase() {	var pathname = window.location.href;	return pathname.substring(0,(pathname.indexOf('.nsf')+4)) ;}/**** FG 2010-02-18 ****/function getURLParam(strParamName){  var strReturn = "";  var strHref = window.location.href;  if ( strHref.indexOf("&") > -1 ){    var strQueryString = strHref.substr(strHref.indexOf("&")).toLowerCase();    var aQueryString = strQueryString.split("&");    for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){      if (		aQueryString[iParam].indexOf(strParamName + "=") > -1 ){        	var aParam = aQueryString[iParam].split("=");        	strReturn = aParam[1];        	break;      }    }  }  return strReturn;}function fixNumToString(total, num) {	var out 	 = "";	var totstr = total.toString();	var numstr = num.toString();	for (var i=0; i<(totstr.length-numstr.length); i++) {			out = out + "0";	}	out = out + num;	return out;}/* Parse all <ul> and show or hide the right one */function displayItems() {	var totPages  = parseInt(document.getElementById('total_pages').innerHTML); // total number of pages	var curPage   = parseInt(document.getElementById('current_page').innerHTML); // current page index		var listobjs = document.getElementsByTagName('ul');	for (var i=0; i<listobjs.length; i++) {		if (listobjs[i].className=="hidden_items") {			listobjs[i].style.display = "none";		}		if (listobjs[i].className=="show_items") {			listobjs[i].style.display = "block";		}	}	if (curPage==1) {		document.getElementById('prev_item_link').style.display = "none";	} else {		document.getElementById('prev_item_link').removeAttribute("style");	}	if (curPage==totPages) {		document.getElementById('next_item_link').style.display = "none";	} else {		document.getElementById('next_item_link').removeAttribute("style");	}	document.getElementById('page_count').innerHTML = " - " + curPage + "/" + totPages + " - "; }/* Cut string at the specified number of chars and adding "..." */function cutString(str, n) {	var s = str.substring(n,0);	var i = 1;	if ((s!="") & (s.indexOf(' ')!=-1)) {		while (s.charAt(s.length-1)!=" ") {			s = s.substring(n-i,0);			i = i+1;		}	}	s = s + "...";	return s;}function goToPage(navTo) {	var start     = parseInt(document.getElementById('start_items').innerHTML); // current start index shown	var count     = parseInt(document.getElementById('count_items').innerHTML); // number of item shown	var totLines  = parseInt(document.getElementById('total_items').innerHTML); // total number of pages	var totPages  = parseInt(document.getElementById('total_pages').innerHTML); // total number of pages	var curPage   = parseInt(document.getElementById('current_page').innerHTML); // current page index		if ((curPage==1)&(navTo=='prev')) {		return false;	}	if ((curPage==totPages)&(navTo=='next')) {		return false;	}		// Current element	var curstartxstr  = fixNumToString(totLines,start);	var curtoNumxstr  = fixNumToString(totLines,start+count-1);	var curidname     = "items"+curstartxstr+curtoNumxstr;	var curobj	   = document.getElementById(curidname);	var newstart = 0;	var newtoNum = 0;	var newPage  = 0;	curobj.className = "hidden_items";	// New element		if (navTo=='next') {		newstart = start+count;		newtoNum = start+count+count-1;		newPage  = curPage+1;	} else {		newstart = start-count;		newtoNum = start-1;		newPage  = curPage-1;	}	var newstartxstr = fixNumToString(totLines,newstart);	var newtoNumxstr = fixNumToString(totLines,newtoNum);	var newidname    = "items"+newstartxstr+newtoNumxstr;	var newobj       = document.getElementById(newidname);	document.getElementById('start_items').innerHTML  = newstart;	document.getElementById('current_page').innerHTML = newPage;		newobj.className = "show_items";	displayItems();}function createPrevNextBtn() {	var start     = parseInt(document.getElementById('start_items').innerHTML); // current start index shown	var count     = parseInt(document.getElementById('count_items').innerHTML); // number of item shown	var totPages  = parseInt(document.getElementById('total_pages').innerHTML); // total number of pages	var curPage   = parseInt(document.getElementById('current_page').innerHTML); // current page index		// HTML	var out =	  "<br />";	out = out + "<div>";	out = out + "<a href=\"javascript:goToPage('prev');\" id=\"prev_item_link\" title=\"Vai alla pagina precedente\"><< precedente</a>";	out = out + "<span id=\"page_count\"> - " + curPage + "/" + totPages + " - </span>";	out = out + "<a href=\"javascript:goToPage('next');\" id=\"next_item_link\" title=\"Vai alla pagina successiva\">successiva >></a>";	out = out + "</div>";		return out;}function clearSearch() {	document.getElementById('start_items').innerHTML = 0;	document.getElementById('count_items').innerHTML = 20;	document.getElementById('total_items').innerHTML = 0;	document.getElementById('total_pages').innerHTML = 0;	document.getElementById('current_page').innerHTML = 1;	document.getElementById('searchResult').innerHTML = "";}
