function createAjax()
{
	var xmlHttp;
	try
	{    // Firefox, Opera 8.0+, Safari    
		xmlHttp=new XMLHttpRequest();    
	}
	catch (e)
	{    // Internet Explorer    
		try
		{      
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");      
		}
		catch (e)
		{      
			try
			{        
				xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");        
			}
			catch (e)
			{        
				alert("Your browser does not support AJAX!");        
				return false;        
			}      
		}    
	}  
	return xmlHttp
}

function addToCart(variantID, cart)
{
	var xmlHttp = createAjax();
	
	xmlHttp.onreadystatechange=function()
	{
		if(xmlHttp.readyState==4)
		{
			if (cart == 'mini-cart')
				refreshMiniCart();
			else if (cart == 'shopping-cart')
				refreshShoppingCart();
			
		}
	}
	xmlHttp.open("GET","ajax/addToCart.php?variantID="+variantID,true);
	xmlHttp.send(null);			
}

function setCartQuantity(variantID, quantity, cart)
{
	var xmlHttp = createAjax();
	
	xmlHttp.onreadystatechange=function()
	{
		if(xmlHttp.readyState==4)
		{
			if (cart == 'mini-cart')
				refreshMiniCart();
			else if (cart == 'shopping-cart')
				refreshShoppingCart();
			}
	}
	xmlHttp.open("GET","ajax/setCartQuantity.php?variantID="+variantID+"&quantity="+quantity,true);
	xmlHttp.send(null);			
}

function getPanel(divID, panel)
{
	var xmlHttp = createAjax();
	
	xmlHttp.onreadystatechange=function()
	{
		if(xmlHttp.readyState==4)
		{
			document.getElementById(divID).innerHTML = xmlHttp.responseText;
		}
	}
	xmlHttp.open("GET","ajax/getPanel.php?panel="+panel,true);
	xmlHttp.send(null);
	
}

function doAjaxLogin(user, pass)
{
	var xmlHttp = createAjax();
	
	xmlHttp.onreadystatechange=function()
	{
		if(xmlHttp.readyState==4)
		{
			if (xmlHttp.responseText == 'true')
			{	
				getPanel('checkout-login', 'confirm-shipping');
				refreshHeaderLogin();
			}
			else	
			{
				getPanel('checkout-login', 'login-failed');	
			}

		}
	}
	xmlHttp.open("POST","ajax/doAjaxLogin.php",true);
	xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
	xmlHttp.send('user='+user+'&pass='+pass+'&login=true');
	
}	

function refreshHeaderLogin()
{
	var xmlHttp = createAjax();
	
	xmlHttp.onreadystatechange=function()
	{
		if(xmlHttp.readyState==2)
		{
			document.getElementById('header-login').innerHTML = "<img src='images/ajax-loader.gif'>";
		}

		if(xmlHttp.readyState==4)
		{
			document.getElementById('header-login').innerHTML = xmlHttp.responseText;
		}
	}
	xmlHttp.open("GET","ajax/getHeaderLogin.php",true);
	xmlHttp.send(null);
	
}	


function refreshShoppingCart()
{
	var xmlHttp = createAjax();
	
	xmlHttp.onreadystatechange=function()
	{
		if(xmlHttp.readyState==2)
		{
			document.getElementById('shopping-cart').innerHTML = "<img src='images/ajax-loader.gif'>";
		}

		if(xmlHttp.readyState==4)
		{
			document.getElementById('shopping-cart').innerHTML = xmlHttp.responseText;
		}
	}
	xmlHttp.open("GET","ajax/getShoppingCart.php",true);
	xmlHttp.send(null);
	
}		

function refreshInvoice(invoiceID)
{
	var xmlHttp = createAjax();
	
	xmlHttp.onreadystatechange=function()
	{
		if(xmlHttp.readyState==2)
		{
			document.getElementById('shopping-cart').innerHTML = "<img src='images/ajax-loader.gif'>";
		}

		if(xmlHttp.readyState==4)
		{
			document.getElementById('shopping-cart').innerHTML = xmlHttp.responseText;
		}
	}
	xmlHttp.open("GET","ajax/getInvoice.php?invoiceID="+invoiceID,true);
	xmlHttp.send(null);
	
}

