///////////////////////////////////////////
////////////FUNCIONES COMUNES//////////////
///////////////////////////////////////////

function empUsersAjaxLayers_createGreyCover(idElement)
{
	if(typeof idElement == 'undefined')
	{
		idElement = 'empUsersAjaxLayers_greycover';
	}
	
	var isIE6 = jQuery.browser.msie && jQuery.browser.version < 7;

	// creo el gray cover
	var greycover = document.createElement('div');
	greycover.id = idElement;
	greycover.style.position = isIE6 ? 'absolute' : 'fixed';
	greycover.style.top = '0px';
	greycover.style.left = '0px';
	greycover.style.background = '#000000';
	greycover.style.zIndex = 2;
	greycover.style.width = '100%';
	greycover.style.height = isIE6 ? document.body.clientHeight : '100%';
	greycover.style.opacity = 0.5;
	greycover.style.filter = 'alpha(opacity=50)'; // IE6 requires this + greycover to have layout, which it does.
	 
	jQuery('body').append(greycover);
}

function empUsersAjaxLayers_removeGreyCover(idElement) 
{
	if(typeof idElement == 'undefined')
	{
		idElement = 'empUsersAjaxLayers_greycover';
	}
	
	jQuery('#'+idElement).fadeOut('slow', function() { jQuery('#'+idElement).remove() });
}

function empUsersAjaxLayers_removeForm() 
{
	empUsersAjaxLayers_removeGreyCover();
	jQuery('#empUsersAjaxLayers_frm').remove();
}

function empUsersAjaxLayers_addErrorToField(object, type, requiredObject) 
{
	var objectError;

	if (requiredObject) 
	{
		objectError = jQuery(object).parents('.required');
	} 
	else 
	{
		objectError = jQuery(object);
	}

	objectError.addClass('error');

	var funcion_remover = function() { objectError.removeClass('error'); };
	jQuery(object).find(type).click(funcion_remover);
	jQuery(object).find(type).keydown(funcion_remover);
}

function empUsersAjaxLayers_validateEmptyFields(minCountDigits) 
{
	if(typeof minCountDigits == 'undefined')
	{
		minCountDigits = 1;
	}
	
	var errores_vacio = 0;

	jQuery('#empUsersAjaxLayers_frm .required').each(
			function(i) 
			{
				jQuery(this).find('.fieldRequired').find('input:password, input:text').each(
						function(i) 
						{
							if (jQuery.trim(jQuery(this).val()).length < minCountDigits && !jQuery(this).attr('disabled')) 
							{
								empUsersAjaxLayers_addErrorToField( jQuery(this).parents('.fieldRequired'), 'input:password, input:text', true);
								errores_vacio++;
							}
						})
			});

	return errores_vacio == 0;
}

function empUsersAjaxLayers_reportError(sSubject, sMsg, callerLink)
{
	jQuery.ajax({
		type: 'GET',					
		data: 'SUBJECT='+sSubject+'&MENSAJE='+sMsg,
		url:  "/empresas/e_report_error.ngmf",
		dataType: "html",
		beforeSend: function(xhr)
					{
						jQuery(callerLink).hide();
						jQuery(callerLink).parent().find('.loadingReportando').show();
					},			
		success: function(data) 
				 {						 	 
					/*if( jQuery.trim(data).length <= 0 )
				 	{}*/
					jQuery(callerLink).parent().find('.errorReportado').show();
					jQuery(callerLink).parent().find('.loadingReportando').hide();
				 }
		});
}

function empUsersAjaxLayers_showErrorConexion(extraMsg)
{	
	empUsersAjaxLayers_showErrorPopup('Ocurri&oacute; un problema al tratarse de comunicar con Bumeran. <BR/>Por favor, revise su conexi&oacute;n de internet.', extraMsg);				
}

function empUsersAjaxLayers_showErrorGenerico(extraMsg)  
{
	empUsersAjaxLayers_showErrorPopup('Ocurri&oacute; un problema, por favor int&eacute;ntelo nu&eacute;vamente m&aacute;s tarde.', extraMsg);
}

