//declaració de variables

var defaultEmptyOK= false;

var digits = "0123456789";

var lowercaseLetters = "abcdefghijklmnopqrstuvwxyz";

var uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

var whitespace = " \t\n\r";

var mPrefix = ""
var mSuffix = "Los campos marcados en azul son campos requeridos.\nNo se puede crear el elemento sin especificar los campos requeridos."

var iEmail = "Este campo debe ser una dirección válida (como foo@bar.com). Por favor reescríbalo."

var pEntryPrompt = "Por favor escriba un "
var pEmail = "email válido (como foo@bar.com)."


function isEmpty(s)
{   return ((s == null) || (s.length == 0))
}

function isWhitespace (s)

{   var i;

    // Is s empty?
    if (isEmpty(s)) return true;

    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);

        if (whitespace.indexOf(c) == -1) return false;
    }

    return true;
}


function isLetter (c)
{   return ( ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")) )
}

function isDigit (c)
{   return ((c >= "0") && (c <= "9"))
}

function isLetterOrDigit (c)
{   return (isLetter(c) || isDigit(c))
}

function isSignedInteger (s)

{   if (isEmpty(s)) 
       if (isSignedInteger.arguments.length == 1) return defaultEmptyOK;
       else return (isSignedInteger.arguments[1] == true);

    else {
        var startPos = 0;
        var secondArg = defaultEmptyOK;

        if (isSignedInteger.arguments.length > 1)
            secondArg = isSignedInteger.arguments[1];

        // skip leading + or -
        if ( (s.charAt(0) == "-") || (s.charAt(0) == "+") )
           startPos = 1;    
        return (isInteger(s.substring(startPos, s.length), secondArg))
    }
}

function isNonnegativeInteger (s)
{   var secondArg = defaultEmptyOK;

    if (isNonnegativeInteger.arguments.length > 1)
        secondArg = isNonnegativeInteger.arguments[1];

    return (isSignedInteger(s, secondArg)
         && ( (isEmpty(s) && secondArg)  || (parseInt (s) >= 0) ) );
}


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 isEmail (s)
{   if (isEmpty(s)) 
       if (isEmail.arguments.length == 1) return defaultEmptyOK;
       else return (isEmail.arguments[1] == true);
   
    if (isWhitespace(s)) return false;
    
    var i = 1;
    var sLength = s.length;

    while ((i < sLength) && (s.charAt(i) != "@"))
    { i++
    }

    if ((i >= sLength) || (s.charAt(i) != "@")) return false;
    else i += 2;

    while ((i < sLength) && (s.charAt(i) != "."))
    { i++
    }

    if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false;
    else return true;
}


function isIntegerInRange (s, a, b)
{   if (isEmpty(s)) 
       if (isIntegerInRange.arguments.length == 1) return defaultEmptyOK;
       else return (isIntegerInRange.arguments[1] == true);

    // Catch non-integer strings to avoid creating a NaN below,
    // which isn't available on JavaScript 1.0 for Windows.
    if (!isInteger(s, false)) return false;

    // Now, explicitly change the type to integer via parseInt
    // so that the comparison code below will work both on 
    // JavaScript 1.2 (which typechecks in equality comparisons)
    // and JavaScript 1.1 and before (which doesn't).
    var num = parseInt (s);
    return ((num >= a) && (num <= b));
}


function prompt (s)
{   window.status = s
}


function promptEntry (s)
{   window.status = pEntryPrompt + s
}

function warnEmpty (theField, s)
{   theField.focus()
    alert(mPrefix +  mSuffix)
    return false
}

function warnInvalid (theField, s)
{   theField.focus()
    theField.select()
    alert(s)
    return false
}


function checkString (theField, s, emptyOK)
{   // Next line is needed on NN3 to avoid "undefined is not a number" error
    // in equality comparison below.
    if (checkString.arguments.length == 2) emptyOK = defaultEmptyOK;
    if ((emptyOK == true) && (isEmpty(theField.value))) return true;
    if (isWhitespace(theField.value)) 
       return warnEmpty (theField, s);
    else return true;
}


function checkEmail (theField, emptyOK)
{   
    if (checkEmail.arguments.length == 1) emptyOK = defaultEmptyOK;
    if ((emptyOK == true) && (isEmpty(theField.value))) return true;
    else if (!isEmail(theField.value, false)) 
       return warnInvalid (theField, iEmail);
    else return true;
}


function checkDay (theField, emptyOK)
{   if (checkDay.arguments.length == 1) emptyOK = defaultEmptyOK;
    if ((emptyOK == true) && (isEmpty(theField.value))) return true;
    if (!isDay(theField.value, false)) 
       return warnInvalid (theField, iDay);
    else return true;
}


function getRadioButtonValue (radio)
{   for (var i = 0; i < radio.length; i++)
    {   if (radio[i].checked) { break }
    }
    return radio[i].value
}



function compruebatx(forma) {
	re = /'/gi;
	forma.para.value = forma.para.value.replace(re,"''" );
	forma.asunto.value = forma.asunto.value.replace(re,"''" );
	forma.contenido.value = forma.contenido.value.replace(re,"''" );
	forma.anexos.value = forma.anexos.value.replace(re,"''" );
	re = /\n/gi;
	forma.contenido.value = forma.contenido.value.replace(re,"<br>" );
}

//validation of required fields and quote cleaning

function valida(formu)
{
	//required fields are filled?
	for (i=1; i<arguments.length;i++)
	{
		if ((!(checkString(formu.elements[arguments[i]],"")))){return false;}
	}
	//quote cleaning fora all fields
	for (i=0; i<formu.elements.length;i++)
	{if ((formu.elements[i].type=="textarea")||(formu.elements[i].type=="text"))
		{
		re = /'/gi;
		formu.elements[i].value = formu.elements[i].value.replace(re,"''" );
		}
	}
	return true;
}

function quote(formu){
	f=eval("document."+formu);
	for (i=0; i<f.elements.length;i++)
	{
	    if ((f.elements[i].type=="textarea")||(f.elements[i].type=="text"))
		{
		re = /'/gi;
		f.elements[i].value = f.elements[i].value.replace(re,"''" );
		re = /\n/gi;
		f.elements[i].value = f.elements[i].value.replace(re,"<br>" );
		}
	}
}
function checkValues(formu)
{
	//required fields are filled?

	for (i=1; i<arguments.length;i++)
	{
		obj=eval("document.forms."+formu+"."+arguments[i]);
		if ((!(checkString(obj,obj.name)))){return false;}
	}
	//quote cleaning fora all fields
	f=eval("document.forms."+formu);
	for (i=0; i<f.elements.length;i++)
	{
	    if ((f.elements[i].type=="textarea")||(f.elements[i].type=="text"))
		{
		re = /'/gi;
		f.elements[i].value = f.elements[i].value.replace(re,"''" );
		}
	}
	return true;
}

//controlling the number of chars typed into textareas

function limitlength(objecte , maxim)
{	if (objecte.value.length >= maxim)
	{
		objecte.value=objecte.value.substring(0,maxim);
		alert ("Max length allowed for this field is "+maxim+" chars.");
	}

	return null;
}
function cambiaVersion(pag,ref,lan) {
	window.location.href= pag + "?option=edit&ref=" + ref + "&lan=" + lan;
	return;
}
function check2pass(form, pass1, pass2){
	a = "document."+form+"."+pass1+".value==document."+form+"."+pass2+".value"
	if(eval(a)){
		return true;
	}else{
		alert("Las contraseñas no son iguales.\nPor favor, reescribelas");
		return false;
	}
}