function checkFields(fields) {
    var form = document.antragsformular;
    var errorString = "";
    for (property in fields) {
        fieldName = property;
        fieldError = fields[property];
        var empty = true;
        if (fieldName.indexOf("Photo")!=-1) {
        } else {
            empty = eval("form." + fieldName + ".value") == "";
        }
        if (empty) {
            errorString += fieldError.replace(/<sup>2<\/sup>/, "2") + "\n";
        }
        if (!empty && (fieldName.indexOf("mail")!=-1)) {
            if (!checkEmail(eval("form." + fieldName + ".value"))) {
                errorString += errorEmailText + "\n";
            }
        }
    }
    if (errorString != "") {
        errorString = errorStringText + "\n\n" + errorString;
        errorString = errorString.replace(/<br>/, " ");
        alert(errorString);
        return false;
    } else {
        return true;
    }
}

function checkEmail(email) {
    var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9])+$/;
    return filter.test(email);
}

function checkForm(form, lang) {
    var check = true;

    if (check) {
        if (form.storePrivatData.checked) {
            storeData(form.whichForm.value, lang);
        } else {
            deleteData(form.whichForm.value);
        }
    }

    switch (form.whichForm.value) {
        case "PE":
            return checkFields(mandatoryFieldsPE);
            break;
        case "MVA":
            var check = checkFields(mandatoryFieldsMVA);
            if ( check && ((form.MaterialSchadenmuster.value == "nein")||(form.MaterialSchadenmuster.value == "non")) ) {
                alert(hinweisTextSchadenmuster);
            }
            if ( (form.BezugsquelleEmail.value != "") && !checkEmail(form.BezugsquelleEmail.value)) {
                alert(errorAnsprechpartnerEmailText);
                check = false;
            }
            return check;
        case "MVM":
            var check = checkFields(mandatoryFieldsMVM);
            if ( check && ((form.MaterialSchadenmuster.value == "nein")||(form.MaterialSchadenmuster.value == "non")) ) {
                alert(hinweisTextSchadenmuster);
            }
            if ( (form.BezugsquelleEmail.value != "") && !checkEmail(form.BezugsquelleEmail.value)) {
                alert(errorAnsprechpartnerEmailText);
                check = false;
            }
            return check;
            break;
        default:
            check = false;
            break;
    }
    if (check && form.storePrivatData.checked) {
        storeData(which, lang);
    }

    return (check);
}

var oWin = null;

function popupWindow(url, popupWidth, popupHeight, paramScrollbar) {
    if (paramScrollbar && paramScrollbar=="true") {
        scrollbar = "yes";
    } else {
        scrollbar = "no";
    }
    // Centering of the popup window
    var xPos = Math.round((screen.width - popupWidth) / 2);
    var yPos = Math.round((screen.height - popupHeight) / 2);
    var windowParams = "width=" + popupWidth + ",height=" + popupHeight;
    windowParams += ",left=" + xPos + ",top=" + yPos;
    windowParams += ",scrollbars=" + scrollbar + ",status=no,toolbar=no,resizable=yes";
    if (oWin && (!oWin.closed)) {
        oWin.close();
    }
    oWin = window.open(url,"3M",windowParams);
    oWin.focus();
}

function showInputFieldForOthers(number, selectedValue) {
    if ( (selectedValue.indexOf("Andere")==0) || (selectedValue.indexOf("Autres")==0) ) {
        document.getElementById("inputAreaForOthers" + number).style.display = "block";
    } else {
        document.getElementById("inputAreaForOthers" + number).style.display = "none";
        document.getElementById("inputFieldForOthers" + number).value = "";
    }
}


/*
 *
 * COOKIE FUNCTIONALITY
 *
 */
function Cookie(documentObject, name, hours, path, domain, secure) {
    this.$document = documentObject;
    this.$name = name;
    this.$expireDate = (hours)?new Date((new Date()).getTime() + hours*3600000):null;
    this.$path = (path)?path:null;
    this.$domain = (domain)?domain:null;
    this.$secure = (secure)?secure:false;
}

function _CookieStore() {
    var cookieValue = "";
    for (var property in this) {
        if ( (property.charAt(0) == "$") || ((typeof this[property]) == "function") ) {
            continue;
        }
        if (cookieValue != "") {
            cookieValue += "&";
        }
        cookieValue += property  + ":" + escape(this[property]);
    }
    var cookie = this.$name + "="  + cookieValue;
    if (this.$expireDate) {
        cookie += "; expires=" + this.$expireDate.toGMTString();
    }
    if (this.$path) {
        cookie += "; path=" + this.$path;
    }
    if (this.$domain) {
        cookie += "; domain=" + this.$domain;
    }
    if (this.$secure) {
        cookie += "; secure";
    }
    this.$document.cookie = cookie;
}

