// +---------------------------------------------------------------------------+
// | The OpenBluewhale Project                                                 |
// +---------------------------------------------------------------------------+
// | Copyright (c) 2007  The OpenBW Group (http://www.openbw.org/)             |
// +---------------------------------------------------------------------------+
// |    本原始碼檔案和本軟體計劃 (The OpenBluewhale Project) 的所有程式碼必須  |
// | 遵守三條款式的BSD授權（Three-Clause BSD License），您可以自由下載及使用   |
// | OpenBluewhale，對於任何再散播（redistribution）本軟體的行為，都必須附上   |
// | 這份授權條款全文。 您可以在本專案 /license 目錄下找到授權全文，或是在網站 |
// | http://www.openbw.org/ 取得。                                             |
// +---------------------------------------------------------------------------+
// | 系統 - 核心 javascript                                                    |
// |                                                                           |
// | 2008-07-24 修改鍵盤控制自動完成元件顯示時，則此功能失效。                 |
// +---------------------------------------------------------------------------+
// | Authors: noon <noon@openbw.org>                                           |
// +---------------------------------------------------------------------------+
//
//    $Id: obw.js,v 1.17 2008/12/09 09:55:19 noon Exp $

var IE = document.all?true:false
if (!IE) document.captureEvents(Event.MOUSEMOVE)
document.onmousemove = getMouseXY;
var mouseX = 0 // 取得滑鼠指標目前的 x 位置
var mouseY = 0  // 取得滑鼠指標目前的 y 位置
var bodyHeight = 0
var _OBW_HIGHLIGHT_PREV_  = ''
var _OBW_HIGHLIGHT_EVENT_
var _OBW_INTENDED_ = /INPUT|TEXTAREA/

// 取得 layer 物件
function layer (layerID)
{
    if (document.getElementById(layerID)) {
        return document.getElementById(layerID);
    } else if (document.all(layerID)) {
        return document.all(layerID);
    }
}

function getMouseXY(e)
{
    if (IE) {
        mouseX = event.clientX + document.body.scrollLeft
        mouseY = event.clientY + document.body.scrollTop
    } else {
        if (e != undefined) {
            mouseX = e.pageX
            mouseY = e.pageY
        }
    }
    if (mouseX < 0) {
        mouseX = 0
    }
    if (mouseY < 0) {
        mouseY = 0
    }
    bodyHeight = document.documentElement.scrollHeight
    return true
}

function showTips (title, string)
{
    var xx = mouseX
    var yy = mouseY

    layer('box').style.marginLeft =xx +13;

    if(layer('box').style.marginLeft  <= 10 ) layer('box').style.marginLeft  = 10;
    layer('box').style.marginTop =yy;

    if (parseInt(layer('box').style.marginLeft, 10) + 200 >= document.body.clientWidth)
        layer('box').style.marginLeft = document.body.clientWidth - 210

    if (parseInt(layer('box').style.marginTop, 10) >= bodyHeight - 40) {
        layer('box').style.marginTop = yy - layer('box').scrollHeight + 20
    }

    layer('box').style.visibility='visible';
    layer('box').innerHTML =    '<TABLE BORDER=0 CELLSPACING=' + tips_border + ' CELLPADDING=3 WIDTH=200 BGCOLOR="' + tips_border_color + '">'
    + '<TR bgcolor="' + tips_title_background_color + '"><TD STYLE="padding-top:2px;padding-bottom:2px;font:8pt Arial,Verdana,Tahoma;color:' + tips_title_foreground_color + ';">'
    + '&nbsp;&nbsp;<B>' + title + '<B> '
    + '</TD></TR><TR BGCOLOR="' + tips_content_background_color + '"><TD STYLE="color:' + tips_content_foreground_color + ';font:normal 8pt Arial,Verdana,Tahoma;letter-spacing:1px;">' + string
    + '</TD></TR></TABLE>';
}

