/* k2-celeph
* Javascript functions for k2-celeph theme.
* Handles click events for navigation and widget buttons.
*
* Change Log:
*/
var k2c_menu_busy = false;
var k2c_sidebar_busy = false;
var k2c_selected_widget = null;
var k2c_menu_initalwidth = 0;

// Enables and disables widget content overflow.
// I used this to optimize the display performance before. Active overflow caused 
// some display problems when widget boxes were set to bounce and animate.
function k2c_enableOverflow() {
	jQuery('#'+k2c_selected_widget.attr('id')+' .widget-content').css('overflow', 'auto');
}

function k2c_disableOverflow() {
	jQuery('#'+k2c_selected_widget.attr('id')+' .widget-content').css('overflow', 'hidden');
}

// Add focus/blur event to search box
function k2c_addSearchFocusBlur() {
	var searchfield = jQuery('input#s');
	searchfield.each(function() {
        jQuery(this).focus(function(event) {
            if (this.value == 'Search') {
                this.value = '';
            } else {
                this.select();
            }
        });

        jQuery(this).blur(function(event) {
            if (this.value == '') {
                this.value = 'Search';
            }
        });
    });
}

function k2c_openMenu() {
	k2c_menu_busy = true;

	var menu = jQuery('ul.menu');
	//menu.animate({width: k2c_menu_initalwidth}, 200);

	menu.css('left', '0');
	menu.css('bottom', '20px');

	menu.css('border', '1px solid #e6e0d9');
	menu.css('border-left', 'none');
	menu.css('border-top-left-radius', '0');
	menu.css('border-bottom-left-radius', '0');
	menu.css('-moz-border-radius-topleft', '0');
	menu.css('-moz-border-radius-bottomleft', '0');
	menu.css('-webkit-border-top-left-radius', '0');
	menu.css('-webkit-border-bottom-left-radius', '0');
	menu.css('background-color', '#fff');
	menu.css('width', k2c_menu_initalwidth+'px');
	menu.css('height', 'auto');

	jQuery('ul.menu li').show();

	k2c_menu_busy = false;
}

function k2c_closeMenu() {
	k2c_menu_busy = true;

	var menu = jQuery('ul.menu');
	//menu.animate({width: '7px'}, 100);

	jQuery('ul.menu li').hide();

	menu.css('width', '7px');
	menu.css('height', '7px');
	menu.css('background-color', '#c00');
	menu.css('border', '1px solid white');
	menu.css('border-top-left-radius', '9px');
	menu.css('border-bottom-left-radius', '9px');
	menu.css('-moz-border-radius-topleft', '9px');
	menu.css('-moz-border-radius-bottomleft', '9px');
	menu.css('-webkit-border-top-left-radius', '9px');
	menu.css('-webkit-border-bottom-left-radius', '9px');
	menu.css('left', '13px');
	menu.css('bottom', '5px');
	
	k2c_menu_busy = false;
}

// Main menu events
function k2c_addMainMenuEvents() {
	var menu = jQuery('ul.menu');
	var menuTrigger = jQuery('#sidebar-2-spacer');

	k2c_menu_initalwidth = menu.width();

	menuTrigger.click(function() {
		if (!k2c_menu_busy) {
			if (menu.width() <= 10) {
				menu.unbind('click');
				k2c_openMenu();
			} else {
				k2c_closeMenu();
				menu.click(function() {
					k2c_openMenu();
				});
			}
		}
    });
}

// Initialization and entry point
jQuery(document).ready(function() {
	k2c_addSearchFocusBlur();
	k2c_addMainMenuEvents();

	// move widgets out of sidebar-2 to body
	// this is necessary to make sure the sidebar div with icons is stacked on top of widget viewports
	// solution is not very elegant, need to think about something better
	jQuery('div#sidebar-2 h3.widgetmaintitle').wrapInner('<span></span>');
	jQuery('div#sidebar-2 h3.widgetmaintitle').append('<span class="close"></span>');
	jQuery('div#sidebar-2-wrapper .widget').clone().appendTo('div#page');
	jQuery('div#sidebar-2-wrapper .widget').remove();
	jQuery('div.widget').wrapInner('<div class="widget-content"></div>');

	// move the widget header out
	jQuery('div.widget').each(function() {
		jQuery(this).prepend(jQuery('div#'+this.id+' div.widget-content h3.widgetmaintitle'));
	});

	// buttons of sidebar-2
	var sidebar = jQuery('div#sidebar-2');
	var buttons = jQuery('div.widgetbutton');

	buttons.each(function() {
		var wid = this.id.substr(0,this.id.length-7);
		var buttonpos = jQuery('div#'+wid+'-wrapper').position();

        var widget = jQuery('div#'+wid);
		widget.initialHeight = widget.height();
		widget.css('left', buttonpos.left + 200);
		widget.css('height', 0);
        widget.show();
		jQuery('div#'+wid+' .widget-content').jScrollPane({showArrows:false});

		jQuery(this).click(function(event) {
			if (!k2c_sidebar_busy) {

				if (k2c_selected_widget != null) {
					k2c_selected_widget.hide();
					k2c_selected_widget.css('height', 0);

					if (k2c_selected_widget == widget) {
						k2c_selected_widget = null;
						return;
					}
				}

				k2c_selected_widget = widget;
				k2c_sidebar_busy = true;
				// k2c_disableOverflow();

				widget.css('visibility', 'visible');
				widget.animate({height: widget.initialHeight}, 200);
				// the bounce effect (positioning) doesn't work right in IE, so I just ignore it here
				if (!jQuery.browser.msie) {
					widget.effect('bounce', {
						direction: 'down', 
						times: 2, 
						distance: 10
					}, 200, function() {k2c_sidebar_busy=false;});
				} else {
					k2c_sidebar_busy = false;
				}
			} // busy

		}); // click

	}); // buttons

	// add close button events
	jQuery('h3.widgetmaintitle').each(function() {
		jQuery(this).click(function(event) {
			if (k2c_selected_widget != null) {
				k2c_selected_widget.hide();
				k2c_selected_widget.css('height', 0);
				k2c_selected_widget = null;
			}	
		});
	});

});


