/**
 * @author Ayumu Takai 
 * @extends jquery
 */

jQuery.fn.episode = function(options){
  var _episode = this;
  var opt = options;
    
  var isAnimated = false;
  var texts = new Array();
  
  var currentTextIndex = 0;
  var currentPointIndex = 0;
  var isClicked = 0;
  
  var points = [{"left":    "0px","top":    "0px"}
               ,{"left": "-100px","top": "-300px"}
               ,{"left": "-650px","top":  "-50px"}
               ,{"left":"-1000px","top": "-500px"}
               ,{"left":"-1600px","top": "-650px"}
               ,{"left":"-1300px","top":"-1100px"}
               ,{"left":"-1400px","top":"-1000px"}
               ,{"left":"-1000px","top": "-500px"}
               ,{"left": "-650px","top":  "-50px"}
               ,{"left": "-100px","top": "-300px"}
               ,{"left":    "0px","top": "-400px"}];

    function show_episode_text(){
      currentPointIndex++;
      if(currentPointIndex >= points.length ){ currentPointIndex = 0; }
      var property = points[currentPointIndex];
      property["width"] = "4800px";
      property["height"] = "2800px";
      $('#episode_bg').animate(property,{"duration":500,"complete":function(){    
        isAnimated = false;
        currentTextIndex++;
        if( currentTextIndex >= texts.length ){
          currentTextIndex = 0;
        }
        var text = texts[currentTextIndex];
        if(text){
          var elm = text.body[0];
          var array = $(elm).text().split("\n");
          if(array.length > 1){
		episode_less(null);
          }else{
          	$('#episode_text p').empty();
          	$('#episode_text p:first').replaceWith(array[0]);
          	$('#episode_text_from').text(text.from);
	  }
        }
        $('#episode_text').animate({"top":"11px"});
        $('#episode_mask').animate({"top":"11px"},{"complete":function(){
          $('#episode_prev').show();
          $('#episode_next').show();
        }});
        
        $('#episode_fadeout').show();
        setTimeout(function(){episode_scroll(false);},20000);
    }});
  }

  var episode_more = function(ev){
    	var text = texts[currentTextIndex];
    	var arry = $(text.body[0]).text().split("\n");
    	$('#episode_text p:first').replaceWith(arry[1]);
	$('#episode_text p:first').prepend('<a href="#" id="less">前に戻る</a><br />');
        $('#episode_text p a#less').click(episode_less);
  }

  var episode_less = function(ev){
    	var text = texts[currentTextIndex];
    	var arry = $(text.body[0]).text().split("\n");
    	$('#episode_text p:first').replaceWith(arry[0]);
	$('#episode_text p:first').append('<a href="#" id="more">続きを読む</a>');
        $('#episode_text p a#more').click(episode_more);
  }

  var episode_scroll = function(clicked){
    if( ! clicked && isClicked ){ isClicked--; return; } 
    if(isAnimated)return;
    isAnimated = true;
    $('episode_bg').stop(true);
    if( $('episode_bg').is(':hidden') ) { setTimeout(function(){episode_scroll();},1000); }
    if( $('episode_bg').is(':animated') ) { return false; }
    $('#episode_prev').hide();
    $('#episode_next').hide();
    $('#episode_text').animate({"top":"261px"});
    $('#episode_mask').animate({"top":"261px"});

    $('#episode_bg').animate({"width":"2400px","height":"1400px"},{"duration":500,"complete":function(){    
      $('#episode_fadeout').hide();
      show_episode_text();
    }});
    return false;
  }
  
  var close_title = function(){
    $('#episode_balloon').show();
    $('#episode_bg').css({"width":"2400px","height":"1400px"});
    $('#episode_bg_wrapper').show();
    $('#episode_title').hide();
    episode_scroll();
  }

  function xmlParser(xml){
      var i = 0;
        $(xml).find('text').each(function () {
        var from = $(this).find("from").text();
            var body = $(this).find('body');
        texts[i] = {"from":from,"body":body}
        i++;
        });
        currentTextIndex = Math.floor(Math.random() * texts.length);
  }

  $('#episode_text').css({"top":"261px"});
  $('#episode_mask').css({"top":"261px"});
  
  $.ajax({
    type:"GET",
    url:opt.xml,
    dataType:"xml",
    success: xmlParser
  });
  $('#episode_fadeout').hide();
  $('#episode_balloon').hide();
  $('#episode_bg_wrapper').hide();

  $('#episode_prev').click(function(ev){
    ev.preventDefault();
    if($('#episode_prev').is(':animated')){ return;}
    currentTextIndex -= 2;
    if(currentTextIndex <= 0) {
      currentTextIndex = texts.length - 2;
    }
    isClicked++;
    episode_scroll(true);
  });
  $('#episode_next').click(function(ev){
      ev.preventDefault();  
        if($(this).is(':animated')){ return;}
        isClicked++;
        episode_scroll(true);
  });
    
  $('#episode_start').click(function(ev){
    var p = $(opt.isAutoChange);
    $(p).text("false");
    close_title();
    ev.preventDefault();
  });
};

