/**
 * @author edu
 */

/**
 * fa el submit d'un formulari
 * @param {Object} aForm
 */
function formSubmit( aForm ) {
	if (!verifyMandatoryFields(aForm)) {
		openAlert( str_MANDATORY_FIELDS );
	}
	else {
		el = document.getElementById(aForm);	
		if (el != null) {
			el.submit();
		}
		else {
			els = document.getElementsByTagName('form');
			for (i = 0; i < els.length; i++) {
				if (els[i].name == aForm) 
					els[i].submit();
			}
		}
	}
}

/**
 * Envia un formulari d'un diāleg via POST-AJAX
 * @param {String} aForm Nom o ID del formulari
 * @param {String} anURL URL on fer el POST
 */
function formSubmitAjax( aForm, anURL ) {	
	frm = document.getElementById(aForm);
	if (frm == null) {
		els = document.getElementsByTagName('form');
		for (i=0; i<els.length; i++) {
			if (els[i].name==aForm) {
				frm = els[i];
				break;
			}
		}
	}
 
    if (frm != null) {
		if ((typeof(anURL) == 'undefined') || (anURL == '')) {
			anURL = frm.action;
		}
		YAHOO.util.Connect.setForm(frm,true);
		var callback = {
			success: function(o) {
				if (o.responseText.indexOf('<!-- RELOAD -->') > -1) {
					window.location.href = window.location.href;
				}
				else {
					if (o.responseText.indexOf('<!-- AUTOHIDE -->') > -1) {
						closeDialog();
					} else {
						document.getElementById('divJSDialogContent').innerHTML = o.responseText;
					}
				}
			},
			upload: function(o) {
				this.success(o);
			}
		}
		var cObj = YAHOO.util.Connect.asyncRequest('POST', anURL, callback );
	}
}

/**
 * Comproba el camp obligatori o no
 * @param {Object} element
 */
function checkMandatory( element ) {
	if( element.value=='' ) {
		//cal omplir el camp (es marca)
		element.className = "InputTextMandatory";
	} else {
		//Ja hi ha algun valor
		if(element.className!="InputText") element.className = "InputText";
	}
}

function checkMandatorySelect(element) {
	if( element.options[element.selectedIndex].value=='' ) {
		//cal omplir el camp (es marca)
		element.className = "InputTextMandatory";
	} else {
		//Ja hi ha algun valor
		if(element.className!="InputText") element.className = "InputText";
	}
}

/**
 * Fa una comprobaciķ inicial dels camps obligatoris
 */
function checkMandatoryStartup() {
	els = document.getElementsByTagName('input');
	for(i=0;i<els.length;i++) {
		if(els[i].className.indexOf("InputTextMandatory") > -1) {
			checkMandatory(els[i]);
			els[i].onkeyup = function() { checkMandatory(this); };
		}
	}
	
	els = document.getElementsByTagName('textarea');
	for(i=0;i<els.length;i++) {
		if(els[i].className.indexOf("InputTextMandatory") > -1) {
			checkMandatory(els[i]);
			els[i].onkeyup = function() { checkMandatory(this); };
		}
	}
	
	els = document.getElementsByTagName('select');
	for(i=0;i<els.length;i++) {
		if(els[i].className.indexOf("InputTextMandatory") > -1) {
			checkMandatorySelect(els[i]);
			els[i].onchange = function() { checkMandatorySelect(this); };
		}
	}
}

/**
 * Verifica els camps marcats com a obligatoris
 */
function verifyMandatoryField(field) {
	return field.value!='';	
}

function verifyMandatoryFieldSelect(field) {
	return field.options[field.selectedIndex].value!='';	
}

function verifyMandatoryFields(form) {
	if (form=='') {
		frm = document;		
	} else {
		frm = document.getElementById(form);
		if(frm==null) {
			els = document.getElementsByTagName('form');
			for (i=0; i<els.length; i++) {
				if (els[i].name == form) {
					frm = els[i];
					break;
				}
			}
		}
	}
	
	els = frm.getElementsByTagName('input');
	for(i=0;i<els.length;i++) {
		if(els[i].className.indexOf("InputTextMandatory") > -1) {
			if( !verifyMandatoryField(els[i]) ) return false;
		}
	}
	
	els = frm.getElementsByTagName('textarea');
	for(i=0;i<els.length;i++) {
		if(els[i].className.indexOf("InputTextMandatory") > -1) {
			if( !verifyMandatoryField(els[i]) ) return false;
		}
	}
	
	els = frm.getElementsByTagName('select');
	for(i=0;i<els.length;i++) {
		if(els[i].className.indexOf("InputTextMandatory") > -1) {
			if( !verifyMandatoryFieldSelects(els[i]) ) return false;
		}
	}
	
	return true;
}
