/*  
 *
 *--------------------------------------------------------------------------*/

function swapImages(sel,el){
	if (document.getElementById)
		var x = document.getElementById(el).getElementsByTagName('a');
	else if (document.all)
		var x = document.all[el].all.tags('a');
	else return;
	
	
	for (var i=0;i<x.length;i++)
	{
		p = x[i].getElementsByTagName('img');
		src = p[0].src;
		l = src.substr(src.lastIndexOf('/')+1,((src.lastIndexOf('_'))-(src.lastIndexOf('/')))-1);
		sts = src.substr(src.lastIndexOf('_')+1,((src.lastIndexOf('.'))-(src.lastIndexOf('_')))-1);

		if(l==sel) {
			 p[0].src = src.substr(0,src.lastIndexOf('_'))+"_active.jpg";
		}
		else {
			if(sts!="notactive")
				p[0].src = src.substr(0,src.lastIndexOf('_'))+"_notactive.jpg";
		}
	}

}

function setLeague(lg){
	for(var n=0;n<objLeagues.League.length;n++){
		if(objLeagues.League[n].name==lg){
			ln = n;
			break;
		}
	}


	// ajust ticker header
	swapImages(lg,'tickerhdr');
}

function updateTickerDate(){
	var dt = document.getElementById("tickerdate");
	var dtmsg = '';
	

	if(objLeagues.League[ln].matches>0)
		dtmsg = 'Games for '+ glblJsonObj.SCHEDULE['@attributes'].date;
	

	if(dtmsg=='')
		dtmsg = 'No games to report for <br />'+ glblJsonObj.SCHEDULE['@attributes'].date;
	
	dt.innerHTML = dtmsg;
}

function initContainer(){

	var cacheSize = 7;
	var screenSize = 4;
	var cacheRepeat = 0;
	var cachediff = 0;
	var numMatches = 0;
	var loopSize = 0;
	
	updateTickerDate();
	
	var lst = document.getElementById("mlb");
	lst.innerHTML = '';
	
	clearInterval(mInterval);
	
	blnScrollable = false;
	blnIsScrolling = false;

if(objLeagues.League[ln].objnum>=0){

		var olg = glblJsonObj.SCHEDULE.LEAGUE[objLeagues.League[ln].objnum];
		
		if(objLeagues.League[ln].matches>0){
			
			numMatches = objLeagues.League[ln].matches
			
			if(	numMatches==1 )
				appendMatchup(olg.GAME);
			else {
				
				if(numMatches>cacheSize){
					loopSize = cacheSize;
				}
				else {
					loopSize =  numMatches;
					if(numMatches>screenSize) {
						cachediff = cacheSize - numMatches;
					}
				}				
				
				// alert(objLeagues.League[ln].matches);
				for(i=0;i<loopSize;i++){
					appendMatchup(olg.GAME[i]);
					if(((i+1)>screenSize)&&(!blnScrollable)){
						blnScrollable = true;	
					}
				}
				
				for(i=0;i<cachediff;i++){
					appendMatchup(olg.GAME[i]);
				}

/* OLD STUPID WAY IT WAS DONE

				if((i<cacheSize) && (i>screenSize)){
					for(n=0;n<(cacheSize-i);n++){
						appendMatchup(olg.GAME[n]);
					}
					blnScrollable = true;
				}
				else {
					if(i>4){
						extendSize = cacheSize - (i+1)
						if(extendSize>0){
							for(i=0;i<extendSize;i++){
								appendMatchup(olg.GAME[i]);
							}
						blnScrollable = true;
						}
					}
				}
				
*/				
				StartStopScroll(true);
			}
		}
		
	}
	
	
	
	if(lst.style.display == "none")
		lst.style.display = "block";
	
	// alert(lst.style.display);
	
	containerInit = true;
	
}

function changeLeague(lgn){
	setLeague(lgn);

	var lst = document.getElementById("mlb");	
	lst.style.display = "none"
	lst.style.top = '0px';
	
	mtop = 0;
	odd = true;
	containerInit = false;
	
	initContainer();
}

function changeDay(day){
	clearTimeout( mGetDataId );
	appDay = day;

	var lst = document.getElementById("mlb");
	lst.style.display = "none" // hide layer and clear it;
	lst.style.top = '0px';
	
	StartStopScroll(false);
	containerInit = false;
	
	blnFirstTime = true;
	
	mtop = 0;
	odd = true;
	
	GetData();
}



Ajax.Responders.register({
	onCreate: function() {
		Ajax.activeRequestCount++;
		var rf = document.getElementById("rotate");
		rf.style.display = "block";
	},
	onComplete: function() {
		Ajax.activeRequestCount--;
		var rf = document.getElementById("rotate")
		rf.style.display = "none";
	} 
});




function GetData(){
	var url = baseurl;

	if(blnFirstTime) {
		url += 'a=r&';
		blnFirstTime = false;
	} else {
		url += 'ts='+glblJsonObj.SCHEDULE['@attributes'].timestamp+'&';
	}

	url += 'd='+appDay+'&';
	
	url += 't=' + (new Date()).getTime();

	var myAjax = new Ajax.Request(url,
	  {
		method:'get',
		onSuccess: getResponse,
		onFailure: function(){ 
			// alert('Something went wrong...')
		}
	  });

	if(appDay=='t'){
		mGetDataId = setTimeout("GetData();",25000);
	}

}


