var b2c={
	StringBuffer:function(){
		this._strings_ = [];
		if(typeof b2c.StringBuffer._initialized == "undefined"){
			b2c.StringBuffer.prototype.append = function(str){
				this._strings_.push(str);
			};
			b2c.StringBuffer.prototype.toString = function(){
				return this._strings_.join("");
			};
		}
		b2c.StringBuffer._initialized = true;
	},
	time:5000,
	timeset:false,
	tabflag:true,
	mousePos:function(e){ 
		var x,y; 
		e = e||window.event; 
		return{x:e.clientX+document.body.scrollLeft+document.documentElement.scrollLeft, 
		y:e.clientY+document.body.scrollTop+document.documentElement.scrollTop}; 
	}, 
	mouseTarget:function(e){
		var targ;
		if (!e) {e = window.event;}
		if (e.target) {targ = e.target;}
		else if (e.srcElement) {targ = e.srcElement; }
		if (targ.nodeType == 3) //defeat Safari bug
		{targ = targ.parentNode; }
		return targ;
	},
	tabShow:function(type){
		var self = this;
		$("[name='tab:hover']").mouseover(function(){
			self.tabflag=false;
			var old = $(".selected",$(this).parents("ul"));
			old.removeClass("selected");
			$("#"+$("a",old).attr("rel")).css("display","none");									   
			$(this).parent().addClass("selected");
			$("#"+$(this).attr("rel")).css("display","block");
			$(this).blur();
		});	
		$("[name='tab:hover']").mouseout(function(){
			self.tabflag=true;
		});
		$("[name='tab:click']").click(function(){
			var old = $(".selected",$(this).parents("ul"));
			old.removeClass("selected");
			$("#"+$("a",old).attr("rel")).css("display","none");
			$(this).parent().addClass("selected");
			$("#"+$(this).attr("rel")).css("display","block");
			$(this).blur();
		});
		$("[name='tab:hover']").each(function(){
			$("#"+$(this).attr("rel")).mouseover(function(){
				self.tabflag=false;
			}).mouseout(function(){
				self.tabflag=true;
			});
		});
	},
	tabNext:function(){
		var s=/selected/;
		var self,next;
		$("li",$(".tab-auto")).each(function(){
			if(s.test($(this).attr("class"))){
				self = $(this);
				next = $(this).next();
				if(next[0]){
					next = $(this).next();
				}else{
					next = $("li:first",$(this).parent());
				}
			}
		});
		self.removeClass("selected");
		next.addClass("selected");
		$("#"+$("a",self).attr("rel")).css("display","none");
		$("#"+$("a",next).attr("rel")).css("display","block");
	},
	tabStart:function(){
		var self = this;
		if($(".tab-auto")[0]){
			this.timeset = setInterval(function(){
				if(self.tabflag){self.tabNext();}
				},
				this.time);
		}
	},
	tabStop:function(){
		if($(".tab-auto")[0]){
			clearInterval(this.timeset);
		}
	},
	tabInit:function(){
		var s=/selected/;
		$("[name='tab:hover']").each(function(){
			if(!(s.test($(this).parent().attr("class")))){
				$("#"+$(this).attr("rel")).css("display","none");	
			}		   
		});
		this.tabStart();
	},
	deliver:function(str){
		return{
			str:str,
			arr:function(arr){
				if(arr[0]) {return arr;}
				else if(typeof(arr)=="number") {return eval("{["+arr+"]}");}
				return null;
			},
			check:function(arr,d){
				var self = this;
				arr = self.arr(arr);
				for(var i=0;i<arr.length;i++){
					$("#"+self.str+arr[i]).attr("checked",d);
				}
			}
		};
	},
	tip:function(cls,tid,clickOff){
		return{
			init:function(size){
				var self = this;
				var obj = $("#"+tid);
				$("."+cls).click(function(e){
					var mos = b2c.mousePos(e);
					var x,y;
					x=mos.x-size/2;
					y=mos.y;
					if((x+size+20)>=window.screen.width) {x=mos.x-size;}
					obj.css("position","absolute"); 
					obj.css("width",size);
					obj.css("left",x-10+"px"); 
					obj.css("top",y+10+"px"); 
					obj.show();
					return false;
				});
				//绑定空白区域关闭事件
				if(clickOff){
					$("body").click(function(e){
						if (b2c.mouseTarget(e).className!=cls&&obj.is(':visible')) {obj.hide();}
					});
				}
			}
		};
	},
	form:function (data) {
		return {data:data, $:function (ele) {
			if (typeof ele == "object") {
				return ele;
			} else {
				if (typeof ele == "string" || typeof ele == "number") {
					return document.getElementById(ele.toString());
				}
			}
			return null;
		}, showMessage:function (layout, cls, error) {
			layout = this.$(layout);
			if (layout) {
				layout.style.display = "";
				layout.className = cls;
				layout.innerHTML = error;
			}
		}, showErrorMessage:function (layout, error) {
			this.showMessage(layout, "numalert f00", error);
		}, hiddenMessage:function (layout, cls) {
			layout = this.$(layout);
			if (layout) {
				layout.style.display = "none";
				layout.className = cls;
				layout.innerHTML = "";
			}
		}, hiddenErrorMessage:function (layout) {
			this.hiddenMessage(layout, "");
		}, checkControl:function (info) {
			var layout = this.$(info.layout);
			this.hiddenErrorMessage(layout);
			if (!info) {
				return;
			}
			var ele = this.$(info.id);
			if (ele) {
				var self = this;
				var checkRegex = function (regex, value) {
					if (!regex) {
						self.hiddenErrorMessage(layout);
						return true;
					} else {
						var passNumber = 0;
						for (var i = 0, l = regex.length; i < l; i++) {
							if (typeof regex[i].reg == "function") {
								if (!regex[i].reg.call(value)) {
									self.showErrorMessage(layout, regex[i].error);
									return false;
								} else {
									passNumber++;
								}
							} else {
								if (!regex[i].reg.test(value)) {
									self.showErrorMessage(layout, regex[i].error);
									return false;
								} else {
									passNumber++;
								}
							}
						}
						if (passNumber == regex.length) {
							self.hiddenErrorMessage(layout);
							return true;
						}
					}
				};
				var checkRegexPositive = function(regex, value){
					if (!regex) {
						self.hiddenErrorMessage(layout);
						return true;
					} else {
						var passNumber = 0;
						for (var i = 0, l = regex.length; i < l; i++) {
							if (typeof regex[i].reg == "function") {
								if (regex[i].reg.call(value)) {
									self.showErrorMessage(layout, regex[i].error);
									return false;
								} else {
									passNumber++;
								}
							} else {
								if (regex[i].reg.test(value)) {
									self.showErrorMessage(layout, regex[i].error);
									return false;
								} else {
									passNumber++;
								}
							}
						}
						if (passNumber == regex.length) {
							self.hiddenErrorMessage(layout);
							return true;
						}
					}
				};
				var isPass = false;
				if (info.blank.enableBlank) {
					if ((ele.value.replace(/\s/g,"") === "")) {
						this.hiddenErrorMessage(layout);
						isPass = true;
					} else if(info.positive){
						isPass = checkRegexPositive(info.regex, ele.value);
					} else {
						isPass = checkRegex(info.regex, ele.value);
					}
				} else {
					if ((ele.value.replace(/\s/g,"") === "")) {
						this.showErrorMessage(layout, info.blank.error);
						isPass = false;
					} else if(info.positive){
						isPass = checkRegexPositive(info.regex, ele.value);
					} else {
						isPass = checkRegex(info.regex, ele.value);
					}
				}
				return isPass;
			}
		}, check:function () {
			if (!this.data || this.data.length === 0) {
				return;
			}
			var passNumber = 0;
			for (var i = 0, l = this.data.length; i < l; i++) {
				var isPass = this.checkControl(this.data[i]);
				if (isPass) {
					passNumber++;
				}
			}
			return (passNumber == this.data.length);
		}};
	},
	form2:function (data) {
		return {data:data, $:function (ele) {
			if (typeof ele == "object") {
				return ele;
			} else {
				if (typeof ele == "string" || typeof ele == "number") {
					return document.getElementById(ele.toString());
				}
			}
			return null;
		}, getClsNode:function (layout) {
			return this.$(layout).parentNode.parentNode;
		}, showMessage:function (layout, cls, message) {
			layout = this.$(layout);
			if (layout) {
				layout.style.display = "";
				this.getClsNode(layout).className = cls;
				layout.innerHTML = message;
			}
		}, showTipMessage:function (layout, message) {
			this.showMessage(layout, "notice", message);
		}, showErrorMessage:function (layout, message) {
			this.showMessage(layout, "alert", message);
		}, showPassMessage:function (layout) {
			this.showMessage(layout, "correct", "");
		}, checkControl:function (info) {
			var layout = this.$(info.layout);
			this.showPassMessage(layout);
			if (!info) {
				return;
			}
			var ele = this.$(info.id);
			if (ele) {
				var self = this;
				var checkRegex = function (regex, value) {
					if (!regex) {
						self.showPassMessage(layout);
						return true;
					} else {
						var passNumber = 0;
						for (var i = 0, l = regex.length; i < l; i++) {
							if (typeof regex[i].reg == "function") {
								if (!regex[i].reg.call(value)) {
									self.showErrorMessage(layout, regex[i].error);
									return false;
								} else {
									passNumber++;
								}
							} else {
								if (!regex[i].reg.test(value)) {
									self.showErrorMessage(layout, regex[i].error);
									return false;
								} else {
									passNumber++;
								}
							}
						}
						if (passNumber == regex.length) {
							self.showPassMessage(layout);
							return true;
						}
					}
				};
				var checkRegexPositive = function(regex, value){
					if (!regex) {
						self.hiddenErrorMessage(layout);
						return true;
					} else {
						var passNumber = 0;
						for (var i = 0, l = regex.length; i < l; i++) {
							if (typeof regex[i].reg == "function") {
								if (regex[i].reg.call(value)) {
									self.showErrorMessage(layout, regex[i].error);
									return false;
								} else {
									passNumber++;
								}
							} else {
								if (regex[i].reg.test(value)) {
									self.showErrorMessage(layout, regex[i].error);
									return false;
								} else {
									passNumber++;
								}
							}
						}
						if (passNumber == regex.length) {
							self.hiddenErrorMessage(layout);
							return true;
						}
					}
				};
				var isPass = false;
				if (info.blank.enableBlank) {
					if (ele.value === "") {
						this.showPassMessage(layout);
						isPass = true;
					} else if(info.positive){
						isPass = checkRegexPositive(info.regex, ele.value);
					} else {
						isPass = checkRegex(info.regex, ele.value);
					}
				} else {
					if (ele.value === "") {
						this.showErrorMessage(layout, info.blank.error);
						isPass = false;
					} else if(info.positive){
						isPass = checkRegexPositive(info.regex, ele.value);
					} else {
						isPass = checkRegex(info.regex, ele.value);
					}
				}
				return isPass;
			}
		}, check:function () {
			if (!this.data) {
				return;
			}
			var passNumber = 0, controlNumber = 0;
			for (var p in this.data) {
				var info = this.data[p];
				if (!info || typeof info == "function") {
					continue;
				}
				controlNumber++;
				var isPass = false;
				isPass = this.checkControl(info);
				if (isPass) {
					passNumber++;
				}
			}
			return (passNumber == controlNumber);
		}, init:function () {
			if (!this.data) {
				return;
			}
			var self = this;
			for (var p in this.data) {
				var info = this.data[p];
				if (!info) {
					continue;
				}
				var input = this.$(info.id);
				if (input) {
					input.info = info;
					input.onfocus = function () {
						if (typeof this.info.referControl == "undefined") {
							if (this.info.tip.isTip) {
								self.showTipMessage(this.info.layout, this.info.tip.message);
							}
						} else {
							if (self.checkControl(self.data[this.info.referControl])) {
								if (this.info.tip.isTip) {
									self.showTipMessage(this.info.layout, this.info.tip.message);
								}
							}
						}
					};
					input.onblur = function () {
						if (this.info.tip.isTip) {
							self.checkControl(this.info);
						}
					};
				}
			}
		}};
	},
	select:function(oData){
		return{
			data:oData,
			process:function(){
				if(!this.data){
					return false;
				}else{
					for(var _i in this.data){
						alert(data[_i]);
					}
				}
			},
			init:function(){
				var data = this.data;
				var self = this;
				$("a",data.id).click(function(){
					if(data.isOnly){
						$(data.tag,$(this).parents(data.id)).removeClass("selected");
						$(this).parent(data.tag).toggleClass("selected");
					}else{
						$(this).parent(data.tag).toggleClass("selected");
					}
					var idRe = /\:(\d+)$/;
					$(this).attr("id").match(idRe);
					var store=RegExp.$1;
					//$(data.store).html(store); huangsui 2009-2-2
					var target = data.target;
					$(target).html("您已选择：");
					$(".selected",data.id).each(function(){
						var sValue = "\""+$("a",$(this))[0].lastChild.nodeValue+"\"";
						$(target).append("<em>"+sValue+"</em>");
					});
					return false;
				});
			}
		};
	},
	event:function(data){
		return{
			method:function(){
			},
			edit:function(){
				return{
					change:function(e){
						var productId = e.data.productid;
						var oInput = document.createElement("INPUT");
						var oA = $(this)[0];
						$(oInput).attr({"type":"text","class":"text","size":"2","maxlength":"6"});
						oInput.value = oA.lastChild.nodeValue;
						$(oInput).insertAfter($(oA));
						oA.innerHTML='';
						oInput.focus();
						$("#save").attr("disabled","true");
						$(oInput).blur(function(){
							var oSpan = oInput.parentNode.getElementsByTagName("span")[0];
							if(!oSpan){
								oSpan = document.createElement("span");
								oInput.parentNode.appendChild(oSpan);
							}
							var data=[
								{
									id:oInput,
									blank:{enableBlank:false,error:"不能为空"},
									regex:[{reg:/^\d+$/,error:"必须是整数"}],
									layout:oSpan
								}
							];
							if(b2c.form(data).check()){
								$(oA).html(oInput.value);
								
								var pid = $(this).parents(".pur_attr").attr("pid");
								var stocks = b2c.purchaseAttr().setStorks(pid,oInput.value);
								$(this).parents(".pur_attr").attr("pid",stocks);
								var pur_attr = $(this).parents(".pur_attr");//object
								
								oSpan.parentNode.removeChild(oInput);
								oSpan.parentNode.removeChild(oSpan);
								
								var url = "product.action?method=ajaxSaveStock&productId="+productId+"&json="+encodeURI(stocks);
								$.ajax({
								    url: url,
								    type: 'POST',
								    timeout: 20000,
								    error: function(){
								        alert('请求超时，请稍候再试！');
								    },
								    success: function(data, textStatus){
										var object = window.eval('('+data+')');
										if(object.code=='200'){
											pur_attr.attr("pid",b2c.purchaseAttr().setPid(pid,object.id,object.stocks));
											$(".tip_msg",$("#get-attr")).empty(); 
											$(".tip_msg",$("#get-attr")).append("修改成功!");//tip_msg
										}else{//code 404 json error  code 500 producId is null
											$(".tip_msg",$("#get-attr")).empty(); 
											$(".tip_msg",$("#get-attr")).append("服务器错误!");
										}
								    }
								});
								$("#save").removeAttr("disabled");
							}else{
								//oInput.focus();
								$("#save").attr("disabled","true");
							}
							
						});
						return false;
					},
					recover:function(e){
							var productId = e.data.productid;
							var oInput = $(this)[0];
							var oSpan = oInput.parentNode.getElementsByTagName("span")[0];
							if(!oSpan){
								oSpan = document.createElement("span");
								oInput.parentNode.appendChild(oSpan);
							}
							var data=[
								{
									id:oInput,
									blank:{enableBlank:false,error:"不能为空"},
									regex:[{reg:/^\d+$/,error:"必须是整数"}],
									layout:oSpan
								}
							];
							$("#save").attr("disabled","true");
							if(b2c.form(data).check()){
								$(oInput.parentNode.getElementsByTagName("a")[0]).html(oInput.value);
								var pid = $(this).parents(".pur_attr").attr("pid");					
								var stocks = b2c.purchaseAttr().setStorks(pid,oInput.value);
								$(this).parents(".pur_attr").attr("pid",stocks);
								var pur_attr = $(this).parents(".pur_attr");//object
								oSpan.parentNode.removeChild(oInput);
								oSpan.parentNode.removeChild(oSpan);
								var url = "product.action?method=ajaxSaveStock&productId="+productId+"&json="+encodeURI(stocks);
								$.ajax({
								    url: url,
								    type: 'POST',
								    timeout: 20000,
								    error: function(){
								        alert('请求超时，请稍候再试！');
								    },
								    success: function(data, textStatus){
										var object = window.eval('('+data+')');
										if(object.code=='200'){
											pur_attr.attr("pid",b2c.purchaseAttr().setPid(pid,object.id,object.stocks));
											$(".tip_msg",$("#get-attr")).empty(); 
											$(".tip_msg",$("#get-attr")).append("保存成功!");//tip_msg
										}else{ //code 404 json error  code 500 producId is null
											$(".tip_msg",$("#get-attr")).empty(); 
											$(".tip_msg",$("#get-attr")).append("服务器错误!");
										}
								    }
								});
								$("#save").removeAttr("disabled");
							}else{
								//oInput.focus();
								$("#save").attr("disabled","true");
							}
					},
					init:function(data){
						data = data;
						$(".edit-a").bind("click",{productid:data.productid},this.change);//.click(this.change)
						$(".edit-input").bind("blur",{productid:data.productid},this.recover);
						$(".pur_del").click(function(){
							$(this).attr("disabled","true");
							var pur_attr = $(this).parent(".pur_attr")[0];
							var pid = $(this).parent(".pur_attr").attr("pid");
							var arr = pid.split(",");
							var idarr = arr[0].split(":");//获取商品规格的id 如果为空就不用提交
							if(idarr[1]!==0){
								var url = "product.action?method=ajaxDeleteSpecification&id="+idarr[1];
								$.ajax({
								    url: url,
								    type: 'POST',
								    timeout: 20000,
								    error: function(){
								        alert('请求超时，请稍候再试！');
								    },
								    success: function(data, textStatus){
										if(data=="200"){// do sucess
											pur_attr.parentNode.removeChild(pur_attr);
											if($("dd",$("dl",$("#get-attr"))).length===0){
												$("dt",$("dl",$("#get-attr"))).remove();
												$("dl",$("#get-attr")).before("<p class=\"delete\">你还没有配置该商品的规格!</p>");//<p class="delete">你还没有配置该商品的规格!</p>
											}
											$(".tip_msg",$("#get-attr")).empty(); 
											$(".tip_msg",$("#get-attr")).append("删除成功!");
											return false;
										}else{
											$(".tip_msg",$("#get-attr")).empty(); 
											$(".tip_msg",$("#get-attr")).append("删除失败!");
										}
								    }
								});
							}else{
								$(this).parent(".pur_attr").remove();
								if($("dd",$("dl",$("#get-attr"))).length===0){
									$("dt",$("dl",$("#get-attr"))).remove();
									$("dl",$("#get-attr")).before("<p class=\"delete\">你还没有配置该商品的规格!</p>");//<p class="delete">你还没有配置该商品的规格!</p>
								}
								return false;
							}
							
						});
						$(".autoclean").focus(function(){
							var data=[
								{
									id:$(this)[0],
									blank:{enableBlank:true},
									regex:[{reg:/请在这里设置自定义名称/,error:""}]
								}
							];
							if(b2c.form(data).check()){
								$(this).attr("value","");
							}
						});
					}
				};
			}
		};
	},
	purchaseAttr:function(data){//设置购买条件
		return{
			data:data,
			getAttr:function(){
				var self = this;
				var data=this.data;//规格名称的数组，如['color','size']
				var aStore = [];//存储所有已选规格,['color:red','color:black','size:S','size:L']
				var aAttr =[];//二维数组，将aStore按规格名称分类,[['color:red','color:black'],['size:S','size:L']]
				$("[name=ps-c]").each(function(){//构建aStore
					if($(this)[0].checked){//选中的规格
						aStore.push($(this)[0].value);
					}
					if($(this)[0].nodeName=="TEXTAREA"){//获取自定义规格
						var s = $(this)[0].value.replace(/(\r| )+/g,"\n");
						var sFilter = new RegExp("^\.+$","gm");
						var aWord = s.match(sFilter);
						var p = $(this).attr("pvalue");
						if(aWord){
							for(var i =0;i<aWord.length;i++){
								if(aWord[i]!="请在这里设置自定义名称"){
									aStore.push(p+aWord[i]);
								}
							}
						}
					}
				});
				for(var i=0;i<data.attr.length;i++){//构建aAttr
					var sAttr = new RegExp(data.attr[i]+"(?=\:)");
					eval("var aNew"+i+" = []");
					for (var j=0;j<aStore.length;j++){
						if(sAttr.test(aStore[j])){
							eval("aNew"+i+".push(aStore[j])");
						}
					}
					eval("aAttr.push(aNew"+i+")");
				}
				return aAttr;
			},
			add:function(a1,a2){//数组累加，a1项乘以a2项
				var a = [];
				for(var i=0;i<a1.length;i++){
					for(var j=0;j<a2.length;j++){
						a.push(a1[i]+","+a2[j]);
					}
				}
				return a;
			},
			setAttr:function(){//建立dom
				var self = this;
				var aAttr = this.getAttr();
				var a0 = aAttr[0];
				for(var i=1;i<aAttr.length;i++){//组合出所有规格,['color:red,size:S','color:red,size:L','color:black,size:S','color:black,size:L']
					a0 = this.add(a0,aAttr[i]);
				}
				if(a0.length>0){
					for(var j=0;j<a0.length;j++){
						var flag = true;
						$("dd",$("#get-attr")).each(function(){//遍历已有规格，相同组合不做操作，同时改变颜色，以作提醒
							var sFilter = new RegExp(a0[j],"g");
							if(sFilter.test($(this).attr("pid"))){
								flag = false;
								$(this).css("background","#ffc");
							}
						});
						if(flag){//pid格式：id:0,color:red,size:S,stocks:0
							if($("p",$("#get-attr")).length!==0){
								$("p",$("#get-attr")).remove(); 
								$("dl",$("#get-attr")).append("<dt>已有规格：</dt><dd class=\"pur_attr\" pid=\"id:0,"+a0[j]+",stocks:0\">"+this.processAttr(a0[j])+"&nbsp;&nbsp;<span>库存(<a href=\"#\" class=\"edit-a\"></a><input size=\"2\" maxlength=\"6\" type=\"text\" class=\"text edit-input\" />)件</span><a href=\"#\" class=\"pur_del\">删除</a></dd>");
							}else{
								$("dl",$("#get-attr")).append("<dd class=\"pur_attr\" pid=\"id:0,"+a0[j]+",stocks:0\">"+this.processAttr(a0[j])+"&nbsp;&nbsp;<span>库存(<a href=\"#\" class=\"edit-a\"></a><input size=\"2\" maxlength=\"6\" type=\"text\" class=\"text edit-input\" />)件</span><a href=\"#\" class=\"pur_del\">删除</a></dd>");
							}
						}
					}
					b2c.event().edit().init(this.data);
					$("[name=ps-c]").each(function(){
						$(this)[0].checked = false;
					});
				}else{//a0为空，说明至少有一项规格没有选择，提示错误
					alert("每种规格至少选择一项！");	
				}
			},
			setId:function(pid,id){
				return pid.replace(/id\:\d+/,"id:"+id);
			},
			setStorks:function(pid,store){
					return pid.replace(/stocks\:\d+/,"stocks:"+store);
			},
			setPid:function(pid,id,store){//更改pid标示
				return pid.replace(/id\:\d+/,"id:"+id).replace(/stocks\:\d+/,"stocks:"+store);
			},
			getPid:function(pid){//解析pid，传入id:0,color:red,size:S,stocks:0则返回对象{id:"0",color:"red",size:"S",stocks:"0"}
				var s = pid.replace(/\:/g,":'").replace(/,/g,"',")+"'";
				return eval("s = {"+s+"}");
			},
			processAttr:function(pid){//连接所有规格值
				var s="";
				for(var i=0;i<this.data.attr.length;i++){
					s+="<span>"+this.getPid(pid)[this.data.attr[i]]+"</span>&nbsp;&nbsp;";
				}
				return s;
			}
		};
	},
	date:function(data){
		//+---------------------------------------------------   
		//| 日期计算   
		//+---------------------------------------------------   
		Date.prototype.DateAdd = function(strInterval, Number) {    
			var dtTmp = this;   
			switch (strInterval) {    
				case 's' :return new Date(Date.parse(dtTmp) + (1000 * Number));   
				case 'n' :return new Date(Date.parse(dtTmp) + (60000 * Number));   
				case 'h' :return new Date(Date.parse(dtTmp) + (3600000 * Number));   
				case 'd' :return new Date(Date.parse(dtTmp) + (86400000 * Number));   
				case 'w' :return new Date(Date.parse(dtTmp) + ((86400000 * 7) * Number));   
				case 'q' :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number*3, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());   
				case 'm' :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());   
				case 'y' :return new Date((dtTmp.getFullYear() + Number), dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());   
			}   
		};  
		//+---------------------------------------------------   
		//| 比较日期差 dtEnd 格式为日期型或者 有效日期格式字符串   
		//+---------------------------------------------------   
		Date.prototype.DateDiff = function(strInterval, dtEnd) {    
			var dtStart = this;   
			if (typeof dtEnd == 'string' )//如果是字符串转换为日期型   
			{    
				dtEnd = StringToDate(dtEnd);   
			}   
			switch (strInterval) {    
				case 's' :return parseInt((dtEnd - dtStart) / 1000,10);   
				case 'n' :return parseInt((dtEnd - dtStart) / 60000,10);   
				case 'h' :return parseInt((dtEnd - dtStart) / 3600000,10);   
				case 'd' :return parseInt((dtEnd - dtStart) / 86400000,10);   
				case 'w' :return parseInt((dtEnd - dtStart) / (86400000 * 7),10);   
				case 'm' :return (dtEnd.getMonth()+1)+((dtEnd.getFullYear()-dtStart.getFullYear())*12) - (dtStart.getMonth()+1);   
				case 'y' :return dtEnd.getFullYear() - dtStart.getFullYear();   
			}   
		};
		//+---------------------------------------------------   
		//| 日期输出字符串，重载了系统的toString方法   
		//+---------------------------------------------------   
		Date.prototype.toCnString = function(showWeek)   
		{    
			var myDate= this;   
			var str = myDate.toLocaleDateString();   
			if (showWeek)   
			{    
				var Week = ['日','一','二','三','四','五','六'];   
				str += ' 星期' + Week[myDate.getDay()];   
			}   
			return str;   
		};
		//+---------------------------------------------------   
		//| 把日期分割成数组   
		//+---------------------------------------------------   
		Date.prototype.toArray = function()   
		{    
			var myDate = this;   
			var myArray = Array();   
			myArray[0] = myDate.getFullYear();   
			myArray[1] = myDate.getMonth();   
			myArray[2] = myDate.getDate();   
			myArray[3] = myDate.getHours();   
			myArray[4] = myDate.getMinutes();   
			myArray[5] = myDate.getSeconds();   
			return myArray;   
		};  
		   
		//+---------------------------------------------------   
		//| 取得日期数据信息   
		//| 参数 interval 表示数据类型   
		//| y 年 m月 d日 w星期 ww周 h时 n分 s秒   
		//+---------------------------------------------------   
		Date.prototype.DatePart = function(interval)   
		{    
			var myDate = this;   
			var partStr='';   
			var Week = ['日','一','二','三','四','五','六'];   
			switch (interval)   
			{    
				case 'y' :partStr = myDate.getFullYear();break;   
				case 'm' :partStr = myDate.getMonth()+1;break;   
				case 'd' :partStr = myDate.getDate();break;   
				case 'w' :partStr = Week[myDate.getDay()];break;   
				case 'ww' :partStr = myDate.WeekNumOfYear();break;   
				case 'h' :partStr = myDate.getHours();break;   
				case 'n' :partStr = myDate.getMinutes();break;   
				case 's' :partStr = myDate.getSeconds();break;   
			}   
			return partStr;   
		};
		Date.prototype.GetRemain = function(dtEnd){
			var dtStart = this;
			var nMS = dtStart.DateDiff("s",dtEnd);
			var nD=Math.floor(nMS/(60*60*24)); 
			var nH=Math.floor(nMS/(60*60))%24;
			var nM=Math.floor(nMS/(60))%60;   
			var nS=Math.floor(nMS)%60;
			return {d:nD,h:nH,m:nM,s:nS}; 
		};
		//+---------------------------------------------------   
		//| 取得当前日期所在月的最大天数   
		//+---------------------------------------------------   
		Date.prototype.MaxDayOfDate = function()   
		{    
			var myDate = this;   
			var ary = myDate.toArray();   
			var date1 = (new Date(ary[0],ary[1]+1,1));   
			var date2 = date1.dateAdd(1,'m',1);   
			var result = dateDiff(date1.Format('yyyy-MM-dd'),date2.Format('yyyy-MM-dd'));   
			return result;   
		};
		return{
			getDate:function(year,month){
				var enddate = ["31","28","31","30","31","30","31","31","30","31","30","31"];
				if (year%4===0){enddate[1]="29";}
				var returnDate = enddate[month];
				return returnDate;
			},
			checkDate:function(year,month,date){
				var days = this.getDate(year,month);
				var returnDate = "";
				if (date>days){returnDate = days;}else{returnDate = date;}
				return returnDate;
			},
			toDate:function(date){
				if (typeof(date)=="string"){
					var arrDate = date.replace(/\:00/,"").replace(/ /,"-").split("-");
					date = new Date(arrDate[0],arrDate[1],arrDate[2],arrDate[3]);
				}
				if (typeof(date)=="object"){date = date;}
				return date;
			},
			format:function(year,month,day,time){
				var str = new b2c.StringBuffer();
				str.append(year);
				str.append("-");
				str.append(month);
				str.append("-");
				str.append(day);
				str.append(" ");
				str.append(time);
				return str.toString();
			},
			daysBetween:function(DateOne,DateTwo){    
				var OneMonth = DateOne.substring(5,DateOne.lastIndexOf ('-'));   
				var OneDay = DateOne.substring(DateOne.length,DateOne.lastIndexOf ('-')+1);   
				var OneYear = DateOne.substring(0,DateOne.indexOf ('-'));   
			   
				var TwoMonth = DateTwo.substring(5,DateTwo.lastIndexOf ('-'));   
				var TwoDay = DateTwo.substring(DateTwo.length,DateTwo.lastIndexOf ('-')+1);   
				var TwoYear = DateTwo.substring(0,DateTwo.indexOf ('-'));   
			   
				var cha=((Date.parse(OneMonth+'/'+OneDay+'/'+OneYear)- Date.parse(TwoMonth+'/'+TwoDay+'/'+TwoYear))/86400000);    
				return Math.abs(cha);   
			}   
		};
	},
	purchaseLimit:function(data){
		return{
			data:data,
			date:this.date(),
			myclick:true,//判断第几次点击
			set:data.set,//所有商品的时间段
			store:data.myStore,//本商品的初始时间段
			numTotal:0,//所有的时间数量：月数*24
			firStore:false,
			processDom:function(e){//处理DOM
				var self = this;
				var oCon = $(this.data.container);
				oCon.html("");
				var numDays = 0;
				var arrTrig =  this.getTrigDate(this.data.trig).split("-");
				var year = parseInt(arrTrig[0],10);
				var month = parseInt(arrTrig[1],10);
				numDays = this.date.getDate(year,month-1);
				var numTotal = 0;
				var strDate = new b2c.StringBuffer();//使用StringBuffer类连接字符串，优化性能
				//+性能测试
				//|var d1 = new Date();
				for(var i=1;i<=numDays;i++){
					strDate.append("<dl class=\"date-box\"><dt class=\"date-title\"><span class=\"date-year\">");
					strDate.append(year);
					strDate.append("<\/span>年<span class=\"date-month\">");
					strDate.append(month);
					strDate.append("<\/span>月<span class=\"date-day\">");
					strDate.append(i);
					strDate.append("<\/span>日<\/dt>");
					for(var j=0;j<24;j++){
						numTotal++;
						var date = this.date.format(year,month,i,j); 
						strDate.append("<dd class=\"date-time\"><a id=\"");
						strDate.append(numTotal);
						strDate.append("\" href=\"#\" class=\"useful\" title=\"");
						strDate.append(date);
						strDate.append(":00\"");
						strDate.append(" >");
						strDate.append(j);
						strDate.append("<\/a></dd>");
					}
					strDate.append("<\/dl>");
					var result = strDate.toString();
				}
				oCon.html(result);
				this.numTotal = numTotal;
				if(this.store.start){
					this.checkSet(this.store,"selected");
				}
				for(i=0,len=this.set.length;i<len;i++){
					this.checkSet(this.set[i],"occupy");
				}
				this.linkEvent();
				//+性能测试
				//|var d2 = new Date();
				//+alert(d2.getTime()-d1.getTime());
				strDate = null;
				date = null;
				result = null;
			},
			linkEvent:function(){
				var self = this;
				var firInput = $(this.data.start);
				var secInput = $(this.data.end);
				var firId;
				var secId;
				var cls = /useful/;
				var oStartEnd = $("*[node='start-end']");
				$(".date-box").click(function(e){
					var oClick = b2c.mouseTarget(e);
					if (cls.test(oClick.className)){
						if(self.myclick){
							oStartEnd.attr("node","end");
							firInput.attr("value",oClick.title);
							secInput.attr("value","");
							firId = parseInt(oClick.id,10);
							$(".selected",$(".date-box")).removeClass("selected common");
							$(oClick).addClass("selected common");
							self.store.start = $("#"+firId).attr("title");
							self.store.end = self.store.start;
							self.firStore = false;

						}else{
							if(self.firStore){
								firId = self.firStore;
							}
							secId = parseInt(oClick.id,10);
							//alert("fir:"+firId+" sec:"+secId);
							if(self.setLayout(firId,secId,"selected")){
								secInput.attr("value",oClick.title);
								//$(oClick).addClass("selected");尾部不选
								self.store.end = $("#"+secId).attr("title");
								oStartEnd.attr("node","end");
							}else{
								self.myclick = true;
								return false;
							}
						}
						self.myclick = !self.myclick;
						return false;
					}
				});
			},
			setLayout:function(start,end,cls,prd){
				var self = this;
				var isTop = false;
				var isEnd = false;
				var sTimeStart,sTimeEnd,isNeg;
				start = start;
				end = end;
				if(start&&!end){
					end = this.numTotal;
					isEnd = true;
				}else if(!start&&end){
					start = 1;
					isTop = true;
				}
				var oStart = $("#"+start);
				var oEnd = $("#"+end);
				var isStart;
				var iExist = 0;
				if(cls=="occupy"){
					for(var i=parseInt(start,10)+1;i<end;i++){
						var oA = $("#"+i);
						var title = oA.attr("title");
						oA.attr("class",cls);
						oA.attr("title",title+" 占用商品:"+prd);
						oA.click(function(){return false;});
					}
					//alert("isTop="+isTop+",isEnd="+isEnd+",start="+start+",end="+end);
					oStart.addClass(cls);
					oEnd.addClass(cls);
					if(!isTop){
						oStart.addClass("inter");
						oStart.attr("node","start");
					}else if(end!=start){
						oStart.attr("class",cls);
						oStart.attr("node","start");
						oStart.attr("title",title+" 占用商品:"+prd);
						oStart.click(function(){return false;});
					}
					if(!isEnd){
						oEnd.addClass("inter");
						oEnd.attr("node","end");
					}else if(end!=start){
						oEnd.attr("class",cls);
						oEnd.attr("node","end");
						oEnd.attr("title",title+" 占用商品:"+prd);
						oEnd.click(function(){return false;});					
					}
					if(end==1){
						oEnd.addClass("inter");
						if(this.myclick){
							oEnd.attr("node","end");
						}else{
							oEnd.attr("node","start-end");
						}
					}
				}else if(start){
					sTimeStart = $(this.data.start).attr("value");
					if(!sTimeStart||sTimeStart===""){
						$(this.data.start).attr("value",oStart.attr("title"));
						$(this.data.end).attr("value",oEnd.attr("title"));
					}
					sTimeEnd = oEnd.attr("title");
					isNeg = this.getInterval(sTimeStart,sTimeEnd);
					if(isNeg<0){
						alert("请选择起始时间之后的时间点！");
						return false;
					}else if(start==end){
						this.firStore = end;
					}else{
						this.firStore = false;
					}
					//alert("start="+start+",end="+end);
					for(i=start;i<=end;i++){
						oA = $("#"+i);
						var reg = /occupy/;
						isStart = oA.attr("node");
						if(i<end&&isStart=="start"){
							alert("中间时间已被占用，请重新选择");
							return false;							
						}else if(isStart=="start-end"){
							alert("中间时间已被占用，请重新选择");
							oA.attr("node","end");
							return false;
						}
						oA.addClass(cls);
					}
					if(!isEnd){
						oEnd.addClass("common");
					}
					if(!isTop){
						oStart.addClass("common");					
					}
				}
				return true;
			},
			getInterval:function(d1,d2){
				if(d1&&d2){
					var toDate = this.date.toDate;
					var interval = 0;
					if(typeof d1 == "string"){d1 = toDate(d1);}
					if(typeof d2 == "string"){d2 = toDate(d2);}
					interval = d1.DateDiff("h",d2);
					return interval;
				}else{
					return false;
				}
			},
			checkSet:function(o,cls){
				var toDate = this.date.toDate;
				var titleStart = o.start.replace(/([\- ])0(\d)/g,"$1$2");
				var titleEnd = o.end.replace(/([\- ])0(\d)/g,"$1$2");
				var numStart = $("*[title="+titleStart+"]").attr("id");
				var numEnd = $("*[title="+titleEnd+"]").attr("id");
				var prd = o.product;
				if(!prd){prd="";}
				this.setLayout(numStart,numEnd,cls,prd);
			},
			getTrigDate:function(cls){
				var strDate="";
				$(cls).each(function(){
					strDate += "-" + $(this)[0].value;
				});
				return strDate.replace("-","");
			},
			getTrigDateDays:function(e){
				var self = e.data.self;
				var cls = e.data.cls;
				self.processDom();
			},
			init:function(){
				var data = this.data;
				var self = this;
				$(this.data.start).attr("value","");
				$(this.data.end).attr("value","");
				this.processDom();
				$(this.data.trig).bind("change",{cls:data.trig,self:self},this.getTrigDateDays);
			}
		};
	},
	clipboard:function(data){
		return{
			copy:function(str) {
					var path = data.path;
					if (window.clipboardData){
						window.clipboardData.setData("Text",str);
					}else{
					var flashcopier = 'flashcopier';
					if(!document.getElementById(flashcopier)) {
					  var divholder = document.createElement('div');
					  divholder.id = flashcopier;
					  document.body.appendChild(divholder);
					}
					document.getElementById(flashcopier).innerHTML = '';
					var divinfo = '<embed src="'+path+'_clipboard.swf" FlashVars="clipboard='+str+'" width="0" height="0" type="application/x-shockwave-flash"></embed>';
					document.getElementById(flashcopier).innerHTML = divinfo;
				  }
				  alert('复制成功！');
			}
		};
	}
};

