$(document).ready(function(){
	new OrderService();
	$(".tabs").tabs();
});

var OrderService = function(){
	var checkboxes = $(":checkbox[name*=order]");
	var einabled = false;
	
	var errors = {
		orderlist: {
			de: "Bitte wählen Sie mindestens eine Publikation aus der Bestell-Liste aus",
			en: "Please select at least one Publication from the list"
		},
		address: {
			de: "Bitte füllen Sie alle Pflichtfelder aus",
			en: "Please fill out all compulsory fields"
		},
		email: {
			de: "Bitte geben Sie eine korrekte E-Mail-Adresse ein",
			en: "Please fill in your correct e-mail address"
		}
	};
	
	var handleErrors = function(args){
		
		var orderlist = args[0];
		var address = args[1];
		var email = args[2];

		var lang = __lang();
		var error = "";
		!orderlist ? error += errors.orderlist[lang]+"\n\n" : true; 
		!address ? error += errors.address[lang]+"\n\n" : true;
		if(!email){
			error += errors.email[lang]
		}
		
		if(!(args[0] && args[1] && args[2])) alert(error);
		return (args[0] && args[1] && args[2]);
	};
	
	
	if(checkboxes.size() > 0){
		var elements = {};
		elements.checkboxes = checkboxes;
		
		elements.inputs = $(":input[name=name], :input[name=surname], :input[name=street], :input[name=zip], :input[name=city], :input[name=country], :input[name=email]");
		elements.submit = $(":input[name=submit]");
		
		elements.submit.click(function(){
			if(handleErrors(change())){
				this.form.submit();
			}else{
				return false;
			}
		});

		var change = function(e){
			var einabled_1 = false;
			$.map(elements.checkboxes, function(element){
				return element.checked ? einabled_1 = true : true;
			});

			var einabled_2 = true;
			for(var i=0; i<elements.inputs.length; i++){
				elements.inputs[i].value.length == 0 ? einabled_2 = false : "";
			}
			
			var einabled_3 = /@/.test($(":input[name=email]").val());

			(einabled_1 && einabled_2 && einabled_3) ? elements.submit.einable() : elements.submit.disable();
			return [einabled_1, einabled_2, einabled_3];
		};
		change();
		
		$.each(elements, function(){
			this.change(function(){
				change();
			}); 
		});
	}
};

$.fn.disable = function(){
	this.each(function(){
		$(this).addClass("disabled");
	});
	
	return $(this);
};

$.fn.einable = function(){
	this.each(function(){
		$(this).removeClass("disabled");
	});
	return $(this);
};

(function(){
  
	$.fn.historyManager = function(years, next, back){
    var replace = function(str) {
      return str.replace(/[^a-zA-Z0-9]/gi, "-").replace(/-+/g, "-");
    }
	  	  
		var hash = window.location.hash;
		var dl = $(this);
		var yearRange  = dl.find("dt > .date").filter(function(index){

			if($(this).parent().parent().attr("id") != undefined){

				$(this).parent().next().attr("id", "history-"+replace(this.innerHTML));
				if(hash.substr(1, hash.length) != ("history-" + replace(this.innerHTML))){
					$(this).parent().hide();
					$(this).parent().next().hide();
				}
				return true;
			}
			return false;
		}).parent().clone();
		
		
		var yearNavigation = dl.before('<h2>'+years+':</h2><p class="history_navi"></p>').prev();

		yearRange.each(function(index){
			if(index != 0){
				yearNavigation.append('<span class="history_pfeil">></span>');
			}
			var span = $(this).find("span");
			var id = replace(span.text());
			var innerHTML = span.text();
			yearNavigation.append($(this).find("span").wrap("<a href='#history-"+id+"' title='"+innerHTML+"'></a>").parent());
			$("#history-"+id+"").append('<ul class="history_navi_year"><li class="next"><a title='+next+' class="date">'+next+'</a></li><li class="back"><a title='+back+' class="date">'+back+'</a></li></ul>');
			$("#history-"+id+"").find(".back, .next").hide();
			if(index != 0){
				$("#history-"+id+"").find(".back").show().find("a").attr("href", "#"+($("#history-"+id+"").prev().prev().attr("id"))+"");
			}
			if(index+1 != yearRange.length){
				$("#history-"+id+"").find(".next").show().find("a").attr("href", "#"+($("#history-"+id+"").next().next().attr("id"))+"");
			}
		});
		
		if(dl.find("dd[id^='history']:visible").length == 0){
			var dd = dl.find("dd[id^='history']").eq(0,1).show();
			dd.prev().show();
		}
		$(".history_navi a[href*="+window.location.hash+"]").addClass("active");
		
		$("body").click(function(event){
			if(event.target.className == "date"){
				switch(event.target.nodeName.toLowerCase()){
					case "span":
						var id = $(event.target).parent().attr("href");
						id = id.split("#")[1];
					break;
					default:
						var id = (event.target.href.split("#"))[1];
					break;
				}
				var oldDl = $("dd[id^='history']:visible");
				var dl = $("#"+id);
				var a = $(".history_navi a[href*="+id+"]");
				$(".history_navi .active").removeClass("active");
				a.addClass("active");
				

				if(oldDl[0] != dl[0]){
					oldDl.toggle().prev().toggle();
					dl.toggle().prev().toggle();
				};
			}
		});
		
	};
	
	$.fn.sitesMananger = function(){
		var hideDlDt = function(id){
			$("#"+id).hide().next().hide();
		};
		
		var createCaption = function(element){
			$(element).wrap('<div class="image"></div>').parent().append('<p></p>').find("p").hide();
		};
		
		return this.each(function(){
			var parent = $(this);
			var caption = $(".ansberg", this).each(function(){
				createCaption(this);
			}).next();

			$("a", this).each(function(){
				hideDlDt(this.href.split("#")[1]);

				$(this).hover(function(){
					caption.text($(this).text());
					caption.fadeIn(200);
				}, function(){
					caption.fadeOut(200);
					caption.text("");
				}).click(function(e){
					parent.find("a.active").removeClass("active");
					$(this).addClass("active");
					parent.find("dt:visible").hide().next().hide();
					$("#"+this.href.split("#")[1]).show().next().show();
				});
			});
		});
	};

  $.fn.tabs = function(){
    return this.each(function() {
      var _this = jQuery(this);
      
      var ul = $('<ul class="anchor_list"></ul>');
      
      var dts = _this.find("dt").hide();
      var dds = _this.find("dd").hide();
      var dl = _this.find("dl");
      
      dts.each(function() {
        var dt = jQuery(this);
        var text = dt.text();
        
        var li = $('<li><a href="#">' + text + '</a></li>');
        ul.append(li);
        
        li.click(function(){
          dds.hide();
          dt.next().show();
          ul.find(".active").removeClass("active");
          jQuery(li[0].firstChild).addClass("active");
          
          return false;
        });
        
      });
          
      ul.prependTo(_this);
      
      ul.find(">li:eq(0)").click();
      
    });
  };

})(jQuery);
