// JavaScript Document

function focusFormular(f, act1, act2){
	var myForm=document.getElementById(f);
	
	try{
		myForm.action = act1+act2;
	}catch(e){
		myForm.setAttribute('action', act1+act2);
	}
}

function centerElement(el) {
    var body = (window.document.compatMode && window.document.compatMode == "CSS1Compat") ?
    window.document.documentElement : window.document.body || null;
    
	element = document.getElementById(el);
    var win_h = (window.innerHeight || parseInt(body.clientHeight )) / 2;
    var win_w = (window.innerWidth || parseInt(body.clientWidth)) / 2;
    var height = ($('#'+el).height() / 2);
    var width = ($('#'+el).width() / 2);
    var t = win_h - height + parseInt(window.pageYOffset || body.scrollTop) ;
    var l = win_w - width + parseInt(window.pageXOffset || body.scrollLeft);
    element.style.top = t + 'px';
} 

function clearInputBasic(elem,wert) {
	if (elem.value == wert)	{
		elem.value = '';	
	}
}

function setInputBasics(elem,wert) {
	if (elem.value == '')	{
		elem.value = wert;	
	}
}

function checkAll(f,name){
  for (var i = 0; i < f.elements[name].length; i++) {
    f.elements[name][i].checked = true;
  }
}

function uncheckAll(f,name){
  for (var i = 0; i < f.elements[name].length; i++) {
    f.elements[name][i].checked = false;
  }
}


function showBankdaten() {
	$('#bankdaten_holder').fadeIn('fast');
}

function hideBankdaten() {
	$('#bankdaten_holder').fadeOut('fast');
}


function isDefined(obj,f) {
	if (f[obj]){
		return true;
	}
	else{
		return false;
	}
}

function isImportant(obj) {
	element = obj.id;
	if (element != '') {
		if ($('#'+element).hasClass('important'))  {
			return true;
		}else {
			return false;
		}
	} 
	return false;
}

function setCssErrorClass(el){
	element = el.id
	$('#'+element).addClass('error_input');
}

function setCssErrorClassElement(el){
	$('#'+el).addClass('error_input');
}


function clearCssErrorClass(el){
	element = el.id
	$('#'+element).removeClass('error_input');
}

function clearCssErrorClassElement(el){
	$('#'+el).removeClass('error_input');
}


function checkSearch(f) {	
	var error = 0;
	var error_text = '';

	if (isDefined("keyword",f))	{	
		if (f.keyword.value == "" || f.keyword.value == "Suchbegriff") {			
			error_text += "Bitte geben Sie ein Suchwort ein \r\n";
			error++;
		}
	}
	
	if (isDefined("ort_plz",f))	{	
		if (f.ort_plz.value == "" || f.ort_plz.value == "Ort oder PLZ") {			
			error_text += "Bitte geben Sie eine PLZ oder einen Ort ein \r\n";
			error++;
		}
	}	
	
	if (error > 0) {				
		alert(error_text);
		return false;
		}
	else {
		return true;
	}
}

function checkPaketWechselImageVideoSelection(f,anz_pics,anz_videos) {	
	var error = 0;	
	var error_text = '';

	if (isDefined("delete_pics[]",f))	{	
		var img_check = 0;
		for(var i=0; i<f.elements['delete_pics[]'].length; i++){ 
			if(f.elements['delete_pics[]'][i].checked) {
				img_check++;
			}		
		}
		if (img_check != anz_pics) {
			error++;
			error_text += "Bitte markieren Sie genau "+anz_pics+" Bilder, die Sie entfernen möchten \n";	
		}
	}
	
	if (isDefined("delete_videos[]",f))	{	
		var video_check = 0;
		for(var i=0; i<f.elements['delete_videos[]'].length; i++){ 
			if(f.elements['delete_videos[]'][i].checked) {
				video_check++;
			}		
		}
		if (video_check != anz_videos) {
			error++;
			error_text += "Bitte markieren Sie genau "+anz_videos+" Videos, die Sie entfernen möchten \n";	
		}
	}	
	
	if (error > 0) {				
		alert(error_text);
		return false;
		}
	else {		
		var antwort = confirm("Sie haben alle zu löschenden Bilder und Videos markiert.\n\nMöchten Sie wirklich die ausgewählten Bilder und Videos löschen?\n\nDie Bild / Video - Daten können nicht wiederhergestellt werden!");
		if (antwort == true) {
		   return true;
		} else {
		   return false;	
		}
	}
}

