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 loginIframe = document.getElementById("login");
    loginIframe.src = gServerUrl + "loginWrapper.html?id=" + escape(userInput.value) + "&token=" + escape(token);*/

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

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

    var params = {};
//			params[gadgets.io.RequestParameters.HEADERS] = { "Authorization" : "Basic " + window.gwData.basicAuthToken };
//		 	params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.JSON;
//		    params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.GET;
//		    params[gadgets.io.RequestParameters.REFRESH_INTERVAL] = 0;
//		    gadgets.io.makeRequest(url, twitterLoginCallback, params);
}

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');
    } 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');
    } 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');
    }
}

var selectedTab = "Featured";
var pause       = false;
var gRefreshCount = 0;

function refreshTweets() {
    if (pause == true) return;
    $.ajax({
        //url: gServerUrl + 'event_timeline/' + window.gwData.eventId + '_' + selectedTab + '.ws?r=' + Math.random(),
        url: "http://www3.tinker.com/msnbc/template/" + 'event_timeline/' + window.gwData.eventId + "_" + selectedTab +".ws?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) {
            //console.log(data);
            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() {
    refreshTweets();
    if ((autorefresh != "") && (parseInt(autorefresh)!=NaN)) {
        gWait = window.setInterval("refreshTweets()",parseInt(autorefresh));
    }
}

function setWidgetStyle() {
    $('body').attr("class", $(document).getUrlParam('st'));
}

function setupiframes() {
    var iframe1 = document.getElementById('event_timeline');
    //iframe1.src = gServerUrl + "wrapper.html?tab=Highlighted";
    var iframe2 = document.getElementById('login');
    iframe2.src = gServerUrl + "loginWrapper.html";
}

/**
     * Change tabs
     */
function changeTab(id) {
    gFirst = true;
    gTweetsAll = new Array();
    switch(id) {
        case 0:
            selectedTab = "All";
            document.getElementById('gwContent').innerHTML = '';
            document.getElementById('tab1').className = "tab selected";
            document.getElementById('tab2').className = "tab";
            document.getElementById('tab3').className = "tab";
            //document.getElementById('event_timeline').src    = gServerUrl + "wrapper.html?tab=All";
            break;
        case 1:
            selectedTab = "Featured";
            document.getElementById('gwContent').innerHTML = '';
            document.getElementById('tab1').className = "tab";
            document.getElementById('tab2').className = "tab selected";
            document.getElementById('tab3').className = "tab";
            //document.getElementById('event_timeline').src    = gServerUrl + "wrapper.html?tab=Highlighted";
            break;
        case 2:
            selectedTab = "Moderated";
            document.getElementById('gwContent').innerHTML = '';
            document.getElementById('tab1').className = "tab";
            document.getElementById('tab2').className = "tab";
            document.getElementById('tab3').className = "tab selected";
            //document.getElementById('event_timeline').src    = gServerUrl + "wrapper.html?tab=Speakers";
            break;
    }
    pageTracker._trackPageview('/tab' + id);
    refreshTweets();
}

var gHash = '#obamaelkhart ';
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");
    //changeTab(0);
    //toggleRefresh('pause');
    /*
    var postFrame = document.getElementById('post_msg');
    var postUrl = gServerUrl + "postWrapper.html?event_id=" + escape(window.gwData.eventId) + "&status=" + escape(msg) + "&image=" + escape(window.gwData.profile_img) + "&token=" + escape(authToken);

    postFrame.src = postUrl;
	*/
    var url = "http://api3.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=?");
				
//var content = document.getElementById('gwContent');
//content.innerHTML = buildTweetHtml(window.gwData.profile_img, window.gwData.userId, msg, "Now") + content.innerHTML;
}

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');
    } 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) {
                //var content = document.getElementById('gwContent');
                //content.innerHTML = gMyTweet + content.innerHTML;
                $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');
    }
}

function fadeCallback() {
    $('#gwTweetThanks').css('display','none').css('opacity','100');
    //toggleRefresh('refresh');
    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();
    pageTracker._trackPageview('/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);
}


/**
 * 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 = 200;
/**
 *  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;

    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());
    });
//});
//});
}

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

	
