var _refresh4show;
var _refreshSource;

function refreshCallback(wr) {
  var xml = wr.requester.responseXML;
  if(location.href.indexOf('debug=true') != -1) copyToClipboard(ivy.xml.serialize(xml));
  if(_refresh4show != null) {
    var sx = ivy.xml.serialize(xml);
    if(!ivy.browser.isIE) {
      var r1 = new RegExp('<(a|b|strong|u|i|div|span|font|h1|h2|h3)(\\s[^>]*?)?/>','gi'); // mozilla httprequest hack
      var r2 = new RegExp('<\\?xml(.*?)\\?>','gi'); // opera hack
      sx = sx.replace(r2,'').replace(r1, '<$1$2></$1>');
      if(ivy.browser.name != 'Opera' && _refresh4show.getAttribute('moz-hacked') != 'true') { // ff refresh nem tartalmazos hiba hack
        var i = 0;
        var c = _refresh4show.parentNode.childNodes;
        while (i < c.length && c[i] != _refresh4show) i++;
        if(i<c.length) {
          _refresh4show.parentNode.removeChild(c[i+1]);
          _refresh4show.setAttribute('moz-hacked','true');
        }    
      }
    }
    if (location.href.indexOf('debug=true') != -1) copyToClipboard(sx);
    _refresh4show.innerHTML = sx;
    if (ivy.browser.isIE) xml.setProperty("SelectionLanguage", "XPath");
    var script = ivy.xml.xpath.eval(xml, "//script");
    var s;
    while(s = ivy.xml.xpath.iterate(script)) {
        try {
            var val = ivy.xml.xpath.valueOf(s);
            if (val == '' && s.firstChild) val = ivy.xml.xpath.valueOf(s.firstChild);
            eval(val);
        }
        catch(e) {alert(e.description)}
    }
  }
}

function refresh(htmlElement, instanceID, qs, callback) {
  _refreshSource = htmlElement;
  while(htmlElement != null && removens(htmlElement.tagName.toUpperCase()) != 'BOX' && htmlElement.getElementsByTagName('ivy:box').length == 0) {
    htmlElement = htmlElement.parentNode;
  }
  
  if(htmlElement == null) return;

  if(removens(htmlElement.tagName.toUpperCase()) != 'BOX') {
    var boxes = htmlElement.getElementsByTagName('ivy:box');
    var i = 0;
    while (i < boxes.length && boxes[i].getAttribute('ivy:instance-id') != instanceID) i++;
    if(i < boxes.length) {
      htmlElement = boxes[i];
    } else {
      return;
    }
  }

  _refresh4show = htmlElement;
  var uri = htmlElement.getAttribute('ivy:src');
  var instance = htmlElement.getAttribute('ivy:instance-id');
  uri += '?';
  if(location.href.indexOf('?') != -1) {
    var oldqs = location.href.substring(location.href.indexOf('?')+1);
    if(oldqs.indexOf('#') != -1) oldqs = oldqs.substring(0, oldqs.indexOf('#'));
    var x = qs.split('&');
    for(var i = 0; i < x.length; i++) x[i] = x[i].substring(0, x[i].indexOf('='));
    var y = oldqs.split('&');
    for(var i = 0; i < y.length; i++) {
      var j = 0;
      while(j < x.length && y[i].indexOf(x[j]+'=') == -1) j++;
      if (j == x.length) uri += y[i] + '&';
    }
  }
  uri += 'pageloader.parsecontent=true';
  uri += '&pageloader.no-cache=true';
  uri += '&request.instance-id=' + instance;
  uri += '&rnd='+Math.random();
  if (qs != null) uri += '&'+qs.replace('amp;', '');
  ivy.http.get(uri, (callback != null ? callback : refreshCallback));
}

