var submitStatus = false;

function sendFormModule(formId, returnType) {
	if (!submitStatus) {
		createLoadingPage();
		submitStatus = true;
		$("#"+formId+" a[rel='submit, submit2']").hide();
		$("#"+formId+" a[rel='submit, submit2']").parent().append("<strong rel='waitModuleSending' class='info'>Attendi</strong>");
		var objFormError = false;
		var objForm = $("#"+formId);
		var objInputArray = $("#"+formId+" :input[rel*='|']");
		var objInput;
		var objInputRel = "";
		var objInputName = "";
		var objInputValue = "";
		var objInputType = "";
		var objInputCheck;
		var objInputCompulsory;
		var objImgError = "<img rel='status' width='20' height='20' hspace='5' vspace='0' border='0' align='absmiddle' src='/'>";
		var objImgOk = $("");
		var minChecked;
		var checkboxCount;
		for (var i=0; i<objInputArray.size(); i++) {
			minChecked = 1;
			objInput = $(objInputArray).get(i);
			sendForm_activeError(false, $(objInput));
			$(objInput).attr("value", $.trim($(objInput).val()));
			objInputRel = $(objInput).attr("rel");
			objInputName = $(objInput).attr("name");
			objInputValue = $(objInput).attr("value");
			if ($.isNumeric(objInputRel.substring(objInputRel.length, objInputRel.length-1))) {
				if (objInputRel.indexOf("Check(") > -1) {
					objInputCheck = objInputRel.substring(objInputRel.indexOf("Check(")+6, objInputRel.indexOf(")"));
					objInputType = objInputRel.substring(0, objInputRel.indexOf("Check("));
				} else {
					objInputCheck = null;
					objInputType = objInputRel.substring(0, objInputRel.indexOf("|"));
				}
				if (objInputRel.substring(objInputRel.length-2, objInputRel.length) == "|1") {
					objInputCompulsory = true;
				} else {
					objInputCompulsory = false;
				}
				if ((objInputCompulsory) || (objInputValue != "")) {
					if (objInputType.indexOf("checkbox(") > -1) {
						minChecked = parseInt(objInputType.substring(objInputType.indexOf("(")+1, objInputType.length-1));
						objInputType = "checkbox";
					}
					switch (objInputType) {
						case "text":
							if (objInputValue == "") {
								objFormError = sendForm_activeError(true, $(objInput));
							}
							break;
						case "zip":
							if (!CheckRegExpression(objInputValue, /^(\d{5})$/)) {
								objFormError = sendForm_activeError(true, $(objInput));
							}
							break;
						case "phone":
							$(objInput).attr("value", objInputValue.replace(/\s/g, ""));
							objInputValue = $(objInput).attr("value");
							if (!CheckRegExpression(objInputValue, /^([0-9\+]{1,})$/)) {
								objFormError = sendForm_activeError(true, $(objInput));
							}
							break;
						case "vat":
							objInputValue = objInputValue.toUpperCase();
							$(objInput).attr("value", objInputValue);
							if (!CheckRegExpression(objInputValue, /^(\d{11})$/)) {
								objFormError = sendForm_activeError(true, $(objInput));
							}
							break;
						case "radio":
							radioCheck = false;
							radioCheckCount = 0;
							$.each($("input[type='radio'][name='"+objInputName+"']"), function(){
								if (!radioCheck) {
									if ($(this).attr("rel").substring($(this).attr("rel").length-2, $(this).attr("rel").length) == "|1") {
										if ($(this).is(":checked")) {
											radioCheck = true;
											radioCheckCount++;
										}
									}
								}
							});
							i += ($("#"+formId+" :input[type='radio'][name='"+objInputName+"']").size()-1);
							if ((!radioCheck) || (radioCheckCount == 0)) {
								objFormError = sendForm_activeError(true, $(objInput));
							}
							break;
						case "checkbox":
							checkboxCount = $("#"+formId+" :input[type='checkbox'][name='"+objInputName+"']").size();
							minChecked = (minChecked > checkboxCount) ? checkboxCount : minChecked;
							minChecked = (minChecked <= 0) ? 1 : minChecked;
							if (($("#"+formId+" :input[type='checkbox'][name='"+objInputName+"']:checked").size() < minChecked) && (objInputCompulsory)) {
								objFormError = sendForm_activeError(true, $(objInput));
							}
							i += (checkboxCount-1);
							break;
						case "select":
							if ($(objInput).children("option[value!='']:selected").size() == 0) {
								objFormError = sendForm_activeError(true, $(objInput));
							}
							break;
						case "dec":
						case "decimal":
							try {
								if ($.trim(objInputValue) != "") {
									objInputValue = setCurrencyFormat(objInputValue, false, false);
									$(objInput).attr("value", objInputValue);
								}
							} catch(error) {}
							if (!CheckRegExpression(objInputValue, /^([0-9\.\,]{1,})$/)) {
								objFormError = sendForm_activeError(true, $(objInput));
							}
							break;
						case "int":
						case "integer":
							objInputValue = objInputValue.toString().replace("-", "");
							if (!CheckRegExpression(objInputValue, /^(\d{1,})$/)) {
								objFormError = sendForm_activeError(true, $(objInput));
							}
							break;
						case "date":
							if (!checkModuleDate(objInputValue, "date", $(objInput), true)) {
								objFormError = sendForm_activeError(true, $(objInput));
							}
							break;
						case "datetime":
							break;
						case "fc":
						case "fiscalcode":
							objInputValue = objInputValue.toUpperCase();
							$(objInput).attr("value", objInputValue);
							if (!CheckRegExpression(objInputValue, /^([A-Z0-9]{16})$/)) {
								objFormError = sendForm_activeError(true, $(objInput));
							}
							break;
						case "email":
							if (!CheckRegExpression(objInputValue, /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})$/)) {
								objFormError = sendForm_activeError(true, $(objInput));
							}
							break;
						case "spam":
							objInputValue = objInputValue.toUpperCase();
							$(objInput).attr("value", objInputValue);
							if ((objInputValue != $("#sph").val()) || (!CheckRegExpression(objInputValue, /^[A-Z0-9]{6,}$/))) {
								objFormError = sendForm_activeError(true, $(objInput));
							}
							break;
						case "password":
						case "pwd":
						case "pwdmod":
							if (!CheckRegExpression(objInputValue, /^[a-zA-Z0-9\!\-\_\#\@]{6,}$/)) {
								objFormError = sendForm_activeError(true, $(objInput));
							}
							break;
						case "check":
							if (objInputValue != $("input[name='"+objInputName.replace("Check", "")+"']").val()) {
								objFormError = sendForm_activeError(true, $(objInput));
							}
							break;
						case "http":
							if (objInputValue == "http://") {
								objFormError = sendForm_activeError(true, $(objInput));
							} else if (objInputValue.substring(0, 7) != "http://") {
								objFormError = sendForm_activeError(true, $(objInput));
							}
							break;
					}

				}

			}
		}


		if (objFormError) {
			$(this).callError(172);
			submitStatus = false;
			$("#"+formId+" a[rel='submit, submit2']").parent().children("strong[rel='waitModuleSending']").remove();
			$("#"+formId+" a[rel='submit, submit2']").show();
		} else if (objForm.attr("rel") && objForm.attr("rel") == "ajax") {
			$.ajax({
				cache: false
				, async: false
				, dataType: "text"
				, contentType: "application/x-www-form-urlencoded"
				, type: objForm.attr("method")
				, url: objForm.attr("action")
				, data: objForm.formElementsEscapeString()
				, success: function(returnValue){
					if (returnValue.substring(0, 1) == "?") {
						location.href = returnValue;
					} else {
						$(this).callError(returnValue);
						$("#"+formId+" a[rel='submit, submit2']").parent().children("strong[rel='waitModuleSending']").remove();
						$("#"+formId+" a[rel='submit, submit2']").show();
					}
					submitStatus = false;
				}
				, error: function(errorObject, errorNumber, errorString){
					$(this).callError(errorString);
					$("#"+formId+" a[rel='submit, submit2']").parent().children("strong[rel='waitModuleSending']").remove();
					$("#"+formId+" a[rel='submit, submit2']").show();
					submitStatus = false;
				}
			});
		} else {
			if (returnType == 0) {
				submitStatus = false;
				return (objFormError) ? false : true;
			} else {
				objForm.submit();
			}
		}

	}
	return false;
}







