﻿// 这里都是公用函数，挺多的...
var
// 判断浏览器
brower = function() {
	var ua = navigator.userAgent.toLowerCase();
	var os = new Object();
	os.isFirefox = ua.indexOf ('gecko') != -1;
	os.isOpera = ua.indexOf ('opera') != -1;
	os.isIE = !os.isOpera && ua.indexOf ('msie') != -1;
	os.isIE7 = os.isIE && ua.indexOf ('7.0') != -1;
	return os;
},
// 生成元素到refNode
appendElement = function(tagName, Attribute, strHtml, refNode) {
	var cEle = document.createElement(tagName);
	// 属性值
	for (var i in Attribute){
		cEle.setAttribute(i, Attribute[i]);
	}
	cEle.innerHTML = strHtml;
	
	refNode.appendChild(cEle);
	return cEle;
},
// 获取元素坐标
getCoords = function(node){
	var x = node.offsetLeft;
	var y = node.offsetTop;
	var parent = node.offsetParent;
	while (parent != null){
		x += parent.offsetLeft;
		y += parent.offsetTop;
		parent = parent.offsetParent;
	}
	return {x: x, y: y};
},
// 事件操作(可保留原有事件)
eventListeners = [],
findEventListener = function(node, event, handler){
	var i;
	for (i in eventListeners){
		if (eventListeners[i].node == node && eventListeners[i].event == event && eventListeners[i].handler == handler){
			return i;
		}
	}
	return null;
},
myAddEventListener = function(node, event, handler){
	if (findEventListener(node, event, handler) != null){
		return;
	}
	if (!node.addEventListener){
		node.attachEvent('on' + event, handler);
	}else{
		node.addEventListener(event, handler, false);
	}
	eventListeners.push({node: node, event: event, handler: handler});
},
removeEventListenerIndex = function(index){
	var eventListener = eventListeners[index];
	delete eventListeners[index];
	if (!eventListener.node.removeEventListener){
		eventListener.node.detachEvent('on' + eventListener.event,
		eventListener.handler);
	}else{
		eventListener.node.removeEventListener(eventListener.event,
		eventListener.handler, false);
	}
},
myRemoveEventListener = function(node, event, handler){
	var index = findEventListener(node, event, handler);
	if (index == null) return;
	removeEventListenerIndex(index);
},
cleanupEventListeners = function(){
	var i;
	for (i = eventListeners.length; i > 0; i--){
		if (eventListeners[i] != undefined){
			removeEventListenerIndex(i);
		}
	}
};
var	_brower = brower();
//if(!Browser.isNS6){ //firefox innerText define
//  HTMLElement.prototype.__defineGetter__( "innerText", 
//  function(){ 
//  return this.textContent; 
//  } 
//  ); 
//  HTMLElement.prototype.__defineSetter__( "innerText", 
//  function(sText){ 
//  this.textContent=sText; 
//  } 
//  ); 
//}
Date.prototype.DateDiff = function(interval,endTime)
{
    switch (interval)
    {
        //计算毫秒差
        case "ms": return Math.abs(parseInt((endTime-this)));
        //计算秒差
        case "s":  return Math.abs(parseInt((endTime-this)/1000));
        //计算分差
        case "n":  return Math.abs(parseInt((endTime-this)/60000));
        //计算時差
        case "h":  return Math.abs(parseInt((endTime-this)/3600000));
        //计算日差
        case "d":  return Math.abs(parseInt((endTime-this)/86400000));
        //计算週差
        case "w":  return Math.abs(parseInt((endTime-this)/(86400000*7)));
        //计算月差
        case "m":  return Math.abs((endTime.getMonth()+1)+((endTime.getFullYear()-this.getFullYear())*12)-(this.getMonth()+1));
        //计算年差
        case "y":  return Math.abs(endTime.getFullYear()-this.getFullYear());
        //输入有誤
        default:  return undefined;
    }
}
/* 粘贴文本到剪贴板 */
function CopyTextToClipboard(txt) {
    if(window.clipboardData) {
       window.clipboardData.clearData();
       window.clipboardData.setData('Text', txt);
       return true;
    } else if(navigator.userAgent.indexOf('Opera') != -1) {
        window.location = txt;
        return true;
    } else if (window.netscape) {
        try {
            netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
        } catch (e) {
            alert('您的firefox安全限制限制您进行剪贴板操作，请打开about:config 将 \"signed.applets.codebase_principal_support\"设置为\"true\"之后重试');
            return false;
        }
        var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
        if (!clip) return false;
        var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
        if (!trans) return false;
        trans.addDataFlavor('text/unicode');
        var str = new Object();
        var len = new Object();
        var str = Components.classes['@mozilla.org/supports-string;1'].createInstance(Components.interfaces.nsISupportsString);
        var copytext = txt;
        str.data = copytext;
        trans.setTransferData('text/unicode',str,copytext.length*2);
        var clipid = Components.interfaces.nsIClipboard;
        if (!clip) return false;
        clip.setData(trans,null,clipid.kGlobalClipboard);
        return true;
    }
}
/* 粘贴对象到剪贴板 */
//function CopyTextToClipboard(src,objid) {
//    var rng = document.body.createTextRange(); 
//    rng.moveToElementText(document.getElementById(objid)); 
//    rng.scrollIntoView(); 
//    rng.select(); 
//    rng.execCommand("Copy"); 
//    rng.collapse(false);
//    window.scrollTo(0,0);
////    rng.moveStart('character',rng.htmlText.length);
////    rng.collapse(true);   
////    rng.select();
//    //alert("内容复制成功，请使用 Ctrl+V 粘贴。");
//    popHint(src, '内容复制成功，请使用 Ctrl+V 粘贴。', {_event : 'click'});
//}
/*字符串全部替换*/
String.prototype.replaceAll = function(s1,s2){ return this.replace(new RegExp(s1,"gm"),s2);}
/*处理首行空２格*/
function FristLine2Space(text){
    return text.replaceAll("&nbsp;&nbsp;&nbsp; ","　　");
}
/* 去除HTML格式 */
function RemoveHTML( strHtml ) {
    //var regEx = /<[^>]*>/g; 
    //return strText.replace(regEx, "");
    var divTemp = document.createElement("DIV");
    divTemp.innerHTML = strHtml;

    if (_brower.isIE){
        return divTemp.innerText;
    }else{
        return divTemp.textContent;
    }
} 
/* 去除<A>标签 */
function RemoveA ( strText )
{
    var regEx = /<a[^>]*>[^>]*<[^>]a>/g; 
    return strText.replace(regEx, ""); 
}
/* 去除<A><H>标签 */
function RemoveAH ( strText ){
    var regEx = /(<a[^>]*>)|(<[^>]a>)/g; 
    return strText.replace(regEx, ""); 
}
function Html2Text(strHtml){
    var divTemp = document.createElement("DIV");
    divTemp.innerHTML = strHtml;
    return divTemp.inneerText;
}
function Nbsp2Space(strHtml){
    var regEx = /\&nbsp\;/g; 
    return strHtml.replace(regEx, " "); 
}