function empUsersAjaxLayers_removeErrorPopup()
{
	empUsersAjaxLayers_removeGreyCover('empUsersAjaxLayers_greycoverError');
	jQuery('#empUsersAjaxLayers_errorPopup').remove();
}

function empUsersAjaxLayers_showErrorPopup( sMsg, extraMsg )
{	
	empUsersAjaxLayers_removeErrorPopup('empUsersAjaxLayers_greycoverError');//por las dudas si habia otro
	
	jQuery('#empUsersAjaxLayers_errorPopup');
		
	var box = 
		   '<div id="empUsersAjaxLayers_errorPopup" style="border: 1px solid #999999; background-color: #FFFCD9; width: 500px; padding: 10px; text-align: center; position:absolute; z-index: 4; top:150px; left:330px;">';
	box += '	<p>'+sMsg+'</p>';	
	box += '	<p class="empUsersAjaxLayers_extraMsg" style="display:none;"></p>';
	box += '	<div><a class="aceptarErrorPopup" href="#">Aceptar</a><br/><br/><a href="#" class="reportarErrorPopup" style="display: inline; float:right;">Reportar</a><span style="display: none; float:right;" class="errorReportado">El error ha sido reportado. A la brevedad su problema sera solucionado.</span><img src="/images/avisos/ajax-loader.gif" alt="Cargando..." class="loadingReportando" style="display: none; float:right;"/></div>';
	box += '</div>';
					
	empUsersAjaxLayers_createGreyCover('empUsersAjaxLayers_greycoverError');
	jQuery('body').append(box);
		
	if (typeof extraMsg != "undefined")
	{
		jQuery('#empUsersAjaxLayers_errorPopup .empUsersAjaxLayers_extraMsg').text(extraMsg);
	}
	
	//link para aceptar
	jQuery('#empUsersAjaxLayers_errorPopup .aceptarErrorPopup').click( function() {
																empUsersAjaxLayers_removeErrorPopup();
																return false;
															});	
	//link para reportar
	jQuery('#empUsersAjaxLayers_errorPopup .reportarErrorPopup').click( function() {
		
		errorMsg = jQuery(this).parent().parent().find('p:visible').html();
		errorMsg += jQuery('#empUsersAjaxLayers_errorPopup .empUsersAjaxLayers_extraMsg').html();
		
		//reporto
		empUsersAjaxLayers_reportError('Error reportado en emp_users_ajax_layers', errorMsg, this);

		//muestro que se reporto bien (no me importa como salio en realidad)
		jQuery(this).fadeOut(1200,function() {
			jQuery('#empUsersAjaxLayers_errorPopup .errorPopupReportado').fadeIn(1200); 				
			});
		return false;
	});
}

///////////////////////////////////////////
////////////CAMBIAR PASSWORD///////////////
///////////////////////////////////////////

function cambiarPassword_cambiar() 
{
	if (cambiarPassword_validateFields())
		cambiarPassword_doAction('CAMBIAR');
}
function cambiarPassword_cancelar() 
{
	cambiarPassword_doAction('CANCELAR');
}

function cambiarPassword_doAction(action)
{
	var params = 'action=' + action;
	params += '&PPASSWORD=' + jQuery('#PPASSWORD').val();
	params += '&PPASSWORD_REPEAT=' + jQuery('#PPASSWORD_REPEAT').val();

	jQuery.ajax( {
		type :'POST',
		data :params,
		url :"e_cambiarpass.ngmf",
		dataType :"html",
		beforeSend : function(xhr) 
		{
			cambiarPassword_showLoading();
		},
		error: function (xhr, ajaxOptions, thrownError)
		{
			try {
				idStatusRequest = xhr.status;
			}
			catch(e){
				idStatusRequest = -1;
			}
			if(idStatusRequest!=200)
			{
				var bHasBeenLostConnection = idStatusRequest==0;
				
				cambiarPassword_removeLoading();
				
				if(bHasBeenLostConnection)
				{
					empUsersAjaxLayers_showErrorConexion('Mensaje error: ' + ajaxOptions + '. Id Status request: ' + idStatusRequest);				
				}
				else
				{
					empUsersAjaxLayers_showErrorGenerico('Mensaje error: ' + ajaxOptions + '. Id Status request: ' + idStatusRequest);
				}
			}					
		},
		success : function(data) 
		{
			if (data.length > 0 && data > 0) 
			{
				empUsersAjaxLayers_removeForm();
			}
			else 
			{
				if (data == -1) 
				{
					jQuery('txtErrorPassIgual').show();
				} 
				else 
				{
					jQuery('txtErrorGenerico').show();
				}

				cambiarPassword_removeLoading();
			}
		}
	});
}

