
/*
	Developed by Robert Nyman, http://www.robertnyman.com
	Code/licensing: http://code.google.com/p/getelementsbyclassname/
*/
var getElementsByClassName = function (className, tag, elm){
	if (document.getElementsByClassName) {
		getElementsByClassName = function (className, tag, elm) {
			elm = elm || document;
			var elements = elm.getElementsByClassName(className),
				nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
				returnElements = [],
				current;
			for(var i=0, il=elements.length; i<il; i+=1){
				current = elements[i];
				if(!nodeName || nodeName.test(current.nodeName)) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	else if (document.evaluate) {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = "",
				xhtmlNamespace = "http://www.w3.org/1999/xhtml",
				namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
				returnElements = [],
				elements,
				node;
			for(var j=0, jl=classes.length; j<jl; j+=1){
				classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
			}
			try	{
				elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
			}
			catch (e) {
				elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
			}
			while ((node = elements.iterateNext())) {
				returnElements.push(node);
			}
			return returnElements;
		};
	}
	else {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = [],
				elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
				current,
				returnElements = [],
				match;
			for(var k=0, kl=classes.length; k<kl; k+=1){
				classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
			}
			for(var l=0, ll=elements.length; l<ll; l+=1){
				current = elements[l];
				match = false;
				for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
					match = classesToCheck[m].test(current.className);
					if (!match) {
						break;
					}
				}
				if (match) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	return getElementsByClassName(className, tag, elm);
};

/* 
 * This script loads and manages form field stylesheets
 */
window.onload=load_window;

function load_window(){
    if(navigator.appName == "Microsoft Internet Explorer"){
        load_select_boxes_ie6_fix();
    }else{
        load_select_boxes();
    }
}

function click_drop_down(view_id,menu){
    var view=document.getElementById(view_id);

    view.innerHTML=menu.options[menu.selectedIndex].text;
    menu.style.display='none';
}

function drop_menu(menu_id){
    var menu=document.getElementById(menu_id);
    if(menu.style.display=='block') menu.style.display='none';
    else menu.style.display='block';
}

function hide_menu(menu_id){
    document.getElementById(menu_id).style.display='none';
}

function load_select_boxes(){    
    var selects=getElementsByClassName('select_style');
    for(var i=0;i<selects.length;i++){
        var menu=selects[i].getElementsByTagName('select');
        if(menu.length>0){
            var br=document.createElement('br');
            br.setAttribute('clear', 'all');

	    var size=20;
            if(menu[0].options.length<size) size=menu[0].options.length;
            
            menu[0].size=size;
            if(menu[0].id.length==0) menu[0].id=menu[0].name;
            menu[0].style.position='absolute';
            menu[0].multiline='multiline';
            menu[0].setAttribute('onclick', "click_drop_down('"+menu[0].id+"_index', this);");
            
            var select_view=document.createElement('div');
            select_view.className='select_content';
            if(menu[0].options.length>0) select_view.innerHTML=menu[0].options[menu[0].selectedIndex].text;
            select_view.id=menu[0].id+'_index';
            select_view.setAttribute('onclick', "drop_menu('"+menu[0].id+"');");
            
            selects[i].insertBefore(br, menu[0])
            selects[i].insertBefore(select_view, br);
        }
    }
}

function load_select_boxes_ie6_fix(){
    var selects=getElementsByClassName('select_style');
    for(var i=0;i<selects.length;i++){
        var menu=selects[i].getElementsByTagName('select');
        if(menu.length>0){
            var br=document.createElement('br');
            br.setAttribute('clear', 'all');
	    var size=20;
	    //if(menu[0].options.length>size) size=menu[0].options.length;
            menu[0].size=20;
            if(menu[0].id.length==0) menu[0].id=menu[0].name;
            menu[0].style.position='absolute';
            menu[0].multiline='multiline';
            menu[0].setAttribute('onclick', "click_drop_down('"+menu[0].name+"_index', this);");

            var text='';
            if(menu[0].options.length>0) text=menu[0].options[menu[0].selectedIndex].text;
            var select_view='<div onclick="drop_menu(\''+menu[0].id+'\');" class="select_content" id="'+menu[0].id+'_index">'+text+'</div><br clear="all" />';
            //alert(select_view);
            selects[i].innerHTML=select_view+selects[i].innerHTML;

            //selects[i].insertBefore(br, menu[0])
            //selects[i].insertBefore(select_view, br);
        }
    }
}
