﻿mousePosX=0
mousePosY=0
function getMouseXY() {
    if (document.all) {
        if (!event)
          return
        try{
           mousePosX = event.clientX + document.body.scrollLeft
           mousePosY = event.clientY + document.body.scrollTop
        }catch(e){}
    } else {
        var e = arguments[0] || null
        if (!e)
          return
        try{
           mousePosX = e.pageX
           mousePosY = e.pageY
        }catch(e){}
    }
}

var _hiddenselect_ = {}
function hideSelect(divObj) {
    if (!document.all)
        return
    if (!_hiddenselect_[divObj])
        _hiddenselect_[divObj] = []
    var selects = document.getElementsByTagName("SELECT")
    for (var i=0;i<selects.length;i++){
        var o = selects[i]
        var oLeft = o.offsetLeft
        var oTop = o.offsetTop
        while(o.offsetParent!=null) { 
            oParent = o.offsetParent 
            oLeft += oParent.offsetLeft
            oTop += oParent.offsetTop
            o = oParent
        }

        var divLeft = Number(divObj.style.left.split('px')[0])
        var divTop = Number(divObj.style.top.split('px')[0])
        if (isOverLap(oLeft,divLeft,oTop,divTop,oLeft+selects[i].clientWidth,divLeft+divObj.clientWidth,oTop+selects[i].clientHeight,divTop+divObj.clientHeight)) {
            if (elmIsHidden(selects[i], divObj)) {
                selects[i].style.visibility = 'hidden'
                _hiddenselect_[divObj][_hiddenselect_[divObj].length] = selects[i]
            }
        }
    }
}

function elmIsHidden(selectObj, divObj) {
   var divObj = divObj || new Object()
   var parentObj = selectObj
   while (parentObj) {
      if (parentObj == divObj || (parentObj.style.visibility && parentObj.style.visibility == 'hidden'))
           return false 
      parentObj = parentObj.parentElement
   }
   return true
}

function showSelect(divObj) {
   if (!document.all)
      return
   var selectList = _hiddenselect_[divObj]
   if (!selectList || !selectList.length)
      return
   for (var i=0;i<selectList.length;i++) {
       selectList[i].style.visibility = ''
   }
}

function isOverLap(leftS,leftD,topS,topD,rightS,rightD,bottomS,bottomD) {
   if (leftS > leftD && leftS < rightD)
      if (bottomS > topD && topS < bottomD)
         return true
   if (leftS < leftD && rightS > leftD)
      if (bottomS > topD && topS < bottomD)
         return true
   if (bottomS > topD && topS < bottomD)
      if (leftS > leftD && leftS < rightD)
         return true
   return false
}

function SelectedAllBox(boo) {
    var frm = document.forms[0]
    var elm = frm.chk
    if (!elm)
        return
    if (typeof elm.length == 'undefined') {
        elm.checked = boo
    }else {
        for (var i=0;i<elm.length;i++) {
            elm[i].checked = boo
        }
    }
}

function SelectedSingleBox(boo) {
    var elm = document.getElementById('chkall')
    if (!elm)
        return
    if (!boo)
        elm.checked = boo
    else {
        var frm = document.forms[0]
        var elms = frm.chk
        if (!elms)
            return
        if (typeof elms.length == 'undefined') {
            elm.checked = elms.checked
        }else {
            for (var i=0;i<elms.length;i++) {
                if (!elms[i].checked) {
                    elm.checked = elms[i].checked
                    return
                }
            }
            elm.checked = true;
        }
    }
}

function CheckHasSelected() {
    var frm = document.forms[0]
    var elm = frm.chk
    if (elm) {
        if (typeof elm.length == 'undefined') {
            if (!elm.checked) {
                alert (GetResource('You should choose at least one item.'))
                return false
            }else {
                return elm.checked
            }
        }else {
            for (var i=0;i<elm.length;i++) {
                if (elm[i].checked)
                    return true
            }
        }
    }
    alert (GetResource('You should choose at least one item.'))
    return false
}

