var x, y;
var is_chrome = /chrome/.test( navigator.userAgent.toLowerCase() );
var continue_ajax = true;

function halt_out(oElement, e, elid) {
	if (!e)
		var e = window.event; 
	var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;
	while (reltg.tagName != 'BODY' && reltg.tagName != 'HTML') { 
		if (reltg.id == oElement.id && oElement.id != '') {
			return;
			}
		reltg = reltg.parentNode; 
	}
	if (document.getElementById(elid))
		document.getElementById(elid).style.display = "none";
	oElement.style.backgroundImage = 'url(images/bar.jpg)';
	document.getElementById("submenu").innerHTML = '';
	document.getElementById("submenu").style.display = 'none';
	continue_ajax = false;
}

i = 0;
var Dom = {
        get: function(el) {
          if (typeof el === 'string') {
            return document.getElementById(el);
          } else {
            return el;
          }
        },
        add: function(el, dest) {
          var el = this.get(el);
          var dest = this.get(dest);
          dest.appendChild(el);
        },
        remove: function(el) {
		  if (i > 10) {
		  	var el = this.get(el);
          	el.parentNode.removeChild(el);
		  } else {
		  	i++;
		  }
        }
      };
var Event_ = {
        add: function() {
          if (window.addEventListener) {
            return function(el, type, fn) {
              Dom.get(el).addEventListener(type, fn, false);
            };
          } else if (window.attachEvent) {
            return function(el, type, fn) {
              var f = function() {
                fn.call(Dom.get(el), window.event);
              };
              Dom.get(el).attachEvent('on' + type, f);
            };
          }
        }()
      };

function getXHTTP() {
  var xhttp;
   try {
      xhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        xhttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e2) {
	    try {
	      xhttp = new XMLHttpRequest();
	    } catch (e3) {
	      xhttp = false;
	    }
      }
    }
  return xhttp;
}

var http = getXHTTP();

function showmenu(a, obj, name, numpages, loc) {
	var curleft = curtop = 0;
	var b = a;
	b.style.backgroundImage = 'url(images/barover.jpg)';
	var h = a.offsetHeight - 1;
	if (a.offsetParent) {
	do {
			curleft += a.offsetLeft;
			curtop += a.offsetTop;

	} while (a = a.offsetParent);
	}
	
	if (document.getElementById("menu"+obj) && document.getElementById("menu"+obj).innerHTML != '') {
		var newdiv = document.getElementById("menu"+obj);
		x = curleft;
		newdiv.style.left = (b.offsetLeft - 1) + "px";
		newdiv.style.display = "";
	} else {
	var newdiv = document.createElement('div');
   	newdiv.setAttribute('id', "menu"+obj);
	newdiv.style.zIndex = "200";
   	newdiv.style.position = "absolute";
	newdiv.style.display = "none";
	newdiv.style.left = (b.offsetLeft - 1) + "px";
	newdiv.style.top = (h + 1) + "px";
	x = curleft;
	y = curtop + h;
	
	newdiv.style.textAlign = "left";
	newdiv.style.fontSize = "11px";
   
  	newdiv.style.background = "#B0C6CF";
 	newdiv.style.border = "1px solid #666";
   
  	b.appendChild(newdiv);
	fillmenu(b, obj, name, curleft, loc);
	}
	
	var n = 0;
	do {
		rdiv = document.getElementById("menu"+n);
		if (obj != n)
		{
			if (rdiv) {
				rdiv.style.display = 'none';
			}
		}
		n++;
	} while (n < numpages);
}

function drawmenuf(a, id, size) {
   	var curl = curt = 0;
	var he = a.offsetHeight - 1;
	if (a.offsetParent) {
	do {
			curl += a.offsetLeft;
			curt += a.offsetTop;

	} while (a = a.offsetParent);
	}
	
	po = curt + he;
	
	document.getElementById("drawmenu").style.top = po + "px";
	document.getElementById("drawmenu").style.left = curl + "px";
   	document.getElementById("drawmenu").style.background = "url(images/newbck.jpg)";
	
	checkdraw(id, size);
}

function randomString() {
	var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
	var string_length = 8;
	var randomstring = '';
	for (var i=0; i<string_length; i++) {
		var rnum = Math.floor(Math.random() * chars.length);
		randomstring += chars.substring(rnum,rnum+1);
	}
	document.getElementById("rvalue").value = randomstring;
}

