

function TrimStringValue(strOriginal) {
    return strOriginal.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}


function validateLeverans() {
    var adress = TrimStringValue(jQuery("#leveransAdressInput").val());
    var postnummer = TrimStringValue(jQuery("#leveransPostnummerInput").val());
    var ort = TrimStringValue(jQuery("#leveransOrtInput").val());

    if (adress.length > 0 && postnummer.length > 0 && ort.length > 0) {
        isLeveransAdressValid()
        isLeveransPostnummerValid();
        isLeveransOrtValid();
    }
}

function validateAnlaggning() {

    var anlaggningsId = TrimStringValue(jQuery("#anlaggningsIdInput").val());
    var arsforbrukning = TrimStringValue(jQuery("#arsforbrukningInput").val());
    var omradesKod = TrimStringValue(jQuery("#omradesKodInput").val());

    if (anlaggningsId.length > 0 && arsforbrukning.length > 0 && omradesKod.length > 0) {
        isAnlaggningsIdValid();
        isArsforbrukningValid();
        isOmradesKodValid();
    }
}

function validateFields(){
	personnummerValid();
	fornamnValid();
	efternamnValid();
	adressValid();
	postnummerValid();
	ortValid();
	emailValid();
	telefonnummerValid();
	anlaggningsIdValid();
	arsforbrukningValid();
	omradesKodValid();
	leveransAdressValid();
	leveransPostnummerValid();
	leveransOrtValid();
}


function IsInt(sText) {
    var ValidChars = "0123456789";
    var IsNumber = true;
    var Char;
    for (i = 0; i < sText.length && IsNumber == true; i++) {
        Char = sText.charAt(i);
        if (ValidChars.indexOf(Char) == -1) {
            IsNumber = false;
        }
    }
    return IsNumber;
}

function IsWord(sText) {
    var ValidChars = "abcdefghijklmnopqrstuvwxyzåäö";
    var IsWord = true;
    var Char;
    for (i = 0; i < sText.length && IsWord == true; i++) {
        Char = sText.charAt(i).toLowerCase();
        if (ValidChars.indexOf(Char) == -1) {
            IsWord = false;
        }
    }
    return IsWord;
}

function IsNumber(sText) {
    var ValidChars = "0123456789.";
    var IsNumber = true;
    var Char;
    for (i = 0; i < sText.length && IsNumber == true; i++) {
        Char = sText.charAt(i);
        if (ValidChars.indexOf(Char) == -1) {
            IsNumber = false;
        }
    }
    return IsNumber;
}


function personnummerValid() {
    jQuery("#personNummer").blur(function() {
        personnummerValidInternal(true);
    });   
    
    jQuery("#personNummer").keyup(function(event) {
        personnummerValidInternal(false);
    });     
} 
  
function personnummerValidInternal(showErrors){

    var personnummer = TrimStringValue(jQuery("#personNummer").val());
    personnummer = personnummer + '';
    personnummer = personnummer.substring(0, 13);
    var pn = new PersonalIdentityNrCheck(personnummer.substring(2, 13));
    if (pn.valid) {
        validatedFields.personnummer = true;
        jQuery("#personnummerErrorRow").hide();
        userInput.personnummer = personnummer.replace("-", "");
    }
    else {
        if (showErrors) {
            jQuery("#personnummerErrorRow").show()
        }
    }
    validateStepTwo();  	
}

function fornamnValid() {
    jQuery("#uppgifterFornamnInput").blur(function() {
        fornamnValidInternal(true);
    });
    jQuery("#uppgifterFornamnInput").keyup(function(event) {
        fornamnValidInternal(false);
    });
}

function fornamnValidInternal(showErrors) {

    var fornamn = TrimStringValue(jQuery("#uppgifterFornamnInput").val());
    if (!fornamn == "") {
        validatedFields.fornamn = true;
        if (validatedFields.efternamn == true) {
            jQuery("#namnErrorRow").hide();
        }
        jQuery("#fornamnError").hide();
        userInput.fornamn = fornamn;
    }
    else {
        validatedFields.fornamn = false;
        if (showErrors) {
            jQuery("#namnErrorRow").show();
            jQuery("#fornamnError").show();
        }
    }
    validateStepTwo();

}

