
this.searchfield = function(){
	
	// CONFIG 
	
	// this is id of the search field you want to add this script to. 
	// You can use your own id just make sure that it matches the search field in your html file.
	var id = "searchBox";
	
	// Text you want to set as a default value of your search field.
	var defaultText = "Enter a domain name e.g. google.com";	
	
	// set to either true or false
	// when set to true it will generate search suggestions list for search field based on content of variable below
	var suggestion = true;
	
	// static list of suggestion options, separated by comma
	// replace with your own
	var suggestionText = "1505edith.com,1573625088.slide.com,1594827008.slide.com,16partridgelane.com,1814terilyn.com,18thdistrict.com,1976hhs.com,1997.ssdiggers.com,2005.sxsw.com,2005.xl93.com,2005.z100.com,2006.sxswclick.com,2006.sxsw.com,2007.northernvoice.ca,2007.sxsw.com,21stcenturycares.org,23skidooland.com,301url.com,30boxes.com,325blossomhill3.com,360voice.com,37signals.com,3808vistaazul.com,4cventures.com,4deb.stumbleupon.com,4thehorses.com,500hats.typepad.com,5280.com,54.org,56336thave.com,580wdbo.com,5stardesign.com,63oakridgedr.com,6moons.com,6xing.net,7seconds.com,800plumbing.com,97.rustybrick.com,980waav.com,a-advantage.net,aaotracker.com,aapd.org,aaronjae.com,abcnews.go.com,abconet.com,aberree.com,academickeys.com,academyofmartialarts.org,acadianaeconomicdevelopment.org,acadiastormwolf.livejournal.com,accessatlanta.com,accessgenealogy.com,accionjoven.org,accountableelections.org,activebass.com,activeguitar.com,activerain.com,activeresult.com,adbrite.com,americanidol.com,americanwriters.org,americatop100.com,audioreview.com,apple.com,b2blog.com,Bahu.com,baincapital.com,bairnet.org,baptistpress.com,baptistpress.net,baptistpress.org,batupahat.org,baus.net,bebo.com,big12.net,bigpumpkins.com,bigsight.org,billmack.com,billmelater.com,billpicard.com,billsportfolio.com,billszone.com,biz-journal.com,bizmarktech.com,biznik.com,bk.com,boingboing.net,bolt.com,boltz.com,c2.com,cakman.com,calphotos.com,campus-watch.org,camz.com,canrelief.org,cantonrep.com,changingway.org,channel9.msdn.com,chelachivas.hi5.com,chellabear.livejournal.com,chelseaartmuseum.org,cisco.com,citigroup.com,citypages.com,citytri.com,code7r.org,codebetter.com,cokerfamily.com,colemanfamilies.org,comcast.net,corkd.com,cpan.org,craigholt.com,crazy8s.org,ctaa.org,ctan.org,d3hoops.com,d7tv.com,dailytribune.com,danyell.com,darkfantasy.org,darkreading.com,david.com,deadspin.com,dealnews.com,defcon.org,del.icio.us,Delta.com,disney.com,earthlink.net,ebay.com,eclipse.org,eco.org,ejohn.org,elvis.com,emptees.com,epi.org,espn.go.com,excite.com,ex.plode.us,facebook.com,fark.com,faves.com,friendster.com,futuretext.com,gadgetopia.com,gawker.com,geeksquad.com,geetduggal.com,gizmodo.com,gmail.com,google.com,gov.ca.gov,haikuworld.org,hallmark.edu,hotmail.com,icomix.com,iconbuffet.comicq.com,intel.com,internetwines.com,introducit.com,ipodhack.com,irongeek.com,j3rad.com,jaiku.com,jayray.com,jongo.com,joomla.org,jordancapri.com,jots.com,justin.tv,kalsey.org,kid-fit.com,kidojo.com,kinja.com,kikoy500.com,lasocialdiary.com,lastagescene.com,last.fm,leebyrne.com,leelanau.com,leepriest.net,leoville.com,lifeboat.com,lifehacker.com,lovely.com,maclive.net,mahalo.com,marcocastro.com,messengernews.net,messengers.org,michaelhussey.com,msdn.microsoft.com,msn.com,mugshot.org,myspace.com,nba.com,newhoo.com,nya.org,nymag.com,nytimes.com,nysocialscene.com,oaaa.org,olympic.org,on10.net,peekyou.com,p2pnet.net,pacswim.org,peerflix.com,peopleassets.org,peoplesearch.com,photobucket.com,pinoyhack.com,pipl.com,plastic.com,podcast.com,podcasternews.com,pointshop.com,pork.org,postmagazine.com,postmagazine.com,queenslibrary.org,ratemyface.com,ratemyprofessors.com,ratemystay.com,ratemyteachers.com,ratemyteachers.co.uk,ratemyteachers.ie,ratingz.net,reddit.com,reviewtimes.comrevision3.com,rn.com,roadbikereview.com,rockyou.com,scobleizer.com,secondlife.com,seo.com,shadowboxing.com,shapali.com,shopwiki.com,siteone.com,skv.com,slashdot.org,slickdeals.net,sourceware.org,spock.com,teamsugar.com,techburgh.com,techcocktail.com,technocrat.net,techonweb.com,thewho.net,twitter.com,twit.tv,ucg.org,ufc.com,unicode.org,upworld.com,valleywag.com,vancouver.com,video.aol.com,voltage.com,vox.com,wakeskating.com,water.org,weei.com,weop.net,wikipedia.com,wiley.com,woot.com,wordpress.com,wordyard.com,workmill.com,worldwar1.com,wowomg.com,woz.org,wrox.com,wuzzle.org,xanga.com,xdiv.com,xpda.com,xpeeps.com,xuqa.com,yacko.com,ahoo.com,yellowpole.com,youtube.com,yumsugar.com,zeekgallery.com,zidesigns.com,zitgist.com,zoom-in.com"; 
	
	// END CONFIG (do not edit below this line, well unless you really, really want to change something :) )
	
	var field = document.getElementById(id);	
	var classInactive = "sf_inactive";
	var classActive = "sf_active";
	var classText = "sf_text";
	var classSuggestion = "sf_suggestion";
	this.safari = ((parseInt(navigator.productSub)>=20020000)&&(navigator.vendor.indexOf("Apple Computer")!=-1));
	if(field && !safari){
		field.value = defaultText;
		field.c = field.className;		
		field.className = field.c + " " + classInactive;
		field.onfocus = function(){
			this.className = this.c + " "  + classActive;
			this.value = (this.value == "" || this.value == defaultText) ?  "" : this.value;
		};
		field.onblur = function(){
			this.className = (this.value != "" && this.value != defaultText) ? this.c + " " +  classText : this.c + " " +  classInactive;
			this.value = (this.value != "" && this.value != defaultText) ?  this.value : defaultText;
			clearList();
		};
		if (suggestion){
			
			var selectedIndex = 0;
						
			field.setAttribute("autocomplete", "off");
			var div = document.createElement("div");
			var list = document.createElement("ul");
			list.style.display = "none";
			div.className = classSuggestion;
			list.style.width = field.offsetWidth + "px";
			div.appendChild(list);
			field.parentNode.appendChild(div);	

			field.onkeypress = function(e){
				
				var key = getKeyCode(e);
		
				if(key == 13){ // enter
					selectList();
					selectedIndex = 0;
					return false;
				};	
			};
				
			field.onkeyup = function(e){
			
				var key = getKeyCode(e);
		
				switch(key){
				case 13:
					return false;
					break;			
				case 27:  // esc
					field.value = "";
					selectedIndex = 0;
					clearList();
					break;				
				case 38: // up
					navList("up");
					break;
				case 40: // down
					navList("down");		
					break;
				default:
					startList();			
					break;
				};
			};
			
			this.startList = function(){
				var arr = getListItems(field.value);
				if(field.value.length > 0){
					createList(arr);
				} else {
					clearList();
				};	
			};
			
			this.getListItems = function(value){
				var arr = new Array();
				var src = suggestionText;			// list
				var src = src.replace(/, /g, ",");	
				var arrSrc = src.split(",");
				for(i=0;i<arrSrc.length;i++){
					if(arrSrc[i].substring(0,value.length).toLowerCase() == value.toLowerCase()){
						arr.push(arrSrc[i]);
					};
				};				
				return arr;
			};
			
			this.createList = function(arr){				
				resetList();			
				if(arr.length > 0) {
					for(i=0;i<arr.length;i++){				
						li = document.createElement("li");
						a = document.createElement("a");
						a.href = "javascript:void(0);";
						a.i = i+1;
						a.innerHTML = arr[i];
						li.i = i+1;
						li.onmouseover = function(){
							navListItem(this.i);
						};
						a.onmousedown = function(){
							selectedIndex = this.i;
							selectList(this.i);		
							return false;
						};					
						li.appendChild(a);
						list.setAttribute("tabindex", "-1");
						list.appendChild(li);	
					};	
					list.style.display = "block";				
				} else {
					clearList();
				};
			};	
			
			this.resetList = function(){
				var li = list.getElementsByTagName("li");
				var len = li.length;
				for(var i=0;i<len;i++){
					list.removeChild(li[0]);
				};
			};
			
			this.navList = function(dir){			
				selectedIndex += (dir == "down") ? 1 : -1;
				li = list.getElementsByTagName("li");
				if (selectedIndex < 1) selectedIndex =  li.length;
				if (selectedIndex > li.length) selectedIndex =  1;
				navListItem(selectedIndex);
			};
			
			this.navListItem = function(index){	
				selectedIndex = index;
				li = list.getElementsByTagName("li");
				for(var i=0;i<li.length;i++){
					li[i].className = (i==(selectedIndex-1)) ? "selected" : "";
				};
			};
			
			this.selectList = function(){
				li = list.getElementsByTagName("li");	
				a = li[selectedIndex-1].getElementsByTagName("a")[0];
				field.value = a.innerHTML;
				clearList();
			};			
			
		};
	};
	
	this.clearList = function(){
		if(list){
			list.style.display = "none";
			selectedIndex = 0;
		};
	};		
	this.getKeyCode = function(e){
		var code;
		if (!e) var e = window.event;
		if (e.keyCode) code = e.keyCode;
		return code;
	};
	
};

// script initiates on page load. 

this.addEvent = function(obj,type,fn){
	if(obj.attachEvent){
		obj['e'+type+fn] = fn;
		obj[type+fn] = function(){obj['e'+type+fn](window.event );}
		obj.attachEvent('on'+type, obj[type+fn]);
	} else {
		obj.addEventListener(type,fn,false);
	};
};
addEvent(window,"load",searchfield);

