var okEnter,okLeave,cancelEnter,cancelLeave,captchaSID='',captFocus=false,captInterval=0,proc=false;
var dSource,aComp;

with(Shadowbox) {
	loadSkin('classic', '/shadowbox/skin');
	loadLanguage('es', '/shadowbox/lang');
	loadPlayer(['html', 'iframe'], '/shadowbox/player');
}

window.onload = function() 
{
	Shadowbox.init({overlayOpacity: 0, skipSetup: true});
	
	var email = YAHOO.util.Dom.get('email');
	YAHOO.util.Event.addListener(email, 'blur', validateEmail);
	var fields = ['email', 'apellido', 'nombre', 'sexo'];
	YAHOO.util.Event.addListener(fields, 'blur', blurReq);
	fields = ['apellido', 'nombre'];
	YAHOO.util.Event.addListener(fields, 'keypress', allow, '. abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' + String.fromCharCode(209) + String.fromCharCode(241));
	YAHOO.util.Event.addListener('pais', 'change', changePais);
	YAHOO.util.Event.addListener('dni', 'keypress', onlyNums);
	YAHOO.util.Event.addListener('dni', 'blur', validateDNI);
	YAHOO.util.Event.addListener('verif', 'change', validateVerif);
	genCaptcha();
	
	var autoContainer = YAHOO.util.Dom.get('autoContainer');
	var email = YAHOO.util.Dom.get('email');
	YAHOO.util.Dom.setXY(autoContainer, [YAHOO.util.Dom.getX(email), YAHOO.util.Dom.getY(email) + YAHOO.util.Dom.getRegion(email).height]);
	dSource = new YAHOO.util.FunctionDataSource(function() {
		var domains = ['hotmail.com','yahoo.com.ar','gmail.com','yahoo.com','fibertel.com.ar','ciudad.com.ar','arnet.com.ar','speedy.com.ar'];
		var data = [];
		var e = YAHOO.util.Dom.get('email').value;
		var a = e.indexOf('@');
		if (a > -1 && a < e.length) {
			var d = e.substring(0, a + 1);
			var i = 0;
			for (var domain in domains) {
				var o = d + domains[domain]
				if (e == o.substring(0, e.length)) {
					data[i++] = o;
				}
			}
		}
		return data;
	});
	aComp = new YAHOO.widget.AutoComplete('email', 'autoContainer', dSource);
	aComp.queryDelay = .1;
	aComp.typeAheadDelay = .06;
	aComp.typeAhead = false;
	aComp.allowBrowserAutocomplete = false;
	aComp.itemSelectEvent.subscribe(noValidateEmail);
	
	okEnter = new mouseEnter('registrar', enter);
	cancelEnter = new mouseEnter('borrar', enter);
	YAHOO.util.Event.addListener(['registrar', 'borrar'], 'focus', function(){enter(this)});
	okLeave = new mouseLeave('registrar', leave);
	cancelLeave = new mouseLeave('borrar', leave);
	YAHOO.util.Event.addListener(['registrar', 'borrar'], 'blur', function(){leave(this)});
	YAHOO.util.Dom.setStyle(['registrar', 'borrar'], 'opacity', .5);
	
	YAHOO.util.Dom.get('email').focus();
}

function blurReq()
{
	validateReq(this);
}

function borrar()
{
	if (!proc) {
		YAHOO.util.Dom.get('registro').reset();
		var fields = ['email', 'apellido', 'nombre', 'dni', 'sexo', 'verif'];
		for (field in fields) {
			fld = fields[field];
			YAHOO.util.Dom.setStyle(fld + 'Status', 'visibility', 'hidden');
		}
		var regNote = YAHOO.util.Dom.get('reg-note');
		regNote.innerHTML = '';
		YAHOO.util.Dom.removeClass(regNote, 'error');
		captFocus = false;
		genCaptcha();
		YAHOO.util.Dom.get('email').focus();
	}
}

function changePais()
{
	if (this.value == 14) {
		YAHOO.util.Dom.setStyle('dniOpt', 'visibility', 'hidden');
	} else {
		YAHOO.util.Dom.setStyle('dniStatus', 'visibility', 'hidden');
		YAHOO.util.Dom.setStyle('dniOpt', 'visibility', 'visible');
	}
}

function gcState()
{
	if (XMLHttp.readyState == 4) {
		if (XMLHttp.status == 200) {
			var data = XMLHttp.responseText.split("|");
			var captchaEl = YAHOO.util.Dom.get('captcha');
			captchaSID = data[0];
			captchaEl.src = data[1];
			var verif = YAHOO.util.Dom.get('verif');
			verif.value = '';
			if (captFocus) {
				verif.focus();
				captFocus = false;
			}
			YAHOO.util.Dom.setStyle('verifStatus', 'visibility', 'hidden');
			captInterval = window.setInterval("genCaptcha()", 270000);
		}
	}
}

