

function get_browser_name() {
	if (navigator.appName == "Microsoft Internet Explorer") {
		return "MSIE";
	} else if (navigator.userAgent.indexOf('Firefox') != -1) {
		return "Firefox";
	} else if (navigator.userAgent.indexOf('Safari') != -1) {
		return "Safari";
	} else if (navigator.userAgent.indexOf('Opera') != -1) {
		return "Opera";
	} else {
		return "other";
	}
}

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);
	}
	return randomstring;
}

function getstyle(element) {
	if (typeof element.currentStyle != 'undefined') {
		//ie
		return element.currentStyle;
	} else {
		return document.defaultView.getComputedStyle(element, null);
	}
}

function clean_imageurl(instr) { //only works for png
	s = instr.substr(instr.indexOf("img"));
	return s.substr(0, s.indexOf(".png") + 4);
}

function loadimg(url) {
	if (arr_loadedimages[url] == undefined) {
		tempi = new Image();
		tempi.src = url;
		arr_loadedimages[url] = tempi;
	}
}

function get_first_numericchar_index(inStr) {
	validchars = "1234567890.-";
	for (i = 0; i<inStr.length; i++) {
		if (validchars.indexOf(inStr.charAt(i)) != -1) {
			return i;
		}
	}
	return false;
}
function get_first_numeric_string(inStr) {
	validchars = "1234567890.-";
	relevantString = inStr.substring(get_first_numericchar_index(inStr));
	if (relevantString == false) {
		return false;
	} else {
		for (i = 0; i < relevantString.length; i++) {
			if (validchars.indexOf(relevantString.charAt(i)) == -1) {
				return relevantString.substring(0, i);
			}
		}
	}
	return relevantString;
}

function booltostring(invar) {
	if (invar == true) {
		return "true";
	} else {
		return "false";
	}
}


function idof(element){
	if (element.id.length == 0) {
		element.id = randomString();
	}
	return element.id;
}
	






//From http://www.robertnyman.com/2005/11/07/the-ultimate-getelementsbyclassname/
function getElementsByClassName(oElm, strTagName, oClassNames){
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	var arrRegExpClassNames = new Array();
	if(typeof oClassNames == "object"){
		for(var i=0; i<oClassNames.length; i++){
			arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames[i].replace(/\-/g, "\\-") + "(\\s|$)"));
		}
	}
	else{
		arrRegExpClassNames.push(new RegExp("(^|\\s)" + oClassNames.replace(/\-/g, "\\-") + "(\\s|$)"));
	}
	var oElement;
	var bMatchesAll;
	for(var j=0; j<arrElements.length; j++){
		oElement = arrElements[j];
		bMatchesAll = true;
		for(var k=0; k<arrRegExpClassNames.length; k++){
			if(!arrRegExpClassNames[k].test(oElement.className)){
				bMatchesAll = false;
				break;
			}
		}
		if(bMatchesAll){
			arrReturnElements.push(oElement);
		}
	}
	return (arrReturnElements)
}

//From http://www.howtocreate.co.uk/tutorials/javascript/browserwindow
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 ];
}

//mouse coords
var mc_IE = document.all?true:false;
if (!mc_IE) document.captureEvents(Event.MOUSEMOVE)
document.onmousemove = getMouseXY;
var mouseX = 0;
var mouseY = 0;
function getMouseXY(e) {
	if (mc_IE) { // grab the x-y pos.s if browser is IE
		mouseX = event.clientX + document.documentElement.scrollLeft;
		mouseY = event.clientY + document.documentElement.scrollTop;
	}
	else {  // grab the x-y pos.s if browser is NS
		mouseX = e.pageX;
		mouseY = e.pageY;
	}
	if (mouseX < 0){mouseX = 0;}
	if (mouseY < 0){mouseY = 0;}
	return true;
}







//from kobalt 20100111
function addclass(node, classes) {
	classes = classes.split(" ");
	for (var k in classes) {
		if (node.className.indexOf(classes[k]) == -1) {
			node.className = node.className + (node.className.length == 0 ? "" : " ") + classes[k];
		}
	}
}
function remclass(node, classes) {
	classes = classes.split(" ");
	for (var k in classes) {
		if ((i = node.className.indexOf(classes[k])) != -1) {
			node.className = node.className.substr(0, i) + node.className.substr(i + classes[k].length);
		}
	}
}




//from kobalt 20100114
function registerEventHandler(node, event, handler) {
	if (typeof node.addEventListener == "function")
		node.addEventListener(event, handler, false);
	else
		node.attachEvent("on" + event, handler);
}
function unregisterEventHandler(node, event, handler) {
	if (typeof node.removeEventListener == "function")
		node.removeEventListener(event, handler, false);
	else
		node.detachEvent("on" + event, handler);
}

function prepevent(e) {
	e = e || window.event;
	e.target = e.target || e.srcElement;
}
