loadMeUp = startMeUp = '';



////////////// GENERAL FUNCTIONS ///////

function clearDefault(thefield){
	if (thefield.defaultValue==thefield.value)
	thefield.value = ""
}



////////// SHORTHAND ////////////
function getId(id) {
	return document.getElementById(id);
}




///////////// PRELOAD IMAGES ////////////////

preloadArray = new Array();
function addPreload(imgSrc) { preloadArray[preloadArray.length] = imgSrc; }
var preloadFlag = false;
function preloadImages() {
	if (document.images) {
		for (i=0; i<preloadArray.length; i++) eval("preloadImage"+i+" = newImage('"+preloadArray[i]+"');");
		preloadFlag = true;
	}
}
function newImage(arg) {
	if (document.images) {
		rslt = new Image();
		rslt.src = arg;
		return rslt;
	}
}

// image swap function
// swaps src on mouseover for images using the "imageSwap" CSS class
function initImageSwap(docObject) {
	if (!docObject) docObject = document;
	imgs = docObject.getElementsByTagName('IMG');
	for(i=0;i<imgs.length;i++) {
		el = imgs[i];
		if (el.className=='imageSwap') {
			el.ext = el.src.substr(el.src.length-3,3);
			if (el.src.indexOf('0.'+el.ext)!=-1) addPreload(el.src.replace('0.'+el.ext,'1.'+el.ext));
			else if (el.src.indexOf('1.'+el.ext)!=-1) addPreload(el.src.replace('1.'+el.ext,'2.'+el.ext));
			addPreload(el.src);
			if (targetId = el.getAttribute('swapTarget')) {
				// attach events to target element instead of this image
				if (!el.id) el.id = "swapTargetSrc"+Math.random();
				targetEl = document.getElementById(targetId);
				targetEl.setAttribute('swapTargetSrc',el.id);
				// is the target a form?
				targetIsForm = false;
				for(f=0;f<document.forms.length;f++) {
					if (document.forms[f]==targetEl) {
						targetIsForm = true;
						break;
					}
				}
				if (targetIsForm) {
					targetEl.onfocus = function() {
						srcImg = document.getElementById(this.getAttribute('swapTargetSrc'));
						// force animated GIFs to reload in IE
						r = (srcImg.getAttribute("swapAni") && document.all) ? "?r="+Math.random() : '';
						if (srcImg.src.indexOf('0.'+srcImg.ext)!=-1) srcImg.src = srcImg.src.replace('0.'+srcImg.ext,'1.'+srcImg.ext);
						else if (srcImg.src.indexOf('1.'+srcImg.ext)!=-1) srcImg.src = srcImg.src.replace('1.'+srcImg.ext,'2.'+srcImg.ext);
						this.mactive = true;
					}
					targetEl.onblur = function() {
						// force animated GIFs to reload in IE
						r = (srcImg.getAttribute("swapAni") && document.all) ? "?r="+Math.random() : '';
						setTimeout("if (!document.getElementById('"+this.id+"').mactive) { srcImg = document.getElementById(document.getElementById('"+this.id+"').getAttribute('swapTargetSrc')); if (srcImg.src.indexOf('1.'+srcImg.ext)!=-1) srcImg.src = srcImg.src.replace('1.'+srcImg.ext,'0.'+srcImg.ext)+r; else if (srcImg.src.indexOf('2.'+srcImg.ext)!=-1) srcImg.src = srcImg.src.replace('2.'+srcImg.ext,'0.'+srcImg.ext)+r; }" ,250);
						this.mactive = false;
					}
				} else {
					targetEl.onmouseover = function() {
						// force animated GIFs to reload in IE
						srcImg = document.getElementById(this.getAttribute('swapTargetSrc'));
						r = (srcImg.getAttribute("swapAni") && document.all) ? "?r="+Math.random() : '';
						if (srcImg.src.indexOf('1.'+srcImg.ext)!=-1) srcImg.src = srcImg.src.replace('1.'+srcImg.ext,'2.'+srcImg.ext) + r;
						else if (srcImg.src.indexOf('0.'+srcImg.ext)!=-1) srcImg.src = srcImg.src.replace('0.'+srcImg.ext,'1.'+srcImg.ext) + r;
						this.mactive = true;
						alert(1);
					}
					targetEl.onmouseout = function() {
						// force animated GIFs to reload in IE
						r = (srcImg.getAttribute("swapAni") && document.all) ? "?r="+Math.random() : '';
						setTimeout("if (!document.getElementById('"+this.id+"').mactive) { srcImg = document.getElementById(document.getElementById('"+this.id+"').getAttribute('swapTargetSrc')); if (srcImg.src.indexOf('1.'+srcImg.ext)!=-1) srcImg.src = srcImg.src.replace('1.'+srcImg.ext,'0.'+srcImg.ext)+r; else if (srcImg.src.indexOf('2.'+srcImg.ext)!=-1) srcImg.src = srcImg.src.replace('2.'+srcImg.ext,'0.'+srcImg.ext)+r; }" ,250);
						this.mactive = false;
					}
				}
			} else {
				el.onmouseover = el.onmouseup = function() {
					// force animated GIFs to reload in IE
					r = (this.getAttribute("swapAni") && document.all) ? "?r="+Math.random() : '';
					if (this.src.indexOf('0.'+this.ext)!=-1) this.src = this.src.replace('0.'+this.ext,'1.'+this.ext)+r;
					else if (this.src.indexOf('1.'+this.ext)!=-1) this.src = this.src.replace('1.'+this.ext,'2.'+this.ext)+r;
				}
				el.onmouseout = el.onmousedown = function() {
					// force animated GIFs to reload in IE
					r = (this.getAttribute("swapAni") && document.all) ? "?r="+Math.random() : '';
					if (this.src.indexOf('1.'+this.ext)!=-1) this.src = this.src.replace('1.'+this.ext,'0.'+this.ext)+r;
					else if (this.src.indexOf('2.'+this.ext)!=-1) this.src = this.src.replace('2.'+this.ext,'1.'+this.ext)+r;
				}
			}
		}
	}
}



