

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// Copyright (c) 2006-2010 Skeletal Software Ltd, England.              //
// All rights reserved.                                                 //
//                                                                      //
// Redistribution or modification of the source is prohibited without	//
// the written consent of Skeletal Software Ltd.                        //
//                                                                      //
// This software is provided by Skeletal Software Ltd 'as is' and any	//
// express or implied warranties, including, but not limited to, the    //
// implied warranties of merchantability and fitness for a particular	//
// purpose are disclaimed.  In no event shall Skeletal Software Ltd. be //
// liable for any direct, indirect, incidental, special, exemplary, or	//
// consequential damages (including, but not limited to, procurement of //
// substitute goods or services; loss of use, data, or profits;         //
// or business interruption) however caused and on any theory of        //
// liability, whether in contract, strict liability, or tort (including //
// negligence or otherwise) arising in any way out of the use of this   //
// software, even if advised of the possibility of such damage.         //
//                                                                      //
//////////////////////////////////////////////////////////////////////////


///////////////////////////////////////////////////////////////////////////////////////
var g_text_area=null;

function ss_get_object(id)
{
    // removed 10/3/11 
	//if  (document.all)
	//	return document.all[id];
	//if (document.layers)
	//	return document.layers[id];
	if (document.getElementById)
		return document.getElementById(id);
	return null;
}

/////////////////////////////////////////////////////////////////////////////////

function ss_get_object_value(id,def)
{
    var obj=ss_get_object(id);
    if (obj && obj.value)
        return obj.value;
    return (def ? def : 0);
}

/////////////////////////////////////////////////////////////////////////////////

function ss_scroll_left() 
{
	return ss_window_filter_results(window.pageXOffset			? window.pageXOffset : 0,
									document.documentElement	? document.documentElement.scrollLeft : 0,
									document.body				? document.body.scrollLeft : 0);
}
/////////////////////////////////////////////////////////////////////////////////

function ss_scroll_top() 
{
	return ss_window_filter_results(window.pageYOffset			? window.pageYOffset : 0,
									document.documentElement	? document.documentElement.scrollTop : 0,
									document.body				? document.body.scrollTop : 0);
}
/////////////////////////////////////////////////////////////////////////////////

function ss_client_width() 
{
	return ss_window_filter_results(window.innerWidth			? window.innerWidth : 0,
									document.documentElement	? document.documentElement.clientWidth : 0,
									document.body				? document.body.clientWidth : 0);
}

/////////////////////////////////////////////////////////////////////////////////

function ss_client_height() 
{
	return ss_window_filter_results(window.innerHeight			? window.innerHeight : 0,
									document.documentElement	? document.documentElement.clientHeight : 0,
									document.body ? document.body.clientHeight : 0);
}

/////////////////////////////////////////////////////////////////////////////////

function ss_window_filter_results(win, docel, body) 
{
	var result = win ? win : 0;
	if (docel && (!result || (result > docel)))
		result = docel;
	return body && (!result || (result > body)) ? body : result;
}

///////////////////////////////////////////////////////////////////////////////////////
// firefox insert text
function ss_insert_text_ff(textArea,text)
{
	// grab end selection
	var endText=textArea.value.substring(textArea.selectionEnd,textArea.value.length);

	// create start
	textArea.value=textArea.value.substring(0,textArea.selectionStart) + text;

	// get cursor pos
	var endPos=textArea.value.length;
	
	// add end
	textArea.value+=endText;		
	
	// reset selection positions to end of 		   
	textArea.selectionStart=endPos;
	textArea.selectionEnd=endPos;
}

///////////////////////////////////////////////////////////////////////////////////////

function ss_emote(text)
{
	var textArea=g_text_area;
	textArea.focus();

	if (document.selection)
	{
		var selection=document.selection;
		var range=selection.createRange();
		range.text=text;
	}
	else if (textArea.selectionStart || textArea.selectionStart=='0')
	{
		ss_insert_text_ff(textArea,text);
	}

	textArea.focus();
}

///////////////////////////////////////////////////////////////////////////////////////

