var building_count = 0;
var building_array = new Object();

// Die Funktion togglt die Buildingnauswahl.
$.fn.showChoice = function(){
	
		if(building_count != 0){
			
			$(this).slideToggle("fast");
					
			if($('#mask').is(':hidden')){	
				
				//Get the screen height and width  
	      var maskHeight = $(document).height();  
	      var maskWidth = $(window).width();  
	      	     	
	      //Set height and width to mask to fill up the whole screen  
	      $('#mask').css({'width':maskWidth,'height':maskHeight});  
	         
	      //transition effect             
	      $('#mask').fadeTo("slow",0.8); 
	      
	    }else{	    	
	    	$('#mask').hide();	    	
	    }
		}
}

// Timer
$.fn.wait = function(time, type) {
    time = time || 2500;
    type = type || "fx";
    return this.queue(type, function() {
        var self = this;
        setTimeout(function() {
            $(self).dequeue();
        }, time);
    });
};

$.inArray = function(value){
		var result = false;
						
		for(var i in building_array){			
			if(value == $.unescapeSpecialChars(building_array[i])){				
				result = true;
			}
		}
	
		return result;
}

// Die Funktion überprüft ob der Name des Objekts im Array enthalten ist.
$.fn.inArray = function(){
		var result;
		var id = $(this).attr('name');
		
		for(var i in building_array){
			if(all_buildings[id] == $.unescapeSpecialChars(building_array[i])){
				result = true;
			}
		}
				
		return result;
}

// returns building string for email
$.joinObjectData = function(building_array) {
	var count = 0;
	var result = '';
	for(var i in building_array){
		
		if(count == 0) {
			result += building_array[i];
		}else {
			result += ',' + building_array[i];
		}
		count++;
	}
	
	result = result.replace(/&/, '%26').replace(/\s/g, '_').replace(/<span>/, ' ').replace(/<\/span>/, '').replace(/&/, '%26');
				
	return result;
}

// returns the building count
$.getBuildingCount = function(building_array) {
	var result = 0;
	for(var i in building_array){
		result++;
	}
	return result;	
}

// escapes special chars for the use in a JSON String 
$.escapeSpecialChars = function(str_item) {
    return str_item.replace(/&/g, "%26");
}

// unescapes special chars for the use in a JSON String 
$.unescapeSpecialChars = function(str_item) {
    return str_item.replace(/%26/g, "&");
}

// returns JSON String 
$.toJSONString = function(building_array) {	
	var count = 0;
	var result = '{';
	for(var i in building_array){
		if(count == 0) {
			result += '"' + i + '":"' + building_array[i] + '"';
		}else {
			result += ',"' + i + '":"' + building_array[i] + '"';
		}
		count++;
	}
	result += '}';
	
	if(result == '{}')
		result = '';
	
	result = $.escapeSpecialChars(result);
	
	return result;
}

// function sets the 'data' of the Session-Variable.
$.setData = function(){
												
		// Session-Variable set 'data'
		$.ajax({
		   type: "POST",
		   url: "fileadmin/templates/hausbaupark.de/includes/setData.php",
		   data: "data=" + $.toJSONString(building_array)	    	  		          
		});	
}

// function gets 'data' from Session-Variable.
$.getData = function(){
	
		// Session-Variable 'data' abrufen.
		$.ajax({
		   type: "POST",
		   url: "fileadmin/templates/hausbaupark.de/includes/getData.php",
		   data: "name=data",
		   success: function(data){ 	   	   					
		   	   						   	   				
		   	   				building_array = $.parseJSON(data); 
		   	   					   	   					   	   							   							   						   						
		   						if(building_array == null)
		   							building_array = new Object();		    	
		   						
									// Buildingnauswahl befüllen.
									$.each(all_buildings, function(index, value){if($.inArray(value)){$(this).addBuildings(index, value);}});
									
									building_count = $.getBuildingCount(building_array);
									$('#mbutton_count').html(building_count);
																	
									if(building_count > 0){
																																																	
										if($('#form_buildings')){
											$('#form_buildings').changeFormBuildings();
											$('input#buildings').val($.joinObjectData(building_array));
										}								
									}
									
									$('#building_dialog').changeDialogThemes();									
		   					}			          
		});	
}

