function emot(text_post){
text_post = '' + text_post + '';
if(document.post.text_post.createtext_postRange && document.post.text_post.caretPos){
var caretPos = document.post.text_post.caretPos;
caretPos.text_post = caretPos.text_post.charAt(caretPos.text_post.length - 1) == ' ' ? text_post + ' ' : text_post;
document.post.text_post.focus();
}
else{
document.post.text_post.value+= text_post;
document.post.text_post.focus();
}}






var postformid;
var postfieldid;
var postformobj;
var postfieldobj;
var MessageMax= parseInt("102400");
var Override= "";


var text_enter_url= "aa";
var text_enter_url_name = "bb";
var text_enter_image= "cc";
var text_enter_email= "dd";
var text_code = "ee";
var text_quot = "ff";
var error_no_url= "gg";
var error_no_title= "hh";
var error_no_email= "ii";
var prompt_start= "jj";
var list_prompt = "kk";

var js_used = "ll";
var js_max_length = "mm";
var js_post = "nn";
var js_no_message = "oo";
var js_current= "pp";
var js_characters = "rr";
var js_msg_no_title = "ss";
var js_remove_attach= "tt";

var js_bbeasy_on= "uu";
var js_bbeasy_off = "ww";
var js_bbeasy_toggle= "yy";
var js_check_length = "zz";

var jsfile_error_lang = "xx";
var jsfile_myweb_lang = "vv";





var input_red      = 'input-warn';
var input_green    = 'input-ok';
var input_ok_box   = 'input-ok-content';
var input_warn_box = 'input-warn-content';

var img_blank      = 'blank.gif';
var img_tick       = 'aff_tick.gif';
var img_cross      = 'aff_cross.gif';

// Sniffer based on http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html

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);

var ipb_pages_shown = 0;
var ipb_pages_array = new Array();

/*-------------------------------------------------------------------------*/
// DST Auto correction
/*-------------------------------------------------------------------------*/

function global_dst_check( tzo, dst )
{
	var thisoffset = tzo + dst;
	var dstoffset  = new Date().getTimezoneOffset() / 60;
	var dstset     = 0;
	var url        = ipb_var_base_url + 'act=xmlout&do=dst-autocorrection&md5check=' + ipb_md5_check;
	
	if ( Math.abs( thisoffset + dstoffset ) == 1 )
	{
		try
		{
			//----------------------------------
			// Fancy first...
			//----------------------------------
			
			xml_dst_set( url + '&xml=1' );
			dstset = 1;
		}
		catch(e)
		{
			dstset = 0;
		}
		
		//----------------------------------
		// No fancy?
		//----------------------------------
		
		if ( dstset == 0 )
		{
			window.location = url;
		}
	}
}

/*-------------------------------------------------------------------------*/
// Lang replace
/*-------------------------------------------------------------------------*/

function lang_build_string()
{
	if ( ! arguments.length || ! arguments )
	{
		return;
	}
	
	var string = arguments[0];
	
	for( var i = 1 ; i < arguments.length ; i++ )
	{
		var match  = new RegExp('<%' + i + '>', 'gi');
		string = string.replace( match, arguments[i] );
	}
	
	return string;
}

/*-------------------------------------------------------------------------*/
// Pop up MyAssistant window
/*-------------------------------------------------------------------------*/

function buddy_pop()
{
	var not_loaded_yet = 0;
	
	if ( use_enhanced_js )
	{
		try
		{
			xml_myassistant_init();
			not_loaded_yet = 1;
		}
		catch( e )
		{
			//alert(e);
			not_loaded_yet = 0;
		}
	}
	
	if ( ! not_loaded_yet )
	{
		ipb_var_base_url = ipb_var_base_url.replace( '&amp;', '&' );
		window.open( ipb_var_base_url + 'act=buddy','BrowserBuddy','width=250,height=500,resizable=yes,scrollbars=yes');
	}
}

/*-------------------------------------------------------------------------*/
// Multi Page jumps
/*-------------------------------------------------------------------------*/

function do_multi_page_jump( pages_id )
{
	var pages       = 1;
	var cur_st      = ipb_var_st;
	var cur_page    = 1;
	var total_posts = ipb_pages_array[ pages_id ][2];
	var per_page    = ipb_pages_array[ pages_id ][1];
	var url_bit     = ipb_pages_array[ pages_id ][0];
	var userPage    = parseInt( document.getElementById( 'st-'+pages_id ).value );
	
	//-----------------------------------
	// Fix up URL BIT
	//-----------------------------------
	
	url_bit = url_bit.replace( new RegExp( "&amp;", "g" ) , '&' );
	
	//-----------------------------------
	// Work out pages
	//-----------------------------------
	
	if ( total_posts % per_page == 0 )
	{
		pages = total_posts / per_page;
	}
	else
	{
		pages = Math.ceil( total_posts / per_page );
	}
	
	if ( cur_st > 0 )
	{
		cur_page = cur_st / per_page; cur_page = cur_page -1;
	}

	if ( userPage > 0  )
	{
		if ( userPage < 1 )     {    userPage = 1;  }
		if ( userPage > pages ) { userPage = pages; }
		if ( userPage == 1 )    {     start = 0;    }
		else { start = (userPage - 1) * per_page; }
		
		window.location = url_bit + "&st=" + start;
		return false;
	}
}

