// UI JS JavaScript Library
var prefisso_develop = "demo/";

function Call_Flash(swf,width,height,div){
	$('#'+div).flash({
		src: '/'+prefisso_develop+'flashObjects/'+swf,
		width: width,
		height: height,
		expressInstall: true,
		wmode: 'transparent',
		allowfullscreen: 'false',
		allowScriptAccess: 'always',
		version: 9
	});
}

function get_part_from_mydate (date_string,part){
	if(typeof(part) == 'undefined') return '';
	if(typeof(date_string) == 'string') 
		date_string = date_string.split("/");
	//if(typeof(date_string) == 'object'){
//	if(toString.call(date_string) === "[object Array]" ) {
	if(date_string instanceof Array){
		if(date_string.length == 3) 
			return new Number(date_string[part]);
	}
	return "";
}

function get_month_from_mydate(date_string){
	return new Number(get_part_from_mydate(date_string,1) - 1);
}

function get_year_from_mydate(date_string,part){
	return new Number(get_part_from_mydate(date_string,2));
}

function get_day_from_mydate(date_string){
	return new Number(get_part_from_mydate(date_string,0));
}

/* DATEPICKER HELP
//getter
//var minDate = $( ".selector" ).datepicker( "option", "minDate" );
//setter
$( ".selector" ).datepicker( "option", "minDate", new Date(2007, 1 - 1, 1) );
 */
 
	function addDays2Date(id,days){
		var date = $("#"+id).datepicker('getDate');
			if (date) {
				date.setDate(date.getDate() + 1);
				set_attribute(id,'value' , MyDateFormat(date));
			}
	}
//######################################################################
// ritorna true se ha modificato il valore false altrimenti
//######################################################################
function setMinMaxDateOption(id,option,delta,sourceid){

	var delta = (typeof(delta) != 'undefined' )?delta:0;
	var myDate = new Date();

//alert("INIZIO: "+id+" | "+MyDateFormat(myDate));
	if (typeof(sourceid) != 'undefined' ){
		if ((data = get_attribute(sourceid,'value')))
			if(typeof(data) != 'undefined') if(data) myDate.setFullYear(get_year_from_mydate(data), get_month_from_mydate(data), get_day_from_mydate(data));
	}
//alert("PRIMA: "+id+" | "+MyDateFormat(myDate));
	if(delta) myDate.setDate(myDate.getDate()+delta);
//alert("DOP: "+MyDateFormat(myDate));
	actual_date = GetCurrentDateValue(id);
	setDateOption(id,option,myDate);
	if(option == 'minDate'){ // se minDate verifica se il valore attuale era coerente
		if( actual_date < myDate) {		
			setDateOption(id,'DefaultValue',myDate);
			set_attribute(id,'value' , MyDateFormat(myDate));
			return true;
		}
	} else if(option == 'maxDate') { // se maxDate verifica se il valore attuale era coerente
		if( actual_date ) if( actual_date > myDate) {		
			set_attribute(id,'value' , MyDateFormat(myDate));
			return true;
		}
	}
	return false;
//alert(id+': '+get_attribute(id,'value')+' | '+MyDateFormat(myDate) );
//if (typeof(sourceid) != 'undefined' )
//alert(sourceid+': '+get_attribute(sourceid,'value') );
}

function GetCurrentDateValue(id){
	data = get_attribute(id,'value');

	if(typeof(data) != 'undefined') {
		if(data) {
			actual_date = new Date();
			actual_date.setFullYear(get_year_from_mydate(data), get_month_from_mydate(data), get_day_from_mydate(data));
			return actual_date;
		}
	}
	return '';
}

function SetCurrentDateValue(id){
	data = get_attribute(id,'value');
	if(typeof(data) != 'undefined') {
		actual_date = new Date();
		set_attribute(id,'value' , MyDateFormat(actual_date));
	}
}

function MyDateFormat(myDate) {
	month = myDate.getMonth()+1;
	day=myDate.getDate();

	if(day < 10) day = '0'+day;
	if(month < 10) month = '0'+month;

	return myDate.getDate() + "/" + month + "/" + myDate.getFullYear();
}

