// JavaScript Document

ua   = navigator.userAgent.toLowerCase();
ie6  = (ua.indexOf("msie") && document.all && ua.indexOf("netscape") == -1);
nnf  = (ua.indexOf("netscape")  != -1 && ua.indexOf("gecko") != -1);
nni  = (ua.indexOf("netscape")  != -1 && ua.indexOf("msie") != -1);
nn6  = (ua.indexOf("netscape")  != -1);
gek  = (ua.indexOf("gecko")     != -1);
ff1  = (ua.indexOf("firefox")   != -1);
opr  = (ua.indexOf("opera")     != -1);
mac  = (ua.indexOf("mac")       != -1);
web  = (ua.indexOf("webtv")     != -1);
saf  = (ua.indexOf("safari")    != -1);
kon  = (ua.indexOf("konqueror") != -1);
nn4  = (document.layers);

function open_mvp_win(url, windowName) {
	window.open(url,windowName, 'directories=0,location=0,menubar=0,titlebar=0,status=0,toolbar=0,width=740,height=470', false) ;
}
function open_phone_win(url, windowName) {
	window.open(url,windowName, 'directories=0,location=0,menubar=0,titlebar=0,status=0,toolbar=0,width=280,height=220', false) ;
}

function open_iphone_win(url, windowName) {
	window.open(url,windowName, 'directories=0,location=0,menubar=0,titlebar=0,status=0,toolbar=0,width=300,height=240', false) ;
}


function $(v){
	return document.getElementById(v);
}


var passObj = new Object() ;

function setParent(el, newParent) {
		newParent.appendChild(el);
}

var IE = document.all?true:false;

// capture mouse xy position
var m = new Object() ; // mouse position offset.
m.x = 0 ;
m.y = 0 ;
//m.moveone = null ;
m.moveObj = null ;

