var Rx = {
sExecuteActionUrl: '/rx/public/ajax/show/',
    sReturnActionUrl: '/rx/public/ajax/exec/',
    sExecuteSourceUrl: '/rx/public/ajax/source/',
  
    addEvent: function (obj, type, fn)
    {
        if (obj.addEventListener){
            obj.addEventListener( type, fn, false );
        } else if(obj.attachEvent) {
            obj.attachEvent( "on"+type, fn );
        } else {
            obj["on"+type] = fn;
        }
    },

    removeEvent: function (obj, type, fn)
    {
        if (obj.removeEventListener) {
            obj.removeEventListener( type, fn, false );
        } else if (obj.detachEvent){
            obj.detachEvent( "on"+type, obj[type+fn] );
        } else {
            obj["on"+type] = null;
        }
    },

    ajax: function (oParams)
    {//alert(oParams['Url'])
    JsHttpRequest.query(
            oParams['Url'],
            oParams['Params'],
            oParams['OnReady'],
            true
        );

        return true;
    },

    getValuesList: function (sModule, sModel, aCriteria, sTargetId, sNotSelectedText, sFieldName)
    {
        var aRequest = new Object();
        if (aCriteria) {
            aRequest['Criteria'] = aCriteria;
        }

        if (sModule == 'Structure' && sModel == 'Pages') {
            aRequest['Order'] = new Array();
            aRequest['Order']['TreePath'] = 'ASC';
        }

        if (!sNotSelectedText) {
            sNotSelectedText = '- РќРµ РІС‹Р±СЂР°РЅРѕ -';
        }

        if (!sFieldName) {
            sFieldName = 'Name';
        }

        aRequest['Limit']   = 10000;
        aRequest['Offset']  = 0;
        aRequest['_Module'] = sModule;
        aRequest['_Model']  = sModel;
        aRequest['_Action'] = 'List';

        Rx.ajax({
            Url: Rx.sReturnActionUrl,
            Params: aRequest,
            OnReady: function (result, errors)
            {
                var sel = $$(sTargetId + 'Field');
                while (sel.options.length) {
                    sel.options[0] = null;
                }

                sel[0] = new Option(sNotSelectedText, 0);
                for (a in result['array']['Rows']) {
                    sel[sel.options.length] = new Option(result['array']['Rows'][a][sFieldName]['Value'], result['array']['Rows'][a]['Id']['Value']);
                }
            }

        });


    },

    getLeftOffset: function (oElement)
    {
        var _left = 0;

        do {
            _left += oElement.offsetLeft;
        } while(oElement = oElement.offsetParent);

          return _left;
    },

    getTopOffset: function (oElement)
    {
        var _top = 0;

        do {
            _top += oElement.offsetTop;
        } while(oElement = oElement.offsetParent);

          return _top;
    },

    getWidth: function (oElement)
    {
        return oElement.offsetWidth;
    },

    getHeight: function (oElement)
    {
        return oElement.offsetHeight;
    },

    findAjaxScripts: function (sString)
    {
        var oTarget = document.createElement('div');

        var js_ScriptFragment = '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)';
        var js_ScriptSrcFragment = '<script.+(src[ ]*=[ ]*\'(.*?)\'|src[ ]*=[ ]*"(.*?)").+';

        var matchAll = new RegExp(js_ScriptFragment, 'img');
        var matchOne = new RegExp(js_ScriptFragment, 'im');
        var matchSrc = new RegExp(js_ScriptSrcFragment, 'im');

        var arr = sString.match(matchAll) || [];
        var res = [];

        for (var i = 0; i < arr.length; i++)
        {
            var srcMt = arr[i].match(matchSrc);
            if (srcMt) {
                var script = document.createElement("script");
                script.language = "JavaScript";
                script.type = "text/javascript";
                script.src =  (srcMt.length > 3 ? srcMt[3] : srcMt[2]);
                oTarget.appendChild(script);
            }

            var mtCode = arr[i].match(matchOne) || ['', ''];
            if (mtCode[1] != '') {
                var script = document.createElement("script");
                script.language = "JavaScript";
                script.type = "text/javascript";
                script.text =  mtCode[1];
                oTarget.appendChild(script);
            }
        }


        sString = sString.replace(js_ScriptFragment, "");
        sString = sString.replace(js_ScriptSrcFragment, "");

        var oText = document.createElement('div');
        oText.innerHTML = sString;
        oTarget.appendChild(oText);

        //oTarget.innerHTML = sString;

        //alert(sString);

        return oTarget;
    },

    reloadCaptcha: function (sId, sUrl)
    {
        var dt = new Date();
        document.getElementById(sId).src = sUrl + '&' + dt.getTime()
    },

    startSearch: function (nSiteId, sValue)
    { alert(sValue)
        Rx.ajax({
            Url: Rx.sExecuteActionUrl,
            Params:
            {
                _Module: 'Search',
                _Model: 'Index',
                _Action: 'Setsearch',
                SiteId: nSiteId,
                Query: sValue,
                Group: ''
            },
            OnReady: function ()
            {
                location.href = '/search/UseSearch=1/';
            }
        });

    },

    showSearchString: function (sModule, sModel, sField, oElement)
    {
        if (oElement.value.length >= 2) {
            var aRequest = new Object();
            aRequest['Criteria'] = new Array();
            aRequest['Criteria'][sField] = {
                Value: '%' + oElement.value + '%',
                Type: 'LIKE'
            };


            aRequest['Limit']   = 10;
            aRequest['Offset']  = 0;
            aRequest['_Module'] = sModule;
            aRequest['_Model']  = sModel;
            aRequest['_Action'] = 'List';

            Rx.ajax({
                Url: Rx.sReturnActionUrl,
                Params: aRequest,
                OnReady: function (result, errors)
                {
                    var oBox = $$(oElement.id + 'SearchBox');
                    /*if (!oBox) {
                        var oTestBox = document.createElement('div');
                        oTestBox.id = oElement.id + 'SearchBox';
                        oTestBox.className = 'string_search_box';
                        oTestBox.style.display = 'none';
                        $$('DocumentBodyBox').appendChild(oTestBox);
                        oBox = $$(oElement.id + 'SearchBox');
                    }*/


                    //oBox.style.left = Rx.getLeftOffset(oElement) + 'px';
                    //oBox.style.top = Rx.getTopOffset(oElement) + 26 + 'px';

                    var sHtml = '';
                    for (a in result['array']['Rows']) {
                        sHtml += '<div class="string_search_row" onclick="$$(\'' + oElement.id + '\').value = \'' + result['array']['Rows'][a]['Login']['Value'] + '\'; Rx.hideSearchString(\'' + oElement.id + '\');" onmouseover="this.className = \'string_search_row_active\';" onmouseout="this.className = \'string_search_row\';">' + result['array']['Rows'][a]['Login']['Value'] + '</div>';
                    }

                    oBox.innerHTML = sHtml;
                    if (sHtml != '') {
                        oBox.style.display = 'block';
                    } else {
                        oBox.style.display = 'none';
                    }

                    //alert(oBox.left);
                    //alert(oBox.top);
                }

            });
        }
    },

    hideSearchString: function (sFieldId)
    {
        if ($(sFieldId + 'SearchBox')) {
            $$(sFieldId + 'SearchBox').style.display = 'none';
        }

        return true;
    }
};
