(function($){
  $.fn.highlight = function(){
    var self = this[0];
    var div = document.createElement('div');
    $(self).prepend(div);
    $(div).css({
      position: 'absolute',
      width: $(self).width(),
      height: $(self).height(),
      opacity: 0.4,
      margin: 0,
      padding: 0,
      backgroundColor:'#25cfde',
      zIndex: 100
    }).fadeTo(200, 0.2, function(){
      $(div).remove();
    })
    return self;
  }
  $.uniq = function(array){
      var done = {};
      var ret = [];
      for (var i=0; i<array.length; i++) {
          var v = array[i];
          if (!done[v]) {
              ret.push(v);
              done[v] = true;
          }
      }
      return ret;
  }
})(jQuery);

function toggle_submit(validator, image, opt){
  if (validator.numberOfInvalids() === 0 && !opt) {
    if (image.src.match('_inactive')) {
      image.src = image.src.replace('_inactive', '_active');
    }
  } else {
    if (image.src.match('_active')) {
      image.src = image.src.replace('_active', '_inactive');
    }
  };
}

function toggle_area(id, url) {
  var area = $("#"+id)
  if (id !== 'info_area') {
    area.css('overflow','auto');
  }
  //$('embed').css({visibility:'hidden'})
  if (area.css('display') === "none") {
    //area.slideDown(300,function(){$('embed').css({visibility:'visible'})});
    if (url && area.text().match(/loading.../)) {
      area.load(url);
    }
    area.slideDown(300, function(){
      area.parent().find('li')[0].className = 'close';
    })
  } else {
    //area.slideUp(300,function(){$('embed').css({visibility:'visible'})})
    area.slideUp(300, function(){
      area.parent().find('li')[0].className = 'open';
    })
  }
}

function auth_token(){
  return $('#authenticity_token').val();
}

function sound(type){
  var div = $('#sound')[0];
  if (!div){
    div = document.createElement('div');
    div.id = 'sound';
    $(document.body).append(div);
  }

  if (!type) {
      div.innerHTML = "";
      return;
  }

  var src = '/flash/'+type+'.swf';
  var swfobj = [
    '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000">',
    '<param name="movie" value="', src, '" />',
    '<embed src="', src, '" width="0" height="0" name="SoundUnit" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />',
    '</object>'
  ].join("");
  div.innerHTML = swfobj;
}

function toggle_sound_button(el){
  var div = el.parentNode;
  if ($(div).find('img').attr('src').match("sound_on")) {
    $(div).find('img')[0].src = "/images/create/sound_off.gif";
    $(div).find('input').attr('checked', false);
  } else {
    $(div).find('img')[0].src = "/images/create/sound_on.gif";
    $(div).find('input').attr('checked', true);
  }
}

function set_error_img(img){
  new LoadingImage(img);
  if (img.src.match("album_thumb.jpg")) {
    img.src = '/images/album/album_img_generating.png';
  } else {
    img.src = img.src.replace(/^[^_]+?(_(?:thumb|detail)\.jpg)/,"/images/album/generating$1");
  }
  if (img.src.match('generating_detail.jpg')) {
    img.height = 148;
    img.width = 240;
  }
}

function LoadingImage(img){
  var self = this;
  self.img = img;
  self.count = 0;
  self.type = self.img.src.match(/album_thumb/) ? 'cover' : self.img.src.match(/thumb/) ? 'thumb' : 'detail';
  if (self.type == "thumb") {
    self.width = 80;
    self.height = 80;
  } else {
    self.width = self.img.width;
    self.height = self.img.height;
  }
  this.init();
}
LoadingImage.prototype = {
  init: function(){
    var self = this;
    self.dummy = new Image();
    self.dummy.onload = function(){
      if (self.type === 'cover' || $('#mode2'+self.type).attr('className') === 'active'){
        $(self.img).fadeOut('slow',function(){
          if ($.browser.mozilla) {
            self.img.width = self.dummy.width;
            self.img.height = self.dummy.height;
          } else {
            self.img.width = self.width;
            self.img.height = self.height;
          }
          self.img.src = self.dummy.src;
          $(self.img).fadeIn('slow')
          if (self.type !== 'cover') {
            set_height(self.type);
          }
        })
      }
    };
    self.dummy.onerror = function(){
      if (self.count++ < 1) {
        setTimeout(function(){
          reload_image(self.dummy);
        }, 5000)
      }
    }
    self.dummy.src = self.img.src;
  }
}

function slowdownScroll(to, time) {
  clearTimeout(slowdownScroll.t);
  to = to || 0;
  if (to < 0) {to=0};
  time = time || 15;
  var sctop;
  if(navigator.appName == "Microsoft Internet Explorer" && document.compatMode == "CSS1Compat") {
    sctop = document.body.parentNode.scrollTop;
  }

  else if(window.pageYOffset){
    sctop = window.pageYOffset;
  } else {
    sctop = document.body.scrollTop;
  }
  sctop = sctop - to;

  if(Math.abs(sctop) > 2){
    var  scup = Math.ceil(sctop*0.5);
    scrollBy(0,-scup);
    if (sctop-scup) {
        slowdownScroll.t = setTimeout(function(){slowdownScroll(to)},time)
    }
  }
}

function ymd(d){
  var y = d.getYear();
  y -= (y < 200) ? 100 : 2000;
  return $.map([y, d.getMonth()+1, d.getDate()], function(n){
    var s = ""+ n;
    if (s.length < 2) {
      s = "0" + s;
    }
    return s;
  }).join("/");
}


function show_transmit(el){
  var descdiv = $(el).parents('.list_album_header');
  var title = descdiv.find('a.album_url').text();
  var url = descdiv.find('a.album_url').attr('href');
  var word = '合い言葉なしで閲覧できます';
  if (descdiv.find('input.input_album_require_password').val() === 'true'){
      word = descdiv.find('input.input_album_password').val();
  }
  var expired_at = descdiv.find('.expired_at').text();
  var html = [
      '<div class="transmit">',
      'メールやメッセンジャーなどで、以下の内容を伝えてアルバムに招待しましょう。<br />作成したアルバムは携帯からも見ることができます。表示されているQRコードからアクセスしてください。',
      '<div class="album_info">',
          '<dl>',
          '<dt>アルバムのタイトル</dt>',
          '<dd>', title, '</dd>',
          '<dt>アルバムのURL</dt>',
          '<dd>', url, '</dd>',
          '<dt>合い言葉</dt>',
          '<dd>', word ,'</dd>',
          '<dt>アルバムの公開終了日</dt>',
          '<dd>', expired_at, '</dd>',
          '</dl>',
          '<div class="qr"><img src="/img', url.replace(/^http:\/\/[^\/]+/, ''), '/qrcode.jpg" width="105" height="105" alt="QRコード" /></div>',
      '</div>',
      '招待された人がアルバムを見るために、ユーザー登録を行う必要はありません。',
      '</div>'
   ].join("");
  $.facebox(html);
}

function reload_image(img, callback){
    if (callback) { img.onload = callback }
    img.src = img.src.replace(/\d+$/, new Date().getTime());
}


$(function(){
    if (!$.browser.msie || $.browser.version > 6) {
        //$('.op').hover(function(){$(this).fadeTo(100, 0.7); },function(){$(this).fadeTo(100, 1.0);});
    }
    $('a[rel*=facebox]').facebox();
})
