/**
 * @author matthias kertal
 * @version 1.01
 */

      (function($) {
  
        // plugin definition
   
        $.fn.mzProd = function(options) {
   
   	      // build main options before element iteration
          var opts = $.extend({}, $.fn.mzProd.defaults, options);
          // iterate and reformat each matched element

          return this.each(function() {

            var $this = $(this);
			var img=$this.find("img").get(0);
			
			$this.find(".productImgNav a").each(function(idx){
				
				$(this).mouseover(function(){ 
					var thumb=$(this).find("img").get(0);
					var src=thumb.src;
					$(this).parent().find("a.selected").removeClass("selected");
					
					$(img).attr("src",src);
					$(this).addClass("selected");
					
					var jqimg=(this.href && this.href!=src) ? this.href : "";
					
					var imgParent=$(img).parent().get(0);
					
					(jqimg) ?  $(imgParent).addClass("zoomImg") : $(imgParent).removeClass("zoomImg"); 
					
					$(img).attr("jqimg",jqimg);

				 });
				 
				 $(this).mouseout(function(){ 
					/*$(this).removeClass("selected");*/

				 });
				 
				 
				 $(this).click(function(){ 
					
					return false;

				 });
			});
			
            // build element specific options
           //jQuery.metadata.setType("elem", "script");
		   //var metadata=$this.metadata();

          });
 
        };
       
      })(jQuery);




