$(document).ready(function(){

var config = {
siteURL: ' ',// Change this to your site
searchSite: true,
type: 'web',
append: false,
perPage: 8,// A maximum of 8 is allowed by Google
page: 0// The start page
}

// The small arrow that marks the active search icon:
var arrow = $('<span>',{className:'arrow'}).appendTo('ul.icons');

$('ul.icons li').click(function(){
var el = $(this);

if(el.hasClass('active')){
// The icon is already active, exit
return false;
}

el.siblings().removeClass('active');
el.addClass('active');

// Move the arrow below this icon
arrow.stop().animate({
left: el.position().left,
marginLeft: (el.width()/2)-4
});

// Set the search type
config.type = el.attr('data-searchType');
$('#more').fadeOut();
});

// Adding the site domain as a label for the first radio button:
$('#siteNameLabel').append(' '+config.siteURL);

// Marking the Search tutorialzine.com radio as active:
$('#searchSite').click();

// Marking the web search icon as active:
$('li.web').click();

// Focusing the input text box:
$('#s').focus();

$('#searchForm').submit(function(){
googleSearch();
return false;
});

$('#searchSite,#searchWeb').change(function(){
// Listening for a click on one of the radio buttons.
// config.searchSite is either true or false.

config.searchSite = this.id == 'searchSite';
});


function googleSearch(settings){

// If no parameters are supplied to the function,
// it takes its defaults from the config object above:

settings = $.extend({},config,settings);
settings.term = settings.term || $('#s').val();

if(settings.searchSite){
// Using the Google site:example.com to limit the search to a
// specific domain:
settings.term = 'site:'+settings.siteURL+' '+settings.term;
}

// URL of Google's AJAX search API
var apiURL = 'http://ajax.googleapis.com/ajax/services/search/'+settings.type+'?v=1.0&callback=?';
var resultsDiv = $('#resultsDiv');

$.getJSON(apiURL,{q:settings.term,rsz:settings.perPage,start:settings.page*settings.perPage},function(r){

var results = r.responseData.results;
$('#more').remove();

if(results.length){

// If results were returned, add them to a pageContainer div,
// after which append them to the #resultsDiv:

var pageContainer = $('<div>',{className:'pageContainer'});

for(var i=0;i<results.length;i++){
// Creating a new result object and firing its toString method:
pageContainer.append(new result(results[i]) + '');
}

if(!settings.append){
// This is executed when running a new search, 
// instead of clicking on the More button:
resultsDiv.empty();
}

pageContainer.append('<div class="clear"></div>')
 .hide().appendTo(resultsDiv)
 .fadeIn('slow');

var cursor = r.responseData.cursor;

// Checking if there are more pages with results, 
// and deciding whether to show the More button:

if( +cursor.estimatedResultCount > (settings.page+1)*settings.perPage){
$('<div>',{id:'more'}).appendTo(resultsDiv).click(function(){
googleSearch({append:true,page:settings.page+1});
$(this).fadeOut();
});
}
}
else {

// No results were found for this search.

resultsDiv.empty();
$('<p>',{className:'notFound',html:'No Results Were Found - Bessun risultato trovato'}).hide().appendTo(resultsDiv).fadeIn();
}
});
}

function result(r){

// This is class definition. Object of this class are created for
// each result. The markup is generated by the .toString() method.

var arr = [];

// GsearchResultClass is passed by the google API
switch(r.GsearchResultClass){

case 'GwebSearch':
arr = [
'<div class="webResult">',
'<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="webResult">',
//'<h2><a href="',r.unescapedUrl,'" target="_blank">',r.title,'</a>',
//'<h2><a href="readonline.php?ebook=',r.unescapedUrl,'&title=',escape(r.title),'&keyword=',escape(keyword),'">',r.title,'<img src="img/lente.png" alt="Read File" align="left"/></a>',
// eleminato images
'<h2><a href="',r.unescapedUrl,'" target="_blank">',r.title,'<img src="img/lente.png" alt="Read File" align="left"/></a></h2>',
'<left>',r.content,'<br><br>',
'<span style="font-family:Tahoma; font-size:11px;text-align:left;color: #276803;"><i>Visit-Visita</i></span> ',r.visibleUrl,'',
'<a href="',r.unescapedUrl,'" target="_blank"><img src="img/download.png" alt="Download File" align="right"></a>',
'</div>'
];
break;
case 'GvideoSearch':
arr = [
'<div class="imageResult">',
'<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="webResult">',
'<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;
}

// The toString method.
this.toString = function(){
return arr.join('');
}
}


});

