function setupRollovers() {
	
	if(!document.getElementsByTagName || !window.RegExp || !document.images) return;
	
	var bits, preload, tag, img, el
	var regex = /\brollover\b/;
	var elements = document.getElementsByTagName('*');
	
	for(var i=0; el = elements[i]; i++) {
	
		if(!regex.test(el.className)) continue;
		
		tag = el.nodeName.toLowerCase();
		img = (tag=='img' || (tag=='input' && el.src)) ? el : el.getElementsByTagName('img')[0];
		if(!img) continue;
		
		bits = img.src.split('.');
		bits[bits.length-2] += '_rollover';
		bits = bits.join('.');
		
		preload = new Image();
		preload.src = bits;
		
		el.sc_rolloverImg = img;
		el.sc_rolloverSrc = bits;
		el.sc_originalSrc = img.src;
		
		el.onmouseover = function() { this.sc_rolloverImg.src = this.sc_rolloverSrc; };
		el.onmouseout = function() { this.sc_rolloverImg.src = this.sc_originalSrc; };
	}
};

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    };
  }
};

addLoadEvent(setupRollovers);


//animated tabs
window.addEvent('domready', function() {
	var cols = {"cx":"#0079C1", "dx":"#ad3eff"};
	$('navigation_main').getChildren().each(function (a) {
		//alert(a.id);
		var fx = new Fx.Styles(a, {duration: 450, transition:Fx.Transitions.Sine.easeOut});
		//a.style.border_bottom = ;
		a.addEvent("mouseenter", function(ev) {
			fx.stop();
			fx.start({"margin-top": [6, 0],
					"padding-bottom": [0, 6]});
		});
		a.addEvent("mouseleave", function(ev) {
			fx.stop();
			fx.start({"margin-top": [0, 6],
					"padding-bottom": [6, 0]});
		});
	});
});

//expanding menu
var menuIds = [];
var showMoreIds = {};
var origHeights = {};
window.addEvent('domready', function() {
	menuIds.each(function(mid) {
		var ob = $('nav_' + mid);
		var myFx = new Fx.Style(ob, 'height', {duration: 450, transition:Fx.Transitions.Sine.easeOut});
		var orig = ob.getSize().size.y;
		//if(console) console.log(orig);
		var innerHeight = 0;
		$ES('ul li', ob).each(function(a) {
			innerHeight += a.getSize().size.y;
//			if(console) console.log(a.getSize().size.y);
		});
		//var exemplar = $E('.navigation_section li');
		
		//myFx.set(exemplar.getSize().size.y);
		myFx.set(orig-innerHeight);
		var im = $E('img', ob);
		im.addEvent("click", function(ev) {
			myFx.stop();
			if(ob.getSize().size.y==(orig-innerHeight)) {//exemplar.getSize().size.y) {
				myFx.start(ob.getSize().size.y, orig);
				im.src = "/images/cx_icon_less.gif";
			} else {
				myFx.start(ob.getSize().size.y, (orig-innerHeight));//exemplar.getSize().size.y);
				im.src = "/images/cx_icon_more.gif";
			}
		});
		
		im.style.cursor = "pointer";
/*		ob.addEvent("mouseleave", function(ev) {
			var exemplar = $('nav_64');
			myFx.stop();
			myFx.start(ob.getSize().size.y, exemplar.getSize().size.y);
		});*/
		
	});
	
	//alert(showMoreIds[0]);
	
	for(var smid in showMoreIds) {
		showMoreIds[smid].each(function (a) {
			var nava = $('nav_' + a);
			origHeights[a] = nava.getSize().size.y;
			nava.style.height = "0px";
		});
		//alert(smid);
		smobj = $('nav_more_' + smid);
		smobj.addEvent('click', function(e) {
			
		
			var event = new Event(e);
			showMoreIds[smid].each(function (a) {
				var ob = $('nav_' + a);
				var myFx = new Fx.Style(ob, 'height', {duration: 450, transition:Fx.Transitions.Sine.easeOut});
				var im = $E('img', ob);
				
				if(ob.getSize().size.y==origHeights[a]) {
					myFx.start(ob.getSize().size.y, 0);
					$E('img', smobj).src = "/images/cx_icon_more.gif";
					$E('span', smobj).setText("More...");
				} else {
					myFx.start(ob.getSize().size.y, origHeights[a]);
//					alert(smobj.getChildren());
					$E('span', smobj).setText("Less...");
					$E('img', smobj).src = "/images/cx_icon_less.gif";
				}
				
			});
			e.preventDefault();
			return false;
		});
	}
});


