﻿//js class lab from www.tifoo.com; Author:赵志强
//Version : 2.1.5 [2010-11-11]
//self.onerror = function(){return true;}
var tifooB = { ua: navigator.userAgent.toLowerCase(), isIE: false, isFireFox: false, isChrome: false, isOpera: false, isSafari: false }; (tifooB.isIE = tifooB.ua.match(/msie ([\d.]+)/)) ? tifooB.IE = tifooB.isIE[1] : (tifooB.isFireFox = tifooB.ua.match(/firefox\/([\d.]+)/)) ? tifooB.FireFox = tifooB.isFireFox[1] : (tifooB.isChrome = tifooB.ua.match(/chrome\/([\d.]+)/)) ? tifooB.Chrome = tifooB.isChrome[1] : (tifooB.isOpera = tifooB.ua.match(/opera.([\d.]+)/)) ? tifooB.Opera = tifooB.isOpera[1] : (tifooB.isSafari = tifooB.ua.match(/version\/([\d.]+).*safari/)) ? tifooB.Safari = tifooB.isSafari[1] : 0; String.prototype.padLeft = function(len, cha) { if (this.length >= len) return this; var _pi = len - this.length; var _nStr = this; for (var i = 0; i < _pi; i++) _nStr = cha + _nStr; return _nStr; }; String.prototype.padRight = function(len, cha) { if (this.length >= len) return this; var _pi = len - this.length; var _nStr = this; for (var i = 0; i < _pi; i++) _nStr += cha; return _nStr; }; Date.prototype.toNumberString = function() { return this.getFullYear() + (this.getMonth() + 1).toString().padLeft(2, "0") + this.getDate().toString().padLeft(2, "0") + this.getHours().toString().padLeft(2, "0") + this.getMinutes() + this.getSeconds().toString().padLeft(2, "0"); };
function cBrowser() { this.agt = navigator.userAgent.toLowerCase(); this.isW3C = document.getElementById ? true : false; this.isIE = tifooB.isIE; this.isIE6 = tifooB.isIE && (tifooB.IE == "6.0"); this.isFireFox = tifooB.isFireFox; this.bodyWidth = this.isIE ? this.isIE6 ? document.body.offsetWidth : document.documentElement.offsetWidth : document.documentElement.clientWidth; this.bodyHeight = this.isIE ? this.isIE6 ? document.documentElement.clientHeight : document.documentElement.offsetHeight : document.documentElement.clientHeight; this.tbodyWidth = document.body.offsetWidth < this.bodyWidth ? this.bodyWidth : document.body.offsetWidth; this.tbodyHeight = document.body.offsetHeight < this.bodyHeight ? this.bodyHeight : document.body.offsetHeight; }; window.$ = function (o, tag, i) { var _oo = typeof (o) == "string" ? document.getElementById(o) : o; if (arguments.length == 1) { return _oo; }; if (_oo == null) { return null; }; var _oos = _oo.getElementsByTagName(tag); if (_oos.length > 0) { if (arguments.length == 2) { return _oos; }; var _i = 0; try { _i = parseInt(i.toString()); } catch (e) { }; return -1 < _i && _i < _oos.length ? _oos[_i] : _i >= _oos.length ? _oos[_oos.length - 1] : _oos[0]; } else { return null; }; }; window.getInnerText = function (id) { if (typeof id == "string") { var obj = document.getElementById(id); return obj ? obj.innerText || obj.textContent || "" : id; } else { return id.innerText || id.textContent || id.text || ""; } }; String.prototype.ltrim = function () { return this.replace(/^\s+/g, ""); }; String.prototype.rtrim = function () { return this.replace(/\s+$/g, ""); }; String.prototype.trim = function () { return this.replace(/^\s+|\s+$/g, ""); }; String.prototype.urlEncode = function () { return encodeURI(this).replace(/&/g, "%26").replace(/\+/g, "%2B"); }; String.prototype.htmlEncode = function () { var tempSpan = document.createElement("SPAN"); if (document.all) tempSpan.innerText = this; else tempSpan.textContent = this; return tempSpan.innerHTML; }; String.prototype.replaceAndChar = function () { var tstr = this.replace(/&/g, "%26"); tstr = tstr.replace(/\+/g, "%2B"); return tstr; }; function loadXmlDocument(sXml) { try { if (sXml.trim() == "") return null; var oXml = new ActiveXObject("Msxml2.DOMDocument"); oXml.async = false; oXml.resolveExternals = false; oXml.loadXML(sXml); return oXml; } catch (e) { try { var oParser = new DOMParser(); var oXmlDom = oParser.parseFromString(sXml, "text/xml"); return oXmlDom; } catch (E) { return null; } } }; function getQueryString(key) { if (key == null) { var urlGet = /.+\?(.*)/ig; if (urlGet.test(location.href)) return location.href.replace(urlGet, "$1"); else return ""; } var urlReg = new RegExp(".+[\?&]{1}" + key + "=(.*)", "ig"); if (urlReg.test(location.href)) { key = location.href.replace(urlReg, "$1"); return (key.split("&")[0]).split("#")[0]; } else return ""; };var regexPatterns = { number: function () { return new RegExp(/^\d+$/g); }, time: function () { return new RegExp(/^([0-1]{0,1}[0-9]|[2][0-3]):[0-5][0-9](:[0-5][0-9])?$/g); }, money: function () { return new RegExp(/^([1-9]{1}[0-9]{0,12}(\.[0-9]{1,4})?|0?\.0{0,3}[1-9]{1}\d{0,3})$/g); }, date: function () { return new RegExp(/^((((19|20)(([02468][048])|([13579][26]))-02-29))|((20[0-9][0-9])|(19[0-9][0-9]))-((((0?[1-9])|(1[0-2]))-((0?[1-9])|(1[0-9])|(2[0-8])))|((((0?[13578])|(1[02]))-31)|(((0?[1,3-9])|(1[0-2]))-(29|30)))))$/g); } };  function tifooAjax() { this.XHR = function () { var xo; try { xo = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xo = new ActiveXObject("Microsoft.XMLHTTP"); } catch (ee) { try { xo = new XMLHttpRequest(); } catch (eee) { xo = null; } } } return xo; }; this.getStr = null; this.sendUrl = arguments[0] || "./?a="; this.sendValues = arguments[1] || ""; this.completeFun = function () { }; this.failFun = function (xo) { msgAlert.show("Ajax操作失败：" + xo.status, true); }; var taClass = this; this.action = function (u) { if (u) taClass.sendUrl = u; var xo = taClass.XHR(); xo.open("POST", taClass.sendUrl, true); xo.setRequestHeader("cache-control", "no-cache"); xo.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xo.send(taClass.sendValues); xo.onreadystatechange = function () { if (xo.readyState == 4) { if (xo.status == 200) { taClass.getStr = xo.responseText; taClass.completeFun(); return; } else { taClass.failFun(xo); } } }; }; }; var tifooWindowParams = { count: 0, zIndex: 10000, focusObj: null, winResizeFun: null }; function tifooWindow() { this.getUrl = arguments[0] || "http://www.tifoo.com"; this.getWid = arguments[1] || 500; this.getHei = arguments[2] || 400; this.getTitle = arguments[3] || "..."; this.icoPath = arguments[4] || "../cm/imgs/icons/"; this.enableResize = arguments[5] || false; this.enableDrag = arguments[6] || false; this.center = arguments[7] == false ? false : true; this.disposeAndReload = arguments[8] || false; this.reloadFun = arguments[9] || function () { window.location.reload(); }; var twClass = this; this.obj_bg = this.obj_window = this.obj_iframe = this.obj_shadow = null; this.obj_left = this.obj_top = 0; this.obj_fullWindow = this.closeAndReload = false; this.dragStart = false; this.dragStart_X = this.dragStart_Y = this.dragStart_L = this.dragStart_T = 0; this.dragObj = null; this.createDragObj = function () { if (twClass.obj_fullWindow) return; document.body.onselectstart = function () { return false; }; /*document.onselect = function() { return false; };*/twClass.dragObj = document.createElement("div"); twClass.dragObj.className = "twClass_DragObj"; document.body.appendChild(twClass.dragObj); twClass.dragObj.style.width = twClass.getWid + "px"; twClass.dragObj.style.height = twClass.getHei + "px"; twClass.dragObj.style.left = twClass.obj_left + "px"; twClass.dragObj.style.top = twClass.obj_top + "px"; document.onmousemove = function (event) { var event = event || window.event; twClass.dragStart_L = twClass.obj_left + event.clientX - twClass.dragStart_X; twClass.dragStart_T = twClass.obj_top + event.clientY - twClass.dragStart_Y; twClass.dragObj.style.left = twClass.dragStart_L + "px"; twClass.dragObj.style.top = twClass.dragStart_T + "px"; }; document.onmouseup = function () { twClass.dragStart = false; twClass.obj_window.style.left = (twClass.obj_left = twClass.dragStart_L) + "px"; twClass.obj_window.style.top = (twClass.obj_top = twClass.dragStart_T) + "px"; twClass.removeDragObj(); }; }; this.removeDragObj = function () { document.body.removeChild(this.dragObj); twClass.dragObj = null; document.onmousemove = function () { return }; document.onmouseup = function () { return }; }; this.dispose = function () { if (twClass.closeAndReload) { (this.reloadFun)(); }; tifooWindowParams.count--; document.body.removeChild(twClass.obj_window); if (tifooWindowParams.count == 0) { document.body.removeChild(twClass.obj_bg); window.onresize = tifooWindowParams.winResizeFun; }; twClass = null; if (tifooB.isIE) { var _formsElements = document.body.getElementsByTagName("INPUT"); if (_formsElements != null) { for (var i = 0; i < _formsElements.length; i++) { if (_formsElements[i].type == "text") try { _formsElements[i].focus(); document.body.focus(); return; } catch (e) { } } }; }; }; this.resize = function (resizeButton) { if (twClass.obj_fullWindow) { var _browser = new cBrowser(); twClass.obj_fullWindow = false; resizeButton.alt = "最大化"; resizeButton.src = resizeButton.src.replace("min", "max"); twClass.obj_window.style.left = twClass.obj_left + "px"; twClass.obj_window.style.top = twClass.obj_top + "px"; twClass.obj_window.style.width = twClass.getWid + "px"; twClass.obj_window.style.height = twClass.getHei + "px"; twClass.obj_iframe.style.width = twClass.getWid - 13 + "px"; twClass.obj_iframe.style.height = twClass.getHei - 33 + "px"; if (_browser.isIE6) twClass.obj_shadow.style.height = twClass.getHei + "px"; } else { var _browser = new cBrowser(); twClass.obj_fullWindow = true; resizeButton.alt = "最小化"; resizeButton.src = resizeButton.src.replace("max", "min"); if (_browser.isIE6) { twClass.obj_window.style.left = 5 + document.documentElement.scrollLeft + "px"; twClass.obj_window.style.top = 5 + document.documentElement.scrollTop + "px"; twClass.obj_shadow.style.height = _browser.bodyHeight - 20 + "px"; } else { twClass.obj_window.style.left = "5px"; twClass.obj_window.style.top = "5px"; }; twClass.obj_window.style.width = _browser.bodyWidth - 20 + "px"; twClass.obj_window.style.height = _browser.bodyHeight - 20 + "px"; twClass.obj_iframe.style.width = _browser.bodyWidth - 33 + "px"; twClass.obj_iframe.style.height = _browser.bodyHeight - 53 + "px"; } }; this.show = function () { var tempI = ++tifooWindowParams.count; var _browser = new cBrowser(); if (tempI == 1) { twClass.obj_bg = document.createElement("div"); twClass.obj_bg.id = "twClass_bg"; document.body.appendChild(twClass.obj_bg); twClass.obj_bg.style.height = _browser.tbodyHeight + "px"; if (_browser.isIE6) { twClass.obj_bg.innerHTML = "<iframe frameborder=\"0\" scrolling=\"no\" style=\"width:100%;height:100%;\"></iframe>"; } twClass.obj_bg.onclick = function () { if (tifooWindowParams.focusObj == null) { tifooWindowParams.focusObj = $("twClass_title_" + tifooWindowParams.count); }; tifooWindowParams.focusObj.className = "twc_title_hover"; setTimeout("tifooWindowParams.focusObj.className = \"twc_title\";", 60); setTimeout("tifooWindowParams.focusObj.className = \"twc_title_hover\";", 120); setTimeout("tifooWindowParams.focusObj.className = \"twc_title\";", 180); }; twClass.obj_bg.oncontextmenu = function () { return false; }; if (window.onresize != null) tifooWindowParams.winResizeFun = window.onresize; window.onresize = function () { if (tifooWindowParams.winResizeFun != null) tifooWindowParams.winResizeFun(); var __bw = new cBrowser(); var __bg = $("twClass_bg"); __bg.style.height = __bw.tbodyHeight + "px"; }; } else twClass.obj_bg = $("twClass_bg"); var tempButtons = " <img id=\"twClass_close_" + tempI + "\" alt=\"关闭\" src=\"" + twClass.icoPath + "close.gif\" />"; tempButtons += twClass.enableResize ? "<img id=\"twClass_resize_" + tempI + "\" ti=\"" + tempI + "\" alt=\"最大化\" src=\"" + twClass.icoPath + "max.gif\" />" : ""; var tempIframe = "<iframe id=\"twClass_iframe_" + tempI + "\" name=\"twClass_iframe_" + tempI + "\" frameborder=\"0\" scrolling=\"" + (_browser.isIE6 ? "yes" : "auto") + "\" style=\"width:" + (twClass.getWid - 13) + "px;height:" + (twClass.getHei - 33) + "px; margin:0; padding:0;\" src=\"" + twClass.getUrl + "\"></iframe>"; twClass.obj_window = document.createElement("div"); twClass.obj_window.id = "twClass_" + tempI; twClass.obj_window.className = "twClass"; twClass.obj_window.style.zIndex = tifooWindowParams.zIndex += tempI; twClass.obj_window.setAttribute("i", tempI); twClass.obj_window.oncontextmenu = function () { return false; }; twClass.obj_window.onmousedown = function (event) { if (!twClass) return; tifooWindowParams.focusObj = $("twClass_title_" + this.getAttribute("i")); tifooWindowParams.zIndex++; this.style.zIndex = tifooWindowParams.zIndex; if (twClass.enableDrag) { twClass.dragStart = true; var event = event || window.event; twClass.dragStart_X = event.clientX; twClass.dragStart_Y = event.clientY; twClass.dragStart_L = twClass.obj_left; twClass.dragStart_T = twClass.obj_top; twClass.createDragObj(); } }; twClass.obj_window.innerHTML = "<div id=\"twClass_body_" + tempI + "\" class=\"twClass_body\"><div id=\"twClass_title_" + tempI + "\" class=\"twc_title\"" + (twClass.enableDrag ? " style=\"cursor:move;\"" : "") + ">" + tempButtons + twClass.getTitle + "</div><div class=\"twc_iframe\">" + tempIframe + "</div></div><div id=\"twClass_shadow_" + tempI + "\" class=\"twClass_shadow\"" + (_browser.isIE6 ? " style=\"height:" + twClass.getHei + "\"" : "") + "></div>"; document.body.appendChild(twClass.obj_window); twClass.obj_iframe = $("twClass_iframe_" + tempI); twClass.obj_shadow = $("twClass_shadow_" + tempI); var _t_cb = $("twClass_close_" + tempI); _t_cb.onmousedown = function () { twClass.enableDrag = false; }; _t_cb.onclick = function () { twClass.dispose(); }; if (twClass.enableResize) { $("twClass_resize_" + tempI).onmousedown = function () { twClass.resize(this); }; $("twClass_title_" + tempI).ondblclick = function () { twClass.resize($("twClass_resize_" + tempI)); }; } twClass.obj_window.style.width = twClass.getWid + "px"; twClass.obj_window.style.height = twClass.getHei + "px"; if (twClass.center) { twClass.obj_left = (_browser.bodyWidth - twClass.getWid - 8) / 2; twClass.obj_top = (_browser.bodyHeight - twClass.getHei - 8) / 2; } else { twClass.obj_left = (20 * tempI); twClass.obj_top = (20 * tempI); }; if (_browser.isIE6) { twClass.obj_left += document.documentElement.scrollLeft; twClass.obj_top += document.documentElement.scrollTop; }; twClass.obj_window.style.top = twClass.obj_top + "px"; twClass.obj_window.style.left = twClass.obj_left + "px"; }; };var msgAlert = { icoPath: "../cm/imgs/icons/", icoFileName: "loading.gif", bg: null, o: null, sIco: true, show: function (s, b, c) { if (arguments.length == 0) { msgAlert.dispose(); return; } if (b) this.sIco = false; var __bw = new cBrowser(); if (this.bg == null) { this.bg = document.createElement("div"); this.bg.oncontextmenu = function () { return false; }; this.bg.id = "msgAlert_bg"; var _ie6_bg = "<iframe frameborder=\"0\" scrolling=\"no\" style=\"width:100%;height:100%;\"></iframe>"; if (__bw.isIE6) { this.bg.innerHTML = _ie6_bg; } document.body.appendChild(this.bg); /*if(__bw.bodyWidth > document.documentElement.offsetWidth){this.bg.style.width = __bw.bodyWidth + "px"; window.onresize = function() { $("msgAlert_bg").style.width="100%"; };};*/this.bg.style.height = __bw.tbodyHeight + "px"; this.o = document.createElement("div"); this.o.id = "msgAlert"; document.body.appendChild(this.o); }; this.o.innerHTML = "<div class=\"ma_txt\">" + (this.sIco ? "<img alt=\"\" src=\"" + this.icoPath + this.icoFileName + "\" />" : "") + s + "</div>"; if (b) this.o.innerHTML += "<div class=\"ma_button\"><img src=\"" + this.icoPath + "confirm.gif\" onclick=\"msgAlert.dispose('" + c + "');\" /></div>"; this.o.style.left = __bw.bodyWidth / 2 - this.o.offsetWidth / 2 + (__bw.isIE6 ? document.documentElement.scrollLeft : 0) + "px"; this.o.style.top = __bw.bodyHeight / 2 - this.o.offsetHeight / 2 + (__bw.isIE6 ? document.documentElement.scrollTop : 0) + "px"; }, dispose: function (c) { if (this.bg) { document.body.removeChild(this.o); document.body.removeChild(this.bg); this.bg = null; this.o = null; }; if (c) { this.sIco = true; eval(c); } } };
window.autoClick = function(o) { if (tifooB.isIE) o.click(); else { var evt = document.createEvent("MouseEvents"); evt.initEvent("click", true, true); o.dispatchEvent(evt); } };
window.offsetLeft = function(o) { var x = o.offsetLeft; for (var pO = o.offsetParent; pO; pO = pO.offsetParent) x += pO.offsetLeft; return x; };window.offsetTop = function(o) { var y = o.offsetTop; for (var pO = o.offsetParent; pO; pO = pO.offsetParent) y += pO.offsetTop; return y; };
function tifooBubble() { this.dependObj = arguments[0] || null; this.msg = arguments[1] || "^0^"; this.hiddenTimeout = arguments[2] || 10000; this.width = arguments[3] || 152; this.direction = arguments[4] || "left"; this.tbNode = null; this.timeoutId = null; var tbClass = this; this.create = function() { var rootNode = document.createElement("div"); rootNode.className = "tbClass"; rootNode.style.width = this.width + "px"; var _html = "<div class=\"toptop\"></div><div class=\"middle\"></div><div class=\"middle\" style=\"height:auto; margin:0px;\"><table><tr><td style=\"padding:3px;\"><span>" + tbClass.msg + "</span></td><td style=\"width:14px;\"><a href=\"javascript:\" onclick=\"var rootNode = this.parentNode; while('tbClass' != rootNode.className){rootNode = rootNode.parentNode} rootNode.style.display = 'none';\">&times;</a></td></tr></table></div><div class=\"middle\"></div><div class=\"botbot\"></div><div class=\"arrow\" style=\"text-align:" + this.direction + "; padding-" + this.direction + ":20px;\"><span style=\"width:15px;\"></span>"; for (var i = 14; i > -1; i--) { _html += "<br /><span style=\"width:" + (i.toString()) + "px;\"></span>"; }; _html += "</div>"; rootNode.innerHTML = _html; this.dispose(); rootNode.style.display = "none"; document.body.appendChild(rootNode); this.tbNode = rootNode; }; this.show = function(self, message) { if (self) this.dependObj = self; if (message) this.msg = message; if (null == this.dependObj) { msgAlert.show(this.msg, true); return; }; this.create(); this.tbNode.style.left = offsetLeft(this.dependObj) + "px"; var _top = offsetTop(this.dependObj); this.tbNode.style.top = _top + "px"; this.tbNode.style.display = ""; this.tbNode.style.top = _top - this.tbNode.offsetHeight + "px"; if (this.hiddenTimeout > 500) { this.timeoutId = setTimeout(function() { tbClass.dispose(); }, this.hiddenTimeout); } }; this.dispose = function() { if (null != this.tbNode) { document.body.removeChild(this.tbNode); this.tbNode = null; if (null != this.timeoutId) { clearTimeout(this.timeoutId); this.timeoutId = null } } }; if (arguments.length >= 2) this.show(); }
Array.prototype.indexOf = function(obj) { var _at = -1, i = this.length - 1; for (; i >= 0; i--) if (this[i] == obj) { _at = i; break; } return _at; };
Array.prototype.contains = function(obj) { return (this.indexOf(obj) >= 0); };
Array.prototype.append = function(obj, nodup) { if (!(nodup && this.contains(obj))) { this[this.length] = obj; } };
Array.prototype.remove = function(obj) { var index = this.indexOf(obj); if (!index) return; return this.splice(index, 1);};
function addEvent(element, type, fun) { if (!element.events) element.events = {}; var handlers = element.events[type]; if (!handlers) { handlers = element.events[type] = []; if (element['on' + type]) { handlers[0] = element['on' + type]; } }; handlers.append(fun, true); element['on' + type] = handleEvent; }
function removeEvent(element, type, fun) { if (element.events && element.events[type]) { element.events[type].remove(fun); } }
function handleEvent(event) { var returnValue = true, i = 0; event = event || fixEvent(window.event); var handlers = this.events[event.type], length = handlers.length; for (; i < length; i++) { if (handlers[i].call(this, event) === false) { returnValue = false; } } return returnValue; }
function fixEvent(event) { event.preventDefault = fixEvent.preventDefault; event.stopPropagation = fixEvent.stopPropagation; return event; }
fixEvent.preventDefault = function() { this.returnValue = false;}; fixEvent.stopPropagation = function() { this.cancelBubble = true; };
function delConfirm(url) { if (confirm("确定要删除吗？操作将不可恢复。")) { msgAlert.show("正在删除，请稍候..."); location.href = url; } }
