/************************
功能说明：ZOA 工具类
创建：20100705 白冠友
依赖：jquery.js
------------------------*/
var Tools = function() {};

Tools.hello = Tools.prototype.hello = function(name) {
	window.alert("Hello, " + name + "!");
};
Tools.getPoint = Tools.prototype.getPoint = function(source) {
	var pt = {x:0,y:0}; 
	do
	{
	   pt.x += source.offsetLeft;
	   pt.y += source.offsetTop;
	   source = source.offsetParent;
	}
	while(source);  
	return pt;
};
Tools.clsdiv = Tools.prototype.clsdiv = function(id){
	var obj = jQuery("#" + id)[0];
	if(obj !== null && typeof(obj) != "undefined"){
		obj.style.display = "none";
	}
};
//获取指定ID的控件对象，如果对象不存在返回false，否则返回对象本身
Tools.oid = Tools.prototype.oid = function(id) {
	if (id === "") {return false;}
	if (typeof(id) == "object") { return id; }
	var fstr = "#" + id;
	if (jQuery(fstr).length > 0) {
		return jQuery(fstr)[0]; 
	} else if (jQuery(":input[name='" + id + "']").length > 0) {
		return jQuery(":input[name='" + id + "']")[0];
	}
	return false;
};
/******************************************
 * 弹出消息框，并锁定页面
 * 参数：
 *  0 要显示的内容，必填
 *  1 数值，窗口宽度，可选
 *  2 数值，窗口高度，可选
 *  3 字符串，如（100px 或 10%），窗口顶部位置，可选
 *  4 字符串，如（100px 或 10%），窗口左部位置，可选
 *  5 0否/1是 显示关闭标识，可选
 ******************************************/
