// favoritesModule.js
//
// Used by favorites page to edit a user's favorite 
// categories (artists, authors, genres, etc). This file manages the 
// prompts to display and the service requests to populate those forms
// and handle changes to the user's favorites.


$(function() { 
    //if( $('div.favorite-actions-top').exists()) {
    if( $('#Favorite_listNav').exists()) {
        //only load the widgets 
        setupFavoriteGenres();
    }
});

function setupFavoriteGenres() {
	
	 $.global.EditAuthorPrompt = new $.Confirm({
	      id: "editAuthorPrompt",
		  width: 400,
		  heading: "EDIT YOUR FAVORITE AUTHORS",
		  content: $("#ovrly-favoriteAuthor"),   
		  cancel: {path: "button.btn_cancel_Author", action: function() {	
		  	return true;
			}},
		  ok: {path: "button.btn_save_Author", action: Call_InputAuthor_List
		  	  } 	 
	});
	
	$.global.EditActorPrompt = new $.Confirm({
	      id: "editActorPrompt",
		  width: 450,
		  heading: "EDIT YOUR FAVORITE ACTORS &amp; DIRECTORS",
		  content: $("#ovrly-favoriteActor"),   
		  cancel: {path: "button.btn_cancel_Actor", action: function() {
		  	return true;
			}},
		  ok: {path: "button.btn_save_Actor", action: Call_InputActor_List
		  	  } 	 
	});
	
	$.global.EditArtistPrompt = new $.Confirm({
	      id: "editArtistPrompt",
		  width: 400,
		  heading: "EDIT YOUR FAVORITE ARTISTS",
		  content: $("#ovrly-favoriteArtist"),   
		  cancel: {path: "button.btn_cancel_Artist", action: function() {
		  	return true;
			}},
		  ok: {path: "button.btn_save_Artist", action: Call_InputArtist_List
		  	  } 	 
	});
	
	$.global.EditBooksGenrePrompt = new $.Confirm({
	 	id: "editBooksGenrePrompt",
		width: 750,
		heading: "EDIT YOUR FAVORITE BOOK GENRES",
	    content: $("#ovrly-favoriteBooksGenres"),
		cancel: {path: "button.btn_cancel_Books", action: function() {
			return true;
			}},
		ok: {path: "button.btn_save_Books", action: Call_InputBookGenre_List
			}
	});
	
	$.global.EditFilmGenrePrompt = new $.Confirm({
	 	id: "editFilmGenrePrompt",
		width: 750,
		heading: "EDIT YOUR FAVORITE FILM GENRES",
	    content: $("#ovrly-favoriteFilmGenres"),
		cancel: {path: "button.btn_cancel_Film", action: function() {
			return true;
			}},
		ok: {path: "button.btn_save_Film", action: Call_InputFilmGenre_List
			}
	});
	
	$.global.EditMusicGenrePrompt = new $.Confirm({
	 	id: "EditMusicGenrePrompt",
		width: 750,
		heading: "EDIT YOUR FAVORITE CD STYLES",
	    content: $("#ovrly-favoriteMusicGenres"),
		cancel: {path: "button.btn_cancel_Music", action: function() {
			return true;
			}},
		ok: {path: "button.btn_save_Music", action: Call_InputMusicGenre_List
			}
			
	});

    if( $("#favoriteGenres").is(":hidden") ) {
        $("#favoriteGenres").show();
	}
}

function GetAllFavoritesResultCallback(response) {
    $("#favoriteGenres").html(response.output);
}


//Activate functions called when the Edit button is clicked
function Activate_EditAuthorPrompt () {
	
	manageFormValuesOverlay('Author')
	$.global.EditAuthorPrompt.prompt();
	return false;
}

function Activate_EditActorPrompt () {
	
	manageFormValuesOverlay('Actor')
	$.global.EditActorPrompt.prompt();	
	return false;
}

function Activate_EditArtistPrompt () {
	
	manageFormValuesOverlay('Artist')
	$.global.EditArtistPrompt.prompt();	
	return false;
}