// Validierung und Versandt des E-Mail Formulars.
$.formValidation = function(){
		// validate and process form here 
    var error = "";
        
    $('.error').hide();  
    
    var complete_name = $("input#complete_name").val(); 
    if (complete_name == "") {		  
		  error += 'Name ist ein Pflichtfeld.<br />';	
		  $('input#complete_name').css('background-color', '#90957f');
		  $('span#complete_name_span').css('color', '#90957f');		   
		}else if(!complete_name.match(/^[-a-zA-ZÄÖÜäöüß\s]+$/)){
			error += 'Der Name enthält ungültige Zeichen!<br />';
			$('input#complete_name').css('background-color', '#90957f');
		  $('span#complete_name_span').css('color', '#90957f');	
		}  
    
    var street = $("input#street").val(); 
    if (street == "") { 		  		   
		  error += 'Straße ist ein Pflichtfeld.<br />';
		  $('input#street').css('background-color', '#90957f'); 
		  $('span#street_span').css('color', '#90957f');	
		}else if(!street.match(/^[-.a-zA-Z0-9ÄÖÜäöüß\s]+$/)){
			error += 'Die Straße enthält ungültige Zeichen!<br />';
			$('input#street').css('background-color', '#90957f');
		  $('span#street_span').css('color', '#90957f');	
		}
		
		var city = $("input#city").val();  
	  if (city == "") {		 		   
		  error += 'PLZ, Ort ist ein Pflichtfeld.<br />';
		  $('input#city').css('background-color', '#90957f');
		  $('span#city_span').css('color', '#90957f');	
		}else if(!city.match(/^[-a-zA-Z0-9.,ÄÖÜäöüß\s]+$/)){
			error += 'PLZ, Ort enthält ungültige Zeichen!<br />';
			$('input#city').css('background-color', '#90957f');
		  $('span#city_span').css('color', '#90957f');	
		}		
				 
		var phone = $("input#phone").val();
    if(phone != "" && !phone.match(/^[\d\/\\\s+-]+$/)){
			error += 'Die Telefonnummer enthält ungültige Zeichen!<br />';
			$('input#phone').css('background-color', '#90957f');
		  $('span#phone_span').css('color', '#90957f');	
		}   
		      
    var email = $("input#email").val();
    if(email != "" && !email.match(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/)){
			error += 'Die E-Mail Adresse hat das falsche Format.<br />';
			$('input#email').css('background-color', '#90957f');
		  $('span#email_span').css('color', '#90957f');	
		}
		
		var datahandling = $('input#datahandling:checked').val(); 
		if(!datahandling) { 
			error += 'Sie müssen den Datenschutzbestimmungen zustimmen.<br />';
		} 
			
		if(building_count == 0) {
			error += 'Bitte wählen Sie mindestens 1 Haus aus, für das Sie Prospektmaterial anforden möchten.';
		}		
		
		var buildings = $('input#buildings').val();
			
		if(error){
			$('label#error').html('<p>' + error + '</p>');			
			$('label#error').show();
			return false;
		} 
		
		var dataString = 'complete_name='+ complete_name + '&street='+ street + '&city='+ city + '&email=' + email + '&phone=' + phone + '&buildings=' + buildings;   
		 
		$.ajax({  
		  type: "POST",  
		  url: "fileadmin/templates/hausbaupark.de/includes/sendMail.php",  
		  data: dataString,  
		  success: function(data) {  
		    $('#contact_form').html("<div id='message'></div>");  
		    if(data) {
				  $('#message').html("<h2>Ihre Bestellung wurde erfolgreich übermittelt!</h2>")
				  						 .append("<b>Übermittelte Kontaktdaten:</b><br /><br />")
				  						 .append("Name: " + complete_name + "<br />")
				  						 .append("Straße: " + street + "<br />")
				  						 .append("PLZ, Ort: " + city + "<br />")
				  						 .append("E-Mail: " + email + "<br />")
				  						 .append("Telefon: " + phone + "<br /><br />")
				  						 .append("<b>Folgende Prospektunterlagen wurden angefordert:</b><br /><br />");
				 
				 $.each(building_array, function(index, value){
				 	$('#message').append('- ' + value.replace('<span>',' <b>').replace('</span>','</b>') + '<br />');	
				 }); 						  						 
				  						   			   
			  }else {			  	
			  	$('#message').html("<h2>Ihre Bestellung konnte nicht übermittelt werden!</h2>");			  	
			  }
		  }  
		});  
		return false;
}

