/*
js.Browse
js.Dom
js.Event
js.Common
js.Img
eventHandler
js.Cookie
checkform
*/

js = {};

js.baseURL = document.baseURI || document.URL;
if (js.baseURL && js.baseURL.match(/(.*)\/([^\/]+)/)) js.baseURL = RegExp.$1 + "/";
js.rootUrl = js.baseURL.replace(/^(.*:\/\/[^\/]+)(.*)$/, '$1');

var __JS_FILES__ = [];
var __CSS_FILES__ = [];

if (typeof(__JS_ROOT__) == "undefined"){
	_findJsFiles();
	var _m, i;
	for (i in __JS_FILES__){
		_m = i.match(new RegExp("^(.*)(global\\.js)$","i"));
		if(_m[2] == "global.js") __JS_ROOT__ = _m[1];
	}
}
__JS_ROOT__ = _getRealUrl(__JS_ROOT__);
if (typeof(__JS_LANG__) == "undefined")__JS_LANG__ = "gb";

js.sysPrefix = 'sys';
js.useFloatPanel = false;
//js.imagesRoot = '';
js.cookidDomain = "";

js.ENTER_KEYCODE = 13;
js.ESC_KEYCODE = 27;
js.SHIFT_KEYCODE = 16;
js.CTRL_KEYCODE = 17;
js.ALT_KEYCODE = 18;
js.SHIFT = "shift";
js.CTRL = "ctrl";
js.ALT = "alt";

js.zIndex_buttonMenu = 10000;
js.objMenu = null;

var id_counter = 0;
js.generateId = function(el, prefix) {
	prefix = prefix || 'js_id_';
	if (el){
		el = js.Dom.findObj(el);
		if (!el.id) el.id = prefix + id_counter++;
		return el.id;
	}
	return prefix + id_counter++;
}

js.loadJs = function(baseName, dirName)
{
	var _file_path = _getRealUrl((dirName ? dirName : __JS_ROOT__)+baseName);
	if (!__JS_FILES__[_file_path])_findJsFiles();
	if (!__JS_FILES__[_file_path]){
		var head = document.getElementsByTagName("HEAD")[0];
		var script = document.createElement("script");
		script.src = _file_path;
		head.appendChild(script);
		__JS_FILES__[_file_path] = _file_path;
	}
}

js.loadCss = function(baseName, dirName){
	var _file_path = _getRealUrl((dirName ? dirName : __JS_ROOT__)+baseName);
	if (!__CSS_FILES__[_file_path])_findCssFiles();
	if (!__CSS_FILES__[_file_path]){
		var head = document.getElementsByTagName("HEAD")[0];
		var _css = document.createElement("LINK");
		_css.rel='stylesheet';
		_css.type='text/css';
		head.appendChild(_css);
		_css.href = _file_path;
		__CSS_FILES__[_file_path] = _file_path;
	}
}

function _findJsFiles()
{
	var _src;
	var script_elements = document.getElementsByTagName("script");
	for (i in script_elements){
		if (script_elements[i] && script_elements[i].src){
			_src = _getRealUrl(script_elements[i].src);
			__JS_FILES__[_src] = _src;
		}
	}
}

function _findCssFiles()
{
	var _href;
	var css_elements = document.getElementsByTagName("LINK");
	for (i in css_elements){
		if (css_elements[i] && css_elements[i].href){
			_href = _getRealUrl(css_elements[i].href);
			__CSS_FILES__[_href] = _href;
		}
	}
}

