if (!/Windows/.test(navigator.userAgent)){
    document.write("<style>@media screen and (-webkit-min-device-pixel-ratio:0){#gwTopBar { height: 17px!important;}} #gwContentWrapper{margin-top:2px!important;}</style>");
}

window.gwData = { 
    eventId: $(document).getUrlParam("id")
};
var autorefresh = "7000";


var authToken;
		
function twitterLogin() {	
    var userInput = document.getElementById('gwUserInput');
    var passInput = document.getElementById('gwPassInput');
    var token = userInput.value + ":" + passInput.value;
    window.gwData.basicAuthToken = base64encode(token);
    authToken = base64encode(token);
    token = base64encode(token);

    var url = "http://api.tinker.com/xross/login.php?id=" + escape(userInput.value) + "&token=" + escape(token);
    $.getJSON(url + "&callback=?");

    userInput.value = '';
    passInput.value = '';
    document.getElementById('gwLogin').style.display='none';
    document.getElementById('gwLoginLoading').style.display='block';
}

function login_results(data) {
    twitterLoginCallback(data);
}

function tweet_results(data) {
    if (data != null) {
        doTweetCallback(data);
    }
}
		
var gTwitterStatus = "online";
 
function twitterLoginCallback(response) {
    if (response.error) {
        document.getElementById('gwLoginLoading').style.display='none';
        document.getElementById('gwLogin').style.display='block';
        document.getElementById('gwError').style.visibility='visible';
        document.getElementById('gwUser').style.display='inline';
        document.getElementById('error').innerHTML=response.error;  // this line is new to display error.
        gTwitterStatus = "online";
        pageTracker._trackPageview('/login/error');
        trackEvent('login/error');
    } else if(response.tinkermsg) {
        window.gwData.userId = response.screen_name;
        window.gwData.profile_img = response.profile_image_url;
        document.getElementById('gwLoginLoading').style.display='none';
        document.getElementById('gwUpdate').style.display='block';
        document.getElementById('gwMsg').innerHTML = '<span class="twitterError">Unable to contact Twitter</span>'; // change gwMsg to error (tinkermsg).
        document.getElementById('gwUpdateInput').value = 'Update your Twitter status here.';
        document.getElementById('gwUser').style.display='none'; // hide username, using gwMsg for error
        document.getElementById('gwClickHere').style.display='none';
        document.getElementById('gwLogout').style.display='none';
        gTwitterStatus = "offline";
        pageTracker._trackPageview('/login/unabletocontacttwitter');
        trackEvent('login/unabletocontacttwitter');
    } else {
        window.gwData.userId = response.screen_name;
        window.gwData.profile_img = response.profile_image_url;
        document.getElementById('gwUser').innerHTML = window.gwData.userId;
        document.getElementById('gwClickHere').style.display='none';
        document.getElementById('gwLoginLoading').style.display='none';
        document.getElementById('gwError').style.visibility='hidden';
        document.getElementById('gwUpdate').style.display='block';
        document.getElementById('gwLogout').style.display='inline';
 
        document.getElementById('gwMsg').innerHTML='You are logged in as '; // change gwMsg back
        document.getElementById('gwUser').style.display='inline'; // show username again
        gTwitterStatus = "online";
        gLogged = 1;
        pageTracker._trackPageview('/login/success');
        trackEvent('login/success');
    }
}

// Tab Definitions
var tab1 = "All";
var tab2 = "QandA";
var tab3 = "Featured";
var selectedTab = ($(document).getUrlParam("defaulttab"))? $(document).getUrlParam("defaulttab") : tab1; // Set Default tab (change css class on tab to 'selected')

var pause       = false;
var gRefreshCount = 0;

function refreshTweets() {
    if (pause == true) return;
    $.ajax({
        url: gServerUrl + 'msnbc/msnbc-template/event_timeline/' + window.gwData.eventId + '_' + selectedTab + '.ws?r=' + Math.random() + '&callback=?',
        //url: "http://www3.tinker.com/msnbc/template/" + 'event_timeline/' + window.gwData.eventId + "_" + selectedTab +".ws?callback=?",
        //url: "http://api.tinker.com/event_timeline/" + window.gwData.eventId + ".json?callback=?",
        type: "GET",
        dataType: "json",
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            if(gRefreshCount < 5) {
                window.setTimeout(function() {
                    refreshTweets();
                    gRefreshCount++;
                }, 200);
            } else {
                gRefreshCount = 0;
            }
        },
        success: function (data, textStatus) {
            processData(data);
        }
    })
}

