/**
 * SVN: $Id: vusFn.js 144 2010-08-13 09:18:22Z Pranczke $
 */

given = true;

function validateForm(script, formName) {
	
	var error = '';
	var allNodes = Form.serialize(formName);
	new Ajax.Request(script, {
		method : 'post',
		parameters: allNodes,
		onComplete: function(transport) {
			if (200 == transport.status) {
				if (transport.responseText != '') {
					var error = eval('(' + transport.responseText + ')');
					var error_keys = array_keys(error);
					for (var i = 0; i < error_keys.length; i++) {
						var errElmnt = document.getElementById(''+error_keys[i]+'Info');
						alert(error[error_keys[i]]);
						errElmnt.innerHTML = error[error_keys[i]];
						errElmnt.className = 'rowInfo red';
						document.getElementById(error_keys[i]).focus();						
						return false;
					}
				} else {					
					document.getElementById(formName).submit();
				}
			}
		}
	});
}

function array_keys( input, search_value, strict ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: array_keys( {firstname: 'Kevin', surname: 'van Zonneveld'} );
    // *     returns 1: {0: 'firstname', 1: 'surname'}
 
    var tmp_arr = new Array(), strict = !!strict, include = true, cnt = 0;
 
    for ( key in input ){
        include = true;
        if ( search_value != undefined ) {
            if( strict && input[key] !== search_value ){
                include = false;
            } else if( input[key] != search_value ){
                include = false;
            }
        }
 
        if( include ) {
            tmp_arr[cnt] = key;
            cnt++;
        }
    }
 
    return tmp_arr;
}

function allowSubmit(element) {
    
    if (!given && document.getElementById("agb").checked == true && document.getElementById("datenschutz").checked == true) {
    	document.getElementById("submit").disabled = false;
    } else if (given && document.getElementById("agb").checked == true && document.getElementById("bedingungen").checked == true && document.getElementById("datenschutz").checked == true) {
       	document.getElementById("submit").disabled = false;
    } else {
        document.getElementById("submit").disabled = true;
    }
}

function checkForm() {
    
    if ( (document.getElementById("agb").checked == false && document.getElementById("datenschutz").checked == false) || (given && document.getElementById("bedingungen").checked == false)) {
        
         if(given){
        	alert("Bitte bestätigen Sie alle drei Punkte (AGB, Datenschutz, Bedingungen) durch Klick in die Felder am Ende des Antrags.");
		}else{
        	alert("Bitte bestätigen Sie die beiden Punkte (AGB und Datenschutz) durch Klick in die Felder am Ende des Antrags.");
		}
        return false;
    } else {
        return true;
    }
}

function displayMenu(id) {
    
    var status = document.getElementById(id).style.display;
    
    if (status == 'none') {
        document.getElementById(id).style.display = '';
    } else {
        document.getElementById(id).style.display = 'none';
    }
}

function ferienhausChoice(value) {
	
	if (value == "gebaeude") {
		document.getElementById("gebaeudeRow").style.display = "";
		document.getElementById("hausratRow").style.display = "none";
		// document.getElementById('hausratSB').style.display = 'none';
	} else if (value == "hausrat") {
		document.getElementById("gebaeudeRow").style.display = "none";
		document.getElementById("hausratRow").style.display = "block";
		// document.getElementById('hausratSB').style.display = 'block';
	} else if (value == "beides") {
		document.getElementById("gebaeudeRow").style.display = "block";
		document.getElementById("hausratRow").style.display = "block";
		// document.getElementById('hausratSB').style.display = 'block';
	} else {
		document.getElementById("gebaeudeRow").style.display = "none";
		document.getElementById("hausratRow").style.display = "none";
		// document.getElementById('hausratSB').style.display = 'none';
	}
}

function ferienhausCheck(verm) {
	element = document.getElementById('vermietetInfo');
	if (verm == 'ja') {
		document.getElementById("absenden").disabled = "disabled";
		element.innerHTML = "Leider können wir für Ihr Ferienobjekt kein Angebot unterbreiten, da Sie dieses zu 100% fremd vermieten.";
		element.className = "rowInfo red";
	} else {
		document.getElementById("absenden").disabled = "";
		element.innerHTML = "Keine Eigennutzung und ohne Vermietung an Familie und Freunde";
		element.className = "rowInfo";
	}
}

