﻿function GPMnetValidate(obj) {

    var targetGroup = (Ext.isEmpty(obj) || Ext.isEmpty(obj.validationGroup)) ? false : obj.validationGroup;
    var inValidformElements = Ext.ComponentMgr.all.filterBy(
        function (o, k) {
            var isFormElement;
            switch (o.getXType()) {
                case "checkbox":
                case "checkboxgroup":
                case "combo":
                case "compositefield":
                case "datefield":
                case "field":
                case "fieldset":
                case "hidden":
                case "htmleditor":
                case "numberfield":
                case "radio":
                case "radiogroup":
                case "textarea":
                case "textfield":
                case "timefield":
                case "trigger":
                    isFormElement = true; break;
                default:
                    isFormElement = false;
            }
            return isFormElement;
        }).filterBy(
            function (o, k) {
                if (o.isVisible()) {
                    if (!targetGroup) {
                        return (Ext.isEmpty(o.validationGroup) && !o.isValid());
                    }
                    else {
                        if (Ext.isEmpty(o.validationGroup)) {
                            return false;
                        }
                        else {
                            return (o.validationGroup === targetGroup) ? !o.isValid() : false;
                        }
                    }
                }
                else {
                    return false;
                }
            });
    return !(inValidformElements.getCount() > 0)
}

function taiwanValidator(value) {

    if (value == "") {
        return "此欄位不可空白";
    }
    if (/^(\d{2,3})\/(\d{1,2})\/(\d{1,2})$/.test(value) == true) {
        var datePart = value.split("/");
        if (Date.isValid(parseInt(datePart[0]) + 1911, parseInt(datePart[1]), parseInt(datePart[2])) == false) {
            return "日期格式不正確";
        }
    }
    else {
        return "日期格式不正確";
    }
};

function taiwanAllowBlankValidator(value) {
    if (value == "") {
    }
    else if (/^(\d{2,3})\/(\d{1,2})\/(\d{1,2})$/.test(value) == true) {
        var datePart = value.split("/");
        if (Date.isValid(parseInt(datePart[0]) + 1911, parseInt(datePart[1]), parseInt(datePart[2])) == false) {
            return "日期格式不正確";
        }
    }
    else {
        return "日期格式不正確";
    }
};
var taiwanDateParse = function (date, strict) {
        var datePart = date.split("/");
        var dayPart = datePart[2].split(" ");
        var _dateYear = parseInt(datePart[0]) + 1911;
        var _dateMonth = parseInt(datePart[1]);
        var _dateDay = parseInt(dayPart[0]);

        if (Date.isValid(_dateYear, _dateMonth, _dateDay) == false) {
            if (strict == true) {
                return null;
            }
        }
        else {
            return new Date(_dateYear, _dateMonth - 1, _dateDay);
        }
    };

    Date.formatFunctions["taiwan"] = function (date) {

        if (Ext.isEmpty(this) == false) {
            var year = this.getFullYear() - 1911;
            var month = this.getMonth() + 1;
            var day = this.getDate();

            return year + "/" + month + "/" + day;
        }
        else {
            return false;
        }
    };

    Date.parseFunctions["taiwan"] = taiwanDateParse;
    // praseFunctions default to has a "H" if the string doesn't contain a time format.
    Date.parseFunctions["taiwan H"] = taiwanDateParse;

    function openTabOnChildPanel(url, rowData) {

        var parnetTab = parent.MainContentTabPanel;
        var targetTitle = parnetTab.getActiveTab().title + "-" + rowData.PlanNumber + "預覽";

        tab = parnetTab.add({
            //id: rowData.Id,
            title: targetTitle,
            closable: true,
            autoLoad: {
                showMask: true,
                url: url + rowData.Id,
                mode: "iframe",
                maskMsg: targetTitle + " 讀取中..."
            }
        });
        parnetTab.setActiveTab(tab);
    }

    if (Ext.DatePicker) {
        Ext.apply(Ext.DatePicker.prototype, {
            okText: "確定"
        });
    } 
