/*========================================================================*/
var OPERA	= (/Opera/i.test(window.navigator.userAgent));
var IE		= (/MSIE/i.test(window.navigator.userAgent) && !OPERA);
var IE6		= (/MSIE 6/i.test(window.navigator.userAgent) && !OPERA);
var IE7		= (/MSIE 7/i.test(window.navigator.userAgent) && !OPERA);
var MOZ		= (/(firefox|gecko)/i.test(window.navigator.userAgent));
var mouseX	= 0;
var mouseY	= 0;
/*========================================================================*/
/* Validaciones */
var emailFilter = /^[a-z0-9_.-]{2,}@[a-z0-9_.-]{2,}\.[a-z]{2,3}(?:\.[a-z]{2})?$/i;
var dateFilter1	= /^\d{4}-\d{2}-\d{2}(\s\d{2}:\d{2}(:\d{2})?)?$/i;	// yyyy-mm-dd (hh:mm:ss)
var dateFilter2	= /^\d{2}\/\d{2}\/\d{4}$/i;							// mm/dd/yyyy | dd/mm/yyyy
var dateFilter3	= /^\d{4}-\d{2}-\d{2}$/i;							// yyyy-mm-dd
var phoneFilter	= /^[0-9_.-]+$/i;

/* funcion mejorada de escape() para AJAX */
function encode(v)
{
	return escape(v).replace(/\+/ig, '%2B').replace(/\//ig, '%2F');
}

/* Codificar en UTF-8 */
function UTF8encode(v)
{
	return encodeURIComponent(v)
}

/**
*	@return		array	scroll del documento actual (x,y)
*/
function getScrollXY()
{
	var dim = new Array();
	if (document.documentElement && IE)
	{
		dim[0] = document.documentElement.scrollLeft + document.body.scrollLeft;
		dim[1] = document.documentElement.scrollTop + document.body.scrollTop;
	}
	else if (MOZ || OPERA)
	{
		dim[0] = window.pageXOffset;
		dim[1] = window.pageYOffset;
	}
	else
	{
		dim[0] = document.body.scrollLeft;
		dim[1] = document.body.scrollTop;
	}
	return dim;
}

/**
*	@return		array	dimensiones del documento actual - area de vision (x,y)
*/
function getMaxXY()
{
	var dim = new Array();
	if (!IE)
	{
		dim[0] = window.innerWidth;
		dim[1] = window.innerHeight;
	}
	else
	{
		dim[0] = document.documentElement.clientWidth;
		dim[1] = document.documentElement.clientHeight;
	}
	return dim;
}

/**
*	@desc	Obtener las coordenadas de un elemento con respecto a documentElement
*	@param	object
*	@return	array
*/
function getOffset(o)
{
	var tmp = o;
	var offset = [0,0];
	while (tmp)
	{
		offset[0] += tmp.offsetLeft;
		offset[1] += tmp.offsetTop;
		tmp = tmp.offsetParent;
	}
	return offset;
}

/**
*	@desc	Obtener estilo para un elemento
*	@param	object
*	@param	string	propiedad
*/
function getStyle(ob, styleProp)
{
	var o = (typeof ob == 'string') ? document.getElementById(ob) : ob;
	if (o.currentStyle)	// IE
	{
		var tmp = styleProp.indexOf('-');
		if (tmp > -1)
		{
			var letter = styleProp.charAt(tmp+1).toUpperCase();
			styleProp = styleProp.substring(0, tmp) + letter + styleProp.substr(tmp+2);
		}
		return o.currentStyle[styleProp];
	}
	else if (window.getComputedStyle)
	{
		return document.defaultView.getComputedStyle(o, null).getPropertyValue(styleProp);
	}
}

/**
*	@return		array	Coordenadas del mouse
*/
function findMouse(e)
{
	var scrollXY = getScrollXY();
	if (typeof e == 'undefined') var e = window.event;
	mouseX = e.clientX + scrollXY[0];
	mouseY = e.clientY + scrollXY[1];
}

/**
*	@desc	Inicializar las coordenadas del mouse
*/
function initMouseEvent()
{
	if (IE) document.body.attachEvent('onmousemove', findMouse);
	if (MOZ || OPERA) window.addEventListener('mousemove', findMouse, false);
}

/**
*	@desc		alias de trim() en PHP
*	@return		string
*/
function trim(v)
{
	return v.replace(/^\s+/i, '').replace(/\s+$/i, '');
}

/**
*	@desc		Alias de document.getElementById
*	@return		object|null
*/
function get(oID)
{
	return document.getElementById(oID);
}

/**
*	@desc		validar elementos de formulario
*	@param		string	elemID [, elemID [, elemID [,...]]]
*	@return		bool
*/
function valueTest()
{
	var ids = arguments, i, obj;
	
	for (i=0;i<ids.length;i++)
	{
		obj = get(ids[i]) ? get(ids[i]) : document.getElementsByName(ids[i])[0];

		
		if (!trim(obj.value))
		{
			alert('Please fill all the required fields!');
			obj.focus();
			return false;
		}
	}
	return true;
}
