﻿var userAgent = navigator.userAgent.toLowerCase();
var is_opera = userAgent.indexOf('opera') != -1 && opera.version();
var is_moz = (navigator.product == 'Gecko') && userAgent.substr(userAgent.indexOf('firefox') + 8, 3);
var is_ie = (userAgent.indexOf('msie') != -1 && !is_opera) && userAgent.substr(userAgent.indexOf('msie') + 5, 3);

//document.oncontextmenu = function(e){return false;}

function getUrlParam(wxp_paramName) {
    var oRegex = new RegExp('[\?&]' + wxp_paramName + '=([^&]+)', 'i') ;
    var oMatch = oRegex.exec(window.location.search) ;
    if (oMatch && oMatch.length > 1) return oMatch[1] ;
    else return '' ;
}

//多选，如onclick="selectAll(this, 'id')"
function selectAll(obj, chk) {
	if(chk == null) chk = 'checkboxes';
	var elems = obj.form.getElementsByTagName("INPUT");
	for(var i=0; i < elems.length; i++) {
		if(elems[i].name == chk || elems[i].name == chk + "[]") elems[i].checked = obj.checked;
	}
}

function yesno() {
	if(!confirm('一旦删除将无法恢复，确认删除吗？')) return false;
}

function setCookie(wxp_cookieName,wxp_cookieValue,wxp_expireHours) {
	var cookieString = wxp_cookieName + "=" + escape(wxp_cookieValue);
	if(wxp_expireHours > 0) {
		var date = new Date();
		date.setTime(date.getTime + wxp_expireHours * 3600 * 1000);
		cookieString = cookieString + "; expire=" + date.toGMTString();
	}
	document.cookie = cookieString;
}

function getCookie(wxp_cookieName) {
	var aCookie = document.cookie.split("; ");
	for(var i=0; i < aCookie.length; i++) {
		var aCrumb = aCookie[i].split("=");
		if(escape(wxp_cookieName) == aCrumb[0]) return unescape(aCrumb[1]);
	}
	return null;
}

function delCookie(wxp_cookieName) {
  var date = new Date();
  document.cookie = wxp_cookieName + "= ; expires=" + date.toGMTString();
}

function strLen(wxp_string) {
	var sStr, iCount, i, strTemp; 
	iCount = 0;
	sStr = wxp_string.split("");
	for(i = 0; i < sStr.length; i++) {
		strTemp = escape(sStr[i]); 
		if(strTemp.indexOf("%u",0) == -1) iCount = iCount + 1;
		else iCount = iCount + 2;
	}
	return iCount ;
}

function trim(wxp_string) {
	return (wxp_string + '').replace(/(\s+)$/g, '').replace(/^\s+/g, '');
}

//保存到收藏夹
function addBookmark(wxp_sitename,wxp_url) {
	if(window.sidebar) { 
		window.sidebar.addPanel(wxp_sitename, wxp_url,""); 
	} else if(document.all) {
		window.external.AddFavorite( wxp_url, wxp_sitename);
	} else if(window.opera && window.print) {
		return true;
	}
}

//设为主页
function setHomepage(wxp_url) {
	if(document.all) {
		document.body.style.behavior='url(#default#homepage)';
		document.body.setHomePage(wxp_url);
	} else if (window.sidebar) {
		if(window.netscape) {
			try {  
				netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");  
			} catch(e) {  
				alert( "该操作被浏览器拒绝，如果想启用该功能，请在地址栏内输入 about:config，然后将项 signed.applets.codebase_principal_support 值该为true" );  
			}
		} 
		var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);
		prefs.setCharPref('browser.startup.homepage',wxp_url); 
	}
}

function isMail(wxp_string) {
	var patrn = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
	if (!patrn.test(wxp_string)) return false;
	else return true;
}

function isBetween(wxp_number, min, max) {
	return (isNaN(wxp_number) == false  && wxp_number >= min && wxp_number <= max);
}

function isDate(wxp_string) {
	var pattern = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/;
	return pattern.test(wxp_string);
}

function isMobi(wxp_string) {
	var pattern=/^1[3|5|8][0-9]\d{4,8}$/; 
	if(!pattern.test(wxp_string)) return false;
	return true;
}

