var quant = new Array();

$(document).ready(function() {
	
	$("input:radio.shipping_method").bind('change', updateShipping);
	$("#sameAsBilling").bind('click', sameAsBilling);
	$("#shipping_state").bind('change', updateState);
	$("#shipping_zip").bind('change', updateZip);
	
	updateGift();
	$("#is_gift").bind('change', updateGift);
	
	$("input.qty").each(function(index) {
		
		id = $(this).attr('id').split("-");
		id = id[1];
		
		registerQuantity(id, $(this).val());
	});
	
	
	$("a.add-cart-modal").bind('click', addCart);
	$('#addCart').modal({backdrop: "static"});


	checkCart();
	
    $("input.focus").each(function(index) {
    	$(this).focus();    	
    	$(this).select();
    });


	
	// Verticaly scrolling fixed element
	if($('#fixed').length > 0) {

		var $el = $('#fixed');
		var $top = $el.position().top + 70;
		var $abs_top = $el.offset().top;
		var $left = $el.position().left;
		var $top_offset = 80;
		var $left_offset = 190;
		var $scroll_top = parseInt($abs_top) - parseInt($top_offset);
		
		$(window).scroll(function(e){ 
			
			if($(window).width() < 960) {
				$el.css({'position': 'static', 'float': 'left', 'margin-left': 20 + 'px'});
			}
			else if ($(this).scrollTop() > $scroll_top && $el.css('position') != 'fixed'){ 					
				$el.css({'position': 'fixed', 'top': $top_offset + 'px', 'left': '50%', 'margin-left': $left_offset + 'px'});
			} 
			else if ($(this).scrollTop() <= $scroll_top && $el.css('position') != 'absolute'){ 
				$el.css({'position': 'absolute', 'top': $top + 'px', 'left': '50%', 'margin-left': $left_offset + 'px'}); 
			} 
		});
	} // if #fixed
	
	if($('#slider').length > 0) {
		
		var slider = $('#slider').bxSlider({
	        auto: false,
	        autoControls: false,
	        autoHover: true,
			pager: false,
	        controls: false
		});
		
		 $('.slider_nav').click(function(){
		    	
		    	$('.slider_nav').removeClass('current');
		    	$(this).addClass('slider_nav current');
		        	    	
		    	slider.goToSlide($('.slider_nav').index($(this)));
		 });
		 
		var trgt = window.location.hash;
		if(trgt.length > 0) {
			$('.slider_nav').each(function(index) {
				if($(this).attr('href') == trgt) {
					slider.goToSlide(index);
				}
			});
		}
			
	} // if #slider
});


function updateGift() {

	if($('#is_gift').attr('checked')) {
		$('#gift_message_wrapper').show();
	}
	else $('#gift_message_wrapper').hide();

}

function checkCart() {
	checkQuantity();
}

function addCart() {
	
	var $parts = $(this).attr('href').split("#");
	var $sku = $parts[1];
		
	$.get('/cart/add_modal/'+ $sku, function(data) {
		$('#addCart').html(data);
		$('#addCart').modal({backdrop: "static"});
	});
	
}

function checkQuantity() {
		
	$.each(quant, function(id, value) {
		if($("#qty-" + id).val()) {
			if($("#qty-" + id).val() != value) {
				value = $("#qty-" + id).val();				
				registerQuantity(id, value);
				updateQuantity(id, value);
			}
		}
	});
	
	setTimeout('checkQuantity()', 600);
}


function registerQuantity(id, value) {
	if(id) quant[id] = value;
}

function sameAsBilling() {
	
	$("#shipping_first_name").val($("#first_name").val());
	$("#shipping_last_name").val($("#last_name").val());
	$("#shipping_company").val($("#company").val());
	$("#shipping_address").val($("#address").val());
	$("#shipping_address_2").val($("#address_2").val());
	$("#shipping_city").val($("#city").val());
	$("#shipping_state").val($("#state").val());
	$("#shipping_zip").val($("#zip").val());
	
}

