/****************************************************************************
START - HELPER FUNCTIONS 
- HM
****************************************************************************/


var helper = {
	
	//XMLHTTPREQUEST SETUP
	setXMLHttpRequest: function() {
		
		var xmlhttp;
		
		if (window.XMLHttpRequest) {
			xmlhttp = new XMLHttpRequest();
		}
		else if (window.ActiveXObject) {
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		}
		
		return xmlhttp;
		
	},
	
	//BROWSER ID HANDLE CHECK
	htmlElement: function(passed) {
		
		try {	
			if (document.getElementById) {
				return document.getElementById(passed);
			}
			if (document.all) {
				return document.all[passed];
			}
		}
		catch (e) {
			this.errorLogger("Helper class error", "htmlElement", "passed="+passed, e.message, "Element ID definition error");
		}
		
	},
	
	//GET ELEMENT ATTRIBUTE
	getAttrib: function(nodeName, attribute) {
		
		try {
			var result = "";
			if (nodeName.getAttribute(attribute) != null)
				result = nodeName.getAttribute(attribute);
		
			return result;
		}
		catch (e) {
			this.errorLogger("Helper class error", "getAttrib", "nodeName="+nodeName+",attribute="+attribute, e.message, "Attribute definition error");
		}
		
	},
	
	//CHECK NODE TYPES
	chkNType: function(elemPassed) {
		
		try {
			if (typeof elemPassed == undefined)
				return 0;
			else {
				var nType = 0;
				nType = elemPassed.nodeType;
				return nType;
			}
		}
		catch (e) {
			this.errorLogger("Helper class error", "chkNType", "elemPassed="+elemPassed, e.message, "Node Check Error");
		}
		
	},
	
	
	//NAME DISPLAY TYPES
	nameFix: function(empName, fixOption) {
		
		try {
			var fName = ""; 
			var lName = "";
			var returnThis = "";
			
			if (empName.indexOf(",") < 0)
				return empName;
		
			switch (fixOption) {
		
				case 1: {
					//option 1 ex : Duncan, Tim -> T.Duncan
					for (var x = 0; x < empName.indexOf(","); x++) { 
						lName += empName.charAt(x);
					}
					fName = empName.charAt(empName.indexOf(",")+2);
					returnThis = fName + ". " + lName;
					break;
				}
				case 2: {
					//option 2 ex : Duncan, Tim -> Duncan
					for (var x = 0; x < empName.indexOf(","); x++) {
						lName += empName.charAt(x);
					}
					returnThis = lName;
					break;
				}
				case 3: {
					//option 3 ex : Duncan, Tim -> Tim Duncan
					for (var x = 0; x < empName.indexOf(","); x++) { 
						lName += empName.charAt(x);
					}
					fName = empName.substring(empName.indexOf(",")+2,empName.length);
					returnThis = fName + " " + lName;
					break;
				}
		
			}
			
		
			return returnThis;
		}
		catch (e) {
			this.errorLogger("Helper class error", "nameFix", "empName="+empName+",fixOption="+fixOption, e.message);
		}
		
	},
	
	//IF YOU WANT TO TRIM (RIGHT AND LEFT) THE STRING
	trimString: function(dString) {
		
		try {
			while (dString.substring(0,1) == ' ') {
				dString = dString.substring(1, dString.length);
			}
			while (dString.substring(dString.length-1, dString.length) == ' ') {
				dString = dString.substring(0,dString.length-1);
			}
		
			return dString;
		}
		catch (e) {
			this.errorLogger("Helper class error", "trimString", "dString="+dString, e.message);
		}
		
	},
	
	// REMOVE BLANK SPACES FROM STRING
	stripBlank: function(dString) {
		
		try {
			
			var ret = "";
			for (var x=0; x < dString.length; x++) {
				ret += (dString.charAt(x) == ' ')?"":dString.charAt(x);	
			}
			
			return ret;
			
		}
		catch (e) {
			this.errorLogger("Helper class error", "stripBlank", "dString="+dString, e.message);
		}
		
		
	},
	
	// MILITARY TIME to 12 HR
	setStrTime: function(passTime) {
	
		if (passTime == undefined) 
			return;

		var timeStr = "";
		var tAMPM = "";
		var tHR = "";
		var tMIN = "";
	
		var MilitaryTime = this.trimString(passTime);
	
		if (MilitaryTime.length == 4) {
			tAMPM = "am";
			tHR = MilitaryTime.charAt(0) + MilitaryTime.charAt(1);
			tMIN = MilitaryTime.charAt(2) + MilitaryTime.charAt(3);
			tHR = parseInt(tHR);
	
			if (tHR > 12) {
				tHR = tHR - 12; // 12-hr
				tHR = "" + tHR; // convert to string
				tAMPM = "pm"; // set as pm
			}
		
			if (tHR == 0) 
				tHR = "" + 12; // set as hr of 12 and set to string
			
			timeStr = tHR + ":" + tMIN + " " + tAMPM;
		}
	
		if (MilitaryTime.length == 3) {
			tAMPM = "am";
			tHR = MilitaryTime.charAt(0);
			tMIN = MilitaryTime.charAt(1) + MilitaryTime.charAt(2);
			tHR = parseInt(tHR);
	
		if (tHR == 0) 
			tHR = "" + 12; // set as hr of 12 and set to string
	
			timeStr = tHR + ":" + tMIN + " " + tAMPM;
		}
		
	return timeStr;
		
	},
	
	//ELEMENT NODE COUNTER
	nodeCounter: function(node) {
		
		try {
			var numOfNodes = 0;
			for (var x = 0; x < node.length; x++) {
				if (helper.chkNType(node[x]) == 1) {
					numOfNodes++;
				}
			}
		
			return numOfNodes;
		}
		catch (e) {
			this.errorLogger("Helper class error", "nodeCounter", "node="+node, e.message, "Node Counter Error");
		}
		
	},
	
	//ATTRIBUTE COUNTER
	attribCounter: function(node) {
		return node.attribute.length;
	},
	
	//ERROR LOGGING FOR DEVELOPMENT
	errorLogger: function(eType, eCode, eValue, eMsg, eCom) {
		
		var err = "";
		
		window.status = "Error/s Encountered. Please check logs.";
		err = '<br><br><b>' + eType + ' [' + eCode + ']</b>'
						 + '<br>value/s passed : ' + eValue
						 + '<br>js error message: ' + eMsg
		if (eCom != undefined)
			err += "<br>comment: " + eCom;
		
		//make sure the latest error log is on top
		tempErr = errorLogs;
		errorLogs = err + tempErr;
		//alert(errorLogs);
	
		//logger box 
		var logBox = this.getLoggerVar("logger");
		if (logBox == "true") {
			thisID = this.htmlElement("errorLogWindow");
			thisID.style.display = "block";
			thisID = this.htmlElement("errorLogDisplay");
			this.checkElementExist(thisID, errorLogs, "innerHTML");
		}
		
	},
	
	open_window_ex: function(url, title, height, width, options) {
		
		var path = url;
		if( url.search(/^http:/) == -1 ) {
			path = "/popups/" + url;
		} else {
			var nbaDomain = new RegExp("/^http:\/\/www.nba.com\/([.*]*)/");
			var result = url.match(nbaDomain);
			if( result != null ) {
				path = "/popups/" + result[1];
			} else {
				path = url;
			}
		}
		var opts = '';
		if(options == null || options == "null")
			opts = 'toolbar=0, location=0, directories=0, status=0, menubar=0, scrollbars=yes, resizable=yes';
		else
			opts = options;
		
		opts += ',width=' + width;
		opts += ',height=' + height;
		mywin=window.open(path,title,opts);
		
	},
	
	//modulo checker for odd or even number
	isEven: function(num) {
		try {
			var mod = num%2;
			return (mod == 0) ? true : false;
		}
		catch (e) {
			this.errorLogger("Helper class error", "isEven", "num="+num, e.message);
		}
	},
	
	getLoggerVar: function(pvar) {
		
		var getVar = new Array(); 
		var sGet = window.location.search; 
		if (sGet) { 
			sGet = sGet.substr(1); 
			var sNVPairs = sGet.split("&"); 
			for	(var i = 0; i < sNVPairs.length; i++) { 
				var sNV = sNVPairs[i].split("="); 
				var sName = sNV[0]; var sValue = sNV[1]; getVar[sName] = sValue; 
			} 
			return getVar[pvar];
		}
		
	},
	
	
	// ********************** BELOW THIS ARE DISPLAY FUNCTION HELPERS **********************
	
	// LEADERS - grab the first one only if 2 or more leaders (design purposes for now)
	checkLeadersForLiveStats: function(dSplit) {
		try {
			var leadArr = new Array ();
			var dArray = null;
			var splitLead = dSplit.split("^");
			var thisLead = dSplit;
	
			if (splitLead.length > 1) 
				thisLead = splitLead[0];
	
			dArray = thisLead.split("|");
	
			for (var x=0; x < dArray.length; x++) {
				leadArr[x] = dArray[x];
			}
		
			return leadArr;
		}
		catch (e) {
			this.errorLogger("Helper class error", "checkLeadersForLiveStats", "dSplit="+dSplit, e.message); 
		}
	},
	
	//percentage display
	pctDisplayConverter: function(pct, dispOption) {
		
		try {
			var str = "";
			pct = "" + pct;
			// ex. 35.5 -> .355
			if (dispOption == 1) {
				str = ".";
				for (var x = 0; x < pct.length; x++) {
					if (pct.charAt(x) != '.')
						str += pct.charAt(x);
				}
			}
		
			if (dispOption == 2) {
				var c = 0;
				for (var x = pct.indexOf('.')+1; x < pct.length; x++) {
					str += pct.charAt(x)
					c++;
					if (c == 2) str += ".";
				}
			}
		
			return str;
		}
		catch (e) {
			this.errorLogger("Helper class error", "pctDisplayConverter", "pct="+pct+",dispOption="+dispOption, e.message);
		}
		
	},
	
	helperLiveGameText: function(gsText, pcTime) {
	
		try {
			var pText = "";
			var vTime = "";
			var qtr = 0;
			var flag = 0;
			var x = 0;
			var l = gsText.length;
		
			if (gsText.indexOf("End")>-1 || gsText.indexOf("end")>-1)
				vTime = "End ";
		
			if (gsText.indexOf("Start")>-1 || gsText.indexOf("start")>-1)
				vTime = "Start ";
			
			if (gsText.indexOf("1")>-1)
				pText = vTime + "1st ";
			
			if (gsText.indexOf("2")>-1)
				pText = vTime + "2nd ";
			
			if (gsText.indexOf("3")>-1)
				pText = vTime + "3rd ";
			
			if (gsText.indexOf("4")>-1)
				pText = vTime + "4th ";
		
			if (gsText.indexOf("ot")>-1 || gsText.indexOf("OT")>-1)
				pText = pText + "OT ";
			
			pText = pText + pcTime;
			
			if (gsText.indexOf("Halftime")>-1 || gsText.indexOf("halftime")>-1)
				pText = "Halftime";
		
			return (pText);
		}
		catch (e) {
			this.errorLogger("Helper class error", "helperLiveGameText", "gsText="+gsText+",pcTime="+pcTime, e.message);
		}
		
	},
	
	// PLAY-BY-PLAY HELPER TO GET HOME/VISITOR TEAM
	pbpTeamSpec: function(gamecode, team) {
		
		try {
			var str = gamecode.split("/");
			var returnThis = "";
		
			var getThis = (team == "visitor") ? str[1].substring(0,3) : str[1].substring(3,6);
		
			returnThis = this.teamNameConvert(getThis, 0, 3);
		
			return returnThis;
		}
		catch(e) {
			this.errorLogger("Helper class error", "pbpTeamSpec", "gamecode="+gamecode+",team="+team, e.message);
		}
		
	},
	
	//CONVERT TEAM NAME DATA
	teamNameConvert: function (team, type, option) {
	
		var tempTeam = new Array ();
	
		/* 
		TYPE/OPTION:
		0 - abbreviation
		1 - city
		2 - nickname
		3 - teamcode
		4 - name
		5 - team color
		*/
	
		//just to make sure its all uppercase/lowercase
		if (type == 0) 
			team = team.toUpperCase();
	
		if (type == 3)
			team = team.toLowerCase();
	
		tempTeam[0] = new Array ("", "", "", "", "");
		/*
		tempTeam[1] = new Array ("ATL", "Atlanta", "Hawks", "hawks", "Atlanta Hawks", "#C44F4F");
		tempTeam[2] = new Array ("BOS", "Boston", "Celtics", "celtics", "Boston Celtics", "#2B6B39");
		tempTeam[3] = new Array ("CHA", "Charlotte", "Bobcats", "bobcats", "Charlotte Bobcats", "#F2AB91");
		tempTeam[4] = new Array ("CHI", "Chicago", "Bulls", "bulls", "Chicago Bulls", "#A34949");
		tempTeam[5] = new Array ("CLE", "Cleveland", "Cavaliers", "cavaliers", "Cleveland Cavaliers", "#C44F5A");
		tempTeam[6] = new Array ("DAL", "Dallas", "Mavericks", "mavericks", "Dallas Mavericks", "#5079A6");
		tempTeam[7] = new Array ("DEN", "Denver", "Nuggets", "nuggets", "Denver Nuggets", "#FCD47C");
		tempTeam[8] = new Array ("DET", "Detroit", "Pistons", "pistons", "Detroit Pistons", "#F090A6");
		tempTeam[9] = new Array ("GSW", "Golden State", "Warriors", "warriors", "Golden State Warriors", "#FCE3AC");
		tempTeam[10] = new Array ("HOU", "Houston", "Rockets", "rockets", "Houston Rockets", "#E36279");
		tempTeam[11] = new Array ("IND", "Indiana", "Pacers", "pacers", "Indiana Pacers", "#FCDB97");
		tempTeam[12] = new Array ("LAC", "L.A. Clippers", "Clippers", "clippers", "Los Angeles Clippers", "#2C486B");
		tempTeam[13] = new Array ("LAL", "L.A. Lakers", "Lakers", "lakers", "Los Angeles Lakers", "#AD90A1");
		tempTeam[14] = new Array ("MEM", "Memphis", "Grizzlies", "grizzlies", "Memphis Grizzlies", "#4E5169");
		tempTeam[15] = new Array ("MIA", "Miami", "Heat", "heat", "Miami Heat", "#B36B72");
		tempTeam[16] = new Array ("MIL", "Milwaukee", "Bucks", "bucks", "Milwaukee Bucks", "#593659");
		tempTeam[17] = new Array ("MIN", "Minnesota", "Timberwolves", "timberwolves", "Minnesota Timberwolves", "#2B3745");
		tempTeam[18] = new Array ("NJN", "New Jersey", "Nets", "nets", "New Jersey Nets", "#293B4D");
		tempTeam[19] = new Array ("NOK", "New Orleans/Oklahoma City", "Hornets", "hornets", "New Orleans/Oklahoma City Hornet", "#38888C");
		tempTeam[20] = new Array ("NYK", "New York", "Knicks", "knicks", "New York Knicks", "#FF9666");
		tempTeam[21] = new Array ("ORL", "Orlando", "Magic", "magic", "Orlando Magic", "#60BBF0");
		tempTeam[22] = new Array ("PHI", "Philadelphia", "Sixers", "sixers", "Philadelphia 76ers", "#C7B899");
		tempTeam[23] = new Array ("PHO", "Phoenix", "Suns", "suns", "Phoenix Suns", "#D49B74");
		tempTeam[24] = new Array ("POR", "Portland", "Blazers", "blazers", "Portland Trail Blazers", "#808080");
		tempTeam[25] = new Array ("SAC", "Sacramento", "Kings", "kings", "Sacramento Kings", "#A39AAB");
		tempTeam[26] = new Array ("SAS", "San Antonio", "Spurs", "spurs", "San Antonio Spurs", "#BABDC6");
		tempTeam[27] = new Array ("SEA", "Seattle", "Sonics", "sonics", "Seattle SuperSonics", "#2C4A3E");
		tempTeam[28] = new Array ("TOR", "Toronto", "Raptors", "raptors", "Toronto Raptors", "#DE9094");
		tempTeam[29] = new Array ("UTA", "Utah", "Jazz", "jazz", "Utah Jazz", "#3C4366");
		tempTeam[30] = new Array ("WAS", "Washington", "Wizards", "wizards", "Washington Wizards", "#2E5573");
	
		tempTeam[31] = new Array ("PHX", "Phoenix", "Suns", "suns", "Phoenix Suns", "#D49B74");
		tempTeam[32] = new Array ("NOH", "New Orleans", "Hornets", "hornets", "New Orleans Hornet", "#38888C");

		tempTeam[33] = new Array ("RKE", "", "Rookies", "rookies", "Rookies", "#293B4D");
		tempTeam[34] = new Array ("SPH", "", "Sophomores", "sophomores", "Sophomores", "#E36279");
		
		tempTeam[35] = new Array ("EST", "East", "All-Stars", "east", "East All-Stars", "#293B4D");
		tempTeam[36] = new Array ("WST", "West", "All-Stars", "west", "West All-Stars", "#E36279");
		
		tempTeam[37] = new Array ("RKE", "", "Rookies", "rookies", "Rookies", "#293B4D");
		tempTeam[38] = new Array ("SPH", "", "Sophomores", "sophomores", "Sophomores", "#E36279");
		
		tempTeam[39] = new Array ("CLC", "", "Clutch City", "clutchcity", "Clutch City", "#293B4D");
		tempTeam[40] = new Array ("HTN", "", "H-Town", "htown", "H-Town", "#E36279");
		
		/* 2007 international games 
		tempTeam[41] = new Array ("ROM", "Roma", "Virtus Lottomatica", "europelive", "Virtus Lottomatica", "#a80532");
		tempTeam[42] = new Array ("TEL", "Tel Aviv", "Maccabi Elite", "europelive", "Maccabi Elite", "#0072bc");
		tempTeam[43] = new Array ("BAR", "Barcelona", "Winterthur FC", "europelive", "Winterthur FC", "#e7b909");
		tempTeam[44] = new Array ("MOS", "Moscow", "CSKA", "europelive", "CSKA Moscow", "#3e2680");
		tempTeam[45] = new Array ("KHI", "Khimki", "BC Khimki", "europelive", "BC Khimki", "#408d89");
		tempTeam[46] = new Array ("LYV", "Lyon-Villeurbanne", "Adecco ASVEL", "europelive", "Adecco ASVEL", "#006351");
		*/
		
		/* WNBA TEAMS */
		tempTeam[1] = new Array ("CHI", "Chicago", "Sky", "sky", "Chicago Sky", "#6689CC");
		tempTeam[2] = new Array ("CON", "Connecticut", "Sun", "sun", "Connecticut Sun", "#AF1E2D");
		tempTeam[3] = new Array ("DET", "Detroit", "Shock", "shock", "Detroit Shock", "#0051BA");
		tempTeam[4] = new Array ("HOU", "Houston", "Comets", "comets", "Houston Comets", "#C41E3A");
		tempTeam[5] = new Array ("IND", "Indiana", "Fever", "fever", "Indiana Fever", "#CE1126");
		tempTeam[6] = new Array ("LAS", "Los Angeles", "Sparks", "sparks", "Los Angeles Sparks", "#FFC61E");
		tempTeam[7] = new Array ("MIN", "Minnesota", "Lynx", "lynx", "Minnesota Lynx", "#008751");
		tempTeam[8] = new Array ("NYL", "New York", "Liberty", "liberty", "New York Liberty", "#005BBF");
		tempTeam[9] = new Array ("PHO", "Phoenix", "Mercury", "mercury", "Phoenix Mercury", "#E8DD11");
		tempTeam[10] = new Array ("SAC", "Sacramento", "Monarchs", "monarchs", "Sacramento Monarchs", "#6D28AA");
		tempTeam[11] = new Array ("SAN", "San Antonio", "Silver Stars", "silverstars", "San Antonio Silver Stars", "#999999");
		tempTeam[12] = new Array ("SEA", "Seattle", "Storm", "storm", "Seattle Storm", "#94664B");
		tempTeam[13] = new Array ("WAS", "Washington", "Mystics", "mystics", "Washington Mystics", "#26547C");


		var x = 1;
	
		//check
		while (x <= tempTeam.length) {
			if (tempTeam[x][type] == team)
				return tempTeam[x][option];
			x++;
		}
	
		//return what was passed if no comparison was made
		if (option == 5)
				return "#FFFFFF";
		else
			return team;
		
	},
	
	// PLAY-BY-PLAY HELPER FOR TEXT MANIPULATION
	pbpTextData: function(str, option) {
		
		try {
			var returnThis = "";
	
			switch (option) {
		
				case 1: {
					for (x = 0; x <= str.indexOf(")"); x++) {
						returnThis += str.charAt(x);
					}
				
					break;
				}
		
				case 2: {
					var len = ((str.indexOf("]") - str.indexOf("[")) > 4) ? str.indexOf("[") : str.indexOf("]")+1;
					for (var x = len; x <= str.length; x++) {
						returnThis += str.charAt(x);
					}
					break;
				}
		
				case 3: {
					var len = str.indexOf(")") + 1;
					for (var x = len; x <= str.length; x++) {
						returnThis += str.charAt(x);
					}
				}
		
			}
		
			return returnThis;
		}
		catch (e) { 
			this.errorLogger("Helper class error", "pbpTextData", "str="+str+",option="+option, e.message);
		}
		
	},
	
	XML2JS: function(xmlDoc, containerTag) {
		
    var output = new Array();
    var rawData = xmlDoc.getElementsByTagName(containerTag)[0];
    var i, j, oneRecord, oneObject;
    for (i = 0; i < rawData.childNodes.length; i++) {
        if (rawData.childNodes[i].nodeType == 1) {
            oneRecord = rawData.childNodes[i];
            oneObject = output[output.length] = new Object();
            for (j = 0; j < oneRecord.childNodes.length; j++) {
                if (oneRecord.childNodes[j].nodeType == 1) {
                    //oneObject = output[output.length] = new Object();
					oneObject[oneRecord.childNodes[j].tagName] = 
                        oneRecord.childNodes[j].firstChild.nodeValue;    
                }
            }
        }
    }
    return output;
		
	},
	
	//CHECK STRING FOR UNDEFINED
	checkStrUDF: function(str) {
		
		if (str == undefined || str == null)
			return true;
		else
			return false;
		
	},
	
	
	//get sibling element of given element
	getNextElement: function(node){
		if(node.nodeType==1){
			return node;
		}
		if(node.nextSibling){
			return helper.getNextElement(node.nextSibling);
		}
		return null;
	},
	
	//PLAYER'S POSITION CONVERSION
	convertPosition: function(pos) {
		
		var str = "";
		switch (pos) {
			case ("G1") : str = "G"; break;
			case ("G2") : str = "G"; break;
			case ("F1") : str = "F"; break;
			case ("F2") : str = "F"; break;
			case ("C") : str = "C"; break;
		}
	
		return str;
	},
	
	convertPORound: function(rnd) {
		
		var str = "";
		switch (rnd) {
			
			case("1") : str = "First Round"; break;
			case("2") : str = "Conference Semi-Finals"; break;
			case("3") : str = "Conference Finals"; break;
			case("4") : str = "Finals"; break;
			
		}
		
		return str;
		
	},
	
	 insertAfter: function(newElement,targetElement) {
  		var parent = targetElement.parentNode;
  			if (parent.lastChild == targetElement){
    			parent.appendChild(newElement);
  			}
  			else{
    			parent.insertBefore(newElement,targetElement.nextSibling);
  			}
	},		
	
	// GAME DATE BUILD FOR THE BOXSCORE
	boxGameDate: function(gDate) {
		
		var gameDate = new Array(2) ; 
		var gD = ""; 
		var d;
						
		//initialize gamedate array
		for (x = 0; x <= 2; x++) { gameDate[x] = ""; }
		for (x = 0; x < 4; x++) { gD += gDate.charAt(x); }
		
		gameDate[2] = gD;
		gD = "";
	
		for (x = 0; x < 2; x++) { gD += gDate.charAt(x+4); }
		gameDate[0] = gD;
		gD = "";
	
		for (x = 0; x < 2; x++) { gD += gDate.charAt(x+6); }
		gameDate[1] = gD;
		gD = "";
	
		gD = gameDate[0]; 
		d = parseInt(gD);
		switch (d) {
			case 1: gameDate[0] = "January";break;
			case 2: gameDate[0] = "February";break;
			case 3: gameDate[0] = "March";break;
			case 4: gameDate[0] = "April";break;
			case 5: gameDate[0] = "May";break;
			case 6: gameDate[0] = "June";break;
			case 7: gameDate[0] = "July";break;
			case 8: gameDate[0] = "August";break;
			case 9: gameDate[0] = "September";break;
			case 10: gameDate[0] = "October";break;
			case 11: gameDate[0] = "November";break;
			case 12: gameDate[0] = "December";break;
		}
		
		var returnThis = gameDate[0] + " " + gameDate[1] + ", " + gameDate[2];
		return returnThis;
		
	},
	
	checkElementExist: function(elementID, str, elementProp) {
		
		if (elementID == undefined || elementID == null)
			return; //do nothing or we could log all the missing
		else
			elementID[elementProp] = str;
		
	},
	
	getStyle: function(el) {
		if(el.currentStyle){
			return el.currentStyle.backgroundColor;
		}
		if(document.defaultView){
			return document.defaultView.getComputedStyle(el, '').getPropertyValue("background-color");
		}
		return null;
	},
	
	//ADD COMMAS TO NUMBERS
	addNumComma: function(num) {
		
		var regEx = new RegExp('(-?[0-9]+)([0-9]{3})');
		while (regEx.test(num)) {
			num = num.replace(regEx, '$1,$2');
		}
		
		return num;
		
	}
		
	
}


