//ユーティリティ
function getBody(iname){
 if(document.all){
  return(document.all(iname))
 } else if(document.getElementById){
  return(document.getElementById(iname))
 }
}

function getPosX(obj){
 var x=0;
 while(obj){
  x += obj.offsetLeft;
  obj = obj.offsetParent;
 }
 return(x);
}

function getPosY(obj){
 var y=0;
 while(obj){
  y += obj.offsetTop;
  obj = obj.offsetParent;
 }
 return(y);
}

function url2path(url){
 var p1, p2;
 p1 = url.indexOf('?');
 if (p1 >= 0)
  url = url.substr(0, p1);
 p1 = url.indexOf('#');
 if (p1 >= 0)
  url = url.substr(0, p1);

 if (url.substr(0,1) == '/') return(url);
 p1 = url.indexOf('://');
 if (p1 < 0) return('');
 p2 = url.substr(p1+3).indexOf('/');
 if (p2 < 0) return('');
 return(url.substr(p1+p2+3));
}

function getopt(s, name){
 var i;
 if (s.indexOf('#') >= 0)
  s = s.substring(0, s.indexOf('#'));
 if (s = s.split('?')[1]){
  var opts = new Array();
  opts = s.split('&');
  for(i = 0; i < opts.length; i++){
   if (opts[i].substring(0, name.length + 1).toLowerCase() == (name.toLowerCase() + '=')){
    return(opts[i].substring(name.length + 1));
   }
  }
 }
 return('');
}

function entopt(s, name, value){
 var opt, i, flg, aname;
 flg = true;
 if (s.indexOf('#') >= 0){
  aname= s.substring(s.indexOf('#') + 1, s.length);
  s = s.substring(0, s.indexOf('#'));
 }else{
  aname = '';
 }
 if (opt = s.split('?')[1]){
  var opts = new Array();
  opts = opt.split('&');
  for(i = 0; i < opts.length; i++){
   if (opts[i].match(new RegExp('^' + name + '=', 'i'))){
    opts[i] = name + '=' + value;
    flg = false;
    break;
   }
  }
  s = s.split('?')[0] + '?' + opts.join('&');
  if (flg){
   s = s + '&' + name + '=' + value;
  }
 }else{
  s = s + '?' + name + '=' + value;
 }
 if (aname == '')
  return(s);
 else
  return(s + '#' + aname);
}


function delopt(s, name){
 var urls, opts, aname;
 if (s.indexOf('#') >= 0){
  aname= s.substring(s.indexOf('#') + 1, s.length);
  s = s.substring(0, s.indexOf('#'));
 }else{
  aname = '';
 }
 if (s.indexOf('?') >= 0){
  urls = s.split('?');
  opts = urls[1].split('&');
  for(i=opts.length -1; i>=0; i--){
   if (opts[i].substring(0, name.length + 1) == name + '='){
    opts.splice(i, 1);
   }
  }
  s = urls[0] + '?' + opts.join('&');
 }
 if (aname == '')
  return(s);
 else
  return(s + '#' + aname);
}


function isFuture(pubdate){
 var d = new Date();
 today = new Date((d.getYear() > 1900 ? d.getYear() : d.getYear() + 1900) , d.getMonth(), d.getDate());
 tgday = new Date(pubdate.substr(0,4), pubdate.substr(5,2)-1, pubdate.substr(8,2));
  return(tgday > today);
}

function callJSONP(Url){
 var script = document.createElement('script');
 script.src = Url;
 script.charset = "euc-jp";
 document.body.appendChild(script);
}

function eatCookie(key){
 var dc, cs, i, p;
 dc = document.cookie;
 cs = dc.split(/; ?/);
 for(i=0; i<cs.length; i++){
  p = cs[i].indexOf(key + '=');
  if (p == 0){
   return(cs[i].substr(key.length + 1));
  }
 }
 return('');
}

function bakeCookie(name,value,term){
 var d = term ? term : 30;
 expire = new Date();
 expire.setTime(expire.getTime()+(24*60*60*d*1000));
 document.cookie =  name + "=" + encodeURIComponent(value) + "; domain=itpro.nikkeibp.co.jp; path=/; expires="+expire.toGMTString();
}

function throwCookies(name){
 var d = new Date();
 d.setTime(d.getTime() -1);
 document.cookie = name + '=;path=/; domain=itpro.nikkeibp.co.jp; expires=' + d.toGMTString();
 document.cookie = name + '=;path=/; domain=.itpro.nikkeibp.co.jp; expires=' + d.toGMTString();
 document.cookie = name + '=;path=/; expires=' + d.toGMTString();
}

