YJSONsearch = {
	indicatorClass : 'YJSONsearch',
	searchAPIURL : 'http://api.search.yahoo.com/WebSearchService/V1/webSearch?output=json&callback=YJSONsearch.eureka',
	yourAppID : 'chrisdabbles',
	start : 0,
	amount : 5,
	resultElementID : 'YJSONresults',
	loadingMessage : 'loading...',
	search:function(e){
		var term;
		term = this.href ? this.href.replace( /.*p=/, '' ) : document.getElementById( 'p' ).value;	
		var s = document.getElementById( 'YJSONsubmit' );
		if(s) {
			s.oldvalue = s.value;
			s.value = YJSONsearch.loadingMessage;
			s.disabled = true;
		}
		document.getElementById( YJSONsearch.resultElementID ).innerHTML = YJSONsearch.loadingMessage;
		var url = YJSONsearch.searchAPIURL;
		url += '&query=' + term;
		url += '&appid=' + YJSONsearch.yourAppID;
		url += '&start=' + YJSONsearch.start;
		url += '&results=' + YJSONsearch.amount;
		var newsearch = document.createElement( 'script' );
		newsearch.src = url;
		document.getElementsByTagName( 'head' )[0].appendChild( newsearch );
		YAHOO.util.Event.preventDefault(e);
	},
	applyHandlers:function(){
		var elms = YAHOO.util.Dom.getElementsByClassName( YJSONsearch.indicatorClass );
		for( var i = 0; i < elms.length; i++ ) {
			if( elms[i].nodeName.toLowerCase() == 'form' ) {
				YAHOO.util.Event.addListener(elms[i], 'submit', YJSONsearch.search); 
			} else {
				YAHOO.util.Event.addListener(elms[i], 'click', YJSONsearch.search); 
			}
		}
	},
	eureka:function( data ) {
		if( document.getElementById('YJSONsubmit' ) ) {
			var s = document.getElementById( 'YJSONsubmit' );
			s.value = s.oldvalue;
			s.disabled = false;
		}
		var item, itemlink, itemsummary, itemtitle;
		var outputElement = document.getElementById( YJSONsearch.resultElementID );
		if( ! outputElement ) { return; }
		outputElement.innerHTML = '';
		var list = document.createElement( 'ul' );
		item = document.createElement( 'li' );
		itemtitle = document.createElement( 'h2' );
		itemtitle.appendChild( document.createTextNode( 'Found '+ data.ResultSet.totalResultsAvailable + ' results' ) );
		item.appendChild( itemtitle );
		list.appendChild( item );
		for( var i in data.ResultSet.Result ) {
			item = document.createElement( 'li' );
			itemtitle = document.createElement( 'h3' );
			itemlink = document.createElement( 'a' );
			itemlink.setAttribute( 'href', data.ResultSet.Result[i].ClickUrl );
			itemlink.appendChild( document.createTextNode( data.ResultSet.Result[i].Title ) );
			itemtitle.appendChild( itemlink );
			itemsummary = document.createElement( 'p' );
			itemsummary.appendChild( document.createTextNode( data.ResultSet.Result[i].Summary ) );
			item.appendChild( itemtitle );
			item.appendChild( itemsummary );
			list.appendChild( item )    
		}
		outputElement.appendChild( list );
	}
}
YAHOO.util.Event.addListener(window, 'load', YJSONsearch.applyHandlers); 

