﻿function SetUniqueRadioButton(nameregex, current) {
    re = new RegExp(nameregex);
    for (i = 0; i < document.forms[0].elements.length; i++) {
        elm = document.forms[0].elements[i]

        if (elm.type == 'radio') {
            elm.checked = false;
        }
    }
    current.checked = true;
}


//ValidatorGetValue
function ConvertStrCurrentToFloat(obj) {
    var str = obj.toString();
    str = str.replace('р.', '');
    str = str.replace(',', '.');
    str = encodeURI(str).replace(/%C2%A0/g, '');
    return parseFloat(str);
}

Number.prototype.formatMoney = function(c, d, t) {
    var n = this, c = isNaN(c = Math.abs(c)) ? 2 : c, d = d == undefined ? "," : d, t = t == undefined ? "." : t, s = n < 0 ? "-" : "",
    i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0;
    return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t)
    + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
}

function formatView(s,e) {
    var num = s.value;
    num = num.toString().replace(/ /g, '');
    num = num.toString().replace(/,/g, '.');
    var n = num.toString().split('.');
    num = n[0];
    for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
        num = num.substring(0, num.length - (4 * i + 3)) + ' ' + num.substring(num.length - (4 * i + 3));
    s.value = num + (n[1] != undefined ? '.' + n[1] : '');
}

function FormatSpace(s, e) {
    var num = s.value.toString().replace(/ /g, '');
    for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++)
        num = num.substring(0, num.length - (4 * i + 3)) + ' ' + num.substring(num.length - (4 * i + 3));
    s.value = num;
}

// проверка на ввод только цифр Int и '-'
function validateFhone() {
    if (event.keyCode == 45) return true;
    if (event.keyCode < 48 || event.keyCode > 57) {
        event.returnValue = false;
        return false;
    }
    return true;
}

// проверка на ввод только цифр Int
function validateInt() {
    if (event.keyCode < 48 || event.keyCode > 57) {
        event.returnValue = false;
        return false;
    }
    return true;
}
// проверка на ввод только цифр Float
function validateFloat(obj) {
    str = new String(obj.value);
    if ((event.keyCode < 48 || event.keyCode > 57) && event.keyCode != 46 && event.keyCode != 44) {
        event.returnValue = false;
    }
    else if ((event.keyCode == 46 || event.keyCode == 44) && (str.indexOf(".", 0) >= 0 || str.indexOf(",", 0) >= 0)) {
        event.returnValue = false;
    }
}
// проверка на ввод номеров страниц / п/п
function validateListNum(obj) {
    str = new String(obj.value);
    if ((event.keyCode < 48 || event.keyCode > 57) && event.keyCode != 44 && event.keyCode != 45) {
        event.returnValue = false;
    }
}
// проверка на ввод даты
function validateDate(obj) {
    str = new String(obj.value);
    if ((event.keyCode < 48 || event.keyCode > 57) && event.keyCode != 46 && event.keyCode != 45) {
        event.returnValue = false;
    }
}
// валидация номеров платежей
function vListNumPay(obj) {
    str = new String(obj.value);
    if ((event.keyCode < 49 || event.keyCode > 57) && event.keyCode != 44 && event.keyCode != 45) {
        event.returnValue = false;
    }
}
function OnChangeDate(sender) {
    if (sender.value == '' || sender.value.length > 8) return;

    var str = sender.value.slice(0, 2) + "." +
              sender.value.slice(2, 4) + "." +
              (sender.value.length == 4 ? new Date().getFullYear() : sender.value.slice(4, sender.value.length));

    sender.value = str;
}
function OnChangeTime(sender) {
    if (sender.value == '' || sender.value.length > 4) return;

    var str = sender.value.slice(0, 2) + ":" +
              (sender.value.length == 2 ? "00" : sender.value.slice(2, 4)) 

    sender.value = str;
}
function openWindow(path, name, width, height, resizable, scrollbars) {
    if (width == null) width = 1024;
    if (height == null) height = 768;

    height = height > screen.height * 0.86 ? screen.height * 0.86 : height;
    width = width > screen.width * 0.9 ? screen.width * 0.9 : width;

    var strParams = "width=" + width + ", height=" + height + ", top=" + ((screen.height - height) / 2 - 48) +
	                        ", left=" + ((screen.width - width) / 2) + ", resizable=" + resizable + ", scrollbars=" + scrollbars;

    var wnd = window.open(path, name, strParams);
    if (wnd) wnd.focus();
    return false;
}
function openPrintForm(url) {
    try {
        window.location = url + "&t=" + Math.random();
    }
    catch (e)
    { }
    return false;
}


