
// ----------------------------------------------
// cookies (picked somewhere on the web)

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+"="+value+expires+"; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    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 eraseCookie(name) {
    createCookie(name,"",-1);
}

// ----------------------------------------------
// browser detection (picked somewhere on the web)

function detectBrowser() {
    var BO = new Object();
    BO["ie"]        = false /*@cc_on || true @*/;
    BO["ie4"]       = BO["ie"] && (document.getElementById == null);
    BO["ie5"]       = BO["ie"] && (document.namespaces == null) && (!BO["ie4"]);
    BO["ie6"]       = BO["ie"] && (document.implementation != null) && (document.implementation.hasFeature != null) && (window.XMLHttpRequest == null);
    BO["ie55"]      = BO["ie"] && (document.namespaces != null) && (!BO["ie6"]);
    /*@cc_on
    BO["ie7"]       = @_jscript_version == '5.7';
    @*/
    /*@cc_on
    BO["ie8"]       = @_jscript_version == '5.8';
    @*/
    BO["ns4"]       = !BO["ie"] &&  (document.layers != null) &&  (window.confirm != null) && (document.createElement == null);
    BO["opera"]     = (self.opera != null);
    BO["gecko"]     = (document.getBoxObjectFor != null);
    BO["khtml"]     = (navigator.vendor == "KDE");
    BO["konq"]      = ((navigator.vendor == 'KDE') || (document.childNodes) && (!document.all) && (!navigator.taintEnabled));
    BO["safari"]    = (document.childNodes) && (!document.all) && (!navigator.taintEnabled) && (!navigator.accentColorName);
    BO["safari1.2"] = (parseInt(0).toFixed == null) && (BO["safari"] && (window.XMLHttpRequest != null));
    BO["safari2.0"] = (parseInt(0).toFixed != null) && BO["safari"] && !BO["safari1.2"];
    BO["safari1.1"] = BO["safari"] && !BO["safari1.2"] && !BO["safari2.0"];
    return BO;
}
var BO = new detectBrowser();

function displayBrowserPopup(_lbl, _link, _title) {
    var myWin = window.open("","myWin","menubar,scrollbars,resizable=yes,width=500,height=250");
    var myWinContent = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">' +
                     '<html><head><link href="css/mainIEFF.css" rel="stylesheet" type="text/css"/>' +
                     '<title>' + _title + '</title></head>' +
                     '<body style="width:100%;overflow:hidden">' +
                     '<div><img src="' + baseRacine + 'images/logo_Legibase.png"/></div>' +
                     '<div style="width:450px;padding:10px;font-size:10pt;font-family:Arial;">' + _lbl + '<br/>' +
                     '<a href="' + _link + '" target="_new" class="ext">' + _link + '</a>' +
                     '</div></body></html>';
    myWin.document.write(myWinContent);
    myWin.document.close();
}

// ----------------------------------------------
// URL/URI functions (picked somewhere on the web)

// add param to URL
function insertParamToURL(key, value) {
    key = escape(key);
    value = escape(value);
    var kvp = document.location.search.substr(1).split('&');
    var i = kvp.length;
    var x;
    while (i--) {
        x = kvp[i].split('=');
        if (x[0]==key) {
            x[1] = value;
            kvp[i] = x.join('=');
            break;
        }
    }

    if (i<0) {
        kvp[kvp.length] = [key,value].join('=');
    }

    //this will reload the page, it's likely better to store this until finished
    document.location.search = kvp.join('&');
}

// get the value from the _name parameter in the uri
function requestURIparam (_name) {
    name = _name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
    var regexS = "[\\?&]"+name+"=([^&#]*)";
    var regex = new RegExp( regexS );
    var results = regex.exec( window.location.href );
    if( results == null )
        return "";
    else
        return results[1];
}

// ----------------------------------------------
// String functions (picked somewhere on the web)