function getResponse(oReq, oJSN) {
	// alert(oReq.responseText);
	
	if ((oReq.getHeader('Content-type') || '').match(/json/)) {
		
		var data = eval('glblJsonObj = '+oReq.responseText);
		
		updateArray();
		
		updateContainer();
	}
	
}

function updateArray(){
	
	if(typeof glblJsonObj.SCHEDULE.LEAGUE!='undefined'){

		for(var i=0;i<glblJsonObj.SCHEDULE.LEAGUE.length;i++){
			
			// SET objnum to position in glblJsonObj
			for(n=0;n<objLeagues.League.length;n++){
				if(objLeagues.League[n].id==glblJsonObj.SCHEDULE.LEAGUE[i]['@attributes'].number){
					objLeagues.League[n].objnum = i;
					break;
				}	
			} // end for
			
						
			// Set Matchup Size in objLeagues
			if(typeof(glblJsonObj.SCHEDULE.LEAGUE[i].GAME)=='object'){
				
				if(typeof(glblJsonObj.SCHEDULE.LEAGUE[i].GAME.length)=='undefined') {
					objLeagues.League[n].matches = 1;
				}
				else {
					objLeagues.League[n].matches = glblJsonObj.SCHEDULE.LEAGUE[i].GAME.length;
				}
			}
			
		} // end for
	} else {
		for(var n=0;n<objLeagues.League.length;n++){
			objLeagues.League[n].objnum = -1;
			objLeagues.League[n].matches = 0;
		}	
	}
	
}

function updateContainer(){

	var strText = '', teamAbbrs;
	var strStatus = '', strScores = '';	

	if(!containerInit) {
		initContainer();
	}
	else {
		if(objLeagues.League[ln].matches>0) 
		{

			var aryEl = getElementsByClassName("matchup", "div", document.getElementById("mlb"));
			var olg = glblJsonObj.SCHEDULE.LEAGUE[objLeagues.League[ln].objnum];
			
			for(var i=0;i<aryEl.length;i++){
				teamAbbrs = getElementsByClassName("mid", "div", aryEl[i]);
		
				// find matcup in JSON object
				pos = findMatchup(teamAbbrs[0].innerHTML,olg);
		
				// update score (from say odds to score or whatever just came in)
				var teamScrs = getElementsByClassName("scores", "div", aryEl[i]);
				var teamSts = getElementsByClassName("gamestatus", "div", aryEl[i]);
				
				
				// update status (from time to current status or whatever just came in)
		
				lineOne = olg.GAME[pos].TEAM[0]['@attributes'].status;
				lineTwo = olg.GAME[pos].TEAM[1]['@attributes'].status;
				
				scr1 = olg.GAME[pos].TEAM[0]['@attributes'].score;
				scr2 = olg.GAME[pos].TEAM[1]['@attributes'].score;
				
				if((scr1!="")||(scr2!=""))
					teamScrs[0].innerHTML = scr1+"<br />"+scr2;
			
				
				if((lineOne!="")||(lineTwo!="")) {
					if((lineOne=="FINAL")||(lineTwo=="FINAL"))
						teamSts[0].innerHTML = "FINAL";	
					else
						teamSts[0].innerHTML = lineOne+'<br />'+ lineTwo;
				}
				
			}
		}
	}
	

	
}


function StartStopScroll(blnScroll) {

	if(blnScrollable){

		// if apply scroll
		if(blnScroll){
			blnIsScrolling = true;
			mInterval = window.setInterval(MoveUp, 60);
		}
		else { // if stop scroll (false)
			clearInterval(mInterval);
			blnIsScrolling = false;		
		}

	}
	
}


function MoveUp() {
	
	var mPos = 0;
	var lst = document.getElementById("mlb");
	
	mtop--;
	
	lst.style.top = mtop+'px';
	if(lst.style.top=='-80px'){

		var tmSrch = lst.lastChild.childNodes[1].childNodes[0].innerHTML;
		tmSrch += lst.lastChild.childNodes[0].innerHTML
		
		var olg = glblJsonObj.SCHEDULE.LEAGUE[objLeagues.League[ln].objnum];

		mPos = findMatchup(tmSrch,olg);

		if(typeof mPos != 'undefined'){
			mPos = (mPos<(olg.GAME.length)-1) ? (mPos + 1) : 0;
		} else {
			mPos = 0;
		}
		
		appendMatchup(olg.GAME[mPos]);

		
		lst.removeChild(lst.firstChild);
		lst.style.top = '-40px';
		mtop = -40;
		
	}
}


function findMatchup(str,olg) {
	var searchStr = '';
	var parStr = str.replace(/(<([^>]+)>)/ig,""); // get rid of html in string passed
	
	for(var i=0;i<olg.GAME.length;i++){
		searchStr = olg.GAME[i].TEAM[0]['@attributes'].abbr+''+olg.GAME[i].TEAM[1]['@attributes'].abbr;
		searchStr += olg.GAME[i].TEAM[0]['@attributes'].number+''+olg.GAME[i].TEAM[1]['@attributes'].number;
		if(searchStr==parStr){
			return i;
		}
	}
}


