var queryDebug = '&querydebug=false';

// Globally keep track of the searchpage we are on.
var facetSearchCurrentPage = 0;

// Number of results.
var facetSearchNumRows = 0;

// Total number of pages(depends on the items per page).
var facetSearchNumPages = 10;

// Number of items per page.
var facetSearchNumPerPage = 10;

var currentKeyWord = '';

$(document).ready(function(){

	if ($('#wmformfragment_username').length > 0 && $('#wmformfragment_password').length) {
	    var username = getCookie('username');
	    var password = getCookie('password');
	    if (username != '' && password != '') {
	    	$('#wmformfragment_username').val(username.replace(/"/g,''));
	    	$('#wmformfragment_password').val(password);
	    }
	}
	
	$('.mmmethod').each(function() {
	    if (this.id.indexOf("mth_") == 0) {
	      if (jQuery.inArray(this.id.replace("mth_", ""), userMethods) != -1) {
		$(this).addClass("active");
	      } else {
	      	$('a', this).click(function() {
	      	  $('#wmformfragment_methodid').val($(this).parent().attr('id').replace("mth_", ""));
	      	  $('#wmformfragment_redirect_url').val($(this).attr('href'));
	      	  if (loggedIn) {
		  	$('#lockAll, #messagePopup').show();
		  } else {
		  	$('#lockAll, #loginPopup').show();
		  }
		  return false;
		});
	      }
	    }
	});
	$('.mymethod').each(function() {
	    if (this.id.indexOf("mth_") == 0) {
	      if (jQuery.inArray(this.id.replace("mth_", ""), userMethods) == -1) {
		$(this).remove();
	      } 
	    }
	});
	toggleSelectBoxes('#calcMethodSelect');
	
	if($('.datePickerDummy').length) {
		$('.datePickerDummy').datePicker();
		$('.datePickerDummy').change(function() {
			tempDate = $(this).val();
			$('.dateInputDay').val(tempDate.split('/')[0]);
			$('.dateInputMonth').val(tempDate.split('/')[1]);
			$('.dateInputYear').val(tempDate.split('/')[2]);
			var dateholderSelector = '#dateholder_' + $('.dateInputYear').attr('id').split('_')[1];
			$(dateholderSelector).val(tempDate.split('/')[0] + '/' + tempDate.split('/')[1] + '/' + tempDate.split('/')[2]); 
		});
	} 
	$('.jqRatingStars').each(function() {
	  setupStars($(this));
	});
	
});

function setCookie(name, value, expire) {
  if (expire == '') {
    document.cookie = name + '=' + escape(value) + '; path=/';
  } else {
    var expires = new Date();
    expires.setTime(expires.getTime() + expire);

    document.cookie = name + '=' + escape(value) + ((expire == null) ? '' : ('; expires=' + expires.toGMTString())) + '; path=/';
  }
}

function getCookie(name) {
   var search = name + "=";
   var val = "";
   var offset,end;
   
   if(document.cookie.length > 0) { // if there are any cookies
      offset = document.cookie.indexOf(search) 

      if(offset != -1) { // if cookie exists 
         offset += search.length;

         // set index of beginning of value
         end = document.cookie.indexOf(";", offset) 

         // set index of end of cookie value
         if (end == -1) {
            end = document.cookie.length;
         }

         val = unescape(document.cookie.substring(offset, end));
      } 
   }
   return val;
}

function setupStars(ratingNode){
    var rating = Math.round($(ratingNode).html()) + 0.0;
    if(isNaN(rating)) return ;
    var starType = 'normal';
    var newHtml = '';
	for(i = 0 ; i < 5; i++)	{
	   if(i>=rating) {
	     starType = 'active';
	   }
	   newHtml += '<img src="'+ staticRoot + '/_images/' + starType + '-star.png\" />' 
	}
	$(ratingNode).html(newHtml);
	$(ratingNode).removeClass('jqRatingStars');
	
}

var mm_zoeken  = (function() {
	var jqSearchForm = null;

  return {
    initialize : function(jqForm){
	  mm_zoeken.jqSearchForm = jqForm;
	},

	search : function(){
      $.ajaxSetup({cache: false});
      
      $('body').css('cursor','wait');

      $('#facetSearch_searchresults_div').hide();
      $('#facetSearch_searchresults_div').contents().remove();

      var facetQuery='';

      $('select', mm_zoeken.jqSearchForm).each( function() {
	        if($(this).val().length > 0) {
	      		facetQuery += '&' + $(this).attr('id') + '=' + $(this).val();
			}
      });
      if($('#query').val()!= ''){
      		if (currentKeyWord != $('#query').val()) {
      			facetSearchCurrentPage = 0;
      			currentKeyWord = $('#query').val();
      		}
	      	facetQuery += '&query=' + $('#query').val();
      }
      facetQuery += '&numberofitemsperpage=' + $('#nrOfItemsPerPage').val();
      facetSearchNumPerPage = $('#nrOfItemsPerPage').val();
      facetQuery += '&start=' + ((facetSearchCurrentPage) * facetSearchNumPerPage);
      
	  $.ajax({ 
		url: facetSearchBaseUrl + facetQuery + queryDebug,
		dataType: 'jsonp',
		jsonp: 'jsoncallback',
		error:		mm_zoeken.setNoResultFound,
		success: 	mm_zoeken.facetSearchResultsJSON,
		complete: 	mm_zoeken.searchCompleted
	   });
	},
	searchCompleted : function() {
		if($('#facetSearch_searchresults_div:hidden').length > 0) {
		  mm_zoeken.setNoResultFound();
		}
		else {
		  $('.jqRatingStars').each(function() {
			setupStars($(this));
		  });
		}
	},
	setNoResultFound : function() {
	  $('#facetSearch_searchresults_div').append('<div class="clearer" style="height:30px;"></div>');
	  $('#facetSearch_searchresults_div').append('<div>Er zijn geen resultaten gevonden </div>');
	  $('#facetSearch_searchresults_div').show();
	},
	facetSearchResultsJSON : function(data, status){
		$('#facetSearch_searchresults_div').contents().remove();
	    	if(data.count != undefined && data.count > 0) {
			// Set the number of results global.
			facetSearchNumRows = data.count;
			facetSearchNumPages = Math.ceil(facetSearchNumRows / facetSearchNumPerPage);	    	
			$('#facetSearch_searchresults_div').append('<div class="clearer" style="height:30px;"></div>');
			$('#facetSearch_searchresults_div').append('<div class="block-paragraphHolder" style="margin-bottom:0px;">\
					<div class="paragraph-general">\
						<div class="top"> </div>\
						<div class="h2-wrapper"><h2><b>'+ data.count + '</b> pagina\'s gevonden</h2></div>\
						<div class="wrapper">\
							<div class="clearer"> </div>\
						</div>\
						<div class="bottom"> </div>\
					</div>\
				</div>');
			if(data.results != undefined) {
				$('#facetSearch_searchresults_div').append('<div class="block-ankeilerList"></div>');
				$.each(data.results, function(i,resultItem){
				  var summary = '';
				  if (resultItem.snippets.length > 0) {
				   $.each(resultItem.snippets, function(j,s){
				     summary += '...' + s.snippet + '...&nbsp;&nbsp;';
				   });    
				  } else {    
				   summary += resultItem.summary;
				  }		
				  var resultCount = ((facetSearchCurrentPage*facetSearchNumPerPage)+i+1);
				  var personalized = '';
				  if (resultItem.personalized == 'true') {
				  	personalized = '<span class="icon-key"><!--  --></span>';
				  }
				  $('.block-ankeilerList', '#facetSearch_searchresults_div').append('<div class="ankeiler-general">\
							<div class="top">  </div>\
							<div class="title"><h3><span class="listnum">' + resultCount + '. </span><a href="'+ resultItem.location+ '">'+ resultItem.title + '</a>' + personalized + '</h3></div>\
							<div class="text">'+ summary + '</div>\
							<div class="link"><span><a href="'+ resultItem.location+ '">Lees meer</a></span></div>\
							<div class="bottom"> </div>\
				  </div>');
				});
				if (data.count > 10) {
					// show paging
					$('#facetSearch_searchresults_div').append('<div class="block-pager"><div class="pager-general"><div class="top"><!--  --></div><div class="wrapper"><ul class="searchpagerlist"></ul><div class="clearer"><!--  --></div></div><div class="bottom"><!--  --></div></div></div>');
					buildPageNumbers();				
				}
			}
			
			$('#facetSearch_searchresults_div').show();
		}
		else {
		  mm_zoeken.setNoResultFound();
		}
		$('body').css('cursor','default');
	}
  }
})()

var mm_zoeken_top  = (function() {
	var jqSearchForm = null;
	var lastSearch = '';

  return {
    initialize : function(jqForm){
	  mm_zoeken_top.jqSearchForm = jqForm;
	},

	search : function(){
      $.ajaxSetup({cache: false});
      
      $('.itemsList', '#searchResultsPopup').contents().remove()
	  var facetQuery='';

      if($('#query_top').val()!= ''){
        if($('#query_top').val() != mm_zoeken_top.lastSearch)
          mm_zoeken_top.lastSearch = $('#query_top').val();
	      facetQuery += '&query=' + $('#query_top').val();
	      facetQuery += '&numberofitemsperpage=3';  
		  $.ajax({ 
			url: facetSearchBaseUrl + facetQuery + queryDebug,
			dataType: 'jsonp',
			jsonp: 'jsoncallback',
			error:		mm_zoeken_top.setNoResultFound,
			success: 	mm_zoeken_top.facetSearchResultsJSON,
			complete: 	mm_zoeken_top.searchCompleted
		   });
      }
      else {
        $('#searchResultsPopup').hide();
      }
	},
	searchCompleted : function() {
		if($('.itemsList', '#searchResultsPopup').contents().length == 0) {
	       $('#searchResultsPopup').hide();
		}
	},
	setNoResultFound : function() {
       $('#searchResultsPopup').hide();
	},
	facetSearchResultsJSON : function(data, status){
		$('.itemsList', '#searchResultsPopup').contents().remove();
	    if(data.count != undefined && data.count > 0) {
			if(data.results != undefined) {
				$.each(data.results, function(i,resultItem){
				  $('.itemsList', '#searchResultsPopup').append('<div class="item">\
						<div class="link"><a href="'+ resultItem.location+ '">'+ resultItem.title + '</a></div>\
						<div class="text">'+ resultItem.summary.substring(0,50) + ' ...</div>\
					</div>');				  
				});
			}
			$('#searchResultsPopup').show();
		}
		else {
		  mm_zoeken_top.setNoResultFound();
		}
	}
  }
})()


var mm_lessuggestie  = (function() {

  var sortQuery = '&sort=facet_sorteerdatum+desc';
  var jqSearchForm = null;

  return {
    initialize : function(jqForm){
	  mm_lessuggestie.jqSearchForm = jqForm;
	  mm_lessuggestie.initSorting();
    },
    initSorting : function(){
	  $('a', '#facetSearch_sortoptions').each( function() {
		$(this).click( function(){
		    var clickedOption = $(this).attr('class');
		    // 1. find current sorting
		    var currentSorting = 'down';
		    var sortNode = $('span', '#facetSearch_sortoptions ul');
		    if(sortNode.length) {
			    // reverse sorting in case list is sorted on the clicked option
			    if(sortNode.parent().attr('class') == clickedOption) {
	    		    currentSorting = (sortNode.attr('class')=='up')?'down':'up';
	    		}
	    		sortNode.remove();
	    	}
   		    sortQuery = '&sort=facet_' + clickedOption + (currentSorting=='up'?'+asc':'+desc');
			$(this).append('<span class="'+ currentSorting + '"> </span>');
			mm_lessuggestie.search();
		});
	  });
	},
	search : function(){
      $.ajaxSetup({cache: false});
      
      $('body').css('cursor','wait');
      
      $('#facetSearch_sortoptions').hide();
      $('#facetSearch_searchresults').hide();
      $('#facetSearch_searchresults').contents().remove();
      $('.block-pager').remove();

      var facetQuery='&usecurrentpage=true';
      $('select', mm_lessuggestie.jqSearchForm).each( function() {
        if($(this).val().length > 0) {
      		facetQuery += '&' + $(this).attr('id') + '=' + $(this).val();
		}
      });
      //extra keyword to filter on to distinguish between methods
      if($('#trefwoord').val() != 'default' && $('#trefwoord').val() != '') {
        facetQuery += '&facet_trefwoord=' + $('#trefwoord').val();
      }
      facetQuery += '&facet_mediaitemtype=LesSuggestieMediaItem';
      if($('#query').val()!= 'Trefwoord'){
      	facetQuery += '&query=' + $('#query').val();
	if (currentKeyWord != $('#query').val()) {
		facetSearchCurrentPage = 0;
		currentKeyWord = $('#query').val();
	}      	
      }
      facetSearchNumPerPage = $('#nrOfItemsPerPage').val();
      facetQuery += '&start=' + ((facetSearchCurrentPage) * facetSearchNumPerPage);
	  
	  $.ajax({ 
		url: facetSearchBaseUrl + facetQuery + sortQuery + queryDebug,
		dataType: 'jsonp',
		jsonp: 'jsoncallback',
		error:		mm_lessuggestie.setNoResultFound,
		success: 	mm_lessuggestie.facetSearchResultsJSON,
		complete: 	mm_lessuggestie.searchCompleted
	  });
	},
	searchCompleted : function() {
		if($('#facetSearch_searchresults:hidden').length > 0) {
		  mm_lessuggestie.setNoResultFound();
		}
		else {
		  $('.jqRatingStars').each(function() {
			setupStars($(this));
		  });
		}
	},
	setNoResultFound : function() {
	  $('#facetSearch_searchresults').append('<tr><td>Er zijn geen resultaten gevonden. Zoek bijvoorbeeld alleen op jaargroep of onderwerp. </td></tr>');
	  $('#facetSearch_searchresults').show();
	},
	facetSearchResults : function(data, status){
		$('#facetSearch_searchresults').contents().remove();
		$('#facetSearch_searchresults').append('<tr><td><pre>' + data + '</pre></td></tr>');
	    $('#facetSearch_searchresults').show();
	},
	facetSearchResultsJSON : function(data, status){
		$('#facetSearch_searchresults').contents().remove();
	    if(data.count != undefined && data.count > 0) {
			if(data.results != undefined) {
				// Set the number of results global.
				facetSearchNumRows = data.count;
				facetSearchNumPages = Math.ceil(facetSearchNumRows / facetSearchNumPerPage);				
				$.each(data.results, function(i,resultItem){
				  if(resultItem.subject && resultItem.subject.length && resultItem.yeargroup.length) {
					  var rowClass = 'whiteTable';
					  if(i%2==1) {
						rowClass = 'lightOrangeTableRow';
					  }
					  $('#facetSearch_searchresults').append('<tr>\
						<td><table width="500" border="0" cellspacing="0" cellpadding="0" class="' + rowClass + '">\
							<tr>\
							  <td><img src="' + staticRoot + '/_images/blank.gif" width="12" height="1" /></td>\
							  <td width="477"><table width="477" border="0" cellspacing="0" cellpadding="0">\
								  <tr>\
									<td class="firstColumn">&nbsp;</td>\
									<td class="secondColumn">&nbsp;</td>\
									<td class="thirdColumn">&nbsp;</td>\
								  </tr>\
								  <tr>\
									<td class="firstColumn" rowspan="3">\
										<a href="'+ resultItem.location + '">'+ resultItem.title + '</a>\
										<p>'+ resultItem.subject + '</p>\
									</td>\
									<td class="secondColumn">Datum:</td>\
									<td class="thirdColumn">'+ resultItem.date + '</td>\
								  </tr>\
								  <tr>\
									<td class="secondColumn"><p>Groep:</p></td>\
									<td class="thirdColumn"><span>'+ resultItem.yeargroup + '</span></td>\
								  </tr>\
								  <tr>\
									<td class="secondColumn">Beoordeling:</td>\
									<td class="thirdColumn jqRatingStars">'+ resultItem.voting + '</td>\
								  </tr>\
								  <tr>\
								  	<td class="firstColumn">&nbsp;</td>\
									<td class="secondColumn">&nbsp;</td>\
									<td class="thirdColumn">&nbsp;</td>\
								  </tr>\
							  </table></td>\
							  <td><img src="' + staticRoot + '/_images/blank.gif" width="12" height="1" /></td>\
							</tr>\
						</table></td>\
					  </tr>');
				  }
				});
				if (data.count > 10) {
					// show paging
					$('#facetSearch_searchresults').after('<div class="block-pager"><div class="pager-general"><div class="top"><!--  --></div><div class="wrapper"><ul class="searchpagerlist"></ul><div class="clearer"><!--  --></div></div><div class="bottom"><!--  --></div></div></div>');
					buildPageNumbersLessuggesties();				
				}				
			}
			$('#facetSearch_sortoptions').show();
			$('#facetSearch_searchresults').show();
		}
		else {
		  mm_lessuggestie.setNoResultFound();
		}
		$('body').css('cursor','default');
	}
  }
})()

function buildPageNumbers() {
    // The pagenumbers will be inserted before this selected element.
    $pager = $('ul.searchpagerlist');

     if (facetSearchNumPages > 1) {
      for (var page = 0; page < facetSearchNumPages; page++) {
      	  var first = '';
      	  if (page == 0) {
      	  	first = ' first';
      	  }
          if (facetSearchCurrentPage == page) {
            $pager.append('<li class="item' + first + ' active"><a href="#">' + (page+1) + '</a></li>');
          } else {
            $pager.append($('<li class="item' + first + '"></li>').append($('<a href="#">' + (page+1) + '</a>')
            .bind('click', {'newPage': page}, function(event) {
                facetSearchCurrentPage = event.data['newPage'];
                mm_zoeken.search();
                return false;
            })));
          }
      }
    }
}

function buildPageNumbersLessuggesties() {
    // The pagenumbers will be inserted before this selected element.
    $pager = $('ul.searchpagerlist');

     if (facetSearchNumPages > 1) {
      for (var page = 0; page < facetSearchNumPages; page++) {
      	  var first = '';
      	  if (page == 0) {
      	  	first = ' first';
      	  }
          if (facetSearchCurrentPage == page) {
            $pager.append('<li class="item' + first + ' active"><a href="#">' + (page+1) + '</a></li>');
          } else {
            $pager.append($('<li class="item' + first + '"></li>').append($('<a href="#">' + (page+1) + '</a>')
            .bind('click', {'newPage': page}, function(event) {
                facetSearchCurrentPage = event.data['newPage'];
                mm_lessuggestie.search();
                return false;
            })));
          }
      }
    }
}

function toggleMethodMaterialsMoreLinks(linkObj) {
    $(linkObj).toggleClass('opened');
    if ($(linkObj).hasClass('method')) {
        $(linkObj).next('div.links').find('ul.hidden').slideToggle(200);
        var $l = $(linkObj).next('div.links').find('a.moreMaterials');
        $l.toggleClass('opened');
        if ($l.hasClass('opened')) {
            $l.text('Eerste 2 tonen');
        } else {
            $l.text('Alles uit deze rubriek tonen');
        }
    } else {
        $(linkObj).prev('ul.hidden').slideToggle(200);
        $(linkObj).parent().prev('a.method').toggleClass('opened');
        if ($(linkObj).hasClass('opened')) {
            $(linkObj).text('Eerste 2 tonen');
        } else {
            $(linkObj).text('Alles uit deze rubriek tonen');
        }
    }
    
    
    return false;
}
