function $(o){return document.getElementById(o);}
function $e(o,e){return $(o).getElementsByTagName(e);}
document.getElementsByClassName = function(cl) {var retnode = [];var myclass = new RegExp('\\b'+cl+'\\b');var elem = this.getElementsByTagName('*');for (var i = 0; i < elem.length; i++) {var classes=elem[i].className;if (myclass.test(classes)) retnode.push(elem[i]);}return retnode;};
function hasClass(e,c){if(!e){e=$(e);}var cs=e.className.split(' ');for(var i=0;i<cs.length;i++){if(cs[i]==c){return true;}}return false;}
function innerText(s){var rx = /<\/?[^>]+>/gi;return s.replace(rx,'');}

function taBut(idx){
	var cts = $e('contactList','div');
	for(var i=0;i<cts.length;i++){
		cts[i].style.display = 'none';
	}
	var panes = $e('tabArea','table');
	for(var i=0;i<panes.length;i++){
		panes[i].style.display = 'none';
	}
	panes[idx].style.display = 'block';
	$('tabArea').style.display = 'block';
	$('contactList').style.display = 'none';
	var buts = $e('tabControls','li');
	for(var i=0;i<buts.length;i++){
		buts[i].style.borderBottom =  '1px #bfbfbf solid';		
	}
	buts[idx].style.borderBottom = '1px #fff solid';
	actStatus('');
	hidePartner();
	$('goBack').style.display = 'none';
}

function sortName(startL,endL){
	$('goBack').style.display = 'none';
	$('goBack').onclick = function(){
		hidePartner();
		sortName(startL,endL);
	};
	actStatus('Partners surnames '+ startL+' - '+ endL +':');
	$('tabArea').style.display = 'none';
	$('contactList').style.display = 'block';
	var paint = false;
	var cts = $e('contactList','div');
	for(var i=0;i<cts.length;i++){
		var cId = cts[i].getElementsByTagName('span')[0].innerHTML;
		cId = cId.substring((cId.indexOf(' ')+1), (cId.indexOf(' ')+2));
		if((cId.charCodeAt(0) >= startL.charCodeAt(0)) && (cId.charCodeAt(0) <= endL.charCodeAt(0))){
			cts[i].style.display = 'block';
			cts[i].getElementsByTagName('span')[0].className = 'rslts';
		} else {
			cts[i].style.display = 'none';		
			cts[i].getElementsByTagName('span')[0].className = '';
		}
	}
	var buts = $e('tabControls','li');
	for(var i=0;i<buts.length;i++){
		buts[i].style.borderBottom =  '1px #bfbfbf solid';		
	}
}

function displayArea(a,t){
	$('goBack').style.display = 'none';
	var aa = a;
	var ta = t;
	$('goBack').onclick = function(){
		hidePartner();
		displayArea(aa,ta);
	};
	var n = a;
	while(n.indexOf('and_') > -1){
		n = n.replace('and_','&amp; ');
	}
	while(n.indexOf('_') > -1){
		n = n.replace('_',' ');
	}
	if(t == 1){
		actStatus('Searching: \''+ n +'\'');
	} else if (t == 2){
		actStatus('Partners in '+ n +':');
	} else {
		actStatus('Partners specialising in '+ n +':');
	}
	var oa = a;
	a = a.split(',');
	var cts = $e('contactList','div');
	for(var i=0;i<cts.length;i++){
		cts[i].style.display = 'none';
		var ps = cts[i].getElementsByTagName('p');
		for(var z=0;z<ps.length;z++){
			ps[z].style.display = 'none';
		}
		var criteriaMatch = false;
		for(var j=0;j<a.length;j++){
			if(t == 1){
				if(innerText(cts[i].innerHTML.toUpperCase()).indexOf(a[j].toUpperCase()) > -1 || hasClass(cts[i],a[j])){
					criteriaMatch = true;				
				}
			} else {
				if(hasClass(cts[i],a[j])){
					criteriaMatch = true;				
				}
			}
		}
		if(criteriaMatch){
			cts[i].style.display = 'block';
			cts[i].getElementsByTagName('span')[0].className = 'rslts';
			var pim = cts[i].getElementsByTagName('img')[0];
			if(pim){pim.parentNode.removeChild(pim);}	
		} else {
			cts[i].getElementsByTagName('span')[0].className = '';
		}
	}
	$('tabArea').style.display = 'none';
	$('contactList').style.display = 'block';
	var buts = $e('tabControls','li');
	for(var i=0;i<buts.length;i++){
		buts[i].style.borderBottom =  '1px #bfbfbf solid';		
	}
}

function displayPartner(pn){
	$('goBack').style.display = 'block';
	actStatus('');
	if(!pn){
		return false;
	}
	pn.getElementsByTagName('span')[0].className = 'showC';
	var cimg = pn.getElementsByTagName('img')[0];
	if(!cimg){
		var pic = new Image();
		pic.src = 'http://download.pwc.com/ie/partners/'+ pn.getAttribute('id') + '.png';
		pic.className = 'profilePic';
		pn.insertBefore(pic,pn.firstChild);
	}
	var ps = pn.getElementsByTagName('p');
	ps[0].className = 'contactDtls';
	for(var i=0;i<ps.length;i++){
		ps[i].style.display = 'block';
	}
	pn.style.display = 'block';
	var cts = $e('contactList','div');
	for(var i=0;i<cts.length;i++){
		if(cts[i].id != pn.id){
			cts[i].style.display = 'none';
		}
	}
}

function hidePartner(){
	var cts = $e('contactList','div');
	for(var i=0;i<cts.length;i++){
		cts[i].style.display = 'none';
		var ps = cts[i].getElementsByTagName('p');
		for(var z=0;z<ps.length;z++){
			ps[z].style.display = 'none';
		}
		var cimg = cts[i].getElementsByTagName('img')[0];
		if(cimg){
			cts[i].removeChild(cimg);
		}
	}
}

function actStatus(t){
	p = $('actionStatus');
	if(t!=''){
		p.style.display = 'block';
		p.innerHTML = t;
	} else {
		p.style.display = 'none';
		p.innerHTML = '';
	}	
}

function diag(){
	
}

function initContacts(){
	var cts = $e('contactList','div');
	$('pNum').innerHTML = cts.length;
	var lst = '<select><option>Please choose a profile</option>';
	for(var i=0;i<cts.length;i++){
		cts[i].style.display = 'none';
		cts[i].onclick = function(){displayPartner(this);};
		lst += '<option value=\''+ cts[i].id +'\'>'+ cts[i].getElementsByTagName('span')[0].innerHTML +'</option>';
	}
	$('contactList').style.display = 'block';
	taBut(0);
	
	var sb = $('sideBar');
	sb.innerHTML += lst +'</select>';

	var clst = sb.getElementsByTagName('select')[0];
	clst.onchange = function(){
		if(this.options.selectedIndex != 0){
			$('tabArea').style.display = 'none';
			$('contactList').style.display = 'block';
			displayPartner($(this.options[this.options.selectedIndex].value));
			this.options.selectedIndex == 0;
		}
	};
	$('searchPartners').onkeyup = function(){
		if(this.value.length >= 1){
			displayArea(this.value,1)
		} else {
			taBut(0);
		}
	}
	$('searchPartners').onblur = function(){
		this.value = '';
	}	
}

$(function(){
	initContacts();
});
