var text_enter_url      = "Inserta la URL completa para el enlace";
var text_enter_url_name = "Inserta el título de la página web";
var text_enter_image    = "Inserta la URL completa para la imagen";
var text_enter_email    = "Inserta la dirección de correo";
var error_no_url        = "Debes insertar una URL";
var error_no_title      = "Debes insertar un título";
var error_no_email      = "Debes insertar una dirección de correo";
var list_prompt         = "Inserta un ítem de la lista. Has click en 'Cancelar' o deja en blanco para terminar la lista";
var dontpassgo   = 0;
var postformid;
var postfieldid;
var postformobj;
var postfielobj;

var bbtags = new Array();

var ips_primary_fonts = new Array(
	"arial",
	"arial black",
	"arial narrow",
	"book antiqua",
	"century gothic",
	"comic sans ms",
	"courier new",
	"fixedsys",
	"franklin gothic medium",
	"garamond",
	"georgia",
	"impact",
	"lucida console",
	"lucida sans unicode",
	"microsoft sans serif",
	"palatino linotype",
	"system",
	"tahoma",
	"times new roman",
	"trebuchet ms",
	"verdana"
);

var ips_fontsizes =
{
	'10px' : 1,
	'10pt' : 2,
	'12pt' : 3,
	'14pt' : 4,
	'18pt' : 5,
	'24pt' : 6,
	'36pt' : 7
}

var ips_font_sizes = new Array( 1, 2, 3, 4, 5, 6, 7 );

var ips_reverse_primary_fonts = new Array();
var ips_reverse_font_sizes    = new Array();
var ips_reverse_fontsizes     = new Array();

for( var i in ips_primary_fonts )
{
	ips_reverse_primary_fonts[ ips_primary_fonts[i] ] = i;
}

for( var i in ips_font_sizes )
{
	ips_reverse_font_sizes[ ips_font_sizes[i] ] = i;
}

for( var i in ips_fontsizes )
{
	ips_reverse_fontsizes[ ips_fontsizes[i] ] = i;
}
//Otras variables //
var i_am = 'std';
var rtewindow;
var buttonbar;

var opentags =
{
	'b'          : 0,
	'i'          : 0,
	's'          : 0,
	'u'          : 0,
	'img'        : 0,
	'quote'      : 0,
	'left'       : 0,
	'center'     : 0,
	'right'      : 0,
	'color'      : 0,
	'background' : 0,
	'indent'     : 0,
	'code'       : 0
};

var tags_to_div =
{
	'b'          : 'do_bold',
	'i'          : 'do_italic',
	's'          : 'do_strikethrough',
	'u'          : 'do_underline',
	'quote'      : 'do_quote',
	'left'       : 'do_justifyleft',
	'center'     : 'do_justifycenter',
	'right'      : 'do_justifyright',
	'color'      : 'forecolor',
	'background' : 'hilitecolor',
	'indent'     : 'do_indent',
	'code'       : 'do_code'
};

var rte_to_std =
{
	'forecolor'   : 'color',
	'hilitecolor' : 'background'
};

var easymode = 0;
// IE bug fix
var ie_range_cache = '';

var uagent    = navigator.userAgent.toLowerCase();
var is_safari = ( (uagent.indexOf('safari') != -1) || (navigator.vendor == "Apple Computer, Inc.") );
var is_opera  = (uagent.indexOf('opera') != -1);
var is_webtv  = (uagent.indexOf('webtv') != -1);
var is_ie     = ( (uagent.indexOf('msie') != -1) && (!is_opera) && (!is_safari) && (!is_webtv) );
var is_ie4    = ( (is_ie) && (uagent.indexOf("msie 4.") != -1) );
var is_moz    = ( (navigator.product == 'Gecko')  && (!is_opera) && (!is_webtv) && (!is_safari) );
var is_ns     = ( (uagent.indexOf('compatible') == -1) && (uagent.indexOf('mozilla') != -1) && (!is_opera) && (!is_webtv) && (!is_safari) );
var is_ns4    = ( (is_ns) && (parseInt(navigator.appVersion) == 4) );
var is_kon    = (uagent.indexOf('konqueror') != -1);