//去左空格; 
function ltrim(s){
    return Nbsp2Space(s).replace( /^\s*/, ""); 
} 
//去右空格; 
function rtrim(s){
    return Nbsp2Space(s).replace( /\s*$/, ""); 
} 
//去左右空格; 
function trim(s){ 
    return rtrim(ltrim(s)); 
}

/*动态加载CSS文件
fileName:不带路径的文件名 browerVer:浏览器版本
*/
function LoadCssFile(fileName){
  var fileref=document.createElement("link");
  fileref.setAttribute("rel", "stylesheet");
  fileref.setAttribute("type", "text/css");
  fileref.setAttribute("href", fileName);
  if (typeof fileref!="undefined") {
    HeadElement.appendChild(fileref) 
  }
}
/*动态加载JS文件
fileName:不带路径的文件名 browerVer:浏览器版本
*/
var HeadElement = document.getElementsByTagName('head').item(0);
function LoadJsFile(fileName){
  var fileref=document.createElement('script');//创建标签 
  fileref.setAttribute("type","text/javascript");//定义属性type的值为text/javascript 
  fileref.setAttribute("src", fileName);//文件的地址
  if (typeof fileref!="undefined"){
    HeadElement.appendChild(fileref);
  }
}
/* 重载setTimeout支持带参数 eg: window.setTimeout(test,1000,'fason'); */
var _st = window.setTimeout;
window.setTimeout = function(fRef, mDelay) {
if(typeof fRef == 'function'){  
  var argu = Array.prototype.slice.call(arguments,2);  
  var f = (function(){ fRef.apply(null, argu); });  
  return _st(f, mDelay); } 
  return _st(fRef,mDelay);
}
/* 
    功能：修改 window.setTimeout，使之可以传递参数和对象参数 
    使用方法: 1。 setTimeout(回调函数, 时间, 参数1, ..., 参数n); 
             2。 setTimeout([对象, 回调函数], 时间, 参数, ..., 参数n); 
*/ 
//var _WINDOW_SETTIMEOUT_ = window.setTimeout; 
//window.setTimeout = function(){ 
//    var obj = null, func = null; 
//    if(callback instanceof Array){ 
//        obj = callback[0]; 
//        if(callback[1] instanceof Function){ 
//            func = callback[1]; 
//        }else{ 
//            func = eval("obj." + callback[1]); 
//            if(!(func instanceof Function)) return null; 
//        } 
//    }else{ 
//        func = callback; 
//    } 
//    if (func instanceof Function){ 
//        var args = Array.prototype.slice.call(arguments, 2); 
//        var f = function(){ 
//            func.apply(obj, args); 
//        } 
//        return _WINDOW_SETTIMEOUT_(f, timeout); 
//    } 
//    return _WINDOW_SETTIMEOUT_(func, timeout); 
//}
/* 重载浏览器对话框 */
var _alert = window.alert;
var Alert = window.alert;
window.alert = extAlert;
var _confirm = window.confirm;
function extAlert(msg,title){
if(!_brower.isIE){
_alert(msg);
return false;
}
    if (title==null){
        ymPrompt.alert("<div style='text-align:left; margin: 2 2 2 2;'>"+msg+"</div>",400,200,'系统操作提示:',null);
    }else{
        ymPrompt.alert("<div style='text-align:left; margin: 2 2 2 2;'>"+msg+"</div>",400,200,title,null);
    }
}
function extConfirm(msg,title,callbackhandler){
    if (title==null){
    ymPrompt.confirmInfo(msg,400,200,'操作确认提示:',callbackhandler);
    return false;
    }else{
    ymPrompt.confirmInfo(msg,400,200,title,handler);
    return false;
    }
}
function handler(tp){
    if(tp=='ok'){ return true; }
    if(tp=='cancel'){ return false; }
    if(tp=='close'){ return false; }
}
function CONFIRM_WIN(msg,title,callbackhandler){
    if (title==null){
    ymPrompt.confirmInfo({width: 400,height: 200,message:msg,title:'操作确认提示',handler:callbackhandler});
    return false;
    }else{
    ymPrompt.confirmInfo(msg,400,200,title,callbackhandler);
    return false;
    }
}
function UPLOAD_PROGRESS_WAIT(){
if(!_brower.isIE){
return false;
}
    ymPrompt.win({width: 400,height: 185, icoCls:"ymPrompt_save",message:"<div style='text-align:left; margin: 5 5 5 5;'>温馨提示：<br/>由于网速等原因，上传过程中可能稍有延迟，请耐心等候。上传成功后会自动返回，若长时间没有反应，可点右上角X按钮返回，若再次保存仍不成功，建议您手工保存资料以免丢失，并联系网站管理员。</div><br/>正在保存数据, 请稍候..<br/><img src='/Images/loading_bar.gif' width='120px' height='16px' />",title:'上传文件'});
    return false;
}
function UPLOAD_SUCCESS_WAIT(){
if(!_brower.isIE){
return false;
}
    ymPrompt.win({width: 400,height: 185, icoCls:"ymPrompt_wait",message:"<div style='text-align:left; margin: 10 5 5 10;'>温馨提示：<br/>您的文件已经保存到服务器! 系统将自动返回列表页以查看发布结果。<br/>若长时间没有反应，可点右上角X按钮返回。</div><br/>正在返回列表页, 请稍候..<br/><img src='/Images/loading_bar.gif' width='120px' height='16px' />",title:'发布成功'});
    return false;
}
function UPLOAD_FAIL_WAIT(){
if(!_brower.isIE){
return false;
}
    ymPrompt.errorInfo({width: 400,height: 185, icoCls:"ymPrompt_wait",message:"<div style='text-align:left; margin: 5 5 5 5;'>温馨提示：<br/>请检查网络连接或网络速度是否正常!<br/>确定之后请再试一次，如果多次尝试均失败，请点此<a href=mailto:admin@ttwdev.com>联系管理员</a></div><br/>请点击确定关闭本提示窗口",title:'发布失败'});
    return false;
}

