
// ********************************************************************************************** //
// Determine Functions Relevant to Section to Initialise


// Functions to Load at Start:
jQuery(document).ready(function($) {
	
	init_PageContent();
	
});


function init_PageContent() {
	
	init_ExternalLinks();
	init_HashReturn();
	init_QuickLinks();
	init_AdScroller();
	init_PageTabs();
	
	switch (curSection)
	{
		case("home"):
			break;
		case("routes"):
			init_TableRowColours();
			init_MultiTabs();
			init_DefaultText();
			break;
		case("fares"):
			init_MultiTabs();
			init_LandbridgePopup();
			init_CabinPopup();
			init_HorzAdScroller();
			break;
		case("ships"):
			init_MultiTabs();
			init_Gallery();
			break;
		case("help"):
			init_Accordion();
			init_DefaultText();
			break;
		case("holidays"):
			init_OfferRowColours();
			init_ToggleGuarantee();
			break;
		case("sailing-update"):
			init_SailingUpdate();
			init_TableRowColours();
			break;
		default:
			init_MultiTabs();
			init_TableRowColours();
			break;
	}
		
}


// ********************************************************************************************** //
// TABBING FUNCTIONS

/*
// DYNAMIC SWAPPING OF INTERNAL CONTENT - NO LONGER USED //
function init_MainTabs() {
	
	$("ul#page-tabs").show();
	
	var hash = window.location.hash.substr(1);
	var href = $('#page-tabs li a').each(function(){
		var href = $(this).attr('href');
		if(hash==href.substr(0,href.length-4)){
			var toLoad = hash+'.html #content';
			$('#content').load(toLoad,function() {				 
				init_PageContent();
			});
		}											
	});
	
	$('#page-tabs li a').click(function(){
		setCountryDefaults($(this).parent().attr("id"));														 
		$('#page-tabs li a').removeClass('active');
		$(this).addClass('active');
		var toLoad = $(this).attr('href')+' #content';
		window.location.hash = $(this).attr('href').substr(0,$(this).attr('href').length-4);
		$('#content').load(toLoad,function() {
			init_PageContent();
		});
		return false;
	});
	
}
*/


function init_PageTabs() {
	//$("ul#page-tabs").show();
	$('#page-tabs a').click(function() {
		setCountryDefaults($(this).parent().attr("id"));
		pageTracker._link(this.href);
		return false;
	});
}

function setCountryDefaults(id) {			
	
	switch (id) {
		case("ie-gb"):
			createCookie('ifDestination','Ireland',365);
			createCookie('ifOrigin','Britain',365);
			break;
		case("gb-ie"):
			createCookie('ifDestination','Britain',365);
			createCookie('ifOrigin','Ireland',365);
			break;
		case("fr-ie"):
			createCookie('ifDestination','France',365);
			createCookie('ifOrigin','Ireland',365);
			break;
		case("ie-fr"):
			createCookie('ifDestination','Ireland',365);
			createCookie('ifOrigin','France',365);
			break;
	}
			
}


function init_MultiTabs() {
	
	// Allows multiple sets of tabs on a page
		
	$("div.tab-region").each(
		function(intIndex) {
			
			var myTabContainers = $(this).find('div.tab-panel');
			var myTabs = $(this).find("ul.tabs");
			
			myTabs.show();
			$(this).find('div.tab-panel h3').hide();
			
			var firstIn = 1; // Cookie Tab variable to prevent reading of auto-start tab clicking
			$(this).find('ul.tabs a').click(function () {
				myTabContainers.hide().filter(this.hash).show();
				$(this).parent().parent().find('a').removeClass('active');
				$(this).addClass('active');
				
				// If it's not the first tab to be click, reset the Tab cookie
				if (firstIn == 1) {
					firstIn = 0;
				} else { createCookie('ifCurTab',this.hash,365); }
				
				if (this.hash != "") { return false; };
				//return false;
			}).filter(':first').click();
			
		}
	);
	
	// Open a tab, if requested via querystring or going back to a page:
	var queryTab    = window.location.querystring["tab"];  // Get tab from querystring, if explicitly requested by referrer
	var queryAnchor = window.location.querystring["anchor"];
	var previousTab = readCookie('ifCurTab');              // Last tab clicked
	if (queryTab) {
		$('li a[@href=#'+queryTab+']').click();   // if requested, open the tab from the querystring
		if(queryAnchor) {
			$.scrollTo('#'+queryAnchor, 200, {offset: {top:-30, left:0}});
		}
	} else if (previousTab) {
		$('li a[@href='+previousTab+']').click(); // if querystring not present, open the last clicked tab
	}
	
	// Scroll to head of the panel or specific ids within sub-panels:
	$("a.tab-opener").click(function(){
		var myTab = $(this).attr("href");
		$('li a[@href='+myTab+']').click();
		if ($(this).attr("id") != "") {
			var scrollToID = "" + $(this).attr("id") + "-info";
			$.scrollTo('h2#'+scrollToID, 200, {offset: {top:-30, left:0}});
		} else {
			$.scrollTo('ul#small-tabs', 200, {offset: {top:-30, left:0}});
		}
		return false;
	});
	
}