Tools.popWin = Tools.prototype.popWin = function(str){
	var msgw,msgh,bordercolor;
	var showclose = "1";
    msgw=400;//提示窗口的宽度
    msgh=210;//提示窗口的高度
    if(typeof(arguments[1]) != "undefined") {
    	msgw = parseInt(arguments[1]);
    }
    if(typeof(arguments[2]) != "undefined") {
    	msgh = parseInt(arguments[2]);
    }
    if(typeof(arguments[5]) != "undefined") {
    	showclose = parseInt(arguments[5]);
    }
    titleheight=25 //提示窗口标题高度
    bordercolor="#c51100";//提示窗口的边框颜色
    titlecolor="#c51100";//提示窗口的标题颜色
    
    var sWidth,sHeight;
    sWidth=screen.width;
    sHeight=screen.height;
 
    var bgObj = Tools.oid('bgDiv');
    if(!bgObj) {
	    bgObj = document.createElement("div");
	    bgObj.setAttribute('id','bgDiv');
	    bgObj.style.position="absolute";
	    bgObj.style.top="0";
	    bgObj.style.background="#cccccc";
	    bgObj.style.filter="progid:DXImageTransform.Microsoft.Alpha(style=3,opacity=25,finishOpacity=75";
	    bgObj.style.opacity="0.6";
	    bgObj.style.left="0";
	    bgObj.style.width=sWidth + "px";
	    bgObj.style.height=sHeight + "px";
	    bgObj.style.zIndex = "10000";
	    document.body.appendChild(bgObj);
	}
    
    var msgObj = Tools.oid('msgDiv');
    if(!msgObj) {
	    msgObj = document.createElement("div");
	    msgObj.setAttribute("id","msgDiv");
	    msgObj.setAttribute("align","center");
	    msgObj.style.background="white";
	    msgObj.style.border="1px solid " + bordercolor;
	    msgObj.style.position = "absolute";
	    msgObj.style.left = "50%";
	    msgObj.style.top = "30%";
	    if(typeof(arguments[3]) != "undefined") {
	    	msgObj.style.top = arguments[3];
	    }
	    if(typeof(arguments[4]) != "undefined") {
	    	msgObj.style.left = arguments[4];
	    }
	    msgObj.style.font="12px/1.6em Verdana, Geneva, Arial, Helvetica, sans-serif";
	    msgObj.style.marginLeft = "-225px" ;
	    msgObj.style.marginTop = -75+document.documentElement.scrollTop+"px";
	    msgObj.style.width = msgw + "px";
	    msgObj.style.height =msgh + "px";
	    msgObj.style.textAlign = "left";
	    msgObj.style.lineHeight ="25px";
	    msgObj.style.zIndex = "10001";
	}
 
	var title = Tools.oid('msgTitle');
	if(!title) {
		title = document.createElement("h4");
		title.setAttribute("id","msgTitle");
		title.setAttribute("align","right");
		title.style.margin="0";
	    title.style.padding="3px";
	    title.style.background=bordercolor;
	    title.style.filter="progid:DXImageTransform.Microsoft.Alpha(startX=20, startY=20, finishX=100, finishY=100,style=1,opacity=75,finishOpacity=100);";
	    title.style.opacity="0.75";
	    title.style.border="1px solid " + bordercolor;
	    title.style.height="18px";
	    title.style.font="12px Verdana, Geneva, Arial, Helvetica, sans-serif";
	    title.style.color="white";
	    title.style.cursor="pointer";
	    if(showclose == 1) {
		    title.innerHTML="关闭";
		    title.onclick = function(){
				document.body.removeChild(bgObj);
				document.getElementById("msgDiv").removeChild(title);
				document.body.removeChild(msgObj);
			}
		}
	    document.body.appendChild(msgObj);
	    document.getElementById("msgDiv").appendChild(title);
	}
    var txt = Tools.oid('msgTxt');
    if(!txt) {
	    txt = document.createElement("div");
	    txt.style.margin="1em 0";
	    txt.style.padding = "4px";
	    txt.setAttribute("id","msgTxt");
	}
    txt.innerHTML=str;
    document.getElementById("msgDiv").appendChild(txt);
}
/******************************************************
 * 获取对象的绝对位置
 * 参数：所要计算的对象
 * 返回：位置对象，其属性有x,y
******************************************************/
Tools.getAbsPos = Tools.prototype.getAbsPos = function (el) { 
    var SL = 0, ST = 0; 
    var is_div = /^div$/i.test(el.tagName); 
    if (is_div && el.scrollLeft) SL = el.scrollLeft; 
    if (is_div && el.scrollTop) ST = el.scrollTop; 
    var r = { x: el.offsetLeft - SL, y: el.offsetTop - ST }; 
    if (el.offsetParent) 
    { 
        var tmp = this.getAbsolutePos(el.offsetParent); 
        r.x += tmp.x; 
        r.y += tmp.y; 
    } 
    return r; 
}
/*************************************
 * 函数：getParentObj
 * 功能：找出当前对象的父级对象
 * 参数：
       obj 当前对象
       tagName 所要查找的对象的标签名
 *************************************/
Tools.getParentObj = Tools.prototype.getParentObj = function (obj, tagName) {
	var parent = obj.parentNode;
	if(tagName != null) {
		while(parent) {
			if(parent.tagName.toLowerCase() == tagName.toLowerCase()) {
				break;
			} else {
				parent = parent.parentNode;
			}
		}
	}
	return parent;
}
/*************************************
 * 函数：getChildObj
 * 功能：找出当前对象的子对象
 * 参数：
       obj 当前对象
       tagName 所要查找的对象的标签名
 *************************************/
Tools.getChildObj = Tools.prototype.getChildObj = function (obj, tagName) {
	var arr = obj.childNodes;
	var ret = null;
	if(arr.length > 0) {
		ret = arr[0];
		if(tagName != null) {
			for(var i = 0; i < arr.length; i ++) {
				if(arr[i].tagName.toLowerCase() == tagName.toLowerCase()) {
					ret = arr[i];
					break;
				}
			}
		}
	}
	return ret;
}
/*************************************
 * 函数：formatDateStr
 * 功能：格式化UTC日期串
 * 参数：
       dateval 日期串
       formatFlag 格式标识 1 yyyy-MM-dd 2 yyyy-MM-dd HH:mm 3 yyyy-MM-dd HH:mm:ss 4 MM-dd 5 HH:mm 6 MM/dd HH:mm
 *************************************/
