﻿/**
	@file
	select.js <br/>
	HOTEL(Rakuten Taravel) <br/>
	<br/>
	@breif 
	@author kawa
	@version 1.0.0.0
	@since  15/10/2009
	$Revision: $
*/

/**
	Selectの幅を自動的に変更します
	@brief マウスがOVERである場合、幅を変更します
*/
function FixWidth(selectObj,flg)
{	var browser=navigator.appName;
	if(browser!="Microsoft Internet Explorer") {
		return;
	}
	if (flg == 1) {
       event.returnValue = false;
		selectObj.focus();
		return;
	}

	var isSelectObj = $(selectObj.name + "new");
	if (isSelectObj != null) {
		return;
	}
    var newSelectObj = document.createElement("select");
    newSelectObj = selectObj.cloneNode(true);
    newSelectObj.name +="new";
    //newSelectObj.id += "new";
    newSelectObj.selectedIndex = selectObj.selectedIndex;
    newSelectObj.onchange = null;    
    newSelectObj.onmouseover = null; 
    newSelectObj.onfocus = null; 
    
    var e = selectObj;
    var absTop = e.offsetTop;
    var absLeft = e.offsetLeft;
    while(e = e.offsetParent)
    {
        absTop += e.offsetTop;
        absLeft += e.offsetLeft;
    }
    with (newSelectObj.style)
    {
        position = "absolute";
        top = absTop + "px";
        left = absLeft + "px";
        width = "auto";
    }    
    var rollback = function(){ RollbackWidth(selectObj, newSelectObj); };
    if(window.addEventListener)
    {
        newSelectObj.addEventListener("blur", rollback, false);
        newSelectObj.addEventListener("change", rollback, false);
    }
    else
    {
        newSelectObj.attachEvent("onblur", rollback);
        newSelectObj.attachEvent("onchange", rollback);
    }    
    newSelectObj.style.visibility = "hidden"

    document.body.appendChild(newSelectObj);
    var width = newSelectObj.clientWidth;
    if (width > selectObj.clientWidth) {
         selectObj.style.visibility = "hidden";
         newSelectObj.style.visibility = "visible"
		 newSelectObj.focus();
     } else {
		document.body.removeChild(newSelectObj);
		return;
     }
}

/**
	Selectの幅は元の幅に変更します
	@brief フォーカスが移動する場合、幅を変更します
*/
function RollbackWidth(selectObj, newSelectObj)
{
	var selIndex = newSelectObj.selectedIndex;
	document.body.removeChild(newSelectObj);
    selectObj.selectedIndex = selIndex;
    selectObj.onchange();
    selectObj.style.visibility = "visible";    
}