/*//////////////////////////////////////////////////

 * UI script for shop-pages
 * ----------------------------------------
 * @name shop_ui.js

 //////////////////////////////////////////////////*/
Number.prototype.sep1000=function () {
   var string = "" + +this;
   var pointIndex = string.indexOf(".");
   if( pointIndex == -1 ){
      return string + ".00";
   }else if( pointIndex == string.length - 2 ){
      return string + "0";
   }else {
      return string;
   }
};

(function($){
   $.fn.setItems = function(config){
	   if(!$(this).length)return null;
	   config=jQuery.extend({
	   },config);
	   var scope=this;
	   var list=$("dl.itemselect dd ul",this);
	   var desc=$("ul.setItemDetail",this);
	   var pholder=$("div.function em.price",this);
	   $("li img",list).bind({
		   mouseover:function(){
			   var i=$("img",list).index(this);
			   $("li",list).removeClass("on");
			   $("li",desc).removeClass("on");
			   $("li:eq("+i+")",list).addClass("on");
			   $("li:eq("+i+")",desc).addClass("on");
		   },
		   click:function(){
			   var cb=$("li:eq("+$("img",list).index(this)+") input:checkbox",desc);
			   var s=($(cb).attr("checked")==true)?false:true;
			   $(cb).attr("checked",s);
			   itemSelect(cb);
		   }
	   });
	   $("input:checkbox",desc).bind(($.support.opacity?"change":"click"),function(){itemSelect(this)});
	   function itemSelect(elm){
		   var i=$("input:checkbox",desc).index(elm);
		   if($(elm).attr("checked")==true){
			   $("li:eq("+i+")",desc).addClass("selected");
			   $("li:eq("+i+")",list).addClass("selected");
		   }else {
			   $("li:eq("+i+")",desc).removeClass("selected");
			   $("li:eq("+i+")",list).removeClass("selected");
		   }
		   sumup();
	   }

      function sumup(){
	      var s1=Number($("div#itemDetail em.price").html().replace(/,/g,""));
         var q1=Number($("div#itemDetail [name='q']").val());
         if( q1.toString() == 'NaN' )
            return;
         s1 = (s1*q1) * 100;
	      $("li.selected",desc).each(function(){
		      var s2 = Number($("dd.price em", this).html().replace(/,/g,""));
            var q2 = Number($("[name='q']", this).val());
            if( q2.toString() == 'NaN' )
               return;
            s1 += (s2*q2) * 100;
	      });
	      $(pholder).html((s1/100).sep1000());
      }

	   $("input:checkbox",desc).each(function(){itemSelect(this)});

      // bind name='q' changes.
      $("[name='q']").bind('change', function(){
         sumup();
      });
	   return this;
   };
})(jQuery);

(function($){
   $.fn.imageGallery = function(config){
	   if(!$(this).length)return null;
	   config=jQuery.extend({
	   },config);
	   var l=this;
	   var v=config.view;
	   var vp_w=$(v).find("li").width();
	   var vp_h=$(v).find("li").height();

      $("li a",l).mouseover(function(e){
		   $("li",l).removeClass("on");
		   $(this).parent().addClass("on").show();
		   $("li",v).removeClass("on").hide();
		   $("li:eq("+$("a",l).index(this)+")",v).addClass("on").show();
         adjustImgSize(v);
	   });
      return this;
   };
})(jQuery);

(function($){
$.fn.floatingPanel = function(config){
	return this.each(function(){
		if(!$(this).length)return null;
		config=jQuery.extend({
		},config);
		var t;
		var p=$($(this).attr("href"))
				.hide()
				.hover(_show,_hide);
		var scope=$(this)
				.hover(_show,_hide)
				.click(function(){return false});

		function _show(){
			clearTimeout(t);
			$(p).show();
			$(scope).addClass("selected");
		}
		function _hide(force){
			if(force){
				$(p).hide();
				$(scope).removeClass("selected");
			} else {
				t=setTimeout(function(){_hide(true)},500);
			}
		}
	});
};
})(jQuery);

