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;
	};
	this.un_htmlspecialchars=function(text){
		text=text.replace( /&lt;/g,'<');
		text=text.replace( /&gt;/g,'>');
		text=text.replace( /&quot;/g,'"');
		return text;
	};
	this.get_editor_contents=function(editor_id,editor_array){
		var aIPS_editor=editor_array?editor_array:IPS_editor;
		if(!editor_id){
			for(var i in aIPS_editor){
				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){
				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.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('OK, 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;
		};
	}
