/* Вспомогательные функции для TinyMCE — НАЧАЛО */
function tinyShowExtendPanel(editorname,panelname,show){ // Включение - выключение вспомогательных панелей
        var panel = tinymce.DOM.get(editorname+'_'+panelname+'_panel');
        if (panel){
                if (show=='on'){
                        tinySaveSelection(editorname);
                        tinyToggleToolbar(editorname,"off");
                        panel.style.display = "";
                }
                else{
                        tinyToggleToolbar(editorname,"on");
                        panel.style.display = "none";
                }
        }
}
function tinySaveSelection(editorname){
        eval(editorname+'_bmk = tinyMCE.activeEditor.selection.getBookmark();')
}
function tinyRestoreSelection(editorname){
        eval('tinyMCE.activeEditor.selection.moveToBookmark('+editorname+'_bmk);')
}
function tinyToggleToolbar(editorname,show){ // Включение - выключение панели инструментов tiny
        var tlbr = tinymce.DOM.get(editorname + '_toolbar1').parentNode.parentNode;
        var tbl = tinymce.DOM.get(editorname + '_tbl');
        if (show=='on'){
                tlbr.style.display = "";
                tbl.style.height = parseInt(tbl.style.height,10) + tlbr.offsetHeight + 'px';
        }
        else{
                tbl.style.height = parseInt(tbl.style.height,10) - tlbr.offsetHeight + 'px';
                tlbr.style.display = "none";
        }
}
function tinyFilePreload(editorname){
        var filealt = tinymce.DOM.get(editorname + '_filealt'); filealt.value = '';
        var filepanel = tinymce.DOM.get(editorname+'_file_panel');
        for (i=0; i<filepanel.childNodes.length; i++) if (filepanel.childNodes[i].tagName=="DIV") filepanel.childNodes[i].style.display = (filepanel.childNodes[i].id==(editorname + '_file_wait'))?"none":"";
}
function tinyFileInsertAccept(editorname,editformid,uploadfilestorage,uploadfiletheme,uploadfilerubric,uploadfileuid){
        var filefile = tinymce.DOM.get(editorname + '_filefile');
        var filefakefile = tinymce.DOM.get(editorname + '_filefakefilename');
        var filealt = tinymce.DOM.get(editorname + '_filealt');
        if (filefile.value==''){ alert('Укажите файл'); return false; }
        if (trim(filealt.value)==''){ alert('Укажите подпись к файлу'); return false; }
        var filepanel = tinymce.DOM.get(editorname+'_file_panel');
        for (i=0; i<filepanel.childNodes.length; i++) if (filepanel.childNodes[i].tagName=="DIV") filepanel.childNodes[i].style.display = (filepanel.childNodes[i].id==(editorname + '_file_wait'))?"":"none";
        filefakefile.value = '';
        uploadFileAjax(filefile,editformid,'fileuploadframe','',uploadfilestorage,uploadfiletheme,uploadfilerubric,uploadfileuid,'','tinyFileInsertOnLoad("'+editorname+'",uploadimage,uploadimageid,uploadimagesize,uploadimageext,"'+htmlspecialchars(trim(filealt.value))+'");','');
}
function tinyFileInsertOnLoad(editorname,uploadimage,uploadimageid,uploadimagesize,uploadimageext,alt){ // Вставка файла
        tinyRestoreSelection(editorname);
        var filepanel = tinymce.DOM.get(editorname+'_file_panel');
        for (i=0; i<filepanel.childNodes.length; i++) if (filepanel.childNodes[i].tagName=="DIV") filepanel.childNodes[i].style.display = (filepanel.childNodes[i].id==(editorname + '_file_wait'))?"none":"";
        if (uploadimageid>0){
                var code = '<div class="file"><a href="'+uploadimage+'"><img src="/pics/i/file.gif" alt="" />'+alt+'</a><span> ('+uploadimageext+', '+uploadimagesize+')</span></div>';
                tinyMCE.activeEditor.selection.setContent(code);
                //tinyMCE.execCommand('mceInsertContent',false,code);
                tinyShowExtendPanel(editorname,'file','off');
        }
}
function tinyImagePreload(editorname){
        var imagealt = tinymce.DOM.get(editorname + '_imagealt'); imagealt.value = '';
        var imagetext = tinymce.DOM.get(editorname + '_imagetext'); imagetext.checked = false;
        var imagepanel = tinymce.DOM.get(editorname+'_image_panel');
        if (tinyMCE.activeEditor.selection.getNode().nodeName=="IMG"){
                if (!confirm('Вставить увеличенное изображение выбранного объекта?')) return false;
                imagetext.style.display = 'none';
        }
        else imagetext.style.display = '';
        for (i=0; i<imagepanel.childNodes.length; i++) if (imagepanel.childNodes[i].tagName=="DIV") imagepanel.childNodes[i].style.display = (imagepanel.childNodes[i].id==(editorname + '_image_wait'))?"none":"";
        return true;
}
function tinyImageAccept(editorname,editformid,uploadfilestorage,uploadfiletheme,uploadfilerubric,uploadfileuid){
        var imagefile = tinymce.DOM.get(editorname + '_imagefile');
        var imagefakefile = tinymce.DOM.get(editorname + '_imagefakefilename');
        var imagealt = tinymce.DOM.get(editorname + '_imagealt');
        var imagetext = tinymce.DOM.get(editorname + '_imagetext');
        if (imagefile.value==''){ alert('Укажите изображение'); return false; }
        if ((imagetext.checked==true) && (trim(imagealt.value)=='')) { alert('Укажите альт-текст в качестве подписи'); return false; }
        var imagepanel = tinymce.DOM.get(editorname+'_image_panel');
        for (i=0; i<imagepanel.childNodes.length; i++) if (imagepanel.childNodes[i].tagName=="DIV") imagepanel.childNodes[i].style.display = (imagepanel.childNodes[i].id==(editorname + '_image_wait'))?"":"none";
        imagefakefile.value = '';
        uploadFileAjax(imagefile,editformid,'fileuploadframe','',uploadfilestorage,uploadfiletheme,uploadfilerubric,uploadfileuid,'','tinyImageOnLoad("'+editorname+'",uploadimage,uploadimageid,uploadimagewidth,uploadimageheight,"'+htmlspecialchars(trim(imagealt.value))+'","'+((imagetext.checked==true)?1:0)+'");','');
}
function tinyImageOnLoad(editorname,uploadimage,uploadimageid,imgwidth,imgheight,imgalt,imgtext){ // Вставка изображения
        tinyRestoreSelection(editorname);
        var imagepanel = tinymce.DOM.get(editorname+'_image_panel');
        for (i=0; i<imagepanel.childNodes.length; i++) if (imagepanel.childNodes[i].tagName=="DIV") imagepanel.childNodes[i].style.display = (imagepanel.childNodes[i].id==(editorname + '_image_wait'))?"none":"";
        if (uploadimageid>0){
                var imagecode = '';
                if (tinyMCE.activeEditor.selection.getNode().nodeName=="IMG"){
                        imagecode = tinymce.DOM.getOuterHTML(tinyMCE.activeEditor.selection.getNode());
                        imagecode = '<a href="'+uploadimage+'" class="lightview" target="_blank" title="'+imgalt+'">'+imagecode+'</a>';
                        tinyMCE.activeEditor.selection.setContent(imagecode);
                }
                else{
                        if (imgtext==1){ // Если изображение с подписью
                                imagecode = '<div class="left" style="width: '+imgwidth+'px;"><img src="'+uploadimage+'" width="'+imgwidth+'" height="'+imgheight+'" alt="'+htmlspecialchars(imgalt)+'" /><span>'+imgalt+'</span></div>';
                        }
                        else{ // Если просто изображение
                                imagecode = '<img src="'+uploadimage+'" width="'+imgwidth+'" height="'+imgheight+'" alt="'+imgalt+'" />';
                        }
                        tinyMCE.activeEditor.selection.setContent(imagecode);
                }
                tinyShowExtendPanel(editorname,'image','off');
        }
}
function tinyImageAlignment(editorname,align){
        if (tinyMCE.activeEditor.selection.getNode().nodeName=="IMG"){
                if (tinyMCE.activeEditor.selection.getNode().parentNode.tagName=='DIV'){
                        var pclass = tinyMCE.activeEditor.selection.getNode().parentNode.className;
                        if ((pclass=="left") || (pclass=="right") || (pclass=="center")){
                                tinymce.DOM.setAttrib(tinyMCE.activeEditor.selection.getNode().parentNode,"class",align);
                        }
                }
                tinymce.DOM.setAttrib(tinyMCE.activeEditor.selection.getNode(),"class",align);
                return true;
        }
        return false;
}
function tinyHrefPreload(editorname,ed){
        var hrefdirect = tinymce.DOM.get(editorname + '_hrefdirect');
        var hrefblank = tinymce.DOM.get(editorname + '_hrefblank');
        var hreftitle = tinymce.DOM.get(editorname + '_hreftitle');
        var hrefclass = tinymce.DOM.get(editorname + '_hrefclass');
        if (tinyMCE.activeEditor.selection.getNode().nodeName=="A"){
                hrefdirect.value = tinymce.DOM.getAttrib(tinyMCE.activeEditor.selection.getNode(),"href","http://");
                hrefblank.checked = (tinymce.DOM.getAttrib(tinyMCE.activeEditor.selection.getNode(),"target","")=="_blank")?true:false;
                hreftitle.value = tinymce.DOM.getAttrib(tinyMCE.activeEditor.selection.getNode(),"title","");
                hrefclass.value = tinymce.DOM.getAttrib(tinyMCE.activeEditor.selection.getNode(),"class","");
        }
        else{
                hrefdirect.value = 'http://';
                hreftitle.value = '';
                hrefclass.value = '';
        }
}
function tinyHrefAccept(editorname){
        tinyRestoreSelection(editorname);
        var hrefdirect = tinymce.DOM.get(editorname + '_hrefdirect');
        var hrefblank = tinymce.DOM.get(editorname + '_hrefblank');
        var hreftitle = tinymce.DOM.get(editorname + '_hreftitle');
        var hrefclass = tinymce.DOM.get(editorname + '_hrefclass');
        if ((trim(hrefdirect.value)=='') || (trim(hrefdirect.value)=='http://')){ alert('Укажите ссылку'); return false; }
        var hrefcode = '<a href="'+trim(hrefdirect.value)+'"';
        if (trim(hrefclass.value)!='') hrefcode+= ' class="'+htmlspecialchars(trim(hrefclass.value))+'"';
        if (hrefblank.checked==true) hrefcode+= ' target="_blank"';
        if (trim(hreftitle.value)!='') hrefcode+= ' title="'+htmlspecialchars(trim(hreftitle.value))+'"';
        hrefcode+= '>'+tinyMCE.activeEditor.selection.getContent()+'</a>';
        tinyMCE.activeEditor.selection.setContent(hrefcode);
        return true;
}
function tinyInsertCodeTablePreload(editorname){
        var iframe = frames[editorname+'_instable_ifr'];
        d = iframe.document;
        d.charset = "windows-1251";
        try{ iframe.designMode = 'Off'; iframe.designMode = 'On'; } catch(ex){}
        try{ d.designMode = 'Off'; d.designMode = 'On'; } catch(ex){}
        d.open();
        d.write("<html>\n<head><style>#content {background-color: #FFF; font-family: Arial, sams-serif; font-size: 9px; color: #000 !important;}</style></head>\n<body id=content></body>\n</html>");
        d.close();
}
function tinyInsertTable(editorname){ // Вставка таблицы
        tinyRestoreSelection(editorname);
        var tcaptionobj = tinymce.DOM.get(editorname + '_tablecaption');
        var tcaption = trim(tcaptionobj.value);
        var trowsnum = parseInt(trim(tinymce.DOM.get(editorname + '_tablerowsnum').value),10); if (isNaN(trowsnum)) trowsnum = 0;
        var tcolsnum = parseInt(trim(tinymce.DOM.get(editorname + '_tablecolsnum').value),10); if (isNaN(tcolsnum)) tcolsnum = 0;
        var tcolheaders = (tinymce.DOM.get(editorname + '_tableheaders').checked)?true:false;
        var ttransparent = (tinymce.DOM.get(editorname + '_tabletransparent').checked)?true:false;
        if (tcolsnum<1){ alert('Укажите количество столбцов'); return false; }
        if (trowsnum<1){ alert('Укажите количество строк'); return false; }
        tcaptionobj.value = "";
        var tablecode = '<table class="table-content'+((ttransparent)?' noborder':'')+'">';
        if (!ttransparent){
                if (tcaption!='') tablecode+= '<caption>'+htmlspecialchars(tcaption)+'</caption>';
                if (tcolheaders){ tablecode+= '<tr>'; for (var i=0; i<tcolsnum; i++) tablecode+= '<th>Заголовок</th>'; tablecode+= '</tr>'; }
        }
        for (var j=0; j<trowsnum; j++){ tablecode+= '<tr>'; for (var i=0; i<tcolsnum; i++) tablecode+= '<td>Ячейка</td>'; tablecode+= '</tr>'; }
        tablecode+= '</table>';
        tinyMCE.activeEditor.selection.setContent(tablecode);
        return true;
}
function getCell(grid, row, col){
        if (grid[row] && grid[row][col]) return grid[row][col];
        return null;
}
function getCellPos(grid, td){
        var x, y;
        for (y=0; y<grid.length; y++){
                for (x=0; x<grid[y].length; x++){
                        if (grid[y][x] == td) return {cellindex : x, rowindex : y};
                }
        }
        return null;
}
function getColRowSpan(td){
        var colspan = tinyMCE.activeEditor.dom.getAttrib(td, "colSpan");
        var rowspan = tinyMCE.activeEditor.dom.getAttrib(td, "rowSpan");
        colspan = colspan == "" ? 1 : parseInt(colspan);
        rowspan = rowspan == "" ? 1 : parseInt(rowspan);
        return {colspan : colspan, rowspan : rowspan};
}
function getTableGrid(table){
        var grid = [], rows = table.rows, x, y, td, sd, xstart, x2, y2;
        for (y=0; y<rows.length; y++){
                for (x=0; x<rows[y].cells.length; x++){
                        td = rows[y].cells[x];
                        sd = getColRowSpan(td);
                        for (xstart = x; grid[y] && grid[y][xstart]; xstart++);
                        for (y2=y; y2<y+sd['rowspan']; y2++){
                                if (!grid[y2]) grid[y2] = [];
                                for (x2=xstart; x2<xstart+sd['colspan']; x2++) grid[y2][x2] = td;
                        }
                }
        }
        return grid;
}
function tinyAlignColAlign(editorname,align){
        var tableElm = tinyMCE.activeEditor.dom.getParent(tinyMCE.activeEditor.selection.getNode(), "table");
        if (!tableElm) return false;
        var grid = getTableGrid(tableElm);
        var cpos = getCellPos(grid, tinyMCE.activeEditor.selection.getNode());
        for (var y=0; tdElm = getCell(grid, y, cpos.cellindex); y++){
                tinyMCE.activeEditor.dom.setStyle(tdElm, 'textAlign', align);
        }
}
function tinyMergeTableCellsPreload(editorname){
        var tcolsnum, trowsnum;
        var cellcols = tinymce.DOM.get(editorname + '_mergecolsnum');
        var cellrows = tinymce.DOM.get(editorname + '_mergerowsnum');
        tcolsnum = tinymce.DOM.getAttrib(tinyMCE.activeEditor.selection.getNode(),"colSpan","1");
        trowsnum = tinymce.DOM.getAttrib(tinyMCE.activeEditor.selection.getNode(),"rowSpan","1");
        if (isNaN(tcolsnum)) tcolsnum = 1; if (tcolsnum<1) tcolsnum = 1;
        if (isNaN(trowsnum)) trowsnum = 1; if (trowsnum<1) trowsnum = 1;
        cellcols.value = tcolsnum;
        cellrows.value = trowsnum;
}
function tinyMergeTableCells(editorname){ // Объединение ячеек таблицы
        tinyRestoreSelection(editorname);
        var trowsnum = parseInt(trim(tinymce.DOM.get(editorname + '_mergerowsnum').value),10); if (isNaN(trowsnum)) trowsnum = 1; if (trowsnum<1) trowsnum = 1;
        var tcolsnum = parseInt(trim(tinymce.DOM.get(editorname + '_mergecolsnum').value),10); if (isNaN(tcolsnum)) tcolsnum = 1; if (tcolsnum<1) tcolsnum = 1;
        if ((trowsnum+tcolsnum)>2){
                var args = [];
                args["numcols"] = tcolsnum;
                args["numrows"] = trowsnum;
                tinyMCE.execCommand("mceTableMergeCells", false, args);
        }
        return true;
}
function tinyTDTHToggle(editorname){
        var obj = tinyMCE.activeEditor.selection.getNode();
        if (obj.className=='th') obj.className = '';
        else obj.className = 'th';
}
function tinyHTMLView(editorname,mode){
        var textarea = $(editorname);
        var htmlvalue = $(editorname+'_htmlview');
        if (textarea && htmlvalue){
                if (mode=='on'){
                        tinyMCE.execCommand('mceToggleEditor', false, editorname);
                        textarea.style.cssText = "width: 100%; height: 320px; border: 1px solid #C6C6C6;";
                        tinyShowExtendPanel(editorname,'htmlview','on');
                        htmlvalue.value = textarea.value;
                }
                if (mode=='accept'){
                        textarea.style.cssText = "width: 100%; height: 320px;";
                        tinyShowExtendPanel(editorname,'htmlview','off');
                        tinyMCE.execCommand('mceToggleEditor', false, editorname);
                        htmlvalue.value = "";
                }
                if (mode=='reset'){
                        textarea.style.cssText = "width: 100%; height: 320px;";
                        textarea.value = htmlvalue.value;
                        tinyShowExtendPanel(editorname,'htmlview','off');
                        tinyMCE.execCommand('mceToggleEditor', false, editorname);
                        htmlvalue.value = "";
                }
        }
}
/* Вспомогательные функции для TinyMCE — КОНЕЦ */