///////////////// FORM VALIDATION /////////////////


function writeAddress(a,b,s) {
	e1=a+'@'+b;
	e2='<b>'+a+'</b>'+'@'+b;
	s = (s) ? 'style='+s : '';
	document.write('<a '+s+' href=mailto:'+e1+'>'+e2+'</a>');
}

function getCookie(name) { // use: getCookie("name");
	var re = new RegExp(name + "=([^;]+)");
	var value = re.exec(document.cookie);
	return (value != null) ? unescape(value[1]) : null;
}

today = new Date();
var expiry = new Date(today.getTime() + 365 * 24 * 60 * 60 * 1000); // plus 1 year

function setCookie(name, value, sessionCookie) { // use: setCookie("name", value);
	if (sessionCookie) {
		expires = '';
	} else {
		expires = "expires=" + expiry.toGMTString();
	}
	document.cookie=name + "=" + escape(value) + "; path=/; " + expires;
}
// standard form validation
function checkForm(f, holdSubmit) {
	pass = true;
	for(i=0;i<f.length;i++) {
		el = f[i];
		if (note = el.getAttribute("validationNotice")) {
			if (isVisible(el)) {
				if (el.type=='text' || el.type=='password' || el.type=='textarea') {
					el.value = trim(el.value);
					if (!el.value) pass = false;
					if (pass && (el.name=='email' || el.name=='new_email' || el.name=='yourEmail' || el.name=='e_signup' || el.name.toLowerCase().indexOf('email')!='-1')) {
						if (!eCheck(el.value)) {
							note = "Please provide a valid email address.";
							pass = false;
						}
					}
				} else if (el.options) {
					if (!el.options[el.selectedIndex].value && (!el.options[el.selectedIndex].text || el.options[el.selectedIndex].text.indexOf('--Select')==0 || el.options[el.selectedIndex].text=='--Please Select--' || el.options[el.selectedIndex].text=='None')) {
						pass = false;
					}
				} else if (el.type=='checkbox') {
					if (!el.checked) {
						pass = false;
					}
				}
				if (!pass) {
					alert(note);
					el.focus();
					break;
				}
			}
		}
		// check for special fields
		if (el.name=='subject' && el.value.indexOf('@') != -1 && el.value.indexOf('.') != -1) {
			pass = false;
			alert("Please enter a text subject in the subject field, not an e-mail address.");
			el.focus();
			break;
		}
	}
	if (!pass) {
		// do not post the form
		return false;
	} else if (!holdSubmit && f.action.indexOf('javascript')==-1) {
		// ensure fields are not disabled
		for(i=0;i<f.length;i++) {
			el = f[i];
			el.disabled = false;
		}
		// attempt to disable the submit button
		if (sb = document.getElementById('submitButton')) {
			sb.disabled = true;
		}
		if (db = document.getElementById('donationButtons')) {
			setOpacity('',30,db);
		}
		// post the form
	} else return true;
}

