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 addBookmark() {
	if(navigator.appName != 'Microsoft Internet Explorer') {
		window.sidebar.addPanel("ibuynepa - My online shopping community",
		"http://www.ibuynepa.com/","");
	} else {
		window.external.AddFavorite("http://www.ibuynepa.com/", "ibuynepa - My online shopping community");
	}
}

function buildCart(pid, deal)
{
	var variation = '';
	var varid = '';
	if(document.getElementById("qty").value == "")
	{
		alert('Please select a quantity!');
		document.getElementById("qty").focus();
		return false;
	}
	
	if(document.getElementById("variation"))
	{
		if(document.getElementById("variation").value == "")
		{
			alert('Please select a product variation!');
			document.getElementById("variation").focus();
			return false;
		}
		variation = document.getElementById("variation").value;
		varid = document.getElementById("varid").value;
	}	
	
	if (req)
	{
		try
		{
			params = "pid="+pid+"&qty="+document.getElementById("qty").value+"&varid="+varid+"&var="+variation+"&deal="+deal;
			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,deal)
{
	if (req)
	{
		try
		{
			var varID = document.getElementById('varID'+pid).value;
			var variation = document.getElementById('var'+pid).value;
			var qty = document.getElementById('qty'+pid).value;
			params = "pid="+pid+"&qty="+qty+"&varid="+varID+"&var="+variation+"&deal="+deal;
			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;
	}
}

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 setChk(d)
{
	if(document.getElementById(d).checked)
	{
		document.getElementById(d).value=1;	
		$("#shipping_address_content2").slideUp();
	}
	else
	{
		document.getElementById(d).value=0;
		document.getElementById("ship_fname").value='';
		document.getElementById("ship_lname").value='';
		document.getElementById("ship_addr1").value='';
		document.getElementById("ship_addr2").value='';
		document.getElementById("ship_city").value='';
		document.getElementById("ship_state").value='';
		document.getElementById("ship_zip").value='';
		$("#shipping_address_content2").slideDown();
	}

}

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
}