function SAVE_PROGRESS_WAIT(){
if(!_brower.isIE){
return false;
}
    ymPrompt.win({width: 400,height: 185, icoCls:"ymPrompt_save",message:"<div style='text-align:left; margin: 5 5 5 5;'>温馨提示：<br/>由于网速等原因，发布过程中可能稍有延迟，请耐心等候。保存成功后会自动返回，若长时间没有反应，可点右上角X按钮返回，若再次保存仍不成功，建议您手工保存资料以免丢失，并联系网站管理员。</div><br/>正在保存数据, 请稍候..<br/><img src='/Images/loading_bar.gif' width='120px' height='16px' />",title:'发布数据'});
    return false;
}
function SAVE_SUCCESS_WAIT(){
if(!_brower.isIE){
return false;
}
    ymPrompt.win({width: 400,height: 185, icoCls:"ymPrompt_wait",message:"<div style='text-align:left; margin: 10 5 5 10;'>温馨提示：<br/>您的数据已经保存到服务器! 系统将自动返回列表页以查看发布结果。<br/>若长时间没有反应，可点右上角X按钮返回。</div><br/>正在返回列表页, 请稍候..<br/><img src='/Images/loading_bar.gif' width='120px' height='16px' />",title:'发布成功'});
    return false;
}
function SAVE_FAIL_WAIT(){
if(!_brower.isIE){
return false;
}
    ymPrompt.errorInfo({width: 400,height: 185, icoCls:"ymPrompt_wait",message:"<div style='text-align:left; margin: 5 5 5 5;'>温馨提示：<br/>请检查网络连接或网络速度是否正常!<br/>确定之后请再试一次，如果多次尝试均失败，请点此<a href=mailto:admin@ttwdev.com>联系管理员</a></div><br/>请点击确定关闭本提示窗口",title:'发布失败'});
    return false;
}
function DELETE_PROGRESS_WAIT(){
if(!_brower.isIE){
return false;
}
    ymPrompt.win({width: 400,height: 185, icoCls:"ymPrompt_save",message:"<div style='text-align:left; margin: 5 5 5 5;'>温馨提示：<br/>删除成功后会自动返回，若长时间没有反应，可点右上角X按钮返回继续操作。</div><br/>正在删除数据, 请稍候..<br/><img src='/Images/loading_bar.gif' width='120px' height='16px' />",title:'删除数据'});
    return false;
}
function DELETE_SUCCESS_WAIT(){
if(!_brower.isIE){
return false;
}
    ymPrompt.win({width: 400,height: 185, icoCls:"ymPrompt_wait",message:"<div style='text-align:left; margin: 10 5 5 10;'>温馨提示：<br/>本条数据已经删除。<br/>为保证资料安全，您可以在[ 回收站 ]选择恢复或彻底清除。<br/></span></div><br/>现在自动返回列表页以查看更新结果, 请稍候...<br/><img src='/common/MessageBox/Images/loading_bar.gif' width='120px' height='16px' />",title:'删除成功'});
    return false;
}
function DELETE_FAIL_WAIT(){
if(!_brower.isIE){
return false;
}
    ymPrompt.errorInfo({width: 400,height: 185, icoCls:"ymPrompt_wait",message:"<div style='text-align:left; margin: 5 5 5 5;'>温馨提示：<br/>请检查网络连接或网络速度是否正常!<br/>确定之后请再试一次，如果多次尝试均失败，请点此<a href=mailto:admin@ttwdev.com>联系管理员</a>...",title:'删除失败'});
    return false;
}
function CLOSE_MSGBOX(){
if(!_brower.isIE){
return false;
}
    ymPrompt.doHandler("close");
    return false;
}
function ERROR(msg,title){
if(!_brower.isIE){
return false;
}
    if (title==null){
        ymPrompt.errorInfo(msg,400,200,'系统错误提示',null);
    }else{
        ymPrompt.errorInfo(msg,400,200,title,null);
    }
}
/*无提示关闭IE窗口*/
function closeWindowWithoutConfirm(){
    window.opener=null;
    window.open('','_self');
    window.close();
}
 
