// JavaScript Document
/*
	Created: 2008-07-28
	Updated: 2008-08-01
*/

var GabeUtil = {};

GabeUtil.displayPortfolio = function(url) {
	var cover = GabeUtil.getCoverDiv();
	var content = document.createElement("div");
	content.style.position = "absolute";
	content.style.margin = "30px";
	content.style.padding = "30px";
	content.style.top = "0px";
	content.style.left = "0px";
	content.style.backgroundColor = "#ffffff";
	content.style.border = "#CCCCCC 5px solid";
	content.style.zIndex = 9;
	content.style.textAlign = "center";
	content.innerHTML = "<img src='" + url + "' /><br />";
	var closeButton = document.createElement("input");
	closeButton.type = "button";
	closeButton.value = "Close this Image";
	closeButton.className = "buttonClose";
	content.appendChild(closeButton);
	closeButton.onclick = function(e) {
		content.parentNode.removeChild(content);
		cover.parentNode.removeChild(cover);
	}
	document.body.appendChild(content);
}

GabeUtil.getCoverDiv = function() {
	var div = document.createElement("div");
	div.style.zIndex = 8;
	div.style.backgroundColor = "#CCCCCC";
	div.style.opacity = .60;
	div.style.filter = "alpha(opacity=60)";
	div.style.position = "absolute";
	div.style.top = "0px";
	div.style.left = "0px";
	div.style.width = document.body.scrollWidth + 'px';
	div.style.height = document.body.scrollHeight + 'px';
	document.body.appendChild(div);
	return div;
}

GabeUtil.xmlHttpRequest = null;

GabeUtil.getRequest = function() {
	
	if(GabeUtil.xmlHttpRequest !== null) {
		return GabeUtil.xmlHttpRequest;
	}
	
	var requestFunctions = [	function() { return new XMLHttpRequest(); },
								function() { return new ActiveXObject("Msxml2.XMLHTTP"); },
								function() { return new ActiveXObject("Microsoft.XMLHTTP"); },
								];
	
	var request = null;
	
	for(var i = 0; i < requestFunctions.length; i++) {
		try {	
				request = requestFunctions[i]();
				if(request != null) {
					GabeUtil.xmlHttpRequest = request;
					return request;
				}
			
		} catch(e) {
			continue;
		}
	}
}

GabeUtil.httpRequest = function(url, preload, callback, method, data) {
	
	if(typeof method == 'undefined') {
		method = 'GET';	
	}
	
	if(typeof data == 'undefined') {
		data = null;	
	}
	
	var request = GabeUtil.getRequest();
	
	request.onreadystatechange = function() {
		if(request.readyState == 4) {
			if(request.status == 200) {
				callback(request.responseText);	
			}	
		}
	}
	
	if(preload !== null) {
		preload();	
	}
	
	request.open(method, url);
	request.send(data);
	
}

GabeUtil.getRadioValue = function(elements, parent) {
	
	if(typeof parent == 'undefined') {
		parent = document.body;	
	}
	
	if(typeof elements == 'string') {
		elements = GabeUtil.getElements(parent, 'input', null, elements);
	}
	
	var element;
	
	for(var i = 0; i < elements.length; i++) {
		element = elements[i];
		if(element.checked == true) {
			return element.value;
		}
	}
	
	return null;
	
}

GabeUtil.limitChecked = function(elements, limit) {
	
	var counter = 0;

	for(var i = 0; i < elements.length; i++) {
		if(elements[i].checked === true) {
			if(counter == limit) {
				elements[i].checked = false;
			}
			counter++;
		}
	}
	
	if(counter > limit) {
		return false;	
	}
	return true;
	
}

GabeUtil.isChecked = function(elements) {
	for(var i = 0; i < elements.length; i++) {
		if(elements[i].checked === true) {
			return true;	
		}	
	}
	return false;
}

GabeUtil.checkAll = function(elements, check) {
	if(typeof check == 'undefined') {
		check = true;	
	}
	for(var i = 0; i < elements.length; i++) {
		elements[i].checked = check;
	}
	return;
}


GabeUtil.getElements = function(parent, atag, aclass, aname) {
	
	if(atag == '') {
		atag = "*";	
	}
	
	if(typeof parent == 'undefined') {
		parent = document.body;	
	}
	
	if(typeof aname == 'undefined') {
		aname = null;	
	}
	
	if(typeof aclass == 'undefined') {
		aclass = null;
	}
	
	var elements = parent.getElementsByTagName(atag);
	var tmpelements = [];
	for(var i = 0; i < elements.length; i++) {
		tmpelements.push(elements[i]);
	}
	elements = tmpelements;
	
	if(aclass !== null) {
		for(var i = 0; i < elements.length; i++) {
			if(elements[i].className.indexOf(aclass) === -1) {
				elements.splice(i, 1);
				i--;
			}
		}
	}
	
	if(aname !== null) {
		
		for(var i = 0; i < elements.length; i++) {
			var ename = elements[i].getAttribute('name');
			if(	(elements[i].getAttribute('name') == false) || 
				(elements[i].getAttribute('name') === null) || 
				(ename.indexOf(aname) === -1)
				) {
				elements.splice(i, 1);
				i--;
			}
		}
		
	}
	
	return elements;
}

GabeUtil.getElementsByName = function(name, form) {
	
	if(typeof form == 'undefined') {
		form = null;	
	}
	
	var elements = document.getElementsByName(name);
	var newelements = [];
	
	if(form !== null) {
		// Form is specified
		
		for(var i = 0; i < elements.length; i++) {
			if(elements[i].form == form) {
				newelements.push(elements[i]);
			}
		}
		return newelements;
		
	} else {
		
		return elements;
		
	}
	
}

GabeUtil.numericOnly = function(value) {
	var allowed = "0123456789"
	return GabeUtil.limitCharacters(allowed, value);
}

GabeUtil.limitCharacters = function(allowed, value) {
	value = new String(value);
	newvalue = '';
	var char;
	for(var i = 0; i < value.length; i++) {
		char = value.charAt(i);
		if(allowed.indexOf(char) !== -1) {
			newvalue += char;	
		}
	}
	return newvalue;
}

GabeUtil.getEvent = function(e) {
	if(GabeUtil.isIE()) {
		e = window.event;
		e.preventDefault = function() {
			e.returnValue = false;
		}
		e.target = e.srcElement;
	}
	return e;
}

GabeUtil.isIE = function() {
	if(window.addEventListener) {
		return false;
	}
	return true;
}

GabeUtil.addEventListener = function(element, aevent, afunction, capture) {
	if(GabeUtil.isIE()) {
		element.attachEvent("on" + aevent, afunction);
	} else {
		element.addEventListener(aevent, afunction, capture);
	}
}

GabeUtil.removeEventListener = function(element, aevent, afunction, capture) {
	if(GabeUtil.isIE()) {
		element.detachEvent("on" + aevent, afunction);
	} else {
		element.removeEventListener(aevent, afunction, capture);
	}
}