function refreshPost(htmlElement, instanceID, qs, data, callback) {
  _refreshSource = htmlElement;
  while(htmlElement != null && removens(htmlElement.tagName.toUpperCase()) != 'BOX' && htmlElement.getElementsByTagName('ivy:box').length == 0) {
    htmlElement = htmlElement.parentNode;
  }
  if(htmlElement == null) return;

  if(removens(htmlElement.tagName.toUpperCase()) != 'BOX') {
    var boxes = htmlElement.getElementsByTagName('ivy:box');
    var i = 0;
    while (i < boxes.length && boxes[i].getAttribute('ivy:instance-id') != instanceID) i++;
    if(i < boxes.length) {
      htmlElement = boxes[i];
    } else {
      return;
    }
  }

  _refresh4show = htmlElement;
  var uri = htmlElement.getAttribute('ivy:src');
  var instance = htmlElement.getAttribute('ivy:instance-id');
  uri += '?';
  if(location.href.indexOf('?') != -1) {
    var oldqs = location.href.substring(location.href.indexOf('?')+1);
    if(oldqs.indexOf('#') != -1) oldqs = oldqs.substring(0, oldqs.indexOf('#'));
    var x = qs.split('&');
    for(var i = 0; i < x.length; i++) x[i] = x[i].substring(0, x[i].indexOf('='));
    var y = oldqs.split('&');
    for(var i = 0; i < y.length; i++) {
      var j = 0;
      while(j < x.length && y[i].indexOf(x[j]+'=') == -1) j++;
      if (j == x.length) uri += y[i] + '&';
    }
  }
  uri += 'pageloader.parsecontent=true';
  uri += '&pageloader.no-cache=true';
  uri += '&request.instance-id=' + instance;
  uri += '&rnd='+Math.random();
  if (qs != null) uri += '&'+qs.replace('amp;', '');
  ivy.http.post(uri, data, (callback != null ? callback : refreshCallback));
}

function removens(s) {
  if(s.indexOf(':') == 1) {
    return s;
  } else {
    return s.substring(s.indexOf(':')+1);
  }
}

function copyToClipboard(s)
{
  if( window.clipboardData && clipboardData.setData ) {
    clipboardData.setData('Text', s);
  } else {
    // You have to sign the code to enable this or allow the action in about:config by changing	user_pref("signed.applets.codebase_principal_support", true);
    netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
    var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard); if (!clip) return;
    var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable); if (!trans) return;
    // specify the data we wish to handle. Plaintext in this case.
    trans.addDataFlavor('text/unicode');
    // To get the data from the transferable we need two new objects
    var str = new Object();
    var len = new Object();
    var str = Components.classes['@mozilla.org/supports-string;1'].createInstance(Components.interfaces.nsISupportsString);
    var copytext = s;
    str.data = copytext;
    trans.setTransferData('text/unicode',str,copytext.length*2);
    var clipid=Components.interfaces.nsIClipboard;
    if (!clip) return false;
    clip.setData(trans,null,clipid.kGlobalClipboard);	   
  }
}


var globalString = null;

//---------------
function refreshCallbackUniq(wr) {
  //alert(_refreshSource.outerHTML);
  var xml = wr.requester.responseXML;
  if(location.href.indexOf('debug=true') != -1) copyToClipboard(ivy.xml.serialize(xml));
  if(_refresh4show != null) {
    var sx = ivy.xml.serialize(xml);
    //alert(sx);
    /* SieGe - Kivettem, mert az FF2 kitorli az ivybox teljes belsejet. */
    /*if(!ivy.browser.isIE) 
    {
      var r1 = new RegExp('<(a|b|strong|u|i|div|span|font|h1|h2|h3)(\\s[^>]*?)?/>','gi'); // mozilla httprequest hack
      var r2 = new RegExp('<\\?xml(.*?)\\?>','gi'); // opera hack
      sx = sx.replace(r2,'').replace(r1, '<$1$2></$1>');
      if(ivy.browser.name != 'Opera' && _refresh4show.getAttribute('moz-hacked') != 'true') { // ff refresh nem tartalmazos hiba hack
        var i = 0;
        var c = _refresh4show.parentNode.childNodes;
        while (i < c.length && c[i] != _refresh4show) i++;
        if(i<c.length) {
          _refresh4show.parentNode.removeChild(c[i+1]);
          _refresh4show.setAttribute('moz-hacked','true');
        }    
      }
    }*/
    if (location.href.indexOf('debug=true') != -1) copyToClipboard(sx);
    globalString = sx;
    setTimeout('PutString()', 10);
    
    if (ivy.browser.isIE) xml.setProperty("SelectionLanguage", "XPath");
    var script = ivy.xml.xpath.eval(xml, "//script");
    var s;
    while(s = ivy.xml.xpath.iterate(script)) {
        try {
            var val = ivy.xml.xpath.valueOf(s);
            if (val == '' && s.firstChild) val = ivy.xml.xpath.valueOf(s.firstChild);
            eval(val);
        }
        catch(e) {alert(e.description)}
    }    
    //_refreshSource.innerHTML = sx;
  }
  //alert(_refreshSource.innerHTML);
}

