if(typeof(ics)=='undefined')	ics={};
ics.valRules=new Object();
ics.valFuncs=new Object();

ics.valFuncs['is checked']=function(form,item_obj){
	return form[item_obj['name']].checked;
}

ics.valFuncs['minimum length']=function(form,item_obj){
	arguments[2]=new String(form[item_obj['name']].value);
	if(arguments[2].length<item_obj.value){
		return false;
	}
	return true;
}

ics.valFuncs['valid email']=function(form,item_obj){
	arguments[2]=new String(form[item_obj['name']].value);
	
	return /^[a-zA-Z0-9\w\.-]*@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/.test(arguments[2]);
}

ics.valFuncs['contains nbrs letters']=function(form,item_obj){
	arguments[2]=new String(form[item_obj['name']].value);
	return /^\w*(?=\w*\d)(?=\w*[a-zA-Z])\w*$/.test(arguments[2]);
}

ics.valFuncs['match confirm field']=function(form,item_obj){
	return (form[item_obj.name].value == form['confirm_'+item_obj.name].value);
}

ics.valFuncs['maximum length']=function(form,item_obj){
	arguments[2]=new String(form[item_obj['name']].value);
	if(arguments[2].length>item_obj.value)
	{
		return false;
	}
	return true;
}

ics.valFuncs['equal to']=function(form,item_obj){
	arguments[2]='';
	arguments[3]='';
	arguments[2]=new String(form[item_obj['name']].value)+'';
	arguments[3]=new String(form[item_obj['min']].value)+'';
	return (arguments[2]==arguments[3]);
	
}

ics.valFuncs['length range']=function(form,item_obj){
	arguments[2]=new String(form[item_obj['name']].value);
	if(arguments[2].length<item_obj.min){
		return false;
	}
	if(arguments[2].length>item_obj.max){
		return false;
	}
	return true;
}

ics.valFuncs['list not equal to']=function(form,item_obj){	
	arguments[2]=form[item_obj['name']].options[form[item_obj['name']].selectedIndex].value;
	if(arguments[2]==item_obj['value']){
		return false;
	}
	return true;
}


ics.valFuncs['valid date']=function(form,item_obj){	
	//alert(form[item_obj['name']].value);
	return /(19|20)\d\d[- /](0[1-9]|1[012])[- /](0[1-9]|[12][0-9]|3[01])/.test(form[item_obj['name']].value);
}

ics.validateForm=function(){
	//alert('validating');
	if(typeof(arguments[0])=='object')
		form=arguments[0];
	else
		form=document.forms[arguments[0]];
	if(arguments[1])
		items=ics.valRules[arguments[1]];
	else
		items=ics.valRules[form.name];
	form=arguments[0];
	notFocused=true;
	//alert(form.name);
	if(typeof(ics.valRules[form.name])=='undefined')
		return true;
	//alert('validating #2');	
	items=ics.valRules[form.name];
	has_errors=false;
	previousErrors={};
	error_string='';
		for(var a=0;a<items.length;a++){
		if(!ics.valFuncs[items[a]['type']](form,items[a])){
			if(!previousErrors[items[a].name]){
				has_errors=true;
				error_string+=items[a]['msg']+'\n';
				if(notFocused){
					form[items[a].name].focus();
					notFocused=false;
				}
				ics.setErrorEffect(form[items[a].name]);
				previousErrors[items[a].name]=true;
			}
		}else{
			ics.unsetErrorEffect(form[items[a].name]);
		}
	}
	if(has_errors){
		ics.validatePopup(error_string);
		return false;
	}
	return true;
}

ics.setErrorEffect=function(objectToSet){
	objectToSet.style.border='2px red solid';
}

ics.unsetErrorEffect=function(objectToUnset){
	objectToUnset.style.border='';
}

ics.validatePopup=function(errorString){
	ics.popup('The following errors have occurred',errorString+'__________________________\n\nPlease correct these errors and try again.');
}

