// url encode

function encode(str) {
	var result = "";
	
	for (i = 0; i < str.length; i++) {
		if (str.charAt(i) == " ") result += "+";
		else result += str.charAt(i);
	}
	
	return escape(result);
}

function decode(str) {
//	var result = "";

 	var result = str.replace(/\+/g, " ");
	
/*	
	for (i = 0; i< str.length; i++) {
		if (str.charAt(i) == "+") result += " ";
		else result += str.charAt(i);
	}
*/
	return unescape(result);
}

// preload images

if (document.images)
{
  pic1= new Image(16,16); 
  pic1.src="images/ball.gif";
	
	pic2= new Image(12,12); 
	pic2.src="images/bargraph.gif";
	
	pic7= new Image(15,15);
	pic7.src="images/check.gif";
	
	pic9= new Image(15,12);
	pic9.src="images/camera3.gif"; 
}

// combobox change event

function cboChange()
{
  window.location='?keyword=' + document.getElementById('keyword').value + '&gnum=' + document.getElementById('gnum').value;
}

//----------------------AJAX----------------------------------------



// This function checks to see what kind of XMLHttpRequest onject it should create based on your browser

function getXmlHttpRequestObject() 
{
	if (window.XMLHttpRequest) 
	{
		return new XMLHttpRequest();
	} 
	else if(window.ActiveXObject) 
	{
		return new ActiveXObject("Microsoft.XMLHTTP");
	} 
	else 
	{
		alert('Status: Cound not create XmlHttpRequest Object.' +
		'Consider upgrading your browser.');
	}
}

// declaring variables to hold the xmlhttp objects

var recKeywords = getXmlHttpRequestObject();


function findTop10(keyword) 

{
  var spanArea = document.getElementById("mainloader");
	var gnum = document.getElementById("gnum");
	var fdata = document.getElementById("fdata");
	if(keyword != "")

	{

	  if (recKeywords.readyState == 4 || recKeywords.readyState == 0) 

		{
		  recKeywords.open("GET", 't10spider.php?terms=' + keyword + '&fdata=' + fdata.checked + '&gnum=' + gnum.value, true);
			spanArea.innerHTML = "Loading...  <img src='images/ball.gif'>";
			recKeywords.onreadystatechange = handleFindTop10; 

		  recKeywords.send(null);
	  }

	}

}

function handleFindTop10() 

{

  var spanArea = document.getElementById("mainloader");

  if (recKeywords.readyState == 4) 

	{

    if (recKeywords.status == 200) 

		{

      var response = recKeywords.responseText;

			var t10Array = new Array();
			t10Array = response.split("::::");
			var gnum = document.getElementById("gnum");
			
			var ajaxArray = new Array();
			for(i=1;i<parseInt(gnum.value)+1;i++)
			{
			  var urlstr = "";
				if(t10Array[i].length > 18)
				{
				  urlstr = t10Array[i].substr(7, 20) + "...";
				}
				else
				{
				  urlstr = t10Array[i].substr(7);
				}
			  document.getElementById("t10result"+(i)).innerHTML = "<a href='" + t10Array[i] + "' target='_blank' title='Source: " + t10Array[i] + "'>" + urlstr + "</a>";
			  ajaxArray[i] = new clsXHRO();
				ajaxArray[i].XHRO_Grabber(t10Array[i], recArray[i], (i), "spinner" + (i));
			}
			
			spanArea.innerHTML = t10Array[0];

    }

    else

    {

      spanArea.innerHTML = "Having some problems retreiving the keywords.";

    }

  }



  return true;

}

