/*******************************************************************************************

 * 注: MSIE7/FireFox3.0 下测试通过   
   
*********************************如果您使用本控件 请保留该信息 谢谢! *****************************   
 * http://2003zy.com
 * Email: wenq0917@sina.com 
 * QQ: 251490789 
 * Creation Date: 2009-05-29
 * Modification DAte: 2009-05-29 23:10
 * version: 1.0.0
*********************************************************************************************/
WQ.Page = {};

WQ.Page.$ = function(id, doc){
    var doc = doc || document;
    return doc.getElementById(id);
};
WQ.Page.$T = function(tag, doc){
	var doc = doc || document;
	return doc.getElementsByTagName(tag);
};
WQ.Page.$N = function(name, doc){
	var doc = doc || document;
	return doc.getElementsByName(name);
};
WQ.Page.$$ = function(name, doc){
    var doc = doc || document;
    return doc.createElement(name);
};
WQ.Page.g = {};

WQ.Page.event = {
    add : function(el, event, listener) {
        if (el.addEventListener){
            el.addEventListener(event, listener, false);
        } else if (el.attachEvent){
            el.attachEvent('on' + event, listener);
        }
    },
    remove : function(el, event, listener) {
        if (el.removeEventListener){
            el.removeEventListener(event, listener, false);
        } else if (el.detachEvent){
            el.detachEvent('on' + event, listener);
        }
    }
};
WQ.Page.util = {
    loadStyle : function (path) {
        var link = WQ.Page.$$('link');
        link.setAttribute('type', 'text/css');
        link.setAttribute('rel', 'stylesheet');
        link.setAttribute('href', path);
        document.getElementsByTagName("head")[0].appendChild(link);
    },
    eval : function (str) {
    	if (str) eval(str);
    },
    searchSelectItem : function (selectObj, value) {    	
    	try {
    		if (typeof(selectObj) == "string") {
    			selectObj = document.getElementsByName(selectObj);
    			for (var i = 0; i < selectObj.length; i++) {
    				var tmpObj = selectObj[i];
    				WQ.Page.util.searchSelectItem(tmpObj,value);
    			}			
    			return true;
    		}
    		var obj = selectObj.options;
    		for (var i = 0; i < obj.length; i++) {
    			if (obj[i].value == value) {
    				obj[i].selected = true;
    				break;
    			}
    		}
    	} catch (e) {
    		alert(e.message);
    	}
    }
};