function showHelp(helpName) {
	helpWin=window.open('/resources/'+helpName+'.php','helpWin','width=400,height=480,status=yes,resizable=yes,scrollbars=yes');
	helpWin.focus();
	return false;
}


function initPNG() {
	// look for PNG images
	if (document.all && /MSIE (5\.5|6)/.test(navigator.userAgent) && document.styleSheets && document.styleSheets[0] && document.styleSheets[0].addRule) {
		document.styleSheets[0].addRule('img', 'behavior: url(/css/iepngfix.htc)');
	}
}
loadMeUp += "initPNG();";

function trim(str) {
	if (!str) return str;
	while(str.charAt(0)==' '|| str.charAt(0)=="\n" || str.charAt(0)=="\t") str = str.substr(1);
	while(str.charAt(str.length-1) ==' '|| str.charAt(str.length-1)=="\n" || str.charAt(str.length-1)=="\t") str = str.substr(0,str.length-1);
	return str;
}

function isVisible(el) {
	// check if an element is visible using inline css "display" check
	elCheck = el;
	while(elCheck != document) {
		if (elCheck.style.display=='none') return false;
		elCheck = elCheck.parentNode;
	}
	return true;
}

function eCheck(e) {
	eOk = true;
	if (!detectChar('@', e)) eOk = false;
	if (!detectChar('.', e)) eOk = false;
	name = e.substr(0, e.indexOf('@'));
	domain = e.substr(e.indexOf('@')+1, e.length);
	if (!name.length) eOk = false;
	d1 = domain.substr(0, domain.indexOf('.'));
	d2 = domain.substr(domain.indexOf('.')+1, domain.length);
	if (!d1.length) eOk = false;
	if (!d2.length) eOk = false;
	if (d2.substr(d2.length-1, 1) == '.') eOk = false;
	domainType = 1;
	dList = new Array('hotmail.com', 'yahoo.com', 'mindspring.net', 'excite.com');
	for (i2=0; i2<dList.length; i2++) {
		if (domain.toLowerCase() == dList[i2]) {
			domainType = 0;
			break;
		}
	}
	return (eOk);
}
	
function detectChar(chr, str1) {
	str2 = str1.replace(chr, "");
	if (str1.length > str2.length) return true;
	return false;
}



// limit length of textareas				
function checkLength(el) {
	ml = el.getAttribute('maxChars')*1;
	if (el.value.length > ml) {
		el.value = el.value.substr(0,ml);
		alert("Sorry! You've reached the maximum message length. Please keep your message under "+ml+" characters.");
	}
}

// limit number of addresses
function checkAddressLimit(el) {
	ml = el.getAttribute('addressLimit')*1;
	str = el.value;
	breach = false;
	for(i=0;i<ml;i++) {
		if (str.indexOf('@') > 0) {
			str = str.replace('@','[AT]');
		} else break;
	}
	if (str.indexOf('@') > 0) {
		// breached limit
		str = str.substr(0,str.indexOf('@'));
		breach = true;
	}
	for(i=0;i<ml;i++) {
		str = str.replace('[AT]','@');
	}
	if (breach) {
		el.value = str;
		alert("Sorry! You can only enter up to "+ml+" addresses at a time.");
	}
}

function check_key(key_event, the_key, action) {
	if (!void13) {
		if (!key_event) key_event = event.keyCode;
		if (key_event == the_key) // execute action
		eval(action);
	}
}




////////////////// SMILEYS /////////////////////

