// JavaScript Document - utility

//EL - fExploreDom - v. 1.1 - 04/11/2005 13:40
function fExploreDom(qui,style) {

	//var qui=document.getElementById(qui);
	if(style)
    qui=qui.style;
    var sStr="";
	var vbl=0;
	for(a in qui) {
		vbl++;
		sStr+=a + " : " + qui[a]+"\n";
		if(vbl==10) {
			vbl=0;
			alert(sStr);
			sStr="";
		}

	}
	if(vbl!=0)
	alert(sStr);

}

function _setBorder( qui , taille,couleur) {
	if(typeof(couleur)=="undefined")
	couleur="#000000";
	qui.style.border=taille + "px solid "+couleur;
}


function _parsePixel( valeur ) {
	return ( parseInt( (""+valeur).replace(/[^0-9]/g,'') ,10 ) );
}

function findSize(obj) {
	return new Array( findSizeW(obj),findSizeH(obj) );
}
function findSizeW(obj) {
	if(!obj)
	return 1;
	return _parsePixel( (obj.offsetWidth)?obj.offsetWidth:0 );
}
function findSizeH(obj) {
	if(!obj)
	return 1;
	return _parsePixel(  obj.offsetHeight );
}


function findPos(obj) {
	return new Array( findPosX(obj),findPosY(obj) );
}
function findPosX(obj) {
	var curleft = 0;
	if (obj && obj.offsetParent) {
		while (obj.offsetParent) {
			curleft += _parsePixel(obj.offsetLeft);
			obj = obj.offsetParent;
		}
	} else if (obj && obj.x) curleft += _parsePixel( obj.x );

	return curleft;
}

function findPosY(obj) {
	var curtop = 0;
	if (obj && obj.offsetParent) {
		while (obj.offsetParent) {
			curtop +=  _parsePixel(obj.offsetTop);
			obj = obj.offsetParent;
		}
	} else if (obj && obj.y) curtop += _parsePixel( obj.y );
	return curtop;
}

function fSetPos(obj,x,y)
{
	if(!obj.style)
	obj=gId(obj)
	obj.style.left = x;// + unite;
	obj.style.top  = y ;//+ unite;

	//eval('document.'+p1+objet+p2+sP3+h+"='"+ px  + "';");
	//eval('document.'+p1+objet+p2+sP3+v+"='"+ py  + "';");

}

function _cursor(qui,quoi)
{
	qui.style.cursor=quoi;
}

//
function _setAlpha (qui,d_x)
{

	opacity = 1.0;
	d_y = this.opacity*d_x;
	if(GECKO)
	 qui.style.MozOpacity = d_y;
	else if(IE){
	//	alert(parseInt(100*d_y));
	//	if(style)
			qui.style.filter = "Alpha(opacity="+parseInt(100*d_y)+")";
	}
	else if(qui.style)
		qui.style.opacity = d_y;

	if(IE) {
		var d_i = qui.children.length;
		while(d_i--) {
			_setAlpha(qui.children[d_i], d_x);

		}
	}

};

var iPx1,iPy1;
function _getMouse(e) {
	iPx1 = (IE && !GECKO)?event.clientX:e.pageX;
	iPy1 = (IE && !GECKO)?event.clientY:e.pageY;
	return [iPx1,iPy1];
}
function gId( qui ) {
	return document.getElementById( qui );
}


function _addEvent (el, evname, func) {

	if (IE) {
		el.attachEvent("on" + evname, func);
	} else {
		//alert(el);
		el.addEventListener(evname, func, true);
	}
};


//var coLastColorfLine='';
function fLine(node, thePointerColor){
    var theCells=null;
	if(thePointerColor=='defaultcolor' ||  typeof(thePointerColor)=='undefined')
	thePointerColor='#FBE66A';

    var newColor=thePointerColor;


	if(node==null) {
		return false;
	}
    if(typeof(node)=='undefined'){
         return false;
    }
     if(typeof(node.style)=='undefined'){
         return false;
    }

        if(thePointerColor=="restore")
        {
            newColor=node.lastColor;
            node.lastColor="";
        }
        else
        {
            node.lastColor=node.style.backgroundColor;
        }

        node.style.backgroundColor=newColor;
   if(node.nodeName.toLowerCase()=="tr")
   {
        var iNbrRow=theCells.length;
        for(var i=0;i<iNbrRow;i++)
        {
            if(thePointerColor=="restore")
            {
                newColor=theCells[i].lastColor;
                theCells[i].lastColor="";
            }
            else
            {
                theCells[i].lastColor=theCells[i].style.backgroundColor;
            }
            theCells[i].style.backgroundColor=newColor;
        }
    }
    return true;
} // fin de fLine



