
function cuSel(params) {
							
	jQ(params.changedEl).each(
	function(num)
	{
	var chEl = jQ(this),
		chElWid = chEl.outerWidth(), 
		chElClass = chEl.prop("class"), 
		chElId = chEl.prop("id"), 
		chElName = chEl.prop("name"), 
		defaultVal = chEl.val(), 
		activeOpt = chEl.find("option[value='"+defaultVal+"']").eq(0),
		defaultText = activeOpt.text(), 
		disabledSel = chEl.prop("disabled"), 
		scrollArrows = params.scrollArrows,
		chElOnChange = chEl.prop("onchange"),
		chElTab = chEl.prop("tabindex"),
		chElMultiple = chEl.prop("multiple");
		
		if(!chElId || chElMultiple)	return false; 
		
		if(!disabledSel)
		{
			classDisCuselText = "", 
			classDisCusel=""; 
		}
		else
		{
			classDisCuselText = "classDisCuselLabel";
			classDisCusel="classDisCusel";
		}
		
		if(scrollArrows)
		{
			classDisCusel+=" cuselScrollArrows";
		}
			
		activeOpt.addClass("cuselActive");  
	
	var optionStr = chEl.html(), 

		
	
	
	spanStr = optionStr.replace(/option/ig,"span").replace(/value=/ig,"val="); 
	
	
	if(jQ.browser.msie && parseInt(jQ.browser.version) < 9)
	{
		var pattern = /(val=)(.*?)(>)/g;
		spanStr = spanStr.replace(pattern, "jQ1'jQ2'jQ3");
	}

	
	
	if(params.checkZIndex)
	{
		num = jQ(".cusel").length;
	}
	
	
	
	var cuselFrame = '<div class="cusel '+chElClass+' '+classDisCusel+'"'+
					' id=cuselFrame-'+chElId+
					' style="width:'+chElWid+'px"'+
					' tabindex="'+chElTab+'"'+
					'>'+
					'<div class="cuselFrameRight"></div>'+
					'<div class="cuselText">'+defaultText+'</div>'+
					'<div class="cusel-scroll-wrap"><div class="cusel-scroll-pane" id="cusel-scroll-'+chElId+'">'+
					spanStr+
					'</div></div>'+
					'<input type="hidden" id="'+chElId+'" name="'+chElName+'" value="'+defaultVal+'" />'+
					'</div>';
					
					
	
	chEl.replaceWith(cuselFrame);
	
	
	if(chElOnChange) jQ("#"+chElId).bind('change',chElOnChange);

	
	
	var newSel = jQ("#cuselFrame-"+chElId),
		arrSpan = newSel.find("span"),
		defaultHeight;
		
		if(!arrSpan.eq(0).text())
		{
			defaultHeight = arrSpan.eq(1).outerHeight();
			arrSpan.eq(0).css("height", arrSpan.eq(1).height());
		} 
		else
		{
			defaultHeight = arrSpan.eq(0).outerHeight();
		}
		
	
	if(arrSpan.length>params.visRows)
	{
		newSel.find(".cusel-scroll-wrap").eq(0)
			.css({height: defaultHeight*params.visRows+"px", display : "none", visibility: "visible" })
			.children(".cusel-scroll-pane").css("height",defaultHeight*params.visRows+"px");
	}
	else
	{
		newSel.find(".cusel-scroll-wrap").eq(0)
			.css({display : "none", visibility: "visible" });
	}
	
	
	
	var arrAddTags = jQ("#cusel-scroll-"+chElId).find("span[addTags]"),
		lenAddTags = arrAddTags.length;
		
		for(i=0;i<lenAddTags;i++) arrAddTags.eq(i)
										.append(arrAddTags.eq(i).attr("addTags"))
										.removeAttr("addTags");
										
	cuselEvents();
	
	});


function cuselEvents() {
jQ("html").unbind("click");

jQ("html").click(
	function(e)
	{

		var clicked = jQ(e.target),
			clickedId = clicked.attr("id"),
			clickedClass = clicked.prop("class");
			
		
		if((clickedClass.indexOf("cuselText")!=-1 || clickedClass.indexOf("cuselFrameRight")!=-1) && clicked.parent().prop("class").indexOf("classDisCusel")==-1)
		{
			var cuselWrap = clicked.parent().find(".cusel-scroll-wrap").eq(0);
			
			
			if(cuselWrap.css("display")=="none")
			{
				jQ(".cusel-scroll-wrap").css("display","none");
				cuselWrap.css("display","block");
				var cuselArrows = false;
				if(clicked.parents(".cusel").prop("class").indexOf("cuselScrollArrows")!=-1) cuselArrows=true;
				if(!cuselWrap.find(".jScrollPaneContainer").eq(0).is("div"))
				{
					cuselWrap.find("div").eq(0).jScrollPaneCusel({showArrows:cuselArrows});
					/*var scrollContainer = cuselWrap.find(".jScrollPaneContainer").eq(0),
						widScrollContainer = scrollContainer.width();
						
						scrollContainer.css("width",widScrollContainer+"px");
						*/
				}
			}
			else
			{
				cuselWrap.css("display","none");
			}
			
		}
		
		else if(clickedClass.indexOf("cusel")!=-1 && clickedClass.indexOf("classDisCusel")==-1 && clicked.is("div"))
		{
	
			var cuselWrap = clicked.find(".cusel-scroll-wrap").eq(0);
			
			
			if(cuselWrap.css("display")=="none")
			{
				jQ(".cusel-scroll-wrap").css("display","none");
				cuselWrap.css("display","block");
				var cuselArrows = false;
				if(clicked.prop("class").indexOf("cuselScrollArrows")!=-1) cuselArrows=true;
				if(!cuselWrap.find(".jScrollPaneContainer").eq(0).is("div"))
				{
					cuselWrap.find("div").eq(0).jScrollPaneCusel({showArrows:cuselArrows});
				}
			}
			else
			{
				cuselWrap.css("display","none");
			}
			
		}
		
		else if(clicked.is(".cusel-scroll-wrap span") && clickedClass.indexOf("cuselActive")==-1)
		{	
			var redirLink;
			var clickedVal;
			(clicked.attr("val") == undefined) ? clickedVal=clicked.text() : clickedVal=clicked.attr("val");
			clicked
				.parents(".cusel-scroll-wrap").find(".cuselActive").eq(0).removeClass("cuselActive")
				.end().parents(".cusel-scroll-wrap")
				.next().val(clickedVal)
				.end().prev().text(clicked.text())
				.end().css("display","none");
			clicked.addClass("cuselActive");
			redirLink=clicked.attr('val');
			clicked.parents(".bg_best3").find('a.add').attr('href',redirLink);
			if(clickedClass.indexOf("cuselActive")==-1)	clicked.parents(".cusel").find(".cusel-scroll-wrap").eq(0).next("input").change(); 
		}
		
		else if(clicked.parents(".cusel-scroll-wrap").is("div"))
		{
			return;
		}
		
		
		else
		{
			jQ(".cusel-scroll-wrap").css("display","none");
		}
		

		
	});

jQ(".cusel").unbind("keydown"); 

jQ(".cusel").keydown(
function(event)
{
	
	
	var key, keyChar;
		
	if(window.event) key=window.event.keyCode;
	else if (event) key=event.which;
	
	if(key==null || key==0 || key==9) return true;
	
	if(jQ(this).prop("class").indexOf("classDisCusel")!=-1) return false;
		
	
	if(key==40)
	{
		var cuselOptHover = jQ(this).find(".cuselOptHover").eq(0);
		if(!cuselOptHover.is("span")) var cuselActive = jQ(this).find(".cuselActive").eq(0);
		else var cuselActive = cuselOptHover;
		var cuselActiveNext = cuselActive.next();
			
		if(cuselActiveNext.is("span"))
		{
			jQ(this)
				.find(".cuselText").eq(0).text(cuselActiveNext.text());
			cuselActive.removeClass("cuselOptHover");
			cuselActiveNext.addClass("cuselOptHover");
			
			
			var scrollWrap = jQ(this).find(".cusel-scroll-pane").eq(0);
				
			if(scrollWrap.parent().find(".jScrollPaneTrack").eq(0).is("div"))
			{
				var idScrollWrap = scrollWrap.prop("id"),
					hOption = scrollWrap.find("span").eq(0).outerHeight();
				jQ("#"+idScrollWrap)[0].scrollBy(hOption);
			}
			
			return false;
		}
		else return false;
	}
	
	
	if(key==38)
	{
		var cuselOptHover = jQ(this).find(".cuselOptHover").eq(0);
		if(!cuselOptHover.is("span")) var cuselActive = jQ(this).find(".cuselActive").eq(0);
		else var cuselActive = cuselOptHover;
		cuselActivePrev = cuselActive.prev();
			
		if(cuselActivePrev.is("span"))
		{
			jQ(this)
				.find(".cuselText").eq(0).text(cuselActivePrev.text());
			cuselActive.removeClass("cuselOptHover");
			cuselActivePrev.addClass("cuselOptHover");
			
			
			var scrollWrap = jQ(this).find(".cusel-scroll-pane").eq(0);
				
			if(scrollWrap.parent().find(".jScrollPaneTrack").eq(0).is("div"))
			{
				var idScrollWrap = scrollWrap.prop("id"),
					hOption = -parseInt(scrollWrap.find("span").eq(0).outerHeight());
				jQ("#"+idScrollWrap)[0].scrollBy(hOption);
			}
			
			return false;
		}
		else return false;
	}
	
	
	if(key==27)
	{
		var cuselActiveText = jQ(this).find(".cuselActive").eq(0).text();
		jQ(this)
			.find(".cusel-scroll-wrap").eq(0).css("display","none")
			.end().find(".cuselOptHover").eq(0).removeClass("cuselOptHover");
		jQ(this).find(".cuselText").eq(0).text(cuselActiveText);
	}
	
	
	if(key==13)
	{
		
		var cuselHover = jQ(this).find(".cuselOptHover").eq(0);
		if(cuselHover.is("span"))
		{
			jQ(this).find(".cuselActive").removeClass("cuselActive");
			var cuselHoverVal = cuselHover.attr("val");
			cuselHover.addClass("cuselActive");
		}
		else var cuselHoverVal = jQ(this).find(".cuselActive").attr("val");
		
		jQ(this)
			.find(".cusel-scroll-wrap").eq(0).css("display","none")
			.end().find(".cuselOptHover").eq(0).removeClass("cuselOptHover");
		jQ(this).find("input").eq(0)
			.val(cuselHoverVal)
			.change();
	}
		
	if(jQ.browser.opera) return false; 

});


var arr = [];
jQ(".cusel").keypress(function(event)
{
	var key, keyChar;
		
	if(window.event) key=window.event.keyCode;
	else if (event) key=event.which;
	
	if(key==null || key==0 || key==9) return true;
	
	if(jQ(this).prop("class").indexOf("classDisCusel")!=-1) return false;
	
	var o = this;
	arr.push(event);
	clearTimeout(jQ.data(this, 'timer'));
	var wait = setTimeout(function() { handlingEvent() }, 500);
	jQ(this).data('timer', wait);
	function handlingEvent()
	{
		var charKey = [];
		for (var iK in arr)
		{
			if(window.event)charKey[iK]=arr[iK].keyCode;
			else if(arr[iK])charKey[iK]=arr[iK].which;
			charKey[iK]=String.fromCharCode(charKey[iK]).toUpperCase();
		}
		var arrOption=jQ(o).find("span"),colArrOption=arrOption.length,i,letter;
		for(i=0;i<colArrOption;i++)
		{
			var match = true;
			for (var iter in arr)
			{
				letter=arrOption.eq(i).text().charAt(iter).toUpperCase();
				if (letter!=charKey[iter])
				{
					match=false;
				}
			}
			if(match)
			{
				jQ(o).find(".cuselOptHover").removeClass("cuselOptHover").end().find("span").eq(i).addClass("cuselOptHover").end().end().find(".cuselText").eq(0).text(arrOption.eq(i).text());
				var scrollWrap=jQ(o).find(".cusel-scroll-pane").eq(0);
				if(scrollWrap.parent().find(".jScrollPaneTrack").eq(0).is("div"))
				{
					var idScrollWrap=scrollWrap.prop("id"),hOption=scrollWrap.find("span").eq(0).outerHeight()-0.2;
					jQ("#"+idScrollWrap)[0].scrollTo(hOption*i);
				}
			arr = arr.splice;
			arr = [];
			break;
			return true;
			}
		}
		arr = arr.splice;
		arr = [];
	}
	if(jQ.browser.opera && window.event.keyCode!=9) return false;
});
								
}


var arrCusel = jQ(".cusel"),
	colCusel = arrCusel.length-1,
	i;

	for(i=0;i<=colCusel;i++)
	{
		arrCusel.eq(i).css("z-index",colCusel-i);
	}
	
jQ(".cusel").focus(
function()
{
	jQ(this).addClass("cuselFocus");
});

jQ(".cusel").blur(
function()
{
	jQ(this).removeClass("cuselFocus");
});

jQ(".cusel").hover(
function()
{
	jQ(this).addClass("cuselFocus");
},
function()
{
	jQ(this).removeClass("cuselFocus");
});

}

function cuSelRefresh(params)
{
	

	var arrRefreshEl = params.refreshEl.split(","),
		lenArr = arrRefreshEl.length,	
		i;
	
	for(i=0;i<lenArr;i++)
	{
		var refreshScroll = jQ(arrRefreshEl[i]).parents(".cusel").find(".cusel-scroll-wrap").eq(0);
		refreshScroll.find(".cusel-scroll-pane").jScrollPaneRemoveCusel();
		refreshScroll.css({visibility: "hidden", display : "block"});
	
		var	arrSpan = refreshScroll.find("span"),
			defaultHeight = arrSpan.eq(0).outerHeight();
		
		
		
	
		if(arrSpan.length>params.visRows)
		{
			refreshScroll
				.css({height: defaultHeight*params.visRows+"px", display : "none", visibility: "visible" })
				.children(".cusel-scroll-pane").css("height",defaultHeight*params.visRows+"px");
		}
		else
		{
			refreshScroll
				.css({display : "none", visibility: "visible" });
		}
	}
	
}

