/*ns-primary.nyc.hnkts.net
[69.60.9.30] 
*/

/* Callback from output links */

function initandexecute(command,target,param1,param2,param3)
{
    if(timeout) {
        clearTimeout(timeout);
    }

    document.getElementById("targethost").value = target;

    switch(command) 
    {
    case 'ping':
        UI_selectping();
        document.getElementById("optping_psize").value = 56;
        document.getElementById("optping_interval").value = 1;
        document.getElementById("optping_count").value = 4;
        document.getElementById("optping_skiphn").checked = false;
        break;
    case 'trace':
        UI_selecttrace();
        document.getElementById("opttrace_maxhops").value = 30;
        document.getElementById("opttrace_skiphn").checked = false;
        break;
    case 'ns':
        UI_selectns();
        //if(param1 != '') 
        //    document.getElementById("optns_nshost").value = param1;
        if(param2 != '') 
            document.getElementById("optns_infotype").value = param2;
        else
            document.getElementById("optns_infotype").value = 'any';
        break;
    case 'whois':
        UI_selectns();
        break;
    }

    doaction();
}

/* Site functions */ 

function rotate_ads()
{
    document.getElementById("adframe").src = '/gad-hor.html';
    //document.getElementById("adframe2").src = '/gad.html';
    
    //document.getElementById("adframe2").src = '/gad-hor.html';
}

function stopaction()
{
    document.getElementById("framediv").innerHTML = '';
    UI_hideanim();
    UI_enablesubmit();
}

function doaction() 
{
    UI_disablesubmit();

    rotate_ads();

    UI_resetoutput();
    UI_displayanim();
    if(document.getElementById(['radping']).checked == true)
        doping();
    if(document.getElementById(['radtrace']).checked == true)
        dotrace();
    if(document.getElementById(['radwho']).checked == true)
        dowho();
    if(document.getElementById(['radipwho']).checked == true)
        doipwho();
    if(document.getElementById(['radns']).checked == true)
        dons();
    
}

var buffer;
var timeout;

function frameloaded(evt)
{
    timeout = setTimeout("errortest()",1500);
}

function errortest()
{
    if(document.getElementById("thebutton").disabled == true) 
    {
        display_result("There was an error processing your request");
        UI_hideanim();
    }
}

function write_frame(url)
{
    document.getElementById("framediv").innerHTML = "<IFRAME name='outframe' id='outframe'  onload='top.frameloaded()' width=600 src='"+url+"'></IFRAME>";
}

function doping()
{
    buffer = "<PRE>";
    var target = encodeURI(document.getElementById("targethost").value);
    var myvars = new Array(
        "targethost="+target,
        'packet='+document.getElementById("optping_psize").value,
        'interval='+document.getElementById("optping_interval").value,
        'count='+document.getElementById("optping_count").value,
        "command=ping"
        );
    if(document.getElementById("optping_skiphn").checked)
        myvars.push('noname=1');
    var url = "command.pl?"+myvars.join("&");
    //ddebug(url);
    write_frame(url);
    
}

function dotrace()
{
    buffer = "<PRE>";
    var target = encodeURI(document.getElementById("targethost").value);
    var myvars = new Array(
        "targethost="+target,
        'hops='+document.getElementById("opttrace_maxhops").value,
        "command=trace"
        );
    if(document.getElementById("opttrace_skiphn").checked)
        myvars.push('noname=1');
    var url = "command.pl?"+myvars.join("&");
    write_frame(url);
}

function dowho()
{
    buffer = "<PRE>";
    var target = encodeURI(document.getElementById("targethost").value);
    var myvars = new Array(
        "targethost="+target,
        //"whoisserver=",
        "command=whois"
        );
    /*
    if(document.getElementById("opttrace_dontred").checked)
        myvars.push('redirect=1');
    if(document.getElementById("opttrace_showred").checked)
        myvars.push('showredirects=1');*/
    var url = "command.pl?"+myvars.join("&");
    write_frame(url);
}

function doipwho()
{
    buffer = "<PRE>";
    var target = encodeURI(document.getElementById("targethost").value);

    /*oIndex = document.getElementById("optns_infotype").selectedIndex;
    oValue = document.getElementById("optns_infotype").options[oIndex].value;*/

    var myvars = new Array(
        "targethost="+target,
        //"nameserver="+document.getElementById("optipwho_nshost").value,
        //"type=ptr",
        "command=ipwhois"
        );
    var url = "command.pl?"+myvars.join("&");
    write_frame(url);
}

