var cart, H;
	
function flashReadyHandler(){
_isDataReady = true;
   cart = Data.open("shopcart", {
	     	"id"      : "string",
		 	"cid"     : "string",
			"colorid" : "string",
			"sizecode": "string",
			"size"    : "string",
			"name"    : "string",
			"price"   : "array",
			"num"     : "number",
			"gnum"    : "number",
			"type"    : "number",
			"bz"      : "number"
	     });

	     cart.count = function () {
	         cart.length = 0;
	         cart.__length = 0;
	         cart.price = 0;
	         cart.o_price = 0;
	         cart.price_k = 0;
	         cart.each(function (i, n) {
	             var price = n[cart.settings["price"][0]];
	             var num = n[cart.settings["num"][0]];
	             var gnum = n[cart.settings["gnum"][0]];
	             if (gnum > 0) {
	                 cart.price += price[3] * num;
	                 cart.o_price += price[3] * num;
	             }
	             if (price[UserRank * 2 ] == price[UserRank * 2 + 1]) {
	                 cart.price_k += price[3] * num;
	             }
	             cart.length += num;
	             cart.__length += gnum;
	         });
	         cart.price = decimal(cart.price, 2);
	         cart.o_price = decimal(cart.o_price, 2);
	         cart.price_k = decimal(cart.price_k, 2);
	     }
  
   cart.count();
   setMycart();
   viewHistoryInit();
   Data.onload();	
   
};

/*浏览记录*/
function viewHistoryInit(){
 H = Data.open("viewHistory", {
	    "id" : "string",
		"name" : "string",
		"price" : "array"  
  });

  var div = $("#view_history");
  if(div.length ==0)return;

  var html = '<li class="{$classname}">'
        + '<div><a href="http://www.dadalux.com/product/{$id}.html" target="_blank"><img src="http://images.dadalux.com/products/{$id}/shangjia/86_109.jpg" width=86 height=109 /></a></div>'
       +' <div class="slist_dec">'
         +'<p><a href="http://www.dadalux.com/product/{$id}.html" target="_blank">{$name}</a></p>'
        + '<p style="padding:5px 0 0 0;font-size:12px;" ><strong>售价</strong><br/><span class="red f10">¥ <em class="f14">{$price}</em>.00</span></p>'
        +'</div>'
      +' </li>'	;
    var rethtml = [];
    H.each(function (i, n) {
        var _datali = getUseData1(n);
        _datali.price =_datali.price[3];
        _datali.name = unescape(_datali.name);
        if (i == 0) _datali.classname = "last";
        rethtml.push(getTemToHtml(_datali, html));
    });
    
	if(rethtml.length == 0 ){
	  div.remove();
	}else{

    div.append('<ul class="slist J_TBox_con">' + rethtml.reverse().join("") + '</ul>');
	}

}

function getUseData1(n){
	var ret = {};
	for(var i in H.settings){
	  	ret[i] = n[H.settings[i][0]];
	}
	return ret;
}

function getUseData(n){
	var ret = {};
	for(var i in cart.settings){
	  	ret[i] = n[cart.settings[i][0]];
	}
	return ret;
}
function getTemToHtml(data, html){//用模板生成html
  	return html.replace(/\{\$([^\}]*)\}/g, function () {
                  var ret = data[arguments[1]];
                  return typeof ret == "undefined" ? "" : ret;
    });
};

function setMycart(){
   	var em = $("#mycart em");
	em.eq(0).text("("+cart.length+")");
	em.eq(1).text(cart.price);
}

function decimal(numberRound, roundDigit) {
    numberRound = parseFloat(numberRound);
    //return number.toFixed(len);
    if (numberRound >= 0) {
        var tempNumber = parseInt((numberRound * Math.pow(10, roundDigit) + 0.5)) / Math.pow(10, roundDigit);
        return tempNumber;
    }
    else {
        numberRound1 = -numberRound
        var tempNumber = parseInt((numberRound1 * Math.pow(10, roundDigit) + 0.5)) / Math.pow(10, roundDigit);
        return -tempNumber;
    }

}


var KS_Cookie, _isJSReady = false, _isDataReady = false;
//本地数据初始化判断
function isJSReady() { return _isJSReady };

function getFlashVer() {//检测flash版本
    var f = 0;
    var n = navigator;
    if (n.plugins && n.plugins.length) {
        for (var ii = 0; ii < n.plugins.length; ii++) {
            if (n.plugins[ii].name.indexOf('Shockwave Flash') != -1) {
                f = n.plugins[ii].description.split('Shockwave Flash ')[1].split(' ')[0];
                break;
            }
        }
    } else if (window.ActiveXObject) {
        for (var ii = 10; ii >= 2; ii--) {
            try {
                var fl = eval("new ActiveXObject('ShockwaveFlash.ShockwaveFlash." + ii + "');");
                if (fl) { f = ii + '.0'; break; }
            } catch (e) { }
        }
    }
    return parseInt(f);
}