String.prototype.trim = function() {
    str = str.replace(/^\s+/, '');
	for (var i = str.length - 1; i >= 0; i--) {
		if (/\S/.test(str.charAt(i))) {
			str = str.substring(0, i + 1);
			break;
		}
	}
	return str;
}

String.prototype.endsWith = function(str) {
    return (this.match(str+"$")==str);
}

String.prototype.startsWith = function(str) {
    return (this.match("^"+str)==str);
}

function goBack() {
    window.history.go(-1);
}

// ----------------------------------------------

// to avoid url to be registered in history
function go(_url) {
    if (document.images) location.replace(_url);
    else location.href = _url;
}

function go2(_target) {
    document.getElementById(_target).scrollIntoView(true);
}

// ----------------------------------------------
// Show / Hide titles

function getTitlesPref() {
    var viewTitles = readCookie("viewTitles");
    if (viewTitles==null || viewTitles=='') {
        viewTitles = "on";
    }
    return viewTitles;
}

// show long titles
function titlesShow(_tabID, _labelID) {
    // show titles
    var divs = document.getElementById(_tabID).getElementsByTagName('div');
    for(var i=0; i<divs.length; i++) {
        divobj = divs[i];
        if (divobj.className=="docTitle") {
            divobj.style.display = "block";
        }
    }
    // change classes
    changeClassShow(_labelID);
    // write cookie
    createCookie("viewTitles","on",7);
}

// hide long titles
function titlesHide(_tabID, _labelID) {
    // show titles
    var divs = document.getElementById(_tabID).getElementsByTagName('div');
    for(var i=0; i<divs.length; i++) {
        divobj = divs[i];
        if (divobj.className=="docTitle") {
            divobj.style.display = "none";
        }
    }
    // change classes
    changeClassHide(_labelID);
    // write cookie
    createCookie("viewTitles","off",7);
}

// ----------------------------------------------

function changeClassShow(_id) {
    var divid = 'ds' + _id;
    var divobj = document.getElementById(divid);
    divobj.className = "titlesHide";
    divid = 'dh' + _id;
    divobj = document.getElementById(divid);
    divobj.className = "titlesShow";
}

function changeClassHide(_id) {
    var divid = 'ds' + _id;
    var divobj = document.getElementById(divid);
    divobj.className = "titlesShow";
    divid = 'dh' + _id;
    divobj = document.getElementById(divid);
    divobj.className = "titlesHide";
}

// ----------------------------------------------
// FROM browseRubrique.jsp

function sousRubriqueHideOrShow(_obj,_rubriqueID) {
	var divid = 'dc' + _rubriqueID;
    var divobj = document.getElementById(divid);
    if (divobj.style.display=="none") {
		divobj.style.display = "block";
		_obj.src = baseRacine + 'images/deplie.png';
    } else {
      	divobj.style.display = "none";
      	_obj.src = baseRacine + 'images/plie.png';
    }
}

var plieEtat = "deplie";
function rubriquesPlieDeplie(_divID, _obj) {
	var divs = document.getElementById(_divID).getElementsByTagName('div');
    for(var i=0; i<divs.length; i++) {
        var divobj = divs[i];
        if (divobj.className=="sRubTitle") {
            var imgs = divobj.getElementsByTagName('img');
            imgs[0].src = baseRacine + 'images/' + plieEtat + '.png';
        } else if (divobj.className=="sRubContent") {
            if (plieEtat=="deplie") divobj.style.display = "block";
            else divobj.style.display = "none";
        }
    }
    plieEtat = (plieEtat=="plie") ? "deplie" : "plie";
}

function newsletterPlieDeplie(_divID) {
	var div = document.getElementById(_divID);
	var img = div.previousSibling.childNodes[0].childNodes[0];
    if (div.style.display=="none") {
    	div.style.display = "block";
    	img.src = baseRacine + 'images/deplie.png';
    } else {
    	div.style.display = "none";
    	img.src = baseRacine + 'images/plie.png';
    }
}

// ----------------------------------------------
// FROM searchAdvanced.jsp

