﻿$(document).ready(function() {
    Main();
});

function pageLoad(sender, args) {
    load();
}

function load() {
    Sys.WebForms.PageRequestManager.getInstance().remove_endRequest(EndRequestHandler);
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
}

function EndRequestHandler() {
    Main();
}

//--------------------------
function Main() {
    BindTxtCalendar();
    BindTxtColor();
    BindTxt();
    BindTxtInt();
    BindTxtNumber();
    BindTxtCurrency();
    BindTxtFloat();
    BindTxtPhone();
    BindTxtEmail();
    BindTxtIP();
    BindTxtUsername();
    BindCustomFunction();
    BindWaterMarkTextBox();
    BindTxtUSZip();
}





//============= Bind Menu Status =========================
//set menu status
var setselectedtopmenu = null;
var setselectedleftmenu = null;
//edit expense row
var seteditexrow = null;
//Calendar
var dp_cal = null;
var currentcalcontrol = "";

function BindCustomFunction() {
    $(setselectedtopmenu);
    $(setselectedleftmenu);
    $(seteditexrow);
    //Calendar
    dp_cal = null;
    currentcalcontrol = "";
}


//============= Base Control (Skin) =========================
function BindTxtCalendar() {
    $(".txt_dateselect").unbind("click");
    $(".calendardiv").hide();
    $("table.calendar").hide();
    $(".txt_dateselect").dblclick(function() {
        DoEnterDate($(this).context);
    })
    .keypress(function(event) {
        $(this).attr("maxlength", 10);
        if (event.keyCode == 13) {
            $(this).blur();
        }
        return isDateForKeypress($(this).context, event);
    })
    .blur(function() {
        var datetext = $(this).val();
        if (datetext.length == 8 && datetext.indexOf("/") == -1) {
            var d1 = datetext.substr(0, 2);
            var d2 = datetext.substr(2, 2);
            var d3 = datetext.substr(4, 4);
            datetext = d1 + "/" + d2 + "/" + d3;
            $(this).val(datetext);
        }
        if (!isDate($(this).val())) {
            //formatDate($(this).context);
            $(this).val("");
        }
        else {
            formatDate($(this).context);
        }
    });
    $(".txt_dateselect").click(function() {
        if (currentcalcontrol != $(this).attr("id")) {
            dp_cal = null;
            currentcalcontrol = $(this).attr("id");
        }

        if (dp_cal == null) {
            dp_cal = new Epoch('dp_cal', 'popup', $(this).context);
            dp_cal.toggle();
        }
        else {
            dp_cal.toggle();
        }
    });
}

function BindTxtColor() {
    $(".txt_colorselect").click(function() {
        showColorPicker($(this).context, $(this).context);
    })
    .keypress(function(event) {
        $(this).attr("maxlength", 7);
    })
    .blur(function() {
        if ($(this).val() != "") {
            $(this).css("border-right", "solid " + $(this).val() + " 20px");
        }
    });
}

function BindTxtPhone() {
    $(".txt_phone").keypress(function(event) {
        return isPhoneForKeypress($(this).context, event);
    });
}

function BindTxtUSZip() {
    $(".txt_uszip").keypress(function(event) {
        return isUSZipKeypress($(this).context, event);
    });
}

function BindTxtEmail() {
    $(".txt_email").keypress(function(event) {
        return isEmailForKeypress($(this).context, event);
    });
}

function BindTxtIP() {
    $(".txt_ip").keypress(function(event) {
        $(this).attr("maxlength", 15);
        return isIPForKeypress($(this).context, event);
    });
}

function BindTxtUsername() {
    $(".txt_username").keypress(function(event) {
        return isUsernameForKeypress($(this).context, event);
    });
}

