var IPS_Lite_Editor=new Array();
function ips_text_editor_lite(editor_id)
{
	this.editor_id=editor_id;
	this.control_obj=document.getElementById(editor_id+'-controls');
	this.initialized=false;this.buttons=new Array();
	this.fonts=new Array();this.state=new Array();
	this.text_obj=document.getElementById(this.editor_id+'_textarea');
	this.open_brace='[';this.close_brace=']';
	this.editor_document=this.text_obj;
	this.editor_window=this.editor_document;
	this._ie_cache=null;this.is_ie=is_ie;
	this.is_moz=is_moz;this.is_opera=is_opera;
	this.has_focus=false;this.emoticon_window_id=null;this.init=function(){var controls=new Array();
	if(!this.control_obj)
	{
		return;
	}
	var items=this.control_obj.getElementsByTagName("DIV");
	for(var i=0;i<items.length;i++)
	{
		if((items[i].className=='rte-normal'||items[i].className=='rte-menu-button'||items[i].className=='rte-normal-menubutton')&&items[i].id)
		{
			controls[controls.length]=items[i].id;
		}
	}
	for(var i=0;i<controls.length;i++)
	{
		var control=document.getElementById(controls[i]);
		if(control.className=='rte-normal')
		{
			this.init_editor_button(control);
		}else if(control.className=='rte-menu-button'||control.className=='rte-normal-menubutton')
			{
				this.init_editor_popup_button(control);
			}
	}
	this.text_obj.onfocus=ips_editor_events.prototype.editor_window_onfocus;this.text_obj.onblur=ips_editor_events.prototype.editor_window_onblur;
	if(this.editor_document.addEventListener)
	{
		this.editor_document.addEventListener('keypress',ips_editor_events.prototype.editor_document_onkeypress,false);
	}
	};
	this.editor_check_focus=function()
	{
		if(!this.text_obj.has_focus)
		 {
		 	if(this.is_opera)
			{
				this.text_obj.focus();
			}try{this.text_obj.focus();
			}catch(err)
			{
				return false;
			}
			}return true;
	};
	this.init_editor_button=function(obj)
	{
		obj.cmd=obj.id.replace(new RegExp('^'+this.editor_id+'_cmd_(.+?)$'),'$1');
		obj.editor_id=this.editor_id;
		this.buttons[obj.cmd]=obj;
		obj.state=false;
		obj.mode='normal';
		obj.real_type='button';
		obj.onclick=ips_editor_events.prototype.button_onmouse_event;
		obj.onmousedown=ips_editor_events.prototype.button_onmouse_event;
		obj.onmouseover=ips_editor_events.prototype.button_onmouse_event;
		obj.onmouseout=ips_editor_events.prototype.button_onmouse_event;
	};
	this.set_button_context=function(obj,state,type){if(typeof type=='undefined')
		{
			type='button';
		}
		switch(obj.state)
		 {
		 	case true:
		 	{
		 		switch(state)
		 		{
		 			case 'mouseout':
		 			{
		 				this.editor_set_ctl_style(obj,'button','selected');
		 				break;
		 			}
		 			case 'mouseover':
		 			case 'mousedown':
		 			case 'mouseup':
		 			{
		 				this.editor_set_ctl_style(obj,type,'down');
		 				break;
		 			}
		 		}break;
		 	}
		 	default:
		 	{
		 		switch(state)
		 		{
		 			case 'mouseout':
		 			{
		 				this.editor_set_ctl_style(obj,type,'normal');
		 				break;
		 			}
		 			case 'mousedown':
		 			{
		 				this.editor_set_ctl_style(obj,type,'down');
		 				break;
		 			}
		 			case 'mouseover':
		 			case 'mouseup':
		 			{
		 				this.editor_set_ctl_style(obj,type,'hover');
		 				break;
		 			}
		 		}
		 		break;
		 	 }
		 	}
		 };
		 this.editor_set_ctl_style=function(obj,type,mode)
		 {
		 	if(obj.mode!=mode)
		 	{
		 		var extra='';
		 		if(type=='menu')
		 		{
		 			extra='-menu';
		 			}else if(type=='menubutton')
		 				{extra='-menubutton';
		 				}
		 				extra+=obj.colorname?'-color':'';
		 				extra+=obj.emo_id?'-emo':'';
		 				obj.mode=mode;
		 				try{
		 					switch(mode)
		 					{
		 						case "normal":
		 					{
		 						obj.className='rte-normal'+extra;
		 					}
		 					break;case "hover":
		 					{
		 					obj.className='rte-hover'+extra;
		 					}
		 					break;
		 					case "selected":
		 					case "down":
		 					{
		 						obj.className='rte-selected'+extra;
		 					}
		 					break;
		 					}
		 					}
		 					catch(e)
		 					{
		 					}
		 					}
		 				};
		 				this.format_text=function(e,command,arg){e=ipsclass.cancel_bubble(e,true);if(command.match( /resize_/)){this.resize_editorbox(command.replace( /.+?resize_(up|down)/,"$1"));}if(command.match( /emoticon/)){this.show_all_emoticons();}this.editor_check_focus();if(this[command]){var return_val=this[command](e);}else{try{var return_val=this.apply_formatting(command,false,(typeof arg=='undefined'?true:arg));}catch(e){var return_val=false;}}this.editor_check_focus();return return_val;};this.createlink=function(){var _url=prompt(ipb_global_lang['editor_enter_url'],'http://');if(!_url||_url==null||_url=='http://'){return false;}var _text=this.get_selection();_text=_text?_text:prompt(ipb_global_lang['editor_enter_title']);if(!_text||_text==null){return false;}this.wrap_tags('url',_url,_text);};this.insertimage=function()
		 					{
		 						var _text=this.get_selection();
		 						var _url=prompt(ipb_global_lang['editor_enter_image'],_text?_text:"http://");
	           if(!_url||_url==null||_url=='http://')
	            {
		           return false;
	            }
	            this.wrap_tags('img',false,_url);
	            };
	
	/**
	* STD:
	* Insert video override
	*/
	this.insertvideo = function()
	{
		var _text = this.get_selection();
		var _url  = prompt( ipb_global_lang['editor_enter_video'], _text ? _text : "http://" );
		
		if( !_url || _url == null || _url == 'http://' )
		{
			return false;
		}	
				
		this.wrap_tags( 'video', false, _url );
	};		
		
		this.ipb_quote=function()
		{
			var _text=this.get_selection();
			this.wrap_tags('quote',false,_text);
		};
		this.ipb_code=function()
		{
		 var _text=this.get_selection();
		 this.wrap_tags('code',false,_text);
		};
		this.apply_formatting=function(cmd,dialog,argument){switch(cmd){case 'bold':case 'italic':case 'underline':{this.wrap_tags(cmd.substr(0,1),false);return;}case 'justifyleft':case 'justifycenter':case 'justifyright':{this.wrap_tags(cmd.substr(7),false);return;}case 'indent':{this.wrap_tags(cmd,false);return;}case 'createlink':{var sel=this.get_selection();if(sel){this.wrap_tags('url',argument);}else{this.wrap_tags('url',argument,argument);}return;}case 'fontname':{this.wrap_tags('font',argument);return;}case 'fontsize':{this.wrap_tags('size',argument);return;}case 'forecolor':{this.wrap_tags('color',argument);return;}case 'backcolor':{this.wrap_tags('background',argument);return;}case 'insertimage':{this.wrap_tags('img',false,argument);return;}case 'strikethrough':{this.wrap_tags('strike',false);return;}case 'superscript':{this.wrap_tags('sup',false);return;}case 'subscript':{this.wrap_tags('sub',false);return;}case 'removeformat':return;}};this.wrap_tags=function(tag_name,has_option,selected_text){var tag_close=tag_name;if(typeof selected_text=='undefined'){selected_text=this.get_selection();selected_text=(selected_text===false)?'':new String(selected_text);}if(has_option===true){var option=prompt(ips_language_array['js_rte_optionals']?ips_language_array['js_rte_optionals']:"Enter the optional arguments for this tag",'');if(option){var opentag=this.open_brace+tag_name+'="'+option+'"'+this.close_brace;}else{return false;}}else if(has_option!==false){var opentag=this.open_brace+tag_name+'="'+has_option+'"'+this.close_brace;}else{var opentag=this.open_brace+tag_name+this.close_brace;}var closetag=this.open_brace+'/'+tag_close+this.close_brace;var text=opentag+selected_text+closetag;this.insert_text(text);return false;};this.wrap_tags_lite=function(start_text,close_text){selected_text=this.get_selection();selected_text=(selected_text===false)?'':new String(selected_text);this.insert_text(start_text+selected_text+close_text);return false;};this.editor_get_contents=function(){return this.editor_document.value;};this.get_selection=function(){if(typeof(this.editor_document.selectionStart)!='undefined'){return this.editor_document.value.substr(this.editor_document.selectionStart,this.editor_document.selectionEnd-this.editor_document.selectionStart);}else if((document.selection&&document.selection.createRange)||this._ie_cache){return this._ie_cache?this._ie_cache.text:document.selection.createRange().text;}else if(window.getSelection){return window.getSelection()+'';}else{return false;}};this.insert_text=function(text){if(this.editor_check_focus()==false){return false;}if(typeof(this.editor_document.selectionStart)!='undefined'){var open=this.editor_document.selectionStart+0;var st=this.editor_document.scrollTop;this.editor_document.value=this.editor_document.value.substr(0,this.editor_document.selectionStart)+text+this.editor_document.value.substr(this.editor_document.selectionEnd);if(!text.match(new RegExp("\\" + this.open_brace + "(\\S+?)" + "\\" + this.close_brace + "\\" + this.open_brace + "/(\\S+?)" + "\\" + this.close_brace ) ) )
{
this.editor_document.selectionStart = open;
this.editor_document.selectionEnd   = open + text.length;
this.editor_document.scrollTop      = st;
}
}
else if ( ( document.selection && document.selection.createRange ) || this._ie_cache )
{
var sel  = this._ie_cache ? this._ie_cache : document.selection.createRange();
sel.text = text.replace(/\r?\n/g, '\r\n');
sel.select();
}
else
{
this.editor_document.value += text;
}
this._ie_cache = null;
};
this.show_all_emoticons = function()
{
if ( typeof( this.emoticon_window_id ) != null )
{
this.emoticon_window_id = window.open( ipb_var_base_url + "act=legends&CODE=emoticons&_lite=1&editor_id=" + editor_id,"Legends","width=250,height=500,resizable=yes,scrollbars=yes");
}
else
{
this.emoticon_window_id.focus();
}
return false;
};
this.insert_emoticon = function( emo_id, emo_image, emo_code, event )
{
emo_code = ipsclass.un_htmlspecialchars( emo_code );
this.wrap_tags_lite( " " + emo_code, " ");
if ( this.is_ie )
{
if ( IPS_Lite_Editor[ this.editor_id ].emoticon_window_id != '' && typeof( IPS_Lite_Editor[ this.editor_id ].emoticon_window_id ) != 'undefined' )
{
IPS_Lite_Editor[ this.editor_id ].emoticon_window_id.focus();
}
}
};
this.resize_editorbox = function( direction )
{
var inc_value	   = 100;
var current_height = parseInt( this.text_obj.style.height );
var new_height     = 0;
current_height     = current_height ? current_height : 200;
if ( current_height >= 50 )
{
if ( direction == 'up' )
{
new_height = current_height - inc_value;
}
else
{
new_height = current_height + inc_value;
}
if ( new_height > 149 )
{
this.text_obj.style.height = new_height + 'px';
}
}
};
};
function ips_editor_events()
{
}
ips_editor_events.prototype.button_onmouse_event = function(e)
{
if ( is_ie )
{
e = ipsclass.cancel_bubble(e, true);
}
if ( e.type == 'click' )
{
IPS_Lite_Editor[this.editor_id].format_text(e, this.cmd, false, true);
}
IPS_Lite_Editor[this.editor_id].set_button_context(this, e.type);
};
ips_editor_events.prototype.editor_window_onfocus = function(e)
{
this.has_focus = true;
};
ips_editor_events.prototype.editor_window_onblur = function(e)
{
this.has_focus = false;
};
ips_editor_events.prototype.editor_document_onkeypress = function(e)
{	
if ( e.ctrlKey )
{
switch (String.fromCharCode(e.charCode).toLowerCase())
{
case 'b': cmd = 'bold';      break;
case 'i': cmd = 'italic';    break;
case 'u': cmd = 'underline'; break;
default: return;
}
e.preventDefault();
IPS_Lite_Editor[this.editor_id].apply_formatting(cmd, false, null);
return false;
}
};
