/* Глобальные переменные */

/* Утилитарные функции */

function absPosition(obj) {
    var x = y = 0;
    while(obj) {
        x += obj.offsetLeft;
        y += obj.offsetTop;
        obj = obj.offsetParent;
    }
    return {x:x, y:y};
}

function getinsideWindowWidth()
{
    if(window.innerWidth)
        return window.innerWidth;
    else if(document.body && document.body.clientWidth)
        return document.body.clientWidth;
    else
        return document.body.parentElement.clientWidth;
}

function getinsideWindowHeight()
{
    if(window.innerHeight)
        return window.innerHeight;
    else if(document.body && document.body.clientHeight)
        return document.body.clientHeight;
    else
        return document.body.parentElement.clientHeight;
}

function iframeToolkit(toolkit_name, iframe_name)
{
    if(!document.getElementById(toolkit_name))
        return;

    isie = false;
    if(navigator.userAgent.match(/msie/i))        
        isie = true;
        
    style = new Array(
        "Undo",
        "Redo",
        "Cut",
        "Copy",
        "Paste",
        "Bold",
        "Italic",
        "Underline",
        "StrikeThrough",
        "Superscript",
        "Subscript",
        "JustifyLeft",
        "JustifyCenter",
        "JustifyRight",
        "JustifyFull",
        "=",
        "InsertOrderedList",
        "InsertUnorderedList",
        "Indent",
        "Outdent",
        "^",
        "=",
        "H1",
        "H2",
        "H3",
        "H4",
        "H5",
        "H6",
        "CreateLink",
        "InsertHorizontalRule",
        "InsertTable",
        "InsertImage",
        "ForeColor",
        "BackColor",
        "RemoveFormat"
    );

    var image = new Array(
        "undo",
        "redo",
        "cut",
        "copy",
        "paste",
        "b",
        "i",
        "u",
        "s",
        "sup",
        "sub",
        "l",
        "c",
        "r",
        "j",
        "",
        "ol",
        "ul",
        "in",
        "out",
        "",
        "",
        "h1",
        "h2",
        "h3",
        "h4",
        "h5",
        "h6",
        "a",
        "hr",
        "tab",
        "img",
        "cfg",
        "cbg",
        "F"
    );
    
    var title = new Array(
        "Отменить",
        "Повторить",
        "Вырезать",
        "Копировать",
        "Вставить",
        "Полужирный",
        "Курсив",
        "Подчеркнутый",
        "Перечеркнутый",
        "Степень",
        "Индекс",
        "По левому краю",
        "По центру",
        "По правому краю",
        "По ширине",
        "",
        "Нумерованный список",
        "Маркированный список",
        "Увеличить отступ",
        "Уменьшить отступ",
        "",
        "",
        "Заголовок №1",
        "Заголовок №2",
        "Заголовок №3",
        "Заголовок №4",
        "Заголовок №5",
        "Заголовок №6",
        "Гиперссылка",
        "Линия",
        "Вставить таблицу",
        "Вставить изображение",
        "Цвет шрифта",
        "Цвет фона",
        "Снять форматирование"
    );

    var s = "<TABLE width='100%' cellpadding=0 cellspacing=0 border=0><TR><TD colspan=3>"+
            "<TABLE width='100%' cellpadding=0 cellspacing=0 border=0><TR>";

    for(i in style)
        if(style[i] == "=")
            s += "<TD width='100%'></TD>";
        else if(style[i] == "^")
            s += "</TR></TABLE></TD></TR><TR><TD>"+
                 "<TABLE cellpadding=0 cellspacing=0 border=0><TR><TD>"+
                 "<SELECT class=ib_admin onchange='"+iframe_name+".execCommand(\"fontname\", false, this.value);'>"+
                 "<OPTION value='Arial'>Arial</OPTION>"+
                 "<OPTION value='Courier New'>Courier New</OPTION>"+
                 "<OPTION value='Tahoma'>Tahoma</OPTION>"+
                 "<OPTION value='Times New Roman'>Times New Roman</OPTION>"+
                 "<OPTION value='Verdana' SELECTED>Verdana</OPTION>"+
                 "</SELECT>"+
                 "</TD><TD style='padding-left: 5px;'>"+
                 "<SELECT class=ib_admin onchange='"+iframe_name+".execCommand(\"fontsize\", false, this.value);'>"+
                 "<OPTION value='1'>1</OPTION>"+
                 "<OPTION value='2' SELECTED>2</OPTION>"+
                 "<OPTION value='3'>3</OPTION>"+
                 "<OPTION value='4'>4</OPTION>"+
                 "<OPTION value='5'>5</OPTION>"+
                 "<OPTION value='6'>6</OPTION>"+
                 "<OPTION value='7'>7</OPTION>"+
                 "</SELECT>"+
                 "</TD></TR></TABLE>"+
                 "</TD><TD>"+
                 "<TABLE width='100%' cellpadding=0 cellspacing=0 border=0><TR>";
        else
            s += "<TD style='padding: 1px;'>"+
                 "<BUTTON style='width: 20px; height: 20px; padding: 0px;' onclick=\"iframeSetStyle('"+style[i].toLocaleLowerCase()+"', '"+iframe_name+"', "+iframe_name+")\" title=\""+title[i]+"\">"+
                 "<TABLE width='100%' height='100%' cellpadding=0 cellspacing=0 border=0>"+
                 "<TR><TD align=center>"+
                 "<img style='vertical-align: middle;' src=/i/editor/"+image[i]+".gif>"+
                 "</TD></TR>"+
                 "</TABLE>"+
                 "</BUTTON>"+
                 "</TD>";

    s += "</TR></TABLE></TD></TR></TABLE>";

    document.getElementById(toolkit_name).innerHTML = s;
}

