var updateCartxmlHttp;
var viewCartxmlHttp;
var updateCheckoutxmlHttp;
var updateContactxmlHttp;
var submitApprovalxmlHttp;
var scrollID = 0;
var shoppingCartCoords = -408;

//Preload Roll-over Images
home = new Image(100,30);
home.src = "images/b_o_home.gif";

sales = new Image(100,30);
sales.src = "images/b_o_sales.png";

rentals = new Image(100,30);
rentals.src = "images/b_o_rentals.png";

parts = new Image(100,30);
parts.src = "images/b_o_parts.png";

install = new Image(100,30);
install.src = "images/b_o_install.png";

service = new Image(100,30);
service.src = "images/b_o_service.png";

contact = new Image(100,30);
contact.src = "images/b_o_contact.gif";

//Copies ship to values to bill to
function copyShipTo(elem){
	if(elem.checked){
		var shipTo = document.getElementById('shipto');
		var shipToElements = shipTo.getElementsByTagName('input');
		for(var i = 0; i < shipToElements.length; i++){
			var selectedElem = document.getElementById("b"+shipToElements[i].name.substring(1));
			selectedElem.value = shipToElements[i].value;
		}
	}
	else
	{
		var shipTo = document.getElementById('shipto');
		var shipToElements = shipTo.getElementsByTagName('input');
		for(var i = 0; i < shipToElements.length; i++){
			var selectedElem = document.getElementById("b"+shipToElements[i].name.substring(1));
			selectedElem.value = "";
		}
	}
}

//Inserts an input field and makes the field no longer "clickable"
function createQTYInput(id,c){

	var elem = document.getElementById("qty_"+id);
	var go_checkout = document.getElementById("go_checkout");
	
	var currentQTY = elem.innerHTML;
	
	elem.onclick = null;
	elem.innerHTML = "<input class=\"shoppingCartInput\" id=\"input_"+id+"\" value=\""+currentQTY+"\" onchange=\"updateCheckout('"+id+"',this.value)\" onblur=\"updateCheckout('"+id+"',this.value)\" onkeyup=\"CheckNumeric(this);updateTotal('"+id+"', '"+c+"')\" class=\"qty\" maxlength=\"4\" size=\"1\" type=\"text\" name="+id+">";
	
	var inputNew = document.getElementById("input_"+id);
	inputNew.select();
	
	
	go_checkout.innerHTML = "update shoppingcart »";
	go_checkout.removeAttribute('onclick');
}


//Updates the values of the checkout screen during entry
function updateTotal(id, c){
	var price = parseFloat(c);
	var QTYelem = document.getElementById("input_"+id);
	var TOTALelem = document.getElementById("total_"+id);
	var SUBTOTALelem = document.getElementById("sub_total");
	var total_classes = getElementsByClass("prod_totals");	
	var sub_total = 0;
	
	TOTALelem.innerHTML = "$"+CurrencyFormatted(QTYelem.value*price);
	
	for(var i=0;i<total_classes.length;i++){
		sub_total += Math.round(parseFloat(total_classes[i].innerHTML.substring(1))*100)/100;
	}
	
	SUBTOTALelem.innerHTML = "$"+CurrencyFormatted(sub_total);

}


function CurrencyFormatted(amount)
{
	var i = parseFloat(amount);
	if(isNaN(i)) { i = 0.00; }
	var minus = '';
	if(i < 0) { minus = '-'; }
	i = Math.abs(i);
	i = parseInt((i + .005) * 100);
	i = i / 100;
	s = new String(i);
	if(s.indexOf('.') < 0) { s += '.00'; }
	if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
	s = minus + s;
	return s;
}


//Make it so only numbers can be entered into number fields
function CheckNumeric(entry)
{
	var numeric = /^[0-9]*$/; 
    entry.value = entry.value.replace(/[^0-9]/g,"");
}


//Fetches all elements by their class attribute
function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp('(^|\\\\s)'+searchClass+'(\\\\s|$)');
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

//Begin interval to scroll open the shopping cart
function openShoppingCart()
{
	scrollID = window.setInterval("scrollOpenShoppingCart()", 4);
}