//手机充值
var mobile = {
	viewResult : function(mobileType, area, prix, murl){
		$.ajax({
			url:murl,
			async:true,
			cache:false,
			data:{mobileType:mobileType,area:area,prix:prix},
			dataType:"html",
			type:"POST",
			success:function(html){
				$("#loading").hide();
				$("div.mobile-frame-result").html(html);
				$("div.mobile-frame-result").show();
				$("div.mobile-frame").css("overflow-y","auto");
			},
			error:function(){
				alert("请求超时，请重试。");
				mobile.reSelect();
			}
		});
	},
	reSelect : function(){
		$("mobile-frame-result").empty();
		$("#loading").hide();
		$("div.mobile-frame-result").hide();
		$("div.mobile-frame").css("overflow-y","hidden");
		//$("#viewResultBtn").attr("disabled",false);
		$("ul.selectType").show();
	}
};

//滑动门
var tabSlide = {
	tabInit : function(obj,slideType,time){
		var self = this;
		for (i=0;i<obj.length ;i++ ){
			obj[i] = "#" + obj[i];
			obj[i] = $(obj[i]);
			if (typeof(slideType[i]) === "undefined"){
				slideType[i] = slideType[0];
			}
			if (typeof(time[i]) === "undefined"){
				time[i] = time[0];
			}
		}
		self.obj = obj;
		self.time = time;
		self.cIndex = [];
		self.len = [];
		self.timeset = [];
		for (i=0;i<self.obj.length ;i++ ){
			if (slideType[i] === "auto") {
				self.tabStart(i);
			}else{
				self.tabShow(i);
			}
		}
	},
	tabStart : function(i){
		var self = this;
		self.timeset[i] = setInterval(function(){
			self.tabNext(i);
		},self.time[i]);
		self.obj[i].find("li").mouseover(function(){
			clearInterval(self.timeset[i]);
			self.obj[i].find("li.current").removeClass("current");
			$(this).addClass("current");
		}).mouseout(function(){
			self.timeset[i] = setInterval(function(){
				self.tabNext(i);
			},self.time[i]);
		});
	},
	tabNext : function(i){
		var self = this;
		self.cIndex[i] = self.obj[i].find("li").index(self.obj[i].find("li.current")[0]);
		self.len[i] = self.obj[i].find("li").size();
		self.obj[i].find("li.current").removeClass("current");
		self.cIndex[i] = self.cIndex[i] + 1;
		if (self.cIndex[i] + 1 > self.len[i]) self.cIndex[i] = 0;
		self.obj[i].find("li").eq(self.cIndex[i]).addClass("current");
	},
	tabPrev : function(i){
		var self = this;
		self.cIndex[i] = self.obj[i].find("li").index(self.obj[i].find("li.current")[0]);
		self.len[i] = self.obj[i].find("li").size();
		self.obj[i].find("li.current").removeClass("current");
		self.cIndex[i] = self.cIndex[i] - 1;
		if (self.cIndex[i] < 0) self.cIndex[i] =  self.len[i] - 1;
		self.obj[i].find("li").eq(self.cIndex[i]).addClass("current");
	},
	tabShow : function(i){
		var self = this;
		self.obj[i].find("li").mouseover(function(){
			self.obj[i].find("li.current").removeClass("current");
			$(this).addClass("current");
		});
	}
};

