/*SINGLE ITEM SHOPPING CART*/

init = function(){

	var url = "../svc/default.htm";
	
	$("#basket").click(function(event){showCartList();event.preventDefault();});
	
	$("#overlay").height($(document).height());
	$("#dcancel").click(function(event){hidePopUp();event.preventDefault(); });
	$("#dclose").click(function(event){saveCart(hidePopUp,"update");event.preventDefault(); });
	$("#add-to-cart").click(function(event){showPopUp();event.preventDefault();});   
	$("#add-to-cart-granny").click(function(event){showPopUp(true);event.preventDefault();});   
  	$("#dcheckout").click(function(event){saveCart(checkOut,"update");event.preventDefault();});        
	$("#dpop ul li").click(function(event){selectOptions(this);event.preventDefault();});
                   
	$(window).scroll(function(event){cartMover($(window).scrollTop());event.preventDefault();});


	var	imagelistItems=$("#imagelist").find('li').length;
	var imagelistHeight=imagelistItems*565;
    
	$("#fullimage").css('height', imagelistHeight);
	
	$("#imageicons > li").each(
	 function( intIndex ){$( this ).bind ("click",
	 		function(event){
	 			changeImage(event,intIndex);
				event.preventDefault();
			});

 }
 );

updateCache(cacheCart);
updateBasket()
},
updateBasket = function (){
	var	badge		=	$('#basket .basketoverlay');
	if(cacheCart.length>0){
	$(badge).show();
	$(badge).html(cacheCart.length);}else{
		$(badge).hide();
		$(badge).html("");
	}
},updateCache =	function (cache){
		$("#cart .cartitem").remove();
		cacheCart=cache
		var itemHolder=$("#cart #noitems"),	 settings = new Object();
		var a,name,color,amount,size,uid;

			for(i=0;i<cacheCart.length;i++) {
				 a=cacheCart[i];
				 uid=a.substr(0,a.indexOf("+"));
				 name=productnames[a.substr(0,1)];
				 color=colors[a.substr(1,2)];
				 size=a.substr(3,2);
				 amount=uid.substr(a.indexOf("-")+1);
				 price=a.substr(a.indexOf("+")+1);

				 settings.description = '<span class="cartdes">'+ name +'</span> <span class="cartspec">'+size+'&quot; '+color+'</span>';
				 settings.price =price; 
				 settings.color =color; 
				 settings.amount =amount; 
				 settings.uid = uid; 
				$(itemHolder).before(parsetemplate(settings,itemHtml));
			  }
		
		updateBasket();
},cartMover = function(index){
   if(index>43){

		//$("#basket").css({"position" : "fixed","top":"50px"}); 
		}else{
	     //$("#basket").css({"position" : "relative","left":"893px","top":"42px"}); 
	}
},changeImage = function(event,target){
	var prevtarget = $("#imagelist > li:eq("+previousTarget+")");
	var scrolltarget = $("#imagelist > li:eq("+target+")");
	if(previousTarget!=target){
		$(prevtarget).fadeTo(200,0.10,function(){
		$(scrolltarget).fadeTo(0,0);	
			$("#productimage").scrollTo(scrolltarget,0);
	
		$(scrolltarget).fadeTo(500,1);
		$(prevtarget).fadeTo(0,1);
		});
	}
	previousTarget=target;
},
hidePopUp = function(item){
	$("#d,#overlay").fadeTo("fast",0,function(){$("#d,#overlay").hide()});

},
saveCart = function(callBack,token){

	if(!token){token="ignore";}
	var noitems = $("#noitems").is(':visible');
	var sendData = new Object();

	if(noitems){
		sendData.cmd = 'empty';
		sendData.data = [];
		updateCache(sendData.data);
		sendData.token = "ignore";
	}else if(token=="update")	
	{
			sendData.cmd = 'set'; 
			sendData.data = [];
			$('#cart .cartitem').each(function(index){
			    sendData.data[index]=$(this).attr("nuid");
			});
			sendData.token = "ignore";
	}else
	{
			sendData.cmd = 'set'; 
			sendData.data = [];
			sendData.token = token;
		}

	svcCart('../svc/default.htm',{data:$.toJSON(sendData.data),cmd:$.toJSON(sendData.cmd),token:$.toJSON(sendData.token)},callBack); 

},
svcCart = function (url,data, callback ){
   $.post(url, data, callback,'json');   
},     
checkOut = function (data,response){
	cacheCart=data.response;
	_gaq.push(['_trackEvent', 'checkout', 'checkout:'+cacheCart]);  
	var noitems = $("#noitems");
  	var visnoitems = $(noitems).is(':visible'); 
 	var cartText = $("#cart #dcheckout").text();
	 if(visnoitems||cartText=="wait..."){          
		
		 }else{        
		   //$(noitems).show();
			$("#cart #cartHeader").text("Checking out you shoppingcart, please wait..."); 
	 		$("#cart #dcheckout").text("wait...");   
	var sendData = new Object();    
	sendData.data = []; 
	var cart=$('#cart .cartitem');
	$('#cart .cartitem').each(function(index){    
		var indexNum = index+1;
		var qty = $(this).find('#qty').text();                                                            
		var price=$(this).find('.price').text();
		var name=$(this).find('.cartdes').text()+" "+$(this).find('.cartspec').text();
		//name=escape(name);
		var totalprice=parseInt(price.substr(1));
		var amount='<input type="hidden" name="amount_'+indexNum+'" value="'+totalprice+'">';  
		var desc = "<input type='hidden' name='item_name_"+indexNum+"' value='"+name+"'>"; 
		var quant = '<input type="hidden" name="quantity_'+indexNum+'" value="'+qty+'">';   
	     $("#submitcart").append(desc);
		 $("#submitcart").append(amount); 
	   	 $("#submitcart").append(quant);     

	});                       
	
 	   $("#submitcart").submit(); 
}
	

},
selectOptions = function(t){
	var selected = $(t);
	if(selected.hasClass("color")){
		$("#dpop ul li.color").removeClass("selected");
	}else{
		$("#dpop ul li.size").removeClass("selected");
	}

	$(t).addClass("selected");
	updateSelection();

},updateSelection = function(){
	var color =$("#dpop ul li.color.selected a").text().substr(0,2);
	var size =$("#dpop ul li.size.selected a").text();
	var name =$("#d").attr("nuid");
   
 	$("#dok").unbind();   
	if(color.length!=0&&size!="undefined"&&size!=""&&size!="-1"){   
    	$("#dok").click(function(event){addToCart(name,color,size);event.preventDefault();});
	}
},
showPopUp = function(override){
	$("#cart").hide();
	$("#d").show();
	$("#d").css("opacity","1");
	$("#dpop").show();
	$("#overlay").fadeTo(200,0.8).show();  
	if(override){
		updateSelection();
		}            
_gaq.push(['_trackEvent', 'cart', 'cart step 1']);    
},
showCart = function(data,response){      
updateCache(data.response);
showCartList();     

},
showCartList = function(){
	showPopUp();
	$("#dpop").hide();
	$("#d,#cart").show();
	resizecart();
	updateTotals();	    
_gaq.push(['_trackEvent', 'cart', 'cart step 2']); 
}
,
addToCart = function(Name,Color,Size){    

var token=Name+Color+Size;               
saveCart(showCart,token); 
_gaq.push(['_trackEvent', 'user added item', token]); 

},
resizecart = function(remove){
	var contentLength=cacheCart.length;
	if(remove){contentLength--;}
	var contentHeight=44;
	var contentTotal=(contentLength*contentHeight)+55;

	if(contentLength>1){
		var cartheight =$("#cart").height();
		$("#cart").css('height',contentTotal);
	}
}
,
updateCart = function(t,num) {
 var newVal=parseInt($(t).parent().find('#qty').html(),10)+num
	if(newVal!=0){
		$(t).parent().find('#qty').html(newVal);
		var nuid = $(t).parent().parent().attr("nuid");
		nuid = nuid.substr(0,nuid.indexOf("-"))+"-"+newVal;
		$(t).parent().parent().attr("nuid",nuid);
	}
updateTotals();
},
updateTotals = function() {
 var 
	newVal		=	$('#cart #qty'),
	newAmount	=	$('#cart .price'),
	subtotal	=	0,
	badge		=	$('#basket .basketoverlay'),
	noitems		=	$("#noitems");

if(!$(newVal).length){
	$(noitems).show();
	$("#subtotal, img.underline").hide();
	$(badge).hide();
	$(badge).html("");
	
	}else{
		$(noitems).hide();
		$("#subtotal, img.underline").show();
		}

for(i=0;i<newVal.length;i++) {
 subtotal+=parseInt($(newVal[i]).html(),10)*parseFloat($(newAmount[i]).html().substring(1),10);
  }
var amount = "€"+roundNumber(subtotal,2);
	$("#subtotal").html(amount);
	$(badge).show();
	$(badge).html(newVal.length);
},
removeFromCart = function(t){
	$(t).parent().parent().remove();
	resizecart(1);
	updateTotals();
},
 roundNumber = function (num, dec) {
	var result = Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);
	return result;
},
parsetemplate = function(obj,template){	
	for (var key in obj) {
		var re = new RegExp('##('+ key + ')##', "g");
	    template=template.replace(re, obj[key]);		
	}
	return template;
	
};
	$(document).ready(function(){
if(cacheCart){$("#basket").show();}
		colors = new Object();
		productnames = {"s":"Shouldercase","j":"Journalcase","g":"Grannybag","o":"Natural","n":"Neoprene","c":"Natural + Grannybag"	};
		colors = {"bl":"black","br":"brown","gr":"green","na":"natural"};

			previousTarget=0;
			itemHtml='<ul class="cartitem" nuid="##uid##">\
				<li class="description">##description##</li>\
				<li class="amount">\
					<img class="bn qty-minus" src="../img/qty_minus.png" alt="-"/>\
					<span id="qty">##amount##</span>\
					<img class="bn qty-plus" src="../img/qty_plus.png" alt="+"/>\
				</li>\
				<li class="price">€##price##</li>\
				<li class="remove"><img class="bn qty-remove" alt="remove" src="../img/bttn_remove.png"/></li>\
				</ul>';
			$("#cart .qty-minus").live('click',function(event){
					updateCart(this,-1);
					event.preventDefault();
		   			});
		   	$("#cart .qty-plus").live('click',function(event){
					updateCart(this,1);
					event.preventDefault();
		   			});
		   	$("#cart .qty-remove").live('click',function(event){
					removeFromCart(this);
					event.preventDefault();
		   			});
	init();
	     });