function ws_results(data) {
    processData(data);
}
		

function twitterLogout() {
    window.gwData.userId = '';
    window.gwData.profile_img = '';
    document.getElementById('gwUpdate').style.display='none';
    document.getElementById('gwClickHere').style.display='block';
}

var whitelistNames = new Object();
whitelistNames["DrNancyMSNBC"] = 1;
whitelistNames["davidgregory"] = 1;

String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g,"");
}

function buildTweetHtml(img, name, txt, when) {
    txt = txt.replace(/href=/g, "target='_blank' href=");
    if (name.indexOf('\(') != -1) name = name.slice (0,name.indexOf('\('));
    if (whitelistNames[name.trim()]) {
        name = '<span class="whitelistname">' + name + '</span>';
    }
    var twitterLink = "<a href='" + gClickThru + "http://www.twitter.com/" + name + "' target ='_blank'>";
    buffer  = "<div class='gwFeed'><div class='gwFeedImage'>" + twitterLink + "<img src='" + img + "' height='48' width='48'/></a></div>";
    buffer += "<div class='gwFeedContent'><div class='gwFeedTitle'>" + twitterLink + name + " </a></div>";
    buffer += "<div class='gwFeedText'>" + txt + "</div> ";
    buffer += "<div class='gwFeedSub'>" + when + "</div>";
    buffer += "</div><br clear='all'/></div>";
    return buffer;
}
	
var gClickThru = '';
var gTinkerLink = "http://www.tinker.com";
var gEventLink = "";
		
function makeScrollPane() {
    try {
        if ($('.scroll-pane').height() == 0) {
            window.setTimeout(makeScrollPane,500);
            return;
        } else {
            document.getElementById('gwContent').style.display="block";
            $('.scroll-pane').jScrollPane({
                scrollbarWidth: 9,
                dragMinHeight:45,
                dragMaxHeight:45
            });
        }
    } catch(e) {
        $('.jScrollPaneContainer').css({
            "height":"395px",
            "width":"290px"
        });
    }
}
		
var gWait;
		
function onLoad() {
    var selected_tab = $(document).getUrlParam("defaulttab");
    if(selected_tab == 0) {
        selectedTab = tab1;
        $('#tab1').attr("class", "tab selected");
    } else if(selected_tab == 1) {
        selectedTab = tab2;
        $('#tab2').attr("class", "tab selected");
    } else if(selected_tab == 2) {
        selectedTab = tab3;
        $('#tab3').attr("class", "tab selected");
    } else { // default is tab1
        selectedTab = tab1;
        $('#tab1').attr("class", "tab selected");
    }
    refreshTweets();
    if ((autorefresh != "") && (parseInt(autorefresh)!=NaN)) {
        gWait = window.setInterval("refreshTweets()",parseInt(autorefresh));
    }
    $("body").mouseenter(function(){
      glam.metrics.recordEvent("it",0,"start");
    }).mouseleave(function(){
      glam.metrics.recordEvent("it",0,"stop");
    });

    $("#gwUpdateInput").blur(function () {
         if(($('body').attr('class')).indexOf("bottom", 0) != -1) {
            $('#gwUpdateInput').height($('#gwUpdateInput').css("minHeight"));
            var currentTop = $("#gwBottomBar").css("top").substr(0,3);
            var newTop = parseInt(currentTop) + moveBottomTextareaAmount;
            $('#gwBottomBar').css("top", newTop);
            textAreaIsExpanded = 0;
         }
    });
}

