var $search;
var search_timeout;

function launch(force) {
    $newsearch = Trim(document.getElementById('Recherche').value);
	if ($search != $newsearch) document.getElementById('currentpage').value = 1;
    sectionid = document.getElementById("lngSectionID").value;
    if (sectionid == '') sectionid = 0;
    $datedebut = document.getElementById('DateBegin').value;
    $datefin = document.getElementById('DateEnd').value;
    $operator = getOP();
    $page = document.getElementById('currentpage').value;
    if (document.getElementById('OrderBy') != null)
        $order = document.getElementById('OrderBy').value;
    search($newsearch, sectionid, $datedebut, $datefin, $operator, $page, $order, force);
}

function search($newsearch, sectionid, $datedebut, $datefin, $operator, page, $order, force) {
	$search = $newsearch;
	$url = '/Cyberbulletin/RechercheXML.asp?recherche='+urlencode($search.replace(/'/, "''"));
	if (sectionid != 0) $url += '&sectionid='+urlencode(sectionid);
   if ($datedebut != '') $url += '&start='+urlencode($datedebut);
   if ($datefin != '') $url += '&end='+urlencode($datefin);
	if ($operator != '') $url += '&op='+urlencode($operator);
	if (page != '') $url += '&page='+urlencode(page);
	if ($order != '') $url += '&order='+urlencode($order);
   
	try{
		if(force)
			if (force == 1) $url += '&force=1';
	}catch(e){
		variablename=[];
	}
	
	if ($search != '') {
		if ($search != $newsearch) cr_search = 0;
		setStatus('recherche pour "'+$search+'" ...');
		document.getElementById("Loading").style.display='block';
		var X = new RemoteProcedure($url, onSearchLoaded, '', onError);
	} else {
		document.getElementById("Resultats").innerHTML='';
		document.getElementById("RechercheStatus").innerHTML='';
		document.getElementById("RechercheNavTop").style.display='none';
		document.getElementById("RechercheNavBottom").style.display='none';
	}
}

function onError(xmlDoc) {
	alert('SVP, n\'utilisez pas de caractères spéciaux dans votre recherche');
	document.getElementById("Resultats").innerHTML='';
	document.getElementById("RechercheStatus").innerHTML='';
	document.getElementById("RechercheNavTop").style.display='none';
	document.getElementById("RechercheNavBottom").style.display='none';
	document.getElementById("Loading").style.display='none';
}

function onSearchLoaded(xmlDoc) {
	var oResults = xmlDoc.documentElement;
	var tItems = xmlChildNodes(oResults,'item');
	var totalcount = oResults.getAttribute("totalcount");
	document.getElementById("Loading").style.display='none';

	if (xmlAttributes(tItems[0])["message"] != undefined) {
	    setStatus(format(xmlAttributes(tItems[0])["message"]));
	    document.getElementById("Resultats").innerHTML = '';
        document.getElementById("RechercheNavTop").style.display = 'none';
        document.getElementById("RechercheNavBottom").style.display = 'none';
        // précisez la recherche
        if (xmlAttributes(tItems[0])["advanced"] != undefined)
        		sliderAvancee.slideIn();
	    return false;
	}

	var count = oResults.getAttribute("count");
	var page = oResults.getAttribute("page");
	var nb_results=tItems.length;
	var nbPages = Math.round(totalcount / nbPerPage);
	$message = totalcount + ' résultat';
	if (tItems.length > 1) $message += 's';
	if ($search != '')
		$message += ' pour «' + $search + '» ';
    setStatus($message + '&nbsp;');
	
    var nbPerPage = parseInt(document.getElementById("nbperpage").value);
    var nbPages = Math.round(totalcount / nbPerPage);
    document.getElementById("RechercheNavTop").style.display = 'block';
    if (nbPages > 1)
        document.getElementById("RechercheNavBottom").style.display = 'block';
    else
        document.getElementById("RechercheNavBottom").style.display = 'none';
	
	var sList = '';
	var strClass = '';
	force_load = false;

	for (var i = 0; i < nb_results; ++i) {
		var attrib = xmlAttributes(tItems[i]);
		sList += '<div class="item" onclick="return goArticle(' + attrib['sectionid'] + ',' + attrib['id'] + ');">';
		if (attrib['image'] != undefined) sList += '<img src="/images/articles/banque/' + attrib['image'] + '">';
		sList += '<a href="" onclick="return goArticle(' + attrib['sectionid'] + ',' + attrib['id'] + ');">';
		sList += hightlight(attrib['titre'], $search) + '<br />';
		sList += '</a>';
		if (attrib['resume'] != undefined) sList += hightlight(attrib['resume'], $search) + "<br />\n";
		sList += '<h4>' + attrib['datebegin'] + ' - ' + attrib['section'] + '</h4>';
		sList += '</div>\n';
	}
	document.getElementById("Resultats").innerHTML = sList;

    // affiche la barre de navigation
	showNavigation(totalcount, page, count);

    // retour en haut de la page
    window.scrollTo(0,0);
}

function showNavigation(totalcount, page, count) {
    var separator = '<div class="pageselector" style="cursor: default;">...</div>';
    var nbPerPage = parseInt(document.getElementById("nbperpage").value);
    var nbPagesMax = parseInt(document.getElementById("nbpagesmax").value);
    var firstRecord = (((page - 1) * nbPerPage) + 1);
    var lastRecord = (firstRecord + nbPerPage - 1);
    if (lastRecord > totalcount) lastRecord = totalcount
    var nbPages = Math.round(totalcount / nbPerPage);
    var firstPage = 1;
    var lastPage = nbPages;
    firstPage = parseInt(page) - 3;
    lastPage = parseInt(page) + 3;
    if (firstPage < 1) firstPage = 1;
    if (lastPage > nbPages) lastPage = nbPages;
    
    // affichage du status
    document.getElementById("ResultatsStatus").innerHTML = 'Résultats ' + firstRecord + '-' + lastRecord + ' de ' + totalcount;
    document.getElementById("Navigation").innerHTML = 'Pages: ';
    
    // item "précédent"
    if (((nbPages > nbPagesMax)) && (page != 1))
        document.getElementById("Navigation").innerHTML += '<div class="pageselector" onclick="return gotoPage(' + (parseInt(page)-1) + ');"><b>«</b></div>';
    // première page et séparateur
    if (firstPage != 1) {
        document.getElementById("Navigation").innerHTML += '<div class="pageselector" onclick="return gotoPage(1);">1</div>';
        if (parseInt(page) - 3 != 2) document.getElementById("Navigation").innerHTML += separator;
    }
    
    // listing des pages
    for (i=firstPage; i<=lastPage; i++) {
        if (page == i)
            document.getElementById("Navigation").innerHTML += '<div class="pageselector_highlight">' + i + '</div>';
        else
            document.getElementById("Navigation").innerHTML += '<div class="pageselector" onclick="return gotoPage(' + i + ');">' + i + '</div>';
    }
    
    // séparateur et dernière page
    if (lastPage != nbPages) {
        if (parseInt(page) + 3 != nbPages - 1) document.getElementById("Navigation").innerHTML += separator;
        document.getElementById("Navigation").innerHTML += '<div class="pageselector" onclick="return gotoPage(' + nbPages + ');">' + nbPages + '</div>';
    }
    // item "suivant"
    if (((nbPages > nbPagesMax)) && (page != nbPages))
        document.getElementById("Navigation").innerHTML += '<div class="pageselector" onclick="return gotoPage(' + (parseInt(page)+1) + ');"><b>»</b></div>';

}

function goArticle(section, id) {

	var SECTION_ACTUALITE		=	1
	var SECTION_DOSSIER			=	5
	var SECTION_CHRONIQUE		=	6
	var SECTION_JURISPRUDENCE	=	8
	var SECTION_VEILLE			=	11
	var SECTION_INTERVIEW		=	110
	var SECTION_INFOPUB			=	120
	var SECTION_MANCHETTE		=	130
	var SECTION_TECHNOLOGIE		=	140
	var SECTION_INFOVIRUS		=	150
	var SECTION_PRATIQUE			=	151
	var SECTION_RELATIONS		=	152
	var SECTION_VIDEO	        	=	153
	var page = 'index.asp';
	
	switch (section) {
		case SECTION_CHRONIQUE : 
		case SECTION_JURISPRUDENCE : 
		case SECTION_DOSSIER : 
		case SECTION_RELATIONS : 
			page = 'resume.asp';
			break;
		case SECTION_INTERVIEW : 
			page = 'interview.asp';
			break;
		case SECTION_INFOPUB : 
			page = 'info-pub.asp';
			break;
		case SECTION_MANCHETTE : 
			page = 'manchette.asp';
			break;
		case SECTION_VIDEO : 
			page = 'video.asp';
			break;
		case SECTION_TECHNOLOGIE : 
			page = 'technologie.asp';
			break;
		case SECTION_INFOVIRUS : 
			page = 'info-virus.asp';
			break;
		case SECTION_PRATIQUE : 
			page = 'pratique.asp';
			break;
		default : 
			page = 'index.asp';
			break;
	 }
	 
    document.location.href = '/Cyberbulletin/' + page + '?' + id;
    return false;
}

function gotoPage(page) {
    document.getElementById('currentpage').value = page;
    launch(1);
    return false;
}

function hightlight(str, expression) {
    if (str) {
        var words = expression.split(' ');
        for (i=0; i<words.length; i++) {
				if ((words[i]!='|') && (words[i]!='"') && (words[i]!='<') && (words[i]!='>')) {        
            	regex = eval("/" + words[i] + "/gi");
            	newstring = '<h5>' + words[i] + '</h5>';
            	str = str.replace(regex, newstring);
            	}
            }
        }
    return format(str);
}

function format(str) {
    if (str) {
        str = str.replace(/\[/g, "<");
        str = str.replace(/\]/g, ">");
        //str = str.replace(/<br>/g, " ");
        //str = str.replace(/\&/g, "&amp;");
    }
    return str;
}

function setStatus(message) {
	document.getElementById('RechercheStatus').innerHTML = message;
}

function getOP() {
    opALL = document.getElementById('opall').checked;
    opAND = document.getElementById('opand').checked;
    opOR = document.getElementById('opor').checked;
    if (!opAND && !opOR && !opALL)
        return 'AND';
    else if (opALL)
        return 'ALL';
    else if (opOR)
        return 'OR';
    else
        return 'AND';
}

function ToggleRechercheAvancee() {
	 sliderAvancee.toggle();
/*	 if (document.getElementById("LienRechercheAvancee").style.cursor != '')
	 	document.getElementById("LienRechercheAvancee").style.cursor = 'n-resize'
	 else
	 	document.getElementById("LienRechercheAvancee").style.cursor = 's-resize' */
    return false;
}


function urlencode(sStr) {
    return escape(sStr).replace(/\+/g, '%2B').replace(/\"/g,'%22').replace(/\'/g, '%27').replace(/\//g,'%2F');
}

function Trim(TRIM_VALUE){
    if(TRIM_VALUE.length < 1){
        return"";
    }
    TRIM_VALUE = RTrim(TRIM_VALUE);
    TRIM_VALUE = LTrim(TRIM_VALUE);
    if(TRIM_VALUE==""){
        return "";
    }else{
        return TRIM_VALUE;
    }
}

function RTrim(VALUE){
    var w_space = String.fromCharCode(32);
    var v_length = VALUE.length;
    var strTemp = "";
    if(v_length < 0){
        return"";
    }
    var iTemp = v_length -1;
    while(iTemp > -1){
        if(VALUE.charAt(iTemp) == w_space){
        }else{
            strTemp = VALUE.substring(0,iTemp +1);
        break;
        }
        iTemp = iTemp-1;
    }
    return strTemp;
}

function LTrim(VALUE){
    var w_space = String.fromCharCode(32);
    if(v_length < 1){
    return"";
}
    var v_length = VALUE.length;
    var strTemp = "";
    var iTemp = 0;
    while(iTemp < v_length){
        if(VALUE.charAt(iTemp) == w_space){
        }else{
            strTemp = VALUE.substring(iTemp,v_length);
        break;
        }
        iTemp = iTemp + 1;
    }
    return strTemp;
}