var idtypetransaction=0;
var slqE=[];
var paramoptions=[];
var queryGeoElements='ci,cp,div,sdiv,sdiv1,sdiv2,idq,idlieux,zoom,lat,lng';
var urlUpdateTimer;
function setUrlUpdateTimer(js,tm) {
	if (urlUpdateTimer) window.clearTimeout(urlUpdateTimer);
	urlUpdateTimer=window.setTimeout(js,tm);
}
function getNumber(x) {
	tmp = parseInt(x);
	return (isNaN(tmp))?'':tmp;
}

function getFieldForIdtt() {
	switch(idtypetransaction) {
		case 1:
		case 3:
			return "px_loyer";
		case 2:
			return "px";
		case 4:
			return "px_bs_semaine";
		case 5:
			return "px_bouquet";
		case 6:
			return "px_valeur_a_lachat";
	}
	return "px";
}

function QueryTool(qry,append) {
	if (!append) slqE=[];
	var x=qry.split('&');
	for (i=0;i<x.length;i++) {
		a= x[i].split('=');
		if (a.length>1) {
			if (slqE[a[0]]==null)
				slqE[a[0]]=a[1];
			else
				slqE[a[0]]+=','+a[1];
		}
	}
	idtypetransaction=parseInt(slqE["idtt"]);
}

function rquery(except) {
	var aexcept=[];
	if (except) aexcept=except.split(',');
	var qry='';
	for (var key in slqE)
	{
		switch (key) {
			case "associate":
			case "extend":
			case "test":
			case "remove":
			case "copy":
			case "each":
			case "forEach":
			case "inArray":
				ok=false;
				break;
			default:
				ok=true;
				break;
		}
		if (except)
		for(j=0;j<aexcept.length;j++) {
			if (key==aexcept[j] || key==aexcept[j]+'min' || key==aexcept[j]+'max')
			ok=false;
		}
		if (ok==true && slqE[key]!=null && slqE[key].length>0) qry+=((qry.length>0)?'&':'')+key+'='+slqE[key].toString();
	}
	return qry;
}

function rquerywith(el) {
	ael = el.split(',');
	temp = '';
	for (i=0;i<ael.length;i++) {
		if (slqE[ael[i]]!=null)
			temp+='&'+ael[i]+'='+slqE[ael[i]];
	}
	return temp;
}

function rqueryclear(el) {
	ael = el.split(',');
	for (i=0;i<ael.length;i++) {
		if (slqE[ael[i]]!=null)
			slqE[ael[i]]=null;
	}	
}

function querySetGeo(query) {
	rqueryclear(queryGeoElements);
	QueryTool(query,1);
	doEcr("querySetGeo "+rquery());
}

function queryPrelisteSansGeo() {
	return rquery(queryGeoElements);
}

function queryPrelisteGeo() {
	doEcr(rquerywith(queryGeoElements));
	return rquerywith(queryGeoElements);
}


function gotoMap() {
	if (qrypreliste) {
		document.location.href='/recherchemap.htm?'+qrypreliste;
	}
}

function gotoList(query) {
	if (qrypreliste || query) {
		document.location.href='/recherche.htm?'+((query)?query:rquery());
	}
}

function dichoIdttOngletActive(idtt) {
	listeidtt=[1,2,8,6,5];
	for (i=0;i<listeidtt.length;i++) {
		o=$('ongletidtt'+listeidtt[i]);
		if (!o) continue;
		if (listeidtt[i]==idtt)
			{
				idtypetransaction=idtt;
				x=paramoptions["px"];
				SlMenuDicho.refreshMenu(null,x);
				o.className="active";
				$('dicho-localisation-typetransaction').innerHTML=o.innerHTML;
			}
		else
			o.className="";
			
	}
}

function removeValue(param) {
		ap = param.split(',');
		for(i=0;i<ap.length;i++) {
			slqE[ap[0]]=null;
			slqE[ap[0]+'min']=null;
			slqE[ap[0]+'max']=null;
		}
}

function addValue(param,valeur,cumule,remove) {
	if(!cumule || cumule==false) {
		if (remove && remove==true)
			slqE[param]=null;
		else
			slqE[param]=valeur;
		return;
	}
	var v2 = slqE[param];
	doEcr('actual value '+v2);
	if((v2==null || v2.length==0) && remove==true) {
		doEcr('no action');
		return;
	}
	var av2=[];
	if (v2!=null) av2 = v2.split(',');
	v2='';
	doEcr(av2.length);
	done=false;
	for (i=0;i<av2.length;i++) {
		if (valeur==av2[i] && remove==false) {
			v2+=((v2.length==0)?'':',')+av2[i];
			doEcr("done 1");
			done=true;
		}
		if (valeur!=av2[i]) {
			doEcr("done 2 oth");
			v2+=((v2.length==0)?'':',')+av2[i];
		}
	}
	if (done==false && remove==false) {
			v2+=((v2.length==0)?'':',')+valeur;
			doEcr("done els");
		}
	slqE[param]=v2;
	doEcr(v2);
}