var UserRank = __cookie.get("UserRank");
if(!UserRank)UserRank = 1;

function innerFlash(settings) {
    var o = [];
    o.push('<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" id="' + settings.id + '1" width="' + settings.width + '" align="middle" height="' + settings.height + '"> ');
    o.push('<param name="allowScriptAccess" value="always"> ');
    //o.push('<param name="allowFullScreen" value="false">');
    o.push('<param name="movie" value="' + settings.src + '">');
    o.push('<param name="quality" value="high">');
    o.push('<param name="wmode" value="transparent"');
    //o.push('<param name="bgcolor" value="#ffffff">');
    o.push('<embed id="' + settings.id + '2" name="' + settings.id + '2" src="' + settings.src + '" quality="high" wmode="transparent" allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer_cn" width="' + settings.width + '" align="middle" height="' + settings.height + '"></object>');
    if (settings.div) settings.div.innerHTML = o.join("");
    else document.write(o.join(""));
    if (navigator.appName.indexOf("Microsoft") != -1) return document.getElementById(settings.id + "1");
    else return document.getElementById(settings.id + "2");
};
var each = function (obj, fun){
   var i = 0, n;
   if (typeof obj == "object" && obj.length) { 
	   for(i=0;i<obj.length;i++){
		   if(fun(i, obj[i]) === false)return;
	   }
   }else{
	    for(n in obj) if(fun(i++, n) === false)return;  
   }
};

