
var locale = 'en_US';

$(document).ready(function() {

    if ($('#input_siteName').val().length > 0) {
        locale = $('#input_siteName').val();
    }

    ChangeTab($('ul#selectors li:first'), 0);

    $('a.morelink').live('click', function() {

        var visible = 0;
        var trs = $(this).parent().find('tr.hidden');
        
        $.each(trs, function() {
            var tr = $(this);

            if (tr.css('display') != 'none') {
                visible = visible + 1;
            }
        });

        

        if ($.browser.msie && $.browser.version == '8.0') {
            if (visible == 0) {
                trs.css('display', 'table-row');
            }
            else {
                trs.css('display', 'none');
            }

        }
        else {
            if (visible == 0) {
                trs.fadeIn();
            }
            else {
                trs.fadeOut();
            }
        }
        
        $(this).find('span').toggleClass('hidden');
        return false;
    });

    resetSeasonHref();

    var locationPath = window.location.pathname;
    locationPath = locationPath.split('/');
    locationPath = locationPath.reverse();

    if (locationPath[0] == '011242807156063') {
        if (locationPath[1] == 'Video') {
            $("#videostab").addClass("selected");
        }
        else if (locationPath[1] == 'Photo') {
            $("#photostab").addClass("selected");
        }
    }

    $("#main-content li:lt(2)")
		.find('a.selected')
			.hide()
			.end()
		.css('list-style-type', 'none');

    var footerNav = $('ul#footer-navigation li:first-child');
    footerNav.css('border', 'none');
});

$(window).bind('load', function() {
    $('img')
		.bind("mousedown", function(e) { return false; })
		.bind("contextmenu", function(e) { return false; });
});

function GetHomePage(pageId) {
    var method = 'HomepageWidget/' + pageId;

    Request(method, function(data) {
        $('#standings').prepend(data).find('table')
		            .find('tr:odd')
		            .addClass('odd');
        redraw();
    });
}


function GetDriversWidget(driverId) {
    var method = 'DriverWidget/' + driverId;

    Request(method, function(data) {
        $('.driverStandings').after(data).filter('#drivers').show();
        $('.boxcontent table')
		            .find('tr:odd')
		            .addClass('odd');
        redraw();
    });
}


function GetSponsorWidgetTR(sponsorId) {
    var method = 'SponsorWidgetTR/' + sponsorId;

    Request(method, function(data) {
        $('.SponsorContainer').html(data);
    });
}
function GetSponsorWidget(sponsorId) {
    var method = 'SponsorWidget/' + sponsorId;

    Request(method, function(data) {
        $('.SponsorContainer').html(data);
    });
}

function GetSeasonWidget(trackId) {
    var method = 'SeasonWidget/' + trackId;

    Request(method, function(data) {
        $('.trackStandings').html(data).find('.Races:first').show();
        $('.boxcontent table')
		            .find('tr:odd')
		            .addClass('odd');
        redraw();
    });
}

function GetEventWidget(trackId) {
    var method = 'EventWidget/' + trackId;

    Request(method, function(data) {
        $('.listing').html(data).find('.events').show().end().show();
        redraw();
    });
}

function ChangeYearTab(clickedItem, clickIndex, year) {

    $('.Races > div').hide();

    var hasResults = ($('.' + year).find('.Race table tr td').length > 1);

    $('#seasonTabs li').removeClass('selected').filter(hasResults ? ':first' : ':last').addClass('selected');

    $('.Races').hide().filter('.' + year).show().find(hasResults ? '.Race' : '.Grid').show();

    ChangeTab(clickedItem, clickIndex);
}

function Request(url, callback) {

    baseURL = 'http://racing.redbull.com/';
    reqURL = baseURL + locale + '/' + url;

    $.ajax({
        type: "GET",
        url: reqURL,
        dataType: "jsonp",
        jsonp: "onSuccess",
        success: function(data) {
            callback(data);
        }
    });
}

function ChangeGridTab(clickedItem, clickIndex) {
    if (clickIndex == 0) {
        $('div.Grid').slideUp('slow');
        $('div.Race').slideDown('slow');
    }
    else {
        $('div.Grid').slideDown('slow');
        $('div.Race').slideUp('slow');
    }

    ChangeTab(clickedItem, clickIndex);
}

function ChangeTab(clickedItem, clickedIndex) {

    if (clickedItem.parent().hasClass('selected')) return false;

    clickedItem
		.parent()
		.addClass('selected')
		.siblings()
		.removeClass('selected');

    $('div.boxcontent > div').hide();

    if (clickedIndex == 1) {
        $('div#driversWrap').fadeIn();
    }
    else if (clickedIndex == 2) {
        $('div#constructorWrap').fadeIn();
    }
    else {
        $('div#raceWrap').fadeIn();
    }

    return false;
}

