﻿var isIE = (window.navigator.userAgent.indexOf("MSIE") > 0);
$.fn.calendar.defaults.weeks = ["Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"];
$.fn.calendar.defaults.months = ["Янв", "Фев", "Мар", "Апр", "Май", "Июн", "Июл", "Авг", "Сен", "Окт", "Ноя", "Дек"];
$.fn.datebox.defaults.formatter = function (d) {
    var day = d.getDate().toString();
    return ((day.length>1?day:"0"+day) + "." + (d.getMonth()+1) + "." + d.getFullYear());
}

$(function () {
    var l = $("input.PICKER").datebox().length;
    if (l) $("input.PICKER").datebox("calendar").calendar({
        weeks: ["Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"],
        months: ["Янв", "Фев", "Мар", "Апр", "Май", "Июн", "Июл", "Авг", "Сен", "Окт", "Ноя", "Дек"]
    });
    $("input.TIME").timePicker();
    try {
        CKEDITOR.config.height = "276px";
        CKEDITOR.config.resize_enabled = false;
        CKEDITOR.config.toolbar_Full = [
            { name: 'tools', items: ['Maximize', 'ShowBlocks'] }, { name: 'clipboard', items: ['SelectAll', 'Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'Undo', 'Redo', '-', 'Find', 'Replace', '-', 'Table', 'HorizontalRule'] },
            '/',
            { name: 'styles', items: ['Format', 'Font', 'FontSize'] },
            { name: 'basicstyles', items: ['Bold', 'Italic', 'Underline', 'Strike', 'Subscript', 'Superscript', '-', 'RemoveFormat'] },
            { name: 'paragraph', items: ['JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock', '-', 'NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', '-', 'TextColor', 'BGColor'] }
        ];
    } catch (e) { }
});

function NewXHR() {
    if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        return new ActiveXObject("MSXML2.XMLHTTP");
    }
}

function NewPost(sURL, data, callback) {
    var xhr = NewXHR();
    xhr.open('post', sURL, true);
    xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded');
    xhr.onreadystatechange = function () {if (xhr.readyState == 4 && xhr.status == 200 && callback) callback(xhr);}
    xhr.send(data);
}

function NewGet(sURL, callback) {
    var xhr = NewXHR();
    xhr.open('get', sURL, true);
    xhr.onreadystatechange = function () { if (xhr.readyState == 4 && xhr.status == 200 && callback) callback(xhr); }
    xhr.send();
}

function makeEditLink(rows, linkField, idField, funcName) {
    if (rows.length !=undefined) {
        for (var x = 0; x < rows.length; x++) rows[x][linkField] = "<a href='javascript:" + funcName + "(" + rows[x][idField] + ")'>" + rows[x][linkField] + "</a>";
    } else {
        rows[linkField] = "<a href='javascript:" + funcName + "(" + rows[idField] + ")'>" + rows[linkField] + "</a>";
    }
}

function makeDelButton(rows, obj, grid) {
    for (var x = 0; x < rows.length; x++) {
        var fn = 'javascript:delRecord("' + obj + '","' + rows[x][$ys[obj].PrimaryKey] + '","' + grid + '")';
        rows[x].Del = "<a href='" + fn + "' new='linkbutton' iconCls='icon-cancel' title='Удалить запись'></a>";
    }
}

function createNewControls() {
    $("*[new]").each(function () { $(this)[$(this).attr("new")](); });
}

function createUrl(obj, id, cmd) {
    return ("?WCI=" + obj + "&WCE=" + cmd + "." + $ys[obj].PrimaryKey + "." + id)
}

function errorReport(errors) {
    if (errors && errors.length > 0) {
        var x = 1, s = "<table class='errors'>";
        $(errors).each(function () {
            s += "<tr class='1st'><td class='num'>" + x + "</td><th>Код</th><td>" + this.Number + "</td><th>Модуль</th><td>" + this.Module + "</td><th>Процедура</th><td>" + this.Proc + "</td></tr>";
            s += "<tr class='2nd'><td></td><td colspan='6'>" + this.Descr + "</td></tr>";
            x++;
        });
        s += "</table>";
        var d = $("<div title='&nbsp; Ошибка' iconCls='icon-no'/>").html(s).window({
            width: 600,
            height: 400,
            modal: true,
            minimizable: false,
            maximizable: false,
            collapsible: false,
            draggable: false,
            resizable: false,
            onClose: function () { d.window("destroy") }
        });
    }
}

function delRecord(obj, id, grid, noconfirm) {
var dg = $("#" + grid);
    function _del() {
        NewGet(createUrl(obj, id, "DELRECORD"), function (xhr) {
            eval(xhr.responseText);
            errorReport(json_result.Errors);
            var rId = json_result[$ys[obj].PrimaryKey];
            if (rId) dg.datagrid("deleteRow", dg.datagrid("getRowIndex", parseInt(rId)));
        })
    }
    if (noconfirm) {
        _del();
    } else {
        var row = dg.datagrid("getSelected");
        var confirm = "Вы собираетесь удалить следующую запись:<br/><br/>"+$ys[obj].Caption+": <b>"+row[$ys[obj].NameField]+'</b><br/><br/>Нажмите кнопку "Ok" для подтверждения.';
        $.messager.confirm('Подтвердите удаление', confirm, function (r) { if (r) _del() });
    }
}

function editRecord(obj, id, form, title, grid, rowFormatter) {
    NewGet(createUrl(obj, id, "SEARCH"), function (xhr) {
        eval(xhr.responseText);
        saveRecord(obj, id, form, title, grid, rowFormatter, json_data);
    });
}

function saveRecord(obj, id, form, title, grid, rowFormatter, formData) {
    var dl = $("#dialog-message");
    if (dl.length == 0) dl = $("<div icon='icon-key' title=' " + title + "' id='dialog-message'><div class='msg'/></div>").appendTo(document.body);
    $(".msg", dl).html(form);
    $(".msg .jeui-validatebox", dl).validatebox();
    if (formData) {
        $(".msg *[name]",dl).each(function () {
            var val = formData.rows[0][this.name];
            if (val != null && val != undefined) {
                switch (this.tagName.toLowerCase()) {
                    case "input":
                        switch (this.type) {
                            case "text": this.value = val; break;
                            case "hidden": this.value = val; break;
                            case "check": this.checked = val; break;
                            case "radio": this.checked = val == this.value ? true : false; break;
                        }
                        break;
                    case "select": $("*[value='" + val + "']", this).attr("selected", true); break;
                    case "textarea": this.value = val;break;
                }
            }
        })
    }
    dl.dialog({
        buttons: [{
            text: 'Сохранить',
            iconCls: 'icon-ok',
            handler: function () {
                var data = '';
                $(".msg :input[name]", dl).each(function () { data += this.name + "=" + encodeURIComponent($(this).val()) + "&" });
                NewPost(createUrl(obj, id, "SAVERECORD"), data, function (xhr) {
                    eval(xhr.responseText);
                    errorReport(json_data.Errors);
                    dl.dialog("close");
                    if (rowFormatter) rowFormatter(json_data.rows[0]);
                    if (json_data.rows[0].Del) makeDelButton(json_data.rows, obj, grid);
                    if (grid) {
                        var dg = $('#' + grid);
                        var irow = dg.datagrid("getRowIndex", json_data.rows[0][dg.attr("idField")]);
                        if (irow > -1) {
                            dg.datagrid("updateRow", { index: irow, row: json_data.rows[0] });
                        } else {
                            dg.datagrid("appendRow", json_data.rows[0]);
                        }
                        createNewControls();
                    }
                });
            }
        }, {
            text: 'Закрыть',
            iconCls: 'icon-no',
            handler: function () { $("#dialog-message").dialog("close"); }
        }]
    })
}

function getCookie(name, ret) {
    cookies = document.cookie;
    var start = cookies.indexOf(name + '=');
    if (start == -1) return ret;
    start = cookies.indexOf('=', start) + 1;
    var end = cookies.indexOf(';', start);
    if (end == -1) end = cookies.length;
    var value = unescape(cookies.substring(start, end));
    if (value == null) return ret;
    return value;
}

function setCookie(name, value, expires, path, domain, secure) {
    document.cookie = name + "=" + escape(value) +
        ((expires) ? "; expires=" + expires : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
}

function parseGetParams() {
    var $_GET = {};
    var __GET = window.location.search.substring(1).split("&");
    for (var i = 0; i < __GET.length; i++) {
        var getVar = __GET[i].split("=");
        $_GET[getVar[0]] = typeof (getVar[1]) == "undefined" ? "" : getVar[1];
    }
    return $_GET;
} 

(function ($) {
    $.form = function (index) {
        var frm = index == undefined ? document.forms[0] : document.forms[index];
        this.val = function (fld, val) {
            if (val == undefined) {
                return (frm[fld].value)
            } else {
                frm[fld].value = val;
            }
        }
        this.submit = function () { frm.submit() }
        return (this);
    }
}
)(jQuery);

