
window.addEvent('domready', function(){
	// Select the search bar when loaded
	if (document.forms.search_form != undefined) {
		document.forms.search_form.q.focus();
		
		slide = new Fx.Slide('options'); //.hide('vertical');
		
		// Instantly hide the search options
		slide.element.parentNode.setStyle('height', '0px');
		slide.element.setStyle('margin', '-325px 0 0');
		
		$('options_toggle').addEvent('click', function(e){
			e.stop();
			slide.toggle();
		});
	}

	ports = [];
	
	function togglePort(args) {
		splice = false;
		
		for (i = 0; i < ports.length; i++) {
			if (ports[i] == args) {
				splice = true;
				ports.splice(i, 1);
			}
		}
		
		if (!splice)
			ports.push(args);
	}
	
	function formatQuery() {
		var query = $('search_input').get('value');
		var args = query.split(' ');
		
		for (var i = 0; i < args.length; i++) {
			// Current item is the ports filter
			if (args[i].substr(0, 5) == 'port:') {
				args.splice(i, 1); // remove it
			}
		}
		query = args.join(' ');
		
		if (ports.length > 0)
			$('search_input').value = query + ' port:' + String(ports);
		else
			$('search_input').value = query;
	}
	
	$$('.service').each(function(el){
		var name = el.get('name');
		var port;
		
		if (name == 'http') port = 80;
		else if (name == 'https') port = 443;
		else if (name == 'telnet') port = 23;
		else if (name == 'ssh') port = 22;
		else if (name == 'snmp') port = 161;
		else if (name == 'sip') port = 5060;
		else port = 21; // FTP
		
		el.addEvent('click', function(evt){
			togglePort(port);
			formatQuery();
		});
	});
	
	/*
	 * Code for the Exploit search engine
	 */
	if ($('exploits') || $('exploits_front')) {
		var search_input = $('search_input');
		var search_form = $('search_form');
		
		/*
		 * Search by identifier forms
		 */
		$('search_cve').addEvent('submit', function(e) {
			e.stop();
			
			search_input.set('value', 'cve:' + $('search_cve_input').get('value'));
			search_form.submit();
		});
		$('search_osvdb').addEvent('submit', function(e) {
			e.stop();
			
			search_input.set('value', 'osvdb:' + $('search_osvdb_input').get('value'));
			search_form.submit();
		});
		$('search_bid').addEvent('submit', function(e) {
			e.stop();
			
			search_input.set('value', 'bid:' + $('search_bid_input').get('value'));
			search_form.submit();
		});
		$('search_msb').addEvent('submit', function(e) {
			e.stop();
			
			search_input.set('value', 'msb:' + $('search_msb_input').get('value'));
			search_form.submit();
		});
	}
	
	/*
	 * Frontpage Ticker
	 */
	if ($('ticker')) {
		function rotateSearchQuery() {
			var fx = new Fx.Morph($('ticker_values'), {
				duration: 500,
				transition: 'quad:out',
				link: 'chain'
			});
			
			fx.start({
				'opacity': 0
			}).chain(function(){
				var step = 30;
				var items = 10;
				var margin = $('ticker_values').getStyle('margin-top').toInt() - step;
				
				if (margin <= items * step * -1) {
					$('ticker_values').setStyle('margin-top', 0);
				}
				else {
					$('ticker_values').setStyle('margin-top', margin);
				}
				this.start({'opacity': 1});
			});
		}
		rotateSearchQuery.periodical(4000);
	}
	
	/* Check for adblock
	var sponsor = $$('.bsap');
	if (sponsor.length == 0) {
		sponsor = $$('.bsarocks');
	}
	if (sponsor.length > 0 && sponsor[0].getStyle('height').toInt() == 0) {
		var link = new Element('a');
		link.href = '/data/buy';
		
		var img = new Element('img');
		img.src = '/images/s/banner_adblock.png';
		
		img.inject(link);
		link.inject(sponsor[0]);
	}*/
});