function hideTips ()
{
    layer('box').style.visibility='hidden'
}

function cwin (url, win_name, width, height, scrollbars, menubar, addon)
{
    if (!scrollbars) scrollbars = 0
    if (!menubar) menubar = 0
    var cwin = window.open(url, win_name, 'resizable=1,menubar='+ menubar + ',scrollbars=' + scrollbars + ',width=' + width + ',height=' + height + ',left=' + parseInt((screen.width - width) /2) + ',top=' + parseInt((screen.height - height) /2) + addon);
    cwin.focus()
    return cwin
}

function selectMaskCheckBoxAll (form)
{
    el  = form.elements;
    len = el.length;
    for (i=0; i<len; i++) {
        if (el[i].type == 'checkbox') {
            el[i].checked = (el[i].checked == true) ? false : true;
        }
    }

}

function selectCheckBoxAll (form)
{
    el  = form.elements;
    len = el.length;
    for (i=0; i<len; i++) {
        if (el[i].type == 'checkbox') {
            el[i].checked = true;
        }
    }

}

function unselectCheckBoxAll (form)
{
    el  = form.elements;
    len = el.length;
    for (i=0; i<len; i++) {
        if (el[i].type == 'checkbox') {
            el[i].checked = false;
        }
    }

}
function selectCheckBoxV (form, prog_name)
{
    var el  = form.elements;
    var len = el.length;
    for (var i=0; i<len; i++) {
        if (el[i].type == 'checkbox') {
            var re = /\[(.*)\]\[(.*)\]/ig;
            var key_array = re.exec(el[i].name)
            if (key_array == null) continue;
            if (key_array[1] == prog_name)
                el[i].checked = true
        }
    }
}
function unselectCheckBoxV (form, prog_name)
{
    var el  = form.elements;
    var len = el.length;
    for (var i=0; i<len; i++) {
        if (el[i].type == 'checkbox') {
            var re = /\[(.*)\]\[(.*)\]/ig;
            var key_array = re.exec(el[i].name)
            if (key_array == null) continue;
            if (key_array[1] == prog_name)
                el[i].checked = false
        }
    }
}
function selectCheckBoxH (form, auth)
{
    var el  = form.elements;
    var len = el.length;
    for (var i=0; i<len; i++) {
        if (el[i].type == 'checkbox') {
            var re = /\[(.*)\]\[(.*)\]/ig;
            var key_array = re.exec(el[i].name)
            if (key_array == null) continue;
            if (key_array[2] == auth)
                el[i].checked = true
        }
    }
}
function unselectCheckBoxH (form, auth)
{
    var el  = form.elements;
    var len = el.length;
    for (var i=0; i<len; i++) {
        if (el[i].type == 'checkbox') {
            var re = /\[(.*)\]\[(.*)\]/ig;
            var key_array = re.exec(el[i].name)
            if (key_array[2] == auth)
                el[i].checked = false
        }
    }
}


function checkel (which)
{
    if (which.style&&_OBW_INTENDED_.test(which.tagName)){
        if ((!IE)&&_OBW_HIGHLIGHT_EVENT_.nodeType==3)
        _OBW_HIGHLIGHT_EVENT_=_OBW_HIGHLIGHT_EVENT_.parentNode.parentNode
        return true
    } else
    return false
}