/*-------------------------------------------------------------------------*/
// Hide / Unhide menu elements
/*-------------------------------------------------------------------------*/

function pages_st_focus( pages_id )
{
	document.getElementById( 'st-'+pages_id ).focus();
}

/*-------------------------------------------------------------------------*/
// Hide / Unhide menu elements
/*-------------------------------------------------------------------------*/

function ShowHide(id1, id2)
{
	if (id1 != '') toggleview(id1);
	if (id2 != '') toggleview(id2);
}
	
/*-------------------------------------------------------------------------*/
// Get element by id
/*-------------------------------------------------------------------------*/

function my_getbyid(id)
{
	itm = null;
	
	if (document.getElementById)
	{
		itm = document.getElementById(id);
	}
	else if (document.all)
	{
		itm = document.all[id];
	}
	else if (document.layers)
	{
		itm = document.layers[id];
	}
	
	return itm;
}

/*-------------------------------------------------------------------------*/
// Show/hide toggle
/*-------------------------------------------------------------------------*/

function toggleview(id)
{
	if ( ! id ) return;
	
	if ( itm = my_getbyid(id) )
	{
		if (itm.style.display == "none")
		{
			my_show_div(itm);
		}
		else
		{
			my_hide_div(itm);
		}
	}
}

/*-------------------------------------------------------------------------*/
// Set DIV ID to hide
/*-------------------------------------------------------------------------*/

function my_hide_div(itm)
{
	if ( ! itm ) return;
	
	itm.style.display = "none";
}

/*-------------------------------------------------------------------------*/
// Set DIV ID to show
/*-------------------------------------------------------------------------*/

function my_show_div(itm)
{
	if ( ! itm ) return;
	
	itm.style.display = "";
}

/*-------------------------------------------------------------------------*/
// Change cell colour
/*-------------------------------------------------------------------------*/

function change_cell_color( id, cl )
{
	itm = my_getbyid(id);
	
	if ( itm )
	{
		itm.className = cl;
	}
}

/*-------------------------------------------------------------------------*/
// Toggle category
/*-------------------------------------------------------------------------*/

function togglecategory( fid, add )
{
	saved = new Array();
	clean = new Array();

	//-----------------------------------
	// Get any saved info
	//-----------------------------------
	
	if ( tmp = my_getcookie('collapseprefs') )
	{
		saved = tmp.split(",");
	}
	
	//-----------------------------------
	// Remove bit if exists
	//-----------------------------------
	
	for( i = 0 ; i < saved.length; i++ )
	{
		if ( saved[i] != fid && saved[i] != "" )
		{
			clean[clean.length] = saved[i];
		}
	}
	
	//-----------------------------------
	// Add?
	//-----------------------------------
	
	if ( add )
	{
		clean[ clean.length ] = fid;
		my_show_div( my_getbyid( 'fc_'+fid  ) );
		my_hide_div( my_getbyid( 'fo_'+fid  ) );
	}
	else
	{
		my_show_div( my_getbyid( 'fo_'+fid  ) );
		my_hide_div( my_getbyid( 'fc_'+fid  ) );
	}
	
	my_setcookie( 'collapseprefs', clean.join(','), 1 );
}

/*-------------------------------------------------------------------------*/
// locationjump
/*-------------------------------------------------------------------------*/

function locationjump(url)
{
	window.location = ipb_var_base_url + url;
}

/*-------------------------------------------------------------------------*/
// CHOOSE SKIN
/*-------------------------------------------------------------------------*/

function chooseskin(obj)
{
	choosebox = obj.options[obj.selectedIndex].value;
	extravars = '';
	
	if ( choosebox != -1 && ! isNaN( choosebox ) )
	{
		if ( document.skinselectorbox.skinurlbits.value )
		{
			extravars = '&' + document.skinselectorbox.skinurlbits.value;
			
			//----------------------------------
			// Strip out old skin change stuff
			// setskin=1&skinid=2
			//----------------------------------
			
			extravars = extravars.replace( /setskin=\d{1,}/g, ''  );
			extravars = extravars.replace( /skinid=\d{1,}/g , ''  );
			extravars = extravars.replace( /&{1,}/g         , '&' );
			extravars = extravars.replace( /s=&/g           , ''  );
		}
		
		locationjump( 'setskin=1&skinid=' + choosebox + extravars );
	}
}

/*-------------------------------------------------------------------------*/
// CHOOSE LANG
/*-------------------------------------------------------------------------*/

