var right_side_order = [];
function reorder_right_side() {
  var page = $$('#layout').attr('class').replace(/\s*page_([^\s_]+)(_permalink)?\s*/, function(r0, r1) { return r1 });
  // console.log(page);
  if(right_side_order[page]) {
    $$('#A_side_block_MediaSideHTML div.content div.raw > div').hide();
    $$.each(right_side_order[page], function() {
      var el = $$('#'+this).attr("id", "_"+this);
      var tmp = el.clone().attr("id", this);
      $$('#A_side_block_MediaSideHTML div.content div.raw').append(tmp);
      $$('#'+this).show();
      $$('#_'+this).remove();
    });
  } else {
    $$('#A_side_block_MediaSideHTML div.content div.raw div').hide();
  }
}

var top_path = {winning: "experiences", career: "advice"};
function init_top() {
  $$('div.select_lang ul li a').click( function() {
    var e = $$(this);
    var lang = e.attr("class").replace(/.*\s+(lang_[^\s]+).*/, function(m, m1) { return m1});
    var top = e.parents('div')[2].id.substr(5);
    $$.cookie('lang', lang, {path:"/"});
    location.href ="/" + top_path[top] + "/";
  });
  
  // $$("div.ticker ul").liScroll();
}


var WCentries = {
  count : {
    lang_ja_en : 0,
    lang_ja : 0,
    lang_en : 0
  },
  categories : {},
  current_cat : 'all'
};

function update_lang(lang, init) {
  $$('div#language ul li div.btn_nav').each( function() {
    var e = $$(this);
    
    var l = $$.grep(e.find('a').attr('class').split(' '), function(a){ return (a.indexOf('lang_') != -1)})[0];
    var count = 0;
    if(WCentries.current_cat == 'all') {
      count = WCentries.count[l];
    } else {
      count = WCentries.categories[WCentries.current_cat][l];
    }
    e.find('a, span').each(function() { var e=$(this); e.html( e.html().replace(/\(\d+\)/, "("+count+")") ); });
    
    
    if(count > 0) {
      e.find('span').removeClass(l+'_none');
    } else {
      e.find('span').addClass(l+'_none');
    }
    
    if(count == 0 || e.find('span').hasClass(lang)) {
      e.find('span').show();
      e.find('a').hide();
    } else {
      e.find('span').hide();
      e.find('a').css('display', '');
    }
  });
}

function update_count(lang, init) {
  $$('div#sort_'+entry_top+' li').each(function(v) {
    var e = $$(this);
    if(e.attr('id').indexOf("li_") != -1) {
      var cat = e.attr('id').substr(3);
      if(WCentries.categories[cat] && WCentries.categories[cat][lang] > 0) {
        e.find('a').show();
        e.find('span').hide();
        var ea = $$(e.find('a').get(0));;
        ea.html( ea.html().replace(/\(\d+\)/, "("+WCentries.categories[cat][lang]+")") );
        if(init) ea.click(function() {
          entry_filter(cat);
          lang = get_lang();
          update_lang(lang);
          update_count(lang);
          return false;
        });
      } else {
        // e.find('a,span').each( function() { $$(this).html( $$(this).html().replace(/\(\d+\)/, "(0)") ) } );
        e.find('a').hide();
        e.find('span').show();
      }
    } else {
      if(init) e.find('a').click(function() {
        entry_filter("all");
        lang = get_lang();
        update_lang(lang);
        update_count(lang);
         return false;
      });
    }
  });
}

function load_categories() {
  var categories = $$.parseJSON($$.cookie('categories_'+entry_top));
  if(categories) {
    WCentries.categories = categories;
    update_count(get_lang());
  } else {
    $$('div#sort_'+entry_top+' li').each(function(v) {
      var e = $$(this);
      if(e.attr('id').indexOf("li_") != -1) {
        var cat = e.attr('id').substr(3);
        var ea = $$(e.find('a').get(0));;
        ea.html( ea.html().replace(/\(\d+\)/, "") );
      }
    });
  }
}