function manageFormValuesOverlay (type) {
	
	var formValue = type
	
	$("#edit" +formValue+ "Prompt").find('#wordFilterError').html('');
	
	for (var i = 0; i < 5; i++) { 
		if (IsEmpty($("#contrib"+[i]+"" + formValue + "").html()) == false) {
			$("#input"+[i]+"" + formValue + "").val('').val($("#contrib"+[i]+"" + formValue + "").text())
		}
		else {
			$("#input"+[i]+"" + formValue + "").val('')
		}
		
	}
}

function IsEmpty(string)
{
//remove all spaces
StrToCheck = string.replace(/^\s+|\s+$/, '');

if( StrToCheck.length==0)
return true;
else
return false;
}

function manageGenreFormValuesOverlay(type){

	var formValue = type
	
	//alert($("#favoriteGenres" + formValue + "").children('li').children('span').text());
	//	$("#favorites" + formValue + "").each(function(){
	//for (var i = 0; i < 5; i++) { 
	
	$("#favoriteGenres" + formValue + "").children('li').children('span').each(function(index, item){
			var genreIdArray = $(item).attr('id')
			var splitIdArray = genreIdArray.split('|')
			var indexPos = splitIdArray[0];
			var genreID = splitIdArray[1];
			var genreURL = splitIdArray[2];
				
			if (IsEmpty($("#genre" + indexPos + "" + formValue + "").text()) == false) {
			//	alert ($("#genre" + indexPos + "" + formValue + "").text())
			
			//$(item).text('').removeClass('populated').text( $("#genre" + indexPos + "" + formValue + "").text() ).addClass('populated')
			
			$(item).after("<span class='populated' id='"+ $("#genre" + indexPos + "id" + formValue + "").text() +"'>"+ $("#genre" + indexPos + "" + formValue + "").text() +"</span>").remove();
			//
			}
			else {
				$(item).text('').removeClass("populated");
			}
			

			//if (IsEmpty($("#genre"+[i]+"" + formValue + "").html()) == false) {
			//	$("#favoriteGenres" + formValue + "").children('li').children('span').text('').text($("#genre"+[i]+"" + formValue + "").text())			
			//}
			//else {
			//	$("#favoriteGenres" + formValue + "").children('li').children('span').text('').removeClass('populated')
			//}
		
		}
		
	);
}

function Activate_EditBooksGenrePrompt () {
	
	manageGenreFormValuesOverlay('Books')
	$("#genreBooksMsg").html('');

	$.global.EditBooksGenrePrompt.prompt();
	$('#genreBooksList').html('')	
    $('#genreListName').html('')
	$('#genreListName').append("Books")
	$(getGenreList(0)); 
	return false;	
}

function Activate_EditFilmGenrePrompt () {
	
	manageGenreFormValuesOverlay('Film')
	$("#genreFilmMsg").html('');
	
	$.global.EditFilmGenrePrompt.prompt();
	$('#genreFilmList').html('')
	$('#genreListName').html('')
	$('#genreListName').append("Film")
	$(getGenreList(1)); 
	return false;
}

function Activate_EditMusicGenrePrompt () {
	
	manageGenreFormValuesOverlay('Music')
	$("#genreMusicMsg").html('');
	
	$.global.EditMusicGenrePrompt.prompt();
	$('#genreMusicList').html('')
	$('#genreListName').html('')
	$('#genreListName').append("Music")
    $(getGenreList(2)); 
	return false;
}


//These functions called when the user hits OK on the edit dialogs
function Call_InputAuthor_List () {
	
	var newNames = "";
	$('#AuthorEditForm .inputAuthor').each( 
		function(index, item){
		if ($(item).val() != "") {
			if (newNames.length != 0) {
				newNames += '|';

			}
			newNames += String(index + 1) + '*' + $(item).val();
		}
		
		}
	);

	var myParameters = "?page=FavoriteBookmarks&uiAction=SaveBookmarks&type=1&items="
	myParameters += newNames;

	ui.request({
		baseURL: $.hosts.commServices,
		parameters: myParameters,
		callback: {name: "cbf", value: "FavoriteAuthorCallBack" }

	});	
    //don't close
	return false;
	
}

