
$(function() {
	$.global.SortList = new $.SortList();
	
	var editModeStatus = getUrlParam('editMode')

	if (editModeStatus == 'Y') {
		$(initEditBookmarks());
	}
	
})

function getUrlParam( name )
	{  
	var stringField = "[\\?&]"+name+"=([^&#]*)";  
	var qString = new RegExp(stringField);  
	var results = qString.exec(window.location.href);  
	name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");  

		if (results == null)    
			return "";  
		  else    
			return results[1];
}


function saveOrderConfiguration () {
	  
	var bookmarkValue = $("#bookmarkValue").text();
		
   var myParameters = '?page=FavoriteBookmarks&uiAction=SaveOrderConfiguration&type=' + bookmarkValue
	
			ui.request({
			baseURL: $.hosts.commServices,
			parameters: myParameters,
			callback: {name: "cbf", value: "orderSavedCallback" }
	
		});	

}

function initEditBookmarks(){
	
	var bookmarkValue = $("#bookmarkValue").text();

	var myParameters = "?page=FavoriteBookmarks&uiAction=CacheOrderConfiguration&type=" +bookmarkValue
	
	ui.request({
		baseURL: $.hosts.commServices,
		parameters: myParameters,
		callback: {
			name: "cbf",
			value: "editModeBookmarkCallback"
		}
	
	});
	
	return true;
	
		
}

function editModeBookmarkCallback () {
	
	var bookmarkValue = $("#bookmarkValue").text();

	var myParameters = "?page=FavoriteBookmarks&uiAction=GetSortedBookmarks&type="+bookmarkValue+ "&orderBy=0" 
	
	ui.request({
		baseURL: $.hosts.commServices,
		parameters: myParameters,
		callback: {
			name: "cbf",
			value: "editModeOrderCallback"
		}
	
	});

	return true;	
}

function editModeOrderCallback(result) {
	
	$('#list-items').html('');	
	
 if (result.output.length > 4) {
 	$('#list-items').append(result.output)
 }
	$('div.nonEditMode').hide();
	$('#initEditBookmarks').hide();
	$('ul.sortListOptionsNonEditMode').hide();
	$('ul.sortListOptionsEditMode').show();
	$('div.editMode').show();
	$('#editBookmarksMode').show();
	initUpdateBoxes ();
}

function cancelEditMode(){

	var bookmarkValue = $("#bookmarkValue").text();

	var myParameters = "?page=FavoriteBookmarks&uiAction=GetSortedBookmarks&type="+bookmarkValue+ "&orderBy=0" 
	
	ui.request({
		baseURL: $.hosts.commServices,
		parameters: myParameters,
		callback: {
			name: "cbf",
			value: "saveOrCancelEditModeCallback"
		}
	
	});
	
	return true;
	
}

function saveOrCancelEditModeCallback (result) {

	$('#list-items').html('');	
		 if (result.output.length > 4) {
		 	$('#list-items').append(result.output)
		 }
	$('div.editMode').hide();
	$('#editBookmarksMode').hide();
	$('ul.sortListOptionsEditMode').hide();
	$('ul.sortListOptionsNonEditMode').show();
	$('div.nonEditMode').show();
	$('#initEditBookmarks').show();

}

	function bookmarkPositionChanged() {
		
	}
	

