var debug = false;

//============================================================================//
//================================ TAG =======================================//
// ***************************************************************************//
// *  JavaScript section contains the functionality to perform
// *  the AJAX call which will post the comment to TRRI.  
// ***************************************************************************//
/**
 * This will attempt to reload the tags.
 */
function reloadTags(trackAolID, author) {
    var ajxUrl = "/song/ajax/gettags_ajax.jsp?" +
                 "trackAolID=" + trackAolID + "&" +
                 "author=" + author + "&" + 
                 "rndm=" + Math.random();
                 
    if(debug) {
        alert("Requesting URL: " + ajxUrl);
    }

    var success = false;
    dojo.io.bind({
        method:"GET",
        url:ajxUrl,
        sync:true,
        handler: function(type, data, evt) {
            if (type == "error") {
                success = false;
            } else {
                dojo.byId("tagModule").innerHTML = data;
                success = true;
            }
        }
    });
}

// ***************************************************************************//
// *  These are functions are invoked by the comments pages.
// ***************************************************************************//

/**
 * This will attempt to add the tags.
 */
function addTags(trackAolID, objectUri, requester, category) {

   var tag = document.forms["tagForm"].addTags.value;
    if((tag == null) || (tag.length < 1) || tagIsInitVal(tag)) {
        if(debug)
            alert("Tag: " + tag);
        return;
    }
    
    // Lets remove invalid characters, and truncate the tags if they are too long.
    tag = truncateTag(cleanseTag(tag));
        
    var ajxUrl = "/song/ajax/addtags_ajax.jsp?" +
                 "objectUri=" + objectUri + "&" +
                 "requester=" + requester + "&" +
                 "category=" + category;

    var tagQuery = genTagsQuery(tag);  

    // Dont' do anything if there are no tags
    if(tagQuery != null && tagQuery.length > 0) {                 
        ajxUrl += ("&tag=" + tagQuery);
                 
	    dojo.io.bind({
	        method: "GET",
	        url: ajxUrl,
	        sync:true,
	        handler: function(type, data, evt) {
	            if (type == "error") {
	                success = false;
	            } else {
	                var tagField = dojo.byId("addTags");
	                if (tagField != null) {
	                    tagField.value = tagField.oValue;
	                }
	                success = true;
	            }
	        }
	    });
	    
        if(success) {
            reloadTags(trackAolID, requester);
        }
    
    }
}

/**
 * Will return the tags with the tag= prefix if it contains ','.
 * twotag, three tag, more more tags returns
 * tag=twotag&tag=three%20tag&tag=more%20more%20tags 
 */
function genTagsQuery(tags) {
    if((tags != null) && (tags.length > 0)) {
        // Remove extraneous ',' from begining or end of tags
        tags = tags.replace(/^,*/,'').replace(/,*$/,'')    
        if(tags.indexOf(',') > -1) {
            var arrayOfTags = tags.split(/,/);
            var cleanTags = new Array();
            for(i=0; i<arrayOfTags.length; i++) {
                // Clever way to remove extraneous white space and escape tags
                var tag = arrayOfTags[i].replace(/^\s*/,'').replace(/\s*$/,'');
                if(tag.length > 1) {
                    cleanTags.push(escape(tag));
                }
            }
            if(cleanTags.length > 0) {
                var query = cleanTags.join("&tag=");
                return query;
            }
        }
    }
    return tags;
}

/**
 * Tags should never be more than 40 characters in length.
 */
function truncateTag(tag) {
    var tooLong = false;

    if(tag.length > 40 ) {
        tooLong = true;
        tag = tag.substring(0,39);
    }

    if(tooLong) {
        alert("Some of your tags exceed 40 characters. " +
              "These will be automatically truncated.");
    }
    return tag;

}

/**
 * Removes invalid characters from the tags.
 */
