/////////////////////////////////////////////////////////////////
/////  EDIT THE FOLLOWING VARIABLE VALUES  //////////////////////
/////////////////////////////////////////////////////////////////
 
// set the list selector
var setSelector = new Array();
setSelector[0] ="#sortable";
setSelector[1] ="#sortable2";
setSelector[2] ="#sortable3";
// set the cookie name
// set the cookie expiry time (days):
var setCookieExpiry = 360;
 
/////////////////////////////////////////////////////////////////
/////  YOU PROBABLY WON'T NEED TO EDIT BELOW  ///////////////////
/////////////////////////////////////////////////////////////////

// function that resets cookie
function resetAll(){
	for ( var i in setSelector ){
		$.cookie(setSelector[i], null, { expires: setCookieExpiry, path: "/" });
		var elements = $(setSelector[i]).sortable("toArray")
		for (var j in elements){
			$.cookie(elements[j], null, { expires: setCookieExpiry, path: "/" });
		}
	}
	location.reload(true);
}
 
// function that writes the list order to a cookie

function getOrder() {
	// save custom order to cookie
	for ( var i in setSelector ){
		$.cookie(setSelector[i], $(setSelector[i]).sortable("toArray"), { expires: setCookieExpiry, path: "/" });
	}

}

function getState(current, state){

	$.cookie(current, state, { expires: setCookieExpiry, path: "/" });
}
 
// function that restores the list order from a cookie
function restoreOrder() {
	
	
	var rebuild = new Array();
	var rebuildcount = 0;
	//loop each list
	for ( var i in setSelector ){
		var items = $(setSelector[i]).sortable("toArray"); // get items in current list
		var len = items.length;
		for ( var v=0;  v<len; v++){
			
			if ($.cookie(items[v])==1){
				$("#"+items[v]).data("collapsed",1);
				$("#"+items[v]).data("height",$("#"+items[v]).height());
				$("#"+items[v]).height(25) ;
			}
			
			rebuild[rebuildcount] = items[v]; // add all 3 lists into single array
			rebuildcount++;
		}
	}
	
	for ( var j in setSelector ){
		var list = $(setSelector[j]);
		
		if (list == null) return
	 
		// fetch the cookie value (saved order)
		var cookie = $.cookie(setSelector[j]);
		
		// ensure this list has a cookie set
		if (cookie){
	 
			// make array from current cookie order
			var IDs = cookie.split(",");
 		
			for (var i = 0, n = IDs.length; i < n; i++) {
	 
				// item id from saved order
				var itemID = IDs[i];

				// in array checker function to ensure the cookie item is still on the site
				Array.prototype.in_array = function ( obj ) {
					var len = this.length;
					for ( var x = 0 ; x <= len ; x++ ) {
						if ( this[x] == obj ) return true;
					}
					return false;
				}			
				if (rebuild.in_array(itemID)) {
 	
					// select the item from the whichever list it is in
					var savedOrd = $(".ui-sortable").children("#" + itemID);
					
					// Move the items in turn according to saved order
					// we need to filter here since the "setSelector[j]" relates 
					// to the list not the item.
					$(setSelector[j]).filter(":first").append(savedOrd);
				}
			}
		}	
	}
}
// code executed when the document loads

$(function() {
	$(".sortlist").sortable({ connectWith: ".sortlist", cursor: 'hand', opacity:0.2 , handle: 'h2', update: function() { getOrder();}});
	$(".sortlist").disableSelection();

	//expand  contract boxes
	$(".panel").append('<div class="close"></div>');
	//$(".element").data("collapsed", 0);

	$(".close").click(function(){

		if ($(this).parent().data("collapsed")==1) {
			$(this).parent().data("collapsed",0);
			$(this).parent().animate({height:$(this).parent().data("height")});
		} else {
			$(this).parent().data("height",$(this).parent().height());
			$(this).parent().data("collapsed",1);
			$(this).parent().animate({height:25});
		}
		getState(this.parentNode.id, $(this).parent().data("collapsed"));
	});
	
	restoreOrder();
});

/*
$(document).ready(function(){
	$(".column1, .column2, .column3").sortable({
		connectWith: '.column1, .column2, .column3',
		cursor: 'hand',
		handle: 'h2',
		opacity: 0.2,
		change: function(e, i) {
			// Post data back to server or update cookie
		}
	});
	

});
*/



