$(function() { 
    var tmp = $(vos.divID).attr('title');
    //var len = $(vos.divID).text().length;
    //$(vos.divID + ' noscript').remove();
    var len = $(vos.divID).text().length;
    if(tmp){
        var param = tmp.split(",");
        if(param[0] == 'slide'){
            var img = '<img src="/voice/style/icon/back.png" width="14" height="15" alt="next" />';
            var json = param[1] || vos.slide;
            var opt = {
                jsonfile     : '/voice/js/json/' + json + '.js'
                , max        : 16
                , interval   : 10000
                , areaHeight : 200
            };
            if(json){
                if(len > 100){
                    $(vos.divID).append( 
                        $('<div id="control" title="'+len+'"></div>')
							.html(' quote of the day ' +img).click(function(){ 
								$(vos.divID).empty().Slide(opt) 
							})); 
                } else $(vos.divID).Slide(opt);
            }
        }
    }
});

jQuery.fn.Slide = function(o){
     o = jQuery.extend({
          jsonfile   : '/voice/js/json/201000.js'
        , interval   : 4000
        , areaHeight : 200
        , max        : 16
        , sync       : false
    } , o);
    var max  = o.max;
    var self = this;
    var slideshow_count = 0, interval_id = 0;
    var list="", imageurl="", str="";
    var i, j, x, count;
    var mint = 1;   //min. 画像やメッセージを変える間隔。
    var br   = new RegExp("//", "g");
    var date = new Date();
    var year, month, today, hh, mm, ss;
    var dx = 7, dy = 5;
    if(o.sync){ dx = 2; dy = 2; }      //同期させる
    
    year = date.getFullYear(); month = date.getMonth()+1; today = date.getDate();
    hh   = date.getHours(); mm=date.getMinutes(); ss=date.getSeconds();
    j    = today * (hh+1) * (Math.floor(mm/mint)+1);
    
    var schedule_n = 0;
    var slide_count = 0;
    var scheduleObj;

    var pic = new Array();
    var msg = new Array();
    var schedule = new Array();

    var play_btn = $('<div id="control"></div>')
        .html(
            $('<img src="/voice/style/icon/back.png" width="14" height="15" alt="next" />')
            .attr("title", "next")
            .click(function(){
                //slide_count = 0;
                //j = Math.floor (Math.random ( ) * ( msg.length ));
                //self.start();
                slide_count = (slide_count >= max-1) ? 0 : slide_count + 1;
                change_slide('fade', slide_count);
            })
            .dblclick(function(){ self.all(); })
        );
    $(self).css({padding:0}).append(
        $('<div></div>').attr("id","topmsg")
        .css({padding:"0.5em",margin:0,height:o.areaHeight})
    );
    $.getJSON(o.jsonfile, function (data) {
        var info = "";
        var dc   = false;
        $.each(data.picture,function(i,pict){ 
            if (!dc) {
                var flg = daily_flg(pict.m, pict.d);
                if (flg > 0) {
                    pic[i] = pict;
                    if (flg == 2){ dc = true;}
                }
            }
        });
            //pic[i]=imgObject(pict); 
            //オブジェクトを生成した段階で画像を先読みしてしまう×  
        $.each(data.message,function(i,mess){ msg[i]=mess; });
        $.each(data.schedule, function (i, schedule) {
            var flg = daily_flg(schedule.m, schedule.d);
            if(flg > 0){
                if(flg == 2) info += schedule.m+'/'+schedule.d+" - ";
                info += schedule.event + '<br />';
                schedule_n += 1;
            }
        });
        if (info) {
            var ii = (j + slide_count * dy) % pic.length;
            $('#topmsg').append($('<p></p>').addClass("schedule")
                .css('height', o.areaHeight)
                .append(imgObject(pic[ii]))
                .append(info).append('<br clear="right" />'))
                //.fadeIn()
                //.slideDown("slow")
                ;
        }
        //勝手にスタートしないことにした 2008-03-07
        change_slide('fade', 0);
        $(self).append(play_btn);
        //self.start();

        //$.hotkeys.add('Alt+f2',function(){self.all()});
        //編集画面でエラーが大量に出る原因？
    });

    function daily_flg(m, d){
        if(m == month && d == today){return 2;}
        if(m == 0 || (m == month && d == 0)){return 1;}
        return 0;
    }
        
    function msgObject(mo){
        var url = mo.u;
        var class = 'ext url';
        if(url.length == 10){
            class = 'amazon url';
        }
        //var anchor = (url.length == 10) ? vos.amzLink : vos.extLink;
        url =  asin2url(url);
        if(url != ""){
            url = '<br /><a href="'+ url +'" class="'+class+'">'+url+'</a>';
        }
        var msg = $("<p></p>").html(mo.m
            .replace(br, '<br />')
            .replace(/\[(.*?)\]/g,'<span class="column monta">$1</span>')
        );
        if(mo.p) msg.append($("<span></span> ").addClass("person").text(" - "+mo.p));
        //anchor
        return msg.append(url).find(".monta").click(function(){$(this).toggleClass("monta")}).end();
    }
    function imgObject(pic){
        //if(!pic) pic = pic[0];
        if(!pic) return;
        var imageurl = pic.u;
        var src      = pic.s;
        //var alt      = pic.m + '/' + pic.d;
        //var alt      = month + '/' + today;
        var alt  = src;
        var href = "";
        var image;
        if(pic.a == "amazon"){ 
            imageurl = src;
            src = 'http://images-jp.amazon.com/images/P/'+src+'.01.MZZZZZZZ.jpg';
            image = $("<img />").addClass("book").attr({
                id:'toppic',src:src, alt:alt });
        }
        else if(src.indexOf("/vc1/") == 0){
            src = src.replace("vc1", "voice/clip/100").concat(".jpg");
            image = $("<img />").addClass("window").attr({
                id:'toppic',src:src, alt:alt, width:pic.w, height:pic.h });
        }
        else if(src.indexOf("/vcf/") == 0){
            src = src.replace("vcf", "voice/clip/flickr").concat(".jpg");
            image = $("<img />").addClass("window").attr({
                id:'toppic',src:src, alt:alt, width:pic.w, height:pic.h });
        }
        else if(src.indexOf("/tumblr/") == 0){
            var tumblr_media = vos.tumblr || 'http://media.tumblr.com/';
            href = src.replace("/tumblr/", tumblr_media).concat("_500.jpg");
            src  = src.replace("tumblr", "voice/clip/tumblr").concat(".jpg");
            image = $("<img />").addClass("window").attr({
                id:'toppic',src:src, alt:alt, width:pic.w, height:pic.h });
        }
        else {
            image = $("<img />").addClass("window").attr({ id:'toppic',src:src, alt:alt, width:pic.w, height:pic.h });
        }
        if(pic.a == "Yuri"){            href = vos.astore+vos.Yuri; }
        else if(pic.a == "Ayano"){      href = vos.astore+vos.Ayano; }
        else if(pic.a == "flickr"){     href = vos.flickr+imageurl; }
        else if(imageurl){ href = asin2url(imageurl); }
        else if(href == "") { href = vos.astore; }
        return $('<a href="'+href+'"></a>').html(image);
    }

    function asin2url(str){
        if(str.match(/^[0-9A-Z\-]{10,}$/)){return vos.astore+'/detail/'+str;}
        else if(str.indexOf(":")==0){return str.replace(/^:/,'http://')}
        else if(str.indexOf("http:")==0){return str;}
        else{return "";}
        //else{return vos.astore;}
    }

    self.all = function () {
        $(self).append($('<p></p>').attr("id", "allpicture").html(vos.loading));
        for(i=0;i<pic.length;i++){
            $('#allpicture').append(imgObject(pic[i]));
        }
        $('#allpicture').append('<br clear="right" />');
        $(self).append($('<div></div>').attr("id", "allmessage"));
        for(i=0;i<msg.length;i++){
            $('#allmessage').append(msgObject(msg[i]));
        }
        $('#loading').remove();
    };
//    self.start=function(){
//        slide_count=0;
//        if(!schedule_n)change_slide('fade', slide_count);
//        interval_id=window.setInterval(this.tick,o.interval);
//    };
//    self.stop = function(){ interval_id = window.clearInterval(interval_id)};
//    self.tick = function(){
//        if(slide_count >= max-1){
//            interval_id = window.clearInterval(interval_id);
//            //$('#topmsg').find("br:last").before(play_btn);
//        }
//        else{
//            slide_count += 1;
//            change_slide('fade', slide_count);
//        }
//    }
    function change_slide(mode, slide_count){
        var mi = (j+slide_count*dx) % msg.length;
        var ii = (j+slide_count*dy) % pic.length;
        //var ii = j % pic.length;
        var slide = msgObject(msg[mi]).prepend(imgObject(pic[ii]))
            .append('<br clear="right" />')
            .css('height', o.areaHeight)
            ;
        if(mode == 'fade'){
            $('#topmsg').fadeOut("slow", function(){
                $('#topmsg').html(slide).fadeIn("slow")
            });
        }
        else if(mode == 'slide'){
            $('#topmsg').slideUp("slow", function(){
                $('#topmsg').html(slide)
                .slideDown("slow")
                ;
            });
        }
        else{ $('#topmsg').html(slide); }
    }
}