function ss_show_help()
{
	var help=[	{tag:'B',		text: '[B]<b>Bold</b>[/B]'								},
				{tag:'I',		text: '[I]<i>Italic</i>[/I]'							},
				{tag:'U',		text: '[U]<u>Under line</u>[/U]'						},
				{tag:'S',		text: '[S]<s>Strike through</s>[/S]'					},
				{tag:'P',		text: '[P]Justified paragraph[/P]'					},
				{tag:'SUB',		text: '[SUB]<sub>Subscript</sub>[/SUB]'				},
				{tag:'SUP',		text: '[SUP]<sup>Superscript</sup>[/SUP]'				},	
				{tag:'FONT',	text: '[FONT size=\'8|10|12|14\']...[/FONT]'			},
				{tag:'QUOTE',	text: '[QUOTE]Quoted Text[/QUOTE]'						},
				{tag:'CODE',	text: '[CODE]Mono spaced text[/CODE]'					},
				{tag:'LIST',	text: '[LIST]List of [*] data[/LIST]'					},
				{tag:'URL',		text: '[URL=http://www.yoursite.com]Text[/URL]'	},
				{tag:'IMG',		text: '[IMG]http://www.yoursite.com/image.jpg[/IMG]'	},
				{tag:'LIB',		text: '[LIB=lib_id]Library Topic Name[/LIB]'			},
				{tag:'...',		text: 'Ends news on home page at this point.'			},
				{tag:'CONTENTS',text: 'Contents table for the library at this level.'			},
				{tag:'COLOUR',	text: '[COLOUR=red]<span style=\'color:red\'>Coloured Text</span>[/COLOUR]'			}];

	for (var i=0;i<help.length;i++) 
	{	
		if (help[i].tag==this.name) 
		{
			var text=ss_get_object('help_text');
			if (text!=null)
			{
				text.innerHTML=help[i].text;
				return false;
			}
		}
	}
	return true;
}

///////////////////////////////////////////////////////////////////////////////////////

function ss_hide_help()
{
	var text=ss_get_object('help_text');
	if (text!=null)
		text.innerText='Help:';
}

///////////////////////////////////////////////////////////////////////////////////////

function ss_insert_tag(textArea,button)
{	
	var flip=true;
	// get text area
	textArea.focus();
	if (document.selection)
	{
		var selection=document.selection;
		var range=selection.createRange();
		// if we have a range then use it
		if ((selection.type=='Text' || selection.type=='None')  && range!=null)
		{
			if (range.text.length==0 || g_type=='LIST')
			{
				// add a single tag
				range.text='[' + button.value +  ']';
			}
			else
			{
				// add tags around some text
				range.text='[' + button.name +  ']' + range.text + '[/' + button.name +  ']';
				flip=false;
			}
		}
		else
		{
			textArea.value+='[' + button.value +  ']';
		}
	}
	else if ((textArea.selectionStart || textArea.selectionStart=='0') && g_type!='LIST')
	{
		var text='[' + button.name +  ']' + 
				 textArea.value.substring(textArea.selectionStart,textArea.selectionEnd) + 
				 '[/' + button.name +  ']';
		ss_insert_text_ff(textArea,text);
		flip=false;

	}
	else
	{
		textArea.value+='[' + button.value +  ']';
	}
	textArea.focus();
	// flip the tag state if appropriate
	if (flip==true)
	{
		if (button.value==button.name)
			button.value='/' + button.name;
		else
			button.value=button.name;
	}
}

///////////////////////////////////////////////////////////////////////////////////////

function ss_set_display(name,state)
{
	var e=ss_get_object(name);
	if (e!=null)
		e.style.display=state;
}

///////////////////////////////////////////////////////////////////////////////////////

function ss_set_help_but_on(name)
{
	var help_type=[	'help_text', 'help_img', 'help_url', 'help_lib', 'help_col', 'help_font','help_list'];
	for (var i=0;i<help_type.length;i++) 
	{	
		if (help_type[i]==name) 
			ss_set_display(help_type[i],'');
		else
			ss_set_display(help_type[i],'none');
	}
}

