var cookieName = "TIFF-Festival-Takeover";
var takeoverTimer;
var seconds = 10;
/* READY STATE FOR FUNCTION HOOKS */
$(document).ready(function () {
	jQuery.support.cors = true;
	setupTickets();
	if ($('div#AjaxPageLoad').length > 0){
		var AjaxUrlPages = $('div#AjaxPageLoad').attr("data-pagesurl");
		$('div#AjaxPageLoad').remove();
		startPageLoad(AjaxUrlPages)
	}
	if($(".local-nav").length > 0) {
		setupLocalNav();
	}
	if($("div.rotator.async") != undefined && $("div.rotator.async").length > 0) {
		if($("div.rotator.async").hasClass("random")) {
			setupFilms();
		} else {
			if($("div.rotator.async").hasClass("home")) {
				setupFilms();
			} else {
				setupFilmDetails();
			}
		}
	}
	if($("div.rotator > div.slide").length > 1) {
		setupRotator();
	}
	if($("article.playing-today-browser").length) {	
		initiateFilmsPlayingTodayFunction();
	}
	if($("#promotional-buckets").length > 0) {
		setupPromotionalBuckets();
	}
	if($(".promo-buckets").length > 0) {
		enableBucketMenu();
	}
	if($(".film-browser").length > 0 || $(".programmer-browser").length > 0 || $(".programme-browser").length > 0) {
		setupFilms();
	}
	if($("#interactive-schedule").length > 0) {
		setupInteractiveSchedule();
	}
	if($("#tiffkids-schedule").length > 0) {
		setupTiffkidsSchedule();
	}
	if($("#industry-schedule").length > 0) {
		setupIndustrySchedule();
	}
	if($(".searchTiff").length > 0) {
		setupAutocomplete();
	}
	if($(".calendar").length > 0) {
		setupCalendar();
	}
	if ($("#prev-next-btns").length > 0) {
        setupPrevNextBtns();
    }
    if ($("#calendar").length > 0) {
        activateSchedule();
    }
    if ($("#monthlyCalendar").length > 0) {
        activateMonthlyCalendar();
        setupCalendar();
    }
    //setupTakeover();
});
function setupTakeover() {
	if(getCookie(cookieName) == null) {
		setCookie(cookieName, "seenIt", 1);
		$("html").live("keyup", onLightboxClick);
		$("#lightbox-bg").live("click", onLightboxClick);
		$("body").append('<div id="lightbox"><div id="lightbox-bg"><p>Click here or press any key to Close. Automatically closing in <span class="countdown">' + seconds.toString() + '</span> seconds</p></div><div id="ad"><a href="/abouttiff/gettickets"><img src="http://tiff.net/images/festival/2011/buttons/ad-ticket-takeover.jpg" alt="The Festival isn&#39;t over yet! There are still tickets available to great films See one today!" /></a></div></div>');
		takeoverTimer = setInterval(onTimer, 1000);
	}
}
function onLightboxClick() {
	closeLightbox();
}
function closeLightbox() {
	$("#lightbox").fadeOut();
}
function onTimer() {
	if(seconds > 1) {
		seconds--;
		$("span.countdown").text(seconds.toString());
	} else {
		closeLightbox();
		clearInterval(takeoverTimer);
	}
}
/* TO MOVE TO SEPARATE JS FILE */
function setupPromotionalBuckets() {

}

/* UTILITIES */
//from http://www.quirksmode.org/js/cookies.html/Peter-Paul Koch via http://jquery-howto.blogspot.com/2010/09/jquery-cookies-getsetdelete-plugin.html
function setCookie(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=/";
}
//from http://www.quirksmode.org/js/cookies.html/Peter-Paul Koch via http://jquery-howto.blogspot.com/2010/09/jquery-cookies-getsetdelete-plugin.html
function getCookie(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;
}
//from http://www.quirksmode.org/js/cookies.html/Peter-Paul Koch via http://jquery-howto.blogspot.com/2010/09/jquery-cookies-getsetdelete-plugin.html
function deleteCookie(name) {
    setCookie(name,"",-1);
}
// expects dates we use for urls (DD/MM/YYYY) and returns it as e.g. Thursday, July 7, 2011
function formatDate(dateStr) {
	var dSplit = dateStr.split("/");
	var day = dSplit[0];
	var month = getMonth(dSplit[1]);
	var year = dSplit[2];
	var d = new Date(month + " " + day + ", "  + year);
	tempDay = d.getDay();
	dayStr = getDay(tempDay);
	returnStr = dayStr+ ', ' + month + ' ' + day + ', ' + year;
	return returnStr;
}

