﻿$(function(){
 jQuery.extend(
 {
  /**
   * @see  将json字符串转换为对象
   * @param   json字符串
   * @return 返回object,array,string等对象
   */
  evalJSON : function (strJson)
  {
   return eval( "(" + strJson + ")");
  }
 });
 
 jQuery.extend(
 {
  /**
   * @see  将javascript数据类型转换为json字符串
   * @param 待转换对象,支持object,array,string,function,number,boolean,regexp
   * @return 返回json字符串
   */
  toJSON : function (object)
  {
   var type = typeof object;
   if ('object' == type)
   {
    if (Array == object.constructor)
     type = 'array';
    else if (RegExp == object.constructor)
     type = 'regexp';
    else
     type = 'object';
   }
      switch(type)
   {
         case 'undefined':
       case 'unknown': 
     return;
     break;
    case 'function':
       case 'boolean':
    case 'regexp':
     return object.toString();
     break;
    case 'number':
     return isFinite(object) ? object.toString() : 'null';
       break;
    case 'string':
     return '"' + object.replace(/(\\|\")/g,"\\$1").replace(/\n|\r|\t/g,
       function(){   
                 var a = arguments[0];                   
        return  (a == '\n') ? '\\n':   
                       (a == '\r') ? '\\r':   
                       (a == '\t') ? '\\t': ""  
             }) + '"';
     break;
    case 'object':
     if (object === null) return 'null';
        var results = [];
        for (var property in object) {
          var value = jQuery.toJSON(object[property]);
          if (value !== undefined)
            results.push(jQuery.toJSON(property) + ':' + value);
        }
        return '{' + results.join(',') + '}';
     break;
    case 'array':
     var results = [];
        for(var i = 0; i < object.length; i++)
     {
      var value = jQuery.toJSON(object[i]);
           if (value !== undefined) results.push(value);
     }
        return '[' + results.join(',') + ']';
     break;
      }
  }
 });
})

function formatNumber(number,pattern){

    var str= number.toString();
    var strInt;
    var strFloat;
    var formatInt;
    var formatFloat;

    if(pattern.match(/\./g)){
        formatInt        = pattern.split('.')[0];
        formatFloat        = pattern.split('.')[1];
    }else{
        formatInt        = pattern;
        formatFloat        = null;
    }
    if(str.match(/\./g)){
        if(formatFloat!=null){
            var tempFloat    = Math.round(parseFloat('0.'+str.split('.')[1])*Math.pow(10,formatFloat.length))/Math.pow(10,formatFloat.length);
            strInt        = (Math.floor(number)+Math.floor(tempFloat)).toString(); 
            var newReg        = new RegExp(/\./g);
           // strFloat    = /\./g.test(tempFloat.toString())?tempFloat.toString().split('.')[1]:'0';  
          
            strFloat    =  tempFloat.toString().match(newReg)?tempFloat.toString().split('.')[1]:'0';   

        }else{
            strInt        = Math.round(number).toString();
            strFloat    = '0';
        }
    }else{
        strInt        = str;
        strFloat    = '0';
    }

    if(formatInt!=null){
        var outputInt    = '';
        var zero        = formatInt.match(/0*$/)[0].length;
        var comma        = null;
        if(formatInt.match(/,/g)){
            comma        = formatInt.match(/,[^,]*/)[0].length-1;
        }
        var newReg        = new RegExp('(\\d{'+comma+'})','g');

        if(strInt.length<zero){
            outputInt        = new Array(zero+1).join('0')+strInt;
            outputInt        = outputInt.substr(outputInt.length-zero,zero)
        }else{
            outputInt        = strInt;
        }

        var 
        outputInt            = outputInt.substr(0,outputInt.length%comma)+outputInt.substring(outputInt.length%comma).replace(newReg,(comma!=null?',':'')

+'$1')
        outputInt            = outputInt.replace(/^,/,'');

        strInt    = outputInt;
    }


    if(formatFloat!=null){
        var outputFloat    = '';
        var zero        = formatFloat.match(/^0*/)[0].length;
        if(strFloat.length<zero){
            outputFloat        = strFloat+new Array(zero+1).join('0');
            //outputFloat        = outputFloat.substring(0,formatFloat.length);
            var outputFloat1    = outputFloat.substring(0,zero);
            var outputFloat2    = outputFloat.substring(zero,formatFloat.length);
            outputFloat        = outputFloat1+outputFloat2.replace(/0*$/,'');
        }else{
            outputFloat        = strFloat.substring(0,formatFloat.length);
        }

        strFloat    = outputFloat;
    }else{
        if(pattern!='' || (pattern=='' && strFloat=='0')){
            strFloat    = '';
        }
    }

    return strInt+(strFloat==''?'':'.'+strFloat);
}

function adv_format(value,num) //四舍五入
{
var a_str = formatnumbers(value,num);
var a_int = parseFloat(a_str);
if (value.toString().length>a_str.length)
{
var b_str = value.toString().substring(a_str.length,a_str.length+1)
var b_int = parseFloat(b_str);
if (b_int<5)
{
return a_str
}
else
{
var bonus_str,bonus_int;
if (num==0)
{
bonus_int = 1;
}
else
{
bonus_str = "0."
for (var i=1; i<num; i++)
bonus_str+="0";
bonus_str+="1";
bonus_int = parseFloat(bonus_str);
}
a_str = formatnumbers(a_int + bonus_int, num)
}
}
return a_str
}
function formatnumbers(value,num) //直接去尾
{
var a,b,c,i
a = value.toString();
b = a.indexOf('.');
c = a.length;
if (num==0)
{
if (b!=-1)
a = a.substring(0,b);
}
else
{
if (b==-1)
{
a = a + ".";
for (i=1;i<=num;i++)
a = a + "0";
}
else
{
a = a.substring(0,b+num+1);
for (i=c;i<=b+num;i++)
a = a + "0";
}
}
return a
}
function GetCookie(cookiename)
{
    var thebigcookie = document.cookie;
    var firstchar = thebigcookie.indexOf(cookiename);
    if (firstchar != -1) {
        firstchar += cookiename.length + 1;
        lastchar = thebigcookie.indexOf(";",firstchar);
        if(lastchar == -1) lastchar = thebigcookie.length;
        return unescape(thebigcookie.substring(firstchar, lastchar));
    }
    return "";
}
 
function SetCookie(cookiename,cookievalue,cookieexpdate)
{
    document.cookie = cookiename + "=" + escape(cookievalue) + "; path=/; expires=" + cookieexpdate.toGMTString();
}

function GetProduct()
{
    var str = GetCookie('shopcar');
    var obj = [];
    if (str != null && str != '') obj = $.evalJSON(str);
    return obj;
}

function AddProduct_(id,count_)
{

   var count = count_;
   var sum = 0.0;
   var obj = GetProduct();
   var i=0;

   for (i=0;i<obj.length;i++)
   {
      if (obj[i][0]!=null&&obj[i][0]!=""&&id==obj[i][0])
      {
         obj[i][1]=(parseInt(obj[i][1])+parseInt(count));
         break;
      }
   }

   if (i==obj.length) 
   {
      obj.push([id,count,"1"]);
   }

   var itemno_="";
   var quantity_="";

   /*for(var i=0;i<obj.length;i++)
   {
      itemno_+=obj[i][0]+",";
      quantity_+=obj[i][1]+",";
   }*/ 
  
   var date = new Date(); 
   var ms = 1*24*3600*1000; //有效期一天
   date.setTime(date.getTime() + ms); 
   SetCookie('shopcar', $.toJSON(obj), date);
}

function AddProduct(id,count_,ev)
{

   var count = count_;
   var sum = 0.0;
   var obj = GetProduct();
   var i=0;

   for (i=0;i<obj.length;i++)
   {
      if (obj[i][0]!=null&&obj[i][0]!=""&&id==obj[i][0])
      {
         obj[i][1]=(parseInt(obj[i][1])+parseInt(count));
         break;
      }
   }

   if (i==obj.length) 
   {
      obj.push([id,count,"1"]);
   }

   var itemno_="";
   var quantity_="";

   /*for(var i=0;i<obj.length;i++)
   {
      itemno_+=obj[i][0]+",";
      quantity_+=obj[i][1]+",";
   }*/ 
   getDiscount(itemno_,obj.length,ev);
   showdiv('divalt1','',ev);  //显示购物车
   
   var date = new Date(); 
   var ms = 1*24*3600*1000; //有效期一天
   date.setTime(date.getTime() + ms); 
   SetCookie('shopcar', $.toJSON(obj), date);
}

function RestQuantity(id,count_)
{
   var count = count_;
   var sum = 0.0;
   var obj = GetProduct();
   var i=0;
   for (var i=0;i<obj.length;i++)
   {
      if (obj[i][0]!=null&&obj[i][0]!=""&&id==obj[i][0])
      {
         obj[i][1]=(parseInt(count));
         break;
      }
    }
 
    var date = new Date(); 
    var ms = 1*24*3600*1000;//有效期一天 
    date.setTime(date.getTime() + ms); 
   SetCookie('shopcar', $.toJSON(obj),  date);
}



function RestQuantity_(id,count_)
{
   var aryid=id.split(",");
   var count=count_.split(",");
   var obj = GetProduct();
   var i=0;
   var s=0;
   for(var s=0;s<aryid.length;s++)
   {  
     for (var i=0;i<obj.length;i++)
     {
       if (obj[i][0]!=null&&obj[i][0]!=""&&aryid[s]==obj[i][0])
       {
          obj[i][1]=(parseInt(count[s]));
	  obj[i][2]="1";
          break;
          
       }
     }
     if (i==obj.length) 
     {
      	obj.push([aryid[s],count[s],"1"]);
     }
   }
   
   var date = new Date(); 
   var ms = 1*24*3600*1000; //有效期一天
   date.setTime(date.getTime() + ms); 
   SetCookie('shopcar', $.toJSON(obj),  date);
}


//标记cookie中商品是否选中
function RestSelect(id,type)
{
   var obj = GetProduct();
   for (var i=0;i<obj.length;i++)
   {
      if (obj[i][0]!=null&&obj[i][0]!=""&&id==obj[i][0])
      {
         obj[i][2]=type;
         break;
      }
    }
    var date = new Date(); 
    var ms = 1*24*3600*1000; //有效期一天
    date.setTime(date.getTime() + ms); 
    SetCookie('shopcar', $.toJSON(obj),  date);
}

function clearShopCar()
{
   var result=[];
    var obj = GetProduct();
    for (var i=0;i<obj.length;i++)
        if (obj[i][2]=="0"){result.push(obj[i]);
    }
    var date = new Date(); 
    var ms = 1*24*3600*1000; //有效期一天
    date.setTime(date.getTime() + ms); 
    SetCookie('shopcar', $.toJSON(result), date);
   
}

function DeleteProduct(id)
{
    var result=[];
    var obj = GetProduct();
    for (var i=0;i<obj.length;i++)
    {
    	if (id!=obj[i][0]&&obj[i][0]!="")
    	{
    		result.push(obj[i]);
    	}
    }
    var date = new Date(); 
    var ms = 1*24*3600*1000; //有效期一天
    date.setTime(date.getTime() + ms); 
    SetCookie('shopcar', $.toJSON(result), date);
}

function DeleteAllProduct(id)
{

    var result=[];
    var obj = GetProduct();
    for (var i=0;i<obj.length;i++)
    {
    	if (id.indexOf(obj[i][0])==-1)
    	{
    		result.push(obj[i]);
    	}
    }
    var date = new Date(); 
    var ms = 1*24*3600*1000;//有效期一天 
    date.setTime(date.getTime() + ms); 
    SetCookie('shopcar', $.toJSON(result), date);
}

function ForDight(Dight,How) 
{ 
   Dight = Math.round (Dight*Math.pow(10,How))/Math.pow(10,How); 
   return Dight; 
}
/**
id:商品itemno
count_:购买数量
ev:事件
**/
function initData()
{
   var obj = GetProduct();
   var ev="1";
    var itemno_="";
   var quantity_="";
   var s=0;
   for(var i=0;i<obj.length;i++)
   {
      itemno_+=obj[i][0]+",";
      quantity_+=obj[i][1]+",";
      s++;
   } 
   getDiscount(itemno_,s,ev);
}
function showdiv(objstr,str,ev)
{//根据鼠标位置显示对象,参数ev为event
 var ObjX,ObjY;//对象的位置(x,y)
 var mouseX=10;//对象的(x)水平位置距离鼠标的宽度
 var mouseY=-2;//对象的(y)垂直位置距离鼠标的高度
 var obj = document.getElementById(objstr);
 obj.style.display=str;//显示或隐藏对象
 if(ev=="1")return;
 if(str == "")
 {    
  if(ev.pageX || ev.pageY)
  {//firefox鼠标的位置
   ObjX = ev.pageX;
   ObjY = ev.pageY;
  }
  else
  {//IE鼠标的位置   

//以下两行为旧标准支持
   //ObjX = ev.clientX + document.body.scrollLeft- document.body.clientLeft;
   //ObjY = ev.clientY + ddocument.body.scrollTop - document.body.clientTop;    
 //以下两行为新标准支持
   ObjX = ev.clientX + document.documentElement.scrollLeft- document.body.clientLeft;
   ObjY = ev.clientY + document.documentElement.scrollTop - document.body.clientTop;
  }
  ObjX = ObjX + mouseX;
  ObjY = ObjY - mouseY;
  obj.style.left = ObjX + 'px';
  obj.style.top = ObjY + 'px';   
 }
}


