var bp = '/';

// 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,v,no){
  if(getCookie(type)){
    var c = getCookie(type).split('*');
  }else{
    var c = new Array();
  }
  c[no] = v;
  c = c.join('*');
  setCookie(type,c,30);
}

//ajax --------------------------------------------
function sd(type,frm,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;
  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;
  var xmlhttp = new pXmlHttp();
  xmlhttp.getHtml(url,disp,fnc,loader);
  if(disp == 'fd') fd.disp();
  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;
  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 = ''
  if(typeof(n) != 'object') n = [n];
  if(typeof(v) != 'object') 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(!in_array(varr[0],n) && varr[0] != 'p' && varr[0] != 'm'){
        g.push(garr[i])
      }
    }
  }
  for(i=0; i < n.length; i++){
    if(v[i]) g.push(n[i] + '=' + encodeURIComponent(v[i]));
  }
  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);
  }
  if(!el) return;
  el.style.display = 'none'
  if(clr){
    el.innerHTML = '';
  }
}



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


function setNavi(no,v){
  cookie_set('site',v,no);
  location.reload();
}


//name --------------------------------------------
var tgl = {
  el: function(e1,e2){
    var el1 = (typeof(e1) == 'object') ? e1 : $(e1);
    if(e2) var el2 = (typeof(e2) == 'object') ? e2 : $(e2);
    if(!el1.style.display || el1.style.display == 'none'){
      el1.style.display = 'block';
      if(el2) el2.style.display = 'none';
    }else{
      el1.style.display = 'none';
      if(el2) el2.style.display = 'block';
    }
  }
}


var fm = {  //form
  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,arr){
    var al = new Array();
    for(k in arr){
      if(f.elements[k] && f.elements[k].value == ''){
        f.elements[k].style.backgroundColor = '#ff9';
        al.push(arr[k] + ' は必須です。\n');
      }
    }
    if(al.length > 0){
      alert(al.join(''))
      return true;
    }
    return false;
  },
  
  tgl: function(self,v,opt){
    var a = new Array;
    a[self.name] = v;
    this.reset(self,a,opt);
  },
  
  allCheck: function(self,f,n){
    var c = document.forms[f].elements[n];
    if(c.value){
      c.checked = (c.checked) ? false : true;
      return;
    }
    for(i = 0; i < c.length; i++){
      if(self == true){
        c[i].checked = true;
      }else{
        c[i].checked = false;
      }
    }
  },
  
  getCheck: function(f,n){
    var c = document.forms[f].elements[n];
    if(c.checked) return c.value;
    var v = new Array;
    for(i=0; i < c.length; i++){
      if(c[i].checked == true) v.push(c[i].value);
    }
    if(v.length < 1) return;
    var vs = v.join();
    return vs;
  },
  
  ex: function(div,v){
    el = $(div);
    h = parseFloat(el.style.height);
    nh = h + v;
    if(nh < 8) nh = 8;
    el.style.height = nh + 'em';
  },
  
  exAuto: function(el){
    h = parseFloat(el.style.height);
    l = el.value.length;
    if(l > 150 && h < 10){
      el.style.height = (h+10) + 'em';
    }else if(l < 150 && h >= 18){
      el.style.height = (h-10) + 'em';
    }
  }
}


var file = {
  reload: function(oid,style,session){
    var disp = (style == 'form') ? 'files' : 'images';
    if($(disp + oid)) disp += oid;
    if(disp){
      if(!session) session = '';
      var str = 'oid=' + oid + '&style=' + style + '&session=' + session;
      gh('file|reload',disp,str);
    }
  },
  
  page: function(p){
    gh('file|reload','images','style=cat&p=' + p);
  },
  
  edit_cat: function(nid){
    var frm = 'frm' + nid;
    var f = document.forms[frm];
    if(!f.date.value) return alert('日付が未入力です。');
    sd('file|edit_cat',frm,'frmDisp' + nid,nid);
  },
  
  del_cat: function(nid){
    if(!window.confirm('削除します')) return;
    op('file|edit_cat','frmDisp' + nid,nid,'del');
    hide('thumb' + nid);
    hide('frm' + nid);
    hide('size' + nid);
  },
  
  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);
  }
}


var star = {
  b: function(nid,lev){
    var id = 'star' + nid + '_';
    var on = 'star btn';
    var off = 'star_g btn';
    if(lev == 0){
      var k = 1;
    }else{
      if($(id + lev).className == on && (lev == 5 || $(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;
      }
    }
//    if(!k){
//      if($('katori' + nid)){
//        $('katori' + nid).className = 'katori_g btn';
//      }
      gt('cal|star','nid=' + nid + '&star=' + lev);
//    }
  }
}


var katori = {
  b: function(self,nid){
    var v = self.className;
    if(v.indexOf('katori_g') > -1){
      if(!window.confirm('写真が猫でない場合に、このカトリマークをONしておいて下さい。制作サイドでチェックしてみんなの写真から除外するようにします。ONにした後もう一度クリックするとOFFにできます。')) return;
      self.className = 'katori btn';
      var s = -1;
    }else{
      self.className = 'katori_g btn';
      var s = 0;
    }
    gt('cal|star','nid=' + nid + '&star=' + s);
    star.b(nid,0);
  }
}


/* --------------------------------------------
  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();