// AJAX Class that requests data from a php script and displays it
function clsXHRO()
{
  var spanArea = "";
	var t10result = ""
	var ageArea = "";
	var alexaArea = "";
	var giArea = "";
	var yilArea = "";
	var ydArea = "";
	var govArea = "";
	var eduArea = "";
	var dmozArea = "";
	var wikiArea = "";
	var delArea = "";
	var ilqArea = "";
	var picArea = "";
  var xobj = "";
	var fdata = document.getElementById("fdata");
	this.XHRO_Grabber = XHRO_Grabber;
	this.Handle_XHRO = Handle_XHRO;
 
  function XHRO_Grabber(website, xhro, id, lid)
  {
    xobj = xhro;
    spanArea = document.getElementById("pr" + id);
		
		ageArea = document.getElementById("age" + id);
		alexaArea = document.getElementById("alexa" + id);
		giArea = document.getElementById("gi" + id);
		yilArea = document.getElementById("yil" + id);
		ydArea = document.getElementById("yd" + id);
    govArea = document.getElementById("gov" + id);
    eduArea = document.getElementById("edu" + id);
    dmozArea = document.getElementById("dmoz" + id);
    wikiArea = document.getElementById("wiki" + id);
    delArea = document.getElementById("del" + id);
		ilqArea = document.getElementById("ilq" + id);
		t10result = document.getElementById("t10result" + id);

		picArea = document.getElementById(lid);
  	
  	if(website != "")
  	{
  	  if (xobj.readyState == 4 || xobj.readyState == 0) 
  		{
  		  picArea.innerHTML = "<img src='images/ball.gif'>";
				//alert(fdata);
  		  xobj.open("GET", 'statspider.php?url=' + website + '&fdata=' + fdata.checked, true);
        xobj.onreadystatechange = Handle_XHRO; 
  		  xobj.send(null);
				
  	  }
  	}
  }
  
  function Handle_XHRO()
  {
    if (xobj.readyState == 4) 
  	{
      if (xobj.status == 200) 
  		{
        var response = xobj.responseText;
				//alert(response);
				picArea.innerHTML = "<img src='images/check.gif'>";
				var statSplit = new Array();
				statSplit = response.split("::::");
				if(statSplit[12] != null)
				{
				  t10result.innerHTML = t10result.innerHTML + " " + statSplit[12];
  			}
				spanArea.innerHTML = statSplit[0];
				ageArea.innerHTML = "<span style='color: #019F2A;'>" + statSplit[1] + "</span>";
				alexaArea.innerHTML = "<span style='color: #019F2A;'>" + statSplit[2] + "</span>";
				giArea.innerHTML = "<span style='color: #019F2A;'>" + statSplit[3] + "</span>";
				yilArea.innerHTML = "<span style='color: #019F2A;'>" + statSplit[4] + "</span>";
				ydArea.innerHTML = "<span style='color: #019F2A;'>" + statSplit[5] + "</span>";
				govArea.innerHTML = "<span style='color: #019F2A;'>" + statSplit[6] + "</span>";
				eduArea.innerHTML = "<span style='color: #019F2A;'>" + statSplit[7] + "</span>";
				dmozArea.innerHTML = "<span style='color: #019F2A;'>" + statSplit[8] + "</span>";
				wikiArea.innerHTML = "<span style='color: #019F2A;'>" + statSplit[9] + "</span>";
				delArea.innerHTML = "<span style='color: #019F2A;'>" + statSplit[10] + "</span>";
				
				ilqArea.innerHTML = "<span style='color: #019F2A;'>" + statSplit[11] + "</span>";
      }
      else
      {
        spanArea.innerHTML = "error(3)";
      }
    }
  
    return true;
  
  }
}

function genURL()
{
    //var keyword = document.getElementById("websites");	
	//window.location = "?websites=" + keyword.value.replace(/ /g, "");	
	if(document.getElementById("txtSecurityCode") && document.getElementById("txtSecurityCode").value == '')
    {
	    alert("Please enter Security Code");
   		document.getElementById("txtSecurityCode").focus();
   		return false;
	}
	else if(document.getElementById("txtSecurityCode") &&  document.getElementById("txtSecurityCode").value != '')
    {        
			var url = '../validate-captcha.php';
			//Set up the parameters of our AJAX call
			var postStr = document.getElementById("txtSecurityCode").name + "=" + encodeURIComponent( document.getElementById("txtSecurityCode").value );
			//Call the function that initiate the AJAX request
			makeToolRequest(url, postStr);
			return false;
	}
	else
	{		
		var keyword = document.getElementById("websites");	
		window.location = "?websites=" + keyword.value.replace(/ /g, "");
		return true;
	}
}

