var formValidation = {
	imgOn		: '',
	imgOff	: '',

	init : function(url,imgOn,imgOff) {
		this.imgOn = url+imgOn;
		this.imgOff =  url+imgOff;
		this.eles = document.getElementById('inputs').getElementsByTagName('input');
		for(var i=0; i<this.eles.length; i++) {
			Event.observe(this.eles[i], 'keyup', this.validator);
			Event.observe(this.eles[i], 'blur', this.validator);
			if(this.eles[i].id == 'phone')
				Event.observe(this.eles[i], 'click', this.clearField);
			this.pageReload(this.eles[i]);
		}
	},

	pageReload : function(ele) {
		var par = ele.parentNode;
		var img = par.getElementsByTagName('div')[0];
		var status = 0;

		if(ele.value == '') {
			status = 2;
		}
		else
		{
			status = 1;
			if(ele.id == 'email' && !formValidation.checkEmail(ele.value)) {
				status = 0;
			}
			if(ele.id == 'phone' && ele.value != '' && !formValidation.checkPhone.ver(ele.value))
				status = 0;
			if(ele.id == 'phone' && ele.value == 'Optional')
				status = 2;
		}
		if(status == 1)
			Element.setStyle(img, {background:'url("'+formValidation.imgOn+'") no-repeat'});
		else if(status == 0)
			Element.setStyle(img, {background:'none'});
	},

	validator : function(e) {
		var ele = Event.element(e);
		var par = ele.parentNode;
		var img = par.getElementsByTagName('div')[0];
		var status = 0;
		if(ele.value == '' && ele.id != 'phone') {
			status = 0;
		}
		else
		{
			status = 1;
			if(ele.id == 'email' && !formValidation.checkEmail(ele.value)) {
				status = 0;
			}
			if(ele.id == 'phone' && ele.value != '' && !formValidation.checkPhone.ver(ele.value))
				status = 0;
		}

		if(status)
			Element.setStyle(img, {background:'url("'+formValidation.imgOn+'") no-repeat'});
		else
			Element.setStyle(img, {background:'none'});
	},
	
	clearField : function(e) {
		var ele = Event.element(e);
		if(ele.value == "Optional") {
			ele.value = '';
			ele.style.color = "#000000";
		}
	},

	checkEmail : function(str) {
		if(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(str))
			return true;
		return false;
	},

	checkPhone : {
		digits : "0123456789",
		validWorldPhoneChars : "()- +",
		minDigitsInIPhoneNumber : 10,

		isInt : function(s) {
			var i;
			for (i = 0; i < s.length; i++) {
				 var c = s.charAt(i);
				 if (((c < "0") || (c > "9"))) return false;
			}
			return true;
		},

		stripCharsInBag : function(s, bag) {
			var i;
			var returnString = "";
			for (i = 0; i < s.length; i++) {
					var c = s.charAt(i);
					if (bag.indexOf(c) == -1) returnString += c;
			}
			return returnString;
		},

		ver : function(phoneNum) {
			s = this.stripCharsInBag(phoneNum, this.validWorldPhoneChars);
			return (this.isInt(s) && s.length >= this.minDigitsInIPhoneNumber);
		}
	}
}