var is_win    =  ( (uagent.indexOf("win") != -1) || (uagent.indexOf("16bit") !=- 1) );
var is_mac    = ( (uagent.indexOf("mac") != -1) || (navigator.vendor == "Apple Computer, Inc.") );
var ua_vers   = parseInt(navigator.appVersion);

function smart_close_tags( thetag )
{
	lastindex = 0;
	
	for (i = 0 ; i < bbtags.length; i++ )
	{
		if ( bbtags[i] == thetag )
		{
			lastindex = i;
		}
	}
	
	while ( bbtags[lastindex] )
	{
		tagRemove = popstack(bbtags);
		
		wrap_tags("[/" + tagRemove + "]", "")
		
		if ( i_am == 'std' )
		{
			toggle_button( tagRemove );
		}
		else
		{
			rte_button_update( tagRemove );
		}
	}
}

function write_fontface_box()
{
	html = "";
	
	for( var i in ips_primary_fonts )
	{
		option  = ips_primary_fonts[i];
		display = ips_primary_fonts[i];
		
		var tmp = display.split( " " );
		var rtn = new Array;
		
		for ( var id in tmp )
		{
			rtn[id] = tmp[id].substr(0, 1).toUpperCase() + tmp[id].substr(1);
		}
		
		display = rtn.join( " " );
		
		html += "\n<option style='font-family:" + display + "' value='" + display + "'>" + display + "</option>";
	}
	
	return html;
}

function write_fontsize_box()
{
	html = "";
	
	for( var i in ips_font_sizes )
	{
		option  = ips_font_sizes[i];
		display = ips_font_sizes[i];
		
		html += "\n<option value='" + display + "'>" + display + "</option>";
	}
	
	return html;
}

function init_editor()
{ 
	if ( ! postformid )
	{
		postformid = 'frm';
	}
	
	if ( ! postfieldid )
	{
		postfieldid = 'mensaje';
	}
	
	postformobj  = document.getElementById( postformid );
	postfieldobj = document.getElementById( postfieldid );
}

function emo_pop()
{
	window.open('masemoticonos.php','masemoticonos','width=500,height=300,top=0,height=0,scrollbars=yes');
}

function img_pop()
{
	window.open("imagenes.php","imagenes","width=350,height=500,resizable=yes,scrollbars=yes"); 
}

function bbc_pop()
{
	window.open( ipb_var_base_url + "act=legends&CODE=bbcode&s={$this->ipsclass->session_id}","Legends","width=700,height=500,resizable=yes,scrollbars=yes"); 
}

function popcolor( elcommand )
{
	if ( opentags[ rte_to_std[ elcommand ] ] )
	{
		smart_close_tags( rte_to_std[ elcommand ] );
		return false;
	}
	else
	{
		//parent.command = command;
		
		if ( is_ie )
		{
			ie_range_cache = document.selection.createRange();
		}
		if (document.getElementById('tablacolores').style.display=='')
		{
			document.getElementById('tablacolores').style.display='none';
		}
		else
		{
			document.getElementById('tablacolores').style.display='';
		}
	}
}

function setColor(color)
{
		if ( wrap_tags( '[color='+color+']', '[/color]', true ) )
		{
	
		}
	document.getElementById('tablacolores').style.display = "none";
}

function emoticon(theSmilie)
{
	wrap_tags(" " + theSmilie + " ", "", false);
}

function alterfont(theval, thetag)
{
    if (theval == 0)
    {
    	return;
	}
	
	if ( wrap_tags("[" + thetag + "=" + theval + "]", "[/" + thetag + "]", true ) )
	{

	}	
    //postformobj.ffont.selectedIndex  = 0;
    //postformobj.fsize.selectedIndex  = 0;
}

function simpletag(thetag)
{
	var tagOpen = opentags[ thetag ];
	
		if ( tagOpen == 0 )
		{
			if ( wrap_tags("[" + thetag + "]", "[/" + thetag + "]", true ) )
			{

			}
		}
		else
		{
			smart_close_tags( thetag );
		}
}

