﻿function controller_checkDate(element, hidden_element, signal, focus, cancel) 
{
	if (trimString(element.value) == "") return true;
	
	if ((element.value.length < 6) || (element.value.length > 10))
	{
		if (signal) alert("Attenzione! " + element.value + " non è una data valida.");
		if (focus)  element.focus;
		if (cancel) ripristina(element, hidden_element);
		return false;
	}
		
	dateParts = element.value.split("/")
	if	(dateParts.length != 3)
	{
		if (signal) alert("Attenzione! " + element.value + " non è una data valida.");
		if (focus)  element.focus;
		if (cancel) ripristina(element, hidden_element);	
		return false;
	}

	if ((dateParts[0].length < 1)  || (dateParts[0].length > 2) || (dateParts[1].length < 1) || (dateParts[1].length > 2) || (dateParts[2].length < 2) || (dateParts[2].length > 4) || (dateParts[2].length == 3))
	{
		if (signal) alert("Attenzione! " + element.value + " non è una data valida.");
		if (focus)  element.focus;
		if (cancel) ripristina(element, hidden_element);	
		return false;
	}
		
	if ((OnlyNum(dateParts[0])!=dateParts[0]) || (OnlyNum(dateParts[1])!=dateParts[1]) || (OnlyNum(dateParts[2])!=dateParts[2])) 
	{
		if (signal) alert("Attenzione! " + element.value + " non è una data valida.");
		if (focus)  element.focus;
		if (cancel) ripristina(element, hidden_element);	
		return false;
	}
		
	s = new Date(dateParts[2],dateParts[1]-1,dateParts[0])
	strMonth = s.getMonth();
	s = null;

	if ((dateParts[0]>=1 && dateParts[0]<=31) && (dateParts[1]>=1 && dateParts[1]<=12) && ((dateParts[2]>=1 && dateParts[2]<=99)||(dateParts[2]>=1900 && dateParts[2]<=2099)) && (strMonth!=dateParts[1]) )
	{
	
		if (dateParts[0].length == 1) dateParts[0] = "0" + dateParts[0]
		if (dateParts[1].length == 1) dateParts[1] = "0" + dateParts[1]
		
		if (dateParts[2].length == 2)
		{
			if (dateParts[2] > 50)
			{
				dateParts[2] = "19" + dateParts[2];
			}
			else
			{
				dateParts[2] = "20" + dateParts[2];
			}
		}
		element.value = dateParts[0] + "/" + dateParts[1] + "/" + dateParts[2];
		return true;
	}
	else
	{
		if (signal) alert("Attenzione! " + element.value + " non è una data valida.");
		if (focus)  element.focus;
		if (cancel) ripristina(element, hidden_element);	
		return false;
	}

}

function controller_checkLength(element, hidden_element, length, signal, focus, cancel)
{
	if (trimString(element.value) == "") return true;
	if (element.value.length == length) return true;
	
	if (element.value.length < length)	
	{
		if (signal) alert("Attenzione! " + element.value + " deve essere di " + length + " caratteri.");
		if (focus)  element.focus;
		if (cancel) ripristina(element, hidden_element);	
		return false;
	}
	else
	{
		if (signal) alert("Attenzione! " + element.value + " supera " + length + " caratteri.");
		if (focus)  element.focus;
		if (cancel) ripristina(element, hidden_element);	
		return false;
	}
}

function controller_checkInt(element, hidden_element, signal, focus, cancel)
{
	if (trimString(element.value) == "") return true;
	
	if(OnlyNum(element.value) != element.value)
	{
		if (signal) alert("Attenzione! " + element.value + " non è un numero valido.");
		if (focus)  element.focus;
		if (cancel) ripristina(element, hidden_element);	
		return false;
	}
	
	if(parseInt(element.value,10) != element.value)
	{
		if (signal) alert("Attenzione! " + element.value + " non è un numero intero valido.");
		if (focus)  element.focus;
		if (cancel) ripristina(element, hidden_element);	
		return false;
	}
	return true;
}