function closeWindow()
{
    window.close();
}

// 颜色加深
var savecolor;
function Fuscous(obj)
{
    savecolor = obj.style.backgroundColor;
    obj.style.backgroundColor='#eee';
}
//颜色恢复
function Undertone(obj)
{
    //obj.style.backgroundColor='#ffffff';
    obj.style.backgroundColor=savecolor;     
}
//全选及全不选
function CheckBoxSelectAll(sel,check)
{
	var objtb=document.getElementById(sel);
	var num=objtb.getElementsByTagName("input");
	var check=document.getElementById(check);
	for(i=0;i<num.length;i++)
	{
		if(num[i].tagName=="INPUT")
		{
			if(check.checked==true)
			{num[i].checked=true;}
			else{num[i].checked=false;}
		}
	}
}

//判断是否有CheckBox被选中
function IsCheckBoxAnyOneSelected(sel)
{
	var objtb=document.getElementById(sel);
	var num=objtb.getElementsByTagName("input");
	for(i=0;i<num.length;i++)
	{
		if(num[i].tagName=="INPUT")
		{
			if(num[i].checked==true)
			{
			    return true;
			}
		}
	}
	return false;
}


function $$(element){
    return (typeof(element) == 'object' ? element : document.getElementById(element));
}
function GE(element){
    return (typeof(element) == 'object' ? element : document.getElementById(element));
}


/*======================================================
	- statInput 输入限制统计
	- By Mudoo 2008.5
	- 长度超出_max的话就截取...貌似没有更好的办法了
	- 字数显示用<input  type="text"> modify by mahongbo 
======================================================*/

