addLoadListener(init);

var msx=0;
var msy=0;
var obj;
var xmlsw=0;

function init()
{
  attachEventListener(document, "mousedown", setCursorPosition, false);
  attachEventListener(document, "mousemove", watchCursorPosition, false);
//  setit();
  return true;
}

function setCursorPosition(event){
	cursorPosition=displayCursorPosition(event)
	msx=cursorPosition[0];
    msy=cursorPosition[1];
}

function watchCursorPosition(event){
	
	cursorPosition=displayCursorPosition(event)
	if(
	   cursorPosition[0]>msx+15 ||   cursorPosition[1]>msy+15 ||
	   cursorPosition[0]<msx-15 ||   cursorPosition[1]<msy-15
												   ){
		el=document.getElementById('glossary_popup')
		el.style.display='none';
	}
		

}

function displayCursorPosition(event)
{
  if (typeof event == "undefined")
  {
    event = window.event;
  }

  var scrollingPosition = getScrollingPosition();
  var cursorPosition = [0, 0];

  if (typeof event.pageX != "undefined" && typeof event.x != "undefined")
  {
    cursorPosition[0] = event.pageX;
    cursorPosition[1] = event.pageY;
  }
  else
  {
    cursorPosition[0] = event.clientX + scrollingPosition[0];
    cursorPosition[1] = event.clientY + scrollingPosition[1];
  }

//  var paragraph = document.getElementsByTagName("p")[0];

//  paragraph.replaceChild(document.createTextNode("Your mouse is currently located at: " + cursorPosition[0] + "," + cursorPosition[1]), paragraph.firstChild);

  return cursorPosition;
}

function addLoadListener(fn)
{
  if (typeof window.addEventListener != 'undefined')
  {
    window.addEventListener('load', fn, false);
  }
  else if (typeof document.addEventListener != 'undefined')
  {
    document.addEventListener('load', fn, false);
  }
  else if (typeof window.attachEvent != 'undefined')
  {
    window.attachEvent('onload', fn);
  }
  else
  {
    var oldfn = window.onload;
    if (typeof window.onload != 'function')
    {
      window.onload = fn;
    }
    else
    {
      window.onload = function()
      {
        oldfn();
        fn();
      };
    }
  }
}

function attachEventListener(target, eventType, functionRef, capture){
	if (typeof target.addEventListener != "undefined")  {
		target.addEventListener(eventType, functionRef, capture);
	}else if (typeof target.attachEvent != "undefined")  {
		target.attachEvent("on" + eventType, functionRef);
	}  else  {
		eventType = "on" + eventType;
		if (typeof target[eventType] == "function")    {
		  var oldListener = target[eventType];
		  target[eventType] = function()
				{	oldListener();
					return functionRef();
				}
		}else{
		  target[eventType] = functionRef;
		}
	}
	return true;
}