function findTopY(obj) {
  var curtop = 0;
  if (obj.offsetParent) {
    while (obj.offsetParent) {
      curtop += obj.offsetTop;
      obj = obj.offsetParent;
    }
  }
  else if (obj.y)
    curtop += obj.y;
  return curtop;
}

function stripOverUnder(itm){
	// strip the over unders from the odds to gain some room
	if(itm.lastIndexOf('o')>=0){
		return itm.substr(0,itm.lastIndexOf('o'));
	}
	else {
		if(itm.lastIndexOf('u')>=0){
			return itm.substr(0,itm.lastIndexOf('u'));
		} else {
			return itm;
		}
	}
}

function appendMatchup(objGame){
	var odd1, odd2, scr1, scr2;
	var lst = document.getElementById("mlb");
	var box = document.createElement('div');

	scr1 = 0;
	scr2 = 0;
	
	box.className = 'matchup';
	
	if(odd==false){
		odd=true;
		box.style.background = '#363636';
	}
	else {
		odd=false;
		box.style.background = '#222222';
	}
	
	/*
	<div class="matchup">
		<div class="leftside">000<br />111</div>
		<div class="rightblock">
			<div class="mid">ARZ<br />TOR</div>
			<div class="rightside">
				<div class="scores">12<br />14</div>
				<div class="gamestatus">12:30 PM<br />PST</div>
			</div>
		</div>
	</div>
	*/

	var divTeamNums = box.appendChild(document.createElement('div'));
	divTeamNums.className = 'leftside';
	divTeamNums.innerHTML = objGame.TEAM[0]['@attributes'].number+'<BR />'+objGame.TEAM[1]['@attributes'].number;

	var divRBlock = box.appendChild(document.createElement('div'));
	divRBlock.className = 'rightblock';	
	
	var divTeams = divRBlock.appendChild(document.createElement('div'));
	divTeams.className = 'mid';
	divTeams.innerHTML = objGame.TEAM[0]['@attributes'].abbr+'<BR />'+objGame.TEAM[1]['@attributes'].abbr;
		

	divScrStat = divRBlock.appendChild(document.createElement('div'));
	/*
	if(ar[7]=='') // if period is empty use event date time css class
	{
		divScrStat.className = 'rightsidergt';
		divScrStat.innerHTML = ar[6]+' PM EST';
		// don't forget to check for AM or PM if hour is greater than or equal to 12 then PM
	}
	else
	{
	*/
		// this means the game started
		divScrStat.className = 'rightside';
		var divScores = divScrStat.appendChild(document.createElement('div'));
		divScores.className = 'scores';
		
		lineOne = objGame.TEAM[0]['@attributes'].status;
		lineTwo = objGame.TEAM[1]['@attributes'].status;
		

		var divPeriod = divScrStat.appendChild(document.createElement('div'));
		divPeriod.className = 'gamestatus';
		
		if((lineOne!="")||(lineTwo!="")){
			if((lineOne=="FINAL")||(lineTwo=="FINAL")) {
				divPeriod.innerHTML = "FINAL";	
			} else {
				divPeriod.innerHTML = lineOne+'<br />'+ lineTwo;
			}
			if(objGame.TEAM[0]['@attributes'].score!="") scr1 = objGame.TEAM[0]['@attributes'].score;
			if(objGame.TEAM[1]['@attributes'].score!="") scr2 = objGame.TEAM[1]['@attributes'].score;
			
			divScores.innerHTML = scr1+'<br />'+scr2;
		} else {
			odd1 = objGame.TEAM[0].OPENER['@attributes'].value;
			if(odd1.length>0){
				odd1 = stripOverUnder(odd1);
			}
			odd2 = objGame.TEAM[1].OPENER['@attributes'].value;
			if(odd2.length>0){
				odd2 = stripOverUnder(odd2);
			}
			
			divScores.innerHTML = odd1+'<br />'+odd2;

			time12hrs = conv24to12clock(objGame['@attributes'].time)
			divPeriod.innerHTML = time12hrs+'<br />PST';	
		}

	lst.appendChild(box);
}


function conv24to12clock(tm) {
		
		var splitTime = tm.split(":");
	
		a_p = (splitTime[0]< 12) ? "AM" : "PM";

		if(splitTime[0] == 0) 
			splitTime[0] = 12;

		if(splitTime[0] > 12) 
			splitTime[0] = splitTime[0] - 12;

		return (splitTime[0]+':'+splitTime[1]+' '+a_p);
}


function getElementsByClassName(className, tag, elm){
	var testClass = new RegExp("(^|\\s)" + className + "(\\s|$)");
	var tag = tag || "*";
	var elm = elm || document;
	var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
	var returnElements = [];
	var current;
	var length = elements.length;
	for(var i=0; i<length; i++){
		current = elements[i];
		if(testClass.test(current.className)){
			returnElements.push(current);
		}	
	}
	return returnElements;
}