function setWidgetStyle() {
    var body_style = $(document).getUrlParam('st');
    var extra_style = "";
    if($(document).getUrlParam("title") == 1) {
        extra_style = " title"
    }
    if($(document).getUrlParam("tweetbox") == "top") {
        extra_style += " tweetboxtop";
    } else if($(document).getUrlParam("tweetbox") == "bottom") {
        extra_style += " tweetboxbottom";
    }
    
    if($(document).getUrlParam("fs") == 1) {
        extra_style += " fs";
    }

    extra_style = extra_style.replace(/ /g, "_")
    extra_style = extra_style.replace("_", " ")

    if($(document).getUrlParam("tabs") == 1) {
        extra_style += " showtabs";
    }
    
    $('body').attr("class", body_style + extra_style);
    
    if($(document).getUrlParam("hashtag") != null) {
        gHash = decodeURIComponent($(document).getUrlParam("hashtag"));
    }
}

/**
 * Change tabs
 */
function changeTab(id) {
    gFirst = true;
    gTweetsAll = new Array();
    switch(id) {
        case 0:
            selectedTab = tab1;
            document.getElementById('gwContent').innerHTML = '';
            document.getElementById('tab1').className = "tab selected";
            document.getElementById('tab2').className = "tab";
            document.getElementById('tab3').className = "tab";
            break;
        case 1:
            selectedTab = tab2;
            document.getElementById('gwContent').innerHTML = '';
            document.getElementById('tab1').className = "tab";
            document.getElementById('tab2').className = "tab selected";
            document.getElementById('tab3').className = "tab";
            break;
        case 2:
            selectedTab = tab3;
            document.getElementById('gwContent').innerHTML = '';
            document.getElementById('tab1').className = "tab";
            document.getElementById('tab2').className = "tab";
            document.getElementById('tab3').className = "tab selected";
            break;
    }
    pageTracker._trackPageview('/tab' + id);
    trackEvent('tab' + id);
    refreshTweets();
}

function trackEvent(name) {
    if (window.gExternalTrackers && gExternalTrackers[name]) {
        var img = new Image();
        img.src = gClickThru+gExternalTrackers[name]+Math.random();
    }
    if (window.glam && glam.metrics && glam.metrics.recordEvent) {
        glam.metrics.recordEvent(name);
    }
}
if(gHash == undefined || gHash == null) {
    var gHash = '';
}
var gThanks = 'Thanks! Your tweet has been posted.';
var gMyTweet = '';
    
function doTweet() {
    if (document.getElementById('gwTweetThanks')) {
        document.getElementById('gwUpdate').style.visibility='hidden';
        document.getElementById('gwTweetThanks').innerHTML = "Posting...";
        document.getElementById('gwTweetThanks').style.display='block';
    }

    var msgbox = document.getElementById('gwUpdateInput');
    var msg = msgbox.value;
    msgbox.style.color = "#AAA";
    msgbox.value = gHash;
    limitText(msgbox.id,'gwWordcount',140);

    gMyTweet = buildTweetHtml(window.gwData.profile_img, window.gwData.userId, msg, "Now");

    var url = "http://api.tinker.com/xross/post.php?event_id=" + escape(window.gwData.eventId) + "&status=" + escape(msg) + "&image=" + escape(window.gwData.profile_img) + "&token=" + escape(authToken);;
    $.getJSON(url + "&callback=?");
				
}

function doTweetCallback(response) {
    if (response.error) {
        if(document.getElementById('gwTweetThanks')) {
            $('#gwTweetThanks').animate({
                opacity: 0
            }, 300, 'linear', function() {
                $('#gwTweetThanks').css('display','none').css('opacity','100');
            });
        }
        document.getElementById('gwLoginLoading').style.display='none';
        document.getElementById('gwLogin').style.display='block';
        document.getElementById('gwError').style.visibility='visible';
        document.getElementById('error').innerHTML=response.error;  // this line is new to display error.
        pageTracker._trackPageview('/doTweet/error');
        trackEvent('doTweet/error');
    } else {
        document.getElementById('gwLoginLoading').style.display='none';
        document.getElementById('gwError').style.visibility='hidden';
        if(document.getElementById('gwTweetThanks')) {
            document.getElementById('gwTweetThanks').innerHTML = gThanks;
            window.setTimeout(function() {
                $('#gwTweetThanks').animate({
                    opacity: 0
                }, 500, 'linear', fadeCallback)
            }, 1500);
            if(gMyTweet.length != 0) {
                $my_post = '<span id="my_post" style="margin-bottom:10px;">' + gMyTweet + '</span>';
                $('#gwContent').prepend($my_post);
                gMyTweet = '';
                $('#my_post').slideDown("slow",function(){
                    $('#my_post').removeAttr("id");
                });
                $('#gwUpdateInput').height("22");
            }
        }
        pageTracker._trackPageview('/doTweet/success');
        trackEvent('doTweet/success');
    }
}