function chooselang(obj)
{
	choosebox = obj.options[obj.selectedIndex].value;
	extravars = '';
	
	if ( document.langselectorbox.langurlbits.value )
	{
		extravars = '&' + document.langselectorbox.langurlbits.value;

		//----------------------------------
		// Strip out old skin change stuff
		// setskin=1&skinid=2
		//----------------------------------
			
		extravars = extravars.replace( /setlanguage=\d{1,}/g, ''  );
		extravars = extravars.replace( /cal_id=&/g, ''  );
		extravars = extravars.replace( /langid=\w{1,}/g , ''  );
		extravars = extravars.replace( /&{1,}/g         , '&' );
		extravars = extravars.replace( /s=&/g           , ''  );
	}
	
	locationjump( 'setlanguage=1&langid=' + choosebox + extravars );
}

/*-------------------------------------------------------------------------*/
// pop up window
/*-------------------------------------------------------------------------*/

function PopUp(url, name, width,height,center,resize,scroll,posleft,postop)
{
	showx = "";
	showy = "";
	
	if (posleft != 0) { X = posleft }
	if (postop  != 0) { Y = postop  }
	
	if (!scroll) { scroll = 1 }
	if (!resize) { resize = 1 }
	
	if ((parseInt (navigator.appVersion) >= 4 ) && (center))
	{
		X = (screen.width  - width ) / 2;
		Y = (screen.height - height) / 2;
	}
	
	if ( X > 0 )
	{
		showx = ',left='+X;
	}
	
	if ( Y > 0 )
	{
		showy = ',top='+Y;
	}
	
	if (scroll != 0) { scroll = 1 }
	
	var Win = window.open( url, name, 'width='+width+',height='+height+ showx + showy + ',resizable='+resize+',scrollbars='+scroll+',location=no,directories=no,status=no,menubar=no,toolbar=no');
}

/*-------------------------------------------------------------------------*/
// Array: Get stack size
/*-------------------------------------------------------------------------*/

function stacksize(thearray)
{
	for (i = 0 ; i < thearray.length; i++ )
	{
		if ( (thearray[i] == "") || (thearray[i] == null) || (thearray == 'undefined') )
		{
			return i;
		}
	}
	
	return thearray.length;
}

/*-------------------------------------------------------------------------*/
// Array: Push stack
/*-------------------------------------------------------------------------*/

function pushstack(thearray, newval)
{
	arraysize = stacksize(thearray);
	thearray[arraysize] = newval;
}

/*-------------------------------------------------------------------------*/
// Array: Pop stack
/*-------------------------------------------------------------------------*/

function popstack(thearray)
{
	arraysize = stacksize(thearray);
	theval = thearray[arraysize - 1];
	delete thearray[arraysize - 1];
	return theval;
}

/*-------------------------------------------------------------------------*/
// Converts "safe" innerHTML back to normal template
/*-------------------------------------------------------------------------*/

function innerhtml_template_to_html( t )
{
	t = t.replace( /&lt;%(\d+?)&gt;/ig, "<%$1>" );
	t = t.replace( /%3C%(\d+?)%3E/ig  , "<%$1>" );
	return t;
}

/*-------------------------------------------------------------------------*/
// Global freeze events
/*-------------------------------------------------------------------------*/

function global_cancel_bubble(obj, extra)
{
	if ( ! obj || is_ie)
	{
		if ( extra )
		{
			window.event.returnValue = false;
		}
		
		window.event.cancelBubble = true;
		
		return window.event;
	}
	else
	{
		obj.stopPropagation();
		
		if ( extra )
		{
			obj.preventDefault();
		}
		
		return obj;
	}
}

/*-------------------------------------------------------------------------*/
// Get left posititon of object
/*-------------------------------------------------------------------------*/

function _get_obj_leftpos(obj)
{
	var left = obj.offsetLeft;
	
	while( (obj = obj.offsetParent) != null )
	{
		left += obj.offsetLeft;
	}
	
	return left;
}

/*-------------------------------------------------------------------------*/
// Get top position of object
/*-------------------------------------------------------------------------*/

function _get_obj_toppos(obj)
{
	var top = obj.offsetTop;
	
	while( (obj = obj.offsetParent) != null )
	{
		top += obj.offsetTop;
	}
	
	return top;
}

/*-------------------------------------------------------------------------*/
// Center a div on the screen
/*-------------------------------------------------------------------------*/

function center_div()
{
	this.divname = '';
	this.divobj  = '';
}

/*-------------------------------------------------------------------------*/
// Main run function
/*-------------------------------------------------------------------------*/

