/*****************************************************************************************************
* Easy Javascript Validation by Daniel Boorn
* Copyright 2006, All Rights reserved by Daniel Boorn
* Contact: daniel.boorn@gmail.com - wwww.dboorn.com
* In any form element add the following form attributes to validate
* required ="yes"
* validate = { "int", "float", "text", "email" }
* message = "Error Message for Element"
* Example: <input type="text" validate="int" message="Please enter valid zip code" name="zip">
*
* It is required that you add the following to any submit button
*     onClick="validate(this.form); return document.formSubmit;"
******************************************************************************************************/

	var timeoutId = "";
	var timeoutId2 = "";	
	var errorFormFields;
	var colorArray = new Array('#FF0000','#EE0000','#DD0000','#CC0000','#BB0000','#AA0000','#990000','#880000','#770000','#660000','#550000','#440000','#330000','#220000','#110000', "#C6C6C6");	

	function validate(form){
		errorFormFields = new Array();
		
		var error = "";
		//for each form element
		for(var i=0; i<form.length; i++){
			var element = form[i];
			element.style.backgroundColor="";
			element.style.border = "1px solid #C6C6C6";
			//if form field not required 
			if(!element.disabled){
				//if required
				if(element.getAttribute("required") == "yes"){
					//if form element if empty
					if(!valid(element.value,element.getAttribute("validate"),element)){
						error += element.getAttribute("message") + "\r\n";	
						errorFormFields.push(i);
						element.style.backgroundColor = "#CCFFFF";
					}
				}
				else if(element.getAttribute("validate") != ""){
					//if validation is need by not required
					if(element.value != ""){
						if(!valid(element.value,element.getAttribute("validate"),element))
							error += element.getAttribute("message") + "\r\n";
					}
				}
			}
		}
		
		//Alert Error
		if(error != ""){
			form[errorFormFields[0]].focus();
			alert(error);			
			changeColor(form.id, 0);
		}
		else{
			form.submit();
		}
			
			
	}
	
	function validateNs(form){
		errorFormFields = new Array();
		
		var error = "";
		//for each form element
		for(var i=0; i<form.length; i++){
			var element = form[i];
			element.style.backgroundColor="";
			element.style.border = "1px solid #C6C6C6";
			//if form field not required 
			if(!element.disabled){
				//if required
				if(element.getAttribute("required") == "yes"){
					//if form element if empty
					if(!valid(element.value,element.getAttribute("validate"),element)){
						error += element.getAttribute("message") + "\r\n";	
						errorFormFields.push(i);
						element.style.backgroundColor = "#CCFFFF";
					}
				}
				else if(element.getAttribute("validate") != ""){
					//if validation is need by not required
					if(element.value != ""){
						if(!valid(element.value,element.getAttribute("validate"),element))
							error += element.getAttribute("message") + "\r\n";
					}
				}
			}
		}
		
		//Alert Error
		if(error != ""){
			form[errorFormFields[0]].focus();
			alert(error);			
			changeColor(form.id, 0);
		}
		else{
			return true;
		}
			
			
	}	
	
	function changeColor(formId, colorId){
		
		form = document.getElementById(formId);
		
		for(var i=0;i<errorFormFields.length;i++){
//			alert(form[errorFormFields[i]]);
			if(colorArray[colorId] == "")
				form[errorFormFields[i]].style.border = "";			
			else
				form[errorFormFields[i]].style.border = "2px solid "+colorArray[colorId];
			
		}
		
		if(timeoutId != "")
			window.clearTimeout(timeoutId);
		
		colorId++;
		if(colorId<colorArray.length)
			timeoutId = window.setTimeout("changeColor('"+formId+"',"+colorId+")",300);
	}


	function changeColor2(divId, colorId){
		div = document.getElementById(divId);
		div.style.display = "";
		div.style.border = "2px solid "+colorArray[colorId];	
		if(timeoutId2 != "")
			window.clearTimeout(timeoutId2);		
		colorId++;
		if(colorId<colorArray.length)
			timeoutId2 = window.setTimeout("changeColor2('"+divId+"',"+colorId+")",300);
	}


	function valid(value,type,element){
		if(value == "")
			return false;
			
		switch(type){
			case "int":
				if(isNaN(parseInt(value)))
					return false;
				break;
			case "float":
				if(isNaN(parseFloat(value)))
					return false;
				break;
			case "email":					
				var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
				if (!filter.test(value))
					return false;
				break;
			case "date(YYYY-MM-DD)":
				var filter  = /^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$/;
				if (!filter.test(value))
					return false;
				break;				
			case "checked":
				if(!element.checked)
					return false;
				break;
			case "phone":// 555-555-5555
				var filter  = /^[2-9]\d{2}-\d{3}-\d{4}$/;
				if (!filter.test(value))
					return false;
				break;			
			case "creditcard": // 4444-4444-4444-4444
				var filter  = /^(\d{4}[- ]){3}\d{4}|\d{16}$/;
				if (!filter.test(value))
					return false;
				break;
			case "expdate": // MM/YY
				var filter  = /^((0[1-9])|(1[0-2]))\/(\d{2})$/;
				if (!filter.test(value))
					return false;
				break;				
				
			default://string
				break;
		}
		return true;
	}	

    function check_length(maxchars,message,div_id)
    {
    	var len = message.value.length;

        if(len > maxchars){
        	message.value = message.value.substr(0,maxchars);
        	len = maxchars;
        }

        document.getElementById(div_id).innerHTML = maxchars - len;
    }
	
function limitText(limitField, limitCount, limitNum) {
	if (limitField.value.length > limitNum) {
		limitField.value = limitField.value.substring(0, limitNum);
	} else {
		limitCount.value = limitNum - limitField.value.length;
	}
}

function MM_validateForm() { //v4.0
  if (document.getElementById){
    var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
    for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=document.getElementById(args[i]);
      if (val) { nm=val.name; if ((val=val.value)!="") {
        if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
          if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
        } else if (test!='R') { num = parseFloat(val);
          if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
          if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
            min=test.substring(8,p); max=test.substring(p+1);
            if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
      } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
    } if (errors) alert('Please enter your ZipCode:\n'+errors);
    document.MM_returnValue = (errors == '');
} }

function bookmarksite(title,url){
if (window.sidebar) // firefox
	window.sidebar.addPanel(title, url, "");
else if(window.opera && window.print){ // opera
	var elem = document.createElement('a');
	elem.setAttribute('href',url);
	elem.setAttribute('title',title);
	elem.setAttribute('rel','sidebar');
	elem.click();
} 
else if(document.all)// ie
	window.external.AddFavorite(url, title);
}

function popUp(URL) {
day = new Date();
id = day.getTime();
eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=400,height=650,left = 520,top = 200');");
}
//-->
function bookmark_us(url, title){

if (window.sidebar) // firefox
    window.sidebar.addPanel(title, url, "");
else if(window.opera && window.print){ // opera
    var elem = document.createElement('a');
    elem.setAttribute('href',url);
    elem.setAttribute('title',title);
    elem.setAttribute('rel','sidebar');
    elem.click();
}
else if(document.all)// ie
    window.external.AddFavorite(url, title);
}