
var returnText = '';
var returnID = '';

// Get the HTTP Object
function getHTTPObject(){

	if (window.ActiveXObject){ 
		return new ActiveXObject("Microsoft.XMLHTTP");
	}else if (window.XMLHttpRequest){ 
		return new XMLHttpRequest();
	}else {
		alert("Your browser does not support AJAX.");
		return null;
	}
}

// Implement business logic
function doWork(url, callbackFunctionName, caller){

	//returnText = caller.innerHTML;
	//returnID = caller.id;
	
	//caller.innerHTML = 'please wait';
	
	var callbackFunction = eval('this.' + callbackFunctionName);
	
	httpObject = getHTTPObject();

	if (httpObject != null) {
		httpObject.open("GET", url, true);
		httpObject.send(null);
		httpObject.onreadystatechange = callbackFunction;
	}
}

/*
* 0 = uninitialized
* 1 = loading
* 2 = loaded
* 3 = interactive
* 4 = complete
*/

// Change the value of the outputText field
this.updateQuantity = function(){

	if(httpObject.readyState == 4){
	
		var responseArray = httpObject.responseText.split(';');
	
		if(responseArray[0] != 'error'){
		
			var orderid = responseArray[0];
			var quantityDisplay = responseArray[1];
			var price = responseArray[2];
			var quantity = responseArray[3];
			var minOrder = responseArray[4];
			
			var creditDisplayArray = responseArray[5];
			var showLessCredits = responseArray[6];
			var atMaxCredits = responseArray[7];
			var cartTooSmall = responseArray[8];
			
			var loggedIn = responseArray[9];
			var validated = responseArray[10];
			
			var availableCredits = responseArray[11];
				
			document.getElementById('orderQuantity-' + orderid).innerHTML = quantityDisplay;
			document.getElementById('orderPrice-' + orderid).innerHTML = "$" + price;
			
			if(parseInt(quantity) == parseInt(minOrder)){
			
				document.getElementById('orderQuantityLessShow-' + orderid).style.display = 'none';
				document.getElementById('orderQuantityLessNoShow-' + orderid).style.display = 'inline';
				document.getElementById('orderQuantityLessAtMin-' + orderid).style.display = 'inline';
				
			}else if(parseInt(quantity) > parseInt(minOrder)){
			
				document.getElementById('orderQuantityLessShow-' + orderid).style.display = 'inline';
				document.getElementById('orderQuantityLessNoShow-' + orderid).style.display = 'none';
				document.getElementById('orderQuantityLessAtMin-' + orderid).style.display = 'none';
			}
			
			toggleCreditShow(orderid, availableCredits, creditDisplayArray, showLessCredits, atMaxCredits, cartTooSmall, loggedIn, validated);
			
		}else{
			var errorMessage = responseArray[1];
		}
	}       
	
	//document.getElementById(returnID).innerHTML = returnText;
}

this.updateCredits = function(){

	if(httpObject.readyState == 4){
	
		var responseArray = httpObject.responseText.split(';');
		
		var orderid = responseArray[0];
		var creditDisplayArray = responseArray[1];
		var creditsUsed = responseArray[2];
		
		var showLessCredits = responseArray[3];
		var atMaxCredits = responseArray[4];
		var cartTooSmall = responseArray[5];
		
		var loggedIn = responseArray[6];
		
		var availableCredits = responseArray[7];
		
		toggleCreditShow(orderid, availableCredits, creditDisplayArray, showLessCredits, atMaxCredits, cartTooSmall, loggedIn, 1);
	}
	
	//document.getElementById(returnID).innerHTML = returnText;
}

this.addPromoCode = function(){

	if(httpObject.readyState == 4){
	
		var responseArray = httpObject.responseText.split(';');
	
		if(responseArray[0] != 'error'){
			
			if(responseArray[0] == 'message'){
				document.getElementById('promoMessage-' + responseArray[1]).innerHTML = '<br>' + responseArray[2];
			}else{
			
				var orderid = responseArray[0];
				var promoDisplay = responseArray[1];
				var total = responseArray[2];
				var promoCode = responseArray[3];
			
				document.getElementById('promoMessage-' + orderid).innerHTML = '';
			
				document.getElementById('promoDisplayInput-' + orderid).style.display = 'none';
				
				if(total > 0){
					document.getElementById('orderPrice-' + orderid).innerHTML = "$" + total;
				}
				
				document.getElementById('promoDisplay-' + orderid).style.display = 'inline';
				document.getElementById('promoDisplay-' + orderid).innerHTML = promoDisplay + "<br><span style='font-size:0.6em;'>(promo " + promoCode + ")</span>";
			}
		}
	}
	
	//document.getElementById(returnID).innerHTML = returnText;
}

