function bindSearchlinks() {
	$('#image-search').live('click', function() {
		$(this).attr('href', "http://images.google."+$('#postfix').val()+"/images?q="+encodeURI(($('#searchForm input.gsc-input').val()))+"&hl="+$('#lang').val());
	});
	$('#video-search').live('click', function() {
		$(this).attr('href', "http://video.google."+$('#postfix').val()+"/videosearch?q="+encodeURI(($('#searchForm input.gsc-input').val()))+"&hl="+$('#lang').val());
	});
	$('#map-search').live('click', function() {
		$(this).attr('href', "http://maps.google."+$('#postfix').val()+"/maps?tab=wl&q="+encodeURI($('#searchForm input.gsc-input').val())+"&hl="+$('#lang').val());
	});
	$('#price-search').live('click', function() {
		$(this).attr('href', "http://request.webwebweb.com/redirect.asp?target=idealo.de&keywords="+encodeURI($('#searchForm input.gsc-input').val())+"&country="+$('#country').val() );
	});
	$('#translate-search').live('click', function() {
		$(this).attr('href', "http://translate.google.de/#"+$('#lang').val()+"|"+$('#lang').val()+"|"+encodeURI($('#searchForm input.gsc-input').val()) );
	});
	$('#wiki-search').live('click', function() {
		$(this).attr('href', "http://"+$('#lang').val()+".wikipedia.org/wiki/"+encodeURI($('#searchForm input.gsc-input').val()));
	});
	
	$('#filter_all_link').live('click', function() {
		$('#zip').val('');
		$('#town').val('');
		$('#searchForm form').submit();
		return false;
	});
	$('#filter_town_link').live('click', function() {
		$('#zip').val($('#basezip').val());
		$('#town').val($('#basetown').val());
		 $('#searchForm form').submit();
		return false;
	});
	$('.exsearch-link').live('click', function() {
		if(this.id != "simple-search-link")
			$('form').attr('action','exsearch.php');
		$('#searchForm form').submit();
		return false;
	});
	
}

function bindFilteraction() {
	$('#filter-filetype .clear-filter').bind('click', function() {
		$('#as_filetype').val('');
		processExtSearch();
		$('body:not(#exsearch) #searchForm form').submit();
	});
	
	$('#filter-site .clear-filter').bind('click', function() {
		$('#site').val('')
		processExtSearch();
		$('body:not(#exsearch) #searchForm form').submit();
	});
	
	$('#filter-eq .clear-filter').bind('click', function() {
		//var re = new RegExp('-(.*?) ', "g");
		//var tmp = $('#hquery').val() + " ";
		//tmp = tmp.replace(re,'');
		$('#as_eq').val("");
		processExtSearch();
		$('body:not(#exsearch) #searchForm form').submit();
	});
}


function getCompleteQuerystring(nonLocal) {
	var q = Array();
	var i = 0;
	if(nonLocal == null) {
		if($('#zip').val() != "")
			q[i++] = $('#zip').val();
		if($('#town').val() != "")
			q[i++] = $('#town').val();
	}
	
	if($('#vquery').val() != "")
		q[i++] = $('#vquery').val();
	if($('#hquery').val() != "")
		q[i++] = $('#hquery').val();
	x = implode(" ",q);
	return x;
}

function updateLeftsideVisibility() {
	$('.filter').each(function () {
		if($(this).find('.filter-value').html() == '') {
			$(this).addClass('hidden');
		}
		else $(this).removeClass('hidden');
	});
}

function initExtSearch() {
	$('.ex_input').bind('keyup', function() { processExtSearch(); });
	$('.ex_input').bind('change', function() { processExtSearch(); });
	$('.ex_select').bind('change', function() { processExtSearch(); });
	$('.ex_input').bind('blur',function() { $(this).val($.trim($(this).val())) });
	
	$('body#exsearch input.gsc-input').focus( function() { 
		$('#as_q').focus();
	    $('#as_q').setCursorPosition($('#as_q').val().length );
	});
	
	$('#lang option').each(function() {
		if($('#ex_lang').val() == $(this).val()) {
			$(this).attr('selected','selected');
		}
	}); 
	$('#as_filetype option').each(function() {
		if($('#ex_filetype').val() == $(this).val()) {  
			$(this).attr('selected','selected');
		}
	});
	
	processExtSearch();
	return;
}

