function returnObjectById(id) {
	var elm;
	if (document.getElementById)
		elm = document.getElementById(id);
	else if (document.all)
		elm = document.all[id];
	else if (document.layers)
		elm = document.layers[id];
	
	return elm;
}

/*function getElementsByClassName(classname, node) {
	
	if(!node) node = document.getElementsByTagName("body")[0];
	
	var a = [];
	
	var re = new RegExp('\\b' + classname + '\\b');
	
	var els = node.getElementsByTagName("*");
	
	for(var i=0,j=els.length; i<j; i++)
	
	if(re.test(els[i].className))a.push(els[i]);
	
	return a;

}*/

function showElement(id) {
        var element = document.getElementById(id);

        if (element) {
                element.style.visibility = 'visible';
        }
}

function hideElement(id) {
        var element = document.getElementById(id);

        if (element) {
                element.style.visibility = 'hidden';
        }
}

/**
 * @returns true when IE is detected, otherwise returns false.
 */
function isIE()
{
        if (navigator.appName.indexOf("Explorer") == -1) {
                return false;
        }
        else {
                return true;
        }
}

function getPos(el) 
{
       var r = { x: el.offsetLeft, y: el.offsetTop, w: el.offsetWidth, h: el.offsetHeight};

       if (el.offsetParent) {
               var tmp = getPos(el.offsetParent);
               r.x += tmp.x;
               r.y += tmp.y;
       }
       return r;
};


/**
 * @redirects page to given url
 */
function redir(path)
{
    document.location.href = path;
}

/* Features Table 
	----------------------------------------------------------
 */
function toggleFeatureTable(id) 
{
	var element = document.getElementById(id);
	if (element) {
		if (element.style.display == 'block') {
			element.style.display = 'none';
		} else {
			element.style.display = 'block';
		}
	}
}

function popupFeatureTable(elm,popup,offset_left,offset_top)
{
	var popup  = document.getElementById(popup);
	if(popup.style.display == 'block') return;
	var elmPos = getPos(elm);
	
	if (!(typeof offset_left == 'number')) offset_left = 0;
	if (!(typeof offset_top == 'number')) offset_top = 0;
	offset_top += 9;
	
	// popup position
	popup.style.marginLeft = offset_left +"px";
	popup.style.display    = 'block';
	popup.style.top        = (elmPos.y - popup.offsetHeight + offset_top) +"px";
	
	if (typeof elm.onmouseout !== 'function'){
		elm.onmouseout = function(){
			popup.style.display = 'none';
		}
	}
}

function radioboxValue(id) {
	var elm = returnObjectById(id);
	if (!elm)
		return false;
	
	var myform = elm.form;
	for (var i=0; i<myform.elements[elm.name].length; i++) {
		if (myform.elements[elm.name][i].checked)
			return myform.elements[elm.name][i].value;
	}
	return false;
}

function insertHtml(elementID, html) {
	var element = returnObjectById(elementID);
	element.innerHTML = html;
}

/* Validation
	----------------------------------------------------------
 */
function validateEmail(str) {
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (filter.test(str)) return true;
	else return false;
}

function validateField(fieldID, validationType, failureMessage) {
	var element = document.getElementById(fieldID);
	if (element) {
		switch (validationType){
			case "required":
				if(element.value == "") {
					alert(failureMessage);
					return false;
				}
			break;
			case "email":
				if(!validateEmail(element.value)) {
					alert(failureMessage);
					return false;
				}
			break;
			default : alert("I\'m sure it was great");
		}
	}
	return true;
}
