/*
    WebSnapr - Preview Bubble Javascript
    Written by Juan Xavier Larrea 
    http://www.websnapr.com - xavier@websnapr.com   
    
*/
/*
    Modificada 01 Febrero 2007 por Roy Alvear
    cambiando el uso de una vista previa de
    la pagina web por un texto introduciodo
    en el nombre del hipervinculo.
*/

// Point this variable to the correct location of the bg.png file
//var bubbleImagePath = 'bg.png';


var imgPath = "typo3conf/ext/herramienta_analisis/lib/textbubble/";


//las imagenes corresponden al los bordes e interior de la tabla de la siguiente forma
/*
  1   2   3

  4   5   6

  7   8   9

bubr es el trozo de la burbuja que falra por recorte de imagen
*/
var alto1 = 23;
var alto7 = 12;
var ancho1= 21;
var ancho3= 15;
var anchoTabla = 150;

var bub1 = imgPath + 'img1.png';
var bub2 = imgPath + 'img2.png';
var bub3 = imgPath + 'img3.png';
var bub4 = imgPath + 'img4.png';
var bub5 = imgPath + 'img5.png';
var bub6 = imgPath + 'img6.png';
var bub7 = imgPath + 'img7.png';
var bub8 = imgPath + 'img8.png';
var bub9 = imgPath + 'img9.png';
var bubr = imgPath + 'bub.png';

// DO NOT EDIT BENEATH THIS
if(typeof Array.prototype.push!="function"){
        Array.prototype.push=ArrayPush;
        function ArrayPush(_1){
                this[this.length]=_1;
        }
}

//dada un area de busqueda, un tipo de elemento a buscar y un nombre de clase de busqueda
//retorna un arreglo de los elementos encontrados que pertenecen a dicha clase
function WSR_getElementsByClassName(areaDeBusqueda,objElement,classElement){
        var elementList=(objElement=="*"&&areaDeBusqueda.all)?areaDeBusqueda.all:areaDeBusqueda.getElementsByTagName(objElement);
        var elementByClass=new Array();
        classElement=classElement.replace(/\-/g,"\\-");
        var regExpClass=new RegExp("(^|\\s)"+classElement+"(\\s|$)");
        var thisElement;
        for(var i=0;i<elementList.length;i++){
                thisElement=elementList[i];
                if(regExpClass.test(thisElement.className)){
                        elementByClass.push(thisElement);
                }
        }
return (elementByClass);
}

//agrega oidores mouseover y mouseout a una lista de elementos
function bindBubbles(e){
        lbActions=WSR_getElementsByClassName(document,"a","textlink");
        for(i=0;i<lbActions.length;i++){
                if(window.addEventListener){
                        lbActions[i].addEventListener("mouseover",attachBubbleTx,false);
                        lbActions[i].addEventListener("mouseout",detachBubble,false);
                }else{
                        lbActions[i].attachEvent("onmouseover",attachBubbleTx);
                        lbActions[i].attachEvent("onmouseout",detachBubble);
                }
        }
}

