/// ‘ЇЁб®Є Є®¬ ­¤ - http://www.mozilla.org/editor/midas-spec.html

// IE & Mozilla compartible event handling
/// oNode - node to attach event to
/// sEvent - event without 'on' in the begining
/// fpNotify - function pointer
function addEvent(oNode,sEvent,fpNotify){
    if(!oNode) return;

    if(oNode.attachEvent){
        sEvent='on'+sEvent;
        oNode.attachEvent(sEvent,fpNotify);
    }else if(oNode.addEventListener){
        oNode.addEventListener(sEvent,fpNotify,false);
    }
}

var MSIE=false;
var Gecko=false;
var Opera=false;

if(navigator.appName=='Netscape'){
    Gecko=true;
}else if(navigator.appName=='Opera'){
    Opera=true;
}else if(navigator.appName=='Microsoft Internet Explorer'){
    MSIE=true;
}

var dWebEd=null;
var edWin=null;
var edDoc=null;

function iframe2wysiwyg()
{
    dWebEd=document.getElementById('ifr_wysiwyg');
    edDoc=dWebEd.contentWindow.document;
    edWin=dWebEd.contentWindow;

    try{
        // Gecko
        if(typeof(dWebEd.contentDocument)!="undefined")
                dWebEd.contentDocument.designMode='On';

        // IE
        if(typeof(dWebEd.contentWindow)!="undefined")
                dWebEd.contentWindow.document.designMode='On';
    }
    catch(e){
        // alert("Can't go into WYSIWYG mode! :(");
        document.getElementById('ta_wysiwyg').style.display="True";
        return;
    }

    try{
        if(typeof(edDoc.queryCommandSupported)!="undefined" && edDoc.queryCommandSupported("useCSS"))
            edDoc.execCommand("useCSS",false,true);    // Opera

        if(typeof(edDoc.queryCommandSupported)!="undefined" && edDoc.queryCommandSupported("styleWithCSS"))
            edDoc.execCommand("styleWithCSS",false,true);    // Gecko
    }
    catch(e){}


    // create toolbar
    function addButton(oParent,sName,sAlt)
    {
        var str="";
        if(sName==' ') str="<div class='sp'>&nbsp</div>";
        else str="<a href=\"#\" onclick=\"act(this,'"+sName+"',''); return false;\">"+
"<img src=\"/static/misc/ta_but_"+sName+".gif\" width=\"16\" height=\"16\" border=\"0\" alt=\""+sAlt+"\"></a>\n";

        oParent.innerHTML+=str;
    }

    // create toolbar_smile
    function addSmile(oParent,sName,sAlt)
    {
        var str="";
        if(sName==' ') str="<div class='sp'>&nbsp</div>";
        else str="<a href=\"#\" onclick=\"actSmile(this,'"+sName+"','"+sAlt+"'); return false;\">"+
"<img src=\"/static/misc/smile_"+sName+".gif\" border=\"0\" alt=\""+sAlt+"\"></a>\n";

        oParent.innerHTML+=str;
    }

    var obj=document.getElementById('toolbar');
    obj.innerHTML="";

//    addButton(obj,'New','');
//    addButton(obj,'Open','');
//    addButton(obj,'Save','');
//    addButton(obj,' ','');
    addButton(obj,'Cut','Вырезать');
    addButton(obj,'Copy','Копировать');
    addButton(obj,'Paste','Вставить');
    addButton(obj,' ','');
    addButton(obj,'Bold','Выделенный');
    addButton(obj,'Italic','Курсив');
    addButton(obj,'Underline','Подчеркнутый');
    addButton(obj,'StrikeThrough','Перечеркнутый');
    addButton(obj,' ','');
    addButton(obj,'JustifyLeft','Выровнять по левому краю');
    addButton(obj,'JustifyCenter','Выровнять по середине');
    addButton(obj,'JustifyRight','Выровнять по правому краю');
    addButton(obj,'JustifyFull','Выровнять по ширине');
    addButton(obj,' ','');
    addButton(obj,'CreateLink','Сделать ссылкой');
    addButton(obj,'RemoveLink','Убрать ссылку');
    addButton(obj,'InsertImage','Вставить картинку');
    addButton(obj,' ','');
    addButton(obj,'Undo','Отменить');
    addButton(obj,'Redo','Повторить');
    addButton(obj,' ','');


    var obj2=document.getElementById('smile');
    if (obj2 != null){
      obj2.innerHTML="";

      addSmile(obj2,'smile','Улыбка');
      addSmile(obj2,'sad','Грусть');
      addSmile(obj2,'wink','Подмигнул');
      addSmile(obj2,'wacko2','Балдею');
      addSmile(obj2,'wow','Оооо');
      addSmile(obj2,'blum','Язык');
      addSmile(obj2,'hahaha','Смех');

  //    addSmile(obj2,' ','');

      addSmile(obj2,'bous','Ужас');
      addSmile(obj2,'mega_shok','Шок');
      addSmile(obj2,'scare','Страх');
      addSmile(obj2,'lol2','Смех');

      addSmile(obj2,'agree','Был неправ');
      addSmile(obj2,'clapping','Браво!');
      addSmile(obj2,'good','Пять!');
      addSmile(obj2,'ok','ОК!');

      addSmile(obj2,'acute','Неа!');
      addSmile(obj2,'nea','Неа!');
      addSmile(obj2,'fool','Дурак!');
      addSmile(obj2,'stop','Стоп!');

      addSmile(obj2,'yahoo','Yahoo!');
      addSmile(obj2,'yes2','Йес!');
      addSmile(obj2,'yes3','ДА!');
      addSmile(obj2,'yes','ДА!');

      addSmile(obj2,'give_heart','Любовь');
      addSmile(obj2,'give_rose','Любовь');
      addSmile(obj2,'heart','Любовь');
      addSmile(obj2,'meeting','Какие люди!');

  //    addSmile(obj2,' ','');

      addSmile(obj2,'angel','Ангел');
      addSmile(obj2,'crazy','Crazy');
      addSmile(obj2,'tease','Crazy');
      addSmile(obj2,'diablo','Дьявол');

      addSmile(obj2,'cold','Мерзну');
      addSmile(obj2,'heat','Жарко');
      addSmile(obj2,'vava','Побитый');
      addSmile(obj2,'treaten','Злой');

  //    addSmile(obj2,' ','');

      addSmile(obj2,'cry','Плачу');
      addSmile(obj2,'dirol','Жую жвачку');
      addSmile(obj2,'help','SOS!');
      addSmile(obj2,'secret','Секрет');

      addSmile(obj2,'scratch','Думаю');
      addSmile(obj2,'tomato','Ловлю помидоры');
      addSmile(obj2,'beach','Отдыхаю');
      addSmile(obj2,'hi','Добрый день');

      addSmile(obj2,'blush','Краснею');
      addSmile(obj2,'bored','Зеваю');
      addSmile(obj2,'bye','Пока!');
      addSmile(obj2,'bad','Боа...');

      addSmile(obj2,'dance','Танцую');
      addSmile(obj2,'dance2','Танцую');
      addSmile(obj2,'drinks','Пью пиво');
      addSmile(obj2,'lazy3','Сплю');

      addSmile(obj2,'sorry','Прошу прощения...');
      addSmile(obj2,'mir','Прошу прощения...');
      addSmile(obj2,'thanks','Спасибо');
      addSmile(obj2,'rtfm','RTFM');

      addSmile(obj2,'pozdr','Поздравляю!');
      addSmile(obj2,'pozdr1','Поздравляю!');
      addSmile(obj2,'pozdr2','Поздравляю!');
      addSmile(obj2,'pozdr3','Поздравляю!');
    }

    document.getElementById('ta_wysiwyg').style.display="none";
    setTimeout(function(){ act(null, 'Open', null); },1000);
}
addEvent(window,"load",iframe2wysiwyg);

