function editorInitOnLoad(params) {
	document.observe('dom:loaded', function(){
		editorInit(null, params);
	});
}
function myCustomCleanup(type, value) {
    value = tinyMCE.regexpReplace(value, "<o:p>", "<p>");
    value = tinyMCE.regexpReplace(value, "</o:p>", "</p>");
    return value;
}

var last_active_tinyMCE = null;
var editor_smiles_ = $H({"ab":[":)"],"ad":[";)"],"ac":[":-("],"ae":[":-P"],"af":["8-)"],"ag":[":-D"],"ah":[":-["],"aa":["O:-)"],"ak":[":`("],"ai":["=-O"],"aj":[":-*"],"al":[":-X"],"am":[">:o"],"an":[":-|"],"ao":[":-\/"],"ap":["*JOKINGLY*"],"aq":["]:->"],"ar":["[:-}"],"as":["*KISSED*"],"at":[":-!"],"au":["*TIRED*"],"av":["*STOP*"],"aw":["*KISSING*"],"ax":["@}->--"],"ay":["*THUMBS UP*"],"az":["*DRINK*"],"ba":["*IN LOVE*"],"bb":["@="],"bc":["*HELP*"],"bd":["*\/m\/*"],"be":["%)"],"bf":["*OK*"],"bg":["*WASSUP*"],"bh":["*SORRY*"],"bi":["*BRAVO*"],"bj":["*ROFL*"],"bk":["*PARDON*"],"bl":["*NO*"],"bm":["*CRAZY*"],"bn":["*DONT_KNOW*"],"bo":["*DANCE*"],"bp":["*YAHOO*"],"bq":["*PREVED*"],"br":["*BYE*"],"bs":["*YES*"],"bt":[";D"],"bu":["*WALL*"],"bv":["*WRITE*"],"bw":["*SCRATCH*"]});
function editorInit(selector, params) {
    if(!params) {
        params = {};
    }
    if(params.type == 'comments') {
        params.theme_advanced_buttons1 = 'bold,italic,underline,|,imageupload,videoinsert,userlink,music,mypagesmile,|,blockquote,mypagelink';
        params.height = 90;
    }
    else {
        params.theme_advanced_buttons1 = 'bold,italic,underline,|,justifyleft,justifycenter,justifyright,justifyfull,|,imageupload,videoinsert,userlink,music,mypagesmile,|,fontsizeselect,forecolor,blockquote,mypagelink,bullist,numlist,|,more';
    }
	var init = {
        language : "ru",
		mode : "textareas",
		theme : "advanced",
		skin : "mypage",
        keep_values: false,
        plugins : "safari,noneditable,layer,inlinepopups,advlist",
        dialog_type : "modal",
	    theme_advanced_buttons1 : '',
	    theme_advanced_buttons2 : '',
	    theme_advanced_buttons3 : '',
		theme_advanced_resizing : true,
		theme_advanced_statusbar_location : "bottom",
	    width: '100%',
		height: '250',
        theme_advanced_resize_horizontal : false,
        theme_advanced_resizing_use_cookie : false,        
	    lang: 'ru',
	    theme_advanced_toolbar_location : "top",
		theme_advanced_toolbar_align : "left",
	    body_class : "post_txt",
        cleanup: true,
///        cleanup_callback: myCustomCleanup,
        button_tile_map : true,
        convert_urls : false,
        noneditable_noneditable_class: 'noneditable',
        auto_resize: true,
        //template_external_list_url : "js/template_list.js",
        

        verify_html : false,
		valid_elements : "a[href|target=_blank|music|class|artist],strong/b,div[align],br,p,img[src|alt|align|style],object[width|height],"+
			"param[name|value],embed[src|type|allowscriptaccess|allowfullscreen|width|height],hr,u,i/em,style",
        formats : {
            alignleft : [
                    {selector : 'img', classes : 'alignleft'},
                    {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'left'}}
                ],
            alignright : [
                    {selector : 'img', classes : 'alignright'},
                    {selector : 'p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li', styles : {textAlign : 'right'}}
                ]
        },
		setup : function(ed) {
			ed.addButton('imageupload', {
				title : 'Загрузить картинку',
				onclick : function() {
                    last_active_tinyMCE =  ed;
					editor_image_upload();
				}
			});
			ed.addButton('videoinsert', {
				title : 'Вставить видео',
				onclick : function() {
                    last_active_tinyMCE = ed;
					editor_video();
				}
			});
            ed.addButton('music', {
				title : 'Вставить музыку',
				onclick : function() {
                    last_active_tinyMCE = ed;
					editor_music();
				}
			});
            ed.addButton('more', {
				title : 'Подкат',
				onclick : function() {
					tinyMCE.activeEditor.execCommand('mceInsertContent', false, '<hr />');
				}
			});
            ed.addButton('mypagelink', {
				title : 'Вставить ссылку',
				onclick : function() {
					last_active_tinyMCE = ed;
					editor_link();
				}
			});

            ed.addButton('mypagesmile', {
				title : 'Вставить смайлик',
				onclick : function() {
					last_active_tinyMCE = ed;
					editor_smiles();
				}
			});
            if(params.type == 'comments') {
                ed.onKeyPress.add(function(ed, e) {
                     getKeystroke(ed, e);
                });
            }


            last_active_tinyMCE = ed;
		},
        force_br_newlines : true,
        force_p_newlines : false,
        forced_root_block : ""
	};

    if(params) {
        for (key in params) {
            init[key] = params[key];
        }
    }

    if(params.auto_resize == true) {
        params.init_instance_callback = fitEditor;
    }


	if(selector) {
		init.selector = selector;
	}
    tinyMCE.init(init);
}

