//ppCommon.js
function setCookie(name, value, expires, path, domain, secure) {
	var d = document;
	var curCookie = name + "=" + escape(value) +
		((expires) ? "; expires=" + expires.toGMTString() : "") +
		((path) ? "; path=" + path : "") +
		((domain) ? "; domain=" + domain : "") +
		((secure) ? "; secure" : "");
	d.cookie = curCookie;
}

// name - name of the desired cookie
// * return string containing value of specified cookie or null if cookie does not exist
function getCookie(name) {
  var d = document;
  var dc = d.cookie;
  var prefix = name + "=";
  var begin;
  if (dc.substring(0,prefix.length)==prefix) {
    //alert(dc.substring(0,prefix.length));
    begin = 0;
  }
  else {
     begin = dc.indexOf("; " + prefix);
     if (begin == -1) {
       begin = dc.indexOf(prefix);
       if (begin != 0) return null;
     } else
       begin += 2;
  }
  var end = dc.indexOf(";", begin);
  if (end == -1)
    end = dc.length;

  return unescape(dc.substring(begin + prefix.length, end));
}

function deleteCookie(name, path, domain) {
	var d = document;
	if (getCookie(name)) 
	{
		d.cookie = name + "=" + 
			((path) ? "; path=" + path : "") +
			((domain) ? "; domain=" + domain : "") +
			"; expires=Thu, 01-Jan-70 00:00:01 GMT";
	}
}

function jsExtractToken(str, start,end) 
{
	if (!(str.indexOf(start) > 0)) return "";
	var temp = str.substr( str.indexOf(start)+start.length);
	if (temp.indexOf(end) > 0) return temp.substr (0, temp.indexOf(end) );
	else return temp;
}

function keypress_number(decimal) {
   try {
	var keypressed = window.event.keyCode;
	var ElementText  = window.event.srcElement.value ;
	if (keypressed == 45){
		if (ElementText.length!=0) {
			window.event.keyCode = 0;
		}
	
	}
	else {
		if (decimal) {
			var Reg = /\./g;
			if (Reg.test(ElementText)) {
				if( (keypressed >= 48 && keypressed <= 57) == false) {
					window.event.keyCode = 0;
				}
			}
			else {
				if ((keypressed >= 48 && keypressed <= 57 || keypressed == 46) == false) {
					window.event.keyCode = 0;
				}
			}
		}

		else {
			if ((keypressed >= 48 && keypressed <= 57) == false) {
				window.event.keyCode = 0;
			}
		}
	}
   } catch (error) {}
}

function validateCard(cardNumber,cardType) {
       	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 'a':
       			if( length != 15 ) {
       				alert("Please enter a valid American Express Card number.");
       				return;
       			}
       			var prefix = parseInt( cardNumber.substring(0,2));

       			if( prefix != 34 && prefix != 37 ) {
       				alert("Please enter a valid American Express Card number.");
       				return;
       			}
       			break;
       		case 'd':

      			if( length != 16 ) {
       				alert("Please enter a valid Discover Card number.");
				return;
    			}
      			var prefix = parseInt( cardNumber.substring(0,4));

  			if( prefix != 6011 ) {
       				alert("Please enter a valid Discover Card number.");
       				return;
     			}
     			break;
       		case 'm':

 			if( length != 16 ) {
				alert("Please enter a valid MasterCard number.");
   				return;
      			}
       			var prefix = parseInt( cardNumber.substring(0,2));

       			if( prefix < 51 || prefix > 55) {
       				alert("Please enter a valid MasterCard Card number.");
     				return;
       			}
       			break;
      		case 'v':

       			if( length != 16 && length != 13 ) {
       				alert("Please enter a valid Visa Card number.");
      				return;
       			}
       			var prefix = parseInt( cardNumber.substring(0,1));

       			if( prefix != 4 ) {
       				alert("Please enter a valid Visa Card number.");
       				return;
      			}
       			break;
       	}

       	if( !mod10( cardNumber ) ) { 		// run the check digit algorithm
       		alert("Sorry! This is not a valid credit card number.");
       		return false;
       	}

       	return true; // at this point card has not been proven to be invalid
}

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);	 	
}
