﻿/*** Sys.js begin ***/
String.prototype.trim = function() {
    return this.replace(/(^\s*)|(\s*$)/g, "");
}

window.__jsAlert = window.alert;
window.alert = function() {
    var msg = arguments[0];
    for (var i = 1; i < arguments.length; i++) {
        msg = msg.replace("%s", arguments[i]);
    }
    __jsAlert(msg);
};

//隐现效果
//function showlayer(ccname,bbname){
//	if(document.getElementById(ccname).style.display==""){
//		document.getElementById(ccname).style.display="none";
//		document.getElementById(bbname).className="mtop up";
//		}
//	else{
//		document.getElementById(ccname).style.display=""
//		document.getElementById(bbname).className="mtop down";
//		}
//	}

function completeAlertClose() {
    document.getElementById("completeAlert").style.display = "none";
    App.Page.disableControl(document.body, false);
}

function completeAlertShow() {
    if (typeof __isEdit == "undefined" || __isEdit) {
        var complete = document.getElementById("txtIsComplete").value;
        var cvid = document.getElementById("txtObjectId").value;
        if (complete == "false") {
            var show = JsCookie.GetCookie("CvCompleteAlert" + cvid);
            if (show == null) {
                document.getElementById("completeAlert").style.display = "block";
                App.Page.disableControl(document.body, true);
            }
        }
    }
}

function chkCompleteAlertClick() {
    var chk = document.getElementById("chkCompleteAlert");
    var cvid = document.getElementById("txtObjectId").value;
    if (chk.checked) {
        JsCookie.SetCookie("CvCompleteAlert" + cvid, "x", 365 * 24 * 60 * 60);
    }
    else {
        JsCookie.DelCookie("CvCompleteAlert" + cvid);
    }
}

function alertXpClose() {
    document.getElementById("alertXp").style.display = "none";
    App.Page.disableControl(document.body, false);
}
function alertXp(msg) {
    document.getElementById("alertXpText").innerHTML = msg;
    document.getElementById("alertXp").style.display = "block";
    App.Page.disableControl(document.body, true);
}

SortedList = function() { this.keys = []; }        // 优化的可通加键读取数据的列表, key不能为数字
Object.extend(SortedList.prototype,
{
    add: function(k, v) {
        if (false == isNaN(parseInt(k))) {
            alert("优化的可通加键读取数据的列表, key不能为数字");
            return;
        }
        if (this.containsKey(k)) {
            this.keys[k] = v;
        }
        else {
            this.keys[k] = v;
            this.keys.push(k);
        }
        return this.keys.length - 1;
    },
    remove: function(k) {
        for (var i = 0; i < this.keys.length; i++) {
            if (this.keys[i] == k) {
                this.removeByIndex(i);
                break;
            }
        }
    },
    removeByIndex: function(index) {
        this.keys[this.keys[index]] = null;
        this.keys.splice(index, 1);
    },
    containsKey: function(k) {
        return this.keys[k] != undefined;
    },
    getKeys: function() {
        return this.keys;
    },
    getValue: function(k) {
        if (!this.containsKey(k)) return null;
        return this.keys[k];
    },
    getValueByIndex: function(index) {
        return this.getValue(this.keys[index]);
    },
    setValue: function(k, v) {
        return this.add(k, v);
    },
    count: function() { return this.keys.length; }
}, true);


