
// List active widgets for each page column


// Read each widgets collapsed/expanded state from cookie and apply
function widget_state(forWidget) {

	var thisWidgetState = $.cookie(forWidget);

	if (thisWidgetState == 'collapsed') {
		forWidget = "#" + forWidget;
		$(forWidget).find("div.collapsable_box_content").hide();
		$(forWidget).find("a.toggle_box_contents").html('+');
		$(forWidget).find("a.toggle_box_edit_panel").fadeOut('medium');
	}
};


// Toggle widgets contents and save to a cookie
var toggleContent = function(e) {
    try {
        var targetContent = $('div.collapsable_box_content', this.parentNode.parentNode);
        if (targetContent.css('display') == 'none') {
            targetContent.slideDown(400);
            $(this).html('-');
            $(this.parentNode).children(".toggle_box_edit_panel").fadeIn('medium');

            // set cookie for widget panel open-state
            var thisWidgetName = $(this.parentNode.parentNode.parentNode).attr('id');
            $.cookie(thisWidgetName, 'expanded', { expires: 365 });

        } else {
            targetContent.slideUp(400);
            $(this).html('+');
            $(this.parentNode).children(".toggle_box_edit_panel").fadeOut('medium');
            // make sure edit pane is closed
            $(this.parentNode.parentNode).children(".collapsable_box_editpanel").hide();

            // set cookie for widget panel closed-state
            var thisWidgetName = $(this.parentNode.parentNode.parentNode).attr('id');
            $.cookie(thisWidgetName, 'collapsed', { expires: 365 });
        }
        return false;
    } catch (err) {
        alert(err.description);
    }
};

// More info tooltip in widget gallery edit panel
function widget_moreinfo() {

	$("img.more_info").hover(function(e) {

	var widgetdescription = $("input[name='description']", this.parentNode.parentNode.parentNode ).attr('value');

	$("body").append("<p id='widget_moreinfo'><b>"+ widgetdescription +" </b></p>");

		if (e.pageX < 900) {
			$("#widget_moreinfo")
				.css("top",(e.pageY + 10) + "px")
				.css("left",(e.pageX + 10) + "px")
				.fadeIn("medium");
		}
		else {
			$("#widget_moreinfo")
				.css("top",(e.pageY + 10) + "px")
				.css("left",(e.pageX - 210) + "px")
				.fadeIn("medium");
		}
	},
	function() {
		$("#widget_moreinfo").remove();
	});

	$("img.more_info").mousemove(function(e) {
		// action on mousemove
	});
};




$(document).ready(function () {
// Make delimited list
    $.fn.makeDelimitedList = function(elementAttribute) {

        var delimitedListArray = new Array();
        var listDelimiter = "::";

        // Loop over each element in the stack and add the elementAttribute to the array
        this.each(function(e) {
                var listElement = $(this);
                // Add the attribute value to our values array
                delimitedListArray[delimitedListArray.length] = listElement.attr(elementAttribute);
            }
        );

        // Return value list by joining the array
        return(delimitedListArray.join(listDelimiter));
    };


	// COLLAPSABLE WIDGETS (on Dashboard & Profile pages)
	// toggle widget box contents
	$('a.toggle_box_contents').bind('click', toggleContent);

	// toggle widget box edit panel
	$('a.toggle_box_edit_panel').click(function () {
	    // not here
		$(this.parentNode.parentNode).children(".collapsable_box_editpanel").slideToggle("fast");
		return false;
	});

	// toggle customise edit panel
	$('a.toggle_customise_edit_panel').click(function () {
        if ($(this).html() == 'Edit page') {
            $('div#customise_editpanel').show();
            $(this).html('Cancel');
        } else {
            $('div#customise_editpanel').hide();
            $(this).html('Edit page');
        }
		return false;
	});

	// toggle plugin's settings nad more info on admin tools admin
	$('a.pluginsettings_link').click(function () {
        // not here
		$(this.parentNode.parentNode).children(".pluginsettings").slideToggle("fast");
		return false;
	});
	$('a.manifest_details').click(function () {
        // not here
		$(this.parentNode.parentNode).children(".manifest_file").slideToggle("fast");
		return false;
	});
	// reusable generic hidden panel
	$('a.collapsibleboxlink').click(function () {
        // not here
		$(this.parentNode.parentNode).children(".collapsible_box").slideToggle("fast");
		return false;
	});

	// WIDGET GALLERY EDIT PANEL
	// Sortable widgets
	var els = ['#leftcolumn_widgets', '#middlecolumn_widgets', '#rightcolumn_widgets', '#widget_picker_gallery' ];
	var $els = $(els.toString());

    function outputWidgetList(forElement) {
        var delimitedListArray = new Array();
        var listDelimiter = "::";

        $.each($("div" + forElement + " div.draggable_widget input"), function(){
            if ($(this).attr('name') == 'handler' || $(this).attr('name') == 'guid')
            delimitedListArray[delimitedListArray.length] = $(this).attr("value");
        });
        return(delimitedListArray.join(listDelimiter));
    }


	$els.sortable({
		items: '.draggable_widget',
		handle: '.drag_handle',
		forcePlaceholderSize: true,
		placeholder: 'ui-state-highlight',
		cursor: 'move',
		revert: true,
		opacity: 0.9,
		appendTo: 'body',
		connectWith: els,
		start:function(e,ui) {
		},
		stop: function(e,ui) {
            $('#debugField1').val(outputWidgetList('#leftcolumn_widgets'));
            $('#debugField2').val(outputWidgetList('#middlecolumn_widgets'));
            $('#debugField3').val(outputWidgetList('#rightcolumn_widgets'));
		}
	});

	// bind more info buttons - called when new widgets are created
	widget_moreinfo();

	// set-up hover class for dragged widgets
	$("#rightcolumn_widgets").droppable({
		accept: ".draggable_widget",
		hoverClass: 'droppable-hover'
	});

	$("#middlecolumn_widgets").droppable({
		accept: ".draggable_widget",
		hoverClass: 'droppable-hover'
	});

	$("#leftcolumn_widgets").droppable({
		accept: ".draggable_widget",
		hoverClass: 'droppable-hover'
	});

	$("#widget_picker_gallery").droppable({
		accept: ".draggable_widget",
		hoverClass: 'droppable-hover'
	});

}); /* end document ready function */



