//JQUERY CALLBACK
function jqueryCallback(target){
	// target = container of ajax-updated content
	// initialize image gallery for expanded product details
	//initCustomCheckboxes();
	if(target=="minikurv") {
		if($("#minikurv").children().size() > 0) {
			$("#minikurv").addClass("infobaritemactive");
		} else {
			$("#minikurv").removeClass("infobaritemactive");
		}
	} else if(target=="content") {
		initFilter(0);
		initProductGallery();
	} else {
		initProductGallery();
		//initCheckOutGallery;
		if($("div.productdetailbox:visible","#"+target).length>0) {
			initImageGallery(target);
		}
	}


};

// PRODUCT DETAILS IMAGES
function initImageGallery(target) {
	var imagelist = $("div#productimagelist_"+target,"div.productdetailbox");
	var thumbslist = $("ul#productthumbslist_"+target,"div.productdetailbox");
	if($("img", imagelist).length>1 && $("li",thumbslist).length==0) {
		imagelist.cycle({ 
	        fx:     "fade", 
	        speed:  "500", 
	        timeout: 0, 
	        pager:  thumbslist, 
	        pagerAnchorBuilder: function(idx, slide) { 
	        	return '<li><a name=""><img class="thumb" src="' + slide.src + '" /></a></li>'; 
	        }	
	    });
	    var interval = setInterval(function(){ 
		  if($("img", imagelist).length == $("li", thumbslist).length) {
		    clearInterval(interval); 
			thumbslist.jcarousel({ 
				scroll: 3,
				initCallback: function(){
					$("li",thumbslist).hoverClass("sfHover");
					//remove navi if not needed
					if($("img", imagelist).length<4){ 
						$(".jcarousel-next-horizontal, .jcarousel-prev-horizontal").css('opacity', 0);
						if($("img", imagelist).length==2){ $(".jcarousel-clip").css("left","30px"); } 
					} 
					//pngfix for IE<6
					else if ($.browser.msie && $.browser.version.substr(0,1)<7) {
						$(".jcarousel-next-horizontal, .jcarousel-prev-horizontal").pngfix();
					}
				}
			 });
		  }
		}, 500);  
	}       
}	    

// PRODUCT GALLERY
function initProductGallery() {
	if($("ul.productgallery") && $("ul.productgallery").children().length>1){
		$("ul.productgallery").cycle({
			fx: "scrollHorz",
			speed:  "500",
			timeout: 0,
			next: "#next",
			prev: "#prev",
			easing: "swing",
			pager: "#index", 
			after: function (curr, next, opts) {
				$("#tot").html(opts.slideCount);
				$("#curr").html(opts.currSlide+1);
			}
		});
	}		
}	 

// CHECKOUT GALLERY
/*function initCheckOutGallery() {
	if($("ul.checkoutgallery") && $("ul.checkoutgallery").children().length>1){
		$("ul.checkoutgallery").cycle({
			fx: "scrollHorz",
			speed:  "500",
			timeout: 0,
			next: "#next",
			prev: "#prev",
			easing: "swing",
			pager: "#index", 
			after: function (curr, next, opts) {
				$("#tot").html(opts.slideCount);
				$("#curr").html(opts.currSlide+1);
			}
		});
	}	
}*/

//SUCKERFISH HOVER
$.fn.hoverClass = function(c) {
	return this.each(function(){
		$(this).hover( 
			function() { $(this).addClass(c);  },
			function() { $(this).removeClass(c); }
		);
	});
};	

