function setValSelect(objID, obj) 
{
    var select = document.getElementById(objID+'Select');
    select.innerHTML =  obj.innerHTML;
    
    var objSelect = document.getElementById(objID);
    objSelect.options[obj.selIndex].selected=true;
   
    if(objSelect.onchange)
    {
        objSelect.onchange();    
    }    
    if(objSelect.onfocus)
    {
        objSelect.onfocus();    
    }    
    if(objSelect.onblur)
    {
        objSelect.onblur();    
    }
}
function selectMe(obj) 
{
    var lis = obj.parentNode.getElementsByTagName('li');
    for (var i=0; i<lis.length; i++) 
    {
        if (lis[i] != obj) 
        { // not the selected list item
            lis[i].className='';
            lis[i].onclick = function() 
            {
                selectMe(this);
            };
        } 
        else 
        {
            setValSelect(obj.selectID, obj);   
            obj.className='selected';
            obj.parentNode.parentNode.className = 'csSelectList';
            obj.parentNode.className = 'csSelectClose';
        }
    }
}
//select replacement
function selectReplacement(obj) 
{
    var divGlobal = document.createElement('div');
    divGlobal.className='global';
    divGlobal.onclick = function() 
    {       
        this.childNodes[0].nextSibling.className = 'csSelectList csSelectOpen';
    };
  
    // append a class to the select
    obj.className += ' replaced';
    
    var divSelect = document.createElement('div');
    divSelect.className = 'csSelectedValue';
    divSelect.id = obj.id+'Select';   
    divSelect.onclick = function() 
    {    
        this.nextSibling.childNodes[0].className =' csSelectOpen';
    };  
    
    var div = document.createElement('div');
    div.className = 'csSelectList';
    div.id = obj.id+'Replace';
    div.onmouseout = function() 
    {    
        if(this)
        {
            this.className = 'csSelectList';
        } 
    };

    // create list for styling
    var ul = document.createElement('ul');
    ul.className = 'csSelectReplacement';
    ul.onmouseover = function() 
    {
        this.parentNode.className = 'csSelectList csSelectOpen';    
    };

    var opts = obj.options;
    var i;
    
    for (i=0; i<opts.length; i++) 
    {
        var selectedOpt;
        if (opts[i].selected) 
        {
            divSelect.innerHTML = obj.options[obj.selectedIndex].text ; 
            //opts[i].value;
            selectedOpt = i;
            break;
        } 
        else 
        {
            selectedOpt = 0;
        }
    }
    
    for (i=0; i<opts.length; i++) 
    {
        var li = document.createElement('li');
        var txt = document.createTextNode(opts[i].text);
        // add <a /> to use hover event in links
				var atag = document.createElement('a');
				atag.appendChild(txt);	
        li.appendChild(atag);
        
        //li.appendChild(txt);
        li.selIndex = opts[i].index;
        li.selectID = obj.id;
        li.onclick = function() 
        {
            selectMe(this);
        };
        
        li.onmouseover = function() 
        {    
            this.className='selected';    
            this.parentNode.parentNode.className = 'csSelectList csSelectOpen';                   
        };
        li.onmouseout = function() 
        {    
            this.className='';                
        };
        
        if (i == selectedOpt) 
        {
            li.className = 'selected';
            li.onclick = function() 
            {
                selectMe(this);
            };
        }       
        ul.appendChild(li);
    }
    // add the input and the ul
    obj.parentNode.appendChild(divGlobal);
    divGlobal.appendChild(divSelect);
    divGlobal.appendChild(div);
    div.appendChild(ul);
}
function setValCheck(obj, objReplace,css)
{
    if(objReplace.className == css)
    {
        obj.setAttribute('checked','true');
        objReplace.className += 'Selected';
    }
    else
    {
        obj.removeAttribute('checked');
        objReplace.className = css;
    }
    
  
}
//CheckBox Replacement
function checkReplacement(obj) 
{   
    var reg=new RegExp("[\[\]]", "gi");
    var css = obj.name.replace(reg, '')+'Replace';    
    
    if(document.getElementById('cr'+obj.id))
    {
        setValCheck(obj, document.getElementById('cr'+obj.id),css);      
    }
    else
    {
	    // append a class to the select
	    var divCheck = document.createElement('div');
	    divCheck.id = 'cr'+obj.id;
	    divCheck.className=css;
	 
	    if(obj.checked===true)
	    {
	        divCheck.className = css+'Selected';      
	    }
	    
	    divCheck.onclick = function() 
	    {    
	        if(this)
	        {
	            setValCheck(obj, this, css);    
	            if(obj.onclick)
		        {
		            obj.onclick();    
		        } 
	        } 
	    };
	    
	    obj.className += ' replaced';
	    obj.parentNode.insertBefore(divCheck,obj);
    }
}
function setValRadio(obj, objReplace,css)
{
	if(objReplace.className == css)
	{
	    var listObj = document.getElementsByName(obj.name);
	      
	    for(var i=0; i<listObj.length; i++)
	    {
	        //checkReplacement
	        var s = document.getElementById(listObj[i].id);
	        s.removeAttribute('checked');
	        
	        var sr = document.getElementById('rr'+listObj[i].id);
	        sr.className = css;   
	    }
	    obj.setAttribute('checked','true');
	    objReplace.className = css+'Selected';                
	}
	
	 
}
//RadioButton Replacement
function radioReplacement(obj) 
{
    var reg=new RegExp("[\[\]]", "gi");
    var css = obj.name.replace(reg, '')+'Replace';
    
    if(document.getElementById('rr'+obj.id))
    {
        setValRadio(obj, document.getElementById('rr'+obj.id), css);
    }
    else
    {
	    // append a class to the select
	    var divCheck = document.createElement('div');
	    divCheck.id = 'rr'+obj.id;
	    divCheck.className=css;
	 
	    if(obj.checked===true)
	    {
	        divCheck.className = css+'Selected';      
	    }
	    
	    divCheck.onclick = function() 
	    {    
	        if(this)
	        {
	            setValRadio(obj, document.getElementById('rr'+obj.id), css) ;
	            if(obj.onclick)
		        {
		           obj.onclick();    
		        }   
	        } 
	        
	    };
	    
	    obj.className += ' replaced';
	    obj.parentNode.insertBefore(divCheck,obj);
	    
	    
    }
}
function getType(obj, variable)
{
    var fct = '';
     
    if(obj.type=='checkbox')
    {
        fct = window[checkReplacement(variable)];
    }
    else
    {
        if(obj.type=='radio')
        {
             fct = window[radioReplacement(variable)];
        }
        else
        {
            if(obj.type=='select-one')
            {
                 fct = window[selectReplacement(variable)];
            }  
        }
    }
    return fct;     
}
function setForm(name) 
{
    var obj = document.getElementsByName(name);
    
    for(var i=0; i<obj.length; i++)
    {
        //checkReplacement
       var s = document.getElementById(obj[i].id);       
       if(s.nextSibling.nextSibling && s.nextSibling.nextSibling.tagName=='LABEL')
       {	          
            s.nextSibling.nextSibling.onclick = function() 
            {    
		        getType(s,this.previousSibling.previousSibling); 
            };
        }
        getType(s,s); 
    }
}