function refreshMiniCart()
{
	var xmlHttp = createAjax();
	
	xmlHttp.onreadystatechange=function()
	{
		if(xmlHttp.readyState==2)
		{
			document.getElementById('mini-cart').innerHTML = "<img src='images/ajax-loader.gif'>";
		}

		if(xmlHttp.readyState==4)
		{
			document.getElementById('mini-cart').innerHTML = xmlHttp.responseText;
		}
	}
	xmlHttp.open("GET","ajax/getMiniCart.php",true);
	xmlHttp.send(null);
	
}

function selectVariant(variantID) 
{
	var xmlHttp = createAjax();
	
	xmlHttp.onreadystatechange=function()
	{
		if(xmlHttp.readyState==4)
		{
			var xmlDoc=xmlHttp.responseXML.documentElement;
			document.getElementById('variantPrice').innerHTML = '$' + xmlDoc.getElementsByTagName("price")[0].childNodes[0].nodeValue;
			document.getElementById('variantDescription').innerHTML = xmlDoc.getElementsByTagName("description")[0].childNodes[0].nodeValue;
			document.getElementById('variantImageLink').title = xmlDoc.getElementsByTagName("productname")[0].childNodes[0].nodeValue;
			
			if (xmlDoc.getElementsByTagName("thumbnail")[0].childNodes[0].nodeValue == 'true')
			{
				document.getElementById('variantImage').src='products/thumbs/'+variantID+'.jpg';
				document.getElementById('variantImageLink').href='products/large/'+variantID+'.jpg';
			}	
			else
			{
				document.getElementById('variantImage').src='products/thumbs/no-image.jpg';
				document.getElementById('variantImageLink').src='products/thumbs/no-image.jpg';
			}	
		}
	}
	xmlHttp.open("GET","ajax/getVariantInfo.php?variantID="+variantID,true);
	xmlHttp.send(null);
	
	
	
}	

function confirmShipping()
{
	var xmlHttp = createAjax();

	var lists = document.getElementById("confirm-shipping");
	var postvars = '';
	for (var i = 0; i < lists.length; i++) 
	{    
		if (i > 0)
			postvars += "&";
		if (lists[i].type == 'text' || lists[i].type == 'select-one')
			postvars += lists[i].name + "=" + encodeURI(lists[i].value);

	}
	
	xmlHttp.onreadystatechange=function()
	{
		if(xmlHttp.readyState==2)
		{
			document.getElementById('shopping-cart').innerHTML = "<img src='images/ajax-loader.gif'>";
		}

		if(xmlHttp.readyState==4)
		{
			if (xmlHttp.responseText == 'true')
				win
			else
			{
				refreshInvoice(xmlHttp.responseText);
				document.getElementById('checkout-login').innerHTML = '';
			}	
		}

	}
	
	xmlHttp.open("POST","ajax/createInvoice.php",true);
	xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
	xmlHttp.send(postvars);

}

function newUser()
{
	var xmlHttp = createAjax();

	var lists = document.getElementById("new-account");
	var postvars = '';
	for (var i = 0; i < lists.length; i++) 
	{    
		if (i > 0)
			postvars += "&";
		if (lists[i].type == 'text' || lists[i].type == 'password' || lists[i].type == 'select-one')
			postvars += lists[i].name + "=" + encodeURI(lists[i].value);
		
		if (lists[i].name == 'newuser_email')
			var user = lists[i].value; 
		if (lists[i].name == 'newuser_password')
			var pass = lists[i].value; 

	}
	
	xmlHttp.onreadystatechange=function()
	{
		if(xmlHttp.readyState==2)
		{
			document.getElementById('checkout-login').innerHTML = "<img src='images/ajax-loader.gif'>";
		}

		if(xmlHttp.readyState==4)
		{
			if (xmlHttp.responseText == 'true')
				doAjaxLogin(user, pass);
			else
				document.getElementById('checkout-login').innerHTML = xmlHttp.responseText;
		}

	}
	
	xmlHttp.open("POST","ajax/newUser.php",true);
	xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
	xmlHttp.send(postvars);

}

function checkEmail()
{
		var xmlHttp = createAjax();
	
		xmlHttp.onreadystatechange=function()
		{
			if(xmlHttp.readyState==4)
			{
				// alert(xmlHttp.responseText);	
				 if (xmlHttp.responseText == 'true')
				 {	 
					 document.getElementById('newuser_email').valid = 'true';
					 document.getElementById('newuser-status').innerHTML = '';
					 document.getElementById('newuser_email').style.border ='solid 1px black';
				 }	 
				 else
				 {
					 document.getElementById('newuser_email').valid = 'false';
					 document.getElementById('newuser-status').innerHTML = 'This Email address is already connected to an accounnt. <br /> Click Here to [ login ] or if you have forgotten you password, click here [ forgot password ]';
					 document.getElementById('newuser_email').style.border ='solid 1px red';
		
				 }	 
			}
		}
		xmlHttp.open("GET","ajax/checkEmail.php?email="+ document.getElementById('newuser_email').value,true);	
		xmlHttp.send(null);
}
		
