function AddToArrayIfUnique(arr, value)
{
	for(var i=0; i<arr.length ; i++)
	{
		if(arr[i]==value) {
			return;
		}
	}
	arr.push(value);
}

//Removes all occurrances
function RemoveFromArray(arr, value)
{
	var i=0;
	while(i < arr.length) {
		if(arr[i]==value) {
			arr.splice(i,1);
		} else {
			i++;
		}
	}
}
//Assumes the array is unsorted so checks every element. For the tiny arrays we're dealing with, who cares
function InArray(arr, value)
{
	for(var i=0; i<arr.length ; i++)
	{
		if(arr[i]==value) {
			return true;
		}
	}
	return false;
}

function GetAncestorByClass(elem, className)
{
	while(elem && elem.className != className) {
		elem=elem.parentNode;
	}  
	return elem;
}


function GetChildByClass(elem, className)
{
	for(var item=elem.firstChild; item != null; item=item.nextSibling)
	{
		if(item.className == className) {
			return item;
		}
	}
	return null;
}

function GetChildNumberByClass(elem, className)
{
	if(!elem.childNodes)return -1;
	for(var i=0; i < elem.childNodes.length; i++)
	{
		if(elem.childNodes[i].className == className) {
			return i;
		}
	}
	return -1;
}
/*Only the last two args are optional*/
function GetImageNode(src, width, height, alt, className, id)
{
	var node=document.createElement('IMG');
	node.src=src;
	node.width=width;
	node.height=height;
	node.alt=alt;
	
	if(className)node.className=className;
	if(id)node.id=id;
	
	return node;
}

document.onclick=PageClick;
document.onmousemove=PageMouseMove;
document.onmouseup=PageMouseUp;

function PageClick(event)
{
	//If the event has bubbled up here, kill the navbar menus off
	DeSelectItems(navbar.DOMMenu);
	document.menusactive=false;
}

function PageMouseUp(event)
{
debug('MouseUp fired');
	if(document.winAction != WINACTION_NONE) {	
debug('Cancelling winaction');		
		document.winAction=WINACTION_NONE;
		document.theWin=null;
	}
}
function PageMouseMove(event)
{
	switch(document.winAction) {
		case WINACTION_MOVE:			
			MoveWin(document.theWin, event);
			break;
		case WINACTION_RESIZE:
debug('Resize fired');		
			ResizeWin(document.theWin, event, document.winResizeMode);
			break;
		
		default:
			break;
	}
}

function debug(text)
{
	var debuglines=10;
	var testnode=document.getElementById('test');
	if(!testnode)return;
	if(!testnode.setup) {
		for(var i=0; i<debuglines ; i++) {
			var linenode=document.createElement('DIV');
			linenode.id="testline-"+i;
			testnode.appendChild(linenode);
		}
		testnode.setup=true;
		testnode.currLine=0;
	}
	
	if(testnode.currLine < debuglines) {
		var textnode=document.createTextNode(testnode.currLine+") "+text);
		var theline=document.getElementById("testline-"+testnode.currLine);
		theline.appendChild(textnode);
	} else {
		for(var i=0 ; i<debuglines - 1 ; i++) {
			document.getElementById("testline-"+i).innerHTML=document.getElementById("testline-"+(i+1)).innerHTML;
		}
		document.getElementById("testline-"+(debuglines-1)).innerHTML=testnode.currLine+") "+text;
	}
	testnode.currLine++;
}