center_div.prototype.move_div = function()
{
	try
	{
		this.divobj = document.getElementById( this.divname );
	}
	catch(e)
	{
		return;
	}
	
	//----------------------------------
	// Figure width and height
	//----------------------------------
	
	var my_width  = 0;
	var my_height = 0;
	
	if ( typeof( window.innerWidth ) == 'number' )
	{
		//----------------------------------
		// Non IE
		//----------------------------------
	  
		my_width  = window.innerWidth;
		my_height = window.innerHeight;
	}
	else if ( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) )
	{
		//----------------------------------
		// IE 6+
		//----------------------------------
		
		my_width  = document.documentElement.clientWidth;
		my_height = document.documentElement.clientHeight;
	}
	else if ( document.body && ( document.body.clientWidth || document.body.clientHeight ) )
	{
		//----------------------------------
		// Old IE
		//----------------------------------
		
		my_width  = document.body.clientWidth;
		my_height = document.body.clientHeight;
	}
	
	//----------------------------------
	// Show...
	//----------------------------------
	
	this.divobj.style.position = 'absolute';
	this.divobj.style.display  = 'block';
	this.divobj.style.zIndex   = 99;
	
	//----------------------------------
	// Get div height && width
	//----------------------------------
	
	var divheight = parseInt( this.divobj.style.Height );
	var divwidth  = parseInt( this.divobj.style.Width );
	
	divheight = divheight ? divheight : 200;
	divwidth  = divwidth  ? divwidth  : 400;
	
	//----------------------------------
	// Get current scroll offset
	//----------------------------------
	
	var scrolly = this.getYscroll();
	
	//----------------------------------
	// Finalize...
	//----------------------------------
	
	var setX = ( my_width  - divwidth  ) / 2;
	var setY = ( my_height - divheight ) / 2 + scrolly;
	
	setX = ( setX < 0 ) ? 0 : setX;
	setY = ( setY < 0 ) ? 0 : setY;
	
	this.divobj.style.left = setX + "px";
	this.divobj.style.top  = setY + "px";
}

/*-------------------------------------------------------------------------*/
// Hide div
/*-------------------------------------------------------------------------*/

center_div.prototype.hide_div = function()
{
	try
	{
		if ( ! this.divobj )
		{
			return;
		}
		else
		{
			this.divobj.style.display  = 'none';
		}
	}
	catch(e)
	{
		return;
	}
}

/*-------------------------------------------------------------------------*/
// Get YScroll
/*-------------------------------------------------------------------------*/

center_div.prototype.getYscroll = function()
{
	var scrollY = 0;
	
	if ( document.documentElement && document.documentElement.scrollTop )
	{
		scrollY = document.documentElement.scrollTop;
	}
	else if ( document.body && document.body.scrollTop )
	{
		scrollY = document.body.scrollTop;
	}
	else if ( window.pageYOffset )
	{
		scrollY = window.pageYOffset;
	}
	else if ( window.scrollY )
	{
		scrollY = window.scrollY;
	}
	
	return scrollY;
}
















var dontpassgo   = 0;

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"
);

//-------------------------------
// Remap font sizes
//-------------------------------

var ips_fontsizes =
{
	'8px' : 1,
	'10pt' : 2,
	'12pt' : 3,
	'14pt' : 4,
	'18pt' : 5,
	'24pt' : 6,
	'36pt' : 7
}

//-------------------------------
// Define sizes
//-------------------------------

var ips_font_sizes = new Array( 1, 2, 3, 4, 5, 6, 7 );

//-------------------------------
// Reverse them so we can look up
// by ID
//-------------------------------

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;
}

/*-------------------------------------------------------------------------*/
// Close all tags
/*-------------------------------------------------------------------------*/

function closeall()
{
	if ( bbtags[0] )
	{
		while ( bbtags[0] )
		{
			tagRemove = popstack( bbtags )
			postformobj.Post.value += "[/" + tagRemove + "]";
			
			if ( i_am == 'std' )
			{
				toggle_button( tagRemove );
			}
			else
			{
				rte_button_update( tagRemove );
			}
		}
	}
	
	//--------------------------------------------
	// Ensure we got them all
	//--------------------------------------------

	bbtags = new Array();
	postformobj.Post.focus();
}

/*-------------------------------------------------------------------------*/
// Close all nested tags
/*-------------------------------------------------------------------------*/

function smart_close_tags( thetag )
{
	//--------------------------------------------
	// Find the last occurance of the opened tag
	//--------------------------------------------
	
	lastindex = 0;
	
	for (i = 0 ; i < bbtags.length; i++ )
	{
		if ( bbtags[i] == thetag )
		{
			lastindex = i;
		}
	}
	
	//--------------------------------------------
	// Close all tags opened up to that tag was opened
	//--------------------------------------------
	
	while ( bbtags[lastindex] )
	{
		tagRemove = popstack(bbtags);
		
		wrap_tags("[/" + tagRemove + "]", "")
		
		//--------------------------------------------
		// Change the button status
		//--------------------------------------------
		
		if ( i_am == 'std' )
		{
			toggle_button( tagRemove );
		}
		else
		{
			rte_button_update( tagRemove );
		}
	}
}

/*-------------------------------------------------------------------------*/
// Write font face box
/*-------------------------------------------------------------------------*/

function write_fontface_box()
{
	html = "";
	
	for( var i in ips_primary_fonts )
	{
		option  = ips_primary_fonts[i];
		display = ips_primary_fonts[i];
		
		//-------------------------------
		// Tidy up show name
		// Make "courier new" "Courier New"
		//-------------------------------
		
		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;
}

/*-------------------------------------------------------------------------*/
// Write font size box
/*-------------------------------------------------------------------------*/

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;
}