function Call_InputBookGenre_List() {
	var newNames = "";
	//var genreURL = $('#favoritesBooksList .populated').attr('id')

	$('#favoriteGenresBooks .populated').each( 
		function(index, item){
				if ($(item).text() != "") {
				var genreIdArray = $(item).attr('id')
				var splitIdArray = genreIdArray.split('|') 
				var indexPos = splitIdArray[0];
				var genreID = splitIdArray[1];
				var genreURL = splitIdArray[2];
					if (newNames.length != 0) {
						newNames += '|';

				}
				newNames += genreID + '*' + encodeURIComponent($(item).text());
			}
		}
	);

	var myParameters = "?page=FavoriteBookmarks&uiAction=SaveBookmarks&type=2&items="
	myParameters += newNames;
	
	ui.request({
		baseURL: $.hosts.commServices,
		parameters: myParameters,
		callback: {name: "cbf", value: "FavoriteGenreBookCallBack" }

	});	
	return true;
}

function Call_InputActor_List () {
		var newNames = "";
	
		$('#ActorEditForm .inputActor').each( 
			function(index, item){
			  if ($(item).val() != "") {
			  	if (newNames.length != 0) {
			  		newNames += '|';
			  	}
				newNames += String(index + 1) + '*' + $(item).val();
			  }
			}
			
		);

		var myParameters = "?page=FavoriteBookmarks&uiAction=SaveBookmarks&type=3&items="
		myParameters += newNames
		
		ui.request({
			baseURL: $.hosts.commServices,
			parameters: myParameters,
			callback: {name: "cbf", value: "FavoriteActorCallBack" }
	
		});	
        //don't close
		return false;
}

function Call_InputFilmGenre_List() {
	var newNames = "";

	$('#favoriteGenresFilm .populated').each( 
		function(index, item){
			if ($(item).text() != "") {
				var genreIdArray = $(item).attr('id')
				var splitIdArray = genreIdArray.split('|') 
				var indexPos = splitIdArray[0];
				var genreID = splitIdArray[1];
				var genreURL = splitIdArray[2];
					if (newNames.length != 0) {
						newNames += '|';
					}
					newNames += genreID + '*' + encodeURIComponent($(item).text());
			}
		}
	);

	var myParameters = "?page=FavoriteBookmarks&uiAction=SaveBookmarks&type=4&items="
	myParameters += newNames
	
	ui.request({
		baseURL: $.hosts.commServices,
		parameters: myParameters,
		callback: {name: "cbf", value: "FavoriteGenreFilmCallBack" }

	});	
	return true;
}

function Call_InputArtist_List () {
		var newNames = "";
	
		$('#ArtistEditForm .inputArtist').each( 
			function(index, item){
			  if ($(item).val() != "") {
			  	if (newNames.length != 0) {
			  		newNames += '|';
			  	}
				newNames += String(index + 1) + '*' + $(item).val();
			  }
			}
			
		);

		var myParameters = "?page=FavoriteBookmarks&uiAction=SaveBookmarks&type=5&items="
		myParameters += newNames
		
		ui.request({
			baseURL: $.hosts.commServices,
			parameters: myParameters,
			callback: {name: "cbf", value: "FavoriteArtistCallBack" }
	
		});	
        //don't close
		return false;
}

function Call_InputMusicGenre_List() {
	var newNames = "";

	$('#favoriteGenresMusic .populated').each( 
		function(index, item){
			if ($(item).text() != "") {
				var genreIdArray = $(item).attr('id')
				var splitIdArray = genreIdArray.split('|') 
				var indexPos = splitIdArray[0];
				var genreID = splitIdArray[1];
				var genreURL = splitIdArray[2];
				
				//alert(genreIdArray)
				if (newNames.length != 0) {
					newNames += '|';
				}
				newNames += genreID + '*' + encodeURIComponent($(item).text());
			}
		}
	);

	var myParameters = "?page=FavoriteBookmarks&uiAction=SaveBookmarks&type=6&items="
	myParameters += newNames
	
	ui.request({
		baseURL: $.hosts.commServices,
		parameters: myParameters,
		callback: {name: "cbf", value: "FavoriteGenreMusicCallBack" }

	});	
	return true;
}