(function (){

var E = function (){
	   if(typeof arguments[1] !== "object")return arguments[0];
	   for(var i in arguments[1]){
		  arguments[0][i] = arguments[1][i];   
	   }
}		

/***************************************************************/
var Data = {  
   F : [ 
     ["------", "--++--"],
	 ["++++++", "++--++"]
   ],
   connect : function (fun) {
    if (this.hasInit){
		if(fun){
		  if(_isDataReady)fun();
		  else
		   this.onload = fun;
		};
		return;
	};
    this.hasInit = true;
	//if(fun)this.onload = fun;
    var flashVer = getFlashVer();
    if (flashVer >= 9) {//alert(navigator.appName)
    var _addstr = "http://user.dadalux.com/scripts/cart.swf";
        if (navigator.appName.indexOf("Microsoft") == -1) {
            $(document.body).append("<div id='F_Data' />");
            var fl = new SWFObject(_addstr, "_fl_data", "1", "1", "9");
            fl.addParam("allowScriptAccess", "always");
            fl.write("F_Data");
            KS_Cookie = document.getElementById("_fl_data");
        } else {
            /*if (navigator.userAgent.indexOf("TencentTraveler") > 0) {  _addstr += "?" + new Date(); }
            try{
              if( parseInt(external.max_version.split(".")[0]) < 3){_addstr += "?" + new Date();}
            }catch(e){}*/
            _addstr += "?" + new Date();
            KS_Cookie = innerFlash({ src: _addstr, id: "fl_data", width: 1, height: 1 });
        }

    } else {
        KS_Cookie = __cookie;
        flashReadyHandler();
    }

   },
   onload : function (){},
   open : function (tablename, dataType){
	    if(typeof tablename != "string" || tablename == ""){
		  Data.log("error!");
		  return;
		}
	    if(typeof Data.items[tablename] == "undefined"){
		   Data.items[tablename] = new Data.fn(tablename);
		   Data.items[tablename].$__setCell(dataType);
		}
		return Data.items[tablename];
   },
   
   $ : function (string, b){
	   	var t1 = Data.F[0], t2 = Data.F[1];
	   	string += "";
	   	if(!b){
		   	return string.replace(t1[0], t1[1])
		                  .replace(t2[0], t2[1]);
	
	   	}else{
		   	return string.replace(t1[1], t1[0])
		                  .replace(t2[1], t2[0]);
	   	}
   },
   $__arrToStr : function (arr, b){//将数组元素转换字符合并成字符串 join
      var ret=[]; 
	  each(arr, function (i, n){
		   ret.push(Data.$(n, b))
	  });
	  return ret.join(Data.F[1][0]);
   },
   log : function (msg){
	 alert(msg);   
   },
   exec : function (value, evalStr, type){
	   var reg = /^([\+\-\/\*\=]{1})?(.*)$/, ret;
	   var match  = reg.exec(evalStr);
	   if(typeof match[1] == "undefined" || match[1]=="")match[1] = "=";
	   if(type == "string"){
		  if(match[1] == "=")return match[2];
		  else if(match[1] == "+")return value + match[2] ;
	   }
	   else if(type == "number" || type == "array"){
		  if(match[1] == "=")return match[2];
		  else if(match[1] == "+"){return parseFloat(value) + parseFloat(match[2]); }
	   }  

   },
   items : {},
   getData : function (tablename){

	   if(_isDataReady){
	      return KS_Cookie.get(tablename) || "";
	   }else{
		  Data.log("get：数据连接失败!");
		  return "";   
	   }
	    
   },
   setData : function (tablename, data){
	   if(_isDataReady){
	      KS_Cookie.set(tablename, data);
	   }else{
		  Data.log("set：数据连接失败!");
		  return "";   
	   }
   }
  
};

Data.fn = function (tablename){
	  var t = this;
	  this.settings = {};
	  this.dataType = [];
	  this.name = tablename;
 
	  this.get = function (){ 
		  return Data.getData(this.name);  
	  };
	  this.set = function (_data){
		 Data.setData(this.name, _data);
	  };
	  this.$__setCell = function (settings){
		  each(settings, function(i, n){
		     t.settings[n] = [i , settings[n]];
		     t.dataType.push(settings[n]);
	      });
	  };
}	

E(Data.fn.prototype, {
   insert : function (o){
	   if(arguments.length > 1){
		    var i = 0, arg;
			while(arg = arguments[i++])this.insert(arg);
	   }else{
	   
	   		var S = [];
	   		each(this.settings, function(i, n){
		    		 var v = typeof o[n] == "undefined"?"" : o[n];

					if(typeof v == "object"){v = "["+ v.join(",") + "]"};
					
			 		v = Data.$(v);
		     		S.push(v);
	   		});
	   		S = S.join(Data.F[1][0]);
	   
	   		var data = this.get();
	   		if(data == ""){
		  		 this.set(S);
	   		}else{
		   		this.set(data+Data.F[0][0] + S);   
	   		}
	   }
   },
   update : function (key, chgo){
	   var ret = [], t = this;
	   this.search(key, function (b, arr, str){
		   if(b){
			  each(chgo, function (i, n){
				  arr[t.settings[n][0]] = Data.exec(arr[t.settings[n][0]], chgo[n], t.settings[n][1]);
			  });
			  str = Data.$__arrToStr(arr); 
		   }
		   ret.push(str);
	   });
	   this.set(ret.join(Data.F[0][0]));
   },
   select : function (){
	   var t = this, ret = [];
	   var i = 0, arg;
	   while(arg = arguments[i++]){
		   t.search(arg, function(b, arr, str){
			   if(b)ret.push(arr);
		   });
	   }
	   return ret;

   },
   del : function (){
	   var ret = [];
	   var i = 0, arg;
	   if(arguments[0] == "*"){//删除全部
		  this.set("");
		  return ; 
	   }
	   if(arguments.length > 1){
	      while(arg = arguments[i++])this.del(arg);
	   }else{
	     this.search(arguments[0], function(b, arr, str){
			 if(!b)ret.push(str);
		 });
	     this.set(ret.join(Data.F[0][0]));
	   }
   },
   search : function (key, fun){
	  var reg = /^([<\=>]{1,2})?(.*)$/, t = this, data = t.get().split(Data.F[0][0]);;
	  this.each(function (i, n){
		   			var _ret;
		   			each(key, function(_i, _n){
						_ret = true;
			   			var match  = reg.exec(key[_n]);
			   			if(typeof match[1] == "undefined" || match[1] == "" || match[1] == "="){
				  			_ret = eval( "'"+ n[t.settings[_n][0]] +"'=='"+ match[2]+"'" );   
			   			}else{
				  			 _ret = eval( n[t.settings[_n][0]]+match[1]+match[2]);  
			   			}   
			  		   return _ret;	
	   	  			});
					
				fun(_ret, n, data[i]);
	 });
	 //return Ret;
   },
   each : function (fun){
	  var t = this;
	  var data = t.get();
	  if(data == "")return;
	  data = data.split(Data.F[0][0]); 
	  each(data, function(i, n){
		 var _ret = [];
		 n = n.split(Data.F[1][0]);
		 each(n, function(_i, _n){
         
			 var val = Data.$(_n, true);//转换冲突字符
             
			 if(t.dataType[_i] == "number" ){ val = parseFloat(val);}
			 if(t.dataType[_i] == "array"){ val = eval("Array("+ val+")");}
			 _ret.push(val);
	     })
		 fun(i, _ret);
		 
	  });
   }
	
});

window.Data = Data;

}());

var _isJSReady = true;
