var bricoler = {
	photoTopDivOriginalWidth:0,
	debugLevel:0,
	formErrors:{},
	init:function(){
		if($('photoTopImg')){
			bricoler.centrerImgVertical($('photoTopImg'));
		}

		if(jsController && jsController['defaultBoxAideContent']){
			$('boxAideContent').update(jsController['defaultBoxAideContent']);
		}
		if($('printFicheButton')){
				Event.observe($('printFicheButton'), 'click', bricoler.printFiche);
		}
		if($('explicationsAccueilHideControl')){
			var dejavenu=bricoler.LireCookie("dejavenu");
			if (dejavenu == "oui")
			{
				Element.hide('explicationsAccueilBlock');
			
			}
			Event.observe($('explicationsAccueilHideControl'),'click',bricoler.hideExplicationsAccueil);
			Event.observe($('explicationsAccueilShowControl'),'click',bricoler.showExplicationsAccueil);
		}

		//var border = RUZEE.ShadedBorder.create({ corner:8, shadow:16,  border:1 });
		//border.render($$('#do_bricoler_fiche .rounded'));
		
		if($('do_bricoler_fiche')){
 			var uploadSubmits=$('do_bricoler_fiche').getElementsByClassName('submitUpload');
			for(i=0;i<uploadSubmits.length ;i++){
				Event.observe(uploadSubmits[i], 'click', bricoler.onUploadSubmit);
			}
			if($('validerContributionLink')){
				Event.observe($('validerContributionLink'), 'click', bricoler.saveContribution);
			}

			if($('publierContributionLink')){
				Event.observe($('publierContributionLink'), 'click', bricoler.saveContribution);
			}
			Event.observe($('do_bricoler_fiche'),'submit',bricoler.saveContribution);
            var elts=Form.getElements($('do_bricoler_fiche'));
    		for(i=0;i<elts.length;i++){
    			Event.observe(elts[i], 'focus', bricoler.clearDefaultValue);
				Event.observe(elts[i], 'focus', bricoler.updateHelpMessage);
				Event.observe(elts[i], 'focus', bricoler.setAideBoxPosition);
    			//Event.observe(elts[i], 'blur', bricoler.resetDefaultValue);
    		}
			Event.observe($('photoTopImg'), 'click', bricoler.toggleTopPhotoFormElement);
			Event.observe($('photoTopFileFormElementHideLink'), 'click', bricoler.toggleTopPhotoFormElement);

			var editableImages=$('do_bricoler_fiche').getElementsByClassName('ficheContentImage');
			for(i=0;i<editableImages.length ;i++){
				Event.observe(editableImages[i], 'click', bricoler.toggleFicheImageFormElement);
			}

			var hideLinks=$('do_bricoler_fiche').getElementsByClassName('imageFormHideButton');
			for(i=0;i<hideLinks.length ;i++){
				Event.observe(hideLinks[i], 'click', bricoler.toggleFicheImageFormElement);
			}
		}
		var ficheContentImageLinks=document.getElementsByClassName('ficheContentImageLink');
		for(i=0;i<ficheContentImageLinks.length ;i++){
			Event.observe(ficheContentImageLinks[i], 'click', bricoler.openBigImage);
		}
		bricoler.EcrireCookie("dejavenu", "oui");
	},
	EcrireCookie:function(nom, valeur)
		{
		var argv=bricoler.EcrireCookie.arguments;
		var argc=bricoler.EcrireCookie.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;
		document.cookie=nom+"="+escape(valeur)+
		((expires==null) ? "" : ("; expires="+expires.toGMTString()))+
		((path==null) ? "" : ("; path="+path))+
		((domain==null) ? "" : ("; domain="+domain))+
		((secure==true) ? "; secure" : "");
		},
	getCookieVal:function (offset)
		{
		var endstr=document.cookie.indexOf (";", offset);
		if (endstr==-1) endstr=document.cookie.length;
		return unescape(document.cookie.substring(offset, endstr));
		},
 	LireCookie:function(nom)
		{
		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 bricoler.getCookieVal(j);
		i=document.cookie.indexOf(" ",i)+1;
		if (i==0) break;
		
		}
		return null;
		},
	setAideBoxPosition:function(event){

		[a,b]=Position.page($('boxAide')); // la fonction page ne marche pas sous IE
		//mais findPosY ou findPos (trouvées sur Internet pour essayer de remplacer), ne donnent pas les mêmes résultats sous F et IE. C'est la fonction offsetParent (qui donne l'offset du div "parent" par rapport auquel est placé l'élément) qui pose problème, je ne suis pas arrivé à trouver d'équivalent.
		
		d=bricoler.findPosY($('validerContributionLink'));

		[x,y]=Position.page(Event.element(event));
		e=0;
		
		if(d>(y-65)){
			
			e=d-y+65;
		}
		Position.absolutize($('boxAide'));
		
		Position.clone(Event.element(event),$('boxAide'),$H({setLeft:true, setTop:true, setWidth:false, setHeight:false,offsetLeft:(-x+a-8), offsetTop:e}));
		//bricoler.debug('test');
		
		},
		
	onUploadSubmit:function(event) {
		if(bricoler.checkBeforeSubmit(null)!==true){
			Event.stop(event);
			return;
		}
		$('boxAideContent').update(aideMessages['onUploadSubmit']);
		new Effect.Highlight('boxAideContent',{startcolor : '#FF0000', endcolor:'#00FF00',duration:2 });
		new Effect.Opacity('contentBody',{from:1,to:0.4});
		//on ne peut pas disable le form sans empecher submit ??
		//$('do_bricoler_fiche').disable();
	},
	hideExplicationsAccueil:function(event){
		//new Effect.toggle('explicationsAccueilBlock','slide');//blind
		//new Effect.Puff('explicationsAccueilBlock');
		//new Effect.Grow('explicationsAccueilBlock', {duration:2,  from:1.0, to:0.0,direction:'top-right'});//fps:25,
		//new Effect.Squish('explicationsAccueilBlock', {direction:'top-right'});
		new Effect.Shrink('explicationsAccueilBlock', {duration:2,direction:'top-right'});
		new Effect.Appear('explicationsAccueilShowControl',{queue:'end'});
		//Element.show('explicationsAccueilShowControl');
		//Element.hide('explicationsAccueilBlock');
	},
	showExplicationsAccueil:function(event){
		new Effect.Grow('explicationsAccueilBlock', {duration:2,direction:'top-right'});
		new Effect.Fade('explicationsAccueilShowControl',{queue:'front'});
		//Element.hide('explicationsAccueilShowControl');
	},
	printFiche:function(event){
		window.print();
	},
	clearDefaultValue:function(eventOrElement){
		var el=Event.element(eventOrElement);
		if(typeof(el)=='undefined'){
			el=eventOrElement;//fonction appelee depuis une fonction avec element en arg., pas depuis un evenement
		}
		if(Element.hasClassName(el,'defaultValue')){
			if(el._cleared)return;
			Field.clear(el);
			el._cleared=true;
		}
	},
	checkBeforeSubmit:function(event) {
/*
if(event){
Event.stop(event);//pas stopper si submit
}
*/
		var elts=Form.getElements($('do_bricoler_fiche'));
		elts.each(function(el) {
			bricoler.clearDefaultValue(el);
		});

		if($F('title')=='' ){
			bricoler.formErrors.emptyTitle='Donnez un titre a votre fiche s\'il vous plait !';
			$('title').activate();
		} else if(bricoler.formErrors.emptyTitle){
			bricoler.formErrors.emptyTitle=null;
		}
		var h=$H(bricoler.formErrors);
		var errorsStr='';
		var errorNum=0;
		h.each(function(error){
			if(error.value){
				errorsStr=errorsStr+error.value+'\n';
				errorNum++;
			}
		});
		if(errorsStr.length >0){
			debut=(errorNum>1)?'Erreurs :\n':'Erreur :\n';
			errorsStr=debut+errorsStr;
			alert(errorsStr);
			return false;
		}
		return true;
	},
	saveContribution:function(event){

		Event.stop(event);
		var el=Event.element(event);
		if(el==$('publierContributionImg')){
		   	bricoler.debug('Va publier. champ visible=1');
			$('visible').value='1';
		}
		if(bricoler.checkBeforeSubmit(null)===true){
			$('do_bricoler_fiche').submit();
		}else {
		   	bricoler.debug('bloqu&eacute; dans js saveContribution car checkBeforeSubmit pas true');
		}
	},
	updateHelpMessage:function(event) {
		var el=Event.element(event);
		if(aideMessages[el.id]){
			$('boxAideContent').update(aideMessages[el.id]);
			new Effect.Highlight('boxAideContent',{startcolor : '#FF0000', endcolor:'#00FF00' });
		}
	},
	toggleFicheImageFormElement:function(event) {
		var el=Event.element(event);
		if(Element.hasClassName(el,'ficheContentImage')){
			new Effect.Opacity(el, {duration:1,  from:1.0, to:0.2});//fps:25,
			$('boxAideContent').update('S&eacute;lectionnez une image sur votre ordinateur en cliquant sur "Parcourir"');
			new Effect.Highlight('boxAideContent',{startcolor : '#FF0000', endcolor:'#00FF00' });
			new Effect.toggle(el.id+'DivForm','blind');//blind
		} else if(Element.hasClassName(el,'imageFormHideButton')) {
			//$('do_bricoler_fiche').enable();//si clic sur valid upload le form a été désactivé
			new Effect.Opacity('contentBody',{to:1});
			var chaine=el.id;
			var reg=new RegExp("_", "g");
			var tableau=chaine.split(reg);
			new Effect.toggle(tableau[0]+'_imageImgDivForm','blind');//blind

			new Effect.Opacity(tableau[0]+'_imageImg', {duration:1,  from:0.2, to:1});//fps:25,
			$('boxAideContent').update('Cliquez sur une image de la fiche  si vous souhaitez la modifier');
		}
	},
	toggleTopPhotoFormElement:function(event){
		frmEl=$('photoTopFileFormElementDiv');
		Event.stop(event);
		new Effect.toggle('photoTopFileFormElementDiv','blind');//blind
		if(!frmEl.visible()){
			new Effect.Opacity('photoTopImg', {duration:1,  from:1.0, to:0.2});//fps:25,
			$('boxAideContent').update('S&eacute;lectionnez une image sur votre ordinateur en cliquant sur "Parcourir"');
			new Effect.Highlight('boxAideContent',{startcolor : '#FF0000', endcolor:'#00FF00' });
		} else {
			//$('do_bricoler_fiche').enable();//si clic sur valid upload le form a été désactivé
			new Effect.Opacity('contentBody',{to:1});

			new Effect.Opacity('photoTopImg', {duration:1,  from:0.2, to:1});//fps:25,
			$('boxAideContent').update('Cliquez sur une image de la fiche si vous souhaitez la modifier');
		}
	},
	openBigImage:function(event){
		Event.stop(event);
		if($('do_bricoler_fiche')){
			return;
		}
		var a=Event.element(event);
		if ('IMG' == a.tagName){
			var a=a.parentNode;
		}
		window.open(a.href,'bigImage');
	},
	centrerImgVertical:function(img){
		return;
		//position:relative;
		Position.relativize(img)
		//top:50%;
		//img.style.marginTop = "-"+ (img.clientHeight/2) +"px";
		Element.setStyle(img,{top: '50%',marginTop:'-'+(img.clientHeight/2)+'px'});

		return;
	},
	findPosY:function(obj){
		var curtop = 0;
		//bricoler.debug(obj.offsetLeft);
		if(obj.offsetParent)
			while(1)
			{
			  curtop += obj.offsetTop;
			  			//  bricoler.debug(obj.offsetTop);
			  if(!obj.offsetParent)
				break;
			  obj = obj.offsetParent;
			}
		else if(obj.y)
			curtop += obj.y;
		return curtop;
  	},
	
	debug:function(msg){
	  if(bricoler.debugLevel<1)return;
	   	 //var bodyElement=document.getElementsByTagName('BODY');
	 	 new Insertion.Top('blocContent','<div style="border:red 2px solid;position:absolute;z-index:1000;top:0px;background-color:yellow;color:red;padding:4px;margin:3px;">'+ msg+'</div>');
	}
}

