var cookiename='demo';
var cookie_options = { path: '/', expires: 10 };


function resetCookie()
{
	jQuery.cookie(cookiename, null, cookie_options);
}

function resetCookieState()
{
	var cookie = jQuery.cookie(cookiename);
	if (!cookie) return;

	var cookie=cookie.split("|");

	var savedBlocks = cookie[0];
	var savedState = cookie[1];

	jQuery.cookie(cookiename, savedBlocks+'|', cookie_options);
}

function resetCookieOrder()
{
	var cookie = jQuery.cookie(cookiename);
	if (!cookie) return;

	var cookie=cookie.split("|");

	var savedBlocks = cookie[0];
	var savedState = cookie[1];

	jQuery.cookie(cookiename, '|'+savedState, cookie_options);
}


function getCookie()
{
	var cookie = jQuery.cookie(cookiename);
	if (!cookie) return;

	var cookie=cookie.split("|");

	var savedBlocks;
	var savedStates;

	if (cookie[0]) savedBlocks = cookie[0];
	if (cookie[1]) savedStates = cookie[1];


	//blocks
	if (savedBlocks)
	{

        var orders = savedBlocks.split(";");

        jQuery("#left").sortable('toArray');
        jQuery("#center").sortable('toArray');
        jQuery("#right").sortable('toArray');

        if(orders[0]) restoreOrder('#left',orders[0]);
        if(orders[1]) restoreOrder('#center',orders[1]);
        if(orders[2]) restoreOrder('#right',orders[2]);
  }

	//states
	if (savedStates)
	{
        var states = savedStates.split(",");
        var blocks_id = new Array();
        var blocks_state = new Array();
        var i=0;
        for (i=0; i<states.length; i++)
        {
            var temp = states[i].split("=");
            blocks_id[i]=temp[0];
            blocks_state[i]=temp[1];
        }

        for (i=0; i<states.length; i++)
        {
        	 var item=blocks_id[i];
        	 var state=blocks_state[i];
           if (state==1)
             jQuery("#"+item).find(".portlet-content").hide();
           else if (state==2)
             jQuery("#"+item).hide();
        }
   }
}

function setCookie()
{
  var s="";
  var i=0;
  var n=0;


 //blocks
        if (jQuery("#left").sortable('toArray')!="undefined")		s+=jQuery("#left").sortable('toArray')+";"
				if (jQuery("#center").sortable('toArray')!="undefined")		s+=jQuery("#center").sortable('toArray')+";"
				if (jQuery("#right").sortable('toArray')!="undefined")		s+=jQuery("#right").sortable('toArray')+";"

  s=s.substr(0,s.length-1);

  s+='|';

  //states
  			var blocks_minimized = new Array();
  			var blocks_closed = new Array();

  			n=jQuery('.portlet-content:hidden').size();
  			for (i=0; i<n; i++)
     			s+=jQuery('.portlet-content:hidden').eq(i).parent('.minimizable').attr('id')+"=1,";

  			n=jQuery('.closable:hidden').size();
  			for (i=0; i<n; i++)
    			s+=jQuery('.closable:hidden').eq(i).attr('id')+"=2,";

  if (n!=0) s=s.substr(0,s.length-1);

  if (s.length>0) jQuery.cookie(cookiename, s, cookie_options);
  else jQuery.cookie(cookiename, null);
}

function restoreOrder(list,order) {
	var list = jQuery(list);
	if (list == null) return

	// make array from saved order
	var IDs = order.split(",");

	for (var i = 0, n = IDs.length; i<n; i++)
        {
	   var item = IDs[i];

 	   // select the item according to current order
	   var child = jQuery("div.ui-sortable").children("#" + item);

	   // select the item according to the saved order
	   var savedOrd = jQuery("div.ui-sortable").children("#" + item);

	   // remove all the items
	   child.remove();

	   jQuery(list).append(savedOrd);
	 }
}

function removeButtons()
{
	  jQuery(".ui-icon-newwin").replaceWith('');
	  jQuery(".ui-icon-arrow-4").replaceWith('');
	  jQuery(".ui-icon-power").replaceWith('');
}

function addButtons()
{
	  removeButtons();
		jQuery(".minimizable").find(".portlet-header").append('<span class="ui-icon ui-icon-newwin"></span>')
		jQuery(".movable").find(".portlet-header").append('<span class="ui-icon ui-icon-arrow-4"></span>')
		jQuery(".closable").find(".portlet-header").append('<span class="ui-icon ui-icon-power"></span>')

		jQuery(".minimizable").find(".portlet-header").find(".ui-icon-newwin").click(function() {
			                  jQuery(this).parents(".minimizable").find(".portlet-content").toggle();
		});

		jQuery(".closable").find(".portlet-header").find(".ui-icon-power").click(function() {
                        jQuery(this).parents(".closable").hide();

		});
}

function enableCustomization()
{
												jQuery('#customize-dialog').dialog('open');
	    									jQuery(".placeholder").show();
												jQuery(".sortable").sortable({
    														handle: '.ui-icon-arrow-4',
    														tolerance: 'pointer',
	  														items: '.movable',
    														connectWith: '.sortable',
    														update : function () { setCookie(); }
    										});
   											addButtons();
}

function disableCustomization()
{
	   										removeButtons();
   											setCookie();
	    									jQuery(".placeholder").hide();
                				jQuery(".sortable").sortable('destroy');
}

	jQuery(function() {

		jQuery('#customize-dialog').dialog({
                         autoOpen: false, width: 500, buttons: {
                              "По-умолчанию": function() {
                                jQuery(this).dialog("close");
                                resetCookie();
                                window.location.reload();
                              },
                              "Вернуть блоки": function() {
                                jQuery(this).dialog("close");
                                resetCookieState();
                                window.location.reload();
                              },
                              "Вернуть сортировку": function() {
                                jQuery(this).dialog("close");
                                resetCookieOrder();
                                window.location.reload();
                              },
                              "Сохранить": function() {
                                jQuery(this).dialog("close");
                              }
                         },
   											 close: function(event, ui) { disableCustomization(); }
                });

    jQuery('.placeholder').hide();

		jQuery('.customizer').find('.portlet-header').append('<span class="ui-icon ui-icon-wrench"></span>')

		jQuery('.customizer').find('.portlet-header').find('.ui-icon-wrench').click(function() {
				enableCustomization();
		});

		jQuery('.sortable').sortable({
    				handle: '.ui-icon-arrow-4',
    				tolerance: 'pointer',
	  				items: '.movable',
    				connectWith: '.sortable'
    });

 		getCookie();

		jQuery('.sortable').sortable( 'refresh' )
 		jQuery('.sortable').sortable('destroy');

	});