function fadeCallback() {
    $('#gwTweetThanks').css('display','none').css('opacity','100');
    document.getElementById('gwUpdate').style.visibility='visible';
}

/*****************************
*
* 
* CHANGE THIS URL TO WHEREVER THE WIDGET LIVES?????
*
* this is the "share" embed iframe src
*
* */
function buildIframeUrl(event_id) {
    return "http://widgets.tinker.com/module/tinker2.php?mid=" + Math.random();
}
/*
*  Pass state as "pause" or "refresh" to specify specific state.
*  Default will toggle from current state to opposite state.
*/
function toggleRefresh(state) {
    if(state) {
        if(state == "pause") {
            pause = true;
            document.getElementById('gwRefresh').innerHTML = "Refresh";
        } else {
            pause = false;
            document.getElementById('gwRefresh').innerHTML = "Pause";
        }
    } else {
        if (document.getElementById('gwRefresh').innerHTML == "Refresh") {
            pause = false;
            document.getElementById('gwRefresh').innerHTML = "Pause";
        } else if (document.getElementById('gwRefresh').innerHTML == "Pause") {
            pause = true;
            document.getElementById('gwRefresh').innerHTML = "Refresh";
        }
    }
}

function toggleRefreshList() {
    $('#refreshSelection').toggle();
    if($('#refreshSelection').is(':visible')) {
        pageTracker._trackPageview('/refreshRateChange/showChoices');
        trackEvent('refreshRateChange/showChoices');
    }
}

function changeRefresh(elem, speed) {
    if(parseInt(speed)) {
        autorefresh = speed;
    } else if(speed == "rt") {
        speed = 3000;
    } else if(speed == "pause") {
        speed = 0;
    }
    autorefresh = speed;
    $('#refreshSelection > ul > li > *').removeClass("current");
    $(elem).addClass("current");
    clearInterval(gWait);
    if(speed > 0) {
        refreshTweets();
        gWait = window.setInterval("refreshTweets()",parseInt(autorefresh));
    }
    window.setTimeout(function() {
        toggleRefreshList();
    }, 200);
    pageTracker._trackPageview('/refreshRateChange/' + speed);
    trackEvent('refreshRateChange/' + speed);
}


/**
 * Compare two arrays of tweets to find new tweets only.
 */
function compareTweets(array1,array2) {
    var newTweets = new Array();
        o:for (var i = 0; i < array1.length; i++) {
            for (var x = 0; x < array2.length; x++) {
                if(array1[i].id == array2[x].id)
                    continue o;
            }
            newTweets.push(array1[i]);
        }
    return newTweets;
}


/**
 *  Global variables related to processing new posts.
 */
var gTweetsAll = new Array();
var gFirst = true;
var gNewTweetsCounter = 0;
var gModerated = false;
var gTotalNumberPostsToDisplay = 100;
/**
 *  Function processes new data.  Formerly known as "goo()"
 */
