
function basename(path){
return path.replace(/\\/g,'/').replace( /.*\//, '' );
}

function dirname(path){
return path.replace(/\\/g,'/').replace(/\/[^\/]*$/, '');
}

function preview(src){
  var previewframe = window.parent.document.getElementById("previewframe");
  while(previewframe.firstChild){
    previewframe.removeChild(previewframe.firstChild);
  };
  var image= document.createElement("img");
  image.ondblclick= function(){
    window.parent.document.form.text.value+=' !['+src+'](files/'+src+')';
  };
  image.src='files/'+src;
  image.style.width='120px';
  image.style.maxHeight='120px';
  previewframe.appendChild(image);
};

function flvpreview(src){
  var previewframe = window.parent.document.getElementById("previewframe");
  while(previewframe.firstChild){
    previewframe.removeChild(previewframe.firstChild);
  };
  var image= document.createElement("img");
  image.ondblclick= function(){
    window.parent.document.form.text.value+=' [flv:'+src+']';
  };
  image.src='rsrc/video.png';
  image.style.width='120px';
  image.style.maxHeight='120px';
  previewframe.appendChild(image);
};

function nuLinkActive(l){
  var links=document.getElementsByTagName('a');
  for(i=0;i<links.length;i++){
    links[i].className=links[i].className.replace('active', '');
  }
  l.className='active';
}

function nuLinkify(){
  var links=document.getElementsByTagName('a');
  for(i=0;i<links.length;i++){
    if(links[i].getAttribute('pathname')){
      attrib='pathname';
    }else{
      attrib='href'
    }
    if(links[i].getAttribute(attrib).indexOf('http://') != -1){
      //links[i].target="_blank";
    }else{
      if(links[i].getAttribute('onclick')==null){
        links[i].onclick=function(){
          nuGet(this);
          nuLinkActive(this);
          return false;
        }
      }
    }
  }

}


function nuGet(a){
  if(a.href!=undefined){
    var query=a.href;
  }else{
    var query='/'+a;
  }
  if(query.indexOf('?') != -1){
    var queries=query.split('?');
    var pars=queries[1]+'&xhr=true';
    var path=queries[0];
  }else{
    var pars='xhr=true';
    var path=query;
  }
  new xhr(path,pars,function(r){xhrHandler(r);});
}



/* xhr v.1.1
Crossbrowser XMLHttpRequest Handler
  Author: Kazmer Kulcsar <info@kikke.hu> 
  http://kikke.hu
  xhr('url', 'key1=val1&key2=val2', function(response){callback(response)})
*/

function xhr(url,a,callback){
  var that=this;
  var updating = false;
  this.callback = function() {}
  var request=window.XMLHttpRequest ? new XMLHttpRequest() : (window.ActiveXObject ? new ActiveXObject('Microsoft.XMLHTTP') : null);
  this.update = function(parameters) {
    if (updating==true) { return false; }
    updating = true;
    if (request==null) {
       alert("Missing XMLHTTP support");
       return false;
    } else {
      request.onreadystatechange = xhrcallback;
      request.open("POST", url, true);
      request.setRequestHeader('Content-type','application/x-www-form-urlencoded; charset=utf-8')
      request.send(parameters);
      return true;
    }
  }
  var xhrcallback = function() {
    if (request.readyState!=4){return false;}
    callback(request.responseText);
    updating = false;
    that.callback();
    try {
      request.onreadystatechange = null;
    } catch (e) {}
    request = null;
    if(typeof CollectGarbage == 'function') { 
      CollectGarbage();
    }
  }
  this.update(a);
}


function xhrHandler(input){
  values = jsonParse(input);
  for (keys in values){
    if(keys.indexOf('.') != -1){
      var keyarray=keys.split('.');
      var doc = eval(''+keyarray[0]+'.document');
      var key = keyarray[1];
    }else{
      var key = keys;
      var doc = eval('document');
    }
    element = doc.getElementsByName(key);
    /* Checking arrays in input names for updating multiple checkbox
    */
    if(doc.getElementsByName(key+"[]").length>1){
      element=doc.getElementsByName(key+'[]');
    }
    if (element[0]==null){
      /*  Updating innerHTML's for real browsers here.
          IE handling non form elements that has ID as form elements has NAME!
      */
      if(doc.getElementById(key)!=null){
        if(doc.getElementById('mask_'+key)){
          document.getElementById('mask_'+key).parentNode.removeChild(document.getElementById('mask_'+key));
        }
        var mask= document.createElement("div");
        mask.style.width=doc.getElementById(key).clientWidth+'px';
        mask.style.height=doc.getElementById(key).clientHeight+'px';
        mask.style.position='absolute';
        mask.style.top=doc.getElementById(key).offsetTop+'px';
        mask.style.left=doc.getElementById(key).offsetLeft+'px';
        mask.style.zIndex='99';
        mask.className='mask';
        mask.id='mask_'+key;
        document.body.appendChild(mask);
        opacity('mask_'+key,100);
        doc.getElementById(key).innerHTML=values[key];
        fadeOut('mask_'+key);
      }else{
        /* nonexistant elements */
        //alert(key+':'+values[key]);
      }
    } else {
      switch (element[0].type){
        case 'select-one':
          for (var i=0;i<element[0].options.length;i++){
            if (element[0].options[i].value == values[key]){
              element[0].options[i].selected = true;
            } else {
              element[0].options[i].selected = false;
            }
          }
          break;
        case 'text':
        case 'textarea':
        case 'hidden':
        case 'submit':
        case 'button':
          element[0].value = values[key];
          break;
        case 'checkbox':
          arrayvalues = "," + values[key] + ",";
          for (var i=0;i<element.length;i++){
            if (arrayvalues.indexOf(','+element[i].value+',') != -1){
              element[i].checked = true;
            } else {
              element[i].checked = '';
            }
          }
          break;
        default:
          if(doc.getElementById('mask_'+key)){
            document.getElementById('mask_'+key).parentNode.removeChild(document.getElementById('mask_'+key));
          }
          var mask= document.createElement("div");
          mask.style.width=doc.getElementById(key).clientWidth+'px';
          mask.style.height=doc.getElementById(key).clientHeight+'px';
          mask.style.backgroundImage='url(rsrc/content.png)';
          mask.style.backgroundRepeat='repeat-x';
          mask.style.position='absolute';
          mask.style.top=doc.getElementById(key).offsetTop+'px';
          mask.style.left=doc.getElementById(key).offsetLeft+'px';
          mask.style.zIndex='99';
          mask.id='mask_'+key;
          document.body.appendChild(mask);
          opacity('mask_'+key,100);
          doc.getElementById(key).innerHTML=values[key];
          fadeOut('mask_'+key);

        //  element[0].innerHTML = values[key];
      }
    }
    var repl = new RegExp('[\r\n]', 'g');
    var r = values[key].replace(repl, ' ');
    var src = new RegExp('<script.*?</script>', 'g');
    matches = r.match(src);
    if (matches != null){
      for(var j = 0;j<matches.length;j++){
        repl = new RegExp('<script.*?>', 'gm');
        evl = matches[j].replace(repl, '');
        repl = new RegExp('</script>', 'gm');
        evl = evl.replace(repl, '');
        eval(evl);
      }
    }
  }
  if (document.getElementById){
    if(document.body.id != ''){
      nuLinkify();
    }
    if (document.all && navigator.appVersion.indexOf("MSIE 6.") != -1){
      document.body.style.height='99.99%';
      setTimeout("document.body.style.height='100%'", 10);
    }
  }
  nuLinkify();
}

function fadeIn(objId){
  var objOpa= document.getElementById(objId).style.opacity*100;
  objOpa += 10;
  if(objOpa <= 100){
    opacity(objId, objOpa);
    setTimeout("fadeIn('"+objId+"',"+objOpa+")", 10);
    if(objOpa==100){
      document.getElementById(objId).style.removeAttribute('filter');
    }
  }
}
function fadeOut(objId){
  var objOpa= document.getElementById(objId).style.opacity*100;
  objOpa -= 10;
  if(objOpa > 0){
    opacity(objId, objOpa);
    setTimeout("fadeOut('"+objId+"',"+objOpa+")", 10);
  }else{
    document.getElementById(objId).style.display='none';
    document.getElementById(objId).parentNode.removeChild(document.getElementById(objId));
  }
}
function opacity(objId,opacity){
  document.getElementById(objId).style.opacity= (opacity/100);
  document.getElementById(objId).style.filter= "alpha(opacity = "+opacity+")";
}

function deleteNode(elementId){
  var label= document.getElementById(elementId);	
  while(label.hasChildNodes()){ 
    label.removeChild(label.lastChild);
  }
}

function postform(target,objectlist) {
  objects = objectlist.split(',');
  var getstr = "";
  for (var i=0; i<objects.length; i++){
    var object = document.getElementById(objects[i]);
    if(object.type == 'checkbox'){
      getstr += object.name + "=" + object.checked;
    }else if(object.type == 'select-one'){
      getstr += object.name + "=" + object.options[(object.selectedIndex)].value;
    }else{
      getstr += object.name + "=" + encodeURIComponent(object.value);
    }
    if(objects.length-1>i){
      getstr += "&";
    }
  }
  postRequest(target, getstr);
}


if(window.attachEvent){
  window.attachEvent("onload",function(){nuLinkify();});
}else{
  window.addEventListener("load",function(){nuLinkify();}, false);
}

if(window.attachEvent){
  window.attachEvent("onunload",function(){});
}else{
  window.addEventListener("unload",function(){}, false);
}



/* jsonParse
http://code.google.com/p/json-sans-eval/
*/
window.jsonParse=function(){var r="(?:-?\\b(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?\\b)",k='(?:[^\\0-\\x08\\x0a-\\x1f"\\\\]|\\\\(?:["/\\\\bfnrt]|u[0-9A-Fa-f]{4}))';k='(?:"'+k+'*")';var s=new RegExp("(?:false|true|null|[\\{\\}\\[\\]]|"+r+"|"+k+")","g"),t=new RegExp("\\\\(?:([^u])|u(.{4}))","g"),u={'"':'"',"/":"/","\\":"\\",b:"\u0008",f:"\u000c",n:"\n",r:"\r",t:"\t"};function v(h,j,e){return j?u[j]:String.fromCharCode(parseInt(e,16))}var w=new String(""),x=Object.hasOwnProperty;return function(h,
j){h=h.match(s);var e,c=h[0],l=false;if("{"===c)e={};else if("["===c)e=[];else{e=[];l=true}for(var b,d=[e],m=1-l,y=h.length;m<y;++m){c=h[m];var a;switch(c.charCodeAt(0)){default:a=d[0];a[b||a.length]=+c;b=void 0;break;case 34:c=c.substring(1,c.length-1);if(c.indexOf("\\")!==-1)c=c.replace(t,v);a=d[0];if(!b)if(a instanceof Array)b=a.length;else{b=c||w;break}a[b]=c;b=void 0;break;case 91:a=d[0];d.unshift(a[b||a.length]=[]);b=void 0;break;case 93:d.shift();break;case 102:a=d[0];a[b||a.length]=false;
b=void 0;break;case 110:a=d[0];a[b||a.length]=null;b=void 0;break;case 116:a=d[0];a[b||a.length]=true;b=void 0;break;case 123:a=d[0];d.unshift(a[b||a.length]={});b=void 0;break;case 125:d.shift();break}}if(l){if(d.length!==1)throw new Error;e=e[0]}else if(d.length)throw new Error;if(j){var p=function(n,o){var f=n[o];if(f&&typeof f==="object"){var i=null;for(var g in f)if(x.call(f,g)&&f!==n){var q=p(f,g);if(q!==void 0)f[g]=q;else{i||(i=[]);i.push(g)}}if(i)for(g=i.length;--g>=0;)delete f[i[g]]}return j.call(n,
o,f)};e=p({"":e},"")}return e}}();
