var nbaModuleStateHsh = new Hash();
function nbaSetModState(modID, oState){	
	nbaModuleStateHsh.set(modID, oState);
}
function nbaGetModState(modID){	
	 return nbaModuleStateHsh.get(modID);
}
function isValidDate(oDateStr){
	var reg2 = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/	
	return (reg2.test(oDateStr))
}
function getDateFromURL() {
	var urlFldDate = String(window.location.pathname.match(/\/gameline\/([0-9_]+)(\/index.html){0,1}/)[1]);
	var oYear = urlFldDate.substring(0,4);
	var oMnth = urlFldDate.substring(4,6);
	var oDay  = urlFldDate.substring(6,8);
	var oDate = oMnth + "/" + oDay + "/" + oYear;
	return oDate;
}
function getBaseDomain(){
    var server = window.location.hostname;
	// if summerleague, take it to summerleague page
	if (window.location.href.search('summerleague') > -1) {
	    return 'http://' + server + '/summerleague';   
	} else {
	    return 'http://' + server;   
	}
}
function getFilmStripJSON()
{
	var errArry = [0,"SUCCESS"];
	var JSONPath = getBaseDomain() + '/.element/json/auto/2.0/sasd/filmstrip.json';
	var ajaxObj = new nbaAjaxWrapper.AjaxRequester(JSONPath, {method: 'get', respCallBack:nbaAjaxWrapper.AjaxResponseHandler});
	if(!respJSONobj){
		errArry[0] = 1;
		errArry[1] = "Error retrieving filmstrip JSON";
	}
	return errArry;
}	
function isValidGameRang(oDate)
{
	var errArry = [0,"SUCCESS"]
	var gamesStart = new Date(respJSONobj.MetaData.gamesStart);
	var targetDate = new Date(oDate)
	var gamesEnd = new Date(respJSONobj.MetaData.gamesEnd)
	if (targetDate < gamesStart){
		errArry[0] = -1;
		errArry[1] = gamesStart;
	}else if (targetDate > gamesEnd){
		errArry[0] = -2;
		errArry[1] = gamesEnd;
	}
	return errArry
}

function resetCalendars()
{	
	//var currDate = nbaCurrTime;
	var currDate = new Date();
	var currHour = currDate.getHours();
	if (currHour < 12){
		currDate.setDate(currDate.getDate()-1);
	}
	currDate = stripOutTime(currDate)
	calDayOnClick(null, currDate, currDate);	
}

function calDayOnClick(aId, oSelectedDate, oMonthStartDate)
{
	var errArry	= isValidGameRang(oSelectedDate)
	if ( errArry[0] == 0 ){
		goLocation(new Date(oSelectedDate))
	}else{
		goLocation(errArry[1])
	}	
}

function goLocation(oDate)
{
	var navYear = oDate.getFullYear();
	var navDate = oDate.getDate();
		navDate	= (navDate < 10) ? ("0" + navDate) : navDate;
	var navMnth	= oDate.getMonth()+1;
		navMnth = (navMnth < 10) ? ("0" + navMnth) : navMnth;
	var navFlder = String(navYear) + String(navMnth) + String(navDate);
			
	// if summerleague, take it to summerleague page
	if (window.location.href.search('summerleague') > -1) {
		var iURL = '/summerleague/gameline/' + navFlder;
        } else if (window.location.href.search('dleague') > -1) {
                var iURL = '/dleague/gameline/' + navFlder;
	} else {
		var iURL = '/gameline/' + navFlder;
	}
	document.location.href = iURL;
}

function stripOutTime(oDate){
	return ((oDate.getMonth()+1) + "/" + oDate.getDate() + "/" + oDate.getFullYear());
}

