﻿
function addToSearchQuery(str)
{
    var searchBox = document.getElementById('txtSearchTerm');
    var searchBtn = document.getElementById('btnSearch');
    if(searchBox)
    {
        searchBox.value = searchBox.value + ' ' + str;
        if(searchBtn)
        {
            searchBtn.click();
        }
    }
}
function prepareKeywordLinks()
{
    var keyListStrBox = document.getElementById('picNicheAllKeywordsArraySpan');
    if(keyListStrBox)
    {
        var keyListStr = keyListStrBox.innerHTML;
        if(keyListStr && keyListStr.length > 0)
        {
            var keyListArray = keyListStr.split(', ');
            if(keyListArray && keyListArray.length > 0)
            {
                for(var i=0; i<keyListArray.length; i++)
                {
                    if(keyListArray[i] && keyListArray[i].length > 0)
                    {
                        keyListArray[i] = "<span onClick=\"javascript:addToSearchQuery('" + keyListArray[i] + "');\">" + keyListArray[i] + "</span>";
                    }
                }
                keyListStr = keyListArray.join(', ');
            }
        }
        keyListStrBox.innerHTML = keyListStr;
    }
}

var dataCache = null;

function drawRatingGraph()
{
    if(dataCache)
    {
        var chartDiv = document.getElementById('chartholder');
        var showGoogData = document.getElementById('chk_showGoogleData');
        var divShowGoogData = document.getElementById('div_showGoogleData');
        if(chartDiv)
        {
            var ratObj = dataCache[0];
            var ginObj = null;
            if(dataCache.length > 1)
            {
                ginObj = dataCache[1];
            }
            
            chartDiv.style.display = '';
            if(divShowGoogData && showGoogData)
            {
                divShowGoogData.style.display = '';
            }
            
            var dataRating = [];
            var dataImageCount = [];
            var dataDownloads = [];
            var dataInterest = [];
            
            var totalRating = 0.00;
            var totalCount = 0.00;
            var totalDownloads = 0.00;
            var totalInterest = 0.00;
            var avgRating = 0.00;
            var avgCount = 0.00;
            var avgDownloads = 0.00;
            var avgInterest = 0.00;
            
            for(var aggCount=0; aggCount<ratObj.length; aggCount++)
            {
                ratObj[aggCount][0] = parseInt(ratObj[aggCount][0]);
                ratObj[aggCount][1] = parseInt(ratObj[aggCount][1]);
                ratObj[aggCount][2] = parseInt(ratObj[aggCount][2]);
                ratObj[aggCount][3] = parseInt(ratObj[aggCount][3]);
                ratObj[aggCount][4] = parseFloat(ratObj[aggCount][4]);
                
                totalRating = totalRating + ratObj[aggCount][4];
                totalCount = totalCount + ratObj[aggCount][1];
                totalDownloads = totalDownloads + ratObj[aggCount][3];
            }
            
            avgRating = totalRating / ratObj.length;
            avgCount = totalCount / ratObj.length;
            avgDownloads = totalDownloads / ratObj.length;
            
            for(var i=0; i<ratObj.length; i++)
            {
                dataRating.push([ratObj[i][0], ratObj[i][4] * (100 / avgRating)]);
                dataImageCount.push([ratObj[i][0], ratObj[i][1] * (100 / avgCount)])
                dataDownloads.push([ratObj[i][0], ratObj[i][3] * (100 / avgDownloads)])
            }
            
            if(ginObj && ginObj.length > 0)
            {
                for(var ginCount=0; ginCount<ginObj.length; ginCount++)
                {
                    ginObj[ginCount][0] = parseInt(ginObj[ginCount][0]);
                    ginObj[ginCount][1] = parseInt(ginObj[ginCount][1]);
                    
                    totalInterest = totalInterest + ginObj[ginCount][1];
                }
                
                avgInterest = totalInterest / ginObj.length;
                
                for(var j=0; j<ginObj.length; j++)
                {
                    dataInterest.push([ginObj[j][0], ginObj[j][1] * (100 / avgInterest)]);
                }
            }
            plotArray = []
            if(showGoogData && showGoogData.checked)
            {
                plotArray.push({
                        data: dataInterest,
                        color: '#AADDFF',
                        lines: { show: true,
                                 lineWidth: 1 },
                        points: { show: false },
                        label: 'google'
                    });
            }
            plotArray.push({
                    data: dataImageCount,
                    color: 'blue',
                    lines: { show: true,
                             lineWidth: 1 },
                    points: { show: false },
                    label: 'images'
                });
            plotArray.push({
                    data: dataDownloads,
                    color: 'yellow',
                    lines: { show: true,
                             lineWidth: 1 },
                    points: { show: false },
                    label: 'downloads'
                });
            plotArray.push({
                    data: dataRating,
                    color: 'green',
                    lines: { show: true,
                             lineWidth: 4 },
                    points: { show: true },
                    label: 'rating'
                });
            
            $.plot($("#chartholder"), plotArray,
                {
                    xaxis: {
                        mode: 'time',
                        timeformat: "%m/%y"
                },
                legend: {
                    show: true,
                    position: "se",
                    //backgroundColor: null,
                    backgroundOpacity: 0.25
                  }} );
        }
    }
}