function getScrollingPosition(){
  //array for X and Y scroll position
  var position = [0, 0];
  //if the window.pageYOffset property is supported
  if(typeof window.pageYOffset != 'undefined')  {
    //store position values
    position = [
        window.pageXOffset,
        window.pageYOffset
    ];
  }

  //if the documentElement.scrollTop property is supported
  //and the value is greater than zero
  if(typeof document.documentElement.scrollTop != 'undefined'
    && document.documentElement.scrollTop > 0)  {
    //store position values
    position = [
        document.documentElement.scrollLeft,
        document.documentElement.scrollTop
    ];
  }else if(typeof document.body.scrollTop != 'undefined')  {
  //if the body.scrollTop property is supported
    //store position values
    position = [
        document.body.scrollLeft,
        document.body.scrollTop
    ];
  }
  //return the array
  return position;
}
//-----------------------------------------------------------------------
function initXMLHR(reqstr){
	var requester;
//alert('2'+reqstr);
	try{ 
		requester = new XMLHttpRequest();
	}catch (error){
		try{
			requester = new ActiveXObject("Microsoft.XMLHTTP");
		}catch (error){
			requester = null;
		}
	}
	if (requester != null) {
		requester.onreadystatechange = function(){
			if (requester.readyState == 4){
				if (requester.status == 200 || requester.status == 304){
//					alert('w');
					success(requester);
				}else{
					failure(requester);
				}
			}
			return true;
		};
//alert('3,'+reqstr)		
		
		requester.open("GET", reqstr,true);
		requester.send(null);
	}else{
		return false;
	}
	return true;
}
//-----------------------------------------------------------------------
function success(requester){

//		alert(requester.responseText)

	if(xmlsw==-1){
		xmlsw=0;
		return
	}
//	alert('xmlsw='+xmlsw)
var responder = requester.responseText;
var typesw=1;

 /*
 pos=responder.indexOf('#');
  pos2=responder.indexOf('#',pos+1);
  
  resp1=responder.substring(0,pos)
  resp2=responder.substring(pos+1,pos2-1)
  if(typesw==0){
  	resp3=responder.substring(pos+1,responder.length-1)
  }else{
  	resp3=responder.substring(pos2+1,responder.length-1)
  }
 */
 
	splitr=responder.split("#");
	resp1=splitr[0];
	resp2=splitr[1];
	resp3=splitr[2];

  el=document.getElementById('glossary_term')
  if(resp2) resp2=' ('+resp2+')'
  el.innerHTML=resp1+ resp2
  el=document.getElementById('glossary_def')
  el.innerHTML=resp3
  
  el=document.getElementById('glossary_popup')

  if(msx > 475){
	  el.style.left=msx- parseInt(el.style.width);
  }else{
	  el.style.left=msx;
  }
 	el.style.visibility='hidden';
	el.style.display='block';
 	el.style.visibility='visible';
	viewportsize=getViewportSize();
	viewportheight=viewportsize[1];
	scrollpos=getScrollingPosition();
	scrolltoph=scrollpos[1];
	botsee=viewportheight+scrolltoph;
	gap=botsee-msy
	if(gap>el.clientHeight+20){
//		window.scrollTo(0,botpop-viewportheight)
//	alert(retrieveComputedStyle(el,'height'))
		el.style.top=msy+20
	}else{
		el.style.top=msy-(el.clientHeight+20)
	}
  return true;
}
//--------------------------------------------------------------------------	
	function retrieveComputedStyle(element, styleProperty){
	  var computedStyle = null;
	  if (typeof element.currentStyle != "undefined")  {
	    computedStyle = element.currentStyle;
	  }  else  {
	    computedStyle = document.defaultView.getComputedStyle(element, null);
	  }
	  return computedStyle[styleProperty];
	}	
//--------------------------------------------------------------------------	
	function getViewportSize(){
	  var size = [0, 0];
	  if (typeof window.innerWidth != 'undefined')  {
	    size = [window.innerWidth,window.innerHeight];
	  }else if (typeof document.documentElement != 'undefined'
	      && typeof document.documentElement.clientWidth != 'undefined'
	      && document.documentElement.clientWidth != 0){
	    		size = [document.documentElement.clientWidth,document.documentElement.clientHeight];
	  }else{
	    	size = [document.getElementsByTagName('body')[0].clientWidth,
	    	document.getElementsByTagName('body')[0].clientHeight ];
	  }
	  return size;
	}
//-----------------------------------------------------------------------
function failure(requester){
  alert("The XMLHttpRequest failed with status code: " + requester.status);
  return true;
}
//-----------------------------------------------------------------------
function getPosition(theElement)
{
  var positionX = 0;
  var positionY = 0;

  while (theElement != null)
  {
    positionX += theElement.offsetLeft;
    positionY += theElement.offsetTop;
    theElement = theElement.offsetParent;
  }
  
  return [positionX, positionY];
}
//-----------------------------------------------------------------------
function openit(opstr){
//alert('openit,'+opstr)
		initXMLHR("getdef.php?defid="+opstr + String.fromCharCode(38) + 'term=-1&'+new Date().getTime())
//		initXMLHR("http://www.cooksreference.co.uk/getdef.php?defid="+opstr + String.fromCharCode(38) + 'term=-1')
}
//-----------------------------------------------------------------------
function openitr(opstr){
//alert('openitr,'+opstr)
		initXMLHR("getdef.php?defid="+opstr + String.fromCharCode(38) + 'term=-1&'+new Date().getTime())
//		initXMLHR("http://www.cooksreference.co.uk/getdef.php?defid="+opstr + String.fromCharCode(38) + 'term=-1')
}
//-----------------------------------------------------------------------
function setit(){
	//return
	
//	for(j=0; j<1; j++){
//		if(j==0){
			elmethod=document.getElementById('method');
//		}else{
//			elmethod=document.getElementById('ingredients');
//		}
		if(typeof(elmethod)!='undefined'){
			anchors=elmethod.getElementsByTagName('a')
			for(var i=0; !(i>=anchors.length) ; i++){
	/*			anchors[i].onmouseover=function(){
						posn=getPosition(this)
						msx=posn[0]+10
						msy=posn[1]+10
						this.onclick()
					}
				anchors[i].onmouseout=function(){
						el=document.getElementById('glossary_popup')
						el.style.display='none';
					}
	*/
				anchors[i].title='';
			}
		}
//	}	
}