function PutString()
{
	_refreshSource.innerHTML = globalString;
}

//-----telepkeresajax-------------------
function refreshCallbackTelep(wr) {
  var xml = wr.requester.responseXML;
  if(location.href.indexOf('debug=true') != -1) copyToClipboard(ivy.xml.serialize(xml));
  if(_refresh4show != null) {
    var sx = ivy.xml.serialize(xml);
    if(!ivy.browser.isIE) {
      var r1 = new RegExp('<(a|b|strong|u|i|div|span|font|h1|h2|h3)(\\s[^>]*?)?/>','gi'); // mozilla httprequest hack
      var r2 = new RegExp('<\\?xml(.*?)\\?>','gi'); // opera hack
      sx = sx.replace(r2,'').replace(r1, '<$1$2></$1>');
      if(ivy.browser.name != 'Opera' && _refresh4show.getAttribute('moz-hacked') != 'true') { // ff refresh nem tartalmazos hiba hack
        var i = 0;
        var c = _refresh4show.parentNode.childNodes;
        while (i < c.length && c[i] != _refresh4show) i++;
        if(i<c.length) {
          _refresh4show.parentNode.removeChild(c[i+1]);
          _refresh4show.setAttribute('moz-hacked','true');
        }    
      }
    }
    if (location.href.indexOf('debug=true') != -1) copyToClipboard(sx);
    _refreshSource.innerHTML = sx;
    //var ti=document.getElementById('telep_inner');
    //if(ti) ti.focus();
    /*var o = document.getElementById('telep_inner');
    if (o == null || o.options.length < 3) {
		document.getElementById('telep_form').submit();
    }*/
  }
}

function refreshCallbackTelepPanel(wr) {
  var xml = wr.requester.responseXML;
  if(location.href.indexOf('debug=true') != -1) copyToClipboard(ivy.xml.serialize(xml));
  if(_refresh4show != null) {
    var sx = ivy.xml.serialize(xml);
    if(!ivy.browser.isIE) {
      var r1 = new RegExp('<(a|b|strong|u|i|div|span|font|h1|h2|h3)(\\s[^>]*?)?/>','gi'); // mozilla httprequest hack
      var r2 = new RegExp('<\\?xml(.*?)\\?>','gi'); // opera hack
      sx = sx.replace(r2,'').replace(r1, '<$1$2></$1>');
      if(ivy.browser.name != 'Opera' && _refresh4show.getAttribute('moz-hacked') != 'true') { // ff refresh nem tartalmazos hiba hack
        var i = 0;
        var c = _refresh4show.parentNode.childNodes;
        while (i < c.length && c[i] != _refresh4show) i++;
        if(i<c.length) {
          _refresh4show.parentNode.removeChild(c[i+1]);
          _refresh4show.setAttribute('moz-hacked','true');
        }    
      }
    }
    if (location.href.indexOf('debug=true') != -1) copyToClipboard(sx);
    _refreshSource.innerHTML = sx;
    var o = document.getElementById('telep_panel_inner');
    if (o == null || o.options.length < 3) {
		document.getElementById('telep_form_panel').submit();
    }
  }
}