function statInput(e, _max, _exp) {
	e			= GE(e);
	_max		= parseInt(_max);
	_max		= isNaN(_max) ? 0 : _max;
	_exp		= _exp==undefined ? {} : _exp;
	
	var isFrame = false;
	
	if(e==null || _max==0) {alert('statInput初始化失败！');return;}
	if (e.tagName=="IFRAME"){isFrame = true;}
	// 输出对象
	_objMax		= _exp._max==undefined ?	null : GE(_exp._max),
	_objTotal	= _exp._total==undefined ?	null : GE(_exp._total),
	_objLeft	= _exp._left==undefined ?	null : GE(_exp._left),
	// 弹出提示
	_hint		= _exp._hint==undefined ?	null : _exp._hint;
	
	// 初始统计
	if(_objMax!=null)	_objMax.value	= _max;
	if(_objTotal!=null)	_objTotal.value	= 0;
	if(_objLeft!=null)	_objLeft.value	= _max;
	
	// 设置监听事件
	if (isFrame||!_brower.isIE)
	{
	    // 使用计时器什么浏览器都支持,但效率低些.
	    var _intDo = null;
	    myAddEventListener(e, "focus", setListen);
	    myAddEventListener(e, "blur", remListen);
	    setListen();
    	
	    function setListen() {
		    _intDo = setInterval(stat, 10);
	    }
	    function remListen() {
		    clearInterval(_intDo);
	    }
    }
    else
    {
	    // 输入这个方法比较好.
	    // 但是Opera下中文输入跟粘贴不能正确统计...相当BT的东西...
	    // 如果不考虑Opera的话就用这个吧.否则就老老实实用计时器.
	    if(_brower.isIE) {myAddEventListener(e, "propertychange", stat);}else{myAddEventListener(e, "input", stat);}
    }
	
	// 统计函数
	var _len, _olen, _lastRN, _sTop;
	_olen = _len = 0;
	function stat() {
	    var e_value;
		if (e.tagName=="IFRAME"){
		    var isFrame = false;
		    var e_value = e.contentWindow.document.body.innerHTML;
		    if (e_value=="<P>&nbsp;</P>"||e_value=="<DIV>&nbsp;</DIV>"){
		        e.contentWindow.document.body.innerHTML = "";
		    }
	        //e_value = _brower.isIE? e.contentWindow.document.body.innerText : RemoveHTML(e.contentWindow.document.body.innerHTML);
	        e_value = RemoveHTML(Nbsp2Space(e.contentWindow.document.body.innerHTML));
	    }else{
	    	var isFrame = false;
	        e_value = e.value;
	    }
		_len = e_value.length;
		if(_len==_olen) return;		// 防止用计时器监听时做无谓的牺牲...
		if(_len>_max) {
			_sTop = e.scrollTop;
			// 避免IE最后俩字符为'\r\n'.导致崩溃...
			_lastRN = (e_value.substr(_max-1, 2) == "\r\n");
			e.value = e_value.substr(0, (_lastRN ? _max-1 : _max));
			if(_hint==true) popHint(e, "提示：输入字数,不能超过"+_max+"个~~.");
			// 解决FF老是跑回顶部
			if(_brower.isFirefox) e.scrollTop = e.scrollHeight;
		}
		_olen = _len = e_value.length;
		
		// 显示已输入字数
		if(_objTotal!=null) _objTotal.value = _len;
		// 显示剩余可输入字数
		if(_objLeft!=null) _objLeft.value = (_max-_len)<0 ? 0 : (_max-_len);
	}
	
	stat();
}
/*********************************************
	- 弹出提示框
	- By ZhangHang 2008.10
**********************************************/
function popHint(obj, msg, initValues) {
//    if (!_brower.isIE){
//        _alert(msg);
//        return false;
//    }
	var	_obj = obj;
	var _objHint = document.getElementById("popHint");
	var _objHintIframe = document.getElementById("popHintIframe");
	var _msg = msg;
	var _init = initValues;
	// 初始化失败...
	if(_obj==undefined || _msg==undefined || _msg=="") return;
	// 设置初始值
	_init = _init==undefined ? {_type : "wrong", _event : "click"} : _init;
	// obj如果不可见。设置弹出对象为obj父元素
	if(_obj.style.display=='none' || _obj.style.visibility=='hidden' || _obj.getAttribute('type')=='hidden') _obj = _obj.parentNode;
	var	_type = null;
	var _event = null;
	var _place = getCoords(_obj);
	var _marTop = null;
	var _objText = GE("popHintText");
	var _objHintIframe = GE("popHintIframe");
	// 初始化
	var init = function() {
		var _hint = _obj.getAttribute("hint");
		if(_hint=="false") return;
		// 有的时候initValues不为空.但是只设置一个值...避免发生错误.再次设置初始值...
		_type = _init._type==undefined ? "wrong" : _init._type;
		_type = _type.toLowerCase();
		_event = _init._event==undefined ? "click" : _init._event;
		_event = _event.toLowerCase();
		// 好了.输出...
		var _Html = "<div id=\"popHeader\">" +
					"	<div class=\"popLeft\"></div>" +
					"	<div id=\"popHintText\"></div>" +
					"	<div class=\"popRight\"></div>" +
					"</div>"+
					"<div class=\"popAngle\"><span></span></div>";
		var _HtmlIframe = "<iframe id='msg_div_all_Iframe' style='display:none;'></iframe>";
		if(_objHint==null) {
			_objHint = appendElement("div", {"id" : "popHint"}, _Html, document.body);
			_objHint.style.display = "none";
			_objText = GE("popHintText");
		}
		if(_objHintIframe==null) {
			try{	//IE
			document.body.appendChild(document.createElement("<iframe id='popHintIframe'></iframe>"));
			_objHintIframe = GE("popHintIframe");
		}catch(e)
		{}
		}
		show();
	},
	// 显示
	show = function() {
		_objHint.style.display = "";
		_marTop = _objHint.offsetHeight;
		
		_msg = "<span class=\"popIcon "+ _type +"\"></span>"+ _msg;
		_objText.innerHTML = _msg;
		_objHint.style.zIndex=10;
		_objHint.style.left = _place.x +"px";
		_objHint.style.top = (_place.y-_marTop+8) +"px";
		if(document.all)
		{
			_objHintIframe.style.left=_place.x +"px";
			_objHintIframe.style.zIndex=9;
			_objHintIframe.style.top = (_place.y-_marTop+8) +"px";
			_objHintIframe.style.width=GE("popHintText").offsetWidth+"px";
			_objHintIframe.style.height=GE("popHintText").offsetHeight+"px";
			_objHintIframe.style.position="absolute";
			_objHintIframe.style.display="";
		}
		
		// 关闭触发事件
		switch(_event) {
			case "blur" :
				myAddEventListener(_obj, 'blur', hide);
				break;
			//default :
			case "click" :
				myAddEventListener(document, 'mousedown', hide);
				break;
			//这里可以自己扩展很多事件...
		}
	},
	// 关闭
	hide = function() {
		_objHint.style.display = "none";
		_objText.innerHTML = "";
		// 移除关闭触发事件
		myRemoveEventListener(_obj, 'blur', hide);
		myRemoveEventListener(document, 'mousedown', hide);
		if(document.all){_objHintIframe.style.display="none";}
	};
	
	init();
}
/* 浏览器版本信息 */
function Browser() { 
   var ua, s, i; 

   this.isIE     = false;   // Internet Explorer 
   this.isNS     = false;   // Netscape 
   this.version = null; 

   ua = navigator.userAgent; 

   s = "MSIE"; 
   if ((i = ua.indexOf(s)) >= 0) { 
     this.isIE = true; 
     this.version = parseFloat(ua.substr(i + s.length)); 
     return; 
   } 

   s = "Netscape6/"; 
   if ((i = ua.indexOf(s)) >= 0) { 
     this.isNS = true; 
     this.version = parseFloat(ua.substr(i + s.length)); 
     return; 
   } 

   // Treat any other "Gecko" browser as NS 6.1. 

   s = "Gecko"; 
   if ((i = ua.indexOf(s)) >= 0) { 
     this.isNS = true; 
     this.version = 6.1; 
     return; 
   } 
}
/* 自动生成文章摘要 */
function Generate_Brief(text,length){ 
    if(text.length < length) return text; 
    var Foremost = text.substr(0,length); 
    var re = /<(\/?)(BODY|SCRIPT|P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|TABLE|TR|TD|TH|INPUT|SELECT|TEXTAREA|OBJECT|A|UL|OL|LI|BASE|META|LINK|HR|BR|PARAM|IMG|AREA|INPUT|SPAN)[^>]*(>?)/ig; 
    var Singlable = /BASE|META|LINK|HR|BR|PARAM|IMG|AREA|INPUT/i 
    var Stack = new Array(), posStack = new Array(); 
    while(true){ 
        var newone = re.exec(Foremost); 
        if(newone == null) break; 
        if(newone[1] == ""){ 
            var Elem = newone[2]; 
            if(Elem.match(Singlable) && newone[3]!= ""){ 
                continue; 
            } 
            Stack.push(newone[2].toUpperCase()); 
            posStack.push(newone.index); 
            if(newone[3] == "") break; 
        }else{ 
            var StackTop = Stack[Stack.length-1]; 
            var End = newone[2].toUpperCase(); 
            if(StackTop == End){ 
                Stack.pop(); 
                posStack.pop(); 
                if(newone[3] == ""){ 
                    Foremost = Foremost+">"; 
                } 
            } 
        }; 
    } 
    var cutpos = posStack.shift(); 
    Foremost = Foremost.substring(0,cutpos); 
    return Foremost; 
}
///* 设置Cookie */
function createCookie(name,value,days) { 
    if (days) { 
        var date = new Date(); 
        date.setTime(date.getTime()+(days*24*60*60*1000)); 
        var expires = "; expires="+date.toGMTString(); 
    } 
    else var expires = ""; 
    document.cookie = name+"="+escape(value)+expires+"; path=/"; 
} 
  