function getDay(dNum) {
	dNum = parseInt(dNum, 10);
	var dayStr;
	switch(dNum) {
		case 0: dayStr = 'Sunday'; break;
		case 1: dayStr = 'Monday'; break;
		case 2: dayStr = 'Tuesday'; break;
		case 3: dayStr = 'Wednesday'; break;
		case 4: dayStr = 'Thursday'; break;
		case 5: dayStr = 'Friday'; break;
		case 6: dayStr = 'Saturday'; break;
	}
	return dayStr;
}

function getMonth(mNum) {
	mNum = parseInt(mNum, 10);
	var monthStr;
	switch(mNum) {
		case 1: monthStr = 'January'; break;
		case 2: monthStr = 'February'; break;
		case 3: monthStr = 'March'; break;
		case 4: monthStr = 'April'; break;
		case 5: monthStr = 'May'; break;
		case 6: monthStr = 'June'; break;
		case 7: monthStr = 'July'; break;
		case 8: monthStr = 'August'; break;
		case 9: monthStr = 'September'; break;
		case 10: monthStr = 'October'; break;
		case 11: monthStr = 'November'; break;
		case 12: monthStr = 'December'; break;
	}
	return monthStr;
}

//Allow for array searching cross-browser
Array.prototype.hasObject = (
  !Array.indexOf ? function (o)
  {
    var l = this.length + 1;
    while (l -= 1)
    {
        if (this[l - 1] === o)
        {
            return true;
        }
    }
    return false;
  } : function (o)
  {
    return (this.indexOf(o) !== -1);
  }
);

/*Since festival programmes have an arbitrary relationship between short title, name and url, we need these utlities*/
function getProgrammeUrl(programmeShortTitle) {
	switch(programmeShortTitle) {
		case "gala":
			return "galas";
			break;
		case "mast":
			return "masters";
			break;
		case "sp":
			return "specialpresentations";
			break;
		case "disc":
			return "discovery";
			break;
		case "rtr":
			return "rtr";
			break;
		case "van":
			return "vanguard";
			break;
		case "kid":
			return "tiffkids";
			break;
		case "mav":
			return "mavericks";
			break;
		case "ctc":
			return "citytocity";
			break;
		case "cwc":
			return "cwc";
			break;
		case "cf":
			return "canadafirst";
			break;
		case "scc":
			return "shortcutscanada";
			break;
		case "cov":
			return "canadaopenvault";
			break;
		case "vis":
			return "visions";
			break;
		case "wl":
			return "wavelengths";
			break;
		case "fp":
			return "futureprojections";
			break;
		case "mm":
			return "midnightmadness";
			break;
		case "nw":
			return "nextwave";
			break;
		default:
			return programmeShortTitle;
	}
}
function getProgrammeShortTitle(url) {
	switch(url) {
		case "galas":
			return "gala";
			break;
		case "masters":
			return "mast";
			break;
		case "specialpresentations":
			return "sp";
			break;
		case "discovery":
			return "disc";
			break;
		case "rtr":
			return "rtr";
			break;
		case "vanguard":
			return "van";
			break;
		case "tiffkids":
			return "kid";
			break;
		case "mavericks":
			return "mav";
			break;
		case "citytocity":
			return "ctc";
			break;
		case "cwc":
			return "cwc";
			break;
		case "canadafirst":
			return "cf";
			break;
		case "shortcutscanada":
			return "scc";
			break;
		case "canadaopenvault":
			return "cov";
			break;
		case "visions":
			return "vis";
			break;
		case "wavelengths":
			return "wl";
			break;
		case "futureprojections":
			return "fp";
			break;
		case "midnightmadness":
			return "mm";
			break;
		default:
			return url;
	}
}