///////////////////////////////////////////////////////////////////////////////////////
var g_selection=null;
var g_range=null;
var g_type='';
function ss_get_reply_range(type)
{
	var textArea=g_text_area;
	textArea.focus();
	g_range=null;
	g_selection=null;
	if (document.selection)
	{
		var selection=document.selection;
		if (selection.type=='Text' || selection.type=='None')
			g_range=selection.createRange();
	}
	else if (textArea.selectionStart || textArea.selectionStart=='0')
	{
		g_selection=textArea;
	}
	g_type=type;
}

///////////////////////////////////////////////////////////////////////////////////////

function ss_click_tag()
{	
	var clear=false;
	if ((this.name=='URL' || this.name=='IMG') && g_type!='')
		clear=true;
	else if (this.name=='URL')
	{
		ss_set_help_but_on('help_url');
		document.buttons.href.value='http://';
		document.buttons.name.value='';
		ss_get_reply_range('URL');
	}
	else if (this.name=='IMG')
	{
		ss_set_help_but_on('help_img');
		document.buttons.src.value='http://';
		ss_get_reply_range('IMG');
	}
	else if (this.name=='LIB')
	{
		ss_set_help_but_on('help_lib');
		ss_get_reply_range('LIB');
	}
	else if (this.name=='COLOUR')
	{
		ss_set_help_but_on('help_col');
		ss_get_reply_range('COLOUR');
	}
	else if (this.name=='FONT')
	{
		ss_set_help_but_on('help_font');
		ss_get_reply_range('FONT');
	}
	else if (this.name=='LIST')
	{
		g_type='LIST';
		if (this.value=='LIST')
		{
			ss_set_help_but_on('help_list');
			ss_insert_tag(g_text_area,this);
		}
		else
		{			
			clear=true;
		}
		ss_get_reply_range('LIST');
		
	}
	else if (this.name=='CONTENTS')
	{
		ss_get_reply_range('CONTENTS');
		ss_click_ok();
	}
	else if (this.name=='...')
	{
		ss_get_reply_range('...');
		ss_click_ok();
	}
	else
	{	
		ss_set_help_but_on('help_text');
		var textArea=g_text_area;
		ss_insert_tag(textArea,this);
		clear=true;
	}

	// clear text is requested
	if (clear==true)
		ss_click_cancel();
}

///////////////////////////////////////////////////////////////////////////////////////

function ss_click_ok()
{
	if (g_type!='')
	{
		var text='';
		if (g_type=='URL')
		{
			var name=document.buttons.name;
			var href=document.buttons.href;
			if (name.value=='')
				name.value='Link';
			text="[url=" + href.value + "]" + name.value + "[/url]";
		}
		else if (g_type=='IMG')
		{
			var src=document.buttons.src;
			text+="[img]" + src.value +"[/img]";
		}
		else if (g_type=='LIB')
		{
			var src=document.buttons.lib_id;
			option=src.options[src.selectedIndex];
			var out=option.text;
			while ((out.charAt(0)=='-' || out.charAt(0)==' ') && out.length>0)
				out=out.substr(1);
			text+="[lib=" + option.value + "]" + out +"[/lib]";
		}	
		else if (g_type=='COLOUR')
		{		
			ss_get_reply_range(g_type); // update selection
			var src=document.buttons.colour;
			option=src.options[src.selectedIndex];
			text="[colour=" + option.value + "]";
			if (g_range!=null)
				text+=g_range.text;
			else if (g_selection!=null)
				text+=g_selection.value.substring(g_selection.selectionStart,g_selection.selectionEnd);
			text+="[/colour]";
		}
		else if (g_type=='FONT')
		{		
			ss_get_reply_range(g_type); // update selection
			var src=document.buttons.font;
			option=src.options[src.selectedIndex];
			text="[font=" + option.value + "]";
			if (g_range!=null)
				text+=g_range.text;
			else if (g_selection!=null)
				text+=g_selection.value.substring(g_selection.selectionStart,g_selection.selectionEnd);
			text+="[/font]";
		}
		else if (g_type=='CONTENTS')
		{
			text="[contents]";
		}
		else if (g_type=='...')
		{
			text="[...]";
		}
		else if (g_type=='LIST')
		{
			ss_get_reply_range('LIST');
			text="[*]\n";
		}
		else
		{
			text='';
		}

		var textArea=g_text_area;
		if (g_range!=null)
		{
			g_range.text=text;
		}
		else if (g_selection!=null)
		{
			ss_insert_text_ff(g_selection,text);
		}
		else
		{
			textArea.value+=text;
		}
	}

	// don't come out of options if addijng list item
	if (g_type!='LIST')
		ss_click_cancel();
}