function _getRealUrl(url)
{
	url = url.replace(/\\/, "/");
	if (!new RegExp(":\/\/").test(url)){
		if (new RegExp("^\/").test(url))url = js.rootUrl+url;
		else url = js.baseURL+url;
	}
	url = url.replace(/\/[^\/]*\/\.\.\//, "/");
	url = url.replace(/\/\.\//, "/");
	return url;
}

function reportError(msg,url,line) {
	var str = "You have found an error as below: \n\n";
	str += "Err: " + msg + " on line: " + line;
	alert(str);
	return true;
}

//window.onerror = reportError;

js.Browse = new function()
{
	var agt      = navigator.userAgent.toLowerCase(); //浏览器版本数据
	this.ie      = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
	if (this.ie){
		new RegExp("msie (.*);","i").exec(agt);
		this.ie_version = RegExp.$1;
		this.ie_old = (this.ie_version < 5.5);
	}
	this.win     =((agt.indexOf("win")!=-1) || (agt.indexOf("16bit")!=-1));
	this.opera   = (agt.indexOf("opera") != -1);
	this.mac     = (agt.indexOf("mac") != -1);
	this.mac_ie  = (this.ie && this.mac);
	this.win_ie  = (this.ie && !this.mac);
	this.gecko   = (navigator.product == "Gecko");
	this.ns      = (document.layers);
	this.dom_n   = document.all?(document.getElementById ? 2 : 1):(document.getElementById ? 4 : (document.layers ? 3 : 0));
}

//---------------------------------------Dom-----------------------------------------
js.Dom = new function()
{
	this.findObj = function (n, d) {
	  if (!n)return n; if (typeof(n) == "object")return n;
	  var p,i,x;  if(!d) d=document; 
	  if (d.all)x = d.all.n || d.all[n];  if (!x)x = d[n];
	  for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=this.findObj(n,d.layers[i].document);
	  if(!x && d.getElementById) x=d.getElementById(n); return x;
	}
	
	//获得对象所在页面中的X座标
	this.getPageX = function (obj) { var x=0; if(js.Browse.ns) x=obj.pageX; else { while(eval(obj)) { x+=obj.offsetLeft; obj=obj.offsetParent; } } return x; };
	//获得对象所在页面中的Y座标
	this.getPageY = function (obj) { var y=0; if(js.Browse.ns) y=obj.pageY; else { while(eval(obj)) { y+=obj.offsetTop; obj=obj.offsetParent; } } return y; };
	this.getH = function (obj) { return (js.Browse.ns)?((obj.height)?obj.height:obj.clip.height):((js.Browse.opera&&typeof obj.style.pixelHeight!='undefined')?obj.style.pixelHeight:obj.offsetHeight); };
	this.setH = function (obj,h) { h = parseInt(h)+"px"; if(obj.clip) obj.clip.height=h; else if(js.Browse.opera && typeof obj.style.pixelHeight != 'undefined') obj.style.pixelHeight=h; else obj.style.height=h; };
	this.getW = function (obj) { return (js.Browse.ns)?((obj.width)?obj.width:obj.clip.width):((js.Browse.opera&&typeof obj.style.pixelWidth!='undefined')?w=obj.style.pixelWidth:obj.offsetWidth); };
	this.setW = function (obj,w) { w = parseInt(w)+"px"; if(obj.clip) obj.clip.width=w; else if(js.Browse.opera && typeof obj.style.pixelWidth != 'undefined') obj.style.pixelWidth=w; else obj.style.width=w; };
	this.getX = function (obj) { return (js.Browse.ns)?obj.left:((obj.style.pixelLeft)?obj.style.pixelLeft:obj.offsetLeft); };
	this.setX = function (obj,x) { x = parseInt(x)+"px"; if(js.Browse.ns) obj.left=x; else {	if(typeof obj.style.pixelLeft != 'undefined') obj.style.pixelLeft=x;if(typeof obj.style.left != 'undefined') obj.style.left=x;	}};
	this.getY = function (obj) { return (js.Browse.ns)?obj.top:((obj.style.pixelTop)?obj.style.pixelTop:obj.offsetTop); };
	this.setY = function (obj,y) { y = parseInt(y)+"px"; if(js.Browse.ns) obj.top=y; else {if(typeof obj.style.pixelTop != 'undefined') obj.style.pixelTop=y;if(typeof obj.style.top != 'undefined') obj.style.top=y;}};
	this.getZ = function (obj) { return (js.Browse.ns)?obj.zIndex:obj.style.zIndex; };
	this.setZ = function (obj,z) { if(js.Browse.ns)obj.zIndex=z;else obj.style.zIndex=z; };
	this.setXY = function (obj,x,y) { if (x)this.setX(obj,x);if (y)this.setY(obj,y); };
	this.showObj = function (obj,disp) { (js.Browse.ns)? obj.visibility='show':obj.style.visibility='visible'; 	obj.style.display="";};
	this.hideObj = function (obj,disp) { (js.Browse.ns)? obj.visibility='hide':obj.style.visibility='hidden'; 	obj.style.display="none";};

	this.removeClass = function(obj, className) {
		if (!(obj && obj.className)) return false;
		var cls = obj.className.split(" ");
		var ar = new Array();
		for (var i = cls.length; i > 0;) {
			if (cls[--i] != className) {
				ar[ar.length] = cls[i];
			}
		}
		obj.className = ar.join(" ");
	}
	
	this.addClass = function(obj, className) {
		this.removeClass(obj, className);
		obj.className += " " + className;
	}
	
	this.hasClass = function(obj, className) {
		if (!(obj && obj.className)) return false;
		var cls = obj.className.split(" ");
		for (var i = cls.length; i > 0;) {
			if (cls[--i] == className) return true;
		}
		return false;
	}
	
	this.getIframeEl = function(name) {
		return this.findObj(name);
	}
	
	this.getIframeDom = function(name) {
		return window.frames[name];
	}
	
	this.createDiv = function(parentId, childText){
		if (typeof(parentId) == "string")parentId = this.findObj(parentId);
		if (!parentId)parentId = document.body;
		return this.createElement("div", parentId, childText);
	}
	
	this.createElement = function(sType, parentId, childText){
		if (!sType)return null;
		var oEl = null;
		if (sType == 'text' && childText)oEl = document.createTextNode(childText);
		else {
			oEl = document.createElement(sType);
			if (childText){
				var type_childText = typeof(childText);
				if (type_childText == "object")oEl.appendChild(childText);
				else this.writeHTML(oEl,childText);
			}
		}
		if (oEl){
			parentId = this.findObj(parentId);
			if (parentId) parentId.appendChild(oEl);
		}
		return oEl;
	}
	
	//在对象内写入html
	this.writeHTML = function (obj,str) { 
		if(document.layers){
			var doc=obj.document;
			doc.write(str);
			doc.close();
		} 
		else if (navigator.product == "Gecko"){
			var r = document.createRange();
			r.selectNodeContents(obj);
			r.deleteContents();
			var df = r.createContextualFragment(str);
			obj.appendChild(df);
		}
		else if(typeof obj.innerHTML != 'undefined')obj.innerHTML=str; 
	}
	
	this.removeNode = function (node)
	{
		for(var i = (node.childNodes.length - 1); i >= 0; i--)this.removeNode(node.childNodes[i]);
		node.parentNode.removeChild(node);
	}
	
	this.removeChildNodes = function (node)
	{
		for(var i = (node.childNodes.length - 1); i >= 0; i--)this.removeNode(node.childNodes[i]);
	}
	
	//取得窗口的宽度,高度,滚动后的X轴,Y轴
	this.getScroll = function () {
		if (js.Browse.ie) {	
			var _doc = document.compatMode != "CSS1Compat" ? document.body : document.documentElement;
			return {
				left:	_doc.scrollLeft,
				top:	_doc.scrollTop,
				width:	_doc.clientWidth,
				height:	_doc.clientHeight
			};
		}
		else {
			return {
				left:	window.pageXOffset,
				top:	window.pageYOffset,
				width:	window.innerWidth,
				height:	window.innerHeight
			};
		}
		
	}
}

//---------------------------------Event-------------------------------------------
js.Event={
    addEvent:function(obj,evType,fn){
        try {
			if(obj.addEventListener){
				obj.addEventListener(evType,fn,false);
				return true;
			}
			else if(obj.attachEvent){
				var r=obj.attachEvent("on"+evType,fn);
				js.EventCache.add(obj,evType,fn);
				return r;
			}
			else {
				return false;
			}
		}
		catch(e){}
    },
    removeEvent:function(obj,evType,fn){
        if(obj.removeEventListener){
            obj.removeEventListener(evType,fn,false);
            return true;
        }
        else if(obj.detachEvent){
            var r=obj.detachEvent("on"+evType,fn);
            return r;
        }
        else{
            return false;
        }
    },
    getEvent:function(e){
        e=window.event||e;
        e.leftButton=false;
        if(e.srcElement==null&&e.target!=null){
            e.srcElement=e.target;
            e.leftButton=(e.button==1);
        }
        else if(e.target==null&&e.srcElement!=null){
            e.target=e.srcElement;
            e.leftButton=(e.button==0);
        }
        else if(e.srcElement!=null&&e.target!=null){}
        else{
            return null
        }
        if(document.body&&document.documentElement){
            e.mouseX=e.pageX||(e.clientX+Math.max(document.body.scrollLeft,document.documentElement.scrollLeft));
            e.mouseY=e.pageY||(e.clientY+Math.max(document.body.scrollTop,document.documentElement.scrollTop));
        }
        else {
            e.mouseX=-1;
            e.mouseY=-1;
        }
        return e;
    },
    stopEvent:function(e){
        if(e&&e.cancelBubble!=null){
            e.cancelBubble=true;
            e.returnValue=false;
        }
        if(e&&e.stopPropagation&&e.preventDefault){
            e.stopPropagation();
            e.preventDefault();
        }
        return false;
    }
};
js.EventCache=function(){
    var listEvents=[];
    return{
        listEvents:listEvents,
        add:function(node,sEventName,fHandler,bCapture){
            listEvents[listEvents.length]=arguments;
        },
        flush:function(){
            var i,item;
            for(i=listEvents.length-1;
            i>=0;
            i=i-1){
                item=listEvents[i];
                if(item[0].removeEventListener){
                    item[0].removeEventListener(item[1],item[2],item[3]);
                };
                if(item[1].substring(0,2)!="on"){
                    item[1]="on"+item[1];
                };
                if(item[0].detachEvent){
                    item[0].detachEvent(item[1],item[2]);
                };
                item[0][item[1]]=null;
            };
        }
    };
}();
js.Event.addEvent(window,"unload",js.EventCache.flush);
function error_handler(a,b,c){
    window.status=(c+"\n"+b+"\n\n"+a+"\n\n"+error_handler.caller);
    return true;
}

//-----------------------Common----------------------------------------------
js.Common = new function()
{
	//打开窗口
	this.openWin = function (url,winName,width,height,scrollbars){
		if (!scrollbars)scrollbars='no';
		var x = (screen.availWidth-width) / 2;
		var y = (screen.availHeight-height) / 2;
		var newWin = window.open(url,winName,'width='+width+',height='+height+',scrollbars='+scrollbars+',resizable=no,titlebar=0,top=' + y + ',left=' + x);
		newWin.focus();
	}
	
	//控制显示或隐藏对象
	this.show_hide_obj = function(ctrl_id, div_id, ctrl_show_text, ctrl_hide_text){
		var objCtrl = this.findObj(ctrl_id);
		var objDiv = this.findObj(div_id);
		if (objCtrl.innerHTML == ctrl_show_text){
			objDiv.style.display = "";
			this.writeHTML(objCtrl, ctrl_hide_text);
		}
		else {
			objDiv.style.display = "none";
			this.writeHTML(objCtrl, ctrl_show_text);
		}
	}

	this.trim = function(str){
		if (str) return str.replace(/(^[\s　]*)|([\s　]*$)/g, "");
	}

	this.stripText = function(str){
		str = str.replace(/<\/?\w+[\s\.]*>/g, "");
		str = str.replace(/[\s　\"]+/g, " ");
		return str;
	}

	this.getStrLength = function(str) {
		var templen = str.replace(/[^\x00-\xff]/g,'**').length;
		return templen;
	}
	
	//中文截取
	this.subStr = function(str,len) {
		var templen = 0;
		var tempstr="";
		for(var i = 0; i < str.length; i++){
			var c = str.charAt(i);
			if(_isCnChar(c)) templen += 2;
			else templen += 1;
			//tempstr+=str.substring(i,i+1);
			tempstr+=c;
			if(templen >= len) break;
		}
		return tempstr;
	}
	
	function _isCnChar(str)	{
		if(str.length > 1) return true;
		else if (str == "") return false;
		else {
			if (/^([\uFF66-\uFF9F]|[\u0000-\u00FF])*$/gi.test(str)) return false;
			else return true;
		}
	}
	
}

//-----------------------Img----------------------------------------------

js.Img = {};

//预载入图像
js.Img.preloadImages = function () {
    var d=document; 
    if(d.images){ 
		var i,p=new Array(),a=js.Img.preloadImages.arguments; 
		for(i=0; i<a.length; i++){
			p[i]=new Image; 
			p[i].src=a[i];
		}
    }
}

//将图片或节点内的图片缩放
js.Img.zoomImage = function (objImg, dstW, dstH)
{
	if (typeof(objImg) == 'string')objImg = js.Dom.findObj(objImg);
	if (objImg.tagName){
		if (objImg.tagName.toLowerCase() == "img"){
			var srcW = objImg.width;
			var srcH = objImg.height;
			var newSize = js.Img.getZoomSize(srcW, srcH, dstW, dstH);
			if (newSize[2] == "in"){
				js.Dom.setW(objImg, newSize[0]);
				js.Dom.setH(objImg, newSize[1]);
				
				objImg.style.cursor = "Pointer";
				js.Event.addEvent(objImg,"click",function(){window.open(objImg.src, "", "");});
			}
		}
		else {
			for (var i = objImg.firstChild; i; i = i.nextSibling) js.Img.zoomImage(i, dstW, dstH);
		}
	}
}

js.Img.getZoomSize = function (srcW, srcH, dstW, dstH)
{
	var x = srcW / dstW;
	var y = dstH > 0 ? srcH / dstH : 0;

	if (x > 1 || y > 1) zoom = "in";
	else zoom = "out";
	
	if (x > y){
		srcW = Math.ceil(srcW/x);
		srcH = Math.ceil(srcH/x);
	}
	else {
		srcW = Math.ceil(srcW/y);
		srcH = Math.ceil(srcH/y);
	}
	
	return new Array(srcW, srcH, zoom);
}


//-----------------------eventHandler----------------------------------------------

_grabObj = null;             
function EventCtrl(div){
  this.div   = div;
  this.type  = ''; this.mask  = 0;
  this.pageX = 0;  this.pageY = 0;
  this.moveW = 0;  this.moveH = 0;
}
EventCtrl.prototype.resetValue = function(){
  this.pageX = 0;  this.pageY = 0;
  this.curX  = 0;  this.curY  = 0;
  this.startX= 0;  this.startY= 0;
  this.moveW = 0;  this.moveH = 0;
  this.moveW_last = 0;  this.moveH_last = 0;
}

EventCtrl.prototype.linkCtrl = function(obj){
  if(obj && !obj.eventCtrl) obj.eventCtrl=this;
  return this;
}

function getCtrlFromElementIE(el,tagName){
  for(;el;el=el.parentElement)
    if((tagName==null || el.tagName==tagName) && el.eventCtrl)
      return el.eventCtrl;
  return null;
}

function getCtrlFromEvent(e,tagName)
{
	var ctrl=_grabObj;
	if (js.Browse.dom_n==1||js.Browse.dom_n==2){
		  e=window.event;
		  var fromCtrl, toCtrl;
		  if (ctrl==null){
			var mask=0, type=e.type;
			switch(type){
			case 'mouseover':
			case 'mouseout':
			  fromCtrl = getCtrlFromElementIE(e.fromElement,tagName);
			  toCtrl   = getCtrlFromElementIE(e.toElement,  tagName);
			  if(fromCtrl!=toCtrl) ctrl=(type=="mouseover")?toCtrl:fromCtrl;
			  if(!ctrl || (ctrl.mask&1)==0) ctrl=null;
			  break;
			case 'mousedown': 
			case 'mousemove': 
			case 'mouseup':
			  ctrl = getCtrlFromElementIE(e.srcElement,tagName);
			  if(ctrl && (ctrl.mask&2)!=0) break;
			default: ctrl=null; break;
			}
		  }
		  if(ctrl){
			ctrl.pageX = document.body.scrollLeft+e.clientX;
			ctrl.pageY = document.body.scrollTop +e.clientY;
			ctrl.type  = e.type;
			ctrl.e     = e;
		  }
	}
	else if (js.Browse.dom_n==3){
		  if(ctrl==null) ctrl=e.target.eventCtrl;
		  if(ctrl){
			var mask=0;
			switch(e.type){
			case 'mouseover': case 'mouseout':
			  mask|=1; break;
			case 'mousedown': case 'mousemove': case 'mouseup':
			  mask|=2; break;
			}
			if((ctrl.mask&mask)!=0){
			  ctrl.pageX = e.pageX; 
			  ctrl.pageY = e.pageY;
			  ctrl.type  = e.type;
			  ctrl.e     = e;
			} else ctrl=null;
		  }
	}
	else if (js.Browse.dom_n==4){
		  if(ctrl==null){
			for(var t=e.target; t!=null; t=t.parentNode){
			  if((  tagName==null
				 ||(t.nodeType==Node.ELEMENT_NODE && t.tagName==tagName))
				 && ('undefined' != typeof(t.eventCtrl)) ){
				ctrl=t.eventCtrl;
				break;
			  }
			}
		  }
		  if(ctrl){
			ctrl.pageX = e.clientX+window.scrollX;
			ctrl.pageY = e.clientY+window.scrollY;
			ctrl.type  = e.type;
			ctrl.e     = e;
		  }
	}
	return ctrl;
}

function ech_mouseover(e){
  var ctrl = getCtrlFromEvent(e,null);
  if(ctrl && ctrl.mouseoverFunc && !ctrl.mouseoverState){
    ctrl.mouseoverState = true;
    if(ctrl.mouseoverFunc) ctrl.mouseoverFunc(ctrl);
  }
}

function ech_mouseout(e){
  var ctrl = getCtrlFromEvent(e,null);
  if(ctrl && ctrl.mouseoverFunc && ctrl.mouseoverState){
    ctrl.mouseoverState = false;
    if(ctrl.mouseoutFunc) ctrl.mouseoutFunc(ctrl);
  }
}

function ech_mousedown(e){
  var ctrl = getCtrlFromEvent(e,null);
  if(ctrl && !ctrl.dragging){
    _grabObj = ctrl; ctrl.dragging=true; ctrl.dragged = false;
    ctrl.startX = ctrl.curX = ctrl.pageX;
    ctrl.startY = ctrl.curY = ctrl.pageY;
	ctrl.pageW = ctrl.pageX - js.Dom.getX(ctrl.div);
	ctrl.pageH = ctrl.pageY - js.Dom.getY(ctrl.div);
    if(ctrl.mousedown) ctrl.mousedown(ctrl);
    return false;
  }
  return true;
}

function ech_mousemove(e){
  var ctrl = getCtrlFromEvent(e,null);
  if(ctrl && ctrl.dragging){
	if(ctrl.curX!=ctrl.pageX || ctrl.curY!=ctrl.pageY){
      if(Math.abs(ctrl.pageX-ctrl.startX)>5 || Math.abs(ctrl.pageY-ctrl.startY)>5) ctrl.dragged = true;
      ctrl.moveW_last = ctrl.curX - ctrl.startX; 
	  ctrl.moveH_last = ctrl.curY - ctrl.startY; 
	  ctrl.moveW = ctrl.pageX - ctrl.startX;
      ctrl.moveH = ctrl.pageY - ctrl.startY;

	  if(ctrl.mousemove) ctrl.mousemove(ctrl);
      ctrl.curX = ctrl.pageX; ctrl.curY = ctrl.pageY;
    }
    return false;
  }
  return true;
}

function ech_mouseup(e){
  var ctrl = getCtrlFromEvent(e,null);
  if(ctrl && ctrl.dragging){
    _grabObj = null; ctrl.dragging = false;
    if(ctrl.mouseup) ctrl.mouseup(ctrl);
    if(!ctrl.dragged && ctrl.mouseclick) ctrl.mouseclick(ctrl);
	ctrl.resetValue();
	return false;
  }
  return true;
}

function ech_attachMouseOverOut(div,ovrf,outf){
  if(!div.eventCtrl) div.eventCtrl = new EventCtrl(div);
  var ctrl = div.eventCtrl;
  ctrl.mouseoverState = false;
  ctrl.mouseoverFunc  = ovrf; 
  ctrl.mouseoutFunc   = outf; 
	
  js.Event.addEvent(div, "mouseover", ech_mouseover);
  js.Event.addEvent(div, "mouseout", ech_mouseout);
  ctrl.mask|=1;
  return ctrl;
}

function ech_attachMouseDrag(div,dwnf,movf,upf,clkf){
  var doc;
  
  if(js.Browse.dom_n==1||js.Browse.dom_n==2){
    doc = div;
	js.Event.addEvent(doc, "mousedown", ech_mousedown);
	js.Event.addEvent(document, "mousemove", ech_mousemove);
	js.Event.addEvent(document, "mouseup", ech_mouseup);
  } else if(js.Browse.dom_n==3){
    doc = div.document;
	js.Event.addEvent(doc, "mousedown", ech_mousedown);
	js.Event.addEvent(doc, "mousemove", ech_mousemove);
	js.Event.addEvent(doc, "mouseup", ech_mouseup);
    doc.captureEvents(Event.MOUSEDOWN|Event.MOUSEMOVE|Event.MOUSEUP);
  } else if(js.Browse.dom_n==4){
    doc = div;
	js.Event.addEvent(div, "mousedown", ech_mousedown);
	js.Event.addEvent(document.body, "mousemove", ech_mousemove);
	js.Event.addEvent(document.body, "mouseup", ech_mouseup);
  } else return null;
  if(!doc.eventCtrl) doc.eventCtrl = new EventCtrl(div);
  var ctrl=doc.eventCtrl;
  ctrl.dragging  = false; ctrl.dragged   = false;
  ctrl.startX    = 0;     ctrl.startY    = 0;
  ctrl.curX      = 0;     ctrl.curY      = 0;
  ctrl.mousedown = dwnf; 
  if (!movf) movf = function(ctrl){js.Dom.setXY(ctrl.div, ctrl.curX-ctrl.pageW, ctrl.curY-ctrl.pageH);}
  ctrl.mousemove = movf; 
  ctrl.mouseup   = upf;  
  ctrl.mouseclick= clkf; 
  ctrl.mask|=2;
  return ctrl;
}

//-----------------------cookie----------------------------------------------
js.Cookie = new function ()
{
	this.path = "/";
	this.domain = js.cookidDomain;
	
	//expires秒
	this.setCookie = function(cookieName, cookieValue, expires, path, domain) {
		if (cookieName == "" || cookieName == null || cookieName == "undefined")return false;
		if (cookieValue == null || cookieValue == "undefined"){
			cookieValue = 0;
			expires = -1;
		}
		if (expires == null || expires == "undefined")expires = 0;
		if (path == null || path == "undefined")path = this.path;
		if (domain == null || domain == "undefined")domain = this.domain;
		var dt = new Date();
		var expires2 = new Date(dt.getTime() + 1000 * -1); expires2 = expires2.toGMTString();
		var cookie_str = "";
		if (path) cookie_str += '; path=' + path;
		if (domain) cookie_str += '; domain=' + domain;
		document.cookie = escape(cookieName) + '=0; expires='+ expires2;
		if (cookie_str != "")document.cookie = escape(cookieName) + '=0; expires='+ expires2 + cookie_str;
		if (expires >= 0){
			var cookie_str_2 = escape(cookieName) + '=' + escape(cookieValue);
			if (expires > 0){
				expires = new Date(dt.getTime() + 1000 * expires);
				cookie_str_2 += '; expires=' + expires.toGMTString()
			}
			document.cookie = cookie_str_2 + cookie_str;
		}
	};
	this.getCookie=function(cookieName){
		var dc=document.cookie;
		var prefix=cookieName+"=";
		var begin=dc.indexOf("; "+prefix);
		if(begin==-1){
			begin=dc.indexOf(prefix);
			if(begin!=0)return null;
		}
		else begin+=2;
		var end=document.cookie.indexOf(";",begin);
		if(end==-1) end=dc.length;
		return unescape(dc.substring(begin+prefix.length,end));
	}
	this.deleteCookie = function(cookieName,path,domain) {
		this.setCookie(cookieName, 0, -1,path,domain);
	};
	this.clearCookie = function() {
		if(document.cookie.indexOf(";")!=-1){
			var _sp, _item, _itemlength;
			_item=document.cookie.split("; ");
			_itemlength=_item.length;
			while(_itemlength>0){
				_sp = _item[--_itemlength].split("=");
				this.deleteCookie(unescape(_sp[0]));
			}
		}
		else if(document.cookie.indexOf("=")!=-1){
			var _sp = document.cookie.split("=");
			this.deleteCookie(unescape(_sp[0]));
		}
	};
}

//-----------------------checkform----------------------------------------------

//在相应的按钮上写下onclick="return checkform('字段名如textfield1','数字1-5表示字段名1检测方式'，''检测符号,'检测字段名1时的参考值','检测字段名1后显示的话语'"
function _alert_msg(obj_name,word){
	alert(word);
	if (obj_name && obj_name.style && obj_name.style.display != 'none')obj_name.focus();
	return false;
}
	
function checkform(what) { //v4.0
	args=checkform.arguments;
	
	if (args[0]=="reset"&&args.length==1){
		if (confirm("此项操作将删除或复原所有内容。\n要继续吗?"))return true;
		else return false;
	}
	else {
		var totalnum=args.length;
		var totalunit=totalnum/5;
		for (i=0;i<totalunit;i++){
			obj_name=js.Dom.findObj(args[i*5]);
			checkkind=args[i*5+1];
			checkoperator=args[i*5+2];
			checkvalue=args[i*5+3];
			obj_checkfield=js.Dom.findObj(args[i*5+3]);
			alertword=args[i*5+4];
			if (obj_name){
				switch (checkkind){
					case "isnull":
					//检测字段是否为空
					var spa=/\040/g;
					if (obj_name.value.replace(spa,"")=="")return _alert_msg(obj_name,alertword);
					break;
					
					case "ischinese":
					//检测字段是否含有中文
					if (obj_name.value.length != obj_name.value.replace(/[^\x00-\xff]/g,"**").length)return _alert_msg(obj_name,alertword);
					break;
					
					case "isemail":  //检测字段是否为邮址
					if (obj_name.value!=""){
						if (!new RegExp("/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/").test(obj_name.value))
							return _alert_msg(obj_name,alertword);
					}
					break;
					
					case "islength"://检测输入字符的长度是否符合指定值
					if ((obj_name.value!="")&&(eval(js.Common.getStrLength(obj_name.value)+checkoperator+checkvalue))){
						return _alert_msg(obj_name,alertword)
					}
					break;
					
					case "isvalue"://检测是否为某值是否符合指定值或为下拉选单的第几个
					if (eval('obj_name.value'+checkoperator+checkvalue)){
						return _alert_msg(obj_name,alertword)
					}
					break;
					
					case "tofield"://两个字段值是否相符
					if (obj_name.value!=obj_checkfield.value){
						return _alert_msg(obj_name,alertword)
					}
					break;
					
					case "isnum"://检测是否为数字
					if (isNaN(obj_name.value)){
						return _alert_msg(obj_name,alertword)
					}
					break;
					
					case "nocheck"://检测一组checkbox中是否没有一个被选中
					if (js.Browse.ie){
						if (obj_name.length){
							var c = false;
							for (var n=0;n<obj_name.length;n++){
								if (obj_name[n].checked) c = true;
							}
							if (c == false){
								return _alert_msg(obj_name[0],alertword)
							}
						}
						else if (!obj_name.checked) return _alert_msg(obj_name,alertword);
					}
					else {
						var c = false;
						var firstObj = null;
						var cInput=document.getElementsByTagName('INPUT');
						for(var n in cInput){
							if(cInput[n].id==args[i*5]){
								if (!firstObj)firstObj = cInput[n];
								if (cInput[n].checked)c = true;
							}
						}
						if (c == false){
								return _alert_msg(firstObj,alertword);
						}
					}
					break;
				}
			}
		}
	}
	return true;
}

//-->