function pickBox(objId,opt)
{
	this.objId=objId;
	this.obj=jQuery("#"+objId);
	this.products=new Array();
	this.opt=(typeof opt =="object") ? opt : {}; 
	
	this.buildByNode=function()
	{
		var parent=this;
		this.buildProductsByNode();
		
		if (jQuery("input[name='categories_id']").get(0)) {
			this.category_id = jQuery("input[name='categories_id']").get(0).value;
		}
		
		this.obj.find(".pickBoxSelect").css("display","block");
		
		this.obj.find("select").change(function(){
			parent.getPage(1);
			
		});
	}
	
	this.buildProductsByNode=function()
	{
		var parent=this;
		
		this.obj.find(".pickBoxProd").each(function(x){
			
			parent.products[x]=new pickBoxProduct();
			parent.products[x].buildByDomObj(this,parent);
			if(parent.products[x].selected==true) parent.selectProduct(parent.products[x]);
		});
	}
	
	
	this.buildByNodeIndex=function()
	{
		var parent=this;
		
		this.obj.find(".pickBoxProd").each(function(x){
			parent.products[x]=new pickBoxProduct();
		});
		
		this.obj.find(".pickBoxSelect").css("display","block");
		
		this.obj.find("select").data("parent",this);
		
		this.obj.find("select").change(function(){
			$(this).data("parent").nav.selectPage(1);
		});
	}
	
	
	this.replaceNav=function(html)
	{
		this.obj.find(".pickBoxNavR").html(html);
		this.buildNavByNode();
	}
	
	this.buildNavByNode=function()
	{
		this.nav=this.obj.find(".pickBoxNavR").get(0);
		var parent=this;
		
		if(this.nav)
		{
			this.nav.pages=new Array();
			this.nav.selectPage=function(p)
			{
				this.selected.className="";
				var oldPageNr=this.selected.pageNr;
				var newPageNr=this.pages[p].pageNr;
				
				this.selected=this.pages[p];
				this.pages[p].className="selected";
			}
			
			this.nav.nextPage=function()
			{
				var next=this.selected.pageNr+1;
				return (typeof this.pages[next] == "object") ? 	 next : false;
			}
			
			this.nav.prevPage=function()
			{
				var prev=this.selected.pageNr-1;
				return (typeof this.pages[prev] == "object") ? prev : false;
			}
			
			var links=jQuery(this.nav).find("a");
			
			for(var x=0;x<links.length;x++)
			{
				links[x].parent=this.nav;
				
				if(links[x].innerHTML*1>0)
				{
					links[x].pageNr=links[x].innerHTML*1;
					this.nav.pages[links[x].pageNr]=links[x];
					
					if(links[x].className=="selected") this.nav.selected=links[x];
				}
				
				links[x].onclick=function()
				{
					var param=jQuery.string(this.href).toQueryParams();
					
					if(this.className=="navNext") var page=this.parent.nextPage();
					else if(this.className=="navPrev") var page=this.parent.prevPage();
					else  var page=param.p;
					
					if(page) parent.getPage(page,param);
					
					return false;
				}
			}
		}
	}
	
	this.getPage=function(page,param)
	{
		var globalParam=jQuery.string(document.location.href).toQueryParams();
		
		if (typeof param != "object") {
			param={};
			param.id=globalParam.id;
		}
		
		if(!param.id>0) param.id=this.category_id;
		
		if(this.nav) this.nav.selectPage(page);
		param.p=page;
		param.SHOP=globalParam.SHOP;
		if($('#shop_id') && $('#shop_id').get(0) )param.SHOP=$('#shop_id').get(0).value;
		
		
		
		param.ord=this.obj.find("select").val();
		param.category_id=param.id; 
		var parent=this;
		
		jQuery.get("?jquery=2",param,
		function(result)
         {
			parent.removeProducts();
			jQuery.each(result.products,function(id,data){  parent.addProduct(data.img,data.url,data.name,data.price); });
			parent.replaceNav(result.nav);
		  
		 },"json");
	}
	
	this.selectProduct=function(obj)
	{
		if(this.selectedProduct)this.selectedProduct.select(false);
		this.selectedProduct=obj;
	}
	
	this.removeProducts=function()
	{
		jQuery.each(this.products,function(idx,obj){ obj.remove();  });
		this.products.length=0;
		this.obj.find(".pickBoxProducts div").remove();
	
	}
	
	this.addProduct=function(imgSrc,url,text,price)
	{
		var product=new pickBoxProduct();
		product.create(this,imgSrc,url,text,price);
		this.products[this.products.length]=product;
		
		var cell=this.obj.find(".pickBoxProducts").get(0);
		$(cell).append(product.domObj);
		
		var prodPerRow=(this.opt.prodPerRow) ? this.opt.prodPerRow : 5; 
		
		if(this.products.length%prodPerRow==0)
		{
			var trenner=document.createElement('div');
			trenner.className="pickBoxProdClear";
			cell.appendChild(trenner);
		}
	}
	/*	this.getProductById=function(id)
	{
		for(var x=0;x<this.products.length;x++)
		{
			if(this.products[x].product_id==id) return this.products[x];
		}
		return false;
	}*/
	
	
	this.checkPosition=function()
	{
		var target=$('#prodList');
		var result=this.checkPositionPage(target.get(0));
		
		if(result[1]<0)
		{
			
			
			var realOffset=this.cumulativeOffset($('#prodList').get(0));
			//$.scrollTo( '#prodList', 800, {easing:'elasout'} );
			
			var scrollTo =realOffset[1] - 20;
			
			$('html,body').animate({
				scrollTop: scrollTo
			}, 1000);
			
		}
	}
	
	this.cumulativeOffset= function(element) {
    var valueT = 0, valueL = 0;
    do {
      valueT += element.offsetTop  || 0;
      valueL += element.offsetLeft || 0;
      element = element.offsetParent;
    } while (element);
    return [valueL, valueT];
  }
	
	
	this.realOffset=function(element) {
    var valueT = 0, valueL = 0;
    do {
      valueT += element.scrollTop  || 0;
      valueL += element.scrollLeft || 0;
      element = element.parentNode;
    } while (element);
    return [valueL, valueT];
  }
	
	
	this.checkPositionPage= function(forElement) {
    var valueT = 0, valueL = 0;

    var element = forElement;
    do {
      valueT += element.offsetTop  || 0;
      valueL += element.offsetLeft || 0;

      // Safari fix
      if (element.offsetParent==document.body)
        if ($(element).css("position")=='absolute') break;

    } while (element = element.offsetParent);

    element = forElement;
    do {
      valueT -= element.scrollTop  || 0;
      valueL -= element.scrollLeft || 0;
    } while (element = element.parentNode);

    return [valueL, valueT];
  }
	
	
	
}
				