function manageFormArray(type, id) {
		//this pushes the values into a hidden Div on the Contrib overlay, so that whenever the popup is refreshed, 
		//the correct values are displayed.
		
		var formType = type
	  	var formUrlID = id
	  
		var newNamesArray = "";

		$('#' +formType+ 'EditForm .input' +formType+ '').each( 
			function(index, item){
			  if ($(item).val() != "") {
			  	if (newNamesArray.length != 0) {
			  		newNamesArray += '|';
			  	}
				newNamesArray += $(item).val();
			  }
			}
			
		);
		
	var splitNamesArray = newNamesArray.split('|')
			
	for (var i = 0; i < 5; i++) {
		$('#contrib' + [i] + '' + formType + '').text('').text(splitNamesArray[i]);
	}
}


function FavoriteAuthorCallBack (result) {

	if (result.status == "True") {
	
		manageFormArray('Author', '');
			
        $.global.EditAuthorPrompt.close();
        $('#AuthorList').html('')
        $('#AuthorHeader').html('')
        $('#AuthorList_editContainer').find("div.addArea").hide();
        $('#AuthorList_editContainer').find("div.editArea").show();

        $('#AuthorHeader').append('Authors<a id="" href="javascript:void(0)" onclick="return(Activate_EditAuthorPrompt());" class="edit"><img src="' + $.hosts.resources + '/presources/community/images/btn_smallEdit.gif" /></a>')
		
		if($("#Author_Books > ol").hasClass("notPopulated")){
			$("#Author_Books > ol").removeClass("notPopulated");
			$("#Author_Books").prepend('<div class="editBtn"><a href="javascript:void(0)" onclick="return(Activate_EditAuthorPrompt());" class="edit"><img src="' + $.hosts.resources + '/presources/community/images/btn_smallEdit.gif" /></a></div>');
		}
		
        $('#AuthorEditForm .inputAuthor').each( 
	        function(index, item){
		        if ($(item).val() != "") {
        			
			        $('#AuthorList').append('<li><a href="http://search.barnesandnoble.com/booksearch/results.asp?ATH=' +$(item).val()+ '">' + $(item).val() + ' </a></li>');
        			
		        }
	        }
        );
 	} else if (result.status == "False") {
		    $("#editAuthorPrompt").find('#wordFilterError').html('<span style="display:block;" class="errorMsg">'+ result.output +'</span>');			
	}
}

function FavoriteActorCallBack (result) {
	if (result.status == "True") {
		
		manageFormArray('Actor', '');
		
        $.global.EditActorPrompt.close();

        $('#ActorList').html('')
        $('#ActorHeader').html('')
        $('#ActorList_editContainer').find("div.addArea").hide();
        $('#ActorList_editContainer').find("div.editArea").show(); 

        $('#ActorHeader').append('Actors & Directors<a id="" href="javascript:void(0)" onclick="return(Activate_EditActorPrompt());" class="edit"><img src="' + $.hosts.resources + '/presources/community/images/btn_smallEdit.gif" /></a>')
   		
		if($("#Actor_Film > ol").hasClass("notPopulated")){
			$("#Actor_Film > ol").removeClass("notPopulated");
			$("#Actor_Film").prepend('<div class="editBtn"><a href="javascript:void(0)" onclick="return(Activate_EditActorPrompt());" class="edit"><img src="' + $.hosts.resources + '/presources/community/images/btn_smallEdit.gif" /></a></div>');
		} 
		
        $('#ActorEditForm .inputActor').each( 
	        function(index, item){
		        if ($(item).val() != "") {
			        $('#ActorList').append('<li><a href="http://video.barnesandnoble.com/search/results.asp?quickSearchType=NME&FRM=0&quickSearchText=' +$(item).val()+ '">' + $(item).val() + ' </a></li>');
		        }
	        }

        );
    
 	} else if (result.status == "False") {
		    $("#editActorPrompt").find('#wordFilterError').html('<span style="display:block;" class="errorMsg">'+ result.output +'</span>');			
	}
}

