var myShopList;
var rData;
var selectedData;
var n_region;
var n_area;
var n_a_1;
var n_a_2;
var n_a_3;
var n_a_4;
var n_a_5;
var n_a_6;
var n_b_1;
var n_b_2;
var n_b_3;
var n_b_4;
var n_c_1;
var n_c_2;
var n_c_3;
var n_c_4;
var n_c_5;
var n_d_1;
var n_d_2;
var pageLinkStart=1;
var itemsPerPage=5;
var maxPageLinks=5;

ShopListClass=Class.create();
ShopListClass.prototype={
  initialize: function(){

    //基本情報
    var url="restaurant_info.xml";
    
    var xmlTree=new XML.ObjTree();
    new Ajax.Request(
      url,
      {
        method    : 'get',
        onSuccess : function(httpObj){
          var xmlsrc=httpObj.responseText;
          var tree=xmlTree.parseXML(xmlsrc);
          var preData=tree.scj.data;

          rData=this.makeData(preData);
          selectedData=this.makeList(rData);

          this.showList(selectedData,$("page").value);

          this.initPageLinks(selectedData);

        }.bind(this),
        onFailure : function(){
          alert('error!');
        }
      }
    );
    
  },

  makeList: function(data){
    selectedData=new Array();
    selectedData=this.filterList(data,$("region").value,$("area").value,$("a_1").value,$("a_2").value,$("a_3").value,$("a_4").value,$("a_5").value,$("a_6").value,$("b_1").value,$("b_2").value,$("b_3").value,$("b_4").value,$("c_1").value,$("c_2").value,$("c_3").value,$("c_4").value,$("c_5").value,$("d_1").value,$("d_2").value);

    return selectedData;

  },

  showList: function(data, page){
    var str='';

    var items=itemsPerPage;

    if(!page){
      page=1;
    }
    startItem=(page-1)*items;
    endItem=startItem+items;
    if(endItem>data.length){
      endItem=data.length;
    }

    var count=1;
    for(i=startItem;i<endItem;i++){
      if(count<items+1){
        str+=data[i].source;
//        str+=this.makeShop(data[i]);
        count++;
      }
    }

    count--;

    totalpages=Math.ceil(data.length/items);

//    var pageLink=this.makePageLink(totalpages);

    $("totalcount").innerHTML=data.length;
    $("totalcount2").innerHTML=data.length;

//    $("pagelinks").innerHTML=pageLink;
//    $("btnLeft").innerHTML=this.makePrevBtn(page);
//    $("btnRight").innerHTML=this.makeNextBtn(page,totalpages);

    $("count").innerHTML=count;

    $("list").style.display='none';
    $("list").innerHTML=str;
    $("list").visualEffect("Appear", { from:0.0, to:1.0, duration:0.5 ,delay: 0});
//    $("list").innerHTML='aaa';
  },

  showPageLink: function(data){
    var items=itemsPerPage;

    totalpages=Math.ceil(data.length/items);

    var pageLink=this.makePageLink(totalpages);

    $("pagelinks").innerHTML=pageLink;

  },

  makePageLink: function(totalpages){
    var str='';
    if(totalpages>maxPageLinks){
      for(i=pageLinkStart;i<pageLinkStart*1+5;i++){
        if(i==$("page").value){
          str+='			<span class="bold">'+i+'</span>';
        }else{
          str+='			<a href="javascript:void(0);" onClick="changePage('+i+');">'+i+'</a>';
        }
      }
    }else{
      for(i=1;i<totalpages+1;i++){
        if(i==$("page").value){
          str+='			<span class="bold">'+i+'</span>';
        }else{
          str+='			<a href="javascript:void(0);" onClick="changePage('+i+');">'+i+'</a>';
        }
      }
    }
    return str;
  },

  initPageLinks: function(data){
    var items=itemsPerPage;
    var totalpages=Math.ceil(data.length/items);
    var pagediff=(maxPageLinks % 2)? Math.ceil((maxPageLinks - 1)/2) : Math.ceil(maxPageLinks/2);
    
    if($("page").value){
      pageLinkStart=($("page").value)-pagediff;
      if(pageLinkStart < 1){
        pageLinkStart=1;
      }
    }else{
      pageLinkStart=1;
      $("page").value=1;
    }
    if(totalpages*1+1-pageLinkStart*1 < maxPageLinks){
      pageLinkStart=totalpages*1+1-maxPageLinks;
      if(pageLinkStart<1){
        pageLinkStart=1;
      }
    }
    this.showPageLink(selectedData);
  },

  clickBtnRight: function(){
    var items=itemsPerPage;
    var totalpages=Math.ceil(selectedData.length/items);
    if(totalpages>maxPageLinks){
      if(pageLinkStart>0 && pageLinkStart+maxPageLinks<=totalpages){
        pageLinkStart++;
      }
      this.makePageLink(totalpages);
      this.showPageLink(selectedData);
    }
  },

  clickBtnLeft: function(){
    var items=itemsPerPage;
    var totalpages=Math.ceil(selectedData.length/items);
    if(totalpages>maxPageLinks){
      if(pageLinkStart>0 && pageLinkStart>1){
        pageLinkStart--;
      }
      this.makePageLink(totalpages);
      this.showPageLink(selectedData);
    }
  },

  makePrevBtn: function(page){
    var str='';
    var prevpage=page-1;
    if(prevpage<1){
      prevpage=1;
    }
    str='			<a href="javascript:"><img src="img/aim_left.gif" alt="" width="19" height="7" border="0" onClick="changePage('+prevpage+');" /></a>		';
    return str;
  },

  makeNextBtn: function(page,totalpages){
    var str='';
    var nextpage=page+1;
    if(nextpage>totalpages){
      nextpage--;
    }
    str='			<a href="javascript:"><img src="img/aim_right.gif" alt="" width="19" height="7" border="0" onClick="changePage('+nextpage+')" /></a>		';
    return str;
  },

  makeShop: function(shop){
    var str='';
    str+='<div class="main_wrapper">';
    str+='<div class="main">';
    str+='	<div class="main_leftline"><a href="'+ shop.more_info +'"><img src="'+ shop.image_url +'" width="141" height="82" border="0" alt="店舗" /></a></div>';
    str+='	<div class="main_ten"><a href="'+ shop.more_info +'">'+ shop.name +'</a></div>';
    str+='	<div class="main_ad">'+ shop.address +'</div>';
    str+='	<div class="main_tel">';
    str+='		<div class="main_tel_l">PHONE:'+ shop.phone +'</div>';

    if(shop.delivery_phone!="null"){
      str+='		<div class="main_tel_r">DELIVERY:'+ shop.delivery_phone +'</div>';
    }else{
      str+='		<div class="main_tel_r">&nbsp;</div>';
    }

    str+='	 	<div class="main_ten2">';
    str+='		<a href="'+ shop.more_info +'"><img src="img/more_info_btn.gif" alt="MORE INFO" width="69" height="13" border="0" class="bn_m" /></a>';
    str+='        </div>';
    str+='    </div>';

    str+='<div class="main_icon2">';

    str+='<img src="img/i_new_'+this.setOnOff(shop.query.a_1)+'.gif" alt="NEW OPENのお店" width="20" height="20" border="0" />';
    str+='<img src="img/i_terrace_'+this.setOnOff(shop.query.a_2)+'.gif" alt="テラス有り" width="20" height="20" border="0" />';
    str+='<img src="img/i_private_'+this.setOnOff(shop.query.a_3)+'.gif" alt="個室有り" width="20" height="20" border="0" />';
    str+='<img src="img/i_park_'+this.setOnOff(shop.query.a_4)+'.gif" alt="駐車場有り" width="20" height="20" border="0" />';
    str+='<img src="img/i_pet_'+this.setOnOff(shop.query.a_5)+'.gif" alt="ペットOK" width="20" height="20" border="0" />';
    str+='<img src="img/i_smoke_'+this.setOnOff(shop.query.a_6)+'.gif" alt="禁煙席有" width="20" height="20" border="0" />';

    str+='<img src="img/dot_line.gif" alt="" width="5" height="20" border="0" />';

    str+='<img src="img/i_variety_'+this.setOnOff(shop.query.b_1)+'.gif" alt="ピッツァ以外も充実" width="20" height="20" border="0" />';
    str+='<img src="img/i_night_'+this.setOnOff(shop.query.b_2)+'.gif" alt="深夜まで営業" width="20" height="20" border="0" />';
    str+='<img src="img/i_delivery_'+this.setOnOff(shop.query.b_3)+'.gif" alt="デリバリー可" width="20" height="20" border="0" />';
    str+='<img src="img/i_takeout_'+this.setOnOff(shop.query.b_4)+'.gif" alt="テイクアウト可" width="20" height="20" border="0" />';

    str+='<img src="img/dot_line.gif" alt="" width="5" height="20" border="0" />';

    str+='<img src="img/i_train_'+this.setOnOff(shop.query.c_1)+'.gif" alt="駅近" width="20" height="20" border="0" />';
    str+='<img src="img/i_lunch_'+this.setOnOff(shop.query.c_2)+'.gif" alt="ランチブッフェ" width="20" height="20" border="0" />';
    str+='<img src="img/i_wine_'+this.setOnOff(shop.query.c_3)+'.gif" alt="ワイン充実" width="20" height="20" border="0" />';
    str+='<img src="img/i_course_'+this.setOnOff(shop.query.c_4)+'.gif" alt="コース有り" width="20" height="20" border="0" />';
    str+='<img src="img/i_rent_'+this.setOnOff(shop.query.c_5)+'.gif" alt="貸切OK" width="20" height="20" border="0" />';

    str+='<img src="img/dot_line.gif" alt="" width="5" height="20" border="0" />';

    str+='<img src="img/i_parttime_'+this.setOnOff(shop.query.d_1)+'.gif" alt="アルバイト募集" width="20" height="20" border="0" />';
    str+='<img src="img/i_fulltime_'+this.setOnOff(shop.query.d_2)+'.gif" alt="正社員募集" width="20" height="20" border="0" />';

    str+='</div>';
    str+='</div>';
    str+='</div>';

    return str;

  },

  makeData: function(data){
    var data2=new Array();

    for(i=0;i<data.region.length;i++){
      var region=data.region[i]["-name"];
      for(j=0;j<data.region[i].prefecture.length;j++){
        var pref=data.region[i].prefecture[j]["-name"];
        var rlength=1;
        if(data.region[i].prefecture[j].restaurant.length){
          rlength=data.region[i].prefecture[j].restaurant.length;
        }
        if(rlength>1){
          for(k=0;k<rlength;k++){
            var tmp=this.makeShopHash(data.region[i].prefecture[j].restaurant[k],region,pref);
            data2.push(tmp);
          }
        }else{
          var tmp=this.makeShopHash(data.region[i].prefecture[j].restaurant,region,pref);
          data2.push(tmp);
        }
      }
    }
    return data2;
  },
  
  makeShopHash: function(tmp,region,pref){
    var hashdata;
    hashdata={
            'region' : region,
            'prefecture' : pref,
            'image_url' : tmp.image_url,
            'name_kana' : tmp.name_kana,
            'name' : tmp.name,
            'city' : tmp.city,
            'zip' : tmp.zip,
            'address' : tmp.address,
            'phone' : tmp.phone,
            'delivery_phone' : tmp.delivery_phone,
            'query' : {
              'a_1' : tmp.query.a_1,
              'a_2' : tmp.query.a_2,
              'a_3' : tmp.query.a_3,
              'a_4' : tmp.query.a_4,
              'a_5' : tmp.query.a_5,
              'a_6' : tmp.query.a_6,
              'b_1' : tmp.query.b_1,
              'b_2' : tmp.query.b_2,
              'b_3' : tmp.query.b_3,
              'b_4' : tmp.query.b_4,
              'c_1' : tmp.query.c_1,
              'c_2' : tmp.query.c_2,
              'c_3' : tmp.query.c_3,
              'c_4' : tmp.query.c_4,
              'c_5' : tmp.query.c_5,
              'd_1' : tmp.query.d_1,
              'd_2' : tmp.query.d_2
            },
            'more_info' : tmp.more_info,
            'source' : this.makeShop(tmp),
            'shopname' : tmp.coordinate.name
          };
    return hashdata;
  },

  filterList: function(data,region,area,a_1,a_2,a_3,a_4,a_5,a_6,b_1,b_2,b_3,b_4,c_1,c_2,c_3,c_4,c_5,d_1,d_2){
    var selData=new Array();

    if(region){
      for(i=0;i<data.length;i++){
        if(data[i].region==region || data[i].prefecture==region || data[i].shopname==region){
          selData.push(data[i]);
        }
/*
        if(region=="東京"){
          if(data[i].prefecture==region){
            selData.push(data[i]);
          }
        }else{
          if(data[i].region==region){
            selData.push(data[i]);
          }
        }
*/
      }
    }else{
      if(area){
        if(area.indexOf(",",0)>-1){
          var areas=area.split(",");
          for(j=0;j<areas.length;j++){
            for(i=0;i<data.length;i++){
              if(data[i].city==areas[j]){
                selData.push(data[i]);
              }
            }
          }
        }else{
          for(i=0;i<data.length;i++){
            if(data[i].region==area || data[i].prefecture==area || data[i].city==area){
              selData.push(data[i]);
            }
          }
        }
      }else{
        selData=data;
      }
    }

    if(a_1==1 || a_2==1 || a_3==1 || a_4==1 || a_5==1 || a_6==1 || b_1==1 || b_2==1 || b_3==1 || b_4==1 || c_1==1 || c_2==1 || c_3==1 || c_4==1 || c_5==1 || d_1==1 || d_2==1){
      var selData2=new Array();
      for(i=0;i<selData.length;i++){
        var selected=1;
        if(a_1==1){
          if(selData[i].query.a_1=='disp'){
            selected=selected*1;
          }else{
            selected=selected*0;
          }
        }
        if(a_2==1){
          if(selData[i].query.a_2=='disp'){
            selected=selected*1;
          }else{
            selected=selected*0;
          }
        }
        if(a_3==1){
          if(selData[i].query.a_3=='disp'){
            selected=selected*1;
          }else{
            selected=selected*0;
          }
        }
        if(a_4==1){
          if(selData[i].query.a_4=='disp'){
            selected=selected*1;
          }else{
            selected=selected*0;
          }
        }
        if(a_5==1){
          if(selData[i].query.a_5=='disp'){
            selected=selected*1;
          }else{
            selected=selected*0;
          }
        }
        if(a_6==1){
          if(selData[i].query.a_6=='disp'){
            selected=selected*1;
          }else{
            selected=selected*0;
          }
        }

        if(b_1==1){
          if(selData[i].query.b_1=='disp'){
            selected=selected*1;
          }else{
            selected=selected*0;
          }
        }
        if(b_2==1){
          if(selData[i].query.b_2=='disp'){
            selected=selected*1;
          }else{
            selected=selected*0;
          }
        }
        if(b_3==1){
          if(selData[i].query.b_3=='disp'){
            selected=selected*1;
          }else{
            selected=selected*0;
          }
        }
        if(b_4==1){
          if(selData[i].query.b_4=='disp'){
            selected=selected*1;
          }else{
            selected=selected*0;
          }
        }

        if(c_1==1){
          if(selData[i].query.c_1=='disp'){
            selected=selected*1;
          }else{
            selected=selected*0;
          }
        }
        if(c_2==1){
          if(selData[i].query.c_2=='disp'){
            selected=selected*1;
          }else{
            selected=selected*0;
          }
        }
        if(c_3==1){
          if(selData[i].query.c_3=='disp'){
            selected=selected*1;
          }else{
            selected=selected*0;
          }
        }
        if(c_4==1){
          if(selData[i].query.c_4=='disp'){
            selected=selected*1;
          }else{
            selected=selected*0;
          }
        }
        if(c_5==1){
          if(selData[i].query.c_5=='disp'){
            selected=selected*1;
          }else{
            selected=selected*0;
          }
        }

        if(d_1==1){
          if(selData[i].query.d_1=='disp'){
            selected=selected*1;
          }else{
            selected=selected*0;
          }
        }
        if(d_2==1){
          if(selData[i].query.d_2=='disp'){
            selected=selected*1;
          }else{
            selected=selected*0;
          }
        }

        if(selected==1){
          selData2.push(selData[i]);
        }

      }
      selData=selData2;
    }

    //pageLinkStart=1;
    return selData;
  },

  setOnOff: function(flag){
    var str='off';
    if(flag=='disp'){
      str='on';
    }
    return str;
  }

}