function BindTxt() {
    //$(".textbox, .textarea").text($(".textbox,.textarea").text().replace(/[<>]/ig, ""));
    $(".textbox,.textarea").keypress(function(event) {
        if ($(this).attr("watermark") != undefined && $(this).attr("watermark") != '') {
            $(this).removeClass("watermarktext");
            var hiddenid = "#" + $(this).attr("watermarkhiddenid");
            $(hiddenid).val("0");
        }
        return isHtmltag($(this).context, event);
    })
    .focus(function() {
        if ($(this).attr("watermark") != undefined && $(this).attr("watermark") != '') {
            $(this).removeClass("watermarktext");
            var hiddenid = "#" + $(this).attr("watermarkhiddenid");
            if ($(hiddenid).val() == "1") {
                $(this).val('');
            }
        }
    })
    .blur(function() {
        string_filterhtmltag($(this).context, '', 0);
        if ($(this).attr("watermark") != undefined && $(this).attr("watermark") != '') {
            if ($(this).val() == '') {
                $(this).addClass("watermarktext");
                $(this).val($(this).attr("watermark"));
                var hiddenid = "#" + $(this).attr("watermarkhiddenid");
                $(hiddenid).val("1");
            }
            else {
                $(this).removeClass("watermarktext");
                var hiddenid = "#" + $(this).attr("watermarkhiddenid");
                $(hiddenid).val("0");
            }
        }
    });
    $(".textarea").keyup(function(event) {
        if ($(this).attr("maxcount") != null) {
            return LimitWordCount($(this).context, event, parseInt($(this).attr("maxcount")));
        }
    });
}

function BindTxtInt() {
    $(".txt_int").focus(function() {
        decimal_format($(this).context, '', 0);
        $(this).select();
    })
    .keypress(function(event) {
        return isInt($(this).context, event);
    })
    .blur(function() {
        decimal_format($(this).context, '', 0);
    });
}

function BindTxtNumber() {
    $(".txt_number").focus(function() {
        decimal_format($(this).context, '', 0);
        $(this).select();
    })
    .keypress(function(event) {
        return isNumber($(this).context, event);
    })
    .blur(function() {
        decimal_format($(this).context, '', 0);
    });
}

function BindTxtCurrency() {
    $(".txt_currency").focus(function() {
        if ($(this).attr("range") != null) {
            var range = $(this).attr("range").split(',');
            if (range.length >= 2) {
                $(this).attr("maxlength", parseInt(range[0]));
            }
        }
        decimal_filterformat($(this).context, GetCurrencySign($(this).attr("currencysign")), GetPrecision($(this).attr("range")));
        $(this).select();
    })
    .keypress(function(event) {
        return isFloat($(this).context, event);
    })
    .blur(function() {
        decimal_format($(this).context, GetCurrencySign($(this).attr("currencysign")), GetPrecision($(this).attr("range")));
    });
}

function BindTxtFloat(updatearea) {
    $(".txt_float").focus(function() {
        if ($(this).attr("range") != null) {
            var range = $(this).attr("range").split(',');
            if (range.length >= 2) {
                $(this).attr("maxlength", parseInt(range[0]));
            }
        }
        decimal_format($(this).context, '', GetPrecision($(this).attr("range")));
        $(this).select();
    })
    .keypress(function(event) {
        return isFloat($(this).context, event);
    })
    .blur(function() {
        decimal_format($(this).context, '', GetPrecision($(this).attr("range")));
    });
}

function BindWaterMarkTextBox() {
    $("input[watermark],textarea[watermark]").each(function() {
        if ($(this).attr("watermark") != undefined && $(this).attr("watermark") != '') {
            if ($(this).val() == '') {
                var hiddenid = "#" + $(this).attr("watermarkhiddenid");
                $(this).val($(this).attr("watermark"));
                $(hiddenid).val("1");
                $(this).addClass("watermarktext");
            }
            else {
                var hiddenid = "#" + $(this).attr("watermarkhiddenid");
                if ($(hiddenid).val() == "1") {
                    $(this).val($(this).attr("watermark"));
                    $(this).addClass("watermarktext");
                }
            }
        }
    });
}

//============= Common Function =========================

//----Date
/* enter today's date MM/dd/yyyy  */
function DoEnterDate(obj) {
    var today = new Date();
    var thisyear = today.getFullYear();
    var thisday = today.getDate();
    var thismonth = today.getMonth();
    thismonth++;
    if (thismonth.toString().length == 1) {
        thismonth = '0' + thismonth;
    }
    if (thisday.toString().length == 1) {
        thisday = '0' + thisday;
    }
    if (obj.disabled == false) {
        obj.value = thismonth + '/' + thisday + '/' + thisyear;
    }
}
function isDateForKeypress(obj, evt) {
    var periodPos = obj.value.toString().indexOf('/');
    var key = String.fromCharCode(((evt.which == null) ? evt.keyCode : evt.which));
    var keycode = (evt.which == null) ? evt.keyCode : evt.which;
    if (keycode == 0 || keycode == 8) {
        return true;
    }
    if (key == '/') {
        return;
    }
    else {
        if ((('1234567890').indexOf(key) == -1)) {
            try {
                evt.preventDefault();
            }
            catch (e) {
                event.returnValue = false;
            }
        }
    }
}