function highlight (e)
{
    _OBW_HIGHLIGHT_EVENT_= (!IE) ? e.target : event.srcElement
    if (_OBW_HIGHLIGHT_PREV_!='') {
        if (checkel(_OBW_HIGHLIGHT_PREV_))
        _OBW_HIGHLIGHT_PREV_.style.backgroundColor=''
        _OBW_HIGHLIGHT_PREV_=_OBW_HIGHLIGHT_EVENT_
        if (checkel(_OBW_HIGHLIGHT_EVENT_)) {
            if (_OBW_HIGHLIGHT_EVENT_.type == 'file' || _OBW_HIGHLIGHT_EVENT_.type == 'password' || _OBW_HIGHLIGHT_EVENT_.type == 'text' || _OBW_HIGHLIGHT_EVENT_.type == 'textarea') {
                _OBW_HIGHLIGHT_EVENT_.style.backgroundColor=highlightcolor
            }
        }
    } else {
        if (checkel(_OBW_HIGHLIGHT_EVENT_)) {
            if (_OBW_HIGHLIGHT_EVENT_.type == 'file' || _OBW_HIGHLIGHT_EVENT_.type == 'password' || _OBW_HIGHLIGHT_EVENT_.type == 'text' || _OBW_HIGHLIGHT_EVENT_.type == 'textarea') {
                _OBW_HIGHLIGHT_EVENT_.style.backgroundColor=highlightcolor
            }
        }
        _OBW_HIGHLIGHT_PREV_=_OBW_HIGHLIGHT_EVENT_
    }
}

function _OBW_KeyDown (e)
{
    var _e = window.event ? window.event : e
    var e = _e.keyCode ? _e.keyCode : _e.which
    var el = _e.srcElement ? _e.srcElement : _e.target

    index = el.sourceIndex
    // 特別判斷 上下失效
    try {
        if (layer('ui_autoinquiry').style.visibility == 'visible' && (e == 38 || e == 40)) {
            return false
        }
    } catch (_OBW_Error) {}

    if (e == 27) {
        return false
    } else if ((e == 13) && (el.tagName == 'INPUT' && el.type == 'text')) {
        //e = 9
        if (el.name != 'dc_q') {
            nextFocus (index)
            return false
        }
    } else if (document.all(index).tagName == 'SELECT') {
        if (e == 37) {
            prevFocus (index)
        } else if (e == 39 || e == 13) {
            nextFocus (index)
        }
    } else if (e == 38) {
        prevFocus (index)
    } else if (e == 40) {
        if (!(document.all(index).enableKeyCode == 'true' && e == 40)) {
            nextFocus (index)
        }
    }
}

function prevFocus (index)
{
    if (index <= 0) return false
    if (document.all(index-1).tagName == 'INPUT' || document.all(index - 1).tagName == 'TEXTAREA' || document.all(index - 1).tagName == 'SELECT') {
        if (document.all(index-1).readOnly == true) {
            prevFocus (index - 1)
        } else {
            if (document.all(index-1).type != 'hidden') {
                document.all(index - 1).focus()
                if (document.all(index - 1).tagName != 'TEXTAREA' && document.all(index - 1).tagName != 'SELECT') {
                        document.all(index - 1).select()
                }
            }
        }
    } else {
        prevFocus (index - 1)
    }
}

function nextFocus (index)
{
    if ( index >= document.all.length - 1) return false
    if (document.all(index + 1).tagName == 'INPUT' || document.all(index + 1).tagName == 'TEXTAREA' || document.all(index + 1).tagName == 'SELECT') {
        if (document.all(index+1).readOnly == true) {
            nextFocus (index + 1)
        } else {
            if (document.all(index + 1) != 'hidden') {
                document.all(index + 1).focus()
                if (document.all(index + 1).tagName != 'TEXTAREA' && document.all(index + 1).tagName != 'SELECT') {
                    document.all(index + 1).select()
                }
            }
        }
    } else {
        nextFocus (index + 1)
    }
}

function _OUI_changeCombo (o, v, t, s)
{
    var len = v.length
    o.options.length = len
    for (var i=0; i<len; i++) {
        o.options[i].value = v[i];
        o.options[i].text  = t[i];
        if (s == v[i]) {
            o.options[i].selected = true
        }
    }
}

