// JavaScript Document


var ShoppingCart = {
	
	visibility : "off",
	
	lastNumRows : 0,
	
	data : null,
	
	init : function() {
		var callback = function(data) {
			ShoppingCart.data = data;
			ShoppingCart.render();
		}
		$.get("xmlhttp/cart_xml.php", null, callback, "html");
	},
	
	render : function(startup) {
		startup = startup || false;
		var data = loadXMLString(ShoppingCart.data);
		
		if(data && $(data.firstChild).attr("numItems")>0) {
			
			//ShoppingCart.assign($("#cartContents"), "cartPrePrice", $(data.firstChild).attr("preSumPrice"));
			//ShoppingCart.assign($("#cartContents"), "cartSumPrice", $(data.firstChild).attr("sumPrice"));
			
			$("#cartPrePrice", $("#cartBottom")).text($(data.firstChild).attr("preSumPrice"));
			$("#cartSumPrice", $("#cartBottom")).text($(data.firstChild).attr("sumPrice"));

			$("#cartItemRow").css("display", "none");
			
			while($("#cartItemsTableContents > div").length > 1) {
				$("#cartItemsTableContents > div").eq(1).remove();
			}
			
			var curItem = 0;
			$("item", data.firstChild).each(function() {
				
				var rowTpl = $("#cartItemRow").clone();
				
				rowTpl.attr("id", "cartItemRow_" + $(this).attr("id"));
				ShoppingCart.assign(rowTpl, "markName", $("markName", this).text());
				ShoppingCart.assign(rowTpl, "productName", $("productName", this).text());
				ShoppingCart.assign(rowTpl, "description", $("description", this).text());
				
					$("#cartItemAttribute", rowTpl).hide();
					$("attribute", this).each(function() {
						var attrTpl = $("#cartItemAttribute").clone();
						attrTpl.attr("id", "cartItemAttribute_");
						ShoppingCart.assign(attrTpl, "attributeName", $("name", this).text());
						ShoppingCart.assign(attrTpl, "attributeValue", $("value", this).text());
						ShoppingCart.assign(attrTpl, "attributeUnit", $("unit", this).text());
						$("#cartItemAttributeTable", rowTpl).append(attrTpl);
						attrTpl.show();
					});
				
				ShoppingCart.assign(rowTpl, "cartItemPrice", $("price", this).text());
				ShoppingCart.assign(rowTpl, "cartItemAmount", $("amount", this).text());
				ShoppingCart.assign(rowTpl, "cartItemSumPrice", $("sumPrice", this).text());
	
				var selfRef = this;

				$("img", $("div:eq(0)", $("td:eq(2)", $("table tr", rowTpl)))).get(0).onclick = function() {
					ShoppingCart.add($(selfRef).attr("id"), 1);
				};
				
				$("img", $("div:eq(2)", $("td:eq(2)", $("table tr", rowTpl)))).get(0).onclick = function() {
					if(parseInt($("amount", selfRef).text())==1) {
						if(!window.confirm("Ürünü sepetten çıkarmak istediğinizden emin misiniz?")) return;
						$("#cartLoading").show();
						$("#cartBottom").css("visibility", "hidden");
						$("#"+rowTpl.attr("id")).slideUp("normal", function(){
							$(this).remove();
							ShoppingCart.lastNumRows--;
							ShoppingCart.add($(selfRef).attr("id"), -1);
						});
					}
					else {
						ShoppingCart.add($(selfRef).attr("id"), -1);
					}
				};
				
				$("img", $("td:eq(4)", $("table tr", rowTpl))).get(0).onclick = function() {
					if(!window.confirm("Ürünü sepetten çıkarmak istediğinizden emin misiniz?")) return;
					$("#cartLoading").show();
					$("#cartBottom").css("visibility", "hidden");
					$("#"+rowTpl.attr("id")).slideUp("normal", function(){
						$(this).remove();
						ShoppingCart.lastNumRows--;
						ShoppingCart.add($(selfRef).attr("id"), 0);
					});
				};
				
				curItem++;
				$("#cartItemsTableContents").append(rowTpl);
				
				if(ShoppingCart.lastNumRows==0 || (curItem > ShoppingCart.lastNumRows && ShoppingCart.visibility=="on")) {
					rowTpl.slideDown("slow", function() {
						if($(data.firstChild).attr("numItems")==curItem) {
							$("#cartLoading").fadeOut("fast");
						}
					});
					
				}
				else {
					if($(data.firstChild).attr("numItems")==curItem) {
						$("#cartLoading").fadeOut("fast");
					}
					rowTpl.show();
					//rowTpl.fadeIn();
				}
				
			});
			
			ShoppingCart.lastNumRows = curItem;
			
			$("#cartListHead").css("visibility","hidden");
			$("#cartItemsTable").css("visibility","hidden");
			$("#cartBottom").css("visibility","hidden");
			
			if(ShoppingCart.visibility=="off"){
				ShoppingCart.show();
			}
			else {
				$("#cartListHead").css("visibility","visible");
				$("#cartItemsTable").css("visibility","visible");
				$("#cartBottom").css("visibility","visible");
			}

		}
		else {
			ShoppingCart.hide();
		}
	},
	
	add : function(packageId, amount, focusCart) {
		packageId = packageId || 0;
		amount = amount || 0;
		focusCart = focusCart || false;
		
		var callback = function(data) {
			ShoppingCart.data = data;
			ShoppingCart.render();
		}
		
		ShoppingCart.data = "";
		ShoppingCart.show(true, focusCart);
		
		$.get("xmlhttp/cart_xml.php", {package: packageId, a: amount}, callback, "html");
	},
	
	assign : function(template, variable, value) {
		template.html(template.html().replace("{$"+variable+"}", value));
	},
	
	show : function(loading, focusCart) {
		loading = loading || false;
		focusCart = focusCart || false;
		
		$("#cartItemRow").css("display", "none");
		
		if(focusCart) {
			var targetOffset = $("#cartPosition").offset();
			scrollTo(targetOffset.left, targetOffset.top);
		}
		
		if(ShoppingCart.visibility=="off") {
			if(loading) {
				$("#cartLoading").fadeIn();
			}
			
			$("#cartContents").show();
			$("#cartListHead").css("visibility","hidden");
			$("#cartItemsTable").css("visibility","hidden");
			$("#cartBottom").css("visibility","hidden");
			
			$("#sepetim").slideDown("normal", function() {

				if(!loading) {
					$("#cartBottom").css("visibility","visible");
					$("#cartListHead").css("visibility","visible");
					$("#cartItemsTable").css("visibility","visible");
				}
				$("#sepetimShowHide").css("visibility","visible");
				$("#sepetimButtonGoster").hide();
				$("#sepetimButtonGizle").show();
				ShoppingCart.visibility = "on";

			});
		}
		else {
			if(loading) {
				$("#cartLoading").show();
				$("#cartListHead").css("visibility","hidden");
				$("#cartItemsTable").css("visibility","hidden");
				$("#cartBottom").css("visibility","hidden");
			}
		}
	},
	
	hide : function(keepButtons, deleteItems) {
		keepButtons = keepButtons || false;
		deleteItems = deleteItems || false;
		if(ShoppingCart.visibility=="on") {
			
			if($("#cartLoading").is(":visible")) {
				$("#cartLoading").fadeOut("fast");
			}
			
			$("#cartListHead").css("visibility","hidden");
			$("#cartItemsTable").css("visibility","hidden");
			$("#cartBottom").css("visibility","hidden");
			
			$("#sepetim").slideUp(600, function() {
				$("#cartContents").hide();
				if(deleteItems) {
					while($("#cartItemsTableContents > div").length > 1) {
						$("#cartItemsTableContents > div").eq(1).remove();
					}
				}
				$("#sepetimButtonGizle").hide();
				$("#sepetimButtonGoster").show();
				if(!keepButtons) {
					$("#sepetimShowHide").css("visibility","hidden");
				}
				ShoppingCart.visibility = "off";
				
			});
			
		}
	},
	
	clear : function() {
		var callback = function() {
			ShoppingCart.lastNumRows = 0;
		}
		if(!window.confirm("Sepetin içeriğini boşaltmak istediğinizden emin misiniz?")) return;
		$("#cartListHead").css("visibility","hidden");
		$("#cartItemsTable").css("visibility","hidden");
		$("#cartBottom").css("visibility","hidden");
		ShoppingCart.hide(false, true);
		$.get("xmlhttp/cart_xml.php", {clear : "all"}, callback, "html");
	}

}

jQuery.fn.extend({
  scrollTo : function(speed, easing) {
    return this.each(function() {
      var targetOffset = $(this).offset().top;
      $('html,body').animate({scrollTop: targetOffset}, speed, easing);
    });
  }
});





function loadXMLString(txt) 
{
	try //Internet Explorer
	{
		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async="false";
		xmlDoc.loadXML(txt);
		return(xmlDoc); 
	}
	catch(e)
	{
		try //Firefox, Mozilla, Opera, etc.
		{
			parser=new DOMParser();
			xmlDoc=parser.parseFromString(txt,"text/xml");
			return(xmlDoc);
		}
		catch(e) {alert(e.message)}
	}
	return(null);
}