function i2hx(i) {
    i *= 51;
    if(i < 16) 
        return "0"+i.toString(16);
    else 
        return i.toString(16);
}

function iframeSetStyle(style, iframe_name, iframeobj)
{
    var commonStyle = "<style>" +
                      "body, td {font-family: Verdana, sans-serif; font-size: 11px;} " +
                      "form {margin-top: 0px; margin-bottom: 0px;} " +
                      "textarea, input {font-weight: normal; font-size: 11px; color: black; font-family: Tahoma, Arial; margin-top: 0px; margin-bottom: 0px; border-style: solid; border-width: 1px; border-color: #666666;} " +
                      "</style>";

    if(style.match(/inserttable/i)) {
    
        var Form = "<html><head><title>Вставка таблицы</title>"+commonStyle+"</head>" +
                   "<script language='JavaScript'>" +
                   "function AddTbl() { " +
                   "   var nTable = '<TABLE width='+document.forms['tblf'].elements['width'].value+' height='+document.forms['tblf'].elements['height'].value+' cellpadding='+document.forms['tblf'].elements['padding'].value+' cellspacing='+document.forms['tblf'].elements['spacing'].value+' border='+document.forms['tblf'].elements['border'].value+' bgcolor=#'+document.forms['tblf'].elements['bgcolor'].value+'>';" +
                   "   for(r=0; r<document.forms['tblf'].elements['rows'].value; r++) {" +
                   "       nTable += '<tr>';" +
                   "       for(c=0; c<document.forms['tblf'].elements['cols'].value; c++)" +
                   "           nTable += '<td></td>';" +
                   "       nTable += '</tr>';" +
                   "   }" +
                   "   nTable += '</TABLE>';" +
                   "   body = new String(window.opener."+iframe_name+".body.outerHTML);"+
                   "   body = body.substr(0, body.indexOf('</BODY>'));"+
                   "   html = window.opener."+iframe_name+".all.tags('head')[0].outerHTML+body+nTable+'</BODY>';"+
                   "   window.opener."+iframe_name+".open();" +
                   "   window.opener."+iframe_name+".write(html);" +
                   "   window.opener."+iframe_name+".close();" +
                   "   window.close();" +
                   "}"+
                   "</script>" +
                   "<body topmargin=0 leftmargin=0>" +
                   "<br><form id=tblf><table width=100%>" +
                   "<tr><td>Ширина таблицы</td><td><input size=15 name=width value='100%'></td></tr>" +
                   "<tr><td>Высота таблицы</td><td><input size=15 name=height value='200'></td></tr>" +
                   "<tr><td>Количество столбцов</td><td><input size=15 name=cols value='5'></td></tr>" +
                   "<tr><td>Количество строк</td><td><input size=15 name=rows value='2'></td></tr>" +
                   "<tr><td>Ширина бордюра</td><td><input size=15 name=border value='1'></td></tr>" +
                   "<tr><td>Отступ</td><td><input size=15 name=padding value='2'></td></tr>" +
                   "<tr><td>Расстояние между ячейками</td><td><input size=15 name=spacing value='1'></td></tr>" +
                   "<tr><td>Цвет фона</td><td><input size=15 name=bgcolor value='FFFFFF' maxlength=6></td></tr>" +
                   "<tr><td colspan=2><input type=button value=Вставить style='width:100%' OnClick=\"AddTbl();\"></td></tr>" +
                   "</table></form>\n" +
                   "</body></html>";

        TabPanel = window.open("","TabPanel","dependent=1,width=300,height=220,status=yes");
        TabPanel.moveBy(200, 200);
        TabPanel.document.open();
        TabPanel.document.write(Form);
        TabPanel.document.close();
        
    } else if (style.match(/insertimage/i)) {
    
        var Form = "<html><head>"+commonStyle+"<title>Загрузка изображения</title></head>" +
                   "<body leftmargin=0 rightmargin=0 topmargin=0 bottommargin=0 marginwidth=0 marginheight=0>" +
                   "<form action='/scope/libraries/uploadimg.php' method='POST' enctype='multipart/form-data' id='imgform'>" +
                   "<input type='file' name='img' style='width: 400px;'><br>" +
                   "<input type='hidden' name='iframe' value='"+iframe_name+"'>" +
                   "<input type='submit' value='OK' style='width: 400px;'>" +
                   "</form>" +
                   "</body><html>";
            
        ImgPanel = open("", "ImgPanel", "dependent=1,width=400,height=10,status=no,toolbar=no,menubar=no,location=no,resizable=yes");
        ImgPanel.moveBy(200, 200);
        ImgPanel.document.open();
        ImgPanel.document.write(Form);
        ImgPanel.document.close();
        
    } else if (style.match(/^createlink$/i)) {
    
        iframeobj.execCommand('CreateLink', false, prompt('Введите адрес', 'http://'));
        
    } else if (style.match(/forecolor|backcolor/i)) {
    
        var Form = "<html><head>"+commonStyle+"<title>Палитра</title></head>"+
                   "<body leftmargin=0 rightmargin=0 topmargin=0 bottommargin=0 marginwidth=0 marginheight=0>"+
                   "<table width='360' height='100' cellpadding='0' cellspacing='0' border='0'><tr><td height='40'>" +
                   "<form name=clr>" +
                   "&nbsp;<input type=text name=colr style='width:40;height:30' readonly>&nbsp;" +
                   "<input type=text name=colr_hex style='width:60' value=#ffffff>" +
                   "</form>" +
                   "</td></tr><tr><td><table width='360' height='60' cellpadding='0' cellspacing='0' border='0'>";
                   
        var i = 0;
        for(r=0; r<6; r++)
            for(g=0; g<6; g++)
                for(b=0; b<6; b++){
                    if(i == 0) 
                        Form += "<tr>";
                    colr = i2hx(r)+i2hx(g)+i2hx(b);
                    Form += "<td width=10 height=10 bgcolor=#"+colr+" onclick=\"window.opener."+iframe_name+".execCommand('"+style+"',false,'#"+colr+"'); window.close();\""+" onmouseover=\"document.forms['clr'].elements['colr'].style.background='#"+colr+"';document.forms['clr'].elements['colr_hex'].value='#"+colr+"'\">"+
                            "<img src=/i/content/editor/1x1.gif height=10 border=0></td>";
                    i++;
                    if(i == 36) {
                        Form += "</tr>";
                        i = 0;
                    }
                }
        Form += "</table></td><tr><table></body><html>";

        ColorPanel = open('', 'ColorPanel', 'dependent=1,width=360,height=80,status=yes,toolbar=no,menubar=no,location=no,resizable=no');
        ColorPanel.moveBy(200, 200);
        ColorPanel.document.open();
        ColorPanel.document.write(Form);
        ColorPanel.document.close();
        
    } else if (style.match(/h1|h2|h3|h4|h5|h6/i)) {
    
        iframeobj.execCommand("FormatBlock", true, "<"+style+">");
        
    } else {
    
        iframeobj.execCommand(style, false, null);
        
    }
}