// ********************************************************************************************** //
// Page Specific Functions

// Homepage ----------------------------------------------------------------------- //

function init_HomeSlideshow(slideshow) {
	// Slideshow ----------------------
	var flashvars = {
		datapath: "data/"+slideshow+".xml"
	};
	var params = {
		base: "flash/home/slideshow/",
		wmode: "transparent"
	};
	var attributes = {};
	swfobject.embedSWF("http://www.irishferries.com/flash/home/slideshow/slideshow.swf", "f-slideshow", "454", "257", "8", false, flashvars, params, attributes);
}
function init_HomeOffer(file) {
	// Offer Text ----------------------
	var flashvars = {};
	var params = {
		wmode: "transparent"
	};
	var attributes = {};
	swfobject.embedSWF("http://www.irishferries.com/flash/home/offers/"+file, "f-offer", "222", "257", "8", false, flashvars, params, attributes);
}
function init_HomeRoutes(file) {
	// Routes Map ----------------------
	var flashvars = {};
	var params = {
		wmode: "transparent"
	};
	var attributes = {};
	swfobject.embedSWF("http://www.irishferries.co.uk/flash/home/routes/"+file, "f-routes", "220", "222", "8", false, flashvars, params, attributes);
}
function init_HomeShips(type) {
	// Ships ----------------------
	var flashvars = {
		datapath: "data/"+type+".xml"
	};
	var params = {
		base: "flash/home/ships/",
		wmode: "transparent"
	};
	var attributes = {};
	swfobject.embedSWF("http://www.irishferries.com/flash/home/ships/ship-rotator.swf", "f-ships", "222", "222", "8", false, flashvars, params, attributes);
}
function init_AdScroller() {
	
	$('.hp-house-ads').cycle({ 
		fx:     'scrollUp',
		speed:   1000,
		timeout: 5000,
		delay:   -2000,
		pause:   1
	});
	
	$('.sb-ads').cycle({ 
		fx:     'scrollLeft',
		speed:   1000,
		timeout: 5000,
		delay:   -2000,
		pause:   1
	});
	
}



// Fares & Offers, Cruise T&C Rollout ----------------------------------------------------------------------- //
function init_CruiseToggle() {
	$('div#cruise-tandc').hide();
	$('a#show-cruise-tandc').click(function() {
		$('div#cruise-tandc').slideToggle('fast');
		return false;
	});
}

function init_LandbridgePopup() {
	$('a.fare-link').click(function() {
		var myUrl = $(this).attr("href");
		window.open( myUrl, "if3", "status=1, height=500, width=556, scrollbars=1, resizable=1" );
		return false;
	});
}

function init_CabinPopup() {
	$('a.cabin-popup').click(function() {
		var myUrl = $(this).attr("href");
		window.open( myUrl, "if4", "status=0, height=240, width=300, scrollbars=0, resizable=0" );
		return false;
	});
}

function init_HorzAdScroller() {
	
	$('.fares-ads-cycle').cycle({ 
		fx:     'scrollLeft',
		speed:   500,
		timeout: 7000,
		delay:   -2000,
		pause:   1
	});
	
}



// Ships, Rollovers ----------------------------------------------------------------------- //
function init_ShipRollovers(ship) {
	// Routes -------------------------
	var flashvars = {};
	var params = {
		wmode: "transparent"
	};
	var attributes = {};
	swfobject.embedSWF("flash/ships/"+ship+".swf", "f-shipoverview", "389", "338", "8", flashvars, params, attributes);
}

// Ships, Gallery ----------------------------------------------------------------------- //
var currentImage = null;
var previousImage = null;
var preventClick = 0;
function init_Gallery() {
	currentImage = $('#mainimage img');
	$('#thumbs a').click(function() {
		return false;
	});
	$('#thumbs a').click(function() {
		//$(this).css({ border:"3px solid #BB0900" });
		if( $(currentImage).attr("src") != $(this).attr("href") ) {
			if(preventClick == 0) {
				loadImage($(this).attr("href"),$(this).attr("title"));
				preventClick = 1;
			}
		}
		return false;
	},
		function() {
			//$(this).css({ border:"3px solid #526271" });
		}
	);
	$('#thumbs a').click(function() {
		if( $(currentImage).attr("src") != $(this).attr("href") ) {
			if(preventClick == 0) {
				loadImage($(this).attr("href"),$(this).attr("title"));
				preventClick = 1;
			}
		}
		return false;
	});
}
function loadImage(imageSrc,imageTitle) {
	previousImage = currentImage;
	var img = new Image();
	$(img).load(
		function() {
			$(img).hide();
			if (imageTitle != undefined) {
				$('p.gallery-desc').text(imageTitle).show();
			} else {
				$('p.gallery-desc').hide();
			};
			$('#mainimage').append(img);
			$(img).fadeIn('normal',function() {
				preventClick = 0;
				if(previousImage != null) {
					$(previousImage).remove();
				}
		});
	}).attr(
		{
			'src':imageSrc,
			'width':'465',
			'height':'356',
			'alt':imageTitle
		}
	);
	currentImage = img;
}