/*TOJSON*/


(function($){$.toJSON=function(o)
{if(typeof(JSON)=='object'&&JSON.stringify)
return JSON.stringify(o);var type=typeof(o);if(o===null)
return"null";if(type=="undefined")
return undefined;if(type=="number"||type=="boolean")
return o+"";if(type=="string")
return $.quoteString(o);if(type=='object')
{if(typeof o.toJSON=="function")
return $.toJSON(o.toJSON());if(o.constructor===Date)
{var month=o.getUTCMonth()+1;if(month<10)month='0'+month;var day=o.getUTCDate();if(day<10)day='0'+day;var year=o.getUTCFullYear();var hours=o.getUTCHours();if(hours<10)hours='0'+hours;var minutes=o.getUTCMinutes();if(minutes<10)minutes='0'+minutes;var seconds=o.getUTCSeconds();if(seconds<10)seconds='0'+seconds;var milli=o.getUTCMilliseconds();if(milli<100)milli='0'+milli;if(milli<10)milli='0'+milli;return'"'+year+'-'+month+'-'+day+'T'+
hours+':'+minutes+':'+seconds+'.'+milli+'Z"';}
if(o.constructor===Array)
{var ret=[];for(var i=0;i<o.length;i++)
ret.push($.toJSON(o[i])||"null");return"["+ret.join(",")+"]";}
var pairs=[];for(var k in o){var name;var type=typeof k;if(type=="number")
name='"'+k+'"';else if(type=="string")
name=$.quoteString(k);else
continue;if(typeof o[k]=="function")
continue;var val=$.toJSON(o[k]);pairs.push(name+":"+val);}
return"{"+pairs.join(", ")+"}";}};$.evalJSON=function(src)
{if(typeof(JSON)=='object'&&JSON.parse)
return JSON.parse(src);return eval("("+src+")");};$.secureEvalJSON=function(src)
{if(typeof(JSON)=='object'&&JSON.parse)
return JSON.parse(src);var filtered=src;filtered=filtered.replace(/\\["\\\/bfnrtu]/g,'@');filtered=filtered.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']');filtered=filtered.replace(/(?:^|:|,)(?:\s*\[)+/g,'');if(/^[\],:{}\s]*$/.test(filtered))
return eval("("+src+")");else
throw new SyntaxError("Error parsing JSON, source is not valid.");};$.quoteString=function(string)
{if(string.match(_escapeable))
{return'"'+string.replace(_escapeable,function(a)
{var c=_meta[a];if(typeof c==='string')return c;c=a.charCodeAt();return'\\u00'+Math.floor(c/16).toString(16)+(c%16).toString(16);})+'"';}
return'"'+string+'"';};var _escapeable=/["\\\x00-\x1f\x7f-\x9f]/g;var _meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'};})(jQuery);

                          
