/**
 * Script for BBS (jQuery)
 * 
 */

//global valiable
var BBS_OPEN_IMG_SRC = '/img/all/bbs_icon_open.gif';
var BBS_CLOSE_IMG_SRC = '/img/all/bbs_icon_close.gif';
var BBS_HIDDEN_TITLE_BAR_PADDING_BOTTOM = '1px';
var BBS_SHOWN_TITLE_BAR_PADDING_BOTTOM = '0';
var BBS_COOKIE_HIDE_FLAG_NAME = 'bbs_hide';
var BBS_COOKIE_FLAG_EFFECTIVE_DAYS = 36500;
var BBS_COOKIE_FLAG_PATH = '/';

//core function
var dom = new Object();
dom.core = new Object();
//get class node array object
dom.core.getElementByClassName = function(elm, searchClass, tag) {
  var returnArr = [];
  tag = tag || '*';
  var elms = elm.getElementsByTagName(tag);
  var pattern = new RegExp('(^|\\s)'+searchClass+'(\\s|$)');
  for (var i = 0; i < elms.length; i++) {
    if (pattern.test(elms[i].className)) {
      returnArr.push(elms[i]);
    }
  }
  return returnArr;
}
//get only text
dom.core.getTextContent = function(node) {
  var text = "";
  if(! node) { return text; }
  if(typeof node.textContent != "undefined") {
    text = node.textContent;
  } else if(typeof node.innerText != "undefined") {
    text = node.innerText;
  } else if( node.hasChildNodes() ) {
    for (var i = node.childNodes.length; i--;) {
      var o = node.childNodes.item(i);
      if(o.nodeType == 3) {
        text = o.nodeValue + text;
      } else {
        text = dom.core.getTextContent(o) + text;
      }
    }
  }
  return text;
}

//cookie function
var cookie = new Object();
//set cookie
cookie.set = function(cookie_name,cookie_value,effective_days,cookie_path) {
  var cookie_name = cookie_name;
  var bbs_cookie_display_flag = cookie_value;
  var exp = new Date();
  exp.setTime(exp.getTime()+1000*60*60*24*effective_days);
  ckstr = escape(bbs_cookie_display_flag);
  document.cookie = cookie_name + '=' + ckstr + '; expires=' + exp.toGMTString() + '; path=' + cookie_path;
}
//get cookie
cookie.get = function(cookie_name) {
  var cklng = document.cookie.length;
  var ckary = document.cookie.split('; ');
  var ckstr = '';
  var cookie_value = '';
  var cookie_name_length = cookie_name.length + 1;
  var i = 0;
  while (ckary[i]) {
    if (ckary[i].substr(0,cookie_name_length) == cookie_name + '=') {
      ckstr = unescape(ckary[i]);
      ckstr = ckstr.split('=');
      if (ckstr[1]) {
        cookie_value = 1;
      }
      break;
    }
    i++;
  }
  return cookie_value;
}

/**
 * set onload event
 * 
 */
