window.addEvent('domready', function(){
		var myFormValidation = new Validate('postjobForm',{
					errorClass: 'red'
		});
		
		allowOnlyNumberInNumericFields();
      // ************Muti ple File Upload script starts here******************

      var upload_number=1;
      $('moreUploadsLink').addEvent('click', function(){
       if(upload_number<=4){
           if(upload_number==4){
                $('moreUploadsLink').style.display='none';
           }
            var d=new Element('div',{
             id : 'div'+upload_number
           });
           var file=new Element('input',{
               type :'file',
               name :'UploadDoc[]',
               id :'UploadDoc'
           });
           file.inject(d);
           var newdiv=new Element('div',{
             id : 'newdiv',
             argument : upload_number
            });
           newdiv.innerHTML='<div id='+upload_number+' class=RemoveModule >Supprimer</div>';
           var more_Upload=$("moreUploads");
           newdiv.inject(d);
           d.inject(more_Upload);
           upload_number++;
           
           $$('div.RemoveModule').each(function(item){
		item.addEvent('click',function(){deleteRow(item);});
	 });
       }
       });
       function deleteRow(item) {
	try {

                "div"+item.getParent().getParent().destroy();
                upload_number--;
                if(upload_number <= 4){
                    $('moreUploadsLink').style.display='block';
                }

	}catch(e) {
		//alert(e);
            }
        }
        // ****************Mutiple File Upload script ends here ***********************
});

function allowOnlyNumberInNumericFields(){
	$$('.number').each( function(el){
			if( el.value.length < 5 ){
				el.addEvent('keypress', function(e){
						e = new Event(e);
						if(e.code <= 31 || (e.code >= 48 && e.code <= 57) ){
							return true;
						}
						else {
							e.stopPropagation();
							e.stop();
							return false;
						}
				});
			}
	});
}

