// JavaScript Document
function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && document.all)? document.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];      
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }   
    }
    return (arrReturnElements)
}
function ascendDOM(e, target){
  while (e.nodeName.toLowerCase() != target &&
      e.nodeName.toLowerCase() != 'html')
    e = e.parentNode;

  return (e.nodeName.toLowerCase() == 'html') ? null : e;
}

/* Categories listview - toggle fieldset to save some space on the page */
function initCategoryHeader() {
	var oFieldsetElements = $$('#categorySelectorForm fieldset.toggle');
	for(var i=0;i<oFieldsetElements.length;i++){
		var eLegendLinkElement = oFieldsetElements[i].getElementsByTagName('legend')[0].getElementsByTagName('span')[0];
		$(eLegendLinkElement).addClass('open');
		$(eLegendLinkElement).addEvent('click', function() {
			var oToggleBoxElements = getElementsByClassName(ascendDOM(this, 'fieldset'),'div','toggleable');
			for(var b=0;b<oToggleBoxElements.length;b++){
				oToggleBoxElements[b].style.display = (oToggleBoxElements[b].style.display=='none')?'block':'none';
			}
			this.className = (this.className=='open')?'close':'open';
		});
	}
}

/* Categories listview - toggle checkboxes */
function checkboxListHandler(e) {
	var eMyParentFormElement = ascendDOM(e, 'fieldset');
	var oInputElements = eMyParentFormElement.getElementsByTagName('input');
	var iCountCheckboxes = 0;
	var iCountCheckedCheckboxes = 0;
	var eSelectAllCheckbox = null;
	var eForm = ascendDOM(e, 'form');
	for(var i=0;i<oInputElements.length;i++){
		if(oInputElements[i].type=='checkbox') {
			iCountCheckboxes++;
			if(oInputElements[i].value=='-1') eSelectAllCheckbox = oInputElements[i];
			if(oInputElements[i].checked) iCountCheckedCheckboxes++;
		}
	}
	if(e.value=='-1'){
		for(var i=0;i<oInputElements.length;i++){
			oInputElements[i].checked = (e.checked)?true:false;
			iCountCheckedCheckboxes = iCountCheckboxes;
		}
	}else{
		if(eSelectAllCheckbox.checked){
			eSelectAllCheckbox.checked = false;
			iCountCheckedCheckboxes--;
		}
		if(iCountCheckedCheckboxes>=(iCountCheckboxes-1)){
			eSelectAllCheckbox.checked = true;
		}else{
			eSelectAllCheckbox.checked = false;
		}
	}
	if(iCountCheckedCheckboxes>1){
		$(eForm).setProperty('action','/site/'+location.href.split('/')[4]+'/');
	}else if(iCountCheckedCheckboxes==1){
		var selectedCheckBox = null
		for(var i=0;i<oInputElements.length;i++){
			if(oInputElements[i].checked) selectedCheckBox = oInputElements[i]
		}
		$(eForm).setProperty('action','/site/'+location.href.split('/')[4]+'/'+$(selectedCheckBox).getProperty('rel')+'/');
	}
	eForm.getElementById('ofsetSelector').value = 0;
	e.blur();
}
/*  */
function ofsetPage(iOfset) {
	var eForm = $('categorySelectorForm');
	eForm.getElementById('ofsetSelector').value = iOfset;
	eForm.submit();
	return false;
}

/* Newsroller - toggles a number of newsarticles in a box */
function initNewsRoller(e) {
	if(!e) return;
	var iNumberOfItems = e.getElementsByTagName('li').length;
	var iActiveItem = 0;
	var iTimeOut = 5 * 1000;
	/* init the newsroller */
	toggleNewsRoller(e.getElementsByTagName('li')[iActiveItem]);
	/* start rowling */
	var myTimer = (function(){
		for(var i=0;i<e.getElementsByTagName('li').length;i++){
			if(e.getElementsByTagName('li')[i].className=='active') iActiveItem = i;
		}
		iActiveItem++;
		if(iActiveItem>=iNumberOfItems) iActiveItem=0;
		toggleNewsRoller(e.getElementsByTagName('li')[iActiveItem]);
	}).periodical(iTimeOut); //wait 5 seconds and execute my function.
	
	
	/* add onmouse(over|out) events to box */
	e.addEvent('mouseover', function(){
		myTimer = $clear(myTimer);
	});
	e.addEvent('mouseout', function(){
		myTimer = (function(){
			for(var i=0;i<e.getElementsByTagName('li').length;i++){
				if(e.getElementsByTagName('li')[i].className=='active') iActiveItem = i;
			}
			iActiveItem++;
			if(iActiveItem>=iNumberOfItems) iActiveItem=0;
			toggleNewsRoller(e.getElementsByTagName('li')[iActiveItem]);
		}).periodical(iTimeOut);
	});
}
function toggleNewsRoller(e) {
	if(ascendDOM(e, 'li').className=='active'){
		return true;
	}else{
		var myParentListElement = ascendDOM(e, 'ul');
		for(var i=0;i<myParentListElement.getElementsByTagName('li').length;i++){
			myParentListElement.getElementsByTagName('li')[i].className = '';
		}
		var imageURL = ascendDOM(e, 'li').getElementsByTagName('img')[0].src;
		var previewBox = $$('#spotlight div div.preview')[0];
		previewBox.setStyle('background-image','url('+imageURL+')');
		ascendDOM(e, 'li').className = 'active';
		//e.blur();
		return false;
	}
}
function showNewsRollerItem(e) {
	location.href=e.getElementsByTagName('a')[0].href;
}


function fixIE6Hover(element, parent) {
	var elements = $ES(element, parent);
	for (var i = elements.length; i--;) {
		elements[i].addEvent("mouseover", function(){ $(this).addClass("hover") });
		elements[i].addEvent("mouseout", function(){ $(this).removeClass("hover") });
	}
}

// these functions are used by ripped pwc.com site parts
// somewhat redefined, but practicly the same
function clearSearch(field) {
	var input = $E("input[name=" + field + "]");
	if (input && input.value.trim().toLowerCase() == "zoeken") { input.value = ""; }
}
function checkSearch() {
	var input = $E("input[name=sp-q]");
	if (input && input.value == "") return false;
	else if (input) { input.value = escape(input.value.replace("&"," ")); }
	return true;
}
function go_country(){
	var countries = $E("select[name=countryDLL]");
	window.location.href = "http://www.pwc.com" + countries.options[countries.selectedIndex].value;
	return false;
}
