function Mink() {
  this.initialize();
}

Mink.Voices = [
  "data/picture/voice/marin/1.mp3",
  "data/picture/voice/marin/2.mp3",
  "data/picture/voice/marin/3.mp3",
  "data/picture/voice/marin/4.mp3",
  "data/picture/voice/marin/5.mp3",
  "data/picture/voice/marin/6.mp3",
  "data/picture/voice/marin/7.mp3",
  "data/picture/voice/marin/8.mp3",
  "data/picture/voice/marin/9.mp3",
  "data/picture/voice/marin/10.mp3",
  "data/picture/voice/marin/11.mp3",
  "data/picture/voice/marin/12.mp3",
  "data/picture/voice/marin/13.mp3",
  "data/picture/voice/marin/14.mp3",
  "data/picture/voice/marin/15.mp3",
  "data/picture/voice/marin/16.mp3",
  "data/picture/voice/marin/17.mp3",
  "data/picture/voice/marin/18.mp3",
  "data/picture/voice/marin/19.mp3",
  "data/picture/voice/marin/20.mp3",
  "data/picture/voice/marin/21.mp3",
  "data/picture/voice/sum/1.mp3",
  "data/picture/voice/sum/2.mp3",
  "data/picture/voice/sum/3.mp3",
  "data/picture/voice/sum/4.mp3",
  "data/picture/voice/sum/5.mp3",
  "data/picture/voice/sum/6.mp3",
  "data/picture/voice/sum/7.mp3",
  "data/picture/voice/sum/8.mp3",
  "data/picture/voice/sum/9.mp3",
  "data/picture/voice/sum/10.mp3",
  "data/picture/voice/sum/11.mp3",
  "data/picture/voice/sum/12.mp3",
  "data/picture/voice/sum/13.mp3",
  "data/picture/voice/sum/14.mp3",
  "data/picture/voice/sum/15.mp3",
  "data/picture/voice/sum/16.mp3",
  "data/picture/voice/sum/17.mp3",
  "data/picture/voice/sum/18.mp3",
  "data/picture/voice/sum/19.mp3",
  "data/picture/voice/sum/20.mp3",
  "data/picture/voice/sum/21.mp3"
];