function efternamnValid() {
    jQuery("#uppgifterEfternamnInput").blur(function() {
        efternamnValidInternal(true);
    });

    jQuery("#uppgifterEfternamnInput").keyup(function(event) {
        efternamnValidInternal(false);
    });    
}

function efternamnValidInternal(showErrors) {

    var efternamn = TrimStringValue(jQuery("#uppgifterEfternamnInput").val());
    if (!efternamn == "") {
        validatedFields.efternamn = true;
        if (validatedFields.fornamn == true) {
            jQuery("#namnErrorRow").hide();
        }
        jQuery("#efternamnError").hide();
        userInput.efternamn = efternamn;
    }
    else {
        validatedFields.efternamn = false;
        if (showErrors) {
            jQuery("#namnErrorRow").show();
            jQuery("#efternamnError").show();
        }
    }
    validateStepTwo();

}

function adressValid() {
    jQuery("#uppgifterAdressInput").blur(function() {
        adressValidInternal(true);
    });

    jQuery("#uppgifterAdressInput").keyup(function(event) {
        adressValidInternal(false);
    });    
}

function adressValidInternal(showErrors){

        var adress = TrimStringValue(jQuery("#uppgifterAdressInput").val());
        if (!adress == "") {
            validatedFields.adress = true;
            if (validatedFields.postnummer == true && validatedFields.ort == true) {
                jQuery("#adressErrorRow").hide();
            }
            jQuery("#adressError").hide();
            userInput.adress = adress;
        }
        else {
            validatedFields.adress = false;
            if (showErrors) {
                jQuery("#adressErrorRow").show();
                jQuery("#adressError").show();
            }
        }
        validateStepTwo();

}

function isLeveransAdressValid() {
    isLeveransAdressValidInternal(true);
}

function isLeveransAdressValidInternal(showErrors) {
        var adress = TrimStringValue(jQuery("#leveransAdressInput").val());
        if (!adress == "") {
            validatedFields.leveransAdress = true;
            if (validatedFields.leveransPostNummer == true && validatedFields.leveransOrt == true) {
                jQuery("#leveransAdressErrorRow").hide();
            }
            jQuery("#leveransAdressError").hide();
            userInput.leveransAdress = adress;
        }
        else {
            validatedFields.leveransAdress = false;
            if (showErrors) {
                jQuery("#leveransAdressErrorRow").show();
                jQuery("#leveransAdressError").show();
            }
        }
}

function leveransAdressValid() {
    jQuery("#leveransAdressInput").blur(function() {
        leveransAdressValidInternal(true);
    });

    jQuery("#leveransAdressInput").keyup(function(event) {
        leveransAdressValidInternal(false);
    });             
}

function leveransAdressValidInternal(showErrors){
    isLeveransAdressValidInternal(showErrors);
    validateStepTwo();
}

function postnummerValid() {
    jQuery("#uppgifterPostnummerInput").blur(function() {
        postnummerValidInternal(true);
    });

    jQuery("#uppgifterPostnummerInput").keyup(function(event) {
        postnummerValidInternal(false);
    });       
}   

function postnummerValidInternal(showErrors){

    var postnummer = TrimStringValue(jQuery("#uppgifterPostnummerInput").val());
    if (postnummer != "" && IsInt(postnummer) && postnummer.length == 5) {
        validatedFields.postnummer = true;
        if (validatedFields.adress == true && validatedFields.ort == true) {
            jQuery("#adressErrorRow").hide();
        }
        if (validatedFields.ort == true && validatedFields.postnummer == true) {
            jQuery("#zipCodeError").hide();
        }
        userInput.postnummer = postnummer;
    }
    else {
        validatedFields.postnummer = false;
        if (showErrors) {
            jQuery("#adressErrorRow").show();
            jQuery("#zipCodeError").show();
        }
    }
    validateStepTwo();

}