/**************************************************************

	Script		: Validate
	Version		: 2.1
	Authors		: Samuel Birch
	Desc		: Form validation
	Licence		: Open Source MIT Licence

**************************************************************/
var Validate = new Class({
	
	getOptions: function(){
		return {
			validateOnBlur: true,
			errorClass: 'error',
			errorMsgClass: 'errorMessage',
			dateFormat: 'dd/MM/yy',
			onFail: displayFailedValidationReasons,
			onSuccess: false,
			showErrorsInline: true,
			label: 'Veuillez patienter...'
		};
	},

	initialize: function(form, options){
		this.setOptions(this.getOptions(), options);
		
		this.form = $(form);
		this.elements = this.form.getElements('.validate');
		
		this.list = [];
		
		this.elements.each(function(el,i){
			if(this.options.validateOnBlur){
				el.addEvent('blur', this.validate.bind(this, el));
			}
		}.bind(this));
                        
		this.form.addEvent('submit', function(e){
			var event = new Event(e);
			var doSubmit = true;

                        this.elements.each(function(el,i){
				if(! this.validate(el)){
					event.stop();
					doSubmit = false
                                        
					this.list.include(el);
				}
                                else{
					//alert(el);
					//this.list.dispose();
                                        //this.list.remove(el);
                                        
				}
			}.bind(this));

                        if(doSubmit){
				if(this.options.onSuccess){
					event.stop();
					this.options.onSuccess(this.form);
				}else{
					this.form.getElement('input[type=submit]').setProperty('value',this.options.label);
				}
			}
                        else{
                                
				$('validationMessage').set("html","Certains champs ont été incorrectement renseignés. Merci de les corriger avant de ré-envoyer le formulaire");
				$('validationMessage').style.display="block";
				$('validationMessage').set('styles',{'margin-bottom':'25px','padding':'5px'});
			}
			
		}.bind(this));
		
	},
	
	getList: function(){
		var list = new Element('ul');
		this.list.each(function(el,i){
			if(el.title != ''){
			var li = new Element('li').injectInside(list);
			new Element('label').setProperty('for', el.id).setText(el.title).injectInside(li);
			}
		});
		return list;
	},
	
	validate: function(el){
		
		var valid = true;
		this.clearMsg(el);
                switch(el.type){
			case 'text':
			case 'textarea':
			case 'password':
			case 'select-one':
				if(el.value != ''){
					if(el.hasClass('email')){
						var regEmail = /^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/;
						if(el.value.toUpperCase().match(regEmail)){
							valid = true;
							this.clearMsg(el);
						}else{
							valid = false;
							this.setMsg(el);
						}
					}
					
					if(el.hasClass('number')){
						var regNum = /[-+]?[0-9]*\.?[0-9]+/;
						if(el.value.match(regNum)){
							valid = true;
							this.clearMsg(el);
						}else{
							valid = false;
							this.setMsg(el);
						}
					}
					
					if(el.hasClass('postcode')){
						var regPC = /^([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2})|(([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9]?[A-Za-z])))) [0-9][A-Za-z]{2})$/
						if(el.value.match(regPC)){
							valid = true;
							this.clearMsg(el);
						}else{
							valid = false;
							this.setMsg(el);
						}
					}
					if(el.hasClass('passwordreq')){
						var val1=$('password1').value;
						var val2=$('repassword').value;
						if(el.value.length>=5 && (val1==val2)){
								valid = true;
								this.clearMsg(el);
								this.clearMsg($('password1'));
							}else{
								valid = false;
								this.setMsg(el);
							}
					}
					if(el.hasClass('date')){
						var d = Date.parseExact(el.value, this.options.dateFormat);
						if(d != null){
							valid = true;
							this.clearMsg(el);
						}else{
							valid = false;
							this.setMsg(el);
						}
					}
					
				}else{
					if( el.hasClass('required') ){
						valid = false;
						this.setMsg(el);
					}
					else {
						valid=true;
						this.clearMsg(el);
					}
				}
				break;

                    /*case 'file':
				var docName=$('UploadDoc').value;
                                var fileExt=docName.split(".");
                                if(fileExt[1]!='doc'){
                                valid=false;
                                }else{
                                   valid=true;
                                }
				break;*/
			case 'checkbox':
				if(!el.checked){
					valid = false;
					this.setMsg(el);
				}else{
					valid = true;
					this.clearMsg(el);
				}
				break;
                        
			case 'radio':
				var rad = $A(this.form[el.name]);
				var ok = false;
				rad.each(function(e,i){
					if(e.checked){
						ok = true;
					}
				});
				if(!ok){
					valid = false;
					this.setMsg(rad.getLast());
				}else{
					valid = true;
					this.clearMsg(rad.getLast());
				}
				break;
				
		}
		return valid;
	},
	
	setMsg: function(el, msg){
		if(msg == undefined){
			msg = el.title;
		}
		if(this.options.showErrorsInline){
			if(el.error == undefined){
				//el.error = new Element('span').addClass(this.options.errorMsgClass).setText(msg).injectAfter(el);
				if( el.getParent().hasClass('radioField') ){ 
					/* Radio Button Special Error Behavior */
					el.getParent().getElement('span').addClass(this.options.errorMsgClass); 
				}
				else{
					/* Error Behavior For Other Inputs */
					if(el.getParent().getElement('label')) el.getParent().getElement('label').addClass(this.options.errorMsgClass);
					if( el.getParent().hasClass('specialPadding') ) el.getParent().getPrevious().getElement('label').addClass(this.options.errorMsgClass);
				}
			}else{
				el.error.setText(msg);
			}
			el.addClass(this.options.errorClass);
		}
	},
	
	clearMsg: function(el){
		el.removeClass(this.options.errorClass);
		if(el.error != undefined){
			el.error.remove();
			el.error = undefined;
		}
		
		/* Remove Error Class For Labels */
		if( el.getParent().hasClass('radioField') ){ 
			el.getParent().getElement('span').removeClass(this.options.errorMsgClass); 
		}
		else{
			if(el.getParent().getElement('label')) el.getParent().getElement('label').removeClass(this.options.errorMsgClass);
			if( el.getParent().hasClass('specialPadding') ) el.getParent().getPrevious().getElement('label').removeClass(this.options.errorMsgClass);
		}
	}
	
});

Validate.implement(new Options);
Validate.implement(new Events);


/*************************************************************/
function displayFailedValidationReasons( listElements ){
        
	$('validationMessage').setStyle('padding','5px').setStyle('margin-bottom','25px');
	$('validationMessage').setHTML("Certains champs ont été incorrectement renseignés. Merci de les corriger avant de ré-envoyer le formulaire").setStyle('display','block');
	window.location.hash = 'validationMessage';
}