function readCookie(name) { 
    var nameEQ = name + "="; 
    var ca = document.cookie.split(';'); 
    for(var i=0;i < ca.length;i++) { 
        var c = ca[i]; 
        while (c.charAt(0)==' ') c = c.substring(1,c.length); 
        if (c.indexOf(nameEQ) == 0) return unescape(c.substring(nameEQ.length,c.length)); 
    } 
    return null; 
} 
  
function eraseCookie(name) { 
    createCookie(name,"",-1); 
} 
  
function showCookie(name) { 
    alert(readCookie(name)); 
} 
  
  
function addCookie(name,value,days) { 
    if (readCookie(name) != null) { 
        var oldvalue = readCookie(name); 
        var newvalue = oldvalue+","+value; 
    } 
    else var newvalue = value; 
    createCookie(name,newvalue,days); 
} 
  
function getHistory(name) { 
    var sHistory = readCookie(name); 
    if(sHistory) { 
        var aHistroy = sHistory.split(","); 
        for (x in aHistroy) 
        { 
            //do something ... 
        } 
    } 
}
/*  
 * 描述：跨浏览器的设置 innerHTML 方法  
 *       允许插入的 HTML 代码中包含 script 和 style  
 * 作者：zhanghang <zhanghang@263.net>  
 * 日期：2008-11-11  
 * 参数：  
 *    el: 合法的 DOM 树中的节点  
 *    htmlCode: 合法的 HTML 代码  
 * 经测试的浏览器：ie5+, firefox1.5+, opera8.5+  
 */
