function getElementsBySelector(all_selectors) {
	var selected = new Array();
	if(!document.getElementsByTagName) return selected;
	all_selectors = all_selectors.replace(/\s*([^\w])\s*/g,"$1");//Remove the 'beutification' spaces
	var selectors = all_selectors.split(",");
	// Grab all of the tagName elements within current context	
	var getElements = function(context,tag) {
		if (!tag) tag = '*';
		// Get elements matching tag, filter them for class selector
		var found = new Array;
		for (var a=0,len=context.length; con=context[a],a<len; a++) {
			var eles;
			if (tag == '*') eles = con.all ? con.all : con.getElementsByTagName("*");
			else eles = con.getElementsByTagName(tag);

			for(var b=0,leng=eles.length;b<leng; b++) found.push(eles[b]);
		}
		return found;
	}

	COMMA:
	for(var i=0,len1=selectors.length; selector=selectors[i],i<len1; i++) {
		var context = new Array(document);
		var inheriters = selector.split(" ");

		SPACE:
		for(var j=0,len2=inheriters.length; element=inheriters[j],j<len2;j++) {
			//This part is to make sure that it is not part of a CSS3 Selector
			var left_bracket = element.indexOf("[");
			var right_bracket = element.indexOf("]");
			var pos = element.indexOf("#");//ID
			if(pos+1 && !(pos>left_bracket&&pos<right_bracket)) {
				var parts = element.split("#");
				var tag = parts[0];
				var id = parts[1];
				var ele = document.getElementById(id);
				if(!ele || (tag && ele.nodeName.toLowerCase() != tag)) { //Specified element not found
					continue COMMA;
				}
				context = new Array(ele);
				continue SPACE;
			}

			pos = element.indexOf(".");//Class
			if(pos+1 && !(pos>left_bracket&&pos<right_bracket)) {
				var parts = element.split('.');
				var tag = parts[0];
				var class_name = parts[1];

				var found = getElements(context,tag);
				context = new Array;
 				for (var l=0,len=found.length; fnd=found[l],l<len; l++) {
 					if(fnd.className && fnd.className.match(new RegExp('(^|\s)'+class_name+'(\s|$)'))) context.push(fnd);
 				}
				continue SPACE;
			}

			if(element.indexOf('[')+1) {//If the char '[' appears, that means it needs CSS 3 parsing
				// Code to deal with attribute selectors
				if (element.match(/^(\w*)\[(\w+)([=~\|\^\$\*]?)=?['"]?([^\]'"]*)['"]?\]$/)) {
					var tag = RegExp.$1;
					var attr = RegExp.$2;
					var operator = RegExp.$3;
					var value = RegExp.$4;
				}
				var found = getElements(context,tag);
				context = new Array;
				for (var l=0,len=found.length; fnd=found[l],l<len; l++) {
 					if(operator=='=' && fnd.getAttribute(attr) != value) continue;
					if(operator=='~' && !fnd.getAttribute(attr).match(new RegExp('(^|\\s)'+value+'(\\s|$)'))) continue;
					if(operator=='|' && !fnd.getAttribute(attr).match(new RegExp('^'+value+'-?'))) continue;
					if(operator=='^' && fnd.getAttribute(attr).indexOf(value)!=0) continue;
					if(operator=='$' && fnd.getAttribute(attr).lastIndexOf(value)!=(fnd.getAttribute(attr).length-value.length)) continue;
					if(operator=='*' && !(fnd.getAttribute(attr).indexOf(value)+1)) continue;
					else if(!fnd.getAttribute(attr)) continue;
					context.push(fnd);
 				}

				continue SPACE;
			}

			//Tag selectors - no class or id specified.
			var found = getElements(context,element);
			context = found;
		}
		for (var o=0,len=context.length;o<len; o++) selected.push(context[o]);
	}
	return selected;
}

function findPos(obj) {
	if(obj) { 
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
	}
	return [curleft,curtop];
	} else
		return 0;
}

function repositionMenu() {
	/*var oDiv = document.getElementById('menu');
	if(oDiv.firstChild) { // check for children
	   var oChild = oDiv.firstChild;
	   while(oChild) { // run over them
			if(oChild.nodeType==1) { // element
			
	   		}
			oChild = oChild.nextSibling;
		}
	}
	
	var childArray = getElementsBySelector('div#menu ul li ul');
	for(i=0;i<childArray.length;i++) {
		//alert(childArray[i].style.width);
		//alert(childArray[i].getAttribute("width"));//childArray[i].setAttribute("left", "-200");	
	}
	
	var parentArray = getElementsBySelector('div#menu ul a.menu_parent');
	for(i=0;i<parentArray.length;i++) {
		//alert(parentArray[i].clientWidth + "\n" + parentArray[i].offsetWidth + "\n" + parentArray[i].hasAttribute("width") + "\n");	
	}*/
	
	
	
/*
	var childarray = getElementsBySelector('div#menu ul li ul');
	alert("length " + childarray.length);
	for(i=0;i<childarray.length;i++) {
		var s = "menu_child"+i;
		var temp = document.getElementsByTagName("a")[s].offsetWidth;
		alert("temp " + temp);
		var temp2 = findPos(document.getElementsByTagName("a")[s]);
		alert("temp2 " + temp2[0]);
		var temp3 = findPos(document.getElementsByTagName("div")["header_container"]);
		var temp4 = document.getElementsByTagName("div")["header_container"].offsetWidth;
		
		
		alert("Dropdown menu's xPosition is:\n" + temp2[0] + "\n\nand its width is:\n" + temp + "\n\nUse the header container at:\n" + temp3[0] + "   and width: " + temp4);
	}*/
	
	
	
	
	/*
	var p = document.getElementsByTagName("a")["menu_child"].offsetWidth;
	//alert(p);
	var childarray = document.getElementsByTagName("a")["menu_child"];
	//alert(childarray.length);
	for(i=0;i<childarray.length;i++) {
		alert(childarray[i].offsetWidth);	
	}*/
	
	
	//alert(p.offsetWidth + "  " + loc);
	
	
	var parentwidth;
	var childwidth;
	var parentloc;
	var childloc;
	var newloc;
	var dropdown;
	var parentarray = getElementsBySelector('div#menu ul');
	var parentnum = Math.round( (parentarray.length/2) + .5 );
	var bodywidth = document.getElementById("body_container");
	var bodyloc = findPos(bodywidth);
	bodyloc = bodyloc[0];
	bodywidth = bodywidth.offsetWidth;
	
	for(i=0;i<parentnum;i++) {
		
		childwidth = document.getElementById("menu_child"+i);
		if(childwidth) {
		childloc = findPos(childwidth);
		childloc = childloc[0];
		childwidth = childwidth.offsetWidth;
		
		if( (childloc + childwidth) > (bodyloc + bodywidth) ) {
			parentwidth = document.getElementById("menu_parent"+i);
			//parentloc = findPos(parentwidth);
			//alert(parentloc);
			parentwidth = parentwidth.offsetWidth;
			
			newloc = childwidth - parentwidth;
			newloc = childloc - newloc;
			
			dropdown = document.getElementById("dropdown_"+i);
			newloc = -(childloc - newloc);
			Position.set("dropdown_"+i, newloc,dropdown.offsetTop);
		}
		}
	}
	
}