

function validateEmail(emailStr){
    
    var checkTLD=1;
    var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
    var emailPat=/^(.+)@(.+)$/;
    var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
    var validChars="\[^\\s" + specialChars + "\]";
    var quotedUser="(\"[^\"]*\")";
    var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
    var atom=validChars + '+';
    var word="(" + atom + "|" + quotedUser + ")";
    var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
    var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
    var matchArray=emailStr.match(emailPat);

    if (matchArray==null) {
        return false;
    }
    
    var user=matchArray[1];
    var domain=matchArray[2];

    for (i=0; i<user.length; i++) {
        if (user.charCodeAt(i)>127) {
            return false;
        }
    }

    for (i=0; i<domain.length; i++) {
        if (domain.charCodeAt(i)>127) {
            return false;
        }
    }
    
    if (user.match(userPat)==null) {
        return false;
    }

    var IPArray=domain.match(ipDomainPat);
    if (IPArray!=null) {
        for (var i=1;i<=4;i++) {
            if (IPArray[i]>255) {
                return false;
            }
        }
        return true;
    }

    var atomPat=new RegExp("^" + atom + "$");
    var domArr=domain.split(".");
    var len=domArr.length;
    for (i=0;i<len;i++) {
        if (domArr[i].search(atomPat)==-1) {
            return false;
        }
    }

    if (checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1) {
            return false;
    }

    if (len<2) {    
        return false;
    }

    return true;
}

function IsEmpty(item) {
	if ( (item.length==0) || (item==null) ) {
		return false;
	}else{ 
		return true;
	}
}

function isDigit(num) 
{
	if (num.length>1){return false;} 
	var string="1234567890";
	if (string.indexOf(num)!=-1){return true;}
	return false;
}

function check_cc_type( cardnumber )
{ 
    var cardtype = "UNKNOWN";

    len = cardnumber.length;
    if     ( len == 15 && cardnumber.substr(0, 1) == '3' )                 { cardtype = "amex"; }
    else if ( len == 16 && cardnumber.substr(0, 4) == '6011' )              { cardtype = "discover"; }
    else if ( len == 16 && cardnumber.substr(0, 1) == '5'  )                { cardtype = "mc"; }
    else if ( (len == 16 || len == 13) && cardnumber.substr(0, 1) == '4' ) { cardtype = "visa"; }

    return ( cardtype );
}

function IsCCNum(item) 
{ 
	if ( (item.length==0) || (item==null) ) 
	{
		return false;
	}
	
    $('cc_num').setAttribute("my_maxlength", 16);
    $('cc_num').removeAttribute("validate_icon");
    
    var type = check_cc_type(item);
    
    if ( (type=="amex") && (item.length != 15) )return false;    
    if ( (type!="amex") && (item.length != 16) ) return false;
    
    if (type=="amex")
    {
        $('cc_num').setAttribute("my_maxlength", 15);
        $('cc_num').setAttribute("validate_icon", "cc_icons/AMEX.jpg");
    } else
    if (type=="discover")
    {
        $('cc_num').setAttribute("validate_icon", "cc_icons/Discover.jpg");
    } else
    if (type=="mc")
    {
        $('cc_num').setAttribute("validate_icon", "cc_icons/MasterCard.jpg");
    } else
    if (type=="visa")
    {
        $('cc_num').setAttribute("validate_icon", "cc_icons/VISA.jpg");
    }
        
    
	//if ( !( (item.length == 16) || (item.length == 15) ) ) return false;
	for (var i=0; i<item.length; i++)
	{
	    if (!isDigit(item.charAt(i)))
        {
            return false;
        }
	}
	return true;
}

function isZIP(zip)
{
    if (zip.length < 5) return false;
    
    for (var i=0; i<zip.length; i++)
    {
        if (!isDigit(zip.charAt(i))) return false;
    }
    
    return true;
}

function isDomain(item){
	if ( (item.indexOf(".") > 2) && (item.indexOf(":") > 0) ){
		return true;
	}else{
		return false;
	}
}
function validateForm(){
	if( (IsEmpty(document.getElementById('name').value)) && (validateEmail(document.getElementById('email').value)) ){
		document.submit_site.submit.disabled=false;
	}
}
function validateRegisterForm()
{
    //document.submit_site.submit.disabled = !( (IsEmpty(document.getElementById('first_name').value)) && (IsEmpty(document.getElementById('password').value)) && (IsEmpty(document.getElementById('last_name').value))  && (validateEmail(document.getElementById('email').value)) );    
}