var setInnerHTML = function (el, htmlCode) {
    var ua = navigator.userAgent.toLowerCase();
    if (ua.indexOf('msie') >= 0 && ua.indexOf('opera') < 0) {
        htmlCode = '<div style="display:none">for IE</div>' + htmlCode;
        htmlCode = htmlCode.replace(/<script([^>]*)>/gi,
        '<script$1 defer>');
        el.innerHTML = htmlCode;
        el.removeChild(el.firstChild);
    } else {
        var el_next = el.nextSibling;
        var el_parent = el.parentNode;
        el_parent.removeChild(el);
        el.innerHTML = htmlCode;
        if (el_next) {
            el_parent.insertBefore(el, el_next)
        } else {
            el_parent.appendChild(el);
        }
    }
}
/* 获取页面元素相对于浏览器窗口的绝对位置 */
function getPos(element) {
    var valueT = 0, valueL = 0;
    do {
      valueT += element.offsetTop  || 0;   
      valueL += element.offsetLeft || 0;
      element = element.offsetParent;
    } while (element);   
    return {x:valueL, y:valueT};
}
function getElementPos(elementId) {
	var ua = navigator.userAgent.toLowerCase();
	var isOpera = (ua.indexOf('opera') != -1);
	var isIE = (ua.indexOf('msie') != -1 && !isOpera); // not opera spoof

	var el = document.getElementById(elementId);

	if(el.parentNode === null || el.style.display == 'none') 
	{
		return false;
	}

	var parent = null;
	var pos = [];
	var box;

	if(el.getBoundingClientRect)	//IE
	{
		box = el.getBoundingClientRect();
		var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop);
		var scrollLeft = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft);

		return {x:box.left + scrollLeft, y:box.top + scrollTop};
	}
	else if(document.getBoxObjectFor)	// gecko
	{
		box = document.getBoxObjectFor(el);
		   
		var borderLeft = (el.style.borderLeftWidth)?parseInt(el.style.borderLeftWidth):0;
		var borderTop = (el.style.borderTopWidth)?parseInt(el.style.borderTopWidth):0;

		pos = [box.x - borderLeft, box.y - borderTop];
	}
	else	// safari & opera
	{
		pos = [el.offsetLeft, el.offsetTop];
		parent = el.offsetParent;
		if (parent != el) {
			while (parent) {
				pos[0] += parent.offsetLeft;
				pos[1] += parent.offsetTop;
				parent = parent.offsetParent;
			}
		}
		if (ua.indexOf('opera') != -1 
			|| ( ua.indexOf('safari') != -1 && el.style.position == 'absolute' )) 
		{
				pos[0] -= document.body.offsetLeft;
				pos[1] -= document.body.offsetTop;
		} 
	}
		
	if (el.parentNode) { parent = el.parentNode; }
	else { parent = null; }
  
	while (parent && parent.tagName != 'BODY' && parent.tagName != 'HTML') 
	{ // account for any scrolled ancestors
		pos[0] -= parent.scrollLeft;
		pos[1] -= parent.scrollTop;
  
		if (parent.parentNode) { parent = parent.parentNode; } 
		else { parent = null; }
	}
	return {x:pos[0], y:pos[1]};
}
/* Enter Key to Tab Key */
document.onkeydown=function(evt){
    var isie = (document.all) ? true : false; 
    var key; 
    var srcobj;
    if (isie) 
    {
        key = event.keyCode; 
        srcobj=event.srcElement;
    }
    else 
    {
        key = evt.which; 
        srcobj=evt.target;
    }               
    if(key==13 && srcobj.type!='button' && srcobj.type!='submit' &&srcobj.type!='reset' && srcobj.type!='textarea' && srcobj.type!='')                 
    {
        if(isie)
        {
            event.keyCode=9;
        }
        else
        {                        
            var el=getNextElement(evt.target);
            if (el.type!='hidden')
                el.focus(); 
            else
                while (el.type=='hidden')
                    el=getNextElement(el); 
            el.focus(); 
            return false;
        }
    }
}                
function getNextElement (field) {
    var form = field.form;
    for (var e = 0; e < form.elements.length; e++) { 
        if (field == form.elements[e])
            break;
    }
    return form.elements[++e % form.elements.length];
}  
/* 生成随机数 */

function rnd() {
    rnd.today=new Date();
    rnd.seed=rnd.today.getTime();
　　rnd.seed = (rnd.seed*9301+49297) % 233280;
　　return rnd.seed/(233280.0);
};
function rand(number) {
    return Math.ceil(rnd()*number);
};
/* 替换错误图片地址 */
var ErrImg="/images/noimage.gif";
var RoomLogoNoImageUrl = "/images/ttw_logo.gif";
var ImgDefalutUrl = "/images/noimage.gif";
var ImgOnErrorUrl = "/images/noimage.gif";
var Index_Album_ImgError = "/images/album_bg.gif";
var Index_Team_ImgError = "/images/photoall_bg.gif";
var Albums_ImgOnErrorUrl = "/images/AlbumsDefaultPic.gif";
var bookListError="/images/bookListError.gif";
var oneBookError="/images/oneBookError.gif";

var ErrorPic_400 = "/images/ErrorPic_400.gif";  // 缩略图错误图片400*400  
var ErrorPic_130 = "/images/ErrorPic_130.gif";  // 缩略图错误图片130*130 
var ErrorPic_80 = "/images/ErrorPic_80.gif";  // 缩略图错误图片80*80 
var ErrorPic_75 = "/images/ErrorPic_75.gif";  // 缩略图错误图片75*75 
var ErrorPic_face = "/images/ErrorPic_face.gif";  // 头像错误图片75*75 
var ErrorBookFace_140 = "/images/ErrorBookFace_140.gif";  // 图书封面错误图片140*100 
var ErrorBookFace_210 = "/images/ErrorBookFace_210.gif";  // 图书封面错误图片210*150 
var ErrorBookFace_75 = "/images/ErrorBookFace_75.gif";  // 图书封面错误图片54*75

/*******************控制输入字符串 2009.3.27 by dangpengfei***************************************/
///fieldName:输入文本框ID，fieldDesc：超过提示语句，fieldLength：限制字符数,fieldid:显示提示信息的span id
//调用方法：如：<textarea id="testArea" name="testArea" rows="3" cols="22" onchange="checkFieldLengthtestArea('testArea', '超过允许输入的字符个数', 20);" onkeyup="checkFieldLength('testArea', '超过允许输入的字符个数', 20);">
//              <div id="testInfo">已经输入:<span id="showMsg"></span></div>

