// utils.js

// this is a flag that tells JS whether we are on scoreboard page, or viewcast page
// it should be overriden in viewcast pages to "true"
isViewcast = false;
/////////////////////////////////
// MAP
/////////////////////////////////

VIEWCAST_ACTIVE = true;
METADATA = true;
DEBUG = false;
VIEWCAST_NAME = "Top 25";

INTERVAL = 15000;

TIMESTAMP = 0;
SETINTERVAL = 1;
DATA_INDEX = 1;

// keep cookie for 5 months of season.
COOKIE_LIFE = 1000 * 60 * 60 * 24 * 150;

MASTER_ARRAY_LENGTH = 17;

FEED_ROW_DELIMITER = "\n";
TOP_LEVEL_DELIMITER = "|";
SECOND_LEVEL_DELIMITER = ";";
THIRD_LEVEL_DELIMITER = "#";
IMG_SERVER = "http://i.cdn.turner.com/si";
IMG_PATH = "/.e1d/img/3.0/sect/football/nfl";
WEATHER_IMAGES = "http://i.cdn.turner.com/cnn/.element/img/2.0/weather/01/";
BLANK_IMG = IMG_SERVER + "/images/misc/spacer.gif";

GAMES_IN_ROW = 3;
CONTEST_ID = 0;
STATSINC_CONTEST_ID = 1;
SEASON_YEAR = 2;
STAGE_ID = 3;
SUBSTAGE_ID = 4;
WEEK = 5;
STATUS = 6;
DATE_URL = 7;
DATE_STR = 8;
GAMESTATE = 9;
VENUE = 10;
WEATHER = 11;
PICKS = 12;
LINKS = 13;
HOME_TEAM = 14;
VSTR_TEAM = 15;
LAST_GAME = 16;

GAME_ORDER = 0;
CLOCK = 1;
PERIOD = 2;
POSSESSION = 3;
DOWN = 4;
YARDLINE = 5;
BALLON = 6;
YARDS_FROM_GOAL = 7;
DISTANCE = 8;
ACTIVE = 9;

STADIUM = 0;
CITY = 1;
STATE = 2;
BOWL_NAME = 3;

ZIP = 0;
WEATHER_CODE = 1;
TEMPERATURE = 2;
FORECAST = 3;

PICK = 0;
CONSENSUS = 1;
PERCENTAGE = 2;

PREVIEW = 0;
BOXSCORE = 1;
PLAYBYPLAY = 2;
RECAP = 3;
GAMEBLOG = 4;

TEAM_ID = 0;
TEAM_NAME = 1;
TEAM_NICKNAME = 2;
TEAM_ABRV = 3;
TEAM_URL = 4;
LINESCORE = 5;
TOTAL_SCORE = 6;
WINS = 7;
LOSSES = 8;
TIES = 9;
PASSINGLDR = 10;
RUSHINGLDR = 11;
RECEIVINGLDR = 12;
PTSPERGAME = 13;
PTSALLOWEDPERGAME = 14;
YDSPERGAME = 15;
YDSALLOWEDPERGAME = 16;
NEXT_GAME = 17;
DIV_ID = 18;
CONF_ID = 19;
AP_RANK = 20;

LDR_ID = 0;
LDR_NM = 1;
LDR_LINK = 2;
LDR_POS = 3;
LDR_YDS = 4;
LDR_TD = 5;
LDR_MD = 6;
LDR_ATT = 7;

LG_DATE = 0;
LG_VSTR_NM = 1;
LG_VSTR_SCORE = 2;
LG_HOME_NM = 3;
LG_HOME_SCORE = 4;

NG_OPP_URL = 0;
NG_OPP_ABRV = 1;
NG_OPP_WINS = 2;
NG_OPP_LOSSES = 3;
NG_DATE = 4;
NG_VH_IND = 5;

/*    Debug Log Class
 *         Started with the example at this URL:  http://ajaxcookbook.org/javascript-debug-log/
 *         But this example needed many enhancements to get it to work properly.  I ended 
 *         up encapsulating the log in its own class.
*/
function logClass() {

    this.logWindow = null;
    
    this.create = function()
    {
        if (DEBUG)
        {
            this.logWindow = window.open("", null, "width=400,height=400," +
                                      "scrollbars=yes,resizable=yes,status=no," +
                                      "location=no,menubar=no,toolbar=no");
            if (!this.logWindow)
                return;
            
            this.logWindow.document.write("<html><head><title>Debug Log</title></head><body></body></html>");
            this.logWindow.document.close();
        }
        else
            return;
    }
    
    this.write = function(text) {
        
        var newDiv;
        var newTextLine;
    
        if (DEBUG)
        {
            if (this.logWindow != null && !this.logWindow.closed)
            {
                newDiv = this.logWindow.document.createElement("div");
                newTextLine = this.logWindow.document.createTextNode(text);
                newDiv.appendChild(newTextLine);
            
                this.logWindow.document.body.appendChild(newDiv);
            }
        }
        else
            return;
    }      
}


function trimString(str) {

    if (str != null && str.length > 0) {
        str = str.replace( /^\s+/g, "" );            // strip leading
        return str.replace( /\s+$/g, "" );            // strip trailing
    }
    
    return new String("");
}


function isNumber(strData)
{
    var dataAsNumber;
    
    if (strData.length == 0)
        return false;
    
    // fastest way to convert to a number type
    dataAsNumber = (+strData);

    if ((isNaN(dataAsNumber) == false) && dataAsNumber >= 0 ) {
        return true;
    }
    return false;
}

function createImageElement(src,height,width,border,alt,alignment,myClass)
{
    var iElem = document.createElement("img");
    iElem.setAttribute("src", src);
    iElem.setAttribute("height", height);
    iElem.setAttribute("witdh", width);
    iElem.setAttribute("border", border);
    if (alignment != null && ! alignment == "")
        iElem.setAttribute("align", alignment);
    iElem.alt = alt;
    if (myClass != null && ! myClass == "")
        iElem.className = myClass;
    
    return iElem;
}

function setMyAttribute(myName, myValue)
{
    var tempA = document.createAttribute(myName);
    tempA.value = myValue;
    return tempA;
}

function createTeamRecord(wins,losses,isInParenthesis)
{
    var record = "";
    
    if (wins != "" && losses != "" &&
        (parseInt(wins) > 0 || parseInt(losses) > 0))
    {
        record = record + wins + "-" + losses;

        if (isInParenthesis)
            record = "(" + record + ")";
    }
    return record;
}
function createLinkElement(linkWhat, linkWhere, target, isImage, className)
{
    var linkElem = null;

    ////log.write("Got link request: " + linkWhat + "..." + linkWhere + "..." + target + "..." + isImage);
    
    if (linkWhere == null || linkWhere == "")
    {
       if (isImage)
	return linkWhat;
       else
        return document.createTextNode(linkWhat);
    }
    else
    {
        linkElem = document.createElement("a");
        linkElem.href = linkWhere;
        if (target != null && !target == "")
            linkElem.target = target;
        if (isImage)
            linkElem.appendChild(linkWhat);
        else
            linkElem.appendChild(document.createTextNode(linkWhat));

        if (className != null)
            linkElem.className = className;
            
        return linkElem;
    }
}