function genCaptcha()
{
	if (captInterval) {
		window.clearInterval(captInterval);
		captInterval = 0;
	}
	AJAX();
	XMLHttp.onreadystatechange = gcState;
	XMLHttp.open('GET', '/portal/gen.captcha/', true);
	XMLHttp.send(null);
}

function noValidateEmail()
{
	if (XMLHttp) {
		XMLHttp.abort();
		XMLHttp = null;
	}	
	var emailStatusEl = YAHOO.util.Dom.get('emailStatus');
	emailStatusEl.className = 'icon-proc';
	emailStatusEl.title = '';
	YAHOO.util.Dom.setStyle(emailStatusEl, 'visibility', 'hidden');
}

function refCaptcha()
{
	captFocus = true;
	genCaptcha();
}

function registrar()
{
	if (!proc) {
		proc = true;
		var regNote = YAHOO.util.Dom.get('reg-note');
		regNote.innerHTML = '<span class="icon-proc"></span> Se est&aacute; procesando su registraci&oacute;n...';
		YAHOO.util.Dom.removeClass(regNote, 'error');
		if (YAHOO.util.Dom.get('terminos').checked) {
			var OK = true, fOk;
			var fields = ['email', 'apellido', 'nombre', 'sexo'];
			for (var field in fields) {
				fOK = validateReq(YAHOO.util.Dom.get(fields[field]));
				OK = OK && fOK;
			}
			OK = OK && validateDoc(YAHOO.util.Dom.get('dni'));
			var fecha = new Date(YAHOO.util.Dom.get('anio').value, YAHOO.util.Dom.get('mes').value - 1, YAHOO.util.Dom.get('dia').value);
			var d = fecha.getDate().toString();
			if (d.length == 1) d = "0" + d;
			var m = (fecha.getMonth() + 1).toString();
			if (m.length == 1) m = "0" + m;
			var y = fecha.getFullYear().toString();
			var fechaStat = YAHOO.util.Dom.get('fechaStatus');
			if (y + "-" + m + "-" + d == YAHOO.util.Dom.get('anio').value + '-' + YAHOO.util.Dom.get('mes').value + '-' + YAHOO.util.Dom.get('dia').value) {
				fechaStat.title = '';
				YAHOO.util.Dom.setStyle(fechaStat, 'visibility', 'hidden');
			} else {
				fechaStat.title = 'Fecha no valida';
				YAHOO.util.Dom.setStyle(fechaStat, 'visibility', 'visible');
				OK = false;
			}
			fields = ['email', 'verif'];
			for (var field in fields) {
				var statusEl = YAHOO.util.Dom.get(fields[field] + 'Status');
				var statusClass = statusEl.className;
				if (!((statusClass == 'icon-ok') && (YAHOO.util.Dom.getStyle(statusEl, 'visibility') == 'visible'))) {
					statusEl.className = 'icon-err';
					YAHOO.util.Dom.setStyle(statusEl, 'visibility', 'visible');
					OK = false;
				}
			}
			if (OK) {
				var formData = '';
				var fields = YAHOO.util.Dom.getElementsBy(function(){return true}, 'input', 'registro');
				for (var field in fields) {
					var fld = YAHOO.util.Dom.get(fields[field]);
					formData += "&" + fld.id + "=" + encodeURIComponent(fld.value);
				}
				fields = YAHOO.util.Dom.getElementsBy(function(){return true}, 'select', 'registro');
				for (var field in fields) {
					var fld = YAHOO.util.Dom.get(fields[field]);
					formData += "&" + fld.id + "=" + encodeURIComponent(fld.value);
				}
				formData = formData.substring(1);
				AJAX();
				XMLHttp.onreadystatechange = regState;
				XMLHttp.open('POST', '/portal/registrar/', true);
				XMLHttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
				XMLHttp.setRequestHeader('Content-length', formData.length);
				XMLHttp.setRequestHeader('Connection', 'close');
				XMLHttp.send(formData);
			} else {
				regNote.innerHTML = 'Faltan datos requeridos o los datos ingresados no son correctos';
				YAHOO.util.Dom.addClass(regNote, 'error');
				proc = false;
			}
		} else {
			regNote.innerHTML = 'Para poder registrarse debe aceptar los T&eacute;rminos y Condiciones de Uso<br />y las Pol&iacute;ticas de Privacidad de BusquedasRH.com';
			YAHOO.util.Dom.addClass(regNote, 'error');
			proc = false;
		}
	}
}