///////////////////////////////////////////////////////////////////////////////////////

function ss_click_cancel()
{	
	if (g_type=='LIST')
	{
		ss_insert_tag(g_text_area,document.buttons.LIST);
	}
	g_range=null;
	g_type='';
	ss_set_help_but_on('help_text');
}

///////////////////////////////////////////////////////////////////////////////////////

function ss_setup_input_tags()
{
	var inputs=document.getElementsByTagName('INPUT');
	var pattern=new RegExp('format_button','i');
	for (var i=0;i<inputs.length;i++) 
	{	
		if (pattern.test(inputs[i].className)) 
		{
			inputs[i].onmouseover=ss_show_help;
			inputs[i].onmouseout=ss_hide_help;
			if (inputs[i].name=='ok')
				inputs[i].onmouseup=ss_click_ok;
			else if (inputs[i].name=='cancel')
				inputs[i].onmouseup=ss_click_cancel;
			else
				inputs[i].onmouseup=ss_click_tag;
		}
	}
}

///////////////////////////////////////////////////////////////////////////////////////

function ss_toggle_lib_tree()
{	
	var node_on=ss_get_object('node_on');
	var	node_off=ss_get_object('node_off');	
	var tree_on=ss_get_object('tree_on');
	var	tree_off=ss_get_object('tree_off');	
	var	tree_ctrl_on=ss_get_object('tree_ctrl_on');
	var	tree_footer_on=ss_get_object('tree_footer_on');
	
	var	on='none';
	var	off='';
	var state='off';
	if (node_on.style.display=="none")
	{
		on='';
		off='none';
		state='on';
	}
	
	ss_set_cookie('lib_tree_state',state);

	node_on.style.display=on;
	node_off.style.display=off;	
	tree_on.style.display=on;
	tree_off.style.display=off;
	tree_ctrl_on.style.display=on;
	tree_footer_on.style.display=on;

	return false;
}

///////////////////////////////////////////////////////////////////////////////////////

function ss_set_cookie(name,value)
{
    if (g_use_cookies==false)
        return;
	document.cookie=name +"="+escape(value);
}

///////////////////////////////////////////////////////////////////////////////////////

function ss_get_cookie(cookie_name)
{
    if (g_use_cookies==false)
        return null;
	cookie_name+="=";
	start=document.cookie.indexOf(cookie_name);
	if (start>=0)
	{
		end=document.cookie.indexOf(";",start);
		if (end==-1)
			end=document.cookie.length;
		return unescape(document.cookie.substring(start+cookie_name.length,end));
	}
	return null;
}

///////////////////////////////////////////////////////////////////////////////////////

function ss_set_cookie_list(cookie_name,list)
{
    if (g_use_cookies==false)
        return;
	var s='';
	for (var i in list)
	{
		if (s!='')	s+=',';
		s+=escape(i) + ':' + escape(list[i]);	
	}
	if (s.length<4000)
	    document.cookie=cookie_name + "=" +s;
	else
	    document.cookie=cookie_name + "=";
}

///////////////////////////////////////////////////////////////////////////////////////

function ss_get_cookie_list(cookie_name)
{
	var data=ss_get_cookie(cookie_name);
	var list=new Array();
	if (data)
	{
		var c_list=data.split(',');
		for (var i=0;i<c_list.length;i++)
		{
			var section=c_list[i].split(':')
			list[section[0]]=section[1];
		}
	}
	return list;
}

///////////////////////////////////////////////////////////////////////////////////////

