var mgTooltip = {
    show : function( selt, elt ){
        //var gtip = $(elt).next('div.company_menu');
        //var url  = mgTooltip._getUrl(elt);
        var arrow = $(gtip).down('span.gtip-arrow');
        arrow.removeClassName('gtip-arrow-left','gtip-arrow-right');
		
        //var viewport = this.viewportDimensions();
        var eltpos   = Position.cumulativeOffset($(selt));
        //var xWidth = (url.params.width || this.options.defaultWidth)*1;
        //var left = eltpos
        /*
        if (viewport.xWidth>(eltpos[0]+$(selt).getWidth()+xWidth)){
        var left = eltpos[0] + $(elt).getWidth() + 15;
            $(arrow).addClassName('gtip-arrow-left');
            $(arrow).setStyle({left:'-10px'});
        } else {
            var left = eltpos[0] - (xWidth*1+15);
            $(arrow).addClassName('gtip-arrow-right');
            $(arrow).setStyle({left:xWidth+'px'});
        }
        $(gtip).setStyle({
                //width:xWidth+'px',
                //height:((url.params.height)?url.params.height:'')+'px',
                top:(eltpos[1]-5)+'px',
                left:left+'px'}).show();
        /*if (this.options.toggleEffect) {
          Effect.toggle($(gtip),this.options.toggleEffect,{duration:0.3});
          }	else { $(gtip).show(); }
        */
        //setTimeout(this.hide.bind(this),10);
        /*
        if (url.isXHR && !$(elt).hasClassName(this.classXHRLoaded)) {
            this._XHRUpdater(url.url,$(gtip).down('div.gtip-content')); 
            $(elt).addClassName(this.classXHRLoaded);
        }
        */
    }
}

Ullet = {};
Ullet.DiffListInPlaceEditorIsChangeSort = false;
Ullet.DiffListInPlaceEditor = Class.create( Ajax.InPlaceEditor, {
        initialize: function($super, element, url, options){
            options.okText = __('保存');
            options.cancelText = __('キャンセル');
            options.clickToEditText = '';
            options.cols = 18;
            options.rows = 1;
            options.onEnterEditMode = function(){
                //mg.Element.refresh('diff_order');
            };
            options.onLeaveEditMode = function(){
                //mg.Element.refresh('diff_order');
            };
            options.onEnterHover = Prototype.EmptyFunction;
            options.onLeaveHover = Prototype.EmptyFunction;
            options.submitOnBlur = true;
            $(element).parent_editor = this;
            $super(element, url, options); 
        },
        createEditField: function($super) {
            $super();
            var input = this._form.down();
            input.id = this.element.id + '_input';
            input.parent_id = this.element.id;
            input.name = 'keyword';
            input.autocomplete = 'off';
            this.hasFocus = true;
            input.onfocus = function(){ input.hasFocus = true; }
            input.create_time = new Date().getTime();
            input.focus();
            input._submitHandler = input.onblur;
            input.onblur = this.handleBlur.bindAsEventListener(this);
            input.onkeydown = this.handleEditorKeyPress.bindAsEventListener(this);
            var div = document.createElement('div');
            div.className = 'auto_complete';
            div.id = this.element.id + '_input_auto_complete';
            div.style.display='none';
            this._form.appendChild(div);
        },
        handleBlur: function(event){
          var el = Event.element(event);
          el.oldvalue = el.value;
          el.hasFocus = false;
          //konsole.log('on:'+el.id);
          setTimeout( function(){
            if( el.oldvalue == el.value ){ // click auto complete change value.
              el._submitHandler();
            }
          }, 200 );
        },
        handleEditorKeyPress: function(event){
          konsole.log( event.keyCode );
              if( event.keyCode == Event.KEY_TAB ){
                var el = Event.element(event);
                if( !el ) return;
                var up = el.up();
                if( !up ) return;
                if( event.shiftKey ){
                  var prev = up.previous();
                  if( !prev ) return;
                  //konsole.log( prev.parent_editor );
                  if( prev.parent_editor ) prev.parent_editor.enterEditMode();
                  Event.stop(event);
                  return;
                } else {
                  var next = up.next();
                  if( !next ) return;
                  var next1 = next.next();
                  if( !next1 ) return;
                  //konsole.log( next1.parent_editor );
                  if( next1.parent_editor ) next1.parent_editor.enterEditMode();
                  Event.stop(event);
                  return;
                }
              }
        },
        enterEditMode: function($super, e){
          if( Ullet.DiffListInPlaceEditorIsChangeSort ){ // ドラッグしたときに編集モードにしない
            Ullet.DiffListInPlaceEditorIsChangeSort = false;
            return;
          }
          if( this.element && this.element.style ){
            if( 5 < ( Math.abs( parseFloat(this.element.style.top) ) ) ) return;
          }
          $super(e);
          if( !$(this.element.id + '_input') ) return;
          new Ullet.Autocompleter(this.element.id + '_input', this.element.id+'_input_auto_complete', __top_path+'company_autocomplete.html', {frequency:0.2});
          //this.element.previous().down('a').href='javascript:void(0)'; // IEでキャンセルクリックするとページ遷移する対策
        }
});

Ullet.Autocompleter = Class.create(Ajax.Autocompleter, {
        baseInitialize: function($super, element, update, options) {
            $super(element, update, options);
            this.is_reset_index = false;
            this.is_move_mouse = false;
            this.interval_id = null;
            this.pre_value = null;
            this.is_changed = false;
        },
        
        updateElement: function($super,selectedElement) {
            if( selectedElement && selectedElement.innerHTML == '' ) return;
            $super(selectedElement);
        },

        fieldCheck: function(){
          var value = this.element.value;
          if( this.pre_value == value && this.is_changed ){
            this.is_changed = false;
            this.getUpdatedChoices();
          }
          if( this.pre_value != null && value != this.pre_value ){
            if( value ) this.is_changed = true;
          }
          this.pre_value = value;
          if( this.interval_id ) clearTimeout( this.interval_id );
          this.interval_id = setTimeout(this.fieldCheck.bindAsEventListener(this), 250);
        },
  
        onKeyPress: function($super,event){
            if( Prototype.Browser.Gecko || Prototype.Browser.Opera ){
              this.pre_value = null;
              if( this.interval_id ) clearTimeout( this.interval_id );
              this.interval_id = setTimeout(this.fieldCheck.bindAsEventListener(this), 250);
            }
            if(this.active){
                switch(event.keyCode) {
                case Event.KEY_TAB:
                  Event.stop(event);
                  return;
                case Event.KEY_RETURN:
                if( this.index != -1 ){
                    this.selectEntry();
                } else {
                    var input = this.element.next('input');
                    if( input ) input.click();
                }
                Event.stop(event);
                return;
                }
            }
            $super(event);
        },

        onHover: function($super,event) {
            Event.stop(event);
        },
        
        onMouseMove: function(event) {
            if( this.is_mouse_move == false ){
                this.is_mouse_move = true;
                var element = Event.findElement(event, 'LI');
                if(this.index != element.autocompleteIndex) 
                    {
                        this.index = element.autocompleteIndex;
                        this.render();
                    }
            }
            Event.stop(event);
        },
        
        onLeaveHover: function(event) {
            this.index = -1;
            this.is_mouse_move = false;
            this.render();
        },

        selectEntry: function($super){
            $super();
            var input = this.element.next('input');
            if( input ) input.click();
        },
        
        addObservers: function($super,element) {
            Event.observe(element, "mouseout", this.onLeaveHover.bindAsEventListener(this));
            Event.observe(element, "mousemove", this.onMouseMove.bindAsEventListener(this));
            Event.observe(element, "click", this.onClick.bindAsEventListener(this));
        },
        
        markPrevious: function() {
            if(this.index > 0) this.index--
                else this.index = this.entryCount-1;
            //this.getEntry(this.index).scrollIntoView(true);
        },

        markNext: function() {
          if(this.index < this.entryCount-1) this.index++
          else this.index = 0;
          //this.getEntry(this.index).scrollIntoView(false);
        },
  
        render: function($super){
            if( this.is_reset_index ){
                this.is_reset_index = false;
                this.index = -1;
            }
            $super();
        },
        
        getUpdatedChoices : function() {
            this.is_reset_index = true;
            this.startIndicator();
    
            var entry = encodeURIComponent(this.options.paramName) + '=' + 
            encodeURIComponent(this.getToken());

            //this.options.parameters = this.options.callback ? this.options.callback(this.element, entry) : entry;
            //if(this.options.defaultParams) this.options.parameters += '&' + this.options.defaultParams;

            var url = this.url.sub(/.html$/,'') + '/' + this.element.name + '/' + bin2hex( this.element.value ) + '.html';
            
            this.options.method = 'get';
            new Ajax.Request(url, this.options);

            
            /*
            entry = encodeURIComponent(this.options.paramName) + '=' + encodeURIComponent(this.getToken());
            this.options.parameters = this.options.callback ? this.options.callback(this.element, entry) : entry;
            //if(this.options.defaultParams) this.options.parameters += '&' + this.options.defaultParams;
            this.options.parameters = '';
            new Ajax.Request($url, this.options);
            */
        },
        
        stopIndicator: function() {
            if(this.options.indicator) Element.hide(this.options.indicator);
            this.index = -1;
            this.is_mouse_move = false;
        },
  
        fixIEOverlapping: function() {
          try{
            Position.clone(this.update, this.iefix, {setTop:(!this.update.style.height)});
            this.iefix.style.zIndex = 1;
            this.update.style.zIndex = 2;
            Element.show(this.iefix);
          } catch(e){
          }
        },
  
        onBlur: function(event) {
          // needed to make click events working
          setTimeout(this.hide.bind(this), 250);
          this.hasFocus = false;
          this.active = false;
          if( this.interval_id ) clearTimeout( this.interval_id );
          this.interval_id = null;
        }

    });