function isLeveransPostnummerValid() {
    isLeveransPostnummerValidInternal(true);
}

function isLeveransPostnummerValidInternal(showErrors) {

    var postnummer = TrimStringValue(jQuery("#leveransPostnummerInput").val());
    if (postnummer != "" && IsInt(postnummer) && postnummer.length == 5) {
        validatedFields.leveransPostNummer = true;
        if (validatedFields.leveransAdress == true && validatedFields.leveransOrt == true) {
            jQuery("#leveransAdressErrorRow").hide();
        }
        if (validatedFields.leveransOrt == true && validatedFields.leveransPostNummer == true) {
            jQuery("#leveransZipCodeError").hide();
        }
        userInput.leveransPostNummer = postnummer;
    }
    else {
        validatedFields.leveransPostNummer = false;
        if (showErrors) {
            jQuery("#leveransAdressErrorRow").show();
            jQuery("#leveransZipCodeError").show();
        }
    }
}

function leveransPostnummerValid() {
    jQuery("#leveransPostnummerInput").blur(function() {
        leveransPostnummerValidInternal(true);
    });

    jQuery("#leveransPostnummerInput").keyup(function(event) {
        leveransPostnummerValidInternal(false);
    });    
}

function leveransPostnummerValidInternal(showErrors){

    isLeveransPostnummerValidInternal(showErrors);
    validateStepTwo();

}

function ortValid() {
    jQuery("#uppgifterOrtInput").blur(function() {
        ortValidInternal(true);
    });
    jQuery("#uppgifterOrtInput").keyup(function(event) {
        ortValidInternal(false);
    });      
}

function ortValidInternal(showErrors){

        var ort = TrimStringValue(jQuery("#uppgifterOrtInput").val());
        if (ort != "") {
            validatedFields.ort = true;
            if (validatedFields.adress == true && validatedFields.postnummer == true) {
                jQuery("#adressErrorRow").hide();
            }
            if (validatedFields.ort == true && validatedFields.postnummer == true) {
                jQuery("#zipCodeError").hide();
            }
            userInput.ort = ort;
        }
        else {
            validatedFields.ort = false;
            if (showErrors) {
                jQuery("#adressErrorRow").show();
                jQuery("#zipCodeError").show();
            }
        }
        validateStepTwo();

}

function isLeveransOrtValid() {
    isLeveransOrtValidInternal(true);
}

function isLeveransOrtValidInternal(showErrors) {

    var ort = TrimStringValue(jQuery("#leveransOrtInput").val());
    if (!ort == "") {
        validatedFields.leveransOrt = true;
        if (validatedFields.leveransAdress == true && validatedFields.leveransPostNummer == true) {
            jQuery("#leveransAdressErrorRow").hide();
        }
        if (validatedFields.leveransOrt == true && validatedFields.leveransPostNummer == true) {
            jQuery("#leveransZipCodeError").hide();
        }
        userInput.leveransOrt = ort;
    }
    else {
        validatedFields.leveransOrt = false;
        if (showErrors) {
            jQuery("#leveransAdressErrorRow").show();
            jQuery("#leveransZipCodeError").show();
        }
    }

}

function leveransOrtValid() {
    jQuery("#leveransOrtInput").blur(function() {
        leveransOrtValidInternal(true);
    });
    jQuery("#leveransOrtInput").keyup(function(event) {
        leveransOrtValidInternal(false);
    });      
}

function leveransOrtValidInternal(showErrors){

        var ort = TrimStringValue(jQuery("#leveransOrtInput").val());
        if (ort != "") {
            validatedFields.leveransOrt = true;
            if (validatedFields.leveransAdress == true && validatedFields.leveransPostNummer == true) {
                jQuery("#leveransAdressErrorRow").hide();
            }
            if (validatedFields.leveransOrt == true && validatedFields.leveransPostNummer == true) {
                jQuery("#leveransZipCodeError").hide();
            }
            userInput.leveransOrt = ort;
        }
        else {
            validatedFields.leveransOrt = false;
            if (showErrors) {
                jQuery("#leveransAdressErrorRow").show();
                jQuery("#leveransZipCodeError").show();
            }
        }
        validateStepTwo();
}


