
window.onload = function() {
	if(document.getElementById('ticker'))
		init_ticker();
		
	if(document.getElementById('NewsPreview'))
		init_newsPreview();
		
	if(document.getElementById('dropdMenu'))
		init_mainMenu();
		
	if(document.getElementById('eventSlider'))
		init_eventSlide();
}


// Page Top Expander
var expState = "closed";
var expTime;
var expStatus = "stopped";

function toggleTab(tab) {
	if(expStatus == "stopped") {
	expStatus = "going";
	if(tab.id != expState) {
		if(expState != "closed") {
			document.getElementById(expState).className = "utilityTab";
			document.getElementById('exp_'+expState).className = "exp_hide";
		}
		tab.className = "utilityTabSel";
		document.getElementById('exp_'+tab.id).className = "exp_show";
		if(expState == "closed") {
				expTime = setInterval('expand()', 10);
		}
		else {
			expStatus = "stopped";
		}
		expState = tab.id;
	}
	else {
		expTime = setInterval('unexpand()', 10);
	}
	}
}

function expand() {
	var page = document.getElementById('bg');
	var object = document.getElementById('exp_page');
	if(object.clientHeight < 120) {
		var dis = (120 - object.clientHeight) / 8 + 1;
		object.style.height = object.clientHeight + dis + "px";
		if(page.className == "evenCount")
			page.className = "oddCount";
		else
			page.className = "evenCount";
	}
	else {
		clearInterval(expTime);
		expStatus = "stopped";
		object.style.height = "120px";
		if(page.className == "evenCount")
			page.className = "oddCount";
		else
			page.className = "evenCount";
	}
}

function unexpand() {
	var page = document.getElementById('bg');
	var object = document.getElementById('exp_page');
	if(object.clientHeight > 3) {
		var dis = object.clientHeight / 8 + 1;
		object.style.height = object.clientHeight - dis + "px";
		if(page.className == "evenCount")
			page.className = "oddCount";
		else
			page.className = "evenCount";
	}
	else {
		clearInterval(expTime);
		expStatus = "stopped";
		object.style.height = "0px";
		document.getElementById(expState).className = "utilityTab";
		document.getElementById('exp_'+expState).className = "exp_hide";
		expState = "closed";
		if(page.className == "evenCount")
			page.className = "oddCount";
		else
			page.className = "evenCount";
	}
}


// Utility Search Expand Feature
var stime;
var utilitySearch = false;

function toggleSearch() {
	if(utilitySearch) {
		stime = setInterval('openUtilitySearch()',10);
	}
	else {
		stime = setInterval('closeUtilitySearch()',10);
	}
}

function openUtilitySearch() {
	var object = document.getElementById('usbWrapper');
	if(object.clientWidth > 2) {
		var dis = object.clientWidth / 8 + 1;
		object.style.width = object.clientWidth - dis + "px";
	}
	else {
		clearInterval(stime);
		object.style.width = "2px";
		utilitySearch = false;
	}
}

function closeUtilitySearch() {
	var object = document.getElementById('usbWrapper');
	var size = document.getElementById('usbSize');

	if(object.clientWidth <= size.clientWidth) {
		var dis = (size.clientWidth - object.clientWidth) / 8 + 1;
		object.style.width = object.clientWidth + dis + "px";
	}
	else {
		clearInterval(stime);
		utilitySearch = true;
	}
}


// News Ticker Functions
var tickerNum = 0;
var tickerWidth = 0;
var tickerInterval;

stopTicker = function() {
    clearInterval(tickerInterval);
}
startTicker = function() {
    tickerInterval = setInterval('slide_ticker()', 20);
}

function init_ticker() {
	var ticker1 = document.getElementById('tickerSlide');
	tickerWidth = parseInt(ticker1.getElementsByTagName('div')[0].clientWidth, 10);
	ticker1.style.width = tickerWidth + "px";
	
	// Duplicate Ticker
	var ticker2 = document.createElement("div");
	ticker2.id = "tickerSlide2";
	ticker2.innerHTML = ticker1.innerHTML;
	ticker1.parentNode.appendChild(ticker2);
	ticker2.style.left = tickerWidth + "px";
	
	var ticker = document.getElementById('ticker');
	ticker.onmouseover = stopTicker;
	ticker.onmouseout = startTicker;
	
	tickerInterval = setInterval('slide_ticker()', 20);
}

function slide_ticker() {
	tickerNum--;
	var ticker1 = document.getElementById('tickerSlide');
	var ticker2 = document.getElementById('tickerSlide2');
	if(tickerNum > -tickerWidth) {
		ticker1.style.left = tickerNum + "px";
		ticker2.style.left = tickerNum + tickerWidth + "px";
	}
	else {
		tickerNum = 0;
		ticker1.style.left = "0px";
		ticker2.style.left = tickerWidth + "px";
	}
}