//Tab切换
function setTab(obj){
	var $obj = $('.'+obj);
	var $parent = $obj.parent();
	$parent.find('li').removeClass('selected');
	$obj.addClass('selected');
	$parent.next('div.inner').find('.box').hide();
	$('#'+obj).show();
}

//商品分类切换
function cateFold(obj){
	$(obj).each(function(n){
		$(this).bind("mouseover",function(ev){
			var dl = $(this).find("dl");
			$(this).parent().find("li").css({"z-index":"1"});
			$(this).css("z-index","5");
			$(this).find("h3 a").addClass("hover");
			$(this).find("span.blank").css("display","block");
			dl.css("display","block");
			var objY = getAbsPoint($(this).get(0));
			var scrollTop = document.documentElement.scrollTop;
			var clientHeight = document.documentElement.clientHeight;
			var offsetHeight = dl.get(0).offsetHeight;
			var objTop = scrollTop + clientHeight - offsetHeight - objY;
			if (objTop > 0) objTop = 0;
			if (objY + objTop <=0 ) objTop = -objY+scrollTop;
			dl.css("top",objTop + "px");
			return false;
		});
		$(this).bind("mouseout",function(ev){
			$(this).find("h3 a").removeClass("hover");
			$(this).parent().parent().find("dl,span.blank").css("display","none");
			return false;
		});
	});
}

