var _lastRoll	= null;

function goOn(act, action){
	document.forms.form1.act.value	= act;
	document.forms.form1.action	= action;
	document.forms.form1.submit();
}

function GoToURL( url ){
	window.location.href = url;
}

function RollInTopButton( buttonID ){
	SetTopButtonStyle( buttonID, "top_", "ToolbarCellLeftHI", "ToolbarCellRightHI", "ToolbarCellDividerHI" );
	_lastRoll = buttonID
}

function RollOutTopButton( ){
	if( _lastRoll == null )
		return;
		
	SetTopButtonStyle( _lastRoll, "top_", "ToolbarCellLeft", "ToolbarCellRight", "ToolbarCellDivider" );

}

function RollInButton( buttonID ){
	SetButtonStyle( buttonID, "side_", "ToolbarRowLeftHI", "ToolbarRowRightHI" );
	_lastRoll = buttonID
}

function RollOutButton( ){
	if( _lastRoll == null )
		return;
		
	SetButtonStyle( _lastRoll, "side_", "ToolbarRowLeft", "ToolbarRowRight" );

}

function SetTopButtonStyle( buttonID, prefix, leftStyle, rightStyle, dividerStyle ){
	left_cell = document.getElementById( "cell_left_" + prefix + buttonID );
	right_cell = document.getElementById( "cell_right_" + prefix + buttonID );
	divider_cell = document.getElementById( "cell_divider_" + prefix + buttonID );
	left_cell.className = leftStyle;
	right_cell.className = rightStyle;
	divider_cell.className = dividerStyle;
}

function SetButtonStyle( buttonID, prefix, leftStyle, rightStyle ){
	left_cell = document.getElementById( "cell_left_" + prefix + buttonID );
	right_cell = document.getElementById( "cell_right_" + prefix + buttonID );
	left_cell.className = leftStyle;
	right_cell.className = rightStyle;
}

function showHide(btn, tbl){
	if (btn.src.substring(btn.src.length - 8, btn.src.length) == 'plus.gif'){
		btn.src = 'img/minus.gif'
		tbl.style.display = 'block';
	}
	else {
		btn.src = 'img/plus.gif'
		tbl.style.display = 'none';
	}
}

function isEmailAddr(email)
{
  var result = false;
  var theStr = new String(email);
  var index = theStr.indexOf("@");
  if (index > 0)
  {
    var pindex = theStr.indexOf(".",index);
    if ((pindex > index+1) && (theStr.length > pindex+1))
	result = true;
  }
  return result;
}

function validRequired(formField,fieldLabel)
{
	var result = true;
	if (formField.value == "")
	{
		alert('Inserire un valore nel campo "' + fieldLabel +'".');
		result = false;
	}
	
	return result;
}

function validRadioRequired(formField,fieldLabel)
{
	var result = false;
	var i = 0;
	
	while (formField[i]){
		if (formField[i].checked){
			result = true;
		}
		i++;
	}
	if (!result){
		alert('La risposta alla "' + fieldLabel +'" è obbligatoria.');
	}
	return result;
}

function allDigits(str)
{
	return inValidCharSet(str,"0123456789");
}

function allSitePrefixChars(str)
{
	return inValidCharSet(str,"0123456789ABCDEFGHIJKLMNOPQRSTUVWZabcdefghijklmnopqrstuvz_");
}

function inValidCharSet(str,charset)
{
	var result = true;

	// Note: doesn't use regular expressions to avoid early Mac browser bugs	
	for (var i=0;i<str.length;i++)
		if (charset.indexOf(str.substr(i,1))<0)
		{
			result = false;
			break;
		}
	
	return result;
}

function validEmail(formField,fieldLabel,required)
{
	var result = true;
	
	if (required && !validRequired(formField,fieldLabel))
		result = false;
	if (formField.value != "")
	{
		if (result && ((formField.value.length < 3) || !isEmailAddr(formField.value)) )
		{
			alert("Inserire un indirizzo di email valido.");
			formField.focus();
			result = false;
		}
	}
   
  return result;

}

function validNum(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
 	if (result)
 	{
		if (formField.value != "")
		{
	 		if (!allDigits(formField.value))
 			{
 				alert('Inserire un valore numerico nel campo "' + fieldLabel +'".');
				formField.focus();		
				result = false;
			}
		}
	} 
	
	return result;
}


function validInt(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
 	if (result)
 	{
		if (formField.value != "")
		{
	 		var num = parseInt(formField.value,10);
 			if (isNaN(num))
 			{
 				alert('Inserire un valore numerico nel campo "' + fieldLabel +'".');
				formField.focus();		
				result = false;
			}
		}
	} 
	
	return result;
}