(function($){
$.fn.shippingCostPanel = function(config){
	if(!$(this).length)return null;
	config=jQuery.extend({
	},config);
	$(this).floatingPanel();
	var scope=this;
	var d=$(this).next();
	var p=$($(this).attr("href"));
	$(p).find("a").click(function(){
		$(scope)
			.text($(this).text())
			.next()
				.remove()
				.end()
			.after($(this).next().clone());
		$(p).hide();
		return false;
	});

	return this;
};
})(jQuery);


(function($){
   $.fn.toClickCartButton = function(config){
      if(!$(this).length)return null;
      config=jQuery.extend({
      },config);
      var t;
      $(this).click(function(){
         try{
            $("div#feedBackCartButton div#nowPutting").show();
            $("div#feedBackCartButton div#cartDirect").html("");
            $("div#feedBackCartButton div#cartDirect").hide();
            $("div#feedBackCartButton dl.itemList").hide();
            $("div#feedBackCartButton div#loginPopup").hide()
            var params = $('form#cartform').serialize();
            var host = window.location.host.split('.')[0];
            var url = "http://cart.rakuten.cn/std/putDirect?sn=" + host + "&" + params;
	         var b=$(this).closest("div.cartFunction");
	         var x=$(b).position().left-($("div#feedBackCartButton").width()-$(b).width())/2;
	         var y=$(b).position().top; //- $("div#feedBackCartButton").height();

	         $("div#feedBackCartButton").css({
	            top:y,
	            left:x
	         });
            if(document.getElementById("renderTable") && $("input[name=v]:checked").val() == null){
                $("div#feedBackCartButton div#nowPutting").hide();
                errorMsg = '<p style="border-bottom:1px solid #BF0000;font-size;115%;font-weight:bold;text-align:center;">放入购物车失败</p><p style="font-size:115%;padding-top:7px;text-align:center;">请选择商品规格。</p>';
                $("div#feedBackCartButton div#cartDirect").html(errorMsg);
                $("div#feedBackCartButton div#cartDirect").show();
                $("div#feedBackCartButton").show();
            }else{ 
            var request = '<iframe frameborder="0" src="' + url + '"></iframe>';
            $("div#feedBackCartButton div#cartDirect").html(request);
            window.cart_callback = function(result){
               $("div#feedBackCartButton div#nowPutting").hide();
               $("div#feedBackCartButton div#cartDirect").show();
               if( result == "#error"){
                  $("div#feedBackCartButton iframe").css("height", "140px");
            	  $("div#feedBackCartButton dl.itemList").show();
                  $("div#feedBackCartButton dl.itemList .success").hide();
                  $("div#feedBackCartButton dl.itemList .error").show();
               }else{
                  $("div#feedBackCartButton iframe").css("height", "60px");
            	  $("div#feedBackCartButton dl.itemList").show();
                  $("div#feedBackCartButton dl.itemList .success").show();
                  $("div#feedBackCartButton dl.itemList .error").hide();
               }
            };
	         $("div#feedBackCartButton").fadeIn(200,_hide);
            }
	    $("div#feedBackCartButton a.uiPanelClose").one("click",function(){
               _hide(true);
               return false;
            });
            return false;
         }catch(e){
         }
         return false;
      });

	   function _hide(force){
		   if(force){
			   $("div#feedBackCartButton").fadeOut(500,function(){
            });
		   } else {
			   //t=setTimeout(function(){_hide(true);},4500);
		   }
	   }

      return t;
   };
})(jQuery);

