function Animate(element,color)
{
    var myAnim = new YAHOO.util.ColorAnim(element, {backgroundColor: { to: color } });
    myAnim.animate();
 }
 function ForceClose(d,lk) 
 { 
 try
 {
  RemoveSearchTerm(document.getElementById(lk).innerHTML);
  RemoveAllSubs(d);
  document.getElementById(lk).style.color = "black"; 
  document.getElementById(d).style.display = "none"; 
  Animate(lk, '#ffffff');
  }
  catch(err)
  {
  }
}

function ReverseSubBoxDisplay(d,g,lk) {
if(document.getElementById(d).style.display == "none") 
{ 
  var subkey = document.getElementById(d);
  var subarea = document.getElementById("subarea" + g);
  
  subarea.appendChild(subkey);
  document.getElementById(lk).style.color = "#ffffff"; 
  document.getElementById(d).style.display = "block"; 
  
  AddSearchTerm(document.getElementById(lk).innerHTML);
  Animate(lk, '#2647A0');

  //sonicLibSearch.Search(lk,"getbyadjective");
 
  //alert(document.getElementById(lk).innerHTML);
  //alert(document.getElementById(lk).id);
}
else 
{ 
  RemoveSearchTerm(document.getElementById(lk).innerHTML);
  RemoveAllSubs(d);
  document.getElementById(lk).style.color = "black"; 
  document.getElementById(d).style.display = "none"; 
  Animate(lk, '#ffffff');
}
}

function RemoveAllSubs(lk) 
{	
    var subElmsOff = YAHOO.util.Dom.getElementsByClassName('sub off', 'a', lk); 
    for (var i = 0; i < subElmsOff.length; ++i)
    {
        var elem = subElmsOff[i];
    
        ReverseSubDisplay(elem.id);
    }
    	return true;
}
function ReverseSubDisplay(subid) {

var elmSub = document.getElementById(subid);

if(elmSub.className == "sub on") 
{   
  elmSub.style.color = "#ffffff"; 
  
  AddSearchTerm(document.getElementById(subid).innerHTML);
  Animate(subid, '#2647A0');
  elmSub.className = "sub off";
  //sonicLibSearch.Search(document.getElementById(subid).innerHTML,"getbyadjective");
}
else 
{ 
  RemoveSearchTerm(document.getElementById(subid).innerHTML);
  elmSub.style.color = "blue"; 
  Animate(subid, '#ffffff');
  elmSub.className = "sub on";
}
}

function AddSearchTerm(text)
{
text = text.replace("&amp;","&");
var searchBox = document.getElementById("SearchBox");
var searchTermsStr = searchBox.value 

if(searchBox.value == "")
{
    searchBox.value = text;
}
else
{
    var mySplitResult = searchTermsStr.split(",");
    var searchTermsArr = new Array()
        
    for(i = 0; i < mySplitResult.length; i++)
    {
	    searchTermsArr[i] = mySplitResult[i]; 
	}
	searchTermsArr[mySplitResult.length] = text;
    searchBox.value = searchTermsArr.join();
}

}

function RemoveSearchTerm(textRemove)
{
textRemove = textRemove.replace("&amp;","&");
var searchBoxRemove = document.getElementById("SearchBox");

if(searchBoxRemove.value == "")
{
    //do nothing
}
else
{
    var searchTermsRemoveStr = searchBoxRemove.value;

    var mySplitRemoveResult = searchTermsRemoveStr.split(",");
    var searchTermsRemoveArr = new Array()
    
    var count = 0;
    for(i = 0; i < mySplitRemoveResult.length; i++)
    {
        if (mySplitRemoveResult[i] == textRemove)
        {
           
        }
        else
        {
        searchTermsRemoveArr[count] = mySplitRemoveResult[i];
        count++;
        }
        
	}

    searchBoxRemove.value = searchTermsRemoveArr.join();
}
}



//static search object
    var sonicLibSearch = {};
    var stringEmpty = "";
    var SEARCHBOXID = "SearchBox"
    
