//
// Email Validation Javascript
//

function validateEmail(addr,man,db) {
if (addr == '' && man) {
   if (db) alert('email address is mandatory');
   return false;
}
var invalidChars = '\/\'\\ ";:?!()[]\{\}^|';
for (i=0; i<invalidChars.length; i++) {
   if (addr.indexOf(invalidChars.charAt(i),0) > -1) {
      if (db) alert('email address contains invalid characters');
      return false;
   }
}
for (i=0; i<addr.length; i++) {
   if (addr.charCodeAt(i)>127) {
      if (db) alert("email address contains non ascii characters.");
      return false;
   }
}

var atPos = addr.indexOf('@',0);
if (atPos == -1) {
   if (db) alert('email address must contain an @');
   return false;
}
if (atPos == 0) {
   if (db) alert('email address must not start with @');
   return false;
}
if (addr.indexOf('@', atPos + 1) > - 1) {
   if (db) alert('email address must contain only one @');
   return false;
}
if (addr.indexOf('.', atPos) == -1) {
   if (db) alert('email address must contain a period in the domain name');
   return false;
}
if (addr.indexOf('@.',0) != -1) {
   if (db) alert('period must not immediately follow @ in email address');
   return false;
}
if (addr.indexOf('.@',0) != -1){
   if (db) alert('period must not immediately precede @ in email address');
   return false;
}
if (addr.indexOf('..',0) != -1) {
   if (db) alert('two periods must not be adjacent in email address');
   return false;
}
var suffix = addr.substring(addr.lastIndexOf('.')+1);
if (suffix.length != 2 && suffix != 'com' && suffix != 'net' && suffix != 'org' && suffix != 'edu' && suffix != 'int' && suffix != 'mil' && suffix != 'gov' & suffix != 'arpa' && suffix != 'biz' && suffix != 'aero' && suffix != 'name' && suffix != 'coop' && suffix != 'info' && suffix != 'pro' && suffix != 'museum') {
   if (db) alert('invalid primary domain in email address');
   return false;
}
return true;
}

//
//  PHONE ///
//

// Declaring required variables
var digits = "0123456789";
// non-digit characters which are allowed in phone numbers
var phoneNumberDelimiters = "()- ";
// characters which are allowed in international phone numbers
// (a leading + is OK)
var validWorldPhoneChars = phoneNumberDelimiters + "+";
// Minimum no of digits in an international phone no.
var minDigitsInIPhoneNumber = 2;

function isInteger(s)
{ var i;
for (i = 0; i < s.length; i++)
{
// Check that current character is number.
var c = s.charAt(i);
if (((c < "0") || (c > "9"))) return false;
}
// All characters are numbers.
return true;
}

function stripCharsInBag(s, bag)
{ var i;
var returnString = "";
// Search through string's characters one by one.
// If character is not in bag, append to returnString.
for (i = 0; i < s.length; i++)
{
// Check that current character isn't whitespace.
var c = s.charAt(i);
if (bag.indexOf(c) == -1) returnString += c;
}
return returnString;
}

function validatePhone(obj){
	var strPhone = obj.value;
	s=stripCharsInBag(strPhone,validWorldPhoneChars);
	return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
}
//
//  ZIP CODE
//
function checkZip(field){
	var allowedOnes = "0123456789"
	if (field.value.length != 5)
	{
		return false;
	}
	for (i=0; i < field.value.length; i++)
	{
		zipSearch = field.value.substr(i,1)
		if (allowedOnes.indexOf(zipSearch) == -1)
		{
			return false;
		}
	}
	return true
}

//
//
//


///////////////////

function validate() {
	
x=document.formulario;

_nombre=x.nombre.value;
_apellido=x.apellido.value;
_empresa=x.empresa.value;
_cargo=x.cargo.value;
_documento=x.documento.value;
_direccion=x.direccion.value;
_ciudad=x.ciudad.value;
_cp=x.cp.value;
_pais=x.pais.value;
_provincia=x.provincia.value;
_provincia2=x.provincia2.value;
//_telpais=x.telPais.value;
//_telprovincia=x.telProvincia.value;
//_telefono=x.telefono.value;
_email=x.email.value;
_modalidad_pago=x.modalidad_pago.value;

if (_nombre.length < 1)
 {
 alert("Ingrese su Nombre");
 return false;
 }
if (_apellido.length < 1)
 {
 alert("Ingrese su apellido");
 return false;
 }
if (_empresa.length < 1)
 {
 alert("Ingrese la Empresa");
 return false;
 }
if (_cargo.length < 1)
 {
 alert("Ingrese su cargo");
 return false;
 }
if (_documento.length < 1)
 {
 alert("Ingrese su Documento");
 return false;
 }
if (_direccion.length < 1)
 {
 alert("Ingrese Dirección");
 return false;
 }
if (_ciudad.length < 1)
 {
 alert("Ingrese Ciudad");
 return false;
 }
if (_cp.length < 1)
 {
 alert("Ingrese el Código Postal");
 return false;
 }
if (_pais.length < 1)
 {
 alert("Ingrese País");
 return false;
 }
if (_provincia.length < 1 && _pais=="Argentina")
 {
 alert("Ingrese Provincia Argentina");
 return false;
 }
if (_pais!="Argentina" && _provincia2.length < 1)
 {
 alert("Ingrese Provincia/Estado de su País");
 return false;
 }
if (!validatePhone(x.telPais))
 {
 alert("El código telefónico del pais no es válido o no se ha ingresado. Para Argentina ingrese 54");
 return false;
 }
 if (!validatePhone(x.telProvincia))
 {
 alert("El código telefónico de la provincia/estado no es válido, o no se ha ingresado");
 return false;
 }
 if (!validatePhone(x.telefono))
 {
 alert("El número de teléfono no es válido o no se ha ingresado");
 return false;
 }
if (!validateEmail(_email))
  {
  alert("La dirección de email ingresada no es válida.");
  return false;
  }
validarCheck=0;

for (i=0;i<x.elements.length;i++)
{
	if (x.elements[i].type=="checkbox")
	{
		if(x.elements[i].checked)
		{
			validarCheck++;
		}
	}
}

if (validarCheck==0) {
 alert("Seleccione al menos una opción de Matriculación");
 return false;
}

if (_modalidad_pago.length < 1)
 {
 alert("Ingrese una opción de pago");
 return false;
 }

 return true;
}