(function($){
    $.fn.toClickBuyButton = function(config){
        if(!$(this).length)return null;
        config=jQuery.extend({
        },config);
        var t;
        $('#loginForm').bgiframe();
        $('#loginForm').dialog({
            dialogClass: "loginPopup",
            bgirame: false,
            autoOpen: false,
            draggable: false,
            resizable: false,
            modal: true,
            width: 380,
            height: 70,
            position: ['center','center'],
            overlay:{ opacity:0.3, background:'#225B7F' }
        });
        $(".ui-dialog").css('padding', 0);
        $(".ui-dialog-titlebar").hide();
        $("#progress").progressbar('enable');
        $(this).click(function(){
        try{
            if(document.getElementById("renderTable") && $("input[name=v]:checked").val() == null){
                $('#loginForm').dialog('open');
                $('#loginTitle').css('display','none');
                $('#closePop').css('display','none');
                $('#nowPuttingDirect').css('display','none');
                $('#loginForm').css('height','100px');
                errorMsg = '<p style="border-bottom:1px solid #BF0000;font-size;115%;font-weight:bold;text-align:center;padding:10px">放入购物车失败</p><p style="font-size:115%;padding-top:7px;text-align:center;">请选择商品规格。</p>';
                $("div#loginForm div#loginframe").html(errorMsg);
            }else{ 
            var request = '<iframe frameborder="0" src="' + url + '"></iframe>';
            $('#closePop').css('display','none');
            $('#loginForm').css('overflow-x','hidden');
            $('#loginForm').css('overflow-y','hidden');
            $('#loginframe').css('display','none');
            $('#loginForm').css('background','#FFFFFF');
            $('#loginForm').css('padding','2em 1em 0.5em');
            $('#loginForm').dialog('open');
            $('#nowPuttingDirect').css('display','block');
            $('#loginframe').css('display','block');
            $('#loginForm').css('padding','0.5em 1em');
            $('#loginForm').css('height','390px');
            $('#loginForm').dialog('option','position',['center','center']);
            $('#nowPuttingDirect').css('display','none');
            $('#loginTitle').css('display','block');
            $('#loginframe').css('display','block');
            var paramsArr = $('form#cartform').serializeArray(); 
            var query = '';
            var param_map = {'s':'shopId', 'r':'retailTagId', 'i':'itemId', 'im':'itemMappingId', 'q':'quantity', 'v':'variationId'};
            jQuery.each(paramsArr, function(i, field){
                if (field.name == 'idx') {
                } else {
                    query = query + '&' + param_map[field.name] + '=' + field.value;
                }
            });
            var url = "https://checkout.rakuten.cn/std/cna/checkoutDirect?lang=zh_CN" + query;
            var request = '<iframe id="targetFrame" height="260px" width="290px" frameborder="0" scrolling="no" style="visibility:visible;border:none;" src="' + url + '"></iframe>';
            $("div#loginForm div#loginframe").html(request);
            }
        }catch(e){
        }
        return false;
    });
    $('.jqmClose').bind('click',function(){
        $('#targetFrame').attr('src','about:blank');
        $('#loginForm').dialog('close');
    });
    $('#closePop').bind('click',function(){
        $('#targetFrame').attr('src','about:blank');
        $('#loginForm').dialog('close');
    });
  };
})(jQuery);

/** jQuery plugin **/
(function($){
   $.fn.renderHiAccounts = function(username, config){
      if(!$(this).length)return null;
      config=jQuery.extend({
      },config);
      var self = $(this);
      var onTmpl = $('li.on_template', this).html();
      var offTmpl = $('li.off_template', this).html();
      var Hi = im.vendor.rakuten.Service;
      (function(){
         var retries = 0;
         function cb(status, userList){
            if(status){
               for(var i=0; i<userList.length; i++){
                  var user = userList[i];
                  var tmpl = user.status === 1 ? onTmpl : offTmpl;
                  var html = Mustache.to_html(tmpl, {
                     username : user.username
                  });
                  self.append('<li>' + html + '</li>');
               }
               $("a.btn_IM_on", self).click(function(e){
                  Hi.startBaiduHi("message", "", username,
                                  {from: 'rakuten'});
               });
            }
         };
         Hi.getRelatedUsersByUsername(username, cb);
      })();
   };
})(jQuery);

///////////////boot/////////////////////////////////
$(function(){
   $("div#setItem").setItems();
   $("div#r-itemImages ul.list").imageGallery({"view":$("div#r-itemImages ul.scope")});
   Shadowbox.init({
      counterType:"skip",
      overlayOpacity: 0.8,
      handleOversize:"drag"
   });
   $("a.uiTriggerFloatingPanel").shippingCostPanel();
   $("div.cartFunction div.btnCart button").toClickCartButton();
   $("div.cartFunction div#item_reg_button_buy button").toClickBuyButton();
});

