var bp = '/addr/';

// basic --------------------------------------------
function $(id){
  return document.getElementById(id);
}

// cookie --------------------------------------------
function setCookie(name,value,day){
  myExp = new Date();
  myExp.setTime(myExp.getTime()+(day*24*60*60*1000));
  myItem = name + '=' + escape(value) + ';';
  myExpires = 'expires=' + myExp.toGMTString() + ';';
  myPath = 'path=' + bp;
  document.cookie =  myItem + myExpires + myPath;
}

function getCookie(name){
  name = name + '=';
  value = null;
  myStr = document.cookie + ';';
  myOfst = myStr.indexOf(name);
  if(myOfst != -1){
    myStart = myOfst + name.length;
    myEnd   = myStr.indexOf(';' , myStart);
    value = unescape(myStr.substring(myStart,myEnd));
  }
  return value;
}

function cookie_set(type,set,no){
  if(getCookie(type)){
    var c = getCookie(type).split('*');
  }else{
    var c = new Array();
  }
  c[no] = set;
  c = c.join('*');
  setCookie(type,c,30);
}

//ajax --------------------------------------------
function sd(type,frm,disp,fnc,id,opt,loader){
  var arr = new Array();
  if(type) arr.push('type=' + type);
  if(id) arr.push('id=' + id);
  if(opt) arr.push('opt=' + opt);
  var str = '?' + arr.join('&');
  if(!loader) var loader = 'mainloader';
  var url = bp + 'ajax' + str;
  var xmlhttp = new pXmlHttp();
  xmlhttp.setMethod('post');
  xmlhttp.send(url, frm, disp, fnc, loader);
  loader_block(loader)
}


function op(type,disp,id,opt,fnc,loader){
  var arr = new Array();
  if(type) arr.push('type=' + type);
  if(id) arr.push('id=' + id);
  if(opt) arr.push('opt=' + opt);
  var str = '?' + arr.join('&');
  if(!loader) var loader = 'mainloader';
  var url = bp + 'ajax' + str;
  //alert(url)//d
  var xmlhttp = new pXmlHttp();
  xmlhttp.getHtml(url, disp, fnc, loader);
  loader_block(loader)
}

function gh(type,disp,str,fnc,loader){
  if(!loader) var loader = 'mainloader';
  var xmlhttp = new pXmlHttp();
  var url = bp + 'ajax?type=' + type + '&' + str;
  //alert(url)//d
  xmlhttp.getHtml(url,disp,fnc,loader)
  loader_block(loader)
}

function gt(type,str,fnc){
  if(!fnc) var fnc = '';
  var xmlhttp = new pXmlHttp();
  var url = bp + 'ajax?type=' + type + '&' + str;
  xmlhttp.getText(url,fnc);
}

function loader_block(loader){
  if($(loader)){
    $(loader).style.display = 'block';
  }
  if(loader == 'mainloader' && document.getElementById('mainloader')){
    var sy = (document.body.scrollTop || document.documentElement.scrollTop) + 5;
    $('mainloader').style.top = sy + 'px';
  }
}

//parts --------------------------------------------
function cg(n,v,path){
  if(!n) return
  if(!v) v = ''
  var g,uarr,garr,varr
  g = new Array
  uarr=location.href.split('?',2)
  if(uarr[1]) garr=uarr[1].split('&')
  if(garr){
    for(i=0;i<garr.length;i++){
      varr = garr[i].split('=',2)
      if(varr[0] != n && varr[0] != 'p' && varr[0] != 'm'){
        g.push(garr[i])
      }else if(varr[1] == encodeURIComponent(v)){
        var same = 1
      }
    }
  }
  if(!same){
    g.push(n + '=' + encodeURIComponent(v))
  }
  if(path != undefined){
    location.href = bp + path + '?' + g.join('&');
  }else{
    location.href = '?' + g.join('&');
  }
}


function hide(v,clr){
  if(typeof(v) == 'object'){
    var el = v;
  }else{
    var el = $(v);
  }
  el.style.display = 'none'
  if(clr){
    el.innerHTML = '';
  }
}


function cs(v){
  var v = v.split('-');
  var arr = [v[0]];
  if(get('sort')){
    var s = get('sort').split('-');
  }
  if(s && v[0] == s[0]){
    if(s[1] == 'desc'){
      arr.push('asc');
    }else{
      arr.push('desc');
    }
  }else{
    if(v[1] == 'desc'){
      arr.push('desc');
    }else{
      arr.push('asc');
    }
  }
  var set = arr.join('-');
  cg('sort',set);
}