/*-------------------------------------------------------------------------*/
// INIT Editor
/*-------------------------------------------------------------------------*/

function init_editor()
{ 
	if ( ! postformid )
	{
		postformid = 'postingform';
	}
	
	if ( ! postfieldid )
	{
		postfieldid = 'postcontent';
	}
	
	postformobj  = document.getElementById( postformid );
	postfieldobj = document.getElementById( postfieldid );
}

/*-------------------------------------------------------------------------*/
// Remove an attachment
/*-------------------------------------------------------------------------*/

function removeattach(id)
{
	if ( id != "" )
	{
		Override = 1;
		postformobj.removeattachid.value = id;
	}
}

/*-------------------------------------------------------------------------*/
// Insert attachment tag
/*-------------------------------------------------------------------------*/

function insert_attach_to_textarea(aid)
{
	rtewindow.focus();
	
	wrap_tags( "[attachmentid="+aid+"]", "" );
	
	rtewindow.focus();
}

/*-------------------------------------------------------------------------*/
// Open emoticon window
/*-------------------------------------------------------------------------*/

var emowindow = '';

function emo_pop()
{
	emowindow = window.open( ipb_var_base_url + "act=legends&CODE=emoticons","Legends","width=250,height=500,resizable=yes,scrollbars=yes"); 
}

/*-------------------------------------------------------------------------*/
// BBCode window
/*-------------------------------------------------------------------------*/

function bbc_pop()
{
	window.open( ipb_var_base_url + "act=legends&CODE=bbcode","Legends","width=700,height=500,resizable=yes,scrollbars=yes"); 
}

/*--------------------------------------------*/
// Fix the amount of digging parents up.
/*--------------------------------------------*/

function getOffsetTop(elm)
{
	var mOffsetTop    = elm.offsetTop;
	var mOffsetParent = elm.offsetParent;
	var parents_up    = 2;
	
	while(parents_up > 0)
	{
		mOffsetTop   += mOffsetParent.offsetTop;
		mOffsetParent = mOffsetParent.offsetParent;
		parents_up--;
	}
	
	return mOffsetTop;
}

/*--------------------------------------------*/
// Fix the amount of digging parents up.
/*--------------------------------------------*/

function getOffsetLeft(elm)
{
	var mOffsetLeft   = elm.offsetLeft;
	var mOffsetParent = elm.offsetParent;
	var parents_up    = 2;
	
	while(parents_up > 0)
	{
		mOffsetLeft  += mOffsetParent.offsetLeft;
		mOffsetParent = mOffsetParent.offsetParent;
		parents_up--;
	}
	
	return mOffsetLeft;
}
















var i_am = 'std';
var rtewindow;
var buttonbar;

var opentags =
{
	'b'          : 0,
	'i'          : 0,
	's'          : 0,
	'u'          : 0,
	'img'        : 0,
	'quot'      : 0,
	'left'       : 0,
	'center'     : 0,
	'right'      : 0,
	'color'      : 0,
	'background' : 0,
	'indent'     : 0,
	'hide'       : 0,
	'code'       : 0
};

var tags_to_div =
{
	'b'          : 'do_bold',
	'i'          : 'do_italic',
	's'          : 'do_strikethrough',
	'u'          : 'do_underline',
	'quot'      : 'do_quot',
	'left'       : 'do_justifyleft',
	'center'     : 'do_justifycenter',
	'right'      : 'do_justifyright',
	'color'      : 'forecolor',
	'background' : 'hilitecolor',
	'indent'     : 'do_indent',
	'hide'       : 'do_hide',
	'code'       : 'do_code'
};

var rte_to_std =
{
	'forecolor'   : 'color',
	'hilitecolor' : 'background'
};

var easymode = 0;

// IE bug fix
var ie_range_cache = '';

/*-------------------------------------------------------------------------*/
// INIT
/*-------------------------------------------------------------------------*/

function init_std_editor()
{
	//--------------------------------------------
	// Pull in width of textarea
	//--------------------------------------------
	
	try
	{
		rtewindow = document.getElementById( 'postcontent' );
		oldwidth  = parseInt(document.getElementById( 'postcontent' ).style.width);
		buttonbar = document.getElementById( 'std-table-buttons' );
		widthunit = document.getElementById( 'postcontent' ).style.width.match( /%/ ) ? '%' : 'px';
		
		if ( widthunit == 'px' )
		{
			if ( is_opera )
			{
				document.getElementById( 'postcontent' ).style.width = oldwidth - 4 + widthunit;
				buttonbar.style.width = parseInt( buttonbar.style.width ) - 4 + widthunit;
			}
			else if ( is_safari )
			{
			
			}
			else
			{
				document.getElementById( 'postcontent' ).style.width = oldwidth - 6 + widthunit;
			}
		}
		else
		{
			if ( is_ie || is_moz )
			{
				document.getElementById( 'postcontent' ).style.width = oldwidth - 1 + widthunit;
			}
		}
	}
	catch(e)
	{}
	

}