function checkForm(f){
	var name;
	var error = 0;		
	var auswahl = 0;
	var error_text = '';

	error_content = document.getElementById('message_content');
	
	$('#form_message').css('display','none');
	
	if (isDefined("firma",f))	{	
		if (f.firma.value == "" && isImportant(f.firma)) {			
			setCssErrorClass(f.firma);
			error_text += "<li>Bitte geben Sie Ihre Firma</li>";
			error++;
			}
		}
	
	if (isDefined("anrede",f))	{	
		if (f.anrede.selectedIndex == 0 && isImportant(f.anrede)) {			
			setCssErrorClass(f.anrede);
			error_text += "<li>Bitte geben Sie eine Anrede an</li>";
			error++;
			}
		}

	if (isDefined("nachname",f))	{	
		if (f.nachname.value == "" && isImportant(f.nachname) && f.nachname.value.search(/^a-zA-Z/) == -1 ) {			
			setCssErrorClass(f.nachname);
			error_text += "<li>Bitte geben Sie Ihren Nachname ein</li>";
			error++;
			}
		}
		
	if (isDefined("vorname",f))	{	
		if (f.vorname.value == "" && isImportant(f.vorname)) {
			setCssErrorClass(f.vorname);
			error_text += "<li>Bitte geben Sie Ihren Vorname ein</li>";
			error++;
			}
		}
		
	if (isDefined("email",f))	{
		if (f.email.value == "" && isImportant(f.email)) {			
			setCssErrorClass(f.email);
			error_text += "<li>Bitte geben Sie Ihre E-Mail Adresse an</li>";
			error++;
			}
		}
		
	if (isDefined("telefon",f))	{	
		if (f.telefon.value == "" && isImportant(f.telefon)) {
			setCssErrorClass(f.telefon);
			error_text += "<li>Bitte geben Sie Ihre Telefonnummer an</li>";
			error++;
			}
		}
		
	if (isDefined("telefax",f))	{	
		if (f.telefax.value == "" && isImportant(f.telefax)) {
			setCssErrorClass(f.telefax);
			error_text += "<li>Bitte geben Sie Ihre Faxnummer an</li>";
			error++;
			}
		}	
	
	if (isDefined("strasse",f))	{	
		if (f.strasse.value == "" && isImportant(f.strasse)) {			
			setCssErrorClass(f.strasse);
			error_text += "<li>Bitte geben Sie Ihre Strasse an</li>";
			error++;
			}
		}
	
	if (isDefined("plz",f))	{	
		if (f.plz.value == "" && isImportant(f.plz)) {			
			setCssErrorClass(f.plz);
			error_text += "<li>Bitte geben Sie Ihre PLZ an</li>";
			error++;
			}
		}
		
	if (isDefined("ort",f))	{	
		if (f.ort.value == "" && isImportant(f.ort)) {
			setCssErrorClass(f.ort);
			error_text += "<li>Bitte geben Sie Ihren Ort an</li>";
			error++;
			}
		}		

	if (isDefined("ort_region",f))	{
		if (f.ort_region.value == "" && isImportant(f.ort_region)) {
			setCssErrorClass(f.ort_region);
			error_text += "<li>Bitte geben den Ort / die Region Ihrer Immobilie ein</li>";
			error++;
			}
		}	

	if (isDefined("kommentar",f))	{
		if (f.kommentar.value == "" && isImportant(f.kommentar)) {
			setCssErrorClass(f.kommentar);
			error_text += "<li>Bitte geben Sie einen Kommentar ein</li>";
			error++;
			}
		}
		
	if (isDefined("nachricht",f))	{
		if (f.nachricht.value == "" && isImportant(f.nachricht)) {
			setCssErrorClass(f.nachricht);
			error_text += "<li>Bitte geben Sie einen Nachricht ein</li>";
			error++;
			}
		}
			
	if (isDefined("vermarktungsart",f))	{
		if (f.vermarktungsart.selectedIndex == 0 && isImportant(f.vermarktungsart)) {
			setCssErrorClass(f.vermarktungsart);
			error_text += "<li>Bitte geben Sie die Vermarktungsart Ihrer Immobilie ein</li>";
			error++;
			}
		}
		
	if (isDefined("objektart",f))	{
		if (f.objektart.selectedIndex == 0 && isImportant(f.objektart)) {
			setCssErrorClass(f.objektart);
			error_text += "<li>Bitte geben Sie die Objektart Ihrer Immobilie ein</li>";
			error++;
			}
		}	
		
	if (isDefined("agb",f))	{
		if (f.agb.checked == false && isImportant(f.agb)) {
			setCssErrorClassElement('agb_text');
			error_text += "<li>Bitte erlauben Sie uns Sie zu kontaktieren.</li>";
			error++;
			}
		}		
	
	if (isDefined("paket",f))	{
		boolRadio = false;
		importantRadio = false;
		for(var i=0; i<f.elements['paket'].length; i++){        
			if (f.elements['paket'][i].className == 'important') {
				if(f.elements['paket'][i].checked) {
					boolRadio = true;
				}
				importantRadio = true;
			}			
		}
		
		if (importantRadio == true && boolRadio == false) {
			error_text += "Bitte geben Sie wählen Sie ein Paket aus\r\n";			
			setCssErrorClassElement('paket_holder');
			error++;
		}
	}
	
	if (isDefined("user_modules[]",f)) {		
		if (isImportant(f.elements['user_modules[]'])) {
			moduleSelect = false;			
			for (var i=0; i<f.elements['user_modules[]'].options.length; i++){
				if (f.elements['user_modules[]'].options[i].selected) {
					moduleSelect = true;
				}
			}			
			if (moduleSelect == false) {
				setCssErrorClass(f.elements['user_modules[]']);	
				error++;
			}			
		}		
	}
	
	if (isDefined("zahlungsart",f))	{
		boolRadio = false;
		importantRadio = false;
		zahlungValue = '';
		for(var i=0; i<f.elements['zahlungsart'].length; i++){        
			if (f.elements['zahlungsart'][i].className == 'important') {
				if(f.elements['zahlungsart'][i].checked) {
					boolRadio = true;
					zahlungValue = f.elements['zahlungsart'][i].value;
				}
				importantRadio = true;
			}			
		}
		
		if (importantRadio == true && boolRadio == false) {
			error_text += "Bitte geben Sie wählen Sie eine Zahlungsart aus\r\n";			
			setCssErrorClassElement('zahlungsart_holder');
			error++;
		}
	}	

	if (isDefined("bank_kontoinhaber",f))	{
		if (f.bank_kontoinhaber.value == "" && isImportant(f.bank_kontoinhaber) && zahlungValue == 'BANKEINZUG') {
			setCssErrorClass(f.bank_kontoinhaber);
			error_text += "<li>Bitte geben Sie einen Kontoinhaber ein</li>";
			error++;
			}
		}
		
	if (isDefined("bank_name",f))	{
		if (f.bank_name.value == "" && isImportant(f.bank_name) && zahlungValue == 'BANKEINZUG') {
			setCssErrorClass(f.bank_name);
			error_text += "<li>Bitte geben Sie einen Banknamen ein</li>";
			error++;
			}
		}
		
	if (isDefined("bank_blz",f))	{
		if (f.bank_blz.value == "" && isImportant(f.bank_blz) && zahlungValue == 'BANKEINZUG') {
			setCssErrorClass(f.bank_blz);
			error_text += "<li>Bitte geben Sie eine BLZ ein</li>";
			error++;
			}
		}
		
	if (isDefined("bank_knr",f))	{
		if (f.bank_knr.value == "" && isImportant(f.bank_knr) && zahlungValue == 'BANKEINZUG') {
			setCssErrorClass(f.bank_knr);
			error_text += "<li>Bitte geben Sie einen Kontonummer ein</li>";
			error++;
			}
		}			
		
	if (error > 0) {				
		alertBasicErrorMessage(error_text);	
		return false;	
		}
	else {
		// Zweiter Paramter == true =>  Formular Mit AJAX abschicken
		if (checkForm.arguments[1] == true) {
			submitAjaxForm(f);
			return false;
		} else return true;
	}
}

