// Richiede il file css pixart.button.css
jQuery.fn.pixartButton= function(opt){
	// Se il parametro è nullo lo inizializza
	if(opt==null) opt = {};
	
	// Variabile per capire se è IE6 o meno
	var isIE6 = (jQuery.browser.msie && jQuery.browser.version == '6.0');
	
	// Funzione che cabia le classi in base ai parametri
	var func = function(elem,from_color,to_color){
		// Array contenente le parti che compongono il pulsante
		var parts = new Array('left','text','icon','right');
		// Ciclo su tutte le parti per settarne la classe e quindi l'immagine risultante
		for(var i = 0; i < parts.length; i++){
			switch(parts[i]){
				case 'text' : 
					var to_remove = 'pixart-button-'+from_color+'-text';
					var to_add = 'pixart-button-'+to_color+'-text';
					elem.find('.pixart-button-'+parts[i]).removeClass(to_remove).addClass(to_add);
					break;
				default :
					var to_remove = 'pixart-button-'+from_color+'-matrix';
					var to_add = 'pixart-button-'+to_color+'-matrix';
					elem.find('.pixart-button-'+parts[i]).removeClass(to_remove).addClass(to_add);
					break;
			}
		}
	};
	
	// Setta il cursore del pulsante come manina
	$(this).css('cursor','pointer');
	
	// Se la chiamata è una chiamata per disabilitare o abilitare il pulsante
	if(opt.status){
		switch(opt.status){
			case 'disable' :
				// Elimina la funzione da chiamare al click
				$(this).unbind('click');
				// Setta il pulsante come disabilitato
				$(this).data('status','disabled');
				// Setta il cursore come auto
				$(this).css('cursor','auto');
				// Se non è IE6 sostituisce le classi delle componenti del pulsante
				if(!isIE6) func($(this),$(this).attr('color'),'lightgray');
				// Se è IE6 sostituisce l'HTML intero
				else $(this).pixartButtonSetHTML('lightgray');
				break;
			case 'enable' :
				// Ripristina la funzione da chiamare al click
				if($(this).attr('setclick')){
					$(this).bind('click',function(){
						eval($(this).attr('setclick'));
					});
				}
				// Setta il pulsante come abilitato
				$(this).data('status','enabled');
				// Se non è IE6 sostituisce le classi delle componenti del pulsante
				if(!isIE6) func($(this),'lightgray',$(this).attr('color'));
				// Se è IE6 sostituisce l'HTML intero
				else $(this).pixartButtonSetHTML($(this).attr('color'));
				break;
		}
	}else{
		$(this).each(function(){
			// Controlla se il pulsante è stato inizializzato
			if($(this).data('pixart-button-init')) return;
			$(this).data('pixart-button-init',true);
			// Nasconde l'elemento per le modifiche
			$(this).hide();
			// Inizializza il controllo dell'over
			$(this).data('over_free',true);
			// Inizializza il pulsante come abilitato
			$(this).data('status','enabled');
			// Aggiungo per default la classe dei pulsanti
			$(this).addClass('pixart-button');
			// Salvo il testo nell'oggetto
			$(this).data('text',jQuery.trim($(this).html()));
			// Crea la nuova struttura del pulsante con il colore iniziale
			$(this).pixartButtonSetHTML($(this).attr('color'));
			// Aggiunge l'evento del click
			if($(this).attr('setclick')){
				$(this).bind('click',function(){
					eval($(this).attr('setclick'));
				});
			}
			// Se la classe deve cambiare al mouse over e il browser non è IE 6
			if($(this).attr('overcolor')){
				// Al mouse over rimuove la classe iniziale e imposta la classe over
				$(this).mouseover(function(){
					if($(this).data('over_free') && $(this).data('status')=='enabled'){
						// Setta il cursore del pulsante come manina
						$(this).css('cursor','pointer');
						// Occupa l'over del pulsante
						$(this).data('over_free',false);
						// Se non è IE6 sostituisce le classi delle componenti del pulsante
						if(!isIE6) func($(this),$(this).attr('color'),$(this).attr('overcolor'));
						// Se è IE6 sostituisce l'HTML intero
						else{
							$(this).hide();			
							$(this).pixartButtonSetHTML($(this).attr('overcolor'));
							$(this).show();		
						}
					}
				});
				// Al mouse out rimuove la classe over e imposta la classe iniziale 
				$(this).mouseout(function(){
					if($(this).data('status')=='enabled'){
						// Se non è IE6 sostituisce le classi delle componenti del pulsante
						if(!isIE6) func($(this),$(this).attr('overcolor'),$(this).attr('color'));
						// Se è IE6 sostituisce l'HTML intero
						else{
							$(this).hide();			
							$(this).pixartButtonSetHTML($(this).attr('color'));
							$(this).show();		
						}
						// Libera l'over del pulsante
						$(this).data('over_free',true);
					}
				});
			}
			// Mostra l'elemento dopo le modifiche
			$(this).show();
		});
	}
};
// Funzione che inserisce nel pulsante l'html del colore richiesto
jQuery.fn.pixartButtonSetHTML =  function(color){
	if($(this).html()) $(this).data('text',$(this).html());
	if($(this).data('text').indexOf('pixart-button-text') >= 0){
		$(this).data('text',jQuery.trim($(this).find('.pixart-button-text').html()));
	}
	$(this).html('');
	var width = parseInt($(this).css('width'));
	// Edit della struttura/grafica
	var new_html = '';				
	new_html += '<div style="position:relative;width:'+width+'px;">';
		// Arrotondamento sinistro
		new_html += '<div class="pixart-button-'+color+'-matrix pixart-button-left pngFix"></div>';
		// Testo
		new_html += '<div class="pixart-button-'+color+'-text pixart-button-text" style=";width:'+(width-18)+'px;">' + $(this).data('text') + '</div>';
		if($(this).attr('icon')=='show'){
			// Icona
			new_html += '<div class="pixart-button-'+color+'-matrix pixart-button-icon pngFix" style="z-index:3;"></div>';
		}
		// Arrotondamento destro
		new_html += '<div class="pixart-button-'+color+'-matrix pixart-button-right pngFix"></div>';
	new_html += '</div>';
	
	// Sostituisce l'elemento iniziale con la nuova tabella
	$(this).html(new_html);
};