/* Copyright Scientec Internet Applications + Media GmbH - www.scientec.de */

/***********************  sofort ***********************/


(function($){

	$.fn.shuffle = function() {
		return this.each(function(){
			var items = $(this).children().clone(true);
			return (items.length) ? $(this).html($.shuffle(items)) : this;
		});
	}
	
	$.shuffle = function(arr) {
		for(var j, x, i = arr.length; i; j = parseInt(Math.random() * i), x = arr[--i], arr[i] = arr[j], arr[j] = x);
		return arr;
	}
	
})(jQuery);

/*********************** nach domready **********************/


function init()
{
  $('#scroller ul').shuffle();
  HTML();
  Mailto();
  var DLPN=document.location.pathname;
  $('#nav a[href="'+DLPN+'"]').addClass('hier');
  $('#nav a').each(function(){
    var el1=this;
    $('#pfad a').each(function(){
      if($(el1).attr('href') == $(this).attr('href')) {
        $(el1).addClass('aktiv');
        return false
      }
    });
  });
  $("body").bind("mouseenter",function(){ if($(window).width()>1024) $("#back,#next").stop(true, true).fadeIn() })
  $("body").bind("mouseleave",function(){ $("#back,#next").stop(true, true).fadeOut() })
  $(".galerie div.detail img").bind("click",function(){ document.location.href=$("#next").attr('href')}).css('cursor','hover')

}



function HTML(){



        $("#scroller").jCarouselLite({
          btnNext: ".scroller .right",
          btnPrev: ".scroller .left",
          vertical: false,
          speed: 800,
          scroll: 1,
          start: 1,//Math.floor(Math.random()*$("#scroller li").length),
          mouseWheel:false,
          visible:3
        });

	$(".scroller").bind("mouseenter",function(){
		$(".scroller .left, .scroller .right").stop(true, true).fadeIn()
	})
	$(".scroller").bind("mouseleave",function(){
		$(".scroller .left, .scroller .right").stop(true, true).fadeOut()
	})

}


/****************** Allgemeine Funktionen ******************/

function Mailto()
{
	$('em.em').each(function(){
		var EM = $(this).text().replace(/~at~/i,"@");
		$(this).html('<a href="mailto:'+EM+'">'+EM+'</a>');
	});
}

var showUploadMessage = false;
var WaitingWindow = null;

function waiting()
{
	alert("Check Function waiting()!");
	//WaitingWindow = window.open("/include/fileupload/","UploadWindow","width=300,height=170,dependent=yes,resizeable=no");
}

function trim(String) 
{
   if (String == null) {
      return (false);
   }
   return String.replace(/(^\s+)|(\s+$)/g,"");
}