Ullet.Sortable = {};
Ullet.Sortable.serialize = function(element) {
    var element = $(element);
    var options = Object.extend(Sortable.options(element), arguments[1] || { });
    var name = encodeURIComponent(
                                  (arguments[1] && arguments[1].name) ? arguments[1].name : element.id);
    
    if (options.tree) {
        return Sortable.tree(element, arguments[1]).children.map( function (item) {
                return [name + Sortable._constructIndex(item) + "[id]=" + 
                        encodeURIComponent(item.id)].concat(item.children.map(arguments.callee));
            }).flatten().join('&');
    } else {
        return Sortable.sequence(element, arguments[1]).map( function(item) {
                return name + "[]=" + encodeURIComponent(item) + '&values[]=' + encodeURIComponent($('diff_'+item).innerHTML); // fix
            }).join('&');
    }
}

Ullet.Diff = function(){ setTimeout( Ullet._Diff, 500 ); }
Ullet._Diff = function(){
  var pdiv = $('diff_order');
  if( pdiv ){
    var div = pdiv.down();
    var url = __top_path + 'diff';
    var count = 0;
    do{
      if( div ){
        var r = div.innerHTML.match(/^(\d\d\d\d)/);
        if( r ){
          url = url + '/' + r[1];
          count = count + 1;
        }
      }
    } while( div = div.next() );
    url = url + '.html';
    if( 2 <= count ){
      konsole.log( url );
      location.href = url;
    } else {
      cool_alert( __('二社以上登録する必要があります。'), 'warning' );
    }
  }
}

    
Ullet.createCompanyMenu = function( company_name, company_no, market_name, market_no, group_name, group_no, star ){
    var company_menu = Builder.node("div", {className: "tooltip", style: "display: none;" } );
  return "<div class=\"title\" style=\"background:#FFFFCC url(img/base/star_"+star+".gif) no-repeat scroll 98% 50%;\">"+__('【')+"<a title=\"\" href=\""+__top_path+"search/market/"+market_no+".html\">"+market_name+"</a>:"+company_no+__('】')+__('「')+"<a title=\"\" href=\""+__top_path+"search/group/"+group_no+".html\">"+group_name+"</a>"+__('」')+"</div><div class=\"content\"><ul class=\"left_list\"><li><a href=\""+__top_path+company_no+".html\">" + __('早わかりページを見る') + "</a></li><li><a href=\""+__top_path+company_no+".html#mark\">" + __('主な指標を見る') + "</a></li><li><a href=\""+__top_path+company_no+".html#all\">" + __('決算書を見る') + "</a></li></ul><ul class=\"right_list\"><li><a onclick=\"new Ajax.Request('"+__top_path+"add_diff/company_no/"+company_no+".html', {asynchronous:true, evalScripts:true, onLoading:function(request, json){diff_list_clear();}}); return false;\" href=\"#\">" + __('他社比較に追加') + "</a></li><li class=\"nopoint\"><img width=\"13\" height=\"13\" alt=\"question.gif\" src=\"img/icon/question.gif\"/><a title=\"" + __('企業名はドラッグすることができます。他の企業名にドラッグアンドドロップすると、その企業と比較することができます。また、ページ右のメニューにある「他社比較」を使用して比較することもできます。') + "\" href=\"javascript:void(0);\" class=\"cooltips\">" + __('企業を比較しますか？') + "</a></li><li><a onclick=\"my_list_clear();new Ajax.Request('"+__top_path+"add_mypage/company_no/"+company_no+".html', {asynchronous:true, evalScripts:true, onLoading:function(request, json){my_list_clear();}}); return false;\" href=\"#\">" + __('マイリストに追加') + "</a></li></ul><div style=\"clear: both;\"></div><ul class=\"mg_menu_tab\"><li class=\"active\" onclick=\"div=createMarkDiv('"+company_no+"');$('company_menu_tips').down('div.sub_content').update(div);$(this).next().removeClassName('active');$(this).addClassName('active');return false;\"><span><a href=\"javascript:void(0);\">" + __('指標表示') + "</a></span></li><li onclick=\"div=createUchartDiv('"+company_no+"');$('company_menu_tips').down('div.sub_content').update(div);$(this).previous().removeClassName('active');$(this).addClassName('active');return false;\"><span><a href=\"javascript:void(0);\">" + __('決算書表示') + "</a></span></li></ul><div style=\"clear:both;\"></div><div class=\"sub_content\">" + createMarkDiv(company_no).innerHTML + "</div><span style=\"left: -10px;\" class=\"arrow\"></span>";
    return company_menu;
}
Ullet.createStockUserMenu = function( stock_user_name, stock_user_no, amount, num, company_no ){
  var stock_menu = Builder.node("div", {className: "tooltip", style: "display: none;" } );
  return "<div class=\"title\">"+__('【')+" "+__("現在の保有金額")+" : "+amount+' '+__('】')+' '+__('【')+" "+__("現在の保有企業数")+" : "+num+' '+__('】')+"</div><div class=\"content\"><ul class=\"left_list\"><li><a href=\""+__top_path+(company_no?(company_no+'.html#have_stock'):('s'+stock_user_no+'.html'))+"\">"+__("保有株についてもっと見る")+"</a></l)i></ul><div style=\"clear: both;\"></div><ul class=\"mg_menu_tab\"><li class=\"active\"><span>"+__('保有株リスト')+"</span></li></ul><div style=\"clear:both;\"></div><div class=\"sub_content\"><div style=\"padding:10px\"><img src=\"/img/icon/indicator.gif\"/> "+__('読み込み中です...')+"</div></div><span style=\"left: -10px;\" class=\"arrow\"></span>";
  return stock_menu;
}
Ullet.createOfficialUserMenu = function( official_user_name, official_user_no, num, stock_user_no ){
  var stock_menu = Builder.node("div", {className: "tooltip", style: "display: none;" } );
  return "<div class=\"title\">"+__('【')+" "+__("役員をしている企業数")+" : "+num+' '+__('】')+"</div><div class=\"content\"><ul class=\"left_list\" style=\"width:380px\"><li><a href=\""+__top_path+(stock_user_no?('s'+stock_user_no+'.html#ranking/official'):('o'+official_user_no+'.html'))+"\">"+__("役員をしている企業についてもっと見る")+"</a></li></ul><div style=\"clear: both;\"></div><ul class=\"mg_menu_tab\"><li class=\"active\"><span>"+__("役員をしている企業リスト")+"</span></li></ul><div style=\"clear:both;\"></div><div class=\"sub_content\"><div style=\"padding:10px\"><img src=\"/img/icon/indicator.gif\"/> "+__('読み込み中です...')+"</div></div><span style=\"left: -10px;\" class=\"arrow\"></span>";
  return stock_menu;
}