//masque un element
function fSee(obj,etat)
{
	if(!obj.style)
	obj=gId(obj);
//	var etat="visible";
	if(etat==0)
	etat="hidden";
	else
	etat="visible";

	obj.style.visibility = etat;
}
//efface un element de l'affiche (on libere sa place en pixel de la mise en page)
function fDisplay(obj,etat)
{
	if(!obj.style)
	obj=gId(obj);
//	var etat="visible";
	if(etat==0)
	etat="none";
	else
	etat="";


	obj.style.display = etat;
}



//trie un tableau lié a un tableau associatif
// qui : tableau indéxé
// avec : tableau associatif de qui
function asort(qui,avec)
{
	var tmp= new Array();
	var finaltmp = new Array();
	var iNbr=qui.length;
	for(var i=0;i<iNbr;i++)
	{
		key = qui[i];
		tmp.push([eval(avec+'["'+key+'"]'),key]);
	}
	tmp.sort();
	//for(var i=iNbr-1;i>=0;i--)
	for(var i=0;i<iNbr;i++)
	{
		finaltmp.push(tmp[i][1]);
	}
	return finaltmp;
}


//recherche la presence d'un element dans un tableau
function in_array(recherceca,dansca)
{
	//tableau associatif
//	if(typeof(dansca[recherceca])!="undefined")
//	return true;
	//tableau indexe
	var iNbr = dansca.length;
	for(var i=0;i<iNbr;i++)
	{
		if(dansca[i]==recherceca)
		{
			return true;
			break;
		}
	}

	return false;
}


//reorganise un tableau
function fOrder( qui )
{
	qui.sort();
}


//	objCible : id de l'image a changer
//	etat : quel est son nouvel etat
//	condition : variable dans laquelle est stocké le menu selectionne (id de l'image)
function fRoll(objCible,etat,condition)
{
	var elmimg=document.getElementById(objCible);
	//
	if(eval("typeof("+condition+")")=="undefined")
	tmp="";
	else
	eval("var tmp="+condition+";");

	if(tmp!=elmimg.id)
	{
		//alert(elmimg);
		//fExploreDom(elmimg.style);
		var file;
		var recale=0;
		var nodename =elmimg.nodeName;

		if(nodename=="IMG")
		file=elmimg.src;
		else
		{
			file=elmimg.style.backgroundImage;
			recale=-1;
		}

		var strlen=0+(file).length;
		var base=file.substr(0,strlen-5+recale);
		var end=file.substr(strlen-4+recale,strlen);

		if(nodename=="IMG")
		elmimg.src = base+etat+end;
		else
		elmimg.style.backgroundImage=base+etat+end;
	}

}


//	restore l'etat de toutes les images d'un menu - sauf celle nouvellement clique
function fRollRestore(etat,condition)
{
	//nbr d'argument de depart
	depart=fRollRestore.length;
	//nbr d'argument total
	var obj=fRollRestore.arguments;
	iNbr=obj.length;
	for(var i=depart;i<iNbr;i++)
	{
		fRoll(obj[i],etat,condition);
	}
}


//	memorise dans une variable une valeur et lance une function ; suite a un click sur une image
function fRollClick(objCible,condition,function2call)
{
	eval(condition+"='"+objCible+"';");
	eval(function2call+".call();");
}


function fReloadFrame()
{
//alert(window.parent.leftFrame.location);
    window.parent.leftFrame.location.reload();//=window.parent.leftFrame.location;
    window.parent.mainFrame.location="main.aspx";//.reload();//=window.parent.mainFrame.location;
    window.parent.topFrame.location.reload();//=window.parent.topFrame.location;

    //window.parent.LeftFrame.location=window.parent.LeftFrame.src;

}



//stop la propagation
function _stop( ev ) {
	if(GECKO) {
		ev.preventDefault();
		ev.stopPropagation();
	}
	else if(IE) {
		if(!ev)
		var ev = window.event
		ev.cancelBubble=true;
		ev.returnValue = false;
	}
}


function getCookie(name) {
	var dc = document.cookie;
	var prefix = name + "=";
	var begin = dc.indexOf("; " + prefix);
	if (begin == -1) {
		begin = dc.indexOf(prefix);
		if (begin != 0) return null;
	} else {
		begin += 2;
	}
	var end = document.cookie.indexOf(";", begin);
	if (end == -1) {
		end = dc.length;
	}
	return unescape(dc.substring(begin + prefix.length, end));
}


//*******************************
// Cookie FCT
//*******************************

