/*
 * jQuery Color Animations
 * Copyright 2007 John Resig
 * Released under the MIT and GPL licenses.
 */

(function(jQuery){

	// We override the animation for all of these color styles
	jQuery.each(['backgroundColor', 'borderBottomColor', 'borderLeftColor', 'borderRightColor', 'borderTopColor', 'color', 'outlineColor'], function(i,attr){
		jQuery.fx.step[attr] = function(fx){
			if ( fx.state == 0 ) {
				fx.start = getColor( fx.elem, attr );
				fx.end = getRGB( fx.end );
			}

			fx.elem.style[attr] = "rgb(" + [
				Math.max(Math.min( parseInt((fx.pos * (fx.end[0] - fx.start[0])) + fx.start[0]), 255), 0),
				Math.max(Math.min( parseInt((fx.pos * (fx.end[1] - fx.start[1])) + fx.start[1]), 255), 0),
				Math.max(Math.min( parseInt((fx.pos * (fx.end[2] - fx.start[2])) + fx.start[2]), 255), 0)
			].join(",") + ")";
		}
	});

	// Color Conversion functions from highlightFade
	// By Blair Mitchelmore
	// http://jquery.offput.ca/highlightFade/

	// Parse strings looking for color tuples [255,255,255]
	function getRGB(color) {
		var result;

		// Check if we're already dealing with an array of colors
		if ( color && color.constructor == Array && color.length == 3 )
			return color;

		// Look for rgb(num,num,num)
		if (result = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(color))
			return [parseInt(result[1]), parseInt(result[2]), parseInt(result[3])];

		// Look for rgb(num%,num%,num%)
		if (result = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(color))
			return [parseFloat(result[1])*2.55, parseFloat(result[2])*2.55, parseFloat(result[3])*2.55];

		// Look for #a0b1c2
		if (result = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(color))
			return [parseInt(result[1],16), parseInt(result[2],16), parseInt(result[3],16)];

		// Look for #fff
		if (result = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(color))
			return [parseInt(result[1]+result[1],16), parseInt(result[2]+result[2],16), parseInt(result[3]+result[3],16)];

		// Otherwise, we're most likely dealing with a named color
		return colors[jQuery.trim(color).toLowerCase()];
	}
	
	function getColor(elem, attr) {
		var color;

		do {
			color = jQuery.curCSS(elem, attr);

			// Keep going until we find an element that has color, or we hit the body
			if ( color != '' && color != 'transparent' || jQuery.nodeName(elem, "body") )
				break; 

			attr = "backgroundColor";
		} while ( elem = elem.parentNode );

		return getRGB(color);
	};
	
	// Some named colors to work with
	// From Interface by Stefan Petre
	// http://interface.eyecon.ro/

	var colors = {
		blue:[0,160,190],
		white:[255,255,255]
	};
	
})(jQuery);



$(document).ready(function() {

	//---------------------------------------------------------------
	//*** Add To Cart Submit Handler
	//---------------------------------------------------------------
	$('.cartAddForm').submit(function(){
		//disable submit button during this (ie. prevent double click)
		$('.submitClass').attr("disabled","disabled");

		//get
		var productID = $(this).find('input[name=productID]').val();
		var title = $(this).find('input[name=title]').val();
		var price = $(this).find('input[name=price]').val();
		var quantity = $(this).find('input[name=quantity]').val();
		var options = $(this).find('input[name=options]').val();
		var mode = $(this).find('input[name=mode]').val(); 
		
		
		//Cart::insert($productID, $title, $price, $quantity = 1, $options = NULL){
		$.post('inc/cartRelay.php', { 	productID: productID, 
										title: title, 
										price: price,
										quantity: quantity, 
										options: options, 
										mode: mode
									}, 
			function(data) {
				if(data){
					$('#cartSummary').html(data);
					$("#additionalProduct").slideDown(600, function(){
						$("#additionalProduct").animate( { backgroundColor: "white" } , { duration: 400} );
					});

					setTimeout( function() {
						$('.submitClass').removeAttr("disabled"); 
					}, 400 );

				} else { //incase post didnt work
					alert("Warning: Error during cart submit");
					$('.cartForm').submit();
					

				}
			});
		return false; //prevent default form actions
	});

	
	//---------------------------------------------------------------
	//*** Update Cart Submit Handler
	//---------------------------------------------------------------
	$('#cartUpdateForm').submit(function(){
		//disable submit button during this (ie. prevent double click)
		$('.submitClass').attr("disabled","disabled");

		//get
		var postString = '';
		$('.item').each(function () { 
				postString += $(this).attr('name') + '=' + $(this).attr('value') + '&';
		});
		postString = postString.substr(0, postString.length - 1);
		
		//Cart::update($items = array()){
		$.post('inc/cartRelay.php', { 	postString: postString, 
										mode: 'update'
									}, 
			function(data) {
				if(data){
					$('#cartDisplay').html(data);
					//$("#totalprice").html("My text is changed!");
					setTimeout( function() {
						$('.submitClass').removeAttr("disabled"); 
					}, 400 );

				} else { //incase post didnt work
					alert("Warning: Error during cart submit");
					$('.cartForm').submit();
					

				}
			});
		return false; //prevent default form actions  
	});
});


function removeItem(rowID){
	$('#'+rowID).hide();
	$.post('inc/cartRelay.php', { 	rowID: rowID, 
									mode: "delete"
								}, 
		function(data) {
			if(data){
				
				} else { //incase post didnt work
					alert("Warning: Error during cart submit");
					$('form.cartForm').submit();

				}
		});
	return false;
}





