
/**
 * Displays an error message if an element of a form hasn't been completed and
 * should be
 *
 * @param   object   the form
 * @param   string   the name of the form field to put the focus on
 *
 * @return  boolean  whether the form field is empty or not
 */
function emptyFormElements(theForm, theFieldName)
{
    var isEmpty  = 1;
    var theField = theForm.elements[theFieldName];
    // Whether the replace function (js1.2) is supported or not
    var isRegExp = (typeof(theField.value.replace) != 'undefined');

    if (!isRegExp) {
        isEmpty      = (theField.value == '') ? 1 : 0;
    } else {
        var space_re = new RegExp('\\s+');
        isEmpty      = (theField.value.replace(space_re, '') == '') ? 1 : 0;
    }
    if (isEmpty) {
        theForm.reset();
        theField.select();
        alert(errorMsg0);
        theField.focus();
        return false;
    }

    return true;
} // end of the 'emptyFormElements()' function


/**
 * Ensures a value submitted in a form is numeric and is in a range
 *
 * @param   object   the form
 * @param   string   the name of the form field to check
 * @param   integer  the minimum authorized value
 * @param   integer  the maximum authorized value
 *
 * @return  boolean  whether a valid number has been submitted or not
 */
function checkFormElementInRange(theForm, theFieldName, min, max)
{
    var theField = theForm.elements[theFieldName];
    var val = parseInt(theField.value);

    if (typeof(min) == 'undefined') {
        min = 0;
    }
    if (typeof(max) == 'undefined') {
        max = Number.MAX_VALUE;
    }

    // It's not a number
    if (isNaN(val)) {
        theField.select();
        alert(errorMsg1);
        theField.focus();
        return false;
    }
    // It's a number but it is not between min and max
    else if (val < min || val > max) {
        theField.select();
        alert(val + errorMsg2);
        theField.focus();
        return false;
    }
    // It's a valid number
    else {
        theField.value = val;
    }

    return true;
} // end of the 'checkFormElementInRange()' function

/**
 * This array is used to remember mark status of rows in browse mode
 */
var marked_row = new Array;


/**
 * Sets/unsets the pointer and marker in browse mode
 *
 * @param   object    the table row
 * @param   interger  the row number
 * @param   string    the action calling this script (over, out or click)
 * @param   string    the default background color
 * @param   string    the color to use for mouseover
 * @param   string    the color to use for marking a row
 *
 * @return  boolean  whether pointer is set or not
 */
function setPointer(theRow, theRowNum, theAction, theDefaultColor, thePointerColor, theMarkColor)
{
    var theCells = null;

    // 1. Pointer and mark feature are disabled or the browser can't get the
    //    row -> exits
    if ((thePointerColor == '' && theMarkColor == '') || typeof(theRow.style) == 'undefined') {
        return false;
    }

    // 2. Gets the current row and exits if the browser can't get it
    if (typeof(document.getElementsByTagName) != 'undefined') {
        theCells = theRow.getElementsByTagName('td');
    }
    else if (typeof(theRow.cells) != 'undefined') {
        theCells = theRow.cells;
    }
    else {
        return false;
    }

    // 3. Gets the current color...
    var rowCellsCnt  = theCells.length;
    var domDetect    = null;
    var currentColor = null;
    var newColor     = null;
    // 3.1 ... with DOM compatible browsers except Opera that does not return
    //         valid values with "getAttribute"
    if (typeof(window.opera) == 'undefined' && typeof(theCells[0].getAttribute) != 'undefined') {
        currentColor = theCells[0].getAttribute('bgcolor');
        domDetect    = true;
    }
    // 3.2 ... with other browsers
    else {
        currentColor = theCells[0].style.backgroundColor;
        domDetect    = false;
    } // end 3

    // 4. Defines the new color
    // 4.1 Current color is the default one
    if (currentColor == '' || currentColor.toLowerCase() == theDefaultColor.toLowerCase()) {
        if (theAction == 'over' && thePointerColor != '') {
            newColor = thePointerColor;
        }
        else if (theAction == 'click' && theMarkColor != '') {
            newColor = theMarkColor;
        }
    }
    // 4.1.2 Current color is the pointer one
    else if (currentColor.toLowerCase() == thePointerColor.toLowerCase() && (typeof(marked_row[theRowNum]) == 'undefined' || !marked_row[theRowNum])) {
        if (theAction == 'out') {
            newColor = theDefaultColor;
        }
        else if (theAction == 'click' && theMarkColor != '') {
            newColor = theMarkColor;
            marked_row[theRowNum] = true;
        }
    }
    // 4.1.3 Current color is the marker one
    else if (currentColor.toLowerCase() == theMarkColor.toLowerCase()) {
        if (theAction == 'click') {
            newColor              = (thePointerColor != '')
                                  ? thePointerColor
                                  : theDefaultColor;
            marked_row[theRowNum] = (typeof(marked_row[theRowNum]) == 'undefined' || !marked_row[theRowNum])
                                  ? true
                                  : null;
        }
    } // end 4

    // 5. Sets the new color...
    if (newColor) {
        var c = null;
        // 5.1 ... with DOM compatible browsers except Opera
        if (domDetect) {
            for (c = 0; c < rowCellsCnt; c++) {
                theCells[c].setAttribute('bgcolor', newColor, 0);
            } // end for
        }
        // 5.2 ... with other browsers
        else {
            for (c = 0; c < rowCellsCnt; c++) {
                theCells[c].style.backgroundColor = newColor;
            }
        }
    } // end 5

    return true;
} // end of the 'setPointer()' function