Event.observe(window, 'load', bricoler.init);

var aideMessages = Array()
aideMessages["title"] = "Indiquez le titre de votre fiche. Essayez d'&ecirc;tre bref mais pr&eacute;cis.";
aideMessages["difficulte"] = "A quel type de bricoleur s'adresse votre fiche ? Choisissez parmi les trois possibilit&eacute;s";
aideMessages["cout"] = "Combien vous a cout&eacute; (&agrave; peu pr&egrave;s) votre r&eacute;alisation ? Choisissez parmi les trois possibilit&eacute;s";
aideMessages["duree"] = "Choisissez une dur&eacute;e parmi les trois possibilit&eacute;s";
aideMessages["liste_courses"] = "Quels sont les achats &agrave; pr&eacute;voir (produits Delarbre ou non) ? N'oubliez pas les petits &eacute;l&eacute;ments indispensables (visserie...). Notez bien un achat par ligne pour que votre texte final soit bien pr&eacute;sent&eacute;.";
aideMessages["outils"] = "De quels outils vous &ecirc;tes vous servi ? Notez bien un outil par ligne pour que votre texte final soit bien pr&eacute;sent&eacute;.";
aideMessages["p1_title"]="Indiquez ici le texte de votre premier paragraphe. Le bloc de texte en dessous est destin&eacute; &agrave; votre texte de description.";
aideMessages["onUploadSubmit"]='Le t&eacute;l&eacute;chargement de votre image est en cours. En fonction du poids de votre image, cela peut &ecirc;tre assez long. Veuillez patienter avant de poursuivre la modification de votre fiche.';
