function addOption(selectId, txt, val){
	var objOption = new Option(txt, val);
	document.getElementById(selectId).options.add(objOption);
}

function showHide(id){
	if (document.getElementById && document.getElementById(id)){
		if (document.getElementById(id).style.visibility == "visible"
			|| document.getElementById(id).style.display == "block"){
			// hide it
			document.getElementById(id).style.visibility = "hidden";
			document.getElementById(id).style.display = "none";
		}else{
			// show it
			document.getElementById(id).style.visibility = "visible";
			document.getElementById(id).style.display = "block";
		}                      
	}
}

function ChangeImage(imgId, newSrc, id){
	document.getElementById(imgId).src=newSrc;
	document.getElementById(imgId).className=id;
}

/*********************************************************************\
Password generation functions
\*********************************************************************/

function generate_password(length){
	var charSet = '';
		charSet+= '0123456789';
		//charSet+= 'abcdefghjklmnpqrstuvwxyz';
		charSet+= 'ABCDEFGHJKLMNPQRSTUVWXYZ';
		//charSet+= '!@#$()-_=+;:?';
	
	var password = '';
	
	if (length > 0){
		password = password + charSet.charAt((Math.floor(Math.random() * (charSet.length - 0)) + 0));
		for (var idx = 1; idx < length; ++idx) {
			password = password + charSet.charAt((Math.floor(Math.random() * (charSet.length - 0)) + 0));
		}
	}
	
	return password;
}

/*********************************************************************\
New functions
\*********************************************************************/

// Get elements with a certain class-name
function getElementsByClassName(strClassName, obj){
	var ar = arguments[2] || new Array();
	var re = new RegExp("\\b" + strClassName + "\\b", "g");
	
	if (re.test(obj.className)){
		ar.push(obj);
	}
	for ( var i = 0; i < obj.childNodes.length; i++ ){
		getElementsByClassName(strClassName, obj.childNodes[i], ar);
	}
	
	return ar;
}

// Show/hide an element
function display(elm, mode, show, hide){
	if (show == '' || show == undefined){
		show = 'block';
	}
	if (hide == '' || hide == undefined){
		hide = 'none';
	}
	
	elm = $(elm);
	
	switch (mode){
		case 'show':
			elm.setStyle('display', show);
		break;
		case 'hide':
			elm.setStyle('display', hide);
		break;
		default:
			if (elm.getStyle('display') == show){
				elm.setStyle('display', hide);
			}
			else{
				elm.setStyle('display', show);
			}
		break;
	}
}

// Show/hide all elements with a certain class-name
function display_class(class_name, mode, show, hide){
	if (show == '' || show == undefined){
		show = 'block';
	}
	if (hide == '' || hide == undefined){
		hide = 'none';
	}
	
	var elements = getElementsByClassName(class_name, document.body);
	
	for (i = 0; i < elements.length; i++){
		switch (mode){
			case 'show':
				elements[i].setStyle('display', show);
			break;
			case 'hide':
				elements[i].setStyle('display', hide);
			break;
			default:
				if (elements[i].getStyle('display') == show){
					elements[i].setStyle('display', hide);
				}
				else{
					elements[i].setStyle('display', show);
				}
			break;
		}
	}
}

// Check an element with a certain id
function check(id, mode){
	var element = $(id);
	
	switch (mode){
		case 'check':
			element.checked = true;
		break;
		case 'uncheck':
			element.checked = false;
		break;
		default:
			if (element.checked == true){
				element.checked = false;
			}
			else{
				element.checked = true;
			}
		break;
	}
}

// Check all elements with a certain class-name
function check_all(class_name){
	var elements = getElementsByClassName(class_name, document.body);
	
	for (i = 0; i < elements.length; i++){
		elements[i].checked = true;
	}
}

// Un-check all elements with at certain class-name
function uncheck_all(class_name){
	var elements = getElementsByClassName(class_name, document.body);
	
	for (i = 0; i < elements.length; i++){
		elements[i].checked = false ;
	}
}