Ullet.createIseryuMenu = function( official_name, birthday ){
    var company_menu = Builder.node("div", {className: "tooltip", style: "display: none;" } );
    return "<form action=\"iseryu/index.html\"><div class=\"title\"><input type=\"text\" value=\""+official_name+"\" name=\"name\"/></div><div class=\"content\"><select name=\"wareki\" class=\"wareki\"><option value=\"1\">平成</option><option value=\"2\">昭和</option><option value=\"3\">大正</option><option value=\"4\">明治</option></select>			<select name=\"year10\" class=\"year10\"><option value=\"0\">0</option><option value=\"1\">1</option><option value=\"2\">2</option><option value=\"3\">3</option><option value=\"4\">4</option><option value=\"5\">5</option><option value=\"6\">6</option></select>			<select name=\"year1\" class=\"year1\"><option value=\"0\">0</option><option value=\"1\">1</option><option value=\"2\">2</option><option value=\"3\">3</option><option value=\"4\">4</option><option value=\"5\">5</option><option value=\"6\">6</option><option value=\"7\">7</option><option value=\"8\">8</option><option value=\"9\">9</option></select>年			<select name=\"month\" class=\"month\"><option value=\"1\">1</option><option value=\"2\">2</option><option value=\"3\">3</option><option value=\"4\">4</option><option value=\"5\">5</option><option value=\"6\">6</option><option value=\"7\">7</option><option value=\"8\">8</option><option value=\"9\">9</option><option value=\"10\">10</option><option value=\"11\">11</option><option value=\"12\">12</option></select>月			<select name=\"day\" class=\"day\"><option value=\"1\">1</option><option value=\"2\">2</option><option value=\"3\">3</option><option value=\"4\">4</option><option value=\"5\">5</option><option value=\"6\">6</option><option value=\"7\">7</option><option value=\"8\">8</option><option value=\"9\">9</option><option value=\"10\">10</option><option value=\"11\">11</option><option value=\"12\">12</option><option value=\"13\">13</option><option value=\"14\">14</option><option value=\"15\">15</option><option value=\"16\">16</option><option value=\"17\">17</option><option value=\"18\">18</option><option value=\"19\">19</option><option value=\"20\">20</option><option value=\"21\">21</option><option value=\"22\">22</option><option value=\"23\">23</option><option value=\"24\">24</option><option value=\"25\">25</option><option value=\"26\">26</option><option value=\"27\">27</option><option value=\"28\">28</option><option value=\"29\">29</option><option value=\"30\">30</option><option value=\"31\">31</option></select>日			<select name=\"hour\" class=\"hour\"><option value=\"\">不明</option><option value=\"0\">0</option><option value=\"1\">1</option><option value=\"2\">2</option><option value=\"3\">3</option><option value=\"4\">4</option><option value=\"5\">5</option><option value=\"6\">6</option><option value=\"7\">7</option><option value=\"8\">8</option><option value=\"9\">9</option><option value=\"10\">10</option><option value=\"11\">11</option><option value=\"12\">12</option><option value=\"13\">13</option><option value=\"14\">14</option><option value=\"15\">15</option><option value=\"16\">16</option><option value=\"17\">17</option><option value=\"18\">18</option><option value=\"19\">19</option><option value=\"20\">20</option><option value=\"21\">21</option><option value=\"22\">22</option><option value=\"23\">23</option></select>時<ul class=\"left_list\"><select class=\"sex\" name=\"sex\"><option value=\"1\" selected=\"selected\">男性</option><option value=\"2\">女性</option></select><div style=\"clear: both;\"><input type=\"submit\" value=\"分析する\"/></div><span style=\"left: -10px;\" class=\"arrow\"></span></form>";
  return company_menu;
}

Ullet.createObjectMenuTab = function( active_target ){
  if( !$('company_menu_tips') ) return '';
  var ele = $('company_menu_tips');
  if( ele.menu_params == undefined ) return '';
  var retval = '';
  if( ele.menu_params.company != undefined || ele.menu_params.stock != undefined || ele.menu_params.official != undefined ){
    retval = retval + "<ul class=\"mg_menu_tab tips_tab\">";
    if( ele.menu_params.company != undefined ){
      retval = retval + "<li" + (active_target=='company'?" class=\"active\"":"") + " onclick=\"object_menu_reset('company');\"><span><a href=\"javascript:void(0);\"><img src=\"/img/icon/company.gif\" width=\"13\" height=\"13\"/>"+__('企業情報')+"</a></span></li>";
    }
    if( ele.menu_params.stock != undefined ){
      retval = retval + "<li" + (active_target=='stock'?" class=\"active\"":"") + " onclick=\"object_menu_reset('stock');\"><span><a href=\"javascript:void(0)\"><img src=\"/img/icon/stock.gif\"/>"+__('保有株')+"</a></span></li>";
    }
    if( ele.menu_params.official != undefined ){
      retval = retval + "<li" + (active_target=='official'?" class=\"active\"":"") + " onclick=\"object_menu_reset('official');\"><span><a href=\"javascript:void(0);\"><img src=\"/img/icon/official.gif\"/>"+__('役員をしている企業')+"</a></span></li>";
    }
    retval = retval + "</ul>";
  }
  return retval;
}

