var SonetKuji = function() {
  // kuji place
  this.IssueBody   = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="%d" height="%d" id="%d" align="middle">';
  this.IssueBody  += '<param name="allowScriptAccess" value="always" />';
  this.IssueBody  += '<param name="allowFullScreen" value="false" />';
  this.IssueBody  += '<param name="flashVars" value="org_id=%s&token=%s" />';
  this.IssueBody  += '<param name="movie" value="%s" />';
  this.IssueBody  += '<param name="quality" value="high" />';
  this.IssueBody  += '<param name="bgcolor" value="#ffffff" />';
  this.IssueBody  += '<param name="wmode" value="transparent" />';
  this.IssueBody  += '<embed src="%s" wmode="transparent" quality="high" bgcolor="#ffffff" width="%s" height="%d" name="%d" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashVars="org_id=%s&token=%s" />';
  this.IssueBody  += '</object>';

  // blogfigure
  this.FigureBody  = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="150" height="355" id="%s" align="middle">';
  this.FigureBody += '<param name="allowScriptAccess" value="always" />';
  this.FigureBody += '<param name="allowFullScreen" value="false" />';
  this.FigureBody += '<param name="flashVars" value="org_id=%s&parts_id=%s&nickname=%s&message=%s&token=%s" />';
  this.FigureBody += '<param name="movie" value="%s" />';
  this.FigureBody += '<param name="quality" value="high" />';
  this.FigureBody += '<param name="bgcolor" value="#ffffff" />';
  this.FigureBody += '<param name="wmode" value="transparent" />';
  this.FigureBody += '<embed src="%s" wmode="transparent" quality="high" bgcolor="#ffffff" width="150" height="355" name="%s" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashVars="org_id=%s&parts_id=%s&nickname=%s&message=%s&token=%s" />';
  this.FigureBody += '</object>';

  this.Token       = Token;
  this.OrgID       = OrgID;
  this.IchimaiID   = 499;

  if (this.isIchimai(OrgID) != 1) {
    this.PartsID   = PartsID;
    this.NickName  = NickName;
    this.Message   = Message;
  } else {
    this.Type      = Type ? Type : 1;
  }

  this.L1 = this.getCookie('sonet-sid-L1');
  this.IchimaiIds = new Array;
  if (this.L1) {
    var ps = this.getCookie('ICHIMAI_IDS_' + this.L1);
    if (ps) this.IchimaiIds = unescape(ps).split(',');
    if (ps) this.Ps = ps;
  }

  this.SwfHost = 'http://www.so-net.ne.jp/kuji/js/';
}

