// Javascript Code
function _isEmpty(value){
	if ( value == null || value == '' ){
		return true;
	}
	return false;
}

function goLink(link, target){
	if ('_self' == target)	{
		document.location.href = link;
	} else {
		window.open(link, target);
	}
}

function showHideArrow(divTextId){
	var divText = $(divTextId);
	if (divText){
		if ('none' == divText.getStyle('display')){
			divText.show();
			$('plusButton').hide();
			$('minusButton').show();
		} else {
			divText.hide();
			$('plusButton').show();
			$('minusButton').hide();
		}
	}
}

/**
 *  Metodi di utility per i form
 *  
 */
FormUtil = {};

FormUtil.resetForm = function (formId){
	var form = $(formId);
	if (form ){	
		form.reset();
	}
	return false;
};

/**
 * Esegue il submit del Form
 * 
 * @param formId id del form per il submit
 * @param updateId id dell'elemento da aggiornare
 */
FormUtil.submitForm = function (formId, updateId){
	var form = $(formId);
	if (form ){		
		if (_isEmpty(updateId)){
			form.submit();			
		} else {
			form.request({
				onComplete : function(transport) {
					$(updateId).update(transport.responseText);
				}				
			});
		}
	}
	return false;
};

/**
 * @param
 * @param
 */
FormUtil.changeTaskSubmitForm = function(parName, parValue, formId, updateId){
	var form = $(formId);
	if (form ){	
		var paramEl = form[parName];
		if(paramEl){
			paramEl.value = parValue;
			return FormUtil.submitForm(formId, updateId);
		}
	}
	return false;
};

/**
 * @param formId id del form
 * @param isReadonly true -> imposta a readonly i field del form
 * @param exclude array di name di element DOM (form) che si vogliono esculdere
 * 			$A(['pippo'], ['pluto']);
 */
FormUtil.readOnlyField = function (formId, isReadonly, exclude){
	var form = $(formId);
	if (form){
		var fields = form.getElements();	
		fields.each(
			function(field){
				if (exclude == null || exclude.indexOf(field.name) < 0 ){					
					if (field.type.startsWith('text') ){
						field.readOnly = isReadonly;
					} else if (field.type.startsWith('select') || field.type.startsWith('checkbox') || field.type.startsWith('radio') ){
						field.disabled = isReadonly;					
					}												
				}
		});
	}	
};

FormUtil.resetValue = function (elementId){
	var e = $(elementId);
	if (e){
		e.value = '';
	}
	return false;
}

/**
 * 
 */
FormUtil.getSubDivisions = function (el, elIdUpdate){
	var countryId = el.value;
	var updateEl = $(elIdUpdate);
	if (countryId > 0 && updateEl){
		BFSRemote.findSubDivisionsByCountryId(countryId, 
			function(subDivisions){
				if (subDivisions != null){
					dwr.util.removeAllOptions(updateEl.id);
					dwr.util.addOptions(updateEl.id, [{label:"---selezione provincia---", value:"0"}], "value", "label");
					dwr.util.addOptions(updateEl.id, subDivisions, "longValue", "label");
				}
			}
		);		
	}
	return false;
};

FormUtil.displayHideElement = function (elId){
	var el = $(elId);
	if (el){
		var style = el.getStyle('display');
		if ('none' == style){
			el.show();
		} else {
			el.hide();
		}
	}
};

// Se idClienteFatturazione è diverso ad -1, 
FormUtil.findClientefornitoreById = function (formId, idClientefornitore, idClienteFatturazione){
	BFSRemote.findClientefornitoreById(idClientefornitore, function(cf){
		if (cf != null){
			$(formId).ragioneSociale.value = cf.ragioneSociale;
			$(formId).partitaIva.value = cf.partitaIva;
			$(formId).codiceFiscale.value = cf.codiceFiscale
			$(formId).email.value = cf.email;
		
			$(formId).invoiceCountryId.value = cf.nazione;
			$(formId).invoiceCitta.value = cf.citta;
			$(formId).invoiceCap.value = cf.cap;
			$(formId).invoiceProvincia.value = cf.provincia;
			$(formId).invoiceIndirizzo.value = cf.indirizzo;
			
			$(formId).isDifferentAddress.checked = cf.isDifferentAddress;
			$(formId).invoiceSendIndirizzo.value = cf.spedIndirizzo;
			$(formId).invoiceSendCap.value = cf.spedCap;
			$(formId).invoiceSendCountryId.value = cf.spedNazione;
			$(formId).invoiceSendCitta.value = cf.spedCitta;
			$(formId).invoiceSendProvincia.value = cf.spedProvincia;
			
			if (cf.isDifferentAddress){
				$('invoiceSend').show();
			} else {
				$('invoiceSend').hide();
			}
			/*
			if($(formId).isDifferentAddress.checked == false) {
				$('invoiceSend').hide();
			} else {
				$('invoiceSend').show();
			} */
			
			$("paId").value = cf.pa;
			showPaProperty();
		}
	});		
	return false;
};