Ullet.PathToCompanyNo = function( path ){
  var pos = path.indexOf('.html');
  if( pos == -1 ){
    return;
  } else {
    return path.substring( pos-4, pos );
    //konsole.log( e.href.substring( pos-4, pos ) );
  }
}
Ullet.HrefToCompanyNo = function( e ){
  if( !e || e.href == undefined ) return;
  return Ullet.PathToCompanyNo( e.href );
}
Ullet.HrefToCompanyName = function( e ){
    return e.childNodes[1].nodeValue;
}
Ullet.initCompanyName = function( ext ){
    if( ext == undefined ) ext = '';
    var e;
    var count = 0;
    do{
        e = $( 'company_name' + count + ext );
        if( !e ) break;
            
        Event.observe( e, 'click', onclick_company_name );
        Event.observe( e, 'mousedown', onmousedown_company_name );
        Event.observe( e, 'mouseout', onmouseout_company_name );
        new Draggable( e, {onEnd:function(){setTimeout('company_name_is_drag=false;company_name_is_clickable=true;',300);konsole.log('end drag');}, onStart:function(){company_name_is_drag=true;$('company_menu_tips').hide();konsole.log('start drag');}, revert:1});
        var company_no = Ullet.HrefToCompanyNo( e );
      Droppables.add( e, {accept:'company_name', hoverclass:'company_name_active', onHover:function(element,element_to){ cool_alert( __( '%SOURCE%と%TARGET%を比較します。' , { '%SOURCE%':Ullet.HrefToCompanyName(element), '%TARGET%':Ullet.HrefToCompanyName(element_to) } ),'none',element); }, onDrop:function(element,element_to){new Ajax.Request( __top_path + 'on_company_drag_company/to_id/' + Ullet.HrefToCompanyNo(element_to) + '.html', {asynchronous:true, evalScripts:false, parameters:'id=' + Ullet.HrefToCompanyNo(element)})}});

        count ++;
    } while( true );
}
Ullet.initStockUserName = function( ext ){
    if( ext == undefined ) ext = '';
    var e;
    var count = 0;
    do{
        e = $( 'stock_user_name' + count + ext );
        if( !e ) break;
        Event.observe( e, 'mouseout', onmouseout_company_name );
        count ++;
    } while( true );
}
Ullet.initOfficialUserName = function( ext ){
    if( ext == undefined ) ext = '';
    var e;
    var count = 0;
    do{
        e = $( 'official_user_name' + count + ext );
        if( !e ) break;
        Event.observe( e, 'mouseout', onmouseout_company_name );
        count ++;
    } while( true );
}
var __cool_alert_tooltip = null
var __cool_alert_display = null;
function cool_alert( message, type, target_element, offset_x, offset_y ){
    if( type == undefined ) type = 'warning';
  if( offset_x == undefined ) offset_x = 0;
  if( offset_y == undefined ) offset_y = 0;
    var display = type + ':' + message;
    // konsole.log( $('cool_alert').style.display );
    if( display ==  __cool_alert_display && __cool_alert_tooltip != null && __cool_alert_tooltip.initialized == true ) return;
    __cool_alert_display = display;
    if( __cool_alert_tooltip != null && __cool_alert_tooltip.tooltip ) __cool_alert_tooltip.hide();
    var el = $('cool_alert');
    if( !el ){
      alert( message );
      return;
    }
    el.title = '';
    var _appearDuration = 1;
    var _hideDuration = 1;
    var _timeout = 8000;
    if( type == 'none' ){
        _appearDuration = 0.25;
        _hideDuration = 0.25;
        _timeout = 3000;
    }
    __cool_alert_tooltip = new Tooltip( el,
                              {
                                  mouseFollow: false,
                                  opacity: 1,
                                  backgroundColor: "#E0EFF8",
                                  borderColor: "#333", 
                                  textColor: "#000",
                                  isSetEvent: false,
                                  delay: 0,
                                  appearDuration: _appearDuration,
                                  hideDuration: _hideDuration
                                  //textShadowColor: "#AAA"
                              });
    __cool_alert_tooltip.xCord = 0;
    __cool_alert_tooltip.yCord = 0;
    var img = '';
  if( type != undefined && type != 'none' ) img = '<img src="/img/icon/' + type + '.gif" width="16" height="16" style="vertical-align:middle;"/> ';
    var close = '';
  if( type != 'none' ) close = '<div style="display:block;text-align:center;line-height:1.5em;margin-top:10px;height:1.5em"><a href="javascript:void(0)" style="padding:5px 3px 0px 3px;"><img src="/img/icon/cross.gif" width="16" height="16"  style="vertical-align:middle;"/>' + __('閉じる') + '</a></div>';
    __cool_alert_tooltip.content = img + message + close;
    __cool_alert_tooltip.appear();
    var windowScroll = document.viewport.getScrollOffsets();
    var width = document.viewport.getWidth();
    if( width == 0 && Prototype.Browser.IE6 ) width = document.body.clientWidth;
    if( target_element == undefined ){
        __cool_alert_tooltip.tooltip.style.left = ( windowScroll[0] + width - 350 - Math.floor( Math.random() * 100 ) ) + 'px';
        __cool_alert_tooltip.tooltip.style.top = ( windowScroll[1] + 100 + Math.floor( Math.random() * 100 ) ) + 'px';
    } else {
        var eltpos   = Position.cumulativeOffset($(target_element));
        konsole.log( eltpos );
        if( eltpos[0] < width / 2 ){
            __cool_alert_tooltip.tooltip.style.left = ( eltpos[0] + 120 - Math.floor( Math.random() * 40 ) + offset_x ) + 'px';
            __cool_alert_tooltip.tooltip.style.top = ( eltpos[1] - 80 + Math.floor( Math.random() * 40 ) + offset_y ) + 'px';
        } else {
            __cool_alert_tooltip.tooltip.style.left = ( eltpos[0] - 100 - Math.floor( Math.random() * 40 ) + offset_x ) + 'px';







            __cool_alert_tooltip.tooltip.style.top = ( eltpos[1] - 80 + Math.floor( Math.random() * 40 ) + offset_y ) + 'px';
        }
    }
  __cool_alert_tooltip.setup_shadow();
  //__cool_alert_tooltip.tooltip.style.width = '250px';
  //__cool_alert_tooltip.tooltip.style.height = '200px';
    var ele = __cool_alert_tooltip.tooltip.down('a');
    if( ele && type != 'none' ) Event.observe( ele, 'click', __cool_alert_tooltip.hide.bind( __cool_alert_tooltip ) );
    setTimeout( __cool_alert_tooltip.hide.bind( __cool_alert_tooltip ), _timeout );
}
Ullet.initCooltip = function( e ){
    if( !e ) return;
            //                                link.style.textDecoration='none';
            //                                link.style.borderWidth='1px';
            //                                link.style.borderBottom='dotted';
    var tooltip = new Tooltip(e,
    {
        mouseFollow: false,
        opacity: 1,
        backgroundColor: "#E0EFF8",
        borderColor: "#333", 
        textColor: "#000"
        //textShadowColor: "#AAA"
    });
  var help = e.down();
  if( help != null && help.innerHTML != '' ){
        tooltip.content = help.innerHTML;
    } else if( help ) {
        var help = help.next();
        if( help != null && help.innerHTML != '' ){
            tooltip.content = help.innerHTML;
        }
    }
}
Ullet.initCooltips = function( ext ){
    if( ext == undefined ) ext = '';
    var e = null;
    var count = 0;
    do{
        e = $( 'cooltips' + count + ext );
        count ++;
        //konsole.log( e );
        if( e ){
          Ullet.initCooltip( e );
        } else {
          if( ext != '_action' || 10 < count ) break;
        }
    } while( true );
}
Ullet.initSmoothScroll = function( ext ){
    if( ext == undefined ) ext = '';
    var e = null;
    var count = 0;
    do{
        e = $( 'smoothscroll' + count + ext );
        count ++;
        //konsole.log( e );
        if( !e ) break;

        if( e.hash.substr(1) == 'pagetop' ){
            var eltpos   = Position.cumulativeOffset( e );
            if( eltpos[1] < 800 ) e.hide();
        }
        if( e.visible() ) Event.observe( e, 'click', function( event ){ konsole.log('sscroll'); new Effect.ScrollTo( this.hash.substr(1) ); Event.stop(event); } );
    } while( true );
}
function company_menu_onmouseover( company_no ){
}
function company_menu_onmouseout( company_no ){
}
function _list_clear(key){
    konsole.log( 'my_list:clear'  );
    konsole.log( 'Draggables:' );
    var tmp = [];
  var reg;
  if( key == '' || key == undefined ){
    reg = new RegExp('^company_name[0-9]+$');
  } else {
    reg = new RegExp('^company_name[0-9]+_'+key+'$');
  }
    Draggables.drags.each( function( drag ){
            if( drag.element.id.match(reg) ){
                tmp.push( drag );
                konsole.log( drag.element.id );
            }
        });
    tmp.each( function( drag ){
            drag.destroy();
            //Draggables.unregister( drag );
        } );
    // Draggables.drags = Draggables.drags.without( tmp );
    var tmp = [];
    konsole.log( 'Droppables:' );
    Droppables.drops.each( function( drop ){
            if( drop.element.id == 'my_list' || drop.element.id.match(reg) ){
                tmp.push( drop );
                konsole.log( drop.element.id );
            }
        });
    tmp.each( function( drop ){ Droppables.remove( drop.element ); } );
    if( key == 'my' ){
        Droppables.remove( $('my_list_wrapper') );
        Droppables.remove( $('company_dustbox') );
    }
    if( key == 'df' ){
        Droppables.remove( $('diff_list_wrapper') );
        Droppables.remove( $('diff_dustbox') );
    }
    // Droppables.drops = Droppables.drops.without( tmp );
}
function main_list_clear(){
    _list_clear();
}
function stock_list_clear(){
    _list_clear('stock');
}
function my_list_clear(){
    _list_clear('my');
}
function history_list_clear(){
    _list_clear('hi');
}
function diff_list_clear(){
    _list_clear('df');
}
function createUchartDiv( company_no ){
    var tmpObj = document.createElement("div");
    tmpObj.id = 'cm'+company_no+'_'+Math.floor( Math.random()*9999 );
  tmpObj.innerHTML = '<iframe src="'+__top_path+'parts/'+company_no+'menuft.html" style="width:400px;height:320px" scrolling="no" marginwidth="0" marginheight="0" border="0" frameborder="0">' + __('iframe非対応ブラウザのため閲覧できません。') + '</iframe>';
    return tmpObj;
}
function createMarkDiv( company_no ){
    var tmpObj = document.createElement("div");
    tmpObj.id = 'cm'+company_no+'_'+Math.floor( Math.random()*9999 );
    tmpObj.innerHTML = '<img width="200" height="140" src="/'+company_no+'ac101_200x140.png"/><img width="200" height="140" src="/'+company_no+'ac301_200x140.png"/>';
    return tmpObj;
}
function my_list_reload(){
    new Ajax.Updater('my_list', __top_path+'my_list.html', {asynchronous:true, evalScripts:true, onComplete:function(request, json){my_list_init();new Effect.Highlight('my_list_wrapper', {});}})
        }