function iframeSave(iframeobj, hidden)
{          
    document.getElementById(hidden).value = iframeobj.body.innerHTML;
}

function hintInit(Hint, ID)
{
    var object = document.getElementById(ID);

    object.setAttribute('hint', Hint);
    if(object.value == '') {
        object.value = Hint;
        object.style.color = '#969696';
        object.setAttribute('hinted', 1);
    } else
        object.setAttribute('hinted', 0);
}

function hintInitOnForm(Hint, ID, FormID)
{
    var object = document.forms[FormID].elements[ID];

    object.setAttribute('hint', Hint);
    if(object.value == '') {
        object.value = Hint;
        object.style.color = '#969696';
        object.setAttribute('hinted', 1);
    } else
        object.setAttribute('hinted', 0);
}

function hintOnFocus(object)
{
    if(object.getAttribute('hinted') == 1) {
        object.value = '';
        object.style.color = '#002857';
        object.setAttribute('hinted', 0);
    }
}

function hintOnBlur(object)
{
    if(object.value == '') {
        object.value = object.getAttribute('hint');
        object.style.color = '#969696';
        object.setAttribute('hinted', 1);
    }
}

function hintClear(str)
{
    var elements = str.split(',');

    for(i=0; i<elements.length; i=i+1) {
        var object = document.getElementById(elements[i].replace(/ /g, ''));
        if(object && object.getAttribute('hinted') == 1) {
            object.value = '';
            object.style.color = '#002857';
            object.setAttribute('hinted', 0);
        }
    }
}

