﻿/* Form Validation Script for Contact Us
Developed By	: Sanjay Kumar
Date			: 20 May 2010 
Message			: apply validation rules of contractform.aspx.
*/
function validate()
{
        var i=0;
        var rules=new Array();   
        
        rules[i++]='ctl00_ContentPlaceHolder1_txtCompanyName|required|Please enter company name';
        rules[i++]='ctl00_ContentPlaceHolder1_txtFirstName|required|Please enter First Name';
        rules[i++]='ctl00_ContentPlaceHolder1_txtFirstName:Name|alphabeticspace';
        rules[i++]='ctl00_ContentPlaceHolder1_txtLastName|required|Please enter Last Name';
        rules[i++]='ctl00_ContentPlaceHolder1_txtLastName:Name|alphabeticspace';
        rules[i++]='ctl00_ContentPlaceHolder1_txtBillingName|required|Please enter billing name';
        //rules[i++]='ctl00_ContentPlaceHolder1_txtPhone|numeric|Phone Number must be numeric';
        rules[i++]='ctl00_ContentPlaceHolder1_txtBillingEmail|required|Please enter billing Email Id';
        rules[i++]='ctl00_ContentPlaceHolder1_txtBillingEmail|email|Please enter valid billing Email Id';        
        
        rules[i++]='validateDropDown("ctl00_ContentPlaceHolder1_ddlCardType","Card Type")|custom';
        rules[i++]='ctl00_ContentPlaceHolder1_txtCardNo|required|Please Enter Card Number'; 
        if(document.getElementById("ctl00_ContentPlaceHolder1_txtCardNo").value!='')
        {
            rules[i++]='validateCreditCard()|custom';
        }
        rules[i++]='validateDropDown("ctl00_ContentPlaceHolder1_ddlMonth","Month")|custom';  
        rules[i++]='validateDropDown("ctl00_ContentPlaceHolder1_ddlYear","Year")|custom';
        rules[i++]='ctl00_ContentPlaceHolder1_txtCardHolderName|required|Please Enter Card Holder Name'; 
        rules[i++]='ctl00_ContentPlaceHolder1_txtCvvCode|required|Please Enter Cvv Code';
        rules[i++]='ctl00_ContentPlaceHolder1_txtCvvCode:Cvv Code|numeric';
        var ddl=document.getElementById('ctl00_ContentPlaceHolder1_ddlCardType');
        if(ddl.options[ddl.selectedIndex].text=='Amex')
        {
            if(document.getElementById('ctl00_ContentPlaceHolder1_txtCvvCode').value.length!=4)
                rules[i++]='"Please Enter Valid CVV Code of 4 Digits In Length"|custom';
        }
        else
        {
            if(document.getElementById('ctl00_ContentPlaceHolder1_txtCvvCode').value.length!=3)
                rules[i++]='"Please Enter Valid CVV Code of 3 Digits In Length"|custom';
        }
        rules[i++]='ctl00_ContentPlaceHolder1_chkIsAgree|required|Please agree to Terms and Conditions';
//        rules[8]='ctl00_ContentPlaceHolder1_txtEmail1|required|Please enter Email';
//        rules[9]='ctl00_ContentPlaceHolder1_txtEmail1|email|Please enter valid Email'; 
//        rules[10]='ctl00_ContentPlaceHolder1_txtQuestions|required|Please enter your question';
//        rules[11]='CheckEmailAddress()|custom|Email addresses are not same';
//      rules[8]='ctl00_ContentPlaceHolder1_txtFax|numeric|FAX must be numeric';
//        rules[9]='ctl00_ContentPlaceHolder1_txtName|maxlength|50|Name must not be more than 50 characters long';
//        rules[10]='ctl00_ContentPlaceHolder1_txtEmail|maxlength|150|Email id must not be more than 150 characters long';
//        rules[11]='ctl00_ContentPlaceHolder1_txtPhone|maxlength|20|Phone Number must not be more than 20 characters long';
//        rules[12]='ctl00_ContentPlaceHolder1_txtFax|maxlength|20|FAX must not be more than 20 characters long';
//        rules[13]='ctl00_ContentPlaceHolder1_txtSecurityCode|required|Please enter security code';
//        rules[12]='ctl00_ContentPlaceHolder1_txtComments|maxlength|3000|Comments must not be more than 3000 characters long';
//        
        
//        validateTopicList();
        
        if(rules.length>0)
        {
            return performCheck('aspnetForm', rules, 'classic');
        }
  }
  
  
  
  function validateCreditCard()
{
    var cardNumber=document.getElementById("ctl00_ContentPlaceHolder1_txtCardNo").value;
    var cardType=document.getElementById("ctl00_ContentPlaceHolder1_ddlCardType").value;
    var cardMonth=document.getElementById("ctl00_ContentPlaceHolder1_ddlMonth").value;
    var cardYear=document.getElementById("ctl00_ContentPlaceHolder1_ddlYear").value;
        
    var length = cardNumber.length;			//perform card specific length and prefix tests
			
	switch( cardType ) 
	{
		case 'Amex':
			if( length != 15 ) 
			{
				return("Please Enter A Valid American Express Card Number.");           
            }
            var prefix = parseInt( cardNumber.substring(0,2));
            if( prefix != 34 && prefix != 37 ) 
            {
			    return("Please Enter A Valid American Express Card Number.");
            }
            break;
            
        case 'Discover':
			if( length != 16 ) 
			{
				return("Please Enter A Valid Discover Card Number.");
            }
            var prefix = parseInt( cardNumber.substring(0,4));
            if( prefix != 6011 ) {
				return("Please Enter A Valid Discover Card Number.");
            }
            break;
                
        case 'MasterCard':
			if( length != 16 ) 
			{
				return("Please Enter A Valid MasterCard Number.");
            }
            var prefix = parseInt( cardNumber.substring(0,2));
            if( prefix < 51 || prefix > 55) 
            {
				return("Please Enter A Valid MasterCard Card Number.");
            }
            break;
            
        case 'Visa':
			if( length != 16 && length != 13 ) 
			{
				return("Please Enter A Valid Visa Card Number.");
            }
            var prefix = parseInt( cardNumber.substring(0,1));
            if( prefix != 4 ) 
            {
				return("Please enter a valid Visa Card Number.");
            }
            break;
    }
            
    if( !mod10( cardNumber ) ) { 		// run the check digit algorithm
		return("Sorry! This Is Not A Valid Credit Card Number.");
    }
    
    if( expired( cardMonth, cardYear ) ) {							// check if entered date is already expired.
		return("Sorry! The Expiration Date You Have Entered Would Make This Card Invalid.");
    }

	return null; // at this point card has not been proven to be invalid
}
    
