/************************************************************** 
 * Accessible menu
 * 
 * 
 **************************************************************/
sfHover = function() {
	var sfEls = document.getElementById("mainnav").getElementsByTagName("LI");
	for (var i=0; i<sfEls.length; i++) {
		sfEls[i].onmouseover=function() {
			this.className+=(this.className.length>0? " ": "") + "sfhover";
		}
		sfEls[i].onmouseout=function() {
			this.className=this.className.replace(new RegExp("( ?|^)sfhover\\b"), "");
		}
	}
}
mcAccessible = function() {
	var mcEls = document.getElementById("mainnav").getElementsByTagName("A");
	for (var i=0; i<mcEls.length; i++) {
		mcEls[i].onfocus=function() {
			this.className+=(this.className.length>0? " ": "") + "sffocus"; //a:focus
			this.parentNode.className+=(this.parentNode.className.length>0? " ": "") + "sfhover"; //li < a:focus
			if(this.parentNode.parentNode.parentNode.nodeName == "LI") {
				this.parentNode.parentNode.parentNode.className+=(this.parentNode.parentNode.parentNode.className.length>0? " ": "") + "sfhover"; //li < ul < li < a:focus
				if(this.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "LI") {
					this.parentNode.parentNode.parentNode.parentNode.parentNode.className+=(this.parentNode.parentNode.parentNode.parentNode.parentNode.className.length>0? " ": "") + "sfhover"; //li < ul < li < ul < li < a:focus
				}
			}
		}
		mcEls[i].onblur=function() {
			this.className=this.className.replace(new RegExp("( ?|^)sffocus\\b"), "");
			this.parentNode.className=this.parentNode.className.replace(new RegExp("( ?|^)sfhover\\b"), "");
			if(this.parentNode.parentNode.parentNode.nodeName == "LI") {
				this.parentNode.parentNode.parentNode.className=this.parentNode.parentNode.parentNode.className.replace(new RegExp("( ?|^)sfhover\\b"), "");
				if(this.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "LI") {
					this.parentNode.parentNode.parentNode.parentNode.parentNode.className=this.parentNode.parentNode.parentNode.parentNode.parentNode.className.replace(new RegExp("( ?|^)sfhover\\b"), "");
				}
			}
		}
	}
}

// only ie needs the sfHover script. all need the accessibility script...
// thanks http://www.brothercake.com/site/resources/scripts/onload/
if(window.addEventListener) window.addEventListener('load', mcAccessible, false); // gecko, safari, konqueror and standard
else if(document.addEventListener) document.addEventListener('load', mcAccessible, false); // opera 7
else if(window.attachEvent) { // win/ie
	window.attachEvent('onload', sfHover);
	window.attachEvent('onload', mcAccessible);
} else { // mac/ie5
	if(typeof window.onload == 'function') {
		var existing = onload;
		window.onload = function() {
			existing();
			sfHover();
			mcAccessible();
		}
	} else {
		window.onload = function() {
			sfHover();
			mcAccessible();
		}
	}
}

/************************************************************** 
 * Clear Default Text: functions for clearing and replacing default text in
 * <input> elements.
 * by Ross Shannon, http://www.yourhtmlsource.com/
 **************************************************************/

DOMAssistant.DOMReady(init); 

function init() {
    var formInputs = document.getElementsByTagName('input');
    for (var i = 0; i < formInputs.length; i++) {
        var theInput = formInputs[i];
        
        if (theInput.type == 'text' && (theInput.className.match(/\bcleardefault\b/) || theInput.id.match(/\SearchForm_SearchForm_Search\b/) || theInput.id.match(/\SignupForm_AfterContent_Email\b/) || theInput.id.match(/\SignupForm_AfterContent_Surname\b/) || theInput.id.match(/\SignupForm_AfterContent_FirstName\b/))) {  
            /* Add event handlers */          
            addEvent(theInput, 'focus', clearDefaultText, false);
            addEvent(theInput, 'blur', replaceDefaultText, false);
            
            /* Save the current value */
            if (theInput.value !== '') {
                theInput.defaultText = theInput.value;
            }
        }
    }
}

