function change_photo(n) {
  var doc = document.getElementById("case_change_photo");
  if(doc && doc.src) {
    doc.src = doc.src.replace(/\-photo[0-9]+\.jpg/, "-photo" + new String(n) + ".jpg");
  }
  return false;
}
function panorama_window(url) {
  window.open(url, "_blank", "width=640,height=400");
  return false;
}
var Calendar = function(y, m) {
  if(m > 12) {
    y = y + 1;
    m = 1;
  } else if(m < 1) {
    y = y - 1;
    m = 12;
  }
  this.y = y;
  this.m = m;
  this.last_day = (new Date(y, m, 0)).getDate();
  this.w        = (new Date(y, m-1, 1)).getDay();
  this.left_day = 7 - ((this.w + this.last_day) % 7);
  this.week_len = this.last_day % 7;
}
Calendar.prototype = {
  prev_month : function() {
    return new Calendar(this.y, this.m - 1, 1);
  },
  next_month : function() {
    return new Calendar(this.y, this.m + 1, 1);
  },
  box : function() {
    var prev_month = this.prev_month();
    var next_month = this.next_month();
    var prev_last_day = prev_month.last_day;
    var last_day = this.last_day;
    var left_day = this.left_day;
    var box  = [];
    var w    = this.w;
    for(var i = w; i>0; --i) {
      box[box.length] = {
          y : prev_month.y,
          m : prev_month.m,
          d : prev_last_day + 1 - i
        };
    }
    for(var i = 1; i<=last_day; ++i) {
      box[w + i - 1] = {
          y : this.y,
          m : this.m,
          d : i
        };
    }
    for(var i = 0; i<left_day; ++i) {
      box[w + last_day + i] = {
          y : next_month.y,
          m : next_month.m,
          d : i + 1
        };
    }
    return box;
  }
}
var EventCalendar = {
  _event_id : {},
  _event_ym : {},
  now  : {},
  doc  : {},
  doc_info : {},
  path     : window.location.pathname.substr(0, 2) == "/t" ? '/t/yuyu/' : "/",
  init : function(house_id, doc_id) {
    var now = new Date();
    this.now = new Calendar(now.getFullYear(), now.getMonth() + 1);
    this.doc = document.getElementById(doc_id);

    var element = document.createElement('div'); 
    element.id             = doc_id + "_info_window";
    element.className      = "event_calendar_info_window";
    element.style.position = "absolute";
    element.style.left     = "500px";
    element.style.top      = "300px";
    document.body.appendChild(element);
    this.doc_info = element;

    this.ajax(this.path + "api.php/event_calendar?id=" + house_id, function(o) {
      var _event_id = {};
      var _event_ym = {};
      eval('_event_ym = (' + o.responseText + ');');
      for(var ym in _event_ym) {
        var events = _event_ym[ym];
        var len = events.length;
        for(var i=0; i<len; ++i) {
          var e = events[i];
          _event_id[e.id] = e;
        }
      }
      EventCalendar._event_id  = _event_id;
      EventCalendar._event_ym  = _event_ym;
      EventCalendar.render_calendar();
    });
  },
  to_next : function() {
    this.now = this.now.next_month();
    EventCalendar.render_calendar();
    return false;
  },
  to_prev : function() {
    this.now = this.now.prev_month();
    EventCalendar.render_calendar();
    return false;
  },
  event_id : function(id) {
    return this._event_id[id];
  },
  event_ym : function(y, m) {
    var ym;
    if(m >= 10) {
      ym = y + "" + m;
    } else {
      ym = y + "0" + m;
    }
    var event = this._event_ym[ym] || [];
    var len = event.length;
    var of_day = {};
    for(var i=0; i<len; ++i) {
      var e = event[i];
      var day  = e.day;
      var len2 = e.days
      for(var j=0; j<len2; ++j) {
        var index = day + j;
        of_day[index] = of_day[index] || [];
        of_day[index][of_day[index].length] = e;
      }
    }
    return of_day;
  },
  err : function(msg) {
    console.debug(msg);
  },
  hide_info_window : function() {
    this.doc_info.style.display = "none";
    return false;
  },
  info_window : function(obj, id) {
    var doc = this.doc_info;
    var e = this.event_id(id);
    var html = "";
    html += '<div class="title">' + e.title + '</div><div class="close"><a href=#" onclick="return EventCalendar.hide_info_window()">×</a></div>';
    html += '<div class="top_solid">' + e.contents + '</div>';
    if(e.uri) {
      html += '<div class="text_right"><a href="' + e.uri + '">詳細はこちら</a></div>';
    }
    html += '<div class="top_dotted">日程：' + e.date_desc + '<br />' + e.place_name + '</div>';

    var left = 0;
    var top  = 0;
    if("getBoundingClientRect" in document.documentElement) {
      var pos = obj.getBoundingClientRect();
      left = Math.max( obj.scrollLeft, document.documentElement.scrollLeft, document.body.scrollLeft ) + pos.left;
      top  = Math.max( obj.scrollTop , document.documentElement.scrollTop , document.body.scrollTop  ) + pos.top;
    } else {
      left = obj.offsetLeft;
      top  = obj.offsetTop;
    }
    doc.style.left    = Math.floor(left - 60) + "px";
    doc.style.top     = Math.floor(top  + 20) + "px";
    doc.style.display = "block";
    doc.innerHTML     = html;
    return false;
  },
  render_calendar : function() {
    var cal = this.now;
    var y   = cal.y;
    var m   = cal.m;
    var box = cal.box();
    var len = cal.week_len;
    var html = "";
    html += '<div class="nav">';
    html += '  <a href="#" onclick="return EventCalendar.to_prev()"><img src="' + this.path + 'common/images/cal_arrow_left.gif" width="29" height="17" border="0" /></a>';
    html += '  <a href="#" onclick="return EventCalendar.to_next()"><img src="' + this.path + 'common/images/cal_arrow_right.gif" width="29" height="17" /></a>';
    html += '  ' + y + '年' + m + '月';
    html += '</div>';
    html += '<table width="100%" border="0" cellspacing="1" cellpadding="0">';
    html += '  <thead>';
    html += '  <tr>';
    html += '    <th>日</th>';
    html += '    <th>月</th>';
    html += '    <th>火</th>';
    html += '    <th>水</th>';
    html += '    <th>木</th>';
    html += '    <th>金</th>';
    html += '    <th>土</th>';
    html += '  </tr>';
    html += '  </thead>';
    html += '  <tbody>';
    var last_day = cal.last_day
    var w = cal.w;
    var len = box.length;
    var event_day = this.event_ym(y, m);
    var th = function(n) {
      var date = box[n];
      if(m == date.m) {
        return '<th>' + date.d + '</th>';
      } else {
        return '<th class="dis">' + date.d + '</th>';
      }
    }
    var td = function(n) {
      var date = box[n];
      if(m == date.m) {
        var ev      = event_day[date.d] || [];
        var len     = ev.length;
        var ev_html = "";
        for(var i=0; i<len; ++i) {
          var e = ev[i];
          ev_html += '<a href="#" onclick="return EventCalendar.info_window(this,' + e.id + ')" class="place' + e.place_id + '">' + e.title + '</a>';
        }
        return '<td><div>' + ev_html + '</div></td>';
      } else {
        return '<td><div>&nbsp;</div></td>';
      }
    }
    for(var i=0; i<len; i+=7) {
      html += '<tr>';
      html += th(i+0);
      html += th(i+1);
      html += th(i+2);
      html += th(i+3);
      html += th(i+4);
      html += th(i+5);
      html += th(i+6);
      html += '</tr>';
      html += '<tr>';
      html += td(i+0);
      html += td(i+1);
      html += td(i+2);
      html += td(i+3);
      html += td(i+4);
      html += td(i+5);
      html += td(i+6);
      html += '</tr>';
    }
    html += '  </tbody>';
    html += '</table>';
    this.doc.innerHTML = html;
  },
  ajax : function(url, cb) {
    var req = (function() {
        try { return new XMLHttpRequest()                   } catch(e){}
        try { return new ActiveXObject("Msxml2.XMLHTTP")    } catch(e){}
        try { return new ActiveXObject("Microsoft.XMLHTTP") } catch(e){}
        this.err("no get XMLHttp.")
      })();

    try {
      req.onreadystatechange = function() {
        if(req.readyState == 4) {
          if(req.status == 200) {
            cb(req)
          } else {
            EventCalendar.err(req)
          }
        }
      }
      
      req.open("GET", url, true);
      req.send();
    } catch(e) {
      EventCalendar.err(e)
    }
  }
};