function toggleCreditShow(orderid, availableCredits, creditDisplayArray, showLessCredits, atMaxCredits, cartTooSmall, loggedIn, validated){
	
	if(creditDisplayArray != ''){
	
		var orderCreditDisplays = creditDisplayArray.split('|');
	
		for(var i=0; i<orderCreditDisplays.length; i++){
		
			var ocdValues = orderCreditDisplays[i].split(':');
			var oid = ocdValues[0];
			var display = ocdValues[1];
			
			document.getElementById('orderCredits-' + oid).innerHTML = display;
		}
	}
	
	var orderCreditLessShow = document.getElementById('orderCreditLessShow-' + orderid);
	var orderCreditLessNoShow = document.getElementById('orderCreditLessNoShow-' + orderid);
	
	if(orderCreditLessShow != undefined && orderCreditLessNoShow != undefined){
	
		if(showLessCredits == 1){
			orderCreditLessShow.style.display = 'inline';
			orderCreditLessNoShow.style.display = 'none';
		}else{
			orderCreditLessShow.style.display = 'none';
			orderCreditLessNoShow.style.display = 'inline';
		}
	}
	
	$$('span[id^="orderCreditMoreAtMax-"]').each(function(d){
		d.style.display = 'none';
	})
	$$('span[id^="orderCreditMoreTooSmall-"]').each(function(d){
		d.style.display = 'none';
	})
	$$('span[id^="orderCreditMoreNoShow-"]').each(function(d){
		d.style.display = 'none';
	})
	
	
	if(atMaxCredits == 0 && cartTooSmall == 0 && loggedIn == 1 && validated == 1){
		$$('span[id^="orderCreditMoreShow-"]').each(function(d){
			d.style.display = 'inline';
		})
	}else{
	
		$$('span[id^="orderCreditMoreShow-"]').each(function(d){
			d.style.display = 'none';
		})
		
		$$('span[id^="orderCreditMoreNoShow-"]').each(function(d){
			d.style.display = 'inline';
		})
			
		if(validated == 1){
			if(atMaxCredits == 1){
				$$('span[id^="orderCreditMoreAtMax-"]').each(function(d){
					d.style.display = 'inline';
				})
			}else if(cartTooSmall == 1){
				$$('span[id^="orderCreditMoreTooSmall-"]').each(function(d){
					d.style.display = 'inline';
				})
			}
		}
	}
	
	document.getElementById('availableCredits').innerHTML = '(' + availableCredits + ' avail.)';
}

this.updateStickDimensions = function(){

	if(httpObject.readyState == 4){
	
		var responseArray = httpObject.responseText.split(';');
	
		if(responseArray[0] != 'error'){
		
			var length = responseArray[0];
			var lengthFraction = responseArray[1];
			var width = responseArray[2];
			var tip = responseArray[3];
			var taper = responseArray[4];
			var handle = responseArray[5];
			var neckWidth = responseArray[6];
			var name = responseArray[7];
			var userid = responseArray[8];
			
			document.getElementById('lengthSelect').value = length;
			document.getElementById('lengthFractionSelect').value = lengthFraction;
			
			if(width <= 0.677){
				document.getElementById('widthSelect').value = width;
				document.getElementById('widthSelect').onchange();
			}else{
				document.getElementById('widthSelect').value = 0.677;
				document.getElementById('maxWidth').style.display = 'inline';
			}
			
			document.getElementById('tipSelect').value = tip;
			document.getElementById('tipSelect').onchange();
			
			document.getElementById('taperSelect').value = taper;
			
			document.getElementById('handleSelect').value = handle;
			document.getElementById('tipSelect').onchange();
			
			if(userid > 0 && name != 'unnamed'){
				document.getElementById('stickName').value = name;
			}else{
				document.getElementById('stickName').value = '';
			}
			
			if(neckWidth != ''){
				document.getElementById('neckWidthChk').checked = true;
				document.getElementById('neckWidthChk').onchange();
				document.getElementById('neckWidth').value = neckWidth;
			}else{
				document.getElementById('neckWidthChk').checked = false;
				if(document.getElementById('neckWidthChk').onchange != undefined){
					document.getElementById('neckWidthChk').onchange();
				}
				document.getElementById('neckWidth').value = '';
			}
			
			if(userid > 0){
				updateStickNameSaveElements('', 'update name');
			}else{
				updateStickNameSaveElements('', 'copy template as mine');
			}
			
		}else{
		
			if(responseArray[1] == 'notemplate'){
			
				updateStickNameSaveElements('', '');
				document.getElementById('stickName').value = '';
			}
		}	
	}
	
	//document.getElementById(returnID).innerHTML = returnText;
}

function updateStickNameSaveElements(resultText, actionText){

	if(document.getElementById('nameSaveResultText')){
		document.getElementById('nameSaveResultText').innerHTML = resultText;
	}
	
	if(document.getElementById('nameSaveActionLink')){
		document.getElementById('nameSaveActionLink').style.display = (actionText.length > 0 ? 'inline' : 'none');
	}
	
	if(document.getElementById('nameSaveActionText')){
		document.getElementById('nameSaveActionText').innerHTML = actionText;
	}
}

this.savedStickName = function(){

	if(httpObject.readyState == 4){
	
		var responseArray = httpObject.responseText.split(';');
		
		if(responseArray[0] != 'error'){
		
			var action = responseArray[0];
			var stickid = responseArray[1];
			var name = responseArray[2];
		
			updateStickNameSaveElements('saved', '');
			
			setTimeout('updateStickNameSaveElements(\'\', \'update name\')', 2000);
			
			if(action == 'named'){
				document.getElementById('templateSelect').options[document.getElementById('templateSelect').selectedIndex].text = name;
			}else if(action == 'copied'){
			
				var element = document.createElement("OPTION");
				element.text = name;
				element.value = stickid;
				document.getElementById('templateSelect').options.add(element);
				document.getElementById('templateSelect').value = stickid;
			}
		}else{
		
			if(responseArray[1] == 'blank'){
			
				updateStickNameSaveElements('name cannot be blank', '');
				setTimeout('updateStickNameSaveElements(\'\', \'update name\')', 2000);
				
				document.getElementById('stickName').value = responseArray[2];
				
			}else if(responseArray[1] == 'nosession'){
				updateStickNameSaveElements('you must be logged in', '');
				setTimeout('updateStickNameSaveElements(\'\', \'copy template as mine\')', 2000);
				
				document.getElementById('stickName').value = responseArray[2];
			}
		}
	
	}

	//document.getElementById(returnID).innerHTML = returnText;
}