//detect browser
var  Browser = {
    IE:     !!(window.attachEvent &&
      navigator.userAgent.indexOf('Opera') === -1),
    Opera:  navigator.userAgent.indexOf('Opera') > -1,
    WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,
    Gecko:  navigator.userAgent.indexOf('Gecko') > -1 &&
      navigator.userAgent.indexOf('KHTML') === -1,
    MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)
}


// attach listeners to window onload
addEvent(window,"load",menuSelect);
addEvent(window,"load",defineToggleDivs);


// Utility function to add an event listener
function addEvent(o,e,f){
	if (o.addEventListener){
		o.addEventListener(e,f,true);
		return true;
	} else if (o.attachEvent){
		return o.attachEvent("on"+e,f);
	} else {
		return false;
	}
}

//select nav item (in leftnav or in auth-signin dep on current location
function menuSelect() {
	var menuul = document.getElementById('ulnav');
	var anchors = menuul.getElementsByTagName('a');
	for (var count=0; count<anchors.length; count++) {
		if (anchors[count].href == document.location.href) {
			anchors[count].className="selected";
			break;
		}
	}
	// strip any php vars from href first
	var clochref = document.location.href;
	if (clochref.indexOf("?") > 0) {
		clochref = clochref.substring(0,clochref.indexOf("?"));
	}
	var membul = document.getElementById('signin');
	var anchors = membul.getElementsByTagName('a');
	for (var count=0; count<anchors.length; count++) {
		if (anchors[count].href == clochref) {
			anchors[count].className="selectedinsignin";
			break;
		}
	}
}

//Toggle visibility of divs under li (for FAQ and Links pages)
function defineToggleDivs() {
	var faqul = document.getElementById('faq');
	if (faqul) {
		var lis = faqul.getElementsByTagName('li');

		for (var count=0; count<lis.length; count++) {
			// Set content div for the current list item to hidden:
			var divs = lis[count].getElementsByTagName('div');
			divs[0].style.display = 'none';

			//Set onclick attribute on h3s
			var h3s = lis[count].getElementsByTagName('h3');
			if (Browser.IE) {
				h3s[0].onclick = function() {etoggle(event);};
			} else {
				h3s[0].setAttribute('onclick', 'etoggle(event)');
			}
			h3s[0].style.cursor = 'pointer';
		}
	}
}

function etoggle(e) {
	var eTarg = e.target? e.target : window.event.srcElement;
	var els = eTarg.parentNode.getElementsByTagName('div');
	els[0].style.display = (els[0].style.display != 'none' ? 'none' : '' );
}



//----------- General Form input validation -----------------
//This is pathetic... find another.

function validateForm() { //v4.0
	var i,p,q,nm,test,num,min,max,errors='',args=validateForm.arguments;

	for (i=0; i<(args.length-2); i+=3) {
		test=args[i+2];
		val=MM_findObj(args[i]);
		if (val) {
			nm=val.name;
			if ((val=val.value)!="") {
				if (test.indexOf('isEmail')!=-1) {
					p=val.indexOf('@');
					if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain a valid e-mail address.\n';
      		} else if (test!='R') {
	      		num = parseFloat(val);
					if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
					if (test.indexOf('inRange') != -1) {
						p=test.indexOf(':');
						min=test.substring(8,p); max=test.substring(p+1);
						if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
    				}
    			}
    		} else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n';
    	}
	}

	if (errors) alert('The following error(s) occurred:\n'+errors);
	document.returnVal = (errors == '');
}

function MM_findObj(n, d) { //v4.01
	var p,i,x;
	if(!d) d=document;
	if((p=n.indexOf("?"))>0&&parent.frames.length) {
		d=parent.frames[n.substring(p+1)].document;
		n=n.substring(0,p);
	}

	if(!(x=d[n])&&d.all) x=d.all[n];

	for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];

	for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);

	if(!x && d.getElementById) x=d.getElementById(n);

	return x;
}



//----------- Application Form Fees handling -----------------
var calculatedTotal=0;

function updateTotal(inputItem) {
	//check if user has to pay at all:
	var insalford = document.getElementById('salford');
	var onbenefits = document.getElementById('onbenefits');
	if (insalford.checked && onbenefits.checked) {
		calculatedTotal = 0;
	} else {
	    if (inputItem.checked == false) {   // Item was unchecked: subtract from total.
			calculatedTotal	 = calculatedTotal - 22;
		} else {   // Item was checked. Add to total.
			calculatedTotal = calculatedTotal + 22;
		}
	}

    // Return total value.
    return(calculatedTotal);
}

function enableOptions(inputItem) {
	var insalford = document.getElementById('salford');
	var onbenefits = document.getElementById('onbenefits');

	if (inputItem.value == "individual") {
		calculatedTotal = 0;
		//disable checkboxes
		for (i=0; i < inputItem.form.elements.length; i++) {
			if (inputItem.form.elements[i].name == 'module') {
				inputItem.form.elements[i].disabled = false;
			    // recalculate total value by checking which checkboxes are checked
				if (insalford.checked && onbenefits.checked) {
		    		calculatedTotal = 0;
    			} else {
	    		    if (inputItem.form.elements[i].checked) {
		    		    calculatedTotal += 22;
	    		    }
    			}
	    	}
		}

	} else if (inputItem.value == "full") {
		for (i=0; i < inputItem.form.elements.length; i++) {
			if (inputItem.form.elements[i].name == 'module') {
				inputItem.form.elements[i].disabled = true;

	    	}
		}
		if (insalford.checked && onbenefits.checked) {
			// Set total value.
			calculatedTotal = 0;
		} else {
			calculatedTotal = 100;
		}
	}
	return(calculatedTotal);
}

function checkfees(inputItem) {
	var insalford = document.getElementById('salford');
	var onbenefits = document.getElementById('onbenefits');
	var modRadio = document.getElementById('modular');
	calculatedTotal = 0;

	if (!insalford.checked || !onbenefits.checked) {
		if (modRadio.checked) {
			calculatedTotal = 100;
		} else {
			for (i=0; i < inputItem.form.elements.length; i++) {
				if (inputItem.form.elements[i].name == 'module') {
				    // recalculate total value by checking which checkboxes are checked
	    		    if (inputItem.form.elements[i].checked) {
		    		    calculatedTotal += 22;
	    		    }
		    	}
			}

		}
	}

	var mustpay = document.getElementById('mustpay');
	var feemsgdiv = document.getElementById('feemsg');
	if (calculatedTotal > 0) {
		feemsgdiv.innerHTML = "You will be invoiced for this fee upon acceptance on the course";
	} else {
		feemsgdiv.innerHTML = "As a Salfordian on benefits, you don't have to pay anything!";
	}

	return(calculatedTotal);
}

