
if (self != top) top.location.href = self.location.href;

function Is ()
{   //convert all characters to lowercase to simplify testing
    var agt=navigator.userAgent.toLowerCase()

    // *** BROWSER VERSION ***
    this.major = parseInt(navigator.appVersion)
    this.minor = parseFloat(navigator.appVersion)

    this.nav  = ((agt.indexOf('mozilla')!=-1) && ((agt.indexOf('spoofer')==-1) && (agt.indexOf('compatible') == -1)))
    this.nav2 = (this.nav && (this.major == 2))
    this.nav3 = (this.nav && (this.major == 3))
    this.nav4 = (this.nav && (this.major == 4))
    this.navonly = (this.nav && (agt.indexOf(";nav") != -1))

    this.ie  = (agt.indexOf("msie") != -1)
    this.ie3 = (this.ie && (this.major == 2))
    this.ie4 = (this.ie && (this.major == 4))

    this.opera = (agt.indexOf("opera") != -1)
     
    // *** JAVASCRIPT VERSION CHECK *** 
    // Useful to workaround Nav3 bug in which Nav3 
    // loads <SCRIPT LANGUAGE="JavaScript1.2">.
    if (this.nav2 || this.ie3) this.js = 1.0
    else if (this.nav3 || this.opera) this.js = 1.1
    else if (this.nav4 || this.ie4) this.js = 1.2
    
	// NOTE: In the future, update this code when newer versions of JS 
    // are released. For now, we try to provide some upward compatibility 
    // so that future versions of Nav and IE will show they are at 
    // *least* JS 1.2 capable. Always check for JS version compatibility 
    // with > or >=.
    else if ((this.nav && (this.minor > 4.05)) || (this.ie && (this.major > 4))) 
         this.js = 1.2
    else this.js = 0.0 // HACK: always check for JS version with > or >=
}

var nav = new Is()
if (nav.js >= 1.2) captura();
seleccionat= false;

function captura()
{
	if (nav.nav)
	{
		if (document.getElementById)
		{
	 	  window.addEventListener("dblclick",engega_doubleclick,false);
	 	  window.addEventListener("mouseup",engega_mouseup,false);
		}
		else
		{
	  	  // Netscape 
	 	  window.captureEvents(Event.DBLCLICK | Event.MOUSEUP);
	 	  window.onDblClick = engega_doubleclick;	
		  window.onMouseUp = engega_mouseup;
		}
	}
	else
	{
	  // IE
	  document.ondblclick = engega_doubleclick;
	  document.onmouseup = engega_mouseup;
	}
}

function engega_doubleclick(e)
{
	if (seleccionat && textSeleccionat()!="") 
	{
		seleccionat=false;

		if (!e)
		{
			var e = new emula_event();
		}

		var obj = top.document.getElementById('hiperList');
		if (obj)
		{
			//obj.innerHTML = "";
			mouObjA(e.pageX,e.pageY,obj);
		}
		
		if (nav.nav) cercaf(textSeleccionat());
		else cercad(textSeleccionat());
	}
	
	return true;
}

function engega_mouseup(e)
{
   //Si hi ha text seleccionat
   seleccionat=true;	
   return true;
} 

function textSeleccionat()
{
	str = "";
	if (nav.nav) //Netscape 
	{
	   str = ""+document.getSelection(); 
  	} 
	else if (document.selection &&  document.selection.createRange) 
 	{ 
   	   var rang = document.selection.createRange(); 
  	   if (rang)   str = rang.text; 
	} 
 	
	if (str=="")  {return "";}

   	patro=/\cM/g; //Separador del Navigator
 	str = str.replace(patro,' ');
 	patro=/[.,;:?!¿¡=\(\)\[\]\t\n]/g;
 	str = str.replace(patro,'');
  
	// Treure els espais de més
	patro=/\s\s/g;
	lon=str.length;
	lon2=lon+1;
	while (lon != lon2)
	{
	   str = str.replace(patro,' ');
	   lon2 = lon;
	   lon = str.length;
	}

	str=str.substring(0,100);
	return str;
}

