function createSelectElement(classSE, selChangeFunction){
	if(arguments.length == 2){
		var classSE = typeof classSE != 'string' ? 'selectReplace' : classSE;
	}
	else {
		var selChangeFunction = typeof selChangeFunction != 'function' ? function(){} : selChangeFunction;
	};
	if(arguments.length == 1){
		if(typeof classSE == 'function'){
			var selChangeFunction = classSE;
			var classSE = 'selectReplace';
		}
		else {
			if(typeof classSE == 'string'){
				var classSE = classSE;
				var selChangeFunction = function(){};
			}
			else {
				var classSE = 'selectReplace';
				var selChangeFunction = function(){};
			};
		};
	};
	if(arguments.length == 0){
		var classSE = 'selectReplace';
	};
	var sel = document.getElementsByTagName('SELECT');
	var selName, selValue;
	
	for(var i=0;i<sel.length;i++){
		if(typeof sel[i].className != 'undefined' && sel[i].className == classSE){
			addSelect(sel[i],selChangeFunction).style.zIndex = 1000 - i;
		};
	};
};

function refreshSelectElement(classSE, selChangeFunction){
	if(arguments.length == 2){
		var classSE = typeof classSE != 'string' ? 'selectReplace' : classSE;
	}
	else {
		var selChangeFunction = typeof selChangeFunction != 'function' ? function(){} : selChangeFunction;
	};
	if(arguments.length == 1){
		if(typeof classSE == 'function'){
			var selChangeFunction = classSE;
			var classSE = 'selectReplace';
		}
		else {
			if(typeof classSE == 'string'){
				var classSE = classSE;
				var selChangeFunction = function(){};
			}
			else {
				var classSE = 'selectReplace';
				var selChangeFunction = function(){};
			};
		};
	};
	if(arguments.length == 0){
		var classSE = 'selectReplace';
	};
	var sel = document.getElementsByTagName('SELECT');
	var divSelect;

	function prev(elem){
	   do {
			   elem = elem.previousSibling;
	   } while (elem && elem.nodeType != 1);
	   return elem;
	}
	for(var i=0;i<sel.length;i++){
		if(sel[i].className.indexOf(classSE) != -1){
			divSelect = prev(sel[i]);
			divSelect.parentNode.removeChild(divSelect);
			createSelectElement(classSE, selChangeFunction);
		};
	};
	
};

