$(document).ready(function() {
	// Initialize the page.
	new App().init();

	// Remove trail link from start pages
	var pageLocation = document.location.href.split('/');
	if(!pageLocation[3].length) {
		$('.trail_link_wrapper').hide();
	}

	// make sure the "home" node is active on start page
  var thisPageClass = jQuery('body').attr('class').split(' ');

	if(thisPageClass[0] == 'template-start') {
		jQuery('#navigation ul li:first-child a').addClass('current')
    jQuery('#navigation ul li:first-child').addClass('current');
  } else if(thisPageClass[0] == 'template-twocol') {
		// remove unwanted content from the staff pages
		if(pageLocation[5].length) {
			jQuery('#content .section_object').each(function(){
				jQuery(this).hide();
			});
		}
	}

	// do search
	$("#search").submit(doSiteSearch);

	// Load shim and init feedback form
  jQuery("#feedback_init").on("click", function() {
		doAjaxRequest('CoMeT_function=run_module&module=SiteTools&function=contact_form&action=contactform_render', loadFeedbackResponse);
	});

});

var App = function() {
	// The page responsive width.
	var WIDTH = 1200;

	// The visual state of the logotype.
	var visible = false;

	// A reference to the browser window.
	var browser = $(window);

	// The resize event. Adjusts the logo based on the page width.
	this.resize = function() {
		if (browser.width() < WIDTH && !visible) {
			$("body").css({ "background": "#e6e1db" }).find("#logotype").show();
			$("#feedback").appendTo($('#logotype .wrap'));
			visible = true;
		}
		else if (browser.width() > WIDTH && visible) {
			$("body").css({ "background": "#e6e1db url(/site/mollwenden_sv/images/static/bg.png) top center no-repeat fixed" }).find("#logotype").hide()
			$("#logo_wide").after($("#feedback"));
			visible = false;
		}
	}

	// Run the initialization.
	this.init = function() {
		browser.resize(this.resize).resize();
	}
};



/**
 * feedback
 *
 */

function loadFeedbackResponse(html) {

	$('#overlay').fadeIn(200);
	$('#popup').html(html).fadeIn(200);
	$("#close_popup").on("click", function() {
		closePopup();
	});

  var options = {
    url:           '?CoMeT_function=run_module&module=SiteTools&function=contact_form&action=contactform_process',
    beforeSubmit:   contactformCheck,
    success:        contactformResponse,
    dataType:      'json'
  };
  jQuery('#contactform').ajaxForm(options);

	jQuery("#contactform input, #contactform textarea").on("focus", function() {
		jQuery(this).removeClass("missing");
	}).on("blur", function() {
		contactformCheck();
	});


}

//function contactformCheck(formData, jqForm, options) {
function contactformCheck() {

  //var $String = jQuery.param(formData);
  //var form = jqForm[0];
	var form = jQuery("#contactform");
	var error = false;

  var name = form.find("input[name='par_name']").val();
  if(!name) {
    jQuery("input[name='par_name']").addClass("missing");
    error = true;
  } else {
    jQuery("input[name='par_name']").removeClass("missing");
  }

	var email = form.find("input[name='par_email']").val();
  if(!validEmail(email)) {
    jQuery("input[name='par_email']").addClass("missing");
    error = true;
  }	else {
    jQuery("input[name='par_email']").removeClass("missing");
  }

  var message = jQuery("textarea[name='par_message']").val();
  if(!message) {
    jQuery("textarea[name='par_message']").addClass("missing");
    error = true;
  } else {
    jQuery("textarea[name='par_message']").removeClass("missing");
  }

  /*
	if (error) {
    jQuery("#contactform_response").removeClass("form_success").addClass("form_error").html("You have to complete the form before submitting it.");
  }
	*/

  return error ? false : true;
}

function contactformResponse(data) {

  var status = data.status;
  var action = data.action;
  var message = data.message;
  var name = data.name;
  var email = data.email;

  if (status == 'send_success') {
    jQuery("#contactform_response").removeClass("form_error").addClass("form_success").html(message);
    jQuery("#contactform").find("input[type=submit]").remove().end().find("input, textarea").prop("disabled", true);
  } else {
    jQuery("#contactform_response").removeClass("form_success").addClass("form_error").html(message);
  }

}




/**
 * search
 *
 */

function doSiteSearch() {
  var searchstring = $("input#searchstring").val();
  doAjaxRequest('CoMeT_function=run_module&module=ModSearch&function=ajax_search&searchstring=' + searchstring, searchResult);
	return false;
}

function searchResult(html) {
	$('#overlay').fadeIn(200);
	$('#popup').html(html).fadeIn(200);
	$("#close_popup").on("click", function() {
		closePopup();
	});
}

function closePopup() {
	$('#overlay').fadeOut(200);
	$('#popup').fadeOut(200);
}



/**
 * common
 *
 */

function validEmail(elementValue) {
  var emailPattern = /^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/;
  return emailPattern.test(elementValue);
}

function doAjaxRequest(pars, callback) {
  $.ajax({
    type: "POST",
    url: "?",
    data: pars,
    success: callback
  });
}
