// 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);
}

// base64 encoding functions

var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

function encode64(input) {
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   do {
      chr1 = input.charCodeAt(i++);
      chr2 = input.charCodeAt(i++);
      chr3 = input.charCodeAt(i++);

      enc1 = chr1 >> 2;
      enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
      enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
      enc4 = chr3 & 63;

      if (isNaN(chr2)) {
         enc3 = enc4 = 64;
      } else if (isNaN(chr3)) {
         enc4 = 64;
      }

      output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) + 
         keyStr.charAt(enc3) + keyStr.charAt(enc4);
   } while (i < input.length);
   
   return output;
}

function decode64(input) {
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
   input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

   do {
      enc1 = keyStr.indexOf(input.charAt(i++));
      enc2 = keyStr.indexOf(input.charAt(i++));
      enc3 = keyStr.indexOf(input.charAt(i++));
      enc4 = keyStr.indexOf(input.charAt(i++));

      chr1 = (enc1 << 2) | (enc2 >> 4);
      chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
      chr3 = ((enc3 & 3) << 6) | enc4;

      output = output + String.fromCharCode(chr1);

      if (enc3 != 64) {
         output = output + String.fromCharCode(chr2);
      }
      if (enc4 != 64) {
         output = output + String.fromCharCode(chr3);
      }
   } while (i < input.length);

   return output;
}

// img preloading

pic1= new Image(16,16); 
pic1.src="images/ball.gif";

// -- trim function that gets rid of leading and proceeding blank spaces

function trimAll(sString)
{
  while (sString.substring(0,1) == ' ')
  {
    sString = sString.substring(1, sString.length);
  }
  while (sString.substring(sString.length-1, sString.length) == ' ')
  {
    sString = sString.substring(0,sString.length-1);
  }
  return sString;
}

//----------------------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();
var recSEmail = getXmlHttpRequestObject();
var recSKeywords = getXmlHttpRequestObject();
var recOKeywords = getXmlHttpRequestObject();

function findKeywords(keyword) 

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

	{

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

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

		  recKeywords.send(null);
	  }

	}

}

function handleFindKeywords() 

{

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

  if (recKeywords.readyState == 4) 

	{

    if (recKeywords.status == 200) 

		{

      var response = recKeywords.responseText;

			spanArea.innerHTML = decode(response);

    }

    else

    {

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

    }

  }



  return true;

}

// Send keywords to email

function ajSendEmail(emailaddress, selectedkeywords) 
{
	if(emailaddress != "")

	{

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

		{
		  recSEmail.open("GET", 'sendemail.php?email=' + emailaddress + '&keywords=' + selectedkeywords, true);
			recSEmail.onreadystatechange = handleajSendEmail; 

		  recSEmail.send(null);
	  }

	}

}

function handleajSendEmail() 

{

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

  if (recSEmail.readyState == 4) 

	{

    if (recSEmail.status == 200) 

		{

      var response = recSEmail.responseText;

			spanArea.innerHTML = response;

    }

    else

    {

      spanArea.innerHTML = "Timeout";

    }

  }



  return true;

}

// Save keywords ajax

function ajSaveKeywords(sdomain, spassword, sdelkeywords, skeywords, sstats) 
{
	if(sdomain != "" && spassword != "")

	{

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

		{
		  //alert(sdelkeywords);
		  recSKeywords.open("POST", 'savekeywords.php', true);
			var parameters = 'sdomain=' + sdomain + '&spassword=' + spassword + '&sdelkeywords=' + encode(sdelkeywords) + '&skeywords=' + encode(skeywords) + '&sstats=' + encode(sstats);
			
			recSKeywords.onreadystatechange = handleajSaveKeywords; 

			recSKeywords.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      recSKeywords.setRequestHeader("Content-length", parameters.length);
      recSKeywords.setRequestHeader("Connection", "close");
      recSKeywords.send(parameters);
		  //recSKeywords.send(null);
	  }

	}

}

function handleajSaveKeywords() 

{

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

  if (recSKeywords.readyState == 4) 

	{

    if (recSKeywords.status == 200) 

		{

      var response = recSKeywords.responseText;

			spanArea.innerHTML = response;

			window.location="?domain=" + document.getElementById("saveDomain").value + "&password=" + document.getElementById("savePass").value;
    }

    else

    {

      spanArea.innerHTML = recSKeywords.status;

    }

  }



  return true;

}

