$.fn.fieldsetCollapse = function(options) {
	var defaults = {
		closed : false
	}
	settings = $.extend( {}, defaults, options);

	return this.each( function() {
		var obj = $(this);
		obj.find("legend").addClass('collapsible').click( function() {

			if (obj.hasClass('collapsed')) {
				obj.removeClass('collapsed').addClass('collapsible');
			} else {
				obj.removeClass('collapsible').addClass('collapsed');
			}

			$(this).removeClass('collapsed');

			obj.children().not('legend').toggle();
			if (settings.container) {
				settings.container.resizeAll();
			}

			/*
			 * obj.children().not('legend').toggle(function() { if
			 * ($(this).is(":visible"))
			 * obj.find("legend").addClass('collapsible'); else
			 * obj.addClass('collapsed').find("legend").addClass('collapsed');
			 * });
			 */

		});
		if (settings.closed) {
			obj.removeClass('collapsible').addClass('collapsed').find("legend")
					.addClass('collapsed');
			obj.children().filter("p,img,table,ul,div,span,h1,h2,h3,h4,h5")
					.css('display', 'none');
		}

		if (settings.container) {
			settings.container.resizeAll();
		}
	});
};

var xsuite = function() {
	var $ = jQuery;
	return {
		termsOfService: function (){
		  var queryString = "tosPopup.do";
		  var titlePopup = "TermsOfService";
		  var param = "width=800,height=600,menubar=no,toolbar=no,resizable=yes,scrollbars=yes";
		  openPopup(queryString, titlePopup, param);
		},
		enableField : function(selector) {
			jQuery(selector).removeAttr("disabled");
			jQuery(selector).attr("class", "x-input");
		},
		disableField : function(selector) {
			jQuery(selector).attr("disabled", true);
			jQuery(selector).attr("class", "x-input-not-editable");
			jQuery(selector).val("");
		},
		enableTextarea : function(selector) {
			jQuery(selector).removeAttr("disabled");
			jQuery(selector).attr("class", "x-textarea");
		},
		disableTextarea : function(selector) {
			jQuery(selector).attr("disabled", true);
			jQuery(selector).attr("class", "x-textarea-not-editable");
			jQuery(selector).val("");
		},
		enableDateField : function(selector) {
			jQuery(selector).datepicker("enable");
			jQuery(selector).removeClass("x-input-not-editable");
			jQuery(selector).addClass("x-input");
		},
		disableDateField : function(selector) {
			jQuery(selector).datepicker("disable");
			jQuery(selector).removeClass("x-input");
			jQuery(selector).addClass("x-input-not-editable");
			jQuery(selector).val("");
		},
		ajaxDialog : function(elementId, url, popupTitle, closeButtonLabel,
				width, height) {

			// width e height sono le dimensioni della dialog e possono essere 'auto' per
			// l'autodimensionamento della dialog, 'default' per avere
			// dimensioni standard
			// preimpostate oppure possono essere specificate in pixel

			var dialog = jQuery('<div></div>');
			dialog.attr('id', elementId);
			dialog.attr('title', popupTitle);
			dialog
					.load(url,

					function() {

						// Se non e' passata una etichetta per il pulsante di chiusura, esso non viene visualizzato
							if (closeButtonLabel != null) {
								var buttons = {};
								buttons[closeButtonLabel] = function() {
									$(this).dialog('close');
								}
							}

							// Dimensioni di default
							var defaultWidth = 550;
							var defaultHeight = 500;

							// Settaggio dimensioni di default x dialog
							if (width == 'default') {
								width = defaultWidth;
							}
							if (height == 'default') {
								height = defaultHeight;
							}

							var browserVer = parseInt(jQuery.browser.version);

							// impostazioni dialog per IE6, IE7, IE8
							if (jQuery.browser.msie
									&& (browserVer == 6 | browserVer == 7 | browserVer == 8)) {

								if (width == 'auto') {
									width = defaultWidth;
								}

								dialog.dialog( {
									bgiframe : true,
									autoOpen : true,
									height : height,
									width : width,
									modal : true,
									resizable : false,
									draggable : true,
									buttons : buttons
								});

								// impostazioni dialog di default
							} else {
								dialog.dialog( {
									bgiframe : true,
									autoOpen : true,
									height : height,
									width : width,
									modal : true,
									buttons : buttons
								});

							}

						}

					);

		},
		dialog : function(selector, closeButtonLabel) {
			var buttons = {};
			buttons[closeButtonLabel] = function() {
				$(this).dialog('close');
			}
		
			var bgIframe = false;
			var browserVer = parseInt(jQuery.browser.version);
			// impostazioni dialog per IE6, IE7, IE8
			if (jQuery.browser.msie && (browserVer == 6 | browserVer == 7 | browserVer == 8)) {
				bgIframe = true;
			}
			
			jQuery(selector).dialog("destroy");
			var dialog = jQuery(selector).dialog( {
				bgiframe : bgIframe,
				autoOpen : false,
				height : 500,
				width : 550,
				modal : false,
				buttons : buttons
			});
			return dialog;

		},
		blockXUI : function(message) {

			if (message == '') {
				message = 'Elaborazione in corso...';
			}

			$.blockUI( {
				message : '<h2>' + message + '</h2>',
				/*overlayCSS: { backgroundColor: '#333399' },*/
				css : {
					border : 'none',
					padding : '15px',
					backgroundColor : '#000',
					'-webkit-border-radius' : '10px',
					'-moz-border-radius' : '10px',
					'border-radius' : '10px',
					opacity : .5,
					color : '#FF9933'
				}
			});
		}

	}
}();