// function adds a building to the queue
$.fn.addBuildings = function(index, value){
	
		$('#building_element_container').append('<div class="building_element" name="' + index + '"><div class="building_nr">' + index + '</div><div class="building_text">' + value + '</div><div class="delete_building" name="' + index + '">Löschen</div><div class="clearer">&nbsp;</div></div>');
		
		// Buttons an entsprechende Clickmethoden binden.
		$('.delete_building').bind('click', function(){$(this).removeInterest()});				
}

// function adds a building to the queue
$.fn.addBuilding = function(){
		
		var id = $(this).attr('name');
	
		$('#building_element_container').append('<div class="building_element" name="' + id + '"><div class="building_nr">' + id + '</div><div class="building_text">' + all_buildings[id] + '</div><div class="delete_building" name="' + id + '">Löschen</div><div class="clearer">&nbsp;</div></div>');		
		
		// Buttons an entsprechende Clickmethoden binden.
		$('.delete_building').bind('click', function(){$(this).removeInterest()});				
}

// Funktion zum Füllen des Hausauswahl Dialogs
$.fn.changeDialogThemes = function(){
		
		$('#building_dialog').html("");
		
		$.each(all_buildings, function(index, value){
			if($.inArray(value))
				$('#building_dialog').append('<div class="building_element" name="' + index + '"><div class="building_nr">' + index + '</div><div class="building_text">' + value + '</div><div class="delete_building" name="' + index + '">Löschen</div><div class="clearer">&nbsp;</div></div>');			
			else	
				$('#building_dialog').append('<div class="building_element" name="' + index + '"><div class="building_nr">' + index + '</div><div class="building_text">' + value + '</div><div class="add_building" name="' + index + '">Hinzufügen</div><div class="clearer">&nbsp;</div></div>');
		});		
		
		// Buttons an entsprechende Clickmethoden binden.
		$('.add_building').bind('click', function(){$(this).addInterest()});
		$('.delete_building').bind('click', function(){$(this).removeInterest()});
}

// Funktion zum Füllen der Formularbuilding 
$.fn.changeFormBuildings = function(){
		
		$('#form_buildings').html("");
		
		$.each(all_buildings, function(index, value){
			if($.inArray(value))
				$('#form_buildings').append('<div class="building_element" name="' + index + '"><div class="building_nr">' + index + '</div><div class="building_text">' + value + '</div><div class="delete_building" name="' + index + '">Löschen</div><div class="clearer">&nbsp;</div></div>');			
		});		
		
		// Buttons an entsprechende Clickmethoden binden.
		$('.add_building').bind('click', function(){$(this).addInterest()});
		$('.delete_building').bind('click', function(){$(this).removeInterest()});	
}

// function adds a building
$.fn.addInterest = function(){
				
		if(!($(this).inArray())){	
			building_count++;
			$('#mbutton_count').html(building_count);				
			building_array[$(this).attr('name')] = all_buildings[$(this).attr('name')];										
														
			$(this).addBuilding();			
			
			if($('#form_buildings')){
				$('#form_buildings').changeFormBuildings();
				$('input#buildings').val($.joinObjectData(building_array));
			}			
			
			$('#building_dialog').changeDialogThemes();
			
			$.setData();			
			
		}	
}

// function removes a building.
$.fn.removeInterest = function(){
		
		var id = $(this).attr('name');
		var name = all_buildings[id];
							
		var new_array = new Object();
			
		$.each(building_array, function(index, value){
			if(value != name){
				new_array[index] = value;
			}
		});
				
		building_array = new_array;
		building_count = $.getBuildingCount(building_array);						
					
		if(building_count == 0){
			$('#merklisten_content').slideUp('fast');
			if(!$('#building_dialog').dialog('isOpen'))
				$('#mask').hide();	
		}
		
		$('#mbutton_count').html(building_count);	
			
		$('.building_element[name=' + id + ']').remove();		
		
		if($('#form_buildings')){
			$('#form_buildings').changeFormBuildings();
			$('input#buildings').val($.joinObjectData(building_array));	
		}	
		
		$('#building_dialog').changeDialogThemes();
			
		$.setData();	
		
}