// Grey Box Hovers
var BoxOverride = "";
function boxOn(object) {
	object.className = "box";
}
function boxOff(object) {
	if(!object.id || BoxOverride != object.id)
		object.className = "gbox";
}
function boxOverrideOn(id) {
	BoxOverride = id;
}
function boxOverrideOff() {
	document.getElementById(BoxOverride).className = "gbox";
	BoxOverride = "";
}


// News Preview
var nePreviewCurrentID = "nePreview1";
var nePreviewObjectID = "";
var nePreviewTime;
var nePreviewStatus = "stopped";
var nePreviewIteration = 0;
var nePreviewHover;
var nePreviewMouse = null;
function init_newsPreview() {
	var object = document.getElementById('NewsPreview');
	object.style.height = object.clientHeight + "px";
}
function nePreview(object) {
	nePreviewMouse = object.id;
	if(nePreviewStatus == "stopped") {
		nePreviewObjectID = nePreviewMouse;
		nePreviewHover = setTimeout('nePreviewNow()', 150);
	}
}
function nePreviewClear() {
	nePreviewMouse = null;
	clearTimeout(nePreviewHover);
}
function nePreviewNow() {
	if(nePreviewStatus == "stopped" && nePreviewObjectID != nePreviewCurrentID) {
		nePreviewStatus = "going";
		var object = document.getElementById(nePreviewObjectID);
		object.style.height = "50px";
		object.getElementsByTagName('div')[0].style.paddingTop = "0px";
		object.getElementsByTagName('div')[2].style.marginTop = "-98px";
		object.style.opacity = ".25";
		object.style.filter = "alpha(Opacity=25)";
		object.className = "window";
		nePreviewTime = setInterval('nePreviewTransition()', 15);
	}
}
function nePreviewTransition() {
	var close = document.getElementById(nePreviewCurrentID);
	var open = document.getElementById(nePreviewObjectID);
	if(nePreviewIteration < 176) {
		nePreviewIteration = Math.floor(nePreviewIteration + ((176 - nePreviewIteration) / 8 + 1));
		close.style.height = 176 - nePreviewIteration + 50 + "px";
		open.style.height = nePreviewIteration + 50 + "px";
		
		open.getElementsByTagName('div')[0].style.paddingTop = (nePreviewIteration / 176) * 10 + "px";
		close.getElementsByTagName('div')[0].style.paddingTop = 10 - ((nePreviewIteration / 176) * 10) + "px";
		close.getElementsByTagName('div')[2].style.marginTop = (nePreviewIteration / 176) * -98 + "px";
		open.getElementsByTagName('div')[2].style.marginTop = -98 - ((nePreviewIteration / 176) * -98) + "px";
		
		close.style.opacity = (100 - ((nePreviewIteration / 176) * 75)) * .01;
		open.style.opacity = (25 + ((nePreviewIteration / 176) * 75)) * .01;
		close.style.filter = 'alpha(Opacity=' + (100 - ((nePreviewIteration / 176) * 75)) + ')';
		open.style.filter = 'alpha(Opacity=' + (25 + ((nePreviewIteration / 176) * 75)) + ')';
	}
	else {
		nePreviewIteration = 0;
		close.style.height = "50px";
		open.style.height = "226px";
		close.getElementsByTagName('div')[2].style.marginTop = "-98px";
		open.getElementsByTagName('div')[2].style.marginTop = "0px";
		close.style.opacity = .25;
		open.style.opacity = 1;
		close.style.filter = 'alpha(Opacity=25)';
		open.style.filter = 'alpha(Opacity=100)';
		document.getElementById(nePreviewCurrentID).className = "windowClosed";
		document.getElementById(nePreviewObjectID).className = "window";
		nePreviewCurrentID = nePreviewObjectID;
		nePreviewStatus = "stopped";
		clearInterval(nePreviewTime);
		if(nePreviewMouse) {
			nePreviewObjectID = nePreviewMouse;
			nePreviewNow();
		}
	}
}


