var request = false;
   try {
     request = new XMLHttpRequest(); 
   } catch (trymicrosoft) {
     try {
       request = new ActiveXObject("Msxml2.XMLHTTP");
     } catch (othermicrosoft) {
       try {
         request = new ActiveXObject("Microsoft.XMLHTTP");
       } catch (failed) {
         request = false;
       }  
     }
   }
   //if (!request)
     //alert("Error initializing XMLHttpRequest!");
	
function $(id) {return document.getElementById(id);}


window.onload=function(){init()};

function init() {	
	
	$('okButton').onclick=function(){send($('website').value, $('keywordsField').value)};
	document.onkeydown=function(e){
		if (!e) var e = window.event; 
		if ((e.keyCode==13)&&($('okButton')!=undefined)) {
			//alert('1');
			send($('website').value, $('keywordsField').value)
		}
	};
	if ($('formPreloader')!=undefined) set_opacity($('formPreloader'), 0);
}

var down=0;

function send (website, keywords) {
	if (!isUrl($('website').value)) {
		showErrorBaloon('websiteForm', 'Please enter a valid url!');
		return;
	}
	if ($('keywordsField').value=='') {
		showErrorBaloon('keywordsForm', 'Please enter keywords!');
		return;
	}
	//alert($('keywordsField').value);
	
	//$('shadow').style.display='block';
	
	$('formPreloader').style.display='block';
	animateOp($('formPreloader'),1,0.1,10);
	
	if (down==1) {
		$('resultsHere').innerHTML='';
		clearTimeout(globalTimer);
		scrollUp($('form'), $('formInner'), 0, parseInt(getStyle($('form'),'height')),  parseInt(getStyle($('formInner'),'height')),  parseInt(getStyle($('form'),'height')));
	}
	var searchEngines = new Array();
	searchEngines['google']=$('googleCh').checked;
	searchEngines['yahoo']=$('yahooCh').checked;
	searchEngines['msn']=$('msnCh').checked;
	//searchEngines['aol']=$('aolCh').checked;
	//searchEngines['ask']=$('askCh').checked;
	var limit=$('limit').value;
	if ($('local').checked) { 
		var local = 1;
	} else {
		var local = 0;
	}
	
	var url="/ajaxWorkers/engine.php";
	request.open("POST", url, true);
	request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	request.setRequestHeader("Accept-Charset", "utf8");
	request.onreadystatechange = function()
	{
		if (request.readyState == 4) 
			if (request.responseText!='')  {
				$('formPreloader').style.display='none';
				set_opacity($('formPreloader'), 0);
				
				//alert(request.responseText);
				
				var answer = eval('('+request.responseText+')');
				
				var additionalData = answer["additionalData"];
				
				if (answer['error']=='')
				{
					var count=0;
					for (var z in answer['searchEngines']) {
						count++;
					}
					if (count>0)
					{
						scrollDown($('form'), $('formInner'), 0, 240, 270,  count, answer['searchEngines'], answer['additionalData'], answer['searchEngineLink']);
					}
				}
				else {
					showErrorBaloon('websiteForm', answer['error']);
					return;
				}
			}
	};
	request.send('url='+website+'&keywords='+keywords+'&searchEngines[\'google\']='+searchEngines['google']+'&searchEngines[\'yahoo\']='+searchEngines['yahoo']+'&searchEngines[\'msn\']='+searchEngines['msn']+'&searchEngines[\'aol\']='+searchEngines['aol']+'&searchEngines[\'ask\']='+searchEngines['ask']+'&limit='+limit+'&country='+$('country').value+'&local='+local);	
}

var globalTimer;
function scrollDown(form, subform, pos, valueForm, valueSubForm, count, searchEngines, additionalData, searchEngineLinks) {
	if (pos<count*38) {
		if (down==0) {
			pos+=5;
			form.style.height=(valueForm+pos)+'px';
			subform.style.height=(valueSubForm+pos)+'px';
		}
		globalTimer = setTimeout(function(){scrollDown(form, subform, pos, valueForm, valueSubForm, count, searchEngines, additionalData, searchEngineLinks)}, 10);
	}
	else
	{
		down=1;
		showResults(searchEngines, additionalData, searchEngineLinks);
	}
}

function scrollUp(form, subform, pos,  valueForm, valueSubForm, delta) {
	if (delta>240) {
		pos+=5;
		delta=valueForm-pos;
		form.style.height=(valueForm-pos)+'px';
		subform.style.height=(valueSubForm-pos)+'px';
		globalTimer = setTimeout(function(){scrollUp(form, subform, pos,  valueForm, valueSubForm, delta)}, 10);
	}
	else
	{
		down=0;
	}
}