Tools.formatDateStr = Tools.prototype.formatDateStr = function (dateval, formatFlag) {
	if(dateval && dateval != "") {
		
	} else {
		return "";
	}
	try {
	 	var dt = new Date(dateval);
	 	var y = dt.getFullYear();
	 	var m = dt.getMonth() + 1;
	 	var d = dt.getDate();
	 	var hh = dt.getHours();
	 	var mm = dt.getMinutes();
	 	var ss = dt.getSeconds();
	 	
	 	if(m < 10) { m = "0" + m; }
	 	if(d < 10) { d = "0" + d; }
	 	if(hh < 10) { hh = "0" + hh; }
	 	if(mm < 10) { mm = "0" + mm; }
	 	if(ss < 10) { ss = "0" + ss; }
	 	
	 	var str = "";
	 	switch(formatFlag) {
	 	case 1:
	 		str = y + "-" + m + "-" + d;
	 		break;
	 	case 2:
	 		str = y + "-" + m + "-" + d + " " + hh + ":" + mm;
	 		break;
	 	case 3:
	 		str = y + "-" + m + "-" + d + " " + hh + ":" + mm + ":" + ss;
	 		break;
	 	case 4:
	 		str = m + "-" + d;
	 		break;
	 	case 5:
	 		str = hh + ":" + mm;
	 		break;
	 	case 6:
	 		str = m + "/" + d + " " + hh + ":" + mm;
	 		break;
	 	default:
	 		str = y + "-" + m + "-" + d + " " + hh + ":" + mm + ":" + ss;
	 	}
	 	return str;
	} catch (e) {
		return "";
	}
}
/******************************************
改变标签状态，代码：<label><input type="checkbox" name="xxx" onclick="changeState(this)"/>说明</label>
*******************************************/
Tools.changeState = Tools.prototype.changeState = function () {
	var obj = arguments[0];
	if(typeof(obj) == "undefined") return;
	obj = Tools.oid(obj);
	if(obj.type == "checkbox") {
		if(obj.checked) Tools.oid(obj).parentNode.style.color = "#FF3300";
		else Tools.oid(obj).parentNode.style.color = "#000"
	} else if(obj.type == "radio") {
		var arr = document.getElementsByName(Tools.oid(obj).name);
		for(var i = 0; i < arr.length; i ++) {
			arr[i].parentNode.style.color = "#000";
		}
		Tools.oid(obj).parentNode.style.color = "#FF3300";
	}
}
/*****************************************
* CheckBox单选限制，包含改变标签方法 changeState
*****************************************/
Tools.checkOne = Tools.prototype.checkOne = function (obj, name){
	var objs = document.getElementsByName(name);
	var chkfg = obj.checked;
	if(objs && objs.length > 1) {
		for(var i = 0; i < objs.length; i ++) {
			if(!chkfg) continue;
			objs[i].checked = false;
			Tools.changeState(objs[i]);
		}
	}
	obj.checked = chkfg;
	Tools.changeState(obj);//改变标签
}
/******************************************
 * 功能：选中下拉列表中指定项，如果找不到则选择第一项
 * 参数：obj 下拉列表对象 val 比较值 fg 比较方式：1 显示串/0 隐藏串
 *****************************************/
Tools.setSelectedDDL = Tools.prototype.setSelectedDDL = function (obj, val, fg) {
	if(!obj) return;
	for(var i = 0; i < obj.options.length; i ++) {
		if(fg == 1) {
			if(obj.options[i].text == val) obj.selectedIndex = i;
		} else if(fg == 0) {
			if(obj.options[i].value == val) obj.selectedIndex = i;
		}
	}
}