xsuite.Util = {
	defaultValue : function(obj, defaultValue) {
		var input = jQuery(obj).val(defaultValue);

		input.focus( function() {
			if (this.value == defaultValue) {
				this.value = '';
			}
		});

		input.blur( function() {
			if (!this.value) {
				this.value = defaultValue;
			}
		});
	},
	showCapsLock : function(event, span) {
		var keyCode = event.keyCode ? event.keyCode : event.which;
		var shiftKey = event.shiftKey ? event.shiftKey
				: ((keyCode == 16) ? true : false);

		if (((keyCode >= 65 && keyCode <= 90) && !shiftKey)
				|| ((keyCode >= 97 && keyCode <= 122) && shiftKey)) {

			document.getElementById(span).style.display = '';
		} else {
			document.getElementById(span).style.display = 'none';
		}
	},
	tooltip : function(selector) {

		// http://plugins.learningjquery.com/cluetip/#options
		$(selector).cluetip( {
			local : true,
			activation : 'click',
			showTitle : false,
			sticky : true,
			arrows : true,
			closePosition : 'title',
			closeText : '<img src="images/xsuite/delete.gif"/>',
			cursor : 'pointer'
		});
	},
	rating : function(selector, score) {
	
		$(selector).raty( {
			start : score,
			hintList : [ 'Male', 'Poco', 'Normale', 'Buono', 'Ottimo' ],
			readOnly : true,
			path : 'images/xsuite/icons/',
			showHalf : true,
			number : 5
		});
	},
	getLabelValue : function(url) {
	
		var responseText = xsuite.Util.ajax(url);
	
		var json = $.parseJSON(responseText);
	
		return json;
	
	},
	ajax : function(url) {
		var xHR = $.ajax( {
			url : url,
			async : false,
			type : 'GET',
			error : function(xhr, ajaxOptions, thrownError) {
				alert("AJAX Error: " + xhr.status);
			}
		});
	
		return xHR.responseText;
	},
	webpreview: function (mediaName, previewUrl, queryString){
		var urlString = "webPreviewPopup.do?medianame="+mediaName+"&url="+previewUrl;
		if(queryString!= '') {
			urlString = urlString +"?"+queryString;
		}
		var titlePopup = "webpreview";
		var param = "width=800,height=600,menubar=no,toolbar=no,resizable=yes,scrollbars=yes,left=10,top=10";
		openPopup(urlString, titlePopup, param);
	}
};

xsuite.combo = {
	populate : function(url, $combo) {
		$.getJSON(url, function(data) {
			var options = '';
			for ( var i = 0; i < data.length; i++) {
				options += '<option value="' + data[i].value + '">'
						+ data[i].label + '</option>';
			}
			$combo.html(options);
		});
	},
	add : function($combo, val, text) {

		var finder = "option:contains(" + text + ")";
		if ($combo.find(finder).size() == 0) {
			$combo.append($('<option></option>').val(val).html(text));
		}
	}
};

/*
 * Gestione delle displaytag in modalità ajax per ordinamento e cambio pagine
 */
xsuite.displaytag = {
	ajax : function(selector) {
		var links = new Array();
		var container = $(selector);
		xsuite.displaytag.addLinks(container.find("table .sortable a"), links);
		xsuite.displaytag.addLinks(container.find(".pagelinks a"), links);
		$.each(links, function() {
			var url = $(this).attr("href");
			xsuite.displaytag.addClickEvent(container, this, url);
			$(this).removeAttr("href");
			$(this).css("cursor", "pointer");
		});
	},
	highlightRows : function(context, params) {
		context.find("table").delegate('td', 'mouseover mouseleave',
				function(e) {
					if (e.type == 'mouseover') {
						$(this).parent().addClass("onMouseOver");
					} else {
						$(this).parent().removeClass("onMouseOver");
					}
				});
	},
	addLinks : function(items, array) {
		$.each(items, function() {
			array.push(this);
		});
	},
	addClickEvent : function(ctx, element, url) {
		$(element).click( function() {
			jQuery.ajax( {
				url : url,
				success : function(data) {
					filteredResponse = $(data).find(this.selector);
					if (filteredResponse.size() == 1) {
						$(this).html(filteredResponse);
					} else {
						$(this).html(data);
					}
					xsuite.displaytag.ajax($(this));
				},
				data : ( {
					"time" : new Date().getTime()
				}),
				context : ctx
			});
		});
	}

};

/*
 * Codice invocato al caricamento del DOM
 */
jQuery( function() {

	jQuery(".datepicker").datepicker( {
		showOn : 'both',
		buttonImage : 'images/calendar.gif',
		buttonImageOnly : true,
		showWeek : true,
		firstDay : 1
	});
	//var browserVersion = navigator.appVersion.toLowerCase();
	//alert('browserVersion ['+browserVersion+']');
	// Creo i bottoni della sezione nord
	// jQuery(".workspace-north .actions a").button();

	// jQuery(".x-button").button();

	jQuery("a#helpOpener").button( {
		icons : {
			primary : 'ui-icon-help'
		}
	});
	jQuery("a#exit").button( {
		icons : {
			primary : 'ui-icon-close'
		}
	});
	jQuery("a#customization").button( {
		icons : {
			primary : 'ui-icon-wrench'
		}
	});
	jQuery("a#rootList").button( {
		icons : {
			primary : 'ui-icon-folder-open'
		}
	});
	jQuery("a#search").button( {
		icons : {
			primary : 'ui-icon-search'
		}
	});

	jQuery(".x-button-print").button( {
		icons : {
			primary : 'ui-icon-print'
		}
	});
});