function validate(form_name)
{  
    var i;
    var valid = true;
    var fields = document.forms[form_name].getElementsByTagName( "input"); 
    valid = checkInputs(fields, form_name );
	
	//throw new Error("validate: "+valid+" ");              
	
    /*var temp = new Array(10);
    for (var k=0; k<fields.length; k++)
        temp[k] = fields[k].name;*/
 

    var fields1 = document.forms[form_name].getElementsByTagName( "select");  
    var valid1;
    valid1 = checkInputs(fields1, form_name );    
    if (valid) valid = valid1;


                                                                      
    var fields2 = document.forms[form_name].getElementsByTagName( "textarea" );  
    var valid2;
    valid2 = checkInputs(fields2, form_name );    
    if (valid) valid = valid2;



    if (arguments.length == 1)
    {
        if (document.forms[form_name].elements['submit']!=null)
            document.forms[form_name].elements['submit'].disabled = !valid; else
            document.getElementById('submit').disabled = !valid;
    } else
    if (arguments.length == 2)
    {
        var submits = arguments[1].split(',');
        for (var i=0; i<submits.length; i++)
        {
            $(submits[i]).disabled = !valid;
        }
    } else
    if (arguments.length == 3)
    {
        var submits = arguments[1].split(',');
        for (var i=0; i<submits.length; i++)
        {
            $(submits[i]).disabled = !valid;
            

        
            if ($(submits[i]).disabled == true)
            {
                $(submits[i]).setAttribute("valChecked", "true");
            } else
            {
                if ($(submits[i]).getAttribute('valChecked')=="true")
                {
                    $(submits[i]).disabled = true;
                }
            }    
            
            
        }
    }
    
    
    
    //document.forms['submit_site'].elements['submit'].disabled = !valid;
}

