function jamp() {

    this.settings = {
        ajaxPath: 'ajax/',
        errorColor: '#DB6400',
        successColor: '#006633',
        defaultColor: '#191919',
        success: function() {

        }
    };

    this.isValidEmail = function( field ){
        var str = $( field ).val();
        var filter = /^.+@.+\..{2,3}$/;

        if( filter.test( str ) ) {
            return true;
        } else {
            return false;
        }
    };

   this.flur = function( j, text ) {
        if($(j).length>0) {
            this.searchText = text;

            $(j).val(text);

            $(j).focus(function() {
                if($(j).val()==text) {
                    $(j).val('');
                }
            });

            $(j).blur(function() {
                if($(j).val()=='') {
                    $(j).val(text);
                }
            });
        }
    };

    this.search = function( j, jInput ) {
        if($(j).length>0) {
            $(j+' input').each(function() {
                if($(this).attr('type')=='button') {
                    $(this).click(function() {
                        if($(jInput).val()!='' && $(jInput).val()!=self.searchText) {
                            $(j).submit();
                        }
                    });
                }
            });
        }
    };

    this.toggleSlide = function( self, idElement ) {
        if( $( self ).css('display')=='none' ){
            $( self ).stop(true, true).slideDown('fast');
        } else {
            $( self).stop(true, true).slideUp('fast');
        }

        if( $( idElement ).css('display')=='none' ){
            $( idElement ).stop(true, true).slideDown('fast');
        } else {
            $( idElement ).stop(true, true).slideUp('fast');
        }
    };

    /*
     *  Formartiert einen Preis, in dem . durch , ersetzt wird.
     *  Ebenso wird der Preis anhand von precision aufgerundet.
     *  Ist precision nicht angegeben, wird er automatisch auf 2 gesetzt.
     */
    this.formatPrice = function(wert,precision) {
        var x,x1,x2;

        if(precision==undefined) {
            precision = 2;
        }

        wert = (wert.toFixed) ? wert.toFixed(precision) : Math.floor(wert)+"."+(100+Math.round((wert-Math.floor(wert))*100)+"").substr(1,2);

        nStr = wert;

        nStr += '';
        x = nStr.split('.');
        x1 = x[0];
        x2 = x.length >= 1 ? ',' + x[1] : '';

        var rgx = /(\d+)(\d{3})/;
        while (rgx.test(x1)) {
            x1 = x1.replace(rgx, '$1' + '.' + '$2');
        }

        return x1 + x2;

    };

    /* returns actual page size as an array [width|height] */
    this.getPageSize = function() {
        var xScroll, yScroll;
        if (window.innerHeight && window.scrollMaxY) {
            xScroll = window.innerWidth + window.scrollMaxX;
            yScroll = window.innerHeight + window.scrollMaxY;
        } else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
            xScroll = document.body.scrollWidth;
            yScroll = document.body.scrollHeight;
        } else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
            xScroll = document.body.offsetWidth;
            yScroll = document.body.offsetHeight;
        }
        var windowWidth, windowHeight;
        if (self.innerHeight) {	// all except Explorer
            if(document.documentElement.clientWidth){
                windowWidth = document.documentElement.clientWidth;
            } else {
                windowWidth = self.innerWidth;
            }
            windowHeight = self.innerHeight;
        } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
            windowWidth = document.documentElement.clientWidth;
            windowHeight = document.documentElement.clientHeight;
        } else if (document.body) { // other Explorers
            windowWidth = document.body.clientWidth;
            windowHeight = document.body.clientHeight;
        }
        // for small pages with total height less then height of the viewport
        if(yScroll < windowHeight){
            pageHeight = windowHeight;
        } else {
            pageHeight = yScroll;
        }
        // for small pages with total width less then width of the viewport
        if(xScroll < windowWidth){
            pageWidth = xScroll;
        } else {
            pageWidth = windowWidth;
        }
        arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight);
        return arrayPageSize;
    };
}

var jamp = new jamp();


var jamp = {
	AjaxPath:'ajax/',
	errorColor:'#990000',
	successColor:'#006633',

	isValidEmail: function(field) {
		var str=$(field).val();
		var filter=/^.+@.+\..{2,3}$/;
		if (filter.test(str)) {
			return true;
		} else {
			return false;
		}
	}
}

