/* /js/format.js */
/* by REXEF Inc. 2008/01/03 */


var pre = new Image;
pre.src = '/img/format/bg_body.gif';

var cook = {
  key : 'rexef-fontSize',   // cookie name.
  exp : 30                  // days of cookie expires.
}

var env = getENV();



function $(id){   // get object.
  return (!id)? document.body: document.getElementById(id);
}

function $$(id,element){   // get tags.
  return (!id)? document.getElementsByTagName(element): $(id).getElementsByTagName(element);
}

function getENV(){   // get OS ans Browser version.
  var ua = navigator.userAgent.toLowerCase();
  var env = new Object;
  env.ie = (!window.opera && $m('msie') != -1)? $c($m('msie ')+5): 0;
  env.fx = ($m('firefox/') != -1)? $c($m('firefox/')+8): 0;
  env.nn = ($m('netscape/') != -1)? $c($m('netscape/')+9): 0;
  env.op = ($m('opera/') != -1)? $c($m('opera/')+6): 0;
  env.sa = ($m('safari') != -1 && $m('version/') != -1)? $c($m('version/')+8): 0;
  env.win = ($m('windows') != -1)? 1: 0;
  env.mac = ($m('mac') != -1)? 1: 0;
  env.std = (document.compatMode == 'CSS1Compat')? 1: 0;
  return env;
  function $m(str){
    return Number(ua.indexOf(str));
  }
  function $c(num){
    return Number(ua.charAt(num));
  }
}

function setOnload(func){   // multi onload event function.
  (window.addEventListener)? window.addEventListener('load',func,false):   // for W3C DOM
  (window.attachEvent)? window.attachEvent('onload',func):   // for IE
  window.onload = func;
}

function getCookie(key){   // get cookie.
  var cook = document.cookie;
  var pos = cook.indexOf(key + '=');
  if(pos == -1){
    setCookie(key,'');
    return '';
  }else{
    cook = cook.substring(pos + key.length + 1,cook.length);
    cook = (cook.indexOf(';') != -1)? cook.substring(0,cook.indexOf(';')): cook;
    return cook;
  }
}

function setCookie(key,value){   // set cookie.
  var exp = new Date();
  exp.setTime(exp.getTime() + cook.exp * 24*60*60*1000);
  document.cookie = key + '=' + value + ';path=/;expires=' + exp.toGMTString();
}

function setFontCSS(){   // write <link> for font-size CSS.
  var cookie = getCookie(cook.key);
  if(!cookie) cookie = 'small';
  var path = (env.mac)? '/css/mac-': '/css/';
  setLinkTag('stylesheet',cookie);
  var fontSize = new Array('small','middle','large');
  for(var i=0;i<fontSize.length;i++){
    if(fontSize[i] != cookie) setLinkTag('alternate stylesheet',fontSize[i]);
  }
  function setLinkTag(rel,size){
    document.write('<link rel="' + rel + '" type="text/css" href="' + path + size + '.css" title="' + size + '" />');
  }
}

function setFontSize(){   // set font-size.
  var cookie = getCookie(cook.key);
  if(!cookie) cookie = 'small';
  chgFontSize(cookie);
}

function setClass(obj,name){   // set class name.
  if(obj.getAttribute('className')) obj.setAttribute('className',name);
  else if(obj.getAttribute('class')) obj.setAttribute('class',name);
}

function setInitTool(){   // set font-size tool.
  var obj = $('tab-0');
  var html = '<span class="size"></span>';
  html += '<a id="small" class="off" title="\u5C0F\u3055\u306A\u6587\u5B57"></a>';
  html += '<a id="middle" class="off" title="\u666E\u901A\u30B5\u30A4\u30BA"></a>';
  html += '<a id="large" class="off" title="\u5927\u304D\u306A\u6587\u5B57"></a>';
  obj.innerHTML = html;
  var a = $$('tab-0','a');
  var cookie = getCookie(cook.key);
  for(var i=0;i<a.length;i++){
    a[i].onclick = function(){
      chgFontSize(this.id);
    };
    if(a[i].id == cookie) setClass(a[i],'on');
  }
}

function chgFontSize(size){   // change font-size.
  var link = $$('','link');
  for(var i=0;i<link.length;i++){
    if(link[i].getAttribute('rel') && link[i].getAttribute('rel').indexOf('stylesheet') != -1 && link[i].getAttribute('title')){
      if(link[i].getAttribute('title') == size) link[i].disabled = false;
      else link[i].disabled = true;
    }
  }
  setCookie(cook.key,size);
  try{
    var a = $$('tab-0','a');
    for(var i=0;i<a.length;i++){
      (a[i].id == size)? setClass(a[i],'on'): setClass(a[i],'off');
    }
  }catch(e){}
}