function diff_list_reload(){
    new Ajax.Updater('diff_list', __top_path+'diff_list.html', {asynchronous:true, evalScripts:true, onComplete:function(request, json){diff_list_init();new Effect.Highlight('diff_list_wrapper', {});}})
        }
function my_list_init(){
    Droppables.add('my_list_wrapper', {accept:'company_name', hoverclass:'hover', onHover:function(element,element_to){ element_to.style.backgroundColor='';}, onDrop:function(element){my_list_clear();new Ajax.Updater('items', __top_path+'add_mypage.html', {asynchronous:true, evalScripts:false, onLoading:function(){ my_list_clear(); }, onComplete:function(request, json){}, parameters:'company_no=' + Ullet.HrefToCompanyNo(element)})}})
    Droppables.add('my_list_dustbox', {accept:'company_name', hoverclass:'dustbox_in', onDrop:function(element){my_list_clear();new Ajax.Updater('items',__top_path+'del_mypage.html', {asynchronous:true, evalScripts:false, onLoading:function(){ my_list_clear(); }, onComplete:function(request, json){}, parameters:'company_no=' + Ullet.HrefToCompanyNo(element)})}})
}
function list_pager_icon_init(){
    if( $('my_list_next_img') ){
        if( ( $('my_list_page').innerHTML * 5 ) < $('my_list_total').innerHTML ){
            $('my_list_next_img').src = 'img/base/goto_page.gif?' + __cache_serial;
            $('my_list_next_img').style.cursor = 'pointer';
        } else {
            $('my_list_next_img').src = 'img/base/goto_page_none.gif?' + __cache_serial;
            $('my_list_next_img').style.cursor = 'default';
        }
        if( 1 < $('my_list_page').innerHTML ){
            $('my_list_prev_img').src = 'img/base/goback_page.gif?' + __cache_serial;
            $('my_list_prev_img').style.cursor = 'pointer';
        } else {
            $('my_list_prev_img').src = 'img/base/goback_page_none.gif?' + __cache_serial;
            $('my_list_prev_img').style.cursor = 'default';
        }
    }
    if( $('history_list_next_img') ){
        if( ( $('history_list_page').innerHTML * 5 ) < $('history_list_total').innerHTML ){
            $('history_list_next_img').src = 'img/base/goto_page.gif?' + __cache_serial;
            $('history_list_next_img').style.cursor = 'pointer';
        } else {
            $('history_list_next_img').src = 'img/base/goto_page_none.gif?' + __cache_serial;
            $('history_list_next_img').style.cursor = 'default';
        }
        if( 1 < $('history_list_page').innerHTML ){
            $('history_list_prev_img').src = 'img/base/goback_page.gif?' + __cache_serial;
            $('history_list_prev_img').style.cursor = 'pointer';
        } else {
            $('history_list_prev_img').src = 'img/base/goback_page_none.gif?' + __cache_serial;
            $('history_list_prev_img').style.cursor = 'default';
        }
    }
}
function diff_list_init(){
    Droppables.add('diff_dustbox', {accept:'sortable', hoverclass:'dustbox_in', onDrop:function(element){new Ajax.Request(__top_path+'del_diff.html', {asynchronous:true, evalScripts:false, parameters:'keyword=' + encodeURIComponent(element.innerHTML)});element.innerHTML='';}})
}


/*****************************************

 *****************************************/
iseryu_menu_interval = null;
iseryu_menu_close_interval = null;
iseryu_menu_is_onmouse = true;
function onmouseover_iseryu_menu( event, drag_id, official_name, birthday ){
  iseryu_menu_is_onmouse=true;
}
function onmouseout_iseryu_menu( event, drag_id ){
  iseryu_menu_is_onmouse=false;
  if( iseryu_menu_close_interval != null ) clearInterval( iseryu_menu_close_interval );
  iseryu_menu_close_interval = setTimeout( 'if( iseryu_menu_is_onmouse == false ){ $(\'iseryu_menu_tips\').hide();}', 1000 );
}
function onmouseover_iseryu_name( event, drag_id, official_name, birthday ){
  var top = (Event.pointerY(event)-10)+'px';
  if( Event.pointerX(event) < 600 ) {
    var left = (Event.pointerX(event)+10)+'px';
  } else {
    var left = (Event.pointerX(event)-380)+'px';
  }
  if( iseryu_menu_interval != null ) clearInterval( iseryu_menu_interval );
  iseryu_menu_interval = setInterval( "_onmouseover_iseryu_name( '"+drag_id+"', '"+official_name+"', '"+birthday+"' );", 300 );        
  iseryu_menu_is_onmouse = true;
}
function _onmouseover_iseryu_name( drag_id, official_name, birthday ){
  if( /* !$(menu_id) || */ !$(drag_id) || !$('iseryu_menu_tips') ) return false;
  $('iseryu_menu_tips').hide();
  //$('iseryu_menu_tips').innerHTML = $(menu_id).innerHTML;
  $('iseryu_menu_tips').innerHTML = Ullet.createIseryuMenu( official_name, birthday );
  var r = birthday.match(/((平成)|(昭和)|(大正)|(明治))(\d)?(\d)年(\d{1,2})月(\d{1,2})日/);
  if( r ){
    var e = $('iseryu_menu_tips').down('select[name="wareki"]');
    switch( r[1] ){
    case '平成': e.value = '1'; break;
    case '昭和': e.value = '2'; break;
    case '大正': e.value = '3'; break;
    case '明治': e.value = '4'; break;
    }
    
    e = $('iseryu_menu_tips').down('select[name="year10"]');
    e.value = r[6];
    
    e = $('iseryu_menu_tips').down('select[name="year1"]');
    e.value = r[7];
    
    e = $('iseryu_menu_tips').down('select[name="month"]');
    e.value = r[8];
    
    e = $('iseryu_menu_tips').down('select[name="day"]');
    e.value = r[9];
  }
  //$(drag_id).style.cursor = 'move';
  
  var arrow = $('iseryu_menu_tips').down('span.arrow');
  arrow.removeClassName('arrow-left','arrow-right');
  var eltpos   = Position.cumulativeOffset($(drag_id));
  //var xWidth = (url.params.width || this.options.defaultWidth)*1;
  //if (viewport.xWidth>(eltpos[0]+$(selt).getWidth()+xWidth)){
  var menu_width = 415;
  var left = eltpos[0] + $(drag_id).getWidth() + 15;
  if( left < 550 ){
    $('iseryu_menu_tips').setStyle( {left:left+'px',top:(eltpos[1]-5)+'px',width:menu_width+'px'} );
    $(arrow).addClassName('arrow-left');
    $(arrow).setStyle({left:'-10px'});
  } else {
    $('iseryu_menu_tips').setStyle( {left:(left-menu_width-30-$(drag_id).getWidth())+'px',top:(eltpos[1]-5)+'px',width:menu_width+'px'} );
    $(arrow).addClassName('arrow-right');
    if( Prototype.Browser.IE6 ){
      $(arrow).setStyle({left:(menu_width-2)+'px'});
    } else {
      $(arrow).setStyle({left:menu_width+'px'});
    }
  }
  
  //$(arrow).addClassName('arrow-left');
  //$(arrow).setStyle({left:'-10px'});
  /*
    } else {
        var left = eltpos[0] - (xWidth*1+15);
        $(arrow).addClassName('arrow-right');
        $(arrow).setStyle({left:xWidth+'px'});
    }
        */
  iseryu_name_help = $('iseryu_menu_tips').down('a.cooltips');
  if( iseryu_name_help ){
    new Tooltip( iseryu_name_help,
                 {
                   mouseFollow: false,
                   opacity: 1,
                   backgroundColor: "#E0EFF8",
                   borderColor: "#333", 
                   textColor: "#000",
                   textShadowColor: "#AAA"
                 });
  }

  
  $('iseryu_menu_tips').show();
  $(arrow).show();
  if( iseryu_menu_interval != null ) clearInterval(iseryu_menu_interval);
}

