﻿var Utils = function() {

	this.findPosY = function(obj) {
		var posTop = 0;
		while (obj.offsetParent) { posTop += obj.offsetTop; obj = obj.offsetParent; }
		return posTop;
	}

	this.findPosX = function(obj) {
		var posLeft = 0;
		while (obj.offsetParent) { posLeft += obj.offsetLeft; obj = obj.offsetParent; }
		return parseInt(posLeft) + 10;
	}

	this.getInputValue = function(input) {
		///<summary>Получить значение TextBox-а. Если оно равно значению Watermark-a - вернет пустую строку.</summary>
		if (!input)
			return '';

		if (input.MaskedEditBehavior && !input.MaskedEditBehavior.get_MaskDisabled()) {
			if (input.MaskedEditBehavior.get_ClearMaskOnLostFocus()) {
				return input.MaskedEditBehavior._getClearMask(AjaxControlToolkit.TextBoxWrapper.get_Wrapper(input).get_Value());
			}
			else {
				if (input.MaskedEditBehavior._EmptyMask == AjaxControlToolkit.TextBoxWrapper.get_Wrapper(input).get_Value()) {
					return '';
				}
				else {
					return AjaxControlToolkit.TextBoxWrapper.get_Wrapper(input).get_Value();
				}
			}
		}
		if (input.TextBoxWatermarkBehavior) {
			return input.TextBoxWatermarkBehavior.get_Text();
		}
		return AjaxControlToolkit.TextBoxWrapper.get_Wrapper(input).get_Value();
	}

	this.getSelectValue = function(select) {
		var index = select.selectedIndex;
		return select.options[index].innerHTML;
	}

	this.getPassportValue = function(input) {
		if (!input)
			return '';
		var result = input.value;
		var seria = result.substring(0, 4);
		var nomer = result.substring(4);
		return seria + " " + nomer;
	}

	this.setInputValue = function(input, value) {
		///<summary>Установить значение TextBox-a</summary>
		if (!input)
			return;

		if (input.MaskedEditBehavior && !input.MaskedEditBehavior.get_MaskDisabled()) {
			input.MaskedEditBehavior.loadValue(value.toString(), input.MaskedEditBehavior._LogicFirstPos);
			input.MaskedEditBehavior._PeforformValidLostFocus(true);
		}
		else {
			AjaxControlToolkit.TextBoxWrapper.get_Wrapper(input).set_Value(value);
		}
	}

	this.insertSpaces = function(value) {
		///<summary>Через каждые три символа вставляет пробелы в числа.</summary>
		value = value.split('');
		var result = "";
		var j = 0;
		for (var i = value.length - 1; i >= 0; i--) {
			result = value[i] + result;
			j++;
			if (j == 3) {
				result = " " + result;
				j = 0;
			}
		}
		return result.trim();
	}

	this.replaceSpaces = function(value) {
		///<summary>Удаляет все пробелы из строки</summary>
		return value.replace(/\s+/g, '');
	}

	this.getEventSrcElement = function(e) {
		return null;
	}
}

function PopupKeyDownHandler(event, enterDelegate, escDelegate) {
    if (event.keyCode == Sys.UI.Key.enter)
        enterDelegate.call();
    else if (event.keyCode == Sys.UI.Key.esc && escDelegate != null)
        escDelegate.call();
}

function WrongChars() {
	alert('Пожалуйста, переключитесь на русский язык');
}

//Показываем промо баннер 
function ShowPopupBanner() {
	var div = $get('popupBannerFrameDiv');
	if (div) {
		if (div.childNodes.length == 0) {
			div.innerHTML = '<iframe frameborder="0" src="banner_popup/popup.html"></iframe>';			
		}
		div.style.display = 'block';
	}
	return false;
}

//Отправляем на страницу с ошибкой 
function callServerError(error) {
	if (typeof (errorLink) != 'undefined' && errorLink) {
		//Сохраняем ошибку в сессии
		PageMethods.HandleJSError(error);
		document.location = errorLink;
	}
}

//Переводим значения в верхний регистр
function UpperCaseInput(input) {
	var util = new Utils();
	util.setInputValue(input, util.getInputValue(input).toUpperCase());
}

function IsPoliceCanSave(lasteditdate) {
    var dataChanged = false;
    $.ajax({
        type: "POST",
        async: false,
        url: "default.aspx/IsPoliceCanSave",
        data: "{'LastSaveDate' : '" + lasteditdate + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(ret) {
            dataChanged = ret.d;
        }
    });
    return dataChanged;
}