function alertBasicErrorMessage(error_text) {
	error_text = '<div id="message_error"><h1>Fehler im Formular</h1><p>Bitte füllen Sie alle Pflichtfelder aus!</p></div>';
	error_content.innerHTML = error_text;
	
	centerElement('form_message');
	$('#form_message').removeClass('erfolg');
	$('#form_message').addClass('fehler');	
	$('#form_message').fadeIn('slow');	
}


function alertErfolgMessage(erfolg_text) {
	error_text = '<div id="message_erfolg"><h1>Anfrage verschickt</h1><p>'+erfolg_text+'</p></div>';
	error_content.innerHTML = error_text;
	
	centerElement('form_message');
	$('#form_message').removeClass('fehler');
	$('#form_message').addClass('erfolg');
	$('#form_message').fadeIn('slow');	
}

function hideMessageBox(message_box_id) {
	$('#'+message_box_id).fadeOut('slow');
}



function array_search(needle, haystack, argStrict) {
    // Searches the array for a given value and returns the corresponding key if successful  
    // 
    // version: 1009.2513
    // discuss at: http://phpjs.org/functions/array_search    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: array_search('zonneveld', {firstname: 'kevin', middle: 'van', surname: 'zonneveld'});
    // *     returns 1: 'surname' 
    var strict = !!argStrict;
    var key = '';
 
    for (key in haystack) {        
		if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) {
            return key;
        }
    }
    return false;
}

