/*-------------------------------------------------
* Function : openDialogSelect()
* Desc : Affiche une jolie fenetre
* Last Updated : 30.10.2009
-------------------------------------------------*/
var dhxWins = null;
var w1 = null;

function openDialogSelect(targetPath){
	dhxWins = new dhtmlXWindows();
	dhxWins.vp.style.border = "#909090 1px solid";
	dhxWins.setImagePath("/dhtmlxSuite/dhtmlxWindows/imgs/");
	dhxWins.setSkin("web");
	w1 = dhxWins.createWindow("w1", 10, 10, 600, 500);
	w1.setText("");
	w1.button("park").hide();
	w1.button("minmax1").hide();
	w1.center();
	w1.zi = 9999;
	w1.setModal(true);
	w1.denyResize();
	w1.attachURL(targetPath);
}

function closeWindow(){
	if (w1 != null) {
		w1.close();
		w1 = null;
		dhxWins = null;
	}
}

/*=====================================================
		GLOBAL PARAMETERS FOR DIFFERENTS LANGUAGES
======================================================*/
msgSubtitle_F=" documents trouv&eacute;s contenant le mot cl&eacute;&nbsp;";
msgSubtitle_D=" gefundene Dokumente mit dem Schl&uuml;sselwort&nbsp;";
msgSubtitle_I=" documenti trovati contenenti la parola chiave&nbsp;";
//
msgError_F = "Veuillez saisir un crit&egrave;re de recherche." ;
msgError_D = "Bitte ein Suchkriterium eingeben." ;
msgError_I= "Volete osservare un criterio di ricerca." ;
//
msgFooter_F="Pages de r&eacute;sultats:&nbsp;";
msgFooter_D="Ergebnisseiten:&nbsp;";
msgFooter_I="Pagine di risultati:&nbsp;";
//
msgPrevious_F="Pr&eacute;c&eacute;dent";
msgPrevious_D="Zur&uuml;ck";
msgPrevious_I="Precedente";
//
msgNext_F="Suivant";
msgNext_D="Vorw&auml;rts";
msgNext_I="Successiva";
//
msgNotFound_F="Aucun document trouv&eacute;";
msgNotFound_D="Keine Documente gefunden";
msgNotFound_I="Nessun documento trovato";
//
msgNoResults_F="Une erreur est survenue, veuillez contacter le responsable web.";
msgNoResults_D="Ein Fehler ist vorgekommen, kontaktieren Sie bitte den Netzverantwortlichen.";
msgNoResults_I="Un errore si &egrave; verificato, volete contattare il responsabile web.";

nbResultsToDisplay = 10;

var gLPBoxWebServer;

