/*****************************************************************************************************
* 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";	
							errorFormFields.push(i);
							element.style.backgroundColor = "#CCFFFF";
						}
					}
				}
			}
		}
		
		//Alert Error
		if(error != ""){
			form[errorFormFields[0]].focus();
			alert(error);			
			changeColor(form.id, 0);
			return false;
		}
		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":
				var numfilter=/^([0-9])+$/;
				if(!numfilter.test(value))
				return false;
				break;
			case "float":
				var price=/^([0-9])+\.+([0-9])+$/;
				if(!price.test(value))
				return false;
				var notprice=/^()+\.+([0-9])+$/;
				if(notprice.test(value))
				return false;
				break;
			case "image":
				var ext = value.substring(value.length - 4, value.length).toLowerCase();
				if ((ext != ".gif" && ext != ".jpg"   && ext != ".pcx"   && ext != "jpeg" && ext != ".png" && ext != "tiff" && ext != ".bmp" && ext != ".tga"))
      			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(MM/DD/YYYY)":
				var RegExPattern = /^(?=\d)(?:(?:(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})|(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))|(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2}))($|\ (?=\d)))?(((0?[1-9]|1[012])(:[0-5]\d){0,2}(\ [AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2})?$/;
    
    if ((value.match(RegExPattern)) && (value!='')) {
        return true;
    } else {
		 return false;
		} 
				//if (!filter.test(value))
					//return false;
				break;				
			case "checked":
				if(!element.checked)
					return false;
				break;
			case "web":// 
				var filter  = /^(http:\/\/([\-\w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\+@&#;`~=%!]*)(\.\w{2,})?)*\/?)$/;
				if (!filter.test(value))
					return false;
				break;
			case "phone":// 555-555-5555
				var filter  = /^[0-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;				
			case "ip": // MM/YY
				if (value.search(/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) != -1) 
				{
					var myArray = value.split(/\./);
					if (myArray[0] > 255 || myArray[1] > 255 || myArray[2] > 255 || myArray[3] > 255)
					return false;
					if (myArray[0] == 0 && myArray[1] == 0 && myArray[2] == 0 && myArray[3] == 0)
					return false;
					return true;
				}
				else
				{
					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 ShowURL(){
		if(document.getElementById('is_website').value == "YES"){
			document.getElementById('ururl').style.display = 'block';
			document.getElementById('ururl1').style.display = 'block';
		}else{
			document.getElementById('ururl').style.display = 'none';
			document.getElementById('ururl1').style.display = 'none';
		}
	}
