YAHOO.namespace( 'YAHOO.Hack' ).FixIESelectWidth = new function() {
var oSelf = this; 
var YUE = YAHOO.util.Event;
var YUD = YAHOO.util.Dom;
var oTimer = {};
var oAnim = {};
var nTimerId =  0 ;
var dLastFocalItem;
var ie7 = !!(document.uniqueID  &&   typeof(XMLHttpRequest)!='undefined' )
function init(el) {


el = el || this;



if( el.tagName.toLowerCase() != 'select')
{
//throw Error('element [' + el.id + '] is not <select>');
return;
};	

if(!YUD.hasClass( el.parentNode, 'select-box'))
{
//throw Error('className select-box is not included for element [' + el.id + ']');
//throw Error('className select-box is not included for element');
return;
};	

var oRs = el.runtimeStyle;
var oPRs = el.parentNode.runtimeStyle;


oPRs.fonSize = 0;


var sDisplay = el.parentNode.currentStyle.display.toLowerCase() ;
if(  sDisplay=='' ||  sDisplay=='inline' ||  sDisplay=='inline-block' )
{
oPRs.display = 'inline-block';
oPRs.width = el.offsetWidth + 'px';
oPRs.height =el.offsetHeight + 'px';
oPRs.position = 'relative';
oRs.position = 'absolute';
oRs.top = 0;
oRs.left = 0;
};



el._timerId = ( nTimerId+=1 );

el.selectedIndex = Math.max( 0 , el.selectedIndex );

oTimer[ '_' + el._timerId ] = setTimeout('void(0)',0);
oAnim [ 'A' + el._timerId ] = setTimeout('void(0)',0);

YUE.on( el, 'mouseover' , onMouseOver);
YUE.on( document, 'mousedown' ,onMouseDown , el, true);
YUE.on(  el, 'change' ,collapseSelect , el, true);
}


function collapseSelect(e)
{
status++;
this.runtimeStyle.width = '';			
}

function onMouseOver(e )
{

var el = this;	
if(dLastFocalItem && dLastFocalItem !=el)
{
onMouseDown.call( dLastFocalItem , e );
};

var sTimerId ='_' +  el._timerId ;
var sAniId = 'A' + el._timerId ;
clearTimeout( oTimer[ sTimerId ] );



var onTween = function()
{
clearTimeout( oAnim [  sAniId  ] );
if( Math.abs( nEndWidth - nStartWidth ) > 3 )
{
nStartWidth += (nEndWidth - nStartWidth ) /3;
el.runtimeStyle.width = nStartWidth + 'px';
oAnim [  sAniId  ] = setTimeout( onTween ,0 );
}
else
{
el.runtimeStyle.width = 'auto';
el.selectedIndex = Math.max( 0 , el.selectedIndex );
}
}

var nStartWidth =  el.offsetWidth ;
el.runtimeStyle.width = 'auto';
var nEndWidth  = el.offsetWidth;


clearTimeout( oAnim [  sAniId  ] );
onTween();

el.focus();		
dLastFocalItem = el;
}

function onMouseDown(e , el )
{
el = ( e.srcElement || e.target );



if( el == this && e.type!='mouseover' )
{
status++;
YUE.stopEvent(e);
return false;
};


el = this;

clearTimeout( oAnim [ 'A' + el._timerId ] );


var sTimerId ='_' +  el._timerId ;
var doItLater = function()
{
el.runtimeStyle.width = '';			
};
if( e.type=='mouseover')
{ doItLater();}
else{
oTimer[ sTimerId ] = setTimeout(doItLater,100);
}
}



function constructor(sId)
{
sId = [ sId , ''].join('');
//Only fix for IE55 ~ IE7

if(document.uniqueID && window.createPopup )
{			
YUE.onAvailable(sId ,init );
return true;

}else{return false};
};

return  constructor;
};

$("select").each(function(i){
	var s1 = new YAHOO.Hack.FixIESelectWidth(this.name);
});


