// Validierungsregeln
var __validatorBankNumber = 'BLZ';
var __validatorBankAccountNumber = 'KONTO';
var __validatorSwift = 'SWIFT';
var __validatorIban = 'IBAN';

// Sichtbare Felder sind generell Pflicht (Affiliate) oder nicht (Merchant)
var __fieldsVisibleRequired = true;

/**
 * Toggle a bank account&#39;s form fields depending on
 * the bank account&#39;s country.
 *
 * @author	dk
 * @param	string bankAccountCountry the country code
 * @param	boolean fieldsVisibleRequired visible fields are mandatory fields
 * @return	void
 * @since	05/18/2010
 * @version	05/21/2010 11:12
 */
function toggleFieldsBankAccount(bankAccountCountry, fieldsVisibleRequired) {
    
	__fieldsVisibleRequired = !!fieldsVisibleRequired;
	$.ajax({     
        type: 'POST',
        url: '/js/ajaxProxy.php',
        timeout: 5000,
        dataType:"xml",
        cache:"false",
		data: 'countrycode='+bankAccountCountry,
		error: function(t) {
			// Fehler
            //alert("error doing ajax request!");
			//hideWindows();
		},
		complete: function(t) {

			var country = t.responseXML.getElementsByTagName('country');
			//var country = $(t.responseXML).html().getElementsByTagName('country');
			var countryCode = country[0].childNodes[0].firstChild.nodeValue;
			//var countryCode = $(t.responseXML).find("code").text();
			var countryHasIban = ( country[0].childNodes[1].firstChild.nodeValue === 'true' ) ? true : false;
			var countryHasBankNumber = ( country[0].childNodes[2].firstChild.nodeValue === 'true' ) ? true : false;
			var countryValidateBankNumber = ( country[0].childNodes[3].firstChild.nodeValue === 'true' ) ? true : false;
			var countryValidateBankAccountNumber = ( country[0].childNodes[4].firstChild.nodeValue === 'true' ) ? true : false;

			if( countryCode == 'DE' ) {
				// Deutschland: Kto, BLZ
				fieldHide(__idFieldSwift, __idFieldSwiftContainer);
				fieldHide(__idFieldIban, __idFieldIbanContainer);
				fieldShow(__idFieldBankNumber, __idFieldBankNumberContainer, __validatorBankNumber, countryValidateBankNumber);
				fieldShow(__idFieldBankAccountNumber, __idFieldBankAccountNumberContainer, __validatorBankAccountNumber, countryValidateBankAccountNumber);
			} else if( countryHasIban ) {
				// Wenn IBAN vorhanden, dann: IBAN, SWIFT
				fieldHide(__idFieldBankNumber, __idFieldBankNumberContainer);
				fieldHide(__idFieldBankAccountNumber, __idFieldBankAccountNumberContainer);
				fieldShow(__idFieldSwift, __idFieldSwiftContainer, __validatorSwift, true);
				fieldShow(__idFieldIban, __idFieldIbanContainer, __validatorIban, true);
			} else if( countryHasBankNumber ) {
				// Wenn BLZ, dann: SWIFT, Kto, BLZ
				fieldHide(__idFieldIban, __idFieldIbanContainer);
				fieldShow(__idFieldSwift, __idFieldSwiftContainer, __validatorSwift, true);
				fieldShow(__idFieldBankNumber, __idFieldBankNumberContainer, __validatorBankNumber, countryValidateBankNumber);
				fieldShow(__idFieldBankAccountNumber, __idFieldBankAccountNumberContainer, __validatorBankAccountNumber, countryValidateBankAccountNumber);
			} else {
				// Sonst: SWIFT, Kto
				fieldHide(__idFieldIban, __idFieldIbanContainer);
				fieldHide(__idFieldBankNumber, __idFieldBankNumberContainer);
				fieldShow(__idFieldSwift, __idFieldSwiftContainer, __validatorSwift, true);
				fieldShow(__idFieldBankAccountNumber, __idFieldBankAccountNumberContainer, __validatorBankAccountNumber, countryValidateBankAccountNumber);
			}
			// Benachrichtigung schliessen
			//hideWindows();
		},
		parameters: {
			country: bankAccountCountry
		}
	});
}

