//url, window: 'same', 'popup' or 'window'
function openDivLink(url, windowOrPopup, parameters){
	//work around double-window on a href click in a clickable div
	var nodeName = "invalidTag";
	document.onclick=function(e){
		e=e?e:event;var s,g=e.target;g=g?g:e.srcElement;
		nodeName = g.parentNode.tagName.toLowerCase();
		doWindowAction(url, windowOrPopup, nodeName, parameters);
		//remove event listener
		document.onclick = null;
	}
}

function doWindowAction(url, windowOrPopup, nodeName, parameters, height, width, positionFromTop, positionFromLeft){
	if (nodeName != "a" && nodeName != "invalidTag"){
	var fromTop = 240;//eval((screen.availHeight/2)-(height/2));
	var fromLeft = 340;//eval((screen.availWidth/2)-(width/2));
		switch (windowOrPopup) {
			case 'same': { 
				window.location.href = url;
				break 
			}
			case 'popup': {
				if (parameters.indexOf('status') == -1){
					parameters = parameters + ",status=no";
				}
				if (parameters.indexOf('height') == -1){
					parameters = parameters + ",height=" + height;
				}
				if (parameters.indexOf('width') == -1){
					parameters = parameters + ",width=" + width;
				}
				var popupWindow = window.open(url, nodeName, parameters, fromTop, fromLeft); //parameters
				popupWindow.moveTo(fromTop,fromLeft);
				break 
			}
			case 'window': { 
				window.open(url, nodeName);
				break 
			}
			default: {
				window.open(url);
				break
			}
		}
	}
}

function setPageTitle(newTitle, replaceExisting){
	//add functionality to choose between prepending or replacing title
	document.title = "eircom net | " + newTitle + " - " + document.title;
}

function applyHighlighting(element, setHighlight){
	if (setHighlight){
		if (element.className.indexOf('highlight') == -1 && element.className){
				element.className = element.className + ' highlight';
		} else if (element.className.indexOf('highlight') == -1) {
			element.className = 'highlight';
		}
		if (element.type == "checkbox" || element.type == "radio"){
			try{
				checkboxElement = document.getElementById(element.name+'Lable');
				if (checkboxElement.className.indexOf('highlight') == -1 && checkboxElement.className){
					checkboxElement.className = checkboxElement.className + ' highlight';
				} else if (checkboxElement.className.indexOf('highlight') == -1) {
					checkboxElement.className = 'highlight';
				}
			} catch(e){}
		}
	} else{
		try{
			element.className = element.className.replace('highlight', '');
			if (element.type == "checkbox" || element.type == "radio"){
				checkboxElement = document.getElementById(element.name+'Lable');
				checkboxElement.className = checkboxElement.className.replace('highlight', '');
			}
		} catch(e){}
	}
}

/* for backwards compatibility - USE quickFindSelect(this)  INSTEAD */
function JumpToOtherMovie(){
	if (document.channels.mainchannels.selectedIndex != 0)
		window.location.href = document.channels.mainchannels.options[document.channels.mainchannels.selectedIndex].value;
}

function quickFindSelect(selectElement){
	if (selectElement.selectedIndex != 0)
	doWindowAction(selectElement.options[selectElement.selectedIndex].value, 'same');
}

function setHomepage(url, title){
	if (title == null || title.length == 0 ) title = document.title;
	if (url == null || url.length == 0) url = window.location.href;
	
	var navUAlowercase = navigator.userAgent;
	navUAlowercase = navUAlowercase.toLowerCase();
	if(navUAlowercase.indexOf('msie') > -1){
		//window.external.AddFavorite(url, title); //add to favourites
		event.srcElement.style.behavior='url(#default#homepage)';
		event.srcElement.setHomePage(url);
	} else {
		alert("Your browser does not allow automatic setting \nof its homepage, please set it manually.");
	}
}

/* addEvent(document.getElementById('tabBoxWrapper'), 'mouseover', stopRotating); */
function addEvent( obj, type, fn ) {
  if ( obj.attachEvent ) {
    obj['e'+type+fn] = fn;
    obj[type+fn] = function(){obj['e'+type+fn]( window.event );}
    obj.attachEvent( 'on'+type, obj[type+fn] );
  } else
    obj.addEventListener( type, fn, false );
}

