// JavaScript Document

window.onload = function() {
	var object = document.getElementById('main_background_instructable_message');
	if(object.innerHTML.length > 0)
	{
		var instructable_fx = new Fx.Morph('main_background_instructable_box', {duration: 400});
		instructable_fx.start({'top': '0px', 'opacity': 1}).chain(function () { this.start.delay(5000, this, {'top': '-50px', 'opacity': 0}) });
	}
}

function cart_item_price(price_ammount)
{
	var price_return = String(price_ammount);
	if(price_ammount < 0)
	{
		price_return = '0.00';
	}
	var price_return = String(price_ammount);
	var price_position = price_return.lastIndexOf('.');
	if(price_position != -1)
	{
		price_location = price_return.substr(price_position);
		if(price_location.length == 2)
		{
			return price_return + '0';
		}
		else
		{
			return price_return;
		}
	}
	else
	{
		return price_return + '.00';
	}
}

function cart_item_quantity_minus(minus_id)
{
	var object = document.getElementById('cart_item_' + minus_id + '_quantity');
	if(parseInt(object.value) !== 1)
	{
		object.value = parseInt(object.value) - 1;
		cart_item_quantity_update(minus_id, parseInt(object.value));
		object = document.getElementById('cart_item_' + minus_id + '_price');
		var object_total = document.getElementById('cart_price');
		object_total.innerHTML = cart_item_price(Math.round((parseFloat(object_total.innerHTML) - (parseInt(object.value) / 100)) * 100) / 100);
	}	
	return false;
}

function cart_item_quantity_add(add_id)
{
	var object = document.getElementById('cart_item_' + add_id + '_quantity');
	object.value = parseInt(object.value) + 1;
	cart_item_quantity_update(add_id, parseInt(object.value));
	object = document.getElementById('cart_item_' + add_id + '_price');
	var object_total = document.getElementById('cart_price');
	object_total.innerHTML = cart_item_price(Math.round((parseFloat(object_total.innerHTML) + (parseInt(object.value) / 100)) * 100) / 100);
	return false;
}

function cart_item_quantity_update(update_id, update_count)
{
	var update_request = new Request({
		url: '/ajax/ajax_cart.php',
		onComplete: function(update_response) {
			var remove_fx = new Fx.Morph('cart_item_' + update_id, {duration: 400});
			remove_fx.start({'background-color': '#FFFBAC', 'border-color': '#EDEF79'}).chain(function(){ this.start({'background-color': '#EEFFCC', 'border-color': '#C5F881'}); });
		}
	});	
	update_request.send('method=item_update&id=' + update_id + '&quantity=' + update_count);
}

function cart_item_quantity_keydown(keydown_event)
{
	var keydown_code = '';
	if(window.event)
	{
		keydown_event = window.event;
		keydown_code = keydown_event.keyCode;
	}
	else if(keydown_event.which)
	{
		keydown_code = keydown_event.which;
	}
	var keydown_key = String.fromCharCode(keydown_code);
	var keydown_regex = /\d/;
	if(keydown_regex.test(keydown_key) || keydown_code == 8 || keydown_code == 37 || keydown_code == 39)
	{
		return true;
	}
	else
	{
		return false;	
	}
}

var focus_quantity_value = 0;

function cart_item_quantity_focus(focus_id)
{
	var object = document.getElementById('cart_item_' + focus_id + '_quantity');
	focus_quantity_value = object.value;
}

function cart_item_quantity_blur(blur_id)
{
	var object = document.getElementById('cart_item_' + blur_id + '_quantity');
	if(object.value.length == 0 || object.value == '0')
	{
		object.value = '1';
	}
	var blur_quantity = parseInt(object.value);
	cart_item_quantity_update(blur_id, blur_quantity);
	var object_total = document.getElementById('cart_price');
	var object_price = document.getElementById('cart_item_' + blur_id + '_price').value;
	if(object.value < focus_quantity_value)
	{
		object_total.innerHTML = cart_item_price(Math.round((parseFloat(object_total.innerHTML) - (parseInt(object_price * (focus_quantity_value - object.value)) / 100)) * 100) / 100);
	}
	else if(object.value > focus_quantity_value)
	{
		object_total.innerHTML = cart_item_price(Math.round((parseFloat(object_total.innerHTML) + (parseInt(object_price * (object.value - focus_quantity_value)) / 100)) * 100) / 100);
	}
}