function cercaf(vtext)
{
	if ((vtext != " ") && (vtext != ""))
	{
		HiperText(trim(vtext));
	}
}

function cercad(vtext)
{
	if ((vtext != " ") && (vtext != ""))
	{
		if (document.selection.createRange())
		{
			var rang  = document.selection.createRange(); 
			var rang2 = document.selection.createRange().duplicate(); 

			var Ok = true;
			while ((rang2.moveStart('character', -1) != 0) && (Ok) && (rang2.text.length != rang.text.length))
			{
			   if (EsSeparador(rang2.text.charAt(0))) 
			   {
				  rang2.moveStart('character', 1);
				  rang2.select();
				  Ok = false;
			   }
		    }
			
			rang = document.selection.createRange(); 
			rang2 = document.selection.createRange().duplicate(); 
			
			Ok = true;
			if (!EsSeparador(rang.text.charAt(rang.text.length-1)))
			{		
				while ((rang.moveEnd('character', 1) != 0) && (Ok) && (rang2.text.length != rang.text.length))
				{
					if (EsSeparador(rang.text.charAt(rang.text.length-1))) 
					{	
						rang.moveEnd('character', -1);
						rang.select();
						Ok = false;
					}
				}			
			}
			
			rang = document.selection.createRange(); 
			
			while ((rang.text.length > 0) && ((rang.text.charCodeAt(rang.text.length-1) == 32) || ((rang.text.charCodeAt(rang.text.length-1) >=48) && (rang.text.charCodeAt(rang.text.length-1) <= 57))))
			{
				rang.moveEnd('character', -1);
				rang.select();
			}	
			
			rang = document.selection.createRange(); 
			
			var i;		
			var str = rang.text;
			var spl = new Array();
					
			patro=/["']/g;
			str = str.replace(patro,' ');
			
			spl = str.split(" ");
			str = " " + str + " ";

			for (i=0; i < spl.length; i++)
			{
				if (spl[i].length == 0) 
				{
					spl.splice(i,1);
					i--;
				}
			}

			var posi, posf;
			switch (spl.length)
			{
				case 1:
				{
					posi = str.indexOf(" " + spl[0]);
					posf = posi + spl[0].length-1;
				}
				break;
				
				case 2:
				{
					if (spl[0].length > spl[1].length)
					{	
						posi = str.indexOf(" " + spl[0]);
						posf = posi + spl[0].length-1;
					}
					else
					{
						posi = str.indexOf(" " + spl[1]);
						posf = posi + spl[1].length-1;
					}
				}
				break;
					
				case 3:
				{
					posi = str.indexOf(" " + spl[1]);
					posf = posi + spl[1].length-1;
				}
				break;
				
				default:{ posi = 0; posf = rang.text.length-1; }
			}
			
			rang.moveStart('character', posi);
			rang.select();
			rang.moveEnd('character', -(rang.text.length - ((posf - posi)+1)));
			rang.select();
			
			rang = document.selection.createRange(); 
			vtext = rang.text;
		}	
		HiperText(trim(vtext));
 	}
}

function EsSeparador(c)
{
	return (c == '\'' || c == '-' || c == '/' || c == '+'  || c == ',' || c == '.' || c == '$' || c == '%' || c == '&'  ||
			c == '<'  || c == '>' || c == '_' || c == '\\' || c == ';' || c == ')' || c == '=' || c == '+' || c == ':'  || 
			c == '–'  || c == '!' || c == '?' || c == '¿'  || c == '¡' || c == '(' || c == ' ' || c == '[' || c == ']'  ||
			c == '*'  || c.charCodeAt(0) == 13 || c.charCodeAt(0) == 10 || c.charCodeAt(0) == 11); 
}

function ltrim(str) 
{ 
	for(var k = 0; k < str.length && isWhitespace(str.charAt(k)); k++);
	return str.substring(k, str.length);
}

function rtrim(str) 
{
	for(var j=str.length-1; j>=0 && isWhitespace(str.charAt(j)) ; j--) ;
	return str.substring(0,j+1);
}

function trim(str) 
{
	return ltrim(rtrim(str));
}

function isWhitespace(charToCheck) 
{
	var whitespaceChars = " \t\n\r\f";
	return (whitespaceChars.indexOf(charToCheck) != -1);
}

function emula_event()
{	
	this.which=window.event.button;
	this.pageX=window.event.clientX+document.body.scrollLeft;
	this.pageY=window.event.clientY+document.body.scrollTop;
	this.target=window.event.srcElement;
	this.target.name=window.event.srcElement.name;
}

function mouObjA(x,y,objecte)
{
	if (x < 0) x = 0;
	if (y < 0) y = 0;
	
	if (document.all || document.getElementById)
	{
		objecte.style.left = x;
		objecte.style.top  = y;
	}
	else
	{
		objecte.left = x;
		objecte.top = y;
	}
}

function MostrarRelacionades()
{
	/*var frame1Document = frames['_hipertxt'].document;
	var root = frame1Document.documentElement || frame1Document.body;
	var HTML = root.innerHTML;*/
	var obj  = top.document.getElementById('hiperList');
	if (obj)
	{
		var x = parseInt(obj.style.left);
		var y = parseInt(obj.style.top);	

		if (!(isNaN(x) || isNaN(y)))
		{
			//mouObjA(-1000,-1000,obj);
			//obj.innerHTML = HTML;

			var obj2 = top.document.getElementById('hiperTable');
			if (obj2) 
			{
				var wh_body = new Array();
				wh_body     = mySize();

				var xy_scr = new Array();
				xy_scr     = getScrollXY();
			
				obj.style.display = 'block';
				
				var	w_div = obj2.clientWidth+20;
				var	h_div = obj2.clientHeight+20;

				if (x+w_div > wh_body[0]+xy_scr[0]) 
				{
					x = wh_body[0]+xy_scr[0] - w_div;
				}
				
				if (y+h_div > wh_body[1]+xy_scr[1])
				{
					y = wh_body[1]+xy_scr[1] - h_div;
				}

				mouObjA(x,y,obj);
			}
		}
	}
}

function AmagarRelacionades()
{
	var obj  = top.document.getElementById('hiperList');
	obj.style.display = 'none';
}

function mySize() 
{
  var myWidth = 0, myHeight = 0;
  
  if (typeof (window.innerWidth) == 'number') 
  {
    //Non-IE
    myWidth  = window.innerWidth;
    myHeight = window.innerHeight;
  } 
  else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) 
	{
		//IE 6+ in 'standards compliant mode'
		myWidth  = document.documentElement.clientWidth;
		myHeight = document.documentElement.clientHeight;
	} 
	else if (document.body && (document.body.clientWidth || document.body.clientHeight)) 
		{
			//IE 4 compatible
			myWidth  = document.body.clientWidth;
			myHeight = document.body.clientHeight;
		}
  
    return [myWidth, myHeight];
}

function getScrollXY() 
{
  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];
}


function HiperText(gecart)
{
	var req = new XMLHttpRequest(); 
	if (req) 
	{ 
		req.onreadystatechange = function()
		{
			if (req.readyState == 4)
			{
				if (req.responseText.substring(2,15) == "<HTML>http://")
				{// ensenya la llista o la fitxa
					var xx=req.responseText.substring(7);
					xx = xx.substring(1,xx.length-15);
					location.href = xx;
				}
				else
				{
					var demo = document.getElementById('hiperList2'); 
					demo.innerHTML=req.responseText; 
					MostrarRelacionades();				
				}
			}
		}
//		req.open('GET', 'http://ec.grec.net/9/salthiper.jsp?LEM=1&GECART='+gecart);
		req.open('GET', 'http://www.diccionari.cat/salthiper.jsp?LEM=1&GECART='+gecart);
		req.send(null); 
	}

}

function posaFocus()
{
	document.forms['form1'].GECART.focus();
}