/* Календарь — НАЧАЛО */
function CalendarInit(name,caption,value){
        addEvent(window.addEventListener||window.attachEvent?window:document.addEventListener?document:null,'load',function(dataname,datacaption,datavalue){
                return function(){ CalendarLoad(dataname,datacaption,datavalue); };
        }(name,caption,value));
}
function CalendarLoad(name,caption,value){
        value = validateDate(value);
        name = trim(name);
        if (!name.match(/[a-z_A-Z0-9]+/)) return false;
        var mainparent = $(name+'_calendar');
        if (!mainparent) return false;
        var viewDiv = document.createElement('DIV'); viewDiv.id = name+'_calendar_value'; viewDiv.innerHTML = value;
        viewDiv.onclick = function(name,value){ return function(){ return function(name){
                        obj = $(name+'_calendar_view');
                        if (obj.style.display=='none'){
                                value = $(name+'_calendar_value').innerHTML.split('.');
                                var m = parseInt(value[1],10);
                                var y = parseInt(value[2],10);
                                CalendarBuild(name,m,y);
                                obj.style.display = '';
                        }
                        else obj.style.display = 'none';
                }(name); } }(name);
        var mainparentChilds = new Array();
        var helpers = new Array();
        mainparentChilds[0] = document.createElement('LABEL'); mainparentChilds[0].innerHTML = caption;
        mainparentChilds[1] = document.createElement('SPAN'); mainparentChilds[1].className = 'input';
                helpers[0] = document.createElement('SPAN'); helpers[0].className = 'bl';
                helpers[1] = document.createElement('SPAN'); helpers[1].className = 'bc'; helpers[1].appendChild(viewDiv);
                helpers[2] = document.createElement('SPAN'); helpers[2].className = 'br';
                for (var i=0; i<helpers.length; i++) mainparentChilds[1].appendChild(helpers[i]);
        mainparentChilds[2] = document.createElement('DIV'); mainparentChilds[2].className = 'forselect';
                helpers[0] = document.createElement('DIV'); helpers[0].id = name+'_calendar_view'; helpers[0].className = 'items'; helpers[0].style.display = 'none';
                mainparentChilds[2].appendChild(helpers[0]);
        mainparentChilds[3] = document.createElement('INPUT'); mainparentChilds[3].type = 'hidden'; mainparentChilds[3].name = name; mainparentChilds[3].value = value; mainparentChilds[3].id = name+'_calendar_input';
        for (var i=0; i<mainparentChilds.length; i++) mainparent.appendChild(mainparentChilds[i]);
}
function CalendarBuild(name,m,y){
        var date = new Date();
        var nowDateMonth = parseInt(date.getMonth(),10)+1;
        var prevy = y;
        var prevm = m-1; if (prevm<1) { prevm = 12; prevy = prevy-1; }
        var nexty = y;
        var nextm = m+1; if (nextm>12) { nextm = 1; nexty = nexty+1; }
        var startdate = new Date(); startdate.setFullYear(y,m-1,1);
        var startday = startdate.getDay(); if (startday==0) startday = 7;
        var prevmaxday = getMonthDaysCount((m>1)?m-1:12,y);
        var maxday = getMonthDaysCount(m,y);
        var calendarInside = '';
        for (var i=1; i<startday; i++) calendarInside = calendarInside+'<div class="none">'+(prevmaxday-startday+1+i)+'</div>';
        for (var i=1; i<=maxday; i++) calendarInside = calendarInside+'<div'+(((i==date.getDate()) && (m==nowDateMonth) && (y==date.getFullYear()))?' class="checked"':'')+' onclick="CalendarSelect(\''+name+'\',\''+i+'.'+m+'.'+y+'\')">'+i+'</div>';
        var nextmonthcount = (startday-1+maxday)%7;
        if (nextmonthcount>0) for (var i=1; i<=(7-nextmonthcount); i++) calendarInside = calendarInside+'<div class="none">'+i+'</div>';
        obj = $(name+'_calendar_view'); if (!obj) return;
        var prevhref = '<a href="javascript:CalendarBuild(\''+name+'\','+prevm+','+prevy+')"><img src="/pics/i/back.gif" width="14" height="7" /></a>';
        var nexthref = '<a href="javascript:CalendarBuild(\''+name+'\','+nextm+','+nexty+')"><img src="/pics/i/next.gif" width="14" height="7" /></a>';
        obj.innerHTML = '<div id="calendar"><div class="date"><strong>'+prevhref+getMonthName(m)+' '+y+nexthref+'</strong></div><div id="cad" class="days">'+calendarInside+'</div></div>';
}
function CalendarSelect(name,value){
        value = validateDate(value);
        $(name+'_calendar_value').innerHTML = value;
        $(name+'_calendar_input').value = value;
        $(name+'_calendar_view').style.display = 'none';
}
/* Календарь — КОНЕЦ */