//元素坐标
function  getAbsPoint(e){
	var y = e.offsetTop;     
	while(e=e.offsetParent){
		y += e.offsetTop;  
	}
	return y;
}

/* Dom滚动 */
var objScroll = {
	init : function(obj1,obj2,objParent,scrollType,timer,speed){
		var self = this;
		self.timer = timer;
		self.speed = speed;
		self.obj1 = document.getElementById(obj1);
		self.obj2 = document.getElementById(obj2);
		self.objParent = document.getElementById(objParent);
		self.objParentL = 0;
		self.obj2.innerHTML = self.obj1.innerHTML;
		eval("self.interVal('self." + scrollType + "()')");
	},
	left : function(){
		var self = this;
		if (self.objParentL <= -self.obj1.offsetWidth){
			self.objParentL = 0;
			$(self.objParent).css("marginLeft",self.objParentL);
		}
		$(self.objParent).animate({
			marginLeft: self.objParentL - self.speed + "px"
		},1000,function(){
			self.objParentL -= self.speed;
		});
	},
	right : function(){
		var self = this;
		if (self.objParentL >= 0){
			self.objParentL = -self.obj1.offsetWidth;
			$(self.objParent).css("marginLeft",self.objParentL);
		}
		$(self.objParent).animate({
			marginLeft: self.objParentL + self.speed + "px"
		},1000,function(){
			self.objParentL += self.speed;
		});
	},
	top : function(){
		var self = this;
		if (self.objParentL <= -self.obj1.offsetHeight){
			self.objParentL = 0;
			$(self.objParent).css("marginTop",self.objParentL);
		}
		$(self.objParent).animate({
			marginTop: self.objParentL - self.speed + "px"
		},1000,function(){
			self.objParentL -= self.speed;
		});
	},
	interVal : function(FunctionName){
		var self = this;
		if (typeof(MyMar) !== "undefined"){
			clearInterval(MyMar);
		}
		MyMar=setInterval(function(){
			eval(FunctionName);
		},self.timer);
		self.objParent.onmouseover=function(){
			clearInterval(MyMar);
		}
		self.objParent.onmouseout=function(){
			MyMar=setInterval(function(){
				eval(FunctionName);
			},self.timer);
		}	
	}
}