// PARAMETER FUNCTIONS
function paramsToPath(obj,del1,del2) {
	if(obj) {
		var pairs = [];
		var path = "";
		var del1 = del1;
		var del2 = del2;
		$.each(obj, function(i,val) { 
			if(val!=""){ pairs.push(i+del1+encodeURIComponent(val)); }//values are encoded to pass urls etc. 
		});
		path = pairs.join(del2);
		return path;
	}
}
function getParams(from) {
	var params = {};
	if($(from).attr("params")) {
		var paramset = decodeURIComponent($(from).attr("params"));//values are decoded to make urls usable again.
		var splitex = /,(?=[^,]+?:)/;
		$.each(paramset.split(splitex), function(){		
			var thiskey = this.split(":")[0];
			// var thisval = this.split(":")[1]; 
			// enhanced for url
			var thisval = trim(this.substr(this.split(":")[0].length+1,this.length));
			// get values from other attributes  
			if(thisval.substr(0,4)=="get(") {
				var tmpval = thisval.substr(4,thisval.length);
				tmpval = tmpval.substr(0,tmpval.length-1);
				var thisval = $(from).attr(tmpval);
				}		
			tmpobj = {};
			eval("tmpobj." + thiskey + "=thisval");
			jQuery.extend(params,tmpobj);	
		});
		return params;
	}
}
function setParam(from,setkey,setval) {	
	var params = getParams(from);
	tmpobj = {};
	eval("tmpobj." + setkey + "=setval");
	jQuery.extend(params,tmpobj);
	$(from).attr("params",paramsToPath(params,":",","));
}

// PATH FUNCTIONS
function parsePath(searchstring) {
	var crumbs = location.pathname.split("/");
	var nextcrumb = false;
	$.each(crumbs, function(i,val) {
      if(val==searchstring){ 
      	nextcrumb = crumbs[i+1];
      };
    });	
    return nextcrumb; 
	/*  
	non-jquerified: 
	for (var i=0;i<=nodes.length-1;i++){
		if (nodes[i]==searchstring){
			//return nodes[i+1];
			alert(nodes[i+1]);
			}
		}
	*/	
}

//BASKET FUNCTIONS
function showBasket(obj) {
	obj.fadeIn("300"); 
	}
function hideBasket(obj) {
	obj.fadeOut("100");
	}

//FILTER FUNCTIONS
function countCheckedFilterItems() {	
	var checkcount = 0;
	if($("#productfilter").is(".filteractive") == true){ checkcount = 1 }
	else {
		$("input[type=checkbox]", "#productfilter").not("#showprices").each( function(i){
			if($(this).is(":checked")){
				checkcount++;		
			}
		});
	}
	return checkcount;
}
				
function showFilter(speed) {
	$("#filterlistcontainer").animate({ "height": "show"}, speed, "", function(){
        $("#buttonlistfilterinactive").hide();
        $("#buttonlistfilteractive").show();
    });
    $("div.productgalleryblock").animate({ "height": "hide"}, speed, "", function(){});
}

function hideFilter(speed) {
	$("#filterlistcontainer").animate({ "height": "hide"}, speed, "", function(){
        $("#buttonlistfilterinactive").show();
        $("#buttonlistfilteractive").hide();
    });
    $("div.productgalleryblock").animate({ "height": "show"}, speed, "", function(){});
}

function enableFilter(checkcount) { //enables or disables the filter's action buttons and controls return-key binding
	var fm = $("form[name=thefilter]");
	var sb = $("input[name=submitfilter]",fm);
	if(checkcount>0) {
		sb.removeAttr("disabled").removeClass("disabled");
		fm.bind("keypress", function(e) { 
			if ( e.keyCode == 13 ){
				sb.click();
			}
		 });
	} else {
		sb.attr("disabled","disabled").addClass("disabled");
		fm.unbind("keypress");
	}
	return checkcount;
}
function initFilter(speed) {
	if($("form[name=thefilter]").length>0){	
		var checkcount = countCheckedFilterItems();
		if(checkcount>0) {
			showFilter(speed);
			enableFilter(1);	
		} else {	
			hideFilter(speed);
			enableFilter(0);
		}
		//checkbox binding
		$("input[type=checkbox]",".filterlistitem").live("click", function() { 
			//$(this).checkBox('reflectUI');
			var checkcount = countCheckedFilterItems();
			enableFilter(checkcount); 
		});	
		
	}		
}
function removeAllFilterCriteria() {	
	$(":checkbox", "form[name=thefilter]").not("#showprices").removeAttr("checked");
	//.checkBox('changeCheckStatus', false);
}
function resetFilter() {
	removeAllFilterCriteria();
	hideFilter(200);		
	var listaction = $("form[name=thefilter]").attr("action");
    var postvals = '&filterlist=reset';
  	asyncloadHTML(listaction,'POST',postvals);
}
function initCustomCheckboxes() {
    //$(":checkbox","#productfilter").checkBox();
    //$(":checkbox","td.art_compare").checkBox();	
}