smileyTargetField = '';
function insertSmiley(targetField) {
	smileyTargetField = targetField;
	smileyWindow = window.open('/blog/smileys.php','smileyWindow','width=550,height=410,status=yes,resizable=yes,scrollbars=yes');
	smileyWindow.focus();
	smileyWatch();
}
function smileyWatch() {
	if (smileyWindow) {
		if (smileyWindow.smileCode) {
			if (smileyWindow.smileCode!='void') smileyTargetField.value += smileyWindow.smileCode;
			smileyWindow.close();
		} else {
			setTimeout("smileyWatch();",100);
		}
	}
}


///////////////// SHARE NETWORK ///////////////
function initSN() {
	// look for SN spans
	spanEls = document.getElementsByTagName('SPAN');
	snId = 0;
	for(s=0;s<spanEls.length;s++) {
		sEl = spanEls[s];
		if (sEl.className=='sn') {
			// found one
			snId++;
			// find the info span
			ispanEls = sEl.getElementsByTagName('SPAN');
			for(is=0;is<ispanEls.length;is++) {
				isEl = ispanEls[is];
				if (isEl.className=='snInfo') {
					// found
					isEl.id = 'snInfo'+snId;
					break;
				}
			}
			// find links
			imgEls = sEl.getElementsByTagName('IMG');
			for(is=0;is<imgEls.length;is++) {
				imgEl = imgEls[is];
				imgEl.setAttribute('snTarget','snInfo'+snId);
				// set mouseover function
				imgEl.onmouseover = function() {
					document.getElementById(this.getAttribute('snTarget')).innerHTML = this.alt;
				}
				imgEl.onmouseout = function() {
					document.getElementById(this.getAttribute('snTarget')).innerHTML = '';
				}
			}
		}
	}
}
loadMeUp += "initSN();";






////////////////// AJAX ////////////////////

execAfterAjaxCall = '';
function ajaxCall(requestURL,elId,inputType,params) {
	ajaxCallInProgress = true;
	var xmlHttp;
	try {
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
	}
	catch (e) {
		// Internet Explorer
		try {
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e) {
			try {
				xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e) {
				alert("Sorry, this feature requires a browser that supports AJAX. To continue, please download the latest version of Google Chrome from www.google.com/chrome");
				return false;
			}
		}
	}
	if (params) { // POST REQUEST
		xmlHttp.open("POST", requestURL, true);
		//Send the proper header information along with the request
		xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xmlHttp.setRequestHeader("Content-length", params.length);
		xmlHttp.setRequestHeader("Connection", "close");
		xmlHttp.onreadystatechange = function() {
			if(xmlHttp.readyState == 4) {
				ajaxResult = xmlHttp.responseText;
				if (inputType) el = document.getElementById(elId);
				if (inputType=='wysiwyg') {
					fooDoc = (document.all) ? el.document : el.contentWindow.document;
					fooDoc.body.innerHTML = ajaxResult;
				} else if (inputType) el.value = ajaxResult;
				else {
					el = document.getElementById(elId);
					el.innerHTML = ajaxResult;
					externalLinkChecker();
				}
				if (execAfterAjaxCall) {
					eval(execAfterAjaxCall);
					execAfterAjaxCall = '';
				}
			}
		}
		xmlHttp.send(params);
	} else { // GET REQUEST
		xmlHttp.onreadystatechange=function() {
			if(xmlHttp.readyState==4) {
				ajaxResult = xmlHttp.responseText;
				if (inputType) el = document.getElementById(elId);
				if (inputType=='wysiwyg') {
					fooDoc = (document.all) ? el.document : el.contentWindow.document;
					fooDoc.body.innerHTML = ajaxResult;
				} else if (inputType) el.value = ajaxResult;
				else {
					el = document.getElementById(elId);
					el.innerHTML = ajaxResult;
					externalLinkChecker();
				}
				if (execAfterAjaxCall) {
					eval(execAfterAjaxCall);
					execAfterAjaxCall = '';
				}
			}
		}
		xmlHttp.open("GET",requestURL,true);
		xmlHttp.send(null);
	}
}






///////////////// COUNTER //////////////////