function keepsub() {
var o = document.getElementById("submenu");
if (o.style.display == "" || o.style.display == "none")
	document.getElementById("submenu").style.display = "block";	
}

function fillmenu(a, obj, name, curleft, loc) {
http.open("GET", "getmenu.php?code="+document.getElementById('rvalue').value+"&menu="+name+"&loc="+loc, true);
http.onreadystatechange = function() { getHttpRes(a, obj, curleft); }
http.send(null);
}

function checkdraw(id, size) {
http.open("GET", "getmenu.php?code="+document.getElementById('rvalue')+"&drawid="+id+"&size="+size, true);
http.onreadystatechange = function() { drawres(); }
http.send(null);
}

function mouseLeaves(element, evt) {
	if (typeof evt.toElement != 'undefined' && typeof element.contains != 'undefined')
	{
		return !element.contains(evt.toElement);
	}
	else if (typeof evt.relatedTarget != 'undefined' && evt.relatedTarget)
	{
		return !contains(element, evt.relatedTarget);
	}
}

function contains (container, containee) {
	while (containee) {
		if (container == containee) {
			return true;
		}
		containee = containee.parentNode;
	}
	return false;
}

function drawres() {
if (http.readyState == 4) {
		var res = http.responseText;  // These following lines get the response and update the page
		if (res != '') {
			document.getElementById("drawmenu").innerHTML = res;
			$('drawmenu').appear({ duration: .2 });
			return false;
			}
 	 	}
	randomString();
}

function mo_over(obj, dir) {
	if (dir == 'in') {
		obj.style.backgroundColor = '#FFFF71';
		obj.style.border = '1px solid #999';
	} else if (dir == 'out') {
		obj.style.backgroundColor = '#B0C6CF';
		obj.style.border = '1px solid #B0C6CF';
	}
}

function drawsave(obj) {
	Event_.add(obj, 'mouseout', function(e) {
		if (mouseLeaves(obj, event)) {
			$(obj.id).fade({ duration: .5 });
			return false;
			}		
		});
}

function showsub(obj, category, b, dir) {
if (is_chrome == false) {
http.open("GET", "getmenu.php?code="+document.getElementById('rvalue').value+"&menu=submenu&category="+category, true);
http.onreadystatechange = function() { getHttpRessub(obj, b, dir); }
http.send(null);
}
}

function getHttpRessub(a, b, dir) {
if (http.readyState == 4) {
		var res = http.responseText;  // These following lines get the response and update the page
		if (res != '' && continue_ajax == true) {
			a.appendChild(document.getElementById("submenu"));
			document.getElementById("submenu").style.left = a.offsetLeft + a.parentNode.offsetLeft + a.offsetWidth - 10 + "px";
			document.getElementById("submenu").style.top = a.offsetTop + "px";
			document.getElementById("submenu").innerHTML = res;
			document.getElementById("submenu").style.display = "block";
			}
 	 	}
	randomString();
}

function getHttpRes(a, obj, curleft) {
document.getElementById('menu'+obj).innerHTML = '';
var i = 0;

if (http.readyState == 4) {
	var res = http.responseText;  // These following lines get the response and update the page
	if (res == '') {
		a.removeChild(document.getElementById('menu'+obj));
	} else {
		document.getElementById('menu'+obj).innerHTML = res;
		document.getElementById('menu'+obj).style.display = "";
		var el = document.getElementById('menu'+obj);
	}
	randomString();
  }
}

function halt_menu_out(oElement, e, el) {
	if (!e)
		var e = window.event; 
	var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement; 
	while (reltg.tagName != 'BODY') { 
		if (reltg.id == oElement.id && oElement.id != '') {
			return;
			}
		reltg = reltg.parentNode;
	}
	mo_over(oElement, 'out');
	el.style.display = 'none';
	el.innerHTML = '';
	document.getElementById("submenu").style.display = 'none';
	continue_ajax = false;
}

function halt_sub_out(oElement, e, el) {
	if (!e)
		var e = window.event; 
	var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement; 
	while (reltg.tagName != 'BODY') {
		if (reltg.id == oElement.id && oElement.id != '') {
			return;
			}
		reltg = reltg.parentNode; 
	}
	mo_over(el, 'out');
	document.getElementById("submenu").style.display = 'none';
	continue_ajax = false;
}