$(document).ready(function() {	
			
		//Sessionvariable auslesen.
		$.getData();	
		
		// Checks if flash is installed
		var hasFlash = false;
		try {
		  var fo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');
		  if(fo) hasFlash = true;
		}catch(e){
		  if(navigator.mimeTypes ["application/x-shockwave-flash"] != undefined) hasFlash = true;
		}
		
		if(!hasFlash) {
			$('#flash').css({'display' : 'none'});	
			$('#flash_spacer').css({'height' : '150px'});
			$('object#plan').css({'display' : 'none'});
			$('#gelaendeplan').css({'width' : '391px', 'height' : '621px' ,'background' : 'url("fileadmin/templates/hausbaupark.de/images/uebersichtsplan.png") no-repeat'});
		}
				
		// Slides verstecken.				
		$('#merklisten_content').hide();
				
		// set chosen topics count
		$('#mbutton_count').html(building_count);
					
		// Funktion an das Click-Event der beiden Buttons binden.	
		$('.mbutton').bind('click', function(){$('#merklisten_content').showChoice();});
		$('#slide_up_button').bind('click', function(){$('#merklisten_content').showChoice();});	
		
		// Open building_list dialog
		$('.building_list').bind('click', function(){
											
			if($('#mask').is(':hidden')){					
				//Get the screen height and width  
	      var maskHeight = $(document).height();  
	      var maskWidth = $(window).width();  
	      	     	
	      //Set height and width to mask to fill up the whole screen  
	      $('#mask').css({'width':maskWidth,'height':maskHeight});  
	         
	      //transition effect             
	      $('#mask').fadeTo("fast",0.8);       
	    }	    
	    
	    $('#building_dialog').dialog('open');
	    
		});
				
		// transparente Maske soll bei Click verschwinden.
	  $('#mask').bind('click', function(){ $('#merklisten_content').showChoice(); });
	
		// Add Building.
		$('.interesse').bind('click', function(){
			$(this).addInterest();	
			$('#merklisten_content').showChoice();	
		});	
		
		// Themenauswahl Dialog
		$('#building_dialog').dialog({
			width: 700,
			height: 350,
			autoOpen: false,		
			draggable: false,
			resizable: false,
			position: ['center', 'center'],
			zIndex: 202,
			modal: true,
			buttons: {
				Ok: function() {
					$(this).dialog('close');
					
					if($('#merklisten_content').is(':hidden')) {
						$('#mask').hide();
					}
				}
			}			
		});
		
		$('.ui-dialog-titlebar-close').bind('click', function(){
			if($('#merklisten_content').is(':hidden')) {
				$('#mask').hide();
			}
		});
		
		// Dialog Schließen-Button
		$('.ui-icon-closethick').html('Schließen');
		
		// Lightbox Bilder
		$('a.lightbox_image').lightBox({
			imageLoading: 'fileadmin/templates/hausbaupark.de/images/lightbox-ico-loading.gif',
			imageBtnPrev: 'fileadmin/templates/hausbaupark.de/images/lightbox-btn-prev.gif',
			imageBtnNext: 'fileadmin/templates/hausbaupark.de/images/lightbox-btn-next.gif',
			imageBtnClose: 'fileadmin/templates/hausbaupark.de/images/lightbox-btn-close.gif',
			txtImage: 'Bild',
			txtOf: 'von'
		});
					
		// E-Mail Formular
		$('.error').hide();  
	  $(".button").bind('click', function() { $.formValidation();});
		 								
		// Verbreiterung des Content-Bereichs, falls keine Boxen vorhanden sind.
		if($('#content_right').length != 0){
			if($('#content_right').is(':empty')){	
				$('#right_container').remove();	
				$('#center_container').css({width: '707px', margin: '0 0 0 20px'});													
			}
		}		
		
		// hide print bar on formular page
		if($('#formular_container').length != 0 || $('#house_details').length != 0 || $('#plan').length != 0) {
			$('#print_bar').hide();
		}
						
		// Bilder in der rechten Box sollen auf eine Breite von 149px beschraenkt sein.				
		$('.box_right_content img').css({'max-width':'149px'});
				
});