function clearSelectBox(element) {
	elem = document.getElementById(element);
	elem.length = 0;
}

function selectAll(formular,selectBox) {
	f = formular.name;
	for (var i=0; i < formular.elements[selectBox].options.length; i++){
		formular.elements[selectBox].options[i].selected = true;
  	}
}

function selectAllAndSubmit(formular,selectBox) {
	f = formular.name;
	for (var i=0; i < formular.elements[selectBox].options.length; i++){
		formular.elements[selectBox].options[i].selected = true;
  	}
	formular.submit();	
}

function resetSelectBox(formular,selectBox) {
	for (var i=0; i < formular.elements[selectBox].options.length; i++){
		formular.elements[selectBox].options[i] = null
  	}		
}


function add2SelectBoxAndRemove(formular, from_select, to_select) {	
	var x = 0;
	var newArray = new Array();	
	var removeArray = new Array();	
	element_from = formular.elements[from_select];
	element_to = formular.elements[to_select];	
	
	for (var i=0; i < element_from.options.length; i++){		
		if (element_from.options[i].selected) {

			var newOption = document.createElement("option");			
			newOption.text = element_from.options[i].text;
			newOption.value = element_from.options[i].value;
			element_to.options.add(newOption); 
			
			element_from.remove(i);  
			--i;
		}
  	}			
}

function add2SelectBox(formular, from_select, to_select) {	
	var x = 0;
	var newArray = new Array();	
	var removeArray = new Array();	
	element_from = formular.elements[from_select];
	element_to = formular.elements[to_select];	
	
	for (var i=0; i < element_from.options.length; i++){		
		if (element_from.options[i].selected) {
			var newOption = document.createElement("option");			
			newOption.text = element_from.options[i].text;
			newOption.value = element_from.options[i].value;
			element_to.options.add(newOption);   
			
			element_from.options[i].selected  = false;
		}
  	}			
}

function removeFromSelectBox(formular, form_select) {	
	var x = 0;	
	element_form = formular.elements[form_select];
		
	for (var i=0; i < element_form.options.length; i++){		
		if (element_form.options[i].selected) {
			element_form.remove(i);     
			--i; 
		}
  	}			
}

function checkKundenKats(formular,target,max_cnt) {
	var x = 0;
	var selItems = 0;
	var selectArray = new Array();	
	
	for(var i=1; i <= max_cnt; i++) {
		element_select = formular.elements[target+i];
		
		for (var z=0; z < element_select.options.length; z++){		
			if (element_select.options[z].selected) {	
				sel_val = element_select.options[z].value;				
											
				if (array_search(sel_val,selectArray)) {
					alert('Sie dürfen keine Kategorien doppelt angeben');
					return false;						
				} else {
					selectArray[x] = sel_val;	
					x++;
				}	
				selItems++;		
			}
		}		
	}
	
	if (selItems == 0) {
		alert('Bitte wählen Sie mindestens eine Unter-Unterkategorie aus');
		return false;
	} else {
		return true;	
	}
}


function setFormAndSubmit(formular,feld,wert) {
	form = document.getElementById(formular);
	form.elements[feld].value = wert
	form.submit();
}

