YAHOO.namespace( 'vwtlinkedin' );
YAHOO.namespace( 'vwtlinkedin.config' );

YAHOO.vwtlinkedin.init = function( event ) {
    var Dom = YAHOO.util.Dom;
    var config = YAHOO.vwtlinkedin.config.findLinkedin;
    
    var elements = Dom.getElementsByClassName( config.className, config.tagName, config.root );
    
    var degrees = YAHOO.vwtlinkedin.fetchDegrees( elements );
}

YAHOO.vwtlinkedin.fetchDegrees = function( elements ) {
    if ( !elements || !YAHOO.vwtlinkedin.config.agreementKey )
        return;

    var postData = '';
    var urls = new Array();
    for ( i = 0; i < elements.length; i++ )
    {
        // We don't need to lookup the current users' profile as we know how we're connected to ourself
        if ( YAHOO.vwtlinkedin.config.currentUserPublicProfileUrl ==  elements[i].firstChild.href )
        {
            var degrees = Array();
            degrees[YAHOO.vwtlinkedin.config.currentUserPublicProfileUrl] = 0;
            YAHOO.vwtlinkedin.updateDegrees( new Array( elements[i] ), degrees );
            continue;
        }

        urls.push( elements[i].firstChild.href );
    }
    
    if ( urls.length == 0 )
        return;
    
    postData = postData + "&agreement_key=" + YAHOO.vwtlinkedin.config.agreementKey;
    postData = postData + "&urls=" + YAHOO.lang.JSON.stringify( urls );
    var requestUrl = '/vwtlinkedin/degrees/';

    var callback = 
    {
        success: function( o ) {
            try { 
                var result = YAHOO.lang.JSON.parse( o.responseText );
                YAHOO.vwtlinkedin.updateDegrees( elements, result );
            } 
            catch (e) { 
                // Do nothing on errors
            }
        },        
        failure: function( o ) {
            // Do nothing on errors
        }
    };
    
    var request = YAHOO.util.Connect.asyncRequest( 'POST', requestUrl, callback, postData );
}

YAHOO.vwtlinkedin.updateDegrees = function( elements, degrees )
{
    for ( j = 0; j < elements.length; j++ )
    {
        var link = elements[j].firstChild.href;
        var degree = degrees[link];
        if ( degree == null )
            continue;

        var element = elements[j].nextSibling;
        YAHOO.util.Dom.removeClass( element, 'hide' );

        var cssClass = "linkedin-degree-" + degree;
        YAHOO.util.Dom.addClass( element, cssClass );
    }    
}

YAHOO.vwtlinkedin.config.findLinkedin = {
    className: "view-on-linkedin",
    tagName: "p",
    root: "page"
}

YAHOO.vwtlinkedin.config.agreementKey = '';
YAHOO.vwtlinkedin.config.currentUserPublicProfileUrl = '';


YAHOO.util.Event.onDOMReady( YAHOO.vwtlinkedin.init );