// Open keywords ajax

function ajOpenKeywords(odomain, opassword) 
{
	if(odomain != "" && opassword != "")

	{

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

		{
		  //alert(sdelkeywords);
		  recOKeywords.open("GET", 'openkeywords.php?odomain=' + odomain + '&opassword=' + opassword, true);
			recOKeywords.onreadystatechange = handleajOpenKeywords; 

		  recOKeywords.send(null);
	  }

	}

}

function handleajOpenKeywords() 

{

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

  if (recOKeywords.readyState == 4) 

	{

    if (recOKeywords.status == 200) 

		{

      var response = recOKeywords.responseText;

			if(response.indexOf("<font") != -1)
			{
			  spanArea.innerHTML = response;
			}
			else
			{
			  var splitArray = new Array();
				splitArray = response.split("::::");
				document.getElementById("k1").innerHTML = decode(splitArray[0]);
				document.getElementById("del").innerHTML = decode(splitArray[1]);
				document.getElementById("stats").innerHTML = decode(splitArray[2]);
				
				spanArea.innerHTML = "<font color='GREEN'>Opened.</font>";
			}
    }

    else

    {

      spanArea.innerHTML = "Timeout";

    }

  }



  return true;

}

// start the keyword search

function startCheck()
{
  getTracker("tool4");

  var keyword = document.getElementById("keyword");
	document.getElementById("ksug").innerHTML = "";
	
	if(keyword.value != "")
	{
	  findKeywords(keyword.value);
	  //alert("works");
	}
}

function delSelected(name)
{
  //alert(name);
	
	var keywordsArray = new Array();
	if (navigator.appName.indexOf('Microsoft') != -1)
  {
		keywordsArray = document.getElementById("k1").innerHTML.split('<BR>');
	}
	else
	{
    keywordsArray = document.getElementById("k1").innerHTML.split('<br>');
	}
		
	//alert(keywordsArray.length);
	
	document.getElementById("k1").innerHTML = "";
	document.getElementById("del").innerHTML = "";
	document.getElementById("stats").innerHTML = "";
	
	if(document.getElementById(name))
	{
	  document.getElementById(name).checked = false;
	}
	
	for(var i=0;i<keywordsArray.length-1;i++)
	{
		  //alert(keywordsArray[i]);
		if(trimAll(keywordsArray[i]) != name)
		{
			document.getElementById("k1").innerHTML += trimAll(keywordsArray[i]) + "<br />";
		  document.getElementById("del").innerHTML += "[<a href='javascript:delSelected(\"" + trimAll(keywordsArray[i]) + "\");'>X</a>]<br />";
		  document.getElementById("stats").innerHTML += "<a href='http://www.seocompany.ca/seotools3/index.php?keywords=" + encode(trimAll(keywordsArray[i].substr(keywordsArray[i].indexOf(" ")+1))) + "' target='_blank' title='Statistics for the keyword \"" + trimAll(keywordsArray[i].substr(keywordsArray[i].indexOf(" ")+1)) + "\"'><img src='images/bargraph.gif'></a>";
		}
	}
}