/**
 * Sets/unsets the pointer and marker in browse mode
 *
 * @param   object    the table row
 * @param   interger  the row number
 * @param   string    the action calling this script (over, out or click)
 * @param   string    the default background color
 * @param   string    the color to use for mouseover
 * @param   string    the color to use for marking a row
 *
 * @return  boolean  whether pointer is set or not
 */
function setBkColor(theObj, theAction, theDefaultColor, theOverColor)
{
    // 1. Pointer and mark feature are disabled or the browser can't get the
    //    row -> exits
    if ((theOverColor == '' && theDefaultColor == '') || typeof(theObj.style) == 'undefined') {
        return false;
    }

    // 3. Gets the current color...
    var domDetect    = null;
    var newColor     = null;
    // 3.1 ... with DOM compatible browsers except Opera that does not return
    //         valid values with "getAttribute"
    if (typeof(window.opera) == 'undefined' && typeof(theObj.getAttribute) != 'undefined') {
        domDetect    = true;
    }
    // 3.2 ... with other browsers
    else {
        domDetect    = false;
    } // end 3

    // 4. Defines the new color
    // 4.1 Current color is the default one
	if (theAction == 'over' ) {
		newColor = theOverColor;
	}
	else if (theAction == 'out') {
		newColor = theDefaultColor;
	}
	else {
		return false;
	}
    // 5. Sets the new color...
    if (newColor) {
        // 5.1 ... with DOM compatible browsers except Opera
        if (domDetect) {
                theObj.setAttribute('bgcolor', newColor, 0);
        }
        // 5.2 ... with other browsers
        else {
                theObj.style.backgroundColor = newColor;
        }
    } // end 5

    return true;
} // end of the 'setBkColor()' function

/**
 * Checks/unchecks all tables
 *
 * @param   string   the form name
 * @param   boolean  whether to check or to uncheck the element
 *
 * @return  boolean  always true
 */
function fnSetCheckBoxes(the_form, the_check, do_check)
{
    var obj = document.forms[the_form].elements[the_check];
    var obj_cnt = obj.length;

	for (var i = 0; i < obj_cnt; i++) {
		obj[i].checked = do_check;
	}

    return true;
} // end of the 'fnSetCheckBoxes()' function

/**
  * Checks/unchecks all options of a <select> element
  *
  * @param   string   the form name
  * @param   string   the element name
  * @param   boolean  whether to check or to uncheck the element
  *
  * @return  boolean  always true
  */