function checkFieldLengthtestArea(fieldName,fieldid,fieldDesc,fieldLength)//该方法适用于testArea
{
   var str = document.getElementById(fieldName).value;
   var thelen = 0;
   for(i=0;i<str.length;i++)
   {
        //汉字的Unicode>255
        if(str.charCodeAt(i)>255)
        {
            thelen = thelen+2;
        }else {
            thelen = thelen+1;
        }
   }
   //document.getElementById(fieldid).innerText = fieldLength-thelen;
   if(thelen>fieldLength)
   {
        popHint($get(fieldName), fieldDesc, {_event : 'click'});
        //document.getElementById(fieldid).innerText = fieldDesc;
        document.getElementById(fieldName).value = CutStrLength(str,fieldLength);
   }else{
        return true;
   }
}

function checkFieldLengthinput(fieldName,fieldDesc,fieldLength)//该方法适用于INPUT
{
   var str = document.getElementById(fieldName).value;
   var thelen = 0;
   for(i=0;i<str.length;i++)
   {
        //汉字的Unicode>255
        if(str.charCodeAt(i)>255)
        {
            thelen = thelen+2;
        }else {
            thelen = thelen+1;
        }
   }
   if(thelen>fieldLength)
   {
        popHint($get(fieldName), fieldDesc, {_event : 'click'});
        document.getElementById(fieldName).value = CutStrLength(str,fieldLength);
   }else{
        return true;
   }
}
//超过指定长度时截取      
function CutStrLength(str,Ilength)
{
    var okLen = 0;
    var len = 0;
    var tmp = 0;
    for(i=0;i<Ilength;i++)
    {
        if(str.charCodeAt(i)>255)
            tmp+=2;
        else
            len+=1;
        okLen+=1;
        if(tmp+len==Ilength)
        {
            return (str.substring(0,okLen));
            break;
        }
        if(tmp+len>Ilength)
        {
            return (str.substring(0,okLen-1)+"");
            break;
        }

    }
}

/*======================================================
	- written by guochao 2009.04.23
	- /判断输入字符串如果是1个汉字计算为两个字符
======================================================*/
function CheckStrUnicode(str)
{
 var n=0;
 for(i=0;i<str.length;i++)
 {
  if(str.charCodeAt(i)>255)
    n+=2;
  else
   n+=1;
 }
 return n;
}

//判断字符是否在两个数值之间
function checkstr(str,dis1,dis2){  
var n=0;         
for(i=0;i<str.length;i++){
var leg=str.charCodeAt(i);     
if(leg>255){ 
    n+=2;       
}else {n+=1;}
}
if (n<dis1||n>dis2){
return false;
}else {
return true; 
}    
} 
//检查电子邮件
function checkem(emailStr)
{
    var email = emailStr;  
    var pattern = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/; 
　　flag = pattern.test(email);  
　　if(flag)  
　　{  　　　　　　
　　　return true;  
　　}  
　　else  
　  {
　   return false;
　  }
}

//--身份证号码验证-支持新的带x身份证
function isIdCardNo(num) 
{
    var factorArr = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
    var error;
    var varArray = new Array();
    var intValue;
    var lngProduct = 0;
    var intCheckDigit;
    var intStrLen = num.length;
    var idNumber = num;
    if ((intStrLen != 15) && (intStrLen != 18)) {
        return false;
    }    
    for(i=0;i<intStrLen;i++) {
        varArray[i] = idNumber.charAt(i);
        if ((varArray[i] < '0' || varArray[i] > '9') && (i != 17)) {
            return false;
        } else if (i < 17) {
            varArray[i] = varArray[i]*factorArr[i];
        }
    }
    if (intStrLen == 18) {
        var date8 = idNumber.substring(6,14);
        if (checkDate(date8) == false) {
            return false;
        }    
        for(i=0;i<17;i++) {
            lngProduct = lngProduct + varArray[i];
        }        
        intCheckDigit = 12 - lngProduct % 11;
        switch (intCheckDigit) {
            case 10:
                intCheckDigit = 'X';
                break;
            case 11:
                intCheckDigit = 0;
                break;
            case 12:
                intCheckDigit = 1;
                break;
        }        
        if (varArray[17].toUpperCase() != intCheckDigit) {
            return false;
        }
    } 
    else{
        var date6 = idNumber.substring(6,12);
        if (checkDate(date6) == false) {
            return false;
        }
    }
    return true;
}

 function AddFavorite(sURL, sTitle)
    {
        try
        {
            window.external.addFavorite(sURL, sTitle);
        }
        catch (e)
        {
            try
            {
                window.sidebar.addPanel(sTitle, sURL, "");
            }
            catch (e)
            {
                alert("加入收藏失败，请使用Ctrl+D进行添加");
            }
        }
    }
    
    function SetHome(obj,vrl)
    {
        try
        {
                obj.style.behavior='url(#default#homepage)';obj.setHomePage(vrl);
        }
        catch(e){
                if(window.netscape) {
                        try {
                                netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); 
                        } 
                        catch (e) { 
                                alert("此操作被浏览器拒绝！\n请在浏览器地址栏输入“about:config”并回车\n然后将[signed.applets.codebase_principal_support]设置为'true'"); 
                        }
                        var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);
                        prefs.setCharPref('browser.startup.homepage',vrl);
                 }
        }
    }