counterTarget = 0;
counterDigits = 7;
counterInitialisationCount = 0;
function initCounter() {
	if (!counterInitialisationCount) {
		if (!counterTarget) updateCounterTarget();
		for(i=0;i<10;i++) addPreload('/images/digit'+i+'.gif');
		if (document.getElementById('life_saving_counter')) {
			counterStr = counterTarget+'';
			timeDelay = 800;
			for (i=counterDigits;i>0;i--) {
				if (i <= counterStr.length) {
					counterInitialisationCount++;
					setTimeout("document.getElementById('digit"+i+"').src='/images/digits.gif';document.getElementById('digit"+i+"').style.marginTop='32px';",(i*75));
					setTimeout("setCounterDigit("+i+",1);",timeDelay);
					setTimeout("counterInitialisationCount--;",timeDelay);
					timeDelay *= 1.2;
				}
			}
		}
	}
}
function setCounterDigit(position,forceFlag) {
	iEl = document.getElementById('digit'+position);
	if (iEl) {
		counterStr = counterTarget+'';
		if (iEl.src.indexOf('digits.gif')==-1 || forceFlag) {
			if (position > counterStr.length) {
				// clear this image
				if (iEl.src.indexOf('/images/space.gif')==-1) iEl.src = '/images/space.gif';
				iEl.alt = '';
			} else {
				// set to digit
				selectedDigit = counterStr.substr(counterStr.length-position,1);
				if (forceFlag || iEl.alt!=selectedDigit) {
					if (iEl.src.indexOf('/images/digit'+selectedDigit+'.gif')==-1) iEl.src = '/images/digit'+selectedDigit+'.gif';
					iEl.style.marginTop = (32 + Math.ceil(Math.random()*4-2)) + "px";
					iEl.style.height = '5px';
					setTimeout("document.getElementById('digit"+position+"').style.height='15px';",30);
					setTimeout("document.getElementById('digit"+position+"').style.height='33px';",60);
				}
				iEl.alt = selectedDigit;
			}
		}
	}
}

today=new Date();
yearlyCounterTarget = 3000*100;
yearStart = new Date(today.getFullYear(), 0, 1, 0, 0, 0, 0);
function updateCounterTarget() {
	now=new Date();
	yearRatio = (now.getTime() - yearStart.getTime()) / (1000*60*60*24*365);
	counterTarget = Math.floor(yearlyCounterTarget*yearRatio);
	for (j=1;j<=counterDigits;j++) setTimeout("setCounterDigit('"+j+"')",j*100);
	setTimeout(updateCounterTarget,500);
}
function hideLogin() {
	setCookie('hideLogin',1,1);
	document.getElementById('loginStatus').style.display='none';
}

function clearAAYMember() {
	setCookie('AAYMemberCode', '');
	// done
}





/////////////// LINK CHECKER //////////////////

// automate the correct target properties for links:
function externalLinkChecker() {
	links = document.getElementsByTagName('A');
	for(k=0;k<links.length;k++) {
		link = links[k];
		extLink = false;
		if (link.href) {
			// break out of frames:
			if (!link.target) link.target = '_parent';
			if (link.href.toLowerCase().substr(0,7)=='http://' || link.href.toLowerCase().substr(0,8)=='https://') {
				if (link.href.toLowerCase().indexOf('unleashed.org.au')==-1 && link.href.toLowerCase().indexOf('localhost')==-1 && link.href.toLowerCase().indexOf('quadrahosting')==-1 && link.href.toLowerCase().indexOf('.qnetau.com')==-1) {
					if (link.target.toLowerCase()!='_blank') extLink = true;
					link.target = '_blank';
				}
			}
			// check extension
			ext = link.href.toLowerCase().split('.')[link.href.toLowerCase().split('.').length-1];
			if (ext=='pdf'||ext=='doc') {
				link.target = '_blank';
				// extLink = true;
			}
		}
	}
}



///////////////// RECOMMEND ////////////////////////

function setRecommendationLinks() {
	anchors = document.getElementsByTagName('A');
	for(a=0;a<anchors.length;a++) {
		el = anchors[a];
		if (el.href.toLowerCase().indexOf('/recommend.php')!=-1) {
			el.onclick = rememberPageTitle;
		}
	}
	// if (getCookie('pageTitle')) setCookie('pageTitle','');
}
function rememberPageTitle() {
	pageTitle = document.title.replace(" // Animals Australia Unleashed",'');
	setCookie('pageTitle',pageTitle);
}
function rememberPageURL() {
	setCookie('pageURL',location.href);
}



/////////// SIMPLE DHTML ///////////

function toggleVis(elId) {
	el = document.getElementById(elId);
	if (el) {
		el.style.display = (el.style.display=='block') ? 'none' : 'block';
	}
}




