function DynDataSet(){}
DynDataSet.version=function(){
	alert("[version:]0.2 beta");
}

DynDataSet.prototype={
	init:function(type,parameters){
		this.parameters = parameters;
		this.url = parameters.url||'';
		var pars = parameters.pars||'';
		// 显示类型
		this.type = type;
		if (type=='pagate'){// 分页
			this.pagateList(this.url,pars);
		}else if(type=='list'){
			this.list(this.url,pars,this.conid);
		}else{
			//alert("[PROMPT:]请定义type参数['pagate','list']");
		}
	},
	pagateList:function(url,pars){
		var callobject = this;
		onsucc = function(jsonobject){
			var pagate = jsonobject.pagate;
			// 加载分页工具条
			var pagediv = JQ("."+pars.pagateBarID)
			for(var i = 0 ; i < pagediv.length ; i++){
				var padiv = callobject.pagateToolbar(pagate);
				JQ(pagediv[i]).empty()
				JQ(pagediv[i]).append(padiv);
			}
			// 加载内容
			callobject.templateData(pagate,pars.displayID,pars.templateURL);
		};
		onlo = function(){};
		JQ.ajax({url:url,type: "POST",data:pars.parameters,dataType:"json",success:onsucc,onload:onlo});
	},
	list:function(url,pars){
		var callobject = this;
		onsucc = function(jsonobject){
			var pagate = jsonobject;
			// 加载内容
			callobject.templateData(pagate,pars.displayID,pars.templateURL);
		};
		onlo = function(){}
		onerror = function(error){
			//alert('[DynDataSet.error]'+error);
		}
		JQ.ajax({url:url,type: "POST",data:pars.parameters,dataType:"json",success:onsucc,onload:onlo,error:onerror});
	},
	templateData:function(pagate,displayID,templateURL){
		// 模板渲染
		var data = pagate;
		var onsu = function(content){
			var result = TrimPath.parseTemplate(content).process(data);
			JQ("#"+displayID).html(result).show();
		}
		Template.load(templateURL,onsu);
	},
	pagateToolbar:function(pagate){
		var pageNo = pagate.pageNo;
		var totalPageNum = pagate.totalPageNum;
		var pageSize = pagate.pageSize;
		var totalRowNum = pagate.totalRowNum;
		
		var callobject = this;
		var prepage='';
		if (!pagate.underFirstPageNO){
			prepage = JQ.SPAN({},JQ.A({href:'javascript:;'},'上一页'));
			JQ(prepage).mousedown(function(){callobject.rollpage('previous',pageNo);});
		}
		
		var pageList = new Array();
		if (totalPageNum > 0){
			if(totalPageNum < 11) {
				for (var i = 0 ; i < totalPageNum ; i++){
					if(pageNo==(i+1)){
						pageList[i] = JQ.SPAN({Class:'pagebarCurrent',id:(i+1)||''},(i+1)||'');
					}else{
						pageList[i] = JQ.SPAN({id:(i+1)||''},JQ.A({href:'javascript:;'},(i+1)||''));
						JQ(pageList[i]).mousedown(function(){callobject.rollpage('jump',this.id)});
					}
				}
			}else{
				if(pageNo<=6){
					for (var i = 0 ; i < 11 ; i++){
						if(pageNo==(i+1)){
							pageList[i] = JQ.SPAN({Class:'pagebarCurrent',id:(i+1)||''},(i+1)||'');
						}else{
							pageList[i] = JQ.SPAN({id:(i+1)||''},JQ.A({href:'javascript:;'},(i+1)||''));
							JQ(pageList[i]).mousedown(function(){callobject.rollpage('jump',this.id)});
						}
					}
					pageList[9] = JQ.SPAN({},'...');
					pageList[10] = JQ.SPAN({id:totalPageNum},JQ.A({href:'javascript:;'},totalPageNum||''));
					JQ(pageList[10]).mousedown(function(){callobject.rollpage('jump',this.id)});
				}
				
				if(pageNo>6&&pageNo<=(totalPageNum-5)){
					for (var i = 0 ; i < 11 ; i++){
						if(i==5){
							pageList[i] = JQ.SPAN({Class:'pagebarCurrent',id:(pageNo)||''},(pageNo)||'');
						}else{
							pageList[i] = JQ.SPAN({id:(pageNo-5+i)||''},JQ.A({href:'javascript:;'},(pageNo-5+i)||''));
							JQ(pageList[i]).mousedown(function(){callobject.rollpage('jump',this.id)});
						}
					}
					pageList[0] = JQ.SPAN({id:1},JQ.A({href:'javascript:;'},'1'));
					JQ(pageList[0]).mousedown(function(){callobject.rollpage('jump',this.id)});
					pageList[1] = JQ.SPAN({},'...');
					pageList[9] = JQ.SPAN({},'...');
					pageList[10] = JQ.SPAN({id:totalPageNum},JQ.A({href:'javascript:;'},totalPageNum||''));
					JQ(pageList[10]).mousedown(function(){callobject.rollpage('jump',this.id)});
				}
				
				if(pageNo>(totalPageNum-5)){
					for (var i = 0 ; i < 11 ; i++){
						if(pageNo==(totalPageNum-10+i)){
							pageList[i] = JQ.SPAN({Class:'pagebarCurrent',id:(pageNo)||''},(pageNo)||'');
						}else{
							pageList[i] = JQ.SPAN({id:(totalPageNum-10+i)||''},JQ.A({href:'javascript:;'},(totalPageNum-10+i)||''));
							JQ(pageList[i]).mousedown(function(){callobject.rollpage('jump',this.id)});
						}
					}
					pageList[0] = JQ.SPAN({id:1},JQ.A({href:'javascript:;'},'1'));
					JQ(pageList[0]).mousedown(function(){callobject.rollpage('jump',this.id)});
					pageList[1] = JQ.SPAN({},'...');
				}
			}
		}
		
		var nextpage='';
		if (!pagate.exceedLastPageNO){
			nextpage = JQ.SPAN({},JQ.A({href:'javascript:;'},'下一页'));
			JQ(nextpage).mousedown(function(){callobject.rollpage('next',pageNo);});
		}
		
		var pagatediv = JQ.DIV({},prepage,pageList[0],pageList[1],pageList[2],pageList[3],pageList[4],pageList[5],pageList[6],pageList[7],pageList[8],pageList[9],pageList[10],nextpage);
		return pagatediv;
	},
	rollpage : function(pagetype,pageno){
		var query;
		
		if (pagetype=="previous"){
			pageno -= 1; 
		}else if (pagetype=="next"){
			pageno += 1; 
		}else if (pagetype=="jump"){
			
		}else{
			return;
		}
		query ="pagate.pageNo="+pageno;
		
		var param = this.parameters.pars.parameters
		if(param){
			var pageNoPos = param.indexOf('pagate.pageNo');
			if(pageNoPos != -1){
				var pos = param.indexOf('&');
				if (pos!=-1)
					param = param.substring(pos+1,param.length)
			}
		}
		this.parameters.pars.parameters = query+ "&" + param;
		this.init(this.type,this.parameters);
	}
}

