/** 输出数值类型的四舍五入的值，最多输出d位小数 */   
Number.prototype.toFixed2 = function(d) {
	var r = this.toFixed(d);
	var pd = r.indexOf(".");
	while ( r.length > 1 && r.length > pd + 1 && r.substring(r.length-1) == "0" ) {
		r = r.substring(0, r.length - 1);
	}
	if ( r.length > 1 && r.substring(r.length-1) == "." ) {
		r = r.substring(0, r.length - 1);
	}
	return r;
}

Array.prototype.pushArray = function(arr) {
	if (arr && arr.length) {
		this.push(arr.join(""));
	}
	return this;
}Array.prototype.index = function(obj) {	for (var i=0; i<this.length; i++) {		if (this[i]==obj) return i;	}	return -1;}

/** StringBuffer 可提升IE连接字符串的性能 */
function StringBuffer() {    
	this._strings = [];
	if(arguments.length==1)
	{
		this._strings.push(arguments[0]);
	}    
}   

StringBuffer.prototype.append = function(str)
{
	this._strings.push(str);
	return this;
}

StringBuffer.prototype.appendStringBuffer = function(bf)
{
	for (var i=0; i<bf._strings.length(); i++) {
		this._strings.push(bf._strings[i]);
	}
	return this;
}
   
StringBuffer.prototype.toString = function()    
{    
    return this._strings.join("");    
}    
   
/* 返回长度 */   
StringBuffer.prototype.length = function()    
{    
    var str = this._strings.join("");    
    return str.length;    
}    
   
/* 删除后几位字符 */   
StringBuffer.prototype.del = function(num)    
{    
    var len = this.length();    
    var str = this.toString();    
    str     = str.slice(0,len-num);    
    this._strings = [];    
    this._strings.push(str);    
}

/** 查询条件 QueryEntry 
* index, valueHTML, size
* key, value, comp, datatype, expression
*/
function QueryEntry(_index, _key, _value, _comp, _datatype, _expression, _valueHTML, _size) {
	//this.PageQueryKey = 'whcxht_query_entry';
	this.PageQueryKey = QueryEntry.PageQueryKey;
	this.index = _index;
	this.key = _key;
	this.value = _value;
	this.comp = _comp;
	this.datatype = _datatype;
	this.expression = _expression;
	this.valueHTML = _valueHTML;
	this.size = _size;
}
QueryEntry.PageQueryKey = 'whcxht_query_entry';

QueryEntry.prototype.html = function() {
	var s = [];
	if (this.valueHTML) {
		s.push(this.valueHTML);
	} else {
		s.push('<input name="' + this.PageQueryKey + '.value"');	s.push( (this.size ? ' size="' + this.size + '"' : '') );
		s.push(' value="');	s.push( (this.value ? this.value : '') );	s.push('" />');
	}
	s.push('<input name="' + this.PageQueryKey + '.key" value="' << (this.key ? this.key : '') << '" type="hidden" />');
	s.push('<input name="' + this.PageQueryKey + '.comp" value="' << (this.comp ? this.comp : '') << '" type="hidden" />');
	s.push('<input name="' + this.PageQueryKey + '.datatype" value="' << (this.datatype ? this.datatype : '') << '" type="hidden" />');
	s.push('<input name="' + this.PageQueryKey + '.expression" value="' << (this.expression ? this.expression : '') << '" type="hidden" />');
	return s.join('');
}

QueryEntry.json = function(qes) {
	var r = {};
	r[QueryEntry.PageQueryKey + '.index'] = [];
	r[QueryEntry.PageQueryKey + '.key'] = [];
	r[QueryEntry.PageQueryKey + '.value'] = [];
	r[QueryEntry.PageQueryKey + '.comp'] = [];
	r[QueryEntry.PageQueryKey + '.datatype'] = [];
	r[QueryEntry.PageQueryKey + '.expression'] = [];
	for (var i=0; i<qes.length; i++) {
		r[QueryEntry.PageQueryKey + '.index'].push( qes[i].index );
		r[QueryEntry.PageQueryKey + '.key'].push( qes[i].key );
		r[QueryEntry.PageQueryKey + '.value'].push( qes[i].value );
		r[QueryEntry.PageQueryKey + '.comp'].push( qes[i].comp );
		r[QueryEntry.PageQueryKey + '.datatype'].push( qes[i].datatype );
		r[QueryEntry.PageQueryKey + '.expression'].push( qes[i].expression );
	}
	return r;
}

QueryEntry.prototype.json = function(qes) {
	if (qes) {
		return QueryEntry.json(qes);
	} else {
		var r = {};
		r[this.PageQueryKey + '.index'] = this.index;
		r[this.PageQueryKey + '.key'] = this.key;
		r[this.PageQueryKey + '.value'] = this.value;
		r[this.PageQueryKey + '.comp'] = this.comp;
		r[this.PageQueryKey + '.datatype'] = this.datatype;
		r[this.PageQueryKey + '.expression'] = this.expression;
		return r;
	}
}

QueryEntry.prototype.serial = function(qes) {
	if (qes) {
		var r = '';
		for (var i=0; i<qes.length; i++) {
			r += (r == '' ? '' : '&')
				+ this.PageQueryKey + '.index=' + (qes[i].index ? qes[i].index : '')
				+ '&' + this.PageQueryKey + '.key=' + (qes[i].key ? qes[i].key : '')
				+ '&' + this.PageQueryKey + '.value=' + (qes[i].value ? qes[i].value : '')
				+ '&' + this.PageQueryKey + '.comp=' + (qes[i].comp ? qes[i].comp : '')
				+ '&' + this.PageQueryKey + '.datatype=' + (qes[i].datatype ? qes[i].datatype : '')
				+ '&' + this.PageQueryKey + '.expression=' + (qes[i].expression ? qes[i].expression : '');
		}
		return r;
	} else {
		return this.PageQueryKey + '.index=' + (this.index ? this.index : '')
			+ '&' + this.PageQueryKey + '.key=' + (this.key ? this.key : '')
			+ '&' + this.PageQueryKey + '.value=' + (this.value ? this.value : '')
			+ '&' + this.PageQueryKey + '.comp=' + (this.comp ? this.comp : '')
			+ '&' + this.PageQueryKey + '.datatype=' + (this.datatype ? this.datatype : '')
			+ '&' + this.PageQueryKey + '.expression=' + (this.expression ? this.expression : '');
	}
}