function isPhone(wxp_string) {
	var pattern=/(^[0-9]{3,4}\-[0-9]{7,8}$)|(^[0-9]{7,8}$)|(^\([0-9]{3,4}\)[0-9]{3,8}$)|(^1[3|5|8][0-9]\d{4,8}$)/;
	if(!pattern.test(wxp_string)) return false;
	return true;
}

function isPostcode(wxp_string) {
	var pattern=/(^[0-9]{6}$)/;
	if(!pattern.test(wxp_string)) return false;
	return true;
}

function isEmpty(wxp_string) {
	var pattern = /^\s*$/;
	return pattern.test(wxp_string);
}

function isChinese(wxp_string) {
	if(escape(wxp_string).indexOf("%u") != -1) return true;
	return false;
}

//选择 预览图片
function seepic(img,obj){
	var path = /\.jpg$|\.jpeg$|\.png$|\.gif$/i;
	if(!path.test(obj.value)){
		alert("请用jpg/jpeg/gif/png格式的图片");
		document.getElementById(img).style.display = 'none';
		return false;
	}
	if(obj.value != ""){
		document.getElementById(img).style.display = 'block';
		document.getElementById(img).innerHTML = '<img src="' + obj.value + '" width="300" />';
	}
}

/////////////////////ajax begin//////////////////
var xhr = false;
function ajaxresponse(id, url) {
	if (window.XMLHttpRequest) {
		xhr = new XMLHttpRequest();
	} else {
		if (window.ActiveXObject) {
			try {
				xhr = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) { }
		}
	}
	if (xhr) {
		document.getElementById(id).innerHTML = '<img src="image/loading.gif"> <font color=red>Loading...</font>';
		xhr.onreadystatechange = function(){
			showContents(id);
		};
		xhr.open("GET", url, true);
		xhr.send(null);
	} else {
		alert("对不起，您的浏览器不支持XMLHttpRequest");
	}
}
function showContents(id) {
	if (xhr.readyState == 4) {
		if (xhr.status == 200) {
			var outMsg = (xhr.responseXML && xhr.responseXML.contentType=="text/xml") ? xhr.responseXML.getElementsByTagName("wxp")[0].textContent : xhr.responseText;
		} else {
			var outMsg = "There was a problem with the request " + xhr.status;
		}
		var notic = outMsg.split("|wxp|");
		switch(notic[0]) {
			case "succeed" :
				right(id, notic[1]);
				break;
			case "failure" :
				error(id, notic[1]);
				break;
		}
	}
}
function right(id, msg) {
	document.getElementById(id).style.display = '';
	document.getElementById(id).innerHTML = '<img src="image/check_right.gif" width="13" height="13"> <font color=red>' + msg + '</font>';
	document.getElementById('tj').disabled = false;
}
function error(id, msg) {
	document.getElementById(id).style.display = '';
	document.getElementById(id).innerHTML = '<img src="image/check_error.gif" width="13" height="13"> <font color=red>' + msg + '</font>';
	document.getElementById('tj').disabled = true;
}
////////////////////ajax end/////////////////////

//验证用户输入的字符
function wxp_onkeyup($o,$type) {
	var valid_char, valid_alert;
	switch($type) {
		case "09": 
			valid_char='0123456789';
			valid_alert='只能填写数字！';
			break;
		case "az": 
			valid_char='abcdefghijklmnopqrstuvwxyz';
			valid_alert='只能填写小写字母！';
			break;
		case "AZ": 
			valid_char='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
			valid_alert='只能填写大写字母！';
			break;
		case "azAZ": 
			valid_char='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
			valid_alert='只能填写字母！';
			break;
		case "09azAZ": 
			valid_char='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
			valid_alert='只能填写字母a～z(不区分大小写)、数字0～9！';
			break;
		default: 
			valid_char='_-.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
			valid_alert='只能填写字母a～z(不区分大小写)、数字0～9、点、减号或下划线！';
	}
	for (i=0;i<=$o.value.length;i++) {
		var the_char=$o.value.charAt(i);
		if(valid_char.indexOf(the_char)==-1){
	  		alert(valid_alert);
	  		$o.value=$o.value.substring(0,i);
	  		return 1;
		}
	}
}
///////////////////////////////////////////////////////
//排序开始
var dom = (document.getElementsByTagName) ? true : false;
var ie5 = (document.getElementsByTagName && document.all) ? true : false;
var arrowUp, arrowDown;
if (ie5 || dom) initSortTable();
function initSortTable() {
	arrowUp = document.createElement("SPAN");
	var tn = document.createTextNode("↓");
	arrowUp.appendChild(tn);
	arrowUp.className = "arrow";
	arrowDown = document.createElement("SPAN");
	var tn = document.createTextNode("↑");
	arrowDown.appendChild(tn);
	arrowDown.className = "arrow";
}

