var invalid_bg_color = "#ff1010";
var invalidElements = new Array();

/*
var win;
win = window.open("", "debug");
win.document.write("<h1>Debugging data</h1><div id='data' style='border:1px solid black;'></div><div id='rr' style='border:1px solid blue;'></div>");

var d = win.document.getElementById('data');
var a = win.document.getElementById('rr');
*/

function parseVar(ref, allowNull, formi) {
    if(allowNull == false && ref.value == "") {
        return invalidate(ref, formi);
    }
    validate(ref, formi);
}

function parseText(ref, allowNull, formi) {
    
    ref.enabled = false;
    if(allowNull == false && ref.value == "") {
        return invalidate(ref, formi);
    }
    if(ref.value.search("[^a-z^A-Z^\ ^Ä^ä^ö^Ö^Å^å]") != -1) {
        return invalidate(ref, formi);
    }
    validate(ref, formi);
}

function parsePassword(ref, allowNull, formi) {
    if(allowNull == false && ref.value == "") {
        return invalidate(ref, formi);
    }
    if(ref.value.search("[^\ ]") != -1) {
        return invalidate(ref, formi);
    }
    validate(ref, formi);
}

function parseNumeric(ref, allowNull, formi) {
    if(allowNull == false && ref.value == "") {
        return invalidate(ref, formi);
    }
    if(ref.value.search("[^0-9\.\,]") != -1) {
        return invalidate(ref, formi);
    }
    validate(ref, formi);
}

function parseEmail(ref, allowNull, formi) {
    if(allowNull == false && ref.value == "") {
        return invalidate(ref, formi);
    }
    if(ref.value.search("^[a-zäöåA-ZÄÖÅ0-9._%+-]+@[a-zäöåA-ZÄÖÅ0-9.-]+\.[a-zäöåA-ZÄÖÅ]{2,4}$") == -1) {
        return invalidate(ref, formi);
    }
    validate(ref, formi);
}

function parseDate(ref, allowNull, formi) {
    if(allowNull == false && ref.value == "") {
        return invalidate(ref, formi);
    }
    if(ref.value.search("[^a-zäöå^A-ZÄÖÅ^\ ]") != -1) {
        return invalidate(ref, formi);
    }
    
    validate(ref, formi);

}

function invalidate(ref, formi) {
    //d.innerHTML += "invalidating " + ref.value + "<br />\n";
    //a.innerHTML = invalidElements + "\n";
    
    ref.style.background = invalid_bg_color;
    document.getElementById(formi).submitButton.disabled = true;
    var i;
    var inList = false;
    for(i = 0; i < invalidElements.length;i++) {
        if(invalidElements[i] == ref) {
            inList = true;
        }
    }
    if(!inList) {
        invalidElements.push(ref);
    }
    
}

function validate(ref, formi) {
    //d.innerHTML += "Validating " + ref.value + "<br />\n";
    //a.innerHTML = invalidElements + "\n";
    
    ref.style.background = "";
    var i;
    for(i = 0; i < invalidElements.length;i++) {
        if(invalidElements[i] == ref) {
            invalidElements.splice(i, 1);
            invalidElements.sort();
        }
    }
    if(invalidElements.length == 0) {
        document.getElementById(formi).submitButton.disabled = false;
    }
}

function parseForm(formi) {
    ref = document.getElementById(formi);
    elemList = ref.elements;
    var i;
    for(i = 0; i < elemList.length; i++) {
        if(elemList[i].onkeyup) { elemList[i].onkeyup();}
    }
    if(invalidElements.length > 0) {
        return false;
    }
    return true;

}

