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){
		this.form = document.getElementById(formname);
		this.pass=false;
		this.v=false;
		this.inputs = $$('#'+formname+' input');
		var j = 1;
			for(i = 0; i < this.inputs.length; i++){
				if(this.inputs[i].get('type') === 'none' ||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[i].get('type') === 'checkbox'){
					this.inputs.remove(this.inputs[i]);
				}
			}
		this.inputs.each(function(el,i){			
			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 dashed green');
						this.v=true;
						//el.setStyle('background-color','');
						el.status = 'valid';
					}else{
						el.status = 'invalid';
						//el.setStyle('background-color','red');
						el.setStyle('border','1px dashed red');
					};
				}
				for (i = 0; i < this.inputs.length; i++) {
					if (this.inputs[i].status === 'invalid') {
						this.v=false;
					}
				}
				if(this.form.getElement('#pass1').value==this.form.getElement('#pass2').value&&this.form.getElement('#pass1').value!=''){
					this.pass=true;
					this.form.getElement('#pass1').setStyle('border','1px dashed green');
					this.form.getElement('#pass2').setStyle('border','1px dashed green');
				}else{
					this.pass=false;
					this.form.getElement('#pass1').setStyle('border','1px dashed red');
					this.form.getElement('#pass2').setStyle('border','1px dashed red');
				}
			}.bind(this));
		},this)		
	}
})