function showHideDiv(oDiv, isOff)
{
	if (oDiv == "nbaCalendarBox"){
		var nbaTeamBox = $("nbaTeamBox");
		if (nbaTeamBox.style.display == "block"){
			nbaTeamBox.style.display = "none";
			showHideExp(nbaTeamBox.id, true);
		}
		if(!isOff){
			$(oDiv).style.display = "block";
			showHideExp(oDiv, isOff);
		}else{
			$(oDiv).style.display="none";
			showHideExp(oDiv, isOff);
		}	
	}else{
		var nbaCalendarBox = $("nbaCalendarBox");
		if (nbaCalendarBox.style.display == "block"){
			nbaCalendarBox.style.display = "none";
			showHideExp(nbaCalendarBox.id, true);
		}
		if(!isOff){
			$(oDiv).style.display = "block";
			showHideExp(oDiv, isOff);
		}else{
			$(oDiv).style.display="none";
			showHideExp(oDiv, isOff);
		}	
	}
}
function showHideExp(oDiv, isOff)
{
	var calOpenBttn = "";
	var calCloseBttn = "";
	var bttnSelection = "";	
	switch(oDiv)
	{
		case "nbaCalendarBox": 
			calOpenBttn 	= "nbaSelectDateOn"; 
			calCloseBttn 	= "nbaSelectDate"; 
			var dateBttn 	= $("nbaSelectDateBttn");
			if (!isOff){				
				dateBttn.removeClassName(calCloseBttn);
				dateBttn.addClassName(calOpenBttn)
			}else{
				dateBttn.removeClassName(calOpenBttn);
				dateBttn.addClassName(calCloseBttn);
			}			
			break;
		case "nbaTeamBox": 
			calOpenBttn 	= "nbaSelectTeamOn"; 
			calCloseBttn 	= "nbaSelectTeam";
			var teamBttn 	= $("nbaSelectTeamBttn");
			if (!isOff){				
				teamBttn.removeClassName(calCloseBttn);
				teamBttn.addClassName(calOpenBttn);
			}else{
				teamBttn.removeClassName(calOpenBttn);
				teamBttn.addClassName(calCloseBttn);
			}
		break;
	}
}

function showHideState(oSequence, oModuleType)
{
	var divPanel	= $("nbaBtmPanel" + oSequence);
	var divBar		= $("nbaModBar" + oSequence);
	var divBttn 	= $("nbaBarBut" + oSequence);
	
	/************************
	 * maintain open state: upon refresh the module will go back to its close state
	 * so have to force it to stay open in order to view the updated content.
	 ************************/
	if (nbaGetModState(oSequence) == "open"){
		openModule(divPanel, divBar, divBttn, oModuleType, oSequence);
	}
}

function fixInitialModuleStates()
{
	var pageModules = elemStateList;	
	pageModules.each( function(obj) {
		
		var divPanel	= $("nbaBtmPanel" + obj.key );
		var divBar		= $("nbaModBar" + obj.key );
		var divBttn 	= $("nbaBarBut" + obj.key );
		
		if (nbaGetModState(obj.key) == "open"){
			openModule(divPanel, divBar, divBttn, obj.value, obj.key);
		}else{
			closeModule(divPanel, divBar, divBttn, obj.value, obj.key);
		}			
   	});	
}

function showHideModules(oSequence)
{
	var divPanel	= $("nbaBtmPanel" + oSequence);
	var divBar		= $("nbaModBar" + oSequence);
	var divBttn 	= $("nbaBarBut" + oSequence);
	var moduleType  = getGameStatus(oSequence);
	
	//alert("moduleType = " + moduleType);
	if (divPanel.hasClassName('nbaBtmClose')){
		nbaSetModState(oSequence, "open")
		openModule(divPanel, divBar, divBttn, moduleType, oSequence);		
	}else{
		nbaSetModState(oSequence, "close")
		closeModule(divPanel, divBar, divBttn, moduleType, oSequence);
	}
}

function openModule(oPanel, oBar, oBttn, oType, oSeq)
{
	oPanel.className 	= 'nbaBtmOpen';
	oBttn.className 	= 'nbaModBarMinusBut';
		
	if (oType == "modPreview")
	{
		var nbaMainPreview 	= $("nbaMainPreview" + oSeq);
			nbaMainPreview.className = 'nbaMainPreDotted';
			oBar.className = 'nbaModOuterBarBckLgPre';
			
	}else{
		var nbaModTop 		= $("nbaModTop" + oSeq);
			nbaModTop.className = 'nbaModTopDotted';
			oBar.className = 'nbaModOuterBarBckLg';
	}
}

function closeModule(oPanel, oBar, oBttn, oType, oSeq)
{
	oPanel.className 	= 'nbaBtmClose';
	oBttn.className 	= 'nbaModBarPlusBut';
	
	if (oType == "modPreview")
	{
		var nbaMainPreview 	= $("nbaMainPreview" + oSeq);
			nbaMainPreview.className = 'nbaNoBorderPre';
			oBar.className = 'nbaModOuterBarBckSmPre';
			
	}else{
		var nbaModTop 		= $("nbaModTop" + oSeq);
			nbaModTop.className = 'nbaNoBorder';			
			oBar.className = 'nbaModOuterBarBckSm';
	}
	
}