function tag_list( type )
{
	var listvalue = "init";
	var thelist   = "";
	
	opentag = ( type == 'ordered' ) ? '[list=1]' : '[list]';
	
	while ( (listvalue != "") && (listvalue != null) )
	{
		listvalue = prompt(list_prompt, "");
		
		if ( (listvalue != "") && (listvalue != null) )
		{
			thelist = thelist+"[*]"+listvalue+"\n";
		}
	}
	
	if ( thelist != "" )
	{
		wrap_tags( opentag + "\n" + thelist + "[/list]\n", "");
	}
}

function tag_url()
{
	var FoundErrors = '';
	
	if ( check_range() )
	{
		var enterURL = prompt(text_enter_url, "http://");
		
		if ( ! enterURL)
		{
			alert(error_no_url);
			return;
		}
    
		wrap_tags( "[url="+enterURL+"]", "[/url]", "" );
	}
	else
	{
		var enterURL    = prompt(text_enter_url, "http://");
		var enterTITLE  = prompt(text_enter_url_name, "Mi Página Web");
	
		if ( ! enterURL)
		{
			FoundErrors += "\n" + error_no_url;
		}
		if ( ! enterTITLE)
		{
			FoundErrors += "\n" + error_no_title;
		}
	
		if ( FoundErrors )
		{
			alert("Error!"+FoundErrors);
			return;
		}
	
		wrap_tags("[url="+enterURL+"]"+enterTITLE+"[/url]", "");
	}
}

function tag_image()
{
	var FoundErrors = '';
	var alineacion;
	alineacion = 'img';
	
	if (confirm('¿Desea que la imagen se alinee a la izquierda?'))
	{
		alineacion = 'imgl';
	}
	else
	{
		if (confirm('¿Desea que la imagen se alinee a la derecha?'))
		{
			alineacion = 'imgr';
		}
	}
	if ( check_range() )
	{
		wrap_tags( "[" + alineacion + "]", "[/" + alineacion + "]", "" );
	}
	else
	{
		var enterURL = prompt(text_enter_image, "http://");
	
		if ( ! enterURL )
		{ 
			alert(error_no_url); 
			return; 
		}
	
		wrap_tags("[" + alineacion + "]"+enterURL+"[/" + alineacion + "]", "");
	}
}

function tag_email()
{
	if ( check_range() )
	{	
		wrap_tags( "[email]", "[/email]", "" );
	}
	else
	{
		var emailAddress = prompt(text_enter_email, "");
	
		if ( ! emailAddress )
		{ 
			alert(error_no_email); 
			return; 
		}
	
		wrap_tags( "[email]"+emailAddress+"[/email]", "" );
	}
}

function check_range()
{
	var has_range = false;
	
	if ( (ua_vers >= 4) && is_ie && is_win )
	{
		var sel = document.selection;
		var rng = sel.createRange();
		rng.colapse;
		
		if ( (sel.type == "Text" || sel.type == "None") && rng != null )
		{
			if ( rng.text.length > 0)
			{
				has_range = true;
			}
		}
	}
	
	else if ( postfieldobj.selectionEnd )
	{ 
		var ss = postfieldobj.selectionStart;
		var st = postfieldobj.scrollTop;
		var es = postfieldobj.selectionEnd;
		
		if (es <= 2)
		{
			es = postfieldobj.textLength;
		}
		
		var start  = (postfieldobj.value).substring(0, ss);
		var middle = (postfieldobj.value).substring(ss, es);
		var end    = (postfieldobj.value).substring(es, postfieldobj.textLength);
		
		if (postfieldobj.selectionEnd - postfieldobj.selectionStart > 0)
		{
			has_range = true;
		}
	}
	
	return has_range;
}

function check_length()
{
	MessageLength  = postfieldobj.value.length;
	message        = "";
	
	if (MessageMax > 0)
	{
		message = js_post + ": " + js_max_length + "  " + MessageMax + " " + js_characters +".";
	}
	else
	{
		message = "";
	}
			
	alert(message + "      " + js_used + " " + MessageLength + " " + js_characters + ".");
}