function showResults(searchEngines, additionalData, searchEngineLinks) {	

	var gold = new Image();
	gold.src='/i/goldstar.png';
	var silver = new Image();
	silver.src='/i/silverstar.png';
	var bronze = new Image();
	bronze.src='/i/bronzestar.png';
	var trash = new Image();
	trash.src='/i/fakestar3.png';
	var x = new Image();
	x.src='/i/x.png';
	
	var div = $('resultsHere');
	for (var z in searchEngines) {
	
		var child = document.createElement('div');
		path=str_replace('\'', '', z);
		
		var baloonInner='';
		if (additionalData!=undefined) {
		for (var addKey in additionalData[z]) {
			if (additionalData[z][addKey]!=undefined) {
				//if (isUrl(additionalData[z][addKey])) {
					//var anchor='<a href="'+additionalData[z][addKey]+'" target="_blank">'+additionalData[z][addKey]+'</a>';
				//} else {
					var anchor = additionalData[z][addKey];
				//}
				baloonInner+='<span style="color:#000; font-style:italic;font-weight:bolder; font-size:1.1em">'+addKey+': </span><span style="color:#000; font-size:0.9em">'+anchor+'</span><div class="wrap" style="height:3px"></div>';
			}
		}}
		var star = '';
		if (parseInt(searchEngines[z])<=10) var star = '<img src="'+gold.src+'" alt=""  class="star" title="Congratulations on a top result! You have a SimpleRanking gold medal!" />';
		else if ((parseInt(searchEngines[z])>=11)&&(parseInt(searchEngines[z])<=20)) var star = '<img src="'+silver.src+'" alt="" class="star" title="Congratulations on a top result! You have a SimpleRanking silver medal!" />';
		else if ((parseInt(searchEngines[z])>=21)&&(parseInt(searchEngines[z])<=30)) var star = '<img src="'+bronze.src+'" alt="" class="star" title="Congratulations on a top result! You have a SimpleRanking bronze medal!" />';
		else if (parseInt(searchEngines[z])>=31) var star = '<img src="'+trash.src+'" alt="" class="star" title="Oh no! This website has a very poor ranking. SEO is required to improve the result." />';
		else var star = '<img src="'+x.src+'" alt="" class="star x" title=":(" />';
		
		if (baloonInner!='') {
			var moreinfo='<div class="moreinfo"><span class="moreinfoLink">more info</span><div class="baloon">'+baloonInner+'<div class="triangle"></div></div></div>';
		} else var moreinfo='<div class="moreinfo" style="width:57px">&nbsp;</div>';
		
		if (searchEngineLinks[z]!='') {
			var icon='<a href="'+searchEngineLinks[z]+'" title="go to this page" target="_blank">'+'<img src="/i/'+path+'LogoBig.png" style="border:none" /></a>';
		} else {
			var icon = '<img src="/i/'+path+'LogoBig.png" style="border:none" />';
		}
		
		child.innerHTML ='<div style="float:left">'+icon+'</div><div class="result" style="color:#fff"><div style="float:left; width:100px;"><span style="color:#fff; font-size:12px; font-weight:100">Position</span> '+searchEngines[z]+'</div>'+star+moreinfo+'</div><div class="wrap"></div>';
		
		//alert(child.innerHTML);
		
		div.appendChild(child);
	}
}


function str_replace(search, replace, subject) {
    return subject.split(search).join(replace);
}

function getStyle(elem, prop)
{
  if (typeof elem!="object") elem = document.getElementById(elem);
  
  // external stylesheet for Mozilla, Opera 7+ and Safari 1.3+
  if (document.defaultView && document.defaultView.getComputedStyle)
  {
    if (prop.match(/[A-Z]/)) prop = prop.replace(/([A-Z])/g, "-$1").toLowerCase();
    return document.defaultView.getComputedStyle(elem, "").getPropertyValue(prop);
  }
  
  // external stylesheet for Explorer and Opera 9
  if (elem.currentStyle)
  {
    var i;
    while ((i=prop.indexOf("-"))!=-1) prop = prop.substr(0, i) + prop.substr(i+1,1).toUpperCase() + prop.substr(i+2);
    return elem.currentStyle[prop];
  }
  
  return "";
}

function isUrl(s) {
	//var regexp = /^(https?:\/\/)?([\w\.]+)\.([a-z]{2,6}\.?)(\/[\w\.]*)*\/?$/
	//var regexp = /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-=:\?]*)*\/?$/
	//return regexp.test(s);
	return true;
}

function showErrorBaloon(parentDivId, errorText) {
	$(parentDivId).style.position='relative';
	var div = document.createElement('div');
	div.style.position='absolute';
	div.style.color='red';
	div.style.fontSize='10px';
	div.style.top='8px';
	div.style.right='30px';
	div.innerHTML=errorText;
	$(parentDivId).appendChild(div);
	set_opacity(div, 0);
	animateOp(div, 1, 0.1, 30);
	setTimeout(function(){div.parentNode.removeChild(div)}, 2000);
}


var timer;
var initValue=0;
function animateOp(elem, maxValue, inc, pause)
{
	//static timer;
	//alert(parseInt(elem.style.opacity));
	//alert(elem.style.width);
	clearInterval(timer);
	if ((parseInt(elem.style.opacity) < maxValue) || (isNaN(parseInt(elem.style.opacity))))////break; 
	{
		//alert('!');
		set_opacity(elem, initValue + inc);
		initValue+=inc;
		timer = setTimeout(function(){animateOp(elem, maxValue, inc, pause);}, pause);
	}else initValue=0;
}


function set_opacity(el, o)
{
	//var el = document.getElementById(id);
	
	var opacityProp = getOpacityProperty();
	if (opacityProp=="filter")  // Internet Exploder 5.5+
	{
		o*=100;
		el.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity="+o+")";
	}
	else el.style.opacity=o;
}

function getOpacityProperty()
{
  if (typeof document.body.style.opacity == 'string') // CSS3 compliant (Moz 1.7+, Safari 1.2+, Opera 9)
    return 'opacity';
  else if (typeof document.body.style.MozOpacity == 'string') // Mozilla 1.6 &#232; &#236;&#235;&#224;&#228;&#248;&#229;, Firefox 0.8 
    return 'MozOpacity';
  else if (typeof document.body.style.KhtmlOpacity == 'string') // Konqueror 3.1, Safari 1.1
    return 'KhtmlOpacity';
  else if (document.body.filters && navigator.appVersion.match(/MSIE ([\d.]+);/)[1]>=5.5) // Internet Exploder 5.5+
    return 'filter';

  return false; //&#237;&#229;&#242; &#239;&#240;&#238;&#231;&#240;&#224;&#247;&#237;&#238;&#241;&#242;&#232;
}