/////////////// COSMETIC ///////////////////

// extends the width of the footer bg shadow if appropriate:
function formatForWidescreen() {
	if (document.getElementById('footer1')) {
		// what is the window width?
		if (document.all) {
		  winW = document.body.offsetWidth;
		  winH = document.body.offsetHeight;
		} else {
		  winW = window.innerWidth;
		  winH = window.innerHeight;
		}
		if (winW > 1054) {
			document.getElementById('footer1').style.width = "1040px";
			document.getElementById('footerBg').style.width = "1040px";
			document.getElementById('footerBg2').style.marginLeft = "0";
			// showConditionalWidthObjects();
		} else if (winW >= 1012) {
			document.getElementById('footer1').style.width = "998px";
			document.getElementById('footerBg').style.width = "998px";
			document.getElementById('footerBg2').style.marginLeft = "-21px";
			// hideConditionalWidthObjects();
		} else {
			document.getElementById('footer1').style.width = "980px";
			document.getElementById('footerBg').style.width = "980px";
			document.getElementById('footerBg2').style.marginLeft = "-30px";
			// hideConditionalWidthObjects();
		}
		onresize = formatForWidescreen;
	}
}

function hideConditionalWidthObjects() {
	showConditionalWidthObjects(1);
}
function showConditionalWidthObjects(hideFlag) {
	vis = (hideFlag) ? 'none' : 'inherit';
	var totalrules=document.styleSheets[0].cssRules? document.styleSheets[0].cssRules.length : document.styleSheets[0].rules.length;
	if (document.styleSheets[0].deleteRule){ //if Firefox
		document.styleSheets[0].insertRule('.conditional_width{display:'+vis+';}', totalrules-1);
	}
	else if (document.styleSheets[0].removeRule){ //else if IE
		document.styleSheets[0].addRule('.conditional_width', 'display:'+vis);
	}
}


function highlightForm(fName) {
	f = document[fName];
		if (f && !(document.getElementById('dialog') && document.getElementById('dialog').style.display=='block')) {
		fpEls = f.getElementsByTagName('P');
		fiEls = f.getElementsByTagName('INPUT');
		ftEls = f.getElementsByTagName('TEXTAREA');
		fsEls = f.getElementsByTagName('SELECT');
		for(i=0;i<(fiEls.length+ftEls.length+fsEls.length);i++) {
			iEl = (i < fiEls.length) ? fiEls[i] : ((i < (fiEls.length+ftEls.length)) ? ftEls[i-(fiEls.length)] : fsEls[i-(fiEls.length+ftEls.length)]);
			if (iEl.onfocus) break;
			iEl.onfocus = function() {
				// remove class formatting from fpEls
				for(p=0;p<fpEls.length;p++) {
					pEl = fpEls[p];
					pEl.className = '';
					pEl.setAttribute('fpEl',1);
				}
				// find the P parent of this input element
				parentP = this.parentNode;
				while (parentP!=document && parentP && !parentP.getAttribute('fpEl')) parentP = parentP.parentNode;
				if (parentP && parentP!=document) parentP.className = 'selected';
			}
		}
	}
}

function initEsignupHeaderForm() {
	if (document.getElementById('esignup') && document.getElementById('e_signup_input')) {
		document.getElementById('esignup').onclick = function() {
			document.getElementById('e_signup_input').focus();
		}
	}
}
loadMeUp += "initEsignupHeaderForm();";





////////////////// FADE IN & OUT ////////////////////

fadeStepInt = 10;
randFadeId = Math.ceil(Math.random()*1000);
function fadeOut(elId,execAfter,el) {
	if (el) {
		if (!el.id) el.setAttribute('id','fadeEl'+randFadeId++);
		elId = el.id;
	} else {
		el = document.getElementById(elId);
	}
	fadeEl = el;
	fadeEl.elId = elId;
	if (execAfter) fadeOutExecAfter = execAfter;
	fadeEl.alpha = 100;
	setOpacity(fadeEl.id,fadeEl.alpha);
	setTimeout(fadeOutStep,fadeStepInt);
}

