//trim function

function isSpace(c)
{ return ( (c == ' ') || (c == '\r') || (c == '\n') || (c == '\t') ); }

function trimLeft(str)
{
	var i = 0, len = str.length;
	var newStr = "";

	while ( (i < len) && isSpace( str.charAt(i) ) )
		i++;

	while (i < len)
		newStr += str.charAt(i++);

	return newStr;
}

function trimRight(str)
{
	var i = str.length - 1;
	var newStr = "";
	
	while ( (i >= 0) && isSpace( str.charAt(i) ) )
		i--;

	while (i >= 0)
		newStr = str.charAt(i--) + newStr;

	return newStr;
}

function trim(str)
{ return trimRight( trimLeft(str) ); }

//testimon validation
function formTestimonValidate(sub)
        {
            var errorMessage = '';
            var lineBreak = '';
            var isValid = true;
            
            if(!emptyFieldValidate('name'))
                {
                    errorMessage = 'Please enter your name!';
                    lineBreak = '<br />';
                    errorDivStatus(sub);
                    labelError(false,'name');
                    isValid = false;
                }
            else
                {
                    labelError(true,'name');
                }
            if(!emptyFieldValidate('email'))
                {
                    errorMessage = errorMessage + lineBreak + 'Please enter your email!';
                    lineBreak = '<br />';
                    errorDivStatus(sub);
                    labelError(false,'email');
                    isValid = false;
                }
            else if (!valiadateEmail(document.getElementById('email').value))
                {
                    errorMessage = errorMessage + lineBreak + 'Please enter a valid email address!';
                    lineBreak = '<br />';
                    errorDivStatus(sub);
                    labelError(false,'email');
                    isValid = false;
                }
            else
                {
                    labelError(true,'email');
                }
            if(!emptyFieldValidate('comments'))
                {
                    errorMessage = errorMessage + lineBreak + 'Please enter your comments!';
                    lineBreak = '<br />';
                    errorDivStatus(sub);
                    labelError(false,'comments');
                    isValid = false;
                }
            else if(document.getElementById('comments').value.length > 800)
                {
                    errorMessage = errorMessage + lineBreak + 'Comments can\'t be more than 800!';
                    lineBreak = '<br />';
                    errorDivStatus(sub);
                    labelError(false,'comments');
                    //labelError(false,'lbl_commentsMax');
                    isValid = false;
                }
            else
                {
                    labelError(true,'comments');
                    //labelError(true,'lbl_commentsMax');
                }
            if(isValid == false)
                {
                    document.getElementById('formError').innerHTML = errorMessage;
                    return false;
                }
            else
                {
                document.getElementById('formError').innerHTML = '';
                return true;
                }
         
        }
    
 //Contact validation
    function formContactValidate(sub)
        {
            var errorMessage = '';
            var lineBreak = '';
            var isValid = true;
            var strState = document.getElementById('state').selectedIndex;
            var selectedState = document.getElementById('state').options[strState].value;
            var numberValidate = /^-?\d+$/;
            
            
            if(!emptyFieldValidate('name'))
                {
                    errorMessage = 'Please enter your name!';
                    lineBreak = '<br />';
                    errorDivStatus(sub);
                    labelError(false,'name');
                    isValid = false;
                }
            else
                {
                    labelError(true,'name');
                }
           if(!emptyFieldValidate('company'))
                {
                    errorMessage = errorMessage + lineBreak + 'Please enter your company name!';
                    lineBreak = '<br />';
                    errorDivStatus(sub);
                    labelError(false,'company');
                    isValid = false;
                }
           else
                {
                    labelError(true,'company');
                }
           if(!emptyFieldValidate('address'))
                {
                    errorMessage = errorMessage + lineBreak + 'Please enter your address!';
                    lineBreak = '<br />';
                    errorDivStatus(sub);
                    labelError(false,'address');
                    isValid = false;
                }
           else
                {
                    labelError(true,'address');
                }
           if(!emptyFieldValidate('city'))
                {
                    errorMessage = errorMessage + lineBreak + 'Please enter your city!';
                    lineBreak = '<br />';
                    errorDivStatus(sub);
                    labelError(false,'city');
                    isValid = false;
                }
           else
                {
                    labelError(true,'city');
                }
           if(selectedState == '0')
                {
                    errorMessage = errorMessage + lineBreak + 'Please enter your state!';
                    lineBreak = '<br />';
                    errorDivStatus(sub);
                    labelError(false,'state');
                    isValid = false;
                }
           else
                {
                    labelError(true,'state');
                }
           if(!emptyFieldValidate('zip'))
                {
                    errorMessage = errorMessage + lineBreak + 'Please enter your zip code!';
                    lineBreak = '<br />';
                    errorDivStatus(sub);
                    labelError(false,'zip');
                    isValid = false;
                }   
                
           else if(!numberValidate.test(document.getElementById('zip').value))
                {
                    errorMessage = errorMessage + lineBreak + 'Please enter a valid zip code!';
                    lineBreak = '<br />';
                    errorDivStatus(sub);
                    labelError(false,'zip');
                    isValid = false;
                }
           else
                {
                    labelError(true,'zip');
                }
           if(!emptyFieldValidate('phone1') || !emptyFieldValidate('phone2') || !emptyFieldValidate('phone3'))
                {
                    errorMessage = errorMessage + lineBreak + 'Please enter your phone number';
                    lineBreak = '<br />';
                    errorDivStatus(sub);
                    labelError(false,'phone1');
                    isValid = false;
                }   
                
           else if(!numberValidate.test(document.getElementById('phone1').value)
                    || !numberValidate.test(document.getElementById('phone2').value)
                    || !numberValidate.test(document.getElementById('phone3').value)
                    || document.getElementById('phone1').value.length < 3
                    || document.getElementById('phone2').value.length < 3
                    || document.getElementById('phone3').value.length < 4
                    || document.getElementById('phone1').value.indexOf(0)==0)
                {
                    errorMessage = errorMessage + lineBreak + 'Please enter a valid phone number!';
                    lineBreak = '<br />';
                    errorDivStatus(sub);
                    labelError(false,'phone1');
                    isValid = false;
                }
          else
                {
                    labelError(true,'phone1');
                }
            
           if(!emptyFieldValidate('email'))
                {
                    errorMessage = errorMessage + lineBreak + 'Please enter your email!';
                    lineBreak = '<br />';
                    errorDivStatus(sub);
                    labelError(false,'email');
                    isValid = false;
                }
            else if (valiadateEmail(document.getElementById('email').value) == false)
                {
                    errorMessage = errorMessage + lineBreak + 'Please enter a valid email address!';
                    lineBreak = '<br />';
                    errorDivStatus(sub);
                    labelError(false,'email');
                    isValid = false;
                }
            else
                {
                    labelError(true,'email');
                }
            if(!emptyFieldValidate('confirmEmail'))
                {
                    errorMessage = errorMessage + lineBreak + 'Please re-enter your email!';
                    lineBreak = '<br />';
                    errorDivStatus(sub);
                    labelError(false,'confirmEmail');
                    isValid = false;
                }
            else if (valiadateEmail(document.getElementById('confirmEmail').value) == false)
                {
                    errorMessage = errorMessage + lineBreak + 'Please re-enter a valid email address!';
                    lineBreak = '<br />';
                    errorDivStatus(sub);
                    labelError(false,'confirmEmail');
                    isValid = false;
                }
            else if(document.getElementById('confirmEmail').value != document.getElementById('email').value)
                {
                    errorMessage = errorMessage + lineBreak + 'The two email fields must match!';
                    lineBreak = '<br />';
                    errorDivStatus(sub);
                    labelError(false,'confirmEmail');
                    isValid = false;
                }
           else
                {
                    labelError(true,'confirmEmail');
                }
           if(!emptyFieldValidate('comments'))
                {
                    errorMessage = errorMessage + lineBreak + 'Please enter your questions/comments!';
                    lineBreak = '<br />';
                    errorDivStatus(sub);
                    labelError(false,'comments');
                    isValid = false;
                }
           else
                {
                    labelError(true,'comments');
                }
           if(isValid == false)
                {
                    document.getElementById('formError').innerHTML = errorMessage;
                    return false;
                }
           else
                {
                    document.getElementById('formError').innerHTML = '';
                    return true;
                }
        }
 
 
 
 
