//将 cookie 域名升级,保证各个子域名能够共享
document.domain = webDomain;

//ajax 超时时间 单位毫秒
global_AjaxTimeOut = 10000;

//实现 trim 方法
String.prototype.trim = function () {
	if (this == null) {
		return "";
	}
	return this.replace(/(^\s*)|(\s*$)/g, "");
};

//实现 replaceAll 方法
String.prototype.replaceAll = function (s1, s2) {
	return this.replace(new RegExp(s1, "gm"), s2);
};

//得到radio的值 
function getRadioValue(radioName) {
	var objs = document.getElementsByName(radioName);
	for (var i = 0; i < objs.length; i++) {
		if (objs[i].checked) {
			return objs[i].value;
		}
	}
}

//验证邮件是否合法
function emailCheck(mail) {
	var emailPat = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
	var matchArray = mail.match(emailPat);
	if (matchArray == null) {
		return false;
	}
	return true;
}

/////////////////////////////////////////////////////////////////
//  在 cookie.js 基础上封装的几个 cookie 操作函数
function addTempCookie(cookieName, cookieValue) {
	Set_Cookie(cookieName, cookieValue, 0, "/", webDomain, false);
}
function addCookie(cookieName, cookieValue, time) {
	if (!time) {
		time = 3600 * 24 * 365 * 30;
	}
	Set_Cookie(cookieName, cookieValue, time, "/", webDomain, false);
}
function delCookie(name) {
	Delete_Cookie(name, "/", webDomain);
}
function getCookie(name) {
	return Get_Cookie(name);
}

//发送 post get 信息
function getNewSubmitForm(theMethod) {
	var submitForm = document.createElement("FORM");
	document.body.appendChild(submitForm);
	submitForm.method = theMethod;
	return submitForm;
}
//helper function to add elements to the form
function createNewFormElement(inputForm, elementName, elementValue) {
	var newElement = document.createElement("<input name='" + elementName + "' type='hidden'>");
	inputForm.appendChild(newElement);
	newElement.value = elementValue;
	return newElement;
}

//获得静态网页的网页参数
function getQueryString(name) {
	var reg = new RegExp("(^|\\?|&)" + name + "=([^&]*)(\\s|&|$)", "i");
	if (reg.test(window.location.href)) {
		return unescape(RegExp.$2.replace(/\+/g, " "));
	} else {
		return "";
	}
}

//获得网页url 第一个 ? 后的字符串 
function getQueryStr() {
	var url = window.location.href;
	var i = url.indexOf("?");
	if (i > 0) {
		return url.substring(i + 1, url.length);
	} else {
		return "";
	}
}
/////////////////////////
//动态加载 js文件
function IncludeJS(sId, fileUrl, source) {
	if ((source != null) && (!document.getElementById(sId))) {
		var oHead = document.getElementsByTagName("HEAD").item(0);
		var oScript = document.createElement("script");
		oScript.language = "javascript";
		oScript.type = "text/javascript";
		oScript.id = sId;
		oScript.defer = true;
		oScript.text = source;
		oHead.appendChild(oScript);
	}
} 
/////////////////////////
// 登录检查 没登陆则显示登录窗口
function loginCheck() {
	$(document).ready(function () {
		if (getCookie(COOKIE_USER_ID) == null) { //显示登录框
			var url = document.referrer;
			if (url == "") {
				url = window.location.href;
			}
			showPopWin("http://" + userDomain + "/st/PreLogin?forward=", 394, 248);
		}
	});
}

//添加一个隐藏的 frame 并访问 url
function hiddenFrameAction(id, url) {
	var iframe = document.getElementById(id);
	if (iframe == null) {
		iframe = document.createElement("<iframe id=\"" + id + "\" src=\"\" style=\"display:none;\"></iframe>");
		document.body.appendChild(iframe);
	}
	iframe.src = url;
}

//////  底层 dateformat start
/*
 * Date Format 1.2.3
 * (c) 2007-2009 Steven Levithan <stevenlevithan.com>
 * MIT license
 *
 * Includes enhancements by Scott Trenda <scott.trenda.net>
 * and Kris Kowal <cixar.com/~kris.kowal/>
 *
 * Accepts a date, a mask, or a date and a mask.
 * Returns a formatted version of the given date.
 * The date defaults to the current date/time.
 * The mask defaults to dateFormat.masks.default.
 */