function mod10( cardNumber ) { // LUHN Formula for validation of credit card numbers.
	return true;
	var ar = new Array( cardNumber.length );
	var i = 0,sum = 0;
    for( i = 0; i < cardNumber.length; ++i ) 
    {
	    ar[i] = parseInt(cardNumber.charAt(i));
    }
	for( i = ar.length -2; i >= 0; i-=2 ) { // you have to start from the right, and work back.
		ar[i] *= 2;							 // every second digit starting with the right most (check digit)
		if( ar[i] > 9 ) ar[i]-=9;			 // will be doubled, and summed with the skipped digits.
	}										 // if the double digit is > 9, ADD those individual digits together 
    for( i = 0; i < ar.length; ++i ) {
		sum += ar[i];						 // if the sum is divisible by 10 mod10 succeeds
    }
    return (((sum%10)==0)?true:false);
}
            
function expired( month, year ) 
{
	var now = new Date();							// this function is designed to be Y2K compliant.
    var expiresIn = new Date(year,month,0,0,0);		// create an expired on date object with valid thru expiration date
    expiresIn.setDate(expiresIn.getDate()+1);		// adjust the month, to first day, hour, minute & second of expired month
    if( now.getTime() < expiresIn.getTime() ) 
        return false;
	return true;									// then we get the miliseconds, and do a long integer comparison
}

///General Functions

function validateDropDown(id,name)
{
    if(document.getElementById(id).value == 0)
    {
        return 'Please Select ' + name;
    }
}

function numberKeypress(e)
{
    if ([e.keyCode||e.which]==8) //this is to allow backspace
    return true;
    if ([e.keyCode||e.which]==9) //this is to allow tab
    return true;
    if ([e.keyCode||e.which]==37) //this is to allow left arrow symbol
    return true;
//    if ([e.keyCode||e.which]==38) //this is to allow up arrow symbol
//    return true;
    if ([e.keyCode||e.which]==39) //this is to allow right arrow symbol
    return true;
//    if ([e.keyCode||e.which]==40) //this is to allow down arrow symbol
//    return true;
    if (e.keyCode==46 && e.which == 0) //this is to allow delete
    return true;
    
    if ([e.keyCode||e.which]==46) //this is to allow period
    return true;
    
    if ([e.keyCode||e.which]==38) //this is to block Shift+&
    return false;
    
    if ([e.keyCode||e.which]==40) //this is to block Shift+(
    return false;
    
//    if ([e.keyCode||e.which]==43) //this is to allow + symbol
//    return true;
//    if ([e.keyCode||e.which]==45) //this is to allow - symbol
//    return true;
    if ([e.keyCode||e.which] < 48 || [e.keyCode||e.which] > 57)
    e.preventDefault? e.preventDefault() : e.returnValue = false;
}

function ShowStateBox(ddlCountry,ddlState,txtState)         //Hide/Show the state textbox if country is US
{ 
    if(document.getElementById(ddlCountry).value == 'US')
    {	
        document.getElementById(ddlState).style.display='block';
        document.getElementById(txtState).style.display='none';			
    }
    else{
        document.getElementById(ddlState).style.display='none';
        document.getElementById(txtState).style.display='block';
        document.getElementById(txtState).value='';
    }
}