/* addEvent(document.getElementById('tabBoxWrapper'), 'mouseout', restartRotating); */
function removeEvent( obj, type, fn ) {
  if ( obj.detachEvent ) {
    obj.detachEvent( 'on'+type, obj[type+fn] );
    obj[type+fn] = null;
  } else
    obj.removeEventListener( type, fn, false );
}


function setOpacity(obj, opacity) {
  opacity = (opacity == 100)?99.999:opacity;
  
  // IE/Win
  obj.style.filter = "alpha(opacity:"+opacity+")";
  
  // Safari<1.2, Konqueror
  obj.style.KHTMLOpacity = opacity/100;
  
  // Older Mozilla and Firefox
  obj.style.MozOpacity = opacity/100;
  
  // Safari 1.2, newer Firefox and Mozilla, CSS3
  obj.style.opacity = opacity/100;
}

function fadeIn(objId,opacity) {
  if (document.getElementById) {
    obj = objId; //document.getElementById(objId);
    if (opacity <= 100) {
      setOpacity(obj, opacity);
      opacity += 5;
      window.setTimeout("fadeIn('"+objId+"',"+opacity+")", 100);
    }
  }
}

function fadeOut(objId,opacity) {
  if (document.getElementById) {
    obj = objId; //document.getElementById(objId);
    if (opacity >= 0) {
      setOpacity(obj, opacity);
      opacity -= 5;
      window.setTimeout("fadeOut('"+objId+"',"+opacity+")", 100);
    }
  }
}

function setTooltip(element, tip){
	try{
		element.setAttribute('title', tip);
	} catch(e){}
}

function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}

function scrollToObject(object, horizontalAdjustment, verticalAdjustment){
	horizontalAdjustment = horizontalAdjustment?horizontalAdjustment:0;
	verticalAdjustment = verticalAdjustment?verticalAdjustment:0;
	try{
		horizontalPosition = eval(findPos(object)[0] + horizontalAdjustment);
		verticalPosition = eval(findPos(object)[1] + verticalAdjustment);
		window.scrollTo(horizontalPosition, verticalPosition);
	} catch(e){}
}

function isInArray(needle, haystack){
    for (var i = 0; i < haystack.length; i++) {
        if (haystack[i] == needle) {
            return true;
        }
    }
    return false;
}

function includeScriptInDom(scriptFilename, parentElement, tagIndex){
	tagIndex = tagIndex ? tagIndex : 0;
    var js = document.createElement('script');
    js.setAttribute('type', 'text/javascript');
    js.setAttribute('src', scriptFilename);
    try{
		 //add using ID
		 parentElement.appendChild(js);
	} catch(e){
		//ID not found, add using tag name instead, tag index (if there are several tags of the same type, tagIndex defines which tag to add to.
		document.getElementsByTagName(parentElement).item(tagIndex).appendChild(js);
	}
    return false;
}

function setSidebarSectionHighlight(sectionName){
	try{
		document.getElementById(sectionName).className += ' highlight';
	} catch(e) {}
}

/* where two submit buttons are present, use this function to define which is the submit */
function submitFormOnEnter(event, form, submitButton){
	if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13)) {
		try{
			submitButton.click();
		} catch(e){}
		return false;
	}
}


/* useful functions
http://www.javascriptsearch.com/guides/Advanced/articles/top10JSfunctionsDiaz.html */
function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)"); /* CMTBC - fix \s for multiple class handling */
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

function getElementHeight(elem){
	var elem = document.getElementById(elem);
	if (elem.offsetHeight){
		return elem.offsetHeight;
	} else {
		return elem.style.pixelHeight;
	}
}

function getElementWidth(elem) {
	var elem = document.getElementById(elem);
	if (elem.offsetWidth){
		return elem.offsetWidth;
	} else {
		return elem.style.pixelWidth;
	}
}


//This function helps protect e-mail addresses from spambots / harvesters etc
//use the following line of code in a HEAD script block
//addEvent(window, 'load', generateEmailAddresses);
//and write email addresses in the format
//<a class="safeEmailAddress" title="advertise|eircom|net" href="mailto:">(mouseover for address)</a>
function generateEmailAddresses(){
	//add to page load?
	var emailAddresses = getElementsByClass('*safeEmailAddress*', document.body, 'a');
	for (i = 0; i < emailAddresses.length; i++){
		hiddenAddress = emailAddresses[i].getAttribute('title');
		realAddressParts = hiddenAddress.split('|');
		realAddress = realAddressParts[0] + '@' + realAddressParts[1] + '.' + realAddressParts[2];
		emailAddresses[i].innerHTML = realAddress;
		emailAddresses[i].setAttribute('title', 'Click here to e-mail ' + realAddress);
		emailAddresses[i].setAttribute('href', 'mailto:' + realAddress);
	}
}