// Need Help, Directory ----------------------------------------------------------------------- //
function init_Accordion() {
  $('#directory ul ul').hide();
  $('#directory ul li a').click(
    function() {
			$('#directory ul li a').removeClass('active');
			$(this).parent().find('a:first').addClass('active');
      var checkElement = $(this).next();
      if((checkElement.is('ul')) && (checkElement.is(':visible'))) {
				$('#directory ul ul:visible').slideUp('normal');
        return false;
        }
      if((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
        $('#directory ul ul:visible').slideUp('normal');
        checkElement.slideDown('normal');
        return false;
        }
      }
    );
		$('#directory ul li a').click(function() { return false; });
  }


// Holidays, Why Book Text Link ----------------------------------------------------------------------- //
function init_ToggleGuarantee() {
	$('div#guarantee').hide();
	$('a[@href="#guarantee"]').click(function() {
		$('div#guarantee').slideToggle('slow');
		return false;
	});
}


// Sailing Update - Additional Info ----------------------------------------------------------------------- //
function init_SailingUpdate() {
	$('div#additional-info').hide();
	$('a[@href="#additional-info"]').click(function() {
		$('div#additional-info').slideToggle('slow');
		return false;
	});
}



// ********************************************************************************************** //
// Miscellaneous Functions

function init_ExternalLinks() { $('a[@rel="ext"]').attr('target', 'if2'); }
function init_HashReturn()    { $('a[@href=#]').click(function(){ return false; }); }

// Table Row Colours:
function init_TableRowColours() {
	$('table.alternate tr:odd').addClass('odd');
	$('table.alternate tr:even').addClass('even');
}

// Table Row Colours:
function init_OfferRowColours() {
	$('div.offer:odd').addClass('odd');
	$('div.offer:even').addClass('even');
}

// Remove default text:
function init_DefaultText() {
	$(".defaultText").focus(function(srcc) {
			if ($(this).val() == $(this)[0].title) {
					$(this).removeClass("defaultTextActive");
					$(this).val("");
			}
	});
	$(".defaultText").blur(function() {
			if ($(this).val() == "") {
					$(this).addClass("defaultTextActive");
					$(this).val($(this)[0].title);
			}
	});
	$("input.defaultText").blur();
}

// Reload page based on dropdown selection
function changeLocation(menuObj) {
	var i = menuObj.selectedIndex;
	if(i >= 0) {
		window.location = menuObj.options[i].value;
	}
}

// Privacy Policy Popup
function init_PrivacyPopup() {
	$('a.privacy-link').click(function() {
		var myUrl = $(this).attr("href");
		window.open( myUrl, "if3", "status=1, height=500, width=556, scrollbars=1, resizable=1" );
		return false;
	});
}


// Quick Links drop-down:
function init_QuickLinks() {
	/*$('li.subnav-ql a').mouseover(function() {
		$('div.quick-links').slideToggle('fast');
		return false;
	});*/
	$('li.subnav-ql a').click(function() {
		$('div.quick-links').slideToggle('fast');
		return false;
	});
	$('p.ql-close a').click(function() {
		$('div.quick-links').slideUp('fast');
		return false;
	});
	$('div.quick-links').hover(function() {},
		function() { $('div.quick-links').slideUp('fast');
	});
	$('div.ql-section a').click(function() {
		setCountryDefaults($(this).parent().attr("class"));
		if ($(this).attr("rel") == "ext") {
			window.open($(this).attr("href"),'if2');
		} else {
			window.location = $(this).attr("href");
		}
		return false;
	});
}


// ********************************************************************************************** //
// Cookie Management / Courtesy QuirksMode

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 var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}
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;
}
function eraseCookie(name) {
	createCookie(name,"",-1);
}



// ********************************************************************************************** //
// Read Query String / http://seattlesoftware.wordpress.com/2008/01/16/javascript-query-string/
// Usage: var val = window.location.querystring["tab"];

location.querystring = (function() {
    var result = {};
    var querystring = location.search;
    if (!querystring)
        return result;
    var pairs = querystring.substring(1).split("&");   
    var splitPair;
    for (var i = 0; i < pairs.length; i++) {   
        splitPair = pairs[i].split("=");   
        result[splitPair[0]] = splitPair[1];   
    }
    return result;   
})();