/*
	DOMFunctions.js
	
	Created:  6.12.07
	Creator:  M. Kircher, Mainline Media LLC
	Modified: ---
	
*/

function setupNewsPagination(){
	
	var currentPage = 0;
	var numPerPage = 8;
	jQuery('#news-listing').each(function() {
	
		var listing = jQuery(this);
		
		jQuery(listing).bind('repaginate', function() {	
			
			var n = currentPage * numPerPage;
			var x = ((currentPage + 1) * numPerPage - 1);
			
			jQuery(listing).find('.news_item').show();
			jQuery(listing).find('.news_item:lt('+n+')').hide().end();
			jQuery(listing).find('.news_item:gt('+x+')').hide().end();
		});
	
		var numRows = jQuery(listing).find('.news_item').length;			
		var numPages = Math.ceil(numRows / numPerPage);			
		
		var pager = jQuery('<p class="pager"><b>Page:</b></p>');
		
		for (var page = 0; page < numPages; page++) {			
			jQuery('<a href="#" class="page-number">' + (page + 1) + '</a>')
			.bind('click', {'newPage': page}, function(event) {
				currentPage = event.data['newPage'];
				jQuery(listing).trigger('repaginate');
				
				jQuery('.pager').find('a:eq('+eval(currentPage)+')').addClass('active').siblings().removeClass('active');
				jQuery(this).trigger('blur');
				return false;
			})
			.appendTo(jQuery(pager)).addClass('clickable');
		}
		jQuery(pager).find('a.page-number:first').addClass('active');		
		jQuery(pager).insertBefore(jQuery(listing));		
		jQuery(listing).trigger('repaginate');
	});	
}

function setupNewsSelector(){
	if(jQuery('#category_select').length){		
		jQuery('#category_select select').bind('change', function(){
			jQuery('#change_news_category_form').submit();
		});
	}
}

function preloadImages(){
	if(document.images){
		pic1 = new Image(184,27);  pic1.src = "images/sub_nav_button.gif";
		pic1 = new Image(184,27);  pic1.src = "images/sub_nav_button_over.gif";
	}
}

function setColumnHeights(){
	if(!document.styleSheets[0].disabled){	
		var content= document.getElementById('content');
		var left   = document.getElementById('left-side-content');
		var middle = document.getElementById('main-content');
		var right  = document.getElementById('right-side-content');
		
		left.style.height   = "auto";
		middle.style.height = "auto";
		right.style.height  = "auto";
		
		var tallest = left.offsetHeight;
		if(middle.offsetHeight > tallest){ tallest = middle.offsetHeight; }
		if(right.offsetHeight > tallest){	tallest = right.offsetHeight;  }
		
		left.style.height   = tallest+"px";
		if(window.ie){ left.style.height = eval(tallest+15)+"px"; }
		
		middle.style.height = tallest+"px";
		right.style.height  = tallest+"px";
	}
}

function positionContactInfo(){
	if(!document.styleSheets[0].disabled){
		var left = document.getElementById('left-side-content');
		var contactinfo = document.getElementById('left-side-contactinfo');
		
		//go through all left elements
		var h = left.offsetHeight;
		var left_elements = left.getElementsByTagName('div');
		for(var x=0; x<left_elements.length; x++){
			if(left_elements[x].id != contactinfo.id && left_elements[x].parentNode == left){
				
				//subtract heights from left column
				h -= left_elements[x].offsetHeight;
			}
		}
		h -= contactinfo.offsetHeight;
		
		//added necessary padding
		contactinfo.style.paddingTop = eval(h)+"px";
		
		setColumnHeights();
	}
}

function monitorColumnHeights(){
	if (window.addEventListener){
		window.addEventListener('resize', setColumnHeights, false);
		window.addEventListener('resize', positionContactInfo, false);
	} else if (window.attachEvent){
		window.attachEvent('resize', setColumnHeights);
		window.attachEvent('resize', positionContactInfo);
	}
}

function setupInteractiveMenu(){
	var im = document.getElementById('interactive-menu');
	if(im){
		var bttns = im.getElementsByTagName('h1');
		for(var x=1; x<=bttns.length; x++){
			var bttn = bttns[x-1];
			var a = bttn.getElementsByTagName('a')[0];
			//set the <a> tag events
			if(window.ie){
				/* This is effing retarded, IE will not statically
				   process functions before they are called.
				   Set name as a static reference to the index
				   to be called*/
				a.name = x;
				a.onmouseover = function(){ switchIM('imc'+this.name, this.parentNode); }
			} else {
				a.setAttribute('onmouseover',"switchIM('imc"+x+"', this.parentNode);");	
			}
		}
		switchIM('imc1');
	}
}

function switchIM(objId, menuObj){
	var im = document.getElementById('interactive-menu');
	var bttns = im.getElementsByTagName('h1');
	var divs = im.getElementsByTagName('div');
	
	for(var x=0; x<divs.length; x++){
		divs[x].style.display = "none";
		if(divs[x].id == objId){
			divs[x].style.display = "block";
		}
	}
}

window.onload = function(){
	preloadImages();
	setColumnHeights();
	positionContactInfo();
	monitorColumnHeights();
	setupInteractiveMenu();
}