function isDate(datetext) {
    if (datetext != "") {
        var RegExPattern = /^(?=\d)(?:(?:(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})|(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))|(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2}))($|\ (?=\d)))?(((0?[1-9]|1[012])(:[0-5]\d){0,2}(\ [AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2})?$/;
        var regresult = datetext.match(RegExPattern);
        var regpass = true;
        if (regresult == null)
            regpass = false;
        else
            regpass = true;

        return regpass;
    }
    else
        return true;
}
function formatDate(obj) {
    var dateconid = "#" + obj.id;
    var datetext = obj.value;
    if (datetext != "") {
        var reg = /^(\d{1,2})(\/)(\d{1,2})(\/)(\d{1,4})$/;
        var r = datetext.match(reg);
        if (r == null) { $(dateconid).val(""); }
        try {
            var stryear = r[5];
            if (stryear.length == 2) {
                stryear = "20" + stryear;
            }
            var d = new Date(stryear, r[1] - 1, r[3]);
            var newStr = "";
            newStr += (((d.getMonth() + 1) < 10 && r[1].length > 1) ? ('0' + (d.getMonth() + 1)) : (d.getMonth() + 1)) + "/";
            newStr += (((d.getDate()) < 10 && r[1].length > 1) ? ('0' + d.getDate()) : d.getDate());
            newStr += "/" + d.getFullYear();
            //alert(d.getFullYear());
            $(dateconid).val(newStr);
        }
        catch (e) {
            $(dateconid).val("");
        }
    }
    else {
        $(dateconid).val("");
    }
}
//alert(isDate("02/33/2010"));
function CompareDate(v1, v2, comparetype) {
    var result = false;
    if (!isDate(v1) || !isDate(v2)) {
        return false;
    }
    else {
        v1 = new Date(v1);
        v2 = new Date(v2);
    }
    //compare
    switch (comparetype) {
        case "equal":
            result = (v1 == v2);
            break;
        case "lessthan":
            result = (v1 < v2);
            break;
        case "greaterthan":
            result = (v1 > v2);
            break;
        case "lessthanequal":
            result = (v1 <= v2);
            break;
        case "greaterthanequal":
            result = (v1 >= v2);
            break;
        case "notequal":
            result = (v1 != v2);
            break;
        default:
            result = false;
    }
    return result;
}


//----Phone
function isPhoneForKeypress(obj, evt) {
    var len = obj.value.toString().length;
    if (len == 9) {
        obj.value = obj.value.substr(0, 3) + "-" + obj.value.substr(3, 3) + "-" + obj.value.substr(6, 4)
    }
    else {
        obj.value = obj.value.toString().replace(/\-/g, "");
    }
    var key = String.fromCharCode(((evt.which == null) ? evt.keyCode : evt.which));
    var keycode = (evt.which == null) ? evt.keyCode : evt.which;
    if (keycode == 0 || keycode == 8) {
        return true;
    }

    if ((('1234567890').indexOf(key) == -1)) {
        try {
            evt.preventDefault();
        }
        catch (e) {
            event.returnValue = false;
        }
    }
}



//----Email
function isEmailForKeypress(obj, evt) {
    var periodSub = obj.value.toString().indexOf('@');
    var objv = obj.value.toString();
    
    var key = String.fromCharCode(((evt.which == null) ? evt.keyCode : evt.which));
    var keycode = (evt.which == null) ? evt.keyCode : evt.which;
    if (keycode == 0 || keycode == 8) {
        return true;
    }
    if (key == '@' && periodSub == -1) {
        return;
    }
    else if (key == '.' || key == '-') {
        return;
    }
    else {
        //var valresult = key.match("[a-zA-Z0-9@_\-\.]{1}");
        var valresult = key.match("[a-zA-Z0-9_]{1}");

        if (valresult != null) {
            return;
        }
        else {
            try {
                evt.preventDefault();
            }
            catch (e) {
                event.returnValue = false;
            }
        }
    }
}

