/** Crea un list-menu con links e background personalizzabile in orientamento, colori, contenuti, ecc
* options ------------------------------
*- menuItems = 	[ {
*                   icoClass    : nome icona e nome dell'istanza <a>,
*                   text        : testo da scrivere,
*                   link        : pagina.html o metodo javascript:classe.metodo(),
*                   target      : href target -> _blank,
*                   customClassName : eventuale classe speciale da aggiungere per formattare il singolo elemento
*                  }, ...]
*- direction = 	'vertical' or 'horizontal'
*- itemColor = 	'default' or 'dark' or 'light' or 'color'
*- highlight = 	'none' or 'text' or 'background'
*- itemType  = 	'ico' or 'text' or 'ico_text' or 'text_ico'
*/

(function($){
    $.fn.extend({
        icoLinkMenu : function (options){
            if($(this).find('ul').attr('class')) return;
            var defaults = {
                menuItems :		[{
                    icoClass:'',
                    text:'menu item',
                    link:'www.google.com',
                    target:'_blank',
                    lng:'',
                    customIdName:''
                    
                }],
                direction : 	'vertical',
                itemColor : 	'default',
                highlight : 	'text',
                itemType : 	'text'
            };
            var o = $.extend( defaults, options );
            var textColor = o.itemColor;
            var icoPath = "ico-"+o.itemColor;
            switch(o.highlight)
            {
                case 'background':
                    var bgOverColor     = "bg-color";
                    var textOverColor   = "dark";
                    var icoOverPath     = "ico-dark";
                    break;

                case 'text':
                    bgOverColor     = "";
                    textOverColor   = "color";
                    icoOverPath     = "ico-color";
                    break;

                default:
                    bgOverColor     = "";
                    textOverColor   = textColor;
                    icoOverPath     = icoPath;
            }
            
            $(this).append('<ul class="ico-link-menu-list">'+"\n");
            var ilm = $(this);
            
            var icon;
            $.each( o.menuItems, function(index, data)
            {           	
            	var text        = o.itemType == 'ico' ? "&nbsp;" : data.text;
                var icon        = o.itemType != 'text' ? icoPath+"-"+data.icoClass : "";
                var iconOver    = o.itemType != 'text' ? icoOverPath+"-"+data.icoClass : "";
                var displayAs   = o.itemType+"-item";
                var customIdName = data.customIdName ? data.customIdName : data.icoClass;
                data.target = data.target ? "target='"+data.target+"'" : "";
                var href	= data.link ? "href='"+data.link+"' "+data.target+"" : "href='javascript:;'";
                var lng = data.lng ? "lng='"+data.lng+"'":'';
                if (data.link && data.link.match(/javascript:/i))
                {
                	href	= "href='javascript:;' onclick='"+data.link.replace(/javascript:/i,'')+"'";
                }
                var baseClass   = "ico-link-menu-item "+displayAs+" "+o.direction+" "+textColor+" "+icon;
                var hoverClass  = "ico-link-menu-item "+displayAs+" "+o.direction+" "+textOverColor+" "+iconOver+" "+bgOverColor;
                var itemHTML    = "<li class='"+o.direction+" "+displayAs+"-gap'><a "+href+" id='a_"+customIdName+"' class='"+baseClass+"'" +lng+">"+text+"</a></li>\n";

                $(ilm).find('ul').append(itemHTML);
                $(ilm).find("#a_"+customIdName).data( 'style', {
                    'baseClass': baseClass,
                    'hoverClass': hoverClass
                } );
            });
            
            $(this).append('</ul>'+"\n");
            
            $(this).find(".ico-link-menu-item").hover( function(){
                $(this).removeClass().addClass($(this).data('style').hoverClass);
            },function(){
                $(this).removeClass().addClass($(this).data('style').baseClass);
            });
        }
    });
})(jQuery);