function _OUI_inputDate (e)
{
    var _e = window.event ? window.event : e
    var key_code = _e.keyCode ? _e.keyCode : _e.which
    var oElement = _e.srcElement ? _e.srcElement : _e.target
    if (oElement.readOnly) return

    if (oElement.value == '') oElement.value = "yyyy-mm-dd"
    if (!_e.shiftKey && !_e.ctrlKey && !_e.altKey) {
        if ((key_code > 47 && key_code < 58) || (key_code > 95 && key_code < 106)) {
            if (key_code > 95) key_code -= (95-47)
            oElement.value = oElement.value.replace(/[ymd]/, String.fromCharCode(key_code))
            oElement.value = oElement.value.substring(0, oElement.value.length - 1)
        }
        if (key_code == 8) {
            if (!oElement.value.match(/^[ymd0-9]{4}\-[ymd0-9]{2}\-[ymd0-9]{2}$/))
            oElement.value = "yyyy-mm-dd";
        }
    }
}

function _OUI_inputNumber (e)
{
    var _e = window.event ? window.event : e
    var key_code = _e.keyCode ? _e.keyCode : _e.which
    var oElement = _e.srcElement ? _e.srcElement : _e.target

    //if ((key_code > 47 && key_code < 58) || key == 190)
    var s = oElement.value
    var o = s.split(".")
    lastCode = s.substring(s.length-1, s.length)
    if (lastCode != '.' || o.length > 2) {
        var oInt = parseFloat(oElement.value)
        if (isNaN(oInt)) oInt = ''
        oElement.value = oInt
    }
}

function _OUI_Textarea_fix (obj, my_cols)
{
    var row_intervals = [2, 5, 10, 15];
    var MIN_ROWS    = 1;
    var MAX_ROWS    = 15;
    var MIN_COLS    = my_cols;
    var MAX_COLS    = my_cols;
    var content_len = obj.value.length;
    var num_rows    = 0;

    var lines = obj.value.split("\n");

    for (var i=0; i<lines.length; i++) {
        num_rows++;
        if (lines[i].length > MAX_COLS) {
            num_rows += Math.floor(lines[i].length/MAX_COLS)
        }
    }

    if (content_len == 0) {
        obj.cols = MIN_COLS;
        obj.rows = MIN_ROWS;
    } else {
        if (num_rows <= 1) {
            obj.cols = (content_len % MAX_COLS) + 1 >= MIN_COLS
                    ? ((content_len % MAX_COLS) + 1)
                    : MIN_COLS ;
        } else {
            obj.cols = MAX_COLS;
            obj.rows = MAX_ROWS;
            for (var i=0; i <= row_intervals.length-1; i++) {
                if (num_rows <= row_intervals[i]) {
                    obj.rows = row_intervals[i];
                    break;
                }
            }

        }
    }

}

function _OUI_RSS_switchStyle (sess_id, ig, row)
{
    asid = 'A_' + sess_id + '_' + ig
    bsid = 'B_' + sess_id + '_' + ig
    csid = 'C_' + sess_id + '_' + ig
    if (layer(asid).style.display != 'block') {
        layer(bsid).className = 'rss_focus'
        layer(asid).style.display = 'block'
        layer(asid).style.visibility = 'visible'
        layer(csid).src = dcx_theme_path + "/minus.gif"
    } else {
        ig = -1
    }

    for (i=1; i<=row; i++) {
        asid = 'A_' + sess_id + '_' + i
        bsid = 'B_' + sess_id + '_' + i
        csid = 'C_' + sess_id + '_' + i
        if (ig != i) {
            if (layer(bsid)) {
                layer(bsid).className = ''
                layer(asid).style.display = 'none'
                layer(asid).style.visibility = 'hidden'
                layer(csid).src = dcx_theme_path + "/plus.gif"
            }
        }
    }
}

function _OUI_replicateContainer(o)
{
    oe = o.parentElement;
    while (oe.OUI!="_OUI_UPLOAD") {
        oe = oe.parentElement;
    }
    ne = document.createElement("div")
    oe.insertAdjacentElement("afterEnd", ne)
    all.neCount++
    ne.innerHTML = oe.innerHTML
    ne.name = oe.name
    ne.OUI = "_OUI_UPLOAD"
}

