//This file contains all the javascript functions for the main page

var g_buttonCount = 4;
var g_currentPage = 1;

function urlencode (str) {
    // URL-encodes string  
    // 
    // version: 909.322
    // discuss at: http://phpjs.org/functions/urlencode
    // +   original by: Philip Peterson
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: AJ
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: travc
    // +      input by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Lars Fischer
    // +      input by: Ratheous
    // +      reimplemented by: Brett Zamir (http://brett-zamir.me)
    // %          note 1: This reflects PHP 5.3/6.0+ behavior
    // *     example 1: urlencode('Kevin van Zonneveld!');
    // *     returns 1: 'Kevin+van+Zonneveld%21'
    // *     example 2: urlencode('http://kevin.vanzonneveld.net/');
    // *     returns 2: 'http%3A%2F%2Fkevin.vanzonneveld.net%2F'
    // *     example 3: urlencode('http://www.google.nl/search?q=php.js&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-US:unofficial&client=firefox-a');
    // *     returns 3: 'http%3A%2F%2Fwww.google.nl%2Fsearch%3Fq%3Dphp.js%26ie%3Dutf-8%26oe%3Dutf-8%26aq%3Dt%26rls%3Dcom.ubuntu%3Aen-US%3Aunofficial%26client%3Dfirefox-a'
    var hexStr = function (dec) {
        return '%' + dec.toString(16).toUpperCase();
    };

    var ret = '',
            unreserved = /[\w.-]/; // A-Za-z0-9_.- // Tilde is not here for historical reasons; to preserve it, use rawurlencode instead
    str = (str+'').toString();

    for (var i = 0, dl = str.length; i < dl; i++) {
        var ch = str.charAt(i);
        if (unreserved.test(ch)) {
            ret += ch;
        }
        else {
            var code = str.charCodeAt(i);
            // Reserved assumed to be in UTF-8, as in PHP
            if (code === 32) {
                ret += '+'; // %20 in rawurlencode
            }
            else if (code < 128) { // 1 byte
                ret += hexStr(code);
            }
            else if (code >= 128 && code < 2048) { // 2 bytes
                ret += hexStr((code >> 6) | 0xC0);
                ret += hexStr((code & 0x3F) | 0x80);
            }
            else if (code >= 2048 && code < 65536) { // 3 bytes
                ret += hexStr((code >> 12) | 0xE0);
                ret += hexStr(((code >> 6) & 0x3F) | 0x80);
                ret += hexStr((code & 0x3F) | 0x80);
            }
            else if (code >= 65536) { // 4 bytes
                ret += hexStr((code >> 18) | 0xF0);
                ret += hexStr(((code >> 12) & 0x3F) | 0x80);
                ret += hexStr(((code >> 6) & 0x3F) | 0x80);
                ret += hexStr((code & 0x3F) | 0x80);
            }
        }
    }
    return ret;
}

function showCreateForm()
{
	var myAjax = new Ajax.Updater('main','create.form.php');
}

function showTopicTrax(topictrax)
{
	$('main').innerHTML = "<img src=\"images/lexgyro-40.gif\" align=\"absmiddle\">&nbsp;Retrieving TopicTrax:&nbsp;" + topictrax;
	var data = "topictrax=" + topictrax;
	var myAjax = new Ajax.Updater('main','show.topictrax.php',{method: 'post', parameters: data});
}

function processCreateForm()
{
	if ($('trak_name').value=="")
	{
		alert("You must name your topicTrak");
	}
	else if ($('trak_query_1').value=="" && $('trak_query_2').value=="" && $('trak_query_3').value=="")
	{
		alert("You must provide at least one query for a topicTrak");
	}
	else
	{	
		var data = $('trak_create_form').serialize();
		
		$('main').innerHTML = "<img src=\"images/lexgyro-40.gif\" align=\"absmiddle\">&nbsp;Building requested TopicTrax";
		var myAjax = new Ajax.Request("create.process.php",{method: 'post', parameters: data, onComplete: doCreateTraxResponse});
	}
}