function SetLastEditDate() {
    $.ajax({
        type: "POST",
        url: "default.aspx/GetLastEditDate",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(ret) {
            $get(hLastEditDateId).value = ret.d;
        }
    });
}

function ConfirmDataChange() {
    var datachanged = IsPoliceCanSave($get(hLastEditDateId).value);
    if (!datachanged) {
        return answer = confirm("В расчет уже внесены данные. Сохранение введенных изменений приведет к потере указанной информации. Перезаписать?");
    }

    return true;
}

//Формат числа http://art-blog.ru/blog/topic/49/
//var number = 28450.75;
//alert(number_format(number));
//// 28,450.75
//alert(number_format(number, { decimals: 0, thousands_sep: "" }));
//// 28451
//alert(number_format(number, { thousands_sep: " ", dec_point: "," }));
//// 28 450,75
//alert(number_format(number, { after: " руб.", thousands_sep: "", dec_point: "-" }));
//// 28450-75 руб.
//alert(number_format(number, { after: " коп.", thousands_sep: "", dec_point: " руб. " }));
//// 28450 руб. 75 коп.
//alert(number_format(number, { before: "USD ", thousands_sep: "" }));
//// USD 28450.75
function number_format(_number, _cfg) {
    function obj_merge(obj_first, obj_second) {
        var obj_return = {};
        for (key in obj_first) {
            if (typeof obj_second[key] !== 'undefined') obj_return[key] = obj_second[key];
            else obj_return[key] = obj_first[key];
        }
        return obj_return;
    }
    function thousands_sep(_num, _sep) {
        if (_num.length <= 3) return _num;
        var _count = _num.length;
        var _num_parser = '';
        var _count_digits = 0;
        for (var _p = (_count - 1); _p >= 0; _p--) {
            var _num_digit = _num.substr(_p, 1);
            if (_count_digits % 3 == 0 && _count_digits != 0 && !isNaN(parseFloat(_num_digit))) _num_parser = _sep + _num_parser;
            _num_parser = _num_digit + _num_parser;
            _count_digits++;
        }
        return _num_parser;
    }
    if (typeof _number !== 'number') {
        _number = parseFloat(_number);
        if (isNaN(_number)) return false;
    }
    var _cfg_default = { before: '', after: '', decimals: 2, dec_point: '.', thousands_sep: ',' };
    if (_cfg && typeof _cfg === 'object') {
        _cfg = obj_merge(_cfg_default, _cfg);
    }
    else _cfg = _cfg_default;
    _number = _number.toFixed(_cfg.decimals);
    if (_number.indexOf('.') != -1) {
        var _number_arr = _number.split('.');
        var _number = thousands_sep(_number_arr[0], _cfg.thousands_sep) + _cfg.dec_point + _number_arr[1];
    }
    else var _number = thousands_sep(_number, _cfg.thousands_sep);
    return _cfg.before + _number + _cfg.after;
}

function getRGB(color) {
    var hex = parseInt(color, 16);
    var r = (hex & 0xff0000) >> 16;
    var g = (hex & 0x00ff00) >> 8;
    var b = hex & 0x0000ff;
    return [r, g, b];
}

function getHEX(color) {
    var red = parseInt(color[0]);
    var green = parseInt(color[1]);
    var blue = parseInt(color[2]);

    var rgb = blue | (green << 8) | (red << 16);
    return '#' + rgb.toString(16);
}
function querySt(ji) {
    hu = window.location.search.substring(1);
    gy = hu.split("&");
    for (i = 0; i < gy.length; i++) {
        ft = gy[i].split("=");
        if (ft[0] == ji) {
            return ft[1];
        }
    }
    return '';
}

function Wait() {

    //Get the screen height and width   
    var maskHeight = $(document).height();
    var maskWidth = $(window).width();

    //Set height and width to mask to fill up the whole screen   
    $('#maskBlack').css({ 'width': maskWidth, 'height': maskHeight, 'left': 0, 'top': 0 });

    $('#maskBlack').fadeTo("slow", 0.5);
};

//if close button is clicked   
function Ready() {
    $('#maskBlack').fadeOut("slow");
}

//инициируем XMLHTTP 
function getXmlHttp() {
    var xmlhttp;
    try {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e) {
        try {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (E) {
            xmlhttp = false;
        }
    }
    if (!xmlhttp && typeof XMLHttpRequest != "undefined") {
        xmlhttp = new XMLHttpRequest();
    }
    return xmlhttp;
}

