
// ********************************************************************************************** //
// Clear default text in forms;
// via http://www.yourhtmlsource.com/forms/clearingdefaulttext.html

function init_ClearDefaultText() {

    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/)) {  
            /* 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;
    }
}

// ********************************************************************************************** //
// HTML Strict External Links Script, from:
// via http://comox.textdrive.com/pipermail/wp-hackers/2005-October/002937.html
// & via http://www.sitepoint.com/article/standards-compliant-world/3

function init_ExternalLinks() {
    if(!document.getElementsByTagName) return;
    var anchors = document.getElementsByTagName("a");
    for(var i=0; i<anchors.length; i++) {
        var anchor = anchors[i];
        if(anchor.getAttribute("href") && anchor.getAttribute("rel") == "ext") {
            //anchor.onclick = function(){window.open(anchor.getAttribute("href"));return false;};
						anchor.target = "_blank";
        }
    }
}


// ********************************************************************************************** //
// Determine Functions Relevant to Section to Initialise


// Functions to Load at Start:
$(function(){
					 
	init_MainNav_DropDowns();
	
	switch (curSection) {
		
		case("home"):
			init_PageJumper();
			break;
			
		case("course"):
			init_LargeTabs();
			init_TableRowColours();
			break;
			
		case("enrol"):
			init_TableRowColours();
			init_AddressDetails();
			init_EnrolForm();
			break;
			
		case("distancelearning"):
			init_DistanceLearningForm();
			break;
			
		case("events"):
			init_EventDisplay();
			break;
			
		case("lecture"):
			init_TableRowColours();
			break;
		
		case("locations"):
			init_AddressDetails();
			break;
		
		case("contact"):
			init_GMap_Dublin_Northumberland();
			break;
		
	}
	
});



// ********************************************************************************************** //
// Specific Functions


// Large Course-style Tabs:
function init_LargeTabs() {
	
	var tabContainers = $('div.tabs > div');
	
	$('div.tabs ul.tabnav-large').show();
	$('div.tabs h3').hide();
	
	$('div.tabs ul.tabnav-large a').click(function () {
		tabContainers.hide().filter(this.hash).show();
		$('div.tabs ul.tabnav-large a').removeClass('active');
		$(this).addClass('active');
		return false;
	}).filter(':first').click();
	
	$('div.tabs p.next-content a').click(function () {
		$.scrollTo('ul.tabnav-large', 200, {offset: {top:-30, left:0}});
		$('div.tabs ul.tabnav-large a[@href*='+ this.hash +']').click();
		return false;
	});
		
}

function init_AddressDetails() {
	
	var branches = $('div.branch');
	
	branches.hide();
	
	$('div#locations ul.region a').click(function () {
		$.scrollTo('div#locations', 200, {offset: {top:-50, left:0}});
		branches.hide().filter(this.hash).show();
		return false;
	});
	
	// Show All Button Toggle:
	var locToggle = 0;
	$('a#showall').click(function () {
		if (locToggle == 0) {
			branches.show();
			$(this).html("Hide All &raquo;");
			locToggle = 1;
		} else {
			branches.hide();
			$(this).html("Show All &raquo;");
			locToggle = 0;
		};
		return false;
	});
	
}


// Table Row Colours:
function init_TableRowColours() {
	$('table.alternate tr:odd').addClass('odd');
	$('table.alternate tr:even').addClass('even');
}


// Div swapper for Events page:
function init_EventDisplay() {
	
	var events = $('div.event');
	
	events.hide().filter(":first").show();
	
	$('div.event-summary a').click(function () {
		$.scrollTo('div.col2-main', 200, {offset: {top:-100, left:0}});
		events.hide().filter(this.hash).show();
		return false;
	});
	
}


//Smooth Anchor Scrolling
function init_SmoothAnchorScroll() {
	
	$('.smooth-scroll').click(function(){
		$.scrollTo(this.hash, 400, {offset: {top:-50, left:0}});
	});

}


// Drop Down Menu Animation:
function init_MainNav_DropDowns() {
	$("div.navigation > ul").superfish({
		animation	: { height:"show" },
		speed			: "fast",
		delay			: 400
	});
}


// Select box for url jumping:
function init_PageJumper() {
	$("form#page-selector input").click(function(){
		var course = $("form#page-selector select").val();
		window.location.href = course;
	});
}


// Date Picker:
function init_DatePicker() {
	
	$(".dateinput").datepicker({
		dateFormat: 'dd/mm/yy'
	});
	
}

// Google Maps:
function init_GMap_Dublin_Northumberland() {
	
	jQuery(function($){
					
		$('#map').css({ border:"1px solid #489ED6", width:"480px", height:"350px" });
		
		if (GBrowserIsCompatible()) {
			
			//Basic Setup:
			var map = new GMap2(document.getElementById("map"));
			map.setCenter(new GLatLng(53.33450,-6.23720), 13);
			
			// Controls:
			map.addControl(new GSmallMapControl());
			map.addControl(new GMapTypeControl());
			map.addControl(new GOverviewMapControl());
			
			// Marker:
			function createMarker(point,iconColor,html) {
				var baseIcon = new GIcon(G_DEFAULT_ICON);
				baseIcon.image = "images/utility/mapmarkers/marker-"+iconColor+".png";
				var marker = new GMarker(point,{icon:baseIcon});
					GEvent.addListener(marker, "click", function() {
						marker.openInfoWindowHtml(html);
				});
				return marker;
			}
			
			var point = new GLatLng(53.33450,-6.23720);
			var marker = createMarker(point,'blue','<p><strong>The School of Philospohy</strong><br>47/49 Northumberland Road, Ballsbridge, Dublin 4, Ireland.</p>');
			map.addOverlay(marker);
			
		}
		
	});
	
	$(document.body).unload(function() {
		if (GBrowserIsCompatible()) {
			GUnload();
		}
	});
	
}

// ===============================================================================================================================
// Enrol Form:
function init_EnrolForm() {

	$('p#javascript-warning').hide();
	$('#fmEnrol').show();
	$('#ref-specify').hide();
	
	if (checkNI($('#slcLocation').val()) == false) {
		$('#currency').hide();
	}
	
	$('#fmEnrol').submit(function() {
		
		var abort = 0;
		
		$('.required-text').remove();
		$('input.required').css({borderColor:"#A5ACB2"});
		$('select.required').css({borderColor:"#A5ACB2"});
		
		$('input.required').each(function(){
			if ($(this).val() == "") {
				
				var myMessage = ""
				
				switch(this.name)
				{
				case "txtName":
					myMessage = "Please enter your name";
					break;
				case "txtAddrNo":
					myMessage = "Please enter your house name/number";
					break;
				case "txtAddr1":
					myMessage = "Please enter the first line of your address";
					break;
				case "txtAddrTown":
					myMessage = "Please enter your town";
					break;
				case "txtAddrCounty":
					myMessage = "Please enter your county";
					break;
				case "txtEmail":
					myMessage = "Please enter a valid email address";
					break;
				case "txtPhone":
					myMessage = "Please enter your phone number";
					break;
				}
				
				$(this).css({borderColor:"#BF3030"}).after("<span class='required-text'>" + myMessage + "</span>");
				abort = 1;
			}
			
		});
		
		$('select.required').each(function(){
			if ($(this).val() == "Select...") {
				
				var myMessage = ""
				
				switch(this.name)
				{
				case "slcDate":
					myMessage = "Please enter the term you wish to enrol";
					break;
				case "slcLocation":
					myMessage = "Please enter the venue you wish to attend";
					break;
				}
				
				$(this).css({borderColor:"#BF3030"}).after("<span class='required-text'>" + myMessage + "</span>");
				abort = 1;
			}
			
		});
		
		if ($("#slcRef").val() == "Other") {
			var referred = $("#txtRef").val();
		} else {
			var referred = $("#slcRef").val();
		}
		
		if (abort == 1) {
			return false;
		} else {
			submitForm(referred);
		}
		
	});
	
	
	$("#slcRef").change(function() {
		if ($(this).val() == "Other") {
			$('#ref-specify').show();
		} else {
			$('#ref-specify').hide();
		}
	});
	
	
	$("#slcLocation").change(function() {
		
		if (checkNI($(this).val()) == true) {
			$('#currency').show();
			$("#slcCurrency").val("Sterling (110 GBP)");
			$("#slcCurrency").change();
		} else {
			$('#currency').hide();
			$("#slcCurrency").val("Euros (150 EUR)");
			$("#slcCurrency").change();
		}
	});
	
	function checkNI(a) {
		var flagged = false;
		var ulsterTowns = new Array("Belfast","Enniskillen","L'Derry");
		for (var i = 0; i < ulsterTowns.length; i++) {
			if (ulsterTowns[i] == a) {
				flagged = true;
			}
		}
		return (flagged);
	}
	
	
	$("#slcCurrency").change(function() {
		if ($(this).val() == "Sterling (110 GBP)") {
			$('#currency_code').val("GBP");
			$('#amount').val("110.00");
		} else {
			$('#currency_code').val("EUR");
			$('#amount').val("150.00");
		}
	});
	
	
}


function submitForm(referred) {

	// Add the details to the 2 PayPal option inputs and submit the form:
	
	$('#os0').val(
									$('#txtName').val() + ", " +
		"Address: " + $('#txtAddrNo').val() + ", " +
									$('#txtAddr1').val() + ", " +
									$('#txtAddr2').val() + ", " +
									$('#txtAddrTown').val() + ", " +
									$('#txtAddrCounty').val() + ", " +
									$('#txtAddrPC').val() + ", " +
		"Email: " +   $('#txtEmail').val() + ", " +
		"Phone: " +   $('#txtPhone').val()
	);
	
	$('#os1').val(
		"Venue: " +        $('#slcLocation').val() + ", " +
		"Term: " +         $('#slcDate').val() + ", " +
		"Amount Paid: " +  $('#slcCurrency').val() + ", " +
		"Referred by: " +  referred
	);
	
	return true;
	
}



// ===============================================================================================================================
// Distance Learning Form:
function init_DistanceLearningForm() {

	$('p#javascript-warning').hide();
	$('#fmDistanceLearning').show();
	$('#ref-specify').hide();
	
	$('#fmDistanceLearning').submit(function() {
		
		var abort = 0;
		
		$('.required-text').remove();
		$('input.required').css({borderColor:"#A5ACB2"});
		$('select.required').css({borderColor:"#A5ACB2"});
		
		$('input.required').each(function(){
			if ($(this).val() == "") {
				
				var myMessage = ""
				
				switch(this.name)
				{
				case "txtName":
					myMessage = "Please enter your name";
					break;
				case "txtAddrNo":
					myMessage = "Please enter your house name/number";
					break;
				case "txtAddr1":
					myMessage = "Please enter the first line of your address";
					break;
				case "txtAddrTown":
					myMessage = "Please enter your town";
					break;
				case "txtAddrCounty":
					myMessage = "Please enter your county";
					break;
				case "txtEmail":
					myMessage = "Please enter a valid email address";
					break;
				case "txtPhone":
					myMessage = "Please enter your phone number";
					break;
				}
				
				$(this).css({borderColor:"#BF3030"}).after("<span class='required-text'>" + myMessage + "</span>");
				abort = 1;
			}
			
		});
		
		$('select.required').each(function(){
			if ($(this).val() == "Select...") {
				
				var myMessage = ""
				
				switch(this.name)
				{
				case "slcDate":
					myMessage = "Please enter the term you wish to enrol";
					break;
				}
				
				$(this).css({borderColor:"#BF3030"}).after("<span class='required-text'>" + myMessage + "</span>");
				abort = 1;
			}
			
		});
		
		if ($("#slcRef").val() == "Other") {
			var referred = $("#txtRef").val();
		} else {
			var referred = $("#slcRef").val();
		}
		
		if (abort == 1) {
			return false;
		} else {
			submitDistanceLearningForm(referred);
		}
		
	});
	
	
	$("#slcRef").change(function() {
		if ($(this).val() == "Other") {
			$('#ref-specify').show();
		} else {
			$('#ref-specify').hide();
		}
	});
	
}


function submitDistanceLearningForm(referred) {

	// Add the details to the 2 PayPal option inputs and submit the form:
	
	$('#os0').val(
									$('#txtName').val() + ", " +
		"Address: " + $('#txtAddrNo').val() + ", " +
									$('#txtAddr1').val() + ", " +
									$('#txtAddr2').val() + ", " +
									$('#txtAddrTown').val() + ", " +
									$('#txtAddrCounty').val() + ", " +
									$('#txtAddrPC').val() + ", " +
		"Email: " +   $('#txtEmail').val() + ", " +
		"Phone: " +   $('#txtPhone').val()
	);
	
	$('#os1').val(
		"Term: " +         $('#slcDate').val() + ", " +
		"Amount Paid: " +  $('#amount').val() + ", " +
		"Referred by: " +  referred
	);
	
	return true;
	
}