/* Асинхронная работа с файлами — НАЧАЛО */
function uploadFileAjax(obj,formid,iframeid,inputoldfile,uploadfilestorage,uploadfiletheme,uploadfilerubric,uploadfileuid,onstart,onfinish,del){
        var form = $(formid);
        var iframe = $(iframeid);
        var input = $(inputoldfile);
        var oldfileid = 0;
        if (input) oldfileid = input.value;
        if (form && iframe){
                eval(onstart);
                var oldtarget = form.target;
                var oldaction = form.action;
                form.target = iframeid;
                //form.enctype = "multipart/form-data";
                //form.setAttribute("target", iframeid);
                form.action = '/manage/ajax/fileupload.php?uploadfilename='+obj.name+'&oldfileid='+oldfileid+'&uploadfilestorage='+uploadfilestorage+'&uploadfiletheme='+uploadfiletheme+'&uploadfilerubric='+uploadfilerubric+'&uploadfileuid='+uploadfileuid+'&onfinish='+onfinish+'&delete='+del;
                form.submit();
                form.target = oldtarget;
                form.action = oldaction;
                obj.value = '';
        }
}
/* Асинхронная работа с файлами — КОНЕЦ */

/* Асинхронное удаление элементов — НАЧАЛО */
function bkAjaxDeleteItem(type,item,id){
        var ai = new ajaxInit('/manage/ajax/itemdelete.php','bkAjaxDeleteItemComplete("'+id+'",response);');
        var postVars = new Array();
        postVars['type'] = type;
        postVars['id'] = item;
        ai.sendPost(preparePostVars(postVars));
}
function bkAjaxDeleteItemComplete(id,parameter){ if (parameter=='ok') $(id).fade({ duration: 1 }); }
/* Асинхронное удаление элементов — КОНЕЦ */