/*-------------------------------------------------------------------------*/
// Toggle button highlighting (used when clicked on)
/*-------------------------------------------------------------------------*/

function toggle_button( tag )
{
	//--------------------------------------------
	// Change the button status
	// Ensure we're not looking for FONT, SIZE or COLOR as these
	// buttons don't exist, they are select lists instead.
	//--------------------------------------------
			
	if ( (tag == 'font') || (tag == 'size') )
	{
		return;
	}
	
	if ( opentags[ tag ] )
	{
		document.getElementById( tags_to_div[ tag ] ).className = 'rteimage';
		
		// Turn off
		opentags[ tag ] = 0;
	}
	else
	{
		document.getElementById( tags_to_div[ tag ] ).className = 'rteImageRaised';
		
		// Turn on
		opentags[ tag ] = 1;
	}
}

/*-------------------------------------------------------------------------*/
// Set BBCode mode
/*-------------------------------------------------------------------------*/

function toggle_bbmode(mVal)
{
	if ( easymode )
	{
		document.getElementById('togglebbmode').value = js_bbeasy_off;
		easymode = 0;
	}
	else
	{
		document.getElementById('togglebbmode').value = js_bbeasy_on;
		easymode = 1;
	}
	
	my_setcookie( 'bbmode', easymode, 1 );
}

/*-------------------------------------------------------------------------*/
// Get easy mode state
/*-------------------------------------------------------------------------*/

function get_easy_mode_state()
{
	//--------------------------------------------
	// Returns true if we've chosen easy mode
	//--------------------------------------------
	
	if ( easymode )
	{
		return true;
	}
	else
	{
		return false;
	}
}

/*-------------------------------------------------------------------------*/
// Pop open and set up the color palette
/*-------------------------------------------------------------------------*/

function popcolor( command )
{
	//-------------------------------
	// Already open?
	//-------------------------------
	
	if ( opentags[ rte_to_std[ command ] ] )
	{
		//--------------------------------------------
		// Smart close tags
		//--------------------------------------------
	   
		smart_close_tags( rte_to_std[ command ] );
		
		return false;
	}
	else
	{
		//-------------------------------
		// Save current values
		//-------------------------------
		
		parent.command = command;
		
		if ( is_ie )
		{
			postfieldobj.focus();
			ie_range_cache = document.selection.createRange();
		}
		
		//-------------------------------
		// Position and show color palette
		//-------------------------------
		
		buttonElement = document.getElementById(command);
		
		var iLeftPos  = getOffsetLeft(buttonElement);
		var iTopPos   = getOffsetTop(buttonElement) + (buttonElement.offsetHeight + 30);
		
		document.getElementById('cp').style.left = (iLeftPos) + "px";
		document.getElementById('cp').style.top  = (iTopPos)  + "px";
		
		if (document.getElementById('cp').style.visibility == "hidden")
		{
			document.getElementById('cp').style.visibility = "visible";
			document.getElementById('cp').style.display    = "inline";
		}
		else
		{
			document.getElementById('cp').style.visibility = "hidden";
			document.getElementById('cp').style.display    = "none";
		}
	}
}

/*-------------------------------------------------------------------------*/
// Write the color
/*-------------------------------------------------------------------------*/

function setColor(color)
{
	var parentCommand = parent.command;
	
	if ( parentCommand == "hilitecolor" )
	{
		if ( wrap_tags("[background=" +color+ "]", "[/background]", true ) )
		{
			toggle_button( "background" );
			pushstack(bbtags, "background");
		}
	}
	else
	{
		if ( wrap_tags("[color=" +color+ "]", "[/color]", true ) )
		{
			toggle_button( "color" );
			pushstack(bbtags, "color");
		}
	}

	document.getElementById('cp').style.visibility = "hidden";
	document.getElementById('cp').style.display    = "none";
}

/*-------------------------------------------------------------------------*/
// EMOTICONS
/*-------------------------------------------------------------------------*/

function emoticon(theSmilie)
{
	doInsert(" " + theSmilie + " ", "", false);

	if ( (ua_vers >= 4) && is_ie && is_win && emowindow != 'undefined' )
	{
		emowindow.focus();
	}
}

/*-------------------------------------------------------------------------*/
// ALTER FONT
/*-------------------------------------------------------------------------*/

function alterfont(theval, thetag)
{
    if (theval == 0)
    {
    	return;
	}
	
	if ( wrap_tags("[" + thetag + "=" + theval + "]", "[/" + thetag + "]", true ) )
	{
		pushstack(bbtags, thetag);
	}
	
    postformobj.ffont.selectedIndex  = 0;
    postformobj.fsize.selectedIndex  = 0;
}

/*-------------------------------------------------------------------------*/
// SIMPLE TAGS (such as B, I S U, etc)
/*-------------------------------------------------------------------------*/

