/**
 * Mandantensuche f�r Besteller-Regestrierung.
 * 
 * @author tim.zebulla@cosinex.de
 */
$().ready(function() {
    /**
     * JSON Ergebnis Objekt Array.
     */
    var clientObjs;
    
    /**
     * Client Objekt des ausgew�hlten Suchergebnisses.
     */
    var selectedClient;
    
    /**
     * Mindest Suchbegriffl�nge um Suche zu starten.
     */
    var minChar = 3;
    
    /**
     * Name und CSS Art des Such bzw Datenfeldes
     */
    var searchField = ':input#searchTerm';
    
    /**
     * Name und CSS Art des Suchergebnis Ausgabebox
     */
    var resultBox = '#searchResults';
    
    /**
     * Name und CSS Art der Aktivit�tsanzeige
     */
    var indicator = '#searchIndicator'
    
    /**
     * Serveranfrage l�uft
     */
    var requestPending = false;
    
    /**
     * XMLHttpRequest Instanz einer laufenden Anfrage.
     */
    var pendingXMLHttpRequest;
    
    /**
     * Browser Vervollst�ndigung ausschalten.
     */
    $(searchField).attr('autocomplete', 'off');
    
    
    /**
     * Eingabe im Suchfeld
     * -> Suchanfrage starten und Ergebnisse zeigen
     */
    $(searchField).keyup(function(key) {
        $(this).val($(this).val().replace('%', ''));
        
        /* VKA-138 TZ
         * Wenn während der Suche weitergetippt wird,
         * laufende Anfrage stoppen und neue Suche mit aktuellem Suchbegriff 
         * starten
         */
        if (pendingXMLHttpRequest) {
        	pendingXMLHttpRequest.abort();   	
        } // if
        
        if($(this).val().length >= minChar && validKey(key)) {
            $(indicator).show();
            
		           /* VKA-207 AB
		            * Pfadangabe ändern, um PHP Datei auch über Betreiberadmin
		            * zu nutzen
		            */
	           		var urlPath;
	           		(document.getElementById('urlPathBox')) ? urlPath ='../' : urlPath ='';
	        	
           
            pendingXMLHttpRequest = $.getJSON(urlPath+'clientLookup.php?searchTerm=' + $(searchField).val(),
                function(json){          	
                    clientObjs = json;  
                    string = '<ul>';
                    
                    if (json.error) {
                        string += '<li>' + json.error + '</li>';
                    } else {
                        for (i=0; i<json.length; i++) {
                            string += '<li>' + json[i].membership + '</li>';
                        } // for
                    } // else
                    
                    string += '</ul>';
                    
                    $(resultBox).html(string);
                    $(indicator).hide();
                    //$(searchField).attr('id', 'searchTerm');
                    
                    $(resultBox).slideDown();
                    
                    $('li').click(resultSelected);

                } // getJSON() Callback
            ) // getJSON()
        } // if
        
        /**
         * Gewählten Mandanten zurücksetzen
         */
        if($(this).length <= 1)
        	$(':input#pending_membershipid').val('');
    }); // keyup()
    
    /**
     * Suchfeld hat Fokus verloren
     * -> Suchergebnisse ausblenden.
     */
    $(searchField).blur(function() {
        $(resultBox).slideUp();
    	/* VKA-207 AB
        * Blende Submitbutton aus,
        */
        if(document.getElementById('urlPathBox')) {
        	document.getElementById('searchMembershipButton').style.display ="none";} 
    });
    
    /**
     * Suchergebnis ausgew�hlt
     * -> Client Objekt deklarieren
     * -> Formularfelder auf Mandanten-Stammdaten setzen.
     */
    function resultSelected() {
        $(this).css('font-weight', 'bold');
   
        
        if(!clientObjs.error) {
            for(i=0; i<clientObjs.length; i++) {
                if(clientObjs[i].membership != $(this).text()){
                  
                   }
				else{selectedClient = clientObjs[i];}
               
            } // for

            $(searchField).val(selectedClient.membership);
            $(':input#pending_membershipid').val(selectedClient.membershipid);
            
            // Adminbereich. Siehe unten.
            $(':input#membershipApproval').attr('checked', false);
            
            	/* VKA-207 AB
	            * Blende Submitbutton ein,
	            * zu nutzen
	            */
	            if(document.getElementById('urlPathBox')) {
	            	document.getElementById('searchMembershipButton').style.display ="block";
	            }
            
            updateForm();
        } // if
    } // resultSelected()
    
    /**
     * Formularfelder auf Mandanten-Stammdaten setzen. 
     */
    function updateForm() {
        // Rechnungsadresse
        if($(':input#billToDiff').attr('checked') == false) {
            $(':input[name^=b_]').each(function() {
                var member = $(this).attr('name');
    
                $(this).val(selectedClient[member]);
            });
        } // if
        
        // Lieferadresse
        if($(':input#ship2diff').attr('checked') == false) {
            $(':input[name^=s_]').each(function() {
                var member = $(this).attr('name');
    
                $(this).val(selectedClient[member]);
            });
        } // if

        // Mittelbewirtschaftung
        if($(':input#hasIndividualBM').attr('checked') == false) {
            $(':input[name^=bm_]').each(function() {
                var member = $(this).attr('name');

                $(this).val(selectedClient[member]);
            });
        } // if
        
        $('#tax_number').val(selectedClient['tax_number']);
        $('#company').val(selectedClient['company']);
    } // updateForm()
    
    /**
     * Pr�fen ob Eingabe im Suchfeld von Interesse (Zahlen oder Buchstaben)
     * um unn�tige Serveranfragen zu vermeiden.
     * 
     * @TODO In IE testen
     * @param object KeyPressedEventObject
     * @return bool Valide Eingabe
     */
    function validKey(key) {
                // 0-9
        return((key.keyCode >= 48 && key.keyCode <= 56)
                // A-Z
            || (key.keyCode >= 65 && key.keyCode <= 90));
    } // validKey()
    
    /*
    function billToDiffToggle() {
        $('#billBox').toggle('slow');
    }
    
    $('#billToDiff').click(billToDiffToggle);
    $(':checked#billToDiff').each(billToDiffToggle);
    */
    
    
    
    /***************************************************************************
     * Adminbereich
     **************************************************************************/
     
    /**
     * Adminbereich Mandantenmitgliedschaft best�tigen.
     * -> Wenn Checkbox geklickt hidden Input mit Wert setzen.
     */
    $(':input#membershipApproval').click(function() {
        if($(this).attr('checked') == true) {
            $(':input#membershipid').val($(':input#pending_membershipid').val());
        } else {
            $(':input#membershipid').val(0);
        }
    });
    
    /**
     * Adminbereich Mandantenverwaltung
     * -> Formular validieren
     */
    $('#clientManagementForm').submit(function(e) {
        valid = true;
        
        // Rechnungsadresse
        $('#clientManagementForm > :text[name^=b_][name!=b_address_2]').each(function() {
            if($(this).val() == '') {
                $(this).css('border', '0.1em solid red');
                valid = false;
            } else {
                $(this).css('border', '0.1em solid green');
            }
        }); // each
        
        // Lieferadresse
        if($(':input#shipToDiff').attr('checked') == true) {
            $('#shippingBox > :text[name^=s_][name!=s_address_2]').each(function() {
                if($(this).val() == '') {
                    $(this).css('border', '0.1em solid red');
                    valid = false;
                } else {
                    $(this).css('border', '0.1em solid green');
                }
            }); // each
        } // if
        
        if(valid == false) {
            alert('Rot markierte Formulardaten sind ungueltig.');
        }
        
        return valid;
    }); // submit

    /**
     * Adminbereich Mandantenverwaltung
     * -> Lieferadressenbox zeigen
     */
    function shipToDiffToggle() {
        // Nicht toggle()
        if($(this).attr('checked') == true)
            $('#shippingBox').slideDown();
        else
            $('#shippingBox').slideUp();
    }
    
    $(':input#shipToDiff').click(shipToDiffToggle);
    $(':input#shipToDiff').each(shipToDiffToggle);
    
    /**
     * Adminbereich Mandantenverwaltung
     * -> Rechnungsadresse ge�ndert - Lieferadresse anpassen, wenn nicht abweichend.
     */
    $('#clientManagementForm > :input[name^=b_]').change(function() {
        if($(':input#shipToDiff').attr('checked') == true)
            return;
        
        shipField = $(this).attr('name').replace('b_', 's_');
        value = $(this).val();

        $('#shippingBox > :input[name='  + shipField + ']').val(value);
    });
    
    
    /***************************************************************************
     * Betreiberadmin Bereich
     **************************************************************************/
    /**
     * Subtabellen ein/ausklappen
     */
     $('.toggleUserView').click(function(e) {
        e.preventDefault();
        
        $(this).parents("tr").next().toggle();
              
        if($(this).is(':hidden')) {
            $(this).toggleClass('expand');
        } else {
            $(this).toggleClass('collapse');
        }
     });
     
     /**
      * Mandantenmitgliedschaft eines Nutzers bestätigen
      */
     $('.toggleMembership').click(function(e) {
         // VKA-111
     	// Bitte ASCII benutzen und unescape
        ack = confirm(unescape('Mitgliedschaft dieses Nutzer best%E4tigen?'));
        
        if(ack == false)
            e.preventDefault();
     });
     
     /**
      * Mandanten löschen
      */
     $('.deleteClient').click(function(e) {
         ack = confirm('Diesen Mandanten entfernen?');
         
         if(ack == false)
             e.preventDefault();
      });
     
     /**
      * Nutzer löschen
      */
     $('.deleteUser').click(function(e) {
         ack = confirm('Diesen Nutzer entfernen?');
         
         if(ack == false)
             e.preventDefault();
      });
     
     /**
      * Tabellenzeilen per Klick hervorheben, um Übersicht zu schaffen. 
      */
     $('tr.listItem').click(function() {
    	 $(this).toggleClass('trClicked');
     });
}); // JQuery dom.ready


// AB VKA-76
// Pruefung auf Zahl und Mindestmenge
function checkValueInputField (wert_aus_textfeld, id_des_textfeldes, minwert_aus_textfeld) {
	 /**
      * Nur Zahlen zulassen
      */
	var regepx= /(^\d+$)/
	if(!regepx.test(wert_aus_textfeld)) {
	document.getElementById(id_des_textfeldes).value = minwert_aus_textfeld;}
	 /**
      * Wenn Mindermenge unterschritten wird, setze Default
      */
	if (wert_aus_textfeld < minwert_aus_textfeld) {
		 document.getElementById(id_des_textfeldes).value = minwert_aus_textfeld;
	}	
}