function in_array(v,arr){
  var i;
  for(i=0; i < arr.length; i++){
    if(arr[i] === v) return true
  }
  return false
}


//form --------------------------------------------
var fm = {
  reset: function(self,a,opt){
    if(!a[self.name]) return;
    if(!opt && self.value == a[self.name]){
      self.style.color='#333';
      self.value = '';
    }else if(opt && (self.value == '' || self.value == a[self.name])){
      self.style.color='#bbb';
      self.value = a[self.name];
    }
  },
  
  check: function(f,n,t){
    var al = new Array();
    for(i=0; i < n.length; i++){
      if(f.elements[n[i]] && f.elements[n[i]].value == ''){
        f.elements[n[i]].style.backgroundColor = '#ff9';
        if(t[i]) var m = t[i]; else var m = n[i];
        al.push(m + ' は必須です。\n');
      }
    }
    if(al.length > 0){
      alert(al.join(''))
      return true;
    }
    return false;
  }
}

//comment --------------------------------------------
var com = {
  add: function(oid){
    if(document.cFrm.body.value == ''){
      window.alert('コメントの記入がありません。');
      return;
    }
    var newid = document.cFrm.newid.value;
    sd('com|add','cFrm','commentNew' + newid,'',oid,newid,'c-loader');
    if($('noComMsg')) hide('noComMsg');
  },
  
  edit: function(nid,opt){
    var disp = 'comment' + nid;
    var t = opt.split('|');
    if(t[0] == 'del'){
      if(!window.confirm('削除します')) return;
    }else if(t[0] == 'spam'){
      if(!window.confirm('スパムにします')) return;
    }else if(t[0] == 'chg'){
      sd('com|edit','cFrm' + nid,'comment' + nid,'',nid,'chg')
      return;
    }
    op('com|edit',disp,nid,opt);
  }
}

//tag --------------------------------------------
var tag = {
  form: function(nid,nodetype){
    op('tag|form','tag' + nid,nid,nodetype);
  }
}

//file --------------------------------------------
var file = {
  reload: function(oid,style,session){
    var disp = 'files';
    if($('files' + oid)) disp += oid;
    if(disp){
      if(!session) session = '';
      var str = 'oid=' + oid + '&style=' + style + '&session=' + session;
      gh('file|reload',disp,str);
    }
  },
  
  check_delete: function(fid,self){
    if(!window.confirm('削除します')){
      self.checked = false;
      return;
    }
    op('file|edit','file' + fid,fid,'del');
    if($('fileimg' + fid)) hide('fileimg' + fid);
    if($('filesize' + fid)) hide('filesize' + fid);
    if($('filesort' + fid)) hide('filesort' + fid);
    if($('filedel' + fid)) hide('filedel' + fid);
    if($('img' + fid)) hide('img' + fid);
  },
  
  edit: function(fid,field,value){
    if(!field || !fid) return;
    var str = 'id=' + fid + '&' + field + '=' + encodeURIComponent(value);
    gh('file|edit','filemsg' + fid,str);
  }
}

// fd --------------------------------------------
var fd = {
  disp: function(){
    if($('fd')){
      sy = (document.body.scrollTop || document.documentElement.scrollTop) + 70;
      $('fd').style.top = sy + 'px';
      $('fd').style.display = 'block';
      $('fd').style.height = 'auto';
    }
  }
}

// star --------------------------------------------
var star = {
  b: function(self,nid){
    var v = self.className;
    alert(v.indexOf('starfish_g'))
    if(v.indexOf('starfish_g') > -1){
      self.className = 'starfish btn';
      var star = 1;
    }else{
      self.className = 'starfish_g btn';
      var star = 0;
    }
    gt('node|star','nid=' + nid + '&star=' + star);
  },
  
  togo: function(nid,lev){
    var id = 'togo' + nid + '_';
    var on = 'starfish_togo btn';
    var off = 'starfish_g btn';
    if($(id + lev).className == on && $(id + (lev+1)).className == off) lev = 0;
    for(i=1; i <= 5; i++){
      var el = $(id + i);
      if(i <= lev){
        el.className = on;
      }else{
        el.className = off;
      }
    }
    gt('map|togo','nid=' + nid + '&level=' + lev);
  },
  
  gone: function(el,nid){
    var v = el.className;
    if(v.indexOf('starfish_gone') > -1){
      el.className = 'starfish_g btn';
      var gone = 0;
    }else{
      el.className = 'starfish_gone btn';
      var gone = 1;
    }
    gt('map|gone','nid=' + nid + '&gone=' + gone);
  }
}