//*********************SEARCH*******************************    
    sonicLibSearch.Search = function(SonicValues,selectedSearch)
    {
        var gridDiv = "basic";
        
        if(selectedSearch == "gettracksbyloc")
        {
            gridDiv = "basicFav";
        }
        // Point to a local or proxy URL
        
        var hostnamestr = document.location.hostname;
    
        var queryUrl = "http://" + hostnamestr + "/" + "search/" + "query.php?action=" + selectedSearch + "&value=" + SonicValues;
        
        //var queryUrl = "http://" + hostnamestr + "/" + "search/" + "query-dev.php?action=" + selectedSearch + "&value=" + SonicValues;
        
        var myDataSource = new YAHOO.util.DataSource(queryUrl);

        // Set the responseType as JSON
        myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
        
         var oConfigs = {   
         paginated:true,   
         paginator: {rowsPerPage: 20} 
         };   

        // Define the data schema
        myDataSource.responseSchema = 
        {
        resultsList: "rows", // Dot notation to results array
        //fields: ["compactDiscName","trackName","compactDiscNumber","trackNumber","adjective","trackLocation"] // Field names
        fields: ["compactDiscName","trackName","trackNumber","trackLocation","trackLength","trackTempo","trackComposer","trackPublisher","trackAffiliation"] // Field names
        };
        
        if(selectedSearch == "gettracksbyloc")
        {
        var myColumnDefs = [
        {key:"trackLocation", formatter: myFormatFavRemove, label:"Favorite"},
        {key:"trackLocation", formatter: myFormatDiscName, label:"Play"},
        {key:"trackLocation", formatter: myFormatDownLoad, label:"Download"},
        {key:"trackNumber", formatter:myFormatStringFix, label:"Track",sortable:true},
        {key:"trackName", formatter: formatTruncate,label:"Title",sortable:true},
        {key:"compactDiscName", formatter: formatTruncate, label:"CD Name",sortable:true},
        {key:"trackLength", label:"Length",sortable:true},
        {key:"trackTempo", label:"Tempo",sortable:true},
        {key:"trackComposer", formatter: formatTruncate, label:"Composer",sortable:true},
        {key:"trackPublisher", formatter: formatTruncate, label:"Publisher",sortable:true},
        {key:"trackAffiliation", formatter: formatTruncate, label:"Affiliation",sortable:true}
        //{key:"compactDiscNumber", label:"CD #"}
        //{key:"adjective", label:"Adjective"},
        ];
        }
        else
        {
        var myColumnDefs = [
        {key:"trackLocation", formatter: myFormatFav, label:"Favorite"},
        {key:"trackLocation", formatter: myFormatDownLoad, label:"Download"},
        {key:"trackLocation", formatter: myFormatDiscName, label:"Play"},
        {key:"trackNumber", formatter:myFormatStringFix, label:"Track",sortable:true},
        {key:"trackName", formatter: formatTruncate,label:"Title",sortable:true},
        {key:"compactDiscName", formatter: formatTruncate, label:"CD Name",sortable:true},
        {key:"trackLength", label:"Length",sortable:true},
        {key:"trackTempo", label:"Tempo",sortable:true},
        {key:"trackComposer", formatter: formatTruncate, label:"Composer",sortable:true},
        {key:"trackPublisher", formatter: formatTruncate, label:"Publisher",sortable:true},
        {key:"trackAffiliation", formatter: formatTruncate, label:"Affiliation",sortable:true}
        //{key:"compactDiscNumber", label:"CD #"}
        //{key:"adjective", label:"Adjective"},
        ];
        }
        
        YAHOO.widget.DataTable.MSG_ERROR = "Sorry no results found for these values:" + SonicValues;
        
        var myDataTable = new YAHOO.widget.DataTable(gridDiv, myColumnDefs, myDataSource,oConfigs,{caption:"Results:",sortedBy:{key:"trackNumber",dir:"desc"}});
   };
   
   var myFormatDiscName = function(elCell, oRecord, oColumn, oData) {
   var trackTitle = oRecord._oData.trackName;
   var funcString = "OnClick=\"StartMeUp(\'"+escape(trim(oData))+"\',\'"+escape(trackTitle)+"\')\"";
   elCell.innerHTML = "<INPUT TYPE='IMAGE' SRC='images/speaker.png' NAME='BtnPlay' VALUE='Play'" + funcString + ">";
   };
   
   var myFormatStringFix = function(elCell, oRecord, oColumn, oData) {
   oRecord._oData.trackNumber = parseInt(oRecord._oData.trackNumber);
   elCell.innerHTML = oRecord._oData.trackNumber;
   };
   
   var myFormatFav = function(elCell, oRecord, oColumn, oData) {
    var cookieTrackName = oRecord._oData.trackName;
    cookieTrackName = cookieTrackName.replace("'","");
    var cookieDiscName = oRecord._oData.compactDiscName;
    cookieDiscName = cookieDiscName.replace("'","");
    var funcString = "OnClick=\"SaveMe(\'"+escape(oData)+"\')\"";
    elCell.innerHTML = "<INPUT TYPE='BUTTON' NAME='BtnFav' VALUE='Add' ALT='Sample'" + funcString + ">";
   };
   
    var myFormatFavRemove = function(elCell, oRecord, oColumn, oData) {
    var cookieTrackName = oRecord._oData.trackName;
    cookieTrackName = cookieTrackName.replace("'","");
    var cookieDiscName = oRecord._oData.compactDiscName;
    cookieDiscName = cookieDiscName.replace("'","");
    var recordId = oRecord._nId;
    var rowId = elCell.parentNode.id;
    var funcString = "OnClick=\"RemoveMe(\'"+escape(oData)+"\',\'"+recordId+"\',\'"+rowId+"\')\"";
    elCell.innerHTML = "<INPUT TYPE='BUTTON' NAME='BtnFav' VALUE='Remove' " + funcString + ">";
   };
   
   var formatTruncate = function(elCell, oRecord, oColumn, oData) 
   {
    elCell.innerHTML = "<div onmouseover=\"Tip(\'"+ oData.replace("'","") +"\')\">" + trunc(oData, 15, 20)+ "</div>";
   }
   
   var trunc = function(str, maxLen, maxWordLen) 
{
	// Strip markup
	str = str.replace("<b>", "");
	str = str.replace("<\/b>", "");
	str = str.replace("<B>", "");
	str = str.replace("<\/B>", "");
	
	// Simple truncation
	if(str.length > maxLen) {
		str = str.substring(0,maxLen) + "...";
	}

	// Truncate for long words
	var start = 0;
	var loopCnt = 0;
	var strSlice = str;
	
	do  {
		var spaceBreak = strSlice.indexOf(' ');
		var lenOfWord = spaceBreak;
		if(lenOfWord == -1)
		{
			lenOfWord = strSlice.length;
		}

		if (lenOfWord > maxWordLen) {
			//debugMsg("Long word found in: " + strSlice);
			str = str.substring(0, maxWordLen);  // TRUNCATE
		}
		start = spaceBreak+1;
		strSlice = strSlice.substring(start);
		spaceBreak = strSlice.indexOf(' ');
	} while(spaceBreak != -1)
	
	
	return str;
};

      var myFormatDownLoad = function(elCell, oRecord, oColumn, oData) {

   //var downloadPath = "http://www.srjr.info/search/includes/wavs/Sonic%20Librarian_44WAVs/" + encodeURI(trim(oData));
   var downloadPath = "http://nhpain.web.aplus.net/search/wavs/" + escape(trim(oData));

   elCell.innerHTML = "<a href='"+ downloadPath +"'>download</a>";
   };

