var SITE_URL= '/';

/* nuXHR
Author: Kazmer Kulcsar <info@kikke.hu> 
http://kikke.hu

xhr('url', 'key1=val1&key2=val2', function(response){callback(response)})

*/


function basename(path){
  return path.replace(/\\/g,'/').replace( /.*\//, '' );
}


function deleteChildren(node){
  if(node){
    for(var x= node.childNodes.length-1; x >= 0; x--){
      var childNode= node.childNodes[x];
      if(childNode.hasChildNodes()){
        deleteChildren(childNode);
      }
      node.removeChild(childNode);
      delete childNode;
    }
  }
}


function deleteNode(elementId){
  var label= document.getElementById(elementId);	
  while(label.hasChildNodes()){ 
    label.removeChild(label.lastChild);
  }
}


function dirname(path){
  return path.replace(/\\/g,'/').replace(/\/[^\/]*$/, '');
}


function include(a){
  var elements= document.getElementsByTagName('head')[0].getElementsByTagName("script");
  var aexist= false;
    for(var i= 0;i<elements.length;i++){
      if(a==elements[i].getAttribute('src')){
        aexist= true;
        break;
      }
    }
  if(!aexist){
    var s = document.createElement("script");
    s.setAttribute("src", a);
    document.getElementsByTagName("head")[0].appendChild(s);
  }
}


function nuGet(a){
  if(a.href!=undefined){
    var query=a.href;
  }else{
    var query=a;
  }
  new xhr(query,'xhr=true',function(r){xhrHandler(r);});
}


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 nuPost(parameters,form){
  var path='/';
  var multipart=false;
  query = 'xhr=true&';
  function nuPostProcess(formElement){
    if(formElement.type=='file'){
      multipart=true;
    }else if(formElement.type=='checkbox'){
      if(formElement.checked){
        return formElement.name+'='+urlencode(formElement.value)+'&';
      }else{
        return '';
      }
    }else if(formElement.type=='select-multiple'){
      var subret='';
      for (var j=0;j<formElement.options.length;j++){
        if (formElement.options[j].selected == true){
          subret = subret+formElement.name+'='+urlencode(formElement.options[j].value)+'&';
        }
      }
      return subret;
    }else{
      return formElement.name+'='+urlencode(formElement.value)+'&';
    }
  }
  if(form.tagName != 'FORM'){
    if(form.indexOf(',') > 0){
      var forms=form.split(',');
      for(i=0;i<forms.length;i++){
        var element=document.getElementsByName(forms[i]);
        for(j=0;j<element.length;j++){
          query = query+nuPostProcess(element[j]);
        }
      }
    }else{
      var element=document.getElementsByName(form);
      for(j=0;j<element.length;j++){
        query = query+nuPostProcess(element[j]);
      }
    }
  }else{
    if(form.action.indexOf('?') != -1){
      var pars=form.action.split('?');
      path=pars[0];
      query=query+'&'+pars[1];
    }else{
      path=form.action;
    }
    for(i=0;i<form.length;i++){
      if(form.elements[i].name!=''){
        query = query+nuPostProcess(form.elements[i]);
      }
    }
  }
  query=query.substring(0,query.length-1);
  if(parameters!=undefined){
    if(parameters.indexOf('?') != -1){
      var pars=parameters.split('?');
      path=pars[0];
      query=query+'&'+pars[1];
    }else{
      path=parameters;
    }
  }
  new xhr(path,query,function(r){xhrHandler(r)});
}


function urlencode(s) {
  s = encodeURIComponent(s);
  return s.replace(/~/g,'%7E').replace(/%20/g,'+');
}


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){
        deleteChildren(doc.getElementById(key));
        doc.getElementById(key).innerHTML=values[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:
          deleteChildren(doc.getElementById(key));
          doc.getElementById(key).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++){
        scripts= matches[j];
        var regex = RegExp("<script?\\w+(?:\\s+(?:src=\"([^\"]*)\")|[^\\s>]+|\\s+)*>","gi");        
        var matches;
        while (src= regex.exec(scripts)){
          if(src[1]!=undefined){
            include(src[1]);
          }
        }
        repl= new RegExp('<script.*?>', 'gm');
        scripts= scripts.replace(repl, '');
        repl = new RegExp('</script>', 'gm');
        scripts= scripts.replace(repl, '');
        repl= new RegExp('<!--', 'gm');
        scripts= scripts.replace(repl, '');
        repl= new RegExp('-->', 'gm');
        scripts= scripts.replace(repl, '');
        repl= new RegExp('&amp;', 'gm');
        scripts= scripts.replace(repl, '&');
        setTimeout("eval(''+scripts+'');",1000);
      }
    }
  }
  if (document.getElementById){
    if (document.all && navigator.appVersion.indexOf("MSIE 6.") != -1){
      document.body.style.height='99%';
      setTimeout("document.body.style.height='100%'", 100);
    }
  }
}

/* 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}}();
var connectorPollingInterval=1000;

function connector(){
  var connectorStart= new Date();
  nuGet(SITE_URL+'system/connector/xhr=true&t='+connectorStart.getTime());
  var connectorEnd= new Date();
  var difference= new Date(connectorStart.getTime()-connectorPollingInterval-document.getElementById('connector').value);
  var timeout= difference.getSeconds();
  if(timeout>10){
    if(document.getElementById('connector').value!=''){
      document.getElementById('connection_status').value="Offline";
    }
  }else{
    document.getElementById('connection_status').value="Online";
  }
}
include(SITE_URL+'lib/wpaudioplayer/audio-player.js');
AudioPlayer.setup(SITE_URL+'lib/wpaudioplayer/player.swf', {width: 600, checkpolicy: "yes"});

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

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