var ie55 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 5.5") != -1);
var ie6  = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 6.0") != -1);
var ie7  = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 7.0") != -1);
var ie8  = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 8.0") != -1);
var formAction = null;  // temporary box for form-action attribute
var customer   = null;
var shopInfo   = null;
var recent     = null;
var remark     = null;
var catPizza   = null;
var catSide    = null;


// loading cookie
try {
  if ($.cookie('customer')) {
    var decB64 = base64['decode']($.cookie('customer'), true);
    customer   = $.parseJSON(decB64);
  }
} catch(e) {}
try {
  if ($.cookie('shopInfo')) {
    var decB64 = base64['decode']($.cookie('shopInfo'), true);
    shopInfo   = $.parseJSON(decB64);
  }
} catch(e) {}
try {
  if ($.cookie('recent')) {
    var decB64 = base64['decode']($.cookie('recent'), true);
    recent     = $.parseJSON(decB64);
  }
} catch(e) {}
try {
  if ($.cookie('remark')) {
    remark     = base64['decode']($.cookie('remark'), true);
  }
} catch(e) {}
try {
  if ($.cookie('categoryMenu')) {
    var decB64 = base64['decode']($.cookie('categoryMenu'), true);
    catPizza   = $.parseJSON(decB64).pizzaCategoryInfos;
    catSide    = $.parseJSON(decB64).sideCategoryInfos;
  }
} catch(e) {}