var fastLogin = {
	init:function(funcName,redirectUrl,viewType){
		var self = this;
		if (funcName && funcName.length > 0) self.funcName = funcName;
		if (redirectUrl && redirectUrl.length > 0) self.redirectUrl = redirectUrl;
		$("#hiddenFastLoginContent").remove();
		if (typeof(basePath) === "undefined") basePath = "";
		var HTML = "<div id=\"hiddenFastLoginContent\" style=\"display:none\">";
		HTML += "<div class=\"winNote floatClean login\">";
		HTML += "<p class=\"titleh3\">";
		HTML += "<a onclick=\"tb_remove()\" href=\"javascript:void(0)\" style=\"position:absolute;right:4px;top:0px;\">";
		HTML += "<img src=\"" + basePath + "/images/front/btn_close.gif\" alt=\"关闭\" /></a>";
		HTML += "</p>";
		HTML += "<div class=\"box\">";
		HTML += "<div class=\"clearfix title\">";
		if (viewType === ""){
			HTML += "<div id=\"first\" class=\"current\" onclick=\"fastLogin.slideTab('reg','login','first','second')\">我是新用户</div>";
			HTML += "<div id=\"second\" onclick=\"fastLogin.slideTab('login','reg','second','first')\">我是会员</div>";
		}else if (viewType === "reg"){
			HTML += "<div id=\"first\" class=\"current\">我是新用户</div>";
			HTML += "<div id=\"second\" style=\"display:none\">我是会员</div>";
		}else if (viewType === "login"){
			HTML += "<div id=\"second\" style=\"display:none\">我是新用户</div>";
			HTML += "<div id=\"first\" class=\"current\">我是会员</div>";
		}
		HTML += "<div class=\"line\"></div>";
		HTML += "</div>";
		if (viewType === "" || viewType === "reg"){
			HTML += "<div id=\"reg\">";
		}else if (viewType === "login"){
			HTML += "<div id=\"reg\" style=\"display:none\">";
		}
		HTML += "<div class=\"box\">";
		HTML += "<form action=\"" + basePath + "/customer.do?method=quickRegister&is_ajax=true\" name=\"registerForm\" id=\"registerForm\" method=\"post\" onsubmit=\"return false\">";
		HTML += "<div class=\"lg_m2\" style=\"height:170px;\">";
		HTML += "<table style=\"width:100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">";
		HTML += "<tr class=\"notice\">";
		HTML += "<th><span class=\"exp_star\">*</span> E-mail：</th>";
		HTML += "<td><input type=\"text\" name=\"nmail\" id=\"nmail\" class=\"lg_ipt\" /><dt id=\"nmail_dt\"><span class=\"notes\"> E-mail将作为您的登录帐号</span></dt></td>";
		HTML += "</tr>";
		HTML += "<tr class=\"notice\">";
		HTML += "<th><span class=\"exp_star\">*</span> 密码：</th>";
		HTML += "<td><input type=\"password\" class=\"lg_ipt\" name=\"npws\" id=\"npws\"/><dt id=\"ns-pws1\"></dt></td>";
		HTML += "</tr>";
		HTML += "<tr class=\"notice\">";
		HTML += "<th><span class=\"exp_star\">*</span> 确认密码：</th>";
		HTML += "<td><input type=\"password\" class=\"lg_ipt\" name=\"repws\" id=\"repws\" /><dt id=\"ns-pws\"></dt></td>";
		HTML += "</tr>";
		HTML += "<tr>";
		HTML += "<th>&nbsp;</th>";
		HTML += "<td style=\"padding-top:5px 0 10px;color:#666666;\">";
		HTML += "<input type=\"checkbox\" id=\"ag_duty32\" name=\"ag_duty32\" class=\"ipt_smp\" checked=\"checked\" />";
		HTML += "我已经阅读并接受<a href=\"" + basePath + "/file/articles/20081216/200812160547141219312034131119.htm\">365商城用户服务协议</a>。<br />";
		HTML += "<button class=\"btnS sYellow\" type=\"button\" onclick=\"fastLogin.checkRegData()\">同意服务协议，确认注册</button>";
		HTML += "</td>";
		HTML += "</tr>";
		HTML += "</table>";
		HTML += "</div>";
		HTML += "</form>";
		HTML += "<div class=\"lg_m2\" style=\"padding:0;\">";
		HTML += "<div class=\"f60\">如果您是支付宝用户，请点此&nbsp;&nbsp;<a href=\"" + basePath + "/alipay.shtml\"><img src=\"" + basePath + "/images/front/icon_login_alipay.gif\" style=\"vertical-align:middle\" /></a>";
		HTML += "</div>";
		HTML += "</div>";
		HTML += "</div>";
		HTML += "</div>";
		if (viewType === "" || viewType === "reg"){
			HTML += "<div id=\"login\">";
		}else if (viewType === "login"){
			HTML += "<div id=\"login\" style=\"display:block\">";
		}
		HTML += "<div class=\"box\">";
		HTML += "<form action=\"" + basePath + "/customer.do?method=customerLogon&is_ajax=true\" name=\"loginForm\" id=\"loginForm\" method=\"post\" onsubmit=\"return false\">";
		HTML += "<input type=\"hidden\" name=\"password_save\" id=\"password_save\" value=\"\"/>";
		HTML += "<div class=\"lg_m2\" style=\"height:170px;\">";
		HTML += "<table style=\"width:100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">";
		HTML += "<tr>";
		HTML += "<th><span class=\"exp_star\">*</span> E-mail：</th>";
		HTML += "<td><input type=\"text\" name=\"mail\" id=\"email\" class=\"lg_ipt\" onblur=\"fastLogin.getPassWorld()\" /></td>";
		HTML += "</tr>";
		HTML += "<tr>";
		HTML += "<th><span class=\"exp_star\">*</span> 密码：</th>";
		HTML += "<td id=\"pass_world\"><input type=\"password\" class=\"lg_ipt\" name=\"pws\" id=\"epws\"/></td>";
		HTML += "</tr>";
		HTML += "<tr>";
		HTML += "<th></th>";
		HTML += "<td><dt id=\"s-pws\"></dt></td>";
		HTML += "</tr>";
		HTML += "<tr>";
		HTML += "<th></th>";
		HTML += "<td><input type=\"checkbox\" id=\"pwd\" onclick=\"fastLogin.savePassWorld(this)\"/> <label for=\"pwd\">记住密码</label> | <a href=\"" + basePath + "/html/front/member/forgot_pwd_1.jsp\" target=\"_blank\">找回密码</a></td>";
		HTML += "</tr>";
		HTML += "<tr>";
		HTML += "<th>&nbsp;</th>";
		HTML += "<td><button class=\"btnS sYellow\" type=\"button\" onClick=\"fastLogin.checkLoginData()\">&nbsp;&nbsp;登&nbsp;&nbsp;&nbsp;&nbsp;录&nbsp;&nbsp;</button></td>";
		HTML += "</tr>";
		HTML += "</table>";
		HTML += "</div>";
		HTML += "</form>";
		HTML += "<div class=\"lg_m2\" style=\"padding:0;\">";
		HTML += "<div class=\"f60\">";
		HTML += "如果您是支付宝用户，请点此&nbsp;&nbsp;<a href=\"" + basePath + "/alipay.shtml\"><img src=\"" + basePath + "/images/front/icon_login_alipay.gif\" style=\"vertical-align:middle\" /></a>";
		HTML += "</div>";
		HTML += "</div>";
		HTML += "</div>";
		HTML += "</div>";
		HTML += "</div>";
		HTML += "</div>";
		HTML += "</div>";
		$("body").append(HTML);
		tb_show("","#TB_inline?width=580&amp;inlineId=hiddenFastLoginContent&amp;modal=true",false)
	},
	slideTab:function(id,id2,id3,id4){
		$("#"+id).css("display","block");
		$("#"+id2).css("display","none");
		$("#"+id3).attr("class","current");
		$("#"+id4).removeClass();
	},
	savePassWorld:function(obj){
		if ($(obj).attr("checked")){
			$("#password_save").val("true");
		}else{
			$("#password_save").val("");
		}
	},
	getPassWorld:function(){
		var self = this;
		var url = basePath + "/customer.do?method=getPassWorld&mail="+$.trim($("#mail").value);
		self.GetResult(url);
	},
	GetResult:function(url){
		$.ajax({
			cache:false,
			url:url,
			type:"POST",
			timeout:20000,
			dataType:"text",
			error:function(){
				alert('请求超时，请重试。');
			},
			success:function(data, textStatus){
				if(data!=''){
					$("#pass_world").html("<input type=\"password\" class=\"lg_ipt\" name=\"pws\" id=\"pws\" value=\""+data+"\"/>");
				}else{
					$("#pws").val("");
					return;
				}
			}
		});
	},
	checkRegData:function(){
		var self = this;
		self.doCheckEmail("nmail","nmail_dt");
		if(result){
			self.doCheckPassWord("npws","ns-pws1");
			if(result_passw){
				self.doCheckRePassWord("npws","repws","ns-pws");
				if(result_passw_r){
					self.doCheckAgreeService("ag_duty32","ns-pws");
					if(agree_service){
						var oForm=document.getElementById("registerForm");
						var sBody=self.getRequestBody(oForm);
						$.ajax({
							cache:false,
							url:oForm.action + "&" + sBody,
							data:sBody,
							type:"POST",
							timeout:20000,
							dataType:"text",
							error:function(){
								alert('请求超时，请重试。');
							},
							success:function(data, textStatus){
								var res = data.split("_");
								if(res[0] && res[0]=="true"){
									tb_remove();
									$("#hiddenFastLoginContent").remove();
									$("#top_login_id").html("<span>您好，"+res[2]+" 祝您购物愉快!  <a href=\"" + basePath + "/memberLogout.shtml\">[退出]</a></span>");
									//此处执行传入的JS函数，或者重定向到某URL
									if (self.redirectUrl.length > 0){
										top.location.href = self.redirectUrl;
									}else if (self.funcName.length > 0){
										eval("(" + self.funcName + ")");
									}
								}else{
									$("#nmail_dt").parent().parent().attr("class","alert");
									if (res[1]) $("#nmail_dt").html("<span style=\"color:#ff0000\">" + res[1] + "</span>");
								}
							}
						});
					}else{
						return false;
					}
				}else{
					return false;
				}
			}else{
				return false;
			}
		}else{
			return false;
		}
		return false;
	},
	checkLoginData:function(){
		var self = this;
		self.doCheckEmail("email","s-pws");
		if(result){
			self.doCheckPassWord("epws","s-pws");
			if(result_passw){
				var oForm=document.getElementById("loginForm");
				var sBody=self.getRequestBody(oForm);
				$.ajax({
					cache:false,
					url:oForm.action + "&" + sBody,
					data:sBody,
					type:"POST",
					timeout:20000,
					dataType:"text",
					error:function(){
						alert('请求超时，请重试。');
					},
					success:function(data, textStatus){
						var res = data.split("_");
						if(res[0] && res[0]=="false"){
							$("#s-pws").parent().parent().attr("class","alert");
							if (res[1]) $("#s-pws").html("<span style=\"color:#ff0000\">" + res[1] + "</span>");
							return false;
						}else if(res[0]=="true"){
							tb_remove();
							$("#hiddenFastLoginContent").remove();
							$("#top_login_id").html("<span>您好，"+res[2]+" 祝您购物愉快!  <a href=\"" + basePath + "/memberLogout.shtml\">[退出]</a></span>");
							//此处执行传入的JS函数，或者重定向到某URL
							if (self.redirectUrl && self.redirectUrl.length > 0){
								top.location.href = self.redirectUrl;
							}else if (self.funcName && self.funcName.length > 0){
								eval("(" + self.funcName + ")");
							}
						}
					}
				});
			}
		}
	},
	doCheckEmail:function(mail_id,pws_id){
		var reg = /^([a-zA-Z0-9]+[_|\-|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\-|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/;
		var email = $("#" + mail_id);
		var pws_id = $("#" + pws_id);
		if($.trim(email.val()).length==0){
			pws_id.parent().parent().attr("class","alert");
			pws_id.html("<span style=\"color:#ff0000\">请填写E-mail地址</span>");
			result = false;
			return;
		}else if(!reg.exec($.trim(email.val()))){
			pws_id.parent().parent().attr("class","alert");
			pws_id.html("<span style=\"color:#ff0000\">E-mail地址格式错误</span>");
			result = false;
			return;
		}else {
			pws_id.parent().parent().attr("class","notice")
			pws_id.empty();
			result = true;
		}
	},
	doCheckPassWord:function(pwsid,spwsid){
		var passwords = $("#" + pwsid);
		var spwsid = $("#" + spwsid);
		if($.trim(passwords.val()).length==0){
			spwsid.parent().parent().attr("class","alert");
			spwsid.html("<span style=\"color:#ff0000\">请填写密码!</span>");
			result_passw = false;
			return ;
		}else if($.trim(passwords.val()).length < 6 || $.trim(passwords.val()).length > 16){
			spwsid.parent().parent().attr("class","alert");
			spwsid.html("<span style=\"color:#ff0000\">密码由6-16个英文字母或数字组成!</span>");
			result_passw = false;
			return ;
		}else{
			spwsid.parent().parent().removeClass()
			spwsid.empty();
			result_passw = true;
		}
	},
	doCheckRePassWord:function(pwsid1,pwsid2,spwsid){
		var password1 = $("#" + pwsid1);
		var password2 = $("#" + pwsid2);
		var spwsid = $("#" + spwsid);
		if($.trim(password1.val()) !== $.trim(password2.val())){
			spwsid.parent().parent().attr("class","alert")
			spwsid.html("<span style=\"color:#ff0000\">两次密码输入不一致!</span>");
			result_passw_r = false;
			return ;
		}else{
			spwsid.parent().parent().removeClass()
			spwsid.empty();
			result_passw_r = true;
		}
	},
	doCheckAgreeService:function(duty,spwsid){
		var duty = $("#" + duty);
		var spwsid = $("#" + spwsid);
		if(!duty.attr("checked")){
			spwsid.parent().parent().attr("class","alert")
			spwsid.html("<span style=\"color:#ff0000\">请先阅读服务条款，同意并提交注册!</span>");
			agree_service = false;
			return ;
		}else{
			spwsid.parent().parent().removeClass()
			spwsid.empty();
			agree_service = true;
		}
	},
	getRequestBody:function(oForm){
		var aParams=new Array();
		for(var i=0;i<oForm.elements.length;i++){
			var sParam=encodeURIComponent(oForm.elements[i].name);
			sParam+="=";
			sParam+=encodeURIComponent(oForm.elements[i].value);
			aParams.push(sParam);
		}
		return aParams.join("&");
	}
}