/* --------------------------------------------------------------------
	Check search form
-------------------------------------------------------------------- */
$(document).ready(function() {
	// vars
	var container = $('#container');
	var searchfield = $('input#searchfield');
	var search = $('input#search');
	
	//var searchfield = $('input#searchfield','input#f_phrase');
	//var search = $('input#search','input#zoeken');
	
	var searchspecificfield = $('input#searchspecificfield');
	var searchspecific = $('button#zoeken');
	var feedback = {"minimalInput": "Een zoekterm moet bestaan uit twee of meer karakters"};
	var suggestConfig = {};
	var specificSuggestConfig = {};
	
	// Enable submit for a minimal input of characters
	function setupField(field, button) {
		if(field == searchfield) {
			suggestConfig = {
					ajaxResults: true,
					maxResults: 10,
					wildCard: '',
					left: (field.position().left)+ 'px',
					top: (field.offset().top + field.outerHeight()) + 'px',					
					width: ($(field).outerWidth() + $(button).outerWidth() - 1) + 'px'
				};
		} 
		else if (field == searchspecificfield) {
			specificSuggestConfig = {
					ajaxResults: true,
					maxResults: 10,
					wildCard: '',
					left: (field.position().left + 10 )+ 'px',
					top: (field.offset().top + field.outerHeight() +1) + 'px',
					width: field.outerWidth() - 1 + 'px'
			};
		}
			
		$(field).closest('form').submit(function() {
			var x = $(field).val().length;
			
			$('.searchSuggest .feedback').remove();
			if (x < 2) {
				$('.searchSuggest').prepend('<div class="feedback"><p>' + feedback.minimalInput + '</p></div>').hide().fadeIn(250).find('.resultItem ').hide();
				var timer = setTimeout(function () {
					$('.searchSuggest .feedback').fadeOut(250);
					clearTimeout(this);
				}, 3000);
				return false;
			}
		});
	}
	
	/** 
	 *	This function will retrieve search suggest information
	 *  and create a suggest box using the json results.
	 */
	function doSearch(value, wildcard, isSensitive, notChar, sFilterTxt) {
	
		var resultString = "";
		
		$.getJSON(
			URL_BASE + '/search-suggest', 
			{'query' : value },
			function(data) {
		
				if (data.status == 'error') { 
					return;
				}
			
				// call the json suggest trigger that
				// will build the results list.
				$(searchfield).trigger(
						{
							'type' : 'build-results',
							'results' : data.results,
							'sFilterTxt' : sFilterTxt
						}
					);
					
			}
		);
		
	}	
	/** 
	 *	This function will retrieve search suggest information
	 *  and create a suggest box using the json results.
	 */
	function doSpecificSearch(value, wildcard, isSensitive, notChar, sFilterTxt) {
		
		var resultString = "";
		
		$.getJSON(
				URL_BASE + '/search-specific-suggest', 
				{'query' : value, 'index' : searchspecificfield.attr('ref')  },
				function(data) {
					
					if (data.status == 'error') { 
						return;
					}
					
					// call the json suggest trigger that
					// will build the results list.
					$(searchspecificfield).trigger(
							{
								'type' : 'build-results',
								'results' : data.results,
								'sFilterTxt' : sFilterTxt
							}
					);
					
				}
		);
		
	}
	if(searchfield.size() !== 0) {
		setupField(searchfield, search);
	}
	
	if(searchspecificfield.size() !== 0) {
		setupField(searchspecificfield, searchspecific);
	}
		
	if (typeof(URL_BASE) === "string") {
		$(searchfield).jsonSuggest(doSearch, suggestConfig);
		$(searchspecificfield).jsonSuggest(doSpecificSearch, specificSuggestConfig);
	}
	else {
		$(searchfield).jsonSuggest(
			function(text, wildCard) {
				var testData = {};
				testData.countryCodes = '[{"id":"AD","text":"Andorra"},{"id":"AE","text":"United Arab Emirates"},{"id":"AF","text":"Afghanistan"},{"id":"AG","text":"Antigua and Barbuda"},{"id":"AI","text":"Anguilla"},{"id":"AL","text":"Albania"},{"id":"AM","text":"Armenia"},{"id":"AN","text":"Netherlands Antilles"},{"id":"AO","text":"Angola"},{"id":"AQ","text":"Antarctica"},{"id":"AR","text":"Argentina"},{"id":"AS","text":"American Samoa"},{"id":"AT","text":"Austria"},{"id":"AU","text":"Australia"},{"id":"AW","text":"Aruba"},{"id":"AX","text":"Aland Islands"},{"id":"AZ","text":"Azerbaijan"},{"id":"BA","text":"Bosnia and Herzegovina"},{"id":"BB","text":"Barbados"},{"id":"BD","text":"Bangladesh"},{"id":"BE","text":"Belgium"},{"id":"BF","text":"Burkina Faso"},{"id":"BG","text":"Bulgaria"},{"id":"BH","text":"Bahrain"},{"id":"BI","text":"Burundi"},{"id":"BJ","text":"Benin"},{"id":"BM","text":"Bermuda"},{"id":"BN","text":"Brunei Darussalam"},{"id":"BO","text":"Bolivia"},{"id":"BR","text":"Brazil"},{"id":"BS","text":"Bahamas"},{"id":"BT","text":"Bhutan"},{"id":"BV","text":"Bouvet Island"},{"id":"BW","text":"Botswana"},{"id":"BY","text":"Belarus"},{"id":"BZ","text":"Belize"},{"id":"CA","text":"Canada"},{"id":"CC","text":"Cocos (Keeling) Islands"},{"id":"CD","text":"Democratic Republic of the Congo"},{"id":"CF","text":"Central African Republic"},{"id":"CG","text":"Congo"},{"id":"CH","text":"Switzerland"},{"id":"CI","text":"Cote D\'Ivoire (Ivory Coast)"},{"id":"CK","text":"Cook Islands"},{"id":"CL","text":"Chile"},{"id":"CM","text":"Cameroon"},{"id":"CN","text":"China"},{"id":"CO","text":"Colombia"},{"id":"CR","text":"Costa Rica"},{"id":"CS","text":"Serbia and Montenegro"},{"id":"CU","text":"Cuba"},{"id":"CV","text":"Cape Verde"},{"id":"CX","text":"Christmas Island"},{"id":"CY","text":"Cyprus"},{"id":"CZ","text":"Czech Republic"},{"id":"DE","text":"Germany"},{"id":"DJ","text":"Djibouti"},{"id":"DK","text":"Denmark"},{"id":"DM","text":"Dominica"},{"id":"DO","text":"Dominican Republic"},{"id":"DZ","text":"Algeria"},{"id":"EC","text":"Ecuador"},{"id":"EE","text":"Estonia"},{"id":"EG","text":"Egypt"},{"id":"EH","text":"Western Sahara"},{"id":"ER","text":"Eritrea"},{"id":"ES","text":"Spain"},{"id":"ET","text":"Ethiopia"},{"id":"FI","text":"Finland"},{"id":"FJ","text":"Fiji"},{"id":"FK","text":"Falkland Islands (Malvinas)"},{"id":"FM","text":"Federated States of Micronesia"},{"id":"FO","text":"Faroe Islands"},{"id":"FR","text":"France"},{"id":"FX","text":"France"},{"id":"Me","text":"Metropolitan"},{"id":"GA","text":"Gabon"},{"id":"GB","text":"Great Britain (UK)"},{"id":"GD","text":"Grenada"},{"id":"GE","text":"Georgia"},{"id":"GF","text":"French Guiana"},{"id":"GH","text":"Ghana"},{"id":"GI","text":"Gibraltar"},{"id":"GL","text":"Greenland"},{"id":"GM","text":"Gambia"},{"id":"GN","text":"Guinea"},{"id":"GP","text":"Guadeloupe"},{"id":"GQ","text":"Equatorial Guinea"},{"id":"GR","text":"Greece"},{"id":"GS","text":"S. Georgia and S. Sandwich Islands"},{"id":"GT","text":"Guatemala"},{"id":"GU","text":"Guam"},{"id":"GW","text":"Guinea-Bissau"},{"id":"GY","text":"Guyana"},{"id":"HK","text":"Hong Kong"},{"id":"HM","text":"Heard Island and McDonald Islands"},{"id":"HN","text":"Honduras"},{"id":"HR","text":"Croatia (Hrvatska)"},{"id":"HT","text":"Haiti"},{"id":"HU","text":"Hungary"},{"id":"ID","text":"Indonesia"},{"id":"IE","text":"Ireland"},{"id":"IL","text":"Israel"},{"id":"IN","text":"India"},{"id":"IO","text":"British Indian Ocean Territory"},{"id":"IQ","text":"Iraq"},{"id":"IR","text":"Iran"},{"id":"IS","text":"Iceland"},{"id":"IT","text":"Italy"},{"id":"JM","text":"Jamaica"},{"id":"JO","text":"Jordan"},{"id":"JP","text":"Japan"},{"id":"KE","text":"Kenya"},{"id":"KG","text":"Kyrgyzstan"},{"id":"KH","text":"Cambodia"},{"id":"KI","text":"Kiribati"},{"id":"KM","text":"Comoros"},{"id":"KN","text":"Saint Kitts and Nevis"},{"id":"KP","text":"Korea (North)"},{"id":"KR","text":"Korea (South)"},{"id":"KW","text":"Kuwait"},{"id":"KY","text":"Cayman Islands"},{"id":"KZ","text":"Kazakhstan"},{"id":"LA","text":"Laos"},{"id":"LB","text":"Lebanon"},{"id":"LC","text":"Saint Lucia"},{"id":"LI","text":"Liechtenstein"},{"id":"LK","text":"Sri Lanka"},{"id":"LR","text":"Liberia"},{"id":"LS","text":"Lesotho"},{"id":"LT","text":"Lithuania"},{"id":"LU","text":"Luxembourg"},{"id":"LV","text":"Latvia"},{"id":"LY","text":"Libya"},{"id":"MA","text":"Morocco"},{"id":"MC","text":"Monaco"},{"id":"MD","text":"Moldova"},{"id":"MG","text":"Madagascar"},{"id":"MH","text":"Marshall Islands"},{"id":"MK","text":"Macedonia"},{"id":"ML","text":"Mali"},{"id":"MM","text":"Myanmar"},{"id":"MN","text":"Mongolia"},{"id":"MO","text":"Macao"},{"id":"MP","text":"Northern Mariana Islands"},{"id":"MQ","text":"Martinique"},{"id":"MR","text":"Mauritania"},{"id":"MS","text":"Montserrat"},{"id":"MT","text":"Malta"},{"id":"MU","text":"Mauritius"},{"id":"MV","text":"Maldives"},{"id":"MW","text":"Malawi"},{"id":"MX","text":"Mexico"},{"id":"MY","text":"Malaysia"},{"id":"MZ","text":"Mozambique"},{"id":"NA","text":"Namibia"},{"id":"NC","text":"New Caledonia"},{"id":"NE","text":"Niger"},{"id":"NF","text":"Norfolk Island"},{"id":"NG","text":"Nigeria"},{"id":"NI","text":"Nicaragua"},{"id":"NL","text":"Netherlands"},{"id":"NO","text":"Norway"},{"id":"NP","text":"Nepal"},{"id":"NR","text":"Nauru"},{"id":"NU","text":"Niue"},{"id":"NZ","text":"New Zealand (Aotearoa)"},{"id":"OM","text":"Oman"},{"id":"PA","text":"Panama"},{"id":"PE","text":"Peru"},{"id":"PF","text":"French Polynesia"},{"id":"PG","text":"Papua New Guinea"},{"id":"PH","text":"Philippines"},{"id":"PK","text":"Pakistan"},{"id":"PL","text":"Poland"},{"id":"PM","text":"Saint Pierre and Miquelon"},{"id":"PN","text":"Pitcairn"},{"id":"PR","text":"Puerto Rico"},{"id":"PS","text":"Palestinian Territory"},{"id":"PT","text":"Portugal"},{"id":"PW","text":"Palau"},{"id":"PY","text":"Paraguay"},{"id":"QA","text":"Qatar"},{"id":"RE","text":"Reunion"},{"id":"RO","text":"Romania"},{"id":"RU","text":"Russian Federation"},{"id":"RW","text":"Rwanda"},{"id":"SA","text":"Saudi Arabia"},{"id":"SB","text":"Solomon Islands"},{"id":"SC","text":"Seychelles"},{"id":"SD","text":"Sudan"},{"id":"SE","text":"Sweden"},{"id":"SG","text":"Singapore"},{"id":"SH","text":"Saint Helena"},{"id":"SI","text":"Slovenia"},{"id":"SJ","text":"Svalbard and Jan Mayen"},{"id":"SK","text":"Slovakia"},{"id":"SL","text":"Sierra Leone"},{"id":"SM","text":"San Marino"},{"id":"SN","text":"Senegal"},{"id":"SO","text":"Somalia"},{"id":"SR","text":"Suriname"},{"id":"ST","text":"Sao Tome and Principe"},{"id":"SU","text":"USSR (former)"},{"id":"SV","text":"El Salvador"},{"id":"SY","text":"Syria"},{"id":"SZ","text":"Swaziland"},{"id":"TC","text":"Turks and Caicos Islands"},{"id":"TD","text":"Chad"},{"id":"TF","text":"French Southern Territories"},{"id":"TG","text":"Togo"},{"id":"TH","text":"Thailand"},{"id":"TJ","text":"Tajikistan"},{"id":"TK","text":"Tokelau"},{"id":"TL","text":"Timor-Leste"},{"id":"TM","text":"Turkmenistan"},{"id":"TN","text":"Tunisia"},{"id":"TO","text":"Tonga"},{"id":"TP","text":"East Timor"},{"id":"TR","text":"Turkey"},{"id":"TT","text":"Trinidad and Tobago"},{"id":"TV","text":"Tuvalu"},{"id":"TW","text":"Taiwan"},{"id":"TZ","text":"Tanzania"},{"id":"UA","text":"Ukraine"},{"id":"UG","text":"Uganda"},{"id":"UK","text":"United Kingdom"},{"id":"UM","text":"United States Minor Outlying Islands"},{"id":"US","text":"United States"},{"id":"UY","text":"Uruguay"},{"id":"UZ","text":"Uzbekistan"},{"id":"VA","text":"Vatican City State (Holy See)"},{"id":"VC","text":"Saint Vincent and the Grenadines"},{"id":"VE","text":"Venezuela"},{"id":"VG","text":"Virgin Islands (British)"},{"id":"VI","text":"Virgin Islands (U.S.)"},{"id":"VN","text":"Viet Nam"},{"id":"VU","text":"Vanuatu"},{"id":"WF","text":"Wallis and Futuna"},{"id":"WS","text":"Samoa"},{"id":"YE","text":"Yemen"},{"id":"YT","text":"Mayotte"},{"id":"YU","text":"Yugoslavia (former)"},{"id":"ZA","text":"South Africa"},{"id":"ZM","text":"Zambia"},{"id":"ZR","text":"Zaire (former)"},{"id":"ZW","text":"Zimbabwe"},{"id":"BIZ","text":"Business"},{"id":"COM","text":"Commercial"},{"id":"EDU","text":"US Educational"},{"id":"GOV","text":"US Government"},{"id":"INT","text":"International"},{"id":"MIL","text":"US Military"},{"id":"NET","text":"Network"},{"id":"ORG","text":"Nonprofit Organization"},{"id":"PRO","text":"Professional Services"},{"id":"AERO","text":"Aeronautic"},{"id":"ARPA","text":"Arpanet Technical Infrastructure"},{"id":"COOP","text":"Cooperative"},{"id":"INFO","text":"Info Domain"},{"id":"NAME","text":"Personal Name"},{"id":"NATO","text":"North Atlantic Treaty Organization"}]';
				$(searchfield).trigger({'type' : 'build-results', 'results' : JSON.parse(testData.countryCodes), 'sFilterTxt' : false});
			}, {
				ajaxResults: true,
				maxResults: 10,
				wildCard: '',
				width: $(searchfield).outerWidth() + $(search).outerWidth() - 1 + 'px'
			}
		);
	}	
});