/* --------------------------------------------
  paella.js ---- cross-browser ponpon Ajax Engine
  Copyright 2005 ponpon <ponpon@ponpon-village.net>
  http://ponpon-village.net/
  --------------------------- kuwa 19-Feb-08 */
  
function PonponNamespace(){
  
  function pXmlHttpProcesser(){
      this.create = XMLHttp.create();
      this.method = 'GET';
  };

  pXmlHttpProcesser.xmlhttp = function(){ return XMLHttp.create(); };

  pXmlHttpProcesser.Events = ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];

  pXmlHttpProcesser.prototype = {
    setMethod: function(method){
      var a = method.toUpperCase();
      if(a == 'GET' || a == 'POST' || a == 'PUT' || a == 'PROPFIND'){
        this.method = a;
      }
    },

    getMethod: function(){
      return this.method;
    },

    load: function(url,query,func){
      var xmlhttp = this.create;

      xmlhttp.open(this.method,url);

      var proc = function (){
        if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
          func(xmlhttp);
        }else if(xmlhttp.readyState == 4 && xmlhttp.status != 200){
          func(null);
        }
      };

      xmlhttp.onreadystatechange = proc;
      if(query != null){
        xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
      } else {
        xmlhttp.setRequestHeader('Content-Type','text/html; charset=utf-8');
      }
      xmlhttp.send( query );
    },

    getText: function(url,fnc){
      var proc = function(xmlhttp){
        if(fnc){
          if(xmlhttp != null){
            fnc(xmlhttp.responseText);
          }else{
            fnc(null);
          }
        }
      };

      this.load(url,null,proc);
    },

    getHtml: function(url,div,fnc,loader){
      var proc = function(xmlhttp){
        var disp = $(div);
        disp.innerHTML = xmlhttp.responseText;
        if(fnc) fnc();
        if(loader && document.getElementById(loader)){
          document.getElementById(loader).style.display = 'none';
        }
        if(div && document.getElementById(div)){
          document.getElementById(div).style.display = 'block';
        }
      };
      this.load(url,null,proc);
    },

    getHtmltoText: function(url,div){
      var reg;
      
      var proc = function(xmlhttp){
        var disp = $(div);
        var txt = xmlhttp.responseText;
        txt = txt.replace(/</g, '&lt;');
        txt = txt.replace(/>/g, '&gt;');
        txt = txt.replace(/ /g, '&nbsp;');
        reg = new RegExp('\r\n|\r|\n', 'g');
        txt = txt.replace(reg, '<br />');
        disp.innerHTML = txt;
        disp.style.display = 'block';
      };
      this.load(url,null,proc);
    },

    getXml: function(url,fnc){
      var proc = function(xmlhttp){
        if(xmlhttp != null){
          fnc(xmlhttp.responseXML);
        }else{
          fnc(null);
        }
      };
      this.load(url,null,proc);
    },

    getResponse: function(url,fnc){
      var proc = function(xmlhttp){
        if(xmlhttp != null){
          (fnc || function(){})(xmlhttp);
        }
      };
      this.load(url,null,proc);
    },

    send: function(url,frm,div,fnc,loader){
      this.check(this.create);
      frm = document.forms[frm];
      var postdata = this.dataset(frm);
      if(postdata.length = 0){
        window.alert('no data');
        return false;
      }

      var proc = function(xmlhttp){
        var disp = $(div);
        disp.innerHTML = xmlhttp.responseText;
        if(fnc){
          fnc();
        }
        if(loader && document.getElementById(loader)){
          document.getElementById(loader).style.display = 'none';
        }
        if(div && document.getElementById(div)){
          document.getElementById(div).style.display = 'block';
        }
      };
      this.load(url, postdata, proc);
    },

    sendOnly: function(url, frm){
      this.check(this.create);
      var postdata = this.dataset(frm);
      if(postdata.length = 0){
        window.alert('no data');
        return false;
      }
      this.load(url, postdata, null);
    },

    check: function(xmlhttp){
      if(xmlhttp){
        if(xmlhttp.readyState == 1 || xmlhttp.readyState == 2 || xmlhttp.readyState == 3){
          window.alert('通信中です。');
          return false;
        }
      }
    },

    dataset: function(frm){
      var postdata = new String();
      for(var i = 0 ; i < frm.elements.length ; i++){
        if(!frm.elements[i].disabled){
          if(!(frm.elements[i].type == 'radio' && frm.elements[i].checked == false) && !(frm.elements[i].type == 'checkbox' && frm.elements[i].checked == false)){
            postdata += '&';
            postdata += frm.elements[i].name;
            postdata += '=';
            postdata += encodeURIComponent(frm.elements[i].value.replace(/&/g,'%26').replace(/\+/g,'%2B'));
          }
        }
      }
      if(postdata.length > 0) return postdata.substring(1);
    }
  }
  
  function XMLHttp(){};
  
  XMLHttp.create = function(){
    if(typeof ActiveXObject != 'undefined'){
      var ms = new Array('Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.3.0', 'Msxml2.XMLHTTP.4.0', 'Msxml2.XMLHTTP.5.0');
      for(var x = 0; x < ms.length; x++){
        try{
          return new ActiveXObject(ms[x]);
        }catch(e){}
      }
    }
    if(typeof XMLHttpRequest != 'undefined'){
      return new XMLHttpRequest();
    }
    return null;
  };
  
  function pXsltProcesser(){};
  
  pXsltProcesser.prototype = {
    load: function(a){
      try{
        if(typeof ActiveXObject != 'undefined' && typeof GetObject != 'undefined'){
          var b = new ActiveXObject('Microsoft.XMLDOM');
          b.async = false;
          b.load(a);
          return b;
        }else if(typeof XSLTProcessor != 'undefined' && typeof XSLTProcessor.prototype.importStylesheet != 'undefined'){
          var b =  document.implementation.createDocument('', '', null);
          b.async = false;
          b.load(a);
          return b;
        }
      }catch(c){}
    },

    Parser: function(a){
      try{
        if(typeof ActiveXObject != 'undefined' && typeof GetObject != 'undefined'){
          var b = new ActiveXObject('Microsoft.XMLDOM');
          b.loadXML(a);
          return b;
        }else if(typeof DOMParser != 'undefined'){
          return(new DOMParser()).parseFromString(a, 'text/xml');
        }
      }catch(c){}
    },
    
    transformToHTML: function(xmlDoc, div, xslt){
      if(typeof xmlDoc.transformNode != 'undefined'){
        div.innerHTML = xmlDoc.transformNode(xslt);
      }else if(typeof XSLTProcessor != 'undefined' && typeof XSLTProcessor.prototype.importStylesheet != 'undefined'){
        var c = new XSLTProcessor();
        c.importStylesheet(xslt);
        var d = c.transformToFragment(xmlDoc, window.document);
        div.innerHTML = '';
        div.appendChild(d);
      }else{
        var e = of(xmlDoc, xslt);
        div.innerHTML = e;
      }
    },
    
    asynchronousTransform: function(xmlDoc, div, xsltDoc){
      if(xmlDoc == null){
        $(div).innerHTML = '';
        return;
      }
      if(typeof xsltDoc == 'string'){
        var xslt = this.Parser(xsltDoc);
      }else{
        var xslt = xsltDoc;
      }
      this.transformToHTML(xmlDoc, $(div), xslt);
    }
  }
  
  function pCacheProcesser(){
    this.cache_ = new Array();
  };

  pCacheProcesser.prototype = {
    getCached: function(a){
      return this.cache_[a];
    },
    
    cache: function(a,b){
      this.cache_[a] = b;
    }
  }
  
  function $(){
    var elements = new Array();
    for(var i = 0; i < arguments.length; i++){
      var element = arguments[i];
      if(typeof element == 'string') element = document.getElementById(element);
      if(arguments.length == 1) return element;
      elements.push(element);
    }
    return elements;
  }
  
  function pConst(){
    var w = window;
    w.pXmlHttp = pXmlHttpProcesser;
    w.pXslt = pXsltProcesser;
    w.pCache = pCacheProcesser;
    w.$ = $;
  };
  
  pConst();
  
}; PonponNamespace();

