	(function ($) {
		$.fn.append_content = function(data,elem) {
			g.common.scroll_bar.add_content($(this),data,'append',elem);
		}
		$.fn.prepend_content = function(data,elem) {
			g.common.scroll_bar.add_content($(this),data,'prepend',elem);
		}
		$.fn.replace_content = function(data,elem) {
			g.common.scroll_bar.add_content($(this),data,'html',elem);
		}		
		$.fn.refresh_scrollbar=function() {
			g.common.scroll_bar.add_content($(this),'','append');
		}		
	})(jQuery);
	g.data={
//		uids:{},
//		names:{},

		u:{},

		newsfeed:{},
		friends:{},
		relationships:{},
		groups:{},
		objects:{"u":1}
	};
	g.common=new Object({

		packages:{
			"main":{},
			"profile":{},
			"bottom_bar":{}
		}, 
		groups_checkboxes:{},
		draw_group_checkboxes:function() {
			return g.common.groups_checkboxes_html.clone(true,true);
		},
		groups_checkboxes_html:"",
		get_selected_groups:function(elem) {		
			groups=[];		
			elem.find('input:checked').each(function() {
				tt=$(this);
				groups.push(tt.attr("id").replace("gr_",""));
			});			
			groups	=	groups.join(",");						
			return groups;						
		},
		query_string:{},
		init:function() {
			var e,
			a = /\+/g,  // Regex for replacing addition symbol with a space
			r = /([^&=]+)=?([^&]*)/g,
			d = function (s) { return decodeURIComponent(s.replace(a, " ")); },
			q = window.location.search.substring(1);

			while (e = r.exec(q)) 
				g.common.query_string[d(e[1])] = d(e[2]);
			
		
			for (i=0; i<g.packages.length; i++) {
				g.common.init_packages(g.packages[i]);
			}
			g.common.tabs.draw_tab_bar("top_nav","main_frame",g.common.packages.main);	

			$owner=$("<ul></ul>").append("<li style='float:left'><img src='/i.php?u="+g.id+"&i=-1&s=50'></li>");
			var html1	=	$("<a href='#' style='font-weight:bold'>"+g.data.u[g.id].n.fu+"</a>");
			html1	=	g.commonnews.news_item_click(html1,g.id,"max","u");
			$owner.append($("<li style='float:left;padding:4px 0px 0px 2px;'></li>").append(html1)).append('<li class="cb"></li>');

			
			$("#left_bar").append($("<div></div>").append($owner));
			
			
			// draw images on bottom bar.
			var package="";
			for (package in g.common.packages.bottom_bar) {	
				var pkg	=	g.common.packages.bottom_bar[package];
				for(var i=0; i < pkg.length; i++) {
					var tbut=pkg[i];
					var $new_button;
					if (tbut.img) {
						$new_button=$('<a href="#"><img src="/images/icons/'+tbut.img+'"></a>');
						if (tbut.func) {
							$new_button.click(function(e) {
								eval('g[package].'+tbut.func+'($(this));');
								g.clp(e);
							});
						}
					}
					else if (tbut.elem) {
						$new_button=tbut.elem;
					}
					
					$("#bottom_bar").append($new_button);
				}
			}
			for (i=0; i<g.packages.length; i++) {				
				g[g.packages[i]].exec_on_load?g[g.packages[i]].exec_on_load():1;			
			}
			g.common.tabs.click_on_tab($("#main_frame_bar div:eq(0) a"));

			// draw groups box

			opts={};
			opts_html="";
			for (key in g.groups2) {
				opts["<input type='checkbox' id='gr_"+g.groups2[key]+"'>&nbsp;"+key]="";
				opts_html+=	"<li><p><input type='checkbox' id='gr_"+g.groups2[key]+"'>&nbsp;"+key+"</p></li>";		
			}
			g.common.groups_checkboxes=opts;
			$opts_html=$("<ul></ul>").html(opts_html);
			$opts_html.find('input[type="checkbox"]').click(function(e) {
				var t=$(this);
				if (t.attr("checked") && t.attr("id")=="gr_Y") {
					t.parent().parent().parent().find("#gr_Z").attr("checked","checked");
				}
				if (!t.attr("checked") && t.attr("id")=="gr_Z") {
					t.parent().parent().parent().find("#gr_Y").attr("checked","");
				}
				if (t.attr("checked") && t.attr("id")=="gr_1") {
					t.parent().parent().parent().find('input[type="checkbox"]').attr("checked","");
					t.attr("checked","checked");
				}		
				if (t.attr("id")!="gr_1"){
					t.parent().parent().parent().find("#gr_1").attr("checked","");
				}	
				else
				{
					if (!t.attr("checked")) {
						t.attr("checked","checked");
					}
				}

			});
			$opts_html.find("#gr_Z").attr("checked","checked");
			g.common.groups_checkboxes_html=$opts_html;
	
			// draw friends selector
			
			g.common.draw_friends_selector();
			$("<span id='top_news_cont'></span>").html(g.commonnews.draw_enter_news_box()).insertAfter('#logo');
			
			if (!g.und(g.common.query_string.p)) {
				tdiv=$("#main_frame_bar div a#"+g.common.query_string.p);
				if (tdiv.length>0) {
					g.common.tabs.click_on_tab(tdiv);
				}
			}
			else
			{
				if (!g.und(g.common.query_string.o)&&!g.und(g.common.query_string.u)) {
					g.common.profile_tab(g.common.query_string.u,"max",g.common.query_string.o);
				}
			}
			

		},	
		init_packages:function(package) {
			g.common.load_js(g.package_dir+package+".js");
			if (g[package]) {		
				for (key in g[package].init) {
					g.common.packages[key][package]=g[package].init[key];
					g.common.packages[key][package].package=package;
					if (key=="main") {
						if (g[package].init["main"].object) {
							g.data[g[package].init["main"].object]={};
							g.data.objects[g[package].init["main"].object]=g[package].init["main"].name;
						}
					}
				}
			}
		},
		get_friends_selector:function() {
			return g.common.friends_selector.clone(true,true);
		},
		draw_friends_selector:function() {
			g.common.friends_selector=$("<ul style='font-weight:bold;font-size:11px;width:200px;background-color:#fff;border:1px solid #444;'></ul>");
			var friends=[];
			for (friend in g.data.relationships) {
				friends.push(friend);
			}
			friends.sort(function(a,b) {
				var valA=g.data.u[a].n.fu;
				var valB=g.data.u[b].n.fu;
				return (valA > valB) ? 1 : (valA < valB) ? -1 : 0;
			});
			var out="";

			for (var i=0; i<friends.length;i++) {
				var $tf=$("<li style='padding:4px;position:relative;'></li>");
				$tf.data("user",{user:friends[i]});
				$tf.hover(function() {
					$(this).css({"background-color":"#888"});
				},
				function() {
					$(this).css({"background-color":"#fff"});
				});
				var img	=	new Image();
				img.src="/i.php?u="+friends[i]+"&t=u&s=32&i=-1";
				$tf.append(img);
				var name=$("<span style='position:absolute;left:48px;top:4px;'>"+g.data.u[friends[i]].n.fu+"</span>");
				g.common.friends_selector.append($tf.append(name));
			}
		},
		confirm:function(msg) {
			if(confirm(msg)) {
				return true;
			}
			else
			{
				return false;
			}
		},
		scroll_bar:{
			init:function(p) {
				g.common.scroll_bar.draw(g.common.tabs.get_tab_object(p),"",0,0);			
			},
			draw:function($elem,content,horiz,show_arrows,show_bar) {	
				if (g.und(content)) { content="";}
				if (g.und(show_bar)) {show_bar=1;}
				if (g.und(show_arrows)) {show_arrows=1;}
				output	=	"";
			
				output	+=	'<div class="customScrollBox';
				if (!show_bar) { output	+= ' hide_bar';}
				output	+= '"></div>';
			
				output = $(output);
		
				output1	= '<div class="container">\
						<div class="content">\
							<p></p>\
						</div>\
						</div>\
					<div class="scroll_container">';
				if (show_arrows) {
					output1	+=	'<a class="scrollUpBtn" href="#">&#8678;</a>';				
				}	
				output1		+=	'<div class="dragger_container"><div class="dragger"></div></div>';
				if (show_arrows) {
					output1	+=	'<a class="scrollDownBtn" href="#">&#8680;</a>';				
				}									
				output1		+='</div>\
					';
				output1=$(output1);
			
				if (horiz) {
					output1	=	$('<div class="horWrapper"></div>').append(output1);
				}
				output1.find(".content p ").html(content);
				output.append(output1);
				output=output.add('<div class="cb"></div>');
//				output.append('<scr'+'ipt>$(".customScrollBox").last().parent().mCustomScrollbar("vertical",0,"easeOutCirc",1.05,"auto","yes","yes",1);</scr'+'ipt>'); 
				$elem.html(output);
				this.activate_scroller($elem,horiz);
				
			},
			add_content:function($this1,data1,position1,elem) {				
				//alert($this1.find(">.customScrollBox").length);
				if ($this1.find(".customScrollBox").length>0) {
//					console.log("hh-"+$this1.find(".content p").length);
					var func='$this1.find(".content>p")';
					if (!g.und(elem)) { func+=".find('"+elem+"')";}
					func+='.'+position1+'($(data1).clone(true,true));';
					eval(func);
//					console.log($this1.attr("id")+" "+func);
					var $scroll_container=$this1.find(".scroll_container");
					var horiz=0;
					if ($scroll_container.width()>$scroll_container.width()) {
						horiz=1;
					}							
					this.activate_scroller($this1,horiz);
				}
				else
				{
					var func='$this1.';
					elem?func+='find(\"'+elem+'\").':1;
					func+=position1+'($(data1).clone(true,true));';
					eval(func);
				}
			},
			activate_scroller:function($elem,horiz) {
				if (horiz) {
					this.activate($elem,"horizontal",0,"easeOutCirc",1.05,"auto","yes","yes",1);
				}
				else
				{
					this.activate($elem,"vertical",0,"easeOutCirc",1.05,"auto","yes","yes",1);			
				}
			},
			activate:function ($this,scrollType,animSpeed,easeType,bottomSpace,draggerDimType,mouseWheelSupport,scrollBtnsSupport,scrollBtnsSpeed){

				var $customScrollBox=$this.find(".customScrollBox");
				$this=$customScrollBox.parent(); // make sure we get the right root element

				var $customScrollBox_container=$this.find(".customScrollBox .container");
				var $customScrollBox_content=$this.find(".customScrollBox .content");
				var $dragger_container=$this.find(".dragger_container");
				var $scroll_container=$this.find(".scroll_container");
				var	$dragger=$this.find(".dragger");
		
				var $scrollUpBtn=$this.find(".scrollUpBtn");
				var $scrollDownBtn=$this.find(".scrollDownBtn");
				var $customScrollBox_horWrapper=$this.find(".customScrollBox .horWrapper");

				$scrollDownBtn.css("display","inline-block");
				$scrollUpBtn.css("display","inline-block");

				//get & store minimum dragger height & width (defined in css)
				if(!$customScrollBox.data("minDraggerHeight")){
					$customScrollBox.data("minDraggerHeight",$dragger.height());
				}
				if(!$customScrollBox.data("minDraggerWidth")){
					$customScrollBox.data("minDraggerWidth",$dragger.width());
				}
	
				//get & store original content height & width
				if(!$customScrollBox.data("contentHeight")){
					$customScrollBox.data("contentHeight",$customScrollBox_container.height());
				}
				if(!$customScrollBox.data("contentWidth")){
					$customScrollBox.data("contentWidth",$customScrollBox_container.width());
				}
	
				function CustomScroller(reloadType){
													
					//horizontal scrolling ------------------------------
					if(scrollType=="horizontal"){
					
						w1=$this.width();
						w2=w1;	
						if(scrollBtnsSupport=="yes"){
							w2-=28;
						}	
						if ($scroll_container.width()!=w1) {
							$scroll_container.css({"width":w1});
							$dragger_container.css({"width":w2});
						}						
					
						var visibleWidth=$customScrollBox.width();
						//set content width automatically
						$customScrollBox_horWrapper.css("width",999999); //set a rediculously high width value ;)
						$customScrollBox.data("totalContent",$customScrollBox_container.width()); //get inline div width
						$customScrollBox_horWrapper.css("width",$customScrollBox.data("totalContent")); //set back the proper content width value
			
						if($customScrollBox_container.width()>visibleWidth){ //enable scrollbar if content is long
							$dragger.css("display","block");
							if(reloadType!="resize" && $customScrollBox_container.width()!=$customScrollBox.data("contentWidth")){
								$dragger.css("left",0);
								$customScrollBox_container.css("left",0);
								$customScrollBox.data("contentWidth",$customScrollBox_container.width());
							}
							$dragger_container.css("display","block");
							$scrollDownBtn.css("display","inline-block");
							$scrollUpBtn.css("display","inline-block");
							var totalContent=$customScrollBox_content.width();
							var minDraggerWidth=$customScrollBox.data("minDraggerWidth");
							var draggerContainerWidth=$dragger_container.width();
		
							function AdjustDraggerWidth(){
								if(draggerDimType=="auto"){
									var adjDraggerWidth=Math.round(totalContent-((totalContent-visibleWidth)*1.3)); //adjust dragger width analogous to content
									if(adjDraggerWidth<=minDraggerWidth){ //minimum dragger width
										$dragger.css("width",minDraggerWidth+"px");
									} else if(adjDraggerWidth>=draggerContainerWidth){
										$dragger.css("width",draggerContainerWidth-10+"px");
									} else {
										$dragger.css("width",adjDraggerWidth+"px");
									}
								}
							}
							AdjustDraggerWidth();
		
							var targX=0;
							var draggerWidth=$dragger.width();
							$dragger.draggable({ 
								axis: "x", 
								containment: "parent", 
								drag: function(event, ui) {
									ScrollX();
								}, 
								stop: function(event, ui) {
									DraggerRelease();
								}
							});
			
							$dragger_container.click(function(e) {
//								var $this=$(this);
								var mouseCoord=(e.pageX - $this.offset().left);
								if(mouseCoord<$dragger.position().left || mouseCoord>($dragger.position().left+$dragger.width())){
									var targetPos=mouseCoord+$dragger.width();
									if(targetPos<$dragger_container.width()){
										$dragger.css("left",mouseCoord);
										ScrollX();
									} else {
										$dragger.css("left",$dragger_container.width()-$dragger.width());
										ScrollX();
									}
								}
							});

							//mousewheel
							$(function($) {
								if(mouseWheelSupport=="yes"){
									$customScrollBox.unbind("mousewheel");
									$customScrollBox.bind("mousewheel", function(event, delta) {
										var vel = Math.abs(delta*10);
										$dragger.css("left", $dragger.position().left-(delta*vel));
										ScrollX();
										if($dragger.position().left<0){
											$dragger.css("left", 0);
											$customScrollBox_container.stop();
											ScrollX();
										}
										if($dragger.position().left>$dragger_container.width()-$dragger.width()){
											$dragger.css("left", $dragger_container.width()-$dragger.width());
											$customScrollBox_container.stop();
											ScrollX();
										}
										return false;
									});
								}
							});
				
							//scroll buttons
							if(scrollBtnsSupport=="yes"){
				
								$scrollDownBtn.mouseout(function(){
									BtnsScrollXStop();
								}).mouseover(function(){
									BtnsScrollX("down");
								});
				
								$scrollUpBtn.mouseout(function(){
									BtnsScrollXStop();
								}).mouseover(function(){
									BtnsScrollX("up");
								});
				
								$scrollDownBtn.click(function(e) {
									e.preventDefault();
								});
								$scrollUpBtn.click(function(e) {
									e.preventDefault();
								});
				
								btnsScrollTimerX=0;
				
								function BtnsScrollX(dir){
									if(dir=="down"){
										var btnsScrollTo=$dragger_container.width()-$dragger.width();
										var scrollSpeed=Math.abs($dragger.position().left-btnsScrollTo)*(100/scrollBtnsSpeed);
										$dragger.stop().animate({left: btnsScrollTo}, scrollSpeed,"linear");
									} else {
										var btnsScrollTo=0;
										var scrollSpeed=Math.abs($dragger.position().left-btnsScrollTo)*(100/scrollBtnsSpeed);
										$dragger.stop().animate({left: -btnsScrollTo}, scrollSpeed,"linear");
									}
									clearInterval(btnsScrollTimerX);
									btnsScrollTimerX = setInterval( ScrollX, 20);
								}
					
								function BtnsScrollXStop(){
									clearInterval(btnsScrollTimerX);
									$dragger.stop();
								}
							}

							//scroll
							var scrollAmount=(totalContent-visibleWidth)/(draggerContainerWidth-draggerWidth);
							function ScrollX(){
								var draggerX=$dragger.position().left;
								var targX=-draggerX*scrollAmount;
								var thePos=$customScrollBox_container.position().left-targX;
								$customScrollBox_container.stop().animate({left: "-="+thePos}, animSpeed, easeType);
							}
						} else { //disable scrollbar if content is short
							$dragger.css("left",0).css("display","none"); //reset content scroll
							$customScrollBox_container.css("left",0);
							$dragger_container.css("display","none");
							$scrollDownBtn.css("display","none");
							$scrollUpBtn.css("display","none");
						}
					//vertical scrolling ------------------------------
					} else {
					
						h1=$this.height();
						h2=h1;	
						if(scrollBtnsSupport=="yes"){
							h2-=28;
						}	
						if ($scroll_container.height()!=h1) {
							$scroll_container.css({"height":h1});
							$dragger_container.css({"height":h2});
						}						

						var visibleHeight=$customScrollBox.height();
						if($customScrollBox_container.height()>visibleHeight){ //enable scrollbar if content is long
							$dragger.css("display","block");
							
							// change width of container to hold scroll container
							$customScrollBox_container.css({"width":$customScrollBox.width()-15});
							
							//
							
							if(reloadType!="resize" && $customScrollBox_container.height()!=$customScrollBox.data("contentHeight")){
								$dragger.css("top",0);
								$customScrollBox_container.css("top",0);
								$customScrollBox.data("contentHeight",$customScrollBox_container.height());
							}
							$dragger_container.css("display","block");
							$scrollDownBtn.css("display","inline-block");
							$scrollUpBtn.css("display","inline-block");
							var totalContent=$customScrollBox_content.height();
							var minDraggerHeight=$customScrollBox.data("minDraggerHeight");
							var draggerContainerHeight=$dragger_container.height();
		
							function AdjustDraggerHeight(){
								if(draggerDimType=="auto"){
									//var adjDraggerHeight=Math.round(totalContent-((totalContent-visibleHeight)*1.3)); //adjust dragger height analogous to content
									var adjDraggerHeight=Math.round(draggerContainerHeight*(visibleHeight/totalContent)); //adjust dragger height analogous to content

									if(adjDraggerHeight<=minDraggerHeight){ //minimum dragger height
										$dragger.css("height",minDraggerHeight+"px").css("line-height",minDraggerHeight+"px");
									} else if(adjDraggerHeight>=draggerContainerHeight){
										$dragger.css("height",draggerContainerHeight-10+"px").css("line-height",draggerContainerHeight-10+"px");
									} else {
										$dragger.css("height",adjDraggerHeight+"px").css("line-height",adjDraggerHeight+"px");
									}
								}
							}

							AdjustDraggerHeight();
		
							var targY=0;
							var draggerHeight=$dragger.height();
							$dragger.draggable({ 
								axis: "y", 
								containment: "parent", 
								drag: function(event, ui) {
									Scroll();
								}, 
								stop: function(event, ui) {
									DraggerRelease();
								}
							});
		
							$dragger_container.click(function(e) {
//								var $this=$(this);
								var mouseCoord=(e.pageY - $this.offset().top);
								if(mouseCoord<$dragger.position().top || mouseCoord>($dragger.position().top+$dragger.height())){
									var targetPos=mouseCoord+$dragger.height();
									if(targetPos<$dragger_container.height()){
										$dragger.css("top",mouseCoord);
										Scroll();
									} else {
										$dragger.css("top",$dragger_container.height()-$dragger.height());
										Scroll();
									}
								}
							});

							//mousewheel
							$(function($) {
								if(mouseWheelSupport=="yes"){
									$customScrollBox.unbind("mousewheel");
									$customScrollBox.bind("mousewheel", function(event, delta) {
										var vel = Math.abs(delta*10);
										$dragger.css("top", $dragger.position().top-(delta*vel));
										Scroll();
										if($dragger.position().top<0){
											$dragger.css("top", 0);
											$customScrollBox_container.stop();
											Scroll();
										}
										if($dragger.position().top>$dragger_container.height()-$dragger.height()){
											$dragger.css("top", $dragger_container.height()-$dragger.height());
											$customScrollBox_container.stop();
											Scroll();
										}
										return false;
									});
								}
							});

							//scroll buttons
							if(scrollBtnsSupport=="yes"){
								$scrollDownBtn.mouseout(function(){
									BtnsScrollStop();
								}).mouseover(function(){
									BtnsScroll("down");
								});				
								$scrollUpBtn.mouseout(function(){
									BtnsScrollStop();
								}).mouseover(function(){
									BtnsScroll("up");
								});

								$scrollDownBtn.click(function(e) {
									e.preventDefault();
								});
								$scrollUpBtn.click(function(e) {
									e.preventDefault();
								});
					
								btnsScrollTimer=0;
				
								function BtnsScroll(dir){
									if(dir=="down"){
										var btnsScrollTo=$dragger_container.height()-$dragger.height();
										var scrollSpeed=Math.abs($dragger.position().top-btnsScrollTo)*(100/scrollBtnsSpeed);
										$dragger.stop().animate({top: btnsScrollTo}, scrollSpeed,"linear");
									} else {
										var btnsScrollTo=0;
										var scrollSpeed=Math.abs($dragger.position().top-btnsScrollTo)*(100/scrollBtnsSpeed);
										$dragger.stop().animate({top: -btnsScrollTo}, scrollSpeed,"linear");
									}
									clearInterval(btnsScrollTimer);
									btnsScrollTimer = setInterval( Scroll, 20);
								}

								function BtnsScrollStop(){
									clearInterval(btnsScrollTimer);
									$dragger.stop();
								}
							}
				
							//scroll
							if(bottomSpace<1){
								bottomSpace=1; //minimum bottomSpace value is 1
							}
							var scrollAmount=(totalContent-(visibleHeight/bottomSpace))/(draggerContainerHeight-draggerHeight);
							function Scroll(){
								var draggerY=$dragger.position().top;
								var targY=-draggerY*scrollAmount;
								var thePos=$customScrollBox_container.position().top-targY;
								$customScrollBox_container.stop().animate({top: "-="+thePos}, animSpeed, easeType);
							}
						} else { //disable scrollbar if content is short
							$dragger.css("top",0).css("display","none"); //reset content scroll
							$customScrollBox_container.css("top",0);
							$dragger_container.css("display","none");
							$scrollDownBtn.css("display","none");
							$scrollUpBtn.css("display","none");
						}
					}
		
					$dragger.mouseup(function(){
						DraggerRelease();
					}).mousedown(function(){
						DraggerPress();
					});

					function DraggerPress(){
						$dragger.addClass("dragger_pressed");
					}
					function DraggerRelease(){
						$dragger.removeClass("dragger_pressed");
					}
				}
			
				CustomScroller();
	
				$(window).resize(function() {
					if(scrollType=="horizontal"){
						if($dragger.position().left>$dragger_container.width()-$dragger.width()){
							$dragger.css("left", $dragger_container.width()-$dragger.width());
						}
					} else {
						if($dragger.position().top>$dragger_container.height()-$dragger.height()){
							$dragger.css("top", $dragger_container.height()-$dragger.height());
						}
					}
					CustomScroller("resize");
				});
				return output;
			}
		},	
		draw_drop_menus:function(menus,cl,select,selected,close_func) {
		
			var html	=	$('<ul class="drop_menu '+cl+'"></ul>');
			html.data("close_func",close_func);
			for (key1 in menus) {
				var m		=	menus[key1];
				var elem	=	$('<li><a href="#">'+key1+'</a></li>');
				var func	=	'g.clp(e);';
				!g.und(m.func)?func=m.func:1;

				eval('elem.find("a").click(function(e){eval(\''+func+'\');});');
				
				if (typeof m=="object") {
					if (typeof m.e=="object") {
						var elem1	=	$('<ul class="subnav"></ul>');
						for (key2 in m.e) {						
							var mm=m.e[key2];
							
							if (g.und(mm.func) && !select) {
								elem2=$('<li><p>'+key2+'</p></li>');
							}
							else
							{
								elem2=$('<li><p><a href="#">'+key2+'</a></p></li>');
								var func	=	'$(this).parent().parent().slideUp("slow");'+mm.func+'g.clp(e);';
								var selectfunc='';
								if (select) {
									if (!g.und(selected) && mm.option==selected) {
										var $tr	=	elem.find(">a");
										$tr.html($.addslashes(key2));
										$tr.data("select",mm.option);										
									}
									func='var $tr=$(this).parent().parent().parent().find(">a");$tr.data("select","'+mm.option+'");$tr.html(\"'+$.addslashes(key2)+'\");'+$.addslashes(func);
								}		
								eval('elem2.find("a").click(function(e){eval(\''+func+'\');});');
							}
							elem1.append(elem2);
						}
						elem.append(elem1);						
					}
				}
				html.prepend(elem);
				
			}
		
			html.find(">li>a").hover(function() { //When trigger is clicked...
				var t = $(this);
				yoffs=t.height()+parseFloat(t.css("padding-top"))-1;
				t.parent().find("ul.subnav").css({"top":yoffs});
				t.parent().find("ul.subnav").show(); //Drop down the subnav on click
				t.parent().unbind('mouseenter mouseleave').hover(function() {}, function(){	
					var close_func	=	$(this).parent().data("close_func");
					if (g.und(close_func)) {
						close_func=function(){};
					}
					$(this).find("ul.subnav").hide(0,close_func); //When the mouse hovers out of the subnav, move it back up
					$(this).unbind('mouseenter mouseleave');
				});
			},function(){});
			
			return html;
		},
		tabs:{
			tab_info:{"ids":{}},
			// "frame_id":1,"load":file:"" , qstring: {a:1,b:2}
			add_tab	:	function (add_to,info) {
				check = false;
				if (!g.und(g.common.tabs.tab_info[add_to])) {
					if (!g.und(g.common.tabs.tab_info[add_to][info.id])) {
						check = true;
					}
				}

				if (!check) {
					img="";
					if (info["img"]) {
						img = "<img src='/images/icons/"+info["img"]+"'>";
					}
					menu_item	=	$('<a href="#" id="'+info.id+'">'+img+'<p>'+info.name+'</p></a>');
					menu_item.click(function(e) {
						t			=	$(this);	
						g.common.tabs.click_on_tab(t);
						e.preventDefault();
					});
					menu_item.data("info",info);

					var nd	=	$('<div></div>').append(menu_item);

					$("#"+add_to+"_bar").append(nd);
	
					if (!g.common.tabs.tab_info[add_to]) {
						g.common.tabs.tab_info[add_to]={};
					}
					if (g.und(info["load"])) {
						info["load"]={};
					}
					g.common.tabs.tab_info[add_to][info.id] = info;

					idnum=0;
					for (key in g.common.tabs.tab_info["ids"]) {idnum++;} 
					g.common.tabs.tab_info["ids"][idnum]=[add_to,info.id];
					g.common.tabs.tab_info[add_to][info.id]["frame_id"] =	idnum;

					con="";
					if (info["inner_html"]){
						con=info["inner_html"];
					}

					nd	=	'<div id="tab_frame_'+idnum+'"';
					!g.und(info.eclass)?nd+=' class="'+info.eclass+'"':0;
					nd	+=	'>'+con+'</div>';
												
					$("#"+add_to).append(nd);	
					if (info["execute_js"]) {
						eval(info["execute_js"]);
					}
				
					return idnum;
			
				}
			},
			draw_tab_bar:function(add_to,eid,data) {
			
				var eclass="";
			
				data.eclass?eclass=" "+data.eclass:0;
				$t=$('<div id="'+eid+'_bar" class="tabs'+eclass+'"></div>');
			
				var menu = g.common.draw_drop_menus({"More":{"e":{"<div></div>":1}}},"tab_more_menu");
				menu.find(">li>a").css("display","none");
				$t.append(menu);
			
				$parent	=	$("#"+add_to);
				$parent.append($t);


				//for (i=0; i <data.length;i++) {
				for (key in data) {
					g.common.tabs.add_tab(eid,data[key]);
				}	
				
				var cont_wid	=	$t.width();					
					
				var actu_wid	=	0;
		
				more_a		=	$t.find(">ul>li>a");
				more_disp	=	more_a.css("display");
				more_a.css({"display":"block"});
				cont_wid	=	cont_wid-$t.find(">ul").width()-10;
				more_a.css({"display":more_disp});
		
				$t.find("ul ul").html("");
				$t.find("div").each(function() {
					div		=	$(this);
					div_wid	=	div.width();
				
					actu_wid+=div_wid;
				
					if (actu_wid>cont_wid) {	
						html	=	div.find("a");
						div.css({"display":"none"});
						html=$("<li></li>").append(html);
						ulul=$t.find("ul ul").append(html);								
//						html	=	div.html();
//						div.css({"display":"none"});
//						html=$("<li>"+html+"</li>");
//						ulul=$t.find("ul ul").append(html);
						$t.find(">ul>li>a").css({"display":"block"});
						$t.append($t.find(">ul").detach());					
					
					}
					else
					{
						div.css({"display":"block"});
					}
				});	
			},
			force_tab_click : function (tab) {
				g.common.tabs.change_tab($("#main_frame_bar #"+tab));
			},
			click_on_tab	:	function (t) {	
				t.each(function() {				
					g.common.tabs.change_tab($(this));
				});
				resize_mainframe();
			},
			change_tab		:	function (va) {
				tab				=	va.attr("id");
				bar_id		=	va.parent().parent().attr("id");
				if (g.und(bar_id)) {
					bar_id		=	va.parent().parent().parent().parent().parent().attr("id");		
					va.parent().parent().slideUp('fast');
					$("#"+bar_id+" div").removeClass();
				}
				else
				{
					$("#"+bar_id+" div").removeClass();
					va.parent().addClass("bgco2 highlight");
				}	
				main		=	bar_id.replace("_bar","");
			
				var main_frame	=	g.common.tabs.get_tab_object([main,tab]);
			
			
				$("#"+main+">div").css("display","none");
				main_frame.css("display","block");
			
//				if (main=='main_frame') {
//						if (g[package].init && g[package].init.main) {
//							if (g[package].init.main.norightbar) {
//								g.common.show_right_bar(false);
//							}
//							else
//							{
//								g.common.show_right_bar(true);
//							}
//						}
					
				// for spawned tabs

				if (main=='main_frame') {
					if (g.und(va.data("info").norightbar) || !va.data("info").norightbar) {
						g.common.show_right_bar(true);
					}
					else
					{
						g.common.show_right_bar(false);
					}			
				}
												
				main_frame.refresh_scrollbar();

				package	=	va.data("info").package;
				if (package) {					
					func	=	va.data("info").func;
					if (func!="none") {
						if (g.und(func)) {
							func="exec_main();";
						}
						eval("g[package]."+func+";");
					}
				}
				left_bar_custom=va.data("info").left_bar_custom;
				g.und(va.data("info").left_bar_custom)?left_bar_custom="":1;
				
				$("#left_bar_custom").html(left_bar_custom);
			},
			get_tab_object:function(p) {
				if (!g.und(g.common.tabs.tab_info[p[0]])) {
					if (!g.und(g.common.tabs.tab_info[p[0]][p[1]])) {
						return $("#tab_frame_"+g.common.tabs.tab_info[p[0]][p[1]]["frame_id"]);
					}
				}
				return $([]);
			}

		},
		show_right_bar:function(show) {
			if (!show) {
				$("#centercontainer").addClass("norightbar");
			}
			else
			{
				$("#centercontainer").removeClass("norightbar");
			}
		},
		draw_left_right_frame:function(tab) {
		
			var output	=	'\
				<div id="left_'+tab+'_main_cont" class="main_left_frame_cont">\
				</div>\
				<div id="right_'+tab+'_main_cont" class="main_right_frame_cont">\
				</div>';
			return output;
		},					
		load_css1:function(file) {
			$.get(file, function(contents) {
				$('body').append('<style>' + contents + '</style>');
			});
		},
		load_css:function(file) {
			$('body').append('<link href="'+file+'" rel="stylesheet" type="text/css" media="screen" />');
		},
		load_js:function(file) {
			$('body').append('<script type="text/javascript" src="' + file + '"></script>');
		},
		check_profile_data:function(uid,elems,func,opts) {
			load=false;
			if (typeof(uid)=="number"){				
				elems.unshift("d");
				elems.unshift(uid);
				a=g.data.uids;
				for (i=0; i< elems.length; i++) {
					a=a[elems[i]];
					if (g.und(a)) {
						load=true;
						break;
					}
				}
			}
			else
			{
				load=true;
			}
			if (load) {
				g.common.load_data("profile.php",func,opts);
			}				
			else
			{
				eval(func);
			}
			
		},
		load_data:function(file,func,opts) {
			opts.file=file;
			$.ajax({
				type: "POST",
				url: "/s/frame_content/"+file,
				data: opts,
				func:func,
				opts:opts,
				dataType:"json",
				success: function(data){	
					var opts=	this.opts;
					var uid	=	data.d.u;
					g.common.add_friends_names(data.d.obj,{},uid);	
					
					g.data=$.extend(true, g.data, data.d.obj);
					g.data.newsfeed.d={};
					if (this.opts.file=="newsfeed.php") {
						g.data.newsfeed.d		={};
						g.data.newsfeed.d	=data.d.News;
						g.data.newsfeed.k	=	{};
						g.data.newsfeed.k["min"]	=	data.k["min"];
						g.data.newsfeed.k["max"]	=	data.k["max"];
					}
					if (g.common.wait_for_profile_funcs.length>0 && !g.und(g.data.u[g.id].News)) {
						var funcs=g.common.wait_for_profile_funcs;
						g.common.wait_for_profile_funcs=[];
						for (var i=0; i<funcs.length;i++) {
							funcs[i]();
						}
					}			
					eval(func);
				}
			});
		},	
		wait_for_profile_funcs:[],
		wait_for_profile:function(func) {
			if (g.und(g.data.u[g.id].News)) {
				g.common.wait_for_profile_funcs.push(func);
			}
			else
			{
				func();
			}
		},
		draw_profile:function(uid,obj) {
			if ((g.und(g.data[obj][uid]) || g.data[obj][uid].News==undefined) &&	(!uid.toString().match(/^fb/))) {
				g.common.load_data("profile.php","g.common.draw_profile("+uid+",'"+obj+"');",{"uid":uid,"obj":obj});
			}
			else
			{
				this.draw_profile2(uid,obj);
			}
		},
		draw_profile2:function(uid,obj) {			
			if (!g.und(g.common.tabs.tab_info["main_frame"]["uid_main_"+uid+"_"+obj])) {				
				// draw max profile								
				g.common.tabs.get_tab_object(["main_frame","uid_main_"+uid+"_"+obj]).html(this.draw_max_profile(uid,obj));					
			}
		
			min_uid			=	g.common.current_min_profile();
			
			for (var key in g.common.packages.profile) {

				content=g[key].draw_profile_box(uid,obj);
				if (g.und(min_uid) || (min_uid.uid==uid && min_uid.obj==obj)) {
					if (g.und(min_uid)) {
						g.common.current_min_profile({"uid":uid,"obj":obj});
					}
//					$name_elem.data("uid",uid);
//					min_uid=uid;
					$name_elem=$("#right_News_main_cont #min_profile_uid");
					$name_elem.html(g.data[obj][uid].n.fu);
					
					if (!g.und(g.data[obj][uid].Status)) {
						var tt	=	"<a href='#' id='"+obj+"_"+uid+"'>"+g.data[obj][uid].n.fu+"</a><span style='font-size:1.0em;'> - "+g.data[obj][uid].Status+"</span>";
						
						$("#right_News_main_cont #min_profile_uid").html(tt);
						$("#right_News_main_cont #min_profile_uid a").click(function(e) {
							var t = $(this);
							var obj=t.attr("id").split("_");
							g.common.profile_tab(obj[1],"max",obj[0]);
							g.clp(e);
						});
						resize_mainframe();
					}
					g.common.tabs.get_tab_object(["right_News_main_frame",g.common.packages.profile[key].id]).replace_content($(content.min).clone(true,true));
				}
				g.common.tabs.get_tab_object(["main_frame","uid_main_"+uid+"_"+obj]).find("#uid_main_"+key+"_"+uid+"_"+obj+" ."+g.common.packages.profile[key].eclass).replace_content($(content.max).clone(true,true));
				
			}
		},
		draw_max_profile:function(uid,obj) {
				
				var name = g.data[obj][uid].n.fu;
				//	g.und(type)?type="":1;
					var mf=$("<div></div>").html("\
					<div class='max_profile_left'>\
					</div>\
					<div class='max_profile_right'>\
					</div>");
					
					var $name_head	=	$("\
						<div class='no_bord'>\
							<span class='profile_name'  style='float:left;'>"+name+"</span>\
							<span class='change_friend' style='float:left;margin:6px;'></span>\
							<div class='cb'></div>\
							<div class='current_status'></div>\
							<div class='add_something'></div>\
							<div class='cb'></div>\
						</div>");
					if (obj=="u") {
						if (uid!=g.id) {
							$name_head.find(".change_friend").append(g.friends.draw_add_friend_button(uid));
						}
					}
					if (!g.und(g.data[obj][uid].Status)) {
						$name_head.find(".current_status").html(g.data[obj][uid].Status);
					}
					var mfl		=	mf.find(".max_profile_left");
					var mfr		=	mf.find(".max_profile_right");
					mfl.append($name_head);
					for (key1 in g.common.packages.profile) { 
						pkg=g.common.packages.profile[key1];
						if (g.und(pkg.nogroups) || g.und(pkg.nogroups[obj])) {
							key2	=	pkg.position;
							key3="mfr";
							if (key2=="left") {
								key3="mfl";
							}
							eval(key3+'.append("<div id=\'uid_main_'+key1+'_'+uid+'_'+obj+'\' class=\'b\'><div class=\'header bgco2\'>'+pkg.name+'</div><div class=\''+pkg.eclass+'\'></div></div>")');
						}
					}	
					var elem = mf.find(".News");
					
					$name_head.find(".add_something").html(g.commonnews.draw_enter_news_box(obj,uid,elem,"max"));
					
					
					return mf;		
		},
		current_min_profile:function(set) {
			if (g.und(set)) {
				$name_elem=$("#right_News_main_cont #min_profile_uid");
				min_uid=$name_elem.data("obj");
				return min_uid;
			}
			else
			{
				$("#right_News_main_cont #min_profile_uid").data("obj",{uid:set.uid,obj:set.obj});
			}
		},
		add_friends_names:function(data1,data2,uid) {
			for (obj in data1) {
				for (key in data1[obj]) {	
					if(g.data[obj]) {		
					d=data1[obj][key];
					if (!g.und(d.n)) {
						if (!g.und(d.n.f)) {
							d.n.fu=d.n.f;
						}
						if (!g.und(d.n.l)) {
							d.n.fu+=" "+d.n.l;
						}
						if (g.und(g.data[obj][key])) {
							g.data[obj][key]={}
						}
						g.data[obj][key].n	=	d.n;						
					}
					}
				}
			}
			for (key in data2) {
				d=data2[key];
				
//				if (g.und(g.data[obj][uid])) {
//					g.data[obj][uid]={};
//				}	
//				if (g.und(g.data[obj][uid].f)) {
//					g.data[obj][uid].f={};
//				}		
//				g.data[obj][uid].f[key]=1;
				g.data.relationships[key]=d;

				if (!g.und(null)) {
					for (i=0; i<d.length;i++) {
						if (g.und(g.data.groups[d[i]])){
							g.data.groups[d[i]]={};
						}
						g.data.groups[d[i]][key]=1;
					}
				}
				
			}
		},
		draw_profile_pic:function(uid,minmax,obj) {
			var content	=	'<li data-id="profid-'+uid+'" data-type="util">\
				<a href="#" class="uid_prof_max" id="uid_'+uid+'">\
					<img src="/i.php?u='+uid+'&i=-1&s=50"><br>\
					<span data-type="name">'+g.data[obj][uid].n.f+'</span>\
					<div class="activity_number">4</div>\
				</a>';
			
			if (Math.random()*11>7) {
				content	+=	'<div class="online"></div>';							
			}							
			content	+=	'</li>';
			
			content	=	$(content);
			
//			$(".uid_prof_max, .uid_prof_min").unbind().click(function(e) {
			content.find(".uid_prof_max").data("obj",obj).click(function(e) {
//				t			=	$(this);
//				uid			=	t.attr("id").replace("uid_","");

				g.common.profile_tab(uid,minmax,$(this).data("obj"));
				e.preventDefault();
			});
			return content;
		},
		profile_tab	:	function(uid,max,obj) {
			var name;
			if (g.data[obj]&&g.data[obj][uid]) {
				name=g.data[obj][uid].n.f;

				if (max=="max") {
					if (g.common.tabs.tab_info["main_frame"]["uid_"+uid+"_"+obj]) {
						g.common.tabs.tab_info["main_frame"]["uid_"+uid+"_"+obj]["frame_id"];
					}
					else
					{
						g.common.tabs.add_tab("main_frame",{"left_bar_custom":"<img src='/i.php?u="+uid+"&t="+obj+"&i=-1&s=180'>","name":name,"id":"uid_main_"+uid+"_"+obj,"package":"common","norightbar":true,"func":"draw_profile('"+uid+"','"+obj+"');"});
					}
					g.common.tabs.change_tab($("#main_frame_bar #uid_main_"+uid+"_"+obj));
				}
				else
				{
					g.common.tabs.force_tab_click("News");
					g.common.change_min_profile(uid,obj);			
			
				}
			}
			else
			{
				g.common.load_data("profile.php","g.common.profile_tab("+uid+",'"+max+"','"+obj+"');",{"uid":uid,"obj":obj});
			}		
		},
		change_min_profile:function(uid,obj) {
			min_uid=g.common.current_min_profile();
			if (g.und(min_uid) || !(min_uid.uid==uid && min_uid.obj==obj)) {
				g.common.current_min_profile({uid:uid,obj:obj});
				$("#right_News_main_cont #min_profile_uid").html(g.data[obj][uid].n.fu);
				
				for (key1 in g.common.packages.profile) { 
					pkg=g.common.packages.profile[key1];
					showtab=false;
					if (g.und(pkg.nogroups) || g.und(pkg.nogroups[obj])) {
						showtab=true;
					}
					var mintab=$("#right_News_main_frame_bar #"+pkg.id).parent();
					showtab?mintab.show():mintab.hide();
				}
				g.common.tabs.click_on_tab($("#right_News_main_frame_bar #min_uid_N"));				
				g.common.draw_profile(uid,obj);
				
			}						
		},
		prilev:{
			selector:"",
			dot_colours:{
				"90":"ff0000",
				"89":"00ff00",
				"88":"0000ff",
				"87":"ff00ff",
				"1":"00ffff"

			},
			draw_indicator:function(opts2,elemroot) {
				var indicator	=	"";
				for (var c=90; c>86; c--) { // capital Z
					if (opts2.g[String.fromCharCode(c)]) {
						indicator	+=	"<span style='background-color:#"+g.common.prilev.dot_colours[c]+";'>&middot;</span>";
					}
					else
					{
						indicator	+=	"&nbsp;";
					}
				}
				// public
				indicator+=opts2.g["1"]?"<span style='background-color:#"+g.common.prilev.dot_colours["1"]+";'>&middot;</span>":"&nbsp;";
				elemroot.find(".drop_menu>li>a").html(indicator);
			},
			get_prilev:function(elem) {
				var p=[];
				var prilev_elems=elem.find('.prilev .subnav input:checked');
				prilev_elems.each(function() {
					p.push($(this).attr("id").replace("gr_",""));
				});
				return {"g":p};
			},
			draw_selector:function(opts) {
				if (!this.selector) {
					var opts_ok=true;
					if (opts) {
						if (opts.g) {
							opts_ok=false;
						}
					}
					if (opts_ok) {opts={"g":{}};}
					var content=$('<ul></ul>');
					var opts1={};
					for (key in g.groups2) {
						opts1["<input type='checkbox' id='gr_"+g.groups2[key]+"'>"+key]="";			
					}
			
					var o	=	{};
					o["Select privacy"]	=	{"e":opts1};
				
					var content2	=	$("<div></div>");
			
					content.append(content2.append(g.common.draw_drop_menus(o,'prilev')));
	
					button=$("<li><input type='button' value='Select >>' class='select_button_button'></li>");
					button.find(".select_button_button").click(function(e) {
			
						t = $(this);
						uid=t.attr("id");

						groups=[];
			
						t.parent().parent().find('input:checked').each(function() {
							tt=$(this);
							groups.push(tt.attr("id").replace("gr_",""));
						});
						if (groups.length>0) {
//							groups	=	groups.join(",");
				
//							data		=	{};
//							data.uid	=	uid;
//							data.groups	=	groups;

//							t.parent().parent().parent().find("a").html("");
							t.parent().parent().slideUp('slow');
				
							
						}
						e.preventDefault();
					});		
					content.find("ul ul").append(button);	
					g.common.prilev.selector=content.clone(true,true);
				}	
				var tu = g.common.prilev.selector.clone(true,true);
				tu.data("prilev",opts);

				for (key in opts.g) {
					tu.find("#gr_"+key).attr('checked','checked');
				}
				g.common.prilev.draw_indicator(opts,tu);
				tu.find('input[type="checkbox"]').click(function(e) {
					var t=$(this);
					var td=t.parent().parent().parent().parent().parent().parent();

					td.data("prilev").g[t.attr("id").replace("gr_","")]=t.attr("checked")?1:0;
					if (t.attr("checked") && t.attr("id")=="gr_Y") {
						td.data("prilev").g["Z"]=1;
						t.parent().parent().find("#gr_Z").attr("checked","checked");
					}
					if (!t.attr("checked") && t.attr("id")=="gr_Z") {
						td.data("prilev").g["Y"]=0;
						t.parent().parent().find("#gr_Y").attr("checked","");
					}
					if (t.attr("checked") && t.attr("id")=="gr_1") {
						td.data("prilev").g={"1":1};
						t.parent().parent().find('input[type="checkbox"]').attr("checked","");
						t.attr("checked","checked");
					}		
					if (t.attr("id")!="gr_1"){
						td.data("prilev").g["1"]=0;
						t.parent().parent().find("#gr_1").attr("checked","");
					}
					
					g.common.prilev.draw_indicator(td.data("prilev"),td);
				});
				return tu;
			}		
		
		},
		fb_user_message:function(uid) {
			var name=g.data.u[uid].n.f;
			return name+" is not a user";
		},
		alert:function(message) {
			alert(message);
		},
		save_added_comment:function(elem,stuff) {
			stuff["m"]=elem.val();
			$.ajax({
				type: "POST",
				url: "/s/input/like_or_comment.php",
				data: stuff,
				data1:stuff,
				elem:elem,
				dataType:"json",
				success: function(data){
					this.data1.i=data.i;
					this.data1.t=data.t;
					this.data1.u=g.id;
					elem.val("Write a comment...").addClass("empty").blur();
					this.elem.parent().before(g.commonnews.draw_comments(this.data1,this.data1.type));
				}
			});			
		},
		save_like:function(elem) {
			var dstuff = elem.data("stuff");
			delete(dstuff.al);
			if (elem.html()=="Like") {
				dstuff.al=true;
			}
			$.ajax({
				type: "POST",
				url: "/s/input/like_or_comment.php",
				data: {"obj":dstuff.obj,"u":dstuff.u,"type":dstuff.type,"o":dstuff.o,"al":dstuff.al},
				elem:elem,
				dataType:"json",
				success: function(data){
					var elem	=	this.elem;
					var dstuff = elem.data("stuff");
					if (dstuff.al) {
						elem.html("Unlike");	
					}
					else
					{
						elem.html("Like");
					}
					g.commonnews.like_text(elem);
				}
			});			
		},

		popup:function(title,content,obscurer,content_class) {
			var $popup	=	$('\
<div class="Modal_Container modalLayer1 BG_Blank" style="min-width: 470px; left: 397.5px;" fullwidth="0">\
<a class="Modal_close" href="#"><img src="/images/closebox.png"></a>\
<div class="Modal_Dialog">\
<div class="modalTitle"></div>\
<div class="content" style="height: auto; padding: 10px;">\
</div>\
</div>\
</div>');
			if (content_class) {
				$popup.find(".content").addClass("content"+content_class);
			}
			$popup.find(".Modal_close").click(function(e) {
				$(this).parent().find(".content").trigger("cancel_popup");
				g.clp(e);
			});
		

			$popup.find(".content").bind("cancel_popup",function() {
				$(this).parents(".Modal_Container").remove();
				$("body").removeClass("popup");
				$("#obscurer").hide();
			});
			
						
			$popup.find(".modalTitle").html(title);
			$popup.find(".content").html(content);
			
			$("#popups").append($popup);
			if (obscurer) {
				$("#obscurer").show().click(function(e){
					$("body").find(".Modal_Dialog .content").trigger("cancel_popup");
					g.clp(e);
				});
				$("body").addClass("popup");
			}
		},
		display_time:function(time) {
			var d = new Date();
			var timezone=	d.getTimezoneOffset();

			var months	=	['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
			var ttime	=	time.split(" ");
			var date	=	ttime[0].split("-");
			var time	=	ttime[1].split(":");			

			var adj_time	=	new Date(date[0],date[1]-1,date[2],time[0],time[1],time[2],0);
			if (g.common.is_dst(adj_time)) {
				adj_time.setHours(adj_time.getHours()-1);
			}
			adj_time.setHours(adj_time.getHours()-(timezone/60));
						
			var newtime	=	[adj_time.getHours(),adj_time.getMinutes(),adj_time.getSeconds()];
			var newdate	=	[adj_time.getFullYear(),adj_time.getMonth(),adj_time.getDate()];
		
//			var daynum	=	newdate[2].toString().substring(newdate[2].toString().length-1);
			var postfix	=	"th";
			newdate[2]==1?postfix="st":1;
			newdate[2]==2?postfix="nd":1;
			newdate[2]==3?postfix="rd":1;
		
			return months[newdate[1]]+" "+newdate[2]+postfix+" "+g.common.pad_number(newtime[0])+":"+g.common.pad_number(newtime[1])+":"+g.common.pad_number(newtime[2]);
		
		},
		is_dst:function(time) {
			var lsm = new Date(time);
			var lso = new Date(time);
			lsm.setMonth(2); // March
			lsm.setDate(31);
			lsm.setHours(2);
			var day = lsm.getDay();// day of week of 31st
			lsm.setDate(31-day); // last Sunday
			lso.setMonth(9); // October
			lso.setDate(31);
			lso.setHours(1);
			day = lso.getDay();
			lso.setDate(31-day);
			if(time > lsm && time <= lso){return true;}else{return false;}		
		
		},
		pad_number:function(number) {
			if (number.toString().length==1) {
				return "0"+number;
			}
			else
			{
				return number;
			}
		},
		draw_table:function(data,table) {
			g.und(table.margin)?table.margin=[2,2,2,2]:1;
			$tablest={width:0};
			for (var i=0; i<table.width.length;i++) {
				$tablest.width+=table.width[i];				
			}
			for (var i=0; i<table.margin.length;i++) {
				$tablest.width+=table.margin[i];
			}
			var $content=$("<ul style='width:"+$tablest.width+"px;'></ul>");
			$content.append("<li></li><li></li>");
			
			for(var i=0; i<data.length;i++) {
				for (var ii=0; ii<data[i].length; ii++) {
					$content.append($("<li style='float:left;margin:"+table.margin[0]+"px "+table.margin[1]+"px "+table.margin[2]+"px "+table.margin[3]+"px "+";width:"+table.width[ii]+"px;'></li>").append(data[i][ii]));
				}
			}
			$content.append("<li class='cb'></li>");
			return $content;
		},
		draw_add_friends_box:function() {
			var $box=$("<div></div>").css({"min-height":"120px",border:"1px solid #ccc",width:"298px"}).click(function(e) {
				$(this).find("#selector").focus();
				g.clp(e);
			});
			
			$box.append($("<div class='friends_selected'></div>")).append($("<span style='float:left;'><input type='text' id='selector'></span>"))
			$box.find("input").autoGrowInput({maxWidth:300}).css({"border":0,width:"20px"}).bind('keydown keyup',function(e) {
				var t = $(this);
				var v = t.val();
				var f = t.parent().parent().find("ul");
				if (g.und(v)) {
					if(e.keyCode == 8 && e.type=="keydown") {
						$(this).parent().parent().find(".friends_selected>span").last().remove();
					}
					f.hide();
				}
				else
				{
					f.show();
					var anydis=false;
					f.find("li span").each(function() {
						var tx = $(this).text();
						var re1 = new RegExp("^"+v,"i");
						var re2 = new RegExp(" "+v,"i");
			
						if (re1.test(tx) || re2.test(tx)) {
							$(this).parent().show();	
							anydis=true;
						}
						else
						{
							$(this).parent().hide();
						}
					});
					anydis?1:f.hide();
				}
			});
			$box.append($("<div class='cb'></div>"));
			$box.append(g.common.get_friends_selector().hide());
			$box.find("li").click(function(e) {
				var us = $(this).data("user").user;
				var check=$(this).parent().parent().find(".friends_selected span[title="+us+"]");
				if (check.length==0) {
					var $user=$("<span><span title="+us+">"+g.data.u[$(this).data("user").user].n.fu+"</span></span>");
					var $rem_user=$("<a href='#'> X</a>");
					$rem_user.click(function(e) {
						$(this).parent().remove();
						g.clp(e);
					});
					$user.append($rem_user);										
					var friends=[];

					$(this).parent().parent().find(".friends_selected").append($user);
					
					var $fsel=$(this).parent().parent().find(".friends_selected>span");
					$fsel.each(function() {
						friends.push($(this).find("span").attr("title"));
					});
					
					$(this).parent().parent().find(".friends_selected").data("friends",friends)
					
					$(this).parent().hide();
					$(this).parent().parent().find("input").val("");
				}
				g.clp(e);
			});
			
			
			return $box;
		}
	});