function init_entry() {
  var lang = get_lang();
  
  $$('div#language div.btn_nav a').click( function() {
    var l = $$.grep($$(this).attr('class').split(' '), function(a){ return (a.indexOf('lang_') != -1)})[0];
    $$.cookie('lang', l, {path:"/"});
    entry_filter();
    l = get_lang();
    update_lang(l);
    update_count(l);
  });

  $$('div.article').each(function(v) {
    var e = $$(this);
    var obj = [];
    
    WCentries.count.lang_ja_en++;
    if(e.hasClass('lang_ja')) WCentries.count.lang_ja++
    if(e.hasClass('lang_en')) WCentries.count.lang_en++
    
    var lastcat = null;
    $.each( e.attr('class').split(' '), function(i, v) {
      if(v.match(/(article|clearfix)/) == null) {
        if(v.match(/(lang_ja|lang_en)/) == null) {
          if(v != lastcat) {
            lastcat = v;
            if(!WCentries.categories[v]) WCentries.categories[v] = {lang_ja_en:0, lang_ja:0, lang_en:0};
            WCentries.categories[v]['lang_ja_en']++;
            obj.push(WCentries.categories[v]);
          }
        } else {
          for(var i=0; i < obj.length ; i++) obj[i][v]++;
        }
      }
    });
  });
  
  $$.cookie('categories_'+entry_top, $$.toJSON(WCentries.categories), {path:"/"});
  
  var hash = location.hash.substr(1);
  if(WCentries.categories[hash] && WCentries.categories[hash][lang]) {
    entry_filter(hash);
  } else {
    entry_filter('all');
  }
  
  lang = get_lang();
  update_lang(lang, true);
  update_count(lang, true);
}

function entry_filter(cat) {
  if(cat) {
    if(WCentries.current_cat == "all")  $$('div#sort_'+entry_top+' li').first().removeClass('selected');
    else $$('div#sort_'+entry_top+' li').filter('li#li_'+WCentries.current_cat).removeClass('selected');
    if(cat == "all")  $$('div#sort_'+entry_top+' li').first().addClass('selected');
    else $$('div#sort_'+entry_top+' li').filter('li#li_'+cat).addClass('selected');

    WCentries.current_cat = cat;
  } else {
    cat = WCentries.current_cat;
  }
  
  var lang = get_lang();
  if((cat == "all" && WCentries.count[lang] == 0) || (cat != "all" && (!WCentries.categories[cat] || WCentries.categories[cat][lang] == 0)) ) {
    lang = "lang_ja_en";
    $$.cookie('lang', lang, {path:"/"});
  }
  var lang_class = (lang == "lang_ja_en") ? '' : '.'+get_lang();
  $$('div.article, div.topic_title, div.topic_sub_title').hide();
  if(cat != "all") {
    $$('div.article.'+cat+lang_class).show();
    var e = $$('div#ttl_'+cat);
    e.show();
    if(e.hasClass('topic_sub_title')) {
      e.prevAll('div.topic_title').first().show();
    } else {
      disp_topic(e.nextUntil('div.topic_title').filter('div.topic_sub_title'));
    }
    location.hash = "#"+cat;
  } else {
    $$('div.article'+lang_class).show();
    disp_topic($$('div.topic_title, div.topic_sub_title'))
    location.hash = "#";
  }
}

function disp_topic(elms) {
  elms.each( function() {
    var cat = this.id.substr(4);
    if(WCentries.categories[cat][get_lang()] > 0) $$(this).show();
  });
}

function get_lang() {
  return $$.cookie('lang') || 'lang_ja_en';
}

var jt = {
  tables : [],
  categories : {},
  current_cat : null,
  current_page : 0,
  page_num : 0,
  total_count : 0
};