/* ********************** LAMBO **********************   */


// @name      The Fade Anything Technique
// @namespace http://www.axentric.com/aside/fat/
// @version   1.0-RC1
// @author    Adam Michela

var Fat = {
	make_hex: function (r,g,b) 
	{
		r = r.toString(16); if (r.length == 1) r = '0' + r;
		g = g.toString(16); if (g.length == 1) g = '0' + g;
		b = b.toString(16); if (b.length == 1) b = '0' + b;
		return "#" + r + g + b;
	},

	fade_all: function ()
	{
		var a = document.getElementsByTagName("*");
		for (var i = 0; i < a.length; i++) 
		{
			var o = a[i];
			var r = /fade-?(\w{3,6})?/.exec(o.className);
			if (r)
			{
				if (!r[1]) r[1] = "";
				if (o.id) Fat.fade_element(o.id,null,null,"#"+r[1]);
			}
		}
	},
	
	fade_element: function (id, from, fps, duration, to) 
	{
		if (!fps) fps = 20;
		if (!duration) duration = 2000;
		if (!from || from=="#") 
			from = "#FFFF33";
		else
			from = helper.teamNameConvert(from, 3, 5);
		
		if (!to) to = "#FFFFFF"; //this.get_bgcolor(id);
		
		var frames = Math.round(fps * (duration / 1000));
		var interval = duration / frames;
		var delay = interval;
		var frame = 0;
		
		if (from.length < 7) from += from.substr(1,3);
		if (to.length < 7) to += to.substr(1,3);
		
		var rf = parseInt(from.substr(1,2),16);
		var gf = parseInt(from.substr(3,2),16);
		var bf = parseInt(from.substr(5,2),16);
		var rt = parseInt(to.substr(1,2),16);
		var gt = parseInt(to.substr(3,2),16);
		var bt = parseInt(to.substr(5,2),16);
		
		var r,g,b,h;
		while (frame < frames)
		{
			r = Math.floor(rf * ((frames-frame)/frames) + rt * (frame/frames));
			g = Math.floor(gf * ((frames-frame)/frames) + gt * (frame/frames));
			b = Math.floor(bf * ((frames-frame)/frames) + bt * (frame/frames));
			h = this.make_hex(r,g,b);
			setTimeout("Fat.set_bgcolor('"+id+"','"+h+"')", delay);

			frame++;
			delay = interval * frame; 
		}
		setTimeout("Fat.set_bgcolor('"+id+"','"+to+"')", delay);
	},
	set_bgcolor: function (id, c)
	{
		var o = document.getElementById(id);
		if( o != undefined){
			o.style.backgroundColor = c;
		}
	},
	get_bgcolor: function (id)
	{
		var o = document.getElementById(id);
		if( o != undefined){
		while(o)
		{
			var c;
			/*
			if (window.getComputedStyle) c = window.getComputedStyle(o,null).getPropertyValue("background-color");
			if (o.currentStyle) c = o.currentStyle.backgroundColor;
			if ((c != "" && c != "transparent") || o.tagName == "BODY") { break; }
			o = o.parentNode;
			*/
			var got_style = getStyle(o);
			if(got_style != null && ! got_style.match(/rgba\s*\(0\s*,\s*0\s*,\s*0\s*,\s*0\)/)){
				
				c = got_style;
			}
			
			if (o.currentStyle) {
				c = o.currentStyle.backgroundColor; 
			} 
			if ((c != "" && c != "transparent" && !(c===undefined)) || o.tagName == "BODY") { 
				//alert("breaking: " + c);
				break; 
			}
			o = o.parentNode;
		}
		
		}
		if (c == undefined || c == "" || c == "transparent") {
			c = "#FFFFFF";
		}
		var rgb = c.match(/rgb\s*\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)/);
		
		if (rgb) {
			c = this.make_hex(parseInt(rgb[1]),parseInt(rgb[2]),parseInt(rgb[3]));
		} else {
			var rgba = c.match(/rgba\s*\((\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\)/);
			if (rgba){
				c = this.make_hex(parseInt(rgba[1]),parseInt(rgba[2]),parseInt(rgba[3]));
			}
		}
		return c;
	}
}