fadeOutExecAfter = fadeInExecAfter = '';
function fadeOutStep() {
	fadeEl.alpha -= 10;
	setOpacity(fadeEl.id,fadeEl.alpha);
	if (fadeEl.alpha <= 0) {
		if (fadeOutExecAfter) {
			eval(fadeOutExecAfter);
			fadeOutExecAfter = '';
		}
	} else setTimeout(fadeOutStep,fadeStepInt);
}

function fadeIn(elId,execAfter,el) {
	if (elId) {
		el = document.getElementById(elId);
	} else {
		if (!el.id) el.id = 'fadeEl'+randFadeId++;
		elId = el.id;
	}
	fadeEl = el;
	fadeEl.elId = elId;
	if (execAfter) fadeInExecAfter = execAfter;
	fadeEl.alpha = 0;
	setOpacity(fadeEl.id,fadeEl.alpha);
	setTimeout(fadeInStep,10);
}

function fadeInStep() {
	fadeEl.alpha += 5;
	setOpacity(fadeEl.id,fadeEl.alpha);
	if (fadeEl.alpha >= 100) {
		if (fadeInExecAfter) {
			eval(fadeInExecAfter);
			fadeInExecAfter = '';
		}
	} else setTimeout(fadeInStep,10);
}

function setOpacity(elId,alpha,el) {
	if (!el) el = document.getElementById(elId);
	if (document.all) el.style.filter = 'alpha(opacity=' + alpha + ')';	
	else el.style.opacity = (alpha)/100;
}



//////////////// TICKER TITLE ////////////////////



function tickerTitle(tickerElId,str) {
	tickerEl = document.getElementById(tickerElId);
	tickerEl.setAttribute('goalStr',str);
	tickerEl.innerHTML = '';
	tickTitle();
}
function tickTitle() {
	tickerEl.innerHTML = tickerEl.getAttribute('goalStr').substr(0,(tickerEl.innerHTML.length+1));
	if (tickerEl.innerHTML.length < tickerEl.getAttribute('goalStr').length) {	
		setTimeout('tickTitle();',80);
	}
}




function checkDigit(el,defaultValue) {
	if (!defaultValue) defaultValue = 0;
	v = el.value;
	v.replace(' ','');
	v.replace('-','');
	v = Math.ceil(v*1);
	if (!v*1) v = defaultValue;
	if (v!=el.value) el.value = v;
}







///////////////// TOGGLE CONTENTS /////////////////

function toggleContents(refEl) {
	tIcon = tIcons[this.tId];
	tHeading = tHeadings[this.tId];
	tContent = tContents[this.tId];
	tContent.style.display = (tContent.style.display=='none') ? 'block' : 'none';
	tIcon.innerHTML = (tContent.style.display=='none') ? showSymbol : hideSymbol;
}

defaultToggleDisplay = '';
showFirst = false;
tDataId = 'toggleData';
tId = -1;
function initToggleContents() {
	tData = document.getElementById(tDataId);
	if (tData) {
		showSymbol = '+';
		hideSymbol = '&ndash;';
		tHeadings = new Array();
		tContents = new Array();
		tIcons = new Array();
		for (i=0;i<tData.childNodes.length;i++) {
			child = tData.childNodes[i];
			if (child.className=='toggleHeading' || child.className=='toggleIcon') {
				if (child.className=='toggleIcon') {
					tId++;
					child.tId = tId;
					tIcons[tId] = child;
					child.innerHTML = (showFirst && !tId) ? hideSymbol : showSymbol;
				} else tHeadings[tId] = child;
				child.tId = tId;
				child.style.cursor = 'pointer';
				child.title = 'Click to show/hide';
				child.onclick = toggleContents;
			} else if (child.className=='toggleContents') {
				child.style.display = (showFirst && !tId) ? '' : 'none';		
				child.tId = tId;
				tContents[tId] = child;
			}
		}
		// CHECK FOR REQUESTED ITEM VISIBILITY
		qs = location.href.split('?')[1];
		if (qs) {
			qsParts = qs.split('&');
			for(i=0;i<qsParts.length;i++) {
				part = qsParts[i].split('=');
				if (part[0]=='toggle') {
					if (t = parseInt(part[1])) {
						tId3 = 0;
						for (i=0;i<tData.childNodes.length;i++) {
							child = tData.childNodes[i];
							if (child.className=='toggleHeading') {
								tId3++;
								if (tId3==t) child.onclick();
							}
						}
					}
				}
			}
		}
		if (defaultToggleDisplay) {
			t = defaultToggleDisplay;
			tId2 = 0;
			for (i=0;i<tData.childNodes.length;i++) {
				child = tData.childNodes[i];
				if (child.className=='toggleHeading') {
					tId2++;
					if (tId2==t) child.onclick();
				}
			}	
		}
	}
	if (tDataId == 'toggleData' && document.getElementById('toggleData2')) {
		tDataId = 'toggleData2';
		initToggleContents();
	}
}


