var Basket = Class.create({
	initialize : function(){
	},
	//放入购物篮
	puttingToBasket : function(params){
		//console.log("puttingToBasket.");

		var url = constants.url() + "/apps/sale/basketWrite.action"; 
		var callback = function(response){
			var status = response.status;
			var responseXML = response.responseXML; 
			if (!(status == 200 && responseXML)){
				alert('连接错了.');				
			}else{
				var temp = null;
				var success = null;
				if(Prototype.Browser.IE){
					temp = responseXML.getElementsByTagName("success");
					success = temp[0].text;
				}else{
					var root = responseXML.documentElement;
					Object.extend(root,Element);
					temp = root.firstChild;
					success = temp.textContent;
				}
				
				if (success != "true"){
					alert('创建错了 .');
				}
			}
		}
		gCommonAsynRequest(url,"",params,callback,false);
		
	},
	//显示购物清单
	showBasket : function(){
		var arr = [];
		arr.push('');
		arr.push('');
		arr.push('');
		this.gotoPage(arr);
	},
	//整理购物篮
	cleanUpBasket : function(id, amount){
		var basketId = id;
		
		var url = constants.url() + "/apps/sale/basketUpdate.action"; 
		var params = Object.toQueryString({
								 savingStatus : 1,
								 basId : basketId,
								 amount : amount
								 });
		var callback = function(response){
			var status = response.status;
			var responseXML = response.responseXML; 
			if (!(status == 200 && responseXML)){
				alert('连接错了.');
			} else{ 
				var temp = null;
				var success = null;
				if(Prototype.Browser.IE){
					temp = responseXML.getElementsByTagName("success");
					success = temp[0].text;
				}else{
					var root = responseXML.documentElement;
					Object.extend(root,Element);
					temp = root.firstChild;
					success = temp.textContent;
				}
				
				if (success = "true"){
					this.showBasket();
				}else{ 
					alert('整理失败 ');
				}
			}
			
		}
		this.request(url, params, callback.bind(this));
	},
	//清算物品
	liquidateGoods : function(){
		
		
	},
	//监听元素
	listenEleForBasket : function(){
		var links = $$(".listenerBasketOn");
		
		var handleBind = null;
		var lbBind = null;
		//决定是打开新窗口,还是给属性赋值
		var handle = function(){
			var args = $A(arguments);
			args.shift();
			var queryParams = ""; 
			
			$A($(args[0]).attributes).each(function(s,index){
				if(s.name.match(/params.[^href]/gi)){
					var name = s.name.split('.')[1];
					var value = s.value;
					queryParams += "&" + name + "=" + value;
				}
			});
			
			if(args[0].tagName.toLowerCase() == 'a'){
				if(login){
					this.puttingToBasket(queryParams);
					var url = constants.url() + "/apps/sale/basketTip.action?" ;
					args[0].setAttribute("params.href",url);
					new lightbox(args[0]);
				}else{
					gotoLoginPage(location.href);
				}
			}else{}
		}
		
		
		links.each(function(s){
			Event.observe(s,'click',handle.bindAsEventListener(this,s));
		}.bind(this));
	},
	//初始化分页
	initPage : function(array){
		var arr = [];
		arr.push($F("sb_totalPageCount"));
		arr.push($F("sb_pageNumber"));
		arr.push($F("sb_sortField"));
		arr.push($F("sb_orderBy"));
		arr.unshift(this);
		
		if(arr[1] > 1){
			// 111是总页数, 10是当前显示的页数, 9是每组显示的页数, 
			// [1, 2, 3]是对象数组,这个数组在回调用户的回调函数时会被作为参数传入回调函数
			var vp = new VoxPaginate(arr[1], arr[2], 40, arr);
			vp.addPageChangeCallback(function(totalPageCount, currentPageNumber, attachArray){
				var that = attachArray.shift();
				attachArray[0] = totalPageCount;
				attachArray[1] = currentPageNumber;
				that.gotoPage(attachArray);
			});
		}
		
	},
	//切到某个页面
	gotoPage : function(arr){
		var url = constants.url() + "/apps/sale/basketList.action";
		var params = {
				goPage 		: 1,
				pageNumber 	: arr[1],
				sortField 	: arr[2],
				orderby 	: arr[3]
		};
		var callback = function(response){
			//初始化分页
			this.initPage();
		}
		$("list").update("loading...");
		this.update("list", url, params, callback.bind(this));
	},
	//异步更新
	update : function(id,url,params,callback,asyn){
		new Ajax.Updater(id,url,{
			asynchronous : asyn,
			parameters : params,
			onComplete : callback,
			evalScripts : true
		});
		
	},
	//异步请求
	request : function(url,params,callback,asyn){
		new Ajax.Request(url,{
			asynchronous : asyn,
			parameters : params,
			onComplete : callback,
			evalScripts : true
		});
	}
	
});
var basket = new Basket();

/**
 * 重写部分方法,且添加了一些新的方法
 */
lightbox.addMethods({
	//重写方法
	initialize: function(ctrl) {
		if(!!ctrl){
			this.content = ctrl.getAttribute("params.href");
			this.activate();
		}
	},
	actions : function($super){
		//添加一段新逻辑
		//照旧执行
		$super();
	}
	
});