/* Проверка на черный список — НАЧАЛО */
function bkBlacklistCheck(phone){
        bkBlacklistCheckStart();
        var ai = new ajaxInit('/manage/ajax/blacklist.php','bkBlacklistCheckComplete(response);');
        var postVars = new Array();
        postVars['phone'] = phone;
        ai.sendPost(preparePostVars(postVars));
}
/* Асинхронное удаление элементов — КОНЕЦ */

/*Перетаскивание разделов — НАЧАЛО*/
function getClientHeight(){ return document.compatMode=='CSS1Compat' && !window.opera?document.documentElement.clientHeight:document.body.clientHeight; }

var DraggableDestinations = new Array();
var DragHandlerEngine = false;
var DragHandler = {
        _oElem : null,

        attach : function(oElem){
                oElem.sectionid = parseInt(oElem.id.split('|')[0],10);
                oElem.parentid = parseInt(oElem.id.split('|')[1],10);
                oElem.onmousedown = DragHandler._dragBegin;
                oElem.dragBegin = new Function();
                oElem.drag = new Function();
                oElem.dragEnd = new Function();
                return oElem;
        },

        _dragBegin : function(e) {
                var oElem = DragHandler._oElem = this;
                if (oElem.sectionid<1) return false;
                DragHandlerEngine = true;
                if (isNaN(parseInt(oElem.style.left))) { oElem.style.left = '0px'; }
                if (isNaN(parseInt(oElem.style.top))) { oElem.style.top = '0px'; }
                var x = parseInt(oElem.style.left);
                var y = parseInt(oElem.style.top);
                e = e ? e : window.event;
                oElem.mouseX = e.clientX;
                oElem.mouseY = e.clientY;
                oElem.dragBegin(oElem, x, y);
                document.onmousemove = DragHandler._drag;
                document.onmouseup = DragHandler._dragEnd;
                return false;
        },

        _drag : function(e) {
                var oElem = DragHandler._oElem;
                var x = parseInt(oElem.style.left);
                var y = parseInt(oElem.style.top);
                e = e ? e : window.event;
                if (e.clientY<30){
                        window.scrollBy(0,-10);
                        y = y-10;
                }
                if (e.clientY>(getClientHeight()-30)){
                        window.scrollBy(0,10);
                        y = y+10;
                }
                oElem.style.left = x + (e.clientX - oElem.mouseX) + 'px';
                oElem.style.top = y + (e.clientY - oElem.mouseY) + 'px';
                oElem.mouseX = e.clientX;
                oElem.mouseY = e.clientY;
                oElem.drag(oElem, x, y);
                return false;
        },

        _dragEnd : function(e) {
                var oElem = DragHandler._oElem;
                var x = parseInt(oElem.style.left);
                var y = parseInt(oElem.style.top);
                oElem.dragEnd(oElem, x, y);
                oElem.style.left = (oElem.parentNode.offsetWidth-oElem.offsetWidth-5)+'px';
                oElem.style.top = '-2px';
                document.onmousemove = null;
                document.onmouseup = null;
                DragHandler._oElem = null;
                DragHandlerEngine = false;
                e = e ? e : window.event;
                var ox = e.clientX;
                var oy = e.clientY+getBodyScrollTop();
                var destination = false;
                var s = '';
                for (var i=0; i<DraggableDestinations.length; i++){

                        s+= i+': '+DraggableDestinations[i][0].offsetTop+' < '+oy+' < '+(DraggableDestinations[i][0].offsetTop+25)+', ';
                        s+= DraggableDestinations[i][0].offsetLeft+' < '+ox+' < '+(DraggableDestinations[i][0].offsetLeft+40)+', ';
                        if ((DraggableDestinations[i][0].offsetTop<oy) && ((DraggableDestinations[i][0].offsetTop+35)>oy) && (DraggableDestinations[i][0].offsetLeft<ox) && ((DraggableDestinations[i][0].offsetLeft+40)>ox)){
                                destination = DraggableDestinations[i][1].split('|');
                                s+= ' => '+destination;
                        }
                        s+= '\n\n';
                }
                if (destination){
                        if (destination[0]==0){
                                if (oElem.parentid!=0)

                                        if (confirm('Перенести раздел на первый уровень?')) window.location.href = './?drop='+oElem.sectionid+'&destination=0';
                        }
                        if (destination[0]==-1){
                                if (oElem.parentid!=-1)
                                        if (confirm('Перенести раздел в неопубликованное?')) window.location.href = './?drop='+oElem.sectionid+'&destination=-1';
                        }
                        if (destination[0]>0){
                                if (destination[0]!=oElem.sectionid){
                                        if (destination[1]!=-1){
                                                if (destination[1]==oElem.parentid){
                                                                window.location.href = './?drop='+oElem.sectionid+'&before='+destination[0];
                                                }
                                                else{
                                                        if (oElem.parentid!=destination[0]){
                                                                if (confirm('Перенести раздел?')) window.location.href = './?drop='+oElem.sectionid+'&destination='+destination[0];
                                                        }
                                                }
                                        }
                                }
                        }
                }
        }
}
function getBodyScrollTop(){
  return self.pageYOffset || (document.documentElement && document.documentElement.scrollTop) || (document.body && document.body.scrollTop);
}
function getBodyScrollLeft(){
  return self.pageXOffset || (document.documentElement && document.documentElement.scrollLeft) || (document.body && document.body.scrollLeft);
}
/*Перетаскивание разделов — КОНЕЦ*/