function setDateOption(id,option,value){
//alert('id: '+id + ' | option: '+option +' | value: '+value);
	var datepicker_ref = $("#".id).datepicker;
	if( datepicker_ref.lenght <= 0) return;

	try {
		$( '#'+id ).datepicker( "option", option, value );
	} catch(ex) {
//console.log('id: '+id + ' | option: '+option +' | value: '+value);
	};
//alert('actual value: ' + $('#'+id).datepicker( "option", option ));
}

function MultiSetAttribute(layers,attribute,value){
	if(typeof(layers) == 'undefined' ) return;
	if (layers.constructor == Array){
		for(i=0;i<layers.length;i++){
			obj = layers[i];
			set_attribute(obj,attribute,value);
		}
	} else {
		return;
	}
}


/* ############################################################
 * Function MultiEnableDisable
	1. layers = array semplice di elementi ID
		value = [opt] true/false
		se passo il parametro value setta tutti i valori a quel value altrimenti esegue switch
	2. layers / object {name:value}
		name = id oggetto, value ='' o true/false
		se value = '' esegue switch altrimenti setta al valore

############################################################*/
function MultiEnableDisable(layers,value){

	if(typeof(layers) == 'undefined' ) return;

	if (layers.constructor == Array){
		var mio_value = (typeof(value) == 'undefined')?'undefined':value;

		for(var i=0;i<layers.length;i++){
			var layerID = layers[i];
			if(layerID == "undefined") continue;
//alert(layerID+': '+get_attribute(layerID,"disabled"));
			if(mio_value == 'undefined'){
				toggle_disabled(layerID);
//alert(layerID+': '+get_attribute(layerID,"disabled")+' value: '+value);
			} else {
				if(mio_value) set_attribute(layerID,'disabled','disabled');
				else $('#'+layerID).removeAttr('disabled');;
			}
		}
	} else {
		for (var name in layers){
			var layerID = name;
			var value = layers[name];
//alert(typeof(layerID));
			if(typeof(value) == 'undefined') {
				toggle_disabled(layerID);
			} else {
				if(mio_value) set_attribute(layerID,'disabled','disabled');
				else $('#'+layerID).removeAttr('disabled');
			}
		}
	}

//	layers = layers.mapFunction(delete_strings, ['label_','riga_']);
//alert(layers);
}
/* ############################################################
 * Function MultiHideShow
	layers = array di elementi ID
	visibility = [opt] display
	1. layers array se passo il parametro visibilità setto tutti i valori a quella visibilita altrimenti eseguo switch
	2. layers object se object {name:value} setto la visibilita al suo valore se nullo eseguo switch
############################################################*/

function MultiHideShow(layers,visibility){
	if(typeof(layers) == 'undefined' ) return;

		//alert(typeof(layers));
		//alert(layers.constructor);
		//alert(layers.constructor == Array);

	if (layers.constructor == Array){
		for(i=0;i<layers.length;i++){
			layerID = layers[i];
			if(typeof(visibility) == 'undefined') {
//alert(layerID);
				$('#'+layerID).toggle();
			} else {
				changeDisplay(layerID,visibility);
			}
		}
	} else {
		for (var name in layers){
			layerID = name;
			visibility = layers[name];
//alert(typeof(layerID));
			if(!visibility) {
			       	$('#'+layerID).toggle();
			} else {
				changeDisplay(layerID,visibility);
			}
		}
	}
	layers = "";
}

function changeDisplay(layerID,display){
	if(display=='none') $('#' + layerID).hide();
	else  $('#' + layerID).show();
}
function resetField(field_id){
	$('#' + field_id).attr('value', '');
}

function resetCheck(name){
	$('#' + name).attr('checked', false);
}
function expandCollapse(layer){
	$('#' + layer).slideToggle('normal');
}

