var gNow = new Date();

function isValidEmail(str) {
	var reg1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/; // not valid
	var reg2 = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/; // valid
	return (!reg1.test(str) && reg2.test(str)); // if syntax is valid
}

function esBisiesto(Any) {
	//Un aÃ±o es bisiesto si es divisible por 4 y no por 100, excepto los aÃ±os divisibles por 400. 
	return (((Any % 4 == 0) && (Any % 100 != 0)) || (Any % 400 == 0))
}

function isDate(Data) {
	var esFecha = false;
	
	if (typeof Data != 'string') return false;
	var aux = Data.split("/");

	if (aux.length == 3)
	{
		if ( (!isNaN(aux[0])) && (!isNaN(aux[1])) && (!isNaN(aux[2])) )
		{
			if ( (aux[1] >= 1) && (aux[1] <= 12) && ((aux[2].length == 2) || (aux[2].length == 4)))
			{
				if ( (aux[1] == 1) || (aux[1] == 3) || (aux[1] == 5) || (aux[1] == 7) || (aux[1] == 8) || (aux[1] == 10) || (aux[1] == 12) )
				{
						if ( (aux[0] >= 1) && (aux[0] <= 31) )
						{
							esFecha = true;
						}
				}
				else
				{
					if ( (aux[1] == 4) || (aux[1] == 6) || (aux[1] == 9) || (aux[1] == 11) )
					{
						if ( (aux[0] >= 1) && (aux[0] <= 30) )
						{
							esFecha = true;
						}
					}
					else
					{
						if ( aux[1] == 2)
						{
							if ( esBisiesto(aux[2]) )
							{
								if ( (aux[0] >= 1) && (aux[0] <= 29) )
								{
									esFecha = true;
								}
							}
							else
							{
								if ( (aux[0] >= 1) && (aux[0] <= 28) )
								{
									esFecha = true;
								}
							}
						}
					}
				}
			}
		}
	}
	if (Data=="")
	{
		esFecha = true;
	}
	return esFecha;
}

function isTime(Hora) {
	var esHora = false;
	var aux = Hora.split(":");
	if (aux.length == 2)
	{
		if ( (!isNaN(aux[0])) && (!isNaN(aux[1])) )
		{
			if ( (aux[0] >= 0) && (aux[0] < 24) && (aux[1] >= 0) && (aux[1] < 60) )
			{
				esHora = true;
			}
		}
	}
	return esHora;
}

function formateDate (Element,Data) {
	var isFecha=Data;
	if (Data!="")
	{
		if (isDate(Data))
		{
			var aux = Data.split("/");
			if (aux[0].length<2) aux[0]="0"+aux[0]; // Formateamos el dia DD
			if (aux[1].length<2) aux[1]="0"+aux[1]; // Formateamos el mes MM
			if (aux[2].length<4) aux[2]="20"+aux[2]; // Formateamos el aÃ±o YYYY

			isFecha=aux[0]+"/"+aux[1]+"/"+aux[2];
		}
		else
		{
			//isFecha="";
			Element.focus();
			alert("'"+Data+"' no es una fecha correcta.");
		}
	}
	return isFecha;
}
function Day(Data) {
	var isFecha=new String(gNow.getDate());
	if (isDate(Data) && Data !="")
	{
		var aux = Data.split("/");
		if (aux[0].length<2) aux[0]="0"+aux[0]; // Formateamos el mes MM
		isFecha=aux[0];
	}
	return isFecha;
}
function Month(Data)
{
		var isFecha=new String(gNow.getMonth()+1);
		if (isDate(Data) && Data !="")
		{
			var aux = Data.split("/");
			if (aux[1].length<2) aux[1]="0"+aux[1]; // Formateamos el mes MM
			isFecha=aux[1];
		}
	return isFecha;
}

function Year(Data)
{
	var isFecha=new String(gNow.getFullYear().toString());
		if (isDate(Data) && Data !="")
		{
			var aux = Data.split("/");
			if (aux[2].length<4) aux[2]="20"+aux[2]; // Formateamos el aÃ±o YYYY
			isFecha=aux[2];
		}
	return isFecha;
}

function DaysDelta(_v1,_v2) { 
  var _delta = 0; 
  _delta = _v1.getTime() - _v2.getTime(); // in msecs 
  _delta /= (1000 * 60 * 60 * 24); // days 
  return _delta; 
} 

function isLessDate(str_d1, str_d2)
{
	var isLess = false;
	var aux_d1 = str_d1.split("/");
	var aux_d2 = str_d2.split("/");

// Si solo se recibe la fecha se agrega la hora (00:00)
	if (aux_d1.length==3)
	{
		str_d1+='/00:00';
		aux_d1 = str_d1.split("/");
	}
	if (aux_d2.length==3)
	{
		str_d2+='/00:00';
		aux_d2 = str_d2.split("/");
	}

	if ((aux_d1.length==4) && (aux_d2.length==4))
	{
		if ((!isNaN(aux_d1[0])) && (!isNaN(aux_d1[1])) && (!isNaN(aux_d1[2])))
		{
			var aux_h1 = aux_d1[3].split(":");
			if ((!isNaN(aux_h1[0])) && (!isNaN(aux_h1[1])))
			{
				var d1 = new Date(aux_d1[2], (aux_d1[1]-1), aux_d1[0], aux_h1[0], aux_h1[1]);
				if ((!isNaN(aux_d2[0])) && (!isNaN(aux_d2[1])) && (!isNaN(aux_d2[2])))
				{
					var aux_h2 = aux_d2[3].split(":");
					if ((!isNaN(aux_h2[0])) && (!isNaN(aux_h2[1])))
					{
						var d2 = new Date(aux_d2[2], (aux_d2[1]-1), aux_d2[0], aux_h2[0], aux_h2[1]);
						delta = DaysDelta(d1, d2);
						if (delta<0)
							isLess = true;
					}
				}
			}
		}
	}
	return isLess;
}
function change_date(str)
{
	var aux_d = str.split("/");
	return (aux_d[1]-1)+"/"+aux_d[0]+"/"+aux_d[2];
}
function getDateFromNormalFormat(str)
{
	var aux_d = str.split("/");
	var d = new Date(aux_d[2], (aux_d[1]-1), aux_d[0], 0, 0);
	return d;
}
function selectOptionItem(selectObj,val) {
	for (i=0;i<selectObj.options.length;i++) {
	  if (selectObj.options[i].value == val) {
	  selectObj.options[i].selected = true;
	  break;
	  }
	} 
}
function isValidSimpleText(str)
{
	  var reg1 = /^[0-9A-Za-z]+$/;
	  if (!reg1.test(str)) {
	    return true;
	  }
	  return false;
}


function isNumber(str)
{
	  var reg1 = /^[0-9]+$/;
	  if (!reg1.test(str)) {
	    return false;
	  }
	  return true;
}

function isDecimal(str)
{
	  var reg1 = /^\d+(\.\d+)?$/;
	  if (!reg1.test(str)) {
	    return false;
	  }
	  return true;
}

function newsletterSubmit(f) {
	if (!isValidEmail(f.email.value)) {
		alert("Atenció, el correu electrònic no és vàlid");
		f.email.focus();
		return false;
	}
	f.action ="/users/form_user.php";
	f.submit();
	return true;
}