function Fade(objID,CurrentAlpha,TargetAlpha,steps){

          var obj = document.getElementById(objID);
          
          CurrentAlpha = parseInt(CurrentAlpha);
          if (isNaN(CurrentAlpha)){
               CurrentAlpha = parseInt(obj.style.opacity*100);
               if (isNaN(CurrentAlpha))CurrentAlpha=100;
          }
          
          var DeltaAlpha=parseInt((CurrentAlpha-TargetAlpha)/steps);
          var NewAlpha = CurrentAlpha - DeltaAlpha;
          
          obj.style.opacity = (NewAlpha / 100);
          obj.style.MozOpacity = obj.style.opacity;
          obj.style.filter = 'alpha(opacity='+NewAlpha+')';
          
          if (steps>1){
               setTimeout('Fade("'+objID+'",'+NewAlpha+','+TargetAlpha+','+(steps-1)+')', 50);
          }
}


function openCourtSideNew(gamecode){
	window.open('/csl/index.html?gamecode='+gamecode,'CourtsideLive','toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,screenX=12,screenY=12,top=12,left=12,copyhistory=0,width=760,height=643');
}


Function.prototype.bg = function(ms){
	this.PID = setInterval(this,ms);
	return this;
}
Function.prototype.kill = function(){
	clearInterval(this.PID)
}
String.prototype.onReady = function(func, divId){
	var str = this;
	return function(){
		try{
			eval("var res=("+str+")");
			if(res){
				arguments.callee.kill();
				func(res, divId)
			}
		}catch(e){
		}
	}.bg(10)
}