//-------------------------------------------------------------
String.prototype.trim = function(){
	return this.replace(/(^\s*)|(\s*$)/g, "");
}

function closeDiv(id) {
	Tools.oid(id).style.display = "none";
}

function getBrowserInfo() {
	var browser = {};
	browser.os = {};
	
	var ua = (browser.UA = navigator.userAgent);
	
	var av = (browser.AV = navigator.appVersion);
	
	browser.os.mac = av.indexOf("Macintosh") > -1;
	browser.os.win = av.indexOf("Windows") > -1;
	browser.os.linux = av.indexOf("X11") > -1;
	
	browser.opera = ua.indexOf("Opera") > -1;
	browser.khtml = (av.indexOf("Konqueror") > -1) || (av.indexOf("Safari") > -1);
	browser.safari = av.indexOf("Safari") > -1;
	
	var pos = ua.indexOf("Gecko");
	browser.mozilla = (pos > -1) && (!browser.khtml);
	if(pos > 0) browser.geckoVer = ua.substring(pos + 6, pos + 14);
	
	browser.ie = (document.all) && (!browser.opera);
	browser.ie50 = browser.ie && (av.indexOf("MSIE 5.0") > -1);
	browser.ie55 = browser.ie && (av.indexOf("MSIE 5.5") > -1);
	browser.ie60 = browser.ie && (av.indexOf("MSIE 6.0") > -1);
	browser.ie70 = browser.ie && (av.indexOf("MSIE 7.0") > -1);
	browser.ie80 = browser.ie && (av.indexOf("MSIE 8.0") > -1);
	
	return browser;
}