WQ.Page.create = function (id) {
	if (!WQ.Page.g[id].form.page) {
		var pageInput = WQ.Page.$$("input");
		pageInput.id = "page";
		pageInput.name = "page";
		pageInput.type = "hidden";
		WQ.Page.g[id].pageInput = pageInput;
		WQ.Page.g[id].form.appendChild(pageInput);
	} else {
		WQ.Page.g[id].pageInput = WQ.Page.g[id].form.page;	
	}
	if (!WQ.Page.g[id].form.perPageNums) {
		var perPageNumsInput = this.$$("input");
		perPageNumsInput.id = "perPageNums";
		perPageNumsInput.name = "perPageNums";
		perPageNumsInput.type = "hidden";
		WQ.Page.g[id].perPageNumsInput = perPageNumsInput;
		WQ.Page.g[id].form.appendChild(perPageNumsInput);
	} else {
		WQ.Page.g[id].perPageNumsInput = WQ.Page.g[id].form.perPageNums;	
	}	
	if (!WQ.Page.g[id].container || WQ.Page.g[id].container.length == 0) {		
		WQ.Page.g[id].container = [];
		var eles = WQ.Page.$T("div");
		for (var i = 0; i < eles.length; i++) {
			if (eles[i].name == id || eles[i].id == id) 
				WQ.Page.g[id].container[WQ.Page.g[id].container.length] = eles[i];
		}
	}
	
	
};
WQ.Page.init = function (params) {
	if (typeof params == "undefined") params = {};
    params.pageInfo = (typeof params.pageInfo == "undefined") ? "table_page_info" : params.pageInfo;
    params.page = params.page || 1;
    params.perPageNums = params.perPageNums || 20;
    params.totalRows = params.totalRows || 0;
    
    var pageInfoTable = WQ.Page.$(params.pageInfo);
    var pageInfoTableParent = pageInfoTable.parentNode;
    
    var attr = pageInfoTableParent.getAttribute("container");
    if (!attr) attr = "div_pageDisplay";
    params.name = (typeof params.name == "undefined") ? attr : params.name;
    
    attr = pageInfoTableParent.getAttribute("form");
    if (attr) {
    	attr = WQ.Page.$(attr);
    } else {
    	attr = document.forms[0];
    }
    params.form = (typeof params.form == "undefined") ? attr : WQ.Page.$(params.form);
    
    attr = pageInfoTableParent.getAttribute("cssPath");
    if (!attr) attr = "";
    params.cssPath = params.cssPath || attr;
    
    attr = pageInfoTableParent.getAttribute("trigger");
    if (!attr) attr = "";
    params.trigger = params.trigger || attr;
    
    attr = pageInfoTableParent.getAttribute("changePerPageCountTrigger");
    if (!attr) attr = "";
    params.changePerPageCountTrigger = params.changePerPageCountTrigger || attr;
    
    attr = pageInfoTableParent.getAttribute("gotoPageTrigger");
    if (!attr) attr = "";
    params.gotoPageTrigger = params.gotoPageTrigger || attr;
    
    pageInfoTable.removeAttribute("id");
    
    WQ.Page.g[params.name] = params;
    WQ.Page.g[params.name].pageInfoTable = pageInfoTable;
    WQ.Page.g[params.name].pageInfoTableParent = pageInfoTableParent;
    
    pageInfoTableParent.removeChild(pageInfoTable);
    
    if (params.cssPath) WQ.Page.util.loadStyle(params.cssPath);
};
WQ.Page.show = function (params) {
	WQ.Page.init(params);
	WQ.Page.create(params.name);
	
	for (var i = 0; i < WQ.Page.g[params.name].container.length; i++) {
		var container = WQ.Page.g[params.name].container[i];
		if (params.totalRows > 0) {
			container.style.display = "block";
			if (container.hasChildNodes()) {
				container.replaceChild(WQ.Page.g[params.name].pageInfoTable.cloneNode(true),container.firstChild);
			} else {
				container.appendChild(WQ.Page.g[params.name].pageInfoTable.cloneNode(true));
				//container.innerHTML = WQ.Page.g[params.name].pageInfoTable.innerHTML;
			}
		} else {
			if (container.hasChildNodes()) {
				container.replaceChild(WQ.Page.g[params.name].pageInfoTable.cloneNode(true),container.firstChild);
			} else {
				container.style.display = "none";
			}	
		}
	}
	var eles = WQ.Page.$T("select");
	for (var i = 0; i < eles.length; i++) {
		if ("perPageNumsSelect" == eles[i].getAttribute("type")) { 
			eles[i].onchange = new Function("WQ.Page.changePerPageCount('"+params.name+"',this.value);");
			WQ.Page.util.searchSelectItem(eles[i],params.perPageNums);
		}
	}
	eles = WQ.Page.$T("a");
	for (var i = 0; i < eles.length; i++) {
		if ("gotoPage" == eles[i].getAttribute("type")) { 
			eles[i].onclick = new Function("WQ.Page.gotoPage('"+params.name+"',"+eles[i].getAttribute("page")+");return false;");
		}
	}

	if (WQ.Page.g[params.name].trigger) {
		WQ.Page.util.eval(WQ.Page.g[params.name].trigger);
	} else {
		WQ.Page.trigger.pageInfo(params.name);
	}
};
WQ.Page.trigger = {
	pageInfo : function (id) {},
	changePerPage : function (id) {},
	gotoPage : function (id) {}
};


/**
 * 修改每页显示的条数
 * 
 * @param string trigger 触发函数　如："searchData(1);alert('test')";
 */
WQ.Page.changePerPageCount = function (id,perPageCount) {
	WQ.Page.g[id].perPageNumsInput.value = perPageCount;
	if (WQ.Page.g[id].changePerPageCountTrigger) {
		WQ.Page.util.eval(WQ.Page.g[id].changePerPageCountTrigger);
	} else {
		WQ.Page.trigger.changePerPage(id);
	}
};
WQ.Page.gotoPage = function (id,newPage) {
	WQ.Page.g[id].pageInput.value = newPage;	
	if (WQ.Page.g[id].gotoPageTrigger) {
		WQ.Page.util.eval(WQ.Page.g[id].gotoPageTrigger);
	} else {
		WQ.Page.trigger.gotoPage(id);
	}
};
WQ.Page.setPage = function (page,id) {
	if (!WQ.validation.isInt(page)) return;
	if (!id) id = 'div_pageDisplay';
	if (WQ.Page.g[id] && WQ.Page.g[id].pageInput) WQ.Page.g[id].pageInput.value = page;
};
WQ.Page.pageDisplay = function (pageStr,target) {
	if (!target) target = "div_pageDisplay";
	var page = document.getElementsByTagName("div");
	for (var i = 0; i < page.length; i++) {
		if (page[i].id == target || page[i].getAttribute("name") == target) page[i].innerHTML = pageStr;
	}
};


var Page = WQ.Page;