// VISUALIZACION

function cambiarPassword_validateFields() 
{
	var errores_pass_dif = 0;

	if (document.getElementById('PPASSWORD').value != document.getElementById('PPASSWORD_REPEAT').value) 
	{
		errores_pass_dif++;
		jQuery('#txtErrorPassIgual').show();
	} 
	else 
	{
		jQuery('#txtErrorPassIgual').hide(); // por si estaba visible desde
												// antes
	}

	return empUsersAjaxLayers_validateEmptyFields(5) && errores_pass_dif == 0;
}

function cambiarPassword_showLoading() 
{
	jQuery('.divSubmitButton').append('<img src="/empresas/images/ajax-loader.gif"/>');
	jQuery('.divSubmitButton .button, .divSubmitButton button').hide();
	jQuery('.divSubmitButton .lowerTxt').hide();
	jQuery('.empUsersAjaxLayers_txterror').hide(); // oculto los errores
	jQuery('#lnkRecordarme').hide();
}

function cambiarPassword_removeLoading() 
{
	jQuery('.divSubmitButton img').remove();
	jQuery('.divSubmitButton .button, .divSubmitButton button').show();	
	jQuery('.divSubmitButton .lowerTxt').show();
	jQuery('#lnkRecordarme').show();
}

function cambiarPassword_showForm() 
{
	// muestro el form
	var box = 
		   '<div id="empUsersAjaxLayers_frm" style="border: 1px solid #999999; background-color: #FFFCD9; width: 500px; padding: 10px; text-align: center; position:absolute; z-index: 3; top:150px; left:330px;">';
	box += '	<p>Bumeran ha generado automáticamente una contraseña cuando usted se registró.<br/>Le recomendamos cambiarla por una nueva para facilitar su recordación.</p>';
	box += '	<p style="color:#999999;">Nota: Le recordamos que la contraseña no puede tener menos de cuatro caracteres.</p>';
	box += '	<p id="txtErrorPassIgual" class="empUsersAjaxLayers_txterror" style="display:none; color: #F33;">Verifique que las contraseñas sean iguales</p>';
	box += '	<p id="txtErrorGenerico" class="empUsersAjaxLayers_txterror" style="display:none; color: #F33;">Ocurrio un error al tratar de cambiar la contraseña. Por favor inténtelo nuevamente mas tarde.</p>';
	box += '	<strong class="labelPass" style="padding: 5px 5px 5px 5px; display: block; margin-top: 15px;">Nueva contraseña</strong>';
	box += '	<div class="required">';
	box += '		<span class="fieldRequired">';
	box += '	<input name="PPASSWORD" id="PPASSWORD" class="textFull" type="password" size="16" tabindex="1"/>';
	box += '		</span><p class="iferror">La contraseña debe tener mas de 4 caracteres.</p>';
	box += '		</div>';
	box += '	<strong class="labelPass" style="padding: 5px 5px 5px 5px; display: block; margin-top: 15px;">Repetir contraseña</strong>';
	box += '	<div class="required">';
	box += '	<span class="fieldRequired">';
	box += '		<input name="PPASSWORD_REPEAT" id="PPASSWORD_REPEAT" class="textFull" type="password" size="16" tabindex="2"/>';
	box += '		</span><p class="iferror">La contraseña debe tener mas de 4 caracteres.</p>';
	box += '	</div>';
	box += '	<div class="divSubmitButton" style="display: block; margin-top: 15px;">';
	box += '		<button onclick="javascript: cambiarPassword_cambiar();" class="buttonBig" id="lnkCambiarPass" tabindex="3" style="color: #000000; cursor: pointer; line-height: 13px; font-size: 12px;">Cambiar</button>';
	box += '		<button onclick="javascript: cambiarPassword_cancelar();" class="buttonBig" id="lnkCancelar" tabindex="4" style="color: #000000; cursor: pointer; line-height: 13px; font-size: 12px;">Cancelar</button>';	
	box += '		<span class="lowerTxt" style="vertical-align: bottom; margin: 0 0 6px;">o</span>';
	box += '		<a href="javascript: empUsersAjaxLayers_removeForm();" id="lnkRecordarme" class="lowerTxt" tabindex="4" style="vertical-align: bottom; margin: 0 0 6px;">recordarme mas tarde</a>';
	box += '	</div>';
	box += '</div>';

	empUsersAjaxLayers_createGreyCover();
	jQuery('body').append(box);
	
	//lo posiciono arriba para que lo pueda ver.
	jQuery('html,body').animate({scrollTop: 0}, 0);
}