function hintClearForm(formid)
{
    for(i=0; i<document.forms[formid].elements.length; i++) {
        var element = document.forms[formid].elements[i];
        
        if(element.getAttribute('hinted') == 1) {
            element.value = "";
            element.style.color = '#002857';
            element.setAttribute('hinted', 0);
        }
    }
}

function createPostForm(action)
{
    form = document.createElement("form");
    form.action = action||"";
    form.method = "post";
    
    return form;
}

function createHidden(sName, sValue)
{
    var oField   = document.createElement('input');
    oField.type  = 'hidden';
    oField.name  = sName;
    oField.value = sValue;
    return oField;
}

function trim(str, chars)
{
    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars)
{
    chars = chars || "\\s";
    if(str)
        return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
        
    return "";        
}

function rtrim(str, chars)
{
    chars = chars || "\\s";
    if(str)
        return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
        
    return "";
}

function formatAmount(n)
{
    if(n == "")
        return "";
        
    var s = new String(n);
    s = s.replace(/\./g, ',');
    
    p = s.indexOf(",");
    if(p >= 0)
        s = s.substr(0, p+3);
    else
        s = s+",00";
    
    i = s.indexOf(",")-1;
    for(c=0;i>=0;i--,c++)
        if(c > 2) {
            s = s.substr(0, i+1)+" "+s.substr(i+1);
            c = 0;
        }    
        
    p = s.indexOf(",");
    if(p < 0)
        s += ",";
    p = 2-(s.length-s.indexOf(",")-1);
    for(i=0;i<p;i++)
        s += "0";
        
    if(s[0] == ",")
        s = "0"+s;
    
    return s;
}

function isLocalCharacters(v)
{
    var p = "абвгдеёжзийклмнопрстуфхцчшщьыъэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ";
    var attention = false;
    for(i=0;i<v.length;i++)
        for(j=0;j<p.length;j++)
        if(v.charCodeAt(i) == p.charCodeAt(j)) {
            attention = true;
            break;
        }
        
    return attention;
}