function getQueryValue(elem) {
	x= slqE[elem];
	if (x) return x;
	return '';
}

function engineNewParam(param,valeur,cumule,remove) {
	if (qrypreliste) {
		doEcr("new param "+param+" valeur:("+valeur+") cumule:"+cumule+' remove:'+remove);
		addValue(param,valeur,cumule,remove);
				
			if (SlMenuDicho.opt.map==1) {
				qrypreliste=rquery();
				if (param=="idtt") dichoIdttOngletActive(valeur);
				doEcr(qrypreliste);
				setUrlUpdateTimer('mapGeoModified(1)',1000);
			}
			else
				setUrlUpdateTimer("document.location.href=urlbase+'?'+rquery()",1000);
	}
}

function engineNewIdtt(idtt) {
	engineNewParam("idtt",idtt,false);
}


var SlMap= {
	currentHiddenBlock:null,
  map : null,
  adsOverlay : null,
	changeWidth : function(div,width,mapdiv) {
		if ($(div)) {
			$(div).setStyle("width",width);
			$(mapdiv).setStyle("width",width);
		}
	},
	toggleWidth : function(a,ax,b,bx,o1,o2) {
		if ($(b).hasClassName("hide")) {
			SlMap.changeWidth(o1,ax,o2);
			$(b).removeClassName("hide");
			$(a).addClassName("hide");
		}
		else {
			SlMap.changeWidth(o1,bx,o2);
			$(a).removeClassName("hide");
			$(b).addClassName("hide");
		}
		SlMap.map.checkResize();	
	},
	init : function(div,lat,lng,zoom) {
		if (GBrowserIsCompatible()) {
				if (!lat) lat=47;
				if (!lng) lng=2;
				if (!zoom) zoom=5;
        map = new GMap2(document.getElementById(div));
				map.setCenter(new GLatLng(lat,lng), zoom);
				map.enableDoubleClickZoom();
				baseIcon = new GIcon();
				//baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
				baseIcon.iconSize = new GSize(25, 23);
				//baseIcon.shadowSize = new GSize(37, 34);
				baseIcon.iconAnchor = new GPoint(7, 20);
				baseIcon.infoWindowAnchor = new GPoint(9, 2);
				//baseIcon.infoShadowAnchor = new GPoint(18, 25);
				SlMap.map = map;
				SlMap.adsOverlay = new SlMapOverlay(map);
				if (oninit!=undefined) oninit();
		}
	},
	zoomIn : function() {
		if (map) map.zoomIn();
	},
	zoomOut : function() {
		if (map) map.zoomOut();
	},
	pointsFromPage : function(cl,enableFixBounds) {
		var points = new Array();
		var bounds = new GLatLngBounds;
		var pointsInBounds=0;
		var lats=0;
		var longs=0;
		$S('.'+cl).each(function(el){
	  	eval('var point ='+ el.innerHTML);
	  	if (point.latitude!=0 && point.longitude!=0) {
		  	points.push(point);
				if (!point.includeInBounds || point.includeInBounds==1) {
			  	lats+=point.latitude;
			  	longs+=point.longitude;
					if (enableFixBounds==true) pointsInBounds++;
					bounds.extend(new GLatLng(point.latitude,point.longitude));
				}
			}
		});
		
		GEvent.addListener(map,"zoomstart",this.ClearMarkers);
	 	GEvent.addListener(map,"zoomend",this.UpdateMap);
		if (points.length>0) {
					for (var i=points.length; i>0; i--)
							SlMap.addInfo(points[i-1]);
			if (enableFixBounds==true && pointsInBounds>0) map.setCenter(new GLatLng(lats/pointsInBounds,longs/pointsInBounds), map.getBoundsZoomLevel(bounds));
		}
		this.UpdateMap();
		return points;
	},
	UpdateMap : function() {
		doEcr("updatemap");
		SlMap.adsOverlay.redraw();
	},
	ClearMarkers :function() {
		doEcr("clearmarkers");
		SlMap.adsOverlay.clearzone();
	},
	createMarker: function (marqu, index,point) {
	  var letter = String.fromCharCode("A".charCodeAt(0) + index);
	  var icon = new GIcon(baseIcon);
	  icon.image = "http://www.seloger.com/z/sv5/images/picto/drop.png";
	  var marker = new GMarker(marqu, icon);
	  point.icon=icon;
	  return marker;
	},
	
	addInfo : function (point) {
			point.marker = new SlMap.IconAds(point);
			SlMap.adsOverlay.Ads.push(point.marker);
		},
	
	IconTypeAgence : {
		xCorr: -6,
		yCorr: -22,
		sClassName: 'icon-agences'
	},
	IconTypeSituation: {
		xCorr:-6,
		yCorr:-22,
		sClassName: 'icon-situation'
	},
	
	IconAds : function (point) {
		this.point = point;
		this.iconNode=null;
		this.getIconNode = function() {
				if (!this.iconNode) { 
				  this.iconNode = new Element("div");
			    point.div = this.iconNode;
			    this.iconNode.ad = this; 
			    this.iconNode.className=this.point.iconType.sClassName;
				  this.iconNode.innerHTML = this.point.ico;
				  point.glatlng = new GLatLng(point.latitude,point.longitude);
				  if (point.iconType==SlMap.IconTypeAgence) {
					  point.infotext = new Element("div");
					  point.infotext.addClassName("infotext");
					  point.infotext.addClassName("hide");
					  point.infotext.innerHTML="<span class=infotext-lib>"+point.libelle+"</span>";//<span class=infotext-desc><img src='"+point.thumb+"'/>";
						this.iconNode.appendChild(point.infotext);
						/*this.iconNode.onmouseover = function() {
									point.infotext.removeClassName("hide");
									//map.panTo(point.glatlng);
							}.bind(); */
						this.iconNode.onclick = function () {
							if (SlMap.currentHiddenBlock!=null)
								SlMap.currentHiddenBlock.setStyle("display","block");
							if ($('agences-top').getFirst()) $('agences-top').getFirst().remove();
							var tempid=$(point.id).clone();
							tempid.id="currentBlock";
							tempid.injectInside('agences-top');
							SlMap.currentHiddenBlock=$(point.id);
							SlMap.currentHiddenBlock.setStyle("display","none");
						}.bind();
						this.iconNode.onmouseout = function() {
									point.infotext.addClassName("hide");
							}.bind(); 
					}
					if (point.iconType==SlMap.IconTypeSituation) {
					  point.infotext = new Element("div");
					  point.infotext.addClassName("infotext");
					  point.infotext.addClassName("hide");
						this.iconNode.appendChild(point.infotext);
					}
			}
			this.point.iconNode=this.iconNode;
			return this.iconNode;
		}
	}
		
}