function number_format (number, decimals, dec_point, thousands_sep) {
  
	var exponent = "";
 	var numberstr = number.toString ();
  	var eindex = numberstr.indexOf ("e");
  	
  	if (eindex > -1) {
    	exponent = numberstr.substring (eindex);
    	number = parseFloat (numberstr.substring (0, eindex));
  	}
  
  	if (decimals != null) {
    	var temp = Math.pow (10, decimals);
    	number = Math.round (number * temp) / temp;
  	}	
  	
  	var sign = number < 0 ? "-" : "";
  	var integer = (number > 0 ? Math.floor (number) : Math.abs (Math.ceil (number))).toString ();
  
  	var fractional = number.toString ().substring (integer.length + sign.length);
  	dec_point = dec_point != null ? dec_point : ".";
  	fractional = decimals != null && decimals > 0 || fractional.length > 1 ? (dec_point + fractional.substring (1)) : "";
  	
  	if (decimals != null && decimals > 0) {
    	for (i = fractional.length - 1, z = decimals; i < z; ++i)
      		fractional += "0";
  	}
  
  	thousands_sep = (thousands_sep != dec_point || fractional.length == 0) ? thousands_sep : null;
  	if (thousands_sep != null && thousands_sep != "") {
		for (i = integer.length - 3; i > 0; i -= 3)
      		integer = integer.substring (0 , i) + thousands_sep + integer.substring (i);
  		}
  
  	return sign + integer + fractional + exponent;
}

function get_beginn() {
	var elements = document.getElementsByName("versicherungsbeginn");
	var jetzt = new Date();

	for (i=0; i<elements.length; i++) {
		if (elements[i].checked == true) {
			return elements[i].value;
		}
	}	
	return jetzt.getFullYear();
}

function popup(url, width, height) {
 	fenster = window.open(url, "Popupfenster", "width=" + width + ", height=" + height + ", scrollbars=yes");
 	fenster.focus();
 	return false;
}

// Kopie von popup() [wird so auf vielen Seiten aufgerufen]
function leistung(url, width, height) {
 	fenster = window.open(url, "Popupfenster", "width=" + width + ", height=" + height + ", scrollbars=yes");
 	fenster.focus();
 	return false;
}