//----US Zip
function isUSZipKeypress(obj, evt) {
    var len = obj.value.toString().length;
    if (len == 8) {
        obj.value = obj.value.substr(0, 5) + "-" + obj.value.substr(5, 4)
    }
    else {
        //obj.value = obj.value.toString().replace(/\-/g, "");
    }
    var key = String.fromCharCode(((evt.which == null) ? evt.keyCode : evt.which));
    var keycode = (evt.which == null) ? evt.keyCode : evt.which;
    if (keycode == 0 || keycode == 8) {
        return true;
    }

    if ((('1234567890').indexOf(key) == -1)) {
        try {
            evt.preventDefault();
        }
        catch (e) {
            event.returnValue = false;
        }
    }
}



//----IP
function isIPForKeypress(obj, evt) {
    var key = String.fromCharCode(((evt.which == null) ? evt.keyCode : evt.which));
    var keycode = (evt.which == null) ? evt.keyCode : evt.which;
    if (keycode == 0 || keycode == 8) {
        return true;
    }

    if (('1234567890.').indexOf(key) == -1) {
        try {
            evt.preventDefault();
        }
        catch (e) {
            event.returnValue = false;
        }
    }
}



//----Username
function isUsernameForKeypress(obj, evt) {
    var key = String.fromCharCode(((evt.which == null) ? evt.keyCode : evt.which));
    var keycode = (evt.which == null) ? evt.keyCode : evt.which;
    if (keycode == 0 || keycode == 8) {
        return true;
    }
    
    if ((('1234567890-_.@\\').indexOf(key) == -1) && !(keycode >= 65 && keycode <= 90) && !(keycode >= 97 && keycode <= 122)) {
        try {
            evt.preventDefault();
        }
        catch (e) {
            event.returnValue = false;
        }
    }
}



//----Textbox
function isHtmltag(obj, evt) {
    var key = String.fromCharCode(((evt.which == null) ? evt.keyCode : evt.which));
    var keycode = (evt.which == null) ? evt.keyCode : evt.which;
    if (keycode == 0 || keycode == 8) {
        return true;
    }
    if (key == "<" || key == ">") {
        try {
            evt.preventDefault();
        }
        catch (e) {
            event.returnValue = false;
        }
    }
}
function string_filterhtmltag(obj) {
    obj.value = obj.value.replace("<", '');
    obj.value = obj.value.replace(">", '');
}
function LimitWordCount(obj, evt, maxcount) {
    var key = String.fromCharCode(((evt.which == null) ? evt.keyCode : evt.which));
    var keycode = (evt.which == null) ? evt.keyCode : evt.which;

    if (keycode == 0 || keycode == 8) {
        return true;
    }
    if (obj.value.length <= maxcount) {
        return;
    }
    else {
        obj.value = obj.value.substr(0, maxcount);
        try {
            evt.preventDefault();
        }
        catch (e) {
            event.returnValue = false;
        }
    }
}