/*Помощник в правах доступа — НАЧАЛО*/
function setGroupIncludesCheck(obj){
        var ids = obj.id;
        var childChecks = new Array();
        var inputs = document.getElementsByTagName('INPUT');
        var checks = new Array();
        var j = 0;
        for (var i=0; i<inputs.length; i++){
                if (inputs[i].type=='checkbox'){
                        checks[j] = inputs[i];
                        j++;
                }
        }
        j = 1;
        var k = 0;
        var s = '|';
        while ((ids.indexOf('|')>-1) && (i<100)){
                var num = parseInt(ids.substr(0,ids.indexOf('|')),10); if (isNaN(num)) num = 0;
                ids = ids.substr(ids.indexOf('|')+1);
                if (num>0){
                        if (s.indexOf('|'+num+'|')<0){
                                for (var i=0; i<checks.length; i++){
                                        if (checks[i].name==('access_'+num)){
                                                childChecks[k] = checks[i];
                                                ids+= checks[i].id;
                                                k++;
                                        }
                                }
                                s+= num+'|';
                        }
                }
                j++;
        }
        for (var i=0; i<childChecks.length; i++) childChecks[i].checked = obj.checked;
}
/*Помощник в правах доступа — КОНЕЦ*/

/*Помощник в экспорте — НАЧАЛО*/
function setGroupIncludesCheck2(obj){
        var childChecks = new Array();
        var inputs = document.getElementsByTagName('INPUT');
        var j = 0;
        for (var i=0; i<inputs.length; i++){
                if ((inputs[i].type=='checkbox') && (inputs[i].name.search(obj.name+'_')>-1)){
                        childChecks[j] = inputs[i];
                        j++;
                }
        }
        for (var i=0; i<childChecks.length; i++) childChecks[i].checked = obj.checked;
}
/*Помощник в экспорте — КОНЕЦ*/