//Begin interval to scoll closed the shopping cart
function closeShoppingCart()
{
	scrollID = window.setInterval("scrollCloseShoppingCart()", 4);
}

//Scroll open the javascript shopping cart
function scrollOpenShoppingCart(){
	if(shoppingCartCoords >=0)
	{
	scrollID = window.clearInterval(scrollID);
	scrollID = null;
	document.getElementById('viewShoppingCartButton').style.background = "transparent url(images/b_shoppingcart_close.gif) no-repeat scroll center left";
	}
	else
	{
	window.shoppingCartCoords += 12;
	document.getElementById('viewShoppingCart').style.left = window.shoppingCartCoords +"px";
	}
}

//Scrolls closed the javascript shopping cart
function scrollCloseShoppingCart(){
	
	if(window.shoppingCartCoords <= -408)
	{
	document.getElementById('viewShoppingCartButton').onclick = function() {viewCart();};
	document.getElementById('viewShoppingCartButton').style.background = "transparent url(images/b_shoppingcart_open.gif) no-repeat scroll center left";

	scrollID = window.clearInterval(scrollID);
	scrollID = null;
	}
	else
	{
	shoppingCartCoords -= 12;
	document.getElementById('viewShoppingCart').style.left = window.shoppingCartCoords +"px";
	}
}

//Use AJAX to update the shopping car values
function updateCart(pid, qty){ 
updateCartxmlHttp=GetXmlHttpObject();
if (updateCartxmlHttp==null)
 {
 alert ("Browser does not support HTTP Request");
 return;
 }
var url="include/updateCart.php";
url=url+"?";
url=url+"pid="+pid;
url=url+"&qty="+qty;
updateCartxmlHttp.onreadystatechange=updateCartStateChanged;
updateCartxmlHttp.open("GET",url,true);
updateCartxmlHttp.send(null);
}

//When AJAX call completes return toolbox to normal view and update shopping cart if visible
function updateCartStateChanged(){
if (updateCartxmlHttp.readyState==4 || updateCartxmlHttp.readyState=="complete"){ 
 if(document.getElementById('addToCart_wrapper')){
 closeDiv('addToCart_wrapper');
 openDiv('toolOptions');
 }
 
 if(shoppingCartCoords>-408)
 {
 viewCart();
 }
 else
 {
 document.getElementById("successBox").innerHTML=updateCartxmlHttp.responseText;
 document.getElementById("successBox").style.display="block";
 window.setTimeout("closeDiv('successBox')", 3000);
 }
 } 
}



//Use AJAX to update session variables for shopping cart
function updateCheckout(pid, qty){ 
updateCheckoutxmlHttp=GetXmlHttpObject();
if (updateCheckoutxmlHttp==null)
 {
 alert ("Browser does not support HTTP Request");
 return;
 }
var url="updateCheckout.php";
url=url+"?";
url=url+"pid="+pid;
url=url+"&qty="+qty;
updateCheckoutxmlHttp.onreadystatechange=updateCheckoutStateChanged;
updateCheckoutxmlHttp.open("GET",url,true);
updateCheckoutxmlHttp.send(null);
}

//Recreate checkout after AJAX call completes
function updateCheckoutStateChanged(){
if (updateCheckoutxmlHttp.readyState==4 || updateCheckoutxmlHttp.readyState=="complete"){ 
 if(document.getElementById('content_wrapper')){
 alert();
	document.getElementById('content_wrapper').innerHTML=updateCheckoutxmlHttp.responseText;
 }
 } 
}

//Use AJAX to submit contact details via post to checkout class
function updateContact(){ 
updateContactxmlHttp=GetXmlHttpObject();

if (updateContactxmlHttp==null){
	alert ("Browser does not support HTTP Request");
	return;
}

var url="updateCheckout.php";
var formvalues = document.getElementsByTagName('input');
var params = "";
var error = false;

for(var i = 0; i < formvalues.length ; i++)	{
	if(formvalues[i].value.length == 0 || formvalues[i].value==null){
	formvalues[i].style.border = "2px solid red";
	error = true;
	}else{
	params += formvalues[i].name+"="+formvalues[i].value+"&";
	formvalues[i].style.border = "1px solid black";
	}
}

if(!error){
params += "form=contactInfo";

updateContactxmlHttp.onreadystatechange=updateContactStateChanged;
updateContactxmlHttp.open("POST",url,true);

updateContactxmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
updateContactxmlHttp.setRequestHeader("Content-length", params.length);
updateContactxmlHttp.setRequestHeader("Connection", "close");

updateContactxmlHttp.send(params);
}
}

