/*
* Auth@can
*/
/* ----------------------------------Customize Class-------------------------------------------------------------- */
var Customize = Class.create();
Customize.prototype = {
	initialize : function(){
		this.CustomizeSetting = CookieHelper.GetCustomizeSetting();
	},
	LoadPage : function(){ //获得定制页面内容
		var aTmpColumns = $('trs_customize').childNodes;
		var aColumns = [];
		for (var i = 0; i < aTmpColumns.length; i++){
			var eColumn = aTmpColumns[i];
			if(eColumn.nodeType != 3 && Element.hasClassName(eColumn,'customize_column')){
				aColumns.push(eColumn);
			}
		}
		aColumns.each(function(_eColumn , _nIndex){
			this._LoadColumn(_eColumn, _nIndex);
		}.bind(this));
	},  
	_LoadColumn : function(_eColumn,_nIndex){ //@priavted获得栏目得页面内容
		var aColumnValue = this.CustomizeSetting[_nIndex];
		aColumnValue.each(function(_oCellItemId,_nIndex){
			this._LoadCell(_eColumn,_oCellItemId);
		}.bind(this));
	},
	_LoadCell : function(_eColumn,_oCellItemId){ //@priavted获得远程页面内容，priavted
		var oCellItem = Customize_DATA[_oCellItemId];
		var eDiv = document.createElement('DIV');
		eDiv.title = oCellItem.name; 
		_eColumn.appendChild(eDiv);
		new Ajax.Updater(eDiv, oCellItem.url, {
			method:"GET",
			parameters:""
		});	
	},
	SaveSetting : function(){
		for(var i=0; i<Customize_DEFAULT_SETTING.length; i++){
			var eSetting = $('trs_customize_setting_'+i);
			if(eSetting){
				this.CustomizeSetting[i] = this._GetColumnSetting(eSetting);
			}
			else{
				this.CustomizeSetting[i] = [];
			}
		}
		CookieHelper.SetCustomizeSetting(this.CustomizeSetting); 
	},
	_GetColumnSetting:function(_eSetting){
		var oColumnSetting = [];	
		for(var i=0; i<_eSetting.options.length; i++){		 
			oColumnSetting[i] = _eSetting.options[i].value;    
		}
		return oColumnSetting;
	},
	LoadSetting:function(){//获取本地得页面定制配置 
		var aTmpColumns = $('trs_customize_setting').childNodes;
		var aColumns = [];
		for (var i = 0; i < aTmpColumns.length; i++){
			var eColumn = aTmpColumns[i];
			if(eColumn.nodeType != 3 && Element.hasClassName(eColumn,'customize_setting')){
				aColumns.push(eColumn);
			}
		}
		aColumns.each(function(_eColumn , _nIndex){
			this._LoadColumnSetting(_eColumn, _nIndex);
		}.bind(this));
		this._BindSettingEvent();
	},
	_BindSettingEvent : function(){
		Event.observe($('trs_customize_setting'),'click',function(_event){
			var event = window.event||_event;
			var elSrcElement = Event.element(event);
			if(Element.hasClassName(elSrcElement,'customize_oper')){
				var aMoveStep = (elSrcElement.getAttribute('_oper',2)||'0,0').split(',');
				this._SettingMove.apply(this,aMoveStep);
				return false;
			}
		}.bind(this));
	},
	_SettingMove : function(_nColumnId, _hStep, _vStep){
		var nColumnId = parseInt(_nColumnId,10);
		_hStep = parseInt(_hStep,10);
		_vStep = parseInt(_vStep,10);
		var elSetting = $('trs_customize_setting_'+nColumnId);
		if(elSetting!=null){
			var nSelectedIndex = elSetting.selectedIndex;
			if(_hStep==0){
				var sText = elSetting.options[nSelectedIndex].text;
				var sValue = elSetting.options[nSelectedIndex].value;
				if (nSelectedIndex>0 && _vStep==-1) {
					elSetting.options[nSelectedIndex].text = elSetting.options[nSelectedIndex-1].text;
					elSetting.options[nSelectedIndex].value = elSetting.options[nSelectedIndex-1].value;
					elSetting.options[nSelectedIndex-1].text = sText;
					elSetting.options[nSelectedIndex-1].value = sValue;
					elSetting.selectedIndex--;
				} 
				else if (nSelectedIndex<elSetting.options.length-1 && _vStep==1) {
					elSetting.options[nSelectedIndex].text = elSetting.options[nSelectedIndex+1].text;
					elSetting.options[nSelectedIndex].value = elSetting.options[nSelectedIndex+1].value;
					elSetting.options[nSelectedIndex+1].text = sText;
					elSetting.options[nSelectedIndex+1].value = sValue;
					elSetting.selectedIndex++;
				}
			}
			else{
				var nTargetColumnId = nColumnId+_hStep;
				if(nTargetColumnId>=0&&nTargetColumnId<Customize_DEFAULT_SETTING.length){
					var elTargetSetting = $('trs_customize_setting_'+nTargetColumnId);
					if(elTargetSetting){
						var sText = elSetting.options[nSelectedIndex].text;
						var sValue = elSetting.options[nSelectedIndex].value;
						elTargetSetting.options[elTargetSetting.options.length] = 
							new Option(sText, sValue, false, false);
						elTargetSetting.selectedIndex = elTargetSetting.options.length-1;
						elTargetSetting.scrollIntoView(false);
						elSetting.options.remove(nSelectedIndex);
					}
				}
			}
		}
	},
	_LoadColumnSetting:function(_eColumn,_nIndex){//@priavted获得栏目得选择内容
		var aColumnValue = this.CustomizeSetting[_nIndex];
		var elSetting = document.createElement('SELECT');
		elSetting.id = 'trs_customize_setting_'+_nIndex;
		elSetting.className = 'trs_customize_setting';
		elSetting.size = 5;
		elSetting.multiple = true;
		_eColumn.appendChild(elSetting);
		for(var i=0; i<aColumnValue.length; i++){
			var nCellItemId = aColumnValue[i];
			elSetting.options[i] = new Option(Customize_DATA[nCellItemId].name, nCellItemId, false, false);
		}
//		elSetting.options[elSetting.options.length] = new Option("--------------","spacer",false,false);	
	}
}