/**
 * Remove all validators from a form field.
 *
 * @author	dk
 * @param	string fieldId the form field&#39;s id
 * @return	void
 * @since	05/14/2010
 * @version	05/14/2010 14:41
 */
function fieldValidatorsRemove(fieldId) {

    
	if( $(fieldId) !== null ) {


		var r = new RegExp(':[A-Z]+', 'g');
		//var matches = $(fieldId).name.match(r);
		//funzt//var matches = $('#fieldId').text().match(r);
        //var matches = $('#fieldId').value().match(r);
        var matches = $('#'+fieldId).attr("name").match(r);

		if( matches ) {

			for( var k = 0; k < matches.length; k++ ) {
				fieldValidatorRemove(fieldId, matches[k].substr(1));
			}
		} 
	}
}

/**
 * Remove a specific validator from a form field.
 *
 * @author	dk
 * @param	string fieldId the form field&#39;s id
 * @param	string validator the name of the validator to be removed
 * @return	void
 * @since	05/18/2010
 * @version	05/19/2010 14:35
 */
function fieldValidatorRemove(fieldId, validator) {

	if( $(fieldId) !== null ) {

		var validatorPattern = ':' + validator;
		var r = new RegExp(validatorPattern, 'g');

		// Validierungsregel entfernen
		//$(fieldId).name = $(fieldId).name.replace(r, '');
		//$('#'+fieldId).name = $('#'+fieldId).name.replace(r, '');
        var feldname_neu = $('#'+fieldId).attr("name").replace(r, '');
        $('#'+fieldId).attr("name", feldname_neu)
	}
}

/**
 * Add a validator to a form field.
 *
 * @author	dk
 * @param	string fieldId the form field&#39;s id
 * @param	string validator the name of the validator to be added
 * @return	void
 * @since	05/18/2010
 * @version	05/19/2010 14:36
 */
function fieldValidatorAdd(fieldId, validator) {

	if( $(fieldId) !== null ) {

		var validatorPattern = ':' + validator;
		var r = new RegExp(validatorPattern);

		if( !$('#'+fieldId).attr("name").match(r) ) {
			// Validierungsregel anhaengen
            var feldname_neu = $('#'+fieldId).attr("name") + validatorPattern;
            $('#'+fieldId).attr("name", feldname_neu)
		}
	}
}

/**
 * Display a form field (and it&#39;s surrounding container).
 *
 * @author	dk
 * @param	string fieldId the form field&#39;s id
 * @param	string containerId the surrounding container&#39;s id
 * @param	string validatorName the name of the validator to be handled
 * @param	boolean validate add or remove the validator validatorName
 * @return	void
 * @since	05/18/2010
 * @version	05/19/2010 14:43
 */
function fieldShow(fieldId, containerId, validatorName, validate) {

	if( $(fieldId) !== null ) {

		// Feld aktivieren...
		//$(fieldId).disabled = false;
		$('#'+fieldId).disabled = false;

		// ... und zum Pflichtfeld machen
		if( __fieldsVisibleRequired ) {
			fieldValidatorAdd(fieldId, 'REQUIRED');
		}

		// Ohne "Validator" gehts nicht...
		if( validatorName === null || typeof validatorName === 'undefined' || validatorName === '' ) {
			validate = null;
		}

		// Speziellen Validator hinzufuegen oder entfernen?
		if( validate === true ) {
			fieldValidatorAdd(fieldId, validatorName);
		} else if( validate === false ) {
			fieldValidatorRemove(fieldId, validatorName);
		}

		// Den das Feld umgebenen "Bereich" anzeigen
		if( $(containerId) !== null ) {
			$('#'+containerId).show();
		}
	}
}

/**
 * Hide a form field.
 *
 * @author	dk
 * @param	string fieldId the form field&#39;s id
 * @param	string containerId the surrounding container&#39;s id
 * @return	void
 * @since	05/14/2010
 * @version	05/14/2010 14:52
 */