function checkNewUser()
{
	// VALIDATION TESTS
	var testresult = true;
	document.getElementById('newuser-status').innerHTML = '';
	
	// EMAIL
	if (document.getElementById('newuser_email').value == '' || document.getElementById('newuser_email').value.indexOf('@') < 1  || document.getElementById('newuser_email').value.indexOf('.') < 3 || document.getElementById('newuser_email').valid == false)
	{
		document.getElementById('newuser-status').innerHTML += 'Please enter a valid email address.<br />';
		document.getElementById('newuser_email').style.border ='solid 1px red';
		testresult = false;
	}
	else
	{
		document.getElementById('newuser_email').style.border ='solid 1px black';
	}
		
	// PASSWORD
	if (document.getElementById('newuser_password').value.length < 5)
	{
		document.getElementById('newuser-status').innerHTML += 'Please enter a password greater than 5 characters.<br />';
		document.getElementById('newuser_password').style.border ='solid 1px red';
		testresult = false;
	}
	else
	{
		document.getElementById('newuser_password').style.border ='solid 1px black';
	}

	// PASSWORD CONFIRM
	if (document.getElementById('newuser_password').value != document.getElementById('newuser_passconfirm').value)
	{
		document.getElementById('newuser-status').innerHTML += 'Your passwords do not match.<br />';
		document.getElementById('newuser_passconfirm').style.border ='solid 1px red';
		testresult = false;
	}
	else
	{
		document.getElementById('newuser_passconfirm').style.border ='solid 1px black';
	}	

	// FIRSTNAME
	if (document.getElementById('newuser_firstname').value == '')
	{
		document.getElementById('newuser-status').innerHTML += 'Please enter a valid Firstname.<br />';
		document.getElementById('newuser_firstname').style.border ='solid 1px red';
		testresult = false;
	}
	else
	{
		document.getElementById('newuser_firstname').style.border ='solid 1px black';
	}

	// LASTNAME
	if (document.getElementById('newuser_lastname').value == '')
	{
		document.getElementById('newuser-status').innerHTML += 'Please enter a valid Firstname.<br />';
		document.getElementById('newuser_lastname').style.border ='solid 1px red';
		testresult = false;
	}
	else
	{
		document.getElementById('newuser_lastname').style.border ='solid 1px black';
	}

	// ADDRESS
	if (document.getElementById('newuser_address').value == '')
	{
		document.getElementById('newuser-status').innerHTML += 'Please enter a valid Address.<br />';
		document.getElementById('newuser_address').style.border ='solid 1px red';
		testresult = false;
	}
	else
	{
		document.getElementById('newuser_address').style.border ='solid 1px black';
	}
	
	// SUBURB
	if (document.getElementById('newuser_suburb').value == '')
	{
		document.getElementById('newuser-status').innerHTML += 'Please enter a valid Suburb.<br />';
		document.getElementById('newuser_suburb').style.border ='solid 1px red';
		testresult = false;
	}
	else
	{
		document.getElementById('newuser_suburb').style.border ='solid 1px black';
	}
		
	// POSTCODE
	if (document.getElementById('newuser_postcode').value.length < 4)
	{
		document.getElementById('newuser-status').innerHTML += 'Please enter a valid Postcode.<br />';
		document.getElementById('newuser_postcode').style.border ='solid 1px red';
		testresult = false;
	}
	else
	{
		document.getElementById('newuser_postcode').style.border ='solid 1px black';
	}	

	// STATE
	if (document.getElementById('newuser_state').value == 'INT')
	{
		alert("Currently Geckos do not ship internationally, but if you would like to complete your order, Geckos may follow up the order via email.");
	}
	
	// WORK PHONE
	if (document.getElementById('newuser_workPhone').value.length < 7)
	{
		document.getElementById('newuser-status').innerHTML += 'Please enter a valid Work Hours phone number.<br />';
		document.getElementById('newuser_workPhone').style.border ='solid 1px red';
		testresult = false;
	}
	else
	{
		document.getElementById('newuser_workPhone').style.border ='solid 1px black';
	}
	
	if (testresult)
	{
		newUser();
	}
}


