function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}
function userSelectDecorator (select, objParam) {
    var isIE = (String(typeof(document.all)) != "undefined");
    if (typeof select != 'object')
        select = document.getElementById (select);
    if (!select || select.__userSelectDecorator || select.tagName != 'SELECT') return;

    sWidth = objParam.sWidth || 15;
    select.className = objParam.selectClass || "";

    if (select.currentStyle) {
        cWidth = select.currentStyle.width;
        cHeight = select.currentStyle.height;
    }
    else {
    	cWidth = null;
    	cHeight = null;
    }

    mdStyle = {
        width   : parseInt(select.style.width || cWidth || select.offsetWidth) + 'px',
        height  : parseInt(select.style.height || cHeight || select.offsetHeight)+ 'px',
        overflow: 'hidden'
    }
    dStyle = {
        width   : parseInt(select.style.width || cWidth || select.offsetWidth) + 'px',
        height  : parseInt(select.style.height || cHeight || select.offsetHeight) + 'px'
        //position: 'absolute'
    }
    sStyle = { // стиль селекта чтобы его спрятать
        //position: 'absolute',
		//position: 'relative',
        overflow: 'hidden',
        opacity : 0,
        zIndex  : 1
    };
    spStyle = {
    	    width   :(parseInt(select.style.width || cWidth || select.offsetWidth) - sWidth ) + 'px',
            height  :parseInt(select.style.height || cHeight || select.offsetHeight) + 'px',
            overflow: 'hidden',
            whiteSpace: 'nowrap',
            position: 'absolute',
            display : 'block'
    };

    getOpacityProperty = function () {
      if (typeof document.body.style.opacity == 'string') // CSS3 compliant (Moz 1.7+, Safari 1.2+, Opera 9)
        return 'opacity';
      else if (typeof document.body.style.MozOpacity == 'string') // Mozilla 1.6 и младше, Firefox 0.8
        return 'MozOpacity';
      else if (typeof document.body.style.KhtmlOpacity == 'string') // Konqueror 3.1, Safari 1.1
        return 'KhtmlOpacity';
      else if (document.body.filters && navigator.appVersion.match(/MSIE ([\d.]+);/)[1]>=5.5) // Internet Exploder 5.5+
        return 'filter';

      return false; //нет прозрачности
    }
    setElementOpacity = function (elem, nOpacity) {
    	  var opacityProp = getOpacityProperty();
    	  if (!elem || !opacityProp) return; // Если не существует элемент с указанным id или браузер не поддерживает ни один из известных функции способов управления прозрачностью
    	  if (opacityProp=="filter") {  // Internet Exploder 5.5+
    	    nOpacity *= 100;
    	    // Если уже установлена прозрачность, то меняем её через коллекцию filters, иначе добавляем прозрачность через style.filter
    	    var oAlpha = elem.filters['DXImageTransform.Microsoft.alpha'] || elem.filters.alpha;
    	    if (oAlpha){ oAlpha.opacity = nOpacity; alert(11);}
    	    else {
    	        elem.style.filter += "progid:DXImageTransform.Microsoft.Alpha(opacity="+nOpacity+")"; // Для того чтобы не затереть другие фильтры используем "+="
    	    }
    	  }
    	  else // Другие браузеры
    	    elem.style[opacityProp] = nOpacity;
    }
    setStyle = function (to, obj){
		for (i in obj)
		if (i == 'opacity'){
			setElementOpacity (to, obj[i]);
		}
		else {
			to.style[i] = obj[i];
		}
    }
    setStyle(select, sStyle);

    var mDiv = document.createElement('div');
    select.parentNode.insertBefore(mDiv, select.nextSibling);
    mDiv.appendChild(select);
    setStyle(mDiv, mdStyle);
    mDiv.className = objParam.mainDivClass || "";
    //from IE
    if (isIE) {
    	select.style.width = 'auto';
    	if (select.clientWidth < parseInt(mdStyle.width))
    		select.style.width = mdStyle.width;
    }

    var span = document.createElement ('span');
    var div = document.createElement ('div');
    div.className = objParam.divClass || "";
    span.className = objParam.spanClass || "";

    setStyle(span, spStyle);
    setStyle(div, dStyle);
    span.innerHTML = select.options[select.selectedIndex].innerHTML;
    mDiv.title = span.innerHTML;

    select.parentNode.insertBefore(div, select.nextSibling);
    div.parentNode.insertBefore(span, div.nextSibling);

    addChange = function (){
        span.innerHTML = select.options[select.selectedIndex].innerHTML;
        mDiv.title = span.innerHTML;
    }
    if (select.onchange) {
        var tmp = select.onchange;
    	select.onchange = "";
    	change = function () {
    		addChange();
    		tmp ();
    	}
    }
    else change = addChange;
    select.onchange = change;
    select.__userSelectDecorator = true;

}