function fieldHide(fieldId, containerId) {

	if( $(containerId) !== null ) {

		$('#'+containerId).hide();
		//$('#id_swift').hide();

		if( $(fieldId) !== null ) {

			// Feld leeren...
			//$(fieldId).value = '';
            $(fieldId).val('');
			// ... und Pflicht, etc. entfernen
			fieldValidatorsRemove(fieldId);
		}
	}
}



// D E P R E C A T E D -> TO BE REMOVED
/*
function toggleBank(countryCode) {

	if( countryCode == 'DE' ) {

        document.getElementById("id_banknumber").style.display = '';
        document.getElementById("id_blz").style.display = '';
        document.getElementById("id_banknumber_txt").disabled = false;
        document.getElementById("id_blz_txt").disabled = false;

        document.getElementById("id_swift").style.display = 'none';
        document.getElementById("id_iban").style.display = 'none';
        document.getElementById("id_swift_txt").value = '';
        document.getElementById("id_iban_txt").value = '';
        // Felder explizit deaktivieren, damit sie nicht gesendet werden
        document.getElementById("id_swift_txt").disabled = true;
        document.getElementById("id_iban_txt").disabled = true;

	} else {

        document.getElementById("id_swift").style.display = '';
        document.getElementById("id_iban").style.display = '';
        document.getElementById("id_swift_txt").disabled = false;
        document.getElementById("id_iban_txt").disabled = false;

        document.getElementById("id_banknumber").style.display = 'none';
        document.getElementById("id_blz").style.display = 'none';

        document.getElementById("id_banknumber_txt").value = '';
        document.getElementById("id_blz_txt").value = '';
        document.getElementById("id_banknumber_txt").disabled = true;
        document.getElementById("id_blz_txt").disabled = true;
  	}
}

function toggleBank_old(){

      if (document.frm_profile.sBankaccount_country.options[document.frm_profile.sBankaccount_country.options.selectedIndex].value == 'DE') {
        document.getElementById("id_swift").style.display = 'none';
        document.getElementById("id_iban").style.display = 'none';

        document.getElementById("id_banknumber").style.display = '';
        document.getElementById("id_blz").style.display = '';

        document.getElementById("id_swift_txt").value = '';
           document.getElementById("id_iban_txt").value = '';

           // Felder BLZ und Kontonummer zum Pflichtfeld machen
           if(document.forms.frm_profile.elements["sBankaccount_bank_number:BLZ"]){
               document.forms.frm_profile.elements["sBankaccount_bank_number:BLZ"].name="sBankaccount_bank_number:BLZ:REQUIRED";
               document.forms.frm_profile.elements["sBankaccount_number"].name="sBankaccount_number:REQUIRED:KONTO";
           }else if(document.forms.frm_profile.elements["sBankaccount_iban:REQUIRED"]){
               document.forms.frm_profile.elements["sBankaccount_iban:REQUIRED"].name="sBankaccount_iban";
           }

      }else {
        document.getElementById("id_swift").style.display = '';
        document.getElementById("id_iban").style.display = '';

          document.getElementById("id_banknumber").style.display = 'none';
        document.getElementById("id_blz").style.display = 'none';

          document.getElementById("id_banknumber_txt").value = '';
        document.getElementById("id_blz_txt").value = '';

        // IBAN zum Pflichtfeld machen
        if(document.forms.frm_profile.elements["sBankaccount_iban"]){
            document.forms.frm_profile.elements["sBankaccount_iban"].name="sBankaccount_iban:REQUIRED";
        }

        // BLZ und Kontonummer als Pflichtfelder deaktivieren
        if(document.forms.frm_profile.elements["sBankaccount_bank_number:BLZ:REQUIRED"]){
            document.forms.frm_profile.elements["sBankaccount_bank_number:BLZ:REQUIRED"].name="sBankaccount_bank_number:BLZ";
            document.forms.frm_profile.elements["sBankaccount_number:REQUIRED:KONTO"].name="sBankaccount_number";
        }

    }
}
*/