function getSortType(_type, _default) {
    var sortType = readCookie("sortType" + _type);
    if (sortType==null || sortType=='') {
    	sortType = _default;
	}
    return sortType;
}

function checkAllTypes() {
    var checkBoxes = document.forms['frmSearch2'].elements['ckTypes'];
    var isChecked = false;
    for (var i=0; i<checkBoxes.length; i++) {
        if (checkBoxes[i].checked) {
            isChecked = true;
            break;
        }
    }
    for (var i=0; i<checkBoxes.length; i++) {
        checkBoxes[i].checked = !isChecked;
    }
}

function showHideDate2(_value) {
    var divobj1 = document.getElementById("dDateLbl1");
    var divobj2 = document.getElementById("dDateLbl2");
    var divobj3 = document.getElementById("dDate2");
    var divobj4 = document.getElementById("dDateCal2");
    if (_value=="interval") {
        divobj1.style.display = "block";
        divobj2.style.display = "block";
        divobj3.style.display = "block";
        divobj4.style.display = "block";
    }
    else {
        divobj1.style.display = "none";
        divobj2.style.display = "none";
        divobj3.style.display = "none";
        divobj4.style.display = "none";
    }
}

// ----------------------------------------------
// FROM viewDoc.jsp

// hide TOC and References
function disableTocRefs() {
    disableToc();
    tocHideObj('Refs','Doc','blockDocExpanded');
}

// hide TOC and hide show/hide functionality
function disableToc() {
    var divid = 'dShowHideToc';
    var divobj = document.getElementById(divid);
    divobj.style.display = "none";
    divobj.parentNode.style.width = 0;
    tocHideObj('Toc','Doc','blockDocWoToc');
}

// hide References
function disableRefs() {
    tocHideObj('Refs','Doc','blockDocWoRefs');
}

// disable TOC object by disabling links and expanding document display size
function tocHideObj(_tocID, _docID, _className) {
    var divid = 'd' + _tocID;
    var divobj = document.getElementById(divid);
    if (divobj.style.display=="none") {
      return false;
    }
    divobj.style.display = "none";
    // change classes
    divid = 'd' + _docID;
    divobj = document.getElementById(divid);
    divobj.className = _className;
}

// show document TOC
function tocShow(_tocID, _docID, _cookieName) {
    var divid = 'd' + _tocID;
    var divobj = document.getElementById(divid);
    if (divobj.style.display=="block") {
        return false;
    }
    divobj.style.display = "block";
    // change classes
    divid = 'd' + _docID;
    divobj = document.getElementById(divid);
    if (readCookie("viewRefs")=="dis") divobj.className = "blockDocWoRefs";
    else divobj.className = "blockDoc";
    changeClassShow(_tocID);
    // change cookie state
    createCookie(_cookieName,"on",7);
}

// hide document TOC
function tocHide(_tocID, _docID, _cookieName) {
    var divid = 'd' + _tocID;
    var divobj = document.getElementById(divid);
    if (divobj.style.display=="none") {
        return false;
    }
    divobj.style.display = "none";
    // change classes
    divid = 'd' + _docID;
    divobj = document.getElementById(divid);
    if (readCookie("viewRefs")=="dis") divobj.className = "blockDocExpanded";
    else divobj.className = "blockDocWoToc";
    changeClassHide(_tocID);
    // change cookie state
    createCookie(_cookieName,"off",7);
}

// TOC functions
// open TOC basic item
function openItem(_divid) {
    // open close current object
    var cdivobj = viewHideDiv(_divid);
    if (cdivobj==null) {
        return;
    }
    // close objects at same level
    var level = _divid.substr(0,2);
    var divs = cdivobj.parentNode.parentNode.getElementsByTagName('div');
    var divobj;
    for(var i=0; i<divs.length; i++) {
        divobj = divs[i];
        // close objects at same level
        var divid = divobj.id;
        if (divid.indexOf(level)==0 && _divid!=divid) {
            divobj.style.display = "none";
            var imgobj = divobj.parentNode.getElementsByTagName('img')[0];
            if (imgobj.src.indexOf('images/deplie.png')!=-1) {
                imgobj.src = baseRacine + "images/plie.png";
            }
        }
    }
}