function keywordClicked(id)
{
  if(id.checked == true)
	{
	  if(document.getElementById("k1").innerHTML == "Select keywords that you have searched and they will appear here.")
		{
		  document.getElementById("k1").innerHTML = "";
		}
	
	  document.getElementById("k1").innerHTML += decode(id.name) + "<br />";
		document.getElementById("del").innerHTML += "[<a href='javascript:delSelected(\"" + decode(id.name) + "\");'>X</a>]<br />";
		var nameparse = decode(id.name);
		nameparse = encode(nameparse.substr(nameparse.indexOf(" ")+1));
	  document.getElementById("stats").innerHTML += "<a href='http://www.seocompany.ca/seotools3/index.php?keywords=" + nameparse + "' target='_blank' title='Statistics for the keyword \"" + decode(nameparse) + "\"'><img src='images/bargraph.gif'></a>";
	  /*if(document.getElementById("k1").innerHTML == "")
		{
		  document.getElementById("k1").innerHTML = id.name;
		}
		else if(document.getElementById("k2").innerHTML == "")
		{
		  document.getElementById("k2").innerHTML = id.name;
		}
		else if(document.getElementById("k3").innerHTML == "")
		{
		  document.getElementById("k3").innerHTML = id.name;
		}
		else if(document.getElementById("k4").innerHTML == "")
		{
		  document.getElementById("k4").innerHTML = id.name;
		}
		else if(document.getElementById("k5").innerHTML == "")
		{
		  document.getElementById("k5").innerHTML = id.name;
		}
		else if(document.getElementById("k6").innerHTML == "")
		{
		  document.getElementById("k6").innerHTML = id.name;
		}
		else if(document.getElementById("k7").innerHTML == "")
		{
		  document.getElementById("k7").innerHTML = id.name;
		}
		else if(document.getElementById("k8").innerHTML == "")
		{
		  document.getElementById("k8").innerHTML = id.name;
		}
		else if(document.getElementById("k9").innerHTML == "")
		{
		  document.getElementById("k9").innerHTML = id.name;
		}
		else if(document.getElementById("k10").innerHTML == "")
		{
		  document.getElementById("k10").innerHTML = id.name;
		}
		else if(document.getElementById("k11").innerHTML == "")
		{
		  document.getElementById("k11").innerHTML = id.name;
		}
		else
		{
		  id.checked = false;
			alert("Can only select a maximum of 11 keywords.");
		}*/
	}
	else
	{
	  var keywordsArray = new Array();
		if (navigator.appName.indexOf('Microsoft') != -1)
    {
		  keywordsArray = document.getElementById("k1").innerHTML.split('<BR>');
		}
		else
		{
      keywordsArray = document.getElementById("k1").innerHTML.split('<br>');
		}
		
		//alert(keywordsArray.length);
	
	  document.getElementById("k1").innerHTML = "";
		document.getElementById("del").innerHTML = "";
	  document.getElementById("stats").innerHTML = "";
	
	  for(var i=0;i<keywordsArray.length-1;i++)
		{
		  //alert(keywordsArray[i]);
		  if(trimAll(keywordsArray[i]) != decode(id.name))
			{
			  document.getElementById("k1").innerHTML += trimAll(keywordsArray[i]) + "<br />";
				document.getElementById("del").innerHTML += "[<a href='javascript:delSelected(\"" + trimAll(keywordsArray[i]) + "\");'>X</a>]<br />";
        var nameparse = decode(id.name);
      	nameparse = encode(nameparse.substr(nameparse.indexOf(" ")+1));
      	document.getElementById("stats").innerHTML += "<a href='http://www.seocompany.ca/seotools3/index.php?keywords=" + nameparse + "' target='_blank' title='Statistics for the keyword \"" + decode(nameparse) + "\"'><img src='images/bargraph.gif'></a>";
	  	}
		}
	  //document.getElementById(id.name).innerHTML = "";
	  /*if(document.getElementById("k1").innerHTML == id.name)
		{
		  document.getElementById("k1").innerHTML = "";
		}
		else if(document.getElementById("k2").innerHTML == id.name)
		{
		  document.getElementById("k2").innerHTML = "";
		}
		else if(document.getElementById("k3").innerHTML == id.name)
		{
		  document.getElementById("k3").innerHTML = "";
		}
		else if(document.getElementById("k4").innerHTML == id.name)
		{
		  document.getElementById("k4").innerHTML = "";
		}
		else if(document.getElementById("k5").innerHTML == id.name)
		{
		  document.getElementById("k5").innerHTML = "";
		}
		else if(document.getElementById("k6").innerHTML == id.name)
		{
		  document.getElementById("k6").innerHTML = "";
		}
		else if(document.getElementById("k7").innerHTML == id.name)
		{
		  document.getElementById("k7").innerHTML = "";
		}
		else if(document.getElementById("k8").innerHTML == id.name)
		{
		  document.getElementById("k8").innerHTML = "";
		}
		else if(document.getElementById("k9").innerHTML == id.name)
		{
		  document.getElementById("k9").innerHTML = "";
		}
		else if(document.getElementById("k10").innerHTML == id.name)
		{
		  document.getElementById("k10").innerHTML = "";
		}
		else if(document.getElementById("k11").innerHTML == id.name)
		{
		  document.getElementById("k11").innerHTML = "";
		}*/
	}

  //alert(id.name);
}

function eOpen()
{
  var sEmail = document.getElementById("semail");

	sEmail.style.visibility = 'visible';
}

function eClose()
{
  var sEmail = document.getElementById("semail");

	sEmail.style.visibility = 'hidden';
}

function oOpen()
{
  var oKey = document.getElementById("okey");

	oKey.style.visibility = 'visible';
}

