var advancedSearch=new function(){
	var c1=jml.obj,c2=jml.xml.node,c3=jml.images,c4=jml.cookie,s1='advancedSearch',s2='activate';
	return {
		$:function(){
			jml.events.add(window,'load',delegate(this,'initialize'));
			return this;
		},
		initialize:function(){
			var o=c4.get(s2+ucFirst(s1)),i=getObj(s1+'Btn');
			if((!isset(o)&&isset(i))||(isset(o)&&o[s2]==true&&isset(i))) this.showHide(i);
		},
		showHide:function(o,y){
			var x=c2.parent(o,2),s='closed',d=c1.get(x,'className'),p='/library/images/text/fr/title/';
			var y=y||false;
			c1.set(x,'className',y?'':d==s?'':s);
			c1.set(c2.byPosition(1,x),'display',y?'block':d!=s?'none':'block');
			c3.swap(o,false,p+'recherche_avance_'+(y?'open':d==s?'open':'close')+'_01.gif');
			c4.set(s2+ucFirst(s1),{activate:y?y:d==s},1);
		},
		forceDisplay:function(){this.showHide(getObj(s1+'Btn'),true);}
	}.$();
}
// Login box class
var loginBox=new function(){
	var c1=jml.events,c2=jml.obj,c3=jml.xml.node,data={},toolObj=null,isOn=false;
	function validateKey(e){
		if(c1.getKey(c1.initialize(e))==13) website.quicklogin();
	}

	function openDialog(e,b){
		var e=c1.initialize(e);
		var x=c1.getElement(e);
		var s1=x.name;
		var s2=x.value;
		if(!isset(data[s1])) data[s1]=s2;
		if(s1=='quick_helperDummy'&&b){
			var o=getObj('quick_helperPassword');
			c2.set(x,'display','none');
			c2.set(o,'display','block');
			setFocus(o);
		}
		if(s1=='quick_helperPassword'&&!b&&isEmpty(s2)){
			setValue(x,'');
			var o=getObj('quick_helperDummy');
			c2.set(x,'display','none');
			c2.set(o,'display','block');
		}
		if(s1=='quick_helperUsername'){
			if(b){if(s2==data[s1]) setValue(x,'');}
			else{if(isEmpty(s2)) setValue(x,data[s1]);}
		}
		/*if(c1.hitTest(_e,['loginHelper'])){
			jml.obj.set('debugger','innerHTML',jml.obj.get('debugger','innerHTML')+' hitTesting...');
		}*/
		c1.remove(document,'mousemove',evaluateSector);
		if(b) c1.add(document,'mousemove',evaluateSector);
		var n1=c2.get(toolObj.d,'top'), n2=c2.get(toolObj.d,'offsetHeight'),n3=0-(n2+4);
		var jme1=new jml.jme.motion();
		jme1.onMotionFinished = function(target,property){setTimeout(setMask,100);}
		if(b) c2.set(toolObj.m,'height',n2+'px');
		var mo={target:toolObj.d,property:'top',end:b?0:n3,duration:30,equation:'easeOut',id:null};
		if(!isset(n1)){mo.start=n3;}
			jml.obj.set('debugger','innerHTML',jml.obj.get('debugger','innerHTML')+'<br /> a) isOn = ' + isOn);
		!isOn? jme1.start(mo) : setFocus(getObj('quick_helperUsername'));
	}
	function setMask(n){
		var n1=c2.get(toolObj.d,'top'),n=c2.get(toolObj.d,'offsetHeight');
		c2.set(toolObj.m,'height',(n1==0?n:0)+'px');
	}
	function setToolObj(){
		//var x1=c3.create('DIV',document.body);
		//x1.id="loginHelper";
		// must create on the fly...
		// temp code. below..
		var o=getObj('loginHelper'),x1=c3.byPosition(0,o),x2=c3.byPosition(0,x1);
		if(!isset(toolObj)) toolObj={c:o,m:x1,d:x2};
	}
	function setValue(o,s){o.value=s;}
	function setFocus(o){o.focus();}
	function evaluateSector(e){
		var e=c1.initialize(e);
		var o=c1.getXY(e);
		var o1=c1.hitTest(e,['loginHelper']);
		isOn=o1.on;
		jml.obj.set('debugger','innerHTML',jml.obj.get('debugger','innerHTML')+'<br /> b) isOn = ' + isOn);
		///if(isOn) ui.focus();
	}
	return {
		initialize:function(){
			var a=['quick_helperUsername','quick_helperPassword','quick_helperDummy'];
			for(var i=0;i<a.length;i++){
				var o=getObj(a[i]);
				if(isset(o)){
					c1.add(o,'keydown',delegate(null,validateKey));
					c1.add(o,'focus',delegate(null,openDialog,true));
					c1.add(o,'blur',delegate(null,openDialog,false));
				}
			}
			setToolObj();
			var o1=toolObj.c,o2=getObj('branding'),n1=c2.get(o2,'offsetLeft'),n2=c2.get(o2,'offsetWidth'),n3=c2.get(o2,'offsetTop'),n4=c2.get(o1,'offsetWidth');
			c2.set(o1,'left',(n1+n2-(n4+20))+'px');
			c2.set(o1,'top',(n3-1)+'px');
		}
	}
}
jml.events.add(window,'load',delegate(loginBox,'initialize'));
// text size class
var textSize=new function(){
	var c1=jml.obj,c2=jml.cookie,c3=jml.images,im=null,s1='contentTextSize';
	function save(n){c2.set(s1,{textSize:n},1);}
	function setActive(o){
		if(isset(o)){
			c3.swap(o,false,'active');
			im=o;
		}
	}
	function init(e,n){
		var o=c2.get(s1);
		if(isset(o)){
			var n=n||o.textSize,o=getObj('imgTextSize'+n);
			setActive(o);
			write(n);
		}else{
			setActive(getObj('imgTextSize'+1));
		}
	}
	function write(n){c1.set(document.body,'className','textSize'+n);}
	jml.events.add(window,'load',init);
	return {
		set:function(n,o){
			if(isset(im)) c3.swap(im,false,'',true);
			c3.swap(o,false,'active');
			im=o;
			write(n);
			save(n);
		}
	}
}
var transition= new function(){
	var c1=jml.xml.node,c2=jml.obj,c3=jml.server,uiOid;
	return {
		animation:function(id,mbr){
			var mod=null,item=null,dir=null,step=0,data=null,bImg,inMotion=false,cId=0,trStep=true,mbr=mbr||[],tCon,tImg,uLeft,uRight,tLink;
			function init(k){
				var m='maskMod01'+id,o=getObj(m);
				uiOid=m;
				if(!isset(o)){
					mod=o=c1.create('DIV',document.body);
					c2.set(o,'id',m);
					c2.set(o,'className','maskMod01');
					o1=c1.create('DIV',o);
					c2.set(o1,'className','maskItem maskSize');
					o2=c1.create('DIV',o1);
					c2.set(o2,'innerHTML','Téléchargement en cours...');
					c2.set(o2,'className','modContent');
					item=o2;
				}
			}
			function setup(o,b){
				var b=b||false;x1=c1.byPosition(0,c1.byProximity(c1.parent(o,2),-1)),x2=c1.byPosition(0,mod),data=c1.byProximity(c1.parent(o,1),-1),data=isset(data)?data:c1.byProximity(c1.parent(o,1),1),n1=c2.get(x1,'offsetWidth'),n2=c2.get(x1,'offsetHeight'),n3=c2.get(x1,'offsetLeft'),n4=c2.get(x1,'offsetTop'),n5=16,n6=c2.get(item,'offsetWidth'),d=dir=='right';
				tImg=c1.byPosition(0,x1);
				tLink=x1;
				uLeft=c1.byPosition(0,c1.byPosition(0,c1.parent(o,2)));
				uRight=c1.byPosition(0,c1.byPosition(2,c1.parent(o,2)));
				c2.set(x2,'width',(n1+n5)+'px');
				c2.set(x2,'height',(n2+n5)+'px');

				//c2.set(c1.parent(x2,1),'width',(n1+n5)+'px');
				//c2.set(c1.parent(x2,1),'height',(n2+n5)+'px');
				c2.set(c1.parent(x2,1),'left',(n3-(n5/2))+'px');
				c2.set(c1.parent(x2,1),'top',(n4-(n5/2))+'px');
				c2.set(x2,'top','0px');
				if(!b){
					tCon=c1.byPosition(0,data);
					c2.set(tCon,'innerHTML','');
				}
				if(!b){!d?c2.set(item,'left',(n1+n5)+'px'):c2.set(item,'left',(0-(n1+n5))+'px');}
			}
			function setFleche(b){
				var b=b||false;
				c2.set(uLeft,'visibility',b?'hidden':cId==0?'hidden':'visible');
				c2.set(uRight,'visibility',b?'hidden':cId==mbr.length-1?'hidden':'visible');
			}
			function move(){
				var jme1=new jml.jme.motion();
				var n1=c2.get(item,'offsetWidth');
				var d=dir=='right';
				cId = !d?cId-1:cId+1;
				if(isset(mbr[cId])){
					setFleche(true);
					var mo={target:item,property:'left',end:step==0?0:d?0-n1:n1,duration:20,equation:'easeOut',id:null};
					jme1.onMotionFinished=function(){
						if(!trStep){
							var cx=new c3.connection();
							cx.url='/ajax/getPaInfo';
							cx.data={paId:mbr[cId],w:162,h:90};
							cx.onLoad=function(dta){
								trStep=true;
								var a=decode(dta);
								var o0={id:null,title:null,price:null,img:null};
								for(var i=0;i<a.length;i++){
									var o1=a[i];
									if(o1.label=='id') o0.id=o1.value;
									if(o1.label=='title') o0.title=o1.value;
									if(o1.label=='img') o0.img=o1.value;
									if(o1.label=='price') o0.price=o1.value;
									if(o1.label=='url') o0.url=o1.value;
								}
								var s1="<span>"+o0.title + "</span>";
								if (parseFloat(o0.price) > 0) s1 += "<strong><span class='tColor1'>"+o0.price+"$</span></strong>";
								c2.set(tCon,'innerHTML',s1);
								tLink.href=o0.url;
								jml.events.add(tImg,'load',function(){
									setFleche();
									jme1.start({target:item,property:'left',end:d?n1:0-n1,duration:20,equation:'easeOut',id:null});
								});
								tImg.src=o0.img;
							};
							cx.onError=function(id,msg){alert(id+", msg = "+ msg);};
							cx.connect();
						}else{
							c2.set(uiOid,'left','0px');
							c2.set(uiOid,'top','0px');
							c2.set(uiOid,'width','1px');
							c2.set(uiOid,'height','1px');
							inMotion=false;
						}
					}
					jme1.start(mo);
				}
			}
			return {
				$:function(){
					var h=this;
					jml.events.text.add('resize',delegate(h,'setPosition'));
					jml.events.add(window,'resize',delegate(h,'setPosition'));
					return this;
				},
				setPosition:function(){setup(bImg,true);},
				animate:function(o,d){
					if(inMotion) return;
					inMotion=true;
					trStep=false;
					bImg=o;
					dir=d;
					init(o);
					setup(o);
					move();
				}
			}.$();
		}
	}
}
var myScrlBtns=new function(){
	var c1=jml.obj;
	return {
		swap:function(o){
			var s0=' isOver';
			var s1=c1.get(o,'className');
			s1=isset(s1.match(s0))?s1.replace(s0,''):s1+s0;
			c1.set(o,'className',s1);
		}
	}
}
var website = new function(){
	var c1=jml.browser,c2=jml.obj;
	return {
		forceHeight:function(){
				var o1=c1.getWindowSize();
				var n1=o1.h;
				var n2=c2.get('global','offsetHeight');
				var n3=c2.get('footer','offsetHeight')+c2.get('siteHeader','offsetHeight');
				if(n2<n1)  c2.set('hForce','height',n1-n3-6); // -6 is a constant ?
		},
		goBack:function(n){history.go(isset(n)?n:-1);},
		go:function(s){
			window.location.href=s;
		},
		goParam:function(o){
			var s="";
			for(var i in o){if(!isEmpty(o[i])) s+= i=='base'? o[i]+'/' : i+'/'+o[i]+'/';}
			this.go(s);
		},
		quicklogin:function(){
			var s=window.location.href;
			var _s=s.match(/#.+/);
			if(_s!=null) s=s.replace(_s,'');
			s=s.replace('?logout=1','')+'?';
			var a=[{username:'quick_helperUsername'},{password:'quick_helperPassword'},{auth_remember:'quick_helperRememberMe'}];
			for(var i=0;i<a.length;i++){
				var o=a[i];
				for(var j in o){
					var e=getObj(o[j]);
					if(i<2) s+=j+'='+e.value+'&';
					if(i==a.length-1) s+=j+'='+e.checked;
				}
			}
			this.go(s);
		}
	}
}
jml.events.add(window,'load',delegate(website,'forceHeight'));

var uiTreeMenu=uiTreeMenu||null;
if(isset(uiTreeMenu)){
	jml.events.add(window,'load',delegate(uiTreeMenu,'initialize','uiTreeMenu01'));
}
var categorieFiltersCache={};
function categorieFilters(){
	var c1=jml.server,c2=jml.obj,c3=jml.xml.node,c4=jml.obj,catCtrl=false,catContainer,initAll=null,isRunning=false;
	function flush(o1){
		var o0=o1.options;
		var n1=o0.length-1;
		for(var i=n1;i>=0;i--){if(isset(o0[i])&&isset(o0[i].value)) c3.remove(o0[i]);}
	}
	function populate(o,t){
		for(var i in o){
			var e=o[i],x1=c3.create('OPTION',t);
			x1.value=e.value;
			x1.innerHTML=e.label;
		}
	}
	function getContent(o,t,e){
		var s=o.value,o1=getObj(t);
		flush(o1);
		if(!isset(catContainer)) catContainer=c3.byAttributeValue('class','categorieList',document.body)[0];
		if(!isset(initAll)) initAll=c4.get(catContainer,'innerHTML');
		if(s=='all'){
			o1.disabled=true;
			if(t=='staticFilters2') c4.set(catContainer,'innerHTML',initAll);
			isRunning=false;
		}
		if(s!='all'){
			var o3=getObj('staticFilters2');
			if(isset(o3)&&!catCtrl&&t=='staticFilters2'){
				jml.events.add(o1,'change',function(){
					var cx1=new c1.connection();
					cx1.url="/ajax/dynamicbox";
					cx1.data={name:'categoryList',value:o1.value,type:s=='publication'?'newspaper_id':'region_id'};
					cx1.onLoad=function(d){
						isRunning=false;
						c4.set(catContainer,'innerHTML',d);
					};
					cx1.onError=function(id,msg){/*alert(id+", msg = "+ msg);*/};
					cx1.connect();
				});
				catCtrl=true;
			}
			o1.disabled=true;
			if(isset(categorieFiltersCache[s])){
				populate(categorieFiltersCache[s],o1);
				o1.disabled=false;
				isRunning=false;
			}else{
				var cx=new c1.connection();
				cx.url=e.controller+e.action;
				cx.data={type:s};
				cx.onLoad=function(d){
					isRunning=false;
					var o2=decode(d);
					if(!isset(categorieFiltersCache[s])) categorieFiltersCache[s]=o2;
					populate(o2,o1);
					o1.disabled=false;
				};
				cx.onError=function(id,msg){/*alert(id+", msg = "+ msg);*/};
				cx.connect();
			}
		}
	}
	return {
		change:function(o,t,e){
			if(isRunning) return;
			isRunning=true;
			if(!isset(getObj(t))||!isset(e)||!isset(o)) return;
			getContent(o,t,e);
		}
	};
}
function activateRadius(input,data){
	var s1='search_',s2='rafineSearch_';
	var b=upper(input.value).match(/^([ABCEGHJKLMNPRSTVXY]\d[ABCEGHJKLMNPRSTVWXYZ])\ {0,1}(\d[ABCEGHJKLMNPRSTVWXYZ]\d).*$/)!=null;
	var o1=getObj(s1+'radius'),o2=getObj(s2+'radius'),o3=isset(o1)?o1:o2;
	if(isset(o3)) o3.disabled=!b;
}
function renewPa(o,s){
	var c1=jml.xml.node,c2=jml.server,c3=jml.obj,x1=c1.byProximity(o,-1);
	var x2=c1.byProximity(c1.parent(o,1),-1);
	var cx=new c2.connection();
	cx.url='/ajax/paRenew/';
	cx.data={paId:s};
	cx.onLoad=function(d){
		var o2=decode(d);
		
		
		if(o2[0].label=='error') window.location="/achat/panier/";
		
		var msgSucces = '<br><span class=\"tColor1\">Votre annonce a &eacute;t&eacute; renouvel&eacute;e avec succ&egrave;s.</span>';
		
		if(o2[0].label=='newExpirationDate') c3.set(x1,'innerHTML',o2[0].value + msgSucces);
		if(o2[1].label=='newOnlineDate') c3.set(x2,'innerHTML',o2[1].value );
		
		c3.set(o,'innerHTML','');
	};
	cx.onError=function(id,msg){alert(id+", msg = "+ msg);};
	cx.connect();
}
function uploadManagerClass(){
	var _control,c1=jml.obj,c2=jml.xml.node,thmC;
	return {
		$:function(){
			jml.events.add(window,'load',delegate(this,'init'));
			return this;
		},
		init:function(o){
			if(!isset(thmC)){
				var o1=getObj("thumbContainer");
				if(isset(o1))thmC=o1;
			}
			if(!isset(bBtn)){
				var o1=getObj("cvenduBrowseBtn");
				if(isset(o1))bBtn=o1;
			}
			this.checkLimit()==true?_control=o : this.disable(true);
		},
		getOrder:function(s1,s2){
			var o1=getObj(s1),o2=getObj(s2);
			if(!isset(o1)||!isset(o2)) return;
			var a1=c2.childToArray(o1),a2=[];
			for(var i=0;i<a1.length;i++){
				var o3={};
				var x1=a1[i].x;
				if(isset(x1)){
					var s1=c2.byPosition(0,x1).src;
					a2.push({id:String(s1.match(/\d{3,}/)),order:i,src:s1});
				}
			}
			o2.value=encode(a2);
		},
		removeThumb:function(o){
			var x1=c2.parent(o,1);
			var x2=c2.byProximity(o,-1);
			if(isset(x1)) c2.remove(x1);
			var o1=getObj('photosJoin');
			if(!isset(thmC)){
				var o2=getObj("thumbContainer");
				if(isset(o2))thmC=o2;
			}

			myUploader.reset();

			c1.set(o1,'innerHTML','Vous avez joint : '+c2.length(thmC)+' photo'+(c2.length(thmC)>1?'s':''));
			var c3=jml.server;
			var cx=new c3.connection();
			cx.url='/ajax/deletePaImage/';
			cx.data={source:x2.src,paId:isset(currentPaId)?currentPaId:''};
			cx.onLoad=function(d){};
			cx.onError=function(id,msg){/*alert(id+", msg = "+ msg);*/};
			cx.connect();
		},
		checkLimit:function(){return isset(thmC)?c2.length(thmC)<=99:0;},
		onComplete:function( imageSrc){
		
			var o1=getObj('thumbContainer');
			var o2=getObj('thumbListTpl');
			var x1=c2.clone( c2.byPosition(0,o2) ,true);
			var x2=c2.byProximity(o1,-1);
			var x3=c2.byPosition(0,x1);

			if(isset(x3)) x3.src=imageSrc;
			c2.add(x1,o1);
			
			c1.set(x2,'innerHTML','Vous avez joint : '+c2.length(thmC)+' photo'+(c2.length(thmC)>1?'s':''));
			//c1.set('fsUploadProgress','innerHTML','');

			if(isset(myFormValidator)) myFormValidator.errorPosition();
			if(isset(myDrag)&&isset(myDrag.onDrop)) myDrag.onDrop();
		}
	}.$();
};
function PAImageUploaderClass( id ){
	var c1 = jml.obj;
	var c2 = jml.flash;
	var c3 = jml.events;
	var c4 = jml.browser;

	var __host;
	var __container;
	var __flashInstance;
	var __message;
	var __paId;
	var __containerId = id || null;
	var __imageData;

	function initialize(){

		if(!isset(__containerId)) return;
		if(!isset(__container)) __container = getObj( __containerId );
		if(!isset(__container)) return;

		__message = c1.get(__container, 'innerHTML');
		if(!isset(__message)) __message  = '';

		getPaId();
		resetImageData();
		positionUploadInterface();
		formatConfigurationObject();
		writeFlash();

	}

	function formatConfigurationObject(){ __host.configuration.FILE_UPLOADER = addGETVars( __host.configuration.FILE_UPLOADER, __imageData ); }
	function resetImageData(){ __imageData = {uniquePaId:__paId, uniqueId:getUniqueId() }; }
	function positionUploadInterface(){
		c1.set('uploadInterface', 'left', c1.get('uploadInterfacePlaceHolder','offsetLeft') + 'px');
		c1.set('uploadInterface', 'top', c1.get('uploadInterfacePlaceHolder','offsetTop') + 'px');
		c1.set('uploadInterface', 'display', 'block');
	}

	function addGETVars( s1, o1 ){
		var n1 = s1.indexOf('?');
		s1 += n1==-1? '?' : '&';
		for(var i in o1) s1 += i + "="+o1[i]+'&';
		return s1.substr(0, s1.length-1);
	}

	function writeFlash(){
		if(c2.version >= 9){
			__flashInstance = c2.create({
				container: __containerId,
				src:'/library/swf/uploader.swf',
				transparent:true,
				nocache:true,
				id:'DEKVUPLOAD' + __containerId,
				version:'9,0,0,0',
				bgcolor:'#FFFFFF',
				quality:'high',
				align:'middle',
				width:300,
				height:90
			},__host.configuration);
			if( c4.type === 'msie' && (isset( __flashInstance.readyState ) && __flashInstance.readyState==0) ) c1.set(__container,'innerHTML', __message);
		}
	}

	function executeCustomEvent( type, dataString){
		var data = decode( dataString);
		if(!isset(data)) data = dataString;
		if(type == 'complete'){
		
			var thumbUrl = '/image/showPaImageByFilename/filename/' + __imageData.uniqueId + data[0].match(/\.\D{3,4}$/) +'/w/81/h/59';
			uploadManager.onComplete( thumbUrl );
			if( uploadManager.checkLimit() ){
				resetImageData();
				formatConfigurationObject();
				writeFlash();
			}else{
				c1.set(__container, 'innerHTML',"<div id='flashUploadMsg'>Vous avez atteint le nombre maximal de photos pour cette annonce.</div>");
			}
		}
	}

	function reset(){
		resetImageData();
		formatConfigurationObject();
		writeFlash();
	}

	function getPaId(){
		if(isset(__paId)){
			return __paId;
		}else{
			var x1 = getObj('pacreate_uniquePaId');
			if(isset(x1) && !isEmpty(x1.value)){
				__paId = x1.value;
			}else{
				__paId = getUniqueId();
				x1.value = __paId;
			}
		}
	}

	return {
		constructor:function(){
			__host = this;
			c3.text.add('resize',positionUploadInterface);
			c3.add(window,'resize',positionUploadInterface);
			c3.add(window,'scroll',positionUploadInterface);
			c3.add(window,'load',initialize);
			return this;
		},
		configuration:{
			FILE_UPLOADER:null,
			IMAGES_REPOSITORY:null,
			UPDATE_EVENT:null,
			INIT_EVENT:null,
			USE_JSON:true,
			BROWSE_BTN_LABEL:"Parcourir",
			CUSTOM_BUTTON_DOWN_URL: "/library/images/text/fr/btns/parcourir_01_over.gif",
			CUSTOM_BUTTON_UP_URL: "/library/images/text/fr/btns/parcourir_01.gif",
			CUSTOM_BUTTON_OVER_URL: "/library/images/text/fr/btns/parcourir_01.gif",
			CUSTOM_PRELOADER_BAR : "/library/images/interface/bg21.gif",
			MAX_FILE_SIZE:3,
			BACKGROUND_URL:null,
			SHOW_IMAGE_LIST:false,
			MAX_FILE_SIZE_ERROR_MESSAGE: "Le fichier que vous tentez de télécharger est plus gros que la limite permise."
		},
		onEvent:executeCustomEvent,
		reset:reset
	}.constructor();
}
var favorites= new function(){
	var c1=jml.server,c2=jml.obj,o1,c3=jml.xml.node,msg1='Ajouter à mes favoris',msg2='Retirer de mes favoris',x1,b1=true;
	function callScript(s1,s2,s3,f){
		var cx=new c1.connection();
		cx.url='/ajax/'+s1;
		cx.data={paId:s2!=null?s2:isEmpty(currentPaId)?'':currentPaId,userId:s3!=null?s3:isEmpty(currentuserId)?'':currentuserId};
		cx.onLoad=function(d){
			var o2=decode(d);
			if(Number(o2[0].value)==1&&isset(f)) f();
		};
		cx.onError=function(id,msg){alert(id+", msg = "+ msg);};
		cx.connect();
	}
	return {
		$:function(){return this;},
		swap:function(o,s1,s2){
			var s1=s1||null,s2=s2||null;
			if(!b1) return;
			x1=o;
			this[(lower(o.innerHTML).indexOf('ajouter')!=-1?'add':'remove')](s1,s2);
		},
		add:function(s1,s2){
			b1=false;
			callScript('setAsFavorite',s1,s2,function(){
				x1.innerHTML=s1!=null? upper(msg2):msg2;
				b1=true;
			});
		},
		remove:function(s1,s2){
			b1=false;
			callScript('removeFavorite',s1,s2,function(){
				x1.innerHTML=s1!=null? upper(msg1):msg1;
				b1=true;
			});
		}
	}.$();
}
var manageFavorite=new function(){
	var c1=jml.server,c2=jml.obj,o1,c3=jml.xml.node,cache,current;
	function flush(o){
		var o0=o.options;
		var n1=o0.length-1;
		for(var i=n1;i>=0;i--){if(isset(o0[i])&&isset(o0[i].value)) c3.remove(o0[i]);}
	}
	function populate(o,t){
		for(var i in o){
			var e=o[i],x1=c3.create('OPTION',t);
			x1.value=e.value;
			x1.innerHTML=e.label;
		}
	}
	function getMain(){return getObj('favoritespa_category');}
	function getSub(){return c3.byPath('1.0',c3.byProximity(c3.parent(getMain(),2),1));}
	return {
		$:function(){
			current={cat:null,sub:null,sel1:null,sel2:null,sort:null};
			return this;
		},
		setSubCategory:function(o){
			current.sel1=o;
			current.sel2=getSub();
			current.cat=formUtils.getValue(o);
			if(current.cat=='all'){
				flush(current.sel2);
				var o2=[];
				o2.unshift({value:'all',label:'Toutes les sous-catégories'});
				populate(o2,current.sel2);
				return;
			}
			var cx=new c1.connection();
			cx.url='/ajax/categoryList';
			cx.data={category_id:current.cat};
			cx.onLoad=function(d){
				flush(current.sel2);
				var o2=decode(d);
				o2.unshift({value:'all',label:'Toutes les sous-catégories'});
				populate(o2,current.sel2);
				o.disabled=false;
			};
			cx.onError=function(id,msg){alert(id+", msg = "+ msg);};
			o.disabled=true;
			cx.connect();
		},
		refresh:function(o){
			var s1=formUtils.getValue(getMain()),s2=formUtils.getValue(getSub());
			if(current.cat==null) current.cat = s1;
			if(current.sub==null) current.sub = s2;
			website.goParam({base:'/user/favoritespa',category:s1,subCategory:s2,order:o.order,sort:o.sort,id:o.id});
		}
	}.$();
}
var manageModel=new function(){
	var c1=jml.server,c2=jml.obj,o1,c3=jml.xml.node,live;
	function flush(o){
		var o0=o.options;
		var n1=o0.length-1;
		for(var i=n1;i>=0;i--){if(isset(o0[i])&&isset(o0[i].value)) c3.remove(o0[i]);}
	}
	function populate(o,t){
		for(var i in o){
			var e=o[i],x1=c3.create('OPTION',t);
			x1.value=e.value;
			x1.innerHTML=e.label;
		}
	}
	return {
		$:function(){

			return this;
		},
		change:function(o){
			if(live) return;
			o.disabled=true;
			var x1=c3.byPath('0.1.0',c3.byProximity(c3.parent(o,3),1));
			var cx=new c1.connection();
			cx.url='/ajax/vehicleModelList';
			cx.data={make_name:formUtils.getSelected(o).innerHTML,startsWith:''};
			cx.onLoad=function(d){
				o.disabled=false;
				if(d.length==2&&d=='[]') return;
				flush(x1);
				var o2=decode(d);
				populate(o2,x1);
			};
			cx.onError=function(id,msg){alert(id+", msg = "+ msg);};
			cx.connect();
		}
	}.$();
}

// this need to be finished
var saveSearch=new function(){
	var c1=jml.server,c2=jml.obj,c3=jml.xml.node,b1=true,defaultValue='Donner un nom à cette recherche',formUi,ctrUi1,ctrUi2,ctrUi3,msgC1,imgC1,uiValue;
	function  hideAllMsg(o){
		var n=c3.length(o);
		for(var i=0;i<=n;i++){
			var x1=c3.byPosition(i,o);
			if(isset(x1)){
				var s1=''+c2.get(x1,'className');
				if(s1.indexOf('uiNone')==-1) c2.set(x1,'className',c2.get(x1,'className')+' uiNone');
			}
		}
	}
	return {
		$:function(){
			return this;
		},
		save:function(o,b){
			if(!b1) return;
			b1=false;
			if(!isset(formUi)) formUi = c3.parent(o,6);
			var x1=c3.parent(o,4);
			var n1=c3.position(x1);
			if(n1!=2) x1=c3.byProximity(x1,1);
			if(isset(x1)){
				if(!isset(ctrUi1)) ctrUi1 = c3.byProximity(x1,-1);
				if(!isset(ctrUi2)) ctrUi2 = x1;
				if(!isset(ctrUi3)) ctrUi3 = c3.byProximity(x1,1);
				if(!isset(imgC1)) imgC1 = c3.byPath('0.0.0',c3.byProximity(x1,-2));
				if(!isset(msgC1)) msgC1 = c3.byPath('0.0.1',c3.byProximity(x1,-2));
			}
			var x2=c3.byPosition(0,formUi);
			var s1=x2.value;
			hideAllMsg(msgC1);
			var x3=c3.byPath('0.0',c3.parent(o,2));
			if(lower(x3.nodeName)=='img'){
				var z1=c3.byPath('0.0.0.0',c3.byProximity(c3.parent(o,4),1));
				if(isset(z1)&&lower(z1.nodeName)=='input') x3=z1;
			}
			var s2=x3.value;
			c2.set(c3.byPosition(1,ctrUi3),'value',s2);
			if(s2==defaultValue){
				var x3=c3.byPosition(4,msgC1);
				if(isset(x3)) c2.set(x3,'className',c2.get(x3,'className').replace('uiNone',''));
				b1=true;
				return;
			}
			var x4=c3.byPosition(3,msgC1);
			if(isset(x4)) c2.set(x4,'className',c2.get(x4,'className').replace('uiNone',''));
			var x5 = c3.byPath('1.1',msgC1);
			x5.innerHTML=s2;
			var cx=new c1.connection();
			cx.url='/ajax/savesearch';
			cx.data={name:s2};
			var x8=formUi.elements;
			var n1=x8.length-1;
			for(var i=0;i<=n1;i++){
				var x9=x8[i];
				if(isset(x9)){
					if(isset(x9.name)){
						var s2='';
						if(lower(x9.type)=='radio'){
							var x10=formUi[x9.name];
							for(var j=0;j<=x10.length-1;j++){
								var x11=x10[j];
								if(x11.checked){
									s2=x11.value;
									break;
								}
							}
						}else if(lower(x9.type)=='checkbox'){
							if(x9.checked) s2=x9.value;
						}else{
							if(isEmpty(s2)) s2=x9.value;
						}
						cx.data[x9.name]=s2;
					}
				}
			}
			cx.onLoad=function(d){
				b1=true;
				hideAllMsg(msgC1);
				var x12=c3.byPosition(1,msgC1);
				if(isset(x12)) c2.set(x12,'className',c2.get(x12,'className').replace('uiNone',''));
				c2.set(ctrUi2,'className',c2.get(ctrUi2,'className').replace('uiNone',''));
				c2.set(ctrUi2,'className',c2.get(ctrUi2,'className')+' uiNone');
				c2.set(ctrUi1,'className',c2.get(ctrUi1,'className').replace('uiNone',''));
				hideAllMsg(imgC1);
				var x13=c3.byPosition(0,imgC1);
				 c2.set(x13,'className',c2.get(x13,'className').replace('uiNone',''));
			};
			cx.onError=function(id,msg){alert(id+", msg = "+ msg);};
			cx.connect();
		},
		rename:function(o){this.newSave(o,true);},
		newSave:function(o,b){
			var b=b||false;
			if(!isset(formUi)) formUi = c3.parent(o,6);
			var x1=c3.parent(o,4);
			if(isset(x1)){
				if(!isset(ctrUi1)) ctrUi1 = x1;
				if(!isset(ctrUi2)) ctrUi2 = c3.byProximity(x1,1);
				if(!isset(ctrUi3)) ctrUi3 = c3.byProximity(x1,2);
				if(!isset(imgC1)) imgC1 = c3.byPath('0.0.0',c3.byProximity(x1,-1));
				if(!isset(msgC1)) msgC1 = c3.byPath('0.0.1',c3.byProximity(x1,-1));
			}
			c2.set(ctrUi2,'className',c2.get(ctrUi2,'className').replace('uiNone',''));
			c2.set(ctrUi1,'className',c2.get(ctrUi1,'className')+' uiNone');
			if(!b){
				c2.set(c3.byPosition(0,ctrUi3),'value','');
				if(!isset(uiValue)) uiValue=c2.get(c3.byPath('0.0.0.0',ctrUi2),'value');
				c2.set(c3.byPath('0.0.0.0',ctrUi2),'value',defaultValue);
			}
		},
		emptyField:function(o,b){
			var b=b||false,s1=o.value;
			if(!b){
				if(s1==defaultValue) o.value="";
			}else{
				if(isEmpty(s1)||s1==defaultValue) o.value=defaultValue;
			}
		}
	}.$();
}
function submitSavedSearch(o,s){
	var c1=jml.xml.node;
	var x1=c1.byPosition(0,c1.byProximity(c1.parent(o,1),-1));
	var s1=x1.name;
	var s2=getObj('_form_name').value+'_';
	s1=s1.replace(s2,'');
	if(!isEmpty(x1.value)) s+='/'+s1+'/'+x1.value;
	website.go(s);
}
function deleteSavedSearch(s){
	s+='/ids/';
	s1='';
	var o=getObj(getObj('_form_name').value);
	var a=o.elements;
	var n1=a.length-1;
	for(var i=0;i<n1;i++){
		var e=a[i];
		if(lower(e.type)=='checkbox'&&!isEmpty(e.value)&&e.checked) s1+=e.value+',';
	}
	s1+='end';
	s1=s1.replace(/\s/,'');
	s1=s1.replace(',end','');
	s+=s1;
	s=s.replace(/\s/,'');
	website.go(s);
}

function classImageGallery(s1,s2){
	var c1=jml.obj,c2=jml.xml.node,c3=jml.events,total,gId,kId,lId,count,mem,uiDisplay,cInd;
	var s=s||null;
	function setCurrent(){
		if(!isset(gId)) gId=getObj(s1);
		if(!isset(kId)) kId=getObj(s2);
		if(!isset(gId)||!isset(kId)) return;
		if(!isset(lId)) lId=c2.parent(kId,1);
		if(!isset(count)) count=0;
		if(!isset(mem)) mem=scan();
		if(!isset(uiDisplay)){
			uiDisplay = c2.create('DIV',document.body);
			if(isset(cInd)&&isset(cInd.n)){
				c1.set(uiDisplay,'innerHTML',(cInd.n+1)+"/"+total);
				c1.set(uiDisplay,'className','uiGalDisplay');
			}
		}
		position();
	}
	function position(){
		var n1 = jml.browser.type=='msie'?-4:-4; // border+space
		c1.set(uiDisplay,'left',(c1.get(lId,'offsetLeft')+c1.get(lId,'offsetWidth')-c1.get(uiDisplay,'offsetWidth')+n1)+'px');
		c1.set(uiDisplay,'top',(c1.get(lId,'offsetTop')-(n1+2))+'px');
	}
	function changeImg(e,o){
		c1.set(cInd.prnt,'className',String(c1.get(cInd.prnt,'className')).replace(' active',''));
		o.src=o.src.replace(/w\/\d+/,'w/332');
		o.src=o.src.replace(/h\/\d+/,'h/243');
		if(o.cls.indexOf('sold')!=-1||o.cls.indexOf('$sold')!=-1){
			var sx1=o.src.replace('forcecolors/1/','');
			o.src=sx1;
		}
		cInd=o;
		c1.set(cInd.prnt,'className',String(c1.get(cInd.prnt,'className')) + ' active');
		c1.set(kId,'src',o.src);
		c1.set(uiDisplay,'innerHTML',(cInd.n+1)+"/"+total);
		position();
	}
	function scan(){
		var o={};
		var x1=c2.byPath('0',gId);
		var n1=c2.length(x1)-1;
		for(var i=0;i<=n1;i++){
			var x2=c2.byPosition(i,x1);
			var n2=c2.length(x2)-1;
			for(var j=0;j<=n2;j++){
				var x3=c2.byPath(j+'.0.0',x2);
				if(isset(x3)){
					var x4=c2.parent(x3,1);
					var e=o['img'+i]={src:x3.src,n:count,obj:x3,prnt:x4,cls:x3.className};
					if(String(x4.className).indexOf('active')!=-1) cInd=e;
					c3.add(x4,'click',delegate(null,changeImg,e));
					c3.add(x4,'mouseover',function(){});
					c3.add(x4,'mouseout',function(){});
					c1.set(x4,'cursor','pointer');
					count++;
				}
			}
		}
		total=count;
		return o;
	}
	return {
		$:function(){
			c3.add(window,'load',setCurrent);
			c3.add(window,'resize',position);
			return this;
		},
		zoom:function(n){alert(n);}
	}.$();
}

function classTab(){
	var c1=jml.obj,c2=jml.xml.node,ui1,ui2,cTb;
	function execute(o){
		if(!isset(ui1)) ui1=c2.parent(o,1);
		if(!isset(ui2)) ui2=c2.byProximity(c2.parent(ui1,1),2);
		var n=c2.position(o);
		for(var i=0;i<=c2.length(ui2)-1;i++){
			c1.set(c2.byPosition(i,ui2),'className',i!=n?'uiNone':'uiBlock');
		}
		
		if (n==0){p=1;}else{p=0;}
		if(!isset(cTb)) cTb=c2.byPosition(p,ui1);
		
		c1.set(c2.byPosition(0,cTb),'className','');
		c1.set(c2.byPosition(0,o),'className','active');
		cTb=o;
	}
	return {
		$:function(){
			return this;
		},
		select:function(o){execute(o)}
	}.$();
}

function validateIfSelected(o,s){
	var o1=o.elements,n1=o1.length,n2=0,c1=new  innerWindowClass(),c2=jml.events,win=null;
	for(var i=0;i<n1;i++){
		var o2=o1[i];
		if(o2.name==s&&o2.checked) n2++;
	}
	if(n2==0){
		win=new c1.window('Vous devez sélectionner au moin <span class="tColor1 uiBold">1 item</span> avant de cliquer sur ce bouton.','innerWindow01');
		return false;
	}
	return true;
};
function toggle(s){
	var o=getObj(s),c1=jml.xml.node,c2=jml.obj,c3=jml.events,n1=c1.length(o);
	for(var i=0;i<n1;i++){
		var x1=c1.byPosition(i,o),x2=c1.byPath('0.0',x1);
		c2.set(x2,'href','javascript:void(0);');
		c2.set(x2,'cursor','pointer');
		c3.add(x2,'click',function(e){
			var e=c3.initialize(e),o1=c3.getElement(e),x3=c1.byPosition(1,c1.parent(o1,2)),x4=c1.parent(o1,1),s1=String(c2.get(x3,'className')),s2=String(c2.get(x4,'className'));
			c2.set(x3,'className',s1.indexOf('uiNone')!=-1?'':'uiNone');
			if(s2=='0'){
				c2.set(x4,'className','open');
			}else{
				c2.set(x4,'className',s2.indexOf('open')!=-1?'':'open');
			}

		});
	}
}
function enableSPField01(o1,s1,s2,s3){
	var b1=isEmpty(o1.value);
	var c1=jml.obj;
	c1.set(s1,'value','');
	c1.set(s1,'disabled',b1);
	c1.set(s3,'alpha',!b1?'100':'45');
	var a=myFormValidator.fields.dynamics;
	if(!b1){
		a.push({input:s2,validation:'empty'});
	}else{
		for(var i=0;i<a.length;i++){
			var o=a[i];
			if(o.input==s2){
				a.splice(i,1);
				break;
			}
		}
		myFormValidator.resetError();
	}
}
