/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Formular überprüfen
// @onSubmit : function (){ if(validateForm() == true){  } }
//

//Formular zurücksetzten
var _resetForm = function(formname){
    $(formname).find('.alertText').remove();
    $(formname).find('input[type=text]').val('');
    $(formname).find('textarea').val('');
    $(formname).find('input[type=password]').val('');
    $(formname).find('input[type=checkbox]').attr('checked',false);
    $(formname).find('select option:first').attr('selected',true);
    $(formname).find('.selectedContainer').find('.list').find('div').trigger('click');    
    $(formname).find('[class^=validate]').each(function(){
        if($(this).parent().hasClass('errorVali')){
            $(this).unwrap();
        }        
    });
    $('ul.itTabs').find('li').find('a').css({'color': ''});
}



function validateForm(formname){
    
    if(typeof formname === 'undefined') return false;
    //Hinweise ausblenden
    $('.alertText').remove();
    $('ul.itTabs a').each(function(){
        $(this).css({
            'color' : '#000000'
        })    
    });
    
    fields = $(formname).find('[class*=validate]');
    
    alerts = {
        "required" : _trans['js_nw_validateForm_required'],
        "confirm" : _trans['js_nw_validateForm_confirm'],
        "emailCheck": _trans['js_nw_validateForm_email_check'], 
        "number": _trans['js_nw_validateForm_number'] 
    }
    
    callerArray = new Array();
    submitForm = true;
    
    //Prüfungsmechanismen
    var validateCall = function(caller, result){
        var errorCount = 0;
        
        
        
        for(var i=0;i<result.length;i++){
            var width = $(caller).width() + 6;
           
          
            //Pflichtfeld
            if(result[i] == 'required'){
//                alertText = 'jQueryName = ' + $(caller).attr('name') + '\n';
//                alertText = alertText + 'fld = ' +  result[i]+ '\n';
//                alertText = alertText + 'val = ' + $(caller).val()+ '\n';
//                alertText = alertText +  'attr-disabled = ' + $(caller).attr('disabled');
//
//                alert ( alertText );
//                
//                
                
                if( ($(caller).val() == '' || $(caller).val() == ' ' ) && (  $(caller).attr('disabled') == false || $(caller).attr('disabled') === undefined ) ){
                    $(caller).wrap('<div class="errorVali" style="width:'+width+'px"></div>');
                    appendText(caller,result[i]);
                    _checkClass(caller);
                    submitForm = false;
                    errorCount += 1;
                }    
            }
            
            //Abgleichung mit anderem Feld
            if(result[i] == 'confirm'){
                var resultItem = i;
                var nextResultItem = resultItem+1;
                if( $(caller).val() != $(formname ).find('input[name="'+ result[nextResultItem] +'"]').val() ){
                    if(!$(caller).parent().hasClass('errorVali')){
                        $(caller).wrap('<div class="errorVali" style="width:'+width+'px"></div>');    
                    }
                    appendText(caller,result[i]);
                    _checkClass(caller);
                    submitForm = false;
                    errorCount += 1;
                }
            }
            
            //Email-Check
            if(result[i] == 'emailCheck'){
                var addr = $(caller).val();
                var regex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
                var matchResult = addr.match(regex);
                if(matchResult === null){
                    if(!$(caller).parent().hasClass('errorVali')){
                        $(caller).wrap('<div class="errorVali" style="width:'+width+'px"></div>');    
                    }
                    appendText(caller,result[i]);
                    _checkClass(caller);
                    submitForm = false;
                    errorCount += 1;
                }
                
            }
            
            
            //Email-Check
            if(result[i] == 'number'){
                var getNumber = $(caller).val();
                var regex = /^[0-9\ ]+$/;
                var internError = false;
                if(getNumber != ''){
                    if(getNumber.indexOf(',') == '-1'){
                        if(getNumber.match(regex) === null){
                            internError = true;
                        }    
                    }else{
                        splitNumbers = getNumber.split(',');
                        for(var iNumbers = 0 ; iNumbers < splitNumbers.length ; iNumbers++){
                            if(splitNumbers[iNumbers].match(regex) === null){
                                internError = true;
                            }        
                        }
                    }
                    
                    if(internError == true){
                        if(!$(caller).parent().hasClass('errorVali')){
                            $(caller).wrap('<div class="errorVali" style="width:'+width+'px"></div>');    
                        }
                        appendText(caller,result[i]);
                        _checkClass(caller);
                        submitForm = false;
                        errorCount += 1;    
                    }
                
                }
                
            }
        }        
    }
    
    //setzt den aktiven Tab auf false
    var _checkClass = function(caller){
        if( $(caller).hasClass('itPaneElement')){
            //Aktuelle Position ermitteln
            var $indexElement = $(caller).index();
            //Tabs vorhanden?
            if($('ul.itTabs').length > 0 && typeof $indexElement != 'undefined' ){
                $('ul.itTabs').find('li:eq('+ $indexElement +')').find('a').css({
                    'color' : '#CD0A0A'
                });                
            }
               
        }else{
            _checkClass( $(caller).parent() );    
        }
    }
    
    var appendText = function(caller,resultInfo){
        if(typeof alerts[resultInfo] != 'undefined'){
            $(caller).after('<span class="alertText">'+ alerts[resultInfo] +'</span>');    
        }
    }
    
    //Alle Fehlermeldungen löschen
    var closePrompt = function(caller){
        if($(caller).parent().hasClass('errorVali') ){
            $(caller).unwrap();    
        }   
    }
    
    var loadCaller = function(caller){
        closePrompt(caller);
        //Prüfungsschlüssel extrahieren
        rulesParsing = $(caller).attr('class');
		rulesRegExp = /\[(.*)\]/;
		getRules = rulesRegExp.exec(rulesParsing);
        
        if(typeof getRules != "undefined" ){
            str = getRules[1]
    		pattern = /\W+/;
    		result= str.split(pattern);	
            //Felder überprüfen
            var validateCalll = validateCall(caller,result);   
		}
    }
    
    //Felder durchlaufen
    for(var i=0;i<fields.length;i++){      
        loadCaller(fields[i]);
    }
    
    return(submitForm) ? true : false;
    
}
