// JavaScript EnterActiv 2011

function Utils(dir)
{

	this.dirWeb = dir;
	
	//NAVEGADOR
	
	this.posicionarNav = function posicionarNav(id, menos)	//Posiciona el navegador a la altura del div que se pasa por referencia
	{
		pos = $(id).offset();
		$('body').animate({scrollTop: pos.top - menos}, 150, "easeOutQuart");						
	}
	
	this.navegar = function navegar(url, vars)		//Redirecciona el navegador a la url escogida
	{
		if(url == "atras")		javascript:history.back();
		else
		{
			if(url.indexOf("http") != -1)	location.href = url;
			else							location.href = this.dirWeb+url;	
		}
	}
	
	this.sacarHashLocation = function sacarHashLocation()
	{
		document.location.hash = "";
	}
	
	
	//ARRAYS
	
	
	//NUMEROS
	
	this.formatearMoneda = function formatearMoneda(value, c, t, d)
	{ 
		var n = value;
		n = n.replace(".", "");
		n = n.replace(",", "");
		
		c = isNaN(c = Math.abs(c)) ? 2 : c;
		d = d == undefined ? "," : d;
		t = t == undefined ? "." : t;
		s = n < 0 ? "-" : "";
		i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "";
		j = (j = i.length) > 3 ? j % 3 : 0;
		
		return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
	} 
	
	this.unFormat = function unFormat(pcValor)
	{
		return pcValor.replace('.', '').replace('.', '').replace('.', '').replace(',', '').replace(',', '');
	}
	
	this.MoneyFormat = function MoneyFormat(amount)
	{ 
		var val = parseFloat(amount); 
		
		if (isNaN(val)) return "0.00"; 
		if (val <= 0) 	return "0.00"; 
		
		val += ""; 
		
		if (val.indexOf('.') == -1) 	return val+".00"; 
		else							val = val.substring(0,val.indexOf('.')+3); 
		
		val = (val == Math.floor(val)) ? val + '.00' : ((val*10 == Math.floor(val*10)) ? val + '0' : val); 
		return val; 
	} 
	
	this.formatearPrecio = function formatearPrecio(nStr)
	{
		nStr += '';
		x = nStr.split('.');
		x1 = x[0];
		x2 = x.length > 1 ? ',' + x[1] : '';
		
		var rgx = /(\d+)(\d{3})/;
		while (rgx.test(x1)) {
			x1 = x1.replace(rgx, '$1' + '.' + '$2');
		}
		
		return x1 + x2;
	}
	
	
	//LETRAS
	
	this.trim = function trim (string) 
	{
		return string.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
	}

	this.ucWords = function ucWords(string)
	{
		var arrayWords;
		var returnString = "";
		var len;
		
		arrayWords = string.split(" ");
		len = arrayWords.length;
		
		for(i=0;i < len ;i++)
		{
			if(i != (len-1))
			{
				returnString = returnString+ucFirst(arrayWords[i])+" ";
			}
			else
			{
				returnString = returnString+ucFirst(arrayWords[i]);
			}
		}
		
		return returnString;
	}
		
	this.ucFirst = function ucFirst(string)
	{
		return string.substr(0,1).toUpperCase()+string.substr(1,string.length).toLowerCase();
	}
	
	this.recortarCadena = function recortarCadena(txt, long)
	{
		if(txt.length > long)
		{	
			txt = txt.substr(0, long);
			return txt+"...";
		}
		else
		{
			return txt;
		}	
	}
	
	
	
	//EVENTOS
	
	this.listen = function listen(event, elem, func) 
	{
		elem = $(elem);
		if (elem.addEventListener)  elem.addEventListener(event,func,false);
		else if (elem.attachEvent) 
		{ 
			 var r = elem.attachEvent("on"+event, func);
			return r;
		}
		else throw 'No es posible añadir evento';
	}
	
	
	
	//FLASH
	
	this.getFlash = function getFlash(nombre)
	{
	  if (window.document[nombre])	 								return window.document[nombre];
	  if (navigator.appName.indexOf("Microsoft Internet") == -1)	if (document.embeds && document.embeds[nombre])		return document.embeds[nombre];
	  else															return document.getElementById(nombre);
	}
	
	
	
	//IMAGENES
	
	this.rescatarImagenes = function rescatarImagenes(ul)
	{
		var total = $(ul+" li").length;
		var final = "";
		
		for(var i=0; i<total; i++)
		{
			final += "&image_"+i+"="+$(ul+" li:eq("+i+") img").attr('src');
		}
	
		final += "&totalImagenes="+total;
		return final;
	}
	
	
	
	//FORMULARIOS
	
	this.areaFocusIn = function areaFocusIn(obj, texto, color)
	{
		if(obj.value == texto)
		{
			obj.value = "";	
			obj.style.color = color;
			if(obj.name == "clave")		obj.type = "password";	
		}
	}
	
	this.areaFocusOut = function areaFocusOut(obj, texto, color)
	{
		if(obj.value == "")
		{
			obj.style.color = color;
			obj.value = texto;	
			if(obj.name == "clave")		obj.type = "text";	
		}
	}
	
	this.vaciarForm = function vaciarForm(Form)
	{
		for(i=0; i < Form.elements.length; i++)
		{
			if(Form.elements[i].type == "checkbox" || Form.elements[i].type == "radio")		Form.elements[i].checked = 0;
			else																			
			{
				if(Form.elements[i].title != "")	Form.elements[i].value = Form.elements[i].title;
				else								Form.elements[i].value = "";		
			}
		}
	}
	
	this.rescatarVariables = function rescatarVariables(Form)
	{
		var variables = new Array();
		var repes = new Array();
		
		for(i=0; i < Form.elements.length; i++)
		{
			var parametro;
			
			if( Form.elements[i].type == "checkbox")
			{
				parametro = encodeURIComponent(Form.elements[i].name);
				parametro += "=";
					
				if(Form.elements[i].checked)	parametro += 1;
				else							parametro += 0;	
				
				variables.push(parametro);
			}
			else if( Form.elements[i].type == "radio")
			{
				if(Form.elements[i].checked)	
				{
					parametro = encodeURIComponent(Form.elements[i].name);
					parametro += "=";
					parametro += encodeURIComponent(Form.elements[i].value);
					variables.push(parametro);
				}	
			}	
			else
			{
				parametro = encodeURIComponent(Form.elements[i].name);
				parametro += "=";
				parametro += encodeURIComponent(Form.elements[i].value);
				variables.push(parametro);
			}										
		}
	
		return variables.join("&");
	}
	
	this.validarEmail = function validarEmail(valor) 
	{
		if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(valor))	return true;
		else 																return false;
	}
	
	this.validarLink = function validarLink(valor) 
	{
		if (/^\w+([\.-]?\w+)*\.X{3}/.test(valor))
		{
			return true;
		} 
		else 
		{
			return false;
		}
	}
	
	this.validarNumero = function validarNumero(valor) 
	{
		if (/^([0-9])*$/.test(valor))	return true;
		else							return false;
	}
	
	this.validarFormulario = function validarFormulario(form)
	{
		var paso = true;
		var sms = "";
		
		for(var i=0;i<form.elements.length;i++)
		{
			if($(form.elements[i]).hasClass("requerido")) if(form.elements[i].title != "" && form.elements[i].title == form.elements[i].value)			
			{
				paso = false;
				sms = "Debes rellenar todos los datos obligatorios.";
				$(form.elements[i]).addClass("error");
				break;
			}
			
			if($(form.elements[i]).hasClass("requerido")) if(form.elements[i].value == "")			
			{
				paso = false;
				sms = "Debes rellenar todos los datos obligatorios.";
				$(form.elements[i]).addClass("error");
				break;
			}
			
			if($(form.elements[i]).hasClass("numero")) if(form.elements[i].value != "" && !this.validarNumero(parseInt(form.elements[i].value)))	
			{
				paso = false;
				sms = "Este datos debe ser un n&uacute;mero";
				$(form.elements[i]).addClass("error");
				break;
			}
			
			if($(form.elements[i]).hasClass("mayor")) if(parseInt(form.elements[i].value) <= 0)	
			{
				paso = false;
				sms = "Este dato debe ser un n&uacute;mero mayor de 0";
				$(form.elements[i]).addClass("error");
				break;
			}
			
			if($(form.elements[i]).hasClass("mayor")) if(parseInt(form.elements[i].value) > parseInt(form.elements[i].alt))	
			{
				paso = false;
				sms = "Este dato debe ser un n&uacute;mero menor que "+parseInt(form.elements[i].alt);
				$(form.elements[i]).addClass("error");
				break;
			}
			
			if($(form.elements[i]).hasClass("mail")) if(!this.validarEmail(form.elements[i].value) || form.elements[i].value == "email" )	
			{
				paso = false;
				sms = "Este e-mail tiene un formato incorrecto";
				$(form.elements[i]).addClass("error");
				break;
			}
			
			if($(form.elements[i]).hasClass("acepto")) if( form.elements[i].checked == false )	
			{
				paso = false;
				sms = "Debe aceptar la politica de privacidad de datos";
				$(form.elements[i]).addClass("error");
				break;
			}
			
			$(form.elements[i]).removeClass("error");
		}
		
		if(!paso)
		{
			form.elements[i].focus();	
			return sms;	
		}
		
		return "OK";
	}
	
	this.replaceAll = function replaceAll( text, busca, reemplaza )
	{
  		while (text.toString().indexOf(busca) != -1)	text = text.toString().replace(busca,reemplaza);
  		return text;
	}
	
	this.limpiarHTML = function limpiarHTML (texto) 
	{
    	texto = this.replaceAll(texto, '&nbsp;', ' ');
    	return texto;
	}		
	
	this.formearCodigo = function formearCodigo(codigo)
	{
		codigo = this.replaceAll(codigo, '<', '&lt;');
		codigo = this.replaceAll(codigo, '>', '&gt;');
    	return codigo;
	}
	
}
