function CheckRequired() 
		{
			for(var i=0; i< Page_Validators.length; i++ )
			 {

						ValidatorValidate(Page_Validators[i]);
						if (!Page_Validators[i].isvalid)
						 {
								
								t = eval("document.all." + Page_Validators[i].controltovalidate);
								t.focus();
								t.select();
								break;
						}
					}
		}
function mod10( cardNumber ) { // LUHN Formula for validation of credit card numbers.
	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 expired123( 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.setMonth(expiresIn.getMonth()+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
    }
      function expired( month, year )
         {
			var now = new Date();							// this function is designed to be Y2K compliant.
			var currentYear=now.getYear();
			var currentMonth=now.getMonth()+1;
			
        	//var expiresIn = new Date(year,month,0,0,0);		// create an expired on date object with valid thru expiration date        	
        //	expiresIn.setMonth(expiresIn.getMonth()+2);			// adjust the month, to first day, hour, minute & second of expired month
        	var expiresInYear=year;//expiresIn.getYear();
        	var expiresInMonth=month;//expiresIn.getMonth();
        	//alert(currentYear);
        	//alert(currentMonth);
        	//alert(expiresInYear);
        	//alert(expiresInMonth);
        	
        	//alert(now.getTime());	
        	if(parseInt(currentYear,10) < parseInt(expiresInYear,10) )
        	{
        		//alert("True");
        		return false;
        	}
        	else if(parseInt(currentYear,10)==parseInt(expiresInYear,10))
        	{
        		//alert("TEEE");
        		if(parseInt(currentMonth,10) <=parseInt(expiresInMonth,10))
        		{
        		//	alert("Less=");
        			return false;
        		}
        		else
        		{
        		//	alert("More");
        			return true;
        		}
        	}
        	else
        	{
        	//	alert("False");
        		return true;
        	}        	
        	return true;									// then we get the miliseconds, and do a long integer comparison
    }


        function validateCard(cardNumber,cardType,cardMonth,cardYear) {
        	
       // alert(cardNumber);
        	if( cardNumber.length == 0 ) 
        	{						//most of these checks are self explanitory
        		alert("Please enter a valid card number.");
        		return false;				
        	}
        	for( var i = 0; i < cardNumber.length; ++i ) 
        	{		// make sure the number is all digits.. (by design)
        			var c = cardNumber.charAt(i);

            		if( c < '0' || c > '9' )
            		{
            			alert("Please enter a valid card number. Use only digits. do not use spaces or hyphens.");
            			return false;
            		}
            }
            	var length = cardNumber.length;			//perform card specific length and prefix tests


                	switch( cardType ) 
                	{
								case 'AMERICAN EXPRESS':


								if( length != 15 ) {
								alert("Please enter a valid American Express Card number.");
								return false;
								}
								var prefix = parseInt( cardNumber.substring(0,2));


								if( prefix != 34 && prefix != 37 ) {
									alert("Please enter a valid American Express Card number.");
									return false;
								}
								break;
								case 'DISCOVER':


								if( length != 16 ) {
								alert("Please enter a valid Discover Card number.");
								return false;
								}
								var prefix = parseInt( cardNumber.substring(0,4));


								if( prefix != 6011 ) {
								alert("Please enter a valid Discover Card number.");
								return false;
								}
								break;
								case 'MASTERCARD':


								if( length != 16 ) {
								alert("Please enter a valid MasterCard number.");
								return false;
								}
								var prefix = parseInt( cardNumber.substring(0,2));


								if( prefix < 51 || prefix > 55) {
								alert("Please enter a valid MasterCard Card number.");
								return false;
								}
								break;
								case 'VISA':


								if( length != 16 && length != 13 ) {
								alert("Please enter a valid Visa Card number.");
								return false;
								}
								var prefix = parseInt( cardNumber.substring(0,1));


								if( prefix != 4 ) {
								alert("Please enter a valid Visa Card number.");
								return false;
								}
								break;
                      }
                    if( !mod10( cardNumber ) )
                     { 		// run the check digit algorithm
                        alert("Sorry! this is not a valid credit card number.");
                        return false;
                    }                  
					if( expired( cardMonth, cardYear ) )
					 {							// check if entered date is already expired.
						alert("Sorry! The expiration date you have entered would make this card invalid.");
						return false;
					}
                                                	
                    return true; // at this point card has not been proven to be invalid
   }
  