//Recreate checkout after AJAX call completes
function updateContactStateChanged(){
if (updateContactxmlHttp.readyState==4 || updateContactxmlHttp.readyState=="complete"){ 
 if(document.getElementById('content_wrapper')){
	document.getElementById('content_wrapper').innerHTML=updateContactxmlHttp.responseText;
 }
 } 
}

//Use AJAX to submit contact details via post to checkout class
function submitApproval(){ 
submitApprovalxmlHttp=GetXmlHttpObject();

if (submitApprovalxmlHttp==null){
	alert ("Browser does not support HTTP Request");
	return;
}

var url="updateCheckout.php";
var params = "approval=true";

submitApprovalxmlHttp.onreadystatechange=submitApprovalStateChanged;
submitApprovalxmlHttp.open("POST",url,true);

submitApprovalxmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
submitApprovalxmlHttp.setRequestHeader("Content-length", params.length);
submitApprovalxmlHttp.setRequestHeader("Connection", "close");

submitApprovalxmlHttp.send(params);
}

//Recreate checkout after AJAX call completes
function submitApprovalStateChanged(){
if (submitApprovalxmlHttp.readyState==4 || submitApprovalxmlHttp.readyState=="complete"){ 
 if(document.getElementById('content_wrapper')){
	document.getElementById('content_wrapper').innerHTML=submitApprovalxmlHttp.responseText;
 }
 } 
}

//Uses AJAX to fetch cart HTML
function viewCart(){ 
viewCartxmlHttp=GetXmlHttpObject();

if (viewCartxmlHttp==null)
 {
 alert ("Browser does not support HTTP Request");
 return;
 }
var url="include/viewCart.php";
viewCartxmlHttp.onreadystatechange=viewCartStateChanged;
viewCartxmlHttp.open("GET",url,true);
viewCartxmlHttp.send(null);
}

//Inject HTML fetched by AJAX for shopping cart display
function viewCartStateChanged(){
if (viewCartxmlHttp.readyState==4 || viewCartxmlHttp.readyState=="complete")
 { 
 document.getElementById("viewShoppingCart").innerHTML=viewCartxmlHttp.responseText;
if(shoppingCartCoords<=-408)
 {
 openShoppingCart();
 }
}


}

function GetXmlHttpObject()
{
var xmlHttp=null;
try
 {
 // Firefox, Opera 8.0+, Safari
 xmlHttp=new XMLHttpRequest();
 }
catch (e)
 {
 //Internet Explorer
 try
  {
  xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  }
 catch (e)
  {
  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
 }
return xmlHttp;
}

//Validate Contact Info and submit
function submitContactInfo(){
}

//Updates price based on value
function updatePrice(elem, c)
{
	var qty = elem.value;
	var total_cost = Math.round(qty*c*100)/100;
	
	document.getElementById('cost').innerHTML = "$"+total_cost;
}


function openDiv(id)
{
	var div = document.getElementById(id);
	div.style.display = "block";
}

function closeDiv(id)
{
	var div = document.getElementById(id);
	div.style.display = "none";
}

function overImage(elem)
{	
if(elem.id=="home" || elem.id=="contact")
{
	elem.style.background = "transparent url(images/b_"+elem.id+".gif) repeat scroll 0% 0%";
}
else
{
	elem.style.background = "transparent url(images/b_"+elem.id+".gif) repeat scroll 0% 0%";
}
elem.style.color = "#D1CF9E";
}

function outImage(elem)
{	
if(elem.id=="home" || elem.id=="contact")
{
	elem.style.background = "transparent url(images/b_"+elem.id+".gif) repeat scroll 0% 0%";
}
else
{
	elem.style.background = "transparent url(images/b_"+elem.id+".gif) repeat scroll 0% 0%";
}
	elem.style.color = "#D1CF9E";
}