window.onload=function(){
  myShopList=new ShopListClass();

  n_region=$("region").value;
  n_area=$("area").value;
  n_a_1=$("a_1").value;
  n_a_2=$("a_2").value;
  n_a_3=$("a_3").value;
  n_a_4=$("a_4").value;
  n_a_5=$("a_5").value;
  n_a_6=$("a_6").value;
  n_b_1=$("b_1").value;
  n_b_2=$("b_2").value;
  n_b_3=$("b_3").value;
  n_b_4=$("b_4").value;
  n_c_1=$("c_1").value;
  n_c_2=$("c_2").value;
  n_c_3=$("c_3").value;
  n_c_4=$("c_4").value;
  n_c_5=$("c_5").value;
  n_d_1=$("d_1").value;
  n_d_2=$("d_2").value;

  timerID=window.setInterval('listenTextChange()',300);
  
}

function msg(){
  alert("test");
}

function listenTextChange(){
  var flag=0;

  if($("region").value!=n_region){
    flag=1;
  }
  if($("area").value!=n_area){
    flag=1;
  }
  if($("a_1").value!=n_a_1){
    flag=1;
  }
  if($("a_2").value!=n_a_2){
    flag=1;
  }
  if($("a_3").value!=n_a_3){
    flag=1;
  }
  if($("a_4").value!=n_a_4){
    flag=1;
  }
  if($("a_5").value!=n_a_5){
    flag=1;
  }
  if($("a_6").value!=n_a_6){
    flag=1;
  }
  if($("b_1").value!=n_b_1){
    flag=1;
  }
  if($("b_2").value!=n_b_2){
    flag=1;
  }
  if($("b_3").value!=n_b_3){
    flag=1;
  }
  if($("b_4").value!=n_b_4){
    flag=1;
  }
  if($("c_1").value!=n_c_1){
    flag=1;
  }
  if($("c_2").value!=n_c_2){
    flag=1;
  }
  if($("c_3").value!=n_c_3){
    flag=1;
  }
  if($("c_4").value!=n_c_4){
    flag=1;
  }
  if($("c_5").value!=n_c_5){
    flag=1;
  }
  if($("d_1").value!=n_d_1){
    flag=1;
  }
  if($("d_2").value!=n_d_2){
    flag=1;
  }

  n_region=$("region").value;
  n_area=$("area").value;
  n_a_1=$("a_1").value;
  n_a_2=$("a_2").value;
  n_a_3=$("a_3").value;
  n_a_4=$("a_4").value;
  n_a_5=$("a_5").value;
  n_a_6=$("a_6").value;
  n_b_1=$("b_1").value;
  n_b_2=$("b_2").value;
  n_b_3=$("b_3").value;
  n_b_4=$("b_4").value;
  n_c_1=$("c_1").value;
  n_c_2=$("c_2").value;
  n_c_3=$("c_3").value;
  n_c_4=$("c_4").value;
  n_c_5=$("c_5").value;
  n_d_1=$("d_1").value;
  n_d_2=$("d_2").value;

  if(flag==1){
    searchList();
  }
}