var SlMapOverlay = function(map) {
		GOverlay.call(this);
	  this.map = map;
	  this.parentNode = map.getPane(G_MAP_MARKER_PANE);
		this.Ads = [];
		this.redraw = function(force) {
		  for (var i=0,ad ;ad=this.Ads[i];i++) {
			  var iconNode = ad.getIconNode();
		    var iconPosition = this.map.fromLatLngToDivPixel(ad.point.glatlng);
		    iconNode.style.left = iconPosition.x + ad.point.iconType.xCorr + "px";
		    iconNode.style.top = iconPosition.y + ad.point.iconType.yCorr + "px";
		    this.parentNode.appendChild(iconNode);
		  }
		};
		this.remove = function() {
			//todo
		};
		this.copy = function() {
			//todo
		};
		this.clearzone = function() {
			 for (var i=0,ad ;ad=this.Ads[i];i++) {
				  var iconNode = ad.getIconNode();
				  if (iconNode!=null)
				  this.parentNode.removeChild(iconNode)
				}
		}
		this.clearall =function() {
					this.clearzone();
					this.Ads=[];	
		}
	}

var SlContactBox = {
	loaded:false,
	shadowpx:2,
	visible:false,
	start: function() {
		el = $("contactBox");
		if (el) {
			this.el=el;
			el.box = el.getFirst();
			el.shadow = el.box.clone().injectInside(el);
			el.shadow.innerHTML="";
			el.shadow.setStyles({
						'top': parseInt(el.box.getStyle('top',true).replace('px',''))+this.shadowpx,
						'left' : parseInt(el.box.getStyle('left',true).replace('px',''))+this.shadowpx,
						'border-color':'black',
						'background-color' : 'black',
						'width':(el.box.offsetWidth || el.box.getStyle('width',true)),
						'height': (el.box.offsetHeight || el.box.getStyle('height',true)),
						'opacity': '0',
						'z-index': '1'});
			this.effbox= this.el.box.effect('opacity',{duration: 200, wait: false}).hide();
			this.effshadow= this.el.shadow.effect('opacity',{duration: 200, wait: false});
			this.el.setStyle('display','inline');
			return this;
		}
			this.effshadow= this.el.shadow.effect('opacity',{duration: 200, wait: false}).hide();
			el.setStyle('display','block');
			this.loaded=true;
	},
	show : function() {
		var scrolltop = (Window.getScrollTop() || document.body.scrollTop);
		var scrollleft =(Window.getScrollLeft() || document.body.scrollLeft);
		this.el.box.setStyles({
			'top':scrolltop+100,
			'left':scrollleft+100
		});
		this.el.shadow.setStyles({
			'top':scrolltop+100+this.shadowpx,
			'left':scrollleft+100+this.shadowpx
		});
		this.effbox.custom(this.effbox.now, 1);
		this.effshadow.custom(this.effbox.now, 0.3);
	},
	close : function() {
		this.effbox.custom(this.effbox.now, 0);
		this.effshadow.custom(this.effbox.now, 0);
	}
}