function startCheck()
{
	if(document.getElementById("txtSecurityCode") && document.getElementById("txtSecurityCode").value == '')
    {
	    alert("Please enter Security Code");
   		document.getElementById("txtSecurityCode").focus();
   		return false;
	}
	else if(document.getElementById("txtSecurityCode") &&  document.getElementById("txtSecurityCode").value != '')
    {        
			var url = '../validate-captcha.php';
			//Set up the parameters of our AJAX call
			var postStr = document.getElementById("txtSecurityCode").name + "=" + encodeURIComponent( document.getElementById("txtSecurityCode").value );
			//Call the function that initiate the AJAX request
			makeToolRequest1(url, postStr);
			return false;
	}
	else
	{		
		getTracker("tool8");
		var keyword = document.getElementById("websites");
	    var websites = keyword.value.replace(/ /g, "");	
		var websitesArray = new Array();
		websitesArray = websites.split(",");	
		for(i=0;i<10;i++)
		{
			document.getElementById("t10result"+(i+1)).innerHTML = "";
			document.getElementById("pr"+(i+1)).innerHTML = "";
			document.getElementById("age"+(i+1)).innerHTML = "";
			document.getElementById("alexa"+(i+1)).innerHTML = "";
			document.getElementById("gi"+(i+1)).innerHTML = "";
			document.getElementById("yil"+(i+1)).innerHTML = "";
			document.getElementById("yd"+(i+1)).innerHTML = "";
			document.getElementById("gov"+(i+1)).innerHTML = "";
			document.getElementById("edu"+(i+1)).innerHTML = "";
			document.getElementById("dmoz"+(i+1)).innerHTML = "";
			document.getElementById("wiki"+(i+1)).innerHTML = "";
			document.getElementById("del"+(i+1)).innerHTML = "";
			document.getElementById("ilq"+(i+1)).innerHTML = "";
			document.getElementById("spinner"+(i+1)).innerHTML = "";
		}
		
		if(websitesArray.length < 11)
		{
	  	
	  	var ajaxArray = new Array();
	  	for(i=1;i<websitesArray.length+1;i++)
	  	{
	  	  var newsite = "";
	  				if(websitesArray[i-1].substr(0, 7) != "http://")
	        	{
	        	  newsite = "http://" + websitesArray[i-1];
	        	}
	  				else
	  				{
	  				  newsite = websitesArray[i-1];
	  				}
	  	  var urlstr = "";
	  	  if(websitesArray[i-1].length > 15)
	  				{
	  				  urlstr = websitesArray[i-1].substr(0, 17) + "...";
	  				}
	  				else
	  				{
	  				  urlstr = websitesArray[i-1];
	  				}
	  			  document.getElementById("t10result"+(i)).innerHTML = "<a href='" + newsite + "' target='_blank' title='Source: " + websitesArray[i-1] + "'>" + urlstr + "</a>";
	  			  
	  				
	  				
	  				ajaxArray[i] = new clsXHRO();
	  				ajaxArray[i].XHRO_Grabber(newsite, recArray[i], (i), "spinner" + (i));
	  			}
	  	//findTop10(keyword.value);
	  	//alert(keyword.value);
		}
		else
		{
		  alert("Warning: The maximum number of websites you can search is 10.");
		}		
	}   
}

// ----------------- Tracker ------------------------------------------------------------------

var recTracker = getXmlHttpRequestObject();

function getTracker(type) 
{
	  if (recTracker.readyState == 4 || recTracker.readyState == 0) 
		{
	    recTracker.open("GET", 'tracker.php?type=' + type, true);
	

      recTracker.onreadystatechange = handleTracker; 

		  recTracker.send(null);

	  }
}

function handleTracker() 
{
  if (recTracker.readyState == 4) 
	{
    if (recTracker.status == 200) 
		{
      var response = recTracker.responseText;
    }
    else
    {

    }
  }

  return true;
}

//Initiate the AJAX request
function makeToolRequest(url, param) {
//If our readystate is either not started or finished, initiate a new request
 if (receiveReq.readyState == 4 || receiveReq.readyState == 0) {
   //Set up the connection to captcha_test.html. True sets the request to asyncronous(default) 
   receiveReq.open("POST", url, true);
   //Set the function that will be called when the XmlHttpRequest objects state changes
   receiveReq.onreadystatechange = updateToolPage; 

   //Add HTTP headers to the request
   receiveReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
   receiveReq.setRequestHeader("Content-length", param.length);
   receiveReq.setRequestHeader("Connection", "close");

   //Make the request
   receiveReq.send(param);
 }   
}

//Called every time our XmlHttpRequest objects state changes
function updateToolPage() 
{
 //Check if our response is ready
 if (receiveReq.readyState == 4) {	 
 if(receiveReq.responseText == 'Invalid security code')
 {
	 //Set the content of the DIV element with the response text
	   document.getElementById('security_code').innerHTML = receiveReq.responseText;
	   //Get a reference to CAPTCHA image
	   img = document.getElementById('imgCaptcha'); 
	   //Change the image
	   img.src = '../imageblob.php?' + Math.random();
 }
 else if(receiveReq.responseText == '<h1>Test successful!</h1>')
 {
	 //Set the content of the DIV element with the response text
	 document.getElementById('security_code').innerHTML = '';
	 //document.getElementById('frmTool').submit();
	 var keyword = document.getElementById("websites");	
	 window.location = "?websites=" + keyword.value.replace(/ /g, "");
	 return true;
 }   
 } 
}

//Gets the browser specific XmlHttpRequest Object 
function getXmlHttpRequestObject1() {
 if (window.XMLHttpRequest) {
    return new XMLHttpRequest(); //Mozilla, Safari ...
 } else if (window.ActiveXObject) {
    return new ActiveXObject("Microsoft.XMLHTTP"); //IE
 } else {
    //Display our error message
    alert("Your browser doesn't support the XmlHttpRequest object.");
 }
}