function OpenWindow(url, winname, width, height, center, params) {
    var center = center || true;
    var left = 0;
    var top = 0;
    if (center) {
        top = (screen.height - height) / 2
        left = (screen.width - width) / 2
    }
    var winname = winname || "_win_" + (new Date()).getTime();
    var s = "width=" + width + ",height=" + height + ",top=" + top + ",left=" + left
    var params = params || []
    if (params.indexOf("menubar") >= 0)
        s += ",menubar=yes"
    else
        s += ",menubar=no"
    if (params.indexOf("resizable") >= 0)
        s += ",resizable=yes"
    else
        s += ",resizable=no"
    if (params.indexOf("scrollbars") >= 0)
        s += ",scrollbars=yes"
    else
        s += ",scrollbars=no"
    if (params.indexOf("titlebar") >= 0)
        s += ",titlebar=yes"
    else
        s += ",titlebar=no"
    var flag = true;
    if (params.indexOf("isreturn") >= 0)
        flag = false;
    else
        flag = true;
    var w = window.open(url, winname, s)
    w.focus();
    if (flag)
        return w;
}

// Extend Array object
if (!Array.prototype.indexOf) {
    Array.prototype.indexOf = function(o){
        for(var i=0;i<this.length;i++)
            if(this[i]==o)return i;
        return-1;
    }
}

if (!Array.prototype.removeAt) {
    Array.prototype.removeAt = function(i){
        return this.slice(0,i).concat(this.slice(i+1,this.length))
    }
}

if (!Array.prototype.remove) {
    Array.prototype.remove = function(o){
        var i=this.indexOf(o);
        if(i!= -1) return this.removeAt(i)
        return this
    }
}

// Extend String object
String.prototype.Ltrim = function()
{
    var regEx = /^\s+/g;
    return this.replace(regEx,''); 
} 

String.prototype.Rtrim = function()
{
    var regEx = /\s+$/g;
    return this.replace(regEx,''); 
}

String.prototype.Trim = function()
{
    var regEx = /(^\s+)|(\s+$)/g;
    return this.replace(regEx,''); 
}
String.prototype.HTMLEncode = function()
{
    var objThis = this;
    var oRegExp = new Array(/\x26/g,/\x3c/g,/\x3e/g,/\x3e/g,/\x27/g);
    var oTarget = new Array('&','<','>','"','\'');
    for (var i=0; i<5; i++)
    {
        objThis = objThis.replace(oRegExp[i], oTarget[i]);
    }
    return objThis;
}
String.prototype.encodeStr = function()
{
    var objThis = this;
    objThis = objThis.HTMLEncode();
    objThis = objThis.replace(/\n/g, '<br>');
    objThis = objThis.replace(/\t/g, ' ');
    objThis = objThis.replace(/\s/g, ' ');
    return objThis; 
}

// Extend Number object
Number.prototype.LengthWithZero = function(oCount)
{ 
    var strText = this.toString();
    while (strText.length<oCount)
    {
        strText = '0' + strText; 
    }
    return strText;
}