function onmouseout_iseryu_name( event ){
    if( iseryu_menu_interval != null ){ // 企業名の上をマウスが通ると一瞬企業メニューが表示される対策
        clearInterval( iseryu_menu_interval );
        iseryu_menu_interval = null;
    }
    iseryu_menu_is_onmouse = false;
    setTimeout( 'if( iseryu_menu_is_onmouse == false && $(\'iseryu_menu_tips\') ){ $(\'iseryu_menu_tips\').hide();}', 300 );
}


/*****************************************

 *****************************************/
company_menu_is_onmouse = true;
company_name_is_drag = false;
company_name_is_clickable = true;
company_name_drag_x = null;
company_name_drag_y = null;
company_menu_interval = null;
function onmouseover_company_menu( event, drag_id ){
    if( company_menu_interval != null ){ // メニューにマウス移動時、企業名の上を通るとその企業のメニューが表示される対策
        clearInterval( company_menu_interval );
        company_menu_interval = null;
    }
    company_menu_is_onmouse=true;
}
function onmouseout_company_menu( event, drag_id ){
    company_menu_is_onmouse=false;
    setTimeout( 'if( company_menu_is_onmouse == false ){ $(\'company_menu_tips\').hide();}', 100 );
}
function onclick_company_name( event ){
    konsole.log( company_name_is_clickable );
    var flag = (6.0>=Math.sqrt( Math.pow(company_name_drag_x-Event.pointerX(event),2)+Math.pow(company_name_drag_y-Event.pointerY(event),2) ) );
    if( !company_name_is_clickable || !flag ) Event.stop( event );
}
function onmousedown_company_name( event ){
    company_name_drag_x=Event.pointerX(event);
    company_name_drag_y=Event.pointerY(event);
}
function onmouseover_object_name( event, drag_id, params ){
  if( !$('company_menu_tips') ) return;
  var ele = $('company_menu_tips');
  var old_params = ele.menu_params;
  ele.menu_params = params;

  
  if( ele.menu_params.company != undefined ){
    onmouseover_company_name( event, drag_id,
                              ele.menu_params.company.name,
                              ele.menu_params.company.no,
                              ele.menu_params.company.market_name,
                              ele.menu_params.company.market_no,
                              ele.menu_params.company.group_name,
                              ele.menu_params.company.group_no,
                              ele.menu_params.company.star );
  } else {
    company_menu_is_onmouse = true;
    position = Position.cumulativeOffset($(drag_id));
    ele.position_x = position[0];
    ele.position_y = position[1];
    ele.object_width = $(drag_id).getWidth();
    
    var target;
    if( ele.menu_params.stock != undefined ){
      if( ele.visible() && ( old_params && old_params.stock && old_params.stock.no == params.stock.no ) ) return;
      target = 'stock';
      ele.innerHTML = Ullet.createObjectMenuTab( 'stock' ) +
        Ullet.createStockUserMenu(
          ele.menu_params.stock.name,
          ele.menu_params.stock.no,
          ele.menu_params.stock.amount,
          ele.menu_params.stock.num,
          ( ele.menu_params.company != undefined ? ele.menu_params.company.no : null )
        );
      object_menu_arrow_reset();
    } else if( ele.menu_params.official != undefined ){
      if( ele.visible() && ( old_params && old_params.official && old_params.official.no == params.official.no ) ) return;
      target = 'official';
      ele.innerHTML = Ullet.createObjectMenuTab( 'official' ) +
        Ullet.createOfficialUserMenu(
          ele.menu_params.official.name,
          ele.menu_params.official.no,
          ele.menu_params.official.num,
          ( ele.menu_params.stock != undefined ? ele.menu_params.stock.no : null )
        );
      object_menu_arrow_reset();
    }
    
    if( company_name_is_drag == false ){
      if( company_menu_interval != null ) clearInterval( company_menu_interval );
      company_menu_interval = setInterval( "object_menu_show('"+target+"')", 300 );
    }
  }
}
function object_menu_show( target ){
  if( !$('company_menu_tips') ) return;
  if( company_menu_interval != null ) clearInterval( company_menu_interval );
  var ele = $('company_menu_tips');
  ele.show();
  if( target == 'stock' ){
    var myAjax = new Ajax.Updater(
      $('company_menu_tips').down('div.sub_content'),
      __top_path + 's' + ele.menu_params.stock.no + '/line.html'
    );
  } else if( target == 'official' ) {
    var myAjax = new Ajax.Updater(
      $('company_menu_tips').down('div.sub_content'),
      __top_path + 'o' + ele.menu_params.official.no + '/line.html'
    );
  }
}
function object_menu_reset( target ){
  if( !$('company_menu_tips') ) return;
  var ele = $('company_menu_tips');
  if( target == 'company' && ele.menu_params.company != undefined ){
    ele.innerHTML =
      Ullet.createObjectMenuTab( 'company' ) +
      Ullet.createCompanyMenu(
        ele.menu_params.company.name,
        ele.menu_params.company.no,
        ele.menu_params.company.market_name,
        ele.menu_params.company.market_no,
        ele.menu_params.company.group_name,
        ele.menu_params.company.group_no,
        ele.menu_params.company.star
                             );
    object_menu_arrow_reset();
  }
  if( target == 'stock' && ele.menu_params.stock != undefined ){
    ele.innerHTML = Ullet.createObjectMenuTab( 'stock' ) +
      Ullet.createStockUserMenu(
        ele.menu_params.stock.name,
        ele.menu_params.stock.no,
        ele.menu_params.stock.amount,
        ele.menu_params.stock.num,
        ( ele.menu_params.company != undefined ? ele.menu_params.company.no : null )
                             );
    object_menu_arrow_reset();
    object_menu_show( target );
  }
  if( target == 'official' && ele.menu_params.official != undefined ){
    ele.innerHTML = Ullet.createObjectMenuTab( 'official' ) +
      Ullet.createOfficialUserMenu(
        ele.menu_params.official.name,
        ele.menu_params.official.no,
        ele.menu_params.official.num,
        ( ele.menu_params.stock != undefined ? ele.menu_params.stock.no : null )
                             );
    object_menu_arrow_reset();
    object_menu_show( target );
  }
}
function object_menu_arrow_reset(){
  if( !$('company_menu_tips') ) return;
  var ele = $('company_menu_tips');
  var arrow = ele.down('span.arrow');
  arrow.removeClassName('arrow-left','arrow-right');
  //var eltpos   = Position.cumulativeOffset($(drag_id));
  //var xWidth = (url.params.width || this.options.defaultWidth)*1;
  //if (viewport.xWidth>(eltpos[0]+$(selt).getWidth()+xWidth)){
  var menu_width = 415;
  var left = ele.position_x + ele.object_width + 15;
  if( left < 550 ){
    ele.setStyle( {left:left+'px',top:(ele.position_y-5)+'px',width:menu_width+'px'} );
    $(arrow).addClassName('arrow-left');
    $(arrow).setStyle({left:'-10px'});
  } else {
    ele.setStyle( {left:(left-menu_width-30-ele.object_width)+'px',top:(ele.position_y-5)+'px',width:menu_width+'px'} );
    $(arrow).addClassName('arrow-right');
    if( Prototype.Browser.IE6 ){
      $(arrow).setStyle({left:(menu_width-2)+'px'});
    } else {
      $(arrow).setStyle({left:menu_width+'px'});
    }
  }
}
function onmouseover_company_name( event, drag_id, company_name, company_no, market_name, market_no, group_name, group_no, star ){
  if( drag_id == null ){
    if( !$('relation_graph') ) return;
    mouse_x = event.x;
    mouse_y = event.y;
  } else {
    if( !$(drag_id) ) return;
    mouse_x = Event.pointerX(event);
    mouse_y = Event.pointerY(event);
  }
    if( company_name_is_drag ){
        var flag = (30>=Math.sqrt( Math.pow(company_name_drag_x-mouse_x,2)+Math.pow(company_name_drag_y-mouse_y,2) ) );
        konsole.log( Math.sqrt( Math.pow(company_name_drag_x-mouse_x,2)+Math.pow(company_name_drag_y-mouse_y,2) ) );
        if( flag == false ) company_name_is_clickable = false;
    }
    var top = (mouse_y-10)+'px';
    if( mouse_x < 600 ) {
        var left = (mouse_x+10)+'px';
    } else {
        var left = (mouse_x-380)+'px';
    }
    if( company_name_is_drag == false ){
        if( company_menu_interval != null ) clearInterval( company_menu_interval );
      var position;
      var width;
      ele = $('company_menu_tips');
      if( drag_id == null ){
        eltpos = Position.cumulativeOffset($('relation_graph'))
        width = event.width ? event.width : 80;
        position = [ event.x + eltpos[0] - width/2, event.y + eltpos[1] - 10 ]
        ele.position_x = position[0];
        ele.position_y = position[1];
        ele.object_width = width;
        //konsole.log( event.x + ':' + event.y );
      } else {
        position = Position.cumulativeOffset($(drag_id));
        ele.position_x = position[0];
        ele.position_y = position[1];
        ele.object_width = $(drag_id).getWidth();;
      }
      company_menu_interval = setInterval( "_onmouseover_company_name( '"+company_name+"', '"+company_no+"', '"+market_name+"', '"+market_no+"', '"+group_name+"', '"+group_no+"', '"+star+"' );", 300 );        
    }
    company_menu_is_onmouse = true;
}
function _onmouseover_company_name( company_name, company_no, market_name, market_no, group_name, group_no, star ){
    if( /* !$(menu_id) ||  !$(drag_id) || */ !$('company_menu_tips') ) return false;
    var ele = $('company_menu_tips');
    ele.hide();
    //ele.innerHTML = $(menu_id).innerHTML;
    ele.innerHTML = Ullet.createObjectMenuTab('company') + Ullet.createCompanyMenu( company_name, company_no, market_name, market_no, group_name, group_no, star );
    //$(drag_id).style.cursor = 'move';

    object_menu_arrow_reset();
    
    //$(arrow).addClassName('arrow-left');
    //$(arrow).setStyle({left:'-10px'});
        /*
    } else {
        var left = eltpos[0] - (xWidth*1+15);
        $(arrow).addClassName('arrow-right');
        $(arrow).setStyle({left:xWidth+'px'});
    }
        */
    company_name_help = ele.down('a.cooltips');
    if( company_name_help ){
        new Tooltip( company_name_help,
                     {
                         mouseFollow: false,
                             opacity: 1,
                             backgroundColor: "#E0EFF8",
                             borderColor: "#333", 
                             textColor: "#000",
                             textShadowColor: "#AAA"
                             });
    }

    
    ele.show();
    if( company_menu_interval != null ) clearInterval(company_menu_interval);
}
function onmouseout_company_name( event ){
    if( company_menu_interval != null ){ // 企業名の上をマウスが通ると一瞬企業メニューが表示される対策
        clearInterval( company_menu_interval );
        company_menu_interval = null;
    }
    company_menu_is_onmouse = false;
    setTimeout( 'if( company_menu_is_onmouse == false && $(\'company_menu_tips\') ){ $(\'company_menu_tips\').hide();}', 300 );
}

