﻿String.prototype.Js_Trim = function(s)
{
    if (typeof (s) != 'string' || s == null || s == '')
    {
        s = '\\s';
    }

    return this.replace(new RegExp('^' + s + '+|' + s + '+$', 'g'), '');
}

String.prototype.Js_ToXmlText = function(s)
{
    if (typeof (s) != 'string' || s == null || s == '')
    {
        return s;
    }
    else
    {
        return this.replace('<', 'g', '&lt;').replace('>', 'g', '&gt;').replace('&', 'g', '&amp;').replace('"', 'g', '&quot;');
    }
}

// Признак разрешения отправки данных формы на сервер (submit). По-умолчанию: true.
var Js_Makc2_Submit_IsEnabled = true;

// Позиция на странице (якорь в URL).
var Js_Makc2_Navigation_Position = window.location.hash;

// Определение класса Куки.
var Js_Makc2_Cookie_Default = function()
{
    // Признак включения.
    this.Js_IsEnabled = navigator.cookieEnabled;

    var value = document.cookie;

    document.cookie = "makc2cookieEnabled=" + new Date().toUTCString();

    this.Js_IsEnabled = document.cookie != value;

    document.cookie = value;

    this.Js_Set = function(name, value, options)
    {
        if (!this.Js_IsEnabled) return;
        
        jQuery.cookie(name, value, options);
    }
}

// Куки.
var Js_Makc2_Cookie = new Js_Makc2_Cookie_Default();

// Отправка POST-запроса с помощью AJAX.
function Js_Makc2_Ajax_Post(js_Url, js_Parameters)
{
    jQuery.post(js_Url, js_Parameters, null);
}

// Обработчик события загрузки тела документа.
function Js_Makc2_Document_Body_Load()
{
}

// Обработчик события отправки данных формы.
function Js_Makc2_Form_Submit()
{
    var result = Js_Makc2_Submit_IsEnabled;

    Js_Makc2_Submit_IsEnabled = true;

    return result;
}

// Перемещение по указанному URL.
// 1. js_Url - URL.
// 2. js_Target - цель.
// 3. js_Params - параметры.
// Результат: Результат подтверждения.
function Js_Makc2_Navigation_Go(js_Url, js_Target, js_Params)
{
    if (!js_Url || js_Url == undefined || js_Url == "")
    {
        return;
    }

    if (js_Params)
    {
        window.open(js_Url, js_Target, js_Params);
    }
    else
    {
        try
        {
            var obj = document.body.appendChild(document.createElement("A"));

            obj.setAttribute("href", js_Url);

            if (typeof (js_Target) == "string" && js_Target != "")
            {
                obj.setAttribute("target", js_Target);
            }

            obj.click();
        }
        catch (e)
        {
            if (typeof (js_Target) == "string" && js_Target != "")
            {
                window.open(js_Url, js_Target);
            }
            else
            {
                window.location = js_Url;
            }
        }
    }
}

function Js_Makc2_Navigation_RemoveAnchor(js_Anchor, js_IsRemoveAlternateAnchor)
{
    if (
            window.location.hash == "#" + js_Anchor
            ||
            js_IsRemoveAlternateAnchor == true && window.location.hash == "#" + js_Anchor + "*"
       )
    {
        Js_Makc2_Navigation_GoToAnchor("");
    }
}

// Переход к якорю.
function Js_Makc2_Navigation_GoToAnchor(js_Anchor, js_IsGoToAlternateAnchor)
{    
    if (!Js_Makc2_Variable_IsUndefined(js_Anchor) && js_Anchor != "")
    {

        if (js_IsGoToAlternateAnchor == true)
        {
            if (window.location.hash == "#" + js_Anchor)
            {
                window.location.hash = "#" + js_Anchor + "*";
            }
            else
            {
                window.location.hash = "#" + js_Anchor;
            }
        }
        else
        {
            var re = new RegExp("\\*$", "gi");

            if (re.test(js_Anchor))
            {
                js_Anchor = js_Anchor.substr(0, js_Anchor.length - 1);

                re = new RegExp("&", "gi");

                var url = String(window.location);

                if (re.test(url))
                {
                    js_Anchor = '&$#' + js_Anchor;
                }
                else
                {
                    re = new RegExp("\\?", "gi");

                    if (re.test(url))
                    {
                        js_Anchor = '&$#' + js_Anchor;
                    }
                    else
                    {
                        js_Anchor = '?$#' + js_Anchor;
                    }
                }

                var index = url.indexOf('#', 0);

                if (index > 0)
                {
                    url = url.substr(0, index) + js_Anchor;
                }
                else
                {
                    url += js_Anchor;
                }

                window.location = url;
            }
            else
            {
                window.location.hash = "#" + js_Anchor;
            }
        }
    }
    else
    {
        var url = location.href;
        
        var index = url.indexOf('#');

        if (index > 0)
        {
            window.location = url.substr(0, index);
        }
    }

    return false;
}