function wrap_tags(opentext, closetext, issingle)
{
	var has_closed = false;
	
	if ( ! issingle )
	{
		issingle = false;
	}
	
	if ( (ua_vers >= 4) && is_ie && is_win )
	{
		if ( postfieldobj.isTextEdit )
		{
			postfieldobj.focus();
			
			var sel = document.selection;
			
			var rng = ie_range_cache ? ie_range_cache : sel.createRange();
			rng.colapse;
			
			if ( (sel.type == "Text" || sel.type == "None") && rng != null && rng.text )
			{
				if (closetext != "" && rng.text.length > 0)
				{ 
					opentext += rng.text + closetext;
				}
				else if ( issingle )
				{
					has_closed = true;
				}
				
				rng.text = opentext;
			}
			else
			{
				postfieldobj.value += opentext + closetext;
				has_closed = true;
			}
			
			ie_range_cache = null;
		}
		else
		{
			postfieldobj.value += opentext + closetext;
			has_closed = true;
		}
	}
	
	else if ( postfieldobj.selectionEnd )
	{
		var ss = postfieldobj.selectionStart;
		var st = postfieldobj.scrollTop;
		var es = postfieldobj.selectionEnd;
		
		if (es <= 0)
		{
			es = postfieldobj.textLength;
		}
		
		var start  = (postfieldobj.value).substring(0, ss);
		var middle = (postfieldobj.value).substring(ss, es);
		var end    = (postfieldobj.value).substring(es, postfieldobj.textLength);
		
		if ( postfieldobj.selectionEnd - postfieldobj.selectionStart > 0 )
		{
			middle = opentext + middle + closetext;
		}
		else
		{
			middle = opentext + middle + closetext;
			
			if ( issingle )
			{
				has_closed = true;
			}
		}
		
		postfieldobj.value = start + middle + end;
		
		var cpos = ss + (middle.length);
		
		postfieldobj.selectionStart = cpos;
		postfieldobj.selectionEnd   = cpos;
		postfieldobj.scrollTop      = st;
	}
	
	else
	{ 
		if ( issingle )
		{
			has_closed = false;
		}
			
		postfieldobj.value += opentext + ' ' + closetext;
	}
	
	postfieldobj.focus();
	
	return has_closed;
}	

function ValidateForm( isMsg )
{
	MessageLength  = postfieldobj.value.length;
	errors         = "";
	
	if ( postformobj.removeattachid.value > 0 )
	{
		okdelete = confirm( js_remove_attach );

		if ( okdelete == true )
		{
			return true;
		}
		else
		{
			postformobj.removeattachid.value = 0;
			return false;
		}
	}

	if ( isMsg == 1)
	{
		if ( postformobj.msg_title.value.length < 2 )
		{
			errors = js_msg_no_title;
		}
	}
	
	if ( MessageLength < 2 )
	{
		errors = js_no_message;
	}

	if ( MessageMax !=0 )
	{
		if (MessageLength > MessageMax)
		{
			errors = js_max_length + " " + MessageMax + " " + js_characters + ". " + js_current + ": " + MessageLength;
		}
	}
	
	if ( errors != "" && ! Override )
	{
		alert(errors);
		return false;
	}
	
	else
	{
		postformobj.submit.disabled = true;
		return true;
	}
}

function pushstack(thearray, newval)
{
	arraysize = stacksize(thearray);
	thearray[arraysize] = newval;
}

function popstack(thearray)
{
	arraysize = stacksize(thearray);
	theval = thearray[arraysize - 1];
	delete thearray[arraysize - 1];
	return theval;
}

function InitColorPalette() {
	if (document.getElementsByTagName)
		var x = document.getElementsByTagName('TD'); 
	else if (document.all)
		var x = document.all.tags('TD');
	for (var i=0;i<x.length;i++) {
		if (x[i].id == 'colorin')
		{
			x[i].onmouseover = over;
			x[i].onmouseout = out;
			x[i].onclick = click;
		}
	}
}

function over() {
	this.style.border='1px dotted white';
}

function out() {
	this.style.border='1px solid gray';
}

function click() {
	setColor(this.bgColor);
}
