
function shipping_methods_returned(obj) {
	shipping_graphic = document.getElementById('loading_graphic');
	options = eval('('+obj.responseText+')');
	mydiv = obj.argument;
	mydiv.innerHTML= options.html;
	mydiv.style.display='block';
	shipping_graphic.style.display='none';
}

function shipping_methods_failure(obj) {
	if (times_tried < 3) {
		var version = 0;
		if (navigator.appVersion.indexOf('MSIE') != -1) {
			var temp = navigator.appVersion.split('MSIE');
			version = parseFloat(temp[1]);
		}
		if (version == 6.0) {
			times_tried++;
			calculate_shipping(this);
		}
	}
   // error, no options returned
   error_message = document.createElement('div');
   error_message.id = 'shipping_error_message';
   error_message.innerHTML = "No shipping options found, please enter a valid shipping address.";
   mydiv = obj.argument;
   container = mydiv;
   container.innerHTML = '';
   container.appendChild(error_message);
   mydiv.style.display='none';
}

function calculate_shipping(e, arg) {
	if (e.type == 'keypress' && e.keyCode != 13) {
		return true;
	}

	if (e && e.preventDefault) {
		e.preventDefault();
	}

	var shipping_methods_target_form_element = document.getElementById('shipping_methods');
	var spinner_graphic = document.getElementById('loading_graphic');
	var my_location = {
		'city': document.getElementById('shipping_address_ship_city').value,
		'state': document.getElementById('shipping_address_ship_state').value,
		'zip': document.getElementById('shipping_address_ship_zip').value ,
		'country': document.getElementById('shipping_address_ship_country').value 
	};
	var xhr_callback = {
		success:shipping_methods_returned,
		failure:shipping_methods_failure,
		argument:shipping_methods_target_form_element
	}

	error = document.getElementById('shipping_error_message');
	if (error) {
		error.style.display='none';
	}
	spinner_graphic.style.display='block';
	shipping_methods_target_form_element.style.display='none';
	YAHOO.util.Connect.asyncRequest('POST', 'ajax_targets/get_shipping_methods.php', xhr_callback, 'city='+my_location['city']+'&state='+my_location['state']+'&zip='+my_location['zip']+'&country='+my_location['country']+'&shipping_calculator=true&product_id='+arg);

	return false;

}

function set_coupon_code(e, form) {
	if (e.type == 'keypress' && e.keyCode != 13) {
		return true;
	}
	if (e && e.preventDefault) {
		e.preventDefault();
	}

	form.hidden_action.value = 'enter_coupon';
	form.submit();
	return false;
}

function update_quantities(e, form) {
	if (e.type == 'keypress' && e.keyCode != 13) {
		return true;
	}
	if (e && e.preventDefault) {
		e.preventDefault();
	}

	document.getElementById('hidden_action').value = 'update_quantities';
	form.submit();
	return false;
}

function register_events() {
	/** send the product id, if it exists **/
	var product_id = 0;
	if (document.getElementById('hidden_product_id')) { 
		product_id = document.getElementById('hidden_product_id').value;
	}
	YAHOO.util.Event.addListener("calculate_link", "click", calculate_shipping, product_id);
	YAHOO.util.Event.addListener("shipping_address_ship_city", "keypress", calculate_shipping, product_id);
	YAHOO.util.Event.addListener("shipping_address_ship_zip", "keypress", calculate_shipping, product_id);
	YAHOO.util.Event.addListener("coupon_code", "keypress", set_coupon_code);
}

function expand_search_criteria(criteria) {
	if (document.getElementById(criteria + '_more_checkboxes')){
		document.getElementById(criteria + '_more_checkboxes').style.display = 'none';
		document.getElementById(criteria + '_hidden_checkboxes').style.display = 'block';
	}else
	if (document.getElementById(criteria + '_more_anchors')){
		document.getElementById(criteria + '_more_anchors').style.display = 'none';
		document.getElementById(criteria + '_hidden_anchors').style.display = 'block';
	}
	return false;
}

function update_hidden_action(obj, id, value) {
	var this_form = obj.form;
	for (var i = 0; i < this_form.elements.length; i++) {
		if (this_form.elements[i].id == id) {
			this_form.elements[i].value = value;
			break;
		}
	}
}

function update_order_item_fields() {
	var inputs = [];
	$('.order_item_update_field').each(function() {
		inputs.push(escape(this.name) + '=' + escape(this.value));
	});
	$.ajax({
		type: 'POST',
		data: inputs.join('&'),
		url: 'ajax_targets/update_order_items.php'
	});
}

function open_printer_window() {
	$(document).ready(function() {
		setTimeout("window.print()",1000);
	});
}

$(document).ready(function() {
	$('.order_item_update_field').change(function() {
		update_order_item_fields();
	});
});

// wait until everything is loaded in the page, before registering callbacks.
YAHOO.util.Event.onContentReady("calculate_link", register_events);

var times_tried = 0;