function getMousePos(e) {
	// get the current mouse position
	var x = 0 ;
	var y = 0 ;

	if (!e) var e = window.event; // get the event via the MS event access method.
	if (e.pageX || e.pageY) {
		// e.pageX has document location, not location within screen
		x = e.pageX ;
		y = e.pageY ;
	}
	else if (e.clientX || e.clientY) 	{
		// screen based postition
		x = e.clientX + ( document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ;

		y = e.clientY + ( document.documentElement.scrollTop  ? document.documentElement.scrollTop  : document.body.scrollTop  ) ;

	}
	return [x,y];
}

function getMouseXY(e) {
	// this is used for drag functions.

	var posxPage = 0 ;
	var posyPage = 0 ;

	if ( m.moveObj != null ) {
		// get the selected object's current location (relative to current window)

		var loc = getObjLocation (m.moveObj) ;
		currentX = loc[0] ;
		currentY = loc[1] ;

		var mouseLoc = getMousePos(e) ;
		posxPage = mouseLoc[0] ;
		posyPage = mouseLoc[1] ;

		var deltaX = posxPage - m.origXPos  ;
		var deltaY = posyPage - m.origYPos  ;
		m.origXPos = currentX + deltaX ;
		m.origYPos = currentY + deltaY ;

		m.origXPos = posxPage ;
		m.origYPos = posyPage ;

		// do the actual drag/move of an object here.
		m.moveObj.style.left = ( currentX + deltaX + m.x ) + "px" ;
		m.moveObj.style.top  = ( currentY + deltaY + m.y ) + "px" ;
	}
}

function getObjLocation (obj) {
	// add up all the elements positions in the object tree containing an element to get our obj location.
	var curleft = curtop = 0;

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



function disableSelection(target){
	if (typeof target.onselectstart != "undefined") { //IE route
				target.onselectstart = function(){ return false ; } ;
	} else if (typeof target.style.MozUserSelect != "undefined") { //Firefox route
				target.style.MozUserSelect = "none" ;
	} else { //All other route (ie: Opera)
		target.onmousedown = function(){ return false ; } ;
	}

	target.style.cursor = "default" ;
}

function moveit(e, selection, xOffset, yOffset	){

	if (selection != null && selection.length > 0) {
		document.onmousemove = getMouseXY;
		m.x = xOffset;
		m.y = yOffset;
	} else {
		// just delete the event handler for this object being moved!
		document.onmousemove = null;
		m.x = 0 ; // reset x offset
		m.y = 0 ; // reset y offset
	}

	m.moveObj = $(selection) ;

	if (!e) var e = window.event; // get the event via the MS event access method.
	if (e) {
   	if (e.pageX || e.pageY) {
			m.origXPos = e.pageX ;
			m.origYPos = e.pageY ;
		} else if (e.clientX || e.clientY) {
			m.origXPos = e.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
			m.origYPos = e.clientY + (document.documentElement.scrollTop  ? document.documentElement.scrollTop  : document.body.scrollTop);
		}
	}
}

//Set up AJAX components
var http_request = false;
function Write(url, parameters, f) {
	var url, parameters, f ;
	http_request = false;
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
 		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			// set type accordingly to anticipated content type
			//http_request.overrideMimeType('text/xml');
			http_request.overrideMimeType('text/html');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	if (!http_request) {
		alert('Cannot create XMLHTTP instance');
		return false;
	}

	http_request.onreadystatechange = f;
	http_request.open('POST', url, true);
	http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http_request.setRequestHeader("Content-length", parameters.length);
	http_request.setRequestHeader("Connection", "close");
	http_request.send(parameters);
}


//Sample function AJAX catch

function Example() {
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
		var DetailShow = xmlHttp.responseText ;
		var details = document.getElementById('detailshow') ;
		details.innerHTML = DetailShow ;
	}
}


// Page Specific Functions

function AJAXcomplete(){
	if (http_request.readyState==4 || http_request.readyState=="complete") {
		$('event_detail_box').innerHTML = http_request.responseText ;
		$('event_detail_box').style.display = "block" ;
		Ticker() ;
	}
}

// Calendar funtions

var cells = new Array() ;
function createDayBoxes() {
	var actdiv = $('dayboxes');

	var cells = actdiv.getElementsByTagName('div');
	var newxOffset = 0 ;
	if (ff1){newxOffset = 64 ; }
	if (saf){newxOffset = 60 ; }
	if (ie6){newxOffset = 10 ; }

	for (var i = 0; i < cells.length; i++)
		{
			newj = cells[i].id +"j" ;
			if ($(newj)){
				newx = $(newj).offsetLeft + newxOffset ;
				newy = $(newj).offsetTop ;
				//if (ff1){newx+=64}
				//if (saf){newx+=60}
				//if (ie6){newx+=10}
				cells[i].style.left = 198+newx + "px" ;
				cells[i].style.top =  58 +newy  +"px" ;
			}
		}
	}

function PlaceElementsMonth() {
	var titled, title, titles, curx, cury, newdiv ;
	var actdiv = document.getElementById('activities');
	var cells = actdiv.getElementsByTagName('div');
	for (var i = 0; i < cells.length; i++) {
		titled = cells[i].id ;
		title = titled.split('-') ;
		titles = $(title[0]+"|d") ;

		if (titles){
			try {
				titles.appendChild(cells[i]) ;
				i = i - 1; // We just removed the one above from our list, now backup and look at array again at same spot!!!!!
			} catch (e) {
				// did not find the cell we thought, so just skip this one.
			}
		} else {
			i = i ;
		}
	}
}

function PlaceElementsDay(desiredDay) {

	removeDayItems (); // remove any of the old ones if they are there.

	var titled, title, titles, locDiv ;

	var desiredDayString = dateFormat(desiredDay) ;
	document.getElementById('day_detailDate').innerHTML = desiredDayString ;

	document.getElementById('day_detail').style.display = 'block' ; // turn on then fill in data to provide a bit of movement.

	var actdiv = document.getElementById(desiredDay + "-e") ;
	if( actdiv != null ) {
		var cells = actdiv.getElementsByTagName('div');
		for (var i = 0; i < cells.length; i++) {
			titled = cells[i].id ;
			title = titled.split('-') ;
			locDiv = "hour|" + title[1] ;
			titles = $(locDiv) ;
			if (titles){
				try {
					titles.appendChild(cells[i]) ;
					i = i - 1; // We just removed the one above from our list, now backup and look at array again at same spot!!!!!
				} catch (e) {
					// did not find the cell we thought, so just skip this one.
				}
			}
		}
	}
}

function expand(e, element) {
	// set display offsets for current mouse position.
	var obj = $('tip') ;
	var mouseLoc = getMousePos(e) ;

	var posxPage = mouseLoc[0] ;
	var posyPage = mouseLoc[1] ;

	document.onmousemove = expand ; //getMouseXY;
	m.x = 20;
	m.y = 0;
	if( element != null ) m.element = element ;
	m.moveObj = obj ;

	obj.style.left    = ( posxPage + m.x ) + "px" ;
	obj.style.top     = ( posyPage + m.y ) + "px" ;
	obj.innerHTML     = m.element ;
	obj.style.display = "block" ;
}

function contract(e) {
	moveit() ; // stop mouse events from moving element!
	$('tip').style.display = "none" ;
}


function closebox(element){
	if (element == 'event_detail_box') {
		$(element).style.display = "none";
		scrollflag = false;
	} else {
		if ($(element).style.display != "none") {
			removeDayItems();
			$(element).style.display = "none";
			scrollflag = false; // stop scrolling on a hidden item!
		}
	}
}

function removeDayItems () {
	var cells = $('daycalendar').getElementsByTagName('div');
	var replaceIdArray ;
	var destCells ;
	for (var i = 0; i < cells.length; i++) {
		replaceIdArray = cells[i].id.split('-') ;
		destYear = replaceIdArray[0].split( "|" )[0] ;
		if ( isNaN(destYear) == false ) {
			destCells = document.getElementById(replaceIdArray[0] + "-" + replaceIdArray[2]);
			// return data to original area (use ID number to parse for return dest.)
			destCells.appendChild(cells[i]);
			i = i - 1 ; // backup for the one we just took out!
		}
	}
}

function ShowGameDetails(num) {
	var url="../calendar/mvpGameFetch.php" ;
	content="id="+num ;
	Write(url,content,AJAXcomplete) ;
}

function newcal(up,month,year) {
	var url="../calendar/mvpShowCal.php" ;
	url = "mvpShowCal.php" ; // use local copy instead of master for calendar.
	content="updown="+up+"&curmonth="+month+"&curyear="+year ;
	Write(url,content,newcalcomplete) ;
}

function newcalcomplete() {
	if (http_request.readyState==4 || http_request.readyState=="complete") {
		var mvpcalresponse = http_request.responseText ;
		var details = document.getElementById('middle_content') ;
		details.innerHTML = mvpcalresponse ;
		PlaceElementsMonth();
	}
}

// End Calendar Function

function showSport(element) {
//	var cells = document.getElementsByTagName(element);
	var cells = document.getElementsByName(element);
	for (var i = 0; i < cells.length; i++) {
		if (cells[i].style.display == "none") {
			cells[i].style.display = "inline" ;
		} else {
			cells[i].style.display = "none" ;
		}
	}
}

/* Manage Ticker here */
var speed, messageWidth, messageWindowWidth ;
var scrollflag = true ;

function Ticker() {
	scrollflag  = true ;
	var message = document.getElementById('message') ;
	var ticker  = document.getElementById('TICKER') ;
	var wrapper = document.getElementById('TICKER_Wrapper') ;
	var messageWindowWidthFF, messageWidnwWidthIE ;

	speed = 25 ; // Time to wait between scroll updates, smaller number is a faster scroll.
	messageWidth       = message.offsetWidth ; // get the width of the actual message, not the window here! (transparent!)
	messageWindowWidthFF = wrapper.offsetWidth ; // this is the max window size in the wrapper element!
	messageWindowWidthIE = ticker.offsetWidth ; // this is the max window size in the wrapper element!
	messageWindowWidth   = messageWindowWidthFF ;
	if( messageWindowWidthIE > messageWindowWidth ) messageWindowWidth = messageWindowWidthIE ;

	ticker.style.width = messageWindowWidth + "px" ; // set the window for the ticker here
	ticker.style.opacity = "1.0" ; // tricky here, start with transparent ticker to get correct size, then make appear here!
	doTickerScroll() ;
}

function doTickerScroll() {
	var tickerMsg = document.getElementById('message') ;
	if (tickerMsg){
		tickerMsg.style.left = parseInt(tickerMsg.offsetLeft)-1 +'px'; // shift it left by 1 pixel!

		var animate = setTimeout(doTickerScroll,speed) ; // set the next time we should make an update to the scroll!

		if ( tickerMsg.offsetLeft < -messageWidth ){
			tickerMsg.style.left = messageWindowWidth + "px" ; // reset to start position.
		}
		if (!scrollflag){
			clearTimeout(animate); // Done with this scroll, so cancel our next interrupt.
			return ;
		}
	}
}

function dateFormat(dateVal){
	// date in format of 2009|3|5  which is march 5, 2009

	var days = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");

	var months = new Array("January", "February", "March", "April", "May", "June"
	                     , "July", "August", "September",	"October", "November", "December");

	var desiredDayArray = dateVal.split("|") ;
	var d = new Date() ;
	d.setFullYear(desiredDayArray[0],desiredDayArray[1]-1,desiredDayArray[2]) ;
	var curr_day = d.getDay();

	return (days[curr_day] + " " + months[desiredDayArray[1]-1] + " "  + desiredDayArray[2] + ", " + desiredDayArray[0]);
}