function getEdSelection()
{
    var range="";

    if(typeof(edWin.document.selection)!="undefined"){
        range=edWin.document.selection.createRange();
    }else{
        range=edWin.getSelection();
        range=range.getRangeAt(range.rangeCount-1);
    }

    return range;
}

function act(oSender, sAction, sParam)
{
    switch(sAction){
    case 'New':
        edDoc.getElementsByTagName('BODY')[0].innerHTML='';
        break;
    case 'Open':
        edDoc.getElementsByTagName('BODY')[0].innerHTML=document.getElementById('ta_wysiwyg').value;
        break;
    case 'Save':
        document.getElementById('ta_wysiwyg').value=edDoc.getElementsByTagName('BODY')[0].innerHTML;
        break;
    case 'Cut':
    case 'Copy':
    case 'Paste':
        try{
        edDoc.execCommand(sAction,false,getEdSelection());
        }catch(e){}
        break;
        // work in MSIE
        // Gecko note: this command won't work without setting a pref or using signed JS.
//  See: http://www.mozilla.org/editor/midasdemo/securityprefs.html
        // don't work in Opera
        // break;
    case 'CreateLink':
        sUrl = prompt("Введите ссылку","http://");
        edDoc.execCommand('createlink',false,sUrl);
        break;
    case 'RemoveLink':
        edDoc.execCommand('unlink',false,null);
        break;
    case 'InsertImage':
        sUrl = prompt("Введите ссылку до картинки","http://");
        edDoc.execCommand('insertimage',false,sUrl);
        break;
    case 'Bold':
    case 'Italic':
    case 'Underline':
    case 'JustifyLeft':
    case 'JustifyCenter':
    case 'JustifyRight':
    case 'JustifyFull':
    case 'StrikeThrough':
    case 'Undo':
    case 'Redo':
        try{
        edDoc.execCommand(sAction,false,getEdSelection());
        }catch(e){}
        break;
    default:
    }

//    edWin.focus();
//    if(Opera) dWebEd.focus();
}

function actSmile(oSender, sAction, sParam)
{
//    alert("<img src=\"/static/misc/smile_"+sAction+".gif\" border=\"0\" alt=\""+sParam+"\">");
//    edDoc.execCommand('inserthtml',false,"<img src=\"/static/misc/smile_"+sAction+".gif\" border=\"0\" alt=\""+sParam+"\">");

    sUrl = "/static/misc/smile_"+sAction+".gif"
    edDoc.execCommand('insertimage',false,sUrl);

//    edWin.focus();
//    if (Opera) dWebEd.focus();
}
