//Sätter värde  när någon av radioknapparna klickas
function setValues(form) {

    //Nollställ hidden-fältet 'metod', så att ingen ny sökning sker när en ny radioknapp väljs
    form.metod.value = "";

    //När en ny radioknapp väljs ska inte tidigare sökresultat skrivas ut. Detta styrs m h a variabeln 'newGeoOmrade'
    form.newgeoomrade.value = "true";

    //Sätt hidden-fält 'nosearch' till true. Denna variabel används på 'resultTable.jsp' för att
    //inte feltexten ska skrivas ut igen när när en ny radioknapp väljs
    form.nosearch.value = "true";

    for (i = 0; i < form.geo_omrade.length; i++) {
        if (form.geo_omrade[i].checked) {
            form.vald_geo_omrade.value = form.geo_omrade[i].value;
        }
    }

    if (form.vald_geo_omrade.value == "ort_postnummer") {
        //Om vald_omrade.length > 1, finns det mer än en sökrad och då lagras data i en array av hidden-fält
        if (form.vald_omrade.length > 1) {
            form.vald_omrade[0].value = "Ort";
            form.vald_villkor1[0].value = "postnummer";
        } else {
            form.vald_omrade.value = "Ort";
            form.vald_villkor1.value = "postnummer";
        }
    }

    if (form.vald_geo_omrade.value == "lan_kommun") {
        if (form.vald_omrade.length > 1) {
            form.vald_omrade[0].value = "Län";
            form.vald_villkor1[0].value = "namn";
        } else {
            form.vald_omrade.value = "Län";
            form.vald_villkor1.value = "namn";
        }
    }
    form.submit();
}


//Sätter värden när select-listan 'omrade' förändras
function changeOmrade(form, numOfRows) {

    //Nollställ hidden-fältet 'metod', så att ingen ny sökning sker när omrade förändras
    form.metod.value = "";

    //Sätt hidden-fält 'nosearch' till true. Denna variabel används på 'resultTable.jsp' för att
    //inte feltexten ska skrivas ut igen när select-listann 'omrade' förändras
    form.nosearch.value = "true";

    if (numOfRows > 1) {
        changeMultipleRows(form, numOfRows);
        return;
    }

    if (form.omrade.value == "Län" || form.omrade.value == "Kommun")
        return;

    for (i = 0; i < form.geo_omrade.length; i++) {
        if (form.geo_omrade[i].checked) {
            form.vald_geo_omrade.value = form.geo_omrade[i].value;
        }
    }

    index = form.omrade.selectedIndex;
    index2 = form.villkor2.selectedIndex;

    form.vald_omrade.value = form.omrade.options[index].value;
    form.vald_villkor2.value = form.villkor2.options[index2].value;
    form.vald_villkor3.value = form.villkor3.value;

    if (form.vald_omrade.value == "Ort")
        form.vald_villkor1.value = "postnummer";

    if (form.vald_omrade.value == "Postnummer")
        form.vald_villkor1.value = "nummer";

    form.submit();
}


//Sätter värden, när det finns mer än en sökrad, för:
//- radioknappar 'geo_omrade'
//- select-list 'omrade'
//- select-list 'villkor1'
//- select-list 'villkor2'
function changeMultipleRows(form, numOfRows) {

    index = form.omrade.selectedIndex;
    index1 = form.villkor1.selectedIndex;
    index2 = form.villkor2.selectedIndex;

    for (i = 0; i < form.geo_omrade.length; i++) {
        if (form.geo_omrade[i].checked) {
            form.vald_geo_omrade.value = form.geo_omrade[i].value;
        }
    }

    if (form.vald_omrade.length > 0) {
        for (i = 0; i < form.vald_omrade.length; i++) {
            form.vald_omrade[i].value = form.omrade[i].value;
            form.vald_villkor1[i].value = form.villkor1[i].value;
            form.vald_villkor2[i].value = form.villkor2[i].value;
            form.vald_villkor3[i].value = form.villkor3[i].value;
        }
    } else {
        form.vald_omrade.value = form.omrade.options[index].value;
        form.vald_villkor1.value = form.villkor1.options[index1].value;
        //form.vald_villkor2.value = form.villkor2.options[index2].value;
        form.vald_villkor2.value = form.villkor2.value;
        form.vald_villkor3.value = form.villkor3.value;
    }

    form.numOfRows.value = numOfRows;
}