var Validator = {
    isEmpty: function(s) {
        return (s.Trim() == "")
    },
    isURL: function(s) {
        var reg = /(:\/\/)|(http:\/\/)|(https:\/\/)|([A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*)/
        return reg.test(s)
    },
    isEmail: function(s) {
        var reg = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/
        return reg.test(s)
    },
    isImage: function(file) {
        var s = file.value
        if (s.Trim() == "")
            return true
        s = s.toLowerCase()
        var reg = /.{1,}\.((jpg)|(gif)|(png)|(bmp))$/
        return reg.test(s)
    },
    isAdImage: function(file) {
        var s = file.value
        if (s.Trim() == "")
            return true
        s = s.toLowerCase()
        var reg = /.{1,}\.((jpg)|(gif))$/
        return reg.test(s)
    }
}

function ShowValidatorMsg(id) {
    var validator = document.getElementById(id)
    if (!validator)
        return;
    validator.style.display = ""
    Page_BlockSubmit = true;
}

function HideValidatorMsg(id) {
    var validator = document.getElementById(id)
    if (!validator)
        return;
    validator.style.display = "none"
    Page_BlockSubmit = false;
}

function AjaxValidator(func, s, img, validator) {
    ShowProcessingImg(img)
    var response = Ajax[func](s)
    validator.IsValid = response.value
    if (response.value){
        ShowSuccessImg(img)
    }else {
        ShowFaultImg(img)
    }
}

function ShowProcessingImg(id) {
    var img = document.getElementById(id)
    if (!img)
        return
    img.style.marginLeft = "3px"
    img.src = ThemeRoot + "images/throbber.gif";
    img.style.display = "";
}

function ShowSuccessImg(id) {
    var img = document.getElementById(id)
    if (!img)
        return
    img.src = ThemeRoot + "images/watchdog-ok.gif";
    img.style.display = "";
}

function ShowFaultImg(id) {
    var img = document.getElementById(id)
    if (!img)
        return
    img.src = ThemeRoot + "images/watchdog-error.gif";
    img.style.display = "";
}

function ChangeContentSize(size, elm){ 
    var elm = elm || "content"
    var obj = document.getElementById(elm);
    obj.style.fontSize = size + "px"; 
    obj.style.lineHeight = "150%";
} 

function PreviewImg(imgFile, destid) 
{
    try{
        var img = document.getElementById(destid);
        img.style.width = "350px"
        img.style.height = "200px"
        img.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgFile.value;
    }catch(e){}
} 

function ResetEditor(id) {
    var oeditor = FCKeditorAPI.GetInstance(id)
    if (!oeditor)
        return
    var elm = document.getElementById(id);
    if (!elm)
        return;
    oeditor.SetHTML(elm.value)
}
if(typeof HTMLElement!="undefined" && !HTMLElement.prototype.insertAdjacentElement){
    HTMLElement.prototype.insertAdjacentElement = function (where,parsedNode) {
     switch (where){
        case 'beforeBegin':
            this.parentNode.insertBefore(parsedNode,this)
            break;
        case 'afterBegin':
            this.insertBefore(parsedNode,this.firstChild);
            break;
        case 'beforeEnd':
            this.appendChild(parsedNode);
            break;
        case 'afterEnd':
            if (this.nextSibling) 
                this.parentNode.insertBefore(parsedNode,this.nextSibling);
            else this.parentNode.appendChild(parsedNode);
            break;
        }
    }
    HTMLElement.prototype.insertAdjacentHTML = function(where,htmlStr) {
        var r = this.ownerDocument.createRange();
        r.setStartBefore(this);
        var parsedHTML = r.createContextualFragment(htmlStr);
        this.insertAdjacentElement(where,parsedHTML)
    }
    HTMLElement.prototype.removeNode = function (){
        this.parentNode.removeChild(this) 
    }
}

var _ESC_ = {}
_ESC_['"'] = escape('"')
_ESC_["'"] = escape("'")
_ESC_["\r"] = escape("\r")
_ESC_["\n"] = escape("\n")
_ESC_[">"] = escape(">")
_ESC_["<"] = escape("<")
var _UNESC_ = {}
_UNESC_[escape('"')] = '"'
_UNESC_[escape("'")] = "'"
_UNESC_[escape("\r")] = "\r"
_UNESC_[escape("\n")] = "\n"
_UNESC_[escape(">")] = ">"
_UNESC_[escape("<")] = "<"
function kwSubstitute(s, kw) {
if (!s || !kw) 
   return s
var v = s || "" + s
   v = "" + v
for (k in kw) 
   v = v.split(k).join(kw[k])
return v
}
var __escape_chars = ['%',' ','&','=']

var __test_o__ = new Object()
var __string_constructor__ = "".constructor
var __list_constructor__ = [].constructor
var __dict_constructor__ = {}.constructor
var __object_constructor__ = __test_o__.constructor
var __native_code__ = Object.constructor
var __STRING_QUOTE_SYM__ = '"'
function ToCodeString(v, quotestring) {
   switch (v.constructor) {
       case __string_constructor__:
            if (quotestring) 
               return quoteString( kwSubstitute(v, _ESC_) )
            else
               return kwSubstitute(v, _ESC_)  
       case __list_constructor__:
            var ar=[] 
            for (var i=0; i<v.length;i++)
                 ar[i] = ToCodeString(v[i],true)
            return '['+ar.join(',')+']'
            break
       case __dict_constructor__:
       case __object_constructor__:
            var ar=[]
            for (var k in v)
                 if (v[k] != null) 
                     ar[ar.length] = quoteString(k) + ':' + ToCodeString(v[k], true) 
            return '{'+ar.join(',')+'}'
       default:
            return v
   }
}

function FromCodeString(s, isrecursive) {
   if (isrecursive) 
       var v = s
   else { 
       s=s.split('\n').join('')
       eval( "var v=" + s )
   }
   switch (v.constructor) {
       case __string_constructor__:
            return kwSubstitute(v, _UNESC_) 
       case __list_constructor__:
            for (var i=0; i<v.length;i++)
                 v[i] = FromCodeString(v[i], true)
            return v 
            break
       case __dict_constructor__:
            for (var k in v)
                 v[k] = FromCodeString(v[k], true)
            return v 
       default:
            return v
   }
 }
 
function quoteString(s) {
     return __STRING_QUOTE_SYM__ + s + __STRING_QUOTE_SYM__ 
}