function processExtSearch() {

	as_q = $.trim($('#as_q').val());
	
	as_eq_array = $('#as_eq').val().split(" ");
	var as_eq = "";
	for(i=0; i < as_eq_array.length; i++) {
		if(as_eq_array[i]) as_eq += " -"+as_eq_array[i];
	}
	 
	as_epq = "";
	if($('#as_epq').val()) as_epq = "\""+$('#as_epq').val()+"\"";
	
	var as_oq = new Array();
	var i=0;
	$('.as_oq').each(function() {
		if(this.value) {
			as_oq[i] = this.value;
			i++;
		}
	});
	as_oq = implode(" OR ", as_oq);
	
	
	as_filetype = "";
	if($('#as_filetype').val()) 
		as_filetype = "filetype:"+$('#as_filetype').val();
	as_sitesearch = "";
	if($('#site').val()) as_sitesearch = "site:"+$('#site').val();
	
	updateLeftside();
	
	i = 0;
	querystring_array = Array();
	if( as_q != '') querystring_array[i++] = as_q;
	if( as_epq != '') querystring_array[i++] = as_epq;
	if( as_oq != '') querystring_array[i++] = as_oq;
	
	querystring = implode(" ", querystring_array );
	querystring = $.trim(querystring);
	$('#vquery').val(querystring);
	i = 0;
	
	querystring_array = Array();
	if( as_eq != '') querystring_array[i++] = as_eq;
	if( as_filetype != '') querystring_array[i++] = as_filetype;
	if( as_sitesearch != '') querystring_array[i++] = as_sitesearch;
	querystring = implode(" ", querystring_array );
	querystring = $.trim(querystring);
	$('#hquery').val(querystring);

	$('input.gsc-input').val(getCompleteQuerystring());
	updateLeftsideVisibility();
}

function updateLeftside() {
	$('#filter-filetype .filter-value').html($('#as_filetype').val());
	$('#filter-site .filter-value').html($('#site').val());
	$('#filter-eq .filter-value').html($('#as_eq').val());
}


function RawSearchControl() {
	  this.results = document.getElementById("results");
	  this.searcher = new google.search.LocalSearch();
	  this.searcher.setLinkTarget(google.search.Search.LINK_TARGET_SELF);
	//  this.searcher.setCenterPoint("Amsterdam, Netherlands");
	  this.searcher.setSearchCompleteCallback(this,
	    RawSearchControl.prototype.searchComplete,
	    [this.searcher]
	    );
	}
	RawSearchControl.prototype.searchComplete = function(searcher) {
	  this.clearResults();
		
	  if (searcher.results && searcher.results.length > 0) {

	    // now manually generate the html that we disabled
	    // initially and display it
	    for (var i=0; i < searcher.results.length; i++) {
	      var result = searcher.results[i];
	      div = result.html.cloneNode(true);

	      this.results.appendChild(div);
	      var breaker = createDiv(null,"breaker");
	      this.results.appendChild(breaker);
	    }

	    var imageUrl = GlocalSearch.computeStaticMapUrl(searcher.results, 310, 300, google.search.LocalSearch.STATIC_MAP_ZOOM_NEAREST);
	    
	    $("#resultsImg").attr('src',imageUrl);
	    $('#mapsearch').removeClass('hidden');
	  }
	}
	RawSearchControl.prototype.clearResults = function() {
	  removeChildren(this.results);
	}

	
	
	
	
	
	
	
/*============================================================================*/
/*HELPERS*/
function implode (glue, pieces) {
    var i = '', retVal='', tGlue='';
    if (arguments.length === 1) {        pieces = glue;
        glue = '';
    }
    if (typeof(pieces) === 'object') {
        if (pieces instanceof Array) {            return pieces.join(glue);
        }
        else {
            for (i in pieces) {
                retVal += tGlue + pieces[i];                tGlue = glue;
            }
            return retVal;
        }
    }    else {
        return pieces;
    }
}
function removeChildren(parent) {
  while (parent.firstChild) {
    parent.removeChild(parent.firstChild);
  }
}
function createDiv(opt_text, opt_className) {
  var el = document.createElement("div");
  if (opt_text) {
    el.innerHTML = opt_text;
  }
  if (opt_className) { el.className = opt_className; }
  return el;
}

new function($) {
	  $.fn.setCursorPosition = function(pos) {
	    if ($(this).get(0).setSelectionRange) {
	      $(this).get(0).setSelectionRange(pos, pos);
	    } else if ($(this).get(0).createTextRange) {
	      var range = $(this).get(0).createTextRange();
	      range.collapse(true);
	      range.moveEnd('character', pos);
	      range.moveStart('character', pos);
	      range.select();
	    }
	  }
	}(jQuery);