function controller_checkFloat(element, hidden_element, signal, focus, cancel)
{
	if (trimString(element.value) == "") return true;
	element.value = element.value.replace(",",".");
		
	floatParts = element.value.split(".");
	if (floatParts.length > 2)
	{
		if (signal) alert("Attenzione! " + element.value + " non e' un valore valido.");
		if (focus)  element.focus;
		if (cancel) ripristina (element, hidden_element);
		return false;
	}
	else if (floatParts.length == 1)
	{
		floatParts.length = 2;	
		floatParts[1] = "0";
	}
	
	if ((floatParts[0].length) + (floatParts[1].length) > 28)
	{
		if (signal) alert("Attenzione! " + element.value + " non e' un valore valido.");
		if (focus)  element.focus;
		if (cancel) ripristina (element, hidden_element);
		return false;
	}
	if ( (OnlyNum(floatParts[0])!=floatParts[0]) || (OnlyNum(floatParts[1])!=floatParts[1]) )
	{
		if (signal) alert("Attenzione! " + element.value + " non e' un valore valido.");
		if (focus)  element.focus;
		if (cancel) ripristina (element, hidden_element);
		return false;
	}
	return true;
}

function controller_checkEuro(element, hidden_element, signal, focus, cancel)
{
	if (trimString(element.value) == "") return true;
	element.value = element.value.replace(",",".");
		
	floatParts = element.value.split(".");
	if (floatParts.length > 2)
	{
		if (signal) alert("Attenzione! " + element.value + " non e' un valore valido.");
		if (focus)  element.focus;
		if (cancel) ripristina (element, hidden_element);
		return false;
	}
	else if (floatParts.length == 1)
	{
		floatParts.length = 2;	
		floatParts[1] = "0";
	}
	
	if ((floatParts[0].length) + (floatParts[1].length) > 10)
	{
		if (signal) alert("Attenzione! " + element.value + " non e' un valore valido.");
		if (focus)  element.focus;
		if (cancel) ripristina (element, hidden_element);
		return false;
	}
	if ( (OnlyNum(floatParts[0])!=floatParts[0]) || (OnlyNum(floatParts[1])!=floatParts[1]) )
	{
		if (signal) alert("Attenzione! " + element.value + " non e' un valore valido.");
		if (focus)  element.focus;
		if (cancel) ripristina (element, hidden_element);
		return false;
	}
	
	var result=Math.round(element.value * 100)/100;
	result= "" + result;
	result = result.replace(",",".");
	
	if(result.indexOf(".")==-1) result= "" + result + ".00";
	
	element.value = result;
	
	return true;
}

function controller_checkMail(elementValue)
{
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (filter.test(elementValue)) return true;
	else return false;
}

function controller_checkTelNumber(elementValue)
{
	var filter  = /^(\+?[0-9]*\-?\ ?\/?[0-9]*)$/;
	if (filter.test(elementValue)) return true;
	else return false;
}

function ripristina(campo, campo_nascosto) 
{
	if (insertTableState == "INSERT") 
		campo.value = "";
	else
		campo.value = campo_nascosto.value;
}


function compDate(data1,data2)
{
	//return value
	// 0 se data1 > data2
	// 1 se data2 > data1
	// -1 se data2=data1
	var dateParts1 = new Array()
	var dateParts2 = new Array()

	dateParts1 = data1.split("/");
	dateParts2 = data2.split("/");
	
	if (dateParts1[2] > dateParts2[2] )
		return  0;
	else if (dateParts1[2] < dateParts2[2] )
		return 1;
	else 
	{
		if (dateParts1[1] > dateParts2[1] )
			return  0;
		else if (dateParts1[1] < dateParts2[1] )
			return 1;
		else 
		{
			if (dateParts1[0] > dateParts2[0] )
				return  0;
			else if (dateParts1[0] < dateParts2[0] )
				return 1;
		}
	}
	return -1;
		
}

function OnlyNum(strToCheck) 
{
	var strTmp = strToCheck;
	var re;
	
	re = /[A-Za-z]|\W/g;
	
	return strTmp.replace(re, "");
}

 function trimString(stringToTrim) 
 {
     var ichar, icount;
     var strValue = stringToTrim;
     ichar = strValue.length - 1;
     icount = -1;
     while (strValue.charAt(ichar)==' ' && ichar > icount)
         --ichar;
     if (ichar!=(strValue.length-1))
         strValue = strValue.slice(0,ichar+1);
     ichar = 0;
     icount = strValue.length - 1;
     while (strValue.charAt(ichar)==' ' && ichar < icount)
         ++ichar;
     if (ichar!=0)
         strValue = strValue.slice(ichar,strValue.length);
     return strValue;
 }
 