function validDate(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
 	if (result)
 	{
		if (formField.value != "")
		{
	 		var elems = formField.value.split("/");
 
 			result = (elems.length == 3); // should be three components
 		
 			if (result)
 			{
 				result = ((elems[0].length == 2) && (elems[1].length == 2) && (elems[2].length == 4)) //should be 2char+2char+4char
 				
 				if (result)
 				{
	  				var day = parseInt(elems[0],10);
 					var month = parseInt(elems[1],10);
 					var year = parseInt(elems[2],10);
					result = 	allDigits(elems[0]) && (day > 0) && (day < 32) &&
							allDigits(elems[1]) && (month > 0) && (month < 13) &&
							allDigits(elems[2]) && (elems[2].length == 4);
				}
	 		}

  			if (!result)
	 		{
 				alert('Inserire una data valida nel formato GG/MM/AAAA nel campo "' + fieldLabel +'".');
				formField.focus();		
			}
		}
	} 
	
	return result;
}

function validTime(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
 	if (result)
 	{
		if (formField.value != "")
		{
	 		var elems = formField.value.split(":");
 
 			result = (elems.length == 2); // should be two components
 		
 			if (result)
 			{
	  			var hours = parseInt(elems[0],10);
 				var minutes = parseInt(elems[1],10);
				result = 	allDigits(elems[0]) && (elems[0].length == 2) && (hours >= 0) && (hours < 25) &&
						allDigits(elems[1]) && (elems[1].length == 2) && (minutes >= 0) && (minutes < 60)
	 		}

  			if (!result)
	 		{
 				alert('Inserire un orario nel formato HH:MM nel campo "' + fieldLabel +'".');
				formField.focus();		
			}
		}
	} 
	
	return result;
}

function validYear(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
 	if (result)
 	{
		if (formField.value != "")
		{
 			if (result)
 			{
 				var year = parseInt(formField.value,10);
				result = allDigits(formField.value) && (formField.value.length == 4);
	 		}

  			if (!result)
	 		{
 				alert('Inserire un anno nel formato AAAA nel campo "' + fieldLabel +'".');
				formField.focus();		
			}
		}
	} 
	
	return result;
}

function validTelephone(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
 	if (result)
 	{
		if (formField.value != "")
		{
	 		var elems = formField.value.split("-");
 
 			result = (elems.length == 2); // should be two components
 		
	 		if (result)
 			{
  				var prefix = parseInt(elems[0],10);
 				var number = parseInt(elems[1],10);
				result = 	allDigits(elems[0]) && ((elems[0].length > 1) && (elems[0].length < 5)) &&
						allDigits(elems[1]) && ((elems[1].length > 2) && (elems[1].length < 15));
 			}
 		
	  		if (!result)
 			{
 				alert('Inserire un numero nel formato "prefisso-numero" nel campo "' + fieldLabel +'".');
				formField.focus();		
			}
		}
	} 
	
	return result;
}

function validPassword(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
 	if (result)
 	{
		if (formField.value != "")
		{
	 		if (result)
 			{
				result = ((formField.value.length > 5) && (formField.value.length < 21));
 			}
 		
	  		if (!result)
 			{
 				alert('Inserire una ' + fieldLabel +' di lunghezza compresa fra i 6 ed i 20 caratteri.');
				formField.focus();		
			}
		}
	} 
	
	return result;
}

function validMaxLength(formField,fieldLabel, maxlength)
{
	var result = true;

	if (formField.value != "")
	{
		result = (formField.value.length <= maxlength);
 	
	  	if (!result)
 		{
 			alert('Il campo ' + fieldLabel +' ammette un massimo di ' + maxlength + ' caratteri.');
			formField.focus();		
		}
	}
	return result;
}

function runtimeValidMaxLength(formField, fieldLabel, maxlength) {
	if (formField.value.length > maxlength) {
		alert ("ATTENZIONE: il campo '" + fieldLabel + "' ammette un massimo di " + maxlength + " caratteri.");
		formField.value = formField.value.substr(0, maxlength);
	}
	return true;
}
									
function validPrice(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
 	if (result)
 	{
		if (formField.value != "")
		{
	 		var elems = formField.value.split(",");
			var pre_point
			var post_point
			 
			if (elems.length == 1){
 				result = true; // should be 1 or 2 components
 				pre_point = elems[0];
 				post_point = '0';
 			}
			if (elems.length == 2){
 				result = true; // should be 1 or 2 components
 				pre_point = elems[0];
 				post_point = elems[1];
 			}
 			if (result)
 			{
 				result = ((post_point.length == 1)||(post_point.length == 2)) //should be 1 or 2 char after decimal point
 				if (result)
 				{
					result = 	allDigits(pre_point) && allDigits(post_point);
				}
	 		}

  			if (!result)
	 		{
 				alert('Inserire un prezzo nel formato 999,99 nel campo "' + fieldLabel +'".');
				formField.focus();		
			}
		}
	} 
	
	return result;
}

function validSitePrefix(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
 	if (result)
 	{
		if (formField.value != "")
		{
	 		if (!allSitePrefixChars(formField.value))
 			{
 				alert('Inserire un valore nel campo "' + fieldLabel +'" utilizzando caratteri a-z A-Z 0-9 e _.');
				formField.focus();		
				result = false;
			}
		}
	} 
	
	return result;
}

