/* 
	by Paul@YellowPencil.com and Scott@YellowPencil.com
	feel free to delete all comments except for the above credit
*/

// Initialize Scripts - is this a browser that understands DOM?

function scriptInit() {
if (!document.getElementById) {
	return;
	}
}

// Set up Event Listener - the script that allows us to use the addEvent call below

function addEvent(elm, evType, fn, useCapture) {
	if (elm.addEventListener) {
	elm.addEventListener(evType, fn, useCapture);
	return true;
	} else if (elm.attachEvent) {
	var r = elm.attachEvent('on' + evType, fn);
	return r;
	} else {
	elm['on' + evType] = fn;
	}
}

// Start Column Script
		

function setTall() {
	if (document.getElementById) {
		// the divs array contains references to each column's div element.  
		// Replace 'center' 'right' and 'left' with your own.  
		// Or remove the last one entirely if you've got 2 columns.  Or add another if you've got 4!
		var divs = new Array(document.getElementById('rclm'), document.getElementById('cclm'), document.getElementById('lclm'));
		
		// Let's determine the maximum height out of all columns specified
		var maxH = 0;
		for (var i = 0; i < divs.length; i++) {
			if(divs[i]){//if the div exists
			divs[i].style.minHeight = '20px';//reset to default height
			divs[i].style.height = 'auto';//reset to default height
			
			if (divs[i].offsetHeight > maxH) maxH = divs[i].offsetHeight;
			}
		}
		
		// Let's set all columns to that maximum height
		for (var i = 0; i < divs.length; i++) {
			if(divs[i]){//if the div exists
			divs[i].style.minHeight = maxH + 'px';
			divs[i].style.height = divs[i].style.minHeight;
			
			// Now, if the browser's in standards-compliant mode, the height property
			// sets the height excluding padding, so we figure the padding out by subtracting the
			// old maxH from the new offsetHeight, and compensate!  So it works in Safari AND in IE 5.x
			// HMM... Using min-height so thsi doesnt work in IE
			if (divs[i].offsetHeight > maxH) {
				divs[i].style.minHeight = (maxH - (divs[i].offsetHeight - maxH)) + 'px';
				divs[i].style.height = divs[i].style.minHeight;
			}
			}
		}
	}
}

/*
	Fire Events - you can add other scripts here and call them using the following method.  
	This one balances the columns when the page loads, and again when the window is resized
	Some have asked about users changing text size, because this script won't fire and your page can look weird.  If you were resizing text via a script, we could run this script when the user calls that script.  However, if you're relying on browser methods for text resizing, I'm not aware of a method to watch for that kind of an event.  If someone smarter than me knows of one, please let me know!  If you don't understand what I mean, then pretend I didn't say anything...
*/
addEvent(window, 'load', setTall, false);
addEvent(window, 'load', preloadBanners, false);
addEvent(window, 'resize', setTall, false);

/* ------------------------ */
//pre loader
function preloadBanners(){
banner0 = new Image();
banner0.src = "/baseimages/banner/sunflowers.jpg";
banner1 = new Image();
banner1.src = "/baseimages/banner/water.jpg";
banner2 = new Image();
banner2.src = "/baseimages/banner/daisy.jpg";
banner3 = new Image();
banner3.src = "/baseimages/banner/fish.jpg";
banner4 = new Image();
banner4.src = "/baseimages/banner/mountain.jpg";
banner5 = new Image();
banner5.src = "/baseimages/banner/bug.jpg";
banner6 = new Image();
banner6.src = "/baseimages/banner/sunset.jpg"; 
banner7 = new Image();
banner7.src = "/baseimages/banner/autumnleaves.jpg"; 
banner8 = new Image();
banner8.src = "/baseimages/banner/leaves.jpg"; 
}
/* ------------------------ */
/** 
 *  @fileoverview TextResizeDetector
 * 
 *  Detects changes to font sizes when user changes browser settings
 *  <br>Fires a custom event with the following data:<br><br>
 * 	iBase  : base font size  	
 *	iDelta : difference in pixels from previous setting<br>
 *  	iSize  : size in pixel of text<br>
 *  
 *  * @author Lawrence Carvalho carvalho@uk.yahoo-inc.com
 * @version 1.0
 */