// view or hide object (TOC item identified by _divid) depending on its state
function viewHideDiv(_divid) {
    var cdivobj = document.getElementById(_divid);
    if (cdivobj==undefined || cdivobj==null) {
        return null;
    }
    // open close current object
    if (cdivobj.style.display=="block") {
        cdivobj.style.display = "none";
    }
    else {
        cdivobj.style.display = "block";
    }
    // change image
    var images = cdivobj.parentNode.getElementsByTagName('img');
    var imgobj = images[0];
    if (imgobj.src.indexOf('images/plie.png')!=-1) {
        imgobj.src = baseRacine + 'images/deplie.png';
    }
    else if (imgobj.src.indexOf('images/deplie.png')!=-1) {
        imgobj.src = baseRacine + 'images/plie.png';
    }
    return cdivobj;
}

// ----------------------------------------------
// FROM home page

// change the className of the div Element parent of the a
function survolMenu(_a) {
	if (_a.parentNode.className=="menuGaucheInact") _a.parentNode.className="menuGaucheAct";
	else _a.parentNode.className="menuGaucheInact";
	return _a.parentNode;
}

// ----------------------------------------------
// FROM abecedaire.jsp

// change the className of the div Element parent of the a
function survolMenuAbc(_a) {
    if (_a.parentNode.className=="abcListTermC") {
        _a.parentNode.className="abcListTermActC";
        _a.parentNode.parentNode.className="abcListTermActB";
        _a.parentNode.parentNode.parentNode.className="abcListTermActT";
     }
    else {
        _a.parentNode.className="abcListTermC";
        _a.parentNode.parentNode.className="abcListTermB";
        _a.parentNode.parentNode.parentNode.className="abcListTermT";
    }
    return _a.parentNode.parentNode.parentNode;
}

// hide PageAbc and References
function disablePageAbcRefs() {
    tocHide('PageAbc','Doc','viewPage');
    tocHideObj('Refs','Doc','blockDocExpanded');
}

function hidedPageNavAbc() {
    var divid = 'dPageNavAbc';
    var divobj = document.getElementById(divid);
    divobj.style.display = "none";
}

function showdPageNavAbc() {
    var divid = 'dPageNavAbc';
    var divobj = document.getElementById(divid);
    divobj.style.display = "block";
}

// ----------------------------------------------
// FROM tools.jsp