/* ----------------------------------CookieHelper Static Class-------------------------------------------------------------- */
var CookieHelper = {
	GetCustomizeSetting : function(){
	    var oCustomizeSetting = [];
		if(CookieHelper.GetValue("TRS_CUSTOMIZE_SETTING")==null){
			oCustomizeSetting = Customize_DEFAULT_SETTING;
			CookieHelper.SetCustomizeSetting(Customize_DEFAULT_SETTING);
		}
		else{
			var aTmpData = CookieHelper.GetValue("TRS_CUSTOMIZE_SETTING").split("!");
			for(var i=0; i<aTmpData.length; i++){
				oCustomizeSetting[i] = aTmpData[i].split(",");   
			}
		}
		return oCustomizeSetting;
	},
	SetCustomizeSetting : function(_oCustomizeData){
		CookieHelper.SetValue("TRS_CUSTOMIZE_SETTING",_oCustomizeData.join("!"),1*24*30);
	},
	SetValue:function(name,value,hours,path,domain,secure){  //设置cookie值
		var str = "";
		var nextTime = new Date();
		nextTime.setHours(nextTime.getHours()+hours);
		str = name+"="+escape(value);
		if(hours)
			str += ";expires="+nextTime.toGMTString();
		if(path){
			str += ";path="+path;
		}else{
			var sLocation = window.location.href;
			var nPos = sLocation.indexOf("/", 10);
			if(nPos>0){
				var nNextPos = sLocation.indexOf("/", nPos+1);
				str += ";path="+sLocation.substring(nPos, nNextPos+1);
			}else{
				//str += ";path=/pub/custom";
				alert("地址有误？？"+sLocation);
			}
			//str += ";path=/customdemo/";
		}
		if(domain)
			str += ";domain="+domain;
		if(secure)
			str += ";secure";
		document.cookie = str;
	}, 
	GetValue:function(name){ //得到cookie值
		var rs = new RegExp("(^|)"+name+"=([^;]*)(;|$)","gi").exec(document.cookie);
		if(rs!=null)
			return unescape(rs[2]);
		return null;
	} 
}  

