var Y = YAHOO;
var D = YAHOO.util.Dom;
var C = YAHOO.util.Connect;
var $ = D.get;
YAHOO.namespace('AuthorToolbox');

var tinyMCE = undefined;
var TinyMCE_initialized = false;

/* UTIL FUNCTIONS */
function getCookie(c_name)
{
if (document.cookie.length>0)
  {
  c_start=document.cookie.indexOf(c_name + "=");
  if (c_start!=-1)
    {
    c_start=c_start + c_name.length+1;
    c_end=document.cookie.indexOf(";",c_start);
    if (c_end==-1) c_end=document.cookie.length;
    return unescape(document.cookie.substring(c_start,c_end));
    }
  }
return "";
}

function setCookie(c_name,value,expiredays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate()+expiredays);
document.cookie=c_name+ "=" +escape(value)+
((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}
/* END UTIL */

Y.AuthorToolbox.init = function ()
{
	$('toolbox_zip').onclick = Y.AuthorToolbox.startEdit;
}

Y.AuthorToolbox.startEdit = function ( edit_type )
{
	$('blogger_' + edit_type).value = trim($('blogger_' + edit_type + '_display').innerHTML);
	D.setStyle('blogger_' + edit_type + '_display','display', 'none');
	D.setStyle('blogger_' + edit_type + '_editor','display', 'block');
	$('blogger_' + edit_type).focus();
}

Y.AuthorToolbox.finishEdit = function (edit_type)
{
	if(edit_type == 'teaser'){
		maxlength = 90;
		elem = $('blogger_' + edit_type);
		notag = rmTags(elem.value);
		if(notag.length > maxlength) {
			alert('Value is too long (should be up to ' + maxlength + ' characters)');
			return false;
		}
	}
	$('blogger_' + edit_type + '_display').innerHTML = trim($('blogger_' + edit_type).value);
    C.asyncRequest('GET', '/mt.cgi?__mode=backstage_ajax_save_toolbox&type=' + edit_type + '&body=' + trim($('blogger_' + edit_type).value) );
	D.setStyle('blogger_' + edit_type + '_display','display', 'block');
	D.setStyle('blogger_' + edit_type + '_editor','display', 'none');

	// unmask page if required fields are filled
	if ( D.hasClass(document.body, 'toolbox_masked') 
		&& $('blogger_zip').value
		&& $('blogger_email').value 
       )
	{
		D.removeClass(document.body, 'toolbox_masked')
    }
    setCookie('fb_prompted', 1, 3);
}

Y.AuthorToolbox.cancelEdit = function (edit_type)
{
	D.setStyle('blogger_' + edit_type + '_display','display', 'block');
	D.setStyle('blogger_' + edit_type + '_editor','display', 'none');
	if ( D.hasClass(document.body, 'toolbox_masked')
	    && D.getStyle ( 'blogger_email_editor', 'display' ) == 'none'
	    && D.getStyle ( 'blogger_zip_editor', 'display' ) == 'none'
	    && D.getStyle ( 'blogger_teaser_editor', 'display' ) == 'none'
        && D.getStyle ( 'blogger_twitter_user_editor', 'display' ) == 'none' )
	{
	    D.removeClass(document.body, 'toolbox_masked');
	}
}

Y.AuthorToolbox.checkField = function ( edit_type )
{
	if (!$('blogger_' + edit_type).value)
	{
		alert('Please provide us with a working email and your current zip code (no information will be shared with third parties).');
		Y.AuthorToolbox.startEdit(edit_type);
		return false;
	}
	return true;
}

Y.AuthorToolbox.initTinyMCE = function() {
    if ( TinyMCE_initialized )
        return;
    tinyMCE.init({
        mode : "textareas",
        theme : "advanced",
        plugins : "inlinepopups,insertdatetime,preview,searchreplace,paste",
        theme_advanced_buttons1 : "mybutton,bold,italic,underline,separator,strikethrough,justifyleft,justifycenter,justifyright, justifyfull,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,link,unlink,|,code",
        theme_advanced_buttons2 : "",
        theme_advanced_buttons3 : "",
        theme_advanced_toolbar_location : "top",
        theme_advanced_toolbar_align : "left",
        remove_linebreaks: false
    });
    TinyMCE_initialized = true;
}

Y.AuthorToolbox.addLivepreviewEvent = function() {
    E.onAvailable('livepreview_btn', function() {
        E.addListener($('livepreview_btn'), 'mousedown', function() {
            $('text').value = tinyMCE.get('text').getContent().replace(/&lt;HH/gi, '<HH').replace(/HH&gt;/gi, 'HH>');
        });
    });
}

Y.AuthorToolbox.deleteLivepreviewEvent = function() {
    E.onAvailable('livepreview_btn', function() {
        E.removeListener($('livepreview_btn'), 'mousedown');
    });
}

Y.AuthorToolbox.changeEditor = function ( chb_input ) {
    // wysiwyg_editor 0 - simple editor (TinyMCE disabled)
    // wysiwyg_editor 1 - TinyMCE Editor enabled
    var wysiwyg_editor = 0;
    if ( chb_input.checked ) {
        wysiwyg_editor = 1;
    }

    chb_input.disabled = true;

    var toggleEditorSuccess = function(o) 
    {
        chb_input.disabled = false;
        var id = 'text';
        if ( !$('edit-entry') ) {
            D.setStyle($('wysiwyg_loader'), 'display', 'none');
            return;
        }
        
         var editor_btns = D.getElementsByClassName('editor_btn');

        if ( !TinyMCE_initialized ) {
            Y.AuthorToolbox.initTinyMCE();
            D.setStyle(editor_btns, 'display', 'none');
            D.setStyle($('wysiwyg_loader'), 'display', 'none');
            $(id).value = $(id).value.replace(/<HH/gi, '&lt;HH').replace(/HH>/gi, 'HH&gt;');
            Y.AuthorToolbox.addLivepreviewEvent();
            return;
        }

        if ( !tinyMCE.get(id) ) {
            Y.AuthorToolbox.addLivepreviewEvent();
            tinyMCE.execCommand('mceAddControl', false, id);
            D.setStyle(editor_btns, 'display', 'none');
            $(id).value = $(id).value.replace(/<HH/gi, '&lt;HH').replace(/HH>/gi, 'HH&gt;');
            if ( !$('convert_breaks') && $('entryform') ) {
                var convert_breaks = document.createElement('input');
                convert_breaks.setAttribute('id', 'convert_breaks');
                convert_breaks.setAttribute('name', 'convert_breaks');
                convert_breaks.setAttribute('type', 'hidden');
                convert_breaks.setAttribute('value', 0);
                $('entryform').appendChild(convert_breaks);
            }
        } else {
            Y.AuthorToolbox.deleteLivepreviewEvent();
            tinyMCE.execCommand('mceRemoveControl', false, id);
            D.setStyle(D.getElementsByClassName('editor_btn'), 'display', 'inline');
            $(id).value = $(id).value.replace(/&lt;HH/gi, '<HH').replace(/HH&gt;/gi, 'HH>');
            if ( $('convert_breaks') ) {
                $('convert_breaks').value = '__default__';
            }
        }

        D.setStyle($('wysiwyg_loader'), 'display', 'none');
    }
    
    var toggleEditorFailure = function(o)
    {
        var input = o.argument;
        alert("Unable to switch editor. Check your internet connection");
        D.setStyle($('wysiwyg_loader'), 'display', 'none');
        input.checked = !input.checked;
        input.disabled = false;
    }

    C.asyncRequest('GET', '/mt.cgi?__mode=backstage_ajax_wysiwyg_editor&enabled=' + wysiwyg_editor, 
    {
        success: toggleEditorSuccess,
        failure: toggleEditorFailure,
        argument: chb_input
    });

    var loader = $('wysiwyg_loader');
    if ( loader ) {
        D.setStyle('wysiwyg_loader', 'display', 'block');
    }
}

function trim(str) {
	return str.replace(/^\s+/, '').replace(/\s+$/, '')
}
function html_encode(str) {
	return str.replace(/>/g, '&gt;').replace(/</g, '&lt;');
}
function html_decode(str) {
	return str.replace(/&gt;/g, '>').replace(/&lt;/g, '<');
}

function rmTags(str) {
	return str.replace(/<.*?>/g, '');
}