/**
 *  Utility per il download per i file
 */
DownloadUtil = {};

DownloadUtil.getFile = function (el, url){
	url = url + '&id='+el.value;
	document.location.href = url;
};

/*
 * path = urlPath della action per aggiungere l'elemento al carrello.
 * language = lingua ('it'/'en')
 * idArticolo = id dell'articolo da inserire
 * descrizioneArticolo = descrizione dell'articolo
 * redirect = (OPTIONALE) specifica se fare redirect verso la pagina successiva (true) o se rimananere nella pagina corrente (false) (default = true)
 * compraSubito = (OPTIONALE) specifica se sono nel caso di compra subito (default = false) (true/false)
 * width = (OPTIONALE) se specificato apre la popup con quella larghezza
 * height = (OPTIONALE) se specificato apre la popup con quella altezza
 * */
function openPopupCarrello(arrayString, result,path,idArticolo,descrizioneArticolo,language,redirect,compraSubito,width,height) {
	if (result == 'STAND_KO') {
		var msg = arrayString[0];
		var res = confirm(msg + arrayString[1]);
		if(res){
			document.location.href='/'+language+'/private/stand.do?task=standList';
		}
	} else if (result == 'STAND_SUPERFICIE_KO') {
		var msg = arrayString[2]; 
		var res = confirm(msg.replace("[0]", descrizioneArticolo));
		if(res){
			document.location.href='/'+language+'/private/stand.do?task=modifyCurrentStand';
		}
	} else if (result == 'ARTICOLI_OBBLIGATORI_KO') {
		if(compraSubito != undefined && compraSubito){
			alert(arrayString[3].replace("[0]", descrizioneArticolo));
		}else{
			var msg = arrayString[4].replace("[0]", descrizioneArticolo);
			if(redirect != undefined && !redirect){
				alert(msg);
			}else{
				var res = confirm(msg + arrayString[5]);
				if(res){
					document.location.href='/'+language+'/private/articolo.do?task=detail&id='+idArticolo;
				}
			}
		}
	} else if (result == 'ARTICOLO_STAND_DUPLICATO') {
		alert(arrayString[6]);
	} else if (result == 'STAND_ARTICOLO_STAND_PRESENTE') {
		alert(arrayString[7]);
	} else if (result == 'KO') {
		alert(arrayString[8]);
	} else if (result == 'ARTICOLO_PRESENTE_CARRELLO') {
		alert(arrayString[6]);
	} else if (result == 'ARTICOLO_PRESENTE_STAND') {
		alert(arrayString[7]);
	} else if (result == 'STAND_PREALLESTITO_PRESENTE'){
		var msg = arrayString[9].replace("[0]", descrizioneArticolo);
		alert(msg);
	} else if (result == 'ARTICOLO_AV015_OBBLIGATORIO'){
		var msg = arrayString[11].replace("[0]", descrizioneArticolo);
		alert(msg);	
	} else if (result == 'ARTICOLO_FO024_NON_CORRETTO_CARRELLO') {
		alert(arrayString[10]);
	} else if (result ==  'STAND_PREALLESTITO_NON_PRESENTE'){
		var msg = arrayString[12].replace("[0]", descrizioneArticolo);
		alert(msg);
	} else {
		var code = 'ARTICOLO_PULIZIA_PRESENTE_CARRELLO_';
		var pos = result.indexOf(code, 0);
		if (pos >= 0) {
			var msg = arrayString[13].replace("[0]", result.substring(code.length));
			alert(msg);
		} else {
			var code1 = 'ARTICOLO_PULIZIA_PRESENTE_STAND_';
			var pos1 = result.indexOf(code1, 0);
			if (pos1 >= 0) {
				var msg = arrayString[14].replace("[0]", result.substring(code.length));
				alert(msg);
			} else {
				var w='720px';
				var h='820px';
				if(width){
					w=width;	
				}
				if(height){
					h=height;	
				}
				openShadow('iframe', '', path, w, h );
			}
		}
	}
	
	return false;
	
}



// Disabilita l'invio della form quando si preme invio sul campo selezionato
function disableEnterKey(e)
{
     var key;
     if(window.event)
          key = window.event.keyCode;     //IE
     else
          key = e.which;     //firefox

     if(key == 13)
          return false;
     else
          return true;
}

// Submit della form quando si preme invio sul campo selezionato
function enableSubmitOnEnterKey(e, formId){
    var key;
    if(window.event)
         key = window.event.keyCode;     //IE
    else
         key = e.which;     //firefox

    if(key == 13)
         return FormUtil.submitForm(formId, null);
    else
         return true;
}

// restituisce true se l'oggetto passato è un oggetto JSON
function canJSON(value) {
    try {
        var json = JSON.stringify(value);
        return json.isJSON();
    } catch (ex) {
        return false;
    }
}