function getCurrentURL(_currentURL, _type, _defaultWords) {
	var resURL = _currentURL;
    var params = "";
    if (resURL.indexOf('/tables-chronologiques')>=0) {
    	// year
        var an = document.forms['frmTableChrono'].elements['year'].value;
        if (an=='all') an = '';
        else an = "annee=" + an + "&";
        // category
        var cat = document.forms['frmTableChrono'].elements['category'].value;
        if (cat=='all') cat = '';
        else cat = "nature=" + cat;
        params += an + cat;
	}
    else if (resURL.indexOf('/breves/page')>=0) {
   		var page = parseInt(document.forms['frmBreve'].elements['page'].value)+1;
   		resURL = resURL.substring(0, resURL.lastIndexOf("/")+1) + page;
    }
    else if (resURL.indexOf('/recherche')>=0) {
        if (_type=='tt' || _type=='jp') {
            // dates
            var datesTypes = document.forms['frmSearch2'].elements['datesTypes'].value;
            var date='', dated='', datef='';
            if (datesTypes=='exact') {
                date = document.forms['frmSearch2'].elements['date1'].value;
                if (date!='') date = "date=" + date + "&";
            }
            else if (datesTypes=='from') {
                dated = document.forms['frmSearch2'].elements['date1'].value;
                if (dated!='') dated = "dated=" + dated + "&";
            }
            else if (datesTypes=='to') {
                datef = document.forms['frmSearch2'].elements['date1'].value;
                if (datef!='') datef = "datef=" + datef + "&";
            }
            else if (datesTypes=='interval') {
                dated = document.forms['frmSearch2'].elements['date1'].value;
                if (dated!='') dated = "dated=" + dated + "&";
                datef = document.forms['frmSearch2'].elements['date2'].value;
                if (datef!='') datef = "datef=" + datef + "&";
            }
            // merge parameters
            params += date + dated + datef;
            if (_type=='tt') {
	            // category
	            var cat = document.forms['frmSearch2'].elements['category'].value;
	            if (cat=='all') cat = '';
	            else cat = "naturett=" + cat + "&";
                // numDoc
                var numDoc = document.forms['frmSearch2'].elements['numDoc'].value;
                if (numDoc!='') numDoc = "numtt=" + numDoc + "&";
                // numArt
                var numArt = document.forms['frmSearch2'].elements['numArt'].value;
                if (numArt!='') numArt = "noart=" + numArt + "&";
                // merge parameters
                params += cat + numDoc + numArt;
            }
            else if (_type=='jp') {
	            // category
	            var cat = document.forms['frmSearch2'].elements['category'].value;
	            if (cat=='all') cat = '';
	            else cat = "naturejp=" + cat + "&";
                // numAffaire
                var numAffaire = document.forms['frmSearch2'].elements['numAffaire'].value;
                if (numAffaire!='') numAffaire = "numjp=" + numAffaire + "&";
                // ville
                var ville = document.forms['frmSearch2'].elements['ville'].value;
                if (ville!='') ville = "ville=" + ville + "&";
                // parties
                var parties = document.forms['frmSearch2'].elements['partie'].value;
                if (parties!='') parties = "parties=" + parties + "&";
                // merge parameters
                params += cat + numAffaire + ville + parties;
            }
	   }
       else if (_type=='all') {
            // types
            var cktypes = document.forms['frmSearch2'].elements['ckTypes'];
            var types = '';
            var allchecked = true;
            for (var i=0; i<cktypes.length; i++) {
                if (cktypes[i].checked) types += cktypes[i].value + ",";
                else allchecked = false;
            }
            if (types!='' && !allchecked) types = "type=" + types.substring(0, types.length-1) + "&";
            else types = '';
            // merge parameters
            params += types;
       }
       // words
       var words = document.forms['frmSearch2'].elements['words'].value;
       if (words!='' && words!=_defaultWords) words = "query=" + words + "&";
       else words = '';
       // titre
       var titre = document.forms['frmSearch2'].elements['limitTitles'].checked;
       if (titre==false || words=='') titre = '';
       else titre = "titre=oui&";
       // merge parameters
       params += words + titre;
    }
    // merge parameters
    if (params!='') {
       if (params.endsWith("&")) params = params.substring(0, params.length-1);
       if (resURL.indexOf('?')>=0) resURL += "&" + params;
       else resURL += '?' + params;
    }

    prompt2(resURL);
}

function prompt2(message) {
	var divcont = document.getElementById("dPromptCont");

	var promptbox = document.createElement('div');
 	promptbox.setAttribute ('id' , 'dPrompt');
    divcont.appendChild(promptbox);
	promptbox = eval("document.getElementById('dPrompt').style");
    document.getElementById('dPrompt').innerHTML =
        "<table class='promptBox'>" +
        "<tr><td style='text-align:left'><textarea rows='2' cols='40' id='promptbox' class='promptArea'>" + message + "</textarea></td></tr>" +
        "<tr><td><input type='button' class='prompt' value='Fermer' onClick='document.getElementById(\"dPromptCont\").removeChild(document.getElementById(\"dPrompt\"));return false;'></td></tr></table>";
	document.getElementById("promptbox").select();
    document.getElementById("promptbox").focus();
}