function cart_item_quantity_remove(remove_box_id, remove_id)
{
	var remove_confirm = confirm('Are you sure you want to remove this item from your cart?');
	if(remove_confirm)
	{
		var object_price = document.getElementById(remove_box_id + '_price');
		var object_quantity = document.getElementById(remove_box_id + '_quantity');
		var object_total = document.getElementById('cart_price');
		object_total.innerHTML = Math.round((parseFloat(object_total.innerHTML) - (parseInt(object_price.value * object_quantity.value) / 100)) * 100) / 100;		
		var object = document.getElementById(remove_box_id);
		object.style.textAlign = 'center';
		object.innerHTML = '<img src="/images/cart_update.png" alt="" /> <strong>Removing Item!</strong>';
		var remove_fx = new Fx.Morph(remove_box_id, {duration: 400});
		function remove_animate()
		{
			remove_fx.start({'background-color': '#FFFBAC', 'border-color': '#EDEF79'}).chain(function(){ this.start({'background-color': '#EEFFCC', 'border-color': '#C5F881'}); });
		}
		remove_animate();
		var remove_periodical = remove_animate.periodical(1000);
		
		var remove_request = new Request({
			url: '/ajax/ajax_cart.php',
			onComplete: function(remove_response) {
				$clear(remove_periodical);
				remove_fx.cancel();
				if(remove_response == 'true')
				{
					remove_fx = new Fx.Tween(remove_box_id);
					remove_fx.start('opacity', 1, 0).set('display', 'block').chain(function(){ this.start('display', 'none'); });
				}
				else
				{
					alert('We couldn\'t delete that item! Please refresh the page, and try again.');
					remove_fx.start({'background-color': '#FF8599', 'border-color': '#F7657E'});
					object.innerHTML = '<img src="/images/main_content_process_error.png" alt="" /> <strong>Oh dear! Please refresh the page!</strong>';
				}
			}
		});	
		remove_request.send('method=item_remove&id=' + remove_id);
	}
	return false;
}

function checkout_shipping_keydown(keydown_event)
{
	var keydown_code = '';
	if(window.event)
	{
		keydown_event = window.event;
		keydown_code = keydown_event.keyCode;
	}
	else if(keydown_event.which)
	{
		keydown_code = keydown_event.which;
	}
	var keydown_key = String.fromCharCode(keydown_code);
	var keydown_regex = /\d/;
	if(keydown_regex.test(keydown_key) || keydown_code == 8 || keydown_code == 37 || keydown_code == 39)
	{
		return true;
	}
	else
	{
		return false;	
	}
}

function checkout_shipping_calculate()
{
	var object_postcode = document.getElementById('checkout_postcode').value;
	if(object_postcode.length == 4)
	{
		var object = document.getElementById('checkout_shipping');
		object.innerHTML = '<img src="/images/cart_loading.gif" alt="Loading" />';
		var remove_request = new Request({
			url: '/ajax/ajax_checkout.php',
			onComplete: function(calculate_response) {
				object.innerHTML = calculate_response;
				object.getElementsByTagName('input').item(0).onclick();
			}
		});
		remove_request.send('method=postage_calculate&postcode=' + object_postcode);
	}
	else
	{
		var calculate_fx = new Fx.Morph('checkout_shipping_box', {duration: 400});
		calculate_fx.start({'background-color': '#FF8599', 'border-color': '#F7657E'}).chain(function(){ this.start({'background-color': '#EEFFCC', 'border-color': '#C5F881'}); });
	}
	return false;
}

function checkout_shipping_selected(selected_value, selected_type)
{
	var selected_request = new Request({
		url: '/ajax/ajax_checkout.php',
		onComplete: function(selected_response) {
		}
	});
	selected_request.send('method=postage_selected&type=' + selected_type);
	$('cart_price').set('html', cart_item_price(Math.round(parseFloat(document.getElementById('checkout_total').value) + (parseInt(selected_value))) / 100));
	$('cart_price_box').setStyle('display', 'block')
	//document.getElementById('cart_price_box').style.display = 'block';
	$('checkout_submit').disabled = false;
}

