var isDOM = (document.getElementById ? true : false);
var isIE4 = (document.all ? true : false);
var isNS4 = (document.layers ? true : false);

function getId( strName ) {
        if (isDOM) return document.getElementById( strName );
        if (isIE4) return document.all[ strName ];
        if (isNS4) return document.layers[ strName ];
}

var status = false;
var progress = 0;
var op_key = '';
var last_passback = 0;

 function do_call( inp )
 {
         var op_kkey_div = getId( 'op_kkey' );
         op_kkey_div.innerHTML = 'This scan ID is: <strong>' + op_key + '</strong>';

         if( status==false )
         {
                 status_log( 'do_call() : Not run, status=false;' );
                 return(false);
         }

         if( progress>=100 )
         {
                 return(false);
         }


         if( op_key=='' )
         {
                 //Send no key, and send URL
                 x_progress(0,inp,init_cb);
                 status_log( 'do_call() : OP Key= NULL' );
         }
         else
         {
                 //Send our key and send PROGRESS
                 x_progress(op_key,inp,call_cb);
         }
 }

 function init_spider( inp )
 {
         status = true;
         var url_val = document.forms['url_form'].elements['input_url'].value;
         if( url_val != '' )
         {
                 do_call( url_val );
         }
 }

 function restart_spider( )
 {
         status = false;
         progress = 0;
         passback = 0;
         do_call( '' );
 }

 function status_log( log_text )
 {
         var status_div  = getId( 'status_div' );
         status_div.innerHTML = log_text + '<br />' + status_div.innerHTML;
 }

 function call_cb( res )
 {
         var textp  = getId( 'text_progress' );
         var elem  = getId( 'status_bar' );
         //Set the progress
         passback = res[0];
         last_passback = passback;
         progress = res[1];
         ///////////////////////
         var newint = progress;
         if( newint<100 )
         {
                 elem.style.width = newint + '%';
                 textp.innerHTML = newint + '%';
                 var prog_tm_e = getId( 'prog_tm_elap' );
                 prog_tm_e.innerHTML = res[2][0] + ' Seconds';
                 var prog_tm_r = getId( 'prog_tm_remain' );
                 prog_tm_r.innerHTML = res[2][1] + ' Seconds';
                 var prog_tm_re = getId( 'prog_tm_req' );
                 prog_tm_re.innerHTML = res[2][2];
         }
         else
         {
                 textp.innerHTML = newint + '%';
                 elem.style.width = '100%';
                 elem.innerHTML = 'Redirecting...';
                 setTimeout("reportRedirect()",1000);
                 status_log('Preparing to redirect.');
         }

         if( progress<=100 )
         {
                 setTimeout('do_call(passback)',50);

                 //do_call( passback );
         }
 }

 function reportRedirect()
 {
         window.location.href = 'result/' + op_key;
 }

 function init_cb( res )
 {
         if( res[1] == 'ERROR' )
         {
                 op_key = res[0];
                 reportRedirect();
                 return;
         }

         var pg_table = getId('progress_table');
         pg_table.style.display = '';
         var in_url = getId('input_url');
         in_url.style.display = 'none';
         var prog_sec = getId('progress_section');
         prog_sec.style.display = '';

         var elem  = getId( 'status_bar' );
         //Set the operating key!!!
         op_key = res[0];
         ///////////////////////
         status_log( 'Received Key : ' + res[0] );
         do_call('');
 }

 function get_id( id_str )
 {
         return( getId(id_str) );
 }

 function button_style_stop()
 {
         var elem  = getId( 'control_button' );
         elem.src = 'images/button_stop.gif';
 }
 function button_style_start()
 {
         var elem  = getId( 'control_button' );
         elem.src = 'images/button_start.gif';
 }
 function button_style_continue()
 {
         var elem  = getId( 'control_button' );
         elem.src = 'images/button_continue.gif';
 }

 function button_does_stop()
 {
         var link  = getId( 'b_link' );
         button_style_stop();
         link.onclick = function(){ status_log('Halted process.');status=false;button_does_continue();return false; };
         link.onmouseover =function(){}
         link.onmouseout =function(){}
         return(false);
 }
 function button_does_continue()
 {
         var link  = getId( 'b_link' );
         button_style_continue();
         link.onclick = function(){ button_does_stop();status_log('Continued process.');init_spider(last_passback);return false; };
         link.onmouseover =function(){}
         link.onmouseout =function(){}
         return(false);
 }
 function button_does_start()
 {
         var link  = getId( 'b_link' );
         button_style_start();
         link.onmouseover =function(){ var button_img = getId('control_button');if(button_img.src='images/button_start.gif'){button_img.src='images/button_start_over.gif';} }
         link.onmouseout =function(){ var button_img = getId('control_button');if(button_img.src='images/button_start_over.gif'){button_img.src='images/button_start.gif';} }
         link.onclick = function(){ button_does_stop();status_log('Started process.');init_spider(last_passback);return false; };
         return(false);
 }