//agrega burbuja
function attachBubbleTx(_b){
        var objLink;
        if(_b["srcElement"]){
	        objLink=_b["srcElement"];
        }else{
	        objLink=_b["target"];
        }
        if (objLink.href == undefined){
	        objLink=objLink.parentNode;
        }
        var httpRef=objLink.href;
        var curLeft=findPos(objLink)[0]+5;
        var curTop=findPos(objLink)[1]+17;

        var divElem=document.createElement("div"); // crear sontenedor div
        document.getElementsByTagName("body")[0].appendChild(divElem);
        divElem.className="previewbubble";

        if (BrowserDetect.browser == 'Explorer') {
                divElem.style.width=""+ anchoTabla +"px";
                divElem.style.position="absolute";
                divElem.style.top=curTop;
                divElem.style.zIndex=99999;
                divElem.style.left=curLeft;
                divElem.style.textAlign="left";
                divElem.style.paddingTop="0";
                divElem.style.paddingLeft="0";
                divElem.style.paddingBottom="0";
                divElem.style.paddingRight="0";
                divElem.style.marginTop="0";
                divElem.style.marginLeft="0";
                divElem.style.marginBottom="0";
                divElem.style.marginRight="0";
        } else {
                divElem.setAttribute("style","text-align: center; z-index: 99999; position: absolute; top: "+curTop+"px ; left: "+curLeft+"px ; width: 100%;  padding: 0; margin: 0;");
        }

        if (BrowserDetect.browser != 'Explorer') { // Crear contenedor con imagen de burbuja
                var tabla=document.createElement("table"); //crear tabla
    			  
                var f = new Array();
                for(i=0;i<3;i++)
                    f[i] = document.createElement("tr"); //crear filas
        
                var c = new Array();
                for(i=0;i<9;i++)
                    c[i] = document.createElement("td");  //crear celdas
    
                for(i=0;i<3;i++)
                        tabla.appendChild(f[i]); //agrego filas a la tabla
                for(i=0;i<3;i++)
                        f[0].appendChild(c[i]);  //agrego celdas a fila 1
                for(i=3;i<6;i++)
                        f[1].appendChild(c[i]); //agrego celdas a fila 2
                for(i=6;i<9;i++)
                        f[2].appendChild(c[i]); //agrego celdas a fila 3
        
                divElem.appendChild(tabla);     //agrego la tabla al div contenedor

				//dar formatos            
                var extra=Array();
                extra[0]=" width:"+ ancho1 +"px; height:"+ alto1 +"px; background-image: url("+ bub1 +"); background-repeat: no-repeat;";
                extra[1]=" background-image: url("+ bub2 +"); background-repeat: repeat-x;";
                extra[2]=" width:"+ ancho3 +"px; background-image: url("+ bub3 +"); background-repeat: no-repeat;";
                extra[3]=" background-image: url("+ bub4 +"); background-repeat: repeat-y;";
                extra[4]=" background-image: url("+ bub5 +");";
                extra[5]=" background-image: url("+ bub6 +"); background-repeat: repeat-y;";
                extra[6]=" height:"+ alto7 +"px; background-image: url("+ bub7 +"); background-repeat: no-repeat;";
                extra[7]=" background-image: url("+ bub8 +"); background-repeat: repeat-x;";
                extra[8]=" background-image: url("+ bub9 +"); background-repeat: no-repeat;";

                tabla.setAttribute("style","width: "+ anchoTabla +"px; padding: 0; margin: 0;");
                for(i=0;i<9;i++){
                        estilo = "padding: 0; margin: 0;" + extra[i];
                        c[i].setAttribute("style",estilo);
                }
                tabla.setAttribute("cellspacing","0");
                tabla.setAttribute("cellpadding","0");
        }
		else { //if (BrowserDetect.browser == 'Explorer') {
			    var c = new Array();
			    for(i=0;i<9;i++)
			    		c[i]=document.createElement('div');
			    		
			    for(i=0;i<9;i++)
			    		divElem.appendChild(c[i]);
			    		//document.getElementsByTagName("body")[0].appendChild(c[i]);
			    
                for(i=0;i<9;i++){
                        c[i].style.paddingTop="0";
                        c[i].style.paddingLeft="0";
                        c[i].style.paddingBottom="0";
                        c[i].style.paddingRight="0";
                        c[i].style.marginTop="0";
                        c[i].style.marginLeft="0";
                        c[i].style.marginBottom="0";
                        c[i].style.marginRight="0";
                        c[i].style.borderTop ="0";
                        c[i].style.borderLeft ="0";
                        c[i].style.borderRight ="0";
                        c[i].style.borderBottom ="0";
                        c[i].style.position="absolute";
						//	c[i].style.position="relative";
                        //c[i].style.backgroundColor="#EEEEEE";
                }
                
        		c[0].style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + bub1 +"',sizingMethod='image')";
        		c[1].style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + bub2 +"',sizingMethod='image')";
        		c[2].style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + bub3 +"',sizingMethod='image')";
        		c[3].style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + bub4 +"',sizingMethod='image')";
        		//c[4].style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + bub5 +"',sizingMethod='image')";
        		c[5].style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + bub6 +"',sizingMethod='image')";
        		c[6].style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + bub7 +"',sizingMethod='image')";
        		c[7].style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + bub8 +"',sizingMethod='image')";
        		c[8].style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + bub9 +"',sizingMethod='image')";
                
                c[0].style.width =""+ancho1+"px";
                c[0].style.height=""+alto1+"px";
                c[2].style.width =""+ancho3+"px";
                c[6].style.height=""+alto7+"px";
                c[1].style.width =""+ (anchoTabla-(ancho1+ancho3)) +"px";
                
                c[1].style.height=c[0].style.height;
                c[2].style.height=c[0].style.height;
                c[3].style.width =c[0].style.width;
                c[6].style.width =c[0].style.width;
                c[7].style.height=c[6].style.height;
                c[7].style.width =c[1].style.width;
                c[8].style.height=c[6].style.height;
                c[8].style.width =c[2].style.width;
                c[5].style.width =c[2].style.width;
                c[4].style.width =c[1].style.width;
        } 
        
        var arrayTx = objLink.name.split("|");
        var elemShow = document.createElement('div');
        extralargo=0;
        for(i=0;i<arrayTx.length;i++){
                elemShow.appendChild(document.createTextNode(arrayTx[i]));
                if((arrayTx[i].length*8)>(anchoTabla-(ancho1+ancho3)))
                   extralargo=extralargo+(arrayTx[i].length*8)/(anchoTabla-(ancho1+ancho3))-1;
                elemShow.appendChild(document.createElement('br'));
        }
        numrows=(i+1+extralargo)*16; //numero aprox de filas en pixceles
        if (BrowserDetect.browser == 'Explorer') {
                elemShow.style.paddingTop="0px";
                elemShow.style.paddingLeft="0px";
                elemShow.style.paddingBottom="0px";
                elemShow.style.paddingRight="0px";
                elemShow.style.margin="auto";
                elemShow.style.marginTop="0px";
                elemShow.style.marginLeft="0px";
                elemShow.style.marginBottom="0px";
                elemShow.style.marginRight="0px";
                elemShow.style.borderTop="0";
                elemShow.style.borderLeft="0";
                elemShow.style.borderBottom="0";
                elemShow.style.borderRight="0";
				elemShow.style.textAlign="justify";
                elemShow.style.backgroundColor="#FFFFFF";
                elemShow.style.width=""+(anchoTabla-(ancho1+ancho3))+"px";
                elemShow.style.height=""+numrows+"px";
				elemShow.style.fontSize="11px";
				elemShow.style.fontFamily="Verdana,sans-serif";
				
				
				
        } else {
                elemShow.setAttribute("style","padding-top: 2px;font-size:11px;font-family:Verdana,sans-serif;padding-left: 2px; padding-right: 2px; padding-bottom: 2px; margin-top: 2px; margin-left: 2px; margin-bottom: 2px; margin-right: 2px; border:0; text-align: justify; background-color:#FFFFFF;");
        }

        c[4].appendChild(elemShow);

		if (BrowserDetect.browser == 'Explorer') {
		   		c[4].style.height=numrows;

		   		c[3].style.height = c[4].style.height;
		   		c[5].style.height = c[4].style.height;

				curTop=0;
				curLeft=0;

                c[0].style.top=curTop;
                c[0].style.left=curLeft;
				c[1].style.top=curTop;//-alto1;
                c[1].style.left=curLeft+ancho1;
                c[2].style.top=curTop;//-alto1*2;
                c[2].style.left=curLeft+(anchoTabla-ancho3);
                
				c[3].style.top=curTop+alto1;//-alto1*2;
				c[3].style.left=curLeft;
				c[4].style.top=curTop+alto1;//-alto1*2;
				c[4].style.left=curLeft+ancho1;
				c[5].style.top=curTop+alto1;//-alto1*2;//curTop-c[4].style.height;
                c[5].style.left=curLeft+(anchoTabla-ancho3);
                
                c[6].style.left=curLeft;
                c[6].style.top =numrows+alto1;// -alto1*2;
                c[7].style.left=curLeft+ancho1;
                c[7].style.top =numrows+alto1;// -(alto7 + alto1*2);
                c[8].style.left=curLeft+(anchoTabla-ancho3);
                c[8].style.top =numrows+alto1;// -(alto7*2 + alto1*2);
                
                bordeUp=Array();
                bordeDw=Array();
                anchoCentro=anchoTabla-(ancho1+ancho3);
                for(i=1;i<anchoCentro/3;i++){
                   posX=curLeft+ancho1+i*3;
                   bordeUp[i]=document.createElement('div');               
                   bordeUp[i].style.position="absolute";
                   bordeUp[i].style.width="3px";
                   bordeUp[i].style.height=""+alto1+"px";
                   bordeUp[i].style.top=curTop;
                   bordeUp[i].style.left=posX;
                   bordeUp[i].style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + bub2 +"',sizingMethod='image')";
                   bordeDw[i]=document.createElement('div');               
                   bordeDw[i].style.position="absolute";
                   bordeDw[i].style.width="3px";
                   bordeDw[i].style.height=""+alto7+"px";
                   bordeDw[i].style.top=numrows+alto1;
                   bordeDw[i].style.left=posX;
                   bordeDw[i].style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + bub8 +"',sizingMethod='image')";                   
				   divElem.appendChild(bordeUp[i]);
				   divElem.appendChild(bordeDw[i]);
                }  
				 		
                BordeIz=Array();
                BordeDr=Array();
                for(i=1;i<numrows/5;i++){
                   posY=curTop+alto1+i*5;
                   BordeIz[i]=document.createElement('div');               
                   BordeIz[i].style.position="absolute";
                   BordeIz[i].style.width=""+ancho1+"px";
                   BordeIz[i].style.height="5px";
                   BordeIz[i].style.top=posY;
                   BordeIz[i].style.left=curLeft;
                   BordeIz[i].style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + bub4 +"',sizingMethod='image')";
                   BordeDr[i]=document.createElement('div');               
                   BordeDr[i].style.position="absolute";
                   BordeDr[i].style.width=""+ancho3+"px";
                   BordeDr[i].style.height="5px";
                   BordeDr[i].style.top=posY;
                   BordeDr[i].style.left=curLeft+ancho1+anchoCentro;
                   BordeDr[i].style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + bub6 +"',sizingMethod='image')";                   
				   divElem.appendChild(BordeIz[i]);
				   divElem.appendChild(BordeDr[i]);
                }   		
		}

        var img=document.createElement("img");
        if (BrowserDetect.browser == 'Explorer') {
                img.style.paddingTop="0";
                img.style.paddingLeft="0";
                img.style.paddingBottom="0";
                img.style.paddingRight="0";
                img.style.margin="auto";
                img.style.marginTop="0px";
                img.style.marginLeft="0px";
                img.style.marginBottom="0";
                img.style.marginRight="0";
                img.style.borderTop="0";
                img.style.borderLeft="0";
                img.style.borderBottom="0";
                img.style.borderRight="0";
            	img.style.position="absolute";
            	img.style.top=curTop;
            	img.style.left=curLeft+ancho1;                
        } else {
                img.setAttribute("style","padding-top: 0; padding-left: 0; padding-right: 0; padding-bottom: 0; margin-top: 0px; margin-left: 0px; margin-bottom: 0; margin-right: 0; border: 0");
        }
        img.setAttribute("src",bubr);
        img.setAttribute("width",30);
        img.setAttribute("height",23);
        img.setAttribute("alt","");
        if(BrowserDetect.browser != 'Explorer')
        		c[1].appendChild(img);
        else
        		divElem.appendChild(img);
}

//quita burbuja
function detachBubble(_12){
        lbActions=WSR_getElementsByClassName(document,"div","previewbubble");
        for(i=0;i<lbActions.length;i++){
                lbActions[i].parentNode.removeChild(lbActions[i]);
        }
}

//agrega oidor de carga (este a su vez llama a la funcion que crea los oidores de raton)
if(window.addEventListener){
        addEventListener("load",bindBubbles,false);
}else{
        attachEvent("onload",bindBubbles);
}

//retorna la posicion del objeto
function findPos(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];
}

var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();