//初始化列表排序, 需要jQuery支持
function initTblOrderEvt() {
	jQuery("th:[class=ordcol]").each(function() {
		var colid = jQuery(this).attr("colid");
		if(colid && colid.length > 0) {
			jQuery(this).wrapInner("<a class=\"white\" href=\"javascript:void(0)\" onclick=\"sortTblByCol('" + colid + "');return false;\" target=\"_self\"></a>");
			if(colid == jQuery("#ordcol").val()) {
				if("ASC" == jQuery("#ordway").val()) {
					jQuery(this).append("<span class='way_asc'>&nbsp;&nbsp;</span>");
				} else {
					jQuery(this).append("<span class='way_desc'>&nbsp;&nbsp;</span>");
				}
			}
		}
	});
}
function sortTblByCol(colid) {
	jQuery("#ordcol").val(colid);
	if(jQuery("#ordway").val() === "" || jQuery("#ordway").val() == "DESC") {
		jQuery("#ordway").val("ASC");
	} else {
		jQuery("#ordway").val("DESC");
	}
	var frm = Tools.getParentObj(jQuery("#ordcol")[0], "form");
	frm.submit();
}
//返回列表
function backToList(act) {
	var url = '';
	var action = act;
	var defact = arguments[1];
	if (action == null || action.length == 0) {
		if (arguments[1] && arguments[1].length > 0) {
			url = arguments[1];
		} else {
			url = './desktop.do';
		}
	} else {
		if (action.indexOf('/') > 0) {
			action = '/' + action
		}
		if (defact && defact.length > 0 && defact.indexOf(action) == -1) {//有默认动作，当前动作与默认动作不是一个Action的
			url = defact
		} else {
			url = '.' + action + '?method=turnback'
		}
	}
	if (url.length == 0) return;
	window.location.href = url;
}
//常规正则表达式检查
function isEmail() {
	var str = arguments[0];
	if(typeof(str) == "undefined" || str == "") return false;
	var re = new RegExp("^([0-9a-zA-Z]([-.\\w]*[0-9a-zA-Z])*@(([0-9a-zA-Z])+([-\\w]*[0-9a-zA-Z])*\\.)+[a-zA-Z]{2,9})$","ig");
	return re.test(str);
}
function isNumber() {
	var str = arguments[0];
	if(typeof(str) == "undefined" || str == "") return false;
	var re = new RegExp("^[1-9]+[0-9]*(\\.)?[0-9]*$","ig");
	return re.test(str);
}
/*****************************************
* 过滤HTML标签
******************************************/
function stripHTMLTag(str) {
	var re = /<(\S*?)[^>]*>.*?|<.*?\/>/g;
	return str.replace(re, "");
}
/****************************************
* 从产品列表中选出客户当前软件产品
* 1 如果只有一个，则返回索引值；
* 2 如果没有，则返回-1；
* 3 如果有多个，则构造一个列表，并返回列表。
* 参数：pdList 产品列表对象，如select；softversion 客户版本串
*****************************************/
function getCusSoftProduct(pdList, softversion) {
	if(!softversion) return -1;
	var arr = softversion.split(";");
	var ret = "";
	if(arr) {
		if(arr.length == 1) {
			var pid = arr[0].substring(0, arr[0].indexOf(":"));
			for(var i = 0; i < pdList.options.length; i ++) {
				if(pid == pdList.options[i].value) {
					ret = String(i);
					break;
				}
			}
		} else if(arr.length > 1) {
			ret = "<div><ol>";
			for(var j = 0; j < arr.length; j ++) {
				var pid = arr[j].substring(0, arr[j].indexOf(":"));
				for(var i = 0; i < pdList.options.length; i ++) {
					if(pid == pdList.options[i].value) {
						ret += "<li><a href='#' onclick='setPrdInx(" + i + ");return false;'>" + pdList.options[i].text + "</a></li>";
						break;
					}
				}
			}
			ret += "</ol></div>";
		} else {
			
		}
	} else {
		
	}
	return ret;
}
/****************************************
* 从客户当前软件版本串中找出指定产品ID的版本ID
*****************************************/
function getCusSoftversionId(productid, softversion) {
	var verid = "";
	if(productid != null && softversion != null) {
		var reg = new RegExp("(^" + productid + "\\:\\d+)|(;" + productid + "\\:\\d+)", "ig");
		var arr = reg.exec(softversion);
		if(arr != null) {//存在该产品记录
			var tmp = arr[0];
			if(tmp != null) {
				if(tmp.indexOf(";") == tmp.length) 
					verid = tmp.substring(tmp.indexOf(":") + 1, tmp.length - 1);
				else 
					verid = tmp.substring(tmp.indexOf(":") + 1);
			}
		}
	}
	return verid;
}

/***********************************
* 下载文件 2011-02-10
************************************/
Tools.download = Tools.prototype.download = function(id){
	if("" != id){
		window.open("./fileUpload.do?method=download&fid=" + id, "_blank","");
	}
}

/*********************************
* 添加项目
* @param _objSel select控件对象
* @param _txt 显示值
* @param _val 隐含值
* @param _flag 是否允许重复添加，true 允许，false 不允许
**********************************/
Tools.addItemToSelect = Tools.prototype.addItemToSelect = function (_objSel, _txt, _val, _flag) {
	if (!_objSel) return;
	var f = true;
	if (_txt == null || _val == null) return;
	if (_txt.lenght == 0) return;
	if (!_flag) {
		for (var i = 0; i < _objSel.options.length; i = i + 1) {
			if (_val == _objSel.options[i].value) {
				f = false;
				break;
			}
		}
	}
	if (f) {
		var op = new Option(_txt, _val);
		_objSel.options.add(op);
	}
}
/*********************************
* 删除项目
* @param _objSel select控件对象
**********************************/
Tools.removeItemSelected = Tools.prototype.removeItemSelected = function (_objSel) {
	if (!_objSel) return;
	for (var i = _objSel.options.length - 1; i >= 0; i = i - 1) {
		if (_objSel.options[i].selected == true) {
			_objSel.remove(i);
		}
	}
}