function checkinput(field)
{
	var FieldName = field.name;
	var FieldValue = field.value;
	var FieldCaption = field.alt;

	// Aufbau des Namens: <Feldname>[.Typ][.Regel][.Regel]...

	var returnvalue = true; // true - Wert ist ok. false - Wert ist fehlerhaft
	var msg = '';
	var filter;
    var paramRules;

	var FieldRules = FieldName.split("|");

        if (!FieldCaption)
        	FieldCaption = FieldRules[0];

	if (FieldRules.length < 2) return(''); // keine Regeln vorhanden

	for (var Eigenschaft in FieldRules) {
    
        paramRules = FieldRules[Eigenschaft].split(":");

		switch (paramRules[0]) {

		case 'int','integer':
			if ((FieldValue.length != 0) && (isNaN(FieldValue))) {
				returnvalue = false;
				msg = 'muss eine Zahl sein.';
			}
			break;

		case 'float':
			// todo: , in . konvertieren
			if ((FieldValue.length != 0) && isNaN(parseFloat(FieldValue))) {
				returnvalue = false;
				msg = 'muss eine Zahl sein.';
			}
			break;

		case 'email':
			filter  = new RegExp("^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9])+$");
			if ((FieldValue.length != 0) && (filter.test(FieldValue) == false)) {
				returnvalue = false;
				msg = 'ist keine gültige eMail-Adresse.';
			}
			break;

		case 'url': // todo: TLD und Parameter checken?

		  	scheme = "(http:\\/\\/)";  // scheme HTTP is: http://(host):(port)/(path)?(searchpart)
    			machine = "[A-Za-z0-9]+((\\.|(\\-)+)[A-Za-z0-9]+)*";
    			domain = "[A-Za-z]{2,3}"

    			var filter =  /^(http:\/\/){0,1}([a-zA-Z0-9\-])+\./;
			//new RegExp("^" + scheme + "?" + machine + "\." + domain	);
			if ((FieldValue.length != 0) && (filter.test(FieldValue) == false))
			{
				returnvalue = false;
				msg = 'ist keine gültige WWW-Adresse.';
			}
			break;

		case 'date': // akzeptiert: m(m).t(t).yy(yy)
			filter = new RegExp("^(3[01]|0[1-9]|[1-9]|[12][0-9])\.(0[1-9]|[1-9]|1[012])\.([0-9]{2,4})+$");
			if ((FieldValue.length != 0) && (filter.test(FieldValue) == false)) {
				returnvalue = false;
				msg = 'ist kein gültiges Datum.';
			}
			break;

		case 'time':
			filter = new RegExp("^(1[0-9]|2[0-3]|0[0-9]|[0-9])\:([0-5][0-9])+$");
			if ((FieldValue.length != 0) && (filter.test(FieldValue) == false)) {
				returnvalue = false;
				msg = 'ist keine gültige Uhrzeit.';
			}
			break;


		case 'maxlength': // syntax: .maxlength.<value>
			if ((FieldValue.length != 0) && (parseInt(FieldValue.length) > parseInt(paramRules[1]))) {
				returnvalue = false;
				msg = 'darf höchstens '+paramRules[1]+' Zeichen lang sein.';
			}
			break;

		case 'length': // syntax: .length.<value>
			if ((FieldValue.length != 0) && (parseInt(FieldValue.length) != parseInt(paramRules[1]))) {
				returnvalue = false;
				msg = 'muss genau '+paramRules[1]+' Zeichen lang sein.';
			}
			break;

		case 'required':
			if ((FieldValue == null) || (trim(FieldValue).length == 0)) {
				returnvalue = false;
				msg = 'muss unbedingt angegeben werden.';
			}
			break;

		case 'notzero':
			if (isNaN(parseInt(FieldValue)) || parseFloat(FieldValue)==0) {
				returnvalue = false;
				msg = 'darf nicht Null sein.';
			}
			break;

		case 'positive':
			if ((FieldValue.length != 0) && ((isNaN(parseInt(FieldValue)) || parseFloat(FieldValue)<0))) {
				returnvalue = false;
				msg = 'muss positiv sein.';
			}
			break;
                case 'upload':
                	if (FieldValue.length != 0)
                        	showUploadMessage = true;
                     break;

		}
	}
	if (returnvalue == false) {
		return('"'+FieldCaption+'" '+msg);
	} else {
		return('');
	}
}



// ----------------------------------------
// function checkform(formname)
// fname ... field name
// fvalue .. field value
//
// get all elements of a form. check values
// and does error handling.
// ----------------------------------------
function checkform(myForm,nextpage)
{

	var isSubmit = true;

	if (myForm.askSubmit) {
		isSubmit = confirm("Wollen Sie diese Werte abspeichern?");
		myForm.askSubmit.value = isSubmit;
	}

	var returnvalue = true;

	if (isSubmit == true) {
		var countElements = myForm.length;
		for (i=0;i<countElements;i++) { // for(..in..) funktioniert hier mit IE nicht
			res = checkinput(myForm[i]);
			if (res != '') {
				alert(res + ' Bitte geben Sie einen gültigen Wert ein.');

				// (todo: feld löschen?)
				myForm[i].focus()
				myForm[i].style.background="#FFFFA7";//#FF8877 : rot

				if (nextpage) {
					return void(0);
				} else {
					return false;
				}
				break;
			} else {
				myForm[i].style.background="#ffffff";
			}
		}

	        if (showUploadMessage == true)
        		waiting();
	}


	// 2. parameter -> checkform wurde über tab aufgerufen
        if (nextpage)
		if (nextpage.length > 0) {
			myForm.next.value = nextpage;
			myForm.submit();
			return;
	}
}