var dateFormat = function () {
	var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g, timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g, timezoneClip = /[^-+\dA-Z]/g, pad = function (val, len) {
		val = String(val);
		len = len || 2;
		while (val.length < len) {
			val = "0" + val;
		}
		return val;
	};

	// Regexes and supporting functions are cached through closure
	return function (date, mask, utc) {
		var dF = dateFormat;

		// You can't provide utc if you skip other args (use the "UTC:" mask prefix)
		if (arguments.length == 1 && Object.prototype.toString.call(date) == "[object String]" && !/\d/.test(date)) {
			mask = date;
			date = undefined;
		}

		// Passing date through Date applies Date.parse, if necessary
		date = date ? new Date(date) : new Date;
		if (isNaN(date)) {
			throw SyntaxError("invalid date");
		}
		mask = String(dF.masks[mask] || mask || dF.masks["default"]);

		// Allow setting the utc argument via the mask
		if (mask.slice(0, 4) == "UTC:") {
			mask = mask.slice(4);
			utc = true;
		}
		var _ = utc ? "getUTC" : "get", d = date[_ + "Date"](), D = date[_ + "Day"](), m = date[_ + "Month"](), y = date[_ + "FullYear"](), H = date[_ + "Hours"](), M = date[_ + "Minutes"](), s = date[_ + "Seconds"](), L = date[_ + "Milliseconds"](), o = utc ? 0 : date.getTimezoneOffset(), flags = {d:d, dd:pad(d), ddd:dF.i18n.dayNames[D], dddd:dF.i18n.dayNames[D + 7], m:m + 1, mm:pad(m + 1), mmm:dF.i18n.monthNames[m], mmmm:dF.i18n.monthNames[m + 12], yy:String(y).slice(2), yyyy:y, h:H % 12 || 12, hh:pad(H % 12 || 12), H:H, HH:pad(H), M:M, MM:pad(M), s:s, ss:pad(s), l:pad(L, 3), L:pad(L > 99 ? Math.round(L / 10) : L), t:H < 12 ? "a" : "p", tt:H < 12 ? "am" : "pm", T:H < 12 ? "A" : "P", TT:H < 12 ? "AM" : "PM", Z:utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""), o:(o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4), S:["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10]};
		return mask.replace(token, function ($0) {
			return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1);
		});
	};
}();

// Some common format strings
dateFormat.masks = {"default":"ddd mmm dd yyyy HH:MM:ss", shortDate:"m/d/yy", mediumDate:"mmm d, yyyy", longDate:"mmmm d, yyyy", fullDate:"dddd, mmmm d, yyyy", shortTime:"h:MM TT", mediumTime:"h:MM:ss TT", longTime:"h:MM:ss TT Z", isoDate:"yyyy-mm-dd", isoTime:"HH:MM:ss", isoDateTime:"yyyy-mm-dd'T'HH:MM:ss", isoUtcDateTime:"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"};

// Internationalization strings
dateFormat.i18n = {dayNames:["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], monthNames:["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]};

// For convenience...
Date.prototype.format = function (mask, utc) {
	return dateFormat(this, mask, utc);
};
//////  底层 dateformat end

//兼容多种浏览器的Ctrl+Enter提交--兼容firefox、ie、opera
function isKeyTrigger(e, keyCode) {
	var argv = isKeyTrigger.arguments;
	var argc = isKeyTrigger.arguments.length;
	var bCtrl = false;
	if (argc > 2) {
		bCtrl = argv[2];
	}
	var bAlt = false;
	if (argc > 3) {
		bAlt = argv[3];
	}
	var nav4 = window.Event ? true : false;
	if (typeof e == "undefined") {
		e = event;
	}
	if (bCtrl && !((typeof e.ctrlKey != "undefined") ? e.ctrlKey : e.modifiers & Event.CONTROL_MASK > 0)) {
		return false;
	}
	if (bAlt && !((typeof e.altKey != "undefined") ? e.altKey : e.modifiers & Event.ALT_MASK > 0)) {
		return false;
	}
	var whichCode = 0;
	if (nav4) {
		whichCode = e.which;
	} else {
		if (e.type == "keypress" || e.type == "keydown") {
			whichCode = e.keyCode;
		} else {
			whichCode = e.button;
		}
	}
	return (whichCode == keyCode);
}
//清除字段内容
function cleanValue(id) {
	var obj = $("#" + id);
	obj.val("");
}
function setValue(id, value) {
	var obj = $("#" + id);
	obj.val(value);
}
//=============================

//版本号比较函数 ver0 大 返回 1 小返回 -1 等于返回 0
//版本号是 4 个数字的组合，由 . 划分 
function compVersion(ver0, ver1) {
	var vers0 = ver0.split(".");
	var vers1 = ver1.split(".");
	if (vers0[0] > vers1[0]) {
		return 1;
	} else {
		if (vers0[0] < vers1[0]) {
			return -1;
		} else {
			if (vers0[1] > vers1[1]) {
				return 1;
			} else {
				if (vers0[1] < vers1[1]) {
					return -1;
				} else {
					if (vers0[2] > vers1[2]) {
						return 1;
					} else {
						if (vers0[2] < vers1[2]) {
							return -1;
						} else {
							if (vers0[3] > vers1[3]) {
								return 1;
							} else {
								if (vers0[3] < vers1[3]) {
									return -1;
								} else {
									return 0;
								}
							}
						}
					}
				}
			}
		}
	}
}
/*       
 *         ForDight(Dight,How):数值格式化函数，Dight要       
 *         格式化的     数字，How要保留的小数位数。       
*/
function ForDight(Dight, How) {
	Dight = Math.round(Dight * Math.pow(10, How)) / Math.pow(10, How);
	return Dight;
}  
//=============================

