var validator = new Class({
    options: {        
        invalid: {
            "background-color": "red",
            "border-color": "red"
        },
        valid: {
            "background-color": "green",
            "border-color": "green"
        },
        required: {
            regexp: /[^.*]/,
            msg: "ing&#229;ngsdata obligatorisk!"
        },
        alpha: {
            regexp: /^[a-z._-]+$/i,
            msg: "ing&#229;ngsdata obligatorisk!"
        },
        alphanum: {
            regexp: /^[a-z0-9._-]+$/i,
            msg: "ing&#229;ngsdata obligatorisk!"
        },
        integer: {
            regexp: /^[-+]?\d+$/,
            msg: "Please enter a valid integer."
        },
        real: {
            regexp: /^[-+]?\d*\.?\d+$/,
            msg: "Please enter a valid number."
        },
        date: {
            regexp: /^((((0[13578])|([13578])|(1[02]))[\/](([1-9])|([0-2][0-9])|(3[01])))|(((0[469])|([469])|(11))[\/](([1-9])|([0-2][0-9])|(30)))|((2|02)[\/](([1-9])|([0-2][0-9]))))[\/]\d{4}$|^\d{4}$/,
            msg: "Please enter a valid date (dd/mm/yyyy)."
        },
        email: {
            regexp: /^[a-z0-9._%-]+@[a-z0-9.-]+\.[a-z]{2,4}$/i,
            msg: "fylla i din e-post."
        },
        phone: {
            regexp: /^[\d\s().-]+$/,
            msg: "Please enter a valid phone."
        },
        url: {
            regexp: /^(http|https|ftp)\:\/\/[a-z0-9\-\.]+\.[a-z]{2,3}(:[a-z0-9]*)?\/?([a-z0-9\-\._\?\,\'\/\\\+&%\$#\=~])*$/i,
            msg: "Please enter a valid url."
        },
        confirm: {
            msg: "Confirm Password does not match original Password."
        },
		clock:{
			regexp: /^((?:[01]\d)|(?:2[0-3])):([0-5]\d)$/,
			msg: "(xx:xx)"
		},
		day:{
			regexp: /^\d{1,2}/,
			msg :"(dag)"
		},
		digit6:{
			regexp: /^\d{6}$/,
			msg :"(yymmdd)"
		},
		digit4:{
			regexp: /^\d{4}$/,
			msg :"(xxxx)"
		},
		postnummer :{
			regexp: /^\d{3}\s?\d{2}$/,
			msg:"(xxx xx)"
		},
        onValid: Class.empty,
        onInvalid: Class.empty
    },
	initialize: function(formname,options){
		var valid = false;
		this.form = formname;
		if (this.form === $('foretag_form')) {
			this.inputs=$$('#adress','#mail','#postort','#foretag');
		}else {
			this.inputs = this.form.getElements('input');
			//alert(this.inputs[11].get('name'));
			this.inputs.erase(this.inputs[10]);
			this.inputs.erase(this.inputs[11]);
			//alert(this.inputs[this.inputs.length-2].get('name'));
			var j = 1;
			for (i = 0; i < this.inputs.length; i++) {
				if (this.inputs[i].get('type') === 'hidden' || this.inputs[i].get('type') === 'submit' || this.inputs[i].get('type') === 'password' || this.inputs[i].get('type') === 'file') {
					this.inputs.erase(this.inputs[i]);
				}
			}
		}
		this.inputs.each(function(el,i){			
			//el.setStyle('border','1px solid red');
			el.setStyle('background-color','red');
			el.addEvent('blur', function(){
				var type= el.get("class");				
				if (this.options[type]) {
					el.msg = this.options[type].msg;
					if (el.value.match(this.options[type].regexp)) {
						//el.setStyle('border','1px solid green');
						el.setStyle('background-color','');
						el.status = 'valid';
					}else{
						el.status = 'invalid';
						el.setStyle('background-color','red');
						//el.setStyle('border','1px solid red');
					}					
				}
			}.bind(this));
		},this)
		this.form.addEvent('submit',function(event){
			var mvalid = true;
			var passconf = true;
			if($('pass') && $('pass').value!=''){
				if($('pass').value ===$('pass2').value){
					passconf = true;
				}else{
					passconf=false;
					alert('Wrong password!');
				}
			}
			for(i=0; i<this.inputs.length; i++){
				if(this.inputs[i].value==''){
					this.inputs[i].status = 'invalid';
					mvalid=false;
				}
				if(this.inputs[i].status === 'invalid'){					
					mvalid = false;
				}
			}			
			if(mvalid===true && passconf ===true){
				this.form.submit();
			}else{
				new Event(event).stop();
				for(i=0; i<this.inputs.length; i++){
					if(this.inputs[i].status ===  'invalid'){						
						this.inputs[i].value='';
						this.inputs[i].focus();
						/*var divmsg = new Element('div',{'styles' : {'position':'absolute','z-index':'99999','top':this.inputs[i].offsetTop,'left':this.inputs[i].offsetLeft+5,'font-size':'12px'}});
						divmsg.innerHTML = this.inputs[i].msg;
						divmsg.set('tween', {duration: 3000});
						document.body.adopt(divmsg.tween('opacity',1,0)) //dispose();*/
						this.initialize;
					}				
				}
			}
		}.bind(this))
	}
})