function getHistoricalNicheRecord_callback(searchString, res)
{
    if(res && res.value)
    {
        var resObj = JSON.parse(res.value);
        if(resObj && resObj.length > 0 && resObj[0])
        {
            dataCache = resObj;
            drawRatingGraph();
        }
    }
}

function getHistoricalNicheRecord()
{
    var searchBox = document.getElementById('txtSearchTerm');
    if(searchBox && searchBox.value && searchBox.value.length > 2)
    {
        var searchString = searchBox.value;
        var searchLang = 2;
        var searchLangDrop = document.getElementById('ddlLanguage');
        if(searchLangDrop && searchLangDrop.selectedIndex > -1)
        {
            searchLang = searchLangDrop.options[searchLangDrop.selectedIndex].value;
        }
        PicNiche.NicheFinder.GetHistoricalNicheRecord(searchString, 2, function(res) { getHistoricalNicheRecord_callback(searchString, res) } );
    }
}

function KeyDownHandler(btn, e)
{
	var Key_Id = (window.event) ? event.keyCode : e.keyCode;
	// process only the Enter key
	if (Key_Id == 13)
	{
		// cancel the default submit
		(e || event).returnValue = false;
		(e || event).cancel = true;
		// submit the form by programmatically clicking the specified button
		btn.click();
	}
}
function toggleDiv(elname)
{
	var aboutdivel = document.getElementById(elname);
	
	if(aboutdivel != null)
	{
	    if(jQuery)
	    {
	        jQuery(aboutdivel).fadeToggle();
	        
	        jQuery('div.soloitem:not(#' + elname + ')').hide();
	    }
	    else
	    {
		    if(aboutdivel.style.display == 'block')
		    {
			    aboutdivel.style.display = 'none';
		    }
		    else
		    {
			    aboutdivel.style.display = 'block';
		    }
		}
	}
}
function unsetRegisterMode()
{
    setRegisterMode(false);
}
function setRegisterMode(setState)
{
    document.getElementById('registerrepassrow').style.display = ((setState !== false) ? '' : 'none');
    document.getElementById('registeremailrow').style.display = ((setState !== false) ? '' : 'none');
    document.getElementById('registernamerow').style.display = ((setState !== false) ? '' : 'none');
    document.getElementById('registercancellink').style.display = ((setState !== false) ? '' : 'none');
    document.getElementById('registerpolicy').style.display = ((setState !== false) ? '' : 'none');
    document.getElementById('LoginButton').style.display = ((setState !== false) ? 'none' : '');
    document.getElementById('PreRegisterButton').style.display = ((setState !== false) ? 'none' : '');
    document.getElementById('SaveRegisterButton').style.display = ((setState !== false) ? '' : 'none');
}

function setDefaultBox()
{
	el = document.getElementById('txtSearchTerm');
	if(el != null)
	{
		el.focus();
		el.value = el.value;
	}
	if(prepareKeywordLinks)
	{
	    prepareKeywordLinks();
	}
	if(getHistoricalNicheRecord)
	{
	    getHistoricalNicheRecord();
	}
}

function replaceURLWithHTMLLinks(text, target) {
    var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
    return text.replace(exp,"<a href='$1'" + ((target) ? ' target=\"' + target + '\"' : '') + ">$1</a>"); 
}

function replaceTwitterNameWithLinks(text, target) {
    var exp = /@(\w+)/ig;
    return text.replace(exp,"<a href='http://twitter.com/$1'" + ((target) ? ' target=\"' + target + '\"' : '') + ">@$1</a>"); 
}

var loadingTwitterContent = false;
function getTwitterContent()
{
    toggleDiv('twitterdiv');
    if(!loadingTwitterContent)
    {
        loadingTwitterContent = true;
        $.jTwitter('bobbigmac', 10, function(posts){
            if(posts && posts[0])
            {
                var outStr = '<div><a href=\"http://www.twitter.com\/bobbigmac\"><img src=\"' + posts[0].user.profile_image_url + '\" \/><\/a><\/div><ul>';
                for(tweetKey in posts)
                {
                    if(posts[tweetKey] && posts[tweetKey].text)
                    {
                        outStr += '<li>' + replaceTwitterNameWithLinks(replaceURLWithHTMLLinks(posts[tweetKey].text), 'twitter') + '</li>';
                    }
                }
                document.getElementById('twitterdiv').innerHTML = outStr + '</ul>';
            }
        });
    }
}

window.onload = setDefaultBox;