var ReserveCalendar = {
  _reserve_n  : 5,
  _reserve_id : {},
  _reserve_ym : {},
  now  : {},
  doc  : {},
  doc_info : {},
  doc_info_wrap : {},
  form : {},
  path : window.location.pathname.substr(0, 2) == "/t" ? '/t/yuyu/' : "/",
  init : function(reserve_place_id, doc_id, form_id) {
    var now  = new Date();
    this.now = new Calendar(now.getFullYear(), now.getMonth() + 1);
    this.doc = document.getElementById(doc_id);
    var doc_info = document.createElement('div'); 
    doc_info.id             = doc_id + "_info_window";
    doc_info.className      = "reserve_calendar_info_window";
    doc_info.style.position = "absolute";
    doc_info.style.left     = "500px";
    doc_info.style.top      = "300px";
    document.body.appendChild(doc_info);
    this.doc_info   = doc_info;

    var doc_info_wrap = document.createElement('div'); 
    doc_info_wrap.id   = 'info_window_wrap';
    document.body.appendChild(doc_info_wrap);
    this.doc_info_wrap = doc_info_wrap;

    this.form = document.getElementById(form_id);
    doc_info.appendChild(this.form);
    this.form.style.display = "block";

    this.ajax(this.path + "api.php/reserve_calendar?id=" + reserve_place_id + '&d=' + (new Date).getTime(), function(o) {
      var _reserve_id = {};
      var _reserve_ym = {};
      eval('_reserve_ym = (' + o.responseText + ');');
      for(var ym in _reserve_ym) {
        var reserves = _reserve_ym[ym];
        var len = reserves.length;
        for(var i=0; i<len; ++i) {
          var e = reserves[i];
          _reserve_id[e.id] = e;
        }
      }
      ReserveCalendar._reserve_id  = _reserve_id;
      ReserveCalendar._reserve_ym  = _reserve_ym;
      ReserveCalendar.render_calendar();
    });
  },
  to_next : function() {
    this.now = this.now.next_month();
    ReserveCalendar.render_calendar();
    return false;
  },
  to_prev : function() {
    this.now = this.now.prev_month();
    ReserveCalendar.render_calendar();
    return false;
  },
  reserve_ym : function(y, m) {
    var ym;
    if(m >= 10) {
      ym = y + "" + m;
    } else {
      ym = y + "0" + m;
    }
    var reserve = this._reserve_ym[ym] || [];
    var len = reserve.length;
    var of_day = {};
    for(var i=0; i<len; ++i) {
      of_day[ reserve[i].day ] = reserve[i];
    }
    return of_day;
  },
  reserve_id : function(id) {
    return this._reserve_id[id];
  },
  err : function(msg) {
    console.debug(msg);
  },
  hide_info_window : function() {
    this.doc_info.style.display = "none";
    this.doc_info_wrap.style.display = "none";
    $(this.form).validationEngine('hideAll')
    return false;
  },
  info_window : function(obj, id) {
    var doc = this.doc_info;
    var e = this.reserve_id(id);
    var len = this._reserve_n;
    var is_checked = false;
    var reserve_html = "";
    for(var i=1; i<len; ++i) {
      var accept = e["accept" + i];
      if(accept > 0) {
        reserve_html += '<div><label><input type="radio" name="span_n" value="' + i + '"' + (!is_checked ? ' checked="checked"' : '') + '> ' + e["span" + i] + ' (' + accept + '組空き)</label></div>'
        is_checked = true;
      } else {
        reserve_html += '<div><label><input type="radio" name="span_n" disabled="disabled"> ' + e["span" + i] + ' (満員御礼)</label></div>'
      }
    }
    document.getElementById('reserve_choise').innerHTML = reserve_html;
    document.getElementById('reserve_at').innerHTML     = e.at.replace('-', '年').replace('-', '月') + "日";
    document.getElementById('reserve_id').value         = e.id;

    obj = this.doc; // fixed
    var left = 0;
    var top  = 0;
    if("getBoundingClientRect" in document.documentElement) {
      var pos = obj.getBoundingClientRect();
      left = Math.max( obj.scrollLeft, document.documentElement.scrollLeft, document.body.scrollLeft ) + pos.left;
      top  = Math.max( obj.scrollTop , document.documentElement.scrollTop , document.body.scrollTop  ) + pos.top;
    } else {
      left = obj.offsetLeft;
      top  = obj.offsetTop;
    }
    doc.style.left    = Math.floor(left + 60) + "px";
    doc.style.top     = Math.floor(top  + 50) + "px";
    doc.style.display = "block";

    this.doc_info_wrap.style.display = "block";
    this.doc_info_wrap.style.height  = Math.max(window.innerHeight || 0, document.body.clientHeight || 0) + "px";

    window.scrollTo(0, top);
    return false;
  },
  render_calendar : function() {
    var cal = this.now;
    var y   = cal.y;
    var m   = cal.m;
    var box = cal.box();
    var len = cal.week_len;
    var html = "";
    html += '<div class="nav">';
    html += '  <a href="#" onclick="return ReserveCalendar.to_prev()"><img src="' + this.path + 'common/images/cal_arrow_left.gif" width="29" height="17" border="0" /></a>';
    html += '  <a href="#" onclick="return ReserveCalendar.to_next()"><img src="' + this.path + 'common/images/cal_arrow_right.gif" width="29" height="17" /></a>';
    html += '  ' + y + '年' + m + '月';
    html += '</div>';
    html += '<table width="100%" border="0" cellspacing="1" cellpadding="0">';
    html += '  <thead>';
    html += '  <tr>';
    html += '    <th><div>日</div></th>';
    html += '    <th><div>月</div></th>';
    html += '    <th><div>火</div></th>';
    html += '    <th><div>水</div></th>';
    html += '    <th><div>木</div></th>';
    html += '    <th><div>金</div></th>';
    html += '    <th><div>土</div></th>';
    html += '  </tr>';
    html += '  </thead>';
    html += '  <tbody>';
    var last_day = cal.last_day
    var w = cal.w;
    var len = box.length;
    var th = function(n, w) {
      var date = box[n];
      if(m == date.m) {
        return '<th class="w' + w + '">' + date.d + '</th>';
      } else {
        return '<th class="dis">' + date.d + '</th>';
      }
    }
    var reserve_day = this.reserve_ym(y, m);
    var td = function(n) {
      var date = box[n];
      if(m == date.m) {
        var ev  = reserve_day[date.d];
        if(ev) {
          if(ev.is_holiday) {
            return '<td><div class="holiday">休み</div></td>';
          } else if(ev.accept_total == 0) {
            return '<td><div class="holiday">満員御礼</div></td>';
          } else {
            return '<td><div class="reserve"><a href="#" onclick="return ReserveCalendar.info_window(this,' + ev.id + ')">' + ev.accept_label + '<span>（残' + ev.accept_total + '組）</span></a></div></td>';
          }
        } else {
          return '<td><div class="blank">-</div></td>';
        }
      } else {
        return '<td><div class="outrange">&nbsp;</div></td>';
      }
    }
    for(var i=0; i<len; i+=7) {
      html += '<tr>';
      html += th(i+0, 0);
      html += th(i+1, 1);
      html += th(i+2, 2);
      html += th(i+3, 3);
      html += th(i+4, 4);
      html += th(i+5, 5);
      html += th(i+6, 6);
      html += '</tr>';
      html += '<tr>';
      html += td(i+0);
      html += td(i+1);
      html += td(i+2);
      html += td(i+3);
      html += td(i+4);
      html += td(i+5);
      html += td(i+6);
      html += '</tr>';
    }
    html += '  </tbody>';
    html += '</table>';
    this.doc.innerHTML = html;
  },
  ajax : function(url, cb) {
    var req = (function() {
        try { return new XMLHttpRequest()                   } catch(e){}
        try { return new ActiveXObject("Msxml2.XMLHTTP")    } catch(e){}
        try { return new ActiveXObject("Microsoft.XMLHTTP") } catch(e){}
        this.err("no get XMLHttp.")
      })();

    try {
      req.onreadystatechange = function() {
        if(req.readyState == 4) {
          if(req.status == 200) {
            cb(req)
          } else {
            ReserveCalendar.err(req)
          }
        }
      }
      
      req.open("GET", url, true);
      req.send();
    } catch(e) {
      ReserveCalendar.err(e)
    }
  }
};







/*=====================================
  futomi
-------------------------------------*/

(function () {
var acclog_cgi_url = '/acc/acclog.cgi';
create_beacon();
function create_beacon() {
	var img = document.createElement("img");
	img.src = acclog_cgi_url + "?referrer=" + document.referrer + "&width=" + screen.width + "&height=" + screen.height + "&color=" + screen.colorDepth + "&epoch=" + new Date().getTime();
}
})();



/*=====================================
  Google Analytics
-------------------------------------*/
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-24695352-1']);
_gaq.push(['_trackPageview']);

(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();