/*========================================
* Function : DoAjaxRequest()
* Author : Meher Nsaybi
* Desc : Make ajax request using Prototype framwork
* Last Updated : 07.09.2008
* Dependencies : FrameWork Prototype 1.6.0
=========================================*/
function DoAjaxRequest(start){
	//==> local parameters
	var QueryString;
	var xurl;
	var squery;
	var nbPages;
	
	// delete all previous content
	$('result_title').update();
	$('result_content').update();
	$('rnav').update();
	//
	squery = $('queryLPBox').getValue();
	
	if (squery == "" || squery == undefined) {
		alert(eval('msgError_' + gLanguage).unescapeHTML());
		return false;
	}
	//==> QueryString
	QueryString = "";
	QueryString += "&L=" + gLanguage;
	QueryString += "&context=" + gContext;
	QueryString += "&filtersearch=" + squery;
	QueryString += "&company=" + gLPBoxSociete;
	QueryString += "&ID=" + new Date().getTime();
	
	gLPBoxWebServer = (document.location.href).toLowerCase();
	gLPBoxWebServer = gLPBoxWebServer.substring(0, gLPBoxWebServer.indexOf("/", 7));
	gLPBoxWebServer = gLPBoxWebServer + "/";
	
	var gLPBoxUrl = gLPBoxWebServer + gLPBoxWebPath;
	
	xurl = gLPBoxUrl + "/$SearchFromFilterText?OpenAgent";
	
	//==> loading image
	$('result_title').update('<div class="loading_image"><img  src="' + gLPBoxImages + 'ajax-loader3.gif" /></div>');
	
	//==> Ajax Request
	var myAjax = new Ajax.Request(xurl, {
		method: "get",
		parameters: QueryString,
		onComplete: function ajax_response(transport){
			// traitement
			gJSON = transport.responseText.evalJSON(); //==> global parameter
			if (gJSON.TotalDoc != 0) {
				nbPages = Math.ceil(gJSON.TotalDoc / nbResultsToDisplay);
				display_results(1, nbPages);
			}
			else {
				$('result_title').update('<div>' + eval('msgNotFound_' + gLanguage).unescapeHTML() + '</div>');
				return 0;
			}
		}
	});
} 
/*========================================
* Function : display_results()
* Author : Yann Cantaluppi
* Desc : Display main results on HTML
* Last Updated :  MN : 18.09.2008
* Dependencies : FrameWork Prototype 1.6.0
=========================================*/
function display_results(page, nbPages){

	var xhref;
	var resJSON = new Array();
	var txtpuce2 = '&nbsp;<img src="' + gLPBoxImages + 'YellowBall.gif" />&nbsp;';
	var txtpuce1 = '&nbsp;<img src="' + gLPBoxImages + 'puce.gif" />&nbsp;';
	
	resJSON = gJSON.Results;
	
	$('result_title').update();
	$('result_content').update();
	$('rnav').update();	
	$('result_title').update('<h2>&nbsp;' + gJSON.TotalDoc + eval('msgSubtitle_' + gLanguage).unescapeHTML() + '<span class="span1">' + $('queryLPBox').getValue() + '</span></h2>');
		
	var nbTotalResults = gJSON.TotalDoc;
	var sortedDbs = SortByKey(resJSON, "Title");
	
	if (nbTotalResults < nbResultsToDisplay) {
		var nbToDisplay = nbTotalResults;
	}
	else {
		var nbToDisplay = nbResultsToDisplay;
	}
	
	var counter = 0;
	var totalDisplayed = 0;
	
	sortedDbs.each(function(j){
	
		var sortedDocs = SortByKey(j.Documents, "TitleFtxt");
		
		sortedDocs.each(function(i){
			counter = counter + 1;
			if (totalDisplayed < nbToDisplay && counter >= (((page - 1) * nbResultsToDisplay) + 1) && counter <= (page * nbResultsToDisplay)) {
				xhref = getLinkType(j, i);
				
				if (xhref != "") {
					$('result_content').insert('<div class="resDocs">&nbsp;' + xhref + '</div>');
				}
				
				totalDisplayed = totalDisplayed + 1;
			}
		});
		
	});
	$('result_content').insert('<div class="resDocs" >&nbsp;</div>');
	display_rnav(page, nbPages);
}

 /*========================================
* Function : display_rnav()
* Author : Meher Nsaybi
* Desc : Display pages navigator on bottom
* Last Updated :  MN : 24.09.2008
* Dependencies : FrameWork Prototype 1.6.0
=========================================*/
function display_rnav(currentPage, nbPages){
	//local parameters
	var rnavString = "";
	//
	rnavString += '<br/><hr class="hr1">';
	rnavString += '<span class="span3">' + eval('msgFooter_' + gLanguage).unescapeHTML() + '</span>&nbsp;';
	// ==> Previous
	if (currentPage > 1) {
		rnavString += '<a href=\"#\" onclick=\"display_results(' + (currentPage - 1) + ',' + nbPages + ')\">&laquo;&nbsp;' + eval('msgPrevious_' + gLanguage) + '</a>&nbsp;';
	}
	
	for (var j = 1; j <= nbPages; ++j) {
		if (j == currentPage) {
			// current page
			rnavString += '<a href=\"#\" onclick=\"display_results(' + j + ',' + nbPages + ')\"><u>' + j + '</u></a>&nbsp;';
		}
		else {
			rnavString += '<a href=\"#\" onclick=\"display_results(' + j + ',' + nbPages + ')\">' + j + '</a>&nbsp;';
		}
	} //#for
	// ==> Next
	if (currentPage < nbPages) {
		rnavString += '<a href=\"#\" onclick=\"display_results(' + (currentPage + 1) + ',' + nbPages + ')\">' + eval('msgNext_' + gLanguage).unescapeHTML() + '&nbsp;&raquo;</a>&nbsp;';
	}
	rnavString += '<hr class="hr1">';
	//
	$('rnav').update(rnavString);
	//
}
/*========================================
* Function : SortByKey()
* Author : Meher Nsaybi
* Desc : Sort results in table by CategoryIntranet
* Last Updated : 22.10.2008
* Dependencies : FrameWork Prototype 1.6.0
=========================================*/
function SortByKey(arr, key){
	var SortByKey = new Array();
	SortByKey = arr.sortBy(function(s){
		return eval('s.' + key)
	});
	return SortByKey;
}
/*========================================
* Function : GetArrayByKey()
* Author : Meher Nsaybi
* Desc : get array by key
* Last Updated : 22.10.2008
* Dependencies : FrameWork Prototype 1.6.0
=========================================*/
function GetArrayByKey(arr, key){
	var GetArrayByKey = new Array();
	for (var i = 0; i < arr.size(); ++i) {
		GetArrayByKey[i] = eval('arr[' + i + '].' + key);
	}
	return GetArrayByKey;
}
/*========================================
* Function : GetPartitionsByKey()
* Author : Meher Nsaybi
* Desc : get array by key
* Last Updated : 22.10.2008
* Dependencies : FrameWork Prototype 1.6.0
=========================================*/
function GetPartitionsByKey(arr, key){
	var GetPartitionsByKey = new Array();
	var sortedArray = SortByKey(arr, key);
	var uniqArray = GetArrayByKey(arr, key).uniq().sort();
	for (var i = 0; i < uniqArray.size(); ++i) {
		GetPartitionsByKey[i] = sortedArray.partition(function(s){
			return s.Category1 == uniqArray[i]
		})[0];
	}
	//
	return GetPartitionsByKey;
}