function _OUI_removeContainer(o)
{
    oe  = o.parentElement
    cnt = 0
    while (oe.OUI!="_OUI_UPLOAD") {
        oe = oe.parentElement;
    }
    od = document.getElementsByTagName("DIV");
    for (i = 0 ; i< od.length ; i++) {
        if (od[i].name == oe.name) {
            cnt++;
        }
    }
    if (cnt > 1) {
        oe.removeNode(true);
    } else {
        alert(error_upload_lastcolumn)
    }
}

function _OUI_pickUI (_OUI_TEXT_, _OUI_IMG_, _OUI_POS_, POP_DIV, POP_FRAME)
{
    switch (_OUI_POS_) {
        case 1:
        case 'TOP':
            x = 0
            y = -230
            break;

        case 2:
        case 'RIGHT':
            x = 100
            y = -120
            break;

        case 3:
        case 'BOTTON':
        default:
            x = 0
            y = 0
            break;

        case 4:
        case 'LEFT':
            x = -170
            y = -120
            break;

        case 5:
        case 'MIDDLE':
            x = 0
            y = -120
            break;
    }

    _OUI_TEXT_  = layer(_OUI_TEXT_)
    _OUI_COLOR_ = layer(POP_DIV)
    p = _OUI_getXY(_OUI_TEXT_)

    with (_OUI_COLOR_.style) {
        left = p.x - 1
        top  = p.y + _OUI_TEXT_.offsetHeight+1
        visibility = "visible"
        top   = parseInt(top)  + y
        left  = parseInt(left) + x
    }

    with (frames[POP_FRAME]) {
        _OUI_COLOR_FIELD = _OUI_TEXT_
        _OUI_COLOR_DIV   = _OUI_COLOR_
        _OUI_COLOR_IMAGE = _OUI_IMG_
    }
}

function _OUI_Point (x, y)
{
    this.x = x;
    this.y = y;
}

function _OUI_getXY (o)
{
    p = new _OUI_Point(o.offsetLeft, o.offsetTop);
    do {
        o    = o.offsetParent
        p.x += o.offsetLeft
        p.y += o.offsetTop
        if (o.style.overflow == 'scroll') break
    } while(o.tagName != "BODY")
    return p
}

function _OUI_checkPwdStrength (o, bgcolor) {
    var strength = 0
    var pwd = o.value
    if (pwd) {
        if (pwd.match(/[A-Z]/g)) {
            strength++
        }
        if (pwd.match(/[a-z]/g)) {
            strength++
        }
        if (pwd.match(/[0-9]/g)) {
            strength++
        }
        if (pwd.match(/[^a-zA-Z0-9_]/g)) {
            strength++
        }
        if (pwd.length >= 8) {
            strength++
        }
    }
    for (i=1; i<=5; i++) {
        if (i <= strength) {
            layer('_OUI_checkPwdStrength_' + o.name + '_' + i).style.background = bgcolor
        } else {
            layer('_OUI_checkPwdStrength_' + o.name + '_' + i).style.background = '#FFFFFF'
        }
    }
}

// 設定 Cookie 有效時間，系統就設定兩個月
function cookieDate()
{
   time = new Date();
   setTime = time.getSeconds() + 86400*60;
   CookieDate = new Date();
   CookieDate.setSeconds(setTime);
   return CookieDate.toGMTString();
}

// 取得 Cookie的值
function getCookieVal (offset)
{
   var endstr=document.cookie.indexOf (";",offset);
   if (endstr==-1) endstr=document.cookie.length;
   return unescape(document.cookie.substring(offset, endstr));
}

