// Validation script (C) DW Limehouse Interactive //
// OBJECT: Validator //
function Validator() {
	this.critera=new Array();
}
Validator.prototype.addCriteria=function(field, func, args, msg) {
	this.critera[this.critera.length]=new Criteria(field, func, args, msg);
}
Validator.prototype.isValid=function() {
	var valid=true;
	var msg="";
	if (document.getElementById) {
		for (eachCrit in this.critera) {
			if (this.critera[eachCrit].getResult()==false) {
				valid=false;
				msg+=this.critera[eachCrit].errMsg + "\n";
			}
		}
		if (msg.length>0) alert("The following required information is either not selected or Missing: \n\n" + msg);
	}
	return valid;
}

// OBJECT: Criteria //
function Criteria(field, func, args, msg) {
	this.field=field;
	this.func=func;
	this.args=args;
	this.errMsg=msg;
}
Criteria.prototype.getResult=function() {
	return this.func(this.field, this.args);
}

// Validation functions //
function isFilled(field) {

	if (document.getElementById(field).value.length>0 && document.getElementById(field).value != ' ' && document.getElementById(field).value != 'Enter Zip' && document.getElementById(field).value != 'Enter City or Town' && document.getElementById(field).value != 'Click Calendar Above') {
		return true;
	} else {
		return false;
	}
}

function isEmail(field) {
	text=document.getElementById(field).value;
	if (text.indexOf("@")>0&&text.indexOf(".")>0) {
		return true;
	} else {
		return false;
	}
}

function isSelected(field) {
	field=document.getElementById(field);
	index=field.selectedIndex;
	if (field.options[index].value.length>0) {
		return true;
	} else {
		return false;
	}
}


function isSelected1(field) {
	field=document.getElementById(field);
	index=field.selectedIndex;
	if (index>0) {
		return true;
	} else {
		return false;
	}
}

function isDate(field) {
	datecomps=document.getElementById(field).value.split("/");
	isDate=((datecomps.length==3)&&(datecomps[2].length==4)&&(parseInt(datecomps[1])<=12)&&parseInt(datecomps[0])<=31);
	return isDate;
}

function isPhoneNumber(field){
 text=document.getElementById(field).value;
  var re = /^\d\d\d\-\d\d\d\-\d\d\d\d$/;
  return re.test(text);
}

function isTime(field) {
	timecomps=document.getElementById(field).value.split(":");
	isTime=((timecomps.length==2)&&(parseInt(timecomps[0])<24)&&(parseInt(timecomps[1])<=60));
	return isTime;
}

function isNumber(field) {
	num=parseFloat(document.getElementById(field).value);
	if (isNaN(num)) return false;
	else return true;
}

function isAlphanumeric(field) {
	str=document.getElementById(field).value;
	var exp = new RegExp("[^A-Za-z0-9 ]");
	return !exp.test(str);
}


//start code for form selection
function addEvent(obj, evType, fn){ 
 if (obj.addEventListener){ 
    obj.addEventListener(evType, fn, true); 
    return true; 
 } else if (obj.attachEvent){ 
    var r = obj.attachEvent("on"+evType, fn); 
    return r; 
 } else { 
    return false; 
 } 
} 
 /*
addEvent(window, 'load', function() { 
 var input, textarea; 
 var inputs = document.getElementsByTagName('input'); 
 for (var i = 0; (input = inputs[i]); i++) { 
   addEvent(input, 'focus', oninputfocus); 
   addEvent(input, 'blur', oninputblur); 
 } 
 var textareas = document.getElementsByTagName('textarea'); 
 for (var i = 0; (textarea = textareas[i]); i++) { 
   addEvent(textarea, 'focus', oninputfocus); 
   addEvent(textarea, 'blur', oninputblur); 
 } 
}); 

function oninputfocus(e) { 
 Cookie-cutter code to find the source of the event
 if (typeof e == 'undefined') { 
   var e = window.event; 
 } 
 var source; 
 if (typeof e.target != 'undefined') { 
    source = e.target; 
 } else if (typeof e.srcElement != 'undefined') { 
    source = e.srcElement; 
 } else { 
   return; 
 } 
  End cookie-cutter code  
 source.style.border='2px solid #993300'; 
} 

function oninputblur(e) { 
  Cookie-cutter code to find the source of the event 
 if (typeof e == 'undefined') { 
   var e = window.event; 
 } 
 var source; 
 if (typeof e.target != 'undefined') { 
    source = e.target; 
 } else if (typeof e.srcElement != 'undefined') { 
    source = e.srcElement; 
 } else { 
   return; 
 } 
  End cookie-cutter code 
 source.style.border='2px solid #ccc'; 
} */ 