//Our XmlHttpRequest object
var receiveReq = getXmlHttpRequestObject1();

function makeXmlHttpRequest()
{
    var xmlhttp = false;
    if (window.XMLHttpRequest)
    {
        xmlhttp=new XMLHttpRequest()
    }
    else if (window.ActiveXObject)
    {
        try
        {
            xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e)
        {
            try
            {
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch(E)
            {
                window.location.reload('uploadFile.aspx');
            }
        }
    }
    return xmlhttp;
}


//Initiate the AJAX request
function makeToolRequest1(url, param) {
//If our readystate is either not started or finished, initiate a new request
 if (receiveReq.readyState == 4 || receiveReq.readyState == 0) {
   //Set up the connection to captcha_test.html. True sets the request to asyncronous(default) 
   receiveReq.open("POST", url, true);
   //Set the function that will be called when the XmlHttpRequest objects state changes
   receiveReq.onreadystatechange = updateToolPage1; 

   //Add HTTP headers to the request
   receiveReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
   receiveReq.setRequestHeader("Content-length", param.length);
   receiveReq.setRequestHeader("Connection", "close");

   //Make the request
   receiveReq.send(param);
 }   
}

//Called every time our XmlHttpRequest objects state changes
function updateToolPage1() 
{
 //Check if our response is ready
 if (receiveReq.readyState == 4) {	 
 if(receiveReq.responseText == 'Invalid security code')
 {
	 //Set the content of the DIV element with the response text
	   document.getElementById('security_code').innerHTML = receiveReq.responseText;
	   //Get a reference to CAPTCHA image
	   img = document.getElementById('imgCaptcha'); 
	   //Change the image
	   img.src = '../imageblob.php?' + Math.random();
 }
 else if(receiveReq.responseText == '<h1>Test successful!</h1>')
 {
	 //Set the content of the DIV element with the response text
	 document.getElementById('security_code').innerHTML = '';
	 //document.getElementById('frmTool').submit();
	 getTracker("tool8");
		var keyword = document.getElementById("websites");
	    var websites = keyword.value.replace(/ /g, "");	
		var websitesArray = new Array();
		websitesArray = websites.split(",");	
		for(i=0;i<10;i++)
		{
			document.getElementById("t10result"+(i+1)).innerHTML = "";
			document.getElementById("pr"+(i+1)).innerHTML = "";
			document.getElementById("age"+(i+1)).innerHTML = "";
			document.getElementById("alexa"+(i+1)).innerHTML = "";
			document.getElementById("gi"+(i+1)).innerHTML = "";
			document.getElementById("yil"+(i+1)).innerHTML = "";
			document.getElementById("yd"+(i+1)).innerHTML = "";
			document.getElementById("gov"+(i+1)).innerHTML = "";
			document.getElementById("edu"+(i+1)).innerHTML = "";
			document.getElementById("dmoz"+(i+1)).innerHTML = "";
			document.getElementById("wiki"+(i+1)).innerHTML = "";
			document.getElementById("del"+(i+1)).innerHTML = "";
			document.getElementById("ilq"+(i+1)).innerHTML = "";
			document.getElementById("spinner"+(i+1)).innerHTML = "";
		}
		
		if(websitesArray.length < 11)
		{
	  	
	  	var ajaxArray = new Array();
	  	for(i=1;i<websitesArray.length+1;i++)
	  	{
	  	  var newsite = "";
	  				if(websitesArray[i-1].substr(0, 7) != "http://")
	        	{
	        	  newsite = "http://" + websitesArray[i-1];
	        	}
	  				else
	  				{
	  				  newsite = websitesArray[i-1];
	  				}
	  	  var urlstr = "";
	  	  if(websitesArray[i-1].length > 15)
	  				{
	  				  urlstr = websitesArray[i-1].substr(0, 17) + "...";
	  				}
	  				else
	  				{
	  				  urlstr = websitesArray[i-1];
	  				}
	  			  document.getElementById("t10result"+(i)).innerHTML = "<a href='" + newsite + "' target='_blank' title='Source: " + websitesArray[i-1] + "'>" + urlstr + "</a>";
	  			  
	  				
	  				
	  				ajaxArray[i] = new clsXHRO();
	  				ajaxArray[i].XHRO_Grabber(newsite, recArray[i], (i), "spinner" + (i));
	  			}
	  	//findTop10(keyword.value);
	  	//alert(keyword.value);
		}
		else
		{
		  alert("Warning: The maximum number of websites you can search is 10.");
		}	 
 }   
 } 
}
