// JavaScript Document
var validChars = {"numeric":"0123456789",
                  "phone":"0123456789-",
                  "email":"emailaddress@domain.com"};
						
function onlyint(e,field)
{
	if (window.event) keynum = e.keyCode;
	else if (e.which) keynum = e.which;
	
	if(keynum == "0x0b") return true;//allow tabs
	if (keynum == "0x08") return true;
	if (keynum == "0x09") return true;
  	if (keynum == "0x20") return true; //allow space
	if (keynum == "0x2d" && field == 'phone') return true; //allow hyphen
	if (keynum == "0x28" && field == 'phone') return true; //left parenthesis
	if (keynum == "0x29" && field == 'phone') return true; //right parenthesis
	if (keynum == "0x2E" && field == 'currency') return true;
	if (keynum == "0x2F" && field == 'date') return true;
	if ((keynum >= "0x30") && (keynum <="0x39")) return true; //allow 0 - 9
	return false;
}

function onlyAlphaNumeric(e)  
{  
     if (window.event) keynum = e.keyCode;  
     else if (e.which) keynum = e.which;  
  
     if (keynum == "0x08") return true;  
     if (keynum == "0x09") return true;  
       if (keynum == "0x20") return true;  
     if ((keynum >= "0x30") && (keynum <="0x39")) return true;  
     if ((keynum >= "0x41") && (keynum <="0x5A")) return true;  
     if ((keynum >= "0x61") && (keynum <="0x7A")) return true;  
     return false;  
}

function onlyAlpha(e)  
{  
     if (window.event) keynum = e.keyCode;  
     else if (e.which) keynum = e.which;  
  
     if (keynum == "0x08") return true;  
     if (keynum == "0x09") return true;  
       if (keynum == "0x20") return true;  
     //if ((keynum >= "0x30") && (keynum <="0x39")) return true;  
     if ((keynum >= "0x41") && (keynum <="0x5A")) return true;  
     if ((keynum >= "0x61") && (keynum <="0x7A")) return true;  
     return false;  
}

function autotab(current,to){  
    if (current.getAttribute &&   
      current.value.length==current.getAttribute("maxlength")) {  
        to.focus()  
        } 
}

function swapState(val)
{
  if(val != 1)
  {
	  var input_width = Math.floor(219*.58);
	  $('state_div').hide();
	  $('state').disabled = true;
	  $('city').style.width = input_width+"px";
	  $('province').style.width = input_width+"px";
	  $('province_div').show();
	  $('province').disabled = false;
  }
  else
  {
	  $('state_div').show();
	  $('state').disabled = false;
	  $('city').style.width = "211px";
	  $('province_div').hide();
	  $('province').disabled = true;
  }
}

function echeck(str)
{
		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		if (str.indexOf(at)==-1){
		   return false
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   
		   return false
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    
		    return false
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    
		    return false
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    
		    return false
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    
		    return false
		 }
		
		 if (str.indexOf(" ")!=-1){
		    
		    return false
		 }

 		 return true					
	}

function clearField(element)
{
	if(fieldvalue[element.name])
		if(fieldvalue[element.name] == element.value) {
		   element.value = "";
			element.style.color = "#2c72a8";
			element.style.padding = "1px";
			element.style.width = "150px";
		}
		else if(element.value == "") {
		   element.value = fieldvalue[element.name];
			element.style.color = "#cccccc";
			element.style.padding = "1px 3px";
			//alert(element.getWidth())
			element.style.width = (element.getWidth() - 12) + "px";
		}
}

function checkPhone(element,doalert)
{	
	var vallen   = $F(element).length;
  	var IsNumber = true;
	var inpt     = $F(element);
   var Char;
   var number;		
	
	if(inpt != '' && inpt != null && fieldvalue[element.name] != inpt)
	{
		//alert(inpt+" "+fieldvalue[element.name]+" "+(fieldvalue[element.name] != inpt))
	   inpt = inpt.replace(/[^0-9]/g,""); 
	
		if(vallen > 9)
		{
			for (i = 0; i < vallen && IsNumber == true; i++) 
			{ 
			  	Char = inpt.charAt(i); 
			  	if (validChars['numeric'].indexOf(Char) == -1) 
				{
					IsNumber = false;
				}
			}
			
			if(!IsNumber)
			{						
				 element.addClassName('errorinput');
			    
				if(!doalert)
					alert("A phone number contains only numbers.")
				return false;
				
			}
			else 
			{
				 element.removeClassName('errorinput');
				return true;
			}	
		}
		else
		{
			element.addClassName('errorinput');
			
			if(!doalert)
				alert("A phone number is at least 10 characters long.")
			return false;
		}
	}
	else
	{
		element.addClassName('errorinput');
	   
		if(!doalert)
	      alert("Please enter a phone number.")
		return false;
	}
	
	element.removeClassName('errorinput');	
	return true;
}

