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;
}

function display(elm, mode, show, hide){
	if (show == '' || show == undefined){
		show = 'block';
	}
	if (hide == '' || hide == undefined){
		hide = 'none';
	}
	
	if (typeof(elm) == 'string'){
		elm = document.getElementById(elm);
	}
	
	switch (mode){
		case 'show':
			elm.style.display = show;
		break;
		case 'hide':
			elm.style.display = hide;
		break;
		default:
			if (elm.style.display == show){
				elm.style.display = hide;
			}
			else{
				elm.style.display = show;
			}
		break;
	}
}

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++){
		display(elements[i], mode, show, hide)
	}
}

function check_uncheck_all(class_name, toggler){
	var check_uncheck = toggler ? true : false;
	var elements = getElementsByClassName(class_name, document.body);
	
	for (i = 0; i < elements.length; i++){
		elements[i].checked = check_uncheck;
	}
}

function check_all(class_name){
	var elements = getElementsByClassName(class_name, document.body);
	
	for (i = 0; i < elements.length; i++){
		elements[i].checked = true;
	}
}

function uncheck_all(class_name){
	var elements = getElementsByClassName(class_name, document.body);
	
	for (i = 0; i < elements.length; i++){
		elements[i].checked = false ;
	}
}

function f_clientWidth(){
	return f_filterResults(
		window.innerWidth ? window.innerWidth : 0,
		document.documentElement ? document.documentElement.clientWidth : 0,
		document.body ? document.body.clientWidth : 0
		);
}
function f_clientHeight(){
	return f_filterResults(
		window.innerHeight ? window.innerHeight : 0,
		document.documentElement ? document.documentElement.clientHeight : 0,
		document.body ? document.body.clientHeight : 0
		);
}
function f_scrollLeft(){
	return f_filterResults(
		window.pageXOffset ? window.pageXOffset : 0,
		document.documentElement ? document.documentElement.scrollLeft : 0,
		document.body ? document.body.scrollLeft : 0
		);
}
function f_scrollTop(){
	return f_filterResults(
		window.pageYOffset ? window.pageYOffset : 0,
		document.documentElement ? document.documentElement.scrollTop : 0,
		document.body ? document.body.scrollTop : 0
		);
}
function f_filterResults(n_win, n_docel, n_body){
	var n_result = n_win ? n_win : 0;
	if (n_docel && (!n_result || (n_result > n_docel))){
		n_result = n_docel;
	}
	return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;
}

function popup(url, width, height){
	var title = 'my_popup';
	var screenY = 0;
	var screenX = (f_clientWidth() / 2) - (width / 2);
	
	var params = 'width='+width+',height='+height+',screenY='+screenY+',screenX='+screenX+',location=yes,menubar=yes,resizeable=yes,scrollbars=yes';
	window.open(url, title, params, false);
}