/* Автозаполнение полей  — НАЧАЛО */

var auto_browser = -1;

function auto_inputtext_select(txt, start_at){
        if (auto_browser == 0){ //ie, opera
                var tr = txt.createTextRange();
                tr.moveStart('character', start_at);
                tr.moveEnd('character', 0);
                tr.select();
        }
        else if (auto_browser == 1){ //mozilla
                txt.select();
                txt.selectionStart = start_at;
        }
}

function auto_setEnding(txt, ending){
        var tl = txt.value.length;
        txt.value += ending;

        txt.value = txt.value.substring(0,1).toUpperCase() + txt.value.substring(1);

        auto_inputtext_select(txt, tl);
}
function auto_getEnding(obj, beginning){
        eval("var ss = auto_"+obj.name+"_values");
        var i, c = ss.length;
        var bg = beginning.toLowerCase(), bl=beginning.length;
        var s;
        for (i=0; i<c; i++){
                s = ss[i];
                if (s.length > bl){
                        if (s.toLowerCase().indexOf(bg) == 0){
                                return s.substring(bl);
                        }
                }
        }
        return "";
}
function auto_onchange(obj){
        eval("var key = auto_"+obj.name+"_keyTyped;")
        eval("auto_"+obj.name+"_keyTyped = 0;")
        if (key == 0) return;
        var txt = $("auto_"+obj.name);
        auto_setEnding(txt, auto_getEnding(obj, txt.value));
}
function auto_onkeypress(obj, charCode, keyCode){
        if (charCode != undefined) k = charCode;
        else if (keyCode != undefined) k = keyCode;
        else k = 0;
        if (!(k>=97 && k<=122 || k>=65 && k<=90 || k>=48 && k<=57 || k>=1072 && k<=1103 || k>=1040 && k<=1071  || k==46 || k==44 || k==45 || k==95 || k==32 || k==58 || k==59 || k==35 || k==42)) k = 0;
        if ($("auto_"+obj.name).createTextRange == undefined) auto_browser = 1;
        else auto_browser = 0;
        eval("auto_"+obj.name+"_keyTyped = k;")
}
/* Автозаполнение полей  — КОНЕЦ */