function getKeystroke(ed, e)
{
    var ev;
    var keynum;

    if(window.event) { 
        ev = window.event;   
        keynum = e.keycode 
    }
    else if(e.which) { 
        ev = e;
        keynum = e.which 
    }

    if(e.ctrlKey == 1) {
        if(keynum == 13 || keynum == 10) {    
            
            $($($(ed.editorContainer).up('form')).submit.click());
            //$($(e.target).up('form').form_submit).click();
        }
    }
}

var tinyMCEmode = true;
function toogleEditorMode(sEditorID) {
    try {
        if(tinyMCEmode) {
            tinyMCE.removeMCEControl(tinyMCE.getEditorId(sEditorID));
            tinyMCEmode = false;
        } else {
            tinyMCE.addMCEControl(document.getElementById(sEditorID), sEditorID);
            tinyMCEmode = true;
        }
    } catch(e) {
        
    }
}

function fitEditor(ed) {
    editorID = ed.id;
    var tble, frame, doc, docHeight, frameHeight;

    frame = document.getElementById(editorID+"_ifr");
    if ( frame != null )
    {
        if (frame.contentDocument) doc = frame.contentDocument;
        else if (frame.contentWindow) doc = frame.contentWindow.document;
        else if (frame.document) doc = frame.document;

        if ( doc == null )
        return;

        tble = frame.parentNode.parentNode.parentNode.parentNode;
        tble.style.height = 'auto';

        frameHeight = parseInt(frame.style.height);

        if ( doc.height ) docHeight = doc.height;
        else docHeight = parseInt(doc.body.scrollHeight);

        if(docHeight < parseInt(ed.settings.height)) {
            docHeight =  ed.settings.height;
        }
        if(docHeight > 1000) {
            docHeight = 1000;
        }

        frame.style.height = docHeight + "px";
    }
};


var image_upload_form = null;
function editor_image_upload() {
    var iframe = new Element('iframe', {'name': 'uploader_image', 'id': 'uploader_image'}).hide();
    var form = new Element('form', {
        action: '/g/?action=upload_image',
        method: 'post',
        enctype: 'multipart/form-data',
        target: 'uploader_image'
    });
    form.insert(iframe);

    form.observe('submit', function(e) {
        $(e.target).disable_submit();
    });

    var dl = new Element('dl');

    var file = new Element('input', {'type': 'file', 'name': 'file[]', multiple: true});

    Event.observe(file, 'change', function(e) { form.submit(); $(form).disable_submit(); });
    
    dl.insert(new Element('dt').insert('из файла')).insert(new Element('dd').insert(file));
    dl.insert(new Element('dt').insert('из интернета')).insert(new Element('dd').insert(new Element('input', {'type': 'text', 'name': 'url'})));
    dl.insert(new Element('dt')).insert(new Element('dd').insert(new Element('input', {'type': 'submit', 'value': 'Загрузить'})));

    form.insert(dl);

    image_upload_form = form;
    Win('Вставка изображения', form, 'upload_image');
}
/*
function editor_upload(files) {
    var list = new Element('ul');
    $A(files).each(function(file) {
        if (!file.type.match(/image.*)) {
            return true;
        }
        var li = new Element('li').update(file.name);

        var img = new Element('img');
        li.insert(img);
        list.insert(li);
        var reader = new FileReader();
        reader.onload = (function(aImg) {
            return function(e) {
                aImg.setAttribute('src', e.target.result);
                aImg.setAttribute('width', 150);
            };
        })(img);

        reader.readAsDataURL(file);
    });
    Win('', list);
}
*/

function editor_image_insert(path) {
    
	last_active_tinyMCE.execCommand('mceInsertContent', false, '<img src="http://'+mypage.domain.media + '/' + path + '" alt="" />');
}

var upload_image_path = null;
function upload_image_callback(path) {
	upload_image_path = path;
	editor_image_insert(path);
}

var music_upload_tpl = '<div id="music_select">\n\
    <ul class="tabs">\n\
        <li><a href="#" onclick="$(\'music_upload_form\').hide(); $(\'uploaded_music_select\').show(); return false;">Моя музыка</a></li>\n\
        <li><a href="#" onclick="$(\'music_upload_form\').show(); $(\'uploaded_music_select\').hide(); return false;">Загрузить</a></li>\n\
    </ul>\n\
    <form id="music_upload_form" method="post" action="/g/?action=upload_music" enctype="multipart/form-data" target="uploader_music" style="display: none">\n\
        <iframe name="uploader_music" id="uploader_music" style="display: none"></iframe>\n\
        <dl>\n\
            <dt>из файла</dt>\n\
            <dd><input type="file" name="file" /></dd>\n\
            <dd><input type="submit" value="Загрузить" /></dd>\n\
        </dl>\n\
    </form>\n\
    <div id="uploaded_music_select">\n\
    </div>\n\
</div>';