var StatusBox = {
	topPosition:0,
	params:'',

	SetParams: function(params) {
		this.params+=params;
	},

	Create: function() {
		this.Delete();

		this.topPosition=jQuery(window).scrollTop();

		$('<span id="StatusBox"></span>').appendTo('.hauptcontainer');
		$('#StatusBox').css({
			'position'			: 'absolute',
			'display'			: 'none',
			'top'				: jQuery(window).scrollTop()+'px',
			'right'				: '0px',
			'z-index'			: '1',
			'border-left'		: '1px #81B40B solid',
			'border-right'		: '1px #81B40B solid',
			'border-bottom'		: '1px #81B40B solid',
			'background-color'	: '#ffffff',
			'width'				: '',
			'height'			: '',
			'padding'			: '4px',
			'cursor'			: 'pointer'
		});
		$('#StatusBox').attr('title','Schließen');

		// Message $('#StatusBox').html('');

		$('#StatusBox').bind('click',function() {
			$('#StatusBox').slideUp("fast",function() {
				$('#StatusBox').remove();
			});
		});

		jQuery(window).scroll(function() {
			StatusBox.topPosition=jQuery(window).scrollTop();
			$('#StatusBox').css({ 'top' : StatusBox.topPosition+'px' });
		});

		this.Hide();
	},

	Execute: function() {
		$.ajax({
			type:'post',
			url:jamp.AjaxPath+'FormStatus.php',
			data:StatusBox.params,
			success:function(html) {
				$('#StatusText').html(html);
				StatusBox.Create();
				StatusBox.Message('Fehler','Sie haben vergessen, folgende Felder auszufüllen:<br><br>'+html);
				StatusBox.Load();
			}
		});
	},

	Message: function(head,html) {
		$('<span style="float:left;width:31px;height:20px; padding:10px 0px 0px 10px;"><img src="img/infograu.gif" border="0"></span><span style="float:left;font-size:14px; padding:10px 0px 0px 0px; font-weight:bold; font-size:11px;">'+head+'</span><br clear="all">').appendTo('#StatusBox');
		$('<div id="StatusText" style="padding:10px 10px 10px 10px;">'+html+'</div>').appendTo('#StatusBox');
	},

	Load: function() {
		$('#StatusBox').slideDown("fast");
	},

	Delete: function() {
		this.params='';
		$('#StatusBox').remove();
	},

	Hide: function() {
		$('.formtextfeld').focus(function() {
			$('#StatusBox').slideUp("fast",function() {
				$('#StatusBox').remove();
			});
		});
	}
}

var Referenzen = {

	imgArr:'',
	imgLength:0,

	// Dient zur Weiterleitung der Kategorie auf der Übersichtsseite
	change: function(id) {
		if(id!='') {
			window.location.href=id;
		} else {
			window.location.href='referenzen.php';
		}
	},

	clickImg: function(i) {
		var t = Referenzen;

		$('.referenzbildnummern .linkgruen').attr('class','linkschwarzzugruen');
		$('#'+i).attr('class','linkgruen');

		$('.referenzbild img').fadeOut(1500, function() {
			$('.referenzbild img').attr('src',t.imgArr[i]);
			setTimeout("$('.referenzbild img').fadeIn(1500);",800);
		});

		clearTimeout(aktiv);

		aktiv = setTimeout('Referenzen.reloadImg('+i+')',10000);
	},

	reloadImg: function(i) {
		var t = Referenzen;
		//var u = i;

		i++;

		if(i==t.imgLength) i=0;

		//var currentImg=$('.referenzbild img').attr('src');

		$('.referenzbildnummern .linkgruen').attr('class','linkschwarzzugruen');
		$('#'+i).attr('class','linkgruen');

		$('.referenzbild img').fadeOut(1500, function() {
			$('.referenzbild img').attr('src',t.imgArr[i]);
			setTimeout("$('.referenzbild img').fadeIn(1500);",800);
		});

		aktiv = setTimeout('Referenzen.reloadImg('+i+')',10000);
	},

	init: function(imgArray) {
		var t = this;

		t.imgArr = imgArray;
		t.imgLength = t.imgArr.length;

		$('.referenzbild img').attr('src',t.imgArr[0]);

		if(t.imgLength>1) aktiv = setTimeout('Referenzen.reloadImg(0)',5000);
	}
}