//nb de jours de validité du panier
var CCPanierValidHours=24;
//nb de temps qu'est conservé la coche d'une recherche
var CCFilterDurationInSeconds=10*60; // 10 minutes
//

function CookieWrite(name, value) 
{
    var argv = CookieWrite.arguments;
    var argc = CookieWrite.arguments.length;
    var expires = (argc > 2) ? argv[2] : null;
    var path = (argc > 3) ? argv[3] : null;
    var domain = (argc > 4) ? argv[4] : null;
    var secure = (argc > 5) ? argv[5] : false;
   
    var str = name + "=" + escape (value) +
    ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
    ((path == null) ? "" : ("; path=" + path)) +
    ((domain == null) ? "" : ("; domain=" + domain)) +
    ((secure == true) ? "; secure" : "");
//    alert("le nouvel cookie : " + str );
    if(str.length>=4000)
    alert("Vous avez atteint le nombre maximum d'éléments à mettre dans le carnet de voyage.");
    else
    document.cookie=str;
}

function arguments_cookie(offset)
{
  var endstr=document.cookie.indexOf (";", offset);
  if (endstr==-1) endstr=document.cookie.length;
  return unescape(document.cookie.substring(offset, endstr)); 
}

function CookieRead(nom) 
{
//    alert(document.cookie);
  var arg=nom+"=";
  var alen=arg.length;
  var clen=document.cookie.length;
  var i=0;
  while (i<clen)
  {
    var j=i+alen;
    if (document.cookie.substring(i, j)==arg)
       return arguments_cookie(j);
    i=document.cookie.indexOf(" ",i)+1;
    if (i==0) break;
  }
  return null; 
}



function CCookieWrite1(nom, valeur) 
{
    date = new Date();
    date.setTime(date.getTime()+(CCPanierValidHours*60*60*1000));
    CookieWrite(nom,valeur,date,"/");
}

function CookieAppend(nom,valeur)
{   
    
    var argv = CookieAppend.arguments;
    var argc = CookieAppend.arguments.length;
    var sep = (argc > 2) ? argv[2] : "&";
    var valeurtmp = CookieRead(nom);
    var etat=true;
    if(valeurtmp!=null)
    {
        var tmp=valeurtmp.split(sep);
       
        for(var i in tmp)
        {
            if(tmp[i]==valeur)
            {
                etat=false;
            }
        }
    }
    else
    {
        valeurtmp="";
        sep="";
    }
    if(etat==true)
    CookieWrite(nom,valeurtmp + sep + valeur);
}

function CookieClear(nom)
{
    date=new Date;
    date.setFullYear(date.getFullYear()-1);
    CookieWrite(nom,null,date,"/");
}


//Cookie Constellation c#
//-----------------------

function CPanierExists(nom, valeur)
{
    //alert(idOI);
    //alert(cat+' / ' + idOI);
    var Panier = CookieRead(nom);
    var idOI = valeur.split('$')[1];
    if(Panier)
	{
		if(Panier.indexOf(idOI) != -1)
		{
			// si l'OI est déjà présent dans le cookie du panier  
			return true;
		}
		else
		{
			return false;
		}
	}
    else
    {
        return false;
    }  
}

function CPanierAppend(nom,cat,valeur,enlever)
{
   var presentPanier = CPanierExists(nom, valeur);
    if(presentPanier == false)
    { 
        CCookieAppend(nom,cat,valeur,enlever);
        alert("L'élément est ajouté au carnet de voyage");
    }
    else
    {
        alert("L'élément est déjà présent dans le carnet de voyage");
    }    
}

function CPanierRemove(nom,cat,valeur)
{
    CCookieRemove(nom,cat,valeur)
    alert("L'élément est enlevé du carnet de voyage");
}

function CPanierCotationAppend(nom,cat,valeur,enlever)
{
   var presentPanier = CPanierExists(nom, valeur);
    if(presentPanier == false)
    { 
        CCookieAppend(nom,cat,valeur,enlever);
        alert("L'élément est ajouté à la demande de cotation");
    }
    else
    {
        alert("L'élément est déjà présent dans la demande de cotation");
    }    
}

function CPanierCotationRemove(nom,cat,valeur)
{
    CCookieRemove(nom,cat,valeur)
    alert("L'élément est enlevé de la demande de cotation");
}

//pour forcer la suppression d'une entree et de ses valeurs, il suffit d'utiliser la valeur "el_remove" :  CCookieRemove("monpanier","mescriteres","el_remove")
function CCookieRemove(nom,cat,valeur)
{
   CCookieAppend(nom,cat,valeur,1);
}

