﻿function $$(element) {
    return document.getElementById(element);
}
function $F(element) {
    return document.getElementById(element).value;
}

function getPageSize() {

    var docElem = document.documentElement

    this.width = self.innerWidth || (docElem && docElem.clientWidth) || document.body.clientWidth;

    this.height = self.innerHeight || (docElem && docElem.clientHeight) || document.body.clientHeight;

    this.docheight = Math.max(document.documentElement.scrollHeight, document.documentElement.clientHeight);
}

function getElementSize(elem) {
    this.width = elem.clientWidth || elem.style.pixelWidth;
    this.height = elem.clientHeight || elem.style.pixelHeight;
}

function getScrollPos() {

    var docElem = document.documentElement;

    this.scrollX = self.pageXOffset || (docElem && docElem.scrollLeft) || document.body.scrollLeft;

    this.scrollY = self.pageYOffset || (docElem && docElem.scrollTop) || document.body.scrollTop;
}

function posToCenter(elem) {
    var scrollPos = new getScrollPos();
    var pageSize = new getPageSize();
    var emSize = new getElementSize(elem);

    var pageSizeWidth = pageSize.width;
    var pageSizeheight = pageSize.height;

    var x = Math.round(pageSizeWidth / 2) - (emSize.width / 2) + scrollPos.scrollX;
    var y = Math.round(pageSizeheight / 2) - (emSize.height / 2) + scrollPos.scrollY;
    elem.style.left = x + 'px';
    elem.style.top = y + 'px';
}

function MsgClass(objName) {
    var strHtml = "";
    if ($.browser.msie && $.browser.version != "7.0") {
        strHtml += "<iframe id='msgbgifr' scrolling='no' frameborder='0' style=\"display:none;\" class='msgbgifr'>";
        strHtml += "</iframe>";
    }
    strHtml += "<div id='msgbg' style=\"display:none;\" class='msgbg'>";
    strHtml += "</div>";
    strHtml += '<div class="AlertBoxBox" id="msgbox" style="display:none;">';
    strHtml += '  <div class="AlertBoxInBox">';
    strHtml += '    <div class="AlertBoxBoxContent">';
    strHtml += '      <div class="AlertBoxBoxContenedor">';
    strHtml += '      <span class="AlertBoxBoxTitle">message</span><br /> <p id="msgcontent"></p>';
    strHtml += '      </div>';
    strHtml += '      <div class="AlertBoxButtons">';
    strHtml += '        <input class="BoxAlertBtnOk" onclick="' + objName + '.doOk();" type="button" value="close">';
    strHtml += '      </div>';
    strHtml += '    </div>';
    strHtml += '  </div>';
    strHtml += '</div>';

    document.write(strHtml);

    var backURL = "";
    var objMsg = objName;
    var obj = this;

    var interval;
    var timeout;

    this.AlertMsg = function(errorMsg, strurl, autoHidden) {
        window.clearInterval(interval);
        window.clearTimeout(timeout);

        this.Show(errorMsg, strurl, autoHidden);
        this.Show(errorMsg, strurl, autoHidden);
        interval = window.setInterval(function() {
            obj.Show(errorMsg, strurl, autoHidden);
        }, 500);

        if (strurl != undefined) {
            backURL = strurl;
        }

        if (autoHidden) {
            timeout = window.setTimeout(objName + ".doOk()", 3000);
        }
    }

    this.Show = function(msg, strurl, autoHidden) {
        $("#msgbg").show();
        if ($.browser.msie && $.browser.version != "7.0") {
            $("#msgbgifr").show();
        }
        $("#msgcontent").html(msg);

        var pageSize = new getPageSize();
        if ($.browser.msie && $.browser.version != "7.0") {            
            $("#msgbgifr").css("height", pageSize.docheight + "px");
        }
        $("#msgbg").css("height",pageSize.docheight + "px");
        $("#msgbox").show();

        posToCenter($$("msgbox"));
    }

    this.doOk = function(strurl) {
        if (backURL != "")
            window.location.href = backURL;

        if ($.browser.msie && $.browser.version != "7.0") {
            $("#msgbgifr").hide();
        }
        $("#msgbg").hide();
        $("#msgbox").hide();
        window.clearInterval(interval);
        window.clearTimeout(timeout);
    }
}

var objMsg = new MsgClass("objMsg");

//sAlert
function sAlert(errorMsg, strurl, autoHidden) {

    objMsg.AlertMsg(errorMsg, strurl, autoHidden);
}
function sClose() {
    objMsg.doOk();
}



/*************************** Validate function ********************************/
function ChkFrm(objElement, msg, acType) {
    switch (acType) {
        case 1: // Validate is not null
            if ($F(objElement).length <= 0) {
                sAlert(msg);
                return false;
            }
            break;
        case 2: // Validate is Email
            if (!ValidateEmail($F(objElement))) {
                sAlert(msg);
                return false;
            }
            break;
        case 3: // Validate is number
            if (!ValidateNum($F(objElement))) {
                sAlert(msg);
                return false;
            }
            break;
        case 4: // Validate checkbox or radio
            var eles = document.getElementsByName(objElement);

            if (eles.length <= 0) return false;
            var isSel = false;
            for (var i = 0; i < eles.length; i++) {
                if (eles[i].checked) {
                    isSel = true;
                    return true;
                }
            }
            if (!isSel) {
                sAlert(msg);
                return false;
            }
        case 5: // Validate is time format
            if (!ValidateShortDate($F(objElement))) {
                sAlert(msg);
                return false;
            }
            break;
    }
    return true;
}

function ValidateEmail(source) {
    var patrn = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
    return patrn.exec(source);
}

function ValidateNum(source) {
    var patrn = /^\d+$/;
    return patrn.exec(source);
}

function ValidateS(source) {
    var patrn = /^[a-zA-Z0-9]+$/
    return patrn.exec(source);
}

function ValidateLetter(source) {
    var patrn = /^[a-zA-Z]+$/
    return patrn.exec(source);
}

function ValidateInput(source) {
    len = source.length;
    for (i = 0; i < len; i++) {
        while (source.charAt(i) == " " || source.charAt(i) == "\\" || source.charAt(i) == "/" || source.charAt(i) == "'" || source.charAt(i) == "\"" || source.charAt(i) == "*" || source.charAt(i) == "<" || source.charAt(i) == ">") {
            return true;
        }
    }
}

function ValidateUrl(source) {
    var regExp = new RegExp("((^http)|(^https)|(^ftp)):\/\/(\\w)+\.(\\w)+");
    var rtn = source.match(regExp);
    if (rtn == null) {
        return false;
    }
    else {
        return true;
    }
}

function ValidateLongDate(source) {
    var patrn = /^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29)) (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$/
    return patrn.exec(source);
}

function ValidateShortDate(source) {
    var patrn = /^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29))$/
    return patrn.exec(source);
}
/*************************** Validate function end ********************************/
function redirect(url) {
    window.location.href = url;
}