function toggleTab(clickedItem, clickedIndex) {
    if (clickedItem.parent().hasClass('selected')) return false;

    var clickedTab = clickedItem.attr('href');

    clickedItem
		.parent()
		.addClass('selected')
		.siblings()
		.removeClass('selected');

    if (clickedIndex == 1) {
        $('ul#offTrackEvents').hide();
        $('ul#partyEvents').show();
    }
    else {
        $('ul#partyEvents').hide();
        $('ul#offTrackEvents').show();
    }
}

/* -- Global scripts for raceId on season pages and resetting Season link to next race -- */
/* -- Author: Ryan Mathis -- */

function getQueryString(str) {
    var url = document.URL;

    if (url.indexOf('?') !== -1) {
        qp = url.split('?');
        for (i = 0; i < qp.length; i++) {
            q = qp[i].split("&");
            for (j = 0; j < q.length; j++) {
                p = q[j].split("=");
                if (p[0] == str) {
                    return p[1];
                }
            }
        }
    }
}

var raceId = getQueryString('raceId');
function setActiveTrack() {

    var pageId = "1";
    try { if (raceId) { pageId = raceId; } } catch (err) { pageId = "1"; }
    var current = String(pageId).toLowerCase();
    $("#season-header .race" + current).addClass("active");
}

function resetSeasonHref() {
    var rid = getNextRaceID();
    var season = $("#skin-secondary-nav li:last a");
    var locale = $("#input_siteName").attr('value');
    $(season).attr('href', '/cs/Satellite/' + locale + rid);
}

function getNextRaceID() {
    var c = new Date();
    var ct = c.getTime() - 172800000;

    var races = { 'Sun Mar 14 15:00:00 GMT+0300 2010': '/Event/Bahrain-Grand-Prix-021242823916924/?raceId=1',
        'Sun Mar 28 17:00:00 GMT+0500 2010': '/Event/Australian-Grand-Prix-021242823918447/?raceId=2',
        'Sun Apr 04 16:00:00 GMT+0800 2010': '/Event/Malaysian-Grand-Prix-021242823920071/?raceId=3',
        'Sun Apr 18 15:00:00 GMT+0800 2010': '/Event/Chinese-Grand-Prix-021242823921858/?raceId=4',
        'Sun May 09 14:00:00 GMT+0100 2010': '/Event/Gran-Premio-de-Espa%C3%B1a-021242823923384/?raceId=5',
        'Sun May 16 14:00:00 GMT+0100 2010': '/Event/Gran-Prix-De-Monaco-021242823924884/?raceId=6',
        'Sun May 30 15:00:00 GMT+0200 2010': '/Event/Turkish-Grand-Prix-021242823926424/?raceId=7',
        'Sun Jun 13 12:00:00 GMT-0500 2010': '/Event/Grand-Prix-Du-Canada-021242823928750/?raceId=8',
        'Sun Jun 27 14:00:00 GMT+0100 2010': '/Event/Grand-Prix-of-Europe-021242823933630/?raceId=9',
        'Sun Jul 11 13:00:00 GMT+0000 2010': '/Event/British-Gran-Prix-021242823936752/?raceId=10',
        'Sun Jul 25 14:00:00 GMT+0100 2010': '/Event/Grosser-Preis-Von-Deutschland-021242823938505/?raceId=11',
        'Sun Aug 01 14:00:00 GMT+0100 2010': '/Event/Magyar-Nagydij-021242823939820/?raceId=12',
        'Sun Aug 29 14:00:00 GMT+0100 2010': '/Event/Belgian-Grand-Prix-021242823943806/?raceId=13',
        'Sun Sep 12 14:00:00 GMT+0100 2010': '/Event/Gran-Premio-DItalia-021242823947568/?raceId=14',
        'Sun Sep 26 20:00:00 GMT+0800 2010': '/Event/Singapore-Grand-Prix-021242823952143/?raceId=15',
        'Sun Oct 10 15:00:00 GMT+0900 2010': '/Event/Japanese-Grand-Prix-021242823953506/?raceId=16',
        'Sun Oct 24 14:00:00 GMT+0800 2010': '/Event/Korean-Grand-Prix-021242823955780/?raceId=17',
        'Sun Nov 07 14:00:00 GMT-0300 2010': '/Event/Grande-Premio-Do-Brasil-021242823956675/?raceId=18',
        'Sun Nov 14 17:00:00 GMT+0400 2010': '/Event/Abu-Dhabi-Grand-Prix-021242823957955/?raceId=19'
    };

    for (var key in races) {
        var n = new Date(key);
        var nt = n.getTime();

        if (ct < nt) {
            return races[key];
        }
    }

    return races[0];
}
