YAHOO.AIP.page = function(){
	
	var currentPageNo , pageCount;
	var showMaxPage , step;
	
	var maxShowNum = 11;
	var minShowNum = 1;
	
	var COLOR ,CURRENTCOLOR;
	
	function $(){
		var elements = new Array();
		//查找作为参数提供的所有元素
		for(var i=0;i<arguments.length;i++){
			var element = arguments[i];
			if(typeof element == 'string'){
				element = document.getElementById(element);
			}
			
			//如果只提供了一个参数，则立即返回这个参数
			if(arguments.length == 1){
				return element;
			}
			//否则,将它添加到数组中
			elements.push(element);
		}	
		//返回包含多个被请求元素的数组
		return elements;
	};
	
	var createPage = function(cp,pc,parentNode,method,param){
		//初始化一些变量
		currentPageNo = parseInt(cp); //当前页数
		pageCount = parseInt(pc); //总页数
		showMaxPage = parseInt(YAHOO.AIP.page.showMaxPage); //计划展示页数
		maxShowNum = parseInt(showMaxPage); //最大能展示页数
		step = parseInt(YAHOO.AIP.page.step); //当前页 和 起止页 间的步长
		COLOR = YAHOO.AIP.page.color; // 默认颜色
		CURRENTCOLOR = YAHOO.AIP.page.currentColor; //选中颜色
		
		//判断总页数是否小于 一页展示最大数
		if(pageCount <= showMaxPage){
			//直接创建 分页模块 如：1,2,3...11
			minShowNum = 1;
			maxShowNum = parseInt(pageCount); 
			buildHTMLForPage(minShowNum,maxShowNum,parentNode,method,param);
		}else{
			//判断当前页是否小于步长+1，因为是从第一页开始的
			
			if(currentPageNo < step+1){
				//小于步长+1,即前几页，则直接创建分页模块 如：1,2,3...11
				minShowNum = 1;
				maxShowNum = parseInt(showMaxPage); 
				buildHTMLForPage(minShowNum,maxShowNum,parentNode,method,param);
			}else{
				//大于步长+1，即后面的页数了
				maxShowNum = currentPageNo+step;
				minShowNum = currentPageNo-step;
				
				//如果最大展示数 大于总页数，则最大展示数就是 总页数
				if(maxShowNum >= pageCount){
					//差距
					var plus = maxShowNum - pageCount;
					maxShowNum = pageCount;
					minShowNum -= plus;
				}
				//创建分页模块
				buildHTMLForPage(minShowNum,maxShowNum,parentNode,method,param);
			}
		}
		
	};
	
	function getS(url){
		if(url.indexOf("?") == -1){
			return '?';
		}
		return '&';
	}
	
	var buildHTMLForPage = function(start,end,parentNode,method,param){
		if(!$(parentNode)){
			return;
		}
		if(!param){
			param = [];
		}
		
		//var s = getS(url);
		
		//分页最大的div
		var pageMainDiv = document.createElement('div');
		pageMainDiv.className = 'pageMainDiv';
		
		var indexPageSpan = createSpan('首页');  
		var prePageSpan = createSpan('上一页');
		
		if(currentPageNo == 1){
			indexPageSpan.className = 'disable';
			prePageSpan.className = 'disable';
		}else{
			indexPageSpan.className = 'active';
			indexPageSpan.onclick = function(e){
				
				param.push(1);
				var array = [];
				array.push(e);
				array.push(param);
				
				method.apply(null,array);
				param.pop();
				//method(1);
				//window.location.href = url + s +"pageNo=1"
			}
			
			prePageSpan.className = 'active';
			prePageSpan.onclick = function(e){
				param.push(parseInt(currentPageNo-1));
				var array = [];
				array.push(e);
				array.push(param);
				
				method.apply(null,array);
				param.pop();
				//method(parseInt(currentPageNo-1));
				//window.location.href = url + s +"pageNo="+parseInt(currentPageNo-1);
			}
		}
		
		var lastPageSpan = createSpan('末页');  
		var nextPageSpan = createSpan('下一页');
		
		if(currentPageNo == pageCount){
			lastPageSpan.className = 'disable';
			nextPageSpan.className = 'disable';
		}else{
			lastPageSpan.className = 'active';
			lastPageSpan.onclick = function(e){
				
				param.push(pageCount);
				var array = [];
				array.push(e);
				array.push(param);
				method.apply(null,array);
				param.pop();
				//method(pageCount);
				//window.location.href = url + s +"pageNo="+pageCount;
			}
			
			nextPageSpan.className = 'active';
			nextPageSpan.onclick = function(e){
				param.push(parseInt(currentPageNo+1));
				var array = [];
				array.push(e);
				array.push(param);
				
				method.apply(null,array);
				param.pop();
				//method(parseInt(currentPageNo+1));
				//window.location.href = url + s +"pageNo="+parseInt(currentPageNo+1);
			}
		}
		
		pageMainDiv.appendChild(indexPageSpan);
		pageMainDiv.appendChild(prePageSpan);
		for( var i = start ; i <= end ; i++ ){
			var numSpan = createSpan(i);
			
			if(i == currentPageNo){
				var font = numSpan.getElementsByTagName('font')[0];
				font.style.color = CURRENTCOLOR;
			}
			numSpan.index = i;
			numSpan.onclick = function(e){
				param.push(parseInt(this.index))
				var array = [];
				array.push(e);
				array.push(param);
				method.apply(null,array);
				param.pop();
				//method(parseInt(this.index));
				//window.location.href = url + s +"pageNo="+parseInt(this.index);
			}
			pageMainDiv.appendChild(numSpan);
		}
		pageMainDiv.appendChild(nextPageSpan);
		pageMainDiv.appendChild(lastPageSpan);
		
		$(parentNode).appendChild(pageMainDiv);
	};
	
	
	var createSpan = function(info){
		var span = document.createElement('span');
		var font = document.createElement('font');
		font.style.color = COLOR;
		font.style.letterSpacing = '1px';
		var u = document.createElement('u');
		var b = document.createElement('b');
		
		b.innerHTML = '['+ info +']';
		
		u.appendChild(b);
		font.appendChild(u);
		span.appendChild(font);
		
		return span;
	}
	
	return {
		
		/**
		 * 步长
		 */
		step : 2,
		
		/**
		 * 一页展示最大数
		 */
		showMaxPage:5,
		
		/**
		 * 默认颜色
		 */
		color:'#F1A300',
		/**
		 * 选中颜色
		 */
		 currentColor:'#ff0000',
		/**
		 * 计算分页下标,创建出页面
		 * @param currentPageNo 当前页数
		 * @param pageCount 总页数
		 * @param parentNode 父节点，即创建出来的分页模块塞在哪个节点下
		 * @param url 链接
		 */ 
		createPage : function(currentPageNo , pageCount , parentNode , method ,param){
			
			if(!pageCount || pageCount<=0 || currentPageNo <=0 || pageCount == 1){
				//throw new SyntaxError("IllegalParameter!");
				return;
			}
			createPage(currentPageNo , pageCount , parentNode,method,param);
		}
	};
}();
