//Global site variables
if (/labs\/dev/.test(document.URL)) { //Detect Dev site or Live site
	var site_url = 'http://www.lockerpulse.com/labs/dev/public_html/';  
} else {
	var site_url = 'http://www.lockerpulse.com/';
}
var img_url = site_url + 'images/';

//on load
addLoadListener(initOverlay);

//detect hashbang and redirect
if (/#!(.*?)/.test(window.location.hash)) {
	var hashlink = window.location.hash;
	var permalink = site_url + hashlink.replace('#!', '')	
	window.location = permalink; 
}

//Common Functions
//add functions to run upon page load
function addLoadListener(fn) {
  if (typeof window.addEventListener != 'undefined') {
    window.addEventListener('load', fn, false);
  } else if (typeof document.addEventListener != 'undefined') {
    document.addEventListener('load', fn, false);
  } else if (typeof window.attachEvent != 'undefined') {
    window.attachEvent('onload', fn);
  } else {
    var oldfn = window.onload;
    if (typeof window.onload != 'function') {
      window.onload = fn;
    } else {
      window.onload = function() {
        oldfn();
        fn();
      };
    }
  }
}

//create a request object that allows for multiple concurrent ajax requests
function multiAJAX() {
	this.request = null;
	try {
	  this.request = new XMLHttpRequest();
	} catch (trymicrosoft) {
	  try {
		this.request = new ActiveXObject("Msxml2.XMLHTTP");
	  } catch (othermicrosoft) {
		try {
		  this.request = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (failed) {
		  this.request = null;
		}
	  }
	}
}

function loadScript(file) {
	var script = document.createElement('script');
	script.type = 'text/javascript';
	script.src = site_url + "javascript/" + file;;
	document.getElementsByTagName('head')[0].appendChild(script);
}

//do nothing on an ajax request
function doNothing() {
}

//generate a random number
function randomBetween(min, max) {
  return min + Math.floor(Math.random() * (max - min + 1));
}

//validate email field
function validateEmail(email) {
  var trimmedEmail = trimWhiteSpace(email);
  if (!/^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+$/.test(trimmedEmail))  {
	  if (!/^[\w\.\-]+@([\w\-]+\.)+[a-zA-Z]+([\w\-]+\.)+[a-zA-Z]+$/.test(trimmedEmail))  {
		return false;
	  } else {
		  return true;
	  }
  } else {
	return true;
  } 
}

//validate required field
function validateRequired(text) {
  if (text == "" || /^\s+$/.test(text)) {
	return false;
  } else {
    return true;
  }
}

//validate field is numberical
function validateNumerical(num) {
  if (num != parseFloat(num, 10)) {
	return false;
  } else {
    return true;
  }
}

//compare two passwords
function validatePasswords(pass1, pass2) {
	if (pass1 == pass2){
		return true;
	} else {
		return false;
	}
}

//validate string length
function validateLength(text, low, high){
	var stringLength = text.length;
	if ((stringLength>=low) && (stringLength<=high)) {
		return true;
	} else {
		return false;
	}
}

//check that text is alphanumeric
function alphaNumericCheck(text){
	var regex = /^[0-9A-Za-z]+$/; 
	if(regex.test(text)){
		return true;
	} else {
		return false;
	}
}

//trim whitespace from a string
function trimWhiteSpace(str) {
	return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}

//format number
function formatTo(base, precision) {
  var a = roundTo(base, precision);
  var s = a.toString();

  var decimalIndex = s.indexOf(".");
  if (precision > 0 && decimalIndex < 0)  {
    decimalIndex = s.length;
    s += '.';
  }
  while (decimalIndex + precision + 1 > s.length) {
    s += '0';
  }
  return s;
}

//round number
function roundTo(base, precision) {
  var m = Math.pow(10, precision);
  var a = Math.round(base * m) / m;
  return a;
}

//swap images
function imageSwap(imageId, newSrc) {
	var oldImage = document.getElementById(imageId);
	oldImage.setAttribute('src',newSrc);
}

//show loading image in place of an id
function loadingSwap(id) {
	document.getElementById(id).innerHTML = '<img class="loading-indicator" alt="Loading..." src="' + img_url + 'loading-indicator.gif" />';
}

//find and replace html or text within an element
function textFindReplace(id, f, r) {
	var text = document.getElementById(id).innerHTML;
	var replaced = text.replace(f,r);
	document.getElementById(id).innerHTML = replaced;
	
}

//remove element with specified id
function removeElementById(id){
	var anchor = document.getElementById(id);
	if(anchor) {	
		var parent = anchor.parentNode;
		var remove = parent.removeChild(anchor);	
	}
}

//replace text of an element
function replaceText(el, text) {
  if (el != null) {
    clearText(el);
    var newNode = document.createTextNode(text);
    el.appendChild(newNode);
  }
}

//clear text of an element
function clearText(el) {
  if (el != null) {
    if (el.childNodes) {
      for (var i = 0; i < el.childNodes.length; i++) {
        var childNode = el.childNodes[i];
        el.removeChild(childNode);
      }
    }
  }
}

//get text of an element
function getText(el) {
  var text = "";
  if (el != null) {
    if (el.childNodes) {
      for (var i = 0; i < el.childNodes.length; i++) {
        var childNode = el.childNodes[i];
        if (childNode.nodeValue != null) {
          text = text + childNode.nodeValue;
        }
      }
    }
  }
  return text;
}

//checks to see if value is in array
Array.prototype.inArray = function (value) {
	var i;
	for (i=0; i < this.length; i++) {
		if (this[i] === value) {
			return true;
		}
	}
	return false;
};

//get all elements with a specific attribute
function getElementsByAttribute(attribute, attributeValue) {
  var elementArray = new Array();
  var matchedArray = new Array();
  if (document.all) {
    elementArray = document.all;
  } else {
    elementArray = document.getElementsByTagName("*");
  }
  for (var i = 0; i < elementArray.length; i++) {
    if (attribute == "class") {
      var pattern = new RegExp("(^| )" + attributeValue + "( |$)");
      if (pattern.test(elementArray[i].className)) {
        matchedArray[matchedArray.length] = elementArray[i];
      }
    } else if (attribute == "for"){
      if (elementArray[i].getAttribute("htmlFor") || elementArray[i].getAttribute("for")) {
        if (elementArray[i].htmlFor == attributeValue) {
          matchedArray[matchedArray.length] = elementArray[i];
        }
      }
    } else if (elementArray[i].getAttribute(attribute) == attributeValue) {
      matchedArray[matchedArray.length] = elementArray[i];
    }
  }
  return matchedArray;
}

//attach event listeners to an element
function attachEventListener(target, eventType, functionRef, capture) {
  if (typeof target.addEventListener != "undefined") {
    target.addEventListener(eventType, functionRef, capture);
  } else if (typeof target.attachEvent != "undefined") {
    var functionString = eventType + functionRef;
    target["e" + functionString] = functionRef;
    target[functionString] = function(event) {
      if(typeof event == "undefined"){event = window.event}; target["e" + functionString](event);
    };
    target.attachEvent("on" + eventType, target[functionString]);
  } else {
    eventType = "on" + eventType;
    if (typeof target[eventType] == "function") {
      var oldListener = target[eventType];
      target[eventType] = function() {
        oldListener();
        return functionRef();
      }
    } else {
      target[eventType] = functionRef;
    }
  }
  return true;
}

//detatch an event listener
function detachEventListener(target, eventType, functionRef, capture) {
  if (typeof target.removeEventListener != "undefined") {
    target.removeEventListener(eventType, functionRef, capture);
  } else if (typeof target.detachEvent != "undefined")  {
    target.detachEvent("on" + eventType, functionRef);
  } else  {
    target["on" + eventType] = null;
  }
  return true;
}

//get all elements of a particular class
function getElementsByClassName(oElm, strTagName, strClassName){
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	strClassName = strClassName.replace(/\-/g, "\\-");
	var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
	var oElement;
	for(var i=0; i<arrElements.length; i++){
		oElement = arrElements[i];
		if(oRegExp.test(oElement.className)){
			arrReturnElements.push(oElement);
		}
	}
	return (arrReturnElements)
}

//retreive computed CSS style
function retrieveComputedStyle(element, styleProperty) {
  var computedStyle = null;
  if (typeof element.currentStyle != "undefined") {
    computedStyle = element.currentStyle;
  } else {
    computedStyle = document.defaultView.getComputedStyle(element, null);
  }
  return computedStyle[styleProperty];
}

//disable enter key
function disableEnterKey(e) {
     var key;     
     if(window.event)
          key = window.event.keyCode; //IE
     else
          key = e.which; //firefox     

     return (key != 13);
}

//disable a form from being submitted
function disableFormSubmit(field) {
	document.getElementById(field).onsubmit = disableSubmission;
}
function disableSubmission() {
	return false;
}

//get a form field value
function getFormValue(field){
	var value = document.getElementById(field).value;
	return value;
}

//select all text within a form
function selectAll(id) {
    document.getElementById(id).focus();
    document.getElementById(id).select();
}

//retrieve a cookie
function getCookie(searchName) {
  var cookies = document.cookie.split(";");

  for (var i = 0; i < cookies.length; i++)  {
    var cookieCrumbs = cookies[i].split("=");
    var cookieName = trimWhiteSpace(cookieCrumbs[0]);
    var cookieValue = cookieCrumbs[1];

    if (cookieName == searchName)    {
      return cookieValue;
    }
  }
  return '';
}

function showLoading() {
	document.getElementById('loading').style.display = "inline";
}

function hideLoading() {
	document.getElementById('loading').style.display = "none";
}

//close the content window
function closeWindow() {
	document.getElementById("content-wrapper").style.display = "none";
	document.getElementById("content-open").style.display = "inline";
}

//open the content window
function openWindow() {
	document.getElementById("content-wrapper").style.display = "inline";
	document.getElementById("content-open").style.display = "none";	
}

function detectHomeResolution() {
	var width = screen.width;
	var height = screen.height;
	if ((width <= 1024) && (height <= 768)) {
		//document.getElementById('homepage-close').style.display = 'inline'; //show X to close homepage
		var homepage = document.getElementById('homepage');
		if (homepage) {
			homepage.style.marginLeft = '-340px'; //move spacing so user can see left nav
		}
		var content = document.getElementById('content-wrapper');
		if (content) {
			content.style.margin = '25px 0 10px -340px'; //move spacing so user can see left nav		
		}
		var gotoNews = document.getElementById('logged-in-goto-news');
		if (gotoNews) {
			removeElementById('logged-in-goto-news');
		}
	}
}

function closeHomepage() {
	document.getElementById('homepage').style.display = 'none';
}

//function goHome() { 
//	closeWindow();
//	imageSwap("background-image", img_url + "bg_1.jpg"); //swap background images - current home page background
//	document.getElementById("homepage").style.display = 'block'; //show home page content
//	detectHomeResolution(); //detect resolution
//}

//load an image for quicker image swaps
function loadImage(url) {
	var img = new Image();
	img.src = url;
}

//pre-load background images
function loadBgImages() {		
	loadImage(img_url + 'bg_1.jpg');
	loadImage(img_url + 'bg_2.jpg');
	loadImage(img_url + 'bg_3.jpg');
	loadImage(img_url + 'bg_4.jpg');	
	loadImage(img_url + '0001.bg_season.jpg');		
	loadImage(img_url + 'bg_home.jpg');		
	loadImage(img_url + 'home_nfl_bg.jpg');				
	loadImage(img_url + 'home_mlb_bg.jpg');				
	loadImage(img_url + 'home_nba_bg.jpg');				
	loadImage(img_url + 'home_nhl_bg.jpg');			
	loadImage(img_url + 'home_ncaa_bg.jpg');						
}

//append #! hashbang to URL for AJAX bookmarking and indexing
function hashbangURL(url) {
	window.location.hash = "#!" + url;
}

//displays and highlights an alert for 10 seconds before removing
function highlightAlert(id,text) {
	document.getElementById(id).innerHTML = text;
	new Effect.Highlight(id);
	setTimeout(function() {document.getElementById(id).innerHTML = '';}, 10 * 1000); //wait 10 seconds before removing alert
}

//return a keyboard key
function getKey(e) {
	 var key;     
     if(window.event) {
          key = window.event.keyCode; 
	 } else {
          key = e.keyCode; 		  
	 }
	return key;
}


//End Common Functions

//Left Nav

//toggle viewable league on left nav
function displayNavigation(displayLeague) {	
	var check = document.getElementById(displayLeague + '-headlines');
	if (check.style.display != "none") {
		Effect.BlindUp(check);
	//else hide all leagues and blind down selected league
	} else {
		var leagues = new Array('nfl','mlb','nba', 'nhl');
		var hideDiv = '';
		for (var i = 0; i < leagues.length; i++) {
			hideDiv = leagues[i] + '-headlines';
			document.getElementById(hideDiv).style.display = "none";
		}
		Effect.toggle(displayLeague + '-headlines','blind');
	}
}

//Right Nav
function toggleSettings() {
	Effect.toggle('right-nav-logged-in-settings','blind', { duration: 0.5 });
}


//Contact Form

var contactTextAreaDefault = "Questions, feedback, suggestions...";

//expand contact form
function contactFocus(type) {    
	var textarea = document.getElementById("contact-message");
	var heading  = document.getElementById("contact-heading");
	if (type == 'contact') {
		heading.innerHTML = 'Contact Us';
	} else if (type == 'feedback') {
		heading.innerHTML = 'How can we make LockerPulse better?';
	}
    if (textarea.value == contactTextAreaDefault) {
		textarea.value="";
	}
    textarea.className = "contact-full"; //expand textarea
	document.getElementById("contact-error").style.display = 'none'; //hide error	
    document.getElementById("contact-hidden").style.display = 'inline'; //show rest of form
    document.getElementById("contact-close").style.display = 'inline'; //show close button
	document.getElementById("contact-form").style.zIndex = '4';
	document.getElementById("contact-form").style.display = 'block';
}

//close contact form
function contactClose() {
	document.getElementById("contact-content").style.display = 'inline'; //display original content
	document.getElementById("contact-complete").style.display = 'none';	//hide completed message	
	var textarea = document.getElementById("contact-message");
	textarea.value = contactTextAreaDefault;
	textarea.className = "contact-pre";
    document.getElementById("contact-hidden").style.display = 'none';
    document.getElementById("contact-close").style.display = 'none';	
	document.getElementById("contact-form").style.zIndex = '0';
}

//submit contact form
var contactUsAJAX = new multiAJAX();

function contactUs() {
	var textarea = getFormValue("contact-message");
	var email = getFormValue("contact-email");
	var error = document.getElementById("contact-error");
	error.style.display = 'none';	
	//validate form
	if ( (validateEmail(email)) && (validateRequired(textarea))  ) {
		document.getElementById("contact-button").style.display = 'none';
		document.getElementById("contact-loading").style.display = 'inline';
		var url = site_url + "javascript/ajax/contact.php";
		contactUsAJAX.request.open("POST", url, true);	
		contactUsAJAX.request.onreadystatechange = updateContact;	
		contactUsAJAX.request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		contactUsAJAX.request.send("email=" + escape(email) + "&message=" + escape(textarea));	
	} else {
		error.style.display = 'inline';
	}
}


function updateContact() {
	if (contactUsAJAX.request.readyState == 4) {
		if (contactUsAJAX.request.status == 200) {			
			var xmlDoc = contactUsAJAX.request.responseXML;
			var success = xmlDoc.getElementsByTagName("success")[0].firstChild.nodeValue;
			if (success == 'y') {
				document.getElementById("contact-error").style.display = 'none'; //hide error				
				document.getElementById("contact-content").style.display = 'none'; //hide original content
				document.getElementById("contact-complete").style.display = 'inline';	//display completed message	
			} else if (success == 'n') {
				document.getElementById("contact-error").style.display = 'inline';
			}			
			document.getElementById("contact-loading").style.display = 'none'; //turn off loading
			document.getElementById("contact-button").style.display = 'inline';	//display send button		
			
		}
	}			
}

//hide contact form - used during asynchronous page loads
function hideContactForm() {
	var contact = document.getElementById('contact-form');
	if (contact) {
		contact.style.display = 'none';
	}
}

//display contact form
function showContactForm() {
	var contact = document.getElementById('contact-form');
	if (contact) {
		contact.style.display = 'inline';
	}

}


//Footer
function toggleFooter() {
	var img = document.getElementById("more-symbol").src;	
	if (img == img_url + 'more-plus.png') { //footer is closed
		new Effect.Morph('footer-copy', {
		  style: 'height:170px; width:250px;', // CSS Properties
		  duration: 0.8 // Core Effect properties		  
		});	
		imageSwap("more-symbol", img_url + "more-minus.png");
	} else { //footer is open
		new Effect.Morph('footer-copy', {
		  style: 'height:20px; width:90px;', // CSS Properties
		  duration: 0.8 // Core Effect properties		  
		});
		imageSwap("more-symbol", img_url + "more-plus.png");		
	}	
}

//Login form
function loginToggle(direction) {
	var openedDiv = document.getElementById('login-opened');
	var closedDiv = document.getElementById('login-closed');
	if (direction == 'open') {
		new Effect.Morph('login', {
		  style: 'height:50px; width:350px;', // CSS Properties
		  duration: 0.8, // Core Effect properties
		  afterFinish: loginShowForm
		});
		closedDiv.style.display = 'none';		
	} else if (direction == 'close') {
		new Effect.Morph('login', {
		  style: 'height:0px; width:100px;', // CSS Properties
		  duration: 0.8 // Core Effect properties		  
		});
		closedDiv.style.display = 'inline';
		openedDiv.style.display = 'none';
	}
		
}

function loginShowForm() {
	document.getElementById('login-opened').style.display = 'inline';
}

function validateLogin() {
	var errorDiv = document.getElementById("login-error");
	var name = getFormValue("login-name");
	var password = getFormValue("login-password");
	
	errorDiv.innerHTML = ""; //empty out error 
	
	if ((validateLength(name, 6, 100)) && (name != 'Username or Email') &&  (validateLength(password, 6, 40)))  {
		return true;
	} else {
		errorDiv.innerHTML = "Invalid information. Please try again";
		return false;		
	}
													   
	
}

function loginNameFocus() {
	var name = document.getElementById('login-name');
	var nameVal = getFormValue('login-name');
	if (nameVal == 'Username or Email') {
		name.className = 'login-focused';
		name.value = '';
		//swap password fields
		document.getElementById('pre-login-password').style.display = 'none';
		document.getElementById('login-password').style.display = 'inline';	
	}
}

function loginNameBlur() {
	var name = document.getElementById('login-name');
	var nameVal = getFormValue('login-name');
	if (nameVal == '') {
		name.className = 'login-input';
		name.value = 'Username or Email';
	}
}

function loginPasswordFocus() {
	document.getElementById('pre-login-password').style.display = 'none';
	document.getElementById('login-password').style.display = 'inline';	
	document.getElementById('login-password').focus();
}

function loginPasswordBlur() {
	var passVal = getFormValue('login-password');
	if (passVal == '') {
		document.getElementById('login-password').style.display = 'none';		
		document.getElementById('pre-login-password').style.display = 'inline';
	}
}

//Home page league tabs
function loadHomepageTeams(league) {
	var leagues = new Array('nfl','mlb','nba', 'nhl', 'ncaa');
	var hideDiv = '';
	for (var i = 0; i < leagues.length; i++) {
		hideDiv = document.getElementById(leagues[i] + '-row-teams');
		hideDiv.style.display = "none";
		iconDiv = document.getElementById(leagues[i] + '-icon');
		iconDiv.style.backgroundPosition = "";
	}
	document.getElementById(league + '-row-teams').style.display = "block";
	document.getElementById(league + '-icon').style.backgroundPosition = "0 -41.5px";	
}


//News Reader

var updateTeamPageAJAX = new multiAJAX(); //used for all 3 calls below

//get team news with ajax call
function showTeamNews(team_permalink) {
	showLoading();
	var url = site_url + "javascript/ajax/show_team_news.php";
	updateTeamPageAJAX.request.open("POST", url, true);	
	updateTeamPageAJAX.request.onreadystatechange = updateTeamPage;	
	updateTeamPageAJAX.request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	updateTeamPageAJAX.request.send("team_permalink=" + escape(team_permalink));	
}

//get headline news with ajax call
function showHeadlineNews(source_id) {
	showLoading();
	var url = site_url + "javascript/ajax/show_headline_news.php";
	updateTeamPageAJAX.request.open("POST", url, true);	
	updateTeamPageAJAX.request.onreadystatechange = updateTeamPage;	
	updateTeamPageAJAX.request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	updateTeamPageAJAX.request.send("source_id=" + escape(source_id));	
}

//get news page with ajax call
function showStory(news_id) {
	showLoading();
	var url = site_url + "javascript/ajax/show_permalink.php";
	updateTeamPageAJAX.request.open("POST", url, true);	
	updateTeamPageAJAX.request.onreadystatechange = updateTeamPage;	
	updateTeamPageAJAX.request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	updateTeamPageAJAX.request.send("news_id=" + escape(news_id));	
}

//update page with headlines
function updateTeamPage() {
	if (updateTeamPageAJAX.request.readyState == 4) {
		if (updateTeamPageAJAX.request.status == 200) {			
			var xmlDoc = updateTeamPageAJAX.request.responseXML;
			var content = xmlDoc.getElementsByTagName("content")[0].firstChild.nodeValue;
			var bg = xmlDoc.getElementsByTagName("background")[0].firstChild.nodeValue;
			var scrollto = xmlDoc.getElementsByTagName("scroll")[0].firstChild.nodeValue;
			var hashbang = xmlDoc.getElementsByTagName("hashbang")[0].firstChild.nodeValue;
			document.getElementById("content").innerHTML = content;			
			initRead(); //use cookie to mark items as read
			document.getElementById("homepage").style.display = 'none'; //hide home page content
			imageSwap("background-image", img_url + bg); //swap background images
			openWindow();
			Effect.ScrollTo(scrollto);
			hideMyNewsFilter();
			hideLoading();	
			initOverlay();
			hashbangURL(hashbang);			
			teamPageLogInCheck();
			activateKeyboardShortcuts()			
		}
	}			
}

//change style for articles that have been previously read
function initRead(){
    var readCookie = getCookie('read');
    var cookieSplit = new Array();
    cookieSplit = readCookie.split(':');
    var numRead = cookieSplit.length - 1;
    for (i=0; i < numRead; i++) {
        var currentTitle = document.getElementById('title-' + cookieSplit[i]);
		var currentColor = document.getElementById('color-' + cookieSplit[i]);
        if ((currentTitle) && (currentTitle.className == 'story-title')){
            currentTitle.className = 'story-title-read';
			faviconRead(cookieSplit[i]);
			if (currentColor) {
				currentColor.style.color = '';
			}
        }
    }

}

function faviconRead(id) {
	var icon = document.getElementById('icon-' + id);
	var src = icon.src;
	if (!/_viewed.png/.test(src)) {
		icon.src = src.replace(/.png/,"_viewed.png");		
	}	
}

var toggleStoryAJAX = new multiAJAX();

function toggleStory(news_id) {
    //get key elements of story
    var description = document.getElementById('description-' + news_id);
    var story = document.getElementById('story-' + news_id);
    var title = document.getElementById('title-' + news_id);
	var close_x = document.getElementById('story-x-' + news_id);
	var color = document.getElementById('color-' + news_id);
	var color_fantasy_id = 'color-' + news_id + '-';
	var color_fantasy = document.getElementById(color_fantasy_id + '0'); 
	currentKeyStory = news_id;  //for keyboard shortcuts
	//set cookie expiration date for Adam's 100th Birthday'
    var expireDate = new Date("August 31, 2082");
    var cookieDate = expireDate.toGMTString();
    //change title class to read and set cookie
    if (title.className == 'story-title'){
        title.className = 'story-title-read';
        var currentCookie = getCookie('read');
        document.cookie = "read=" + currentCookie + news_id + ":;domain=lockerpulse.com;path=/;expires=" + cookieDate ;   
    }
    //toggle display
    var currentState = description.style.display;
    if (currentState == 'none') {
        description.style.display = '';	
		story.className = 'story-read';
		close_x.style.display = "inline"; //display X to close story
		
		faviconRead(news_id); //gray out icon		
		
		if (color) { //gray out team tag		
			color.style.color = '#AAA';
			color.style.borderColor = '#AAA';
			color.style.backgroundColor = '#FFF';			
		} else if (color_fantasy) {
			var current_fantasy_color = '';
			var current_fantasy_num = getElementsByClassName(title,'span','team-tag');
			for (var i = 0; i < current_fantasy_num.length; i++) {
				current_fantasy_color = document.getElementById(color_fantasy_id + i);
				current_fantasy_color.style.color = '#AAA';
				current_fantasy_color.style.borderColor = '#AAA';
				current_fantasy_color.style.backgroundColor = '#FFF';			
			}
		}
		
		//record click in database
		var url = site_url + "javascript/ajax/record_click.php";
		toggleStoryAJAX.request.open("POST", url, true);	
		toggleStoryAJAX.request.onreadystatechange = doNothing;	
		toggleStoryAJAX.request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		toggleStoryAJAX.request.send("news_id=" + escape(news_id));	
		
    } else {
        description.style.display = 'none';
		story.className = 'story';
		close_x.style.display = "none";
    }    
}

function subscribeText(text) {
    var subscribe = document.getElementById('subscribe-message');    
    subscribe.innerHTML = text;
    if (text == 'Subscribe: '){
        subscribe.style.color = '#FFF';
    } else {
        subscribe.style.color = '#FFF';
    }
}

//commenting
var submitCommentAJAX = new multiAJAX();

function submitComment(news_id) {	
	var comment = getFormValue("comment-content");
	if (validateLength(comment,1,100000)) {
		showLoading();
		var url = site_url + "javascript/ajax/insert_comment.php";
		submitCommentAJAX.request.open("POST", url, true);	
		submitCommentAJAX.request.onreadystatechange = updateComments;	
		submitCommentAJAX.request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		submitCommentAJAX.request.send("news_id=" + escape(news_id) + "&comment=" + escape(comment));	
	} else {
		document.getElementById("comments-alert").innerHTML = 'Please enter a comment!';
	}
}

//update page with headlines
function updateComments() {
	if (submitCommentAJAX.request.readyState == 4) {
		if (submitCommentAJAX.request.status == 200) {			
			var xmlDoc = submitCommentAJAX.request.responseXML;
			var comments = xmlDoc.getElementsByTagName("comments")[0].firstChild.nodeValue;			
			document.getElementById('comments-current').innerHTML = comments; //populate new comments
			document.getElementById("comment-content").value = ''; //clear textarea
			hideLoading();
			document.getElementById("comments-alert").innerHTML = 'Comment posted successfully!';//display message
			new Effect.Highlight('comments-current');
			new Effect.Highlight('comments-alert');
		}
	}			
}

//hide news filter if logged in and not on My News tab
function hideMyNewsFilter() {
	if (document.getElementById('my-news-filter')) {
		var filter = document.getElementById('my-news-filter');
		filter.innerHTML = '';
		filter.style.marginBottom = '0';
	}
}

//check if user is logged in on team page and if so delete subscribe buttons and upsell messages
function teamPageLogInCheck() {
	var subscribe = document.getElementById('subscribe-icons');
	var upsell = document.getElementById('message-default');
	if (getCookie('saved_username')) {
		if (subscribe) {
			subscribe.style.display = 'none';
		}
		if (upsell) {
			upsell.style.display = 'none';
		}
	}
}

//search engine
function slideOpenSearch() {
	var searchDiv = document.getElementById('search-left-nav');
	var searchInput = document.getElementById('search-input');	
	var searchClose = document.getElementById('search-close');	
	
	document.getElementById('left-nav').className = 'left-nav-above';
	searchDiv.style.width = '425px';
	searchDiv.style.overflow = 'visible';
	searchDiv.style.zIndex = '4';
	searchDiv.style.backgroundColor = '#DDD';	
	searchInput.style.width = '300px';
	searchInput.style.display = 'inline';
	searchClose.style.display = 'inline';		
}

function slideCloseSearchBox() {
	var searchDiv = document.getElementById('search-left-nav');
	var searchInput = document.getElementById('search-input');	
	var searchClose = document.getElementById('search-close');	
	var searchButton = document.getElementById('search-button-left-nav');

	document.getElementById('left-nav').className = 'left-nav-below';
	searchDiv.style.overflow = 'hidden';
	searchDiv.style.zIndex = '1'; 	
	searchDiv.style.backgroundColor = '';			
	searchButton.disabled = true;
	searchClose.style.display = 'none';	
	
	new Effect.Morph('search-left-nav', {
	  style: 'width:120px;', // CSS Properties
	  duration: 1.0 // Core Effect properties	
	});	
	new Effect.Morph('search-input', {
	  style: 'width:0px;', // CSS Properties
	  duration: 0.8, // Core Effect properties	
	  afterFinish: slideCloseSearchFinish  
	});					
}


function slideCloseSearchFinish	() {
	document.getElementById('search-input').style.display = 'none';
	document.getElementById('search-button-left-nav').disabled = false;
}



function enterKeySearch(e) {
     var key;     
     if(window.event) {
          key = window.event.keyCode; //IE
	 } else {
          key = e.which; //firefox     
	 }
     if (key == 13) {
		 liveSearch();
	 }
	 return (key != 13);
}

function liveSearch() {
	var q = getFormValue('q');
	if (validateLength(q,1,100000)) {
		performSearch(escape(q), 'ajax')
	}
}

var searchAJAX = new multiAJAX();

function performSearch(q, type) {
	if (type == 'ajax') { //if from original page load don't append original query in hashbang
		hashbangURL('search?q=' + q); //append URL
	}
	performTwitterSearch(q); //start Twitter search concurrently 
	document.getElementById('search-lp').style.display = 'inline';
	document.getElementById('search-lp-loading').style.display = 'inline';
	document.getElementById('search-lp-results').style.display = 'none';
	var url = site_url + "javascript/ajax/search.php";
	searchAJAX.request.open("POST", url, true);	
	searchAJAX.request.onreadystatechange = updateSearch;	
	searchAJAX.request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	searchAJAX.request.send("q=" + escape(q));	
}


//update page with headlines
function updateSearch() {
	if (searchAJAX.request.readyState == 4) {
		if (searchAJAX.request.status == 200) {			
			var xmlDoc = searchAJAX.request.responseXML;
			var results = xmlDoc.getElementsByTagName("results")[0].firstChild.nodeValue;			
			document.getElementById('search-lp-loading').style.display = 'none';
			document.getElementById('search-lp-results').innerHTML = results;
			document.getElementById('search-lp-results').style.display = 'inline';
		}
	}			
}


var TwitterSearchAJAX = new multiAJAX();

function performTwitterSearch(q) {
	document.getElementById('search-tw').style.display = 'inline';
	document.getElementById('search-tw-header').style.display = 'inline';
	document.getElementById('search-tw-loading').style.display = 'inline';
	document.getElementById('search-tw-results').style.display = 'none';
	var url = site_url + "javascript/ajax/search_twitter.php";
	TwitterSearchAJAX.request.open("POST", url, true);	
	TwitterSearchAJAX.request.onreadystatechange = updateTwitterSearch;	
	TwitterSearchAJAX.request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	TwitterSearchAJAX.request.send("q=" + escape(q));	
}


//update page with headlines
function updateTwitterSearch() {
	if (TwitterSearchAJAX.request.readyState == 4) {
		if (TwitterSearchAJAX.request.status == 200) {			
			var xmlDoc = TwitterSearchAJAX.request.responseXML;
			var results = xmlDoc.getElementsByTagName("results")[0].firstChild.nodeValue;			
			document.getElementById('search-tw-loading').style.display = 'none';
			document.getElementById('search-tw-results').innerHTML = results;
			document.getElementById('search-tw-results').style.display = 'inline';
		}
	}			
}


var recordSearchClickAJAX = new multiAJAX();

function recordSearch(search_id, news_id, result_num) {
	var url = site_url + "javascript/ajax/search_record_click.php";
	recordSearchClickAJAX.request.open("POST", url, true);	
	recordSearchClickAJAX.request.onreadystatechange = doNothing;	
	recordSearchClickAJAX.request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	recordSearchClickAJAX.request.send("search_id=" + escape(search_id) + "&news_id=" + escape(news_id) + "&result_num=" + escape(result_num));	
}

//Widget
function widgetChangeTeam() {
	var newTeam = getFormValue('widget_team_drop'); //get new team
	var currentTeam = document.getElementById('current-team').value; //get current team from form
	var iframe = document.getElementById('sample-widget'); //get iframe 
	var textarea = document.getElementById('widget_code'); //get textarea
	//update textarea
	var newTextarea = textarea.value.replace('team=' + currentTeam, 'team=' + newTeam); 
	textarea.value = newTextarea;
	//display new widget
	var newSrc = iframe.src.replace('team=' + currentTeam, 'team=' + newTeam); 
	iframe.src = newSrc;
	//update current team variable
	document.getElementById('current-team').value = newTeam;
	
}

function widgetChangeSize() {
	var newSize = getFormValue('widget_size_drop'); //get new size	
	var newSizeText = document.getElementById('size_drop_' + newSize).innerHTML; //grab text to parse width and height
	var width = parseInt(newSizeText.replace(/\sx\s[0-9]+/, "")); //strip "x" and second number
	var height = parseInt(newSizeText.replace(/[0-9]+\sx\s/, ""));	 //strip first number and "x"
	var currentSize = document.getElementById('current-size').value; //get current size from form
	var iframe = document.getElementById('sample-widget'); //get iframe 
	var textarea = document.getElementById('widget_code'); //get textarea
	//update textarea
	var newTextarea = textarea.value.replace('size=' + currentSize, 'size=' + newSize); 
	newTextarea = newTextarea.replace(/\swidth="[0-9]+"\s/g, ' width="' + width + '" '); 
	newTextarea = newTextarea.replace(/\sheight="[0-9]+"\s/g, ' height="' + height + '" '); 
	textarea.value = newTextarea;
	//display new widget
	var newSrc = iframe.src.replace('size=' + currentSize, 'size=' + newSize); 
	iframe.src = newSrc;
	iframe.width = width;
	iframe.height = height;
	//update preview text
	document.getElementById('preview-text').innerHTML = 'Preview - ' + width + ' x ' + height;
	//update current team variable
	document.getElementById('current-size').value = newSize;
}

// Ad Platform
function adNoImage(img) {
    img.onerror = "";
    img.src =  img_url + 'ads_no_img.png';
}

var recordAdClickAJAX = new multiAJAX();

function recordAdClick(type, value, affiliate, category, heading_id, site) {
	var url = site_url + "javascript/ajax/ads_record_click.php";
	recordAdClickAJAX.request.open("POST", url, true);	
	recordAdClickAJAX.request.onreadystatechange = doNothing;	
	recordAdClickAJAX.request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	recordAdClickAJAX.request.send("type=" + escape(type) + "&value=" + escape(value) + "&affiliate=" + escape(affiliate) + "&category=" + escape(category) + "&heading_id=" + escape(heading_id) + "&site=" + escape(site));	
}

//Custom Overlay

//detect links for overlay on load
function initOverlay() {
	//for standard overlays
	var top = document.getElementById('top'); //on body tag
	if (top) {
		var overlays = getElementsByClassName(top, "a","overlay-link");
		for (var i = 0; i < overlays.length; i++) {
			attachEventListener(overlays[i],"click",prepOverlay,false);
		}
		//for email sharing
		var overlays_email = getElementsByClassName(top, "a","overlay-email");
		for (var i = 0; i < overlays_email.length; i++) {
			attachEventListener(overlays_email[i],"click",prepOverlaySharingEmail,false);
		}
		//forgot password
		var overlays_pass = getElementsByClassName(top, "a","overlay-forgot-password");
		for (var i = 0; i < overlays_pass.length; i++) {
			attachEventListener(overlays_pass[i],"click",prepOverlayForgotPassword,false);
		}
		//for team info
		var overlays_team = getElementsByClassName(top, "a","overlay-team-info");
		for (var i = 0; i < overlays_team.length; i++) {
			attachEventListener(overlays_team[i],"click",prepOverlayTeamInfo,false);
		}
		//attach events
		attachEventListener(document.getElementById('overlay-close'),"click",closeOverlay,false);
		attachEventListener(document.getElementById('overlay-outer'),"click",closeOverlay,false);
	}
}

//create iframe with overlay page in it
function createOverlay(url) {
	var iframeLoc = document.getElementById('overlay-iframe-wrapper');
	//check for an existing iframe and remove
	var oldIframe = document.getElementById('overlay-iframe');
	if (oldIframe) {
		iframeLoc.removeChild(oldIframe);
	} 
	//create new iframe
	var iframeLoc = document.getElementById('overlay-iframe-wrapper');
	var iframe = document.createElement("iframe");
	iframe.id = 'overlay-iframe';
	//iframe.className = 'overlay-hide'; //hide iframe while it loads (this slows down perceived loading time, useful to show loading graphic)
	//document.getElementById('overlay-iframe-loading').className = 'overlay-show'; //show loading div
	iframe.setAttribute('src',url);
	iframe.setAttribute('width','100%');
	iframe.setAttribute('height','100%');
	iframe.setAttribute('scrolling','auto');
	iframe.setAttribute('frameborder','0');
	iframe.setAttribute('marginheight','0');
	iframe.setAttribute('marginwidth','0');	
	iframeLoc.appendChild(iframe);
	//attachEventListener(document.getElementById('overlay-iframe'),"load",showOverlayContent,false);	//show content once iframe is loaded	
	showOverlayContent();
}

//prep overlay for various custom sizes
function prepOverlay(event) {
	if(event.preventDefault) {
		event.preventDefault(); //allows us to return false so that href doesn't work
	} else {
		event.returnValue = false;
	}
	document.getElementById('overlay-inner').className = 'overlay-size-full';
	var url = this.getAttribute('href');
	showOverlay(url);
	return false;
}

function prepOverlaySharingEmail(event) {
	if(event.preventDefault) {
		event.preventDefault(); //allows us to return false so that href doesn't work
	} else {
		event.returnValue = false;
	}
	document.getElementById('overlay-inner').className = 'overlay-size-share-email';
	var url = this.getAttribute('href');
	showOverlay(url);
	return false;
}

function prepOverlayForgotPassword(event) {
	if(event.preventDefault) {
		event.preventDefault(); //allows us to return false so that href doesn't work
	} else {
		event.returnValue = false;
	}
	document.getElementById('overlay-inner').className = 'overlay-size-forgot-password';
	var url = this.getAttribute('href');
	showOverlay(url);
	return false;
}

function prepOverlayTeamInfo(event) {
	if(event.preventDefault) {
		event.preventDefault(); //allows us to return false so that href doesn't work
	} else {
		event.returnValue = false;
	}	
	document.getElementById('overlay-inner').className = 'overlay-size-team-info';
	var url = this.getAttribute('href');
	showOverlay(url);
	return false;
}


//pull up overlay for user to see
function showOverlay(url) {	
	if (!checkOverlay(url)) { 
		createOverlay(url);
	}
	document.getElementById('overlay-container').className = 'overlay-show';	
}

//check to see if overlay needs to be created
function checkOverlay(url) {
	var iframe = document.getElementById('overlay-iframe');	
	if ( (iframe) && (iframe.getAttribute('src') == url) ) {
		return true;
	} else {
		return false;
	}
}

//show overlay content once loaded
function showOverlayContent() {
	document.getElementById('overlay-iframe').className = 'overlay-show';
	document.getElementById('overlay-iframe-loading').className = 'overlay-hide';	
}

//hide overlay from user, destroy iframe
function closeOverlay() {
	document.getElementById('overlay-container').className = 'overlay-hide';
	var iframeLoc = document.getElementById('overlay-iframe-wrapper');
	var oldIframe = document.getElementById('overlay-iframe');
	if (oldIframe) {
		iframeLoc.removeChild(oldIframe);
	}
}

//My News
var titleTag = 'My News'; //global title tag to modify when news is available
var currentKeyStory = 0; //global variable for keyboard shortcuts

//global variables so we can stop timer
var newsTimer = ''; 
var newsTimerInit = ''; 
var playersTimer = ''; 
var playersTimerInit = ''; 
var scoreboardTimer = ''; 
var scoreboardTimerInit = ''; 
var scoreboardOverlayTimer = ''; 


function initTitleTag() {
	titleTag = document.title;
}

function validateNewEmail() {
	var email = getFormValue('email');
	if ((validateEmail(email)) && (validateRequired(email)) && (validateLength(email, 1, 100))) {
		return true;
	} else {
		document.getElementById('change-email-error').innerHTML = 'Invalid email address';
		new Effect.Highlight('change-email-error');
		return false;
	}
}

function validateNewPassword() {
	var old_password = validateLength(getFormValue("old_password"), 6, 40);
	var password = validateLength(getFormValue("password"), 6, 40);
	var password2 = validateLength(getFormValue("password2"), 6, 40);
	var compare = validatePasswords(getFormValue("password"), getFormValue("password2"))
	if ((old_password) && (password) && (password2) && (compare)) {
		return true;
	} else {
		if ((old_password) && (password) && (password2)) {
			var error = 'Passwords do not match';
		} else {
			var error = 'Passwords must be at least 6 characters long';
		}
		var ErrorDiv = document.getElementById("change-password-error");
		ErrorDiv.innerHTML = error;	
		new Effect.Highlight('change-password-error');
		return false;
	}
}

//setup overlay on first login
function activateUserSetupOverlay() {
	document.getElementById('overlay-inner').className = 'overlay-size-team-setup';
	var url = site_url + 'overlays/set_teams.php';
	//prevent closing of overlay
	detachEventListener(document.getElementById('overlay-close'),"click",closeOverlay,false);
	detachEventListener(document.getElementById('overlay-outer'),"click",closeOverlay,false);
	//display overlay
	showOverlay(url); 
	document.getElementById('overlay-close').style.display = 'none';
}

//customize background wallpaper
var changeBackgroundAJAX = new multiAJAX();

function changeBackground(custom_background) {
	showAjaxLoading();
	var url = site_url + "javascript/ajax/custom_background.php";
	changeBackgroundAJAX.request.open("POST", url, true);		
	var custom_background = 'bg_' + custom_background + '.jpg';
	changeBackgroundAJAX.request.onreadystatechange = updateBackgroundImage;	
	changeBackgroundAJAX.request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	changeBackgroundAJAX.request.send("custom_background=" + escape(custom_background));		
}

function updateBackgroundImage() {
	if (changeBackgroundAJAX.request.readyState == 4) {
		if (changeBackgroundAJAX.request.status == 200) {			
			var xmlDoc = changeBackgroundAJAX.request.responseXML;
			var bg = xmlDoc.getElementsByTagName("bg")[0].firstChild.nodeValue;
			//swap images
			imageSwap("background-image", img_url + bg);
			//highlight correct thumbnail	
			clearWallpaperClasses();		
			bg = bg.replace(/.jpg/,"");
			bg = bg.replace(/bg_/,"");
			document.getElementById('custom-background-' + bg).className = 'change-background-wallpaper-selected';
			//show saved notification
			document.getElementById('change-background-error').innerHTML = 'Background Image Saved!';
			new Effect.Highlight('change-background-error');
			hideAjaxLoading();
		}
	}			
}

function clearWallpaperClasses() {
	var bgOptions = document.getElementById('change-background-options');
	for (var i = 0; i < bgOptions.childNodes.length; i++) {
		bgOptions.childNodes[i].className = 'change-background-wallpaper';
	}
}

function showCustomBackgroundForm() {
	clearWallpaperClasses();
	document.getElementById('custom-background-user').className = 'change-background-wallpaper-selected';
	document.getElementById('change-background-upload').style.display = 'inline';
}

//on first overlay close, load tab
function firstNewsLoad() {
	loadTab('news');
	scoreboardOverlay();
}

function showAjaxLoading() {
	var loadingDiv = document.getElementById("loading-dropdown");
	if (loadingDiv) {
		loadingDiv.style.display = 'inline';
		imageSwap('close-window-image', site_url + "images/ajax-sending.gif");
	}
}

function hideAjaxLoading() {
	var loadingDiv = document.getElementById("loading-dropdown");
	if (loadingDiv) {
		loadingDiv.style.display = 'none';
		imageSwap('close-window-image', site_url + "images/close_window.png");
	}
}

function loadAjaxImage() {
	loadImage(img_url + 'ajax-sending.gif');
	loadImage(img_url + 'loading-circle.gif');
	loadImage(img_url + 'loading-indicator.gif');	
	
}

var teamUnsubscribeAJAX = new multiAJAX();

function teamUnsubscribe(team_id) {
	showAjaxLoading();
	var url = site_url + "javascript/ajax/team_unsubscribe.php";
	teamUnsubscribeAJAX.request.open("POST", url, true);	
	teamUnsubscribeAJAX.request.onreadystatechange = updateTeamUnsubscribe;	
	teamUnsubscribeAJAX.request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	teamUnsubscribeAJAX.request.send("team_id=" + escape(team_id));	
}

function updateTeamUnsubscribe() {
	if (teamUnsubscribeAJAX.request.readyState == 4) {
		if (teamUnsubscribeAJAX.request.status == 200) {			
			var xmlDoc = teamUnsubscribeAJAX.request.responseXML;
			var team_id = xmlDoc.getElementsByTagName("team")[0].firstChild.nodeValue;
			removeElementById('team-' + team_id);
			hideAjaxLoading();
			displaySavedNotification();
		}
	}			
}

var sourceToggleAJAX = new multiAJAX();

function sourceToggle(source_id) {
	showAjaxLoading();
	var url = site_url + "javascript/ajax/source_toggle.php";
	sourceToggleAJAX.request.open("POST", url, true);	
	sourceToggleAJAX.request.onreadystatechange = updateSourceToggle;	
	sourceToggleAJAX.request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	sourceToggleAJAX.request.send("source_id=" + escape(source_id));	
}

function updateSourceToggle() {
	if (sourceToggleAJAX.request.readyState == 4) {
		if (sourceToggleAJAX.request.status == 200) {			
			var xmlDoc = sourceToggleAJAX.request.responseXML;
			var source_id = xmlDoc.getElementsByTagName("source")[0].firstChild.nodeValue;
			var result = xmlDoc.getElementsByTagName("result")[0].firstChild.nodeValue;
			var sourceDiv = document.getElementById('source-' + source_id);
			if (result == 'unsubscribe') {
				sourceDiv.className = 'unsubscribed';
				textFindReplace('source-' + source_id, 'UNSUBSCRIBE', 'SUBSCRIBE');
			} else if (result == 'subscribe') {
				sourceDiv.className = 'subscribed';
				textFindReplace('source-' + source_id, 'SUBSCRIBE', 'UNSUBSCRIBE');				
			}
			hideAjaxLoading();
			displaySavedNotification();
		}
	}			
}

function displaySavedNotification() {
	document.getElementById('team-modify-error').innerHTML = 'Settings saved!';
	new Effect.Highlight('team-modify-error');
}

function validateNewTeam() {
	var team = getFormValue('add-team-1');
	if (validateRequired(team)) {		
		return true;
	} else {
		document.getElementById('add-team-error').innerHTML = 'Please select a team';
		new Effect.Highlight('add-team-error');
		return false;
	}
}

//Tabs
function hashTabURL(tab) {	
		window.location.hash = "#?tab=" + tab;	
}

function initDetectHashTab() {
	if (/#?tab=(.*?)/.test(window.location.hash)) {
		var hashlink = window.location.hash;
		var tab = hashlink.replace('#?tab=', '');
		if (checkValidHashTab(tab))	{
			loadTab(tab);
		}
	}
}

function checkValidHashTab(tab) {
	if ((tab == 'news') || (tab == 'settings') || (tab == 'sources'))	{
		return false;
	} else {
		return true;
	}
}


var loadTabAJAX = new multiAJAX();

function loadTab(tab,preload) {
	stopNewsCheck();
	stopScoreboardCheck();	
	stopPlayersCheck();
	stopKeyboardShortcuts();
	if (tab == 'settings') {
		toggleSettings();
	}
	if (((tab == 'news') || (tab == 'players') )&& (!preload)) {
		var tabContentDiv = document.getElementById('tab-content');
		if (tabContentDiv) { //tab content div isn't available on permalink pages
			tabContentDiv.innerHTML = '<img class="tab-content-loading" alt="Loading..." src="' + img_url + 'loading-circle.gif" />';
		} else {
			showAjaxLoading();
		}
		hideContactForm();
		loadTab(tab,'y'); //use preload variable to call function recursively and load news content 
	} else {		
		if (!preload) {
			showAjaxLoading();
		}
		var url = site_url + "javascript/ajax/load_tab.php";
		loadTabAJAX.request.open("POST", url, true);	
		loadTabAJAX.request.onreadystatechange = updateTabs;	
		loadTabAJAX.request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		loadTabAJAX.request.send("tab=" + escape(tab));	
	}
}

function updateTabs() {
	if (loadTabAJAX.request.readyState == 4) {
		if (loadTabAJAX.request.status == 200) {			
			var xmlDoc = loadTabAJAX.request.responseXML;
			var content = xmlDoc.getElementsByTagName("content")[0].firstChild.nodeValue;
			var tab = xmlDoc.getElementsByTagName("tab")[0].firstChild.nodeValue;			
			var nav = xmlDoc.getElementsByTagName("nav")[0].firstChild.nodeValue;		
			var pagecontent = xmlDoc.getElementsByTagName("pagecontent")[0].firstChild.nodeValue;				
			clearTabClasses();
			var tabContentDiv = document.getElementById('tab-content');
			if ((tab != 'settings') && (tabContentDiv)) {
				document.getElementById('tabnav-' + tab).className = 'selected';
				document.getElementById('tabnav-' + tab).parentNode.parentNode.className = 'my-news-nav-section section-selected';
			}		
			if (!tabContentDiv) { //check to see if we're already on a My News page
				document.getElementById('content').innerHTML = pagecontent;
				tabContentDiv = document.getElementById('tab-content');
			} 
			tabContentDiv.innerHTML = content;
			hideMyNewsFilter();
			if (tab == 'news') {			
				initOverlay();
				activateNewsCheck();
				showMyNewsFilter(nav);	
				activateKeyboardShortcuts();			
				//if (document.getElementById('carousel-wrapper')) {
					//new Carousel('carousel-wrapper', $$('#carousel-content .slide'), $$('a.carousel-control', 'a.carousel-jumper'), {auto: true, visibleSlides:3, frequency:5} );				
				//}
			} else if (tab == 'players') {
				initOverlay();
				showMyNewsFilter(nav);	
				activatePlayersCheck();
				activateKeyboardShortcuts();
				//showMyNewsFilter(nav);
				//if (document.getElementById('carousel-wrapper')) {
					//new Carousel('carousel-wrapper', $$('#carousel-content .slide'), $$('a.carousel-control', 'a.carousel-jumper'), {auto: true, visibleSlides:3, frequency:5} );				
				//}
			} else if (tab == 'info') {
				initOverlay();
			} else if (tab == 'scores') {
				activateScoreboardCheck();
			} else if (tab == 'hot') {				
				initOverlay();
			} else if (tab == 'manage_players') {								
				initPlayerSearch();
			} else if (tab == 'schedule') {				
				initOverlay();			
			} else if (tab == 'rosters') {			
				initOverlay();
			}
			document.title = titleTag; //reset title tag
			hashTabURL(tab);
			hideAjaxLoading();
			showContactForm();
		}
	}			
}

function clearTabClasses() {
	//clear tabs
	var tabNav = document.getElementById('my-news-nav');
	if (tabNav) {
		for (var i = 0; i < tabNav.childNodes.length; i++) {		
			if (tabNav.childNodes[i].className != 'clear') {
				tabNav.childNodes[i].className = 'my-news-nav-section';
			}
		}
		//clear list elements
		for (var j = 1; j <= 4; j++) { //change to 5 when adding store
			var listNav = document.getElementById('my-news-nav-list-' + j);
			for (var i = 0; i < listNav.childNodes.length; i++) {		
					listNav.childNodes[i].className = '';		
			}
		}
	}
}

//show news filter
function showMyNewsFilter(nav_content) {
	if (document.getElementById('my-news-filter')) {
		var filter = document.getElementById('my-news-filter');
		filter.innerHTML = nav_content;
		filter.style.marginBottom = '10px';
	}
}

var moreNewsAJAX = new multiAJAX();

//append more news to bottom (older news) or top (new news)
function moreNews(news_id, location) {
	if (location == 'top') {
		document.getElementById('message-news-wrapper').style.display = 'none';
		document.getElementById('message-news-loading').style.display = 'inline';
	} else if (location == 'bottom') {
		loadingSwap('more-news');
	}	
	stopNewsCheck(); //stop news check so it doesn't interfere while loading new stories
	var url = site_url + "javascript/ajax/get_more_news.php";
	moreNewsAJAX.request.open("POST", url, true);	
	moreNewsAJAX.request.onreadystatechange = updateMoreNews;	
	moreNewsAJAX.request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	moreNewsAJAX.request.send("news_id=" + escape(news_id) + "&location=" + escape(location));	
}

function updateMoreNews() {
	if (moreNewsAJAX.request.readyState == 4) {
		if (moreNewsAJAX.request.status == 200) {			
			var xmlDoc = moreNewsAJAX.request.responseXML;
			var content = xmlDoc.getElementsByTagName("content")[0].firstChild.nodeValue;
			var location = xmlDoc.getElementsByTagName("location")[0].firstChild.nodeValue;
			var more = xmlDoc.getElementsByTagName("more")[0].firstChild.nodeValue;		
			var currentContent = document.getElementById('main-news').innerHTML; //get current stories
			
			var num = xmlDoc.getElementsByTagName("num")[0].firstChild.nodeValue;
			if (num > 0) {				
				var top = xmlDoc.getElementsByTagName("top")[0].firstChild.nodeValue;	
				var bottom = xmlDoc.getElementsByTagName("bottom")[0].firstChild.nodeValue;	
							
				if (location == 'top') {
					var newContent = content + currentContent; //add new stories before current stories
					document.getElementById('message-news-loading').style.display = 'none';
					clearMessage();				
					document.getElementById('news-top').innerHTML = top; //change to latest top story
				} else if (location == 'bottom') {
					var newContent = currentContent + content; //add new stories after current stories
					document.getElementById('more-news').innerHTML = more; //update more news function on page
					document.getElementById('news-bottom').innerHTML = bottom; //change to latest bottom story
				}
			} else {
				var newContent = currentContent + content; //add error message after current stories
				document.getElementById('more-news').innerHTML = ''; //set more news to be blank
			}

			document.getElementById('main-news').innerHTML = newContent; //replace entire main news div
			initOverlay();
			activateNewsCheck(); //start news check again			
		}
	}			
}

//check for new news
function activateNewsCheck() {
	newsTimerInit = setTimeout("newsCheck()", 120 * 1000); //initially 2 minutes before checking for new stories
}

function stopNewsCheck() {
	clearTimeout(newsTimer);
	clearTimeout(newsTimerInit);
}

var newsCheckAJAX = new multiAJAX();

function newsCheck() {
	var news_id = Number(document.getElementById('news-top').innerHTML);
	var url = site_url + "javascript/ajax/get_more_news.php";
	newsCheckAJAX.request.open("POST", url, true);	
	newsCheckAJAX.request.onreadystatechange = updateNewsCheck;	
	newsCheckAJAX.request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	newsCheckAJAX.request.send("news_id=" + escape(news_id) + "&location=top");		
}

function updateNewsCheck() {
	if (newsCheckAJAX.request.readyState == 4) {
		if (newsCheckAJAX.request.status == 200) {			
			var xmlDoc = newsCheckAJAX.request.responseXML;
			var num = xmlDoc.getElementsByTagName("num")[0].firstChild.nodeValue;
			if (num > 0) {
				var news_id = Number(document.getElementById('news-top').innerHTML);
				var message = document.getElementById('message-news');
				message.className = 'news-available';
				if (num == 1) {
					var plural = 'story';
				} else {
					var plural = 'stories';
				}
				var status = document.getElementById('news-filter-status');
				if (status.innerHTML == 'all') {
					message.innerHTML = '<div class="news-available-message" onclick="moreNews(\'' + news_id + '\', \'top\')">' + num + ' new ' + plural + ' available. Click to reload.</div>';
				} else {
					message.innerHTML = '<div class="news-available-message" onclick="filterAllNews()">' + num + ' new ' + plural + ' available. Click to reload.</div>';
				}				
				document.title = '(' + num + ') ' + titleTag;
				document.getElementById('message-news-wrapper').style.display = 'inline-block';
			}
			newsTimer = setTimeout("newsCheck()", 60 * 1000); //wait 1 minute before checking again for new stories
		}
	}			
}

//filter news
function toggleNavFilter(team_id, type) {
	var icon = document.getElementById('plus-minus-' + team_id);	
	var list = document.getElementById('filter-' + type + '-' + team_id);
	if (icon.innerHTML == '+') {
		list.style.display = 'block'; //expand list
		icon.innerHTML = '-'; //change to minus
	} else {
		list.style.display = 'none'; //expand list
		icon.innerHTML = '+'; //change to minus

	}
}

function clearFilterHighlight() {
	var headings = getElementsByClassName(document.getElementById("my-news-filter"), "h3", "filter-on"); 
	for (var i = 0; i < headings.length; i++) {
		var change = headings[i].id;
		document.getElementById(change).className = '';
	}
	var lists = getElementsByClassName(document.getElementById("my-news-filter"), "li", "filter-on"); 
	for (var i = 0; i < lists.length; i++) {
		var change = lists[i].id;
		document.getElementById(change).className = '';
	}

}

function filterAllNews() {
	filterNews(0, 'all');
}

var filterNewsAJAX = new multiAJAX();

function filterNews(id, type) {
	showLoading();
	var url = site_url + "javascript/ajax/filter_news.php";
	filterNewsAJAX.request.open("POST", url, true);	
	filterNewsAJAX.request.onreadystatechange = updateFilterNews;	
	filterNewsAJAX.request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	filterNewsAJAX.request.send("id=" + escape(id) + "&type=" + escape(type));	
}

function updateFilterNews() {
	
	if (filterNewsAJAX.request.readyState == 4) {
		if (filterNewsAJAX.request.status == 200) {			
			var xmlDoc = filterNewsAJAX.request.responseXML;
			var content = xmlDoc.getElementsByTagName("content")[0].firstChild.nodeValue;
			var type = xmlDoc.getElementsByTagName("type")[0].firstChild.nodeValue;
			var id = xmlDoc.getElementsByTagName("id")[0].firstChild.nodeValue;			
			
			document.getElementById('main-news').innerHTML = content; //replace entire main news div
			
			//highlight on left nav
			clearFilterHighlight(); //clear previous highlight
			if (type == 'team') {
				var hl = document.getElementById('filter-heading-' + id);
			} else if (type == 'source') {
				var hl = document.getElementById('filter-source-' + id);		
			} else if (type == 'all') {
				var hl = document.getElementById('filter-heading-all');
			}
			hl.className = 'filter-on';
			
			var moreNews = document.getElementById('more-news');
			var status = document.getElementById('news-filter-status');
			
			if (type == 'all') {
				moreNews.style.display = 'block';
				status.innerHTML = 'all';
				clearMessage();
				var top = xmlDoc.getElementsByTagName("top")[0].firstChild.nodeValue;
				document.getElementById('news-top').innerHTML = top; //change to latest top story
				var more = xmlDoc.getElementsByTagName("more")[0].firstChild.nodeValue;
				document.getElementById('more-news').innerHTML = more; //insert/update more button
			} else {
				moreNews .style.display = 'none';
				status.innerHTML = 'filter';
			}
			
			document.getElementById("content-wrapper").style.display = 'inline'; //display content
			
			initOverlay();
			hideLoading();
			resetKeyboardShortcuts();
		}
	}					
}

function clearMessage() {
	var messageNews = document.getElementById('message-news');	
	messageNews.innerHTML = ''; //reset message
	messageNews.className = ''; //reset class
	document.title = titleTag; //reset title tag
	document.getElementById('message-news-wrapper').style.display = 'none'; //hide div
}

//check for new scores
function activateScoreboardCheck() {
	scoreboardTimerInit = setTimeout("scoreboardCheck()", 120 * 1000); //initially wait 2 minutes before checking for new stories
}

var scoreboardCheckAJAX = new multiAJAX();

function scoreboardCheck() {
	document.getElementById('scoreboard-update-message').style.display = 'inline'; //show updating message
	document.getElementById('scoreboard-update-info').style.display = 'none'; 
	var url = site_url + "javascript/ajax/get_scoreboard.php";
	scoreboardCheckAJAX.request.open("POST", url, true);	
	scoreboardCheckAJAX.request.onreadystatechange = updateScoreboardCheck;	
	scoreboardCheckAJAX.request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	scoreboardCheckAJAX.request.send("scoreboard=y");		
}

function updateScoreboardCheck() {
	if (scoreboardCheckAJAX.request.readyState == 4) {
		if (scoreboardCheckAJAX.request.status == 200) {			
			var xmlDoc = scoreboardCheckAJAX.request.responseXML;
			var content = xmlDoc.getElementsByTagName("content")[0].firstChild.nodeValue;
			document.getElementById('scoreboard-content').innerHTML = content;
			document.getElementById('scoreboard-update-message').style.display = 'none'; //hide updating message
			document.getElementById('scoreboard-update-info').style.display = 'inline'; 
			scoreboardTimer = setTimeout("scoreboardCheck()", 120 * 1000); //wait 2 minutes before checking again for new stories
		}
	}			
}

function stopScoreboardCheck() {
	clearTimeout(scoreboardTimer);
	clearTimeout(scoreboardTimerInit);
}

//update scoreboard overlay
var scoreboardOverlayAJAX = new multiAJAX();

function scoreboardOverlay() {
	var url = site_url + "javascript/ajax/get_live_scoreboard.php";
	scoreboardOverlayAJAX.request.open("POST", url, true);	
	scoreboardOverlayAJAX.request.onreadystatechange = updateScoreboardOverlay;	
	scoreboardOverlayAJAX.request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	scoreboardOverlayAJAX.request.send("scoreboard=y");	
}

function updateScoreboardOverlay() {
	if (scoreboardOverlayAJAX.request.readyState == 4) {
		if (scoreboardOverlayAJAX.request.status == 200) {			
			var xmlDoc = scoreboardOverlayAJAX.request.responseXML;
			var content = xmlDoc.getElementsByTagName("content")[0].firstChild.nodeValue;
			if (content != 'none') {
				document.getElementById('scoreboard-overlay-content').innerHTML = content;
				document.getElementById('scoreboard-overlay').style.display = 'inline';
			}
			scoreboardOverlayTimer = setTimeout("scoreboardOverlay()", 120 * 1000); //wait 2 minutes before checking again for new stories
		}
	}			
}

function stopScoreboardOverlay() {
	clearTimeout(scoreboardOverlayTimer);
}

function closeScoreboardOverlay() {
	stopScoreboardOverlay();
	document.getElementById('scoreboard-overlay-content').innerHTML = ''; //clear scores	
	new Effect.Morph('scoreboard-overlay', {
		  style: 'height:25px; width:15%;', // CSS Properties
		  duration: 0.8 // Core Effect properties
	});
	document.getElementById('close-scoreboard').innerHTML = '<a class="js-link" onclick="openScoreboardOverlay()">Open Scoreboard</a>';
}

function openScoreboardOverlay() {
	new Effect.Morph('scoreboard-overlay', {
		  style: 'height:45px; width:100%;', // CSS Properties
		  duration: 0.8 // Core Effect properties
	});
	document.getElementById('close-scoreboard').innerHTML = '<a class="js-link" onclick="closeScoreboardOverlay()">Close Scoreboard</a><a class="js-link" onclick="closeScoreboardOverlay()"><img src="' + img_url + 'close_scoreboard.png" alt="Close Scoreboard" /></a>';
	scoreboardOverlay();
}

//Manage Players
var playerSearchText = '';

function initPlayerSearch() {
	playerSearchText = getFormValue('pq');
	attachEventListener(document.getElementById('pq'),"focus",playerSearchFocus,false);
	disableFormSubmit('player-search-form');
	setAutoSuggest('pq','autosuggest_fantasy.php', 'fantasyAutocompleteDropdown', addPlayer);	
}

function playerSearchFocus() {
	var searchInput = document.getElementById('pq');
	searchInput.className = 'player-focused-text';
	if (searchInput.value == playerSearchText) {
		searchInput.value = "";
	}
}

function playerSearchReset() {
	var searchInput = document.getElementById('pq');
	searchInput.value = "";
}

var addPlayerAJAX = new multiAJAX();

function addPlayer(name, value) {
	showLoading();
	var url = site_url + "javascript/ajax/fantasy_add.php";
	addPlayerAJAX.request.open("POST", url, true);	
	addPlayerAJAX.request.onreadystatechange = updateAddPlayer;	
	addPlayerAJAX.request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	addPlayerAJAX.request.send("name=" + escape(name) + "&value=" + escape(value));
}

function updateAddPlayer() {
	if (addPlayerAJAX.request.readyState == 4) {
		if (addPlayerAJAX.request.status == 200) {			
			var xmlDoc = addPlayerAJAX.request.responseXML;
			var result = xmlDoc.getElementsByTagName("result")[0].firstChild.nodeValue;			
			playerSearchReset();
			displayMyPlayers();
			hideLoading();					
			highlightAlert('my-players-alert',result);
		}
	}			
}

var myPlayerAJAX = new multiAJAX();

function displayMyPlayers() {
	var url = site_url + "javascript/ajax/fantasy_show_players.php";
	myPlayerAJAX.request.open("POST", url, true);	
	myPlayerAJAX.request.onreadystatechange = updateMyPlayers;	
	myPlayerAJAX.request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	myPlayerAJAX.request.send("players=y");
}

function updateMyPlayers() {
	if (myPlayerAJAX.request.readyState == 4) {
		if (myPlayerAJAX.request.status == 200) {			
			var xmlDoc = myPlayerAJAX.request.responseXML;
			var players = xmlDoc.getElementsByTagName("players")[0].firstChild.nodeValue;			
			document.getElementById('my-players').innerHTML = players;
		}
	}			
}

var deletePlayerAJAX = new multiAJAX();

function deletePlayer(player_id) {
	showLoading();
	var url = site_url + "javascript/ajax/fantasy_delete.php";
	deletePlayerAJAX.request.open("POST", url, true);	
	deletePlayerAJAX.request.onreadystatechange = updateDeletePlayer;	
	deletePlayerAJAX.request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	deletePlayerAJAX.request.send("player_id=" + escape(player_id));
}

function updateDeletePlayer() {
	if (deletePlayerAJAX.request.readyState == 4) {
		if (deletePlayerAJAX.request.status == 200) {			
			var xmlDoc = deletePlayerAJAX.request.responseXML;
			var result = xmlDoc.getElementsByTagName("result")[0].firstChild.nodeValue;						
			displayMyPlayers();
			hideLoading();					
			highlightAlert('my-players-alert',result);
		}
	}			
}

//Fantasy Players Tab

function filterAllNewsPlayers() {
	filterNewsPlayers(0, 'all');
}

var filterNewsPlayersAJAX = new multiAJAX();

function filterNewsPlayers(id, type) {
	showLoading();
	var url = site_url + "javascript/ajax/filter_news_players.php";
	filterNewsPlayersAJAX.request.open("POST", url, true);	
	filterNewsPlayersAJAX.request.onreadystatechange = updateFilterNewsPlayers;	
	filterNewsPlayersAJAX.request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	filterNewsPlayersAJAX.request.send("id=" + escape(id) + "&type=" + escape(type));	
}

function updateFilterNewsPlayers() {
	
	if (filterNewsPlayersAJAX.request.readyState == 4) {
		if (filterNewsPlayersAJAX.request.status == 200) {			
			var xmlDoc = filterNewsPlayersAJAX.request.responseXML;
			var content = xmlDoc.getElementsByTagName("content")[0].firstChild.nodeValue;
			var type = xmlDoc.getElementsByTagName("type")[0].firstChild.nodeValue;
			var id = xmlDoc.getElementsByTagName("id")[0].firstChild.nodeValue;			
			
			document.getElementById('main-news').innerHTML = content; //replace entire main news div
			
			//highlight on left nav
			clearFilterHighlight(); //clear previous highlight
			if (type == 'player') {
				var hl = document.getElementById('filter-player-' + id);				
			} else if (type == 'league') {
				var hl = document.getElementById('filter-heading-' + id);				
			} else if (type == 'all') {
				var hl = document.getElementById('filter-heading-all');
			}
			hl.className = 'filter-on';
			
			var moreNews = document.getElementById('more-news');
			var status = document.getElementById('news-filter-status');
			
			if (type == 'all') {
				moreNews.style.display = 'block';
				status.innerHTML = 'all';
				clearMessage();
				var top = xmlDoc.getElementsByTagName("top")[0].firstChild.nodeValue;
				document.getElementById('news-top').innerHTML = top; //change to latest top story
				var more = xmlDoc.getElementsByTagName("more")[0].firstChild.nodeValue;
				document.getElementById('more-news').innerHTML = more; //insert/update more button
			} else {
				moreNews .style.display = 'none';
				status.innerHTML = 'filter';
			}
			
			document.getElementById("content-wrapper").style.display = 'inline'; //display content
			
			initOverlay();
			hideLoading();
			resetKeyboardShortcuts();
		}
	}					
}

var moreNewsPlayersAJAX = new multiAJAX();

//append more news to bottom (older news) or top (new news)
function moreNewsPlayers(news_id, location) {
	if (location == 'top') {
		document.getElementById('message-news-wrapper').style.display = 'none';
		document.getElementById('message-news-loading').style.display = 'inline';
	} else if (location == 'bottom') {
		loadingSwap('more-news');
	}	
	stopPlayersCheck(); 
	var url = site_url + "javascript/ajax/get_more_news.php";
	moreNewsPlayersAJAX.request.open("POST", url, true);	
	moreNewsPlayersAJAX.request.onreadystatechange = updateMorePlayersNews;	
	moreNewsPlayersAJAX.request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	moreNewsPlayersAJAX.request.send("news_id=" + escape(news_id) + "&location=" + escape(location) + "&players=y");	
}

function updateMorePlayersNews() {
	if (moreNewsPlayersAJAX.request.readyState == 4) {
		if (moreNewsPlayersAJAX.request.status == 200) {			
			var xmlDoc = moreNewsPlayersAJAX.request.responseXML;
			var content = xmlDoc.getElementsByTagName("content")[0].firstChild.nodeValue;
			var location = xmlDoc.getElementsByTagName("location")[0].firstChild.nodeValue;
			var more = xmlDoc.getElementsByTagName("more")[0].firstChild.nodeValue;					
			var currentContent = document.getElementById('main-news').innerHTML; //get current stories			
			
			var num = xmlDoc.getElementsByTagName("num")[0].firstChild.nodeValue;		
			if (num > 0) {
				var top = xmlDoc.getElementsByTagName("top")[0].firstChild.nodeValue;	
				var bottom = xmlDoc.getElementsByTagName("bottom")[0].firstChild.nodeValue;	
				
				if (location == 'top') {
					var newContent = content + currentContent; //add new stories before current stories
					document.getElementById('message-news-loading').style.display = 'none';
					clearMessage();				
					document.getElementById('news-top').innerHTML = top; //change to latest top story
				} else if (location == 'bottom') {
					var newContent = currentContent + content; //add new stories after current stories
					document.getElementById('more-news').innerHTML = more; //update more news function on page
					document.getElementById('news-bottom').innerHTML = bottom; //change to latest bottom story
				}
			} else {
				var newContent = currentContent + content; //add error message after current stories
				document.getElementById('more-news').innerHTML = ''; //set more news to be blank
			}
			
			document.getElementById('main-news').innerHTML = newContent; //replace entire main news div
			initOverlay();
			activatePlayersCheck(); //start news check again			
		}
	}			
}

//check for new player fantasy news
function activatePlayersCheck() {
	playersTimerInit = setTimeout("playersCheck()", 120 * 1000); //initially 2 minutes before checking for new stories
}

function stopPlayersCheck() {
	clearTimeout(playersTimer);
	clearTimeout(playersTimerInit);
}

var playersCheckAJAX = new multiAJAX();

function playersCheck() {
	var news_top = document.getElementById('news-top');
	if (news_top) { //make sure div exists - if not, user hasn't set up players
		var news_id = Number(news_top.innerHTML);
		var url = site_url + "javascript/ajax/get_more_news.php";
		playersCheckAJAX.request.open("POST", url, true);	
		playersCheckAJAX.request.onreadystatechange = updatePlayersCheck;	
		playersCheckAJAX.request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		playersCheckAJAX.request.send("news_id=" + escape(news_id) + "&location=top&players=y");		
	}
}

function updatePlayersCheck() {
	if (playersCheckAJAX.request.readyState == 4) {
		if (playersCheckAJAX.request.status == 200) {			
			var xmlDoc = playersCheckAJAX.request.responseXML;
			var num = xmlDoc.getElementsByTagName("num")[0].firstChild.nodeValue;
			if (num > 0) {
				var news_id = Number(document.getElementById('news-top').innerHTML);
				var message = document.getElementById('message-news');
				message.className = 'news-available';
				if (num == 1) {
					var plural = 'story';
				} else {
					var plural = 'stories';
				}
				var status = document.getElementById('news-filter-status');
				if (status.innerHTML == 'all') {
					message.innerHTML = '<div class="news-available-message" onclick="moreNewsPlayers(\'' + news_id + '\', \'top\')">' + num + ' new ' + plural + ' available. Click to reload.</div>';
				} else {
					message.innerHTML = '<div class="news-available-message" onclick="filterAllNewsPlayers()">' + num + ' new ' + plural + ' available. Click to reload.</div>';
				}				
				document.title = '(' + num + ') ' + titleTag;
				document.getElementById('message-news-wrapper').style.display = 'inline-block';
			}
			playersTimer = setTimeout("playersCheck()", 60 * 1000); //wait 1 minute before checking again for new stories
		}
	}			
}


//Start Search Autosuggest

//Autosuggest variables
var autosuggestText = new Array();
var autosuggestValue = new Array();
var autosuggestInput = ''; //form input
var autosuggestFile = ''; //ajax file
var autosuggestDropdown = ''; //what to name dropdown
var autosuggestFunction = ''; //function to trigger upon completion
var autosuggestAJAX = new multiAJAX();

function setAutoSuggest(input,file,dropdown,afunction) { //must call this function with all variables for autosuggest to work
	autosuggestInput = input; 
	autosuggestFile = file; 
	autosuggestDropdown = dropdown; 
	autosuggestFunction = afunction;
	
	if ((validateLength(autosuggestInput,1,1000)) && (validateLength(autosuggestFile,1,1000)) && (validateLength(autosuggestDropdown,1,1000)) && (validateLength(autosuggestFunction,1,1000)) ) {	
		var searchBox = document.getElementById(autosuggestInput);
		searchBox.setAttribute("autocomplete", "off");
		attachEventListener(searchBox, "keydown", getAutosuggest, false);    
		attachEventListener(searchBox, "keydown", keydownAutoComplete, false);
		attachEventListener(searchBox, "blur", blurAutoComplete, false);
		return true;		
	} else {		
		return false;
	}
	
}

function getAutosuggest() {	
	var query = document.getElementById(autosuggestInput).value;	
	var url =  site_url + "javascript/ajax/" + autosuggestFile;
	autosuggestAJAX.request.open("POST", url, true);	
	autosuggestAJAX.request.onreadystatechange = createSearchArray;	
	autosuggestAJAX.request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	autosuggestAJAX.request.send("query=" + escape(query));	
}

function createSearchArray() {
	if (autosuggestAJAX.request.readyState == 4) {
		if (autosuggestAJAX.request.status == 200) {
			var xmlDoc = autosuggestAJAX.request.responseXML;
			var xmlText = xmlDoc.getElementsByTagName("text");
			var xmlValue = xmlDoc.getElementsByTagName("value");			
			autosuggestText = [];
			autosuggestValue = [];
			for (var i = 0; i < xmlText.length; i++){
				autosuggestText.push(xmlText[i].firstChild.nodeValue);
				autosuggestValue.push(xmlValue[i].firstChild.nodeValue);				
			}
		}
	}		
}

function keydownAutoComplete(event) {
	if (typeof event == "undefined") {
		event = window.event;
	}
 
	switch(event.keyCode) {
		case 9:     // tab
		case 16:    // shift
		case 17:    // ctrl
		case 18:    // alt
		case 20:    // caps lock
		case 27:    // esc
		
			closeDropdown();
			stopDefaultAction(event);
			break;
			
		case 33:    // page up
		case 34:    // page down
		case 35:    // end
		case 36:    // home
		case 37:    // left arrow
		case 39:    // right arrow
			break;
		case 38:    // up arrow
	
			var target = getEventTarget(event);
			var autoCompleteDropdown = document.getElementById(autosuggestDropdown);
	
			if (autoCompleteDropdown != null) {
				var childLis = autoCompleteDropdown.childNodes;
				var selected = false;
	
				for (var i = 0; i < childLis.length; i++) {
					if (childLis[i].className == "hover") {
					selected = true;
	
					if (i > 0) {
					  childLis[i].className = "";
					  childLis[i - 1].className = "hover";
					  target.value = childLis[i - 1].firstChild.nodeValue;
					}
	
				break;
			  }
			}
	
			if (!selected) {
				childLis[0].className = "hover";
				target.value = childLis[0].firstChild.nodeValue;
			}
		  }
	
		stopDefaultAction(event);		
		break;
	
		case 40:    // down arrow
			var target = getEventTarget(event);
			var autoCompleteDropdown = document.getElementById(autosuggestDropdown);
			
			if (autoCompleteDropdown != null)  {
				var childLis = autoCompleteDropdown.childNodes;
				var selected = false;
			
				for (var i = 0; i < childLis.length; i++) {
					if (childLis[i].className == "hover") {
						selected = true;
				
						if (i < childLis.length - 1) {
						  childLis[i].className = "";
						  childLis[i + 1].className = "hover";
					
						  target.value = childLis[i + 1].firstChild.nodeValue;
						}			
					break;
				  }
				}
				
				if (!selected) {
				  childLis[0].className = "hover";			
				  target.value = childLis[0].firstChild.nodeValue;
				}
			}
			
			stopDefaultAction(event);		
			break;
	
		case 8:     // backspace
			
			var currentSearch = document.getElementById(autosuggestInput).value;
			if((currentSearch.length==1) || (currentSearch.length==0)) {
				 closeDropdown();
				 break;
			}
			
			if (typeof autoCompleteTimer != "undefined") {
				clearTimeout(autoCompleteTimer);
			}
			
			autoCompleteTimer = setTimeout("generateDropdown(false)", 0);
			break;		
		
		case 46:    // delete
	
			if (typeof autoCompleteTimer != "undefined") {
				clearTimeout(autoCompleteTimer);
			}
			
			autoCompleteTimer = setTimeout("generateDropdown(false)", 0);		
			break;
			
		case 13: //enter
			enterKeyDropdown();
			break;
	
		default:
	
			if (typeof autoCompleteTimer != "undefined") {
				clearTimeout(autoCompleteTimer);
			}

			
			var target = getEventTarget(event);
			var inputRanges = "false";
			
			if (typeof target.createTextRange != "undefined" || typeof target.setSelectionRange != "undefined") {
				inputRanges = "true";
			}
			
			autoCompleteTimer = setTimeout("generateDropdown(" + inputRanges + ")", 0);
	  }
	
	  return true;
}

function generateDropdown(doAutoComplete) {
 
	closeDropdown();
	
	var input = document.getElementById(autosuggestInput);
	
	var newUl = document.createElement("ul");
	newUl.setAttribute("id", autosuggestDropdown);
	newUl.autoCompleteInput = input;
	newUl.style.position = "absolute";
	newUl.style.left = getPosition(input)[0] + "px";
	newUl.style.top = getPosition(input)[1] + input.offsetHeight - 2 + "px";
	newUl.style.width = input.offsetWidth - 3 + "px";
	
	for (var i = 0; i < autosuggestText.length; i++) {

	var searchLower = autosuggestText[i].toLowerCase();
	var inputLower = input.value.toLowerCase();

		if (searchLower.indexOf(inputLower) == 0) {
			var newLi = document.createElement("li");
			newLi.appendChild(document.createTextNode(autosuggestText[i]));	
			newLi.setAttribute('title',	autosuggestValue[i]);	
			attachEventListener(newLi, "mouseover", mouseoverDropdown, false);
			attachEventListener(newLi, "mouseout", mouseoutDropdown, false);
			attachEventListener(newLi, "mousedown", mousedownDropdown, false);		
			newUl.appendChild(newLi);
		}
	}

	if (newUl.firstChild != null) {
		document.getElementsByTagName("body")[0].appendChild(newUl);
	}

  return true;
}



function mouseoverDropdown(event) {
	if (typeof event == "undefined") {
		event = window.event;
	}
	
	var target = getEventTarget(event);
	
	while (target.nodeName.toLowerCase() != "li") {
		target = target.parentNode;
	}
	
	var childLis = target.parentNode.childNodes;
	
	for (var i = 0; i < childLis.length; i++) {
		childLis[i].className = "";
	}
	
	target.className = "hover";	
	return true;
}

function mouseoutDropdown(event) {
	if (typeof event == "undefined")  {
		event = window.event;
	}
	
	var target = getEventTarget(event);
	
	while (target.nodeName.toLowerCase() != "li") {
		target = target.parentNode;
	}
	
	target.className = "";	
	return true;
}

function mousedownDropdown(event) {
	if (typeof event == "undefined")  {
		event = window.event;
	}
	
	var target = getEventTarget(event);
	
	while (target.nodeName.toLowerCase() != "li") {
		target = target.parentNode;
	}
	
	target.parentNode.autoCompleteInput.value = target.firstChild.nodeValue;
	
	autosuggestFunction(target.firstChild.nodeValue, this.getAttribute('title'));
	
	closeDropdown();
	return true;
}

function enterKeyDropdown() {
	
	var dropdown = document.getElementById(autosuggestDropdown);
	if (dropdown) {
		for (var i = 0; i < dropdown.childNodes.length; i++) {
			if (dropdown.childNodes[i].className == 'hover') {
				autosuggestFunction(dropdown.childNodes[i].innerHTML, dropdown.childNodes[i].getAttribute('title'));
			}
		}
	}
	closeDropdown();
	
	return true;
}

function blurAutoComplete() {
	if (typeof autoCompleteTimer != "undefined")  {
		clearTimeout(autoCompleteTimer);
	}
	
	closeDropdown();
	return true;
}

function closeDropdown() {
	var autoCompleteDropdown = document.getElementById(autosuggestDropdown);
	
	if (autoCompleteDropdown != null)  {
		autoCompleteDropdown.parentNode.removeChild(autoCompleteDropdown);
	}
	
	return true;
}


function getEventTarget(event) {
	var targetElement = null;
	
	if (typeof event.target != "undefined")  {
		targetElement = event.target;
	}  else  {
		targetElement = event.srcElement;
	}
	
	while (targetElement.nodeType == 3 && targetElement.parentNode != null)  {
		targetElement = targetElement.parentNode;
	}
	
	return targetElement;
}

function stopDefaultAction(event) {
	event.returnValue = false;
	
	if (typeof event.preventDefault != "undefined")  {
		event.preventDefault();
	}
	
	return true;
}

function getPosition(theElement) {
	var positionX = 0;
	var positionY = 0;
	
	while (theElement != null)  {
		positionX += theElement.offsetLeft;
		positionY += theElement.offsetTop;
		theElement = theElement.offsetParent;
	}
	
	return [positionX, positionY];
}

//End Autosuggest

//Keyboard Shortcuts

function activateKeyboardShortcuts() {
	attachEventListener(document,"keydown",keyboardShortcut,false);	
	resetKeyboardShortcuts();
}

function resetKeyboardShortcuts() {
	currentKeyStory = 0;
}

function keyboardShortcut(e) {
	var key = getKey(e);
	if ((key == 74) || (key == 75)) {
		if (key == 74) { //J key, next item down
			if (currentKeyStory > 0) {
				var sibling = $('story-' + currentKeyStory).next(); //prototype 		
			} else if (document.getElementById('main-news')) {
				var sibling = $('main-news').down(); //prototype 		
			}
		} else if (key == 75) { // K key, next item up
			if (currentKeyStory != 0) {
				var sibling = $('story-' + currentKeyStory).previous(); //prototype 		
			}
		}
		if (sibling) {
			var next = sibling.id.replace(/story-/,'');	
			if (document.getElementById('description-' + next).style.display == 'none') { //only toggle story if it's currently closed
				toggleStory(next);
			} else {
				currentKeyStory = next; //still set as current story
			}
			document.getElementById('story-' + next).scrollIntoView();

		}
	}
}

function stopKeyboardShortcuts() {
	detachEventListener(document,"keydown",keyboardShortcut,false);
}
//End Keyboard Shortcuts