function removeAllCookies(){
var i, cs;
 cs = document.cookie.split(/; ?/);
 for(i=0; i<cs.length; i++){
  if (cs[i].match(/^(.+)=.+/)){
   if (RegExp.$1 != 'rejectCookie')
    throwCookies(RegExp.$1);
  }
 }
}

function loginWindow(){
 if (!getBody('loginBox'))
  return;
 var html = '';
 if (eatCookie('ITPRO_MB') == ''){
  html = loginWindowMessage('no-al');
 }else if(eatCookie('MyITproName') == ''){
  if(eatCookie('NoMyITproName') == ''){
   callJSONP('http://itpro.nikkeibp.co.jp/myitpro/auth/get_nickname?jsonp=cb_loginWindow');
  }else{
   html = loginWindowMessage('not-regist');
  }
 }else{
  html = loginWindowMessage('login', decodeURIComponent(eatCookie('MyITproName')));
 }
 getBody('loginBox').innerHTML = html;
}

function cb_loginWindow(d){
 var html;
 if (d.status == 'login'){
  bakeCookie('MyITproName', d.nickname);
  html = loginWindowMessage('login', d.nickname);
 }else if (d.status == 'not-regist'){
  bakeCookie('NoMyITproName', '1', 1);
  html = loginWindowMessage('not-regist');
 }else if (d.status == 'no-al' || d.status == 'invalid-al'){
  removeAllCookies();
  html = loginWindowMessage('no-al');
 }
 getBody('loginBox').innerHTML = html;
}

function loginWindowMessage(t, hn){
 var html = '';
 if (t == 'not-regist'){
  html += '<h4 class="notlogin">MyITproに未登録です</h4>';
  html += '<p class="mini">MyITproをご利用いただくためには表示名（ニックネーム）の登録が必要です。</p>';
  html += '<p class="loginout"><a href="http://itpro.nikkeibp.co.jp/login/logout.jsp" onclick="return(!window.open(\'http://itpro.nikkeibp.co.jp/login/logout.jsp?r\',\'\',\'width=600,height=700,scrollbars=yes,resizable=yes\'))">＞＞ログアウト</a></p>';
  html += '<div class="btn3"><a href="https://itpro.nikkeibp.co.jp/myitpro/">ニックネーム登録へ</a></div>';
 }else if (t == 'no-al'){
  html += '<h4 class="notlogin">ログインしていません</h4>';
  html += '<p class="mini">';
  html += '・ITpro会員の方はログインして下さい<br>';
  html += '・ITpro会員でない方は会員登録をお願いします<br>';
  html += '</p>';
  html += '<div class="btn1L"><a href="https://itpro.nikkeibp.co.jp/login/login.jsp" target="_blank" onclick="return(!window.open(\'https://itpro.nikkeibp.co.jp/login/login.jsp?URL=http%3A%2F%2Fitpro.nikkeibp.co.jp%2Fauth%2Fsuccess.html\',\'\',\'width=600,height=700,scrollbars=yes,resizable=yes\'))">ログイン</a></div>';
  html += '<div class="btn2L"><a href="/aboutitpro/">ITpro会員の<br>メリットとは</a></div>';
 }else if (t == 'login'){
  html += '<h4 class="login">ようこそ' + hn + 'さん</h4>';
  html += '<p class="mini">';
  if (eatCookie('loginPoint') == ''){
   callJSONP('http://ppoint.nikkeibp.co.jp/pt/pt.ac?r=0&f=cbLoginWindowPoint');
   html += '<span id="LoginWinLoginPoint"></span><br>';
  }else{
   if (eatCookie('loginPoint') == '0')
    html += '・現在有効ポイントはありません<br>';
   else
    html += '・現在，有効ポイントが' + eatCookie('loginPoint') + 'あります<br>';
  }
  if (eatCookie('loginEnq') == ''){
   callJSONP('http://panel.nikkeibp.co.jp/aidaws/monitor-mypage/itpro?jsonpid=cb_loginWindowAida&latest=0&outputEncoding=EUC-JP');
   html += '<span id="LoginWinLoginAida"></span><br>';
  }else{
   if (eatCookie('loginEnq') == '0')
    html += '・回答できるアンケートはありません<br>';
   else
    html += '・回答できるアンケートが' + eatCookie('loginEnq') + '件あります<br>';
  }
  html += '</p>';
  html += '<p class="loginout"><a href="http://itpro.nikkeibp.co.jp/login/logout.jsp" onclick="return(!window.open(\'http://itpro.nikkeibp.co.jp/login/logout.jsp?r\',\'\',\'width=600,height=700,scrollbars=yes,resizable=yes\'))">&gt;&gt;ログアウト</a></p>';
  html += '<div class="btn1L"><a href="/myitpro/">MyITpro</a></div>';
  html += '<div class="btn2L"><a href="/myitpro/auth/">ニックネームの変更</a></div>';
 }
 return(html);
}

