function menu_handler(e)
{
	var t=target(e);
	var mnu=ancestor_by_class(t,'menu');
	var btn=ancestor_by_class(t,'top_item');
	if(mnu.active) class_remove(mnu.active,'selected');
	class_add(btn,'selected');
	if(mnu.active){
		var mid=mnu.active.getAttribute('mid');
		if(mid)menu_hide(mid);
	}
	mnu.active=btn;
	if (!btn) return;
	var mid=btn.getAttribute('mid');
	if(!mid) return;
	var el=dge('width_limit_div');
	do_menu_show(mid,e,undefined,undefined,{xoffset:-el.offsetLeft,yoffset:el.offsetTop});
}




// Utility functions


var CLASSNAME = "className";

function class_remove(o,name){
	if (!o) return;
	if(o[CLASSNAME]==undefined)
		debugger;
	
	o[CLASSNAME] = o[CLASSNAME].replace(' '+name,'').replace(name,'');
}
function class_add(o,name){
	if (!o) return;
    var val = o[CLASSNAME];
	if (val.indexOf(name) == -1) 
		o[CLASSNAME] += (val?' ':'')+name;
}
function class_contains(o,name){
	if (!o) return;
    return (o[CLASSNAME].indexOf(name) != -1);
}
function class_set(o,name){
    o[CLASSNAME]=name;
}

function ancestor_by_att(o, txt)
{
    while (o && o.getAttribute && !o.getAttribute(txt)) o = o.parentNode;
    return o && o.getAttribute ? o : null;
};
function ancestor_by_class(o, txt)
{
    while (o && (o.className!=undefined || o.className) && !class_contains(o,txt)) o = o.parentNode;
    return o && o.className? o : null;
};
function ancestor_by_tag(o, txt)
{
    while (o && o.tagName.toLowerCase()!=txt) o = o.parentNode;
    return o;
};

function target(e){
	var src;
	if(e.target){
		src = e.target;
	}else if(e.srcElement){
		src = e.srcElement;
	}
	if (src.nodeType==3) src = src.parentNode;
	return src;
}

function dge(a) { return document.getElementById(a); }

function shadofy(o,prefix)
{
	var el;
	if(o.shadofied) return;
	if(!prefix) prefix='';
	var shadows=['top_left','top_edge','top_right','left_edge','right_edge','bottom_left','bottom_edge','bottom_right'];
	for(var i=0;i<shadows.length;i++){
		el=new_element(o,'div');
		class_add(el,prefix+shadows[i]);
		class_add(el,'shadow');
		el.onclick=function(){dbg("SHADOW onclick")};
	}
	o.shadofied=true;
}

function menu_position(ctl,mnu,opt,ctl2)
{
	var pos = posn_offset(ctl);
	if(ctl2) pos = posn_offset(ctl2,pos);

	if(!opt) opt={};
	if(opt.xoffset) pos[0]+=opt.xoffset;
	if(opt.right) pos[0]+=ctl.offsetWidth-mnu.offsetWidth;

	if(opt.yoffset) pos[1]-=opt.yoffset;
	if(opt.upwards)
		pos[1]-=mnu.offsetHeight;
	else
		pos[1]+=ctl.offsetHeight-2;	
	position_node(mnu,pos);
}
function menu_position_cursor(e,mnu,opt)
{
	var pos = [mouseX(e),mouseY(e)]
	position_node(mnu,pos);
}
function posn_offset(ctl,pos)
{
	if (!pos) pos=[0,0];
	for(var p=ctl;p.offsetParent;p=p.offsetParent) pos[0]+=p.offsetLeft;
	for(var p=ctl;p.offsetParent;p=p.offsetParent) pos[1]+=p.offsetTop;
	return pos;
}
function position_node(mnu,pos)
{
	mnu.style.left=px(pos[0]);
	mnu.style.top=px(pos[1]);
}
function px(value){
	if (value<=0) return "1px";
	return value+"px";
}
function new_element(b,c){
    var d=document.createElement(c);
    b.appendChild(d);
    return d
}


