
	// auto-start: attach main function to page load event
	if (window.addEventListener) 
	{
		window.addEventListener('load', SearchEngine_main, false);
	}
	else if (window.attachEvent)
	{
		window.attachEvent('onload', SearchEngine_main, false);
	}
	
	
	// LOGIC
	function SearchEngine_main()
	{
		try
		{
			var url = document.referrer;
			
			// testing only - next line must be commented !
			//url = 'http://www.google.ca/#hl=en&source=hp&q=affiliate+manager+software&btnG=Google+Search&meta=&aq=f&oq=affiliate+software&fp=11da210b3e3653dd';
			
			if ( IsSearchEngine(url)==true )
			{
				var SearchParameter = '';
				SearchParameter = GetSearchTerm(url);
				
				if ( SearchParameter != null && SearchParameter.length > 0 )
				{
					var SearchEngine = '';
					SearchEngine = GetSearchEngine(url);
					
					var Rank = 3;
					Rank = GetRanking(SearchParameter);
					
					SearchEngine_LookAndFeel(SearchEngine, SearchParameter, Rank);
				}
			}
		}
		catch(err)
		{
			
		}
	}
	
	

	function IsSearchEngine(url) // returns if the referral came from a search engine or not
	{		
		if ( url.match(/google\.|yahoo\.|bing\./) ) 
		{
			return true;
		}
		else
		{
			return false;
		}
	}
	
	
	function GetSearchEngine(url) // returns the search engine used by the client
	{
		var SearchEngine = '';
		
		if ( url.match(/google\./) )
		{
			return 'Google';
		}
		else if ( url.match(/yahoo\./) )
		{
			return 'Yahoo';			
		}
		else if ( url.match(/bing\./) )
		{
			return 'Bing';
		}
		else
		{
			return '';	
		}
	}
	
	
	function GetSearchTerm(url) // returns the search term used by the client on the search engine (based on the referral url value)
	{
		var result = '';
		var SearchEngine = '';
		SearchEngine = GetSearchEngine(url);
		
		// instantiate Query String object
		var myQueryString = new Querystring(url);
		
		// Google
		// http://www.google.ca/#hl=en&source=hp&q=affiliate+software&btnG=Google+Search&meta=&aq=f&oq=affiliate+software&fp=11da210b3e3653dd
		if ( SearchEngine == 'Google' )
		{
			result = myQueryString.get("q");
		}
		
		// Yahoo
		// http://ca.search.yahoo.com/search?p=affiliate+software&fr=yfp-t-501&type=&toggle=1&cop=&ei=UTF-8
		else if ( SearchEngine == 'Yahoo' )
		{
			result = myQueryString.get("p");
		}
		
		// Bing
		// http://www.bing.com/search?q=affiliate+software&go=&form=QBLH&filt=all&qs=n
		else if ( SearchEngine == 'Bing' )
		{
			result = myQueryString.get("q");
		}
		
		else
		{
			result = '';
		}
		
		return result;
	}
	
	
	function GetRanking(SearchParameter) // returns the ranking number of the most common search parameter keywords
	{
		try
		{
			var Rank = 3;
		
			if ( SearchParameter.toUpperCase() == 'AFFILIATE SOFTWARE' )
			{
				Rank = 1;
			}
			else if ( SearchParameter.toUpperCase() == 'AFFILIATE' )
			{
				Rank = 18;
			}
			else if ( SearchParameter.toUpperCase() == 'AFFILIATE PROGRAM SOFTWARE' )
			{
				Rank = 2;
			}
			else if ( SearchParameter.toUpperCase() == 'AFFILIATE PROGRAM' )
			{
				Rank = 20;
			}
			else if ( SearchParameter.toUpperCase() == 'AFFILIATE MANAGEMENT SOFTWARE' )
			{
				Rank = 5;
			}
			else if ( SearchParameter.toUpperCase() == 'AFFILIATE MANAGER SOFTWARE' )
			{
				Rank = 10;
			}

			else if ( SearchParameter.toUpperCase() == 'HOW TO PROGRAM SOFTWARE' )
			{
				Rank = 10;
			}
			else if ( SearchParameter.toUpperCase() == 'AFFILIATE TRACKING SOFTWARE' )
			{
				Rank = 6;
			}
			else if ( SearchParameter.toUpperCase() == 'PROGRAM SOFTWARE' )
			{
				Rank = 8;
			}
			else if ( SearchParameter.toUpperCase() == 'SOFTWARE AFFILIATE' )
			{
				Rank = 97;
			}
			else if ( SearchParameter.toUpperCase() == 'CLICK INC' )
			{
				Rank = 7;
			}
			else if ( SearchParameter.toUpperCase() == 'SOFTWARE AFFILIATE PROGRAM' )
			{
				Rank = 31;
			}
			else if ( SearchParameter.toUpperCase() == 'FREE AFFILIATE MANAGEMENT SOFTWARE' )
			{
				Rank = 8;
			}
			else if ( SearchParameter.toUpperCase() == 'AFFILIATE PROGRAMS SOFTWARE' )
			{
				Rank = 11;
			}
			else if ( SearchParameter.toUpperCase() == 'SOFTWARE AFFILIATE PROGRAM' )
			{
				Rank = 31;
			}
			else if ( SearchParameter.toUpperCase() == 'CLICK INC.' )
			{
				Rank = 2;
			}
			else if ( SearchParameter.toUpperCase() == 'CLICKINC' )
			{
				Rank = 1;
			}
			else if ( SearchParameter.toUpperCase() == 'CLICKINC.COM' )
			{
				Rank = 1;
			}
			else if ( SearchParameter.toUpperCase() == 'TIER SALE' )
			{
				Rank = 7;
			}
			else
			{
				Rank = 3;
			}
			return Rank;
		}
		catch(err)
		{
			return 3;
		}
	}


	// QUERY STRING
	function Querystring(qs) // optionally pass a querystring to parse
	{ 
		this.params = new Object()
		this.get=Querystring_get
		
		if (qs == null)
			qs=location.search.substring(1,location.search.length)
	
		if (qs.length == 0) return
		
		qs = qs.replace(/^.*(\#|\?)/mg, ''); //removes the beginning of the qs up to the parameters
		qs = qs.replace(/\+/g, ' ') //replace + for white space
		var args = qs.split('&') // parse out name/value pairs separated via &
		
		// split out each name=value pair
		for (var i=0;i<args.length;i++) {
			var value;
			var pair = args[i].split('=')
			var name = unescape(pair[0])
	
			if (pair.length == 2)
				value = unescape(pair[1])
			else
				value = name
			
			this.params[name] = value
		}
	}
	
	
	function Querystring_get(key, default_) {
		// This silly looking line changes UNDEFINED to NULL
		if (default_ == null) default_ = null;
		
		var value=this.params[key]
		if (value==null) value=default_;
		
		return value
	}
	



	// LOOK AND FEEL
	function SearchEngine_LookAndFeel(SearchEngine, Query, Rank)
	{
		document.getElementById('txtSE_SE').innerHTML = SearchEngine;
		document.getElementById('txtSE_query').innerHTML = Query;
		document.getElementById('txtSE_rank').innerHTML = Rank;		
		document.getElementById('light').style.display='block';
		document.getElementById('fade').style.display='block'
	}
	
	
	