function toggleEl(elId) {
	el = document.getElementById(elId);
	el.style.display = (el.style.display=='block') ? 'none' : 'block';
}


function seeMore(elId) {
	document.getElementById(elId+'_hidden').style.display = (document.getElementById(elId+'_hidden').style.display=='inline') ? 'none' : 'inline';
	document.getElementById(elId+'_toggle').innerHTML = (document.getElementById(elId+'_hidden').style.display=='inline') ? "less &laquo;" : "more &raquo;";
	document.getElementById(elId+'_elipses').style.display = (document.getElementById(elId+'_hidden').style.display=='inline') ? "none" : "inline";
}





///////////////// NUMBER FORMATTING /////////////////
function number_format(number, decimals, dec_point, thousands_sep) {
    // http://kevin.vanzonneveld.net
    // +   original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +     bugfix by: Michael White (http://getsprink.com)
    // +     bugfix by: Benjamin Lupton
    // +     bugfix by: Allan Jensen (http://www.winternet.no)
    // +    revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +     bugfix by: Howard Yeend
    // +    revised by: Luke Smith (http://lucassmith.name)
    // +     bugfix by: Diogo Resende
    // +     bugfix by: Rival
    // +      input by: Kheang Hok Chin (http://www.distantia.ca/)
    // +   improved by: davook
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // +      input by: Jay Klehr
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // +      input by: Amir Habibi (http://www.residence-mixte.com/)
    // +     bugfix by: Brett Zamir (http://brett-zamir.me)
    // +   improved by: Theriault
    // *     example 1: number_format(1234.56);
    // *     returns 1: '1,235'
    // *     example 2: number_format(1234.56, 2, ',', ' ');
    // *     returns 2: '1 234,56'
    // *     example 3: number_format(1234.5678, 2, '.', '');
    // *     returns 3: '1234.57'
    // *     example 4: number_format(67, 2, ',', '.');
    // *     returns 4: '67,00'
    // *     example 5: number_format(1000);
    // *     returns 5: '1,000'
    // *     example 6: number_format(67.311, 2);
    // *     returns 6: '67.31'
    // *     example 7: number_format(1000.55, 1);
    // *     returns 7: '1,000.6'
    // *     example 8: number_format(67000, 5, ',', '.');
    // *     returns 8: '67.000,00000'
    // *     example 9: number_format(0.9, 0);
    // *     returns 9: '1'
    // *    example 10: number_format('1.20', 2);
    // *    returns 10: '1.20'
    // *    example 11: number_format('1.20', 4);
    // *    returns 11: '1.2000'
    // *    example 12: number_format('1.2000', 3);
    // *    returns 12: '1.200'
    var n = !isFinite(+number) ? 0 : +number, 
        prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
        sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
        dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
        s = '',
        toFixedFix = function (n, prec) {
            var k = Math.pow(10, prec);
            return '' + Math.round(n * k) / k;
        };
    // Fix for IE parseFloat(0.55).toFixed(0) = 0;
    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
    if (s[0].length > 3) {
        s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
    }
    if ((s[1] || '').length < prec) {
        s[1] = s[1] || '';
        s[1] += new Array(prec - s[1].length + 1).join('0');
    }
    return s.join(dec);
}




//////////////// ONLOAD SEQUENCE //////////////

// called when HTML loaded
pageLoaded = false;
function executeOnHTMLLoad() {
	externalLinkChecker();
	setRecommendationLinks();
	formatForWidescreen();
	initToggleContents();
	eval(loadMeUp);
}





pageLoaded = false;
onload = function() {
	pageLoaded = true;
	initCounter();
	initImageSwap();
	preloadImages();
	eval(startMeUp);
}


