function ipsclass()
{ this.cookies = new Array(); this.ignore_cookies = new Array( ipb_var_cookieid + 'ipb_stronghold', ipb_var_cookieid + 'session_id', ipb_var_cookieid + 'ipb_admin_session_id', ipb_var_cookieid + 'member_id', ipb_var_cookieid + 'pass_hash' ); this.settings = { 'do_linked_resize' : 0, 'resize_percent' : 50
}; this.init = function()
{ var _tmp = document.cookie.split(';'); if ( _tmp.length )
{ for( i = 0 ; i < _tmp.length ; i++ )
{ if ( _tmp[i].match( new RegExp( ipb_var_cookieid + ".*$" ) ) )
{ var _data = _tmp[i].split('='); var _key = this.trim( _data[0] ); var _value = unescape( this.trim( _data[1] ) ); if ( _key && ( ! this.in_array( _key, this.ignore_cookies ) ) )
{ this.cookies[ _key.replace( ipb_var_cookieid, '' ) ] = _value;}
}
}
}
_tmp = null;}; this.trim = function( text )
{ if( typeof(text) == 'undefined' )
{ return '';}
text = text.replace(/^\s+/, ''); return text.replace(/\s+$/, '');}; this.html_entity_decode = function( text )
{ if( typeof ca == 'undefined' )
{ var ca = document.createElement( 'textarea' );}
ca.innerHTML = text.replace( /</g, '&lt;' ).replace( />/g, '&gt;' ); return ca.value;}; this.in_array = function( needle, haystack )
{ if ( ! haystack.length )
{ return false;}
for ( var i = 0 ; i < haystack.length ; i++)
{ if ( haystack[i] === needle )
{ return true;}
}
return false;}; this.htmlspecialchars = function( text )
{ text = text.replace( /</g, '&lt;' ); text = text.replace( />/g, '&gt;' ); text = text.replace( /"/g, '&quot;' );
		
	    return text;
	};
	
	/**
	* Emulate PHPs un htmlspecial chars function
	*/
	this.un_htmlspecialchars = function( text )
	{
		text = text.replace( /&lt;/g  , '<' );
		text = text.replace( /&gt;/g  , '>' );
		text = text.replace( /&quot;/g, '"' );
		
	    return text;
	};
	
	//=============================================================================
	// EDITOR FUNCTIONS
	//=============================================================================
	
	/**
	* Get contents from an open editor
	*/
	this.get_editor_contents = function( editor_id, editor_array )
	{
		var aIPS_editor = editor_array ? editor_array : IPS_editor;
		
		if ( ! editor_id )
		{
			//-----------------------------------------
			// Assume we don't care, and get first box
for( var i in aIPS_editor )
{ if( typeof( aIPS_editor[i] ) != 'object' )
{ continue;}
editor_id = i; break;}
}
return aIPS_editor[ editor_id ].editor_get_contents;}; this.add_editor_contents = function( text, editor_id, editor_array )
{ var aIPS_editor = editor_array ? editor_array : IPS_editor; if ( ! editor_id )
{ for( var i in aIPS_editor )
{ if( typeof( aIPS_editor[i] ) != 'object' )
{ continue;}
editor_id = i; break;}
}
return aIPS_editor[ editor_id ].insert_text( text );}; this.convert_saved_tags_to_display_tags = function( text )
{ text = text.replace( /(<|&lt;|&#60;)!--/, "{" ); text = text.replace( /--(>|&gt;|&#62;)/ , "}" ); return text;}; this.include_javascript = function( _file, div_id )
{ var _doc = ( div_id ) ? document.getElementById( div_id ) : document.getElementsByTagName( 'head' ).item(0); var _js = document.createElement('script' ); _js.setAttribute( 'language', 'javascript' ); _js.setAttribute( 'type', 'text/javascript' ); _js.setAttribute( 'src', _file ); _doc.appendChild( _js ); return false;}; this.fade_in_element = function( div )
{ var hash = '#'; var color_items = "0123456789abcdef"; var start_color = '#ffff66'; var orig_color = document.getElementById( div ).style.backgroundColor; var temp_end = '#ffffff'; var iter = 20; var time = 80; var rbeg = color_items.indexOf(start_color.substr(1,1))*16 + color_items.indexOf(start_color.substr(2,1)); var gbeg = color_items.indexOf(start_color.substr(3,1))*16 + color_items.indexOf(start_color.substr(4,1)); var bbeg = color_items.indexOf(start_color.substr(5,1))*16 + color_items.indexOf(start_color.substr(6,1)); var rend = color_items.indexOf(temp_end.substr(1,1))*16 + color_items.indexOf(temp_end.substr(2,1)); var gend = color_items.indexOf(temp_end.substr(3,1))*16 + color_items.indexOf(temp_end.substr(4,1)); var bend = color_items.indexOf(temp_end.substr(5,1))*16 + color_items.indexOf(temp_end.substr(6,1)); for ( i = 1, r = rbeg, g = gbeg, b = bbeg; i <= iter; r = Math.round(rbeg + i * ((rend - rbeg) / (iter-1))), g = Math.round(gbeg + i * ((gend - gbeg) / (iter-1))), b = Math.round(bbeg + i * ((bend - bbeg) / (iter-1))), i++ )
{ hstr = '#' + color_items.charAt(Math.floor(r/16)) + color_items.charAt(r%16) + color_items.charAt(Math.floor(g/16)) + color_items.charAt(g%16) + color_items.charAt(Math.floor(b/16)) + color_items.charAt(b%16); setTimeout('var div = document.getElementById("' + div + '"); div.style.backgroundColor = "' + hstr + '";', i * time);}
setTimeout('var div = document.getElementById("' + div + '"); div.style.backgroundColor = "' + orig_color + '";', (i+1) * time);}; this.lang_build_string = function()
{ 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;}; this.get_id_from_text = function( id )
{ return id.replace( /.*(\-|_)(\S+)/, "$2" );}; this.get_name_from_text = function( id )
{ return id.replace( /(.*)(\-|_)(\S+)/, "$1" );}; this.location_jump = function( url, full )
{ url = url.replace( /&amp;/g, '&' ); if ( full )
{ window.location.href = url;}
else
{ window.location.href = ipb_var_base_url + url;}
}; this.confirm_action = function(url, msg)
{ if ( ! msg )
{ msg = 'PLEASE CONFIRM:\nOK to proceed?';}
if ( url )
{ url = url.replace( '&amp;', '&' );}
else
{ url = '';}
if ( confirm( msg ) )
{ window.location.href = url;}
else
{ alert ( ipb_global_lang['action_cancelled'] ); return false;}
}; this.pop_up_window = function(url, width, height, name)
{ if ( ! name )
{ var mydate = new Date(); name = mydate.getTime();}
var Win = window.open( url.replace( '&amp;', '&' ), name, 'width='+width+',height='+height + ',resizable=1,scrollbars=1,location=no,directories=no,status=no,menubar=no,toolbar=no'); Win.focus(); return false;}; this.set_unselectable = function(obj)
{ if ( ! is_ie4 && typeof( obj.tagName ) != 'undefined' )
{ if ( obj.hasChildNodes() )
{ for (var i = 0; i < obj.childNodes.length; i++)
{ this.set_unselectable( obj.childNodes[i] );}
}
obj.unselectable = 'on';}
}; this.get_obj_leftpos = function(obj)
{ var curleft = 0; if (obj.offsetParent)
{ while (obj.offsetParent)
{ curleft += obj.offsetLeft; obj = obj.offsetParent;}
}
else if (obj.x)
{ curleft += obj.x;}
return curleft;}; this.get_obj_toppos = function(obj)
{ var curtop = 0; if (obj.offsetParent)
{ while (obj.offsetParent)
{ curtop += obj.offsetTop; obj = obj.offsetParent;}
}
else if (obj.y)
{ curtop += obj.y;}
return curtop;}; this.cancel_bubble = function(obj, extra)
{ if ( extra !== false )
{ extra = true;}
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;}
}; this.cancel_bubble_all = function( obj )
{ return ipsclass.cancel_bubble( obj, true );}; this.cancel_bubble_low = function( obj )
{ return ipsclass.cancel_bubble( obj, false );}; this.my_getcookie = function( name )
{ return this.cookies[ name ];}; this.my_setcookie = function( name, value, sticky )
{ expire = ""; domain = ""; path = "/"; if ( sticky )
{ expire = "; expires=Wed, 1 Jan 2020 00:00:00 GMT";}
if ( ipb_var_cookie_domain != "" )
{ domain = '; domain=' + ipb_var_cookie_domain;}
if ( ipb_var_cookie_path != "" )
{ path = ipb_var_cookie_path;}
document.cookie = ipb_var_cookieid + name + "=" + value + "; path=" + path + expire + domain + ';'; this.cookies[ name ] = value;}; this.array_stacksize = function( thearray )
{ for (i = 0 ; i < thearray.length; i++ )
{ if ( (thearray[i] == "") || (thearray[i] == null) || (thearray == 'undefined') )
{ return i;}
}
return thearray.length;}; this.array_pushstack = function ( thearray, newval )
{ var arraysize = this.array_stacksize(thearray); thearray[arraysize] = newval;}; this.array_popstack = function( thearray )
{ var arraysize = this.array_stacksize( thearray ); var theval = thearray[arraysize - 1]; delete thearray[arraysize - 1]; return theval;};}