var App =
{
    DEBUG: document.documentElement.getAttribute("debug") == "true",
    browser:
    {
        isIE: navigator.userAgent.indexOf('MSIE') != -1,
        isIE7: navigator.userAgent.indexOf('MSIE 7') != -1,
        isFirefox: navigator.userAgent.indexOf('Firefox') != -1,
        isOpera: window.opera != null,
        userAgent: navigator.userAgent
    },
    clearControlChar: function(o) {
        o.value = o.value.replace(/\D/g, '');
    },
    replaceContent: function(content, regexList) {
        var sb = content;
        for (var i = 0; i < regexList.length; i++) {
            sb = sb.replace(regexList[i].r, regexList[i].s);
        }
        return sb;
    },
    getLangString: function(lang, useDefault) {
        var res = null;
        switch (lang.toString()) {
            case "0": res = (true == useDefault) ? "" : "zh-cn"; break;
            case "1": res = "en-us"; break;
            default: res = (true == useDefault) ? "" : "zh-cn";
        }
        return res;
    },
    getLangResAbbreviation: function(lang, useDefault) {
        var res = null;
        switch (lang.toString()) {
            case "0": res = (true == useDefault) ? "" : "CN"; break;
            case "1": res = "EN"; break;
            default: res = (true == useDefault) ? "" : "CN";
        }
        return res;
    }
};
App.Page =
{
    getScrollTop: function() {
        return (document.documentElement.scrollTop > document.body.scrollTop) ? document.documentElement.scrollTop : document.body.scrollTop;
    },
    getAbsolutePosition: function(element) {
        if (arguments.length != 1 || element == null) {
            return null;
        }
        var top = element.offsetTop;
        var left = element.offsetLeft;
        var width = element.offsetWidth;
        var height = (element.offsetHeight > element.scrollHeight) ? element.offsetHeight : element.scrollHeight;
        while (element = element.offsetParent) {
            if (element.style.position == 'absolute' || element.style.position == 'relative'
                    || (element.style.overflow != 'visible' && element.style.overflow != '')) {
                break;
            }
            top += element.offsetTop;
            left += element.offsetLeft;
        }
        return { top: top, left: left, width: width, height: height };
    },

    getRelativePosition: function(element, relativeObj) {
        var top = element.offsetTop;
        var left = element.offsetLeft;
        var width = element.offsetWidth;
        var height = (element.offsetHeight > element.scrollHeight) ? element.offsetHeight : element.scrollHeight;
        while (element = element.offsetParent) {
            if (element.style.position == 'absolute' || element.style.position == 'relative'
                    || (element.style.overflow != 'visible' && element.style.overflow != '')) {
                break;
            }
            top += element.offsetTop;
            if (element != relativeObj)
                left += element.offsetLeft;
        }

        return { top: top, left: left, width: width, height: height };
    },

    disableControl: function(control, disable) {
        var control = $(control);
        var over = $("overLayer");

        if (arguments.length == 1) disable = true;

        if (false == disable) {
            control.style.overflow = "";
            over.style.top = "0px";
            over.style.height = "0px";
            over.style.display = "none";

            if (App.browser.isIE) {
                this.hideSelectBoxes(control, false);
            }
        }
        else {
            var position = this.getAbsolutePosition(control);
            var h = position.height;
            var top = position.top;
            if (typeof console != "undefined")
                console.info("body:height %s, isbody:%s", h, (control != document.documentElement));
            //if (control != document.documentElement) over.style.width = "1002px";宽屏就不够了--张帆于2010-9-16
            over.style.width = position.width + "px"; //张帆于2010-9-16
            over.style.top = top + "px";
            over.style.height = (h + 0) + "px";
            over.style.display = "block";
            control.style.overflow = "hidden";

            if (App.browser.isIE) {
                //document.body.onmousewheel = function(){return false};
                this.hideSelectBoxes(control);
            }
        }
    },
    hideSelectBoxes: function(control, hide) {
        if (arguments.length == 1) hide = true;

        var elements = control.getElementsByTagName("select");

        for (var i = 0; i < elements.length; i++) {
            elements[i].style.visibility = hide ? "hidden" : "visible";
        }
    }
};
var __amendLeft = 0, __amendTop = 0;
var __selfUrl = top.location.href.toLowerCase();
var __isEnResume = false;       // ObjectSys.WebPage.init()
/*
if (__selfUrl.indexOf("lang=1") != -1 || __selfUrl.indexOf("en.aspx") != -1)
__isEnResume = true, __amendLeft = -2, __amendTop = -1;
*/

function showTip(oId, outerTip)//显示控件的帮助信息
{
    var obj = document.getElementById(oId);
    var relativeObj = document.getElementById("contentHighSet");
    var position = App.Page.getRelativePosition(obj, relativeObj);
    //var position = JQ("#"+oId).offset();
    var left = position.left + 0; 
    var top = position.top + 0;
    var pop = document.getElementById("tips");
    pop.style.display = "inline";
    if (App.browser.isIE) {
        var tipFrame = document.getElementById("inputTipFrame");
        var tipContent = tipFrame.contentWindow.document.getElementById("tipContent");
        tipContent.innerHTML = outerTip;
        tipFrame.contentWindow.resize();
        top -= tipFrame.contentWindow.document.body.scrollHeight;
        pop.style.width = tipFrame.style.width;
    }
    else {
        pop.innerHTML = "<div class=\"tipcon\">" + outerTip + "</div>";
        top -= pop.offsetHeight;
    }

    pop.style.left = left + "px"; //(left - 20) + "px";
    pop.style.top = (top - 160) + "px";


}
function hideTip(oId, outerTip) {
    document.getElementById("tips").style.display = 'none';
}