/* FIX IE's image-flicker-on-mouseover bug - based on code from  http://www.mister-pixel.com/#Content__state=is_that_simple  */
/* may break Opera9 event handling?? */
function fixIEImageFlicker(){
	try {
		document.execCommand("BackgroundImageCache", false, true);
	} catch(err){}
}
if (navigator.appVersion.indexOf("MSIE") != -1){
	addEvent(window, "load", fixIEImageFlicker);
}


/* Confirm before leaving page (eg crossword), doesn't handle form submissions yet */
/* http://drupal.org/files/issues/formcheck_8.js */
var message = "Any information you have entered will be cleared."; 
function confirmLeavePage(e){ 
	if (!e && window.event){
		e = window.event;
	}

	//var isChanged = formcheckIsFormChanged();
	
	// Don't run if submit button was clicked or form hasn't changed or there is no event
	//if (!formcheckIsSubmit && isChanged && e){
	if (e){
		e.returnValue = message;
		return message;
	}
}


/* CMTBC - BEGIN div height normaliser - http://www.thewatchmakerproject.com/journal/308/equal-height-boxes-with-javascript */
function $() {
	var elements = new Array();
	for (var i=0;i<arguments.length;i++) {
		var element = arguments[i];
		if (typeof element == 'string') element = document.getElementById(element);
		if (arguments.length == 1) return element;
		elements.push(element);
	}
	return elements;
}

/* SAMPLE CODE:
BoxHeights.equalise('one','two','three','four');
OR
BoxHeights.equalise('topStory>dl', 'featuredArtist>dl'); //equalises inner elements :) - added by bcire
OR
BoxHeights.equalise('topStory>dl', 'featuredArtist'); //equalises an inner element with a regular element
*/
var BoxHeights = {
	maxh: 0,
	boxes: Array(),
	num: 0,
	op_test: false,
	equalise: function() {
		this.num = arguments.length;
		var elementsToResize = new Array();
		for (var i=0;i<this.num;i++){
			var parentElement = (arguments[i].split('>')[0]) ? arguments[i].split('>')[0] : arguments[i];
			if (!$(parentElement)){
				return;
			} else if (arguments[i].indexOf('>') > -1){
				var childElement = $(parentElement).getElementsByTagName(arguments[i].split('>')[1])[0];
				elementsToResize.push($(childElement));
			} else {
				elementsToResize.push(arguments[i]);
			}
		}
		this.boxes = elementsToResize;
		this.maxheight();
		for (var i=0;i<this.num;i++) $(elementsToResize[i]).style.height = this.maxh+"px";
	},
	maxheight: function() {
		var heights = new Array();
		for (var i=0;i<this.num;i++) {
			if (navigator.userAgent.toLowerCase().indexOf('opera') == -1) {
				heights.push($(this.boxes[i]).scrollHeight);
			} else {
				heights.push($(this.boxes[i]).offsetHeight);
			}
		}
		heights.sort(this.sortNumeric);
		this.maxh = heights[this.num-1];
	},
	sortNumeric: function(f,s) {
		return f-s;
	}
}

/* SAMPLE CODE:
try{
	addEvent(window, 'load', function(){var mediaLists = getElementsByClass("mediaList primary", null, null); for(mediaListIndex = 0; mediaListIndex < mediaLists.length; mediaListIndex++){BoxInnerElementHeights.equalise(mediaLists[mediaListIndex].getAttribute('id') + '>dl')}});
} catch(e){}
*/
var BoxInnerElementHeights = {
	maxh: 0,
	boxes: Array(),
	num: 0,
	op_test: false,
	equalise: function() {
		this.num = arguments.length;
		for (var j=0;j<this.num;j++)// if (!$(arguments[i])) return;
			this.boxes = $(arguments[j].split('>')[0]).getElementsByTagName(arguments[0].split('>')[1]);
		this.boxesNum = this.boxes.length;
		this.maxheight();
		for (var i=0;i<this.boxesNum;i++){
			$(arguments[0].split('>')[0]).getElementsByTagName(arguments[0].split('>')[1])[i].style.height = this.maxh+"px";
		}
	},
	maxheight: function() {
		var heights = new Array();
		var hts = "";
		for (var i=0;i<this.boxesNum;i++) {
			if (navigator.userAgent.toLowerCase().indexOf('opera') == -1) {
				heights.push($(this.boxes[i]).scrollHeight);
			} else {
				heights.push($(this.boxes[i]).offsetHeight);
			}
		}
		heights.sort(this.sortNumeric);
		this.maxh = heights[this.boxesNum-1];
	},
	sortNumeric: function(f,s) {
		return f-s;
	}
}
/* CMTBC - END div height normaliser */