function sendForm_activeError(active, obj) {
	obj = obj.parents("td:eq(0), div:eq(0)").prev().children("strong");
	if (active) {
		if (obj.css("color") != "#ff0000") {
			obj.attr("color", obj.css("color"));
		}
		obj.css("color", "#ff0000");
	} else {
		obj.css("color", obj.attr("color"));
	}
	return active;
}


function checkModuleDate(dateVal, dateType, objInput, objInputModify) {
	if (!CheckRegExpression(dateVal, /^(\d{1,})+(\-|\/)+(\d{1,})+(\-|\/)+(\d{4})$/)) {
		return false;
	}
	dateVal = dateVal.split("/");
	var dateDay = String(dateVal[0]);
	var dateMonth = String(dateVal[1]);
	var dateYear = String(dateVal[2]);
	var dateToday = new Date();
	if (dateDay.charAt(0) == "0") {dateDay = parseInt(dateDay.replace("0", ""));}
	if (dateMonth.charAt(0) == "0") {dateMonth = parseInt(dateMonth.replace("0", ""));}
	if (	(((dateMonth == 4) || (dateMonth == 9) || (dateMonth == 9) || (dateMonth == 11)) && (dateDay > 30)) ||
			((dateMonth == 2) && (dateDay > 29)) ||
			((dateMonth == 2) && (dateDay > 28) && ((dateYear % 4) != 0)) ||
			(dateDay < 1) ||
			(dateDay > 31) ||
			(dateMonth < 1) ||
			(dateMonth > 12)

/*
			|| (dateYear > dateToday.getFullYear()) ||
			((dateMonth > dateToday.getMonth()+1) && (dateYear >= dateToday.getFullYear())) ||
			((dateDay > dateToday.getDate()) && (dateMonth >= dateToday.getMonth()+1) && (dateYear >= dateToday.getFullYear()))
*/
		) {return false;}
	if (String(dateDay).length < 2) {
		dateDay = String("0" + dateDay);
	}
	if (String(dateMonth).length < 2) {
		dateMonth = String("0" + dateMonth);
	}
	if (objInputModify) {
		objInput.attr("value", value = dateDay + "/" + dateMonth + "/" + dateYear);
	}
	return true;
}














function sendAjax(sender, sendingUrl, writeDownReturnId, inputId, loading) {
	var params = "";

	if (loading == 1) {
		createLoadingPage();
	}

	if ((inputId != null) && (inputId != "")) {
		inputId = inputId.replace(/\s/g, "").split(",");
		for (var i=0; i<inputId.length; i++) {
			if ((i > 0) && (params != "") && (inputId[i] != "")) {
				params += "&";
			}
			params += $("#"+inputId[i]).attr("name")+"="+escape($("#"+inputId[i]).attr("value"));
		}
	}
	if (sendingUrl.length == 0) {
		alert("destination url error");
		return false;
  	}

	$.ajax({
		cache: false
		, async: false
		, dataType: "text"
		, contentType: "application/x-www-form-urlencoded"
		, type: sender
		, url: sendingUrl
		, data: params
		, success: function(returnValue){
			$("#"+writeDownReturnId).html(returnValue);
			reloadEventLoad();
		}
		, error: function(){
			p = null;
		}
	});
	return false;
}