function addSelect(sel,fun){
	selName = sel.getAttribute('name');
	selValue = sel.options[sel.selectedIndex].getAttribute('img_src') ? '<span style="background-image:url(' + sel.options[sel.selectedIndex].getAttribute('img_src')+');"></span>' + sel.options[sel.selectedIndex].value : sel.options[sel.selectedIndex].value;
	
	var divCloneEl = document.createElement('DIV');
	sel.parentNode.insertBefore(divCloneEl,sel);
	
	divCloneEl.className = 'selectElement sEBlur sECollapsed';

	divCloneEl.sel = sel;
	sel.div = divCloneEl;
	
	divCloneEl.appendChild(document.createElement('DIV'));
	var divDropDown = divCloneEl.firstChild;
	divDropDown.className = 'sEDropDown';
	divDropDown.appendChild(document.createElement('IFRAME'))
	var divIframe = divDropDown.firstChild;
	divIframe.setAttribute('frameborder','0');
	divIframe.setAttribute('scrolling','no');
	divIframe.className = 'sEIframe';
	divDropDown.insertBefore(document.createElement('DIV'),divIframe);
	var divCont = divCloneEl.firstChild.firstChild;
	divCloneEl.divCont = divCont;
	divCont.className = 'sEDropDownCont';
	var divHTML = '';
	for(var j=0;j<sel.options.length;j++){
		if(sel.options[j].getAttribute('img_src')){
			divHTML +='<div><span style="background-image:url('+sel.options[j].getAttribute('img_src')+');"></span>' + sel.options[j].innerHTML + '</div>';
		}
		else {
			divHTML +='<div>' + sel.options[j].innerHTML + '</div>';
		};
	};
	divCont.innerHTML = divHTML;
	var divOptions = divCont.childNodes;
	for(var j=0;j<divOptions.length;j++){
		divOptions[j].sEIndex = j;
		divOptions[j].onmouseover = function() { this.className += ' sEHoverItem'; };
		divOptions[j].onmouseout = function() { this.className = this.className.replace(/[\s]?sEHoverItem/, ''); }
	};
	divCloneEl.insertBefore(document.createElement('DIV'),divDropDown);
	var divArrow = divCloneEl.firstChild;
	divArrow.className = 'sEArrow';
	divCloneEl.insertBefore(document.createElement('DIV'),divArrow);
	var divResult = divCloneEl.firstChild;
	divResult.className = 'sEResult';
	divResult.innerHTML = selValue;
	
	function srAddEvent(obj, type, fn){ 
		if (obj.addEventListener)
			obj.addEventListener(type, fn, false);
		else if (obj.attachEvent)
			obj.attachEvent( "on"+type, fn );
	};
	
	sel.onfocus = function() { this.div.className = this.div.className.replace(/[\s]?sEBlur/, ' sEFocus'); };
	sel.onblur = function() {	this.div.className = this.div.className.replace(/[\s]?sEFocus/, ' sEBlur');	};
	sel.onchange = function(){
		var div = this.div;
		div.sESelectedItem(div.divCont.childNodes[this.selectedIndex]);
	};
	sel.onkeypress = function(e){
		var ev = typeof event != 'undefined' ? event : e;
		var keyCode = ev.keyCode;
		var i = this.selectedIndex;
		var div = this.div;
		var divCont = div.divCont;

		switch (keyCode) {
			case 13:
				fun(div);
			break;
			case 27:
			case 9:
				div.sECollapse();
			break;

			case 37:
			case 38:
				div.sESelectedItem(divCont.childNodes[i]);
			break;

			case 40:
				if(e.altKey)
				{
					div.sEExpand();
					break;
				}
			case 39:
					div.sESelectedItem(divCont.childNodes[i]);
			break;

			case 33:
			case 36:
				div.sESelectedItem(divCont.firstChild);
			break;

			case 34:
			case 35:
				ul.srSelectLi(divCont.lastChild);
			break;
			default:
			break;
		};
	};
	
	divCloneEl.onmouseover = function() { this.className += ' sEHover'; }
	divCloneEl.onmouseout = function() { this.className = this.className.replace(/[\s]?sEHover/, ''); }
	
	divCloneEl.fun = function(){fun(this)};
	
	divCloneEl.sESelectedItem = function(itemEl){
		var div = itemEl.parentNode.parentNode.parentNode;
		if(div.sESelectesIndex != null)
			div.divCont.childNodes[div.sESelectesIndex].className = '';

		div.sESelectesIndex = itemEl.sEIndex;
		div.sEIndex = itemEl.sEIndex;

		div.divCont.childNodes[div.sESelectesIndex].className = 'sESelectedItem';
		div.firstChild.innerHTML = div.divCont.childNodes[div.sESelectesIndex].innerHTML;
		return itemEl.sEIndex;
	};
	
	divCloneEl.sEExpand = function(){
		
		if(!this.sEExpanded){
			if(document.sEExpandedList)
				document.sEExpandedList.sECollapse();

			document.sEExpandedList = this;

			this.className  = this.className.replace(/[\s]?sECollapsed/, ' sEExpanded');
			this.sEExpanded = true;

			//this.sel.focus();
			
		};
	};
	
	divCloneEl.sECollapse = function(itemEl){	
		if(this.sEExpanded){
			document.sEExpandedList = null;
			if(itemEl)
				this.sel.selectedIndex = this.sESelectedItem(itemEl);
			
			this.sel.focus();

			this.className = this.className.replace(/[\s]?sEExpanded/, ' sECollapsed');
			this.sEExpanded = false;
		};
	};
	
	if(sel.selectedIndex == null)
		sel.selectedIndex = 0;
	divCloneEl.sESelectedItem(divCloneEl.divCont.childNodes[sel.selectedIndex]);
	divCloneEl.sEIndex = sel.selectedIndex;
	
	return divCloneEl;
};
	
function sEAddEvent(obj, type, fn){ 
	if (obj.addEventListener)
		obj.addEventListener(type, fn, false);
	else if (obj.attachEvent)
		obj.attachEvent( "on"+type, fn );
};

function sEOnDocumentClick(e){
	var target = (window.event) ? window.event.srcElement : e.target;
	var parent = target.parentNode ? target.parentNode : target;
	if(document.sEExpandedList){
		if(parent.className){
			if(parent.className.indexOf('sEDropDownCont') != -1){
				document.sEExpandedList.sECollapse(target);
				parent.parentNode.parentNode.fun();
			}
			else {
				document.sEExpandedList.sECollapse();
			};
		}
		else {
			document.sEExpandedList.sECollapse();
		};
	}
	else {
		if(parent.className.indexOf('selectElement') != -1)
			parent.sEExpand();
	};
};
	
sEAddEvent(document, 'click', sEOnDocumentClick);
sEAddEvent(window, 'load', function(){
	createSelectElement('selectDarkReplace');
});