function checkInputs(fields)
{              
    var i;
    var valid = true;
    for (i=0; i<fields.length; i++)
    {         
        var e = fields[i]; 
        
        if (arguments.length==2)
        { 
            if (fields[i].form.name != arguments[1]) continue;
        }
         
        var validInput = true; 
        if (e.getAttribute('validate')!=null)
        {     
            
            var eID = document.getElementById(e.name);  // if (e.name == 'terms') throw new Error(e.getAttribute('validate'));
            if (eID!=null)
            {
                if (eID.getAttribute('cancelValidate') !=null)
                {
                    if (eID.getAttribute('cancelValidate') == 'true') continue;
                }
            }
           
            if (e.getAttribute('validate')=="isEmail")
            {  
                if (!validateEmail(e.value)) 
                {
                  if (valid) valid = false;
                  var icon = document.getElementById(e.name+'_icon');
                  icon.innerHTML = '<img src="'+SERVER_NAME+'/images/form/formError.png" alt="'+e.getAttribute('vmessage')+'"  /> '+e.getAttribute('vmessage');
                  validInput = false;
                  //break;
                }
            } else
            if (e.getAttribute('validate')=="isChecked")
            { 
                if (!e.checked)
                {
                  if (valid) valid = false;
                  var icon = document.getElementById(e.name+'_icon');
                  icon.innerHTML = '<img src="'+SERVER_NAME+'/images/form/formError.png" alt="'+e.getAttribute('vmessage')+'"  /> '+e.getAttribute('vmessage');
                  validInput = false;
                  //break;
                }
                
            } else
            if (e.getAttribute('validate')=="isCCNum")
            {
                if ( !IsCCNum(e.value)  || (e.value.length != e.getAttribute('my_maxlength') )   )
                //if ( !IsCCNum(e.value)    )
                {
                  if (valid) valid = false;
                  
                  
                  
                  var icon_text = document.getElementById(e.name+'_icon_text');
                  if (icon_text != null)
                  {
                    icon_text.innerHTML = e.getAttribute('vmessage')
                  }
                  
                  var icon = document.getElementById(e.name+'_icon');
                  if (icon != null)
                  {
                    icon.innerHTML = '<img src="'+SERVER_NAME+'/images/form/formError.png" alt="'+e.getAttribute('vmessage')+'"  /> ';
                    if (icon_text == null)
                    {
                        icon.innerHTML += e.getAttribute('vmessage');
                    }
                  }
                  
                  
                  validInput = false;
                  //break;
                }
                
            } else
            if (e.getAttribute('validate')=="isZIP")
            {
                if (!isZIP(e.value))
                {
                  if (valid) valid = false;
                  var icon = document.getElementById(e.name+'_icon');
                  icon.innerHTML = '<img src="'+SERVER_NAME+'/images/form/formError.png" alt="'+e.getAttribute('vmessage')+'"  /> '+e.getAttribute('vmessage');
                  validInput = false;
                  //break;
                }
                
            } else
			if (e.getAttribute('validate')=="isEmptyTextSelected")
			{
				
				{
				  if (!IsEmpty(e.options[e.selectedIndex].text))
				  {
					  if (valid) valid = false;
	                  var icon = document.getElementById(e.name+'_icon');
	                  icon.innerHTML = '<img src="'+SERVER_NAME+'/images/form/formError.png" alt="'+e.getAttribute('vmessage')+'"  /> '+e.getAttribute('vmessage');
	                  validInput = false;
				  }
				}
			} else
            {         
            
                if (e.type == "radio") 
                {
                    var isAnyChecked = false;
                    var rbName = e.name;
                    var formName = arguments[1];

/*throw new Error(document.forms[formName].elements[rbName].length);
continue;*/
					var go_to = 1;
					if (document.forms[formName].elements[rbName].length)
						go_to = document.forms[formName].elements[rbName].length;

                    for (var ratiosI=0; (ratiosI < go_to); ratiosI++)
                    {
	                    //needed to add because Safari doesn't have radio items as objects. Not sure why
	                    var AgentString = navigator.userAgent;
	
						var pos= AgentString.indexOf("Safari");

						if (pos>=0)
						{ 
							//if (document.forms[formName].elements[rbName].item(ratiosI).checked)
                       		{
                          		isAnyChecked = true;
                       		}
					 	}else
					 	{
							if (go_to>1)
							{
	                       		if (document.forms[formName].elements[rbName].item(ratiosI).checked)
	                       		{ 
	                          		isAnyChecked = true;
	                       		}
							} else
							{
								if (document.forms[formName].elements[rbName].checked)
	                       		{ 
	                          		isAnyChecked = true;
	                       		}
							}
                       		
                   		}
                       //throw new Error(document.forms[formName].elements[rbName].length);
                    }
                    if (!isAnyChecked)
                    {
                        if (valid) valid = false;
                        var icon = document.getElementById(e.name+'_icon');
                        if (icon != null)
                            icon.innerHTML = '<img src="'+SERVER_NAME+'/images/form/formError.png" alt="'+e.getAttribute('vmessage')+'"  /> '+e.getAttribute('vmessage');
                        validInput = false;
//                        throw new Error('radio '+e.name+' value: '+e.value+'  '+e.checked);
                    }
                    
                }
                if (!IsEmpty(e.value))
                {
                  if (valid) valid = false;
                  
                  var icon_text = document.getElementById(e.name+'_icon_text');
                  if (icon_text != null)
                  {
                    icon_text.innerHTML = e.getAttribute('vmessage')
                  }
                  
                  var icon = document.getElementById(e.name+'_icon');
                  if (icon != null)
                  {
                    icon.innerHTML = '<img src="'+SERVER_NAME+'/images/form/formError.png" alt="'+e.getAttribute('vmessage')+'"  /> ';
                    if (icon_text == null)
                    {
                        icon.innerHTML += e.getAttribute('vmessage');
                    }
                  }
                  
                  
                  
                  validInput = false;
                  //break;
                }
            }
            if (validInput)
            {
                var icon = document.getElementById(e.name+'_icon');
                
                var icon_text = document.getElementById(e.name+'_icon_text');
                if (icon_text!=null)
                    icon_text.innerHTML = '';
                
                if (icon!=null)
                {
                    if ( (e.getAttribute("validate_icon")!=null) && (e.getAttribute("validate_icon")!="") )
                    {
                        icon.innerHTML = '<img src="'+SERVER_NAME+'/images/'+e.getAttribute('validate_icon')+'"  alt="'+e.getAttribute('vmessage')+'"  />';
                    } else
                    {
                        icon.innerHTML = '<img src="'+SERVER_NAME+'/images/form/formOK.png"  alt="'+e.getAttribute('vmessage')+'"  />';
                    }
                }
                  

                
            }
        }                
    }

    return valid;
}



