/**
 * Shopping Cart
 * Used on the cart display page
 *
 * author: Fred LeBlanc
 */

// all ---------------------------------------------------------------------------

function updateAndSubmit(formId, pageFunctionValue) {
	var form          = document.getElementById(formId);
	var pageFunction  = document.getElementById('page_function');
	
	pageFunction.value = pageFunctionValue;
	form.submit();
}


// quantities --------------------------------------------------------------------

function toggleButton(container) {
	var imgs = container.getElementsByTagName('img');
	
	if (imgs.length == 0) {
		return;	
	} else {
		var img = imgs[0];
		var imgSrc = img.getAttribute('src');
		var direction = (imgSrc.indexOf('decrease') > -1) ? 'decrease' : 'increase';
		var path = '/images/icons/';
		
		if (imgSrc.indexOf('_over') > -1) {
			img.setAttribute('src', path + direction + '.gif');
		} else {
			img.setAttribute('src', path + direction + '_over.gif');
		}
	}
}

function updateQuantities() {
	var form          = document.getElementById('cart_form');
	var pageFunction  = document.getElementById('page_function');
	
	pageFunction.value = 'update';
	form.submit();
}

function changeQuantity(key, delta) {
	var textField = document.getElementById('quantity_' + key);
	var newValue  = parseInt(textField.value) + delta;
	
	textField.value = (newValue < 0) ? 0 : newValue;
	compareQuantities(textField);
}

function compareQuantities(element) {
	element.className = (element.defaultValue != element.value) ? 'changed' : 'unchanged';
	highlightChangeQuantitiesButton();
}

function highlightChangeQuantitiesButton() {
	var inputs = document.getElementsByTagName('input');
	var changeButton;
	var isChanged = false;
	
	for (var i=0; i < inputs.length; i++) {
		if (inputs[i].getAttribute('type') == 'button' && inputs[i].getAttribute('id') == 'update_quantities') {
			changeButton = inputs[i];
		}
		
		if (inputs[i].getAttribute('type') == 'text' && inputs[i].defaultValue != inputs[i].value) {
			isChanged = true;
		}
	}
	
	changeButton.className = (isChanged) ? 'changed' : 'unchanged';
	changeButton.disabled  = (isChanged) ? '' : 'disabled';
}


// zip codes ---------------------------------------------------------------------

function loadZipCodeChange() {
	var currentZip  = document.getElementById('current_zip').innerHTML;
	var spanZip     = document.getElementById('zip_code');
	var textBox     = document.createElement('input');
	var goButton    = document.createElement('input');
	
	// create form
	spanZip.innerHTML = '';
	
	textBox.setAttribute('type', 'text');
	textBox.style.width = '35px';
	textBox.style.font = 'normal normal bold 11px/16px Arial, Helvetica, sans-serif';
	textBox.style.textAlign = 'center';
	textBox.setAttribute('maxlength', '5');
	textBox.setAttribute('id', 'zip_code_box');
	textBox.setAttribute('name', 'zip_code');
	textBox.setAttribute('value', currentZip);
	textBox.onkeypress = function(e) {
			// submits form on return
			if (!e) { e=window.event; }
			var key = e.keycode ? e.keycode : e.which;
			if (key == 13) { updateAndSubmit('cart_form', 'update_zip'); }
		}
	textBox.setAttribute('autocomplete', 'off');
	spanZip.appendChild(textBox);
	document.getElementById('zip_code_box').select();
	
	goButton.setAttribute('type', 'button');
	goButton.setAttribute('value', 'Go');
	goButton.className = 'go_button';
	goButton.onclick = function() {
			updateAndSubmit('cart_form', 'update_zip');
		}
	spanZip.appendChild(goButton);	
}


// shipping method ---------------------------------------------------------------

function loadShippingMethodChange() {
	var currentShippingMethod  = document.getElementById('current_shipping_method').innerHTML;
	var spanShippingMethod     = document.getElementById('shipping_method');
	var selectBox              = document.createElement('select');
	var goButton               = document.createElement('input');
	
	// create form
	spanShippingMethod.innerHTML = '';
	
	selectBox.setAttribute('name', 'ship_method');
}