function processEditForm()
{
	//alert($('trak_edit_form'));
    if ($('trak_query_1').value=="" && $('trak_query_2').value=="" && $('trak_query_3').value=="")
	{
		alert("You must provide at least one query for a topicTrak");
	}
	else
	{	
		var data = $('trak_edit_form').serialize();
        data += "&mode=edit";
		
		$('main').innerHTML = "<img src=\"images/lexgyro-40.gif\" align=\"absmiddle\">&nbsp;Editing requested TopicTrax";
		var myAjax = new Ajax.Request("edit.process.php",{method: 'post', parameters: data, onComplete: doEditTraxResponse});
	}
}

function doCreateTraxResponse(originalRequest)
{
	$('main').innerHTML = originalRequest.responseText;
	var myAjax = new Ajax.Updater('traxlist', 'projects.list.php');
}

function deleteTopicTrax(topictrax)
{
	if (confirm("Are you sure you want to delete '"+topictrax+"' as this cannot be undone"))
	{
		$('main').innerHTML = "<img src=\"images/lexgyro-40.gif\" align=\"absmiddle\">&nbsp;Deleting TopicTrax:&nbsp;" + topictrax;
		var data = "topictrax=" + topictrax;
		var myAjax = new Ajax.Request("delete.process.php",{method: 'post', parameters: data, onComplete: doDeleteTraxResponse});
	}
	
}

function doDeleteTraxResponse(originalRequest)
{
	$('main').innerHTML = originalRequest.responseText;
	var myAjax = new Ajax.Updater('traxlist', 'projects.list.php');
}

function editTopicTrax(topictrax)
{
	$('main').innerHTML = "<img src=\"images/lexgyro-40.gif\" align=\"absmiddle\">&nbsp;Retrieving TopicTrax:&nbsp;" + topictrax;
	var data = "topictrax=" + topictrax;
	var myAjax = new Ajax.Request("edit.form.php",{method: 'post', parameters: data, onComplete: doEditTraxResponse});
	
}

function getQueueDetails(topictrax)
{
	var data = "topictrax=" + topictrax;
	var myAjax = new Ajax.Request("queue.details.php",{method: 'post', parameters: data, onComplete: doGetQueueDetailsResponse});
}

function doGetQueueDetailsResponse(originalRequest)
{
	alert(originalRequest.responseText);
}

function doEditTraxResponse(originalRequest)
{
	$('main').innerHTML = originalRequest.responseText;
}




function showPeopleTweets(trak,label)
{
	//alert(trak + " " + label);
	var data = "mode=people&trak=" + trak + "&label=" + urlencode(label);
	var myAjax = new Ajax.Updater('main','show.tweets.php',{method: 'post', parameters: data});
}

function showThemeTweets(trak,label)
{
	//alert(trak + " " + label);
	var data = "mode=theme&trak=" + trak + "&label=" + urlencode(label) ;
	var myAjax = new Ajax.Updater('main','show.tweets.php',{method: 'post', parameters: data});
}

function showLiveTweets(theme)
{
	var data = "label=" + urlencode(theme);
	var myAjax = new Ajax.Updater('main','show.tweets.php',{method: 'post', parameters: data});
}

function switchPage(page)
{
    if (page != g_currentPage)
    {
        $('btn'+g_currentPage).src = "images/red_button.png";
        $('btn'+page).src = "images/green_button.png"
        g_currentPage = page;
       
        switch (page)
        {
            case '2': //Live themes
                $('statlist').style.visibility = 'hidden';
                $('traxlist').style.visibility = 'hidden';
                $('themelist').style.visibility = 'visible';
                break;
            case '3': //Stats
                $('statlist').style.visibility = 'visible';
                $('traxlist').style.visibility = 'hidden';
                $('themelist').style.visibility = 'hidden';
                break;
            case '4':
                break;    
            default:
                $('statlist').style.visibility = 'hidden';
                $('traxlist').style.visibility = 'visible';
                $('themelist').style.visibility = 'hidden';
        }
        
        $('main').innerHTML = "";
    }
    
}

function showLinks()
{
    $('main').innerHTML = "<img src=\"images/lexgyro-40.gif\" align=\"absmiddle\">&nbsp;Retrieving Link Breakdown";
    var myAjax = new Ajax.Updater('main','show.links.php',{method: 'post'});
}

function showSpam()
{
    $('main').innerHTML = "<img src=\"images/lexgyro-40.gif\" align=\"absmiddle\">&nbsp;Retrieving Latest Spam marked Tweets";
    var myAjax = new Ajax.Updater('main','show.spam.php',{method: 'post'});
}