function addBookmark(url, title) {
	if (url == null || url.length == 0) url = window.location.href;
	if (title == null || title.length == 0 ) title = document.title;
	
	// user agent sniffing is bad in general, but this is one of the times 
	// when it's really necessary
	var ua = navigator.userAgent.toLowerCase();
	var isKonq = (ua.indexOf("konqueror") != -1);
	var isSafari = (ua.indexOf("webkit") != -1);
	var isMac = (ua.indexOf("mac") != -1);
	var buttonStr = isMac ? "Command/Cmd" : "CTRL";
	var startAdvice = "To bookmark this page, please press the ";
	var endAdvice = " keys at the same time.";

	try{
		if (navigator.appName == 'Microsoft Internet Explorer') {
			window.external.AddFavorite(url, title);
		} else {
			window.sidebar.addPanel(title, url, "");
		}
	} catch(e){
		if (isKonq) {
		  alert(startAdvice + "CTRL and B" + endAdvice);
		} else if (window.opera) {
		  void(0); // do nothing here (Opera 7+)
		} else if (window.home || isSafari) { // Firefox, Netscape, Safari, iCab
		  alert(startAdvice + buttonStr + " and D" + endAdvice);
		} else if (!window.print || isMac) { // IE5/Mac and Safari 1.0
		  alert(startAdvice + buttonStr + " and D" + endAdvice);    
		} else {
		  alert("Your browser does not allow automatic bookmarking,\nplease bookmark this page manually.");
		}
	}
}


function clearDefaultInput(field){
	if (field.value == field.defaultValue){
		field.value = "";
	}
}


function buildAdScriptCode(adScriptSource){
	var adServer = ((window.location.protocol.indexOf('http') > -1) ? window.location.protocol : 'http:'); //handle local files
	adServer = adServer + "//ads.eircom.net/"; //possibility to handle secure/nonsecure ads here
	var adScriptCode = '<scr' + 'ipt type="text/javascr' + 'ipt"';
	adScriptCode += ' src="' + adServer + adScriptSource + '">';
	adScriptCode += '</scr' + 'ipt>';
	return adScriptCode;
}


//used on homepage, originally intended to handle ajax ad requests but further use is not recommended
function outputAdCode(code){
	try{
		document.writeln(code);
	} catch(e){}
}


//CMTBEN - this function was copied directly from "Recommended Ad Calls for AdManager - 07 August 2007.pdf" - Page 9 - "Method #2: Rendering ads after page content is rendered"
//Ads are placed at end of html content and moved to the appropriate div by calling this function
//function renderAd(divName, aambTag){ //original code
function renderAd(divName, aambTag, aambTagOrAdCode){
	//CMTBEN - modified to handle proper ad code - 'adCode' - or bserver result code 'aambTag'.
	var invObj = 'INV' + divName;
	try {
		//var code = eval(aambTag); //original code
		var code = aambTagOrAdCode != "adCode" ? eval(aambTag) : buildAdScriptCode(aambTag);
	} catch(aamErr){}
	try{ //CMTBEN - added try/catch
		if (typeof(code) != 'undefined') {
			if(navigator.userAgent.indexOf('MSIE') > -1) {
				document.getElementById(divName).innerHTML +=
				'<div id="TMP' + divName + '" style="display:none">' +
				escape('<body><div id="adDiv">' + code + '</div>') +
				'</div><iframe name="' + invObj + '" width="0" height="0" frameborder="0" ' +
				'onload="javascript:try { document.getElementById(\'' + divName + '\').' +
				'insertAdjacentElement(\'beforeEnd\', window.frames[\'' + invObj + '\'].' +
				'document.getElementById(\'adDiv\')) } catch(aamErr) { }"></iframe>';
				window.frames[invObj].document.location =
				'javascript:unescape(parent.document.getElementById(\'TMP' +
				divName + '\').innerHTML)';
			} else document.writeln('<div id="' + invObj + '" style="display:none">' +
				code + '<script type="text/javascript" defer="true">' +
				'document.getElementById(\'' + divName + '\').innerHTML = ' +
				'document.getElementById(\'' + invObj + '\').innerHTML;' +
				'document.getElementById(\'' + invObj +
				'\').innerHTML = \'\';</scr' + 'ipt></div>');
		}
	} catch(e){} //CMTBEN - added try/catch
}