function oClose()
{
  var oKey = document.getElementById("okey");

	oKey.style.visibility = 'hidden';
}

function sOpen()
{
  var sKey = document.getElementById("skey");

	sKey.style.visibility = 'visible';
}

function sClose()
{
  var sKey = document.getElementById("skey");

	sKey.style.visibility = 'hidden';
}

function SendEmail()
{
  var kEmail = document.getElementById("kEmail");
	var selectedKeywords = document.getElementById("k1");
	
	if(kEmail.value != "" && (selectedKeywords.innerHTML != "Select keywords that you have searched and they will appear here." || selectedKeywords.innerHTML != ""))
	{
	  if (navigator.appName.indexOf('Microsoft') != -1)
    {
      ajSendEmail(kEmail.value, selectedKeywords.innerHTML);
	  }
		else
		{
		  ajSendEmail(kEmail.value, selectedKeywords.innerHTML);
		}
	}
}

function SaveKeywords()
{
  var sDomain = document.getElementById("saveDomain");
	var sPassword = document.getElementById("savePass");
	var selectedKeywords = document.getElementById("k1");
	var delselectedKeywords = document.getElementById("del");
	var sstats = document.getElementById("stats");
	
	//alert(delselectedKeywords.innerHTML);
	
	if(sDomain.value != "" && sPassword.value != "" && (selectedKeywords.innerHTML != "Select keywords that you have searched and they will appear here." || selectedKeywords.innerHTML != ""))
	{
      ajSaveKeywords(sDomain.value, sPassword.value, delselectedKeywords.innerHTML, selectedKeywords.innerHTML, sstats.innerHTML);
	}
	
	
}

function OpenKeywords()
{
  var oDomain = document.getElementById("openDomain");
	var oPassword = document.getElementById("openPass");
	
	if(oDomain.value != "" && oPassword.value)
	{
      ajOpenKeywords(oDomain.value, oPassword.value);
	}
}

function SortKeywords()
{
  var k1span = document.getElementById("k1");
	var delspan = document.getElementById("del");
	var statspan = document.getElementById("stats");
	
	if(k1span.innerHTML != "" && k1span.innerHTML != "Select keywords that you have searched and they will appear here.")
	{
    var kCount = new Array();
	  var kKeyword = new Array();
	
	  var keywordsArray = new Array();
		if (navigator.appName.indexOf('Microsoft') != -1)
    {
		  keywordsArray = k1span.innerHTML.split('<BR>');
		}
		else
		{
      keywordsArray = k1span.innerHTML.split('<br>');
		} 
		
		for(i=0;i<keywordsArray.length-1;i++)
		{
		  kCount[i] = parseInt(keywordsArray[i].substr(0, keywordsArray[i].indexOf(" ")));
			kKeyword[i] = keywordsArray[i].substr(keywordsArray[i].indexOf(" ")+1);
			
			//alert(kCount[i] + " " + kKeyword[i]);
		}
		
	  k1span.innerHTML = "";
		delspan.innerHTML = "";
		statspan.innerHTML = "";
		
		var tempnum = 0;
		var tempkey = "";
		for(j=0;j<kCount.length;j++)
		{
		  for(k=0;k<(kCount.length-1);k++)
			{
			  if (kCount[k] < kCount[k+1])
				{
  			  tempnum = kCount[k+1];
					tempkey = kKeyword[k+1];
					
          kCount[k+1] = kCount[k];
					kKeyword[k+1] = kKeyword[k];
					
          kCount[k] = tempnum;
					kKeyword[k] = tempkey;
				}
			}
		}
		
		for(n=0;n<kCount.length;n++)
		{
		  k1span.innerHTML += kCount[n] + " " + kKeyword[n] + "<br />";
		  delspan.innerHTML += "[<a href='javascript:delSelected(\"" + trimAll(kCount[n] + " " + kKeyword[n]) + "\");'>X</a>]<br />";
      statspan.innerHTML += "<a href='http://www.seocompany.ca/seotools3/index.php?keywords=" + encode(kKeyword[n]) + "' target='_blank' title='Statistics for the keyword \"" + kKeyword[n] + "\"'><img src='images/bargraph.gif'></a>";
		}
  }
}

// ----------------- 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 (recRGYM.readyState == 4) 
	{
    if (recRGYM.status == 200) 
		{
      var response = recRGYM.responseText;
    }
    else
    {

    }
  }

  return true;
}