var chkPNG = {   // PNG to alpha for WinIE5.x~6.0.
  CSS: function() {   // 'background' CSS property only.
    if(env.mac || env.ie > 6 || env.ie < 5) return;
    var link = $$('','link');
    var index = 0;
    for(var i=0;i<link.length;i++){
      if(!link[i].getAttribute('rel').match(/stylesheet/i)) continue;
      var rule = document.styleSheets[index].rules;
      for(var j=0;j<rule.length;j++) {
        var png = rule[j].style['background'];
        if(!png.match(/\.png/i)) continue;
        png = png.substring(png.indexOf('url(')+4,png.length);
        png = png.substring(0,png.indexOf(')'));
        rule[j].style['filter'] = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=' + png + ',sizingMethod=crop)';
        rule[j].style['background'] = '';
      }
      index++;
    }
  },
  HTML: function(){   // '<img>' elements only.
    if(env.mac || env.ie > 6 || env.ie < 5) return;
    var img = $$('','img');
    for(var i=0;i<img.length;i++){
      var src = img[i].getAttribute('src');
      if(!src.match(/\.png/i)) continue;
      try{
        img[i].setAttribute('src','/img/format/null.gif');
      }catch(e){
        try{
          img[i].src = '/img/format/null.gif';
        }catch(e){}
      }
      img[i].style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src=' + src + ',sizingMethod=scale)';
    }
  }
}

function setNewIconSideMenu(){
  var a = $$('sideColumn','a');
  for(var i=0;i<a.length;i++){
    if(a[i].getAttribute('href') && a[i].getAttribute('href').indexOf('/webtool/flaver3/') != -1)
      a[i].innerHTML += '<img src="/img/format/icon_new.png" width="25" height="11" alt="new!" class="new" />';
  }
}

function setBookmark(){
  var title = document.title;
  var url = (window.location.host)? window.location.host + window.location.pathname: window.location.hostname + window.location.pathname;
  url = 'http://' + url;
  return '<p class="book">\n' + getBookmark(url,title) + '</p>\n';
}

function getBookmark(url,title){
  var enc = encodeURI(title);
  enc = enc.replace(/&/g,'%26').replace(/;/g,'%3b').replace(/\?/g,'%3f').replace(/=/g,'%3d').replace(/\//g,'%2f').replace(/,/g,'%2c');
  url = encodeURI(url);
  url = url.replace(/&/g,'%26').replace(/\?/g,'%3f').replace(/=/g,'%3d');
  var key = new Array(
    'yahoo',
    'google',
    'hatena',
    'delicious',
    'livedoor',
    'nifty'
  );
  var book = new Array(
    'Yahoo! Bookmark',
    'Google Bookmark',
    'Hatena Bookmark',
    'del.icio.us',
    'Livedoor Clip',
    'Nifty Clip'
  );
  var post = new Array(
    'http://bookmarks.yahoo.co.jp/bookmarklet/showpopup?u=' + url + '&amp;t=' + enc,
    'http://www.google.co.jp/bookmarks/mark?op=edit&bkmk=' + url + '&amp;title=' + enc,
    'http://b.hatena.ne.jp/append?' + url,
    'http://del.icio.us/post?url=' + url + '&amp;title=' + enc,
    'http://clip.livedoor.com/redirect?link=' + url + '&amp;title=' + enc,
    'http://clip.nifty.com/create?url=' + url + '&amp;title=' + enc
  );
  var html = '';
  for(var i=0;i<key.length;i++){
    html += '<a href="' + post[i] + '" target="_blank" title="' + title + ' \u3092 ' + book[i] + ' \u306B\u8FFD\u52A0" class="' + key[i] + '">' + book[i] + ' \u306B\u8FFD\u52A0</a>\n';
  }
  return html;
}

function onloads(){   // onload functions.
  setFontSize();
  chkPNG.HTML();
  setInitTool();
  setNewIconSideMenu();
  if($('sideColumn')) $('sideColumn').innerHTML += setBookmark();
  if($('flaver3-menu')) $('flaver3-menu').innerHTML += setBookmark();
}



chkPNG.CSS();

setFontCSS();

setOnload(onloads);