function regState()
{
	if (XMLHttp.readyState == 4) {
		var regNote = YAHOO.util.Dom.get('reg-note');
		if (XMLHttp.status == 200) {
			var data = XMLHttp.responseText.split('|');
			if (parseInt(data[0]) > 0) {
				var form = YAHOO.util.Dom.get('registro');
				form.action = '/portal/registrado/';
				form.submit();
			} else {
				regNote.innerHTML = 'No se proces&oacute; su registraci&oacute;n<br />' + data[1];
				YAHOO.util.Dom.addClass(regNote, 'error');
			}
		} else if (XMLHttp.status == 500) {
			regNote.innerHTML = 'Se ha producido un error inesperado durante el proceso de su registraci&oacute;n<br />Por favor, vuelva a intentar m&aacute;s tarde';
			YAHOO.util.Dom.addClass(regNote, 'error');
		}
		proc = false;
	}
}

function validateCaptcha(fld)
{
	fld.value = fld.value.toLowerCase();
	var verifStatusEl = YAHOO.util.Dom.get('verifStatus');
	YAHOO.util.Dom.setStyle(verifStatusEl, 'visibility', 'visible');
	verifStatusEl.className = 'icon-proc';
	AJAX();
	XMLHttp.onreadystatechange = vcState;
	XMLHttp.open('GET', '/portal/validate.captcha/i/' + captchaSID + '/v/' + fld.value, true);
	XMLHttp.send(null);
}

function validateDNI()
{
	validateDoc(this);
}

function validateDoc(fld)
{
	var valOK = true;
	var isARG = YAHOO.util.Dom.get('pais').value == 14;
	var dniStatus = YAHOO.util.Dom.get('dniStatus');
	fld.value = fld.value.trim();
	if (fld.value.match(/\D/)) {
		fld.value = '';
		if (isARG) {
			dniStatus.title = 'Ingrese solamente numeros';
			YAHOO.util.Dom.setStyle(dniStatus, 'visibility', 'visible');
		}
		valOK = false;
	} else if (validateReq(fld)) {
		if (fld.value.length < 7) {
			if (isARG) {
				dniStatus.title = 'El numero de documento debe tener al menos 7 digitos';
				YAHOO.util.Dom.setStyle(dniStatus, 'visibility', 'visible');
				valOK = false;
			} else {
				fld.value = '';
			}
		}
	} else {
		valOK = false;
	}
	return valOK;
}

function validateEmail()
{
	var email = this.value;
	if (email != '') {
		var emailStatusEl = YAHOO.util.Dom.get('emailStatus');
		YAHOO.util.Dom.setStyle(emailStatusEl, 'visibility', 'visible');
		emailStatusEl.className = 'icon-proc';
		AJAX();
		XMLHttp.onreadystatechange = veState;
		XMLHttp.open('GET', '/portal/validate.email/a/' + email, true);
		XMLHttp.send(null);
	}
}

function validateReq(fld)
{
	var valOK = true;
	if (fld.id != 'sexo') {
		fld.value = fld.value.trim();
		if (fld.id != 'email') {
			fld.value = fld.value.toUpperCase();
		}
	}
	if (fld.value == '') {
		if (fld.id != 'dni' || (fld.id == 'dni' && YAHOO.util.Dom.getStyle('dniOpt', 'visibility') == 'hidden')) {
			var status = YAHOO.util.Dom.get(fld.id + 'Status')
			if (fld.id == 'email') {
				status.className = 'icon-err';
			}
			status.title = 'Dato requerido';
			YAHOO.util.Dom.setStyle(status, 'visibility', 'visible');
			valOK = false;
		}
	} else {
		if (fld.id != 'email') {
			YAHOO.util.Dom.setStyle(fld.id + 'Status', 'visibility', 'hidden');
		}
	}
	return valOK;
}

function validateVerif()
{
	validateCaptcha(this);
}

function vcState()
{
	if (XMLHttp.readyState == 4) {
		if (XMLHttp.status == 200) {
			var verifOk = XMLHttp.responseText;
			var verifStatusEl = YAHOO.util.Dom.get('verifStatus');
			if (verifOk == 1) {
				verifStatusEl.className = 'icon-ok';
			} else {
				verifStatusEl.className = 'icon-err';
			}
			YAHOO.util.Dom.setStyle(verifStatusEl, 'visibility', 'visible');
		}
	}
}

function veState()
{
	if (XMLHttp.readyState == 4) {
		if (XMLHttp.status == 200) {
			var emailOk = XMLHttp.responseText;
			var emailStatusEl = YAHOO.util.Dom.get('emailStatus');
			if (emailOk == 1) {
				emailStatusEl.className = 'icon-ok';
				emailStatusEl.title = 'Se ha verificado el servidor correspondiente a su e-mail';
			} else {
				emailStatusEl.className = 'icon-err';
				emailStatusEl.title = 'No se pudo verificar su e-mail';
			}
			YAHOO.util.Dom.setStyle(emailStatusEl, 'visibility', 'visible');
		}
	}
}