function simpletag(thetag)
{
	var tagOpen = opentags[ thetag ];
	
	if ( get_easy_mode_state() )
	{
		inserttext = prompt(prompt_start + "\n[" + thetag + "]xxx[/" + thetag + "]");
		
		if ( (inserttext != null) && (inserttext != "") )
		{
			wrap_tags("[" + thetag + "]" + inserttext + "[/" + thetag + "] ", "", false);
		}
	}
	else
	{
		if ( tagOpen == 0 )
		{
			if ( wrap_tags("[" + thetag + "]", "[/" + thetag + "]", true ) )
			{
				//--------------------------------------------
				// Toggle
				//--------------------------------------------
				
				toggle_button( thetag );
		
				pushstack(bbtags, thetag);
			}
		}
		else
		{
			//--------------------------------------------
			// Smart close tags
			//--------------------------------------------
			
			smart_close_tags( thetag );
		}
	}
}

/*-------------------------------------------------------------------------*/
// List tag
/*-------------------------------------------------------------------------*/

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", "");
	}
}

/*-------------------------------------------------------------------------*/
// URL tag
/*-------------------------------------------------------------------------*/

function tag_url()
{
	var FoundErrors = '';
	
	//----------------------------------------
	// Do we have ranged text?
	//----------------------------------------
	
	if ( check_range() )
	{
		//----------------------------------------
		// Yes, just ask for the URL and wrap
		//----------------------------------------
		
		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, jsfile_myweb_lang );
	
		if ( ! enterURL)
		{
			FoundErrors += " " + error_no_url;
		}
		if ( ! enterTITLE)
		{
			FoundErrors += " " + error_no_title;
		}
	
		if ( FoundErrors )
		{
			alert( jsfile_error_lang +FoundErrors);
			return;
		}
	
		wrap_tags("[url="+enterURL+"]"+enterTITLE+"[/url]", "");
	}
}

/*-------------------------------------------------------------------------*/
// Image tag
/*-------------------------------------------------------------------------*/

function tag_image()
{
	var FoundErrors = '';
	
	//----------------------------------------
	// Do we have ranged text?
	//----------------------------------------
	
	if ( check_range() )
	{
		//----------------------------------------
		// Yes, just wrap text
		//----------------------------------------
		
		wrap_tags( "[img]", "[/img]", "" );
	}
	else
	{
		var enterURL = prompt(text_enter_image, "http://");
	
		if ( ! enterURL )
		{ 
			alert(error_no_url); 
			return; 
		}
	
		wrap_tags("[img]"+enterURL+"[/img]", "");
	}
}

/*-------------------------------------------------------------------------*/
// Email tag
/*-------------------------------------------------------------------------*/

function tag_email()
{
	//----------------------------------------
	// Do we have ranged text?
	//----------------------------------------
	
	if ( check_range() )
	{
		//----------------------------------------
		// Yes, just wrap text
		//----------------------------------------
		
		wrap_tags( "[email]", "[/email]", "" );
	}
	else
	{
		var emailAddress = prompt(text_enter_email, "");
	
		if ( ! emailAddress )
		{ 
			alert(error_no_email); 
			return; 
		}
	
		wrap_tags( "[email]"+emailAddress+"[/email]", "" );
	}
}

/*-------------------------------------------------------------------------*/
// Do we have ranged text?
/*-------------------------------------------------------------------------*/

function check_range()
{
	var has_range = false;
	
	//----------------------------------------
	// It's IE!
	//----------------------------------------
	
	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;
			}
		}
	}
	
	//----------------------------------------
	// It's MOZZY!
	//----------------------------------------
	
	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);
		
		//-----------------------------------
		// text range?
		//-----------------------------------
		
		if (postfieldobj.selectionEnd - postfieldobj.selectionStart > 0)
		{
			has_range = true;
		}
	}
	
	return has_range;
}

/*-------------------------------------------------------------------------*/
// Check message length
/*-------------------------------------------------------------------------*/

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 + ".");
}

/*-------------------------------------------------------------------------*/
// GENERAL INSERT FUNCTION
// opentext : opening tag
// closetext: closing tag, used if we have selected text
/*-------------------------------------------------------------------------*/