my_list_updater = null;
function my_list_prev(){
    if( my_list_updater != null ) return false;
    if( __my_list_page <= 1 ) return false;
    my_list_clear();
//     $('my_list_prev').innerHTML=$('my_list').innerHTML;
    my_list_updater = new Ajax.Updater( 'my_list',
                      __top_path+'my_list.html?page='+(__my_list_page-1),
                      {
                          method:'get',
                          evalScripts: true,
                          onSuccess:function(){
                              my_list_init();
                              my_list_updater = null;
                              
//                               $('my_list').hide();
//                               $('my_list_prev').show();
//                               new Effect.Parallel([
//                                                    new Effect.BlindUp('my_list_prev'),
//                                                    new Effect.BlindDown('my_list')
//                                                    ]);
                          }
                      } );
    return false;
}
function my_list_next(){
    if( my_list_updater != null ) return false;
    my_list_clear();
//     $('my_list_post').innerHTML=$('my_list').innerHTML;
    my_list_updater = new Ajax.Updater( 'my_list',
                      __top_path+'my_list.html?page='+(__my_list_page+1),
                      {
                          method:'get',
                          evalScripts: true,
                          onSuccess:function(){
                              my_list_init();
                              my_list_updater = null;
                              
//                               $('my_list').hide();
//                               $('my_list_post').show();
//                               new Effect.Parallel([
//                                                    new Effect.BlindUp('my_list_post'),
//                                                    new Effect.BlindDown('my_list')
//                                                    ]);
                          }
                      } );
    return false;
}
history_list_updater = null;
function history_list_prev(){
    if( history_list_updater != null ) return false;
    if( __history_list_page <= 1 ) return false;
    history_list_clear();
//     $('history_list_prev').innerHTML=$('history_list').innerHTML;
    history_list_updater = new Ajax.Updater( 'history_list',
                      __top_path+'history_list.html?page='+(__history_list_page-1),
                      {
                          method:'get',
                          evalScripts: true,
                          onSuccess:function(){
                              history_list_updater = null;
                              
//                               $('history_list').hide();
//                               $('history_list_prev').show();
//                               new Effect.Parallel([
//                                                    new Effect.BlindUp('history_list_prev'),
//                                                    new Effect.BlindDown('history_list')
//                                                    ]);
                          }
                      } );
    return false;
}
function history_list_next(){
    if( history_list_updater != null ) return false;
    history_list_clear();
//     $('history_list_post').innerHTML=$('history_list').innerHTML;
    history_list_updater = new Ajax.Updater( 'history_list',
                      __top_path+'history_list.html?page='+(__history_list_page+1),
                      {
                          method:'get',
                          evalScripts: true,
                          onSuccess:function(){
                              history_list_updater = null;
//                               $('history_list').hide();
//                               $('history_list_post').show();
//                               new Effect.Parallel([
//                                                    new Effect.BlindUp('history_list_post'),
//                                                    new Effect.BlindDown('history_list')
//                                                    ]);
                          }
                      } );
    return false;
}
function _searchselect_onchange( e ){
    if( !e ) return;
    form = e.up('form');
    input = e.next('input');
    if( !input ){
        var span = e.next('span');
        if( span ) input = span.down('input');
    }
    //konsole.log( form, input );
    if( form && input ){
        var eval_string = null;
        if( e.value == 'company' ){
            form.action = 'search_exec.html';
            eval_string = 'ac_' + input.id + '.url = \'' + __top_path + 'company_autocomplete.html\';';
        } else if( e.value == 'stock' ){
            form.action = 'stock/search_exec.html';
            eval_string = 'ac_' + input.id + '.url = \'' + __top_path + 'stock/autocomplete.html\';';
        }
        input.focus();
        //konsole.log( eval_string );
        if( eval_string ) eval( eval_string );
    }
}
function searchselect_onchange( event ){
    _searchselect_onchange( Event.element(event) );
}
function searchselect_check( event ){
   _searchselect_onchange( Event.element(event).previous('select') );
}
function searchtab_onclick( event ){
  e = Event.element(event)
  if( !e ) return;
  var ul = e.up('ul.mg_menu_tab');
  var lis = ul.getElementsByTagName('li');
  for( var i=0; i<lis.length; i++ ){
    $(lis[i]).removeClassName('active');
  }
  if( e.nodeName == 'span' || e.nodeName == 'SPAN' ){
    e.up('li').addClassName('active');
  } else {
    e.addClassName('active');
  }
  
  var form = e.up('form');
  var input = ul.next('input');
  var eval_string = '';
  if( form && input ){
    if( e.innerHTML.indexOf('全て') != -1 ){
      form.action = 'all_search.html';
      eval_string = 'ac_' + input.id + '.url = \'' + __top_path + 'all_autocomplete.html\';';
    } else if( e.innerHTML.indexOf(__('企業名・証券コード')) != -1 ){
      form.action = 'search_exec.html';
      eval_string = 'ac_' + input.id + '.url = \'' + __top_path + 'company_autocomplete.html\';';
    } else if( e.innerHTML.indexOf(__('大株主')) != -1 ){
      form.action = 'stock/search_exec.html';
      eval_string = 'ac_' + input.id + '.url = \'' + __top_path + 'stock/autocomplete.html\';';
    }
    if( input.value != '' ){
      eval_string = eval_string + 'ac_' + input.id + '.onKeyPress(event);';
    }
    
    input.focus();
    if( eval_string ){
      $('keyword_auto_complete').hide();
      eval( eval_string );
    }
  }
}
function searchselect_onsubmit( event ){
  e = Event.element(event)
  if( !e ) return;
  var input = e.down('input[type="text"]')
  if( input && ( input.value == '' || input.value.match(/^[ 　]+$/) ) ){
    cool_alert( '検索内容を入力してください。' );
    Event.stop(event);
    return;
  }
  
  if( e.action.indexOf('all_search') != -1 ){
    var input = e.down('input');
    if( input ){
      location.href = __top_path + encodeURL( input.value );
    }
  } else {
    var input = e.down('input');
    if( input ){
      var path = e.action;
      var index = path.indexOf('.html');
      if( index != -1 ) path = path.substring( 0, index );
      mg.trackPageview( path + '/' + input.value );
    }
    e.submit();
  }
}