$.SortList = function(options){
	var self = this;
	this.list = $("#list-items");	

	var container = null;
	
	
	
	ListOrFavProductFlagValue = $('#ListOrFavProductFlag').val();
	shortPageTypeFlagValue = String($('#pageTypeFlag').val()).replace(/Owner/, '');
	shortPageTypeFlagValue = String(shortPageTypeFlagValue).replace(/Visitor/, '')
	
	//alert ('ListOrFavProductFlagValue: ' + ListOrFavProductFlagValue);
	
	function init() {

		self.container = $("#listMain");
		
		self.container.delegate("click", {
		  "img.top": moveToTop,
		  "button.btn_updateSmall": moveToNewLocation,
		  "a.removeIcon": removeThisBookmark,
		  "a#list_simple_sort_by_title_link": simpleSortListByTitle,
          "a#list_simple_sort_by_list_order_link": simpleSortListByListOrder,
          "a#list_simple_sort_by_date_link": simpleSortListByDate
		});
		
		reorderList ($("#list-items"), true);

	}

   function removeThisBookmark (e) {
   	_removeClasses();
	e.preventDefault(e);
		
   var removeThisItemID = $(e.target).parents('div').attr('id')
		
   var removeThisItemType = $("#deleteThisID-" +removeThisItemID+ "").text(); 
   var myParameters = '?page=FavoriteBookmarks&uiAction=RemoveBookmark&type=TEMP&favoriteId=' + removeThisItemID
	
			ui.request({
			baseURL: $.hosts.commServices,
			parameters: myParameters	
		});	
	$('#'+ removeThisItemID +'').remove();
		reorderList($("#list-items"));
		$("div.list-item:first").removeClass("first").addClass("first");
		$("div.list-item:last").addClass("last");
		return false;
		AdjustListCountDisplay (1);
}

	function moveToTop(e) {		
		
		_removeClasses();
												
		var listItem = $(e.target).parents("div.list-item");

		listItem.addClass("first").prependTo($("#list-items"));
																
	  	$("div.list-item:last", self.list).addClass("last");
															
		reorderList($("#list-items"));	
		
		moveItemToTopService();	
		
	}

	function moveItemToTopService() {
		
	var favItemID = $("div.list-item:first").attr("id")

	var myParameters = "?page=FavoriteBookmarks&uiAction=ChangeBookmarkPosition&favoriteId=" +favItemID+ "&position=0"
	
	
	ui.request({
		baseURL: $.hosts.commServices,
		parameters: myParameters,
		callback: {name: "cbf", value: "bookmarkPositionChanged" }
	});
	
	return true;
	
	}

	function moveToNewLocation(e) {
															
		//alert('testing re-Order');
															
		var listItem = $(e.target).parents("div.list-item");
		
		var target_rank_val = $(e.target).siblings().filter('.list_item_rank').val();
		
		//var item_rank_just_below_me =  Number($(e.target).parents("div.list-item").next().find('.list_item_rank').val());

		if (target_rank_val < 0) {
			target_rank_val = 0;
		} else {
			target_rank_val -= 1;
		}

		//if (target_rank_val < item_rank_just_below_me ) {
				
		//}
		
		if (target_rank_val >= $("div.list-item").length) {
			target_rank_val = $("div.list-item").length - 1;
			listItem.insertAfter($("div.list-item:eq(" + (target_rank_val) + ")"));
		}
		else {
			listItem.insertBefore($("div.list-item:eq(" + (target_rank_val) + ")"));
		}

		//alert('Got Here: new rank (' + target_rank_val + '), to go before: '
		//+ $("div.list-item:eq(" + (target_rank_val - 1) + ")").attr('id') 	
		//+ ', item_index_just_below_me: ' + item_rank_just_below_me);		
		
		_removeClasses();
		
	 	$("div.list-item:first").addClass("first");				
	  	$("div.list-item:last").addClass("last");
		
		reorderList($("#list-items"));
		
		var favItemID = $("div.list-item:first").attr("id")

		var myParameters = "?page=FavoriteBookmarks&uiAction=ChangeBookmarkPosition&favoriteId=" +favItemID+ "&position=" +target_rank_val
	
	
			ui.request({
				baseURL: $.hosts.commServices,
				parameters: myParameters,	
				callback: {name: "cbf", value: "bookmarkPositionChanged" }		
			});
			
		return true;
	
	}										

	function _removeClasses() {
		//alert('removing classes');	
		$("div.updateState").removeClass("updateState");
		$("#list-items .first").removeClass("first");
		$("#list-items .last").removeClass("last");
	}
	
	function reorderList(list, suppress_service_call) {
	
		setTimeout(
			function() {
				$("div.list-item", list).each(
					function(index, item) {
						$(item).find("div.ordering input").val(index + 1);
					}
				
				);
				if (! suppress_service_call) {
					
				}
					
			}, 100);
	}

	this.reorder_Sortlist = function () {
		reorderList($("#list-items"), true);
	}
	
	init();
}


function orderSavedCallback () {
	
	var bookmarkValue = $("#bookmarkValue").text();

	var myParameters = "?page=FavoriteBookmarks&uiAction=GetSortedBookmarks&type="+bookmarkValue+ "&orderBy=0" 
	
	ui.request({
		baseURL: $.hosts.commServices,
		parameters: myParameters,
		callback: {
			name: "cbf",
			value: "saveOrCancelEditModeCallback"
		}
	
	});

	return true;	

}

/*update box js, added by Kris 6/2/08*/

function initUpdateBoxes() {
	var orderingBoxes = $("div.ordering input");
	
	orderingBoxes.each(function() {
		this.onfocus = function() {
			if(this.parentNode.className.search('updateState') == -1) {
				var updateBoxes = $('div.updateState');
				updateBoxes.each(function() {this.className = 'ordering';});
				this.parentNode.className += " updateState";
			}
		};
	});
	
}	




/*
	self.list = $('#list-items');
	$("div.first", $('#list-items')).removeClass("first");
	$("div.last", $('#list-items')).removeClass("last");
	$("div.list-item:first", $('#list-items')).addClass("first");
	$("div.list-item:last", $('#list-items')).addClass("last");
*/


function AdjustListCountDisplay (change_value) { 

		current_DOM_list_count_element = $(".ListCountDisplay:first").text();
		//alert ('$(".ListCountDisplay"): ' + current_DOM_list_count_element);
	  	eval ("var current_DOM_list_count = " + current_DOM_list_count_element);
		//alert ('current_DOM_list_count: ' + current_DOM_list_count);
		current_DOM_list_count += change_value;
		$(".ListCountDisplay").text(current_DOM_list_count);
		if(current_DOM_list_count == 1) {
			$(".ListCountDisplayLabel").text(' Item');
		} 
		else if (current_DOM_list_count == 0 || current_DOM_list_count > 1){
			$(".ListCountDisplayLabel").text(' Items');
		}
		
}