//****************END SEARCH*******************************************************
//****************PARSE DATA*******************************************************
      sonicLibSearch.ParseData = function(JSONObject)
    {
      
      //alert(JSONObject.rows[0].compactDiscName);
      
      sonicLibSearch.drawResultBox(JSONObject);
      
     };
//***********************END PARSE DATA***********************************

//***********************REMOVE SERACH BOX TERMS*****************************                         
    sonicLibSearch.RemoveSearchBoxTerms = function()
    {
        var searchBox = document.getElementById("SearchBox");
        if(searchBox != null)
        {
            var removeValues = searchBox.value;
            var removeValues_array=removeValues.split(",");
            var arLen=removeValues_array.length;
            
            for ( var i=0, len=arLen; i<len; ++i )
            {
                if(removeValues != "")
                {
                     ForceClose("k"+removeValues_array[i],"l"+removeValues_array[i]);
                }  
            }
        }     
    };
//***********************REMOVE GET SERACH BOX TERMS*************************

//***********************GET SERACH BOX TERMS*****************************                         
    sonicLibSearch.GetSearchBoxTerms = function()
    {
        var searchBox = document.getElementById("SearchBox");
        if(searchBox != null)
        {
            var searchingValues = searchBox.value;
            
                if(searchingValues != "")
                {
                     sonicLibSearch.Search(searchingValues,"getbyadjective");
                }
        }     
    };