// 取得 Cookie
function getCookie (name)
{
    var arg=name+"=";
    var alen=arg.length;
    var clen=document.cookie.length;
    var i = 0;
    while (i<clen) {
        var j = i + alen;
        if (document.cookie.substring(i,j)==arg)
            return getCookieVal (j);
        i = document.cookie.indexOf(" ",i)+1;
        if (i==0)
            break;
    }
   return null;
}

// 設定 Cookie
function setCookie (name, value)
{
   var argv = setCookie.arguments;
   var argc = setCookie.arguments.length;
   var expires = (argc > 2) ? argv[2] : null;
   var expires = cookieDate();
   var path = (argc > 3) ? argv[3] : null;
   var domain = (argc > 4) ? argv[4] : null;
   var secure = (argc > 5) ? argv[5] : false;

   document.cookie = name + "=" + escape (value) + ((expires == null) ? "" : ("; expires=" + cookieDate() )) + ((path == null) ? "" : ("; path=" + path)) + ((domain == null) ? "" : ("; domain=" + domain)) + ((secure == true) ? "; secure" : "");

}

// 刪除 Cookie
function deleteCookie (name)
{
    setCookie (name, null)
}


// 是否為電子郵件
String.prototype.isEMail = function ()
{
    return this.match(/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/)
}

String.prototype.isDate = function ()
{
    var monthLength = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
    d     = this.split("-")
    day   = parseInt(d[2], 10)
    month = parseInt(d[1], 10)
    year  = parseInt(d[0], 10)

    if (!day || !month || !year) return false
    if (month >= 13) return false
    if (year/4 == parseInt(year/4)) monthLength[1] = 29
    if (day > monthLength[month-1]) return false
    return true
}

//　字串原型
String.prototype.trim = function ()
{
    return this.replace(/^\s*/, "").replace(/\s*$/, "");
}

String.prototype.padL = function (nLength, sChar)
{
    var sreturn = this;
    while (sreturn.length < nLength) {
        sreturn = String(sChar) + sreturn;
    }
    return sreturn;
}

// 快速取得網頁資料
function getData (web, q)
{
    var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    xmlhttp.Open("POST", web, false);
    xmlhttp.SetRequestHeader ("Content-type", "text/html");
    xmlhttp.Send(q);
    return xmlhttp.responseText;
}

// 禁止被選擇資料
function _OBW_disableSelection (target)
{
    if (typeof target.onselectstart != "undefined") { // IE
        target.onselectstart = function ()
        {
            return false
        }
    } else if (typeof target.style.MozUserSelect != "undefined") { // Firefox
        target.style.MozUserSelect = "none"
    } else { // other
        target.onmousedown = function ()
        {
            return false
        }
    }
    target.style.cursor = "default"
}

var _OBW_DnD_WINDOW_OBJ = ''
var _OBW_DnD_X_      = 0
var _OBW_DnD_Y_      = 0

function _OBW_DnD_MouseDown (Object, e)
{
    _OBW_DnD_WINDOW_OBJ = Object.id
    try {
        layer(_OBW_DnD_WINDOW_OBJ).setCapture()
    } catch (_OBW_Error) {}
    var e = window.event ? window.event : e
    if (window.event) {
        _OBW_DnD_X_ = e.x - layer(_OBW_DnD_WINDOW_OBJ).style.pixelLeft
        _OBW_DnD_Y_ = e.y - layer(_OBW_DnD_WINDOW_OBJ).style.pixelTop
    } else {
        _OBW_DnD_X_ = e.layerX
        _OBW_DnD_Y_ = e.layerY
    }
}

function _OBW_DnD_MouseMove (e)
{
    if (_OBW_DnD_WINDOW_OBJ!='') {
        var e = window.event ? window.event : e
        mX = window.event ? e.x : e.pageX
        mY = window.event ? e.y : e.pageY

        layer(_OBW_DnD_WINDOW_OBJ).style.left = mX - _OBW_DnD_X_ + 'px'
        layer(_OBW_DnD_WINDOW_OBJ).style.top  = mY - _OBW_DnD_Y_ + 'px'
    }
}