SonetKuji.prototype = {
  getFigureSwf: function(i) {
    this.Swf = this.SwfHost;
    this.Swf += 'blog' + i + '.swf';
    this.SwfName = 'blog' + i;
  },
  getIchimaiSwf: function(i) {
    this.Swf = this.SwfHost;
    if (SonetKuji.isIssued(OrgID) != 1) {
      this.Swf    += 'issue'  + this.Type + '.swf';
      this.SwfName = 'issue'  + this.Type;
    } else {
      this.Swf    += 'issued' + this.Type + '.swf';
      this.SwfName = 'issued' + this.Type;
    }
  },
  writeFlash: function() {
    var flash;
    if (SonetKuji.isIchimai(OrgID) == 1) {
      switch(this.Type) {
        case 1:
          width  = 160;
          height = 160;
          break;
        case 2:
          width  = 120;
          height = 120;
          break;
        case 3:
          width  = 180;
          height =  90;
          break;
        default:
          width  = 160;
          height = 160;
          break;
      }
      flash = sprintf(this.IssueBody, width, height, this.SwfName, OrgID, Token, this.Swf, this.Swf, width, height, this.SwfName, OrgID, Token);
    } else {
      flash = sprintf(this.FigureBody, this.SwfName, OrgID, PartsID, NickName, Message, Token, this.Swf, this.Swf, this.SwfName, OrgID, PartsID, NickName, Message, Token);
    }
    document.write(flash);
  },
  ichimai_cookie: function(org_id) {
    if (!org_id) return;

    var L1 = this.getCookie('sonet-sid-L1');
    var IchimaiIds = new Array;
    if (L1) {
      var ps = this.getCookie('ICHIMAI_IDS_' + L1);
      if (ps) IchimaiIds = unescape(ps).split(',');
    }

    for (var j=0; j<=IchimaiIds.length; j++) {
      if (IchimaiIds[j] == org_id) return;
    }

    if (ps) {
      this.setCookie('ICHIMAI_IDS_' + L1, ps + org_id.toString() + ',');
    } else {
      this.setCookie('ICHIMAI_IDS_' + L1, org_id.toString() + ',');
    }
  },
  getCookies: function() {
    var result = new Array;
    var cookies = document.cookie.split(';');
    for (i = 0; cookies[i]; i++) {
      var pair = cookies[i].split('=');
      result[pair[0].replace(' ', '')] = pair[1];
    }
    return result;
  },
  getCookie: function(name) {
    if (!name) name = this.Ps;
    var cookies = this.getCookies();
    return cookies[name];
  },
  setCookie: function(name, value) {
    if (!name) name = this.Ps;
    var date = new Date();
    var time;
    var year = date.getYear();
    year += (year > 1900) ? 0 : 1900;
    if (date.getHours() < 4)
      time = sprintf('%d/%d/%d 03:59:59', year, date.getMonth() + 1, date.getDate());
    else
      time = sprintf('%d/%d/%d 03:59:59', year, date.getMonth() + 1, date.getDate() + 1);

    var t = Date.parse(time);
    date.setTime(t);
    var expires = "; expires=" + date.toGMTString();
    document.cookie = name + "=" + value + expires + "; domain=so-net.ne.jp; path=/";
  },
  clearCookie: function(name) {
    document.cookie = name + "=; expires=-1m; domain=so-net.ne.jp; path=/";
  },
  isIchimai: function(i) {
    if (i <= this.IchimaiID) return 1;
    return 0;
  },
  isIssued: function(i) {
    for (var j=0; j<=this.IchimaiIds.length; j++) {
      if (this.IchimaiIds[j] == i) return 1;
    }
    return 0;
  },
  isIchimaiDisplay: function(i) {
    ret = false;
    switch(i) {
    
      case 1:
        ret = false;
        break;
    
      case 2:
        ret = false;
        break;
    
      case 4:
        ret = false;
        break;
    
      case 5:
        ret = false;
        break;
    
      case 7:
        ret = false;
        break;
    
      case 8:
        ret = false;
        break;
    
      case 11:
        ret = false;
        break;
    
      case 13:
        ret = false;
        break;
    
      case 15:
        ret = false;
        break;
    
      case 16:
        ret = false;
        break;
    
      case 17:
        ret = false;
        break;
    
      case 18:
        ret = false;
        break;
    
      case 19:
        ret = false;
        break;
    
      case 21:
        ret = false;
        break;
    
      case 22:
        ret = false;
        break;
    
      case 23:
        ret = false;
        break;
    
      case 25:
        ret = false;
        break;
    
      case 26:
        ret = false;
        break;
    
      case 29:
        ret = false;
        break;
    
      case 30:
        ret = true;
        break;
    
      case 31:
        ret = true;
        break;
    
      case 32:
        ret = false;
        break;
    
      case 33:
        ret = true;
        break;
    
      case 34:
        ret = true;
        break;
    
      case 35:
        ret = true;
        break;
    
      case 36:
        ret = true;
        break;
    
      case 37:
        ret = false;
        break;
    
      case 38:
        ret = true;
        break;
    
      case 39:
        ret = false;
        break;
    
      case 40:
        ret = true;
        break;
    
      case 41:
        ret = false;
        break;
    
      case 42:
        ret = false;
        break;
    
      case 43:
        ret = false;
        break;
    
      case 44:
        ret = false;
        break;
    
      case 46:
        ret = false;
        break;
    
      case 47:
        ret = false;
        break;
    
      case 48:
        ret = false;
        break;
    
      case 49:
        ret = false;
        break;
    
      case 52:
        ret = false;
        break;
    
      case 55:
        ret = true;
        break;
    
      case 56:
        ret = false;
        break;
    
      case 57:
        ret = true;
        break;
    
      case 58:
        ret = false;
        break;
    
      case 59:
        ret = true;
        break;
    
      default:
        break;
    }
    return ret;
  },
  isFigureDisplay: function(i) {
    ret = false;
    switch(i) {
    
      case 38:
        ret = false;
        break;
    
      case 37:
        ret = false;
        break;
    
      case 6:
        ret = true;
        break;
    
      case 7:
        ret = true;
        break;
    
      case 8:
        ret = true;
        break;
    
      case 9:
        ret = true;
        break;
    
      case 10:
        ret = true;
        break;
    
      case 35:
        ret = true;
        break;
    
      case 34:
        ret = true;
        break;
    
      case 33:
        ret = false;
        break;
    
      case 21:
        ret = true;
        break;
    
      case 22:
        ret = true;
        break;
    
      case 23:
        ret = true;
        break;
    
      case 24:
        ret = true;
        break;
    
      case 32:
        ret = false;
        break;
    
      case 31:
        ret = false;
        break;
    
      case 36:
        ret = false;
        break;
    
      default:
        break;
    }
    return ret;
  },
  isBlack: function() {
    var domain    = document.domain;
    var BlackList = new Array('black\\.so-net\\.ne\\.jp','black2\\.so-net\\.ne\\.jp','black3\\.so-net\\.nejp','055\\.blog\\.so-net\\.ne\\.jp','island\\.geocities\\.jp','upp\\.so-net\\.ne\\.jp','mazet\\.blog\\.so-net\\.ne\\.jp','cotton-p\\.blog\\.so-net\\.ne\\.jp','popotarou\\.blog\\.so-net\\.ne\\.jp','orth\\.blog\\.so-net\\.ne\\.jp','www\\.ac\\.cyberhome\\.ne\\.jp','qigai\\.blog\\.so-net\\.ne\\.jp','panda193\\.blog\\.so-net\\.ne\\.jp','treasure-hunter\\.blog\\.so-net\\.ne\\.jp','kurenai1013\\.blog\\.so-net\\.ne\\.jp');
    for (var i=0; i < BlackList.length; i++) {
      var black_exp = new RegExp(BlackList[i]);
      if (black_exp.test(domain)) return true;
    }
    return false;
  }
}

function main() {
  SonetKuji = new SonetKuji();
  if (OrgID == 0) return;

  if (SonetKuji.isIchimai(OrgID) != 1) {
    if (!SonetKuji.isFigureDisplay(PartsID)) return;
    SonetKuji.getFigureSwf(PartsID);
  } else {
    if (SonetKuji.isBlack()) return;
    if (typeof(SonetKujiEnd) != 'undefined' && SonetKujiEnd == true) return;
    if (!SonetKuji.isIchimaiDisplay(OrgID)) {
      SonetKujiEnd = false;
      return;
    }
    SonetKuji.getIchimaiSwf(OrgID);
    SonetKujiEnd = true;
  }
  SonetKuji.writeFlash();
}
main();

function getURI () {
  return location.href;
}