$(document).ready(function() {
  $('div.main_product_list dl.order_data,div#receipt dl.order_data').each( function() {
    if($(this).find('span.invalid').length) {
      $(this).addClass('error');
    }
  });

  // respond to the img of label (for IE)
  label_img();

  // to the top of page (for IE title-bar bug)
  $('a.toTop').click(function() { $.scrollTo('#wrapper'); });

  // init infomation
  if (customer)
  {
    $('#main_merit').hide();
    $('#customer_name').text(customer.kokyakuNm);
    $('div#customer_navi span.message').show();
    $('div#customer_navi .login').show();
  }
  else
  {
    $('#main_merit').show();
    $('div#customer_navi span.message').show();
    $('div#customer_navi .logout').show();
  }
  $('#remark').text(remark);

  // FLASH initialization (for noscript)
  var fl_kokyakuC  = "null";
  var fl_jushoC    = "null";
  var fl_todokeSeq = "null";
  try
  {
    if (customer) fl_kokyakuC  = customer.kokyakuC;
    if (shopInfo) {
      fl_jushoC    = shopInfo.jushoC;
      fl_todokeSeq = shopInfo.todokeSeq;
    }
  }
  catch (e) {}
  var flashvars = 'kokyaku_c=' + fl_kokyakuC + '&jusho_c=' + fl_jushoC + '&todoke_seq=' + fl_todokeSeq;
  $('object#fl_shop param#fl_params').val(flashvars);
  $('object#fl_shop embed#fl_embed').attr('flashvars', flashvars);

  // left-navi initialization
  $('#left_navi li.sub1 ul').empty();
  if (catPizza) {
    $.each(catPizza, function(i, val) {
      var src = '/image/shared/categoryimgs/left_navi_sub_' + this.category_k + '_' + this.category_c + '.gif';
      var buf = $('<li><a href="' + urlCategoryPizzaMenuRoot + this.tenpo_c + '/' + this.category_c + '/"><img src="' + src + '" over="' + src.replace('.gif', '_on.gif') + '" out="' + src + '" alt="' + this.category_nm + '" width="190" height="19" /></a></li>');
      $('div#left_navi li.sub1 ul').append(buf);
    });
  }
  $('div#left_navi li.sub1 ul li a img').each(function() {
    var src = null;
    $(this).hover(
      function() { $(this).attr('src', $(this).attr('over')); },
      function() { $(this).attr('src', $(this).attr('out')); }
    );
  });
  $('#left_navi li.sub2 ul').empty();
  if (catSide) {
    $.each(catSide, function(i, val) {
      var src = '/image/shared/categoryimgs/left_navi_sub_' + this.category_k + '_' + this.category_c + '.gif';
      var buf = $('<li><a href="' + urlCategorySideMenuRoot + this.tenpo_c + '/' + this.category_c + '/"><img src="' + src + '" over="' + src.replace('.gif', '_on.gif') + '" out="' + src + '" alt="' + this.category_nm + '" width="190" height="19" /></a></li>');
      $('div#left_navi li.sub2 ul').append(buf);
    });
  }
  $('div#left_navi li.sub2 ul li a img').each(function() {
    var src = null;
    $(this).hover(
      function() { $(this).attr('src', $(this).attr('over')); },
      function() { $(this).attr('src', $(this).attr('out')); }
    );
  });

  // input form initialization for address & buildings' name
  $('p.house_data').each(function(i) {
    var source = 'p.house_data:eq(' + i + ')';
    var target = 'p.house_name:eq(' + i + ')';
    if ($(this).find('input:checked').val() == '0') $(target).hide();
    $(this).find('input:radio,label').click(function() {
      if ($(source + ' input:checked').val() == '0')
        $(target).hide();
      else
        $(target).show();
    });
    $(this).find('input:radio,label').change(function() {
      if ($(source + ' input:checked').val() == '0')
        $(target).hide();
      else
        $(target).show();
    });
    $(this).find('input:radio,label').blur(function() {
      if ($(source + ' input:checked').val() == '0')
        $(target).hide();
      else
        $(target).show();
    });
  });
  // input form initialization for address & buildings' name (for additional address) if there are the plural addresses
  $('p.house_data.add').each(function() {
    if ($(this).find('input:checked').val() == '0') $('p.house_name.add').hide();
    $(this).find('input:radio').click(function() {
      if ($(this).val() == '0')
        $('p.house_name.add').hide();
      else
        $('p.house_name.add').show();
    });
    $(this).find('input:radio').change(function() {
      if ($(this).val() == '0')
        $('p.house_name.add').hide();
      else
        $('p.house_name.add').show();
    });
    $(this).find('input:radio').blur(function() {
      if ($(this).val() == '0')
        $('p.house_name.add').hide();
      else
        $('p.house_name.add').show();
    });
  });
  // input form initialization (regi payment type)
  if ($('p.pay_select').children('input:checked').val() == '0') $('#payment_select div.main_product_list').not(':first').hide();
  $('p.pay_select').children('input:radio,label').click(function() {
    if ($('p.pay_select input:checked').val() == '0')
      $('#payment_select div.main_product_list').not(':first').hide();
    else
      $('#payment_select div.main_product_list').not(':first').show();
  });
  $('p.pay_select').children('input:radio,label').change(function() {
    if ($('p.pay_select input:checked').val() == '0')
      $('#payment_select div.main_product_list').not(':first').hide();
    else
      $('#payment_select div.main_product_list').not(':first').show();
  });
  $('p.pay_select').children('input:radio,label').blur(function() {
    if ($('p.pay_select input:checked').val() == '0')
      $('#payment_select div.main_product_list').not(':first').hide();
    else
      $('#payment_select div.main_product_list').not(':first').show();
  });

  // current checked menu (Not top-page)
  var tenpo_c  = "";
  try {
    if (shopInfo) tenpo_c  = shopInfo.tenpoC;
    if (tenpo_c=="") tenpo_c  = "99999";
  } catch (e) {
    tenpo_c  = "99999";
  }
  try
  {
    $('div#recentMenu').empty();
    if (recent && recent.length > 1) {
        for (var i = 1 ; i < recent.length; i++)
        {
          var shohin_c  = recent[i].shohin_c;
          var shohin_nm = recent[i].shohin_nm;
          var imgSrc    = '/image/shared/itemimgss/' + shohin_c + '.jpg';
          switch (recent[i].shohin_k)
          {
            case 1 :
              var href = urlPizzaDetail + tenpo_c + '/19001/' + shohin_c;
              break;
            case 2 :
              var href = urlSideDetail + tenpo_c + '/59001/' + shohin_c;
              break;
          }
          $('div#recentMenu').append('<dl><dt><a href="' + href + '"><img src="' + imgSrc + '" alt="' + shohin_nm + '" width="25" height="25" /></a></dt><dd><a href="' + href + '">' + shohin_nm + '</a></dd></dl>');
        }
        $('div.main_menu_record dl:last').addClass('end');
    } else {
    }
    $('div#recentMenu').addClass('item_' + (i*1 - 1));
  }
  catch (e) {}

  // clicking left-navi
  $('#left_navi li.open_sub img').each(function() {
    $(this).click(function() {
      $('#left_navi li.' + $(this).attr('show')).toggle('blind');
    });
  });
  // mousing over left-navi
  $('#left_navi li.open_sub img').each(function() {
    var src;
    $(this).hover(
      function() {
        src = $(this).attr('src');
        $(this).attr('src', src.replace('.gif', '_on.gif'));
      },
      function() {
        $(this).attr('src', src);
      }
    );
  });

  // submitting data
  $('a.submitData').each(function() {
    $(this).click(function() {
      // applying for sending data
      applySubmitData($(this).attr('data'));
      // SUBMIT
      $('form:eq(0)').attr('action', $(this).attr('action'));
      $('form:eq(0)').submit();
      return false;  // for IE
    });
  });

  // push the shopping cart
  $('a.addToCart').each(function() {
    $(this).click(function() {
      // preparing sending data
      applySubmitData($(this).attr('data'));
//      prepareTopping();
      formAction = $('form:eq(0)').attr('action');
      var action = $(this).attr('action');
      $('form:eq(0)').attr('action', action);
      // be confirmation of that dialog is necessary or not
      var time = getTime();
      $.get(urlCheckSession, { time:time }, function(data) {
        if (data == 'ng') {
          tb_show(null, urlDialogueLogin + '?height=190', false);  // tb_show @thickbox.js
          $("#TB_overlay").unbind('click', tb_remove);
          $(".domino_TB_overlay").live('click', recoverFormActionUrl);     // .domino_TB_overlay added@thickbox.js
          $('#dialogueCloseButton').live('click', recoverFormActionUrl);
          $('#TB_window').css({background:"#333"});
          $('#TB_window').css({border:"0px"});
          $('#TB_title').remove();
          $('a.addToCart').blur();
          return false;  // for IE
        }
        $('form:eq(0)').submit();
        return false;  // for IE
      });
    });
  });
});