function updateQuantity(id, value) {
	
	if(value < 0) {
		value = 0;
	}
	
	$.getJSON('/cart/update_quantity/' + id + '/' + value + '/', function(data) {
		
		updateDisplayFlashTR("item_count_display", data.total_quantity);
		updateDisplayFlashTR("subtotal_display", data.subtotal.toFixed(2));
		updateDisplayFlashTR("shipping_display", data.shipping.toFixed(2));
		//updateDisplay("discount_display", data.discount.toFixed(2));
		updateDisplayFlashTR("tax_display", data.tax);
		updateDisplayFlashTR("total_display", data.total.toFixed(2));
		
	
		var $quantity = data.quantity;				
		$("#qty-" + id).val($quantity);

	});
}

function updateMethods() {
	
	var method = $("#shipping_method").val();
	var state = $("#shipping_state").val();
	if((state == "HI" || state == "AK") && method != '3') method = '2';
		
	$.getJSON('/cart/get_shipping_rates/', function(data) {
		$("#shipping_method").html("<option  value=''>Please select an option...</option>");
		$.each(data, function(index, value) { 

			var selected = "";
			
			var id = value.id;
			var rate = value.rate;
			var name = value.name;
			
			if(id == method) selected = "selected";
			
			
			
			if(rate == 0) rate = 0.00;
			
			// Fuction // $("#shipping_method").append("<option "+ selected +" value='" + id + "'>" + name + " - $" + rate + "</option>");
			// What it outputs: // <option  value='1'>Ground - $10.00</option>
			
			// Tyson's Attempt // $("#shipping_method").append("<li><label><input type='radio'" + selected +"name='data[shipping_method]' id='data[shipping_method]' value='" + id + "/><span>" + name + " - $" + rate + "</span></label></li>");
		});
	});
}

function updateState() {

	var ship_state = $("#shipping_state").val();
	
	$.getJSON('/cart/update_state/' + ship_state + '/', function(data) {
		
		updateDisplayFlashTR("subtotal_display", data.subtotal);
		updateDisplayFlashTR("discount_display", data.discount);
		updateDisplayFlashTR("shipping_display", data.shipping);
		updateDisplayFlashTR("tax_display", data.tax);
		updateDisplayFlashTR("total_display", data.total);
		updateDisplay("final_total_display", data.total);
		
		if($("#shipping_method").length > 0) {
			//updateMethods();
		}
				
	});

}

function updateZip() {

	var ship_zip = $("#shipping_zip").val();
	
	$.getJSON('/cart/update_zip/' + ship_zip + '/', function(data) {
		
		updateDisplay("subtotal_display", data.subtotal);
		updateDisplay("discount_display", data.discount);
		updateDisplay("shipping_display", data.shipping);
		updateDisplay("tax_display", data.tax);
		updateDisplay("total_display", data.total);
		updateDisplay("final_total_display", data.total);
		
		if($("#shipping_method").length > 0) {
			//updateMethods();
		}
				
	});
		
}

function updateDisplayFlashTR(id, value) {
	
	var $obj = $('#' + id).closest('tr');
	updateDisplay(id, value);
	$obj.animate({ backgroundColor: "#FEFFBD"}, 600);
	$obj.animate({ backgroundColor: "#FFFFFF"}, 600);
	
}

function updateDisplay(id, value) {
	
	var $obj = $('#' + id);
	
	if(value > 0)  {
		$obj.html(value); 
	}
	else {
		$obj.html("0.00");
	}	
}

function updateShipping() {

	var ship_method = $("input:radio.shipping_method:checked").val();
		
	$.getJSON('/cart/update_shipping_method/' + ship_method + '/', function(data) {
		
		updateDisplayFlashTR('shipping_display', data.shipping);
		updateDisplayFlashTR('total_display', data.total);

		$('#final_total_display').html(data.total);
	});
	
}