function changePage(page){
  $("page").value=page;
  myShopList.showList(selectedData,page);
  myShopList.showPageLink(selectedData);
  return false;
}

function searchList(){
  var items=itemsPerPage;
  selectedData=myShopList.makeList(rData);
  var totalpages=Math.ceil(selectedData.length/items);
  if($("page").value > totalpages || $("is_new_search").value==1){
    $("page").value=1;
  }
  myShopList.showList(selectedData,$("page").value);
  myShopList.initPageLinks(selectedData);
}

function clickBtnLeft(){
  myShopList.clickBtnLeft();
}

function clickBtnRight(){
  myShopList.clickBtnRight();
}

function selTarea(obj){
  $("area").value="";

  $("kantoarea").checked=false;
  $("tokaiarea").checked=false;
  $("kinkiarea").checked=false;

  $("tkarea").checked=false;
  $("karea").checked=false;
  $("sarea").checked=false;
  $("carea").checked=false;
  $("region").value="";
  document.frm1.pregion.selectedIndex=0;
  for(i=1;i<11;i++){
    var tmp;
    if($("tarea"+i).checked){
      tmp=$("tarea"+i).value;
    }else{
      tmp="";
    }
    if(tmp){
      if($("area").value){
        $("area").value+=','+tmp;
      }else{
        $("area").value+=tmp;
      }
    }
  }
  //searchList();
}

function selArea(obj){
  var state;

  $("region").value="";
  document.frm1.pregion.selectedIndex=0;

  if(obj.checked){
    state=1;
  }else{
    state=0;
  }
  $("area").value="";
  $("kantoarea").checked=false;
  $("tokaiarea").checked=false;
  $("kinkiarea").checked=false;

  $("tkarea").checked=false;
  $("karea").checked=false;
  $("sarea").checked=false;
  $("carea").checked=false;
  for(i=1;i<11;i++){
    $("tarea"+i).checked=false;
  }
  if(state){
    obj.checked=true;
    $("area").value=obj.value;
  }
  //searchList();
}

function delArea(){
  var state;

  $("area").value="";
  $("kantoarea").checked=false;
  $("tokaiarea").checked=false;
  $("kinkiarea").checked=false;

  $("tkarea").checked=false;
  $("karea").checked=false;
  $("sarea").checked=false;
  $("carea").checked=false;
  for(i=1;i<11;i++){
    $("tarea"+i).checked=false;
  }

}

function selAtt(obj,hobj){
  var state;

  if(obj.checked){
    state=1;
    $(hobj).value=1;
  }else{
    state=0;
    $(hobj).value="";
  }
  //searchList();
}