// Drop Down Menu functions
var dropdTime;
function openWomenSports() {
	clearTimeout(dropdTime);
	document.getElementById('womenSports').className = "on";
	document.getElementById('womenSportsMenu').className = "show";
}
function closeWomenSports() {
	dropdTime = setTimeout('closeWomenSportsNow()', 150);
}
function closeWomenSportsNow() {
	document.getElementById('womenSports').className = "off";
	document.getElementById('womenSportsMenu').className = "hide";
}
function saveWomenSports() {
	clearTimeout(dropdTime);
}
function openMenSports() {
	clearTimeout(dropdTime);
	document.getElementById('menSports').className = "on";
	document.getElementById('menSportsMenu').className = "show";
}
function closeMenSports() {
	dropdTime = setTimeout('closeMenSportsNow()', 150);
}
function closeMenSportsNow() {
	document.getElementById('menSports').className = "off";
	document.getElementById('menSportsMenu').className = "hide";
}
function saveMenSports() {
	clearTimeout(dropdTime);
}


// Main Menu Hover
var MenuDivID;
var MenuObject;
var MenuTime;
function init_mainMenu() {
	var primary = document.getElementById('dropdMenu').getElementsByTagName('div');
	for (var x = 0; x < primary.length; x++) {
		if(primary[x].className == "mainMenu") {
			var top = document.createElement("div");
			top.className = "mainMenuTop";
			primary[x].insertBefore(top, primary[x].getElementsByTagName('ul')[0]);
			var bottom = document.createElement("div");
			bottom.className = "mainMenuBottom";
			primary[x].appendChild(bottom);
		}
	}
}
function menuOpen(object, divID) {
	if(MenuObject && MenuObject.className == "on") {
		clearTimeout(MenuTime);
		menuCloseNow();
	}
	object.className = "on";
	if(document.getElementById(divID)) {
		var div = document.getElementById(divID);
		var page = document.getElementById('page');
		var target = findElementPos(object);
		var offset = findElementPos(page);
		div.style.top = (target[1] - offset[1]) + 20 + "px";
		//div.style.left = (target[0] - offset[0]) - 4 + "px";
		var Left = (target[0] - offset[0]) - 4;
		if(Left > 741)
			Left = Left + object.clientWidth - 209;
		//	Left = 741;
		div.style.left = Left + "px";
		div.style.display = "block";
	}
	MenuObject = object;
	MenuDivID = divID;
}
function menuClose() {
	MenuTime = setTimeout('menuCloseNow()', 50);
}
function menuCloseNow() {
	MenuObject.className = "";
	if(document.getElementById(MenuDivID)) {
		document.getElementById(MenuDivID).style.display = "none";
	}
}
function menuSave() {
	clearTimeout(MenuTime);
}

// Methods
function findElementPos(elemFind)
{
	var elemX = 0;
	var elemY = 0;
	do {
		elemX += elemFind.offsetLeft;
		elemY += elemFind.offsetTop;
	} while ( elemFind = elemFind.offsetParent )

	//console.log("Found element "+elemFind+" at "+elemY+"/"+elemX);

	return Array(elemX, elemY);
}

function sineInOut(t, b, c, d)
{
	return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
}


// Event Slider
var eventNum = 1;
var eventMouse;
function init_eventSlide() {
	document.getElementById('eventView').scrollTop = "0px";
	
	var object = document.getElementById('eventView');
	if (object.addEventListener) {
        /** DOMMouseScroll is for mozilla. */
        object.addEventListener('DOMMouseScroll', slideEventWheel, false);
	}
	/** IE/Opera. */
	object.onmousewheel = slideEventWheel;
}
function slideEventUp() {
	if(eventNum > 1) {
		eventNum--;
		slideEvent(eventNum);
	}
	eventMouse = setInterval('slideEventUpMouse()', 200);
}
function slideEventDown() {
	var id = "Event" + (1 + eventNum);
	if(document.getElementById(id)) {
		eventNum++;
		slideEvent(eventNum);
	}
	eventMouse = setInterval('slideEventDownMouse()', 200);
}
function slideEventUpMouse() {
	if(eventNum > 1) {
		eventNum--;
		slideEvent(eventNum);
	}
}
function slideEventDownMouse() {
	var id = "Event" + (1 + eventNum);
	if(document.getElementById(id)) {
		eventNum++;
		slideEvent(eventNum);
	}
}
function slideEventClear() {
	clearInterval(eventMouse);
}
function slideEvent(num)
{
    eventNum = num;
	var displayEvent = "Event" + num;
	var theScroll = document.getElementById('eventView');
	var position = findElementPos(document.getElementById(displayEvent));
	var offsetPos = findElementPos(document.getElementById('Event1'));
	position[1] = position[1] - offsetPos[1];
	slideEventStart(theScroll, theScroll.scrollTop, position[1]);
}

var eventAnim = {time:0, begin:0, change:0.0, duration:0.0, element:null, timer:null};