function wrap_tags(opentext, closetext, issingle)
{
	var has_closed = false;
	
	if ( ! issingle )
	{
		issingle = false;
	}
	
	//----------------------------------------
	// It's IE!
	//----------------------------------------
	
	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();

			var stored_range = rng.duplicate()
			stored_range.moveToElementText( postfieldobj );
			stored_range.setEndPoint( 'EndToEnd', rng );

			// Stores start position of text selection
			postfieldobj.selectionStart = stored_range.text.length - rng.text.length;
			// Stores end position of text selection
			postfieldobj.selectionEnd = postfieldobj.selectionStart + rng.text.length;

			rng.colapse;
			
			if ( (sel.type == "Text" || sel.type == "None") && rng != null)
			{
				if (closetext != "" && rng.text && rng.text.length > 0)
				{ 
					opentext += rng.text + closetext;
				}
				else if ( issingle )
				{
					has_closed = true;
				}

				rng.text = rng.text.charAt(rng.text.length - 1) == ' ' ? opentext + ' ' : opentext;
			}
			else
			{
				postfieldobj.value += opentext;
				has_closed = true;
			}
		}
		else
		{
			postfieldobj.value += opentext;
			has_closed = true;
		}

		ie_range_cache = null;

		rng.select();
	}
	
	//----------------------------------------
	// It's MOZZY!
	//----------------------------------------
	
	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);
		
		//-----------------------------------
		// text range?
		//-----------------------------------
		
		if ( postfieldobj.selectionEnd - postfieldobj.selectionStart > 0 )
		{
			middle = opentext + middle + closetext;
		}
		else
		{
			middle = opentext + middle;
			
			if ( issingle )
			{
				has_closed = true;
			}
		}
		
		postfieldobj.value = start + middle + end;
		
		var cpos = ss + (middle.length);
		
		postfieldobj.selectionStart = cpos;
		postfieldobj.selectionEnd   = cpos;
		postfieldobj.scrollTop      = st;
	}
	
	//----------------------------------------
	// It's CRAPPY!
	//----------------------------------------
	
	else
	{ 
		if ( issingle )
		{
			has_closed = false;
		}
			
		postfieldobj.value += opentext + ' ' + closetext;
	}
	
	postfieldobj.focus();

	return has_closed;
}	

/*--------------------------------------------*/
// Make current STD window (n)px bigger
/*--------------------------------------------*/

function std_window_resize( pix )
{
	var box        = postfieldobj;
	var cur_height = parseInt( box.style.height ) ? parseInt( box.style.height ) : 300;
	var new_height = cur_height + pix;
	
	if ( new_height > 0 )
	{
		box.style.height = new_height + "px";
	}
	
	return false;
}

/*-------------------------------------------------------------------------*/
// Validate form (must always have this method defined!)
/*-------------------------------------------------------------------------*/

function ValidateForm( isMsg )
{
	MessageLength  = postfieldobj.value.length;
	errors         = "";
	
	//-----------------------------------------
	// Check for remove attachments
	//-----------------------------------------
	
	try
	{
		if ( postformobj.removeattachid.value > 0 )
		{
			okdelete = confirm( js_remove_attach );
	
			if ( okdelete == true )
			{
				return true;
			}
			else
			{
				postformobj.removeattachid.value = 0;
				return false;
			}
		}
	}
	catch(error)
	{
		//
	}

	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
	{
		try
		{
			postformobj.submit.disabled = true;
		}
		catch(e)
		{
			try
			{
				postformobj.dosubmit.disabled = true;
			}
			catch(e) { }
		}

		return true;
	}
}


function doInsert(ibTag, ibClsTag, isSingle)
{
	var isClose = false;
	var obj_ta = fombj.Post;
	
	//----------------------------------------
	// It's IE!
	//----------------------------------------
	if ( (ua_vers >= 4) && is_ie && is_win)
	{
		if (obj_ta.isTextEdit)
		{
			obj_ta.focus();
			var sel = document.selection;
			var rng = sel.createRange();
			rng.colapse;
			if((sel.type == "Text" || sel.type == "None") && rng != null)
			{
				if(ibClsTag != "" && rng.text.length > 0)
					ibTag += rng.text + ibClsTag;
				else if(isSingle)
					isClose = true;
	
				rng.text = ibTag;
			}
		}
		else
		{
			if(isSingle)
			{
				isClose = true;
			}
			
			obj_ta.value += ibTag;
		}
	}
	//----------------------------------------
	// It's MOZZY!
	//----------------------------------------
	
	else if ( obj_ta.selectionEnd )
	{ 
		var ss = obj_ta.selectionStart;
		var st = obj_ta.scrollTop;
		var es = obj_ta.selectionEnd;
		
		if (es <= 2)
		{
			es = obj_ta.textLength;
		}
		
		var start  = (obj_ta.value).substring(0, ss);
		var middle = (obj_ta.value).substring(ss, es);
		var end    = (obj_ta.value).substring(es, obj_ta.textLength);
		
		//-----------------------------------
		// text range?
		//-----------------------------------
		
		if (obj_ta.selectionEnd - obj_ta.selectionStart > 0)
		{
			middle = ibTag + middle + ibClsTag;
		}
		else
		{
			middle = ibTag + middle;
			
			if (isSingle)
			{
				isClose = true;
			}
		}
		
		obj_ta.value = start + middle + end;
		
		var cpos = ss + (middle.length);
		
		obj_ta.selectionStart = cpos;
		obj_ta.selectionEnd   = cpos;
		obj_ta.scrollTop      = st;


	}
	//----------------------------------------
	// It's CRAPPY!
	//----------------------------------------
	else
	{
		if (isSingle)
		{
			isClose = true;
		}
		
		obj_ta.value += ibTag;
	}
	
	obj_ta.focus();

	return isClose;
}	
var bbtags   = new Array();

var fombj    = document.REPLIER;