//expanding menu a hovers
var menuAIds = [];
window.addEvent('domready', function() {
	menuAIds.each(function(mid) {
		var ob_a = $('nava_' + mid);
		var myFx_ob_a = new Fx.Styles(ob_a, {duration: 450, wait:false});

		var origcol = ob_a.getStyle('color');
		var origbg = ob_a.getStyle('background-color');
		var origpl = ob_a.getStyle('padding-left');
		var origpr = ob_a.getStyle('padding-right');
		var newpl = String(Number(origpl.substr(0,origpl.length-2)) + 5)+"px";
		var newpr = String(Number(origpr.substr(0,origpr.length-2)) - 5)+"px";
		var alt = 'Orig pl: '+origpl+'\nNew pl: '+String(newpl)+'\n\nOrig pr: '+origpr+'\nNew pr: '+String(newpr);
		
		ob_a.addEvent("mouseenter", function(ev) {
			myFx_ob_a.stop();
			myFx_ob_a.start({'color':'#333', 'padding-left':newpl, 'padding-right':newpr});
		});
		ob_a.addEvent("mouseleave", function(ev) {
			myFx_ob_a.stop();
			myFx_ob_a.start({'color':origcol, 'padding-left':origpl, 'padding-right':origpr});
		});
		
	});
});



function registerMenuAItem(mid) {
	menuAIds.push(mid);
}

function unregisterMenuAItem(mid) {
	menuAIds = menuAIds.filter(function(ob) {
		return ob!=mid;
	});
}

function registerShowMoreItem(moreid, mid) {
	if(!showMoreIds["" + moreid]) showMoreIds["" + moreid] = [];
/*	showMoreIds[moreid] = [];*/
	showMoreIds[moreid].push(mid);
/*	alert(showMoreIds);*/
}

function registerMenuItem(mid) {
	menuIds.push(mid);
}

function unregisterMenuItem(mid) {
	menuIds = menuIds.filter(function(ob) {
		return ob!=mid;
	});
}

function getElementsByClassName(className, tag, elm){
	var testClass = new RegExp("(^|\\s)" + className + "(\\s|$)");
	var tag = tag || "*";
	var elm = elm || document;
	var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
	var returnElements = [];
	var current;
	var length = elements.length;
	for(var i=0; i<length; i++){
		current = elements[i];
		if(testClass.test(current.className)){
			returnElements.push(current);
		}
	}
	return returnElements;
}


function js_accordion(){
	window.addEvent("domready", function() {

		// Pick your classes
		var myBox = getElementsByClassName('acc_title');
		var myBoxOpen = getElementsByClassName('acc_content');

		var bits = window.location.href.split("#");
		var toshow = -1;
		if(bits[1]) {
//			bits = bits[1].split("_");
			toshow = parseInt(bits[1])-1;
		}
		
		

		// Create the accordion
		var myAccordion = new Fx.Accordion(
			myBox, myBoxOpen, {
				onActive: function(tog){
					tog.setStyles({color: '#0367a3'});
				},
				onBackground: function(tog){
					tog.setStyles({color: '#777'});
				}, 
				display: toshow,
				alwaysHide: true
			}
		);
	});
}

window.addEvent("domready", function() {
	var bta = $$("*[class^=acc_]")
	if(bta.length>0) {
		bta.each(function(a) {
			var b = new Element('a', {
				'class':'acc_title',
				'href':'#'});
			b.setText(a.getText());
			if(a.className=="acc_title") a.replaceWith(b);
			b.addEvent('click', function(e) {
				var event = new Event(e);
				event.preventDefault();
				return false;
			});

		});
		bta = $$("*[class^=acc_]");
		var acc = new Element('div', {
			'id':'accordion'});
		acc.injectBefore(bta[0]);
		acc.adopt(bta);
		
		var myBox = bta.filterByClass('acc_title');
		var myBoxOpen = bta.filterByClass('acc_content');

		var bits = window.location.href.split("#");
		var toshow = -1;
		if(bits[1]) {
			toshow = parseInt(bits[1])-1;
		}

		// Create the accordion
		var myAccordion = new Fx.Accordion(
			myBox, myBoxOpen, {
				onActive: function(tog){
					tog.setStyles({color: '#0367a3'});
				},
				onBackground: function(tog){
					tog.setStyles({color: '#777'});
				}, 
				display: toshow,
				alwaysHide: true
			}
		);
		
	}
});