// Подтверждение выполнения действия.
// 1. js_Message - сообщение, показываемое в окне подтверждения.
// Результат: Результат подтверждения.
function Js_Makc2_Action_Confirm(js_Message)
{
    if (js_Message == null || js_Message == undefined || js_Message == "")
    {
        js_Message = "Вы уверены, что хотите это сделать?";
    }

    Js_Makc2_Submit_IsEnabled = window.confirm ? window.confirm(js_Message) : true;

    return Js_Makc2_Submit_IsEnabled;
}

// Переключение видимости элемента.
function Js_Makc2_Element_Visibility_Switch(js_Object)
{
    var obj = Js_Makc2_Element_Get(js_Object);

    if (obj)
    {
        if (obj.style.display == 'block')
        {
            obj.style.display = 'none';
        }
        else
        {
            obj.style.display = 'block';
        }
    }
}

// Преобразование к целому числу.
// 1. js_Value - преобразуемое значение.
// 2. js_Length - длина (количество разрядов).
// 3. js_DefaultValue - Значение по-умолчанию.
function Js_Makc2_Convert_ToInt(js_Value, js_Length, js_DefaultValue)
{
    var result = String(js_Value);

    if (result.length == 0 || result.length > js_Length)
    {
        return parseInt(js_DefaultValue);
    }

    while (result.length > 1 && result.indexOf("0") == 0)
    {
        result = result.substr(1);
    }

    result = parseInt(result);

    if (js_DefaultValue && isNaN(result))
    {
        result = parseInt(js_DefaultValue);
    }

    return result;
}

// Запуск отправки данных формы (submit).
function Js_Makc2_Submit_Run(js_FormID, js_ModuleID, js_CommandName)
{
    Js_Makc2_Element_Value_Set("FormID", js_FormID);
    Js_Makc2_Element_Value_Set("ModuleID", js_ModuleID);
    Js_Makc2_Element_Value_Set("CommandName", js_CommandName);

    document.forms[0].submit();
}

function Js_Makc2_Element_Get(js_Object)
{
    if (typeof (js_Object) == "string")
    {
        var obj = document.getElementById(js_Object);

        if (!obj && document.forms)
        {
            obj = document.forms[0][js_Object];
        }

        return obj;
    }
    else
    {
        return js_Object;
    }
}

function Js_Makc2_Element_Hide(js_Object)
{
    var obj = Js_Makc2_Element_Get(js_Object);

    if (obj)
    {
        obj.style.display = "none";
    }    
}

function Js_Makc2_Element_Show(js_Object)
{
    var obj = Js_Makc2_Element_Get(js_Object);

    if (obj)
    {
        obj.style.display = "";
    }
}

function Js_Makc2_Element_Move(js_Source, js_Target)
{
    if (js_Source == js_Target)
    {
        return;
    }

    var source = Js_Makc2_Element_Get(js_Source);
    var target = Js_Makc2_Element_Get(js_Target);

    var sourceDocumentFragment = document.createDocumentFragment();

    while (source.firstChild)
    {
        sourceDocumentFragment.appendChild(source.firstChild);
    }

    target.appendChild(sourceDocumentFragment);
}

function Js_Makc2_Element_Src_Set(js_Object, js_Value)
{
    var obj = Js_Makc2_Element_Get(js_Object);

    if (obj)
    {
        obj.src = js_Value;
    }
}