///////////////////////////////////////////
/////////////////LOGIN/////////////////////
///////////////////////////////////////////

function login_showLoading() 
{
	jQuery('.divSubmitButton').append('<img src="/empresas/images/ajax-loader.gif"/>');
	jQuery('.divSubmitButton .button, .divSubmitButton button').hide();
	jQuery('.divSubmitButton .lowerTxt').hide();
	jQuery('.empUsersAjaxLayers_txterror').hide(); // oculto los errores
	jQuery('#lnkCancelar').hide();
}

function login_removeLoading() 
{
	jQuery('.divSubmitButton img').remove();
	jQuery('.divSubmitButton .button, .divSubmitButton button').show();
	jQuery('.divSubmitButton .lowerTxt').show();
	jQuery('#lnkRecordarme').show();
}

function login_aceptar( callBackAceptarSuccessFunction ) 
{
	if(typeof callBackAceptarSuccessFunction == 'undefined')
	{
		callBackAceptarSuccessFunction = function() {};
	}
	
	if (empUsersAjaxLayers_validateEmptyFields()) 
	{
		var params = 'action=LOGIN';
		params += '&PPASSWORD=' + jQuery('#PPASSWORD').val();
		params += '&USERNAME=' + jQuery('#USERNAME').val();

		jQuery.ajax( {
			type :'POST',
			data :params,
			url :"e_loginajax.ngmf",
			dataType :"html",
			beforeSend : function(xhr) 
			{
				login_showLoading();
			},
			error: function (xhr, ajaxOptions, thrownError)
			{
				try {
					idStatusRequest = xhr.status;
				}
				catch(e){
					idStatusRequest = -1;
				}
				if(idStatusRequest!=200)
				{
					var bHasBeenLostConnection = idStatusRequest==0;
					
					login_removeLoading();
					
					if(bHasBeenLostConnection)
					{
						empUsersAjaxLayers_showErrorConexion('Mensaje error: ' + ajaxOptions + '. Id Status request: ' + idStatusRequest);				
					}
					else
					{
						empUsersAjaxLayers_showErrorGenerico('Mensaje error: ' + ajaxOptions + '. Id Status request: ' + idStatusRequest);
					}
				}					
			},
			success : function(data)
			{
				data = jQuery.trim(data);			
				if (data.length > 0 && data == '1') 
				{
					empUsersAjaxLayers_removeForm();
					callBackAceptarSuccessFunction(); //ejecuto la funcion que vino por parametro
				} 
				else 
				{
					// manejo los errores
					if (data == '2') {
						jQuery('#txtErrorInvalidUserPass').show();
					} else if (data == '3') {
						jQuery('#txtErrorEmpBlocked').show();
					} else {
						jQuery('#txtErrorGenerico').show();
					}
		
					login_removeLoading();
				}
			}
		});
	}
}