function tips(oId, outerTip) { showTip(oId, outerTip); }
function outtips() { hideTip(); }
function showhide(ccname, bbname, inner1, inner2) {
    if (document.getElementById(ccname).style.display == "") {
        document.getElementById(ccname).style.display = "none";
        document.getElementById(bbname).parentNode.className = "up";
        document.getElementById(bbname).innerHTML = inner1;
    }
    else {
        document.getElementById(ccname).style.display = "";
        document.getElementById(bbname).parentNode.className = "down";
        document.getElementById(bbname).innerHTML = inner2;
    }
}
function __getWordCount(oId) {
    var msg = null;

    if ($("txtContextLang").value == "0") {
        msg = "现已输入了 " + $(oId).value.length + " 个字！";
    }
    else {
        msg = "You have entered " + $(oId).value.length + " characters.";
    }
    alert(msg);
}


var FocusWrap =
{
    current: null,
    setFocus: function(module) {
        if (module == undefined) return;
        if (this.current != module) {
            var obj = $("wrap" + module.id);
            if (typeof console != "undefined")
                console.debug("focus: %s， blur:%s", module.id, this.current == null ? "null" : this.current.id);
            if (obj.className) {
                obj.className = "con active";
            }

            this.__sleepSectiones(module, false);
            if (typeof (module.setFocus) == "function") module.setFocus(true);  //获得焦点时，调用模块自定义的行为

            if (this.current != null) {
                this.setBlur(this.current);
            }
            this.current = module;
            window.location.hash = 'anchor_' + module.id;
        }

    },
    setBlur: function(module) {
        var obj = $("wrap" + module.id);
        if (null != obj) obj.className = "con";
        var tip = $("wrap" + module.id + "__tip");
        if (null != tip) tip.style.display = "none";

        this.__sleepSectiones(module, true);
        module.setBlur(false);  //失去焦点时，调用模块自定义的行为
        if (ObjectSys.WebPage.isNewResume == false)//新建简历不走这样的逻辑
        {
            if (module.__state == "Edit")//处于编辑状态时，才触发
                module.RenderEdit();
        }
    },
    __sleepSectiones: function(module, isSleep) {
        if (null == module.section || null == module.section.sectiones) return;

        var obj = null, classNameA = "newblk", classNameB = "newblk_sleep";
        if (false == isSleep) {
            classNameA = "newblk_sleep", classNameB = "newblk";
        }

        var sectionCount = module.section.sectiones.count();
        for (var i = 0; i < sectionCount; i++) {
            obj = module.section.sectiones.getValueByIndex(i).container;
            if (typeof console != "undefined")
                console.debug("focus: [%s, %s]", obj.id, isSleep);
            obj.className = obj.className.replace(classNameA, classNameB);
        }
    },
    showSectionTip: function(module, isShow) {
        if (typeof console != "undefined")
            console.warn("%s[__state:%s] call showSectionTip", module.id, module.__state);
        if (module.__state != "Edit") return;

        var tip = document.getElementById("wrap" + module.id + "__tip");
        var anchor = JQ("#" + module.id + "_title");
        if (tip) {
            isShow = (null == isShow) ? true : isShow;

            tip.style.display = isShow ? "block" : "none";
            tip.style.left = (anchor.width() + 10 + 20) + "px";
        }
    }
}
/*** Sys.js end ***/

if (typeof addEvent == "undefined")

    addEvent = function(o, evType, f, capture) {

        if (o == null) { return false; }

        if (o.addEventListener) {

            o.addEventListener(evType, f, capture);

            return true;

        } else if (o.attachEvent) {

            var r = o.attachEvent("on" + evType, f);

            return r;

        } else {

            try { o["on" + evType] = f; } catch (e) { }

        }

    };



if (typeof removeEvent == "undefined")

    removeEvent = function(o, evType, f, capture) {

        if (o == null) { return false; }

        if (o.removeEventListener) {

            o.removeEventListener(evType, f, capture);

            return true;

        } else if (o.detachEvent) {

            o.detachEvent("on" + evType, f);

        } else {

            try { o["on" + evType] = function() { }; } catch (e) { }

        }

    };