var SlMenuDicho = {
	opt:[],
	menus:[],
	myovermenu:null,
	autosuggest : $('autosuggest'),
	start : function(opt) {
		if (!opt.map) opt.map=0;
		this.opt=opt;
		this.opt.showCount=true;
		$S('.sldropdown').each(function(el){
			if (el.className=="sldropdown") {
			el.menu = el.getFirst();
			el.menu.setStyle('opacity','0');
			el.menushadow= el.menu.clone().injectInside(el);
			el.menushadow.innerHTML="";
			el.menushadow.setStyles({
			'top': parseInt(el.menu.getStyle('top',true).replace('px',''))+4,
			'left' : parseInt(el.menu.getStyle('left',true).replace('px',''))+4,
			'border-color':'black',
			'background-color' : 'black',
			'height': (el.menu.offsetHeight || el.menu.getStyle('height',true)),
			'opacity': '0.1',
			'z-index': '5'});

			//'height':(el.menu.getStyle('height',true) || el.menu.offsetHeight).replace('px','')+'px',

			el.fx= el.menu.effect('opacity',{duration: 200, wait: false}).hide();
			el.fxs = el.menushadow.effect('opacity',{duration: 200, wait: false}).hide();
			
			el.inputs = $S('#'+el.id+' input');
		
			el.onmouseover=function() {
				el.addClassName("active");
				el.fx.custom(el.fx.now, 1);
				el.fxs.custom(el.fxs.now, 0.1);
				el.fx.options.onComplete=function() {if (el.inputs.length>0) el.inputs[0].focus();};
				SlMenuDicho.myovermenu=el;
			}.bind(this);
			el.onmouseout = function(){
					el.fx.custom(el.fx.now, 0);					
					el.fxs.custom(el.fxs.now, 0);
					el.fx.options.onComplete=function() {
						el.removeClassName("active");
						if (SlMenuDicho.autosuggest) SlMenuDicho.autosuggest.setStyle('display','none');
					};
					if (el.inputs.length>0) {
						el.inputs[0].value='';
						el.inputs[0].blur();
					}
					SlMenuDicho.myovermenu=null;
			}.bind(this);	
		}
		},this);
	
},
writeMenu:function(o) {
	if (o.data) {
		if (o.critere=="px") o.critere=getFieldForIdtt();
		o.id = 'dicho-menu-'+o.critere;
		document.write ('<span id=dicho-menu-'+o.critere+'></span>');
		o.element=$(o.id);
		this.menus.push(o);
		o.idmenu=this.menus.length-1;
		paramoptions[o.critere]=o;
		if (o.critere && o.critere!='px' && o.critere.substring(0,2)=='px') paramoptions['px']=o;
		this.refreshMenu(this.menus.length-1);

	}
},
refreshMenus:function(showcount) {
	if (showcount) this.opt.showCount=showcount;
	for (i=0;i<this.menus.length;i++)
		this.refreshMenu(i);
},
refreshMenu:function(idmenu,o) {
		if(!o) {
			o=this.menus[idmenu];
		}
		else {
				if (o.critere.substring(0,2)=="px") o.critere=getFieldForIdtt();
				paramoptions[o.critere]=o;
				this.menus[o.idmenu]=o;
				idmenu=o.idmenu;
		}
		tmp='';
		for (i=0;i<o.data.length;i++) {
			d=o.data[i];
			if (o.critere)
				d.c=o.critere;
			else if (d.c=="px") {
				d.c=getFieldForIdtt();
			}
			if (o.ajout) d.ajout=o.ajout;
			var valeurs = slqE[d.c];
			var sivide=false;
			if (valeurs==null) {
				valeurs='';
				if (slqE[d.c+'min']==null && slqE[d.c+'max']==null)
					sivide=true;
			}
			var disp=true;
			if (d.sivide && d.sivide==1 && sivide==true){
				 disp=false;
			}
			if (disp==true) {
				//tmp+= ((d.sep)?'<hr/>':'');
				if (d.sep) tmp+='<div class=drillsep>';
				if (d.t) {
	
					if (d.t=='check')
						{
							var idtm='input'+d.c+'_'+i;
							d.domid=idtm;
							if (valeurs!=''){
								av=valeurs.split(',');
								for(j=0;j<av.length;j++)
								{
									if (av[j]==d.v) d.vf=av[j];
								}
							}
							tmp+='<input type=checkbox class=check name="'+escape(d.c)+'" value="'+d.v+'" id="'+idtm+'" '
							+((d.vf==d.v)?'checked':'')+' onclick="SlMenuDicho.mclick(this,'+idmenu+','+i+')" /><label for="'+idtm+'">'
							+d.l
							+((this.opt.showCount!=true && d.nb && d.nb!='')?' ('+d.nb+')':'')
							+'</label><br/>';
					}
					else if (d.t=='inputminmax') {
						var idtm=d.c;
						d.domid=idtm;
						tmp+=
						d.lmin+' <input type=text class=field name="'+idtm+'min" id="'+idtm+'min" value="'+getQueryValue(d.c+'min')+'" onchange="SlMenuDicho.minput(this,'+idmenu+','+i+')" /> '
						+d.lmax+' <input type=text class=field name="'+idtm+'max" id="'+idtm+'max" value="'+getQueryValue(d.c+'max')+'" onchange="SlMenuDicho.minput(this,'+idmenu+','+i+')" /> '+d.lfin
						+'<span class=btnok onclick="SlMenuDicho.mclick()">Ok</span>';
						if (d.c=o.critere) {
							o.inputmin=idtm+'min';
							o.inputmax=idtm+'max';
						}
					}
					else if (d.t=='selectminmax') {
						var idtm=d.c;
						d.domid=idtm;
						if (d.opt) {
							d.optmin=d.opt;
							d.optmax=d.opt;
						}
						tmp+=d.lmin+this.buildSelect(idtm,d,'min');
						tmp+=d.lmax+this.buildSelect(idtm,d,'max')+d.lfin;
					}
				}
					else {
					tmp+= '<a class="l100" href="javascript:SlMenuDicho.mclick(this,'+idmenu+','+i+');">'
					+((d.l)?d.l:d.v)
					+((this.opt.showCount!=true && d.nb && d.nb!='')?' ('+d.nb+')':'')+'</a>';
				
				}
				
				if (d.sep) tmp+='</div>';
			}
		}
		o.element.innerHTML=tmp;
},
buildSelect: function (idtm,opt,mode,valeur) {
	if (!valeur) valeur=0;
	var os = (mode=='min')?d.optmin:d.optmax;
	var tmp='<select name="'+idtm+mode+'" id="'+idtm+mode+'">';
	if (os.from) {
		if (os.withnull && os.withnull==1)
			tmp+='<option value=0>-</option>';
		for (z=os.from;z<=os.to;z+=(os.step)?os.step:1)
			tmp+='<option value="'+z+'" '+((z==valeur)?'selected':'')+' >'+z+'</option>';
	}
	return tmp+'</select>';
},
minput : function (el,idmenu,i) {
	o=this.menus[idmenu];
	if(o==undefined) return;
	if(o.data.length-1<i) return;
	d=o.data[i];
	if (d.t=="inputminmax") {
		removeValue(d.c);
		mini=getNumber($(d.c+'min').value);
		maxi=getNumber($(d.c+'max').value);
		if (maxi>0 && maxi<mini) {
			maxi=mini;
			mini=getNumber($(d.c+'max').value);
			$(d.c+'max').value=maxi;
			$(d.c+'min').value=mini;
			
		}
		engineNewParam(d.c+'min',mini,true,false);
		engineNewParam(d.c+'max',maxi,true,false);
	}
},
mclick :function(el,idmenu,i) {
	if (SlMenuDicho.myovermenu!=null) SlMenuDicho.myovermenu.onmouseout();
	if (!el) return;
	o=this.menus[idmenu];
	if(o==undefined) return;
	if(o.data.length-1<i) return;
	d=o.data[i];
	if (d.t=='check') {
		doEcr("checked"+el.checked);
		engineNewParam(d.c,d.v,d.ajout,!el.checked);
		return;
	}
	else
	{
		if (!d.v) {
			{
				
				if (d.sivide && d.sivide==1) {
					/*for (j=0;j<o.data.length;j++) {
						if (o.data[j].c==d.c) {
							switch (o.data[j].t)
							{
								case "check":
									$(o.data[j].domid).checked=false;
								break;
							}
						}
					}*/
					this.clearDispElements(o,d.c);
				}
				if (o.remove) removeValue(o.remove);
				if (o.inputmin) $(o.inputmin).value='';
				if (o.inputmax) $(o.inputmax).value='';							
				engineNewParam(d.c,'');
			}
			return;
		}
		if (d.v) {
			if (o.remove) removeValue(o.remove);
			tmp = d.v.split('-');
			if (tmp.length==1)
				engineNewParam(d.c,d.v);
			else {
				engineNewParam(d.c+'min',tmp[0]);
				engineNewParam(d.c+'max',tmp[1]);
				if (o.inputmin) $(o.inputmin).value=tmp[0];
				if (o.inputmax) $(o.inputmax).value=tmp[1];
			}
			return;
		}
	}
	
},
clearDispElements:function(o,param) {
		if(!o) return;
		for (j=0;j<o.data.length;j++) {
		if (o.data[j].c==param) {
			switch (o.data[j].t)
			{
				case "check":
					$(o.data[j].domid).checked=false;
				break;
			}
		}
	}
}
};