function _CookieLoad() {
     var allCookies = this.$document.cookie;
     if (allCookies == "") {
        return false;
     }
     var start = allCookies.indexOf(this.$name + "=");
     if (start == "-1"){
        return false;
     }
     start += this.$name.length + 1;
     var end = allCookies.indexOf(";", start);
     if (end == "-1") {
        end = allCookies.length;
     }
     var cookieValue = allCookies.substring(start,end);
     var a = cookieValue.split("&");
     for (var i=0; i< a.length; i++) {
        a[i] = a[i].split(":");
     }
     for (var i=0; i<a.length; i++) {
        this[a[i][0]] = unescape(a[i][1]);
     }
     return true;
}

function _CookieRemove() {
    var cookie ;
    cookie = this.$name + "=";
    if (this.$path) {
        cookie += "; path=" + this.$path;
    }
    if (this.$domain) {
        cookie += "; domain=" + this.$domain;
    }
    cookie += "; expires=Fri, 02-Jan-1970 00:00:00 GMT";
    this.$document.cookie = cookie;
}

new Cookie();
Cookie.prototype.store    = _CookieStore;
Cookie.prototype.load     = _CookieLoad;
Cookie.prototype.remove   = _CookieRemove;

/*
    Methods of the above included cookie class ...
    store:  stores the cookie
    load:   loads the cookie
    remove: deletes the cookie
*/
var cookieExpires   = 100000;
var cookieDomain    = null;
var cookieSecure    = null;
var infosPE = new Cookie(document, "CG_WEBTOOL_PE", cookieExpires, cookieDomain, cookieSecure);
var infosMVA = new Cookie(document, "CG_WEBTOOL_MVA", cookieExpires, cookieDomain, cookieSecure);
var infosMVM = new Cookie(document, "CG_WEBTOOL_MVM", cookieExpires, cookieDomain, cookieSecure);

var whichFormID = null;

function isSetCookie() {
    switch(whichFormID) {
        case 'PE':
            return infosPE.load();
            break;
        case 'MVA':
            return infosMVA.load();
            break;
        case 'MVM':
            return infosMVM.load();
            break;
        default:
            break;
    }
}

function setCookie(val) {
    switch (whichFormID) {
        case 'PE':
            infosPE.data = val;
            infosPE.store();
            break;
        case 'MVA':
            infosMVA.data = val;
            infosMVA.store();
            break;
        case 'MVM':
            infosMVM.data = val;
            infosMVM.store();
            break;
        default:
            break;
    }
}

function getCookie() {
    switch (whichFormID) {
        case 'PE':
            if (infosPE.load()) {
                return infosPE.data;
            }
            break;
        case 'MVA':
            if (infosMVA.load()) {
                return infosMVA.data;
            }
            break;
        case 'MVM':
            if (infosMVM.load()) {
                return infosMVM.data;
            }
            break;
        default:
            break;
    }
}

function storeData(){
    data = createData();
    setCookie(data);
}

function getData() {
    whichFormID = document.antragsformular.whichForm.value;
    if (isSetCookie()) {
        document.getElementById("storePrivatData").checked = true;
        data = getCookie();
        fillForm(data);
    } else {
        document.getElementById("storePrivatData").checked = false;
    }
}

function createData(){
    var data = "";
    switch (whichFormID) {
        case 'PE':
            data += document.getElementById("Firma").value;
            data += "~" + document.getElementById("Person").value;
            data += "~" + document.getElementById("Telefon").value;
            data += "~" + document.getElementById("Email").value;
            return data;
            break;
        case 'MVA':
        case 'MVM':
            data += document.getElementById("Firma").value;
            data += "~" + document.getElementById("Person").value;
            data += "~" + document.getElementById("Strasse").value;
            data += "~" + document.getElementById("Ort").value;
            data += "~" + document.getElementById("Telefon").value;
            data += "~" + document.getElementById("Email").value;
            return data;
            break;
    }
}

function fillForm(data){
    fields = data.split("~");
    switch (whichFormID) {
        case 'PE':
            document.getElementById("Firma").value = fields[0];
            document.getElementById("Person").value = fields[1];
            document.getElementById("Telefon").value = fields[2];
            document.getElementById("Email").value = fields[3];
            break;
        case 'MVA':
        case 'MVM':
            document.getElementById("Firma").value = fields[0];
            document.getElementById("Person").value = fields[1];
            document.getElementById("Strasse").value = fields[2];
            document.getElementById("Ort").value = fields[3];
            document.getElementById("Telefon").value = fields[4];
            document.getElementById("Email").value = fields[5];
            break;
    }
}

function deleteData(){
    if (isSetCookie()) {
        deleteCookie();
    }
}

function deleteCookie() {
    switch (whichFormID) {
        case 'PE':
            infosPE.remove();
            break;
        case 'MVA':
            infosMVA.remove();
            break;
        case 'MVM':
            infosMVM.remove();
            break;
        default:
            break;
    }
}