function editor_music() {
    var m = music_upload_tpl.toDom();

    $(m.select('form')[0]).observe('submit', function(e) {
        $(e.target).select('[type=submit]')[0].disable();
    });

    Win('Вставка музыки', m, 'upload_music');

    new Ajax.Request('/g/?action=my_music', {
        onComplete: function(t) {
            var data = t.responseText.evalJSON();
            var ul = new Element('ul');
            data.each(function(i) {
                
                try {
                    var params = '{id:'+i.id+',artist:'+Object.inspect(i.a)+',title:'+Object.inspect(i.t)+'}';
                    var p = '<div class="wrap">'+show_player(i.id, i.a, i.t)+'</div><a href="#" onclick="upload_music_callback('+params+');return false;" class="add_music">Вставить</a>';
                    ul.insert(new Element('li').update(p));
                }
                catch(e) {
                    alert(dd(i));
                }
                
            });
            $('uploaded_music_select').insert(ul);
        }
    });
}


function upload_music_callback(data) {
	last_active_tinyMCE.execCommand('mceInsertContent', false, '<br /><a class="music noneditable" href="#" music="'+data.id+'" artist="'+data.artist+'">'+data.title+'</a><br />');
	Win.close();
}

function editor_video() {
	var form = new Element('form', {'action': '/g/?action=insert_video', 'method': 'post', 'className': 'insert_video'});


	form.observe('submit', function(e) {
		new Ajax.Request('/g/?action=insert_video', {
			parameters: $(e.target).serialize(),
			onComplete: function(t) {
				tinyMCE.activeEditor.execCommand('mceInsertContent', false, t.responseText);
				Win.close();
			}
		});
		$(e.target).select('[type=submit]')[0].disable();
		e.stop();
	});

	//var preview = new Element('div', {'id': 'editor_image_preview'});

	var dl = new Element('dl');

	dl.insert(new Element('dt').insert('Ссылка или код вставки видео<span>youtube.com, rutube.com, video.yandex.ru, tvigle.ru, smotri.com, 1tv.ru, vesti.ru, ntv.ru, vimeo.com</span>')).insert(new Element('dd').insert(new Element('textarea', {'name': 'video'})));
	dl.insert(new Element('dt')).insert(new Element('dd').insert(new Element('input', {'type': 'submit', 'value': 'Вставить'})));

	//form.insert(preview);
	form.insert(dl);

	Win('Вставка видео', form, 'insert_video');
}

function insert_user_link() {
	var form = new Element('form', {'action': '', 'method': 'post'});
	form.observe('submit', function(e) {
		last_active_tinyMCE.execCommand('mceInsertContent', false, '@'+$(e.target).serialize(true).login);
		$(e.target).select('[type=submit]')[0].disable();
		Win.close();
		e.stop();
	});

	var dl = new Element('dl');

	dl.insert(new Element('dt').insert('Логин пользователя')).insert(new Element('dd').insert(new Element('input', {'name': 'login'})));
	dl.insert(new Element('dt')).insert(new Element('dd').insert(new Element('input', {'type': 'submit', 'value': 'Вставить'})));
	form.insert(dl);
	Win('Ссылка на пользователя', form, 'user_link');
}

function editor_link() {
	var form = new Element('form', {'action': '', 'method': 'post'});
	form.observe('submit', function(e) {
        var data = $(e.target).serialize(true);
        if(data.text == '') {
            data.text = data.link;
        }
		last_active_tinyMCE.execCommand('mceInsertContent', false, '<a href="'+data.link+'">'+data.text+'</a>');
		$(e.target).select('[type=submit]')[0].disable();
		Win.close($(e.target));
		e.stop();
	});

	var dl = new Element('dl');

	dl.insert(new Element('dt').insert('Ссылка')).insert(new Element('dd').insert(new Element('input', {'name': 'link'})));
    dl.insert(new Element('dt').insert('Текст ссылки')).insert(new Element('dd').insert(new Element('input', {'name': 'text'})));
	dl.insert(new Element('dt')).insert(new Element('dd').insert(new Element('input', {'type': 'submit', 'value': 'Вставить'})));
	form.insert(dl);
	Win('Ссылка', form);
}


function editor_smiles() {
    var list = new Element('ul').addClassName('insert_smiles');
    editor_smiles_.each(function(i) {
        list.insert('<li onclick="editor_smile_insert(\''+i.value+'\')" style="background-image: url(\'http://'+mypage.domain.static+'/images/smiles/animated/'+i.key+'.gif\');"></li>');
    });

    Win('Смайлики', list);
}

function editor_smile_insert(smile) {
    Win.close();
    last_active_tinyMCE.execCommand('mceInsertContent', false, smile);
}