function init_jobs_table() {
  $$('div.article').each(function(v) {
    var t = this;
    $.each( $$(this).attr('class').split(' '), function(vv) {
      if(this.match(/o\d+/) != null) {
        var o = parseInt(this.substr(1));
        if(jt.tables[o] != null) jt.tables[o].push(t); else jt.tables[o] = [t];
      } else if(this != 'article') {
        jt.categories[this] = (jt.categories[this]==undefined)? 1 : jt.categories[this]+1;
      }
    });
  });
  
  $$('div#grad_2011 div.grad_btn span').html( $$('div#grad_2011 div.grad_btn span').html().replace(/\(\)/, "(" + $$('div.article').length + "社)") );
  
  $$('div#sort_jobs li').each(function(v) {
    var e = $$(this);
    if(e.attr('id').indexOf("cat-") != -1) {
      var cat = e.attr('id').substr(4);
      if(cat == "all" || jt.categories[cat] > 0) {
        e.find('a').show();
        e.find('span').hide();
        if(cat != "all") e.html( e.html().replace(/ \(\d+\)/g, " ("+jt.categories[cat]+")") );
        var ea = $$(e.find('a').get(0));;
        ea.click(function() {
          $$('div#sort_jobs li').filter('li#cat-'+jt.current_cat).removeClass('selected');
          $$(this).parent().addClass('selected');
          jobs_filter($$(this).parent().attr('id').substr(4));
        });
      } else {
        e.find('a,span').each( function() { $(this).html( $(this).html().replace(/\(\d+\)/, "(0)") ) } );
        e.find('a').hide();
        e.find('span').show();
      }
    }
  });
  $$('div#sort_jobs li').filter('li#cat-all').addClass('selected');
  
  /*
  $$('#E_wrap div.entry_html_html').empty();
  $.each(jt.tables, function(k) {
    if(jt.tables[k]) {
      var t = jt.tables[k];
      while (t.length > 0) {
        var n = Math.floor(Math.random()*t.length);
        var e = t[n];
        t = t.slice(0, Math.max(0, n)).concat( t.slice(n+1) );
        $$('#E_wrap div.entry_html_html').append( e );
      }
    }
  });
  */
  
  jobs_filter('all');
}


function jobs_filter(cat) {
  if(jt.current_cat != cat) {
    $$('#cat-' + jt.current_cat + ' > span').hide();
    $$('#cat-' + jt.current_cat + ' > a').show();
    $$('#cat-' + cat + ' > span').show();
    $$('#cat-' + cat + ' > a').hide();
  }

  jt.current_cat = cat;
  jt.current_page = 0;
  
  $$('#main_title h3').html("外国人 留学生歓迎の求人 / JOBS in Japan &gt; " + $$('div#sort_jobs li#cat-' + jt.current_cat + ' > span').text().replace(/\(\d+\)/, " / ") );
  
  var q = "div.article" + ((jt.current_cat != "all") ? "." + jt.current_cat : "");
  jt.total_count = $$(q).length;
  
  $$('#pager p').html('Displaying 1-' + Math.min(jt.total_count, 10) + ' of ' + jt.total_count);
  
  if(jt.total_count > 10) {
    jt.page_num = Math.ceil(jt.total_count / 10);
    $$('#pager ul.pager').show();
    $$('#pager ul.pager li.jump').remove();
    for(var i=0 ; i < jt.page_num ; i++ ){
      if(i>0) {
        $$('#pager ul li#navi-next').before('<li id="pj'+i+'" class="jump"><em style="display:none;" >'+(i+1)+'</em><a href="javascript:void(0)" onclick="jobs_paging_jump(' +i+ '); return false;">' + (i+1) + '</a></li>');
      } else {
        $$('#pager ul li#navi-next').before('<li id="pj'+i+'" class="jump"><em>'+(i+1)+'</em><a style="display:none;" href="javascript:void(0)" onclick="jobs_paging_jump(' +i+ '); return false;">' + (i+1) + '</a></li>');
      }
    }
  } else {
    $$('#pager ul.pager').hide();
  }

  jobs_paging_jump(jt.current_page);
}

function jobs_paging_jump(index) {
  if(jt.current_page != index) {
    $$('#pj' + jt.current_page + " > em").hide();
    $$('#pj' + jt.current_page + " > a").show();
    $$('#pj' + index + " > em").show();
    $$('#pj' + index + " > a").hide();
  }
  if(index > 0) {
    $$('#navi-prev em').hide();
    $$('#navi-prev a').show();
  } else {
    $$('#navi-prev em').show();
    $$('#navi-prev a').hide();
  }
  if(index < jt.page_num-1) {
    $$('#navi-next em').hide();
    $$('#navi-next a').show();
  } else {
    $$('#navi-next em').show();
    $$('#navi-next a').hide();
  }
  
  if(jt.total_count > 0) {
    $$('#pager p').show().html('Displaying ' + (index*10 + 1) + '-' + Math.min( (index*10+10), jt.total_count) + ' of ' + jt.total_count);
  } else {
    $$('#pager p').hide()
  }
  $$('div.article').hide();
  var q = "div.article" + ((jt.current_cat != "all") ? "." + jt.current_cat : "");
  if(index > 0) {
    $$(q+':gt(' + (index*10-1) + ')').show();
  } else {
    $$(q).show();
  }
  $$(q+':gt(' + (index*10+9) + ')').hide();
  jt.current_page = index;
  
  window.scrollTo(0,0);
}

