// Main javascript document
// JEG.ch
// © Cyril Picard informatique

// Search js

var Search = new Class({

	Implements: Options,
	
	options : {
		cssfile : 'css/search.css',
		container : $('main')
	},

	initialize: function(form,options) {
		this.setOptions(options);
		this.form = form.addEvent('submit',(function(e) { new Event(e).stop(); this.execute();}).bind(this));
		this.field = this.form.getElement('input');
		this.form.getElement('a').addEvent('click',(function(e) { new Event(e).stop(); this.execute();}).bind(this));
		this.results = new Element('div');
		this.cursor = new Element('div',{'class':'gsc-cursor-box'});
		this.oldcontent = false;
		this.query = false;
		this.searcher = new google.search.WebSearch();
		this.searcher.setSiteRestriction("012758862020675023878:okmfdgw3bxa");
		this.searcher.setUserDefinedLabel("Junior Entreprise Genève");
		this.searcher.setNoHtmlGeneration();
		this.searcher.setSearchCompleteCallback(this,this.completed);
	},
	execute: function() {
		if (this.field.get('value')=='Rechercher...' || this.field.get('value').isEmpty()) return;
		if (!$('searchStyle')) new Asset.css(this.options.cssfile, {id: 'searchStyle'});
		this.query = this.field.get('value');
		if (!this.oldcontent) this.oldcontent = this.options.container.get('html');
		this.options.container.set('html','<p class="chargement">Chargement...</p>');
		this.searcher.execute(this.query);
	},
	completed: function() {
		this.clearResults();
		this.options.container.set('html','<h1 id="title">Recherche - '+this.query+'</h1><div id="googlebrand" />');
		google.search.Search.getBranding($('googlebrand'));
		var results = this.searcher.results;
		results.each(function(res) {
			this.searcher.createResultHtml(res);
			if (res.html) $(res.html).clone().inject(this.results);
		},this);
		this.results.inject(this.options.container);
		
		if (this.searcher.cursor) {
			var cursorNode = new Element('div',{'class':'gsc-cursor'});
			for (var i=0; i<this.searcher.cursor.pages.length;i++) {
				var classN = (i==this.searcher.cursor.currentPageIndex) ? "gsc-cursor-page gsc-cursor-current-page" : "gsc-cursor-page";
				new Element('div',{'html':this.searcher.cursor.pages[i].label,'class':classN, 'events': { 'click':this.gotoPage.pass(i,this)}}).inject(cursorNode);
			}
			cursorNode.inject(this.cursor);
			new Element('a',{'href':this.searcher.cursor.moreResultsUrl,'html':GSearch.strings["more-results"] + "&nbsp;&raquo;",'class':"gsc-trailing-more-results"}).inject(this.cursor);
			this.cursor.inject(this.options.container);
		}
	},
	gotoPage: function(i) {
		this.searcher.gotoPage(i);
	},
	clearResults: function() {
		this.results.getChildren().dispose();
		this.cursor.getChildren().dispose();
	},
	back: function() {
		this.clear();
		this.options.container.set('html',this.oldcontent);
		this.oldcontent = false;
	}
});
var google_search;
function GoogleSearch() {
	google_search = new Search($$('#search form')[0],{container : $('main')});
}