function setSelectOptions(the_form, the_select, do_check)
{
    var selectObject = document.forms[the_form].elements[the_select];
    var selectCount  = selectObject.length;

    for (var i = 0; i < selectCount; i++) {
        selectObject.options[i].selected = do_check;
    } // end for

    return true;
} // end of the 'setEnableControls()' function

/*------------------------------------------------------------------------------------
* enable/disable checkboxes group element
*
* @param   string   the form name
* @param   string   the element name
* @param   boolean  whether to enable or to disable the element
*
* @return  boolean  always true
------------------------------------------------------------------------------------*/
function setEnableControls(the_form, the_controls, flag)
{
 var theObject = document.forms[the_form].elements[the_controls];
 var objCount  = theObject.length;

    for (var i = 0; i < objCount; i++) {
        theObject[i].disabled = flag;
    } // end for

    return true;
} // end of the 'setEnableControls()' function

//------------------------------------------------------------------------
//------------------------------------------------------------------------
function fnSubmitPage(theForm,page) {
	document.forms[theForm].action = page;
	document.forms[theForm].submit();
	document.retVal = false;
}
//------------------------------------------------------------------------
//------------------------------------------------------------------------
function fnAskSubmitPage(theForm,page,flAsk) {
var ret=true;

	if( flAsk == 'add' ) { ret = confirm("Inserire un nuovo record?"); }
	if( flAsk == 'del' ) { ret = confirm("Eliminare il record?"); }
	if( flAsk == 'dels' ) { ret = confirm("Eliminare i records selezionati?"); }
	if( flAsk == 'mod' ) { ret = confirm("Modificare lo stato del record?"); }
	if( flAsk == 'mods' ) { ret = confirm("Modificare lo stato dei records selezionati?"); }
	if( flAsk == 'save' ) { ret = confirm("Salvare il nuovo record?"); }
	if( ret ) {
		document.forms[theForm].action = page;
		document.forms[theForm].submit();
	}
	document.retVal = false;
}
//------------------------------------------------------------------------
//------------------------------------------------------------------------
function fnGotoURL() {
 var i, args=fnGotoURL.arguments; document.retVal = false;
	
	for (i=0; i<(args.length-1); i+=2) {
		eval(args[i]+".location='"+args[i+1]+"'");
	}
}
//------------------------------------------------------------------------
//------------------------------------------------------------------------
function fnAskGoToPage(flAsk) {
var ret=true;

	if( flAsk == 'del' ) { ret = confirm("Eliminare il record?"); }
	if( flAsk == 'dels' ) { ret = confirm("Eliminare i records selezionati?"); }
	if( flAsk == 'mod' ) { ret = confirm("Modificare il record?"); }
	if( flAsk == 'mods' ) { ret = confirm("Modificare i records selezionati?"); }
	if( flAsk == 'save' ) { ret = confirm("Salvare il nuovo record?"); }
	if( flAsk == 'saves' ) { ret = confirm("Salvare i nuovi records?"); }
	document.retVal = ret;
}
//------------------------------------------------------------------------
//------------------------------------------------------------------------
function fnOpenBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}
//------------------------------------------------------------------------
//------------------------------------------------------------------------
function fnOpenHelp(topic,area) { //v2.0
var theURL;

	theURL = "../Common/SportLavoro_Help.php?wtopic=" + topic + "&warea=" + area;
	window.open(theURL,"help","width=250,height=403");
}
//------------------------------------------------------------------------
//------------------------------------------------------------------------
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
//------------------------------------------------------------------------
//------------------------------------------------------------------------
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
//------------------------------------------------------------------------
//------------------------------------------------------------------------
function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}
//------------------------------------------------------------------------
//------------------------------------------------------------------------
function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
//------------------------------------------------------------------------
//------------------------------------------------------------------------
function fnSetDateFields(iVal) {
	if( iVal == "N" ) {
		document.getElementById("data_dal").disabled=false;
		document.getElementById("data_al").disabled=false;
	} else {
		document.getElementById("data_dal").disabled=true;
		document.getElementById("data_al").disabled=true;
	}
	document.retVal = true;
}