function loadCssFile(filename){
	try{
		var cssElement = document.createElement("link")
		cssElement.setAttribute("rel", "stylesheet")
		cssElement.setAttribute("type", "text/css")
		cssElement.setAttribute("href", filename)

		if (typeof cssElement != "undefined")
			document.getElementsByTagName("head")[0].appendChild(cssElement)
	} catch(e){}
}

function getBrandingVersion(){
	if (document.getElementById('myeircomHeader') != null)
		return "originalRebranding";
	else if (document.getElementById('headerLogoWrapper') != null)
		return "originalPortalRebranding";
	else
		return "unknown";
}


function styleForEvent(){
	var cssPath = "";
	if (getBrandingVersion() == "originalRebranding"){
		cssPath = "http://home.eircom.net/Images/Global/backgrounds/headers/seasonal/"
	} else if (getBrandingVersion() == "originalPortalRebranding"){
		return;
		//cssPath = "";
	} else {
		return;
	}

	var todaysDate = new Date();
	var todaysDateDay = todaysDate.getDate();
	var todaysDateMonth = todaysDate.getMonth();
	var todaysDateYear = todaysDate.getFullYear();
	
	var isNewYear = 		(todaysDateMonth + 1 == 1)	&& (todaysDateDay >= 1 && todaysDateDay <= 6);
	var isValentinesDay = 	(todaysDateMonth + 1 == 2)	&& (todaysDateDay == 14);
	var isPaddysDay = 		(todaysDateMonth + 1 == 3)	&& (todaysDateDay >= 14 && todaysDateDay <= 17);
	var isEaster = 			(todaysDateMonth + 1 == 4)	&& (todaysDateDay >= 10 && todaysDateDay <= 13 && todaysDateYear == 2009);
	var isHalloween = 		(todaysDateMonth + 1 == 10)	&& (todaysDateDay == 31);
	var isChristmas = 		(todaysDateMonth + 1 == 12)	&& (todaysDateDay >= 18 && todaysDateDay <= 31);

	if (isNewYear){
		//loadCssFile("http://home.eircom.net/Images/Global/backgrounds/headers/seasonal/newbits/style.css");
	} else if (isValentinesDay){
		loadCssFile(cssPath + "loveybits/style.css");
	} else if (isPaddysDay){
		loadCssFile(cssPath + "paddysbits/style.css");
	} else if (isEaster){
		loadCssFile(cssPath + "eggybits/style.css");
	} else if (isHalloween){
		//loadCssFile("http://home.eircom.net/Images/Global/backgrounds/headers/seasonal/scarybits/style.css");
	} else if (isChristmas){
		loadCssFile(cssPath + "snowybits/style.css");
	}
}

addEvent(window, "load", styleForEvent); ////dynamically load and add this .css file


/* BEGIN header / footer date functions */
function getOrdinaledNumber(num){
	var suffix = 'th';
	if(num===1 || num==21 || num==31) suffix='st';
	else if(num===2 || num==22) suffix='nd';
	else if(num===3 || num==23) suffix='rd';
	return num + suffix;
}

function getHeaderDate(){
	var todaysDate = new Date();
	var todaysDateYear = todaysDate.getFullYear();
	var todaysDateDay = todaysDate.getDay();
	var todaysDateMonth = todaysDate.getMonth();
	var daym = todaysDate.getDate();
	var dayNameArray = new Array("Sun", "Mon", "Tue", "Wed", "Thur", "Fri", "Sat");
	var monthNameArray = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");

    var headerDate = getOrdinaledNumber(todaysDateDay) + " " + monthNameArray[todaysDateMonth] + " " + todaysDateYear; 
    return headerDate;
}

function getFooterDate(){
    var footerDate = new Date().getFullYear();  
    return footerDate;
}
/* END header / footer date functions */