function cbLoginWindowPoint(d){
 var html;
 if (d.rc == 0){
  if (d.point == 0)
   html = '・現在有効ポイントはありません';
  else
   html = '・現在，有効ポイントが' + d.point + 'あります';
  bakeCookie('loginPoint', d.point, 3);
 }else{
  html = '・有効ポイントは確認できませんでした';
 }
 getBody('LoginWinLoginPoint').innerHTML = html;
}

function cb_loginWindowAida(d){
 var html, i, count, quesnum;
 if (d.return_code == 0){
  if (!d.questions.question || (d.questions.question.length == 0)){
   quesnum = 0;
   count = 0;
  }else{
   quesnum = d.questions.question.length;
   count = 0;
   for(i=0; i<quesnum; i++){
    if (d.questions.question[i].answer_status == 3)
     count++;
   }
  }
  if (count == 0)
   html = '・回答できるアンケートはありません';
  else
   html = '・回答できるアンケートが' + count.toString() + '件あります';
  bakeCookie('loginEnq', count.toString(), 3);
 }else{
  html = '・回答できるアンケートは確認できませんでした';
 }
 getBody('LoginWinLoginAida').innerHTML = html;
}

//拡張
function addOnload2(){
 if (typeof(document.onload2) == 'undefined'){
  document.onload2 = {};
  document.onload2.add = function(f){
   if (document.onload2.load)
    return(f());
   if(typeof(document.onload2.funcs) == 'undefined' || document.onload2.funcs.length == 0){
    document.onload2.funcs = [f];
   }else{
    document.onload2.funcs.push(f);
   }
   if (document.onload2.running){
    return;
   }else{
    document.onload2.running = function(){
     document.onload2.load = true;
     while(document.onload2.funcs.length > 0){
      document.onload2.funcs[0]();
      document.onload2.funcs.shift();
     }
     document.onload2.running = null;
    }
   }
    //mac safari
   if(/WebKit/i.test(navigator.userAgent)){
    var tid = setInterval(function(){
     if (/loaded|complete/.test(document.readyState)) {
      clearInterval(tid);
      document.onload2.running();
     }
    }, 10);
   //Firefox
   }else if (window.addEventListener){
    document.addEventListener("DOMContentLoaded", document.onload2.running, false);
   //MSIE
   }else if(document.readyState && !!(window.attachEvent && !window.opera)){
    document.write('<script defer src="javascript:void(0)" onreadystatechange="if (this.readyState == \'complete\')  document.onload2.running();"><\/script>');
   //その他
   }else{
    if (window.onload){
     if (window.attachEvent){
      window.attachEvent('onload', document.onload2.running);
     }else if (window.addEventListener){
      window.addEventListener('load', document.onload2.running, true);
     }else{
      window.onload = document.onload2.running;
     }
    }else{
     window.onload = document.onload2.running;
    }
   }
  }
 }
}

Array.prototype.find = function(s){
 var i;
 for(i=0; i<this.length; i++)
  if (this[i] == s) return(i);
 return(-1);
}

Number.prototype.toStringNum = function(n){
 var s, i;
 s = '';
 for(i=0; i<n; i++){
  s += '0';
 }
 s += this.toString();
 return(s.substr(s.length - n, n));
}

Date.prototype.format = function(s){
 return(s.replace(/yyyy/, this.getFullYear()).replace(/MM/, (this.getMonth() + 1).toStringNum(2)).replace(/M/, (this.getMonth() + 1).toString()).replace(/dd/, (this.getDate()).toStringNum(2)).replace(/d/, (this.getDate()).toString()).replace(/hh/, (this.getHours()).toStringNum(2)).replace(/mm/, (this.getMinutes()).toStringNum(2)).replace(/ss/, (this.getSeconds ()).toStringNum(2)));
}

navigator.getVersion = function(){
 if(navigator.appName == 'Microsoft Internet Explorer'){
  if (navigator.appVersion.match(/MSIE (\d)/)){
   return(RegExp.$1);
  }else{
   return(0);
  }
 }else{
  if (navigator.appVersion.match(/^(\d)/)){
   return(RegExp.$1);
  }else{
   return(0);
  }
 }
 return(0);
}

addOnload2();
document.onload2.add(loginWindow);