function clearDefaultText(e) {
    var target = window.event ? window.event.srcElement : e ? e.target : null;
    if (!target) return;

    if (target.value == target.defaultText) {
        target.value = '';
    }
}

function replaceDefaultText(e) {
    var target = window.event ? window.event.srcElement : e ? e.target : null;
    if (!target) return;
    
    if (target.value == '' && target.defaultText) {
        target.value = target.defaultText;
    }
}

/************************************************************** 
 * Cross-browser event handling, by Scott Andrew
 **************************************************************/
function addEvent(element, eventType, lamdaFunction, useCapture) {
    if (element.addEventListener) {
        element.addEventListener(eventType, lamdaFunction, useCapture);
        return true;
    } else if (element.attachEvent) {
        var r = element.attachEvent('on' + eventType, lamdaFunction);
        return r;
    } else {
        return false;
    }
}



/************************************************************** 
 * Validate subscribe fields
 **************************************************************/

function validateForm(objElem) {

	if ($$('SignupForm_AfterContent_FirstName').value == "First Name:" || $$('SignupForm_AfterContent_FirstName').value == "" ) {
		$$('SignupForm_AfterContent_FirstName').addClass("validation-error");
//		alert('fn');
		return false;
	}

	if ($$('SignupForm_AfterContent_Surname').value == "Surname:" || $$('SignupForm_AfterContent_Surname').value == "" ) {
		$$('SignupForm_AfterContent_Surname').addClass("validation-error");
//		alert('sn');
		return false;
	}

	if ($$('SignupForm_AfterContent_Email').value == "Email:" || $$('SignupForm_AfterContent_Email').value == "" ) {
		$$('SignupForm_AfterContent_Email').addClass("validation-error");
//		alert('em');
		return false;
	}
	
}

// removes the 'error' class on focus
function unValidateField(objElem) {
	
	if ($(objElem).hasClass("validation-error")) {
		$(objElem).removeClass("validation-error");
	}
}

// checks for defaults and errors if found. Email is handled by PHP
function validateField(objElem) {
	
	
	if (objElem.value == "First Name:" || objElem.value == "Surname:" || objElem.value == "Email:" || objElem.value == "") {
		$(objElem).addClass("validation-error");
		objElem.value="";
		return false;
	}
}

// fired on load for Subscribe page.
function signupForm() {

	//remove labels from view
	$$("SignupForm_AfterContent").elmsByTag("label").each(function () {
		this.style.display="none";	
	});

	//add in labels to input boxes
	if($$('SignupForm_AfterContent_FirstName').value == "") { $$('SignupForm_AfterContent_FirstName').value = "First Name:"; }
	if($$('SignupForm_AfterContent_Surname').value == "") { $$('SignupForm_AfterContent_Surname').value = "Surname:"; }
	if($$('SignupForm_AfterContent_Email').value == "") { $$('SignupForm_AfterContent_Email').value = "Email:"; }

	//add validation to inputs
	$$("SignupForm_AfterContent").elmsByTag("input").each(function () {
		$(this).addClass("more-space");
		$$(this).addEvent("blur", function () {validateField(this);}); 
		$$(this).addEvent("focus", function () {unValidateField(this);}); 
	});

	//add validation to form submit
	$$("SignupForm_AfterContent").addEvent("submit", function () {return validateForm(this);}); 


	init();

}

/************************************************************** 
 * Zebra Striping and mouseover rows for tables.
 * by Marko Dugonjic, http://www.maratz.com/blog/
 **************************************************************/
var stripe = function() {
    if (!document.getElementsByTagName || !document.createTextNode) return;
    var even = true;
    var trs = document.getElementsByTagName('tr');      
    for (var i = 0; i < trs.length; i++) {
        if (trs[i].parentNode.nodeName == 'TBODY') {
            trs[i].onmouseover = function(){
                this.className += (!this.className) ? 'ruled' : ' ruled';
            }
            trs[i].onmouseout = function(){
                this.className = this.className.replace(' ruled', '').replace('ruled', '');
            }        
            if(even)
            trs[i].className += (!trs[i].className) ? 'even' : ' even';        
            even = !even;
        }
    }
}
DOMAssistant.DOMReady(stripe);