var astr = "toixbb";


function checkgbuch()
{
  var checked=true;
  var pattern=/.*\@.*\..*/;
  if (document.sendform.name.value=="" || document.sendform.name.value=="Name*")
  {
    document.sendform.name.style.borderColor = "red";
    checked=false;
  }
  else
  {
    document.sendform.name.style.borderColor = "#909090";
  }
  if (document.sendform.text.value=="" || document.sendform.text.value=="Text*")
  {
    document.sendform.text.style.borderColor = "red";
    checked=false;
  }
  else
  {
    document.sendform.text.style.borderColor = "#909090";
  }
  document.sendform.para.value = astr;
  document.sendform.action = "/cgi-bin/";
  document.sendform.action += "cus"+astr+"uch.pl";
  document.sendform.action = document.sendform.action.replace(/ixb/,"m/g");
  if (checked)
  {
    document.sendform.submit();
  }
}

function checkkontakt()
{
  var checked=true;
  var pattern=/.*\@.*\..*/;
  if (!document.sendform.name.value)
  {
    alert("Bitte geben Sie Ihren Namen an.");
    document.sendform.name.focus();
    checked=false;
  }
  if (checked && !document.sendform.strasse.value)
  {
    alert("Bitte geben Sie die Strasse an.");
    document.sendform.strasse.focus();
    checked=false;
  }
  if (checked && !document.sendform.plzort.value)
  {
    alert("Bitte geben Sie Postleitzahl und Ort an.");
    document.sendform.plzort.focus();
    checked=false;
  }
  if (checked && !document.sendform.email.value)
  {
    alert("Bitte geben Sie Ihre Emailadresse an.");
    document.sendform.email.focus();
    checked=false;
  }
  if (checked && pattern.test(document.sendform.email.value)==false)
  {
    alert("Inkorrekte Emailadresse");
    document.sendform.email.focus();
    checked=false;
  }
  if (checked && !document.sendform.nachricht.value)
  {
    alert("Bitte teilen Sie uns Ihr Anliegen mit.");
    document.sendform.nachricht.focus();
    checked=false;
  }
  if (checked)
  {
    document.sendform.submit();
  }
}

function checkbuchung()
{
  var checked=true;
  var pattern=/.*\@.*\..*/;
  if (!document.sendform.Name.value)
  {
    alert("Bitte geben Sie Ihren Namen an.");
    document.sendform.Name.focus();
    checked=false;
  }
  if (checked && !document.sendform.email.value)
  {
    alert("Bitte geben Sie Ihre Emailadresse an.");
    document.sendform.email.focus();
    checked=false;
  }
  if (checked && pattern.test(document.sendform.email.value)==false)
  {
    alert("Inkorrekte Emailadresse");
    document.sendform.email.focus();
    checked=false;
  }
  if (checked && !document.sendform.Datum_Ankunft.value)
  {
    alert("Bitte geben Sie den Anreisetag ein.");
    document.sendform.Datum_Ankunft.focus();
    checked=false;
  }
  if (checked && !document.sendform.Datum_Abreise.value)
  {
    alert("Bitte geben Sie den Abreisetag ein.");
    document.sendform.Datum_Abreise.focus();
    checked=false;
  }
  if (checked && !document.sendform.Anzahl_Erwachsene.value)
  {
    alert("Bitte geben Sie die Anzahl der Erwachsenen ein.");
    document.sendform.Anzahl_Erwachsene.focus();
    checked=false;
  }
  if (checked && !document.sendform.Anzahl_Einzelzimmer.value && !document.sendform.Anzahl_Doppelzimmer.value && !document.sendform.Anzahl_Apartments.value)
  {
    alert("Bitte geben Sie die Anzahl der Zimmer ein.");
    checked=false;
  }
  return checked;
}