//Anropas när användaren vill lägga till en ny sökrad
/**	function addRow(numOfRows) {

 if (numOfRows == 3) {
 alert("Du kan använda max 3 sökrader");
 } else {
 //Nollställ hidden-fältet 'metod', så att ingen ny sökning sker när omrade förändras
 document.odrForm.metod.value = "";

 //Sätt hidden-fält 'nosearch' till true. Denna variabel används på 'resultTable.jsp' för att
 //inte feltexten ska skrivas ut igen när select-listann 'omrade' förändras
 document.odrForm.nosearch.value = "true";

 var number;

 number = numOfRows + 1;
 document.odrForm.numOfRows.value = number;

 changeMultipleRows(document.odrForm, number);
 }
 }

 */

function removeRow(form) {

    //Nollställ hidden-fältet 'metod', så att ingen ny sökning sker när omrade förändras
    document.odrForm.metod.value = "";

    //Sätt hidden-fält 'nosearch' till true. Denna variabel används på 'resultTable.jsp' för att
    //inte feltexten ska skrivas ut igen när select-listann 'omrade' förändras
    document.odrForm.nosearch.value = "true";

    var num;
    num = form.vald_omrade.length;
    form.numOfRows.value = num - 1;
    changeMultipleRows(form, form.numOfRows.value);
}


//Enterknappen är nedtryckt
function searchOnSubmit(numOfRows) {
    search(numOfRows);
    return false;
}

//Sökknappen är klickad
function search(numOfRows) {

    if (!checkVillkor1(document.getElementById('odrForm')) == false) {
        document.getElementById('odrForm').metod.value = "sok";
        if (document.getElementById('odrForm').reklamtyp.checked)
            document.getElementById('odrForm').reklamtyp.value = "on";

        changeMultipleRows(document.getElementById('odrForm'), numOfRows);
        document.getElementById('odrForm').submit();

    }


}

function checkVillkor1(theForm) {

    theForm.villkor3.value = theForm.villkor3.value.replace(/^\s+/,"");
    theForm.villkor3.value = theForm.villkor3.value.replace(/\s+$/,"");

    var va = new Validator();
    var er = new ErrorRenderer();

    er.clearAll();

    villkor1 = document.getElementById('odrForm').villkor1.value;
    villkor3 = document.getElementById('odrForm').villkor3.value;

    if(villkor3.indexOf("%") != -1){
        var villkorMissing1 = new Error(theForm.villkor3, 'Tecknet % får inte ingå i ett ' + villkor1);
        va.addError(villkorMissing1);
        return er.displayErrors(theForm, va.getErrors());
    }


    if (villkor3.length == 0) {
        if (villkor1 == "områdeskod" || villkor1 == "postort") {
            var villkorMissing1 = new Error(theForm.villkor3, 'Här måste du fylla i ' + villkor1 + ', tre tecken.');
            va.addError(villkorMissing1);
            return er.displayErrors(theForm, va.getErrors());
        }
        else {
            if( villkor1 == "namn"){
                var villkorMissing2 = new Error(theForm.villkor3, 'Här måste du fylla i ' + villkor1 + ', minst två tecken.');
                va.addError(villkorMissing2);
                return er.displayErrors(theForm, va.getErrors());
            }
            else {
                var villkorMissing2 = new Error(theForm.villkor3, 'Här måste du fylla i ' + villkor1 + ', tre siffror.');
                va.addError(villkorMissing2);
                return er.displayErrors(theForm, va.getErrors());
            }
        }
    }

    if (villkor1 == "postnummer") {

        if (villkor3.length < 3) {
            var villkorTooShort = new Error(theForm.villkor3, 'Här måste du fylla i ' + villkor1 + ', tre siffror.');
            va.addError(villkorTooShort);
            return er.displayErrors(theForm, va.getErrors());
        }
        else if (villkor3.length > 3) {
            var villkorTooLong = new Error(theForm.villkor3, "Postnummersökningen får inte innehålla mer än tre siffror");
            va.addError(villkorTooLong);
            return er.displayErrors(theForm, va.getErrors());
        }
        else {
            //alert("3 chars, gonna validate now");
        //    validatevillkor1(villkor3, theForm);


            var anum=/(^\d+$)|(^\d+\.\d+$)/
            if (!anum.test(villkor3)){
                //alert("NAN!!!!!!!!!!");
                var villkorDigits = new Error(theForm.villkor3, 'Här måste du fylla i ' + villkor1 + ', får endast innehålla siffror.');
                va.addError(villkorDigits);
            }
        }
            //alert("returning");
            return er.displayErrors(theForm, va.getErrors());
    }

    if (villkor1 == "namn") {

        if (villkor3.length < 2) {
            var villkorTooShort = new Error(theForm.villkor3, 'Här måste du fylla i ' + villkor1 + ', minst två tecken.');
            va.addError(villkorTooShort);
            return er.displayErrors(theForm, va.getErrors());
        }
        //else
        //    validatevillkor1(villkor3, theForm);

            return er.displayErrors(theForm, va.getErrors());
    }

    if (villkor3.length > 3 && villkor1 == "postnummer") {

        var villkorTooLong = new Error(theForm.villkor3, "Postnummergrupper får inte innehålla mer än tre tecken");
        va.addError(villkorTooLong);
        return er.displayErrors(theForm, va.getErrors());
    }

    if (villkor3.length > 35) {

        if (villkor1 == "namn" || villkor1 == "postort")
            var villkorTooLong = new Error(theForm.villkor3, "Områdesnamn får inte innehålla mer än 35 tecken");
            va.addError(villkorTooLong);
            return er.displayErrors(theForm, va.getErrors());
    }

    if (villkor1 == "postnummer" || villkor1 == "nummer" || villkor1 == "områdeskod") {

        if (isNaN(villkor3)) {
            var errorLabel;
            if (villkor1 == "postnummer") errorLabel = "Postnummer";
            if (villkor1 == "nummer") errorLabel = "Nummer";
            if (villkor1 == "områdeskod") errorLabel = "Områdeskod";
            var villkorDigits = new Error(theForm.villkor3, errorLabel + " får bara innehålla siffror");
            va.addError(villkorDigits);
            return er.displayErrors(theForm, va.getErrors());
        }
    }


    return true;
}