function ListReOrderCallBack () {
	
	return;
}



function simpleSortListByTitle() {
    var link = $("a.list_simple_sort_by_title_link");

    var sortFunction = function(a, b) {
        var valA = a.find("span.list-item-title").text().toLowerCase();
        var valB = b.find("span.list-item-title").text().toLowerCase();

        if(valA > valB) return 1;
        else if(valA < valB) return -1;
        else return 0;
    }
    simpleSortList(sortFunction, link);
}

function simpleSortListByListOrder() {
    var link = $("a.list_simple_sort_by_list_order_link");

    var sortFunction = function(a, b) {
        var valA = parseInt(a.find("span.list-item-position").text());
        var valB = parseInt(b.find("span.list-item-position").text());
        if(valA > valB) return 1;
        else if(valA < valB) return -1;
        else return 0;
    }
    simpleSortList(sortFunction, link);
}

function getDate(date)
{
    var d = new Date();

    var p = date.replace("/",":");
    var p = p.split(":");
	var monthPart = p[0].split(":");
    var dayPart = p[1].split(":");
    var timePart = p[2].split(":");
    
    var year = dayPart[0];
    var month = dayPart[1];
    var day = dayPart[2];
    var hour = timePart[0];
    var minute = timePart[1];
    var second = timePart[2];

    d.setFullYear(year,month);
    d.setDate(day);
    d.setHours(hour,minute,second);

    return d;
}

function simpleSortListByDate() {
    var link = $("a.list_simple_sort_by_date_link");
	
    var sortFunction = function(a, b) {
        var valA = a.find("span.list-item-date-added").text().split('/');
        var valB = b.find("span.list-item-date-added").text().split('/');
		
		var dateA = new Date;
		var dateB = new Date;
		
		dateA.setDate(valA[1]);
		dateA.setMonth(valA[0]);
		dateA.setYear(valA[2]);
		
		dateB.setDate(valB[1]);
		dateB.setMonth(valB[0]);
		dateB.setYear(valB[2]);
		
		
		//alert (valAform);	
		
        if(dateA > dateB) return -1;
        else if(dateA < dateB) return 1;
        else return 0;
        return 0;
    }
    simpleSortList(sortFunction, link);
}

function simpleSortList(sortFunction, link) {
        var linkId = link.attr('id'); 
		var sortedArray = new Array();
        var sortDown = link.hasClass("down-arrow");

        if(sortDown) {
            link.each(function() {
                $(this).removeClass("down-arrow").addClass("up-arrow");
            });
        } 
        else {
            link.each(function() {
                $(this).removeClass("up-arrow").addClass("down-arrow");
            });
        }

        var listOrderLink = $("a.list_simple_sort_by_list_order_link");
        var dateLink = $("a.list_simple_sort_by_date_link");
        var titleLink = $("a.list_simple_sort_by_title_link");

        //clear the arrows for any of the other sorting links
        if(linkId != listOrderLink.attr('id')) { 
            listOrderLink.each(function() {
                $(this).removeClass("down-arrow").removeClass("up-arrow"); 
            });
        }
        if(linkId != dateLink.attr('id')) { 
            dateLink.each(function() {
                $(this).removeClass("down-arrow").removeClass("up-arrow"); 
            });
        }
        if(linkId != titleLink.attr('id')) {
            titleLink.each(function() {
                $(this).removeClass("down-arrow").removeClass("up-arrow");
            });
        }


		$('div.list-item').each (function (index, item) {
            sortedArray.push($(item));
		});

		sortedArray.sort(sortFunction);
        if(!sortDown) sortedArray.reverse();

		for (i = (sortedArray.length - 1); i >= 0 ; i--) {
			$('div#list-items').append($(sortedArray[i]))
		}
		
        //reset first and last classes for borders and such
		$("#list-items .first").removeClass("first");
		$("#list-items .last").removeClass("last");

        $("div.list-item:first", self.list).addClass("first");
        $("div.list-item:last", self.list).addClass("last");
}

addEventSimple(window,"load",initUpdateBoxes);
//window.onload = getListFeedback;

$(function() {  
	// Coremetrics: Page views for bnstudio & favorite profiles. 
	if(typeof cmCreatePageviewTag !== "undefined"){
		try{
			var cmReviewId = "";
			var cmReviewDisplay = "";
			var cmProfile = $("#context #profilePenName").text();
			var pageType = context.pageType;
			if(pageType && pageType.indexOf("bmProfile") != -1){
				cmCreatePageviewTag ("COMM-FAVORITEPROFILES: "+cmProfile+"", "COMMUNITY FAVORITELIST");
			}else if(pageType && pageType.indexOf("bmStudio") != -1){
				cmCreatePageviewTag ("COMM-FAVORITESTUDIOCLIPS: "+cmProfile+"", "COMMUNITY FAVORITELIST");
			}
		}
		catch(e){}
	}
});