//***********************END GET SERACH BOX TERMS*************************

function StartMeUp (wavPath, trackTitle)
{
    //*** hack to convert to mp3 for now ***///
    wavPath = wavPath.replace("wav","mp3");
    var strFullWavPath = "http://nhpain.web.aplus.net/search/mp3/"+wavPath;
    addItem({file:strFullWavPath,title:trackTitle,link:strFullWavPath});
    loadFile({file:strFullWavPath,title:trackTitle,link:strFullWavPath});
    sendEvent('playitem',1);
};

function trim(str) 
{
  return str.replace(/^\s+|\s+$/g, '');
}


function SaveMe (wavPath)
{   
    var appendValue = Get_Cookie("fav");
    var globalDomain = document.location.hostname;

    if(appendValue == null)
    {
        //alert("cookie was empty"); 
        var today = new Date(); 
        var zero_date = new Date(0,0,0); 
        today.setTime(today.getTime() - zero_date.getTime()); 
        var cookie_expire_date = new Date(today.getTime() + (8 * 7 * 86400000)); 
        var cookieValues = wavPath;
        set_cookie("fav",cookieValues,cookie_expire_date,"/",globalDomain);
        //alert("first cookie value ="+ cookieValues); 
    }
    else
    {
        //alert("should append")
        var today = new Date(); 
        var zero_date = new Date(0,0,0); 
        today.setTime(today.getTime() - zero_date.getTime()); 
        var cookie_expire_date = new Date(today.getTime() + (8 * 7 * 86400000)); 
        var cookieValues = wavPath+","+appendValue;
        set_cookie("fav",cookieValues,cookie_expire_date,"/",globalDomain);
        //alert("cookie value ="+ cookieValues)
    }
};

function RemoveMe (wavPath,removeId,rowId)
{   
    var globalRemoveDomain = document.location.hostname;
    var tempId = document.getElementById(rowId);
    var tempParent = tempId.parentNode;
        tempParent.deleteRow(removeId);

    var currentCookieValue = Get_Cookie("fav");
    
    if(currentCookieValue == null)
    {
        //we got problems
    }
    else
    {
        //check if first value
        //var commaPosition = currentCookieValue.indexOf(",");
        
        //if(commaPosition > 0)
        //{
        //    var updatedCookieValue = currentCookieValue.replace(wavPath+",","");
        //    var today = new Date(); 
        //    var zero_date = new Date(0,0,0); 
        //    today.setTime(today.getTime() - zero_date.getTime()); 
        //    var cookie_expire_date = new Date(today.getTime() + (8 * 7 * 86400000));
         
        //    var cookieValues = updatedCookieValue;
        //    set_cookie("fav",updatedCookieValue,cookie_expire_date,"/","www.srjr.info");
        //    getFavs();
        //}
        //else
        //{
            //alert("cookie to remove" + wavPath);
            var updatedCookieValue = null;
            
            updatedCookieValue = currentCookieValue.replace(wavPath+",","");
            
            if(updatedCookieValue == currentCookieValue)
            {
                updatedCookieValue = currentCookieValue.replace(wavPath,"");
            }
           
            //alert("new cookie value" +updatedCookieValue);
            var today = new Date(); 
            var zero_date = new Date(0,0,0); 
            today.setTime(today.getTime() - zero_date.getTime()); 
            var cookie_expire_date = new Date(today.getTime() + (8 * 7 * 86400000));
         
            var cookieValues = updatedCookieValue;
            set_cookie("fav",updatedCookieValue,cookie_expire_date,"/",globalRemoveDomain);
            getFavs();
        //}
    }
};

