/****required : 
-mootools
-validator.js(by Wojtek)
****/
Element.implement({

	show: function(){
		if(this.getStyle('display')!=''){
	 		this.setStyle('display', '');
	 	}
	},
	hide: function(){
		if(this.getStyle('display')!='none'){
	 		this.setStyle('display', 'none');
	 	}
	},
	addNewOption : function(text,value,selected){
		var newOpt = new Element('option', {'value' : value});
		newOpt.set('text', text);
		if(selected){
			newOpt.setStyle('selected','selected');
		}
		this.adopt(newOpt);
	},
	selectValue : function(value){
		var indexToSelect=0;
		this.getChildren().each(function(item,index){
			if(item.get('value')==value){
				indexToSelect=index;
			}
		});
		this.options[indexToSelect].selected=true;
	},
	getSelectedValue : function(){
		return this.get('value');
	},
	loadOptionsFromAjax : function(fichier,donnees,valueToSelect,createOptionAll){
		var toSelect=0;
		var elSelect=this;
		elSelect.empty();
		var req = new Request.HTML( {
			url :fichier,
			onSuccess : function(node,elements,html) {	
				elSelect.empty();	
				if(createOptionAll){
					elSelect.addNewOption('Tous','all');
				}
				elements.each(function(el,index){
					if(index!=0){
						if(el.get('value')==valueToSelect){
							toSelect=index-1;
						}
						elSelect.adopt(el);
					}
				});
				//selection et deselection du premier element du select pour etre en haut de la liste marche pas sous chrome
				if($(elSelect).getFirst()){
					elSelect.options[toSelect].selected=true;
					if(!valueToSelect){
						elSelect.options[toSelect].selected=false;
					}
				}
				elSelect.setStyle('background-color', 'white');
				elSelect.disabled=false;
				elSelect.addClass('loaded');
			},
			onFailure : function() {
				elSelect.set('text', 'The request failed.');
	
			},
			onRequest : function() {
				elSelect.disabled=true;
				elSelect.setStyle('background-color', 'red');
				elSelect.addNewOption('chargement','chargement');
			},
			data :donnees,
			async :true
		});
		req.send();
	},
	loadFromAjax : function(fichier, donnees, asynchrone, loading) {
		var elElement=this;
		var divHeight=elElement.getStyle('height').replace(/px/,"");
		var imgHeight=32;
		if(divHeight<32 && divHeight>10){
			imgHeight=divHeight-5;
		}
		var imgLoading = new Element('img', {
			'src' :'img/loading.gif',
			'styles': {
		        'height': imgHeight+'px',
		        'width': imgHeight+'px'
		    }
				
		});
		var req = new Request.HTML( {
			url :fichier,
			onSuccess : function(html) {	
				elElement.set('text', '');
				elElement.adopt(html);
				elElement.addClass('loaded');
			},
			onFailure : function() {
				elElement.set('text', 'The request failed.');
			},
			onRequest : function() {
				if (loading) {
					elElement.adopt(imgLoading);
					elElement.removeClass('loaded');
				}
			},
			data :donnees,
			async :asynchrone
		});
		req.send();
	},
	validForm : function () {
		form=this;
		var valid = true;
		arrayOfValidators.each(function(validator){
			$$('#'+form.get('id') +' .'+validator.getName()).each(function(item){
				if (validator.test(item)){//valeur input bonne
					if(item.getStyle('color')!='green'){//image existe deja
						item.setStyle('background-color','white');
						item.setStyle('color','green');
						//item.getParent().adopt(new Element('img', {'src' :CHEMIN_IMG_OK}));
					}
				}else{//valeur input pas bonne
					if(item.getStyle('color')!='red'){//image existe deja
						item.setStyle('background-color','red');
						item.setStyle('color','black');
						//item.getParent().adopt(new Element('img', {'src' :CHEMIN_IMG_ERROR}));
					}
					valid = false;
				}
			});
		});
		return valid;
	},
	initializeForm : function(){
		form=this;
		arrayOfValidators.each(function(validator){
			$$('#'+form.get('id') +' .'+validator.getName()).each(function(item){
				item.removeEvent('keyup');
				item.addEvent('keyup', function(e) {
					form.validForm();
				});
			});
		});
	}
});