function dons()
{
    buffer = "<PRE>";
    var target = encodeURI(document.getElementById("targethost").value);

    oIndex = document.getElementById("optns_infotype").selectedIndex;
    oValue = document.getElementById("optns_infotype").options[oIndex].value;

    var myvars = new Array(
        "targethost="+target,
        //"nameserver="+document.getElementById("optns_nshost").value,
        "type="+oValue,
        "command=ns"
        );
    var url = "command.pl?"+myvars.join("&");
    write_frame(url);
}

/* UI functions */

function checkEnter(e){ //e is event object passed from function invocation
    var characterCode;
    
    if(e && e.which)
    { //if which property of event object is supported (NN4)
        e = e;
        characterCode = e.which; //character code is contained in NN4's which property
    }
    else
    {
        e = event;
        characterCode = e.keyCode; //character code is contained in IE's keyCode property
    }
    
    if(characterCode == 13)
    { //if generated character code is equal to ascii 13 (if enter key)
        if(document.getElementById("thebutton").disabled == false) 
            doaction();
        return false;
    }
    else
    {
        return true;
    }
}


function UI_resetoutput()
{
    document.getElementById("outputdiv").innerHTML = '';
}

function display_result(text)
{
    buffer += text;
    var output = buffer + "</PRE>";
    document.getElementById("outputdiv").innerHTML = output;
}

function UI_enablesubmit()
{
    document.getElementById("thebutton").disabled = false;
}

function UI_disablesubmit()
{
    document.getElementById("thebutton").disabled = true;
}

function UI_displayanim()
{
    document.getElementById(['stopbutton']).style.display = 'block';
    document.getElementById(['thebutton']).style.display = 'none';
    document.getElementById(['gifanim']).style.display = 'block';
}

function UI_hideanim()
{
    if(timeout) 
    {
        clearTimeout(timeout);
    }
    document.getElementById(['thebutton']).style.display = 'block';
    document.getElementById(['stopbutton']).style.display = 'none';
    document.getElementById(['gifanim']).style.display = 'none';
    UI_enablesubmit();
}

function UI_selectping()
{
    UI_radioreset();
    UI_enablesubmit();
    document.getElementById(['radping']).checked = true;
    document.getElementById(['optping']).style.display = 'block';
}
function UI_selecttrace()
{
    UI_radioreset();
    UI_enablesubmit();
    document.getElementById(['radtrace']).checked = true;
    document.getElementById(['opttrace']).style.display = 'block';
}
function UI_selectwho()
{
    UI_radioreset();
    UI_enablesubmit();
    document.getElementById(['radwho']).checked = true;
    document.getElementById(['optwho']).style.display = 'block';
}
function UI_selectipwho()
{
    UI_radioreset();
    UI_enablesubmit();
    document.getElementById(['radipwho']).checked = true;
    document.getElementById(['optipwho']).style.display = 'block';
}
function UI_selectns()
{
    UI_radioreset();
    UI_enablesubmit();
    document.getElementById(['radns']).checked = true;
    document.getElementById(['optns']).style.display = 'block';
}

function UI_radioreset()
{
    stopaction();
    document.getElementById(['radping']).checked = false;
    document.getElementById(['radtrace']).checked = false;
    document.getElementById(['radwho']).checked = false;
    document.getElementById(['radipwho']).checked = false;
    document.getElementById(['radns']).checked = false;
    document.getElementById(['optping']).style.display = 'none';
    document.getElementById(['opttrace']).style.display = 'none';
    document.getElementById(['optwho']).style.display = 'none';
    document.getElementById(['optipwho']).style.display = 'none';
    document.getElementById(['optns']).style.display = 'none';
}


/* Function library */
function ajax(url, vars, callbackFunction)
{
  var request = window.XMLHttpRequest ? 
      new XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP.3.0");
  
  request.open("POST", url, true);
  request.setRequestHeader("Content-Type",
                           "application/x-www-form-urlencoded"); 

  request.onreadystatechange = function()
  {
    nua = navigator.userAgent;
    if (nua.indexOf( 'Firefox' ) != -1 && request.readyState == 3 && request.status == 200)
    {
        callbackFunction(request.responseText);
    }
    

    if (request.readyState == 4 && request.status == 200)
    {
      if (request.responseText)
      {
          callbackFunction(request.responseText);
      }
    }
  };
  request.send(vars);
}

if( !window.XMLHttpRequest ) XMLHttpRequest = function()
{
  try{ return new ActiveXObject("Msxml2.XMLHTTP.6.0") }catch(e){}
  try{ return new ActiveXObject("Msxml2.XMLHTTP.3.0") }catch(e){}
  try{ return new ActiveXObject("Msxml2.XMLHTTP") }catch(e){}
  try{ return new ActiveXObject("Microsoft.XMLHTTP") }catch(e){}
  throw new Error("Could not find an XMLHttpRequest alternative.")
};
