Event.observe(window, 'load', init);

var HomePage = {
	Init: function() {
		if (!Prototype.Browser.IE) return;
		if (!$('defaultHP')) return;
		$('defaultHP').select('a')[0].removeAttribute('href');
		$('defaultHP').select('a')[0].removeAttribute('target');
		$('defaultHP').select('a')[0].observe('click',HomePage.Set);
	},
	Set: function(event) {
		var callr = Event.element(event);
		callr.style.behavior='url(#default#homepage)';
		callr.setHomePage('http://www.rr.com/');
	}
};

var TabChanger = {
	Init: function() {
		if (!$('searchForm')) return;
		if (!$('searchTypes')) return;
				
		$('qs').observe('keyup',TabChanger.changeQuery);
		TabChanger.setInput();
		TabChanger.changeQuery();
	},
	setInput: function() {
		var query = (window.location.href.toQueryParams().qs) ? window.location.href.toQueryParams().qs : (window.location.href.match(/#key:(.+)/)) ? window.location.href.match(/#key:(.+)/)[1] : ($('RQS') && $('RQS').value != '') ? $('RQS').value : '';
		
		$('qs').value = unescape(query.replace(/\+/g,' '));
		
		// If IE, move cursor to end.
		if (Prototype.Browser.IE) {
			var range = $('qs').createTextRange();
			range.move('character',$('qs').value.length);
			range.select(); 
		}
	},
	changeQuery: function(ev) {
		if (ev && (ev.keyCode==13 || ev.keyCode==9)) return;
		
		$('searchTypes').select('a').each(function(anchor) {
			if ($$('body')[0].hasClassName('noQuery')) {
				// Splash page
				var href = anchor.getAttribute('href').replace(/#.+/,'') + '#key:'+ $('qs').value;
				anchor.setAttribute('href',href);
			} else if ($$('body')[0].hasClassName('prefs')) {
				var href = anchor.getAttribute('href').replace(/&qs=.+?$/,'') + '&qs=' + $('qs').value;
				anchor.setAttribute('href',href);
			} else {
				// Other pages
				var href = anchor.getAttribute('href').replace(/qs=.+?&/,'qs='+ $('qs').value +'&');
				anchor.setAttribute('href',href);
			}
		});
	}
};

function browserStyles() {
	if (Prototype.Browser.IE) {
		var css = new Element('link', { 'rel':'stylesheet', 'type':'text/css', 'href':'/rrs/css/ie.2008.08.06.css' } );
		$$('head')[0].appendChild(css);		
	}
	if (/MSIE 6\.0/.test(navigator.appVersion)) {
		var css = new Element('link', { 'rel':'stylesheet', 'type':'text/css', 'href':'/rrs/css/ie6.2008.08.06.css' } );
		$$('head')[0].appendChild(css);
		
		// Apply the PNG fix for IE6, not sure which elements require it, so put it on all.
		$$('img.stars').each(function(el,i) {
			$(el).setStyle({ 'behavior':'url(http://'+ document.domain +'/rrs/css/iepngfix.htc)' });
		});
	}
	if (/MSIE 7\.0/.test(navigator.appVersion)) {
		var css = new Element('link', { 'rel':'stylesheet', 'type':'text/css', 'href':'/rrs/css/ie7.2008.08.06.css' } );
		$$('head')[0].appendChild(css);
	}
}





function init() {
	browserStyles();

	HomePage.Init();
	TabChanger.Init();
	$('qs').focus();
	
	prefs.get();
	prefs.setDefaultCookie();

	// Modify sercher form
	$('searcher').observe('submit',function(ev) {
		// Abort form submission
		ev.preventDefault();
		// Use custom form submit.
		smartSearch.formSubmit();
	});
	if ($('bottomForm')) {
		$('bottomForm').observe('submit',function(ev) {
			ev.preventDefault();
			smartSearch.formSubmit('bottom');
		});
	}
	// Search button click
	$$('.submitButton').each(function(el) {
		el.observe('click',function(el) {
			smartSearch.formSubmit();
		});
	});
	if (/\/preferences/.test(window.location.href)) {
		$('save').observe('click',function() {
			prefs.save();
		});
		prefs.setButtons();
	}
}


var domain = window.location.href.match(/^http:\/\/(.+?)\/.+/)[1];
var now = new Date().getTime();

var prefs = {
	language: '',
	filter: '',
	setDefaultCookie: function() {
		if (prefs.filter != null) return;
		$C.create('filtering','high',365);
		prefs.get(); 
	},
	get: function() {
		prefs.language = $C.get('language');
		prefs.filter   = $C.get('filtering');
	},
	setCookie: function() {
		$C.create('language',prefs.language,365);
		$C.create('filtering',prefs.filter,365);
	},
	save: function() {
		prefs.language = (document.f.language[0].checked)  ? document.f.language[0].value  : (document.f.language[1].checked)  ? document.f.language[1].value : '';
		prefs.filter   = (document.f.filtering[0].checked) ? document.f.filtering[0].value : (document.f.filtering[1].checked) ? document.f.filtering[1].value : (document.f.filtering[2].checked) ? document.f.filtering[2].value : '';
		prefs.setCookie();
		var ref = document.referrer;
		
		var filter = 'safe=' + ($('sf0').checked ? $('sf0').value : $('sf1').checked ? $('sf1').value : $('sf2').value) + '&';
		var lang   = 'lr='   + ($('sl0').checked ? $('sl0').value : $('sl1').value) +'&';
		
		var ref = document.referrer.replace(/lr=(.+?)&/,lang).replace(/safe=(.+?)&/,filter) +'&time=' + (new Date().getTime());
		
		window.location.href = ref;
	},
	setButtons: function() {
		switch(prefs.language) {
			case 'lang_en':
				document.f.language[0].checked = 'true';
				break;
			case 'lang_es':
				document.f.language[1].checked = 'true';
				break;
			default: 
				document.f.language[0].checked = 'true';
				break;
		}
		switch(prefs.filter) {
			case 'high':
				document.f.filtering[0].checked = 'true';
				break;
			case 'medium':
				document.f.filtering[1].checked = 'true';
				break;
			case 'off':
				document.f.filtering[2].checked = 'true';
				break;
			default: 
				document.f.filtering[0].checked = 'true';
				break;
		}
	}
};

var smartSearch = {
		timer: null,
		data: null,
		inFocus: true,
		smartBoxTimer: null,
		url: {
			base: 'http://'+ domain +'/search?',
			preference: 'http://'+ domain +'/preferences'			
		},
		formSubmit: function(frm) {
			// if one of the items in the smart box is selected using the cursor search on this term.
			$$('#smartBox ul li').each(function(el) {
				$('qs').value = (el.hasClassName('silver')) ? el.childNodes[0].nodeValue : $('qs').value;
			});
			var qsValue = (frm=='bottom') ? escape($$('#bottomForm input')[0].value) : escape($F("qs"));
			
			var languageCookie = $C.get("language");
			var filterCookie = $C.get("filtering");
			var sourceValue = ($F('source')=='') ? '' : $('source').value;
			var startValue = "1";
			var numValue = ($F('num')=='') ? "10" : $F('num');
			var channelId = ($F('channelId')=='') ? '' : $F('channelId'); 			
			var clientId = ($F('clientId')=='') ? "ca-aol-rr" : $F('clientId');
			
			var searchUrl = smartSearch.url.base +'qs='+ qsValue + "&source=" + sourceValue + "&safe=" + filterCookie + "&lr=" + languageCookie + "&start=" + startValue + "&num=" + numValue + "&channelId=" + channelId + "&clientId=" + clientId;
			window.location = searchUrl;
			return false;
		}
};

var $C = {
	get: function(name) {
		// Returns the value of the cookie passed or all cookies.
		var out = null;
		var cSet = document.cookie.split(';');
		if (name) {
			cSet.each(function(c) {
				out = (c.split('=')[0].replace(/^\s+/,'').replace(/\s+$/,'')==name) ? c.split('=')[1] : out;
			});
		} else {
			cSet.each(function(c) {
				out[c.split('=')[0]] = c.split('=')[1];
			});
		}
		return out;
	},
	create: function(name,value,days) {
		var expires = '';
		if (days) {
			var date = new Date();
				date.setTime(date.getTime()+(days*24*60*60*1000));
			expires = '; expires='+date.toGMTString();
		}
		document.cookie = name+'='+value+expires+'; path=/';
	},
	erase: function(name) {
		$C.create(name,"",-1);
	}
};