//----Number
function decimal_format(obj, prefixstr, pbnum) {
    issub = false;
    if (pbnum > 0)
        obj.value = obj.value.replace(/[^-0-9.]{1,100}/g, "");
    else
        obj.value = obj.value.replace(/[^-0-9]{1,100}/g, "");
    if (Trim(obj.value) == null || Trim(obj.value) == '0' || (obj.value * 1) == 0) {
        if (Trim(obj.value) == null || obj.value == '') {
            obj.value = '';
            return;
        }
        else if (pbnum <= 0) {
            //obj.value = '0';
        }
        else {
            var tmpv = Math.pow(10, pbnum);
            tmpv = tmpv.toString().replace("1", "");
            obj.value = "0." + tmpv;
        }
    }
    else {
        if (obj.value.substr(0, 1) == '-') {
            issub = true;
        }
        obj.value = obj.value.replace("-", "");
        var periodPos = obj.value.toString().indexOf('.');
        if (periodPos == 0) {
            obj.value = '0.' + obj.value.substring(1, obj.value.length);
        }
        else if (periodPos > 0) {
            var val = obj.value.split(".");
            if (Trim(val[1]) == "") {
                obj.value = val[0];
            }
            else if (val[1].length > pbnum) {
                var vals = val[1].substring(0, pbnum);

                if (val[1].substring(pbnum, pbnum + 1) >= 5) {
                    var vals = parseInt(vals) + 1;
                    obj.value = val[0] + "." + vals;
                }
                else {
                    obj.value = val[0] + "." + vals;
                }
            }
            else {
                obj.value = val[0] + "." + val[1];
            }
        }
    }
    if (issub)
        obj.value = "-" + obj.value;

    var obj2 = obj.value;
    if (Trim(prefixstr) != "") {
        var periodPos = obj2.indexOf(prefixstr);

        if (periodPos != 0) {
            obj.value = prefixstr + obj.value;
        }
    }
}
function decimal_filterformat(obj, filterstr, pbnum) {
    issub = false;
    obj.value = obj.value.replace(filterstr, '');
    obj.value = obj.value.replace(/\,/g, '');
    if (obj.value.substr(0, 1) == '-') {
        issub = true;
    }
    obj.value = obj.value.replace("-", "");
    var objval = obj.value;
    var periodPos = objval.indexOf('.');
    if (periodPos == 0) {
        obj.value = '0.' + obj.value.substring(1, obj.value.length);
    }
    else if (periodPos > 0) {
        var val = obj.value.split(".");
        if (val[1] == "") {
            obj.value = val[0];
        }
        else if (val[1].length > pbnum) {
            var vals = val[1].substring(0, pbnum);
            if (val[1].substring(pbnum, pbnum + 1) >= 5) {
                var vals = parseInt(vals) + 1;
                obj.value = val[0] + "." + vals
            }
            else {
                obj.value = val[0] + "." + vals
            }
        }
    }
    if (issub)
        obj.value = "-" + obj.value;
}
function isNumber(obj, evt) {
    var periodSub = obj.value.toString().indexOf('-');
    var key = String.fromCharCode(((evt.which == null) ? evt.keyCode : evt.which));
    var keycode = (evt.which == null) ? evt.keyCode : evt.which;
    if (keycode == 0 || keycode == 8) {
        return true;
    }
    if ((('1234567890').indexOf(key) == -1)) {
        try {
            evt.preventDefault();
        }
        catch (e) {
            event.returnValue = false;
        }
    }
}
function isInt(obj, evt) {
    var periodSub = obj.value.toString().indexOf('-');
    var key = String.fromCharCode(((evt.which == null) ? evt.keyCode : evt.which));
    var keycode = (evt.which == null) ? evt.keyCode : evt.which;
    if (keycode == 0 || keycode == 8) {
        return true;
    }
    if (key == '-' && periodSub == -1 && obj.value.substr(0, 1) != '-') {
        return;
    }
    else {
        if ((('1234567890').indexOf(key) == -1)) {
            try {
                evt.preventDefault();
            }
            catch (e) {
                event.returnValue = false;
            }
        }
    }
}
function isFloat(obj, evt) {
    var periodPos = obj.value.toString().indexOf('.');
    var periodSub = obj.value.toString().indexOf('-');
    var key = String.fromCharCode(((evt.which == null) ? evt.keyCode : evt.which));
    var keycode = (evt.which == null) ? evt.keyCode : evt.which;
    if (keycode == 0 || keycode == 8) {
        return true;
    }
    if (key == '-' && periodSub == -1 && obj.value.substr(0, 1) != '-') {
        return;
    }
    else if (key == '.' && periodPos == -1) {
        return;
    }
    else {
        if ((('1234567890').indexOf(key) == -1)) {
            try {
                evt.preventDefault();
            }
            catch (e) {
                event.returnValue = false;
            }
        }
    }
}
function GetCurrencySign(currencysign) {
    var default_sign = "$";
    if (currencysign == null) {
        currencysign = default_sign;
    }
    return currencysign;
}
function GetPrecision(range) {
    var default_precision = 2;
    var precision = default_precision;
    if (range != null) {
        var _range = range.split(',');
        if (_range.length == 1) {
            precision = parseInt(_range[0]);
        }
        else if (_range.length >= 2) {
            precision = parseInt(_range[1]);
        }
    }
    return precision;
}


//=============Custom Field==================
function CustomValidator_valCbxList(source, args) {
    var valconid = "#" + $("#" + source.id).attr("valcontrolid");
    var result = false;
    $(valconid + " input").each(function() {
        if ($(this).attr("checked") == true) {
            result = true;
        }
    });
    args.IsValid = result;
}

function CustomValidator_valCbx(source, args) {
    var valconid = "#" + $("#" + source.id).attr("valcontrolid");
    var result = false;
    if ($(valconid).attr("checked") == true) {
        result = true;
    }
    args.IsValid = result;
}