var Newsletter = {

	error:0,
	fieldArr:[
				{ Name:'Anrede', Output:'Anrede', Required:false, Type:'text' },
				{ Name:'Name', Output:'Name', Required:true, Type:'text' },
				{ Name:'Vorname', Output:'Vorname', Required:true, Type:'text' },
				{ Name:'Email', Output:'E-Mail', Required:true, Type:'email' }
			 ],
	params:'',
	errorParams:'',

	Aktivieren: function(Bereich,Aktivierung,Email) {
		$.ajax({
				type:'post',
				url:jamp.AjaxPath+'Newsletter.php',
				data:'Mode='+Bereich+'&Aktivierung='+Aktivierung+'&Email='+Email,
				success:function(html) {
					if(html=='done') {
						StatusBox.Create();
						StatusBox.Message('Erfolg','Sie haben sich erfolgreich für den Newsletter freigeschaltet.');
						StatusBox.Load();
						for(i=0;i<Newsletter.fieldArr.length;i++) {
							$('#'+Newsletter.fieldArr[i].Name).val('');
						}
					} else {
						StatusBox.Create();
						StatusBox.Message('Fehler',html);
						StatusBox.Load();
					}
				}
			});
	},

	Deaktivieren: function(Bereich,Aktivierung,Email) {
		$.ajax({
				type:'post',
				url:jamp.AjaxPath+'Newsletter.php',
				data:'Mode='+Bereich+'&Aktivierung='+Aktivierung+'&Email='+Email,
				success:function(html) {
					if(html=='done') {
						StatusBox.Create();
						StatusBox.Message('Erfolg','Sie haben sich erfolgreich abgemeldet.');
						StatusBox.Load();
						for(i=0;i<Newsletter.fieldArr.length;i++) {
							$('#'+Newsletter.fieldArr[i].Name).val('');
						}
					} else {
						StatusBox.Create();
						StatusBox.Message('Fehler',html);
						StatusBox.Load();
					}
				}
			});
	},

	Abonnieren: function() {
		this.error=0;
		this.params='';
		this.errorParams='';

		for(i=0;i<this.fieldArr.length;i++) {
			if(this.fieldArr[i].Required==true) {
				if(this.fieldArr[i].Type=='text') {
					if(jQuery.trim($('#'+this.fieldArr[i].Name).val())=='') {
						$('#'+this.fieldArr[i].Name).css('border','1px '+jamp.errorColor+' solid');

						this.errorParams+=this.fieldArr[i].Name+'['+this.fieldArr[i].Output+']='+jQuery.trim($('#'+this.fieldArr[i].Name).val())+'&';

						this.error++;
					} else {
						$('#'+this.fieldArr[i].Name).css('border','1px '+jamp.successColor+' solid');
					}
				} else if(this.fieldArr[i].Type=='email') {
					if(!jamp.isValidEmail('#'+this.fieldArr[i].Name)) {
						$('#'+this.fieldArr[i].Name).css('border','1px '+jamp.errorColor+' solid');

						//this.errorParams+=this.fieldArr[i].Name+'['+this.fieldArr[i].Output+']='+jQuery.trim($('#'+this.fieldArr[i].Name).val())+'&';
						StatusBox.SetParams('Email[E-Mail]={Email}&');
						this.error++;
					} else {
						$('#'+this.fieldArr[i].Name).css('border','1px '+jamp.successColor+' solid');
					}
				}

			}
			this.params+=this.fieldArr[i].Name+'='+$('#'+this.fieldArr[i].Name).val()+'&';
		}

		if(this.error>0) {
			StatusBox.SetParams(this.errorParams);
			StatusBox.Execute();
		} else {
			$.ajax({
				type:'post',
				url:jamp.AjaxPath+'Newsletter.php',
				data:'Mode=Abonnieren&'+Newsletter.params,
				success:function(html) {
					if(html=='accept') {
						StatusBox.Create();
						StatusBox.Message('Erfolg','Sie möchten sich für den Newsletter registriert. Ihnen wird in Kürze eine E-Mail mit einem Bestätigungslink geschickt, den Sie öffnen müssen.');
						StatusBox.Load();
						for(i=0;i<Newsletter.fieldArr.length;i++) {
							$('#'+Newsletter.fieldArr[i].Name).val('');
						}
					} else {
						StatusBox.Create();
						StatusBox.Message('Fehler',html);
						StatusBox.Load();
					}
				}
			});
		}
	},

	Abmelden: function() {
		this.error=0;
		this.params='';
		this.errorParams='';

		if($('#EmailAbmelden').val()=='') {
			this.error++;
			$('#EmailAbmelden').css('border','1px '+jamp.errorColor+' solid');
			this.errorParams+='EmailAbmelden[E-Mail]='+jQuery.trim($('#EmailAbmelden').val())+'&';
		} else if(!jamp.isValidEmail('#EmailAbmelden')) {
			this.error++;
			$('#EmailAbmelden').css('border','1px '+jamp.errorColor+' solid');
			StatusBox.SetParams('Email[E-Mail]={Email}&');
			//this.errorParams+='EmailAbmelden[E-Mail]='+jQuery.trim($('#EmailAbmelden').val())+'&';
		} else {
			this.params+='Email='+$('#EmailAbmelden').val()+'&';
			$('#EmailAbmelden').css('border','1px '+jamp.successColor+' solid');
		}

		if(this.error>0) {
			StatusBox.SetParams(this.errorParams);
			StatusBox.Execute();
		} else {
			$.ajax({
				type:'post',
				url:jamp.AjaxPath+'Newsletter.php',
				data:'Mode=Abmelden&'+Newsletter.params,
				success:function(html) {
					if(html=='decline') {
						StatusBox.Create();
						StatusBox.Message('Erfolg','Sie möchten sich für den Newsletter abmelden. Ihnen wird in Kürze eine E-Mail mit einem Bestätigungslink geschickt, den Sie öffnen müssen.');
						StatusBox.Load();
						$('#EmailAbmelden').val('');
					} else {
					StatusBox.Create();
					StatusBox.Message('Fehler',html);
					StatusBox.Load();
					}
				}
			});
		}
	}
}