function clearParam(param) {

	removeValue(param);
	engineNewParam(param,'',false,true);
	$(param+'min').value='';
	$(param+'max').value='';
	o = paramoptions[param];
	SlMenuDicho.clearDispElements(o,param);
}

function HtmlDecode(s) 
{ 
      var out = ""; 
      if (s==null) return; 
      var l = s.length; 
      for (var i=0; i<l; i++) 
      { 
            var ch = s.charAt(i); 
            if (ch == '&') 
            { 
								var semicolonIndex = s.indexOf(';', i+1); 
		            if (semicolonIndex > 0) 
		            { 
		                        var entity = s.substring(i + 1, semicolonIndex); 
		                        if (entity.length > 1 && entity.charAt(0) == '#') 
		                        { 
		                              if (entity.charAt(1) == 'x' || entity.charAt(1) == 'X') 
		                                    ch = String.fromCharCode(eval('0'+entity.substring(1))); 
		                              else 
		                                    ch = String.fromCharCode(eval(entity.substring(1))); 
		                        } 
										i=semicolonIndex;
									}
							}
       out += ch; 
      } 
      return out; 
}

function addEvent(elm, evType, fn, useCapture) {
	if (elm.addEventListener) {
		elm.addEventListener(evType, fn, useCapture);
		return true;
	}
	else if (elm.attachEvent) {
		var r = elm.attachEvent('on' + evType, fn);
		return r;
	}
	else {
		elm['on' + evType] = fn;
	}
}
// load event : addEvent(window,'load',func1,false);