var global_active_menu,menu_timer;
function do_menu_show(id,e,own_calc,fn,posn)
{
	mnu=dge(id);
	if(fn) mnu.cb=fn;
	var t;	
	if(e) {
		t=target(e);
		if (t.tagName.toLowerCase()=='img') 
			t=t.parentNode;
		var tt=ancestor_by_class(t,'top_item');
		if(tt) t=tt;
	}
	if(posn && posn['t'])
		t=posn.t;
	if (menu_timer)	clearTimeout(menu_timer);
	if(posn && posn['cursor'])
		menu_position_cursor(e,mnu,posn);
	else
		menu_position(t,mnu,posn);

//	Ajax only interface functionality
	shadofy(mnu,'mnu_');
	class_remove(mnu,'hidden');
	class_add(tt,'selected');
	global_active_menu=mnu;
}

document.onclick=function(e){
	if (global_active_menu){
		menu_hide2(global_active_menu);
	}
}
function menu_hide2(mnu)
{
	class_add(mnu,'hidden');
	global_active_menu=null;
	
	var mnu=dge('page_menu');
	if(mnu.active) {
		class_remove(mnu.active,'selected');	
	}
}

function menu_action_mouseout(e,txt){
	if (!e) e = window.event;
	var t = target(e);
	if (class_contains(t,'shadow')){
		var el=ancestor_by_class(t,'xmenu');
		if(el.fresh) {
			return;
		}
	}
	x_hide_menu_soon(txt);
}
function menu_action_mouseover(e,txt){
	if (!e) e = window.event;
	var t = target(e);
	if(!class_contains(t,'shadow')){
		var el=ancestor_by_class(t,'xmenu');
		if(el) el.fresh=false;
	}
	if (menu_timer)	clearTimeout(menu_timer);
}
function x_hide_menu_soon(txt)
{
	if (menu_timer)	clearTimeout(menu_timer);
	menu_timer=setTimeout(function(){
		menu_hide(txt);
	}
	,400);
}
function menu_mouseup(id)
{
	var o=dge(id);
	if(!o) return;
	if(o.fresh) {
//		stopEvent(e);
		return;
	}
	menu_hide(id);
}
function menu_hide_ex(e,id,param)
{
	t=target(e);
	if(class_contains(t,'shadow')) {
//		Hack for IE not catching events properly	
//		if (isIE) ignore_one_hide=true;	
		return;
	}
	return menu_hide(id,param);
}
function menu_hide(id,param)
{
	var o=dge(id);
	if(!o) return;
	class_add(o,'hidden');
	global_active_menu=null;
	if (o.cb)
		o.cb('hide',param);
	var mnu=dge('page_menu');
	if(mnu.active) {
		class_remove(mnu.active,'selected');	
	}
}

function x()
{
	document.href='/surgewb?show=site/test.htm';
}

function switch_look(id,url)
{
  var el=document.getElementById(id);
  el.parentNode.removeChild(el);

  var html_doc = document.getElementsByTagName('head').item(0);
  el = document.createElement('link');
  el.setAttribute('rel','stylesheet');
  el.setAttribute('type','text/css');
  el.setAttribute('href',url);
  el.id=id;
  html_doc.appendChild(el);
}

var prefetch_img_urls=[	'download_hover.png','readmore_hover.png',
						'shadow_cnr.png','shadow_cnr.png','shadow_vert.png','shadow_horiz.png',
						'menu2_btn_l.png','menu2_btn_c.png','menu2_btn_r.png'];
var prefetch_img_images=[];
function prefetch_images()
{
	for(var i=0;i<prefetch_img_urls.length;i++){
		prefetch_img_images.push(new Image());
		prefetch_img_images[i].src='/img2/'+prefetch_img_urls[i];
	}	
}
window.onload=init_page;
function init_page(){	
	prefetch_images();
	if(window.do_scroll_menu){
		scroll_menu();
		document.body.onscroll=scroll_menu;
		window.onscroll=scroll_menu;
	}
}


var scrollsoon_timer;
function scroll_menu()
{
	if(scrollsoon_timer) clearTimeout(scrollsoon_timer);	
	scrollsoon_timer=setTimeout(scroll_menu_timed,150);
}
function scroll_menu_timed()
{
	var top;	
	if (self.pageYOffset){
		top = self.pageYOffset;
	}else if (document.documentElement && document.documentElement.scrollTop) { 
		top = document.documentElement.scrollTop; 
	}else if (document.body) { 
		top = document.body.scrollTop; 
	}
	if (top<100) top=100;
	document.getElementById('left_column').style.top = top+'px';
}