function login_cancelar() 
{
	empUsersAjaxLayers_removeForm();
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function login_showForm( callBackAceptarSuccessFunction ) 
{
	if(typeof callBackAceptarSuccessFunction == 'undefined')
	{
		callBackAceptarSuccessFunction = function() {};
	}
	
	var username = readCookie('BMN_USERNAME');
	
	// muestro el form
	var box = 
		   '<div id="empUsersAjaxLayers_frm" style="border: 1px solid #999999; background-color: #FFFCD9; width: 450px; padding: 10px; text-align: center; position:absolute; z-index: 3; top:150px; left:330px;">';
	box += '	<p>Su sesion ha expirado.<br/>Por favor ingrese nuevamente su usuario y contraseña para poder continuar.</p>';
	box += '	<p id="txtErrorGenerico" class="empUsersAjaxLayers_txterror" style="display:none; color: #F33;">Ocurrio un error al tratar de loguearse. Por favor inténtelo nuevamente mas tarde.</p>';
	box += '	<p id="txtErrorEmpBlocked" class="empUsersAjaxLayers_txterror" style="display:none; color: #F33;">Su empresa se encuentra bloqueada. Por favor comuníquese con su asesor comercial. </p>';
	box += '	<p id="txtErrorInvalidUserPass" class="empUsersAjaxLayers_txterror" style="display:none; color: #F33;">Su nombre de usuario y contraseña no son validos. Por favor revise los datos y vuelva a intentarlo.</p>';
	box += '	<strong class="labelLogin" style="padding: 5px 5px 5px 5px; display: block; margin-top: 15px;">Usuario</strong>';
	box += '	<div class="required">';
	box += '		<span class="fieldRequired">';
	box += '	<input name="USERNAME" id="USERNAME" class="textFull" type="text" size="16" tabindex="1" value="'+username+'" readonly="readonly"/>';
	box += '		</span>';
	box += '		</div>';
	box += '	<strong class="labelLogin" style="padding: 0px 5px 5px 5px; display: block; margin-top: 15px;">Contraseña</strong>';
	box += '	<div class="required">';
	box += '	<span class="fieldRequired">';
	box += '		<input name="PPASSWORD" id="PPASSWORD" class="textFull" type="password" size="16" tabindex="2"/>';
	box += '		</span><p class="iferror">Por favor complete la contraseña.</p>';
	box += '	</div>';
	box += '	<div class="divSubmitButton" style="display: block; margin-top: 15px;">';
	box += '		<button class="buttonBig" id="lnkAceptar" tabindex="3" style="color: #000000; cursor: pointer; line-height: 13px; font-size: 12px;">Aceptar</button>';
	box += '		<span class="lowerTxt" style="vertical-align: bottom; margin: 0 0 6px;">o</span>';
	box += '		<a href="javascript: login_cancelar();" id="lnkCancelar" class="lowerTxt" tabindex="4" style="vertical-align: bottom; margin: 0 0 6px;">cancelar</a>';
	box += '	</div>';
	box += '</div>';

	empUsersAjaxLayers_createGreyCover();
	jQuery('body').append(box);
	
	//agrego la funcionalidad del boton
	jQuery('#lnkAceptar').click(  function(){ login_aceptar(callBackAceptarSuccessFunction); } );
	
	//lo posiciono arriba para que lo pueda ver.
	jQuery('html,body').animate({scrollTop: 0}, 0);
}

function login_showFormIfUserNotLogged( callBackAceptarSuccessFunction )
{	
	if(typeof callBackAceptarSuccessFunction == 'undefined')
	{
		callBackAceptarSuccessFunction = function() {};
	}
	
	jQuery.ajax( {
		type :'POST',
		data :'action=VERIFY_LOGIN',
		url :"e_loginajax.ngmf",
		dataType :"html",
		error: function (xhr, ajaxOptions, thrownError)
		{
			try {
				idStatusRequest = xhr.status;
			}
			catch(e){
				idStatusRequest = -1;
			}
			if(idStatusRequest!=200)
			{
				var bHasBeenLostConnection = idStatusRequest==0;
				
				if(bHasBeenLostConnection)
				{
					empUsersAjaxLayers_showErrorConexion('Mensaje error: ' + ajaxOptions + '. Id Status request: ' + idStatusRequest);				
				}
				else
				{
					empUsersAjaxLayers_showErrorGenerico('Mensaje error: ' + ajaxOptions + '. Id Status request: ' + idStatusRequest);
				}
			}					
		},
		success: function(data)
		{
			data = jQuery.trim(data);			
			if (data.length > 0 && data == '0')
			{
				login_showForm( callBackAceptarSuccessFunction );
			}
			else
			{
				callBackAceptarSuccessFunction();
			}
		}	
	});
}

/* end emp_users_ajax_layers.js */