function FavoriteArtistCallBack (result) {
	if (result.status == "True") {
		
		manageFormArray('Artist', '');
		
        $.global.EditArtistPrompt.close();
        $("#editArtistPrompt").find('#wordFilterError').html('');	
	    $('#ArtistList').html('')
 	    $('#ArtistHeader').html('')
        $('#ArtistList_editContainer').find("div.addArea").hide();
        $('#ArtistList_editContainer').find("div.editArea").show(); 
     
 	    $('#ArtistHeader').append('Artists<a id="" href="javascript:void(0)" onclick="return(Activate_EditArtistPrompt());" class="edit"><img src="' + $.hosts.resources + '/presources/community/images/btn_smallEdit.gif" /></a>')
		
		if($("#Artist_Music > ol").hasClass("notPopulated")){
			$("#Artist_Music > ol").removeClass("notPopulated");
			$("#Artist_Music").prepend('<div class="editBtn"><a href="javascript:void(0)" onclick="return(Activate_EditArtistPrompt());" class="edit"><img src="' + $.hosts.resources + '/presources/community/images/btn_smallEdit.gif" /></a></div>');
		}
		
        $('#ArtistEditForm .inputArtist').each( 
			    function(index, item){
				    if ($(item).val() != "") {
					    $('#ArtistList').append('<li><a href="http://music.barnesandnoble.com/search/results.asp?qsrch=A&WRD=' +$(item).val()+ '">' + $(item).val() + ' </a></li>');
				    }
			    }
    	
		    );
 	} else if (result.status == "False") {
		    $("#editArtistPrompt").find('#wordFilterError').html('<span style="display:block;" class="errorMsg">'+ result.output +'</span>');			
	 }
}

function manageGenreFormArray(type, id) {
		//this pushes the values into a hidden Div on the Genre overlay, so that whenever the popup is refreshed, 
		//the correct values are displayed.
		
		var formType = type
	  	var formUrlID = id
	  
		var newNamesArray = "";
		var genreIDArray = "";

		$('#favoriteGenres' +formType+ '').children('li').children('span').each( 
			function(index, item){
			  if ($(item).text() != "") {
			  	if (newNamesArray.length != 0) {
			  		newNamesArray += '|';
			  	}
				
				newNamesArray += $(item).text();
			  }
			  if ($(item).attr('id') != "") {
			  	if (genreIDArray.length != 0) {
					genreIDArray += '__';
				}
			  }
			  genreIDArray += $(item).attr('id');
			}	
		);
	//alert(genreIDArray)
	//alert(newNamesArray)
	
	var splitNamesArray = newNamesArray.split('|')
	var splitIDsArray = genreIDArray.split('__')
	for (var i = 0; i < 5; i++) {
		$('#genre' + [i] + '' + formType + '').text('').text(splitNamesArray[i]);
		$('#genre' + [i] + 'id' + formType + '').text('').text(splitIDsArray[i]);
	}
}


function FavoriteGenreBookCallBack (result) {
	if (result.status == "True") {
		
		manageGenreFormArray('Books', '')
		
        $('#genreBooksOrdered').html('')
        $('#genreBooksHeader').html('')
        $('#genreBooksOrdered_editContainer').find("div.addArea").hide();
        $('#genreBooksOrdered_editContainer').find("div.editArea").show(); 

        $('#genreBooksHeader').append('Genres<a id="" href="javascript:void(0)" onclick="return(Activate_EditBooksGenrePrompt());" class="edit"><img src="' + $.hosts.resources + '/presources/community/images/btn_smallEdit.gif" /></a>')
   		
		if($("#Genres_Books > ol").hasClass("notPopulated")){
			$("#Genres_Books > ol").removeClass("notPopulated");
			$("#Genres_Books").prepend('<div class="editBtn"><a id="" href="javascript:void(0)" onclick="return(Activate_EditBooksGenrePrompt());" class="edit"><img src="' + $.hosts.resources + '/presources/community/images/btn_smallEdit.gif" /></a></div>');
		}
		
        $('#favoriteGenresBooks .populated').each( 
	        function(index, item){
		        if ($(item).text() != "") {
		        var genreIdArray = $(item).attr('id')
			        var splitIdArray = genreIdArray.split('|') 
				var indexPos = splitIdArray[0];
				var genreID = splitIdArray[1];
				var genreURL = splitIdArray[2];
		        //alert(genreURL)
        	
			        $('#genreBooksOrdered').append('<li><a href="'+genreURL+'"' +encodeURIComponent($(item).text())+ '">' +$(item).text()+ ' </a></li>');
		        }
	        }

        );
 	}
}

