// trazilica.js skripta
// dizajn by Bih-Hosting.net
// info@bih-hosting.net

$(document).ready(function(){
	
	var config = {
		siteURL		: 'bih-hosting.net',	// url stranice
		searchSite	: true,
		type		: 'web',
		append		: false,
		perPage		: 6,			// maksimalno 8 dozvoljeno od google-a
		page		: 0				// pocetna stranica
	}
	
	// strelica koja pokazuje aktivni tip trazilice:
	var arrow = $('<span>',{className:'trazilica-strelica'}).appendTo('ul.trazilica-ikone');
	
	$('ul.trazilica-ikone li').click(function(){
		var el = $(this);
		
		if(el.hasClass('active')){
			// ako je ikona vec aktivna, izadji
			return false;
		}
		
		el.siblings().removeClass('active');
		el.addClass('active');
		
		// pomakni strelicu ispod ikone
		arrow.stop().animate({
			left		: el.position().left,
			marginLeft	: (el.width()/2)-4
		});
		
		// namjesti vrstu trazenja
		config.type = el.attr('data-searchType');
		$('#dalje').fadeOut();
	});
	
	// dodavanje naslovna sa trazenih stranica kao label na prvo mjesto:
	$('#trazi-stranicu-label').append(' '+config.siteURL);
	
	// postavljanje Pretrazi bih-hosting.net kao aktivnu:
	$('#trazi-stranicu').click();	
	
	// postavljanje Pretrazi Web kao aktivnu:
	$('li.trazilica-web').click();
	
	// fokusiranje input text box-a:
	$('#s').focus();

	$('#trazilica-trazi-forma').submit(function(){
		googleSearch();
		return false;
	});
	
	$('#trazi-stranicu,#trazi-web').change(function(){
		
		config.searchSite = this.id == 'trazi-stranicu';
	});
	
	
	function googleSearch(settings){
				
		settings = $.extend({},config,settings);
		settings.term = settings.term || $('#s').val();
		
		if(settings.searchSite){
			// koristeci Google stranicu:example.com za limitiranje trazilice na
			//odredjenu domenu:
			settings.term = 'site:'+settings.siteURL+' '+settings.term;
		}
		
		// URL za Google's AJAX API trazlicu
		var apiURL = 'http://ajax.googleapis.com/ajax/services/search/'+settings.type+'?v=1.0&callback=?';
		var resultsDiv = $('#trazilica-rezultati');
		
		$.getJSON(apiURL,{q:settings.term,rsz:settings.perPage,start:settings.page*settings.perPage},function(r){
			
			var results = r.responseData.results;
			$('#dalje').remove();
			
			if(results.length){
				
				// ako su pronadjeni rezultati, dodaj ih na trazilica-rezultati div,
				
				var pageContainer = $('<div>',{className:'trazilica-sadrzaj'});
				
				for(var i=0;i<results.length;i++){
					pageContainer.append(new result(results[i]) + '');
				}
				
				if(!settings.append){
					// pokreni kad kliknem novo trazenje, 
					// umjesto klikanja na Dalje gumb:
					resultsDiv.empty();
				}
				
				pageContainer.append('<div class="clear"></div>')
							 .hide().appendTo(resultsDiv)
							 .fadeIn('slow');
				
				var cursor = r.responseData.cursor;
				
				// provjera ima jos stranica kod trazenja, 
				// i odlucujemo da li ce postojati Dalje gumb:
				
				if( +cursor.estimatedResultCount > (settings.page+1)*settings.perPage){
					$('<div>',{id:'dalje'}).appendTo(resultsDiv).click(function(){
						googleSearch({append:true,page:settings.page+1});
						$(this).fadeOut();
					});
				}
			}
			else {
				
				// ako nema pronadjenih rezultata.
				
				resultsDiv.empty();
				$('<p>',{className:'trazilica-nema',html:'Nema pronadjenih rezultata!'}).hide().appendTo(resultsDiv).fadeIn();
			}
		});
	}
	
	function result(r){
				
		var arr = [];
		
		switch(r.GsearchResultClass){

			case 'GwebSearch':
				arr = [
					'<div class="trazilica-web-rezultati">',
					'<h2><a href="',r.unescapedUrl,'" target="_blank">',r.title,'</a></h2>',
					'<p>',r.content,'</p>',
					'<a href="',r.unescapedUrl,'" target="_blank">',r.visibleUrl,'</a>',
					'</div>'
				];
			break;
			case 'GimageSearch':
				arr = [
					'<div class="trazilica-slike-rezultati">',
					'<a target="_blank" href="',r.unescapedUrl,'" title="',r.titleNoFormatting,'" class="pic" style="width:',r.tbWidth,'px;height:',r.tbHeight,'px;">',
					'<img src="',r.tbUrl,'" width="',r.tbWidth,'" height="',r.tbHeight,'" /></a>',
					'<div class="clear"></div>','<a href="',r.originalContextUrl,'" target="_blank">',r.visibleUrl,'</a>',
					'</div>'
				];
			break;
			case 'GvideoSearch':
				arr = [
					'<div class="trazilica-slike-rezultati">',
					'<a target="_blank" href="',r.url,'" title="',r.titleNoFormatting,'" class="pic" style="width:150px;height:auto;">',
					'<img src="',r.tbUrl,'" width="100%" /></a>',
					'<div class="clear"></div>','<a href="',r.originalContextUrl,'" target="_blank">',r.publisher,'</a>',
					'</div>'
				];
			break;
			case 'GnewsSearch':
				arr = [
					'<div class="trazilica-web-rezultati">',
					'<h2><a href="',r.unescapedUrl,'" target="_blank">',r.title,'</a></h2>',
					'<p>',r.content,'</p>',
					'<a href="',r.unescapedUrl,'" target="_blank">',r.publisher,'</a>',
					'</div>'
				];
			break;
		}
		
		this.toString = function(){
			return arr.join('');
		}
	}
	
});