function pickBoxProduct()
{
	this.domObj;
	this.linkObj;
	this.imgObj;
	this.selected;
	
	this.buildByDomObj=function(domObj,parent)
	{
			this.domObj=$(domObj);
			this.parent=parent;
			this.linkObj=this.domObj.find("a").get(0); 
			this.imgObj=this.domObj.find("img").get(0); 
			if(this.imgObj.className=="selected") this.selected=true;

			var param=jQuery.string(this.linkObj.href).toQueryParams();
			this.product_id=param.selProdId;
			
			var parentProduct=this;
			$(this.linkObj).data("parentProduct",this);
			
			$(this.linkObj).click(function(){ $(this).data("parentProduct").select(true);return false; })
			
	}
	
	this.select=function(status)
	{
			if(!$("#prodList").get(0))
			{
				document.location.href=this.linkObj.href;
				return void(0);
			}
			
			
			if(status==false)
			{
				$(this.imgObj).removeClass("selected");
				this.selected=false;
			}
			else if(status==true && this.selected!=true)
			{
				$(this.imgObj).addClass("selected");
				var param=jQuery.string(this.linkObj.href).toQueryParams();
				var googleUrl=this.linkObj.href;
				this.setLoading(true);
				var parent=this;
				this.selected=true;
				this.parent.selectProduct(this);
					
				jQuery.get("?jquery=1",param,
       function(htmlResult)
         {
            $("#prodList").html(htmlResult);
			parent.setLoading(false);
			jQuery(".product").mzProd();
			jQuery(".jqzoom").jqueryzoom(jqZoomOptions);
			parent.parent.checkPosition();
			try{ 
			if(typeof pageTracker =="object")pageTracker._trackPageview(googleUrl);
			} catch(err) {}
		 });

			}
	}
	
	this.setLoading=function(status)
	{
		if(status==true)
		{
			this.loading=true;
			this.loadingImg=document.createElement("img");
			this.loadingImg.src="../img/loading.gif";
			this.loadingImg.className="loading";
			this.loadingImg.style.position="absolute";
			this.loadingImg.style.left="1px";
			this.loadingImg.style.top="1px";
			this.loadingImg.style.width="16px";
			this.loadingImg.style.height="16px";
			this.loadingImg.style.backgroundColor="#FFF";
			this.domObj.append(this.loadingImg);
		}
		else
		{
			this.loading=false;
			$(this.loadingImg).remove();
		}
	}
	
	this.create=function(parent,imgSrc,url,text,price)
	{
		this.parent=parent;
		this.domObj=document.createElement("div");
		this.domObj.className="pickBoxProd";
		
		this.linkObj=document.createElement("a");
		this.linkObj.href=url;
		
		this.imgObj=document.createElement("img");
		this.imgObj.width="102";
		this.imgObj.height="136";
		this.imgObj.src=imgSrc;
		
				
		var productText=document.createElement("div");
		productText.className="pickBoxProdName";
		productText.innerHTML=text;
		
		this.linkObj.appendChild(this.imgObj);
		this.domObj.appendChild(this.linkObj);
		this.domObj.appendChild(productText);
		
		if(typeof price !="undefined")
		{
			var productPrice=document.createElement("div");
			productPrice.className="pickBoxProdPrice";
			productPrice.innerHTML=price;
			this.domObj.appendChild(productPrice);
		}
		
		this.buildByDomObj(this.domObj,parent);
		
	}
	
	this.remove=function()
	{
		this.domObj.remove();
	}
}
				
				

function show_pic(id,url,width,height)
{
	if(width>180)
	{
		var left = Math.round((screen.width-width) / 2);
		var top =  Math.round((screen.height-height) / 2);
		var imgWin=window.open(url,"imgWin","location=0,status=0,scrollbars=0,left="+left+" ,top="+top+",width="+width+",height="+height);
		imgWin.focus();	
	}
	else
	{
		var img=document.getElementById(id);
		img.src=url;
	}
}

function showZoom(url,width,height)
{
	var left = Math.round((screen.width-width) / 2);
	var top =  Math.round((screen.height-height) / 2);
	var imgWin=window.open(url,"imgWin","location=0,status=0,scrollbars=0,left="+left+" ,top="+top+",width="+width+",height="+height);
	imgWin.focus();	
}

function add_to_cart(id)
{
	document.getElementsByName("add_to_cart")[0].value=id;
	var quant=document.getElementsByName("quant["+id+"]")[0].value;
	if (!quant >= 1) {
		quant = 1;
		document.getElementsByName("quant["+id+"]")[0].value=1;
	}
	document.getElementsByName("add_to_cart_nr")[0].value=quant;
	document.forms["products"].submit(); 
}