Ullet.isAfterOnload = false;
Event.observe(
  window,
  'load',
  function(){
    Ullet.isAfterOnload = true;
    var company_menu_tips = Builder.node("div", {id:"company_menu_tips", className: "company_menu", style: "display:none; position:absolute;" } );
    document.body.appendChild( company_menu_tips );
    if( $('company_menu_tips') ){
      $('company_menu_tips').observe( 'mouseover', onmouseover_company_menu );
      $('company_menu_tips').observe( 'mouseout', onmouseout_company_menu );
    }

    /*
    var iseryu_menu_tips = Builder.node("div", {id:"iseryu_menu_tips", className: "company_menu", style: "display:none; position:absolute;" } );
    document.body.appendChild( iseryu_menu_tips );
    if( $('iseryu_menu_tips') ){
      $('iseryu_menu_tips').observe( 'mouseover', onmouseover_iseryu_menu );
      $('iseryu_menu_tips').observe( 'mouseout', onmouseout_iseryu_menu );
    }
*/
    
    var cool_alert = Builder.node("div", {id:"cool_alert", className: "cooltips", style: "display:none; position:absolute;" } );
    document.body.appendChild( cool_alert );
    var cool_alert_shadow = Builder.node("div", {id:"cool_alert_shadow", className: "cooltips_shadow", style: "display:none; position:absolute;" }, [ Builder.node('img', {id:"cool_alert_shadow_img", src:'/img/shadow.png'} ) ] );
    document.body.appendChild( cool_alert_shadow );

    Ullet.initCompanyName();
    Ullet.initCompanyName('_stock');
    Ullet.initCompanyName('_my');
    Ullet.initCompanyName('_hi');
    Ullet.initCompanyName('_sk');
    Ullet.initCompanyName('_related');
    Ullet.initCompanyName('_edinet');
    Ullet.initStockUserName();
    Ullet.initStockUserName('_main');
    Ullet.initStockUserName('_stock');
    Ullet.initStockUserName('_edinet');
    Ullet.initOfficialUserName();
    Ullet.initCooltips('_action');
    Ullet.initCooltips('_layout');
    Ullet.initCooltips('_side_list1');
    Ullet.initCooltips('_side_list2');
    Ullet.initCooltips('_side_list3');
    Ullet.initCooltips('_side_list4');
    Ullet.initCooltip($('diff_dustbox')); 
    Ullet.initCooltip($('my_list_dustbox')); 
    Ullet.initSmoothScroll('_action');
    Ullet.initSmoothScroll('_layout');
    if( $('my_list') ) my_list_init();
    if( $('diff_list') ) diff_list_init();
    list_pager_icon_init();

    if( $('ranking') ){ 
      var referrer = decodeURIComponent(document.referrer, referrer);
      //var company_no = Ullet.HrefToCompanyNo( referrer );
      var search_str = null;
      if( referrer && referrer.match( /(\d\d\d\d)\.html$/ ) ){
        search_str = '.html';
      } else if( referrer && referrer.match( /(\d\d\d\d)\/menu/ ) ){
        search_str = '/menu';
      }
      if( search_str ){
        var pos = referrer.indexOf( search_str );
        var company_no = referrer.substring( pos-4, pos );
        var list_element = $('list'+company_no);
        if( list_element ){
          konsole.log( list_element );
          list_element.style.backgroundColor='#E0EFF8';
        }
      }
    }

    /*
    if( navigator.cookieEnabled != undefined && __is_first_access != undefined && __is_first_access && $('base') && $('header') && $('footer') ){
      var maga_menu_tips = Builder.node("div", {id:"maga_menu_tips", className: "company_menu", style: "display:none; position:absolute; left:600px; top:200px; width:200px; height:100px; padding:10px;" } );
      maga_menu_tips.innerHTML="<p style=\"color:blue;font-weight:bold;font-size:1em;\">Ulletモバイル<br/>試験運用開始！<br/></p><div style=\"text-align:center;\"></div><div style=\"text-align:right;\"><p><a href=\"javascript:void(0)\" onClick=\"Effect.BlindUp('maga_menu_tips');setTimeout('Element.hide(\\\'maga_menu_tips\\\');',900);\"><img src=\"/img/icon/cross.gif\"/>閉じる</a></p></div></a>";
      document.body.appendChild( maga_menu_tips );
      setTimeout( "new Effect.Move('mobile_banner',{x:-250,y:50,mode:'absolute'});new Effect.Scale('mobile_banner',200);", '1000' );
      setTimeout( "new Effect.Move('mobile_banner',{x:0,y:0,mode:'absolute'});new Effect.Scale('mobile_banner',50);", '4000' );
    }
    */

  }
);

Ullet.clearForm = function( element ) {
  for(var i=0; i<element.elements.length; ++i) {
    switch(element.elements[i].type) {
    case "text": case "password": case "textarea": element.elements[i].value = ""; break;
    case "checkbox": case "radio": element.elements[i].checked = false; break;
    case "select-one": case "select-multiple": element.elements[i].selectedIndex = 0; break;
    default: if( element.elements[i].elements != undefined ) Ullet.clearForm( element.elements[i] );
    }
  }
}