//ajoute un element au panier et indique qu'il y a eu modification
function CCookieAppend(nom,cat,valeur,enlever)
{   
    if(typeof(enlever)=="undefined")
    enlever=0;
 
    var argv = CCookieAppend.arguments;
    var argc = CCookieAppend.arguments.length;
    var sep = (argc > 4) ? argv[4] : "&";
    var valeurtmp = CookieRead(nom);
    //
    //var CCsep="_§_";//4 debug mode
    var CCsep="§";
    var finaltext="";
  
  
    if(valeurtmp=="null" || valeurtmp==null) 
    valeurtmp="";
    
    var sep1="";
    
    var catexist=false;
     
        if(valeurtmp!="")
        {
            var tmp=valeurtmp.split(sep);
            var nbr = tmp.length;
            for(var i=0;i<nbr;i+=2)
            {
                if(enlever==1 && tmp[i]==cat && valeur=="el_remove")
                {
                  catexist=true;
                }
                else
                {
                    finaltext+=sep1+tmp[i];
                    //
                    //alert("Cat : "+ tmp[i] + " - Valeur : "+ tmp[i+1]);
                    if(tmp[i]==cat)
                    {
                        //alert("cat exist");
                        catexist=true;
                        var lastvaleur=tmp[i+1];
                        //alert("*"+lastvaleur);
                        var tmp2=lastvaleur.split(CCsep);
                        var nbr2 = tmp2.length;
                        var etat=true;
                        var sep2="";
                        var strfinal="";
                        var strfinalsep="";
                        if(nbr2>=1)
                        sep2=CCsep;
                        for(var j=0;j<nbr2;j++)
                        {
                            var etat2=true;
                            if(tmp2[j]==valeur || valeur=="el_remove")
                            {
                                etat=false;
                                etat2=false;
                            }
                           // alert(tmp2[j] + " **:** " + valeur + " **:** " + etat);
                           if(enlever==1)
                           {
                                if(etat2==true)
                                {
                                    strfinal+=strfinalsep+tmp2[j];
                                    strfinalsep=CCsep;
                                }
                           }
                                
                        }
                        //alert(sep+lastvaleur);
                        //alert(etat);
                        if(enlever==1)
                        {
                            //alert("on supprime");
                            //if(etat)
                            finaltext+=sep+strfinal;
                            //else
                            //finaltext+=sep;
                        }
                        else
                        {
                            if(enlever==-1)
                            {
                                finaltext+=sep+valeur;
                            }
                            else
                            {
                                finaltext+=sep+lastvaleur;
                                
                                if(etat)
                                    if(lastvaleur=="")
                                        finaltext+=valeur;
                                    else
                                        finaltext+=sep2+valeur;
                            }
                        }
                         //alert("finaltextTMP : "+ finaltext );
                    }
                    else
                    finaltext+=sep+tmp[i+1];
                    
                    sep1=sep;
                }
            }
        }
        
        if(!catexist && enlever!=1)
        {
            if(finaltext=="")
            finaltext+=cat+sep+valeur;
            else
            finaltext+=sep+cat+sep+valeur;
        }
        
     
       // alert("finaltext : "+finaltext);
        
       /* 
        date = new Date();
        date.setTime(date.getTime()+(CCPanierValidHours*60*60*1000));
        CookieWrite(nom,finaltext,date,"/");
        
        date = new Date();
        date.setTime(date.getTime()+(CCPanierValidHours*60*60*1000));
        CookieWrite(nom+"Mod","1",date,"/");
       */
        if(nom == "panier" || nom == "panierCotation")
        { 
            // Modif Adrien durée du cookie de recherche 08 Janv 2008
            date = new Date();
            date.setTime(date.getTime()+(CCPanierValidHours*60*60*1000));
            CookieWrite(nom,finaltext,date,"/");
            
            date = new Date();
            date.setTime(date.getTime()+(CCPanierValidHours*60*60*1000));
            CookieWrite(nom+"Mod","1",date,"/");
        }
        else
        { 
            // Modif Adrien durée du cookie de recherche 08 Janv 2008
            date = new Date();
            date.setTime(date.getTime()+(CCFilterDurationInSeconds*1000));
            CookieWrite(nom,finaltext,date,"/");
            
            date = new Date();
            date.setTime(date.getTime()+(CCFilterDurationInSeconds*1000));
            CookieWrite(nom+"Mod","1",date,"/");
        }
}

//efface toutes les valeurs de la categorie et ecrit la nouvelle
function CCookieWrite(nom,cat,valeur)
{   
    CCookieAppend(nom,cat,valeur,-1);
}