function sortTable(tableNode, nCol, bDesc, sType) {
	var tBody = tableNode.tBodies[0];
	var trs = tBody.rows;
	var a = new Array();
	
	for (var i=0; i<trs.length; i++) {
		a[i] = trs[i];
	}
	
	a.sort(compareByColumn(nCol,bDesc,sType));
	
	for (var i=0; i<a.length; i++) {
		tBody.appendChild(a[i]);
	}
}
function CaseInsensitiveString(s) {
	return String(s).toUpperCase();
}
function parseDate(s) {
	return Date.parse(s.replace(/\-/g, '/'));
}
function toNumber(s) {
    return Number(s.replace(/[^0-9\.]/g, ""));
}
function compareByColumn(nCol, bDescending, sType) {
	var c = nCol;
	var d = bDescending;
	
	var fTypeCast = String;
	
	if (sType == "Number")
		fTypeCast = Number;
	else if (sType == "Date")
		fTypeCast = parseDate;
	else if (sType == "CaseInsensitiveString")
		fTypeCast = CaseInsensitiveString;
		return function (n1, n2) {
			if (fTypeCast(getInnerText(n1.cells[c])) < fTypeCast(getInnerText(n2.cells[c])))
				return d ? -1 : +1;
			if (fTypeCast(getInnerText(n1.cells[c])) > fTypeCast(getInnerText(n2.cells[c])))
				return d ? +1 : -1;
			return 0;
		};
}

function sortColumn(e) {
	var tmp, el, tHeadParent;
	if (ie5){
		tmp = e.srcElement;
	}
	else if (dom)
		tmp = e.target;
		tHeadParent = getParent(tmp, "THEAD");
		el = getParent(tmp, "TH");
	if (tHeadParent == null)
		return;
	
	if (el != null) {
		var p = el.parentNode;
		var i;
		if (el._descending) // catch the null
			el._descending = false;
		else
			el._descending = true;
		
		if (tHeadParent.arrow != null) {
			if (tHeadParent.arrow.parentNode != el) {
				tHeadParent.arrow.parentNode._descending = null;   
			}
			tHeadParent.arrow.parentNode.removeChild(tHeadParent.arrow);
		}
		if (el._descending)
			tHeadParent.arrow = arrowDown.cloneNode(true);
		else
			tHeadParent.arrow = arrowUp.cloneNode(true);
			el.appendChild(tHeadParent.arrow);
		
		// get the index of the td
		for (i=0; i<p.cells.length; i++) {
			if (p.cells[i] == el) break;
		}
		var table = getParent(el, "TABLE");
		// can't fail
		
		sortTable(table,i,el._descending, el.getAttribute("type"));
	}
}

function getInnerText(el) {
	if (ie5) return el.innerText; //Not needed but it is faster
	
	var str = "";
	
	for (var i=0; i<el.childNodes.length; i++) {
		switch (el.childNodes.item(i).nodeType) {
			case 1: //ELEMENT_NODE
				str += getInnerText(el.childNodes.item(i));
				break;
			case 3: //TEXT_NODE
				str += el.childNodes.item(i).nodeValue;
				break;
		}
	}
	
	return str;
}
function getParent(el, pTagName) {
	if (el == null) return null;
	else if (el.nodeType == 1 && el.tagName.toLowerCase() == pTagName.toLowerCase())
		return el;
	else
		return getParent(el.parentNode, pTagName);
}
//排序结束
///////////////////////////////////////////////////////
