// JavaScript Document
/* 	UPDATE POSSITION OF MODULE 
	You can edit LEFT, CENTER, RIGHT then SAVE possition of modules
	Author: Dao Ba Khoe (khoe.dao@htecom.vn)	
*/


$(function() {
	// NOTE : DONOT EDIT BLOCK CODE
	$(".column-nodrag").sortable({
		connectWith: '.column',
		handle: 'div.module-header',
		opacity: 0.6,
		revert: true,
		cancel: '.ui-state-disabled-drag'
	});
	
	// #NOTE : DONOT EDIT BLOCK CODE
	
	// EDIT CODE BELLOW
	// left
	//	- Save possition of modules
	//var setSelector		= '#htecom-left div.column';
	//var setCookieName	= 'htecom-left-cookie';
	$('#htecom-left div.column').bind('sortupdate', function(event, ui) {	
		htecomUpdateOrder('#htecom-left div.column', 'htecom-left-cookie');
	});
	//	- Restore possition of modules	
	htecomRestoreOrder('#htecom-left div.column', 'htecom-left-cookie');
	// #left
	
	// center
	//	- Save possition of modules
	//$('#htecom-center div.column').bind('sortupdate', function(event, ui) {		
	//	htecomUpdateOrder('#htecom-center div.column', 'htecom-center_cookie');
	//});
	//	- Restore possition of modules		
	//htecomRestoreOrder('#htecom-center div.column', 'htecom-center_cookie');
	// #center
	
	
	
	// NOTE : DONOT EDIT BLOCK CODE
	$(".module").addClass("ui-widget ui-widget-content ui-helper-clearfix ui-corner-all")
		.find(".module-header")
			.addClass("ui-widget-header ui-corner-all")
			.prepend('<span class="ui-icon ui-icon-plusthick"></span>')
			.end()
		.find(".module-content");

	$(".module-header .ui-icon").click(function() {
		$(this).toggleClass("ui-icon-minusthick");
		$(this).parents(".module:first").find(".module-content").toggle();
	});
	// #NOTE : DONOT EDIT BLOCK CODE
	
});


/////////////////////////////////////////////////////////////////
/////  DONOT EDIT THE FOLLOWING CODE 		//////////////////////
/////////////////////////////////////////////////////////////////

// set the cookie expiry time (days):
var setCookieExpiry = 7;

// function that writes the list order to a cookie
function htecomUpdateOrder(setSelector, setCookieName) {
	
	// save custom order to cookie
	$.cookie(setCookieName, $(setSelector).sortable("toArray"), { expires: setCookieExpiry, path: "/" });
}

// function that restores the list order from a cookie
function htecomRestoreOrder(setSelector, setCookieName) {
	var list = $(setSelector);
	if (list == null) return
	
	// fetch the cookie value (saved order)
	var cookie = $.cookie(setCookieName);
	if (!cookie) return;
	
	// make array from saved order
	var IDs = cookie.split(",");
	
	// fetch current order
	var items = list.sortable("toArray");
	
	// make array from current order
	var rebuild = new Array();
	for ( var v=0, len=items.length; v<len; v++ ){
		rebuild[items[v]] = items[v];
		
	}
	
	for (var i = 0, n = IDs.length; i < n; i++) {
		
		// item id from saved order
		var itemID = IDs[i];
		//alert(itemID);
		if (itemID in rebuild) {
			
			// select item id from current order
			var item = rebuild[itemID];
			
			//alert(item);
			// select the item according to current order
			var child = $("div.ui-sortable").children("#" + item);
			
			// select the item according to the saved order
			var savedOrd = $("div.ui-sortable").children("#" + itemID);
			
			// remove all the items
			child.remove();
			
			// add the items in turn according to saved order
			// we need to filter here since the "ui-sortable"
			// class is applied to all ul elements and we
			// only want the very first!  You can modify this
			// to support multiple lists - not tested!
			
			$("div.ui-sortable").filter(":first").append(savedOrd);
		}
	}
}
