/*========================================================================*/
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 (document.documentElement)
	{
		dim[0] = document.documentElement.clientWidth;
		dim[1] = document.documentElement.clientHeight;
	}else{
		dim[0] = document.body.clientWidth;
		dim[1] = document.body.clientHeight;
	}
	return dim;
}

/**
*	@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;
}