// applying for sending data
function applySubmitData(data) {
  $('input.clear_val').val('');
  try {
    if (data) {
      var data = $.parseJSON(utf['URLdecode'](data));
      $.each(data, function(id, val) {$('#' + id).val(val); });         // JSON attr. into input[@type=hidden]
    }
  } catch (e) {}
}

// make random param
function getTime()
{
  var dd = new Date();
  return dd.getTime();
}

// prepare for topping
function prepareTopping()
{
  $('span.add1').empty();
  $('span.del1').empty();
  $('span.add2').empty();
  $('span.del2').empty();
  $("input.add1_topping:checked").each(function() {
    $('span.add1').append(
      $('<input type="hidden" class="add1_topping_hidden" name="add1_topping" value="' + $(this).val() + '">')
    );
  });
  $("input.del1_topping:checked").each(function() {
    $('span.del1').append(
      $('<input type="hidden" class="del1_topping_hidden" name="del1_topping" value="' + $(this).val() + '">')
    );
  });
  $("input.add2_topping:checked").each(function() {
    $('span.add2').append(
      $('<input type="hidden" class="add2_topping_hidden" name="add2_topping" value="' + $(this).val() + '">')
    );
  });
  $("input.del2_topping:checked").each(function() {
    $('span.del2').append(
      $('<input type="hidden" class="del2_topping_hidden" name="del2_topping" value="' + $(this).val() + '">')
    );
  });
}
// recovery form-Action
function recoverFormActionUrl()
{
  if (formAction != null) $('form:eq(0)').attr('action', formAction);
  formAction = null;
  tb_remove();  // @thickbox.js
}

