
//backwards compatibility for getElementById
if(document.all && !document.getElementById) {
    document.getElementById = new Function('var expr = /^\\w[\\w\\d]*$/, elname=arguments[0]; if(!expr.test(elname)) { return null; } else if(eval("document.all."+elname)) { return eval("document.all."+elname); } else return null;')
}

//IE7 indexOf fix
//What will these jokers "forget to implement" in IE8?
if(!Array.indexOf){
    Array.prototype.indexOf = function(obj){
        for(var i=0; i<this.length; i++){
            if(this[i]==obj){
                return i;
            }
        }
    return -1;
    }
}


var nav=new Array('home','about','projects','people','recruitment','contact','');
var menus=new Array();
menus[0]=new Array(); //home
menus[1]=new Array();//'Approach','Values','Services'); //about
menus[2]=new Array();//'Commercial','Healthcare','Hotels','Mixed','Residential','Retail'); //projects
menus[3]=new Array();//'London','Cheltenham'); //people
menus[4]=new Array(); //recruitment
menus[5]=new Array(); //contact
menus[6]=new Array(); //(blank)

var timerid=null;
var menuover=0;
var currentmenu='';

function hidecurrentmenu() {

	if(currentmenu=='') return;

	var button=document.getElementById(currentmenu);
	button.src=button.src.substring(0,button.src.length-5)+'0.gif';
	show_element('menu-'+currentmenu, 0);
}

function navover(btn, state) {
	if(!document.getElementById) return;
	var button=document.getElementById(btn);
	
	// b/o = block colour (black/orange) defined by page
	// suffix = 0/1/2 = off/over/dropdown
	//dropdown if menus[] has >0 items
	clearTimeout(timerid);
	var suffix = menus[nav.indexOf(btn)].length>0 ? 2 : 1;
	
	//update status
	window.status = (state==1) ? 'cnm  |  '+btn : '';
	//window.status = (state==1) ? 'cnm   |   '+btn.charAt(0).toUpperCase()+btn.substring(1,btn.length) : '';

	
	//abort for menus if menu is already showing (disabled)
	//if(suffix==2 && menuover && currentmenu==btn) return;

	//if there's a menu, show/hide the menu and update the button src together
	if(suffix==2) {
		if(state==1) showmenu(btn, state);
		//ignore button mouseout if there's a menu
		return;
	}
	//else hide last menu &  update button src
	var cmsuffix = menus[nav.indexOf(currentmenu)].length>0 ? 2 : 1;
	if(cmsuffix==2 && btn != currentmenu && currentmenu != '') {
		hidecurrentmenu();
	}
	suffix *= state;
	button.src=button.src.substring(0,button.src.length-5)+suffix+'.gif';
}


function showmenu(btn,state) {
	if(!document.getElementById) return;
	//button is on top of menu
	//avoid multiple showmenu() triggered by button mouseover/out 
	//instant show / delayed hide
	
	clearTimeout(timerid);
	
	//show/hide menu and update button src
	var cmsuffix = menus[nav.indexOf(currentmenu)].length>0 ? 2 : 1;
	
	//hide last menu
	if(state==1) {
		if(cmsuffix==2) {
			if(btn != currentmenu && currentmenu != '') {
				hidecurrentmenu();
			}
		}
		currentmenu=btn;	
	}

	if(state==1) dshowmenu(btn,state);
	else timerid=setTimeout('dshowmenu("'+btn+'","'+state+'")',500);
}

function keepmenu() {
	clearTimeout(timerid);	
}

function dshowmenu(btn,state) {
	//update button state
	var button=document.getElementById(btn);
	var suffix = state*2; //2 or 0 - dropdown / off
	button.src=button.src.substring(0,button.src.length-5)+suffix+'.gif';

	//show/hide menu
	show_element('menu-'+btn, state);
	menuover=state;
	currentmenu = (state==1) ? btn : '';
}

function dnavover(btn,src) {
	var button=document.getElementById(btn);
	button.src=src;
}

function newsover(nid,state) {
	if(!document.getElementById) return;
	//change class
	document.getElementById('news'+nid).className = (state) ? 'newsover' : 'newsitem';
}

//utility functions
function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}
function move_element(elid, l, t) {
	if(!document.getElementById) return;
	document.getElementById(elid).style.left=l+'px';
	document.getElementById(elid).style.top=t+'px';
}
function show_element(elid, v) {
	if(!document.getElementById) return;
	document.getElementById(elid).style.display = (v==1) ? 'block' : 'none' ;
}
function searchfocus(f) {
	document.getElementById("search").style.color = (f) ? '#888888' : '#cccccc';
	var s = document.forms['searchform'].elements['search'];
	if(f && s.value=='search') {
		s.value='';
	}
}