function checkZip(element,doalert)
{	
	var ziplen   = $F(element).length;
  	var IsNumber = true;
	var inpt     = $F(element);
   var Char;
   var number;
	
	if(inpt != '' || inpt  != null || fieldvalue[element.name] != inpt )
	{
		if(ziplen >= 5)
		{
			for (i = 0; i < ziplen && IsNumber == true; i++) 
			{ 
			  	Char = inpt.charAt(i); 
			  	if (validChars['numeric'].indexOf(Char) == -1) 
				{
					IsNumber = false;
				}
			}
			
			if(!IsNumber)
			{						
				 element.addClassName('errorinput');
				if(!doalert)
					alert("A zip code contains only numbers.")
				return false;
				
			}
			else 
			{
				 element.removeClassName('errorinput');
				return true;
			}			
		}
		else
		{
			element.addClassName('errorinput');
			
			if(!doalert)
				alert("A zip code is normally 5 characters long.")
			return false;
		}
	}
	else
	{
		element.addClassName('errorinput');
	   
		if(!doalert)
	      alert("Please enter a zip code.")
		return false;
	}
	
	element.removeClassName('errorinput');
	return true;
}

function prep_form() {
    fields = Object.keys(fieldvalue);

	 fields.each(function(m)
    {
		 if($(m))
			 if($(m).value == "" || $(m).value == fieldvalue[m])
			 {
				 $(m).style.color = "#cccccc";
			    $(m).style.padding = "1px 3px";
			    $(m).style.width = ($(m).getWidth() - 12) + "px";
				 $(m).value = fieldvalue[m];
			 }
	 })
}

function checkEmail(element,doalert)
{			
   inpt = $F(element);
	
	if ((inpt==null)||(inpt=="") || fieldvalue[element.name] == inpt){		
		element.addClassName('errorinput');
	   
		if(!doalert)
	      alert("Please enter your email address.")
		return false;
	}
	
	if (echeck(inpt)==false){		
		element.addClassName('errorinput');
	   
		if(!doalert)
	      alert("Please enter make sure your email address is in this format: "+validChars['email'])
		return false;
	}
	
	element.removeClassName('errorinput');
	return true;
}

function checkInput(element,doalert)
{			
   inpt = $F(element);
	
	if ((inpt==null)||(inpt=="")){		
		element.addClassName('errorinput');
		if(!doalert)
	      alert("Please enter a value.")
		return false;
	}
	
	element.removeClassName('errorinput');
	return true;
}

function validate_form(form)
{
	elements = Form.getElements(form);
	
	error_arr = new Array();
	
	elements.each(function(m)
	{
		if(m.type == "text")
		{
			if(m.id == "email")
			{
			   if(!checkEmail(m,true))
				   error_arr.push(false);
			}
			else if(m.id == "work_phone")
			{
				if(!checkPhone(m,true))
				   error_arr.push(false);
			}
			else if(m.id == "zip")
			{
				if(!checkZip(m,true))
				   error_arr.push(false);
			}
			else
			{
				if(!checkInput(m,true))
				   error_arr.push(false);
			}
		}
		
		
		if(m.type == "select-one" && m.id!= "type")
		{
			if(!checkInput(m,true))
			   error_arr.push(false);
		}
	});
	
	//alert(error_arr.length);
	
	if(error_arr.length > 0)
	{
		alert("Please make sure you have the correct information in all highlighted fields.");
		//alert(em +' '+ p1 +' '+p2+' '+fn+' '+ln+' '+cp);
		return false;
	}
	else
	{
		return true;
	}
	
}