function updateFilter(form){
 	var listaction = $(form).attr("action");
	var filterlist = "";
	$("input[type=checkbox]:checked",$(form)).each(function(){
		var fname = $(this).attr("name");
		var ftype = $(this).attr("data-type");
		var fparent = $(this).attr("data-parentid");
		var fvalue = "";
		var txt = $("input[type=text]",$(this).parent());
		if( txt.length ){ 
			fvalue = txt.val().replace(",",".") * txt.attr("data-prefix");
		} else {
			fvalue = $(this).val();
		};
		filterlist += fname+","+fvalue+","+ftype+","+fparent+";";
	});
	var postvals = '&filterlist='+filterlist;
	asyncloadHTML(listaction,'POST',postvals);
	/*
	ID,Value,Type,ParentID,Param
	Types
	2    String
	3    Boolean
	4    List (strict)
	6    Integer
	*/		
}

$(document).ready(function() {

	// INFOBAR	
	$(".itembox-basket-inactive").live("mouseenter", function(event) {
		showBasket($(this).next());
	});
	$(".itembox-basket-active").live("mouseleave", function(event) {
		 hideBasket($(".itembox-basket-active","#minikurv"));
	});
	/*$("body").click(function(event) {
	   if ($(event.target).closest(".itembox-basket-active","#minikurv").length==0) {
	       hideBasket($(".itembox-basket-active","#minikurv"));
	   };
	});*/
	
	$("#fq").focus(function() {
		if( this.value == this.defaultValue ) {
			this.value = "";
		}
	}).blur(function() {
		if( !this.value.length ) {
			this.value = this.defaultValue;
		}
	});

    // CUSTOM CHECKBOXES
    initCustomCheckboxes();
	
	// FILTER
	initFilter();
	$("#showfilter").live("click", function(){ showFilter(200); });
	$("#resetfilter").live("click", function() { resetFilter(); });
	//$("#hidefilter").live("click", function(){ hideFilter(200); });
	//$("#removecriteria").live("click", function() { removeAllFilterCriteria(); });
	$("#submitfilter").live("click", function() { $("form[name=thefilter]").submit(); });
	$("input[type=text]","form[name=thefilter]").live("focus",function(){  
		//$("input[type=checkbox]", $(this).parent()).checkBox('changeCheckStatus', true);
		$("input[type=checkbox]", $(this).parent()).attr("checked",true);
		enableFilter(1);
	});
	$("form[name=thefilter]").live("submit",function(){  
	      updateFilter($(this));
	      return false;
   });

	// PRODUCT OFFERS
	initProductGallery();
	//initCheckOutGallery();

	// UPDATE BASKET ON RETURN	
	$("input.textfield_qty").live("keydown", function(e){ 
		var code = (e.keyCode ? e.keyCode : e.which);
		if(code == 13 || code == 18) { 
			e.preventDefault();
			$(".btn_basketupdate",$(this).parent()).click();// productblocktriple
			$(".btn_basketupdate",$(this).parent().next()).click();// productlisttable
			$(".btn_basketupdate",$(this).parent().parent().next()).click();// minibasket
		}
	});
	
	//TOGGLE A-LIST
	$("a.togglealist").live("click", function(){
		var box = $(this).parents(".productrelationbox");
		$("tr[data-acctype=alist], tr[data-acctype=blist], tr.detail, a.showalist, a.showblist", box).toggle();
	});
	
	
	//SECTION MENU
	$("li a","ul.autocollapsing").live("click", function() {
		var item = $(this).parent();
		var list = $(this).parents("ul.autocollapsing");
		//set current
		$("a",list).removeClass("current");
		$(this).addClass("current");
		//hide them all
		$("ul",list).hide();
		//show them needed	
		item.parents("ul").show();
		item.children("ul").first().show();
	});


});	