function isTelefonnummerValid() {
    isTelefonnummerValidInternal(true);
}

function isTelefonnummerValidInternal(showErrors) {
        var telefon = jQuery("#uppgifterTelefonEttInput").val().replace(/-/gi, '').replace(/ /gi, '');  //Remove all - and ' '
        var phoneOneError = false;
        var phoneTwoError = false;

        if (telefon != "" && IsInt(telefon) == true) {
            userInput.telefonnummer = telefon;
        }
        else {
            phoneOneError = true;
        }

        var telefon2 = jQuery("#uppgifterTelefonTvaInput").val().replace(/-/gi, '').replace(/ /gi, '');  //Remove all - and ' '
        if (telefon2 != "" && IsInt(telefon2) == true) {

            userInput.telefonnummer2 = telefon2;
        }
        else {

            phoneTwoError = true;
        }

        if (phoneOneError && phoneTwoError) {
            validatedFields.telefonnummer = false;
            if (showErrors) {
                jQuery("#telefonErrorRow").show();
            }
        }
        else {
            validatedFields.telefonnummer = true;
            jQuery("#telefonErrorRow").hide();
        }
}

function telefonnummerValid() {
    telefonnummerValidInternal();
}

function telefonnummerValidInternal(){
    jQuery("#uppgifterTelefonEttInput").blur(function() {
        isTelefonnummerValidInternal(true);
        validateStepTwo();
    });

    jQuery("#uppgifterTelefonTvaInput").blur(function() {
        isTelefonnummerValidInternal(true);
        validateStepTwo();
    });

    jQuery("#uppgifterTelefonEttInput").keyup(function(event) {
        isTelefonnummerValidInternal(false);
        validateStepTwo();
    });

    jQuery("#uppgifterTelefonTvaInput").keyup(function(event) {
        isTelefonnummerValidInternal(false);
        validateStepTwo();
    });      
}

function emailValid() {
    jQuery("#uppgifterEmailInput").blur(function() {
        emailValidInternal(true);
    });
    jQuery("#uppgifterEmailInput").keyup(function(event) {
        emailValidInternal(false);
    });
}

function emailValidInternal(showErrors){

        var email = jQuery("#uppgifterEmailInput").val();

        var emailRegexp = /^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i;

        if (email.match(emailRegexp)) {
            validatedFields.email = true;
            if (validatedFields.email == true) {
                jQuery("#emailErrorRow").hide();
            }
            userInput.email = email;
        }
        else {
            validatedFields.email = false;
            if (showErrors) {
                jQuery("#emailErrorRow").show();
            }
        }
        validateStepTwo();
}

function anlaggningFullmaktValid() {
    if ((jQuery('#anlaggningsUppgifterCheckbox').is(':checked')) || (jQuery('#fullmaktCheckbox').is(':checked')))
        jQuery("#anlaggningFullmaktErrorRow").hide();
    else
        jQuery("#anlaggningFullmaktErrorRow").show();
}

function isAnlaggningsIdValid() {
    isAnlaggningsIdValidInternal(true);
}

function isAnlaggningsIdValidInternal(showErrors) {

    var anlaggningsId = TrimStringValue(jQuery("#anlaggningsIdInput").val());
    if (anlaggningsId != "" && anlaggningsId.length == 12 && IsInt(anlaggningsId)) {
            validatedFields.anlaggningsId = true;
            if (validatedFields.anlaggningsId == true && validatedFields.arsforBrukning == true) {
                jQuery("#anlaggningsErrorRow").hide();
            }
            $("#anlaggningError").hide();
            userInput.anlaggningsId = "735999" + anlaggningsId;
        }
        else {
            validatedFields.anlaggningsId = false;
            if (showErrors) {
                jQuery("#anlaggningsErrorRow").show();
            }
            $("#anlaggningError").show();
        }
}

