// decimal point character differs by language and culture
var decimalPointDelimiter = ","

function isEmpty(s)
{
	return ((s == null) || (s.length == 0))
}

function isDigit (c)
{   
	return ((c >= "0") && (c <= "9"))
}

function isInteger (s)
{   var i;

    if (isEmpty(s)) 
       if (isInteger.arguments.length == 1) return defaultEmptyOK;
       else return (isInteger.arguments[1] == true);

    // Search through string's characters one by one
    // until we find a non-numeric character.
    // When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is number.
        var c = s.charAt(i);

        if (!isDigit(c)) return false;
    }

    // All characters are numbers.
    return true;
}

function isFloat (s)

{   var i;
    var seenDecimalPoint = false;

    if (isEmpty(s)) 
       if (isFloat.arguments.length == 1) return defaultEmptyOK;
       else return (isFloat.arguments[1] == true);

    if (s == decimalPointDelimiter) return false;

    // Search through string's characters one by one
    // until we find a non-numeric character.
    // When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is number.
        var c = s.charAt(i);

        if ((c == decimalPointDelimiter) && !seenDecimalPoint) seenDecimalPoint = true;
        else if (!isDigit(c)) return false;
    }

    // All characters are numbers.
    return true;
}

////////////////////////////////////////////////////////////////////////////////////////////
function checkRequired(field)
{ 
  if (field)
  {
    if (isEmpty(field.value))
	{
	  markField(field);
	  return false;
    }
	else
 	  unmarkField(field);
	return true;
  } else  {alert('No se encuentra el campo!');return false;}
}

function checkEmpty(field)
{ 
  if (field)
  {
    if (!isEmpty(field.value))
	{
	  markField(field);
	  return false;
    }
	else
 	  unmarkField(field);
	return true;
  } else  {alert('No se encuentra el campo!');return false;}
}

function checkIntegerR(field)
{ 
  if (field)
  {
    if ((isEmpty(field.value)) || (!isInteger (field.value,false)))
	{
	  markField(field);	  
	  return false;
    }
	else
	  unmarkField(field);
	return true;
  } else  {alert('No se encuentra el campo!');return false;}
}

function checkInteger(field)
{ 
  if (field)
  {
    if (!isInteger(field.value,true))
	{
	  markField(field);
	  return false;
    }
	else
	  unmarkField(field);
	return true;
  } else  {alert('No se encuentra el campo!');return false;}
}

function checkFloatR(field)
{ 
  if (field)
  {
    if ((isEmpty(field.value)) || (!isFloat (field.value,false)))
	{
	  markField(field);	  
	  return false;
    }
	else
	  unmarkField(field);
	return true;
  } else  {alert('No se encuentra el campo!');return false;}
}

function checkFloat(field)
{ 
  if (field)
  {
    if (!isFloat(field.value,true))
	{
	  markField(field);
	  return false;
    }
	else
	  unmarkField(field);
	return true;
  } else  {alert('No se encuentra el campo!');return false;}
}

function checkNumberRangeR(field, min, max)
{ 
  if (field)
  {
    if ((isNaN(field.value)) || (Number(field.value)<Number(min)) || (Number(max)<Number(field.value)))
	{
	  markField(field);
	  return false;
    }
	else
 	  unmarkField(field);
	return true;
  } else  {alert('No se encuentra el campo!');return false;}
}

function checkNumberRange(field, min, max)
{ 
  if (field)
  {
	inRange = (isNaN(field.value)) || (Number(field.value)<Number(min)) || (Number(max)<Number(field.value));
    if ((!isEmpty(field.value)) && (inRange))
	{
	  markField(field);
	  return false;
    }
	else
 	  unmarkField(field);
	return true;
  } else  {alert('No se encuentra el campo!');return false;}
}


function checkEmail(field)
{ 
  if (field)
  {
	p=field.value.indexOf('@');   
	if ((p<1) || (p==(field.value.length-1)))
	{
	  markField(field);
	  return false;
    }
	else
 	  unmarkField(field);
	return true;
  } else  {alert('No se encuentra el campo!');return false;}
}

function checkValidDate(field)
{ 
  if (field)
  {
    if ((!isEmpty(field.value)) && (isDate(field.value)!=''))
	{
	  markField(field);
	  field.value = "";	  	  
	  return false;
    }
	else
 	  unmarkField(field);
	return true;
  } else  {alert('No se encuentra el campo!');return false;}
}

function checkValidDateR(field)
{ 
  if (field)
  {
    if (isDate(field.value)!='')
	{
	  markField(field);
	  field.value = "";	  	  
	  return false;
    }
	else
 	  unmarkField(field);
	return true;
  } else  {alert('No se encuentra el campo!');return false;}
}

function checkCustom(field, funcName)
{
  if (field)
  {
    cmd = funcName + "('" + field.value + "')";
    if ((!isEmpty(field.value)) && (!eval(cmd)))
	{
	  markField(field);
	  return false;
    }
	else
 	  unmarkField(field);
	return true;
  } else  {alert('No se encuentra el campo!');return false;}
}

function checkCustomR(field, funcName)
{
  if (field)
  {
    cmd = funcName + "('" + field.value + "')";
    if ((isEmpty(field.value)) || (!eval(cmd)))
	{
	  markField(field);
	  return false;
    }
	else
 	  unmarkField(field);
	return true;
  } else  {alert('No se encuentra el campo!');return false;}
}

function checkCombo(field)
{ 
  if (field)
  {
	if (field.selectedIndex == 0)
	{
	  markFieldBackground(field);
	  return false;
    }
	else
 	  unmarkFieldBackground(field);
	return true;
  } else  {alert('No se encuentra el campo!');return false;}
}

function checkRadio(field)
{
  if (field)
  {
    selec = false;
    for(i=0;i<field.length;i++)
	{
       if(field[i].checked) 
         selec = true;
    }
	if (!selec)
	{
      for(i=0;i<field.length;i++)
  	    markField(field[i])
	}
	else
	{
      for(i=0;i<field.length;i++)
  	    unmarkField(field[i])
	}
	return selec;
  } else  {alert('No se encuentra el campo!');return false;}
}

function checkCheckBox(field)
{
  if (field)
  {
    selec = false;
    for(i=0;i<field.length;i++)
	{
       if(field[i].checked) 
         selec = true;
    }
	if (!selec)
	{
      for(i=0;i<field.length;i++)
  	    markField(field[i])
	}
	else
	{
      for(i=0;i<field.length;i++)
  	    unmarkField(field[i])
	}
	return selec;
  } else  {alert('No se encuentra el campo!');return false;}
}

function markField(field)
{
  if (field)
  {
	document.form_err_code = false;
	field.style.borderColor = "#FF0000";
  }
}

function unmarkField(field)
{
  if (field)
  {
    field.style.borderColor = "#AAAAAA";
  }
}

function markFieldBackground(field)
{
  if (field)
  {
    document.form_err_code = false;
	field.style.background = "#FF0000";	
  }
}

function unmarkFieldBackground(field)
{
  if (field)
  {
	field.style.background = "#FFFFFF";
  }
}
