var req = createXMLHttpRequest();



function createXMLHttpRequest() 

{

	var xmlHttp;

	

	try

	{

		xmlHttp = new XMLHttpRequest();

	}

	catch(e)

	{

		// assume IE6 or older

		var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",

										"MSXML2.XMLHTTP.5.0",

										"MSXML2.XMLHTTP.4.0",

										"MSXML2.XMLHTTP.3.0",

										"MSXML2.XMLHTTP",

										"Microsoft.XMLHTTP");



		for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++) 

		{

			try 

			{ 

				xmlHttp = new ActiveXObject(XmlHttpVersions[i]);

			} 

			catch (e) {}

		}

	}



	if (!xmlHttp)

		alert("Error creating the XMLHttpRequest object.");

	else 

		return xmlHttp;

}



function buildCart(pid)

{

	if (req)

	{

		try

		{

			params = "pid="+pid+"&qty="+document.getElementById("qty").value;

			req.open("POST", "inc/buildCart.php", true);

			req.setRequestHeader("Content-Type", 

                                 "application/x-www-form-urlencoded");

			req.onreadystatechange = handleBuildCart;

			req.send(params);

		}

		catch(e)

		{

			alert(e.toString());

		}

	}

}



function handleBuildCart() 

{

	if (req.readyState == 4) 

	{

		if (req.status == 200) 

		{

			try

			{

				getBuildCart();

			}

			catch(e)

			{

				alert(e.toString());

			}

		}	 

		else

		{

			alert(req.statusText);   

		}

	}

}



function getBuildCart()

{

	var response = req.responseText;

	

	location.href='cart.php';

}



function updateQty(pid)

{

	if (req)

	{

		try

		{

			params = "pid="+pid+"&qty="+document.getElementById("qty"+pid).value;

			req.open("POST", "inc/updateQty.php", true);

			req.setRequestHeader("Content-Type", 

                                 "application/x-www-form-urlencoded");

			req.onreadystatechange = handleUpdateQty;

			req.send(params);

		}

		catch(e)

		{

			alert(e.toString());

		}

	}

}



function handleUpdateQty() 

{

	if (req.readyState == 4) 

	{

		if (req.status == 200) 

		{

			try

			{

				getUpdateQty();

			}

			catch(e)

			{

				alert(e.toString());

			}

		}	 

		else

		{

			alert(req.statusText);   

		}

	}

}



function getUpdateQty()

{

	var response = req.responseText;

	

	location.href='cart.php';

}



function removeCartItem(pid)

{

	if (req)

	{

		try

		{

			params = "pid="+pid;

			req.open("POST", "inc/removeCartItem.php", true);

			req.setRequestHeader("Content-Type", 

                                 "application/x-www-form-urlencoded");

			req.onreadystatechange = handleRemoveCartItem;

			req.send(params);

		}

		catch(e)

		{

			alert(e.toString());

		}

	}

}



function handleRemoveCartItem() 

{

	if (req.readyState == 4) 

	{

		if (req.status == 200) 

		{

			try

			{

				getRemoveCartItem();

			}

			catch(e)

			{

				alert(e.toString());

			}

		}	 

		else

		{

			alert(req.statusText);   

		}

	}

}



function getRemoveCartItem()

{

	var response = req.responseText;

	

	location.href='cart.php';

}



function chkFields()

{

	var chkRd = -1;

	if(document.getElementById("FirstName").value == '')

	{

		alert('Please enter your first name.');

		document.getElementById("FirstName").focus();

		return false;

	}

	

	if(document.getElementById("LastName").value == '')

	{

		alert('Please enter your last name.');

		document.getElementById("LastName").focus();

		return false;

	}

	

	if(document.getElementById("Address1").value == '')

	{

		alert('Please enter your street address.');

		document.getElementById("Address1").focus();

		return false;

	}

	

	if(document.getElementById("City").value == '')

	{

		alert('Please enter your city.');

		document.getElementById("City").focus();

		return false;

	}

	

	if(document.form1.State.value == '')

	{

		alert('Please select your state.');

		document.form1.State.focus();

		return false;

	}

	

	if(document.getElementById("Zipcode").value == '')

	{

		alert('Please enter your Zip Code.');

		document.getElementById("Zipcode").focus();

		return false;

	}

	

	if(document.getElementById("Phone").value == '')

	{

		alert('Please enter your phone number.');

		document.getElementById("Phone").focus();

		return false;

	}

	

	if(document.getElementById("Email").value == '')

	{

		alert('Please enter your email address.');

		document.getElementById("Email").focus();

		return false;

	}

	

	for(i=0;i<document.getElementsByName("shipd").length;i++)

	{

		if(document.getElementsByName("shipd")[i].checked)

		{

			chkRd=1

		}

	}

	

	if(chkRd == -1)

	{

		alert('Please select a shipping destination.')

		return false;

	}

if ( document.form1.tos.checked == false )
    {
        alert ( "You must accept the Terms of Service." );
        return false;
    }	

}



function chkFields2()