/*========================================
* Function : checkEnterSearch()
* Author : From IntranetPortal script
* Desc : 
* Last Updated :   09.10.2008 by MN
* Dependencies : None
=========================================*/
function checkEnterSearch(evt){
	var keycode;
	if (evt);
	else 
		if (window.event) 
			evt = window.event;
		else 
			if (event) 
				evt = event;
			else 
				return true;
	if (evt.charCode) 
		keycode = evt.charCode;
	else 
		if (evt.keyCode) 
			keycode = evt.keyCode;
		else 
			if (evt.which) 
				keycode = evt.which;
			else 
				keycode = 0;
	// -------
	if (keycode == 13) {
		DoAjaxRequest(1, 8);
		return false;
	}
	else 
		return true;
}
/*========================================
* Function : getLinkType()
* Author : Meher Nsaybi
* Desc : Create the xhref parameter to be dsiplayed
* Last Updated :   02.11.2009 by BR
* Dependencies : None
=========================================*/
function getLinkType(tmpJSON, sortedDoc){
	var getLinkType = "";
	
	switch (sortedDoc.DisplayType) {
	
		case "Document":
			
			var Titletxt = sortedDoc.app_title;
			
			getLinkType += '<div id=\'resume\'><a href=Javascript:openDialogSelect("' + gLPBoxWebServer;
			getLinkType += tmpJSON.Database;
			getLinkType += '/web?readform&id=' + sortedDoc.UniqueID + '");>';
			getLinkType += Titletxt + '</a></div>';
			break;
			
		case "Email":
			getLinkType += "<a href=mailto:" + sortedDoc.Email + ">" + sortedDoc.Subject + "</a>";
			break;
			
		case "URL":
			getLinkType += "<a href=" + sortedDoc.URL + ">" + sortedDoc.Subject + "</a>";
			break;
			
		case "Attachment":
			if (sortedDoc.Attachment != "") {
				getLinkType += "<a href=" + getServerURL(tmpJSON.Server);
				getLinkType += "/" + tmpJSON.Database;
				getLinkType += "/" + tmpJSON.View;
				getLinkType += "/" + sortedDoc.UniqueID;
				getLinkType += "/$file/" + sortedDoc.Attachment.replace(/ /g, "%20");
				getLinkType += ' target="_blank"><span class="span2">' + sortedDoc.Subject + "</span></a>";
			}
			else {
				getLinkType += "<a href=" + getServerURL(tmpJSON.Server);
				getLinkType += "/" + tmpJSON.Database;
				getLinkType += "/" + tmpJSON.View;
				getLinkType += "/" + sortedDoc.UniqueID;
				getLinkType += '?OpenDocument target="_blank">';
				getLinkType += '<span class="span2">' + sortedDoc.Subject + "</span></a>";
			}
			break;
	}
	return getLinkType;
}