function cleanseTag(tag) {
    if (tag.search(/&lt;|&gt;|&quot;|;|:|\[|\]|<|>|\"|\+|\&|\?|\#|\%|\/|\\|-/) > -1) {
        alert("Some of your tags contain invalid characters. " +
              "These characters will be automatically removed before adding the tag.");
        tag=tag.replace(/&lt;|&gt;|&quot;|;|:|\[|\]|<|>|-|\"|\+|\&|\?|\#|\%|\/|\\|/gi,"");
    }

    // remove extraneous white space
    tag = tag.replace(/^\s*/,'').replace(/\s*$/,'')

    // make lowercase        
    tag = tag.toLowerCase();

    return tag;
}

/**
 * Checks if the tags input field has been changed.
 */
function tagIsInitVal(tagText) {
    if (tagText == null) {
        return (false);
    }
    tagText = tagText.toLowerCase();
    return ( tagText.indexOf("enter tags") > -1 );
}
//============================================================================//
//=============================== RELEASES ===================================//
// ***************************************************************************//
// *  JavaScript section contains the functionality to perform
// *  the AJAX calls to retrieve album releases  
// ***************************************************************************//
/**
 * This will attempt to reload the album releases
 */
function reloadReleases(trackAolID, page, pageCount) {
    var ajxUrl = "/song/ajax/getreleases_ajax.jsp?" +
                 "trackAolID=" + trackAolID + "&" +
                 "page=" + page + "&" +
                 "pageCount=" + pageCount;
                 
    if(debug) {
        alert("Requesting URL: " + ajxUrl);
    }

    var success = false;
    dojo.io.bind({
        method:"GET",
        url:ajxUrl,
        sync:true,
        handler: function(type, data, evt) {
            if (type == "error") {
                // dojo.byId("releaseMsg").innerHTML = data;
                success = false;
            } else {
                dojo.byId("cmmntModule").innerHTML = data;
                success = true;
            }
        }
    });
}


/**
 * Changes the album release count.
 */
function changeReleaseCount(count) {
    setPref('releaseCount', count );
}
//============================================================================//
//=============================== COMMENTS ===================================//
// ***************************************************************************//
// *  JavaScript section contains the functionality to perform
// *  the AJAX call which will post the comment to TRRI.  
// ***************************************************************************//
/**
 * This will attempt to reload the comments.
 */
function reloadComments(trackAolID, page, pageCount) {
    var ajxUrl = "/song/ajax/getcomment_ajax.jsp?" +
                 "trackAolID=" + trackAolID + "&" +
                 "page=" + page + "&" +
                 "pageCount=" + pageCount + "&" +
                 "rndm=" + Math.random();
                 
    var success = false;
    dojo.io.bind({
        method:"GET",
        url:ajxUrl,
        sync:true,
        handler: function(type, data, evt) {
            if (type == "error") {
                success = false;
            } else {
                dojo.byId("cmmntModule").innerHTML = data;
                success = true;
            }
        }
    });
}

var comments = {
   reportThis: function (pageUrl, pageTitle, commentText, commentId) {            
       var docUrl = document.URL;
       var strSendTo = "TOSProfileReport@aol.com";
       var strSubject = "Music%20Comments%20Complaint:%20" + docUrl;
       var strDate = Date();    
       var strMailTo = "mailto:";  
       strMailTo += strSendTo + "?";
       strMailTo += "subject=" + strSubject;
       strMailTo += "&body=" + escape(pageTitle) + "%0D%0D" + "URL:%20" + docUrl  + "%0D%0D" ;
       strMailTo += "CommentId:%20urn:x-aol:oid:mddn:" + commentId + "%0D%0D";
       strMailTo += "Date/Time%20of%20Report:%20" + strDate + "%0D%0D";
       strMailTo += "Comment:%20" + escape(commentText)  + "%0D%0D";
       strMailTo += "Reporter%20Comments:" + "%0D%0D";
       document.location.href = strMailTo;
   } 
}

// ***************************************************************************//
// *  These are functions are invoked by the comments pages.
// ***************************************************************************//

/**
 * Submit a comment via HTTP GET request
 */
function saveComments(trackAolID, objectUri, category, page, pageCount) {
    if(debug) {
        alert("In saveComments function.");
    }
    
    var uComment = document.forms["addComment"].addCommentHere.value;
    if (uComment == null ||
        uComment.length < 1 ||
        uComment == "Type your own comment here") {
        return;
    }
    
    var ajxUrl = "/song/ajax/addcomment_ajax.jsp?" +
                 "objectUri=" + objectUri + "&" +
                 "category=" + category + "&" +
                 "text=" + escape(uComment) + "&" +
                 "rndm=" + Math.random();
                 
    var success = false;
    dojo.io.bind({
        method:"GET",
        url:ajxUrl,
        sync:true,
        handler: function(type, data, evt) {
            if (type == "error") {
                // dojo.byId("cmmntMsg").innerHTML = data;
                success = false;
            } else {
                // dojo.byId("cmmntMsg").innerHTML = data;
                dojo.byId("cmntCntr").innerHTML = "1000 character maximum";
                var uc_comment = dojo.byId("addCommentHere");
                if (uc_comment != null) {
                    uc_comment.value = "";
                }
                success = true;
            }
        }
    });

    if(success) {
        reloadComments(trackAolID, page, pageCount);
    }
}


/**
 * Check to make sure the comment length is valid.
 */
function checkMaxCommentLength(obj) {
    // Check if we have words longer then xx chars to break them up.
    maxLongChar = 68;//Always an even number.
    var objText = obj.value;
    var regStrLength = new RegExp("([^\\s]{" + maxLongChar + "})", "i");
    var ar = regStrLength.exec(objText);
    if (ar) {
        var longWord = obj.value.substring(ar.index, ar.index + maxLongChar + 1);
        var halfWordLength = maxLongChar / 2;
        var firstHalf = longWord.substring(0, halfWordLength - 1);
        var lastHalf = longWord.substring(halfWordLength - 1, maxLongChar - 1);
        var newWord = firstHalf + "- " + lastHalf;
        objText = objText.replace(longWord, newWord);
        obj.value = objText;
    }
    var maxLength = obj.getAttribute("maxlength");
    var currentLength = obj.value.length;
    if (currentLength > maxLength) {
        obj.value = obj.value.substring(0, maxLength);
    }
    var counter = getEl(obj.getAttribute("counter"));
    counter.firstChild.nodeValue = currentLength + "/" + maxLength;
    // not innerHTML
}

/**
 * Shows the tool tip.
 */
function showToolTip(oCaller, ttID) {
    document.getElementById(ttID).style.display = "block";
}

/**
 * Hides the tool tip.
 */
function hideToolTip(oCaller, ttID){
    document.getElementById(ttID).style.display = "none";
}

/**
 * Changes the comment count.
 */
function changeCmmntCount(count) {
    setPref('cmmntCount', count );
}


/**
 **  Bookmark link
 **/

var blinks = {
    myAol: function() {
      var url = "http://favorites.my.aol.com/ffclient/AddBookmark?"; 
      url += "title=" + encodeURIComponent(document.title) + "&"; 
      url += "url=" + encodeURIComponent(location.href) + "&"; 
      url += "favelet=true"; 
      var _706 = "scrollbars=0,resizable=1,width=756,height=661,directories=0,menubar=0,location=0,status=0,toolbar=0"; 
      var _707 = (new Date).getTime(); 
      open(url, "addAolBookmark" + _707, _706); 
      setTimeout("window.blur();", 0);
    }
};
//============================================================================//
//================================= HUB ======================================//
/**
 * Monthly, Weekly, Daily, etc...
 */
function changeDate() {
    var dateElement = document.frmHubSrt.hubDte;
    var newDate = dateElement.options[dateElement.selectedIndex].value;
    setPref("hubDte", newDate);
    switchTab();
}

function resetHubSort() {
	setPref("hubSrt","");
}

/**
 * Tabs Most Recent, Most Viewed, Recently Viewed, etc...
 */
function changeSrt(srt){
    setPref("hubSrt", srt);
    switchTab();
}
function browseSongs(type, dateRange) {
	setPref("hubSrt", type);
	if (dateRange)
		setPref("hubDte", dateRange);
	hubUtil.vars.lastQueryType = "browse";
	switchTab();
}

/**
 * Grid/List
 */
function changeVw(vw){
    setPref("hubVw", vw);
}

/**
 * Page Count
 */
function changeCnt(cnt){
    setPref("hubCnt", cnt);
}

function changeSongsFrom(songsFrom){
    setPref("hubSongsFrom", songsFrom);
}


/*if (typeof(SongSearchField) == 'undefined'){
    function SongSearchField(fieldName, initValue) {
    	this.fieldName = fieldName;
    	this.initValue = initValue;
    }	
}
else
	alert("Type already exists: SongSearchField");*/


// =============================================================================
// HubUtil class for making ajax calls to for search and grid/list toggle
// =============================================================================

if (typeof(hubUtil) == 'undefined'){
    hubUtil = {};
}

hubUtil.vars = {
    elementID : null,   // Input field id name
    page : null,        // Page
    pageName : null,    // Hub Context song-hub, song-artist-hub, song-tag-hub, etc...
    artistAolID : null, // Artist aol id if in the song-artist-hub context
    artistAmgID : null, // Artist amg id if in the song-artist-hub context
    genre : null,       // Genre if in the song-genre-hub context
    tag : null,         // Tag if in the album-tag-hub context
    hubSort : null,     // Tab selected Featured, Most Played, etc...
    hubDate: null,      // Time period Weekly, Monthly, Daily, etc...
    hubView: null,      // Grid or List view
    searchQuery: null,  // Search query
    initQuery: null,    // Initial search value
    lastQuery: null,     // Remember last query.
    lastQueryType: "browse",
    searchFieldMap: {}
}

/**
 * Reload the hub with all the new query parameters.
 */
hubUtil.reloadHub = function(paginate) {
   	if (paginate != 'undefined' && paginate) {
		var url = hubUtil.url.generateUrl();
	}
	else {
		var url = hubUtil.url.generateUrlNoPaginate();	
	}

    new Ajax(url, {
        method: 'get',
        onComplete: function(response) {
            hubUtil.ui.update(response)
            ovrStte.init('listView', 'songHubRow', 'active');
        }
    }).request();
}

hubUtil.submitOnEnter = function(fld,e) {
	var keycode;
	if (window.event) keycode = window.event.keyCode;
	else if (e) keycode = e.which;
	else return true;

	if (keycode == 13)	{
	   	hubUtil.doMultiFieldSearch();
   		return false;
   	}
	else
   		return true;
}

hubUtil.resetField = function(fld,resetValue,e) {
	if(fld.value == "") {
		fld.value = resetValue;
	}
}

hubUtil.doMultiFieldSearch = function(paginate) {
	if (!hubUtil.isValidQuery())
		return;
	hubUtil.vars.lastQueryType = "search";
	if (paginate != 'undefined' && paginate) {
		hubUtil.reloadHub(paginate);
	}
	else {
		hubUtil.reloadHub();
	}
	hubUtil.clearBrowseHighlights();
}

hubUtil.clearBrowseHighlights = function() {

	var songLinks = $("browseSongsLinks");
	var aChildren = songLinks.getElementsByTagName("a");
	for (i = 0; i < aChildren.length; i++) {
		aChildren.item(i).className = "";
	}
	
	var genreLinks = $("genreLinks");
	aChildren = genreLinks.getElementsByTagName("a");
	for (i = 0; i < aChildren.length; i++) {
		aChildren.item(i).className = "";
	} 
	aChildren.item(0).className = "noArtLnk";
}

hubUtil.isValidQuery = function() {
	for (field in hubUtil.vars.searchFieldMap) {
		if (hubUtil.isValidField(field))
			return true;
	}
	return false;
}

hubUtil.isValidField = function(field) {
		var fieldValue = $(field).value;
		if (hubUtil.utilities.isNotBlank(fieldValue) && fieldValue != hubUtil.vars.searchFieldMap[field])
			return true;
		else
			return false;
}

hubUtil.getPlayableSwitch = function() {
	var switchOnField = $("playableSwitchOn");
	if (!switchOnField)
		return null;
		
	return switchOnField.checked ? "true" : "false";
}

hubUtil.radioClicked = function(value) {
	setPref("hubRadio", value);
	if (hubUtil.vars.lastQueryType == "search")
		hubUtil.doMultiFieldSearch();
	else
		switchTab();
}

/**
 * This has an added if block that prevents the user from sending
 * too many queries to SOLR. lastQuery won't let the user send the send query
 * twice.
 */
hubUtil.search = function() {
    var query = hubUtil.resolveSearchQuery();
    if(query != hubUtil.vars.lastQuery) {
        hubUtil.reloadHub();
        hubUtil.vars.lastQuery = query;
    }   
}

hubUtil.resolveSearchQuery = function() {
	var queryField = $(hubUtil.vars.elementID);
	if (queryField == null)
		return "";
    var query = $(hubUtil.vars.elementID).value;
    if(hubUtil.utilities.isNotBlank(query) &&
       query != hubUtil.vars.initQuery) {
       return escape(query);
    }
    return "";
}

hubUtil.utilities = {
    isNotBlank : function(value) {
        return (value != null && value.length > 0);
    },
    isBlank : function(value) {
        return (value == null || value.length == 0);
    }
}

hubUtil.url =  {
    parseUrl : function(url) {
        
    },
	generateUrlNoPaginate: function() {
        var url = "/song/ajax/hubgrid_ajax.jsp?rndm=" + Math.random();
        if(hubUtil.utilities.isNotBlank(hubUtil.vars.pageName))
            url += ("&pageName=" + hubUtil.vars.pageName);
        if(hubUtil.utilities.isNotBlank(hubUtil.vars.artistAolID))
            url += ("&artistAolID=" + hubUtil.vars.artistAolID);
        if(hubUtil.utilities.isNotBlank(hubUtil.vars.genre))
            url += ("&genre=" + hubUtil.vars.genre);
        if(hubUtil.utilities.isNotBlank(hubUtil.vars.tag))
            url += ("&tag=" + hubUtil.vars.tag);
        if(hubUtil.utilities.isNotBlank(hubUtil.vars.hubSort))
            url += ("&hubSort=" + hubUtil.vars.hubSort);
        if(hubUtil.utilities.isNotBlank(hubUtil.vars.hubDate))
            url += ("&hubDate=" + hubUtil.vars.hubDate);
        if(hubUtil.utilities.isNotBlank(hubUtil.vars.hubView))
            url += ("&hubView=" + hubUtil.vars.hubView);
        if(hubUtil.utilities.isNotBlank(hubUtil.resolveSearchQuery()))
            url += ("&q=" + hubUtil.resolveSearchQuery());
        if(hubUtil.utilities.isNotBlank(hubUtil.vars.artistAmgID))
            url += ("&artistAmgID=" + hubUtil.vars.artistAmgID);
        for (field in hubUtil.vars.searchFieldMap) {
			if (hubUtil.isValidField(field))
				url += ("&" + field + "=" + $(field).value);
		}

		if (debug) alert("url="+url);
        return url;
    },    
	generateUrl: function() {
        var url = "/song/ajax/hubgrid_ajax.jsp?rndm=" + Math.random();
        if(hubUtil.vars.page)
            url += ("&page=" + hubUtil.vars.page);
        if(hubUtil.utilities.isNotBlank(hubUtil.vars.pageName))
            url += ("&pageName=" + hubUtil.vars.pageName);
        if(hubUtil.utilities.isNotBlank(hubUtil.vars.artistAolID))
            url += ("&artistAolID=" + hubUtil.vars.artistAolID);
        if(hubUtil.utilities.isNotBlank(hubUtil.vars.genre))
            url += ("&genre=" + hubUtil.vars.genre);
        if(hubUtil.utilities.isNotBlank(hubUtil.vars.tag))
            url += ("&tag=" + hubUtil.vars.tag);
        if(hubUtil.utilities.isNotBlank(hubUtil.vars.hubSort))
            url += ("&hubSort=" + hubUtil.vars.hubSort);
        if(hubUtil.utilities.isNotBlank(hubUtil.vars.hubDate))
            url += ("&hubDate=" + hubUtil.vars.hubDate);
        if(hubUtil.utilities.isNotBlank(hubUtil.vars.hubView))
            url += ("&hubView=" + hubUtil.vars.hubView);
        if(hubUtil.utilities.isNotBlank(hubUtil.resolveSearchQuery()))
            url += ("&q=" + hubUtil.resolveSearchQuery());
        if(hubUtil.utilities.isNotBlank(hubUtil.vars.artistAmgID))
            url += ("&artistAmgID=" + hubUtil.vars.artistAmgID);
        for (field in hubUtil.vars.searchFieldMap) {
			if (hubUtil.isValidField(field))
				url += ("&" + field + "=" + $(field).value);
		}

		if (debug) alert("url="+url);
        return url;
    }
    
}

hubUtil.event =  {
	onclickMultifield : function(field) {
       if (field.value == hubUtil.vars.searchFieldMap[field.id])
       		field.value = "";
       return false;
    },
    onclick : function(event) {
        if ($(hubUtil.vars.elementID).value == hubUtil.vars.initQuery)
            $(hubUtil.vars.elementID).value = "";
        return false;
    },
    onfocus : function(event) {
        document.onkeyup = hubUtil.timer.alertkey
        return false;
    },
    onblur : function(event) {
        hubUtil.timer.cleartimer();
        document.onkeyup = ''; 
        document.onkeydown = '';    
        return false;
    }
}

hubUtil.timer = {
    alertkey : function(event) {
        if( !event ) {
            if( window.event ) {
                event = window.event;
            } else {
                return;
            }
        }
        hubUtil.timer.timer(); 
    },
    timer : function() {
        hubUtil.t = setTimeout(hubUtil.search, 500);
        document.onkeydown = hubUtil.timer.cleartimer;  
    },
    cleartimer : function() {
        clearTimeout(hubUtil.t);
    }
}

hubUtil.ui = {
    update : function(data) {
        $('vwrArea').setHTML(data);
    }
}


//============================================================================//
//============================ UTILITY PANEL==================================//

//tabbed support for modules
// tab persistence set to NO
var tabPersistence=0 
var tabContentIDs=new Object()

function expandContent(linkobj){
   var ulid=linkobj.parentNode.parentNode.id
   var ullist=document.getElementById(ulid).getElementsByTagName("li")
   for (var i=0; i<ullist.length; i++){
      ullist[i].className=""
         if (typeof tabContentIDs[ulid][i]!="undefined")
      document.getElementById(tabContentIDs[ulid][i]).style.display="none"
   }
   linkobj.parentNode.className="selected"
   document.getElementById(linkobj.getAttribute("rel")).style.display="block"
   saveSelectedTabContentID(ulid, linkobj.getAttribute("rel"))
}

function expandTab(tabcontentid, tabnumber) {
   var thetab=document.getElementById(tabcontentid).getElementsByTagName("a")[tabnumber]
      if (thetab.getAttribute("rel"))
         expandContent(thetab)
}

function saveTabContentIDs(ulid, relattribute){
   if (typeof tabContentIDs[ulid]=="undefined")
      tabContentIDs[ulid]=new Array()
      tabContentIDs[ulid][tabContentIDs[ulid].length]=relattribute
}

function saveSelectedTabContentID(ulid, selectedtabid){
   if (tabPersistence==1)
      setTabCookie(ulid, selectedtabid)
}

function getULbyID(ulid, tabcontentid){
   var ullist=document.getElementById(ulid).getElementsByTagName("li")
   for (var i=0; i<ullist.length; i++){
      if (ullist[i].getElementsByTagName("a")[0].getAttribute("rel")==tabcontentid){
         return ullist[i].getElementsByTagName("a")[0]
      break
      }
   }
}

function initTabContent() {
   for (var i=0; i<arguments.length; i++){
   if (tabPersistence==0 && getTabCookie(arguments[i])!="")
   setTabCookie(arguments[i], "")
      var clickedontab=getTabCookie(arguments[i])
      var ulobj=document.getElementById(arguments[i])
      var ulist=ulobj.getElementsByTagName("li")
      for (var x=0; x<ulist.length; x++){
         var ulistlink=ulist[x].getElementsByTagName("a")[0]
         if (ulistlink.getAttribute("rel")){
            saveTabContentIDs(arguments[i], ulistlink.getAttribute("rel"))
            ulistlink.onclick=function(){
            expandContent(this)
         return false
      }
      if (ulist[x].className=="selected" && clickedontab=="")
         expandContent(ulistlink)
      }
   }
   if (clickedontab!="") {
   var culistlink=getULbyID(arguments[i], clickedontab)
   if (typeof culistlink!="undefined")
      expandContent(culistlink)
         else
            expandContent(ulist[0].getElementsByTagName("a")[0])
      }
   }
}

function getTabCookie(Name) { 
   var re=new RegExp(Name+"=[^;]+", "i");
   if (document.cookie.match(re))
   return document.cookie.match(re)[0].split("=")[1]
   return ""
}

function setTabCookie(name, value) {
   document.cookie = name+"="+value
}



/**
 * Utility Panel Object
 **/
var upanel = {
    sendAim: function(artist, aolId) {
        // need hyperlink
        // var _message = "Check out &lt\;a href=\"http:\/\/music.aol.com\/artist\/\"" + artist + "\/" + aolId + "\"&gt\;" + artist + ":  http:\/\/music.aol.com\/artist\/" + artist + "\/" + aolId + "&lt\;\/a&gt\;";
        var _message = "Check out " + artist + ": http:\/\/music.aol.com\/artist\/" + artist + "\/" + aolId;
        window.location = 'aim:GoIm?message=' + _message;
    }, 
    
    
    /** * Aol Bookmarks */
   myAol: function() {
   
     var url = "http://favorites.my.aol.com/ffclient/AddBookmark?"; 
     url += "title=" + encodeURIComponent(document.title) + "&"; 
     url += "url=" + encodeURIComponent(location.href) + "&"; 
     url += "favelet=true"; 
     var _706 = "scrollbars=0,resizable=1,width=756,height=661,directories=0,menubar=0,location=0,status=0,toolbar=0"; 
     var _707 = (new Date).getTime(); 
     open(url, "addAolBookmark" + _707, _706); 
     setTimeout("window.blur();", 0);
   
   }, 

   sendEmail: function (pageURL) {
       var bolSend = true;
       var oShareForm = document.forms.email_form;
       console.debug("oShareForm",oShareForm);
       var shFromName = oShareForm.inputYourName.value;
       if ( shFromName == "" ) {shFromName = "Your%20Friend"}
       var shFromEmail = oShareForm.inputYourEmail.value;
       var shToEmail = oShareForm.inputFriendEmail.value;
       if ( (shToEmail == "") || (shToEmail == "Enter your friend's email address") ) {
           alert("Please enter a destination email address.");
           oShareForm.inputFriendEmail.focus();
           bolSend = false;
       }
       
       var strMailto = "mailto:";
       strMailto += shToEmail + "?";
       strMailto += "&from=" + shFromEmail;
       strMailto += "&subject=" + shFromName + "%20has%20sent%20you%20an%20AOL%20Music%20Album!";
       strMailto += "&body=" + pageURL + "%0D%0D" ; //+ shMsg;
       
       if (bolSend) { document.location.href = strMailto; };
   } 
        
};

/**
 * Swtich Tabs but don't loose context
 **/
function switchTab() {
    location.href  = window.location.pathname;
}

/**
 * Append the page and query parameter to the current context'd url.
 */
function goToPage(pageNum, q) {
	// use ajax to browse thru search results
	if (hubUtil.vars.lastQueryType == "search") {
	hubUtil.vars.page = pageNum;
		hubUtil.doMultiFieldSearch(true);
	}
	else {
	    var params = new Array();
	    var query = "";
	
	    if((q != null) && (q.length > 0))
	        params.push("q=" + escape(q));
	    if((pageNum != null) && (pageNum > 1))
	        params.push("page=" + pageNum);
	        
	    var query = params.join("&");
	    if(query != null && query.length > 0)
	        window.location = window.location.pathname + "?" + query;
	    else
	        window.location = window.location.pathname;
	}
	
	var mainPanel = $('hubViewPnl');
	if (mainPanel) {
		mainPanelY = mainPanel.getPosition().y;
		window.scrollTo(0,mainPanelY);
	} 
}


/**
 * Adds a previous tag to the list
 */
function addTagToList(tgNode, addTagText){
    var newTag = tgNode.firstChild.nodeValue;
    addTagText.value += newTag + ", ";
}

//============================================================================//
//============================ HUB MOUSE OVER ================================//

if (ovrStte == null || typeof(ovrStte) != "object") var ovrStte = {};
ovrStte.init = function(idToInit, classToFind, onStateName) {
    // add vars to object for later reference
    ovrStte.onStateName = onStateName;
    ovrStte.classToFind = classToFind;
    ovrStte.idToInit = idToInit;

    var divLst = document.getElementById(idToInit).getElementsByTagName('div')

    for (i=0; i<divLst.length; i++) {

        var tstClass = divLst[i].className.split(' ')[0];

        if ( tstClass == classToFind ) {
            divLst[i].onmouseover = ovrStte.onState;
            divLst[i].onmouseout = ovrStte.offState;
        }
    }
}// end Init Function
ovrStte.onState = function() {
    var classNameArry = this.className.split(' ');
    if (classNameArry[1] == null) {
        this.className = ovrStte.onStateName
    } else {
        this.className = ovrStte.onStateName + " " + classNameArry[1];
    }
}
ovrStte.offState = function() {
    var classNameArry = this.className.split(' ');
    if (classNameArry[1] == null) {
        this.className = ovrStte.classToFind
    } else {
        this.className = ovrStte.classToFind + " " + classNameArry[1];
    }
}

ovrStte.lstInit = function(idToInit, classForOn, classForOff) {
    ovrStte.classForOn = classForOn;
    ovrStte.classForOff = classForOff;
    ovrStte.idToInit = idToInit;

    var tableRowLst = document.getElementById(idToInit).getElementsByTagName('tr')
    for (i=0; i<tableRowLst.length;i++) {
        if (tableRowLst[i].className != "tableHeaders") {
        tableRowLst[i].onmouseover = ovrStte.lstOnState;
        tableRowLst[i].onmouseout = ovrStte.lstOffState;
        }
    }
}
ovrStte.lstOnState = function() {
    this.className = ovrStte.classForOn
}
ovrStte.lstOffState = function() {
    this.className = ovrStte.classForOff
}

