$(document).ready(function(){
    $('#selectMyInst').set_instLayer();
    $('#instForm').set_instSearch();
});


$.fn.set_instLayer = function( options ){
    if( !this.length ){ return }
    var settings = {
        delay: 300,
        fade_speed: 300,
        persistent: false
    };
    if(options){ jQuery.extend(settings, options); };

    var cur_tip = null;
    var _this = $(this);
    var search_area = $( "#"+this[0].href.split(/#/)[1] ).hide();
    var closeBtn = $('#layerInstruments p.closeBtn > a');
    
    $(_this).click(function(){
        $(this).attr("href","javascript:void(0)");
        this.blur();
        _show_def( this );
        _hide_items();
        return false;
    });
    
    _hide_items = function(){
        if($('#dataSearch select').length !== 0){
            for( var i=0; i<=$('#dataSearch select').length; i++ ){
                $('#dataSearch select').hide();
            }
        }
    };

    closeBtn.click(function(){
        $(this).attr("href","javascript:void(0)");
        search_area.fadeOut(settings.fade_speed);
        $('#dataSearch select').show();
        return false;
    });

    _full_pos = function( node ){
        var _off = $(node).offset();
        var pos = {
            top: _off.top,
            left: _off.left,
            bottom: _off.top+$(node).outerHeight(),
            right: _off.left+$(node).outerWidth(),
            width: $(node).outerWidth(),
            height: $(node).outerHeight(),
            center_height: _off.top+$(node).outerHeight()/2,
            center_width: _off.left+$(node).outerWidth()/2
        };
        return pos;
    };

    _show_def = function(_this){
        $(search_area).css({ left:-9999, top:-9999, zIndex:'110' }).show();
        var l_pos = _full_pos(_this);
        var t_pos = _full_pos(search_area);
        var limits = {
            top: $(document).scrollTop(),
            bottom: $(document).scrollTop()+$(window).height(),
            left: $(document).scrollLeft(),
            right: $(document).scrollLeft()+$(window).width()
        };
        var real_t_pos = { left:l_pos.center_width-t_pos.width/2, top:l_pos.bottom+5 };
        if(real_t_pos.left<limits.left){ real_t_pos.left=limits.left+5; };
        if((real_t_pos.left+t_pos.width)>limits.right){ real_t_pos.left=limits.right-t_pos.width-5; };
        if((real_t_pos.top+t_pos.height)>limits.bottom){ real_t_pos.top=l_pos.top+105-t_pos.height; };
        $(search_area).hide();
        $(search_area).css({ left:real_t_pos.left+40, top:real_t_pos.top }).fadeIn(settings.fade_speed);
    };

};


var categories = {
    'グランドピアノ':'GrandPiano',
    'アップライトピアノ':'UprightPiano',
    'ピアノ用後付ユニット':'EnsembleUnit',
    'AvantGrand(アバングランド)':'AvantGrand',
    'Clavinova（クラビノーバ） - CLPシリーズ':'CLP',
    'Clavinova（クラビノーバ） - CVPシリーズ':'CVP',
    'Clavinova - CWPシリーズ':'CWP',
    'DGPシリーズ':'DGP',
    'MODUS - Fシリーズ':'F_MODUS',
    'MODUS - Hシリーズ':'H_MODUS',
    'ARIUS - YDP/YDPシリーズ':'YDP',
    'SCLP/Jシリーズ':'SCLPJ',
    'Pシリーズ':'P',
    'PFシリーズ':'PF',
    'Piaggero(ピアジェーロ)':'Piaggero',
    'Portable Grand - DGXシリーズ':'DGX',
    'PORTATONE - PSRシリーズ':'PSR',
    'PORTATONE - EZシリーズ':'EZ',
    'デュアルマニュアルキーボード　D-DECK':'DDK',
    'STAGEA - ELSシリーズ':'ELS',
    'STAGEA mini - ELBシリーズ':'ELB',
    'ELシリーズ':'EL',
    'DTM音源・シーケンサー':'DTM',
    'シンセサイザー':'Synthesizer',
    'ステージピアノ':'StagePiano',
    'ソフトシンセサイザー':'Software',
    '学校用オルガン':'SchoolOrgan',
    'MIDI再生機器':'MidiPlayer',
    'DD-65・EZ-EG/EZ-AG・EZ-TP':'EZDD',
    'ミュージックテーブル':'MusicTable',
    'ミッドラジオプレーヤ':'MidRadio'
};


$.fn.set_instSearch = function( options ){
    if( !this.length ){ return }
    var settings = {
        debug: false
    };
    if(options){ jQuery.extend(settings, options); }
    
    var form = document.forms['instForm'];
    if(!form){return};
    form.onsubmit = function(){
        var select = form['searchType'];
        var category = select.options[select.selectedIndex].value;
        var recents = categories[category];
        if(recents==undefined){
            if($('#category ul.instruments').length>=1){$('#category ul.instruments').remove();}
            alert("カテゴリを選択してください");
            return false;
        };
        if($('#category ul.instruments').length >= 1){ $('#category ul.instruments').remove(); }
        var rss_files = [ recents ];
        function load_rss(){
            var file = "/musicdata/compo/xml/instruments/"+rss_files[rss_index]+".xml";
            $.ajax({
                type: "GET",
                url: file,
                dataType: "xml",
                success: function(data){
                    xmlItems = $("item",data);
                    var out_html = '<ul class="instruments">';
                    xmlItems.each( function(i){
                        xmlID = $(this).attr('id');
                        xmlLink = $('link',this).text();
                        xmlImage = $('image',this).text();
                        out_html += '<li><a href="'+xmlLink+'" class="inst_select"><img src="/musicdata/compo/img/module/btn_select.gif" alt="選択" /></a>'+xmlID+'</li>';
                    });
                    out_html += '</ul>';
                    $('#category').append(out_html);
                    $('#category').set_loader();
                    $('#category ul.instruments').hide().slideDown("fast");
                    $('#category ul.instruments > li').set_height({ items_per_row:3 });
                }
            });
        };
        load_rss();
        return false;
    }
    var rss_index = 0;
};


$.fn.set_loader = function( options ){
    if( !this.length ){return}
    var _this = $(this);
    
    $(this).append('<div class="loader-bg"></div>');
    $('div.loader-bg').append('<div class="loader"></div>');
    $('div.loader').append('<p><img src="/musicdata/compo/img/module/loader_text.gif" alt="ただいま楽器選択中です。少々お待ちください。" widht="162" height="35" /></p>');
    var loader = {
        items: $('a.inst_select',this),
        // ローダーの背景
        bg: $('div.loader-bg'),
        bg_css: function(){
            loader.bg.css({ backgroundColor:'#fff', display:'none', position:'absolute', zIndex:'120', top:'0', left:'0', width:$("#category").width() + "px", height:$("#category").height() -70 + "px" });
        },
        // ロード中画面
        elm: function(){
            var _top = loader.bg.height()/2-35;// 背景の高さ/2 - ロード中画面要素の高さ/2
            var _left = loader.bg.width()/2-150;// 背景の幅/2 - ロード中画面要素の幅/2
            $('div.loader').css({ position:'absolute', zIndex:'121', top:_top + "px", left:_left + "px" });
        },
        view: function(){
            loader.bg.css({display: "block"});
        }
    };
    loader.bg_css();
    loader.elm();
    loader.items.each(function(){
        $(this).click(function(){
            loader.view();
        })
    });
};