function set_option_val(obj,valore){
//alert(obj+'!'+valore);
	$('#' + obj).val(valore);
}
function set_attribute(obj,attrib,valore){
//alert(obj+'!'+attrib+'!'+valore);
	$('#' + obj).attr( attrib, valore);
//alert(	$('#' + obj).attr( attrib ));
}
function get_attribute(obj,attrib){
//alert(obj+'!'+attrib+'!'+valore);
	return( $('#' + obj).attr( attrib ));
}
function switch_attribute_true_false(obj,attrib){
//alert(obj+'!'+attrib);
	var actual = $('#' + obj).attr(attrib);
	$('#' + obj).attr( attrib, (actual == true)? false : true);
}
function toggle_disabled(obj){
//alert(obj+'!'+attrib);
	if(typeof((value = get_attribute(obj,"disabled"))) != 'undefined') {
		if(value) $('#'+obj).removeAttr('disabled');
		else set_attribute(obj,'disabled','disabled');
	}
}

//enableField
function enableField(obj){
//alert(obj+'!'+attrib);
	if(typeof((value = get_attribute(obj,"disabled"))) != 'undefined') {
		$('#'+obj).removeAttr('disabled');
	}
}

function submitThis(fm){
	document[fm].submit();
}

function openShadowbox( url,title ) {
//alert(url);
	Shadowbox.open({
		content:	 url,
		player:	  "iframe",
		title:		title,
		width:		800 ,
		height:		800
	});

}

function resetFields(field_id_list){
	for(i=0;i<field_id_list.lenght;i++) resetField(field_id_list[i]);
}

// ##################################################
function formSubmit(formID) {
   $("#"+formID).submit();
}

// ##################################################
function destroy_validation( objname ) {
	alert('var sprytextfield' + objname + ' = new Spry.Widget.Utils.destroyWidgets("sprytextfield' + objname+'"');
	eval('var sprytextfield' + objname + ' = new Spry.Widget.Utils.destroyWidgets("sprytextfield' + objname+'")');
	set_attribute('sprytextfield' +objname,'class' ,'');

}

// ##################################################
function initiate_validation( objname ) {
	eval('var sprytextfield' + objname + ' = new Spry.Widget.ValidationTextField("sprytextfield' + objname + '", "'+tipo+'", {isRequired:'+required+'}, {validateOn:["blur"]})');
}


/* ############################################################*/
function fireEvent(element,event){
    if (document.createEventObject){
	    // dispatch for IE
	    var evt = document.createEventObject();
	    return element.fireEvent('on'+event,evt)
    }
    else{
	    // dispatch for firefox + others
	    var evt = document.createEvent("HTMLEvents");
	    evt.initEvent(event, true, true ); // event type,bubbling,cancelable
	    return !element.dispatchEvent(evt);
    }
}


/* ############################################################*/
function checkForm(form){
	for(var i=0; i<form.elements.length; i++) {
		if(fireEvent(form.elements[i],"onblur")) {
			form.elements[i].focus();
		        form.elements[i].select();
			return false;
		}
	}
	return true;			
}

/* ############################################################*/
	function setOnBeforeShowDayFunc( datepickerid ) {
		setDateOption(datepickerid,"beforeShowDay", noSundayNorHolidays );
	}

	function resetOnBeforeShowDayFunc( datepickerid ) {
		setDateOption(datepickerid,"beforeShowDay", null );
	}

/* ############################################################*/
	function addRemoveClass(elementId,classname) {
	$('#' + elementId).toggleClass(classname);
	}

/* ############################################################*/
function showExtraElementIfHidden(id,extra_elem_id){
	if(isHidingMyStuff(id) == true) $(extra_elem_id).toggle();
}

/* ############################################################*/
function isHidingMyStuff(id){
//alert("isHidingMyStuff:"+id);
    var s = $(id);

    s.wrapInner('<div />'); // wrap inner contents
    var hidden = s.height() < s.children('div').height();

    s.children('div').replaceWith( s.children('div').html() ); //unwrap
//alert(hidden);	
    return hidden;
}	