function ss_begin_drag_system(element,event,num)
{
	var x=event.clientX-parseInt(element.style.left);
	var y=event.clientY-parseInt(element.style.top);

	if (document.addEventListener)
	{
		// netscape
		document.addEventListener("mousemove",ss_mouse_move_hander,true);
		document.addEventListener("mouseup",ss_mouse_up_hander,true);
	}
	else if (document.attachEvent)
	{
		document.attachEvent("onmousemove",ss_mouse_move_hander);
		document.attachEvent("onmouseup",ss_mouse_up_hander);
	}
	else
	{
		// fail;
		return;
	}

	// stop anyone else using event
	if (event.stopPropagation)
		event.stopPropagation();	//DOM2
	else
		event.cancelBubble=true;	//IE

	// prevent defaukt action
	if (event.preventDefault)
		event.preventDefault();		//DOM2
	else
		event.returnValue=false;	//IE

	// handler
	function ss_mouse_move_hander(e)
	{
		if (!e)
			e=window.event;			//IE
		element.style.left=(e.clientX-x)+"px";
		element.style.top=(e.clientY-y)+"px";
		if (e.stopPropagation)
			e.stopPropagation();	//DOM2
		else
			e.cancelBubble=true;	//IE

	}

	function ss_mouse_up_hander(e)
	{
		if (!e)
			e=window.event;	//IE

		
		if (document.removeEventListener)
		{
			document.removeEventListener("mousemove",ss_mouse_move_hander,true);
			document.removeEventListener("mouseup",ss_mouse_up_hander,true);
		}
		else if (document.detachEvent)
		{
			document.detachEvent("onmousemove",ss_mouse_move_hander);
			document.detachEvent("onmouseup",ss_mouse_up_hander);
		}
		else
		{
			return;
		}
		// stop propigate
		if (e.stopPropagation)
			e.stopPropagation();	//DOM2
		else
			e.cancelBubble=true;	//IE


		// update form with snapped object
		document.update_coords.x.value=e.clientX-x;
		document.update_coords.y.value=e.clientY-y;
		document.update_coords.num.value=num;
		
		// cause page to update
		document.update_coords.submit();
	}

}

////////////////////////////////////////////////////////////////////////////////////
// addslashes
////////////////////////////////////////////////////////////////////////////////////