/* commons */
var Commons = {
	a:1
	, _appPath : null
	, _appServer: null
	, getAppServer: function() {
		if (!Commons._appServer) {
			var s = location.protocol + '//' + location.host;
			Commons._appServer = s;
		}
		return Commons._appServer;
	}
	, getAppPath2 : function() {
		var p = location.pathname;
		var p1 = p.indexOf("/", 1);
		if (p1 == -1) p1 = p.length;
		p = p.substring(0, p1);
		return p;
	}
	, getAppPath : function() {
		if (this._appPath == null) {
			this._appPath = this.getAppPath2();
		}
		return this._appPath;
	}
	, _skin : null
	, getSkin2 : function() {
			var url = this.getAppPath() + "/auth/!skin";
			var resp = jQuery.ajax({
				url: url
				, async: false
				, dataType: 'json'
				//, data: {rnd: Math.random}
			}) ;
			var r = eval("(" + resp.responseText + ")");
			var sk = r ? r.skin : "skin0";
			if (!sk) sk = "skin0";
			return this.getAppPath() + "/skins/" + sk;
	}
	, getSkin : function() {
		if (this._skin == null) {
			this._skin = this.getSkin2();
		}
		return this._skin;
	} 
	/* 
	, createLinkTo : function(args, url0) {
			var url = url0;
			if (url == null) {
				url = this.getAppPath() + "/commons/linkTo?" + args;
			}
			return $.ajax({
				url: url,
				async: false
			}).responseText; 
		} 
		*/
	, params : function(qs0) {
		var r = {};
		var qs = qs0;
		if (qs == null) qs = location.search;
		if (qs.indexOf("?") == 0) qs = qs.substring(1);

		if (qs == null || qs == "") return null;
		var arr = qs.split("&");
		for (var i=0; i<arr.length; i++) {
			var kv = arr[i].split("=");
			var tmp = r[kv[0]];
			if (tmp == undefined) {
				r[kv[0]] = kv[1];
			} else {
				if ($.isArray(tmp) ) {
					r[kv[0]][tmp.length] = kv[1];
				} else {
					r[kv[0]] = [tmp, kv[1]];
				}
			}
		}
		return r;
	}
	, getPageKey: function() {
		var qry = Commons.removeParams("search_all");
		qry = Commons.removeParams("rnd", qry);
		qry = Commons.removeParams("navmenu", qry);
		qry = Commons.removeParams("offset", qry);
		qry = Commons.removeParams("max", qry);
		qry = Commons.removeParams("model.id", qry);
		if (qry && qry != "") qry = "?" + qry.substring(1);
		return location.pathname + qry;
	}
	, removeParams : function (para, qs0) {
		var qry = qs0
		if (qry == null) qry = location.search;
		if (qry != null && qry != "") {
			if (qry.indexOf("?") == 0) {
				qry = "&" + qry.substring(1);
			}
			var re = new RegExp("&" + para + "=[^&]*");
			qry = qry.replace(re, "");
		}
		return qry;
	}
	, joinParams : function(params, _first) {
		var s = "";
		for (var e in params) {
			if (typeof(params[e]) == "object") {
				for (var i = 0; i < params[e].length; i++) {
					s += "&" + e + "=" + params[e][i];
				}
			} else {
				s += "&" + e + "=" + params[e];
			}
		}
		if (s != "" && _first && _first != "") {
			s = _first + s.substring(1)
		}
		return s;
	}	, getObjectKey: function(cont, obj) {		for (var k in cont) {			if (cont[k] == obj) return k;		}		return null;	}	, indexOf: function(arr, obj) {		if (arr == null) return -1;		for (var i=0; i<arr.length; i++) {			if (arr[i] == obj) return i;		}		return -1;	}	/** 获得String s 的长度, 一个汉字的长度为2 */	, getLength2: function(s) {		return s.replace(/[^\x00-\xff]/g,"**").length;	}	, cutString: function(s, leng, sx) {		var s0 = sx == null ? "&nbsp;" : sx;		var r = "";		var l = Commons.getLength2(s);		if (l > leng) {			var l0 = Commons.getLength2(s0);			var n = 1;			while (Commons.getLength2(r) <= leng - l0 && n <= s.length) {				r = s.substring(0, n);				n++;			}			if (Commons.getLength2(r) > leng - l0) {				r = r.substring(0, r.length - 1);			}			r += s0;		} else {			r = s;		}		//alert(r);		return r;	}
};

/* Tools */
var Tools = {
	isIE: (document.all) ? true : false
	, isIE6: (document.all) && ([/MSIE (\d)\.0/i.exec(navigator.userAgent)][0][1] == 6)
	, isIE9: (document.all) && ([/MSIE (\d)\.0/i.exec(navigator.userAgent)][0][1] == 9)	, getUrlShell: function(){		return Commons.getAppPath() + '/js/shell.jsp?rnd=' + Math.random();	}	, getDomDocumentPrefix: function() {		if (this.getDomDocumentPrefix.prefix)			return this.getDomDocumentPrefix.prefix;		var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"];		var o;		for (var i = 0; i < prefixes.length; i++) {			try {				// try to create the objects				o = new ActiveXObject(prefixes[i] + ".DomDocument");				return this.getDomDocumentPrefix.prefix = prefixes[i];			}			catch (ex) {};		}				throw new Error("Could not find an installed XML parser");	}	, getXmlHttpPrefix: function() {		if (this.getXmlHttpPrefix.prefix)			return this.getXmlHttpPrefix.prefix;				var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"];		var o;		for (var i = 0; i < prefixes.length; i++) {			try {				// try to create the objects				o = new ActiveXObject(prefixes[i] + ".XmlHttp");				return this.getXmlHttpPrefix.prefix = prefixes[i];			}			catch (ex) {};		}				throw new Error("Could not find an installed XML parser");	}	, createXMLObject: function() {		if (window.ActiveXObject)			return new ActiveXObject(this.getDomDocumentPrefix() + ".DomDocument");	}
	, getParentElement: function(obj, parentTag) {
		var e = obj.parentElement;
		if (e) {
			if (e.tagName) {
				if (e.tagName == parentTag) {
					return e;
				} else {
					return this.getParentElement(e, parentTag);
				}
			} else {
				return this.getParentElement(e, parentTag);
			}
		} else {
			return null;
		}
	}
	, getFirstChildByName: function(obj, childname) {
		var c = obj.children;
		var rtn = null;
		if (c) {
			for (var i=0; i<c.length; i++) {
				if (c[i].name != null && c[i].id != null) {
					if (c[i].name == childname || c[i].id == childname) {
						rtn = c[i];
					} else {
						rtn = this.getFirstChildByName(c[i], childname);
					}
				} else if (c[i].name != null) {
					if (c[i].name == childname) {
						rtn = c[i];
					} else {
						rtn = this.getFirstChildByName(c[i], childname);
					}
				} else if (c[i].id != null) {
					if (c[i].id == childname) {
						rtn = c[i];
					} else {
						rtn = this.getFirstChildByName(c[i], childname);
					}
				} else {
					rtn = this.getFirstChildByName(c[i], childname);
				}
				if (rtn != null) {
					break;
				}
			}
		}
		return rtn;
	}
	, getChildrenByName: function(rtn, obj, childname) {
		var c = obj.children;
		if (rtn==null) {
			rtn = new Array();
		}
		//alert(c);
		if (c) {
			for (var i=0; i<c.length; i++) {
				if (c[i].name == null && c[i].id == null) {
					this.getChildrenByName(rtn, c[i], childname);
				} else if (c[i].name == null) {
					if (c[i].id == childname) {
						rtn[rtn.length] = c[i];
					} else {
						this.getChildrenByName(rtn, c[i], childname);
					}
				} else if (c[i].id == null) {
					if (c[i].name == childname) {
						rtn[rtn.length] = c[i];
					} else {
						this.getChildrenByName(rtn, c[i], childname);
					}
				} else {
					if (c[i].name == childname || c[i].id == childname) {
						rtn[rtn.length] = c[i];
					} else {
						this.getChildrenByName(rtn, c[i], childname);
					}
				}
			}
		}
		return rtn;
	}
	, getChildIndex: function(obj, pobj) {
		var c = new Array();
		this.getChildrenByName(c, pobj, obj.name);
		if (c) {
			for (var i=0; i<c.length; i++) {
				if (c[i] == obj) {
					return i;
				}
			}
		}
		return -1;
	}, showDialog: function(page, args, sFeatures, modeless, callback) {
		var page2 = page;
		if (page2.indexOf("?")==-1) {
			page2 += "?rnd=" + Math.random();
		} else {
			page2 += "&rnd=" + Math.random();
		}
		var _features = {dialogWidth: '550px', dialogHeight: '400px', help: 'no', status: 0, scroll: 1, resizable: 1, modal: 'yes'};
		if (sFeatures) {
			var _type = typeof(sFeatures);
			if (_type == "object") {
				for (k in sFeatures) {
					_features[k] = sFeatures[k];
				}
			} else {
				var _f1 = sFeatures.split(";");
				for (var i=0; i<_f1.length; i++) {
					var _s = _f1[i];
					if (_s) {
						var _arr = _s.split(":");
						_features[_arr[0]] = _arr[1];
					}
				}	
			}
			
		}
		var _arr_features = [];
		for (k in _features) {
			_arr_features[_arr_features.length] = k + ":" + _features[k];
		}
		var array = null;
		if (modeless) {
			array = window.showModelessDialog(page2, args, _arr_features.join(";"));
		} else {
			var flag_upload = false;
			try {
				if (args && args._url) {
					if (args._url.indexOf( Commons.getAppPath() + '/attach/' ) == 0) {
						flag_upload = true;
					}
				}
			} catch (e) {
			}
			if (Tools.isIE && (!flag_upload || !Tools.isIE9)) {
				array = window.showModalDialog(page2, args, _arr_features.join(";"));
				if (callback) callback(array);
			} else {
				//window._whcxht_in_args = args;
				//var cw = window.open(page2, "", _arr_features.join(";"));
				
				//use jQueryUI
				var dd = jQuery("#whcxht_dialog_tool");
				//alert( document.body.clientWidth );
				//alert( document.body.offsetWidth );
				//alert( document.body.scrollWidth );
				
				window._whcxht_in_args = args;
				window._whcxht_in_arg_close = function(rx) {
					array = rx;
					dd.hide();
					dd.find('iframe').get(0).src = 'about:blank';
					if (callback) callback(array);
				}
				var pArr = {
					l: 0
					, t: 0
					, w: _features.dialogWidth
					, h: _features.dialogHeight
				};
				pArr.w = parseInt(pArr.w.replace(/px/ig, '').replace(/ /ig, ''));
				pArr.h = parseInt(pArr.h.replace(/px/ig, '').replace(/ /ig, ''));
				pArr.l = document.body.offsetWidth > pArr.w ? (document.body.offsetWidth - pArr.w) / 2 : 0;
				pArr.t = document.body.offsetHeight > pArr.h ? (document.body.offsetHeight - pArr.h) / 2 : 0;
				if (!dd.length) {
					jQuery("body").append('<div id="whcxht_dialog_tool" title="Basic dialog" style="position : absolute;top: ' + pArr.t + '; left: ' + pArr.l + ';width: ' + pArr.w + '; height: ' + pArr.h + ';">'
						+ '<iframe src="' + page2 + '" style="width:100%; height:100%;">'
						//+ '<p style="border:1px solid red;">xxxxxxxxxxxxxxxx</p>'
						+ '</div>'
					);
					dd = jQuery("#whcxht_dialog_tool");
				} else {
					//dd.find('iframe').attr('src', page2);
					//alert( dd.find('iframe').attr('src') );
					dd.find('iframe').get(0).src = page2;
					dd.css('top', pArr.t);
					dd.css('left', pArr.l);
					dd.css('width', pArr.w);
					dd.css('height', pArr.h);
				}
				/*
				dd.dialog({
					"autoOpen": false 
					, "modal": true
					, "zIndex": 100
					, "width": pArr.w
					, "height": pArr.h
					//, buttons: [{text: "Ok", click: function() { $(this).dialog("close"); } }]
				});
				dd.dialog('open');
				*/
				dd.show();
			}
		}
		return array;
	}, chooseUser00: function() {
		var _appPath = Commons.getAppPath();
		var url = _appPath + "/user/choose";
		var args = {_opener: window, _url: url, _title: '选择人员'};
		var url_shell = this.getUrlShell();
		var r = Tools.showDialog(url_shell, args, 'dialogWidth:570px;dialogHeight:450px');
	}
	, chooseUser: function(f, initArgs) {
		//var obj = obj0;
		//var _row = jQuery(obj).parents("tr:first");
		var _initArgs = initArgs;
		if (!_initArgs && f && typeof(f) == 'object' && (f.id || f.text) ) {
			_initArgs = {id: f.id, text: f.text, sep: f.sep, max: f.max};
		}
		var max = _initArgs ? _initArgs.max : null;
		if (_initArgs) {
			if (typeof(_initArgs) == 'function') {
				_initArgs = _initArgs();
			} else if (typeof(_initArgs) == 'object' && (_initArgs.id && _initArgs.text) ) {
				var sep = _initArgs.sep ? _initArgs.sep : ',';
				var obj_id = _initArgs.id;
				var obj_text = _initArgs.text;
				if (obj_id && typeof(obj_id) == 'string') {
					var obj_id = document.getElementById(obj_id);
					if (obj_id.tagName && obj_id.tagName == 'DIV') {
						var tmp = [];
						jQuery(obj_id).find('input').each(function() {
							tmp.push(this.value);
						});
						obj_id = tmp;
					} else {
						obj_id = obj_id.value.split(sep);
					}
				}
				if (obj_text && typeof(obj_text) == 'string') obj_text = document.getElementById(obj_text).value.split(sep);
				_initArgs = [];
				for (var i=0; obj_id && i<obj_id.length; i++) {
					if (obj_id[i] || obj_text[i]) {
						_initArgs[i] = {id: obj_id[i], text: obj_text[i]};
					}
				}
			}
		}
		
		var url = Commons.getAppPath() + '/admin/org/user/!choose';
		var args = {_opener: window, _url: url, _title: '选择人员', initArgs: _initArgs, max: max};
		var url_shell = this.getUrlShell();
		var r = Tools.showDialog(url_shell, args, 'dialogWidth:720px;dialogHeight:450px');
		if (r && f) {
			if (typeof(f) == 'function') {
				f(r);
			} else if (typeof(f) == 'object' && (f.id || f.text) ) {
				var obj_id = f.id;
				var obj_text = f.text;
				if (f.id && typeof(f.id) == 'string') obj_id = document.getElementById(f.id);
				if (f.text && typeof(f.text) == 'string') obj_text = document.getElementById(f.text);
				var sep = f.sep ? f.sep : ',';
				var r_id = [];
				var r_text = [];
				for (var i=0; i<r.length; i++) {
					//r_id += (r_id == '' ? '' : sep) + r[i].user.id;
					if (obj_id) {
						if (obj_id.tagName && obj_id.tagName == 'DIV') {
							r_id.push('<input name="' + obj_id.getAttribute('childId') + '" value="' + r[i].id + '" type="hidden" />');
						} else {
							r_id.push(r[i].id);
						}					
					}
					//r_text += (r_text == '' ? '' : sep) + r[i].user.cnname;
					r_text.push(r[i].name);
				}
				if (obj_id) {
					if (obj_id.tagName && obj_id.tagName == 'DIV') {						
						obj_id.innerHTML = r_id.join('');
					} else {
						obj_id.value = r_id.join(sep);
					}
				}
				if (obj_text) obj_text.value = r_text.join(sep);
			}
			return r;
		}
	}
	, chooseDept: function(f, initArgs) {
		//var obj = obj0;
		//var _row = jQuery(obj).parents("tr:first");
		var _initArgs = initArgs;
		if (!_initArgs && f && typeof(f) == 'object' && (f.id || f.text) ) {
			_initArgs = {id: f.id, text: f.text, sep: f.sep, max: f.max};
		}
		var max = _initArgs ? _initArgs.max : null;
		if (_initArgs) {
			if (typeof(_initArgs) == 'function') {
				_initArgs = _initArgs();
			} else if (typeof(_initArgs) == 'object' && (_initArgs.id && _initArgs.text) ) {
				var sep = _initArgs.sep ? _initArgs.sep : ',';
				var obj_id = _initArgs.id;
				var obj_text = _initArgs.text;
				if (obj_id && typeof(obj_id) == 'string') {
					var obj_id = document.getElementById(obj_id);
					if (obj_id.tagName && obj_id.tagName == 'DIV') {
						var tmp = [];
						jQuery(obj_id).find('input').each(function() {
							tmp.push(this.value);
						});
						obj_id = tmp;
					} else {
						obj_id = obj_id.value.split(sep);
					}
				}
				if (obj_text && typeof(obj_text) == 'string') obj_text = document.getElementById(obj_text).value.split(sep);
				_initArgs = [];
				for (var i=0; obj_id && i<obj_id.length; i++) {
					if (obj_id[i] || obj_text[i]) {
						_initArgs[i] = {id: obj_id[i], text: obj_text[i]};
					}
				}
			}
		}
		var url = Commons.getAppPath() + '/admin/org/dept/!choose';
		var args = {_opener: window, _url: url, _title: '选择部门', initArgs: _initArgs, max: max};
		var url_shell = this.getUrlShell();
		var r = Tools.showDialog(url_shell, args, 'dialogWidth:400px;dialogHeight:520px');
		if (r && f) {
			if (typeof(f) == 'function') {
				f(r);
			} else if (typeof(f) == 'object' && (f.id || f.text) ) {
				var obj_id = f.id;
				var obj_text = f.text;
				if (f.id && typeof(f.id) == 'string') obj_id = document.getElementById(f.id);
				if (f.text && typeof(f.text) == 'string') obj_text = document.getElementById(f.text);
				var sep = f.sep ? f.sep : ',';
				var r_id = [];
				var r_text = [];
				for (var i=0; i<r.length; i++) {
					if (obj_id) {
						if (obj_id.tagName && obj_id.tagName == 'DIV') {
							r_id.push('<input name="' + obj_id.getAttribute('childId') + '" value="' + r[i].id + '" type="hidden" />');
						} else {
							r_id.push(r[i].id);
						}
					}
					r_text.push(r[i].name);
				}
				if (obj_id) {
					if (obj_id.tagName && obj_id.tagName == 'DIV') {						
						obj_id.innerHTML = r_id.join('');
					} else {
						obj_id.value = r_id.join(sep);
					}
				}
				if (obj_text) obj_text.value = r_text.join(sep);
			}
			return r;
		}
	}
	, chooseRole: function(f, initArgs) {
		//var obj = obj0;
		//var _row = jQuery(obj).parents("tr:first");
		var _initArgs = initArgs;
		if (!_initArgs && f && typeof(f) == 'object' && (f.id || f.text) ) {
			_initArgs = {id: f.id, text: f.text, sep: f.sep, max: f.max};
		}
		var max = _initArgs ? _initArgs.max : null;
		if (_initArgs) {
			if (typeof(_initArgs) == 'function') {
				_initArgs = _initArgs();
			} else if (typeof(_initArgs) == 'object' && (_initArgs.id && _initArgs.text) ) {
				var sep = _initArgs.sep ? _initArgs.sep : ',';
				var obj_id = _initArgs.id;
				var obj_text = _initArgs.text;
				if (obj_id && typeof(obj_id) == 'string') {
					var obj_id = document.getElementById(obj_id);
					if (obj_id.tagName && obj_id.tagName == 'DIV') {
						var tmp = [];
						jQuery(obj_id).find('input').each(function() {
							tmp.push(this.value);
						});
						obj_id = tmp;
					} else {
						obj_id = obj_id.value.split(sep);
					}
				}
				if (obj_text && typeof(obj_text) == 'string') obj_text = document.getElementById(obj_text).value.split(sep);
				_initArgs = [];
				for (var i=0; obj_id && i<obj_id.length; i++) {
					if (obj_id[i] || obj_text[i]) {
						_initArgs[i] = {id: obj_id[i], text: obj_text[i]};
					}
				}
			}
		}
		
		var url = Commons.getAppPath() + '/admin/org/role/!choose';
		var args = {_opener: window, _url: url, _title: '选择角色', initArgs: _initArgs, max: max};
		var url_shell = this.getUrlShell();
		var r = Tools.showDialog(url_shell, args, 'dialogWidth:500px;dialogHeight:350px');
		if (r && f) {
			if (typeof(f) == 'function') {
				f(r);
			} else if (typeof(f) == 'object' && (f.id || f.text) ) {
				var obj_id = f.id;
				var obj_text = f.text;
				if (f.id && typeof(f.id) == 'string') obj_id = document.getElementById(f.id);
				if (f.text && typeof(f.text) == 'string') obj_text = document.getElementById(f.text);
				var sep = f.sep ? f.sep : ',';
				var r_id = [];
				var r_text = [];
				for (var i=0; i<r.length; i++) {
					if (obj_id) {
						if (obj_id.tagName && obj_id.tagName == 'DIV') {
							r_id.push('<input name="' + obj_id.getAttribute('childId') + '" value="' + r[i].id + '" type="hidden" />');
						} else {
							r_id.push(r[i].id);
						}
					}
					r_text.push(r[i].name);
				}
				if (obj_id) {
					if (obj_id.tagName && obj_id.tagName == 'DIV') {						
						obj_id.innerHTML = r_id.join('');
					} else {
						obj_id.value = r_id.join(sep);
					}
				}
				if (obj_text) obj_text.value = r_text.join(sep);
			}
			return r;
		}
	}
	, chooseDuty: function(f, initArgs) {
		//var obj = obj0;
		//var _row = jQuery(obj).parents("tr:first");
		var _initArgs = initArgs;
		if (!_initArgs && f && typeof(f) == 'object' && (f.id || f.text) ) {
			_initArgs = {id: f.id, text: f.text, sep: f.sep, max: f.max};
		}
		var max = _initArgs ? _initArgs.max : null;
		if (_initArgs) {
			if (typeof(_initArgs) == 'function') {
				_initArgs = _initArgs();
			} else if (typeof(_initArgs) == 'object' && (_initArgs.id && _initArgs.text) ) {
				var sep = _initArgs.sep ? _initArgs.sep : ',';
				var obj_id = _initArgs.id;
				var obj_text = _initArgs.text;
				if (obj_id && typeof(obj_id) == 'string') {
					var obj_id = document.getElementById(obj_id);
					if (obj_id.tagName && obj_id.tagName == 'DIV') {
						var tmp = [];
						jQuery(obj_id).find('input').each(function() {
							tmp.push(this.value);
						});
						obj_id = tmp;
					} else {
						obj_id = obj_id.value.split(sep);
					}
				}
				if (obj_text && typeof(obj_text) == 'string') obj_text = document.getElementById(obj_text).value.split(sep);
				_initArgs = [];
				for (var i=0; obj_id && i<obj_id.length; i++) {
					if (obj_id[i] || obj_text[i]) {
						_initArgs[i] = {id: obj_id[i], text: obj_text[i]};
					}
				}
			}
		}

		var url = Commons.getAppPath() + '/admin/org/duty/!choose';
		var args = {_opener: window, _url: url, _title: '选择职务', initArgs: _initArgs, max: max};
		var url_shell = this.getUrlShell();
		var r = Tools.showDialog(url_shell, args, 'dialogWidth:700px;dialogHeight:350px');
		if (r && f) {
			if (typeof(f) == 'function') {
				f(r);
			} else if (typeof(f) == 'object' && (f.id || f.text) ) {
				var obj_id = f.id;
				var obj_text = f.text;
				if (f.id && typeof(f.id) == 'string') obj_id = document.getElementById(f.id);
				if (f.text && typeof(f.text) == 'string') obj_text = document.getElementById(f.text);
				var sep = f.sep ? f.sep : ',';
				var r_id = [];
				var r_text = [];
				for (var i=0; i<r.length; i++) {
					if (obj_id) {
						if (obj_id.tagName && obj_id.tagName == 'DIV') {
							r_id.push('<input name="' + obj_id.getAttribute('childId') + '" value="' + r[i].id + '" type="hidden" />');
						} else {
							r_id.push(r[i].id);
						}
					}
					r_text.push(r[i].name);
				}
				if (obj_id) {
					if (obj_id.tagName && obj_id.tagName == 'DIV') {						
						obj_id.innerHTML = r_id.join('');
					} else {
						obj_id.value = r_id.join(sep);
					}
				}
				if (obj_text) obj_text.value = r_text.join(sep);
			}
			return r;
		}
	}
	, choosePosition: function(f, initArgs) {
		//var obj = obj0;
		//var _row = jQuery(obj).parents("tr:first");
		var _initArgs = initArgs;
		if (!_initArgs && f && typeof(f) == 'object' && (f.id || f.text) ) {
			_initArgs = {id: f.id, text: f.text, sep: f.sep, max: f.max};
		}
		var max = _initArgs ? _initArgs.max : null;
		if (_initArgs) {
			if (typeof(_initArgs) == 'function') {
				_initArgs = _initArgs();
			} else if (typeof(_initArgs) == 'object' && (_initArgs.id && _initArgs.text) ) {
				var sep = _initArgs.sep ? _initArgs.sep : ',';
				var obj_id = _initArgs.id;
				var obj_text = _initArgs.text;
				if (obj_id && typeof(obj_id) == 'string') {
					var obj_id = document.getElementById(obj_id);
					if (obj_id.tagName && obj_id.tagName == 'DIV') {
						var tmp = [];
						jQuery(obj_id).find('input').each(function() {
							tmp.push(this.value);
						});
						obj_id = tmp;
					} else {
						obj_id = obj_id.value.split(sep);
					}
				}
				if (obj_text && typeof(obj_text) == 'string') obj_text = document.getElementById(obj_text).value.split(sep);
				_initArgs = [];
				for (var i=0; obj_id && i<obj_id.length; i++) {
					if (obj_id[i] || obj_text[i]) {
						_initArgs[i] = {id: obj_id[i], text: obj_text[i]};
					}
				}
			}
		}

		var url = Commons.getAppPath() + '/admin/org/position/!choose';
		var args = {_opener: window, _url: url, _title: '选择岗位', initArgs: _initArgs, max: max};
		var url_shell = this.getUrlShell();
		var r = Tools.showDialog(url_shell, args, 'dialogWidth:700px;dialogHeight:350px');
		if (r && f) {
			if (typeof(f) == 'function') {
				f(r);
			} else if (typeof(f) == 'object' && (f.id || f.text) ) {
				var obj_id = f.id;
				var obj_text = f.text;
				if (f.id && typeof(f.id) == 'string') obj_id = document.getElementById(f.id);
				if (f.text && typeof(f.text) == 'string') obj_text = document.getElementById(f.text);
				var sep = f.sep ? f.sep : ',';
				var r_id = [];
				var r_text = [];
				for (var i=0; i<r.length; i++) {
					if (obj_id) {
						if (obj_id.tagName && obj_id.tagName == 'DIV') {
							r_id.push('<input name="' + obj_id.getAttribute('childId') + '" value="' + r[i].id + '" type="hidden" />');
						} else {
							r_id.push(r[i].id);
						}
					}
					r_text.push(r[i].name);
				}
				if (obj_id) {
					if (obj_id.tagName && obj_id.tagName == 'DIV') {						
						obj_id.innerHTML = r_id.join('');
					} else {
						obj_id.value = r_id.join(sep);
					}
				}
				if (obj_text) obj_text.value = r_text.join(sep);
			}
			return r;
		}
	}
	//选择数据字典		多级select
	, chooseDict: function(dict, name, max, full, target) {
		var url = Commons.getAppPath() + '/metadata/choose?t=' + dict;
		var args = {_opener: window, _url: url, _title: '选择' + name, level_max: 3, max: max};
		var url_shell = this.getUrlShell();
		var r = Tools.showDialog(url_shell, args, 'dialogWidth:820px;dialogHeight:400px');
		var s = "";
		for (var i=0; r && i<r.length; i++) {
			//add_nature_entry(r[i].text);
			if (s != "") s += ";";
			if (full) {
				s += r[i].text;
			} else {
				var x = r[i].text.split("，");
				s += x[x.length - 1];
			}
		}
		if (target) {
			if (typeof(target) == "string") {
				document.getElementById(target).value = s;
			} else if (typeof(target) == "function") {
				target(r, s, full, true);
			}
		}
		return s;
	}
	//选择数据字典2		一级复选框(checkbox)或单选框(radio)
	, chooseDict_2: function(dict, name, max, full, target) {
		var url = Commons.getAppPath() + '/metadata/choose_2?t=' + dict;
		var args = {_opener: window, _url: url, _title: '选择' + name, level_max: 3, max: max};
		var url_shell = this.getUrlShell();
		var r = Tools.showDialog(url_shell, args, 'dialogWidth:270px;dialogHeight:400px');
		var s = "";
		for (var i=0; r && i<r.length; i++) {
			//add_nature_entry(r[i].text);
			if (s != "") s += ";";
			if (full) {
				s += r[i].text;
			} else {
				var x = r[i].text.split("，");
				s += x[x.length - 1];
			}
		}
		if (target) {
			if (typeof(target) == "string") {
				document.getElementById(target).value = s;
			} else if (typeof(target) == "function") {
				target(r, s, full, true);
			}
		}
		return s;
	}	, chooseColumn: function(args) {		var max = args.max;		var dmId = args.dmId;		if (dmId == undefined) dmId = null;		var url = Commons.getAppPath() + '/admin/column/!choose?x=0' + (dmId == null ? '' : '&dmId=' + dmId);		var dialog_args = {_opener: window, _url: url, _title: '选择栏目', initArgs: args.initDialog, max: max};		var url_shell = this.getUrlShell();		var r = Tools.showDialog(url_shell, dialog_args, 'dialogWidth:400px;dialogHeight:520px');		if (args.callback) {			return args.callback(args.sobj, r);		}		return r;	}
	, choose: function() {
		var r = [];
		var tableName = jQuery('#tableName').val();
		var procId = jQuery('#wf_procId').val();
		jQuery("[name='ids']:checked").each(function() {
			var entry = {id: this.value};
			var row = jQuery(this).parents("tr:first");
			var cells = row.find("td");
			cells.each(function() {
				entry.tableName = tableName;
				if (procId) entry.procId = procId;
				if (this.prop) {
					entry[this.prop] = jQuery(this).text();
				}
			});
			r.push( entry );
		});
		parent.returnValue = r;
		parent.close();
		return false;
	}
	, showLogRead: function(tn, tid) {
		var _appPath = Commons.getAppPath();
		var url = _appPath + "/logRead/list1?tn=" + tn + "&tid=" + tid;
		var args = {_opener: window, _url: url, _title: '查看签收记录'};
		var url_shell = this.getUrlShell();
		Tools.showDialog(url_shell, args, 'dialogWidth:570px;dialogHeight:450px', true);
		return false;
	}
	, getTemplate: function(m) {		/** 根据条件m返回模板 */   
		var _appPath = Commons.getAppPath();
		var url = _appPath + "/dmPaper/choose";
		var p = {json: '1', rnd: Math.random()};
		if (m) {
			for (var k in m) {
				p[k] = m[k];
			}
		}
		var resp = jQuery.ajax({
			url: url
			, async: false
			, dataType: 'json'
			, data: p
		});
		var list_template = JSON.parse(resp.responseText);
		//var _templateId = null;
		//var _template_key = document.getElementById("paperId");
		//if (list_template!=null && list_template.length == 1) {
		//	_templateId = list_template[0].id;
		//}
		return list_template;
	}
	, xmlHttp: function() {
		return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
	}
	, loadScript: function(url, _doc, typ, async) {		//动态加载script
		var oXmlHttp = Tools.xmlHttp() ;
		if ( !oXmlHttp ) {
			return ;
		}
		oXmlHttp.open( "GET", url, async ? true : false ) ;
		oXmlHttp.send( null ) ;
		var data = oXmlHttp.responseText;
		if (data) {
			var doc = _doc ? _doc : document;
			var head = doc.getElementsByTagName("head")[0] || doc.documentElement;
			var script = doc.createElement("script");
			script.type = typ ? typ : "text/javascript";
			script.text = data;
			head.insertBefore(script);
			head.removeChild( script );
		}
	}
	, Utf8ToUnicode: function(strUtf8) {
		var  bstr  =  "";   
		var  nTotalChars  =  strUtf8.length;   //  total  chars  to  be  processed.   
		var  nOffset  =  0;        //  processing  point  on  strUtf8   
		var  nRemainingBytes  =  nTotalChars;   //  how  many  bytes  left  to  be  converted   
		var  nOutputPosition  =  0;   
		var  iCode,  iCode1,  iCode2;        //  the  value  of  the  unicode.   
	
		while  (nOffset  <  nTotalChars) {
			iCode  =  strUtf8.charCodeAt(nOffset);
			if  ((iCode  &  0x80)  ==  0) {			//  1  byte.
				if  (  nRemainingBytes  <  1  )     //  not  enough  data
	          		break;
				bstr  +=  String.fromCharCode(iCode  &  0x7F);
				nOffset  ++;
				nRemainingBytes  -=  1;
	     	} else  if  ((iCode  &  0xE0)  ==  0xC0) {   //  2  bytes
				iCode1  =      strUtf8.charCodeAt(nOffset  +  1);
				if  (  nRemainingBytes  <  2  ||        //  not  enough  data
					(iCode1  &  0xC0)  !=  0x80  )        //  invalid  pattern
				{
					break;
				}
				bstr  +=  String.fromCharCode(((iCode  &  0x3F)  <<  6)  |  (iCode1 & 0x3F));
				nOffset  +=  2;
				nRemainingBytes  -=  2;
			} else  if  ((iCode  &  0xF0)  ==  0xE0) {  //  3  bytes
				iCode1  =      strUtf8.charCodeAt(nOffset  +  1);
				iCode2  =      strUtf8.charCodeAt(nOffset  +  2);
				if  (  nRemainingBytes  <  3  ||        //  not  enough  data
					(iCode1  &  0xC0)  !=  0x80  ||        //  invalid  pattern
					(iCode2  &  0xC0)  !=  0x80  )
				{
					break;
				}
				bstr  +=  String.fromCharCode(((iCode  &  0x0F)  <<  12) | 
					((iCode1  &  0x3F)  << 6)  |   
					(iCode2  &  0x3F));   
					nOffset  +=  3;   
				nRemainingBytes  -=  3;   
			} else             //  4  or  more  bytes  --  unsupported
	     		break;  
			}

	     if  (nRemainingBytes  !=  0) {
			//  bad  UTF8  string.
			return  "";
	     }
	     return  bstr;
	}
	, beginCheckFormModified: function() {
		window._form_data  = jQuery('form').serialize();
		window._form_data_need_check_modified = true;
	}
	, checkFormModified: function() {
		//window._form_data  = jQuery('form').serialize();
		//alert(window._form_data_need_check_modified);
		if (window._form_data_need_check_modified) {
			var _form_data2 = jQuery("form").serialize();
			//alert(window._form_data);
			//alert(_form_data2);
    		if (window._form_data != _form_data2) {
				return "表单已修改，您是否确认不保存数据？";
    		}
		}
		return;
	}
	, fmtSize : function(byte_size, sep) {	//返回GB、MB、KB、Byte
		var s = "";
		var max = 3;
		var d = 0;
		var i = 0;
		var unit = "";
		if (byte_size > 1024 * 1024 * 1024) {
			d = byte_size / (1024 * 1024 * 1024);
			unit = "GByte";
		} else if (byte_size > 1024 * 1024) {
			d = byte_size / (1024 * 1024);
			unit = "MByte";
		} else if (byte_size > 1024) {
			d = byte_size / (1024);
			unit = "KByte";
		} else {
			d = byte_size;
			unit = "Byte";
		}
		i = Math.floor(d);
		if ( (i+"").length >= max ) {
			s = i + sep + unit;
		} else {
			s = i + "." + Math.round( (d - i) * Math.pow(10, max) ) + sep + unit;
		}
		return s;
	}
	, getByteSize: function(s) {	/** 返回字符串的字节数 */
		var len = 0;
		for (var i = 0; i < s.length; i++) {
			var code = s.charCodeAt(i);
			if (code >= 0x0000 && code <= 0x00ff || code >= 0xff61 && code <= 0xff9f){ 
				len += 1;
			} else {
				len += 2;
			}
		}
		return len;
	}	, fitImgMaxSize: function(img, max_w, max_h, bNoRate, callback) {	//bNoRate=true不保持比例，否则保持比例，限制最大width/height		var img2 = new Image();		img2.onload = function() {			var w = img2.width;			var h = img2.height;			var w1 = w;			var h1 = h;			if (bNoRate) {				if (w > max_w) w1 = max_w;				if (h > max_h) h1 = max_h;				//img.width = w1;				//img.height = h1;			} else {				var rw = w/max_w;				var rh = h/max_h;				var r = rw;				if (rh>rw) r = rh;				if (r > 1) {					w1 = w / r;					h1 = h / r;				} else {					w1 = w;					h1 = h;				}			}			img.width = w1;			img.height = h1;			if (callback) callback({img: img, w: w, h: h, w1: w1, h1: h1});		}		img2.src = img.src;	}	, getBody: function() {  		return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body  	}
}

var MsgTools = {
	timer: null
	, wrtm: window	//rtm treee所在的window
	, list_online_user: []
	, lastTime: 0
	, lastTimeSound: 0
	, interval: 10000
	, intervalSound: 60 * 1000
	, startPopMsg: function(w) {
		MsgTools.wrtm = w ? w : window;
		MsgTools.refreshOnlineUser();
		if (!MsgTools.timer) {
			MsgTools.timer = setInterval(MsgTools.refreshPopMsg, MsgTools.interval);
		}
	}
	, stopPopMsg: function() {
		if (MsgTools.timer)
			clearInterval(MsgTools.timer);
		MsgTools.wrtm = null;
	}
	, refreshPopMsg: function() {
		try {
			MsgTools.refreshOnlineUser();
			MsgTools.popupNewMsg();
		} catch (e) {}
	}
	, refreshOnlineUser: function() {
		var url0 = Commons.getAppPath();
		var url = url0 + '/user/rtm_online?json=1&rnd=' + Math.random();
		//var url = url0 + '/msg/list';
		var r = jQuery.getJSON(url, {json: 1, rnd: Math.random()}, function(data) {
			if (!MsgTools.wrtm) return;
			if (MsgTools.wrtm && MsgTools.wrtm.item_on) {
				if (MsgTools.wrtm.item_on.childNodes) {
					var size = MsgTools.wrtm.item_on.childNodes.length;
					for (var i=0; i < size; i++) {
						try {
							MsgTools.wrtm.item_on.childNodes[0].remove();
						} catch (e) {}
					}
				}
			}
			for (var i=0; MsgTools.list_online_user != null && i < MsgTools.list_online_user.length; i++) {
				var item = eval('MsgTools.wrtm.item_' + MsgTools.list_online_user[i].dept.id + '_' + MsgTools.list_online_user[i].user.id);
				if (item) {
					MsgTools.wrtm.jQuery('#' + item.id + '-icon').attr("src", Commons.getSkin() + '/xtree/images/user2_0.gif' );
				}
			}
			if (MsgTools.wrtm.refreshOnline) {
				MsgTools.wrtm.refreshOnline(data);
			}
			var map_tmp = {};
			for (var i=0; data!=null && i<data.length; i++) {
				var item = eval('MsgTools.wrtm.item_' + data[i].dept.id + '_' + data[i].user.id);
				if (item) {
					MsgTools.wrtm.jQuery('#' + item.id + '-icon').attr("src", Commons.getSkin() + '/xtree/images/user2.gif' );
				}
				if (MsgTools.wrtm.item_on && map_tmp['user_' + data[i].user.id] == null) {
					var tmp = new MsgTools.wrtm.WebFXTreeItem(data[i].user.cnname, null);
					tmp.icon = MsgTools.wrtm.webFXTreeConfig.resPath + 'user2.gif';
					tmp.onclick = "MsgTools.sendmsg(" + data[i].user.id + ")";
					MsgTools.wrtm.item_on.add(tmp);
					map_tmp['user_' + data[i].user.id] = 1;
				}
			}
			if (MsgTools.wrtm.item_on) {
				try {
					MsgTools.wrtm.item_on.expand();
				} catch (e) {}
			}
			MsgTools.list_online_user = data;
		});
	}
	, getMsgPopwin: function() {
		if (!window.pop_win) {
			window.pop_win = document.createElement('DIV');
			pop_win.id="dialog_popupmsg";
			pop_win.className = "dialog_modalless";
			pop_win.title = '<span style="color:red; font-size: 12px;">您有新短消息：</span>';
			document.appendChild(pop_win);
			jQuery(pop_win).dialog({
				autoOpen: false
				, width: 200
				, resizable: false
				//, position: 'right'
				, position: ['right', 'bottom']
				//, height: 400
				//, modal: true	
			});
		}
		return window.pop_win;
	}
	, showMsgPopwin: function() {
		MsgTools.closeMsgPopwin();
		jQuery(pop_win).dialog('open');
	}
	, closeMsgPopwin: function() {
		jQuery(pop_win).dialog('close');
	}
	, readMsg: function(refId) {
		var url0 = Commons.getAppPath();
		var url = url0 + '/msg/read';
		var r = jQuery.getJSON(url, {'model.id': refId, json: 1, rnd: Math.random()}, function(data) {
			//if (data && data.msg)
			//jQuery('#msg_pop_' + refId).hide();
			MsgTools.refreshPopMsg();
		});
	}
	, sendmsg: function(uid) {
		var url0 = Commons.getAppPath();
		var _params = [];
		_params[_params.length] = "recids=" + uid;
		var _pstr = _params.join("&");
		var url = url0 + '/msg/edit';
		if (_pstr) url += "?" + _pstr;
		var args = {_opener: window, _url: url, _title: '发送消息'};
		var url_shell = url0 + '/js/shell.jsp';
		var r = Tools.showDialog(url_shell, args, 'dialogWidth:670px;dialogHeight:450px');
		
		return false;
	}
	, viewMsg: function(refId) {
		var url0 = Commons.getAppPath();
		var _params = [];
		_params[_params.length] = "model.id=" + refId;
		var _pstr = _params.join("&");
		var url = url0 + '/msg/read';
		if (_pstr) url += "?" + _pstr;
		var args = {_opener: window, _url: url, _title: '阅读消息'};
		var url_shell = url0 + '/js/shell.jsp';
		var r = Tools.showDialog(url_shell, args, 'dialogWidth:670px;dialogHeight:450px');
		//jQuery('#msg_pop_' + refId).hide();
		MsgTools.refreshPopMsg();
		return false;
	}
	, popupNewMsg: function() {
		var url0 = Commons.getAppPath();
		var url = url0 + '/msg/list';
		var r = jQuery.getJSON(url, {msg: 1, refType: 'rec', status: 'rec', json: 1, rnd: Math.random()}, function(data) {
			jQuery(pop_win).html('');
			var html = '';
			for (var i=0; data!=null && i<data.length; i++) {
				html += MsgTools.getMsgHTML(data[i]);
			}
			if (html) {
				html += MsgTools.getAlertSoundHTML();
				jQuery(pop_win).html(html);
				MsgTools.showMsgPopwin();
				MsgTools.lastTime = new Date().getTime();
			} else {
				MsgTools.closeMsgPopwin();
			}
		});
	}
	, closeMsgPopwin2: function(refId) {
		//设置已读标记
		MsgTools.readMsg(refId);
		//jQuery('#msg_pop_' + refId).hide();
		//jQuery(pop_win).dialog('close');
	}
	, getAlertSoundHTML: function() {
		var t = new Date().getTime();
		if (!MsgTools.lastTimeSound || t - MsgTools.lastTimeSound > MsgTools.intervalSound) {
			MsgTools.lastTimeSound = t;
			//return '<bgsound src="' + Commons.getSkin() + '/sound/mail.wav" border=0 />';
			return '<embed src="' + Commons.getSkin() + '/sound/mail.wav" autostart=true width=0 height=0></embed>';
		} else {
			return '';
		}
	}
	, getMsgHTML: function(msg) {
		var r = [];
		r.push(' <table id="msg_pop_');
		r.push(msg.ref.id);
		r.push('" width=100% height=120 width=200 border="0" cellspacing="0" cellpadding="0" bgcolor="#E0E9F8" > \n');
		r.push('<tr>\n');
		r.push('	<td width="170" height="24" valign="middle" style="filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=, StartColorStr=#E0E9F8, EndColorStr=#FFFFFF);font:12px;color:#1F336B;">');
		r.push(msg.msg.sendName);
		r.push('(');
		r.push(msg.ref.createTime.substring(5, 16));
		r.push(')：</td>\n');
		r.push('	<td valign="middle" align="right" style="filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=, StartColorStr=#E0E9F8, EndColorStr=#FFFFFF);">  <span style="cursor:pointer;color:#728EB8; font:bold 13px;" onclick="MsgTools.closeMsgPopwin2(');
		r.push(msg.ref.id);
		r.push(');" onmouseover="style.color=\'#455690\';" onmouseout="style.color=\'#728EB8\';">X</span>&nbsp;  </td>\n');
		r.push('</tr>\n');
		r.push('<tr>\n');
		r.push('	<td colspan=2 style="border-left:1px solid #728EB8; border-top:1px solid #728EB8; border-bottom:1px solid #B9C9EF; border-right:1px solid #B9C9EF; background:#E0E9F8; padding:10px; overflow:hidden; text-align:center; filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=\'#E0E9F8\', EndColorStr=\'#FFFFFF\');font:12px;color:#1F336B;line-height: 20px;">\n');
		r.push('<a style="cursor:hand;" onclick="MsgTools.viewMsg(');
		r.push(msg.ref.id);
		r.push(')">');
		r.push(msg.msg.title);
		r.push('</a>');
		r.push('	</td>\n');
		r.push('</tr>\n');
		r.push('</table>\n');
		return r.join('');
	}

}var CookieUtils = {	getCookie: function(name) {		var start = document.cookie.indexOf( name + "=" );		var len = start + name.length + 1;		if ( !start && name != document.cookie.substring( 0, name.length ) ) {			return null;    		}		if ( start == -1 ) return null;		var end = document.cookie.indexOf( ';', len );		if ( end == -1 ) end = document.cookie.length;		return unescape( document.cookie.substring( len, end ) );	} 	, setCookie: function( name, value, expires, path, domain, secure ) {		var today = new Date();		today.setTime( today.getTime() );    		if ( expires ) {			expires = expires * 1000 * 60 * 60 * 24;    		}		var expires_date = new Date( today.getTime() + (expires) );		document.cookie = name+'='+escape( value )			+ ( expires ? ';expires='+expires_date.toGMTString() : '' ) 			+ ( path ? ';path=' + path : '' ) 			+ ( domain ? ';domain=' + domain : '' ) 			+ ( secure ? ';secure' : '' );	}	, deleteCookie: function( name, path, domain ) {		if ( getCookie( name ) ) 			document.cookie = name + '=' 				+ ( path ? ';path=' + path : '') 				+ ( domain ? ';domain=' + domain : '' ) 				+ ';expires=Thu, 01-Jan-1970 00:00:01 GMT';	}	}/** 图像filter */var Image_Filter = new Array();for (var i=24; i>0 ; i--) {	Image_Filter[Image_Filter.length] = ("revealTrans(duration=1,transition=" + i + ")");	}Image_Filter[Image_Filter.length] = ("BlendTrans(duration=1)-");Image_Filter[Image_Filter.length] = ("progid:DXImageTransform.Microsoft.Pixelate(,enabled=false,duration=2,maxSquare=25)");Image_Filter[Image_Filter.length] = ("progid:DXImageTransform.Microsoft.Fade(duration=2,overlap=0)");Image_Filter[Image_Filter.length] = ("progid:DXImageTransform.Microsoft.GradientWipe(duration=2,gradientSize=0.25,motion=forward )");Image_Filter[Image_Filter.length] = ("progid:DXImageTransform.Microsoft.Stretch(duration=2,stretchStyle=PUSH)");Image_Filter[Image_Filter.length] = ("progid:DXImageTransform.Microsoft.Wheel(duration=2,spokes=16)");Image_Filter[Image_Filter.length] = ("progid:DXImageTransform.Microsoft.RandomDissolve(duration=2)");Image_Filter[Image_Filter.length] = ("progid:DXImageTransform.Microsoft.Spiral(duration=2,gridSizeX=50,gridSizeY=50)");Image_Filter[Image_Filter.length] = ("progid:DXImageTransform.Microsoft.Slide(duration=2,bands=1,slideStyle=SWAP)");Image_Filter[Image_Filter.length] = ("progid:DXImageTransform.Microsoft.RadialWipe(duration=2,wipeStyle=CLOCK)");
function PicInfo(_cont, _interval, _target) {	this.cont = _cont;	this.interval = _interval ? _interval : 5000;	this.target = _target ? ' target="' + _target + '"' : '';	this.uid = Math.floor(Math.random() * 1000000000);	this.pics = new Array();	this.index = 0;	//当前索引	this.maxLeng = 46;	this.classPrev = "picInfo";	this.morelink = false;}PicInfo.prototype.add = function(img, title, href) {	var image = new Image();	image.src = img;	this.pics[this.pics.length] ={img: img, title: title, href: href, image: image};	//alert(22);	//alert(this.key);}PicInfo.prototype.writeTo = function() {	jQuery(this.cont).html(this.getHTML());}PicInfo.prototype.write = function() {	document.write(this.getHTML());}PicInfo.prototype.getTitleWithHref = function (idx) {	return '<a' + this.target + ' title="' + this.pics[idx].title + '" href="' + this.pics[idx].href + '">' 		+ Commons.cutString(this.pics[idx].title, this.morelink != null ? this.maxLeng - 10 : this.maxLeng, '..') + '</a>';}PicInfo.prototype.getHTML = function () {	if (!this.pics.length) return '';	if (!this.key) this.key = Commons.getObjectKey(window, this);	var s = '<div id="picInfo_' + this.uid + '" class="' + this.classPrev + '">\n'		+ '<div class="' + this.classPrev + 'Pic"><a' + this.target + ' title="' + this.pics[0].title + '" href="' + this.pics[0].href + '"><img border="0" src="' + this.pics[0].img + '"/></a></div>\n'	//pic cont		+ '<div class="' + this.classPrev + 'NumCont">';	//pic num index cont	for (var i=0; i<this.pics.length; i++) {		s += '<span onmouseover="' + this.key + '.playTo(' + i + ')" class="' + this.classPrev + 'Num ' + this.classPrev + (i==0?'NumOn':'NumOff') + '">' + (i+1) + '</span>';	}	s += '</div>\n'		+ '<div class="' + this.classPrev + 'Title">' + this.getTitleWithHref(0) 		+ '</div><div class="' + this.classPrev + 'More"><a href="' + this.morelink + '">更多&gt;&gt;</a></div></div>\n'	;	//alert(s);	return s;}
PicInfo.prototype.playNext = function() {	this.index = (this.index + 1) % this.pics.length;	this.playTo(this.index);	//alert(this.timer);}//clearIntervalPicInfo.prototype.playTo = function (idx) {//alert(idx);	if (this.timer) clearTimeout(this.timer);	this.index = idx;	//if (this.timer) clearInterval(this.timer);	var cont = this.cont ? jQuery(this.cont) : jQuery('#picInfo_' + this.uid);	if (!cont.length || cont.length > 1) cont = jQuery('#picInfo_' + this.uid);	var image = cont.find('.' + this.classPrev + 'Pic img');	var currentFliter	= Math.floor(Math.random() * Image_Filter.length);	image.get(0).style.filter = Image_Filter[currentFliter];	image.get(0).filters(0).apply();			image.get(0).src = this.pics[this.index].img;	image.get(0).filters(0).play(1);	cont.find('.' + this.classPrev + 'Pic a').attr('href', this.pics[this.index].href);	cont.find('.' + this.classPrev + 'Pic a').attr('title', this.pics[this.index].title);	var picnum = cont.find('.' + this.classPrev + 'Num');	cont.find('.' + this.classPrev + 'NumOn').removeClass(this.classPrev + 'NumOn').addClass(this.classPrev + 'NumOff');	jQuery(picnum.get(this.index)).removeClass(this.classPrev + 'NumOff').addClass(this.classPrev + 'NumOn');	cont.find('.' + this.classPrev + 'Title').html( this.getTitleWithHref(this.index) );		var player = this;	player.timer = setTimeout(function() {player.playNext()}, player.interval);}PicInfo.prototype.play = function () {	var player = this;	player.timer = setTimeout(function() {player.playNext()}, player.interval);}function JsMarquee(_maq, _interval) {	this.maq = _maq;	this.interval = _interval;}JsMarquee.prototype.play = function () {	var cont = jQuery(this.maq);	if (cont.length == 0) return;	this.m0 = cont.get(0);	var ms = cont.find(this.maq + '_scroll');	var m1 = cont.find(this.maq + '_1');	var m2 = cont.find(this.maq + '_2');	if (m1.length == 0) return;		var w0 = cont.attr('offsetWidth');	var w1 = m1.attr('offsetWidth');	var n = parseInt(w0*2 / w1) + 1;	if (m2.length == 0) {		for (var i=0; i<n-1; i++) {			ms.append('<div class="' + this.maq.substring(1) + '_2' + '"></div>');			m2 = cont.find(this.maq + '_2');			m2.html(m1.html());		}	} else {		m2.html(m1.html());	}	this.ms = ms.get(0);	this.m1 = m1.get(0);	this.m2 = m2.get(0);	var player = this;	player.timer = setInterval(function() {player.playNext()}, player.interval);	this.m0.onmouseover=function() {clearInterval(player.timer)};    this.m0.onmouseout=function() {player.timer = setInterval(function() {player.playNext()}, player.interval)};}JsMarquee.prototype.playNext = function () {	if (this.m2 == null || this.m2 == undefined) return;    if(this.m2.offsetWidth - this.m0.scrollLeft <= 0){		this.m0.scrollLeft -= this.m1.offsetWidth;    } else {		this.m0.scrollLeft++;    }}function PageCtrl(_start, _max, _count, _url, _colId) {    	this.start = _start;	this.max = _max;	this.count = _count;	this.url = _url;	this.colId = _colId;	this.jsName = 'pc';	this.refreshPage();}   PageCtrl.prototype.write = function() {	document.write(this.getHTML());}PageCtrl.prototype.getHTML = function() {	var s = '<div class="page_ctrl">'		+ '<span class="page_ctrl_count">共' + this.pageCount + '页</span>'		+ '<span class="page_ctrl_page">当前第' + (this.pageIndex + 1) + '页</span>'		+ '<span class="page_ctrl_first" onclick="' + this.jsName + '.firstPage(this)">首页</span>' 		+ '<span class="page_ctrl_prev" onclick="' + this.jsName + '.prevPage(this)">上一页</span>'		+ '<span class="page_ctrl_next" onclick="' + this.jsName + '.nextPage(this)">下一页</span>' 		+ '<span class="page_ctrl_last" onclick="' + this.jsName + '.lastPage(this)">末页</span>' 		+ '</div>';	return s;}PageCtrl.prototype.showView = function() {	if (!this.url) {		this.url = Commons.getAppPath() + '/!listCms?col=' + this.colId;	}	var resp = jQuery.ajax({		url: this.url		, type: "GET"		, async: false		, dataType: 'json'		, data: {start: this.start, max: this.max, rnd: Math.random}	});	var r = eval("(" + resp.responseText + ")");	if (r) {		this.count = r.count;		this.refreshPage();	}	var pc_cont = jQuery('.page_ctrl:first');	if (this.eobj) {		pc_cont = jQuery(this.eobj).parents('.page_ctrl:first');	}	pc_cont.find('.page_ctrl_count').html('共' + (this.pageCount) + '页');	pc_cont.find('.page_ctrl_page').html('当前第' + (this.pageIndex + 1) + '页');	if (window.showView) {		window.showView(r, this);	}}PageCtrl.prototype.refreshPage = function() {	if (!this.url) {		this.url = Commons.getAppPath() + '/!listCms?col=' + this.colId;	}	if (this.max == 0) {		this.pageIndex = 0;		this.pageCount = 1;	} else {		this.pageIndex = parseInt(this.start / this.max);		this.pageCount = parseInt(this.count / this.max);		if (this.count % this.max != 0) this.pageCount += 1;	}}PageCtrl.prototype.getPageStart = function(p) {	var s = p * this.max;	if (s > this.count - 1) {		s = (this.pageCount - 1) * this.max;	}	return s;}PageCtrl.prototype.firstPage = function(obj) {	this.eobj = obj;	this.start = 0;	this.pageIndex = 0;	this.showView();}PageCtrl.prototype.prevPage = function(obj) {	this.eobj = obj;	if (this.start - this.max > -1) {		this.start -= this.max;		this.pageIndex -= 1;	} else {		this.start = 0;		this.pageIndex = 0;	}	this.showView();}PageCtrl.prototype.lastPage = function(obj) {//alert(this.pageIndex);	this.eobj = obj;	this.pageIndex = this.pageCount - 1;	this.start = this.getPageStart(this.pageIndex);	this.showView();}PageCtrl.prototype.nextPage = function(obj) {	this.eobj = obj;	if (this.start + this.max < this.count) {		this.start += this.max;		this.pageIndex += 1;		this.showView();	}}