function processData(data) {
    var gTweetsNew = new Array();
    var gTweetBufferHTML = '';
    var showTweetsDiv = '<div id="newTweetSpacer" class="newTweetsInfo"></div>';
    gModerated = false;
    if(data) {
    gTweetsNew = compareTweets(data.items, gTweetsAll); // Compare new tweets (data.items) to gTweetsAll to find which are new.
    gTweetsAll = gTweetsNew.concat(gTweetsAll);
    while(gTweetsAll.length > gTotalNumberPostsToDisplay) {
        gTweetsAll.pop();
    }
    if(gFirst) {
        displayFeed(data);
        gFirst = false;
    } else if(gTweetsNew.length > 0) {
        gNewTweetsCounter += gTweetsNew.length;

        for (var ix in gTweetsNew) {
            var item = gTweetsNew[ix];
            // check if moderation is on
            if(item.moderated) {
                gModerated = true;
            }
            gTweetBufferHTML += buildTweetHtml(item.image, item.user.name, item.text, item.created);
        }

        if(!document.getElementById('newTweets')) {
            gTweetBufferHTML = '<span id="newTweets" style="display:none">' + gTweetBufferHTML + '</span>';
            $('#gwContent').prepend(gTweetBufferHTML);
        } else {
            $('#newTweets').prepend(gTweetBufferHTML);
        }

        /*if(!document.getElementById('newTweetSpacer')) {
            $('#gwContent').prepend(showTweetsDiv);
        }*/

        //$('#showTweetsLink').html("Show (" + gNewTweetsCounter + ") new tweets.");
        
        /*if ($('#newTweetSpacer').is(":hidden")) {
            $('#newTweetSpacer').slideDown("slow", function() {
                $('#showMoreTweets').fadeIn("slow");
            });
        }*/
        delete item;
        delete data;

        showNewTweets();
        /*if(gModerated) {
            //show tab 3
            $('#tab2').css("border-right", "none");
            $('#tab3').css("display", "block");
            changeTab(3);
        } else {
            $('#tab2').css("border-right", "1px solid #676767");
            $('#tab3').css("display", "none");

            // change to the featured or all tab
        }*/
    }
    }
}

/**
 * Show new tweets -- This should run when user clicks "show me new tweets"
 */
function showNewTweets() {
    var jQueryBugHack = true; // slideDown() callback fires twice for some reason.
    //$('#showMoreTweets').fadeOut("slow",function() {
    //$('.newTweetsInfo').slideUp("slow", function() {
    //$('#newTweetSpacer').remove();
    $('#newTweets').slideDown("slow",function(){
        if(jQueryBugHack) {
            var totalTweets = $('#gwContent .gwFeed');
            if(totalTweets.length > gTotalNumberPostsToDisplay) {
                $('#gwContent .gwFeed:gt(' + (gTotalNumberPostsToDisplay - 1) + ')').unbind();
                $('#gwContent .gwFeed:gt(' + (gTotalNumberPostsToDisplay - 1) + ')').remove();
            }
            makeScrollPane();
            gNewTweetsCounter = 0;  // reset number of new tweets
            jQueryBugHack = false;
        }
        $('#newTweets').replaceWith($('#newTweets').contents());
    });
//});
//});
}

var moveBottomTextareaAmount = 0;
var textAreaIsExpanded = 0;
function textAreaClick(div, boxheight, moveAmount) {
    if(!textAreaIsExpanded) {
        moveBottomTextareaAmount = moveAmount;
        if(div.value.indexOf("Update your") != -1) {
            div.value=gHash;
        }
        div.style.color='#000';
        limitText(div.id,'gwWordcount',140);
        //div.onclick=null;
        if(($('body').attr('class')).indexOf("bottom", 0) != -1) {
            if(boxheight > 0) {
                $(div).height(boxheight);
            }
            var currentTop = $("#gwBottomBar").css("top").substr(0,3);
            var newTop = parseInt(currentTop) - moveBottomTextareaAmount;
            $('#gwBottomBar').css("top", newTop);
        }
        textAreaIsExpanded = 1;
    }
}

// Fire onLoad() when DOM is ready.
$(function () {
    onLoad();
});

//Legacy tracking code from Greg.
code = 'im';
code = '00'+code+'01';
//XXX: support count

var tracking_mid = $(document).getUrlParam('appid') || 0;
var tracking_pubid = $(document).getUrlParam('pubid') || '104510405';
var tracking_devid = $(document).getUrlParam('devid') || 0;

var ord = window.atakoOrd ? window.atakoOrd : 0;
var kw =  { pid : $(document).getUrlParam('pv'), //pageview id
  fid : 'g', //subformat: 'g' (for gadget)
  tid : $(document).getUrlParam('id'), //send gadget position on page as tile id
  m : $(document).getUrlParam('appid') || 0,
  p : $(document).getUrlParam('pubid') || '104510405',
  b : $(document).getUrlParam('devid') || 0,
  e : code //interaction code
}

var img = new Image();
var url = 'http://www13.glam.com/clear.gif?a=ga&m='+tracking_mid+'&p='+tracking_pubid+'&b='+tracking_devid+'&e='+code;
img.src = url;