/* --------------------------------------------------------------------
	based on JSON Suggest
	Copyright (c) 2009 Tom Coote (http://www.tomcoote.co.uk)
-------------------------------------------------------------------- */
(function($){$.fn.jsonSuggest=function(h,j){var k=this;var l={minCharacters:1,maxResults:undefined,wildCard:"",caseSensitive:false,notCharacter:"!",maxHeight:350,highlightMatches:true,onSelect:undefined,ajaxResults:false,width:undefined,top:undefined,left:undefined};j=$.extend(l,j);return this.each(function(){function regexEscape(a,b){var c=['/','.','*','+','?','|','(',')','[',']','{','}','\\'];if(b){for(var i=0;i<c.length;i++){if(c[i]===b){c.splice(i,1)}}}var d=new RegExp('(\\'+c.join('|\\')+')','g');return a.replace(d,'\\$1')}var f=$(this),wildCardPatt=new RegExp(regexEscape(j.wildCard||''),'g'),results=$('<div />'),currentSelection,pageX,pageY;function selectResultItem(a){f.val(a.text).closest('form').submit();$(results).html('').hide();if(typeof j.onSelect==='function'){j.onSelect(a)}}function setHoverClass(a){$('div.resultItem',results).removeClass('hover');$(a).addClass('hover');currentSelection=a}function buildResults(b,c){c="("+c+")";var d=true,i,iFound=0,filterPatt=j.caseSensitive?new RegExp(c,"g"):new RegExp(c,"ig");$(results).html('').hide();for(i=0;i<b.length;i+=1){var e=$('<div />'),text=b[i].text;if(j.highlightMatches===true){text=text.replace(filterPatt,"<strong>$1</strong>")}$(e).append('<p class="text">'+text+'</p>');if(typeof b[i].extra==='string'){$(e).append('<p class="extra">'+b[i].extra+'</p>')}if(typeof b[i].image==='string'){$(e).prepend('<img src="'+b[i].image+'" />').append('<br style="clear:both;" />')}$(e).addClass('resultItem').addClass((d)?'odd':'even').click(function(n){return function(){selectResultItem(b[n])}}(i)).mouseover(function(a){return function(){setHoverClass(a)}}(e));$(results).append(e);d=!d;iFound+=1;if(typeof j.maxResults==='number'&&iFound>=j.maxResults){break}}if($('div',results).length>0){currentSelection=undefined;$(results).show().css('height','auto');if($(results).height()>j.maxHeight){$(results).css({'overflow':'auto','height':j.maxHeight+'px'})}}}function evtBuildResults(a){buildResults(a.results,a.sFilterTxt)}$(this).bind('build-results',evtBuildResults);function runSuggest(e){if(this.value.length<j.minCharacters){$(results).html('').hide();return false}var a=[],sFilterTxt=(!j.wildCard)?regexEscape(this.value):regexEscape(this.value,j.wildCard).replace(wildCardPatt,'.*'),bMatch=true,filterPatt,i;if(j.notCharacter&&sFilterTxt.indexOf(j.notCharacter)===0){sFilterTxt=sFilterTxt.substr(j.notCharacter.length,sFilterTxt.length);if(sFilterTxt.length>0){bMatch=false}}sFilterTxt=sFilterTxt||'.*';sFilterTxt=j.wildCard?'^'+sFilterTxt:sFilterTxt;filterPatt=j.caseSensitive?new RegExp(sFilterTxt):new RegExp(sFilterTxt,"i");if(j.ajaxResults===true){h(this.value,j.wildCard,j.caseSensitive,j.notCharacter,sFilterTxt);if(typeof a==='string'){a=JSON.parse(a)}}else{for(i=0;i<h.length;i+=1){if(filterPatt.test(h[i].text)===bMatch){a.push(h[i])}}}}function keyListener(e){switch(e.keyCode){case 13:$(currentSelection).trigger('click');return false;case 40:if(typeof currentSelection==='undefined'){currentSelection=$('div.resultItem:first',results).get(0)}else{currentSelection=$(currentSelection).next().get(0)}if($(currentSelection).hasClass('resultItem'))$(f).val($(currentSelection).text());setHoverClass(currentSelection);if(currentSelection){$(results).scrollTop(currentSelection.offsetTop)}return false;case 38:if(typeof currentSelection==='undefined'){currentSelection=$('div.resultItem:last',results).get(0)}else{currentSelection=$(currentSelection).prev().get(0)}if($(currentSelection).hasClass('resultItem'))$(f).val($(currentSelection).text());setHoverClass(currentSelection);if(currentSelection){$(results).scrollTop(currentSelection.offsetTop)}return false;default:runSuggest.apply(this,[e])}}function getBoxPosition(a,b){var c={top:0,left:0};while(true){c.top+=a.offset().top;c.left+=a.offset().left;if(a.attr("id")==b)return c;a=a.parent()}return c}var g=getBoxPosition(f,"container");$(results).addClass('searchSuggest').css({'top':j.top||((g.top+f.height()+5)+'px'),'left':j.left||(g.left+'px'),'width':j.width||((f.width()+5)+'px'),'position':'absolute'}).hide();f.after(results).keyup(keyListener).blur(function(e){var a=$(results).offset();a.bottom=a.top+$(results).height();a.right=a.left+$(results).width();if(pageY<a.top||pageY>a.bottom||pageX<a.left||pageX>a.right){$(results).hide()}}).focus(function(e){$(results).css({'top':j.top||((f.position().top+f.height()+5)+'px'),'left':j.left||(f.position().left+'px')});if($('div',results).length>0){$(results).show()}}).attr('autocomplete','off');$(document).mousemove(function(e){pageX=e.pageX;pageY=e.pageY});$(results).appendTo('#container');if($.browser.opera){f.keydown(function(e){if(e.keyCode===40){return keyListener(e)}})}j.notCharacter=regexEscape(j.notCharacter||'');if(!j.ajaxResults){if(typeof h==='function'){h=h()}if(typeof h==='string'){h=JSON.parse(h)}}})}})(jQuery);