function utf8_encode ( string ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Webtoolkit.info (http://www.webtoolkit.info/)
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: sowberry
    // *     example 1: utf8_encode('Kevin van Zonneveld');
    // *     returns 1: 'Kevin van Zonneveld'
    
    string = string.replace(/\r\n/g,"\n");
    var utftext = "";
    var start, end;
 
    start = end = 0;
    for (var n = 0; n < string.length; n++) {
        var c = string.charCodeAt(n);
        var enc = null;
 
        if (c < 128) {
            end++;
        } else if((c > 127) && (c < 2048)) {
            enc = String.fromCharCode((c >> 6) | 192) + String.fromCharCode((c & 63) | 128);
        } else {
            enc = String.fromCharCode((c >> 12) | 224) + String.fromCharCode(((c >> 6) & 63) | 128) + String.fromCharCode((c & 63) | 128);
        }
        if (enc != null) {
            if (end > start) {
                utftext += string.substring(start, end);
            }
            utftext += enc;
            start = end = n+1;
        }
    }
    
    if (end > start) {
        utftext += string.substring(start, string.length);
    }
 
    return utftext;
}

// Automatische Ergänzung des flexiblen Textes / Peter Schories / 27.07.2009
function includeText(name,schlagwort) {
	if(schlagwort != ''){
		var param = '?name=' + name + '&schlagwort=' + schlagwort + '';
	}else{
		var param = '?name=' + name + '';
	}
	new Ajax.Request('getNews.php', {
		method : 'get',
		parameters:	param,	
		onComplete: function(transport) {
			if (200 == transport.status) {
				if (transport.responseText != '') {
					var ary = eval('(' + transport.responseText + ')');
					document.getElementById('text').innerHTML = ary['text'];
					document.getElementById('date1').innerHTML = ary['date1'];
					document.getElementById('date2').innerHTML = ary['date2'];
				} 
			}
		}
	});
}

// Überprüfung der Anzahl ausgewählter Tarife im Leistungsvergleich / Peter Schories / 08.10.2009
// var zeile - Tabellenzeile der Ergebnisliste (Variable $tr)
// var rechner - Dateiname des Vergleichrechners
function checkVL(zeile,rechner) {
	// Anzahl der Zeilen feststellen
	gesamtAnz = document.getElementsByName('info[]').length;
	// Anzahl der ausgewählten Tarife feststellen
	anz = 0;
	for (i = 0; i < gesamtAnz; ++i){
	  if (document.getElementById('info_' + i).checked == true){
		anz = anz + 1;
	  }
	}
	// Fehlermeldung, wenn kein Tarif ausgewählt ist
	if(anz == 0){
		alert('Für den Leistungsvergleich muss mindestens ein Tarif ausgewählt sein.');
	}
	// Fehlermeldung bei mehr als 3 ausgewählten Tarifen
	if(anz >= 4){
		// Auswahlfenster
		Check = confirm("Es können nur bis zu 3 Tarife verglichen werden. Möchten Sie den Leistungsvergleich mit den bereits vorher ausgewählten Tarifen starten?");		
		if (Check == true){
			// Start des VL
			document.getElementById('info_' + zeile).checked = false;
			var compare_popup = window.open('', 'Compare', 'width=900, height=850, resizable=no, scrollbars=yes');
			document.ergebnisForm.setAttribute('target', 'Compare', 0);
			document.ergebnisForm.setAttribute('action', './' + rechner + '?action=compareRate', 0);
			document.ergebnisForm.setAttribute('action', './' + rechner + '?action=compareRate', 0);
			document.ergebnisForm.submit();compare_popup.focus();
		}
	}
}


/**
 * Objekt zum Erzeugen einer Zwischenauswahl für den Vergleich der Versicherten Leistungen
 * Basiert auf jQuery und dem jQuery-Plugin blockUI
 * @author Martin Pranczke <m.pranczke@iakgmbh.de>
 * @since: 29-07-10
 */
function VLselection() {
	var self = this;
	
	// funktionale Elemente als jQuery-Objekte
	this.toBlock = jQuery('#resultContainer');
	this.eForm = jQuery('#ergebnisForm');
	this.sForm = jQuery('#selectionForm');
	this.compareButtons = jQuery('.startCompare');
	
	// Elemente der Block-Meldung
	this.sMessage = null;
	this.sMessageWidth = '92%';
	this.sInfo = jQuery('<p id="selectionMessage"><strong style="text-decoration:underline;">Hinweis: </strong>Unten sehen Sie eine Liste der von Ihnen ausgewählten Tarife. <strong>Sie können gleichzeitig bis zu 3 Tarife vergleichen</strong>. Bitte schränken Sie Ihre Auswahl daher zunächst auf höchstens 3 Tarife ein und klicken anschließend auf "<strong>Vergleich starten</strong>". Der Vergleich wird in einem neuen Fenster geöffnet. Ihre Auswahl bleibt daher erhalten und Sie können jederzeit weitere Tarife miteinander vergleichen.</p>');
	this.sHeader = null;
	this.sResults = null;
	this.sControls = null;
	this.sCancleButton = null;

	// Breite, Höhe, Url des PopUps
	this.popupX = '1024px';
	this.popupY = '800px';
	this.popupUrl = jQuery('#compareTarget').attr('value');
	
	// Farben
	this.colorConfirm = '#99ffbf';
	this.colorWarn = '#ff8e95';
	
	// wurde eine Selection erzeugt
	this.isSelection = false;
	
	/**
	 * Registriert den Eventhandler
	 */
	this.registerHandler = function(){
		this.compareButtons.click(function(){

			var checkedRates = self.isSelection ? self.getCheckedRates(self.sForm) : self.getCheckedRates(self.eForm);

			if(checkedRates < 4 && checkedRates > 0){
				self.showPopup();
			} 
			else if (checkedRates > 3 && !self.isSelection) {
				self.createMessage();
				self.block();
			}
		});
	};
	
	/**
	 * Prüft wie viele Tarife gechecked sind
	 * @var object Formular
	 * @return int Anzahl gecheckter Tarife
	 */
	this.getCheckedRates = function(form){
		var checkedRates = form.find('input[name=info\[\]]:checked').size();
		return checkedRates;
	};
	
	/**
	 * Blockiert die Ergebnisübersicht
	 */
	this.block = function(){
		this.toBlock.block({ 
			message: self.sMessage,
			css: {
				width: self.sMessageWidth,
				cursor: 'default'
			},
		    overlayCSS:  { 
		        backgroundColor: '#fff', 
		        opacity: 0.8 
		    },
		    centeredY: true,
		    onBlock: function(){ 
		    	self.isSelection = true;
		    	self.sForm.show(); 
		    	
		    	var sChecked = self.sForm.find('input[name=info\[\]]');
		    	sChecked.attr('checked', 'checked');
		    	sChecked.click(function(){
		    		checkedRates = self.getCheckedRates(self.sForm);
					if(checkedRates < 4 && checkedRates > 0){
						self.sInfo.css({backgroundColor: self.colorConfirm });
						self.sForm.find('.resultControlsBottom').fadeTo('fast', 1.0);
					} else {
						self.sInfo.css({backgroundColor: self.colorWarn });
						self.sForm.find('.resultControlsBottom').fadeTo('fast', 0.2);
					}
				});
		    }
		});
	};
	
	/**
	 * Gibt Ergebnisübersicht frei
	 */
	this.unblock = function(){
		this.toBlock.unblock({
			onUnblock: function(){ 
				self.sForm.hide().empty();
				self.isSelection = false;
			}
		});  
	};
	
	/**
	 * Erzeugt die Block-Meldung
	 */
	this.createMessage = function(){
		
		// Tabellenkopf kopieren
		if(this.sHeader === null){
			this.sHeader = jQuery('.resultHeader').clone();
			// Scrollbar-Spacer entfernen
			this.sHeader.find('div:last-child').remove();
		}
		
		// ausgewählte Tarife kopieren
		if(this.sResults === null){
			this.sResults = this.eForm.find('.resultBit').has('input[name=info\[\]]:checked').clone(true).removeClass('secondRow');
			this.sResults.filter(':odd').addClass('secondRow');
		}
		
		// untere Navigation kopieren
		if(this.sControls === null){
			this.sControls = this.eForm.find('.resultControlsBottom').clone(true);
			this.sControls.css({ opacity: '0.2' }).find('.startCompare').html('Vergleich starten');
		}
		
		// Schließen-Knopf erzeugen
		if(this.sCancleButton === null){
			this.sCancleButton = jQuery('<button id="compareClose" type="button">Schließen</button>').click(function(){ 
				self.unblock();
			});
		}
		
		// Breiten im Header anpassen
		this.adjustHeaderWidth();
		
		this.sInfo.css({ backgroundColor: self.colorWarn });
		
		var clonedContent = this.sInfo.add(this.sHeader).add(this.sResults).add(this.sControls).add(this.sCancleButton);
		
		// Message-Elemente löschen
		this.sResults = null; 
		this.sControls = null;
		this.sCancleButton = null;
		
		this.sMessage = this.sForm.empty().append(clonedContent);
	};
	
	/**
	 * Gleicht die Breiten im Header an die im Ergebnis an
	 */
	this.adjustHeaderWidth = function(){
		var headerParts = this.sHeader.find('div');
		var resultParts = this.sResults.first().find('div');
		headerParts.each(function(i){
			var modelWidth = jQuery(resultParts[i]).css('width');
			jQuery(this).css('width', modelWidth);
		});
	};
	
	/**
	 * Erzeugt das Popup
	 */
	this.showPopup = function(){
		var activeForm = this.isSelection ? this.sForm : this.eForm;
		var properties = 'width=' + this.popupX + ', height=' + this.popupY + ', resizable=yes, scrollbars=yes';
		var compare_popup = window.open('', 'Compare', properties);
		activeForm.attr('target', 'Compare');
		activeForm.attr('action', this.popupUrl);
		activeForm.submit();
		compare_popup.focus();
	};
}