Mink.prototype = {
  step: "photos",
  scenes: [],//{character:"",wallpaper:"",voice: ""}
  selectedScene: null,
  selectedSceneIndex: 0,
  selectedVoices: [],
  sortStartIndex: 0,
  MusicInfo : {
    path : "data/music/files/s001111/s001111.mp3",
    artist : "sanyo",
    title : "沖縄モード",
    jacket : "data/music/files/s001111/s001111.jpg"
  },
  MusicInfoTmp : {
  },
  effect : "relax",
  effect_className : null,

  initialize: function() {
    this.selectedSceneIndex = 0;
    this.setupSceneEdit();
    this.setupMusic();
    this.setupButtonActions();
    this.setupMenu();
    $("#CreateContents>div").hide();
    $("#CreateContents_StepMusic_Select").hide();
    $("#CreateContents_StepFinalize2").hide();
    $("#CreateContents_StepEffects").hide();
    $("#CreateContents_StepPhoto").show();
    $("#step1").attr("id", "step1on");
  },

  setupMenu: function() {
    $("#step1 a").bind("click", function(){
        mink.nextStep("photos");
        return false;
    });
    $("#step2 a").bind("click", function(){
        mink.nextStep("music");
        return false;
    });
    $("#step3 a").bind("click", function(){
        mink.nextStep("effects");
        return false;
    });
    $("#step4 a").bind("click", function(){
        mink.nextStep("finalize/finalize2");
        return false;
    });
  },

  nextStep: function(path) {
    mink.step = path;
    trace("nextStep " + path);

    $('html,body').animate({ scrollTop: 200 }, 10, function(){
    $("#CreateContents>div").hide();
    $("#CreateContents_StepMusic_Select").hide();
    $("#CreateContents_StepFinalize2").hide();
    $("#CreateContents_StepEffects").hide();
    $("#CreateContents_StepPhoto").hide();
    var i = 1;
    $("#CreateNavi>li").each(function(){
      var item = $(this);
      item.attr("id", "step" + i);
      i++;
    });
    $("#CreateNavi>li>a").show();
    if(path.indexOf("photos") > -1){
      $("#CreateContents_StepPhoto").show();
      $("#ContentsMain").width(874);
      $("#ContentsMain .boxTop").find("img").attr("src", "static/images/help_top.gif");
      $("#mainBody .boxBottom_help").find("img").attr("src", "static/images/help_bottom.gif");
      $("#mainBody .boxBottom_help").css("marginLeft", "40px");
      $("#step1").attr("id", "step1on");
    } else if(path.indexOf("music") > -1){
      $("#CreateContents_StepMusic_Select").width(562).show();
      $("#ContentsMain").width(673);
      $(".CreateBtnWrap").width(403);
      $("#ContentsMain .boxTop").find("img").attr("src", "static/images/bgm_top.gif");
      $("#mainBody .boxBottom_help").find("img").attr("src", "static/images/bgm_bottom.gif");
      $("#mainBody .boxBottom_help").css("marginLeft", "141px");
      $("#step2").attr("id", "step2on");
    } else if(path.indexOf("effects") > -1){
      $("#CreateContents_StepEffects").show();
      $("#ContentsMain").width(673);
      $(".CreateBtnWrap").width(403);
      $("#ContentsMain .boxTop").find("img").attr("src", "static/images/bgm_top.gif");
      $("#mainBody .boxBottom_help").find("img").attr("src", "static/images/bgm_bottom.gif");
      $("#mainBody .boxBottom_help").css("marginLeft", "141px");
      $("#step3").attr("id", "step3on");
    } else if(path.indexOf("finalize") > -1){
      $("#step4").attr("id", "step4on");
      $("#ContentsMain").width(673);
      $(".CreateBtnWrap").width(403);
      $("#ContentsMain .boxTop").find("img").attr("src", "static/images/bgm_top.gif");
      $("#mainBody .boxBottom_help").find("img").attr("src", "static/images/bgm_bottom.gif");
      $("#mainBody .boxBottom_help").css("marginLeft", "141px");
      if(path.indexOf("finalize2") > -1) {
        $("#CreateContents_StepFinalize2").show();
      }
    } else {

    }
    });
  },


  setupButtonActions: function(){
    var d = document;
    //create
    $("#delete").bind("click", function(){ mink.deleteImage(); return false; });
    $("#rightturn").bind("click", function(){ mink.rotateImage(90); return false; });
    $("#btnRotate180").bind("click", function(){ mink.rotateImage(180); return false; });
    $("#leftturn").bind("click", function(){ mink.addScene(); return false; });
    $("#photosSaveBTN").bind("click", function(){ mink.nextStep("music/select"); return false; });
    $("#musicSelectBTN").bind("click", function(){ mink.saveChooseMuisc() ;return false; });
    $("#musicSaveBTN").bind("click", function(){ 
        var is = mink.saveUploadMuisc();
        if(is == 1) {
      $("#musicUploadStatus").text("著作権に違反するものは公開できません。").css({color:"#900"});
          return false;
        } else if(is == 0) {
      $("#musicUploadStatus").text("TitleとArtistは入力必須項目です。").css({color:"#900"});
          return false;
    }
        mink.nextStep("music/upload2"); return false;
    });
    $("#musicSaveBTN02").bind("click", function(){ mink.nextStep("effects"); return false; });
    $("#musicCancelBTN").bind("click", function(){ mink.nextStep("music/upload1"); return false; });
    $("#effectsSaveBTN").bind("click", function(){ mink.nextStep("finalize/finalize2"); return false; });
    $("#finalizeContinuePhotos").bind("click", function(){ mink.nextStep("photos"); return false; });
    $("#finalizeContinueEffects").bind("click", function(){ mink.nextStep("effects"); return false; });
    $("#finalizeContinueMusic").bind("click", function(){ mink.nextStep("music/select"); return false; });

    $("#music_genre_back").bind("click", function(){
      var list = d.getElementById("music_genre_detail_list");
       list.innerHTML = "";
      $("#music_genre_list").show();
      $("#music_genre_detail").hide();
      return false;
    });
    $("#music_genre_detail").hide();
    $("#music_player_detail_select").bind("click", function(){
      return false;
    });
    $("#effect_list a").bind("click", function(evt){ mink.click_handler(evt); return false; });
    $("#finalizeCreateBTN").bind("click", function(evt){ 
      var title = $("#movie_title").val();
      var movie_producer = $("#movie_producer").val();
      var mail_address = $("#mail_address").val();
      var blog_url = $("#blog_url").attr("value") || "";
      if(!mail_address){
        alert("入力項目は必須です。");
        return false;
      }
      var isno = $("#permit02_final").attr("checked");
      if(isno){
        alert("著作権を侵害するものは作成できません。");
        return false;
      }
      trace("-------------------------------------------");
      if(blog_url.length > 0 && !blog_url.match(/(http):\/\/.+/)){
        alert("URLが正しくありません。");
        return false;
      }
      if(!mail_address.match(/^\S+@\S+\.\S+$/)){
        alert("メールアドレスが正しくありません");
        return false;
      }
      mink.create();
      if($.browser.msie && $.browser.version < 8 && navigator.userAgent.indexOf("MSIE 8.0") < 0){
      location.href = "finish.html";
      }
      return true;
    });

    $("#ContentsSide .side-close").bind("click", function(evt){ mink.deleteSelectMaterial(evt); return false; });
    $("#ContentsSide").find(".voice_play_btn").hide();
  },

  /**
   * ===========================================================================================
   * 01. @image 
   *
  */

  dropSetup: function(){
    var _this = mink || this;
    var drag_opt = {
      containment : $("#CreateContents_StepPhoto").find(".subWrap570"),
      helper : "clone"
    }
    $("#materialPanel li").draggable(drag_opt);

    var drop_opt = {
      hoverClass: "ui-mouseover",
      drop: _this.dropHandler
    }
    $("#uploadScrollPane li").droppable(drop_opt);
    $("#uploadScrollPane")
      .sortable({
        cursor:'move',
        start: function(event, ui) {
        },
        sort: function(event, ui) {
        },
        change: function(event, ui) {
        },
        update: _this.ImageSortUpdate,
        start: _this.ImageSortUpdateStart
      });

    $("#uploadScrollPane li img")
      .bind("mousedown", _this.selectImage)
      .bind("mouseover", _this.ImageOver)
      .bind("mouseout", _this.ImageOut);

    var first = $($("#uploadScrollPane").find(".progressWrapper")[0]);
    first.attr("class", "progressWrapper ui-selected");
    this.selectedScene = first;
    this.selectedSceneIndex = $(".progressWrapper", "#uploadScrollPane").index(first);
  },

  dropHandler : function(evt, ui){
    var material = $(ui.draggable.context);
    var drop_index = $(".progressWrapper", "#uploadScrollPane").index(evt.target);
    var item = mink.scenes[drop_index] || new Object();
    if(material.attr("className").match("wallpaper")){
      var path = material.find("img").attr("src");
      $(this).find(".wallpaper_image").attr("src", path);
      item.wallpaper = path;
    }
    if(material.attr("className").match("character")){
      var path = material.find("img").attr("src");
      if($.browser.msie && $.browser.version < 7 && navigator.userAgent.indexOf("MSIE 8.0") < 0){
        $(this).find(".character_image").attr("src", path.replace("png","gif"));
      } else {
        $(this).find(".character_image").attr("src", path);
      }
      item.character = path;
    }
    if(material.attr("className").match("voice")){
      var index = $(".material_voice", "#materialPanelBox-Voice").index(ui.draggable);
      var path = Mink.Voices[index];
      var voice = "data/picture/voice/voice.png";
      mink.selectedVoices[drop_index] = index;
      $(this).find("img.voice_image").attr("src", voice);
      item.voice = path;
    }
    mink.scenes[drop_index] = item;

    $("#uploadScrollPane")
      .sortable({
        cursor:'move',
        start: function(event, ui) {
        },
        sort: function(event, ui) {
        },
        change: function(event, ui) {
        },
        update: mink.ImageSortUpdate,
        start: mink.ImageSortUpdateStart
      });

    $("#uploadScrollPane li img")
      .bind("mousedown", mink.selectImage)
      .bind("mouseover", mink.ImageOver)
      .bind("mouseout", mink.ImageOut);
    
    if($(this).find("span.voice_image").length < 1){
      $("#uploadScrollPane").pngFix();
    } else {
      $(this).find("span.voice_image").show();
    }
    if($.browser.msie && $.browser.version < 7 && navigator.userAgent.indexOf("MSIE 8.0") < 0){
      $(this).find(".voice_image").css({"marginTop":0, "marginLeft": "-39px"});
    }

    mink.changeSelectImage();
  },

  setupSceneEdit: function() {
    this.scenes.push(new Object());
    this.dropSetup();
    $("#materialPanelButton-WallPaper").bind("click", function(){
      $("#materialPanelBox").find(".material-panels").hide();
      $("#materialPanelBox-WallPaper").width(5080).show();
        return false;
    });
    $("#materialPanelButton-Character").bind("click", function(){
      $("#materialPanelBox").find(".material-panels").hide();
      if($.browser.msie && $.browser.version == 6 && navigator.userAgent.indexOf("MSIE 8.0") < 0){
        $("#materialPanelBox-Character").width(40220).show();
      } else {
        $("#materialPanelBox-Character").width(40620).show();
      }
      return false;
    });
    $("#materialPanelButton-Voice").bind("click", function(){
      $("#materialPanelBox").find(".material-panels").hide();
      $("#materialPanelBox-Voice").width(7900).show();
        return false;
    });
    $("#materialPanelBox-Voice").find("a").bind("click", function(){
      var index = $(".voice_play_btn", "#materialPanelBox-Voice").index(this);
      if(index < 0) return;
      var path = Mink.Voices[index];
      setVoicePlayerPath(path, "voice_player");
      return false;
    });
  },

  selectImage: function(evt){
    if(mink.selectedScene) {
      mink.selectedScene.attr("class", "progressWrapper ui-selectee");
    }

    $(this).parent().attr("class", "progressWrapper ui-selected");
    mink.selectedScene = $(this).parent();
    mink.selectedSceneIndex = $(".progressWrapper", "#uploadScrollPane").index($(this).parent());
    trace("selectedSceneIndex : " + (mink.selectedSceneIndex+1));
    trace("selectedScene : " + mink.selectedScene.attr("src"));
    mink.changeSelectImage();
  },

  changeSelectImage: function(){
    if(!mink.selectedScene) {
      return;
    }
    var space = "static/images/space.gif";
    var chara = mink.selectedScene.find(".character_image").attr("src");
    var wall = mink.selectedScene.find(".wallpaper_image").attr("src");
    var voice = mink.selectedScene.find(".voice_image").attr("src");
    $("#side-close-character").hide();
    $("#ContentsSide").find(".character_image").attr("src", chara);
    $("#side-close-wallpaper").hide();
    $("#ContentsSide").find(".wallpaper_image").attr("src", wall);
    $("#side-close-voice").hide();

    if(chara.indexOf("space") < 0){
      $("#side-close-character").show();
    }
    if(wall.indexOf("space") < 0){
      $("#side-close-wallpaper").show();
    }
    if(voice.match("voice")){
      var index = mink.selectedVoices[mink.selectedSceneIndex];
      //var path = $($("#materialPanelBox-Voice img")[2]).attr("src");
      //var path = "data/picture/voice/marin/" + (index + 1) + ".jpg";
      var path = $("#materialPanelBox-Voice img").get(index).src;
      $("#ContentsSide").find(".voice_image").attr("src", path);

      $("#ContentsSide").find(".voice_play_btn").show().bind("click", function(){
        if(index < 0) return;
        var path = Mink.Voices[index];
        setVoicePlayerPath(path, "voice_player");
        return false;
      });
      $("#side-close-voice").show();
    } else {
      $("#ContentsSide").find(".voice_image").attr("src", space);
      $("#ContentsSide").find(".voice_play_btn").hide();
    }
  },
    
  ImageOver: function(evt){
    var index = $(".voice_image", "#uploadScrollPane").index(this);
    if(index == mink.selectedSceneIndex) return;
    $(this).parent().attr("class", "progressWrapper ui-mouseover");
  },

  ImageOut: function(evt){
    var index = $(".voice_image", "#uploadScrollPane").index(this);
    if(index == mink.selectedSceneIndex) return;
    $(this).parent().attr("class", "progressWrapper ui-selectee");
  },

  ImageSortUpdateStart: function(event, ui){
    var index = $(".voice_image", "#uploadScrollPane").index(mink.selectedScene);
    mink.sortStartIndex = index;
  },

  ImageSortUpdate: function(event, ui){
    var bIndex = mink.selectedSceneIndex;
    var index = $(".voice_image", "#uploadScrollPane").index(mink.selectedScene);
    var scn = mink.scenes.splice(mink.sortStartIndex, 1).shift();
    mink.scenes.splice(index, 0, scn);

    mink.selectedSceneIndex = null;
    if(mink.selectedScene) {
      mink.selectedScene.attr("class", "progressWrapper ui-selectee");
      mink.selectedScene = null;
    }
  },

  deleteImage: function(){
    if(mink.selectedScene == null) return false;
    var image_contaienr = mink.selectedScene;
    image_contaienr.fadeOut("normal", function (){
      $(this).remove();
    });
    mink.selectedScene = null;

    var scn = Object(mink.scenes.splice(mink.selectedSceneIndex, 1));

    if(mink.scenes.length < 15){
    }
  },

  deleteSelectMaterial: function(evt){
    var rel = evt.currentTarget.rel;
    trace(rel);
    trace(mink.selectedSceneIndex);
    var item = mink.scenes[mink.selectedSceneIndex];
    if(rel.match("wallpaper") != null){
      item.wallpaper = null;
      mink.selectedScene.find(".wallpaper_image").attr("src","static/images/space.gif");
      $("#ContentsSide").find(".wallpaper_image").attr("src","static/images/space.gif");
      $("#side-close-wallpaper").hide();
    }
    if(rel.match("character") != null){
      item.character = null;
      mink.selectedScene.find(".character_image").attr("src","static/images/space.gif");
      $("#ContentsSide").find(".character_image").attr("src","static/images/space.gif");
      $("#side-close-character").hide();
    }
    if(rel.match("voice") != null){
      item.voice = null;
      mink.selectedScene.find(".voice_image").attr("src","static/images/space.gif");
      $("#ContentsSide").find(".voice_image").attr("src","static/images/space.gif");
      $("#side-close-voice").hide();
      $("#ContentsSide").find(".voice_play_btn").hide();
      mink.selectedScene.find("span.voice_image").hide();
    }
    mink.scenes[mink.selectedSceneIndex] = item;
  },

  addScene: function(){
    if(mink.scenes.length > 14) return;
    var content = '<li class="progressWrapper ui-selectee">' +
    '<img width="178" height="100" style="z-index:30;position:absolute;display: block;margin-top: -50px;margin-left: -89px;" src="static/images/space.gif" class="voice_image"/>' +
    '<img width="178" height="100" style="z-index:20;position:absolute;display: block;margin-top: -50px;margin-left: -89px;" src="static/images/space.gif" class="character_image"/>' +
    '<img width="178" height="100" style="z-index:10;position:absolute;display: block;margin-top: -50px;margin-left: -89px;" src="static/images/space.gif" class="wallpaper_image"/></li>';
    $("#uploadScrollPane").append($(content).fadeIn());
    mink.scenes.push(new Object());
    mink.dropSetup();
    $("#uploadScrollPane")
      .sortable({
        cursor:'move',
        start: function(event, ui) {
        },
        sort: function(event, ui) {
        },
        change: function(event, ui) {
        },
        update: mink.ImageSortUpdate,
        start: mink.ImageSortUpdateStart
      });

    $("#uploadScrollPane li img")
      .bind("mousedown", mink.selectImage)
      .bind("mouseover", mink.ImageOver)
      .bind("mouseout", mink.ImageOut);
  },



  /**
   * ===========================================================================================
   * 02. @music [choose]
   *
  */

  setupMusic: function(){
    $("#music_genre_detail_list a").bind("click",function(){
      mink.selectMusic(this.rel);
      return false;
    });
  },

  selectMusic: function(value){
    var arrs = value.split("/");
    var artist_id = arrs[0];
    var filename = arrs[1];
    var title = arrs[2];
    var base = "data/music/files/" + artist_id + "/";
    var jurl = base + artist_id + ".json";
    $.getJSON(jurl, null, function(data, status){
      var image = base + artist_id + ".jpg";
      var music = base + filename;
      $("#mcImg_select img").attr("src", image);
      $("#mcTitle02").text(title);
      $("#music_player_detail_artist").text(title);
      setMusicPlayerPath(music, "music_player_select");
      trace(music);
      mink.MusicInfoTmp = {
        path : music,
        title : title,
        artist : data.artist_name,
        jacket : image
      }
    });
  },

  saveChooseMuisc: function(){
    mink.MusicInfo = mink.MusicInfoTmp;
    mink.nextStep("effects");
  },

  /**
   * ===========================================================================================
   * 03. @effect
   *
  */

  click_handler: function(evt){
    var target = $(evt.currentTarget);
    var rel = target.attr("rel");
    var className = target.parent().attr("className");
    if(rel.indexOf("effect") > -1){
      if(mink.effect_className) {
        var buf = mink.effect_className;
        trace(buf);
        $("."+buf).attr("className", buf.replace("on",""));
      }
      rel = rel.replace("effect","").replace("[","").replace("]","");
      trace(rel);
      mink.effect = rel;
      target.parent().attr("className",className+="on");
      mink.effect_className = className;
      var flashvars = {};
      var params = {
        menu: "false",
        bgcolor: "#000000",
        quality: "high"
      };
      var attributes = {};
      swfobject.embedSWF("static/flash/effect_" + rel + ".swf", "effect_preview", 140, 140, "9", null, flashvars, params, attributes);
    }
    return false;
  },

  /**
   * ===========================================================================================
   * 04. @finalize 
   *
  */

  create: function(){
    trace("create");
    trace(mink.scenes.length);
    var wp = [];
    var ch = [];
    var vo = [];
    for (var i = 0;mink.scenes.length > i;i++){
      var item = mink.scenes[i];
//      trace(item);
      if(!item.wallpaper && !item.character) continue;
      if(item.wallpaper) {
        wp.push(item.wallpaper.replace("_thumb",""));
      } else {
        wp.push("");
      }
      if(item.character) {
        ch.push(item.character.replace("_thumb",""));
      } else {
        ch.push("");
      }
      if(item.voice) {
        vo.push(item.voice);
      } else {
        vo.push("");
      }
    }
//    trace("WallPaper : " + wp);
//    trace("Character : " + ch);
//    trace("Voice : " + vo);
      var blog_url = $("#blog_url").attr("value") || "";
      var mail_address = $("#mail_address").attr("value") || "";
      var music = mink.MusicInfo;
      var effect = mink.effect || "relax";
      var param = {
        wp: wp.join(","),
        ch: ch.join(","),
        vo: vo.join(","),
        music_path: music.path || "",
        mail: mail_address,
        blog: blog_url,
        effect: effect
      };
      $.getJSON("bin/create.cgi", param, function(){});
  }

};

var IS_DEBUG = false;
// 依存する外部スクリプト

var _c = window.console;
//debug出力
var trace = function(msg){
  if(!IS_DEBUG) return;
  if(!_c) return;
  _c.log(msg);
};

function thisMovie(movieName) {
  if (navigator.appName.indexOf("Microsoft") != -1) {
    return window[movieName];
  } else {
    return document[movieName];
  }
}

function setMusicPlayerPath(value, id){
  if(!value || value == "") return;
  try {
    thisMovie(id).setMusicPlayerPath(value);
  } catch (e) {
  }
}

function setVoicePlayerPath(value, id){
  if(!value || value == "") return;
  try {
    trace(value + " " + id);
    thisMovie(id).setVoicePlayerPath(value);
  } catch (e) {
    trace("error!");
  }
}