/////stock check/////////////
$(function(){
    var type = 0;
    if(document.getElementById("stock")) { //textbox
        if(document.getElementById("renderTable")){
            type = 1; //textbox-table
        }else{
            type = 2; //textbox
            var elm = document.getElementById("stock");
            var stock = elm.innerHTML;
            var stock_split = stock.split(" : ");
        }
    }else if(document.getElementById("select_stock")){
        if(document.getElementById("renderTable")){
            type = 3; //select-table
        }else{
            type = 4;
            var elm = document.getElementById("select_stock");
            var stock = elm.innerHTML;
            var stock_split = stock.split(" : ");
        }
    }else{
        return false;
    }
    init();

    function init(){
        switch(type){
            case 1:
                if(isNaN($("#order_num").val()) == true || $("#order_num").val() == ""){
                    disableButton();
                }else{
                    //table_check(type);
                }
                break;
            case 2:
                if(isNaN($("#order_num").val()) == true || $("#order_num").val() == ""){
                    disableButton();
                }else{
                    if(stock_split[1] != null){
                        check_order(stock_split[1]);
                    }else{
                        underStock();                    }
                }
                break;
            case 3:
                break;
            case 4:
                if(stock_split[1] != null) {
                    check_select_order(stock_split[1]);
                }else{
                    underStock();
                }
                break;
        }
    }


    $("#order_num").keyup(function(){
        var order_num = $("#order_num").val()
        if(isNaN(order_num) == false && order_num != "" && parseInt(order_num) > 0){
            if(document.getElementById("renderTable")){
                table_check(type);
            }else{
                if(stock_split[1] != null){
                    check_order(stock_split[1]);
                }else{
                    underStock();
                }
            }
        }else{
            disableButton();
        }
    });
    $("#order_select").change(function(){
        if(document.getElementById("renderTable")){
            table_check(type);
        }else{
            if(stock_split[1] != null){
                check_select_order(stock_split[1]);
            }else{
                underStock();
            }
        }
    });
    $("input[name=v]:radio").change(function(){
    if(type == 1){
        if(isNaN("#order_num") == true  || $("#order_num").val() == ""){
            disableButton();
        }
    }
    table_check(type);
    });
});

function table_check(type){
    var tmp = $("input[name=v]:checked").val();
    if(tmp != null && tmp != ""){
        var elm = document.getElementById('vari_inventory_' + tmp);
        if(elm != null){
           var stock = elm.innerHTML;
           if(type == 1){
               check_order(stock);
           }else if(type == 3){
               check_select_order(stock);
           }
        }else{
           underStock();
        }
    }else{
        disableButton();
    }
}
function check_order(stock) {
    var order = $("#order_num").val();
    if(isNaN(order) == true  || $("#order_num").val() == ""){
        disableButton();
    }else{
        var stock = parseInt(stock);
        var order = parseInt(order);
        if(0 < order && order <= stock || isNaN(stock) == true){
            underStock();
        }else{
            outOfStock();
        }
    }
}
function check_select_order(stock) {
    var elm = $('#[order_select] option:selected').text();
    if(elm != null){
        var stock = parseInt(stock);
        var order = parseInt(elm);
        if(0 < order && order <= stock || isNaN(stock) == true){
            underStock();
        }else{
            outOfStock();
        }
    }else{
        disableButton();
    }
}
function outOfStock(){
    $(".cartFunction span button").attr("disabled","disabled");
    $(".cartFunction span button").css("cursor","text");
    $("div.btnBuy button, div.btnCart button").css("display","none");
    $("div.btnBuy .button, div.btnCart .button").css("display","inline-block");
    $("#outOfStock").css("display","block");
}
function underStock(){
    $(".cartFunction span button").attr("disabled","");
    $("div.btnBuy button, div.btnCart button").css("display","inline-block");
    $("div.btnBuy .button, div.btnCart .button").css("display","none");
    $(".cartFunction span button").css("cursor","pointer");
    $("#outOfStock").css("display","none");
}
function disableButton(){
    outOfStock();
    $("#outOfStock").css("display","none");
}                       