//public enum PositioningMode {
//        Absolute =  0,
//        Center =  1,
//        BottomLeft =  2,
//        BottomRight =  3,
//        TopLeft =  4,
//        TopRight =  5,
//        Right = 6,
//        Left = 7
//    }
    
function getBounds(element, _positioningMode) {

    var offsetParent = element.offsetParent || document.documentElement;
    var parentBounds = $common.getBounds(element);

    var width = element.offsetWidth - (element.clientLeft ? element.clientLeft * 2 : 0);
    var height = element.offsetHeight - (element.clientTop ? element.clientTop * 2 : 0);

    var position;
    switch (_positioningMode) {
        case 1:
            position = {
                x: Math.round(parentBounds.width / 2 - width / 2),
                y: Math.round(parentBounds.height / 2 - height / 2)
            };
            break;
        case 2:
            position = {
                x: 0,
                y: parentBounds.height
            };
            break;
        case 3:
            position = {
                x: parentBounds.width - width,
                y: parentBounds.height
            };
            break;
        case 4:
            position = {
                x: 0,
                y: -element.offsetHeight
            };
            break;
        case 5:
            position = {
                x: parentBounds.width - width,
                y: -element.offsetHeight
            };
            break;
        case 6:
            position = {
                x: parentBounds.width,
                y: 0
            };
            break;
        case 7:
            position = {
                x: -element.offsetWidth,
                y: 0
            };
            break;
        default:
            position = { x: 0, y: 0 };
    }

    var elementBounds = $common.getBounds(element);

    position.x += elementBounds.x;
    position.y += elementBounds.y + 2;

    return new Sys.UI.Bounds(position.x, position.y, width, height);
}
function ShowSearchPanel(s, e, positioning) {
    if (!s || !e) return false;

    s.style.position = "absolute";

    var bounds = getBounds(e, (positioning ? positioning : 2))
    $common.setLocation(s, bounds);
    s.style.display = '';
    
    bounds = $common.getBounds(s);

    // делаем проверку, если панель за экраном то подвигаем ее
    var update = false;
    var sW = document.getElementsByTagName('html')[0].offsetWidth;
    if (bounds.width + bounds.x > sW) {
        bounds.x = bounds.x - (bounds.width + bounds.x + 20 - sW);
        update = true;
    }

    var sH = document.getElementsByTagName('html')[0].offsetHeight;
    if (bounds.height + bounds.y > sH) {
        bounds.y = bounds.y - (bounds.height + bounds.y + 20 - sH);
        update = true;
    }

    if (update) $common.setLocation(s, bounds);
    
    return false;
}
function HideSearchPanel(s, e) {
    if (s.style.display != 'none')
        s.style.display = 'none';
    return false;
}

var selected;
var class_hover;
function OnMouse(sender, eventArgs) {
    if (sender.className == "error") return;
    if (sender.className != "hover") class_hover = sender.className;
    sender.className = eventArgs ? "hover" : (sender == selected ? "selected" : class_hover);
}

function _onKeyDownGrid(s, ev) {
    if (!s.grid) return;
    var k = ev.keyCode ? ev.keyCode : ev.rawEvent.keyCode;
    if (k === Sys.UI.Key.up) {
        if (s.grid.CurrentIndexHover > -1) {
            s.grid.ItemMouseOver(s.grid.CurrentIndexHover - 1);
        }
    }
    else if (k === Sys.UI.Key.down) {
        if (s.grid.CurrentIndexHover < (s.grid.count() - 1)) {
            s.grid.ItemMouseOver(s.grid.CurrentIndexHover + 1);
        }
    }
    else if (k === Sys.UI.Key.enter) {
    if (s.grid.Properties.ClentSideOnSelect2) {
            var event_handler = "(this, {data:" + s.grid.Id + ".Data[" + s.grid.CurrentIndexHover + "], target:" + s.grid.Id + "});";
            execScript(s.grid.Properties.ClentSideOnSelect2 + event_handler);
        }
        if (ev.stopPropagation) ev.stopPropagation();
        else ev.cancelBubble = true;
        if (ev.preventDefault) ev.preventDefault();
        else ev.returnValue = false;
    }
    else if (k === Sys.UI.Key.tab) {
        //alert('tab')
    }
    else { return true; }
    return false;
}

function OnOpenerClose() {
    if (window.opener && typeof (window.opener.OnWindowSelfClose) == 'function') { window.opener.OnWindowSelfClose(); }    
    window.close();
}