var JsCookie =
{
    GetCookieVal: function(offset)
    //获得Cookie解码后的值
    {
        var endstr = document.cookie.indexOf(";", offset);
        if (endstr == -1)
            endstr = document.cookie.length;
        return unescape(document.cookie.substring(offset, endstr));
    },

    SetCookie: function(name, value)
    //设定Cookie值
    {
        var expdate = new Date();
        var argv = JsCookie.SetCookie.arguments;
        var argc = JsCookie.SetCookie.arguments.length;
        var expires = (argc > 2) ? argv[2] : null;
        var path = (argc > 3) ? argv[3] : null;
        var domain = (argc > 4) ? argv[4] : null;
        var secure = (argc > 5) ? argv[5] : false;
        if (expires != null)
            expdate.setTime(expdate.getTime() + (expires * 1000));
        document.cookie = name + "=" + escape(value) + ((expires == null) ? "" : ("; expires=" + expdate.toGMTString()))
			+ ((path == null) ? "" : ("; path=" + path)) + ((domain == null) ? "" : ("; domain=" + domain))
			+ ((secure == true) ? "; secure" : "");
    },

    DelCookie: function(name)
    //删除Cookie
    {
        var exp = new Date();
        exp.setTime(exp.getTime() - 1);
        var cval = JsCookie.GetCookie(name);
        document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();
    },

    GetCookie: function(name)
    //获得Cookie的原始值
    {
        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 JsCookie.GetCookieVal(j);
            i = document.cookie.indexOf(" ", i) + 1;
            if (i == 0) break;
        }
        return null;
    }
};

/*StringBuilder*/
function StringBuilder(str) {
    this.tmp = new Array();
};
StringBuilder.prototype.Append = function(value) {
    this.tmp.push(value);
    return this;
};
StringBuilder.prototype.Clear = function() {
    this.tmp.length = 1;
};
StringBuilder.prototype.toString = function() {
    return this.tmp.join('');
};
//TrimEnd val
StringBuilder.prototype.TrimEnd = function(val) {
    if (this.tmp[this.tmp.length - 1] == val) return this.tmp.pop();
    else return this.tmp;
};
/*End StringBuilder*/
function GetObjWHLT(obj) {
    var browser = window.navigator.userAgent
    var objWHLT = { left: 0, top: 0, width: 0, heigth: 0 };
    var nLt = 0;
    var nTp = 0;
    var offsetParent = obj;
    while (offsetParent != null && offsetParent != document.body) {
        nLt += offsetParent.offsetLeft;
        nTp += offsetParent.offsetTop;
        if (browser.isIE && browser.IE.version != "6.0") {
            parseInt(offsetParent.currentStyle.borderLeftWidth) > 0 ? nLt += parseInt(offsetParent.currentStyle.borderLeftWidth) : "";
            parseInt(offsetParent.currentStyle.borderTopWidth) > 0 ? nTp += parseInt(offsetParent.currentStyle.borderTopWidth) : "";
        }
        offsetParent = offsetParent.offsetParent;
    }
    objWHLT.left = nLt;
    objWHLT.top = nTp;
    objWHLT.width = obj.offsetWidth;
    objWHLT.height = obj.offsetHeight;
    return objWHLT;
}
//考虑了全半角的SubString
function GetSubString(str, len) {
    if (len == "undefined") {
        return str;
    }
    var newStr = new Array();
    var index = 0;
    for (var i = 0; i <= str.length - 1; i++) {
        var _str = str.substring(i, i + 1);
        var code = escape(str.charAt(i));
        if ((code.length >= 4) && (code < '%uFF60' || code > '%uFF9F')) {
            index = index + 2;
        }
        else {
            index = index + 1;
        }
        if (index <= len) {
            newStr.push(_str);
        }
        else {
            //newStr.push("...");
            break;
        }
    }
    return newStr.join("");
}
function GetSubStringLen(str) {
    var newStr = new Array();
    var index = 0;
    for (var i = 0; i <= str.length - 1; i++) {
        var _str = str.substring(i, i + 1);
        var code = escape(str.charAt(i));
        if ((code.length >= 4) && (code < '%uFF60' || code > '%uFF9F')) {
            index = index + 2;
        }
        else {
            index = index + 1;
        }
    }
    return index;
}