function checkout_shipping_reset()
{
	var object = document.getElementById('checkout_shipping');
	object.innerHTML = '<label>Postcode: <input id="checkout_postcode" name="checkout_postcode" type="text" onkeydown="return checkout_shipping_keydown(event);" /></label> <input class="main_input_submit_small" type="submit" value="Calculate Shipping" onclick="return checkout_shipping_calculate();" />';
	document.getElementById('cart_price_box').style.display = 'none';
	$('checkout_submit').disabled = true;
	return false;
}

function cart_product_add(add_id)
{
	var add_request = new Request({
		url: '/ajax/ajax_cart.php',
		onComplete: function(update_response) {
			var object = document.getElementById('cart_product_' + add_id + '_submit');
			object.value = 'Added To Cart';
			object.disabled = true;
			var remove_fx = new Fx.Morph('cart_product_' + add_id, {duration: 400});
			remove_fx.start({'background-color': '#FFFBAC', 'border-color': '#EDEF79'}).chain(function(){ this.start({'background-color': '#EEFFCC', 'border-color': '#C5F881'}); }).chain(function() { parent.location='/cart/' });
		}
	});	
	add_request.send('method=item_add&id=' + add_id + '&quantity=1');
	return false;
}

function cart_clear()
{
	var clear_confirm = confirm('Are you sure you want to clear all the items from your cart? This cannot be undone.');
	if(clear_confirm)
	{
		var add_request = new Request({
			url: '/ajax/ajax_cart.php',
			onComplete: function(clear_response) {
				parent.location = '/cart/';
			}
		});	
		add_request.send('method=cart_clear');
	}
	return false;
}

function cart_save()
{
	$('cart_save_submit').disabled = true;
	var save_request = new Request({
		url: '/ajax/ajax_cart.php',
		onComplete: function(save_response) {
			$('cart_save_name').value = '';
			var remove_fx = new Fx.Morph('cart_save_box', {duration: 400});
			if(save_response == 'true')
			{
				remove_fx.start({'background-color': '#FFFBAC', 'border-color': '#EDEF79'}).chain(function(){ this.start({'background-color': '#EEFFCC', 'border-color': '#C5F881'}).chain(function() { parent.location='/account/' }); });
			}
			else
			{
				$('cart_save_submit').disabled = false;
				remove_fx.start({'background-color': '#FF8599', 'border-color': '#F7657E'}).chain(function(){ this.start({'background-color': '#EEFFCC', 'border-color': '#C5F881'}); });
			}
		}
	});	
	save_request.send('method=cart_save&name=' + $('cart_save_name').value);
	return false;
}

function cart_load(load_id)
{
	var load_confirm = confirm('Are you sure you want to load this cart? This will replace all the current items in your cart with the items in the saved cart, and cannot be undone.');
	if(load_confirm)
	{
		var save_request = new Request({
			url: '/ajax/ajax_cart.php',
			onComplete: function(save_response) {
				parent.location='/cart/';
			}
		});	
		save_request.send('method=cart_load&id=' + load_id);
	}
	return false;
}

function cart_delete(delete_id)
{
	var delete_confirm = confirm('Are you sure you want to delete this cart? This cannot be undone.');
	if(delete_confirm)
	{
		$('cart_' + delete_id).set('html', '<img src="/images/cart_update.png" alt="" /> <strong>Removing Item!</strong>');
		var delete_fx = new Fx.Morph('cart_' + delete_id, {duration: 400});
		function delete_animate()
		{
			delete_fx.start({'background-color': '#FFFBAC', 'border-color': '#EDEF79'}).chain(function(){ this.start({'background-color': '#EEFFCC', 'border-color': '#C5F881'}); });
		}
		delete_animate();
		var delete_periodical = delete_animate.periodical(1000);
		var delete_request = new Request({
			url: '/ajax/ajax_cart.php',
			onComplete: function(delete_response) {
				$clear(delete_periodical);
				delete_fx.cancel();
				delete_fx = new Fx.Tween('cart_' + delete_id);
				delete_fx.start('opacity', 1, 0).set('display', 'block').chain(function(){ this.start('display', 'none'); });
			}
		});	
		delete_request.send('method=cart_delete&id=' + delete_id);
	}
	return false;
}