/**
* @type			显示的类型,是简单的列表,还是分页
* @pagateID 	分页位置对应的ID
* @contentID	取出的内容放置到页面的位置ID
* @URL 			ajaxAction的调用URL
* @params 		请求的参数
* @TURL 	模板路径
* 例如: callAjaxContent({type:'list',pagateID:'pageDiv',contentID,'songDivList',URL:'story!pagate.aigo',params:'story.orderByField=createdate desc',TURL:'./template/story-list.jst.html'})
*/
function callAjaxContent(optionParameters){
	var type = optionParameters.type||'pagate';
	var pagateID = optionParameters.pagateID;
	var contentID = optionParameters.contentID;
	if (((typeof contentID)=="undefined")||!contentID){
		ajaxPrompt("require parameter 'contentID'!!");
		return
	}
	var URL = optionParameters.URL;
	if (((typeof URL)=="undefined")||!URL){
		ajaxPrompt("require parameter 'URL'!!");
		return
	}
	var params = optionParameters.params;
	var TURL = optionParameters.TURL;
	if (((typeof TURL)=="undefined")||!TURL){
		ajaxPrompt("require parameter 'TURL'!!");
		return
	}
	
	var dynDate = new DynDataSet();
	//JQ('#'+contentID).html('正在加载......').show();
	waitPrompt(contentID);
	dynDate.init(type,
		{ 
			url:URL,
			pars:{parameters:params,pagateBarID:pagateID,displayID:contentID,templateURL:TURL}
		}
	);
}
/*
 *	静态加载文件
 *	@optionParameters: {TURL:'',divID:''}
 * 		@TURL 要加载的文件地址；
 *		@divID	文件要替换的位置ID；
*/
function $include(optionParameters){
	var TURL = optionParameters.TURL;
	if (((typeof TURL)=="undefined")||!TURL){
		ajaxPrompt("require parameter 'TURL'!!");
		return
	}
	var divID = optionParameters.divID;
	if (((typeof divID)=="undefined")||!divID){
		ajaxPrompt("require parameter 'divID'!!");
		return
	}
	waitPrompt(divID)
	$.get(TURL,function(data){
		$('#'+divID).html(data);
	});
}

// 等待提示方法
function waitPrompt(divID){
	$('#'+divID).block("<div style='font-size:11px;color:green;border:1px #C0C0C0 solid'><img src='/commons/images/waiting.gif' alt='waiting'/> 正在加载数据，请稍候......</div>" ); 
}
function prompt(divID,content){
	$('#'+divID).block("<div style='font-size:11px;color:green;border:1px #C0C0C0 solid'><img src='/commons/images/ok_upload.gif' alt='prompt'/>"+content+"</div>" ); 
}
function error(divID,content){
	$('#'+divID).block("<div style='font-size:11px;color:red;border:1px #C0C0C0 solid'><img src='/commons/images/waiting.gif' alt='prompt'/>"+content+"</div>" ); 
}
function ajaxPrompt(content){
	var t = "[ERROR:callAjaxContent]"+content;
	alert(t);
	return ;
}