/**
 * @author pablo
 */
jQuery.fn.actionMenu = function(options, text, icon, clickFunction, className){

	if(options == 'addAction' && text && icon && clickFunction ){
		return this.each(function(){
			var mainContainer = this;
			if(jQuery(mainContainer).data('actionMenuInitilize')!= true){
				jQuery(mainContainer).actionMenu();
			}
			var ULActionContainer = jQuery('ul',mainContainer);
			var ILElement = document.createElement('li');
			if(className){
				ILElement.className = 'ui-state-default '+className;
			}else{
				ILElement.className = 'ui-state-default';
			}
			var AElement = document.createElement('a');
			if(typeof(clickFunction)== 'string'){
				AElement.setAttribute('href', clickFunction);
			}
			if(icon){
				var IMGElement = document.createElement('img');
				IMGElement.src = icon;
				AElement.appendChild(IMGElement);
			}
			AElement.appendChild(document.createTextNode(text)); 
			ILElement.appendChild(AElement);
			if(typeof(clickFunction)== 'function'){
				AElement.setAttribute('href', '#');
				$(AElement).click( function(event){ event.preventDefault();});
				$(ILElement).click( clickFunction);
			}
			ULActionContainer.append(ILElement);
			jQuery(ILElement).hover(function(){$(this).addClass('ui-state-hover')},function(){$(this).removeClass('ui-state-hover')});
		});
	}
	var settings = jQuery.extend({
		mainActionText: 'Actions',
		actions: []
		}, options);
	return this.each(function(){
		var mainContainer = this;
		var openMenuButton = document.createElement('span');
		openMenuButton.setAttribute('class', 'ui-state-default ui-actionmenu-openButton');
		openMenuButton.innerHTML = settings.mainActionText+'<img src="/images/icons/bullet_arrow_down.png"/>'
		jQuery(openMenuButton).click(function(){
			var clickedButton = jQuery(this);
			if(clickedButton.hasClass( 'ui-state-active' )){
				jQuery('div.ui-actionmenu-actioncontainer',mainContainer).hide();
				clickedButton.removeClass('ui-state-active');
			}else{
				jQuery('.ui-actionmenu > span.ui-state-active').trigger('click');
				jQuery('div.ui-actionmenu-actioncontainer',mainContainer).show(400);
				clickedButton.addClass('ui-state-active');
			}
		});
		mainContainer.appendChild(openMenuButton);
		$(mainContainer).append('<div style="clear:both"/>');
		var DIVActionsContainer = document.createElement('div');
		DIVActionsContainer.setAttribute('class', 'ui-actionmenu-actioncontainer');
		var ULActionContainer = document.createElement('ul');
		DIVActionsContainer.appendChild(ULActionContainer);
		mainContainer.appendChild(DIVActionsContainer);
		maxwid = ULActionContainer.clientWidth;
		if(maxwid>0){
			withFixer = document.createElement('div');
			withFixer.setAttribute('style','width:'+(maxwid+2)+'px');
			mainContainer.appendChild(withFixer);
			$(ULActionContainer).css('left','-'+maxwid+'px');
		}
		var DIVShadow = document.createElement('div');
		DIVShadow.setAttribute('class', 'ui-actionmenu-shadow');
		DIVActionsContainer.appendChild(DIVShadow);
		DIVActionsContainer.setAttribute('style', 'display:none')
		ULActionContainer.setAttribute('class', 'ui-widget-content');
		jQuery(mainContainer).data('actionMenuInitilize',true);
		for( i in settings.actions){
			var action = settings.actions[i];
			jQuery(this).actionMenu('addAction',action.text, action.icon, action.click);
		}
	});
}