// for img in label (for IE)
function label_img()
{
  if ($.support.objectAll){
  } else {
  $('label[for] img').each(function() {
    $(this).click(function() {
      $(this).parent('label').click();
    });
  });
  }
}

/*
  parseUri 1.2.1
  (c) 2007 Steven Levithan <stevenlevithan.com>
  MIT License
*/
function parseUri(str)
{
  var o = parseUri.options,
    m   = o.parser[o.strictMode ? "strict" : "loose"].exec(str),
    uri = {},
    i   = 14;
  while (i--) uri[o.key[i]] = m[i] || "";
  uri[o.q.name] = {};
  uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
    if ($1) uri[o.q.name][$1] = $2;
  });
  return uri;
}
parseUri.options = {
  strictMode: false,
  key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],
  q:   {
    name:   "queryKey",
    parser: /(?:^|&)([^&=]*)=?([^&]*)/g
  },
  parser: {
    strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
    loose:  /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
  }
}

/*
 * request URL
 */
 var context              = '/order';                            // context
 var urlJsonReserve       = context + '/ajax/range/';            // getting reservation time-range
 var urlJsonReserveDetail = context + '/ajax/rangeDetail/';      // getting reservation time-range details
 var urlJsonAllergen      = context + '/ajax/calculate/';        // getting allergen-calorie info
 var urlJsonTopping       = context + '/ajax/toppingUpdate/';    // getting topping info
 var urlJsonSearchShop    = context + '/ajax/tenpoSearch/';      // searching shop
 var urlShopDetail        = context + '/shop/search/detail/';    // shop info details (after putting the tenpo-code)
 var urlReserve           = context + '/timeset/setReserve/';    // changing reserved order
 var urlCancelReserve     = context + '/timeset/cancelReserve';  // changing today's order
 var urlCart              = context + '/cart/setReserve/';       // act for shopping cart
 var urlCheckSession      = context + '/ajax/checkShopDecided/'; // check add shopping cart
 var urlDialogueLogin     = context + '/SORD110D.html';          // dialog for login & searching shop
 var urlCartCancelItem    = context + '/cart/delete/';           // canceling for cart
 var urlFavoriteCartlItem = context + '/cart/favorite/';         // add bookmark for cart
 var urlCartCouponNoUser  = context + '/cart/deleteCoupon';      // not used coupon for cart
 var urlCartSwitchTodokesaki = context + '/cart/chgAddr/';       // changing deliveried address for cart
 var urlPizzaDetail       = context + '/pizza/detail/';          // pizza details
 var urlSideDetail        = context + '/side/detail/';           // side-menu details
 var urlCategoryPizzaMenuRoot  = context + '/pizza/search/';     // root category of pizza for side-navi
 var urlCategorySideMenuRoot  = context + '/side/search/';       // root category of sidemenu for side-navi
 var urlSubmitHalfPizza   = context + '/pizza/detail/';          // submit for half & half
 var urlCartReload        = context + '/cart/';                  // reloading cart url
 var urlTimeSetReload     = context + '/timeset/';               // reloading reserved page url
 var urlTimeSetCancelReceive = context + '/timeset/clearReserve'; // reloading reserved page url
 var urlSetPizzaSearch    = context + '/set/pizzaSearch/';        //
 var urlSetPizzaDetail    = context + '/set/pizzaDetail/';        //
 var urlChangeReserve     = context + '/cart/timeset/indexScreen'; // change reservation timezone or receiving method