var Kontakt = {

	error:0,
	fieldArr:[
			  	{ Name:'Bereich', Output:'Bereich', Required:false, Type:'text' },
				{ Name:'Anrede', Output:'Anrede', Required:false, Type:'text' },
				{ Name:'Name', Output:'Name', Required:true, Type:'text' },
				{ Name:'Vorname', Output:'Vorname', Required:true, Type:'text' },
				{ Name:'Strasse', Output:'Strasse', Required:false, Type:'text' },
				{ Name:'Hausnummer', Output:'Hausnummer', Required:false, Type:'text' },
				{ Name:'Plz', Output:'Plz', Required:false, Type:'text' },
				{ Name:'Ort', Output:'Ort', Required:false, Type:'text' },
				{ Name:'Telefon', Output:'Telefon', Required:false, Type:'text' },
				{ Name:'Telefax', Output:'Telefax', Required:false, Type:'text' },
				{ Name:'Email', Output:'E-Mail', Required:true, Type:'email' },
				{ Name:'Nachricht', Output:'Nachricht', Required:true, Type:'text' }
			 ],
	params:'',
	errorParams:'',

	Send: function() {
		this.params='';
		this.errorParams='';
		this.error=0;

		for(i=0;i<this.fieldArr.length;i++) {
			if(this.fieldArr[i].Required==true) {
				if(this.fieldArr[i].Type=='text') {
					if($('#'+this.fieldArr[i].Name).val()=='') {
						$('#'+this.fieldArr[i].Name).css('border','1px '+jamp.errorColor+' solid');
						this.errorParams+=this.fieldArr[i].Name+'['+this.fieldArr[i].Output+']='+jQuery.trim($('#'+this.fieldArr[i].Name).val())+'&';
						this.error++;
					} else {
						$('#'+this.fieldArr[i].Name).css('border','1px '+jamp.successColor+' solid');
					}
				} else if(this.fieldArr[i].Type=='email') {
					if(!jamp.isValidEmail('#'+this.fieldArr[i].Name)) {
						$('#'+this.fieldArr[i].Name).css('border','1px '+jamp.errorColor+' solid');

						StatusBox.SetParams('Email[E-Mail]={Email}&');
						this.error++;
					} else {
						$('#'+this.fieldArr[i].Name).css('border','1px '+jamp.successColor+' solid');
					}
				}
			}

			this.params+=this.fieldArr[i].Name+'='+$('#'+this.fieldArr[i].Name).val()+'&';
		}

		if(this.error>0) {
			StatusBox.SetParams(this.errorParams);
			StatusBox.Execute();
		} else {
			$.ajax({
				type:'post',
				url:jamp.AjaxPath+'Kontakt.php',
				data:'&'+Kontakt.params,
				success:function(html) {
					if(html=='done') {
						StatusBox.Create();
						StatusBox.Message('Erfolg','Die Nachricht wurde erfolgreich versendet.<br>Wir setzen uns umgehend mit Ihnen in Verbindung.');
						StatusBox.Load();
						for(i=0;i<Kontakt.fieldArr.length;i++) {
							$('#'+Kontakt.fieldArr[i].Name).val('');
						}
					} else {
						StatusBox.Create();
						StatusBox.Message('Fehler',html);
						StatusBox.Load();
					}
				}
			});
		}

	}

}

/*$(document).ready(function(){

});*/