function anlaggningsIdValid() {
    jQuery("#anlaggningsIdInput").blur(function() {
        anlaggningsIdValidInternal(true);
    });
    jQuery("#anlaggningsIdInput").keyup(function(event) {
        anlaggningsIdValidInternal(false);
    });    
}

function anlaggningsIdValidInternal(showErrors){

    isAnlaggningsIdValidInternal(showErrors);
    validateStepTwo();
}

function isArsforbrukningValid() {
    isArsforbrukningValidInternal(true);
}

function isArsforbrukningValidInternal(showErrors) {
    var arsforbrukning = TrimStringValue(jQuery("#arsforbrukningInput").val());
    if (arsforbrukning != "" && IsNumber(arsforbrukning)) {
        updateArsforbrukning(arsforbrukning);
        if (g_avtalSelected) {
            calculateAvtal(prices.avtalLista.avtal[g_energiAvtalIndex]);
        }
        validatedFields.arsforBrukning = true;
        if (validatedFields.arsforBrukning == true && validatedFields.anlaggningsId == true) {
            jQuery("#anlaggningsErrorRow").hide();
        }
        $("#forbrukningError").hide();
        userInput.arsforbrukning = arsforbrukning;
    }
    else {
        // validatedFields.arsforBrukning = false; // Bortkommenterad om båf inte är obligatorisk
        if ( showErrors ) {
            jQuery("#anlaggningsErrorRow").show();
            $("#forbrukningError").show();
        }
    }
}

function arsforbrukningValid() {
    jQuery("#arsforbrukningInput").blur(function() {
        arsforbrukningValidInternal(true);
    });

    var timerID = null;    
    jQuery("#arsforbrukningInput").keyup(function(event) {
        if (timerID != null) {
            window.clearTimeout(timerID);
        }
        timerID = window.setTimeout(arsforbrukningValidInternalRequest, 750);            
    });
}

function arsforbrukningValidInternalRequest() {
    arsforbrukningValidInternal(false);
}

function arsforbrukningValidInternal(showErrors){

    isArsforbrukningValidInternal(showErrors);
    validateStepTwo();
    //getXML();
}

function isOmradesKodValid() {
    isOmradesKodValidInternal(true);
}

function isOmradesKodValidInternal(showErrors) {

        var omradesKod = TrimStringValue(jQuery("#omradesKodInput").val());
        if (omradesKod != "" && IsWord(omradesKod) && omradesKod.length == 3) {
            validatedFields.omradeskod = true;
            userInput.omradeskod = omradesKod;
            if (validatedFields.omradeskod == true) {
                jQuery("#anlaggningsIdErrorRow").hide();
            }
        }
        else {
            validatedFields.omradeskod = false;
            if (showErrors) {
                jQuery("#anlaggningsIdErrorRow").show();
            }
        }        
}

function omradesKodValid() {
    $("#omradesKodInput").blur(function() {
        omradesKodValidInternal(true);
    });

    $("#omradesKodInput").keyup(function(event) {
        omradesKodValidInternal(false);
    });    
}

function omradesKodValidInternal(showErrors){

    isOmradesKodValidInternal(showErrors);
    validateStepTwo();

}

function validateFlyttaInDatum(){
	$("#flyttaInDatum").blur(function(){
		userInput.inflyttningsDatum = $("#flyttaInDatum").val();
	});
}

function validateStepTwo(){
	
	var validated = new Array();
	var j = 0;
	for(var i in validatedFields){
		if(validatedFields[i] == false){
			validated[j] = false;
			j++;
		}
	}
	
	if(step == 2){	   
        var isValid = true;
	
		if(!inArray(validated, false)){
			
		}
		else {
		    isValid = false;
			
        }

        if (isValid) {
            enableSammanfattning();
            
        }
        else {            
            disableSammanfattning();
        }
    }		
	checkForDontLeave();
}