function ShutMeDown ()
{
    Player.controls.stop();
};

// COOKIE FUNCTIONS
function set_cookie(name,value,expires,path,domain,secure) { 
    var cookieString = name + "=" +escape(value) + 
       ( (expires) ? ";expires=" + expires.toGMTString() : "") + 
       ( (path) ? ";path=" + path : "") + 
       ( (domain) ? ";domain=" + domain : "") + 
       ( (secure) ? ";secure" : ""); 
    document.cookie = cookieString; 
};

function Get_Cookie(name) { 
   var start = document.cookie.indexOf(name+"="); 
   var len = start+name.length+1; 
   if ((!start) && (name != document.cookie.substring(0,name.length))) return null; 
   if (start == -1) return null; 
   var end = document.cookie.indexOf(";",len); 
   if (end == -1) end = document.cookie.length; 
   return unescape(document.cookie.substring(len,end)); 
}; 
    var getFavs = function() 
    {
        var locValue;
        locValue = Get_Cookie("fav");
        if(locValue)
        {
            if(locValue != ",")
            {
                sonicLibSearch.Search(locValue,"gettracksbyloc");
            }
        }
    };
    
function ShowCDDesc(cdnum,action,description,cdname)
{
    //TODO - remove hidden div hack for description
    //var foundDesc = document.getElementById(idOfDesc);
    var descViewSpot = document.getElementById('cdDescViewer');
    var descTitleSpot = document.getElementById('cdTitleArea');
    descViewSpot.innerHTML = description;
    descTitleSpot.innerHTML = cdname;
    sonicLibSearch.Search(cdnum,action);
};

function ShowDefaultCDDesc(cdnum,action,defaultDescription,cdname)
{
    //TODO - combine this with one that is always used...
    var descViewSpot = document.getElementById('cdDescViewer');
    var descTitleSpot = document.getElementById('cdTitleArea');
    descViewSpot.innerHTML = defaultDescription;
    descTitleSpot.innerHTML = cdname;
    sonicLibSearch.Search(cdnum,action);
};

/* Client-side access to querystring name=value pairs
	Version 1.2.3
	22 Jun 2005
	Adam Vandenberg
*/
function Querystring(qs) { // optionally pass a querystring to parse
	this.params = new Object()
	this.get=Querystring_get
	
	if (qs == null)
		qs=location.search.substring(1,location.search.length)

	if (qs.length == 0) return

// Turn <plus> back to <space>
// See: http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13.4.1
	qs = qs.replace(/\+/g, ' ')
	var args = qs.split('&') // parse out name/value pairs separated via &
	
// split out each name=value pair
	for (var i=0;i<args.length;i++) {
		var value;
		var pair = args[i].split('=')
		var name = unescape(pair[0])

		if (pair.length == 2)
			value = unescape(pair[1])
		else
			value = name
		
		this.params[name] = value
	}
}

function Querystring_get(key, default_) {
	// This silly looking line changes UNDEFINED to NULL
	if (default_ == null) default_ = null;
	
	var value=this.params[key]
	if (value==null) value=default_;
	
	return value
}

$(function() {

    var agreement = Get_Cookie("agree");
    var globalDomain = document.location.hostname;

    if(agreement == null)
    {
	$("#dialog").dialog({
		bgiframe: true,
		resizable: false,
		height:350,
    		minHeight:50,
		modal: true,
		overlay: {
			backgroundColor: '#000',
			opacity: 0.5
		},
		buttons: {
			'AGREE': function() {
			
				var today = new Date(); 
				var zero_date = new Date(0,0,0); 
				today.setTime(today.getTime() - zero_date.getTime()); 
				var cookie_expire_date = new Date(today.getTime() + (8 * 7 * 86400000)); 
				var cookieValues = "true";
				set_cookie("agree",cookieValues,cookie_expire_date,"/",globalDomain);
		
				$(this).dialog('close');
			},
			DECLINE: function() {
				$(this).dialog('close');
				window.location = "/"

			}
		}
	});
    }
    
});
	