{

	

	if(document.getElementById("FirstName").value == '')

	{

		alert('Please enter your first name.');

		document.getElementById("FirstName").focus();

		return false;

	}

	

	if(document.getElementById("LastName").value == '')

	{

		alert('Please enter your last name.');

		document.getElementById("LastName").focus();

		return false;

	}

	

	if(document.getElementById("Address1").value == '')

	{

		alert('Please enter your street address.');

		document.getElementById("Address1").focus();

		return false;

	}

	

	if(document.getElementById("City").value == '')

	{

		alert('Please enter your city.');

		document.getElementById("City").focus();

		return false;

	}

	

	if(document.form1.State.value == '')

	{

		alert('Please select your state.');

		document.form1.State.focus();

		return false;

	}

	

	if(document.getElementById("Zipcode").value == '')

	{

		alert('Please enter your Zip Code.');

		document.getElementById("Zipcode").focus();

		return false;

	}

	

	if(document.getElementById("Phone").value == '')

	{

		alert('Please enter your phone number.');

		document.getElementById("Phone").focus();

		return false;

	}

}



function chkFields3()

{

	if(document.getElementById("CardNumber").value == '')

	{

		alert('Please enter your credit card number.');

		document.getElementById("CardNumber").focus();

		return false;

	}

	

	if(Mod10(document.getElementById("CardNumber").value))

	{

		return true;

	}

	else

	{

		return false;

	}

	

	if(document.getElementById("CardType").value == '')

	{

		alert('Please select a card type.');

		document.getElementById("CardType").focus();

		return false;

	}

	

	if(document.getElementById("ExpMon").value == '')

	{

		alert('Please enter your experation month.');

		document.getElementById("ExpMon").focus();

		return false;

	}

	

	if(document.getElementById("ExpYear").value == '')

	{

		alert('Please enter your experation year.');

		document.getElementById("ExpYear").focus();

		return false;

	}

	

	/*if(document.getElementById("cvv2").value == '')

	{

		alert('Please select your security code.');

		document.getElementById("cvv2").focus();

		return false;

	}*/

}



function Mod10(ccNumb) 

{

	var valid = "0123456789"  

	var len = ccNumb.length;  // The length of the submitted cc number

	var iCCN = parseInt(ccNumb);  // integer of ccNumb

	var sCCN = ccNumb.toString();  // string of ccNumb

	sCCN = sCCN.replace (/^\s+|\s+$/g,'');  // strip spaces

	var iTotal = 0;  // integer total set at zero

	var bNum = true;  // by default assume it is a number

	var bResult = false;  // by default assume it is NOT a valid cc

	var temp;  // temp variable for parsing string

	var calc;  // used for calculation of each digit



	// Determine if the ccNumb is in fact all numbers

	for (var j=0; j<len; j++) 

	{

		temp = "" + sCCN.substring(j, j+1);

		if (valid.indexOf(temp) == "-1"){bNum = false;}

	}



	// if it is NOT a number, you can either alert to the fact, or just pass a failure

	if(!bNum)

	{

		/*alert("Not a Number");*/bResult = false;

	}



	// Determine if it is the proper length 

	if((len == 0)&&(bResult))

	{  

		// nothing, field is blank AND passed above # check

		bResult = false;

	} 

	else

	{  

		// ccNumb is a number and the proper length - let's see if it is a valid card number

		if(len >= 15)

		{  // 15 or 16 for Amex or V/MC

			for(var i=len;i>0;i--)

			{  // LOOP throught the digits of the card

				calc = parseInt(iCCN) % 10;  // right most digit

				calc = parseInt(calc);  // assure it is an integer

				iTotal += calc;  // running total of the card number as we loop - Do Nothing to first digit

			    i--;  // decrement the count - move to the next digit in the card

			    iCCN = iCCN / 10;                               // subtracts right most digit from ccNumb

			    calc = parseInt(iCCN) % 10 ;    // NEXT right most digit

			    calc = calc *2;                                 // multiply the digit by two

			    // Instead of some screwy method of converting 16 to a string and then parsing 1 and 6 and then adding them to make 7,

			    // I use a simple switch statement to change the value of calc2 to 7 if 16 is the multiple.

			    switch(calc)

				{

					case 10: calc = 1; break;       //5*2=10 & 1+0 = 1

			        case 12: calc = 3; break;       //6*2=12 & 1+2 = 3

			        case 14: calc = 5; break;       //7*2=14 & 1+4 = 5

			        case 16: calc = 7; break;       //8*2=16 & 1+6 = 7

			        case 18: calc = 9; break;       //9*2=18 & 1+8 = 9

			        default: calc = calc;           //4*2= 8 &   8 = 8  -same for all lower numbers

			    }                                               

				iCCN = iCCN / 10;  // subtracts right most digit from ccNum

				iTotal += calc;  // running total of the card number as we loop

			}  // END OF LOOP

			if ((iTotal%10)==0)

			{  // check to see if the sum Mod 10 is zero

				bResult = true;  // This IS (or could be) a valid credit card number.

			} 

			else 

			{

				bResult = false;  // This could NOT be a valid credit card number

			}

		}

	}

	

	// change alert to on-page display or other indication as needed.

	if(bResult) 

	{

		//alert("This IS a valid Credit Card Number!");

	}

	

	if(!bResult)

	{

		alert("This is NOT a valid Credit Card Number!");

	}

	

	return bResult; // Return the results

}
