var Keywords = Class.create({
	
	initialize: function( debug ){
		this.keywordHandlerList = [];
		this.referrerKeywords = this.getQueryKeywords( debug );
		this.failCallback = null;
	},
	
	getQueryKeywords: function( debug ){
		
		var ref = debug ? document.location.href : document.referrer;
		var params = ref.toQueryParams();
		var keywords = "";
		
	    if ( ref.search(/google/) != -1 ) {
			keywords = params.q || "";
	    }
		else if ( ref.search(/yahoo/) != -1 ){
			keywords = params.p || ""
		}
		
	    return keywords;
	},
	
	addKeywords: function( keywords, callback, divider ){
		
		if( !divider ) divider = " "
		
		this.keywordHandlerList.push( {
			keywords: keywords.split( divider ),
			callback: callback
		} );
	},
	
	addFailCallback: function( callback ){
		this.failCallback = callback;
		return this;
	},
	
	run: function(){
		
		for( var i = 0; i < this.keywordHandlerList.length; i++ ){
			
			var keywords = this.keywordHandlerList[i].keywords;
			var callback = this.keywordHandlerList[i].callback;
			
			for( var ii = 0; ii < keywords.length; ii++ ){
				if( this.referrerKeywords.indexOf( keywords[ii] ) != -1 ){
					callback( );
					return;
				}
			}
		}
		
		if( this.failCallback ){
			this.failCallback();
		}
	}
});