function _OBW_DnD_MouseUP ()
{
    if (_OBW_DnD_WINDOW_OBJ != '') {
        try {
            layer(_OBW_DnD_WINDOW_OBJ).releaseCapture();
        } catch (_OBW_Error) {}
        layer(_OBW_DnD_WINDOW_OBJ).onmousemove = null
        _OBW_DnD_WINDOW_OBJ = ''
    }
}

// 關閉顯示
function _OBW_DnD_hideWindow (Object)
{
    Object.style.display    = 'none'
    Object.style.visibility = 'hidden'
}
// 啟動顯示
function _OBW_DnD_showWindow (Object)
{
    Object.style.display    = 'block'
    Object.style.visibility = 'visible'
}
// 將物件位置移到視窗中央
function _OBW_DnD_moveCenter (Object, x, y)
{
    Object.style.pixelLeft = (document.body.clientWidth - (Object.clientWidth ? Object.clientWidth : x)) / 2
    Object.style.pixelTop  = (document.body.clientHeight - (Object.clientHeight ? Object.clientHeight : y)) / 2
}

function _OBW_DnD_resizeWindow (obj, Object)
{
    v = Object.style.display
    Object.style.display = (v == 'none') ? 'block' : 'none'
    obj.src = (v == 'none') ? dcx_theme_path + '/igadget_tabs_008.gif' : dcx_theme_path + '/igadget_tabs_010.gif'
}

// 建立 loading 小圖示
function _OBW_Ajax_Loading ()
{
    if (!document.getElementById('_OBW_AJAX_LOADING_')) {
        IMG = document.createElement("IMG")
        IMG.id = '_OBW_AJAX_LOADING_'
        IMG.src = dcx_theme_path + "/loading.gif"
        IMG.style.position = 'absolute'
        IMG.style.visibility = 'hidden'
        IMG.style.width  = 15
        IMG.style.height = 15
        document.body.appendChild(IMG)
    }
}

// 顯示 loading 小圖示
function _OBW_Ajax_showLoading ()
{
    with (layer('_OBW_AJAX_LOADING_').style) {
        top        = mouseY - layer('_OBW_AJAX_LOADING_').clientWidth
        left       = mouseX - layer('_OBW_AJAX_LOADING_').clientHeight
        visibility = 'visible'
    }
}

// 關閉 loading 小圖示
function _OBW_Ajax_hideLoading ()
{
    layer('_OBW_AJAX_LOADING_').style.visibility = 'hidden'
}

function _OBW_Ajax_getQueryString (o)
{
    var qs = ""
    var n =  o.elements.length;

    for (var i = 0; i < n; i++)  {
        switch (o.elements[i].type) {
            case 'button':
            case 'reset':
                continue
                break
            case 'checkbox':
                if (o.elements[i].checked != true) continue
                break
        }
        if(i < n-1)  {
            qs += o.elements[i].name + "=" + encodeURIComponent(o.elements[i].value) + "&"
        } else {
            qs += o.elements[i].name + "=" + encodeURIComponent(o.elements[i].value)
        }
    }
    return qs
}

try {
    if (document.addEventListener) document.addEventListener('mouseup', _OBW_DnD_MouseUP, true)
    if (document.addEventListener) document.addEventListener('mousemove', _OBW_DnD_MouseMove, true)
    if (document.addEventListener) document.addEventListener('keydown', _OBW_KeyDown, true)
    if (document.attachEvent) document.attachEvent('onmouseup', _OBW_DnD_MouseUP)
    if (document.attachEvent) document.attachEvent('onmousemove', _OBW_DnD_MouseMove)
    if (document.attachEvent) document.attachEvent('onkeydown', _OBW_KeyDown)
} catch (_OBW_Error) {}
