﻿// JavaScript Document
function callXMLHTTP(pageUrl)
{
	var xmlRequest;
	if (window.XMLHttpRequest) 
		xmlRequest = new XMLHttpRequest();
	else
		xmlRequest = new ActiveXObject("Microsoft.XMLHTTP");
		
	xmlRequest.open("GET", pageUrl, false);
	xmlRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	xmlRequest.send("");

	if(xmlRequest == null || xmlRequest.readyState != 4)
		return false;
	if(xmlRequest.responseText.length == 0)
		return false;

	return xmlRequest.responseText;
}

function IsInteger(sText)
{
	var ValidChars = "0123456789";
	var IsNumber = true;
	var Char;
	
	if(sText)
	{
		for (i = 0; i < sText.length && IsNumber == true; i++) 
		{ 
			Char = sText.charAt(i); 
			if (ValidChars.indexOf(Char) == -1) 
			{
				IsNumber = false;
			}
		}
	}
	else
	{
		IsNumber = false;
	}
	return IsNumber;
}

function IsNumeric(sText)
{
	var ValidChars = "0123456789.";
	var IsNumber = true;
	var Char;
	
	if(sText)
	{
		for (i = 0; i < sText.length && IsNumber == true; i++) 
		{ 
			Char = sText.charAt(i); 
			if (ValidChars.indexOf(Char) == -1) 
			{
				IsNumber = false;
			}
		}
	}
	else
	{
		IsNumber = false;
	}
	return IsNumber;
}

function URLEncode (clearString) {
  var output = '';
  var x = 0;
  clearString = clearString.toString();
  var regex = /(^[a-zA-Z0-9_.]*)/;
  while (x < clearString.length) {
    var match = regex.exec(clearString.substr(x));
    if (match != null && match.length > 1 && match[1] != '') {
    	output += match[1];
      x += match[1].length;
    } else {
      if (clearString[x] == ' ')
        output += '+';
      else {
        var charCode = clearString.charCodeAt(x);
        var hexVal = charCode.toString(16);
        output += '%' + ( hexVal.length < 2 ? '0' : '' ) + hexVal.toUpperCase();
      }
      x++;
    }
  }
  return output;
}



// Credit Card Validate Module //
function getcardtype(cardNumber)
{
	var cardtype
	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' ) 
		{
			return cardtype;
		}
	}
	var length = cardNumber.length;		//perform card specific length and prefix tests
	switch (length)
	{
		// VISA
		case 13:
			var prefix = parseInt( cardNumber.substring(0,1));
			if( prefix == 4 ) 
			{
				cardtype = "Visa";
			}
			break;
		// AMEX
		case 15:
			var prefix = parseInt( cardNumber.substring(0,2));
			if( prefix == 34 || prefix == 37 )
			{
				cardtype = "American Express";
			}
			break;
		// VISA MASTER DISCOVER
		case 16:
			var prefix = parseInt( cardNumber.substring(0,1));
			if( prefix == 4 ) 
			{
				cardtype = "Visa";
			}
			prefix = parseInt( cardNumber.substring(0,2));
			if( prefix >= 51 && prefix <= 55) 
			{
				cardtype = "Master";
			}
			prefix = parseInt( cardNumber.substring(0,4));
			if( prefix == 6011 ) 
			{
				cardtype = "Discover";
			}
			break;
	}
	
	if( !mod10( cardNumber ) ) 
	{
		cardtype = "";
	}
	return cardtype;
}
// validateCard( Card Number, Card Type, Month, Year )
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 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.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 validateCard(cardNumber,cardType,cardMonth,cardYear) 
{
	if( cardNumber.length == 0 ) 
	{						//most of these checks are self explanitory
		checkoutrestorecardicon();
		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' ) && c != "-" )
		{
			checkoutcardwarning("Please enter a valid card number.");
			return false;
		}
	}
	var length = cardNumber.length;		//perform card specific length and prefix tests
	switch( cardType ) 
	{
		case "American Express":
			if( length != 15 ) 
			{
				checkoutcardwarning("Please enter a valid American Express Card number.");
				return;
			}
			var prefix = parseInt( cardNumber.substring(0,2));
			if( prefix != 34 && prefix != 37 ) 
			{
				checkoutcardwarning("Please enter a valid American Express Card number.");
				return;
			}
			break;
		case "Discover":
			if( length != 16 ) 
			{
				checkoutcardwarning("Please enter a valid Discover Card number.");
				return;
			}
			var prefix = parseInt( cardNumber.substring(0,4));
			if( prefix != 6011 ) 
			{
				checkoutcardwarning("Please enter a valid Discover Card number.");
				return;
			}
			break;
		case "Master":
			if( length != 16 ) 
			{
				checkoutcardwarning("Please enter a valid MasterCard number.");
				return;
			}
			var prefix = parseInt( cardNumber.substring(0,2));
			if( prefix < 51 || prefix > 55) 
			{
				checkoutcardwarning("Please enter a valid MasterCard Card number.");
				return;
			}
			break;
		case "Visa":
			if( length != 16 && length != 13 ) 
			{
				checkoutcardwarning("Please enter a valid Visa Card number.");
				return;
			}
			var prefix = parseInt( cardNumber.substring(0,1));
			if( prefix != 4 ) 
			{
				checkoutcardwarning("Please enter a valid Visa Card number.");
				return;
			}
			break;
	}
	// run the check digit algorithm
	if( !mod10( cardNumber ) ) 
	{ 		
		checkoutcardwarning("This is not a valid card number.");
		return false;
	}
	// check if entered date is already expired.
	if( expired( cardMonth, cardYear ) ) 
	{
		checkoutcardwarning("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
}
// Credit Card Validate Module //

// Search Bar //
function s_event(mode)
{
	switch(mode)
	{
		case 0:
			if(document.forms["s_form"].elements["stext"].value == "search")
			{
				document.forms["s_form"].elements["stext"].style.color = "#000000";
				document.forms["s_form"].elements["stext"].value = "";
			}
			break;
		case 1:
			if(!document.forms["s_form"].elements["stext"].value)
			{
				document.forms["s_form"].elements["stext"].style.color = "#898c8b";
				document.forms["s_form"].elements["stext"].value = "search";				
			}
			break;
	}
}
// Search Bar //