// onload events
function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			if (oldonload) {
				oldonload();
			}
			func();
		}
	}
}


// create cookies
function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}


// delete cookies
function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}


// insertAfter
function insertAfter(newElement,targetElement) {
	var parent = targetElement.parentNode;
	if (parent.lastChild == targetElement) {
		parent.appendChild(newElement);
	} else {
		parent.insertBefore(newElement,targetElement.nextSibling);
	}
}


// popup windows
function popupWin() {
	if (!document.getElementsByTagName) return false;
	var links=document.getElementsByTagName("a");
	for (var i=0; i < links.length; i++) {
		if (links[i].className.match("popup")) {
			links[i].onclick=function() {	
				window.open(this.href, "", "top=40,left=40,width=600,height=625,resizable=yes,scrollbars=yes");
				return false;
			}
		}
		if (links[i].className.match("popup_small")) {
			links[i].onclick=function() {	
				window.open(this.href, "", "top=40,left=40,width=400,height=300,resizable=yes,scrollbars=yes");
				return false;
			}
		}
		if (links[i].className.match("popup_screencast")) {
			links[i].onclick=function() {	
				window.open(this.href, "", "top=40,left=40,width=722,height=420,scrollbars=no,resizable=no,toolbar=no,location=no,statusbar=no,menubar=no");
				return false;
			}
		}
	}
}


// session-based font-resizing
var prefsLoaded = false;
var defaultFontSize = 69;
var currentFontSize = defaultFontSize;

function revertStyles(){
	currentFontSize = defaultFontSize;
	changeFontSize(0);
}

function changeFontSize(sizeDifference){
	currentFontSize = parseInt(currentFontSize) + parseInt(sizeDifference * 3);
	if(currentFontSize > 100){
		currentFontSize = 100;
	}else if(currentFontSize < 60){
		currentFontSize = 60;
	}
	setFontSize(currentFontSize);
}

function setFontSize(fontSize){
	document.body.style.fontSize = fontSize + '%';
}

function setUserOptions(){
	if(!prefsLoaded){
		cookie = readCookie("fontSize");
		currentFontSize = cookie ? cookie : defaultFontSize;
		setFontSize(currentFontSize);		
		prefsLoaded = true;
	}
}

function saveSettings() {
	createCookie("fontSize", currentFontSize, 365);
}

window.onunload = saveSettings;


// YUI tooltips
YAHOO.namespace("scoop.tips");

function toolTips() {
	var contextElements = [];
	
	var tips = YAHOO.util.Dom.getElementsByClassName("tooltip");
	for (var i=0; i < tips.length; i++) {
		var thisTip = tips[i];
		thisTip.id = "tooltip_" + i; 
		contextElements[contextElements.length] = thisTip.id;
	}

	YAHOO.scoop.tips.tooltip = new YAHOO.widget.Tooltip("tooltip", {
		context: contextElements,
		effect:{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.15},
		showDelay: 600,
		hideDelay: 600,
		autodismissdelay: 60000
	} );
}