function addslashes (str) {return (str+'').replace(/[\\"']/g, '\\$&').replace(/\u0000/g, '\\0');}

////////////////////////////////////////////////////////////////////////////////////
// links to an objected value
////////////////////////////////////////////////////////////////////////////////////

function ss_goto_object_value(url,obj_name)
{
	var obj=ss_get_object(obj_name);
	if (!obj)
		return;	
	location.href= url+ obj.value;
}

//////////////////////////////////////////////////////////////////////////////////////////////////
// Creates HTML for [1] 2 3 ... last 

function ss_create_page_list(page,items,items_per_page,handle_change)
{
	items+=(items_per_page-1);
	items/=items_per_page;
	items=parseInt(items);
	var s='';

	// get start andend
	var start=page-2;
	var end=start+4;
	if (start<1)	start=1;
	if (end>items)	end=items;

	function link(page)
	{
		var s=handle_change.replace(/page/i,page);
		return "<span onclick='" + s + "' "+
				"style=' text-decoration: underline;cursor:pointer;'>" +
			   page + 
			   "</span>";
	}

	// Add link to first post 
	if (start>1)
		s+=link(1) + " ... ";

	for (var i=start;i<=end;i++)
	{
		// if selected add brackets
		if (i==page)
			s+="[";

		// add link
		s+=link(i);
		if (i==page)
			s+="]";

		// add spaces
		if (i!=end)
			s+=' ';
	}

	// Add link to last post
	if (i<=items)
	{
		if (i<items)
			s+=" ... ";
		else
			s+=" ";
		s+=link(items);
	}

	return s;
}

///////////////////////////////////////////////////////////////////////////////////////
// find the objects location in teh screen with converting to relative/absolute
///////////////////////////////////////////////////////////////////////////////////////

function ss_find_object_loc(obj)
{
	var x=obj.offsetLeft;
	var y=obj.offsetTop;
	var next=obj;

	while (next=next.offsetParent)
	{
		x+=next.offsetLeft;
		y+=next.offsetTop;
	}

	return { x:x,y:y,width:obj.offsetWidth,height:obj.offsetHeight};
}

//////////////////////////////////////////////////////////////////////////////////////////////////
// Stops propigation of events into lower parts of the page structure
//////////////////////////////////////////////////////////////////////////////////////////////////

function ss_stop_propagation(e)
{
	if (e)
	{
		if (e.stopPropagation)
			e.stopPropagation();	//DOM2
		else
			e.cancelBubble=true;	//IE
	}
}

//////////////////////////////////////////////////////////////////////////////////////////////////
// Library tree code
//////////////////////////////////////////////////////////////////////////////////////////////////

function ss_lib_press_node(group_id,node_id)
{
	var neg=ss_get_object("ln_" + group_id + "_" + node_id);
	var pos=ss_get_object("lp_" + group_id + "_" + node_id);
	if (neg && pos)
	{
		var state=1;
		if (neg.style.display=='none')
		{
			neg.style.display='';
			pos.style.display='none';
			state=0;
		}
		else
		{
			neg.style.display='none';
			pos.style.display='';
		}
		// set and save state
		var cookie_name='lib_'+group_id;
		var list=ss_get_cookie_list(cookie_name);
		list[node_id]=state;
		ss_set_cookie_list(cookie_name,list);
	}

}

///////////////////////////////////////////////////////////////////////////////////////

function ss_setup_library(group_id,selected)
{
	var cookie_name='lib_'+group_id;
	var list=ss_get_cookie_list(cookie_name);
	for (var i in list)
	{
		var neg=ss_get_object("ln_" + group_id + "_" + i);
		var pos=ss_get_object("lp_" + group_id + "_" + i);
		if (neg && pos)
		{
			if (parseInt(list[i])==1)
			{
				neg.style.display='none';
				pos.style.display='';	
			}
			else
			{
				neg.style.display='';
				pos.style.display='none';
			}
		}
	}
	// highligh active topic
	var sel=ss_get_object("ls_" + selected);
	if (sel)
		sel.style.fontWeight="bold";

}

///////////////////////////////////////////////////////////////////////////////////////

function ss_toggle_r18()
{
	var r18_state=ss_get_cookie('r18_state');
	if (r18_state=='on')
	{
		ss_set_cookie('r18_state','off');
	}
	else
	{
		ss_set_cookie('r18_state','on');
	}
	ss_setup_r18();
}

///////////////////////////////////////////////////////////////////////////////////////

function ss_setup_r18()
{
	var r18_state=ss_get_cookie('r18_state');
	var divs=document.getElementsByTagName('DIV');
	for (var i=0;i<divs.length;i++) 
	{	
		if (divs[i].className=='r18_on') 
		{
			if (r18_state=='on')
				divs[i].style.display='';
			else
				divs[i].style.display='none';
		}
		else if (divs[i].className=='r18_off') 
		{
			if (r18_state=='on')
				divs[i].style.display='none';
			else
				divs[i].style.display='';
		}
	}
}
///////////////////////////////////////////////////////////////////////////////////////
// info bar drop down functions
///////////////////////////////////////////////////////////////////////////////////////

var g_data={mouse_x:0,mouse_y:0,obj:null,check:false,setup:false,menu_up:0};
var g_menus={   game:   {   
                            jump    :   "Jump Map",
                            system  :   "System Map",
                            cbody   :   "Planet Map",
                            items   :   "Items",
                            affs    :   "Affiliations",
                            markets :   "Markets",
                            ships   :   "Ship Editor"
                         },
                turns:  {   
                            list   :   "Turns",
                            find    :   "Find Turns",
                            access  :   "Access",
                            gpi      :   "GPI"
                         } ,
                orders:  {   
                            turns   :   "Turns",
                            issued  :   "Orders",
                            sent    :   "Sent Turns",
                            macros  :   "Macros",
                            f_mis   :   "Find Mission",
                            mis     :   "Missions"
                         } ,
                 pol:  {   
                            pos         :   "Positions",
                            financial   :   "Financial",
                            info        :   "Information",
                            issues      :   "Issues",
                            treaty      :   "Treaties",
                            squads      :   "Squadrons",
                            posted      :   "Posted Lists",
                            reg         :   "Registered Bases",
                            chart       :   "Charters",
                            rel         :   "Relations"
                         },
                 msg:  {   
                            "new"         :   "Recent",
                            rec         :   "Received",
                            note        :   "Notes",
                            saved       :   "Saved",
                            sent        :   "Sent",
                            game        :   "Game",
                            send        :   "Send Msg",
                            quota       :   "Quota"
                         },      
                   user:  {   
                            votes       :   "Votes",
                            blog        :   "Blog",
                            notify      :   "Notifications",
                            awards      :   "Awards"
                         }    
            };


function ss_info_bar_mouse_over(obj)
{
	if (!g_data.setup)
	{
		if (document.addEventListener)	document.addEventListener('mousemove',ss_info_bar_mouse_move,true);
		else if (document.attachEvent)	document.attachEvent('onmousemove',ss_info_bar_mouse_move);
		g_data.setup=true;
	}
	// only create menus if there is data
    if (g_data.obj!=obj)
    {
        var drop_down=ss_get_object('drop_down');
		drop_down.style.display='none';
		if (g_data.menu_up!=0)
		    clearTimeout(g_data.menu_up);
		g_data.menu_up=0;
	}
	if (!g_menus[obj.id])
	    return;   
    g_data.obj=obj;
	if (g_data.menu_up==0)
	    g_data.menu_up=setTimeout('ss_info_bar_menu()',500);
}

function ss_info_bar_menu()
{
	var a=g_data.obj.id;
	var drop_down=ss_get_object('drop_down');
	var info_header=ss_get_object('info_header');
	var loc_obj=ss_find_object_loc(g_data.obj);
	var loc_bar=ss_find_object_loc(info_header);
	drop_down.style.display='';
	drop_down.style.top=loc_bar.y+loc_bar.height-1 + 'px';
	drop_down.style.width='auto';
	// create lsit
	var s="<ul class='menu'>";
	for (var sa in g_menus[a])
		s+="<li class='menu'><a href='index.php?a="+a+"&sa="+sa+"'>"+g_menus[a][sa]+"</a></li>";
	s+="</ul>";
	drop_down.innerHTML=s;
	// resize drop down if necesary
	if (drop_down.clientWidth<loc_obj.width)
	{
		drop_down.style.width=loc_obj.width+'px';
		drop_down.style.left=loc_obj.x + 'px';
	}
	else
	{
		drop_down.style.left=(loc_obj.x-((drop_down.clientWidth-loc_obj.width)/2)) + 'px';
	}
	if (parseInt(drop_down.style.left)+drop_down.clientWidth>loc_bar.x+loc_bar.width)
		drop_down.style.left=(loc_bar.x+loc_bar.width-drop_down.clientWidth-2)+'px'
	if (g_data.check==false)
	{
		g_data.check=true;
		setTimeout('ss_info_bar_check()',500);
	}
}
///////////////////////////////////////////////////////////////////////////////////////

function ss_info_bar_check()
{
	g_data.check=false;
	var drop_down=ss_get_object('drop_down');
	var loc_obj=ss_find_object_loc(g_data.obj);
	if (g_data.mouse_x<loc_obj.x ||
		g_data.mouse_x>loc_obj.x+loc_obj.width ||
		g_data.mouse_y<loc_obj.y ||
		g_data.mouse_y>loc_obj.y+loc_obj.height+drop_down.clientHeight)
	{
		// kill loc;
		drop_down.style.display='none';
		g_data.menu_up=0;
	}
	else
	{
		// cjeck later
		g_data.check=true;
		setTimeout('ss_info_bar_check()',500);
	}
}
///////////////////////////////////////////////////////////////////////////////////////

function ss_info_bar_mouse_move(e)
{
	if (!e)	e=window.event;
	g_data.mouse_y=e.clientY;
	g_data.mouse_x=e.clientX;
}
///////////////////////////////////////////////////////////////////////////////////////