function slideEventStart(elem, start, end, direction)
{
	if (eventAnim.timer != null) {
		clearInterval(eventAnim.timer);
		eventAnim.timer = null;
	}
	eventAnim.time = 0;
	eventAnim.begin = start;
	eventAnim.change = end - start;
	eventAnim.duration = 50;
	eventAnim.element = elem;
	eventAnim.timer = setInterval("scrollVertAnim();", 15);
}
function scrollVertAnim()
{
	if (eventAnim.time > eventAnim.duration) {
		clearInterval(eventAnim.timer);
		eventAnim.timer = null;
		if(eventNum > 1) {
            document.getElementById('eventUp').style.visibility = "visible";
        }
        else {
            slideEventClear();
            document.getElementById('eventUp').style.visibility = "hidden";
        }
	}
	else {
		move = sineInOut(eventAnim.time, eventAnim.begin, eventAnim.change, eventAnim.duration);
		eventAnim.element.scrollTop = move;
		eventAnim.time++;
	}
}

function slideEventWheel(event){
        var delta = 0;
        if (!event) /* For IE. */
                event = window.event;
        if (event.wheelDelta) { /* IE/Opera. */
                delta = event.wheelDelta/120;
        } else if (event.detail) { /** Mozilla case. */
                delta = -event.detail/3;
        }
        if (delta) {
			if(delta < 0) {
				slideEventDownMouse();
			}
			else {
				slideEventUpMouse();
			}
		}
        if (event.preventDefault)
                event.preventDefault();
	event.returnValue = false;
}

// Asynchronous Event Functions
function LoadCalendarSucceeded(result, context)
{
    var resultObj = Sys.Serialization.JavaScriptSerializer.deserialize(result);
    var nr = Sys.Serialization.JavaScriptSerializer.deserialize(nextRequest);
    nr.StartDate = resultObj.nextStartDate;
    nr.EventsTaxonomy = resultObj.EventsTaxonomy;
    nextRequest = Sys.Serialization.JavaScriptSerializer.serialize(nr);
    var pr = Sys.Serialization.JavaScriptSerializer.deserialize(prevRequest);
    pr.StartDate = resultObj.prevStartDate;
    pr.EventsTaxonomy = resultObj.EventsTaxonomy;
    prevRequest = Sys.Serialization.JavaScriptSerializer.serialize(pr);
    var cr = Sys.Serialization.JavaScriptSerializer.deserialize(currentRequest);
    cr.StartDate = resultObj.currentStartDate;
    cr.EventsTaxonomy = resultObj.EventsTaxonomy;
    currentRequest = Sys.Serialization.JavaScriptSerializer.serialize(cr);
    var hlRssHref = document.getElementById("hlEventsRss");
    if (hlRssHref != null)
    {
        if (resultObj.RssHref != null && resultObj.RssHref != '')
        {
            hlRssHref.style.display = "inline";
            hlRssHref.href = resultObj.RssHref;
        }
        else
        {
            hlRssHref.style.display = "none";
        }
    }
    var calendar = document.getElementById("eventCalendarText");
    if (calendar != null)
    {
        calendar.innerHTML = resultObj.renderedCalendar;
    }
    var eventSlider = document.getElementById("eventSlider");
    if (eventSlider != null)
    {
        eventSlider.innerHTML = resultObj.renderedEvents;
    }
    var eventSliderTitle = document.getElementById("sliderTitleText");
    if (eventSliderTitle != null)
    {
        eventSliderTitle.innerHTML = resultObj.sliderTitle;
    }
    if (resultObj.EventCount > 0)
    {
        slideEvent(1);
    }
    document.getElementById('eventUp').style.visibility = "hidden";
    CalendarOverlay(false);
}

function LoadCalendarFailed(result)
{
    var eventSlider = document.getElementById("eventSlider");
    if (eventSlider != null)
    {
        eventSlider.innerHTML = "<div class='event'><div class='desc'><p>Unable to load events.<br />" + result + "</p></div></div>";
    }
    CalendarOverlay(false);
}

function ChangeTaxonomy(taxId)
{
    var cr = Sys.Serialization.JavaScriptSerializer.deserialize(currentRequest);
    cr.EventsTaxonomy = taxId;
    currentRequest = Sys.Serialization.JavaScriptSerializer.serialize(cr);
    currentMonth();
}

function CalendarOverlay(bShow)
{
    var obj = document.getElementById("calendarOverlay");
    
    if (obj != null)
    {
        if (bShow)
        {
            //cal.style.visibility = "hidden";
            obj.style.display = "block";
        }
        else
        {
            //cal.style.visibility = "visible";
            obj.style.display = "none";
        }
    }
}