function FavoriteGenreFilmCallBack (result) {
	
	manageGenreFormArray('Film', '')
	
	if (result.status == "True") {
        $('#genreFilmOrdered').html('')
        $('#genreFilmHeader').html('')
        $('#genreFilmOrdered_editContainer').find("div.addArea").hide();
        $('#genreFilmOrdered_editContainer').find("div.editArea").show(); 

        $('#genreFilmHeader').append('Genres<a id="" href="javascript:void(0)" onclick="return(Activate_EditFilmGenrePrompt());" class="edit"><img src="' + $.hosts.resources + '/presources/community/images/btn_smallEdit.gif" /></a>')
         
		if($("#Genres_Film > ol").hasClass("notPopulated")){
			$("#Genres_Film > ol").removeClass("notPopulated");
			$("#Genres_Film").prepend('<div class="editBtn"><a id="" href="javascript:void(0)" onclick="return(Activate_EditFilmGenrePrompt());" class="edit"><img src="' + $.hosts.resources + '/presources/community/images/btn_smallEdit.gif" /></a></div>');
		}
		
        $('#favoriteGenresFilm .populated').each( 
	        function(index, item){
		        if ($(item).text() != "") {
			        var genreIdArray = $(item).attr('id')
			        var splitIdArray = genreIdArray.split('|') 
				var indexPos = splitIdArray[0];
				var genreID = splitIdArray[1];
				var genreURL = splitIdArray[2];
		        //alert(genreURL)
        			
			        $('#genreFilmOrdered').append('<li><a href="'+genreURL+'"' +encodeURIComponent($(item).text())+ '">' +$(item).text()+ ' </a></li>');
		        }
	        }

        );
 	}
}

function FavoriteGenreMusicCallBack (result) {
	if (result.status == "True") {
		
		manageGenreFormArray('Music', '')
		
        $('#genreMusicOrdered').html('')
        $('#genreMusicHeader').html('')
        $('#genreMusicOrdered_editContainer').find("div.addArea").hide();
        $('#genreMusicOrdered_editContainer').find("div.editArea").show(); 

        $('#genreMusicHeader').append('Music Styles<a id="" href="javascript:void(0)" onclick="return(Activate_EditMusicGenrePrompt());" class="edit"><img src="' + $.hosts.resources + '/presources/community/images/btn_smallEdit.gif" /></a>')
   		
		if($("#Genres_Music > ol").hasClass("notPopulated")){
			$("#Genres_Music > ol").removeClass("notPopulated");
			$("#Genres_Music").prepend('<div class="editBtn"><a id="" href="javascript:void(0)" onclick="return(Activate_EditMusicGenrePrompt());" class="edit"><img src="' + $.hosts.resources + '/presources/community/images/btn_smallEdit.gif" /></a></div>');
		} 

        $('#favoriteGenresMusic .populated').each( 
	        function(index, item){
		        if ($(item).text() != "") {
			        var genreIdArray = $(item).attr('id')
			        var splitIdArray = genreIdArray.split('|') 
				var indexPos = splitIdArray[0];
				var genreID = splitIdArray[1];
				var genreURL = splitIdArray[2];
		        //alert(genreURL)
        			
			        $('#genreMusicOrdered').append('<li><a href="'+genreURL+'"' +encodeURIComponent($(item).text())+ '">' +$(item).text()+ ' </a></li>');
		        }
	        }

        );
 	}
}







function getGenreList(result) {
	var genreType = result
	//type: 0 = book, 1 = dvd, 2 = music
	var myParameters = "?page=FavoriteBookmarks&uiAction=GetGenres&type=" +genreType+ "";
	
	ui.request({
		baseURL: $.hosts.commServices,
		parameters: myParameters,
		callback: {name: "cbf", value: "genreList" +genreType+ "CallBack" }
	 });
	return true;
}

function genreList0CallBack(result){
	if (result.status == "True") {
		var genreListOutput = result.output;
		$(genreListOutput).appendTo("#genreBooksList")
		initFavoriteGenres();
	}
}

function genreList1CallBack(result){
	if (result.status == "True") {
		var genreListOutput = result.output;
		$(genreListOutput).appendTo("#genreFilmList")
		initFavoriteGenres();
	}
}

function genreList2CallBack(result){
	if (result.status == "True") {
		var genreListOutput = result.output;
		$(genreListOutput).appendTo("#genreMusicList")
		initFavoriteGenres();
	}
}