//email validation
    function valiadateEmail(email)
        {
            var at = '@';
            var dot = '.';
            var doubleDot = '..';
            var emailLength = email.length;
            var lat=email.indexOf(at)
            var ILLEGAL_CHARS = " <>()[]\\,:;/\"";
            var nLastPr = email.lastIndexOf(".");
            
            if ((email.indexOf(at)==-1 || email.indexOf(at)==0 || email.indexOf(at)==emailLength
                || email.indexOf(dot)==-1 || email.indexOf(dot)==0 || email.indexOf(dot)+1==emailLength
                || email.indexOf(at,(lat+1))!=-1 || email.substring(lat-1,lat)==dot || email.substring(lat+1,lat+2)==dot
                || email.indexOf(dot,(lat+2))==-1 || email.indexOf(' ')!=-1 || email.indexOf(doubleDot)!=-1)
                || (nLastPr != emailLength - 3 && nLastPr != emailLength - 4)
                && (email != ''))
                    {
                    return false;
                    }
            
            
            for (var i = 0; i < email.length; i++)
		        if (ILLEGAL_CHARS.indexOf(email.charAt(i))!= -1)
			    return false;
			    
         return true;
        }
        
 //empty field validation
    function emptyFieldValidate(field)
        {
        if(trim(document.getElementById(field).value) == '' || trim(document.getElementById(field).value) == null)
            {
            return false;
            }
        return true;
        }
  
  //label error color
  function labelError(status,name)
    {
       var errorDiv = document.getElementById('formErrorMain').style.display;
       if(status == false && errorDiv =='block')
            {
                document.getElementById('lbl_' + name).className='form txtErrorMessage';
                document.getElementById('lbl_' + name).innerHTML='&nbsp;!';
            }
       else
            {
                document.getElementById('lbl_' + name).className='form';
                document.getElementById('lbl_' + name).innerHTML='*';
            }
       
    }
    
//error div function
function errorDivStatus(sub)
    {
        if(sub == 'true')
            {
                document.getElementById('formErrorMain').style.display='block';
            }
    }