function toggle(obj,bo) {
	if (bo==null)
		bo=(el.style.display != 'none');
	var el = document.getElementById(obj);
	if ( !bo ) {
		el.style.visibility='hidden';
		el.style.display = 'none';
	}
	else {
		el.style.visibility='visible';
		el.style.display = '';
	}
	
}


Array.prototype.inArray = function (value) {
	var i;
	for (i=0; i < this.length; i++) {
		if (this[i] === value) {
			return true;
		}
	}
	return false;
};

function $() {
	var elements = new Array();
	for (var i = 0; i < arguments.length; i++) {
		var element = arguments[i];
		if (typeof element == 'string')
			element = document.getElementById(element);
		if (arguments.length == 1)
			return element;
		elements.push(element);
	}
	return elements;
}

function getCookie( name ) {
	var start = document.cookie.indexOf( name + "=" );
	var len = start + name.length + 1;
	if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) {
		return null;
	}
	if ( start == -1 ) return null;
	var end = document.cookie.indexOf( ";", len );
	if ( end == -1 ) end = document.cookie.length;
	return unescape( document.cookie.substring( len, end ) );
}
	
function setCookie( name, value, expires, path, domain, secure ) {
	var today = new Date();
	today.setTime( today.getTime() );
	if ( expires ) {
		expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date( today.getTime() + (expires) );
	document.cookie = name+"="+escape( value ) +
		( ( expires ) ? ";expires="+expires_date.toGMTString() : "" ) + //expires.toGMTString()
		( ( path ) ? ";path=" + path : "" ) +
		( ( domain ) ? ";domain=" + domain : "" ) +
		( ( secure ) ? ";secure" : "" );
}
	
function deleteCookie( name, path, domain ) {
	if ( getCookie( name ) ) document.cookie = name + "=" +
			( ( path ) ? ";path=" + path : "") +
			( ( domain ) ? ";domain=" + domain : "" ) +
			";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}

/*function createRequestObject() {
    var ro;
    var browser = navigator.appName;
    if(browser == "Microsoft Internet Explorer"){
        ro = new ActiveXObject("Microsoft.XMLHTTP");
    }else{
        ro = new XMLHttpRequest();
    }
    return ro;
}*/

function createRequestObject(url) {
		req = false;
    // branch for native XMLHttpRequest object
    if(window.XMLHttpRequest) {
    	try {
				req = new XMLHttpRequest();
      }
      catch(e) {
				req = false;
      }
    // branch for IE/Windows ActiveX version
    } else if(window.ActiveXObject) {
       	try {
        	req = new ActiveXObject("Msxml2.XMLHTTP");
      	}
      	catch(e) {
        	try {
          		req = new ActiveXObject("Microsoft.XMLHTTP");
        	} catch(e) {
          		req = false;
        }
		}
  }
	return req;
}

var http = createRequestObject();
var httpisbusy=false;

function sndReq(url) {
    if (http) {
	    if(httpisbusy==true) {
	    	http.onreadystatechange = function () {};
	    	http.abort();
	    	httpisbusy=false;
	    }
	    doEcr('action: <a href="'+url+'" target=_blank>'+url+'</a>');
	    try {
		    http.open('get', url);
		    http.onreadystatechange = handleResponse;
		    http.send(null);
		    httpisbusy=true;
	  	}
	  	catch (ex) {
				doEcr("http exception "+ex);
	  	}
  	}
}





function handleResponse() {
    if(http && http.readyState == 4){
    		httpisbusy=false;
        var response = http.responseText;
        var update = new Array();
        update=response.split('{#}');
				for (var i=0; i<update.length; i++) {
					var temp = update[i];
					var argus = temp.split('##');
					if (argus.length>0) {
						switch (argus[0]) {
							case "eval":
								eval(argus[1]);
								break;
							case "tophtml":
							var newdiv= document.createElement("div");
							newdiv.innerHTML=argus[2];
							var oo = document.getElementById(argus[1]);
							if (oo) {
								if (oo.hasChildNodes())
									oo.insertBefore(newdiv,oo.firstChild);
								else
									oo.appendChild(newdiv);
							}
								break;
							case "html":
								var oo = document.getElementById(argus[1]);
								if (oo) {
									oo.innerHTML = argus[2];
								}
								break;
						}
					}
					else 
						doEcr("erreur");
				}        
    }
}

function doEcr(x) {
var oEcr = document.getElementById("ID3xSql");
	if (oEcr)
		oEcr.innerHTML=x+"<br/>"+oEcr.innerHTML;
}





			/*--------------------------------------------------------------------------*/

var Form = {
  serialize: function(form) {
    var elements = Form.getElements($(form));
    var queryComponents = new Array();

    for (var i = 0; i < elements.length; i++) {
      var queryComponent = Form.Element.serialize(elements[i]);
      if (queryComponent)
        queryComponents.push(queryComponent);
    }

    return queryComponents.join('&');
  },

  getElements: function(form) {
    form = $(form);
    var elements = new Array();

    for (tagName in Form.Element.Serializers) {
      var tagElements = form.getElementsByTagName(tagName);
      for (var j = 0; j < tagElements.length; j++)
        elements.push(tagElements[j]);
    }
    return elements;
  },

  getInputs: function(form, typeName, name) {
    form = $(form);
    var inputs = form.getElementsByTagName('input');

    if (!typeName && !name)
      return inputs;

    var matchingInputs = new Array();
    for (var i = 0; i < inputs.length; i++) {
      var input = inputs[i];
      if ((typeName && input.type != typeName) ||
          (name && input.name != name))
        continue;
      matchingInputs.push(input);
    }

    return matchingInputs;
  },

  disable: function(form) {
    var elements = Form.getElements(form);
    for (var i = 0; i < elements.length; i++) {
      var element = elements[i];
      element.blur();
      element.disabled = 'true';
    }
  },

  enable: function(form) {
    var elements = Form.getElements(form);
    for (var i = 0; i < elements.length; i++) {
      var element = elements[i];
      element.disabled = '';
    }
  },

  findFirstElement: function(form) {
    return Form.getElements(form).find(function(element) {
      return element.type != 'hidden' && !element.disabled &&
        ['input', 'select', 'textarea'].include(element.tagName.toLowerCase());
    });
  },

  focusFirstElement: function(form) {
    Field.activate(Form.findFirstElement(form));
  },

  reset: function(form) {
    $(form).reset();
  }
}

Form.Element = {
  serialize: function(element) {
    element = $(element);
    var method = element.tagName.toLowerCase();
    var parameter = Form.Element.Serializers[method](element);

    if (parameter)
      return encodeURIComponent(parameter[0]) + '=' +
        encodeURIComponent(parameter[1]);
  },

  getValue: function(element) {
    element = $(element);
    var method = element.tagName.toLowerCase();
    var parameter = Form.Element.Serializers[method](element);

    if (parameter)
      return parameter[1];
  }
}

Form.Element.Serializers = {
  input: function(element) {
    switch (element.type.toLowerCase()) {
      case 'submit':
      case 'hidden':
      case 'password':
      case 'text':
        return Form.Element.Serializers.textarea(element);
      case 'checkbox':
      case 'radio':
        return Form.Element.Serializers.inputSelector(element);
    }
    return false;
  },

  inputSelector: function(element) {
    if (element.checked)
      return [element.name, element.value];
  },

  textarea: function(element) {
    return [element.name, element.value];
  },

  select: function(element) {
    return Form.Element.Serializers[element.type == 'select-one' ?
      'selectOne' : 'selectMany'](element);
  },

  selectOne: function(element) {
    var value = '', opt, index = element.selectedIndex;
    if (index >= 0) {
      opt = element.options[index];
      value = opt.value;
      if (!value && !('value' in opt))
        value = opt.text;
    }
    return [element.name, value];
  },

  selectMany: function(element) {
    var value = new Array();
    for (var i = 0; i < element.length; i++) {
      var opt = element.options[i];
      if (opt.selected) {
        var optValue = opt.value;
        if (!optValue && !('value' in opt))
          optValue = opt.text;
        value.push(optValue);
      }
    }
    return [element.name, value];
  }
}

/*--------------------------------------------------------------------------*/

var $F = Form.Element.getValue;

function getParent(el, pTagName) {
	if (el == null) return null;
	else if (el.nodeType == 1 && el.tagName == pTagName)
		return el;
	else
		return getParent(el.parentNode, pTagName);
}


function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}



		var poliris_ref = null;
		var poliris_xbase = 0;
		var poliris_ybase = 0;
		var poliris_page ='';

		function polirisSt_doclick (evt) {
			var url="/ctrack.htm?p="+poliris_page+"&";
			if (!evt) evt=event;
			if (evt.srcElement.id) {
				url+="id="+evt.srcElement.id;
			}
			else {
				xpos=findPosX(evt.srcElement) - poliris_xbase;
				ypos=findPosY(evt.srcElement) -poliris_ybase;
				url+="x="+xpos+"&y="+ypos;
			}
			//if (dev) alert(url);		
			if(document.images) (new Image()).src=url;
			return true;
		}
		

		function polirisSt_updateRefDiv() 
		{
			poliris_xbase = findPosX(poliris_ref);
			poliris_ybase = findPosY(poliris_ref);			
			window.onresize=polirisSt_updateRefDiv;
		}

		function polirisSt_createDiv (x,y,info) {
			    var div = document.createElement('div');
					div.className="divinfoclick";
					div.style.top=y;
					div.style.left=x;
					body = document.getElementsByTagName('body');
					body[0].appendChild(div);	
		}
		
		function polirisSt_Init(page) {
			poliris_page=page;
			poliris_ref=document.getElementById("logo");
			if (dev==0) {
				xele= document.getElementsByTagName("A");
				for (i=0;i<xele.length;i++)
					xele[i].onmousedown=polirisSt_doclick;
				xele= document.getElementsByTagName("INPUT");
				for (i=0;i<xele.length;i++) {
					if (xele[i].type=='submit')
						xele[i].onmousedown=polirisSt_doclick;
					else if (xele[i].type=='button')
						xele[i].onmousedown=polirisSt_doclick;
				}
			}

			polirisSt_updateRefDiv();
		}
	