var html;
try{
	html = DomBuilder.apply();
}catch(e){
// loser
}


function feed_onload(jsObj, div){

	var defaultLink = '<a href="javascript:wnbaVideo(escape(\'http://broadband.nba.com/cc/playa.php?content=video&url={@vid}\'),escape(\'blank\'));"><img src="/media/homepage/bullet_video.gif" border=0> WATCH HIGHLIGHTS</a>';
    var re = new RegExp("{@vid}","g");
	
	if (jsObj.length > 1){
	
	for (var i=0;i<jsObj.length-1; i++) {
		var post = jsObj[i];
		
		if	((post.img.length)<=0){
			post.img ='/media/no_thumbnail.jpg';
		}
		d = new Date(Date.parse(post.t));
       
		
		var tab = html.DIV({ 'class': 'item'},
			html.A({href :"javascript:wnbaVideo(escape('"+post.v+"'),escape('blank'));", 'class':'vidPlay'}, 
			html.IMG({src: post.img , alt:"WNBA.com" , height:'53' , width:'70'})
			),
			html.H3(
				html.A({href:"javascript:wnbaVideo(escape('"+post.v+"'),escape('blank'));", 'class':'vidPlay'}, post.d)
			),
			html.P(
				  html.SPAN({'class':'vidText'}, post.len+' | '), 
				  html.SPAN(html.A({href:"javascript:wnbaVideo(escape('"+post.v+"'),escape('blank'));",'class':'vidText'}, 
				  				html.IMG({'class':'button',src: '/media/homepage/bullet_video.gif' , alt:"Play!" , height:'10' , width:'18'}),
				  ' Play')
				  			),
				  html.BR(),
				  html.SPAN(post.d2)
			)
	);
	
	document.getElementById(div).appendChild(tab)
	}
	
	} else {

		defaultLink = defaultLink.replace(re, hlLink);	
		thisID = helper.htmlElement(div);
		helper.checkElementExist(thisID, defaultLink, "innerHTML");		
	
	}
	
	delete jsObj;
}

function loadHighlight(id,gameurl){
	"NBAPlayer.links".onReady(feed_onload,id);
	var s = document.createElement("script");
	s.src = "http://videosearch2.nba.com/search/?sp_a=sp10038c44&sp_t=jsout&sp_q=" + encodeURIComponent(gameurl) + "&js=NBAPlayer&sp_c=1&sp_p=phrase&sp_s=postdate";
	s.language = "javascript";
	s.type="text/javascript";
	s.id = "loadScript1";
	document.body.appendChild(s);
}

function teamLink(e) {
	parent.location = '/' + this.id + '/index.html';
}


function addNumComma(num) {
		
		var regEx = new RegExp('(-?[0-9]+)([0-9]{3})');
		while (regEx.test(num)) {
			num = num.replace(regEx, '$1,$2');
		}
		
		return num;
		
	}



/****************************************************************************
END - HELPER FUNCTIONS 
****************************************************************************/

