﻿// JScript File

var g_Url_GliciousRoot = "http://dev.bridgeborn.com/SocialDNA";

var g_Url_Delicious = "http://del.icio.us/";
var g_Url_API       = "https://api.del.icio.us/v1/";
var g_Url_RSS       = "http://feeds.delicious.com/v2/"  //g_Url_Delicious + "rss/";   //unused

var g_Url_DomainProxy   = g_Url_GliciousRoot + "/gliciousproxy/gliciousproxy.asmx/GetNetworkForUser?user=";
var g_Url_TagCloud      = g_Url_GliciousRoot + "/tagcloud.aspx";

var g_tagsDom = createXMLDomDocument();
var g_xmlhttp = createXMLHttpRequest();
			

/**
 * Handles the Enter key as submit (quick and dirty solution).
 */
function getNetworkHelp(value)
{
   // 13 == Enter
   if (event.keyCode ==13) getNetwork(value);
}

/**
 * Fetches a users tags from the authenticated
 * API endpoint "tags/get."  This method prompts
 * for authentication. 
 */
function getTrafficHelp()
{
    var url = g_Url_API + "tags/get"
    window.status = url;
    
    g_xmlhttp.open("GET", url, false);
    g_xmlhttp.send(null);
    
    g_tagsDom.loadXML(g_xmlhttp.responseText);
}


/**
 * Fetches a users "traffic" and updates the graph viz.
 * Traffic is measured by the use of the <code>for:</code>
 * in the user's tags.  <code>for:</code>-prefixed keywords
 * are only found in the results of the authenticated
 * API endpoint "tags/get."  Therefore this method prompts
 * for authentication.
 */
function getTraffic(userId)
{
    if (g_tagsDom.documentElement == null)
    {
        getTrafficHelp();
    }

    if (g_xmlhttp.status == 200)
    {	
        // TODO: global is more efficient due to creates
        var xsl = createXMLDomDocument();
        xsl.load("transformations/APITags2ScaleNodes.xslt");
        var newxml = g_xmlhttp.responseXML.transformNode(xsl);
        
        // TEMP:  Doms were normalized to Msxml2.DomDocument
        // to correct automation errors in IE6 caused by
        // different versions of MSXML.  This caused the UTF
        // encoding of the transformed output to become 
        // UTF-16 (even though the xslt clearly calls for
        // UTF-8).  The difference in encoding causes Bridgeworks to
        // ignore the parse with the Expat error:
        //
        // [13020] encoding specified in XML declaration is incorrect
        // At least for now, this will get it
        newxml = newxml.replace("UTF-16", "UTF-8");
        
        if (Bridgeworks)
        {
            //alert (newxml);
            Bridgeworks.UpdateScene(newxml);
        }
    }
	
    //alert (g_xmlhttp.responseText);
}

function getNetworkForSource(source)
{
    var network = null;
    
    var url = g_Url_DomainProxy + source;
    window.status = url;
    //alert (url);
    g_xmlhttp.open("GET", url, false);
    g_xmlhttp.send(null);
    if (g_xmlhttp.status == 200)
    {				
        //alert (g_xmlhttp.responseXML.childNodes.item(1).text);
        var browser = whichBrowser();
	    
        var networkText = ""
	    
        switch (browser)
        {
            case 'N':
            {
                networkText = g_xmlhttp.responseXML.childNodes.item(0).textContent;
                //alert (networkText);
            }
            break;
            case 'M':
            {
                networkText = g_xmlhttp.responseXML.childNodes.item(1).text;
                //alert (networkText);
            }	       
            break;
            default:
            break;
       }
	    
        network = networkText.parseJSON();
    }
    
    //else alert( "ERROR:  XMLHTTP Status = " + g_xmlhttp.status );
    
    //alert (source + ": " + network);
	    
    return network
}

function getTaggersForUrl(url)
{
    var taggers = null;
    
    var hash = hex_md5(url);
    var url = g_Url_RSS + "rss/url/" + hash;
    window.status = url;
    //alert (url);
    g_xmlhttp.open("GET", url, false);
    g_xmlhttp.send(null);
    if (g_xmlhttp.status == 200)
    {				
        //alert (g_xmlhttp.responseText);
        
        var dom = null;
        
        if (dom = createXMLDomDocument()) //;
            dom.loadXML(g_xmlhttp.responseText);
        
        var taggersNode =  dom.selectNodes("//dc:creator");  // ?? g_xmlhttp.responseXML.selectNodes("//");
        
        //alert (taggersNode.item(0).text);
	    
        taggers = getTaggersForUrlHelp(taggersNode);
        
    }
    
    //else alert( "ERROR:  XMLHTTP Status = " + g_xmlhttp.status );
    
    //alert (source + ": " + taggers);
	    
    return taggers
}

function getTaggersForUrlHelp(taggersNode)
{
    var taggers = "";
    var tagger = null;
    for (i = 0; i < taggersNode.length; ++i)
    {
        tagger = taggersNode.item(i).text;
        //tagger = tagger.getAttribute("rdf:resource");
        //tagger = tagger.split("#");
        //tagger = tagger[1];
        taggers += tagger;
        if (i < taggersNode.length-1) 
            taggers += ",";
        window.status = taggers;
    }
    taggers = taggers.split(",");
    //alert (taggers);
    return taggers;
}