﻿/* ------------------------------------------------------------
	Clase que nos permite detectar sobre que navegador estamos funcionando.
	------------------------------------------------------------
	------------------------------------------------------------ */
function WBECheckBrowser(){
	this.ver=navigator.appVersion;
	this.dom=document.getElementById?1:0;
	this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom)?1:0;
	this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom)?1:0;
	this.ie4=(document.all && !this.dom)?1:0;
	this.ie=(this.ie4 || this.ie5 || this.ie6);
	this.ns5=(this.dom && parseInt(this.ver) >= 5) ?1:0;
	this.ns4=(document.layers && !this.dom)?1:0;
	this.ns=(this.ns4 || this.ns5);
	this.bw=(this.ie6 ||this.ie5 || this.ie4 || this.ns4 || this.ns5);
	return this;
}
/* ------------------------------------------------------------------ */



/* ------------------------------------------------------------
	------------------------------------------------------------
	Funciones principales Javascript.
	Javascript Helper
	------------------------------------------------------------
	------------------------------------------------------------ */
function WBEJsHelper(){

	/* Incluye un javascript en la pagina. */
	this.include = function (script_filename) {
		document.write('<' + 'script language="javascript" type="text/javascript"');
		document.write(' src="' + script_filename + '">');
		document.write('</' + script + '>');
	}

	/* Devuelve la posición XY del raton al ejecutar un evento.
		Recibe el evento */
	this.getMouseXY = function(event)
	{
		var position = new Object();

		// Get cursor position with respect to the page.
		if (document.documentElement && document.body && window.event) {
			position.x = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
			position.y = window.event.clientY + document.documentElement.scrollTop + document.body.scrollTop;
		} else if (window.scrollX != undefined) {
			position.x = event.clientX + window.scrollX;
			position.y = event.clientY + window.scrollY;
		}
		return position;
	};
	
	/* Devuelve la posición XY de un elemento
	es independiente del navegador  (probado solo IE y FF)
	*/
	this.findPos = function(obj) {
		var curleft = curtop = 0;
		if (obj.offsetParent) {
			curleft = obj.offsetLeft
			curtop = obj.offsetTop
			while (obj = obj.offsetParent) {
				curleft += obj.offsetLeft
				curtop += obj.offsetTop
			}
		}
		return [curleft,curtop];
	}

	/* Calcula y devuelve el tamanyo de la ventana del navegador.
		Lo devuelve en un array 2N (ancho, alto) */
	this.getWindowSize = function() {
	  var myWidth = 0, myHeight = 0;
	  if( typeof( window.innerWidth ) == 'number' ) {
		myWidth = window.innerWidth;
		myHeight = window.innerHeight;
	  } else if( document.documentElement &&
		  ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
		myWidth = document.documentElement.clientWidth;
		myHeight = document.documentElement.clientHeight;
	  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
		myWidth = document.body.clientWidth;
		myHeight = document.body.clientHeight;
	  }
	  return [ myWidth, myHeight];
	}

	/* Calcula y devuelve la el desplazamiento que tenemos en el scroll. 
		Lo devuelve en un array 2N (offsetX, offsetY) */
	this.getWindowScrollXY = function() {
	  var scrOfX = 0, scrOfY = 0;
	  if( typeof( window.pageYOffset ) == 'number' ) {
		//Netscape compliant
		scrOfY = window.pageYOffset;
		scrOfX = window.pageXOffset;
	  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
		//DOM compliant
		scrOfY = document.body.scrollTop;
		scrOfX = document.body.scrollLeft;
	  } else if( document.documentElement &&
		  ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
		//IE6 standards compliant mode
		scrOfY = document.documentElement.scrollTop;
		scrOfX = document.documentElement.scrollLeft;
	  }
	  return [ scrOfX, scrOfY ];
	}

    /* Hace scroll de la pagina en funcion de la posición del raton */
	this.doPageScroll = function(pos_xy) {
		var oSize = this.getWindowSize();
		var oScroll = this.getWindowScrollXY();
		var oPageHeight = oScroll[1] + oSize[1];
		var oPageWidth = oScroll[0] + oSize[0];
		
		if (oScroll[1]>0 && oScroll[1] <= pos_xy.y && pos_xy.y< oScroll[1]+10)
			window.scrollTo(oScroll[0], oScroll[1]-5);
		else if (oPageHeight-10 < pos_xy.y && pos_xy.y<= oPageHeight)
			window.scrollTo(oScroll[0], oScroll[1]+5);
		if (oScroll[0]>0 && oScroll[0] <= pos_xy.x && pos_xy.x< oScroll[0]+10)
			window.scrollTo(oScroll[0]-5, oScroll[1]);
		else if (oPageWidth-10 < pos_xy.x && pos_xy.x<=oPageWidth)
			window.scrollTo(oScroll[0]+5, oScroll[1]);
	}

	/* Devuelve la anchura total de la ventana. */
	this.getViewWidth = function () {
		var oSize = this.getWindowSize();
		return oSize[0];
	};

	/* Devuelve la altura total de la ventana. */
	this.getViewHeight = function () {
		var oSize = this.getWindowSize();
		return oSize[1];
	};

	/* Captura un manejador para un evento.
		Parametros(objeto que captura el evento, evento, manejador, true si lo queremos quitar)
		Podemos añadirlo o eliminarlo pasándole remove como true */
	this.handleEvent = function (object, sEvent, handler, remove) {
		if (!remove) {
			if (object.addEventListener) {
				object.addEventListener(sEvent, handler, true);
			} else {
				object.attachEvent("on" + sEvent, handler);
			}
		} else {
			if (object.removeEventListener)
	  			object.removeEventListener(sEvent, handler, true);
			else
				object.detachEvent("on" + sEvent, handler);
		}
	};

	/* Devuelve el maximo Zindex de la pagina actual */
	this.getMaxZindex = function () {
		var allElems = document.getElementsByTagName ? document.getElementsByTagName("*") : document.all; // or test for that too
		var maxZIndex = 0;
		var sNum;
		var elem;
		var cStyle;
		for(var i=0; i<allElems.length; i++) {
			elem = allElems[i];
			cStyle = null;

			if (elem.currentStyle)
				cStyle = elem.currentStyle;
			else if (document.defaultView && document.defaultView.getComputedStyle)
				cStyle = document.defaultView.getComputedStyle(elem, "");

			if (cStyle) sNum = Number(cStyle.zIndex);
			else sNum = Number(elem.style.zIndex);

			if (!isNaN(sNum)) maxZIndex = Math.max(maxZIndex,sNum);
		}
		return 	maxZIndex;
	};
};
/* ------------------------------------------------------------
	------------------------------------------------------------
	------------------------------------------------------------ */