// YUI form validation. See http://blog.jc21.com/2007-02-05/yui-unobstrusive-javascript-validation/
String.prototype.trim=function(){return this.replace(/^\s*|\s*$/g,'');};String.prototype.ltrim=function(){return this.replace(/^\s*/g,'');};String.prototype.rtrim=function(){return this.replace(/\s*$/g,'');};function FIC_checkForm(e){var errs=new Array();if(typeof(e)=="string"){e=xGetElementById(e);if(!e){return true;}}var elm=e;if(!e.nodeName){elm=(e.srcElement)?e.srcElement:e.target;}if(elm.nodeName.toLowerCase()!='form'){elm=searchUp(elm,'form');}var all_valid=true;var f_in=elm.getElementsByTagName('input');var f_sl=elm.getElementsByTagName('select');var f_ta=elm.getElementsByTagName('textarea');for(i=0;i<f_in.length;i++){if(f_in[i].type.toLowerCase()!='submit'&&f_in[i].type.toLowerCase()!='button'&&f_in[i].type.toLowerCase()!='hidden'){if(isVisible(f_in[i])){var cname=' '+f_in[i].className.replace(/^\s*|\s*$/g,'')+' ';cname=cname.toLowerCase();var inv=f_in[i].value.trim();var t=f_in[i].type.toLowerCase();var cext='';if(t=='text'||t=='password'){var valid=FIC_checkField(cname,f_in[i]);}else if(t=='radio'||t=='checkbox'){var valid=FIC_checkRadCbx(cname,f_in[i],f_in);cext='-cr';}else{var valid=true;}if(valid){removeClassName(f_in[i],'validation-failed'+cext);addClassName(f_in[i],'validation-passed'+cext);}else{removeClassName(f_in[i],'validation-passed'+cext);addClassName(f_in[i],'validation-failed'+cext);if(f_in[i].getAttribute('title')){errs[errs.length]=f_in[i].getAttribute('title');}all_valid=false;}}}}for(i=0;i<f_ta.length;i++){if(isVisible(f_ta[i])){var cname=' '+f_ta[i].className.replace(/^\s*|\s*$/g,'')+' ';cname=cname.toLowerCase();var valid=FIC_checkField(cname,f_ta[i]);if(valid){removeClassName(f_ta[i],'validation-failed');addClassName(f_ta[i],'validation-passed');}else{removeClassName(f_ta[i],'validation-passed');addClassName(f_ta[i],'validation-failed');if(f_ta[i].getAttribute('title')){errs[errs.length]=f_ta[i].getAttribute('title');}all_valid=false;}}}for(i=0;i<f_sl.length;i++){if(isVisible(f_sl[i])){var cname=' '+f_sl[i].className.replace(/^\s*|\s*$/g,'')+' ';cname=cname.toLowerCase();var valid=FIC_checkSel(cname,f_sl[i]);if(valid){removeClassName(f_sl[i],'validation-failed-sel');addClassName(f_sl[i],'validation-passed-sel');}else{removeClassName(f_sl[i],'validation-passed-sel');addClassName(f_sl[i],'validation-failed-sel');if(f_sl[i].getAttribute('title')){errs[errs.length]=f_sl[i].getAttribute('title');}all_valid=false;}}}if(!all_valid){if(errs.length>0){alert("We have found the following error(s):\n\n  * "+errs.join("\n  * ")+"\n\nPlease check the fields and try again");}else{alert('Some required values are not correct. Please check the items in red.');}YAHOO.util.Event.stopEvent(e);}return all_valid;};function FIC_checkField(c,e){var valid=true;var t=e.value.trim();if(c.indexOf(' required ')!=-1&&t.length==0){valid=false;}if(c.indexOf(' required ')!=-1){var m=e.getAttribute('minlength');if(m&&Math.abs(m)>0){if(e.value.length<Math.abs(m)){valid=false;}}}if(c.indexOf(' validate-number ')!=-1&&isNaN(t)&&t.match(/[^\d]/)){valid=false;}else if(c.indexOf(' validate-digits ')!=-1&&t.replace(/ /,'').match(/[^\d]/)){valid=false;}else if(c.indexOf(' validate-alpha ')!=-1&&!t.match(/^[a-zA-Z]+$/)){valid=false;}else if(c.indexOf(' validate-alphanum ')!=-1&&t.match(/\W/)){valid=false;}else if(c.indexOf(' validate-date ')!=-1){var d=new date(t);if(isNaN(d)){valid=false;}}else if(c.indexOf(' validate-email ')!=-1&&!t.match(/\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/)){valid=false;if(c.indexOf(' required ')==-1&&t.length==0){valid=true;}}else if(c.indexOf(' validate-url ')!=-1&&!t.match(/^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i)){valid=false;}else if(c.indexOf(' validate-date-au ')!=-1&&!t.match(/^(\d{2})\/(\d{2})\/(\d{4})$/)){valid=false;}else if(c.indexOf(' validate-currency-dollar ')!=-1&&!t.match(/^\$?\-?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/)){valid=false;}return valid;};function FIC_checkRadCbx(c,e,f){var valid=true;if(c.indexOf(' validate-one-required ')!=-1){valid=false;for(var i=0;i<f.length;i++){if(f[i].name.toLowerCase()==e.name.toLowerCase()&&f[i].checked){valid=true;break;}}}return valid;};function FIC_checkSel(c,e){var valid=true;if(c.indexOf(' validate-not-first ')!=-1&&e.selectedIndex==0){valid=false;}else if(c.indexOf(' validate-not-empty ')!=-1&&e.options[e.selectedIndex].value.length==0){valid=false;}return valid;};function addClassName(e,t){if(typeof e=="string"){e=xGetElementById(e);}var ec=' '+e.className.replace(/^\s*|\s*$/g,'')+' ';var nc=ec;t=t.replace(/^\s*|\s*$/g,'');if(ec.indexOf(' '+t+' ')==-1){nc=ec+t;}e.className=nc.replace(/^\s*|\s*$/g,'');return true;};function removeClassName(e,t){if(typeof e=="string"){e=xGetElementById(e);}var ec=' '+e.className.replace(/^\s*|\s*$/g,'')+' ';var nc=ec;t=t.replace(/^\s*|\s*$/g,'');if(ec.indexOf(' '+t+' ')!=-1){nc=ec.replace(' '+t.replace(/^\s*|\s*$/g,'')+' ',' ');}e.className=nc.replace(/^\s*|\s*$/g,'');return true;};function attachToForms(e){var frms=document.getElementsByTagName('form');for(var i=0;i<frms.length;i++){YAHOO.util.Event.addListener(frms[i],"submit",FIC_checkForm);}};function isVisible(e){if(typeof e=="string"){e=xGetElementById(e);}while(e.nodeName.toLowerCase()!='body'&&e.style.display.toLowerCase()!='none'&&e.style.visibility.toLowerCase()!='hidden'){e=e.parentNode;}if(e.nodeName.toLowerCase()=='body'){return true;}else{return false;}};YAHOO.util.Event.addListener(window,"load",attachToForms);


// onload events
addLoadEvent(popupWin);
addLoadEvent(setUserOptions);
addLoadEvent(toolTips);