function Js_Makc2_Element_Src_Get(js_Object)
{
    var obj = Js_Makc2_Element_Get(js_Object);

    if (obj)
    {
        return obj.src;
    }
    else
    {
        return null;
    }
}

function Js_Makc2_Element_InnerHtml_Set(js_Object, js_Value)
{
    var obj = Js_Makc2_Element_Get(js_Object);

    if (obj)
    {
        obj.innerHTML = js_Value;
    }
}

function Js_Makc2_Element_InnerHtml_Get(js_Object)
{
    var obj = Js_Makc2_Element_Get(js_Object);

    if (obj)
    {
        return obj.innerHTML;
    }
    else
    {
        return null;
    }
}

function Js_Makc2_Element_Value_Set(js_Object, js_Value)
{
    var obj = Js_Makc2_Element_Get(js_Object);

    if (obj)
    {
        obj.value = js_Value;
    }
}

function Js_Makc2_Element_Value_Get(js_Object)
{
    var obj = Js_Makc2_Element_Get(js_Object);

    if (obj)
    {
        return obj.value;
    }
    else
    {
        return null;
    }
}

function Js_Makc2_Element_Click(js_Object)
{
    var obj = Js_Makc2_Element_Get(js_Object);

    if (obj)
    {
        obj.click();
    }
}

function Js_Makc2_Form_Clear(js_Id)
{
    var obj = jQuery('#' + js_Id);

    var items = obj.find('input[type=text], input[type=hidden], textarea');

    var size = items.size();

    for (var i = 0; i < size; i++)
    {
        if (items[i].type == 'hidden')
        {
            try
            {
                var obj_FCKeditor = FCKeditorAPI.GetInstance(items[i].id);

                if (obj_FCKeditor)
                {
                    obj_FCKeditor.SetData('');
                }
            }
            catch (e)
            {
            }
        }
        else
        {
            items[i].value = '';
        }
    }

    items = obj.find('input[type=checkbox], input[type=radio]');

    size = items.size();

    for (var i = 0; i < size; i++)
    {
        items[i].checked = false;
    }

    items = obj.find('select')

    size = items.size();

    if (size > 0)
    {
        items.val(['']);
    }
}

function Js_Makc2_Variable_IsUndefined(js_Variable)
{
    return typeof (js_Variable) == "undefined" || js_Variable == undefined;
}

function Js_Makc2_Variable_IsUndefinedOrNull(js_Variable)
{
    return Js_Makc2_Variable_IsUndefined(js_Variable) || js_Variable == null;
}

function Js_Makc2_Mail_CreateAddressFromItems(js_AddressItems)
{
    return js_AddressItems[0] + "@" + js_AddressItems[1];
}

function Js_Makc2_Mail_Link_Click(js_Link, js_AddressItems)
{
    if (js_Link.href == "javascript:void(0)")
    {
        js_Link.href = "mailto:" + Js_Makc2_Mail_CreateAddressFromItems(js_AddressItems);

        js_Link.click();
    }
}

function Js_Makc2_Flash_Make(movie, width, height, scale, quality, wmode)
{
    var result = "<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0\" width=\"" + width + "\" height=\"" + height + "\" id=\"menu2\" align=\"top\"><param name=\"allowScriptAccess\" value=\"sameDomain\" /><param name=\"movie\" value=\"" + movie + "\" /><param name=\"menu\" value=\"false\" /><param name=\"quality\" value=\"" + quality + "\" /><param name=\"scale\" value=\"" + scale + "\" /><param name=\"salign\" value=\"lt\" /><param name=\"wmode\" value=\"" + wmode + "\" /><param name=\"devicefont\" value=\"true\" /><embed src=\"" + movie + "\" menu=\"false\" quality=\"" + quality + "\" scale=\"" + scale + "\" salign=\"lt\" wmode=\"" + wmode + "\" devicefont=\"true\" bgcolor=\"#ffffff\" width=\"" + width + "\" height=\"" + height + "\" name=\"menu2\" align=\"top\" allowScriptAccess=\"sameDomain\" type=\"application/x-shockwave-flash\" pluginspage=\"http://www.macromedia.com/go/getflashplayer\" /></object></noscript>";
    document.write(result);
}