$(document).ready(function() {
  if (!$('#bbs_entry_flg')[0].value) {
    return false;
  }
  var bbs_disp_default_flag = 1; //default show
  var bbs_post_flag = null;
  //check cookie flag
  if (cookie.get(BBS_COOKIE_HIDE_FLAG_NAME)) {
    //hide
    bbs_disp_default_flag = '';
    if ($('#bbs_disp_default')[0].value) {
      //serach
      bbs_disp_default_flag = 1;
    } else {
      if ($('#bbs_post_flag')[0].value) {
        //post message
        bbs_post_flag = 1;
      }
    }
  }
  //constant
  var res_base_url = $('#res_base_url')[0].value;
  var bbs_all_open_btn_value = $('#bbs_open_all_contents')[0].value;
  var bbs_all_close_btn_value = $('#bbs_close_all_contents')[0].value;
  var bbs_one_open_btn_value = $('#bbs_open_one_content')[0].value;
  var bbs_one_close_btn_value = $('#bbs_close_one_content')[0].value;
  //object
  var aObj = $('#bbs_disp_flag_button')[0];
  var aSpanObj = aObj.getElementsByTagName('span')[0];
  var flag = $('#bbs_disp_flag')[0];
  flag.value = bbs_disp_default_flag;
  var bbslist = $('.bbs_table_middle');
  var ua=navigator.userAgent;
  //set hide default
  if (!bbs_disp_default_flag) {
    //create button default
    var oldTextNode = aSpanObj.firstChild;
    var newTextNode = document.createTextNode(bbs_all_open_btn_value);
    aSpanObj.replaceChild(newTextNode, oldTextNode);
    aObj.getElementsByTagName('img')[0].src = res_base_url + BBS_OPEN_IMG_SRC;
    //set display flag
    $("#bbs_disp_flag_button")[0].value = bbs_all_open_btn_value;
    $('.bbs_title_bar').each(function() {
      this.style.paddingBottom = BBS_HIDDEN_TITLE_BAR_PADDING_BOTTOM;
    });
    $('.bbs_text_block').hide(); //default hide
  }
  var i = 0; //for post_flag
  //set click event
  $(bbslist).each(function() {
    //default of one group button
    var imgObj = this.getElementsByTagName('div')[0].getElementsByTagName('img')[0];
    //set hide default
    if (!bbs_disp_default_flag) {
      imgObj.src = res_base_url + BBS_OPEN_IMG_SRC;
      imgObj.alt = bbs_one_open_btn_value;
    }
    //check post flag
    if (bbs_post_flag && i == 0) {
      imgObj.src = res_base_url + BBS_CLOSE_IMG_SRC;
      imgObj.alt = bbs_one_close_btn_value;
      var bbs_table_middle_post = imgObj.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode;
      var bbs_text_block_post = dom.core.getElementByClassName(bbs_table_middle_post, 'bbs_text_block', 'div');
      $(bbs_text_block_post).each(function() {
        $(this).show();
      });
    }
    //click event of one group button
    $(imgObj).click(function() {
      var bbs_table_middle = this.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode;
      var bbs_text_block = dom.core.getElementByClassName(bbs_table_middle, 'bbs_text_block', 'div');
      var display_flag = bbs_text_block[0].style.display;
      var bbs_table_top_elm = bbs_table_middle.parentNode.getElementsByTagName('div')[0];
      //set motion
      $(bbs_text_block).each(function() {
        $(this).slideToggle('fast'); //hide or show motion
      });
      //change image button src
      if (display_flag == 'none') {
        imgObj.src = res_base_url + BBS_CLOSE_IMG_SRC;
        imgObj.alt = bbs_one_close_btn_value;
      } else {
        imgObj.src = res_base_url + BBS_OPEN_IMG_SRC;
        imgObj.alt = bbs_one_open_btn_value;
      }
    });
    i++;
  });
  //set click event of changing all-change-button display & value
  $('#bbs_disp_flag_button').click(function() {
    if (flag.value == 1) {
      //hide
      $('.bbs_title_bar').each(function() {
        this.style.paddingBottom = BBS_HIDDEN_TITLE_BAR_PADDING_BOTTOM;
      });
      $('.bbs_text_block').hide(); //hide motion
      $('.bbs_open_close_btn').each(function() {
        this.src = res_base_url + BBS_OPEN_IMG_SRC;
        this.alt = bbs_one_open_btn_value;
      });
      flag.value = null;
      $("#bbs_disp_flag_button")[0].value = bbs_all_open_btn_value;
      //set cookie of bbs display flag
      cookie.set(BBS_COOKIE_HIDE_FLAG_NAME, 1, BBS_COOKIE_FLAG_EFFECTIVE_DAYS, BBS_COOKIE_FLAG_PATH);
      //make text node
      var oldTextNode = aSpanObj.firstChild;
      var newTextNode = document.createTextNode(bbs_all_open_btn_value);
      aObj.getElementsByTagName('img')[0].src = res_base_url + BBS_OPEN_IMG_SRC;
    } else {
      //show
      $('.bbs_title_bar').each(function() {
        if (ua.indexOf("Safari")>-1) {
          //for safari
          this.style.paddingBottom = BBS_SHOWN_TITLE_BAR_PADDING_BOTTOM;
        } else {
          //other browser
          this.removeAttribute('style');
        }
      });
      $('.bbs_text_block').show(); //show motion
      $('.bbs_open_close_btn').each(function() {
        this.src = res_base_url + BBS_CLOSE_IMG_SRC;
        this.alt = bbs_one_close_btn_value;
      });
      flag.value = 1;
      $("#bbs_disp_flag_button")[0].value = bbs_all_close_btn_value;
      //set cookie of bbs display flag
      cookie.set(BBS_COOKIE_HIDE_FLAG_NAME, '', BBS_COOKIE_FLAG_EFFECTIVE_DAYS, BBS_COOKIE_FLAG_PATH);
      //make text node
      var oldTextNode = aSpanObj.firstChild;
      var newTextNode = document.createTextNode(bbs_all_close_btn_value);
      aObj.getElementsByTagName('img')[0].src = res_base_url + BBS_CLOSE_IMG_SRC;
    }
    aSpanObj.replaceChild(newTextNode, oldTextNode);
    return false; //for A tag invalidation
  });
});