/**
 * @constructor
 */
TextResizeDetector = function() { 
    var el  = null;
	var iIntervalDelay  = 200;
	var iInterval = null;
	var iCurrSize = -1;
	var iBase = -1;
 	var aListeners = [];
 	var createControlElement = function() {
	 	el = document.createElement('span');
		el.id='textResizeControl';
		el.innerHTML='&nbsp;';
		el.style.position="absolute";
		el.style.left="-9999px";
		var elC = document.getElementById(TextResizeDetector.TARGET_ELEMENT_ID);
		// insert before firstChild
		if (elC)
			elC.insertBefore(el,elC.firstChild);
		iBase = iCurrSize = TextResizeDetector.getSize();
 	};

 	function _stopDetector() {
		window.clearInterval(iInterval);
		iInterval=null;
	};
	function _startDetector() {
		if (!iInterval) {
			iInterval = window.setInterval('TextResizeDetector.detect()',iIntervalDelay);
		}
	};
 	
 	 function _detect() {
 		var iNewSize = TextResizeDetector.getSize();
		
 		if(iNewSize!== iCurrSize) {
			for (var 	i=0;i <aListeners.length;i++) {
				aListnr = aListeners[i];
				var oArgs = {  iBase: iBase,iDelta:((iCurrSize!=-1) ? iNewSize - iCurrSize + 'px' : "0px"),iSize:iCurrSize = iNewSize};
				if (!aListnr.obj) {
					aListnr.fn('textSizeChanged',[oArgs]);
				}
				else  {
					aListnr.fn.apply(aListnr.obj,['textSizeChanged',[oArgs]]);
				}
			}

 		}
 		return iCurrSize;
 	};
	var onAvailable = function() {
		
		if (!TextResizeDetector.onAvailableCount_i ) {
			TextResizeDetector.onAvailableCount_i =0;
		}

		if (document.getElementById(TextResizeDetector.TARGET_ELEMENT_ID)) {
			TextResizeDetector.init();
			if (TextResizeDetector.USER_INIT_FUNC){
				TextResizeDetector.USER_INIT_FUNC();
			}
			TextResizeDetector.onAvailableCount_i = null;
		}
		else {
			if (TextResizeDetector.onAvailableCount_i<600) {
	  	 	    TextResizeDetector.onAvailableCount_i++;
				setTimeout(onAvailable,200)
			}
		}
	};
	setTimeout(onAvailable,500);

 	return {
		 	/*
		 	 * Initializes the detector
		 	 * 
		 	 * @param {String} sId The id of the element in which to create the control element
		 	 */
		 	init: function() {
		 		
		 		createControlElement();		
				_startDetector();
 			},
			/**
			 * Adds listeners to the ontextsizechange event. 
			 * Returns the base font size
			 * 
			 */
 			addEventListener:function(fn,obj,bScope) {
				aListeners[aListeners.length] = {
					fn: fn,
					obj: obj
				}
				return iBase;
			},
			/**
			 * performs the detection and fires textSizeChanged event
			 * @return the current font size
			 * @type {integer}
			 */
 			detect:function() {
 				return _detect();
 			},
 			/**
 			 * Returns the height of the control element
 			 * 
			 * @return the current height of control element
			 * @type {integer}
 			 */
 			getSize:function() {
	 				var iSize;
			 		return el.offsetHeight;
		 		
		 		
 			},
 			/**
 			 * Stops the detector
 			 */
 			stopDetector:function() {
				return _stopDetector();
			},
			/*
			 * Starts the detector
			 */
 			startDetector:function() {
				return _startDetector();
			}
 	}
 }();

TextResizeDetector.TARGET_ELEMENT_ID = 'doc';
TextResizeDetector.USER_INIT_FUNC = null;


function init()  {
		   var iBase = TextResizeDetector.addEventListener(onFontResize,null);
		}
		function onFontResize(e,args) {
			//call balance columns function
			setTall();
		}
		//id of element to check for and insert control
		TextResizeDetector.TARGET_ELEMENT_ID = 'wrapper';
		//function to call once TextResizeDetector has init'd
		TextResizeDetector.USER_INIT_FUNC = init;