//Användaren vill expandera ett sökurval
//Hidden-varibeln 'reklamtypexpand' tilldelas det tidigare värdet av reklamtyp för att
//försäkra att användaren inte kan byta reklamtyp när ett tidigare urval expanderas

/**	function showSubAreas(omradetypid, omradeid, expandvillkor, reklamtyp, numOfRows, benamning) {

 var expand = new String(expandvillkor);
 document.getElementById('odrForm').metod.value = "expandera";
 document.getElementById('odrForm').omradetypid.value = omradetypid;
 document.getElementById('odrForm').subareaid.value = omradeid;
 document.getElementById('odrForm').expandvillkor.value = expandvillkor;

 if (reklamtyp == 1) {
 document.getElementById('odrForm').reklamtypexpand.value = "on";
 } else {
 document.getElementById('odrForm').reklamtypexpand.value = "";
 }

 changeMultipleRows(document.getElementById('odrForm'), numOfRows);
 }
 */

//Användaren vill stänga ett expanderat sökurval
/**	function closeSubAreas (omradeid, numOfRows) {

 document.getElementById('odrForm').metod.value = "closesubareas";
 document.getElementById('odrForm').subareaid.value = omradeid;

 changeMultipleRows(document.getElementById('odrForm'), numOfRows);
 }
 */

//Användaren vill rensa formuläret och ta bort tidigare sökresultat
function clearAll() {
    setValues(document.getElementById('odrForm'));
}


function OpenWindow_scroll_resizable(url, width, height, def) {

    var urlStr = new String(url);
    window.open(urlStr, "def", "HEIGHT=400,WIDTH=800,scrollbars");
}

function validatevillkor1(villkor3, theForm) {

    var va = new Validator();
    var er = new ErrorRenderer();

    er.clearAll();

    var numChars = "0123456789";

    for (var i = 0; i < villkor3.length; i++) {

        for (var j = 0; j < numChars.length; j++) {
/*
            if (numChars.charAt(j) == villkor3.charAt(i)){
                var villkorDigits = new Error(theForm.villkor3, '1 Här måste du fylla i ' + villkor1 + ', tre siffror.');
                va.addError(villkorDigits);
                return er.displayErrors(theForm, va.getErrors());
                break;
            }
            else
            {
*/
            if (j == (numChars.length - 1)){
                    var villkorDigits = new Error(theForm.villkor3, 'Här måste du fylla i ' + villkor1 + ', får endast innehålla siffror.');
                    va.addError(villkorDigits);
                    return er.displayErrors(theForm, va.getErrors());
            }

        }

    }


}