////////////////////////////


function validateUpload() {
	
x=document.form1;

_tipo=x.tipo.value;
_titulo=x.titulo.value;
_abstract=x['abstract']['value'];
_trabajo=x['trabajo']['value'];

if (_tipo.length < 1)
 {
 alert("Seleccione Tipo de Disertación");
 return false;
 }
if (_titulo.length < 1)
 {
 alert("Ingrese el Título de la Disertación");
 return false;
 }
if (_abstract.length < 1)
 {
 alert("Debe Adjuntar el Abstract");
 return false;
 }
if (_trabajo.length < 1)
 {
 alert("Debe Adjuntar el Trabajo");
 return false;
 }
 
A=validateExtension(x['abstract'],'doc,pdf,zip,rar');
if (!A) {
	return false;
}
T=validateExtension(x['trabajo'],'doc,pdf,zip,rar');
if (!T) {
	return false;
}
F=validateExtension(x['foto'],'jpg,gif,png,tif,bmp,zip,rar');
if (!F) {
	return false;
}

 showProgressBar(x,'uploads/barraProgreso.html');
 return true;
}


////////////////////////////


function validateContacto() {
	
x=document.contacto;

_nombre=x.nombre.value;
_email=x.mail.value;
_consulta=x.consulta.value;


if (_nombre.length < 1)
 {
 alert("Ingrese su Nombre");
 return false;
 }
if (!validateEmail(_email))
  {
  alert("La dirección de email ingresada no es válida.");
  return false;
  }
if (_consulta.length < 1)
 {
 alert("Ingrese la consulta");
 return false;
 }
 return true;
}


/////////////////////////////


function validateForm(form,extensions) //validates file extensions of all the file fields in a form
{
  document.MM_returnValue = true;
  for (var i = 0; i<form.elements.length; i++) {
    field = form.elements[i];
    if (field.type.toUpperCase() != 'FILE') continue;
    if(document.MM_returnValue)
      validateExtension(field,extensions);
    else
      break;
  }
}

function validateExtension(field,extensions)  //validates file extensions of a file field
{
  var extArr, fileExt, regExt;
  document.MM_returnValue = true;
  if (extensions != '')
  {
    //rebuild allowed extensions list to handle different inputs
    extArr =  extensions.split(',');
    extensions = "";
    for (var i=0; i < extArr.length ; i++)
    {
      fileExt = extArr[i].substr(extArr[i].indexOf('.')+1);
      if(i == 0)
        extensions = fileExt;
      else
        extensions +=  "," + fileExt;
    }
    regExt = new RegExp("\.(" + extensions.replace(/,/gi,"|").replace(/\s/gi,"") + ")$","i");
    if(field.value)
    {
      if(!regExt.test(field.value))
      {
        alert("Extensión de archivo inválida.\nSólo están premitidas las siguientes extensiones: " + extensions + ".\nPor favor seleccione otro achivo.");
        document.MM_returnValue = false;
        field.focus();
        return false;
      }
    }
  }
  return true;
}

function showProgressBar(form,progressFile) //displays the progress bar
{ 
  var showProgressBar = false, field;  
  var width, height;
  for (var i = 0; i<form.elements.length; i++) {
    field = form.elements[i];
    if (field.type.toUpperCase() != 'FILE')
      continue;
    if (field.value != '') {
      showProgressBar = true;
      break;
    }
  }
  if (showProgressBar && document.MM_returnValue) {
    width = 480;
    height = 340;
    if (document.all || document.layers || document.getElementById) {
      width = screen.availWidth; height = screen.availHeight;}
      var leftPos = (width-300)/2, topPos = (height-100)/2;
      document.progressWindow = window.open(progressFile,'ProgressWindow','toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,width=300,height=100');
      document.progressWindow.moveTo(leftPos, topPos);document.progressWindow.focus();
      window.onunload = function () {document.progressWindow.close(); };
  }
}
