var sLang; if (window.location.toString().indexOf('/sve/') != -1) sLang = "swe"; else if (window.location.toString().indexOf('/fin/') != -1) sLang = "fin"; if (sLang == undefined) sLang = "swe"; // whitespace characters var whitespace = " \t\n\r"; // decimal point character var decimalPointDelimiter = "," // Integers var digits = "0123456789"; function chkdate(objName, bAlert) { //var strDatestyle = "US"; //United States date style var strDatestyle = "EU"; //European date style var strDate; var strDateArray; var strDay; var strMonth; var strYear; var intday; var intMonth; var intYear; var booFound = false; var datefield = objName; var strSeparatorArray = new Array("-"," ","/","."); var intElementNr; var err = 0; var strMonthArray = new Array(12); strMonthArray[0] = "Jan"; strMonthArray[1] = "Feb"; strMonthArray[2] = "Mar"; strMonthArray[3] = "Apr"; strMonthArray[4] = "May"; strMonthArray[5] = "Jun"; strMonthArray[6] = "Jul"; strMonthArray[7] = "Aug"; strMonthArray[8] = "Sep"; strMonthArray[9] = "Oct"; strMonthArray[10] = "Nov"; strMonthArray[11] = "Dec"; strDate = datefield.value; if (strDate.length < 1) { if (bAlert && sLang == "swe") alert("Datumfältet är tomt"); else if (bAlert && sLang == "fin") alert("Päivämäärä on tyhjä"); else return false; } for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) { if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) { strDateArray = strDate.split(strSeparatorArray[intElementNr]); if (strDateArray.length != 3) { err = 1; if (bAlert && sLang == "swe") alert("Feldatum! - " + strDate); else if (bAlert && sLang == "fin") alert("Väärä päivämäärä - " + strDate); else return false; } else { strDay = strDateArray[0]; strMonth = strDateArray[1]; strYear = strDateArray[2]; } booFound = true; } } if (booFound == false) { if (strDate.length == 6) { strDay = strDate.substr(0, 2); strMonth = strDate.substr(2, 2); strYear = strDate.substr(4); if (strYear > 10) { strYear = "19" + strDate.substr(4); } else { strYear = "20" + strDate.substr(4); } strDate = strDay + "." + strMonth + "." + strYear; } else { if (strDate.length == 8) { strDay = strDate.substr(0, 2); strMonth = strDate.substr(2, 2); strYear = strDate.substr(4); strDate = strDay + "." + strMonth + "." + strYear; } else { if (bAlert && sLang == "swe") alert("Feldatum! - " + strDate); else if (bAlert && sLang == "fin") alert("Väärä päivämäärä! - " + strDate); else return false; } } } if (strYear.length == 2) { strYear = '20' + strYear; } // US style if (strDatestyle == "US") { strTemp = strDay; strDay = strMonth; strMonth = strTemp; } intday = parseInt(strDay, 10); if (isNaN(intday)) { err = 2; if (bAlert && sLang == "swe") alert("Feldatum! - " + strDate); else if (bAlert && sLang == "fin") alert("Väärä päivämäärä! - " + strDate); else return false; } intMonth = parseInt(strMonth, 10); if (isNaN(intMonth)) { for (i = 0;i<12;i++) { if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) { intMonth = i+1; strMonth = strMonthArray[i]; i = 12; } } if (isNaN(intMonth)) { err = 3; if (bAlert && sLang == "swe") alert("Feldatum! - " + strDate); else if (bAlert && sLang == "fin") alert("Väärä päivämäärä! - " + strDate); else return false; } } intYear = parseInt(strYear, 10); if (isNaN(intYear)) { err = 4; if (bAlert && sLang == "swe") alert("Feldatum! - " + strDate); else if (bAlert && sLang == "fin") alert("Väärä päivämäärä! - " + strDate); else return false; } if (intMonth>12 || intMonth<1) { err = 5; if (bAlert && sLang == "swe") alert("Feldatum! - " + strDate); else if (bAlert && sLang == "fin") alert("Väärä päivämäärä! - " + strDate); else return false; } if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) { err = 6; if (bAlert && sLang == "swe") alert("Feldatum! - " + strDate); else if (bAlert && sLang == "fin") alert("Väärä päivämäärä! - " + strDate); else return false; } if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) { err = 7; if (bAlert && sLang == "swe") alert("Feldatum! - " + strDate); else if (bAlert && sLang == "fin") alert("Väärä päivämäärä! - " + strDate); else return false; } if (intMonth == 2) { if (intday < 1) { err = 8; if (bAlert && sLang == "swe") alert("Feldatum! - " + strDate); else if (bAlert && sLang == "fin") alert("Väärä päivämäärä! - " + strDate); else return false; } if (LeapYear(intYear) == true) { if (intday > 29) { err = 9; if (bAlert && sLang == "swe") alert("Feldatum! - " + strDate); else if (bAlert && sLang == "fin") alert("Väärä päivämäärä! - " + strDate); else return false; } } else { if (intday > 28) { err = 10; if (bAlert && sLang == "swe") alert("Feldatum! - " + strDate); else if (bAlert && sLang == "fin") alert("Väärä päivämäärä! - " + strDate); else return false; } } } datefield.value = strDate; if (!bAlert) return true; } function LeapYear(intYear) { if (intYear % 100 == 0) { if (intYear % 400 == 0) { return true; } } else { if ((intYear % 4) == 0) { return true; } } return false; } function isEmail (s) { if (isEmpty(s)) return false; if (isWhitespace(s)) return false; var i = 1; var sLength = s.length; for (j = 0; j < sLength; j++) { if (s.charAt(j).toLowerCase() == "å" || s.charAt(j).toLowerCase() == "ä" || s.charAt(j).toLowerCase() == "ö") return false; } while ((i < sLength) && (s.charAt(i) != "@")) { i++ } if ((i >= sLength) || (s.charAt(i) != "@")) return false; else i += 2; while ((i < sLength) && (s.charAt(i) != ".")) { i++ } if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false; else return true; } function isWhitespace (s) { var i; bWhiteSpace = false; if (isEmpty(s)) return true; for (i = 0; i < s.length; i++) { var c = s.charAt(i); if (whitespace.indexOf(c) != -1) bWhiteSpace = true; } return bWhiteSpace; } function isInteger (s) { var i; s = s.replace(' ', ''); if (isEmpty(s)) return false; for (i = 0; i < s.length; i++) { var c = s.charAt(i); if (!isDigit(c)) return false; } return true; } function isFloat (s) { var i; var seenDecimalPoint = false; s = s.replace(' ', ''); if (isEmpty(s) ) return false; if (s == decimalPointDelimiter) return false; for (i = 0; i < s.length; i++) { var c = s.charAt(i); if ((c == decimalPointDelimiter) && !seenDecimalPoint) seenDecimalPoint = true; else if (!isDigit(c)) return false; } return true; } function isDigit (c) { return ((c >= "0") && (c <= "9")) } function isEmpty(s) { s = s.replace(' ', ''); return ((s == null) || (s.length == 0)) } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Added by Timo 24.03.2004 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function isBICode(sCode) { var vMultiplier = new Array(7, 9, 10, 5, 8, 4, 2); var iSum = 0; var iRest; var m_iControl; var iHyphenIndex = sCode.indexOf('-'); var iControl = sCode.charAt(iHyphenIndex + 1); var vCode = sCode.substring(0, iHyphenIndex); while (vCode.length < 7) vCode = "0" + vCode; for (var i = 0; i < vMultiplier.length; i++) iSum += vCode.charAt(i) * vMultiplier[i]; iRest = iSum % 11; if (iRest == 0) m_iControl = 0; else if (iRest > 1 && iRest < 11) m_iControl = 11 - iRest; return (iControl == m_iControl && iRest != 1 && iHyphenIndex > -1) ? true : false; } function toggleLang(whichLayer, fCheck) { if (fCheck == true) { var style2 = document.getElementById(whichLayer).style; style2.display = "block"; } else { var style2 = document.getElementById(whichLayer).style; style2.display = "none"; } } function toggleMotor(whichLayer, fValue) { if (fValue > 1000 && fValue < 2000 || fValue == 5700) { var style2 = document.getElementById(whichLayer).style; style2.display = "block"; } else { var style2 = document.getElementById(whichLayer).style; style2.display = "none"; } } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Created by Timo Sundström modified 24.03.2004 // Function for validating forms // Requirements: form-tag, input-fields inside a table-tag // Usage: // For validating that required fileds are not empty use "class='required'" inside the input-tag. // To validate that the value of a required field is of a certain type use "class='TYPE required'" inside the input-tag, // where TYPE is one of the following: email, phone, number, url or date. // To validate that the value of a non-required, non-empty field is of a certain type use "class='TYPE' inside the input-tag. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function checkForm(elForm) { var bOk = true; var vInput = elForm.getElementsByTagName("input"); for (var i = 0; i < vInput.length; i++) { if (vInput[i]["tagName"] && vInput[i]["className"] && (vInput[i].className.indexOf("required") != -1 || (vInput[i].className != "" && vInput[i].value != ""))) { switch (vInput[i].className.split(" ")[0]) { case "email": if (!isEmail(vInput[i].value)) { bOk = false; if (vInput[i].nextSibling == null || !(vInput[i].nextSibling.nodeName == "FONT" && vInput[i].nextSibling.hasChildNodes() && vInput[i].nextSibling.childNodes[0].nodeValue == "*")) { var fontEl = document.createElement("font"); fontEl.setAttribute("color", "red"); fontEl.appendChild( document.createTextNode("*") ); if (vInput[i].nextSibling == null) vInput[i].parentNode.appendChild(fontEl); else vInput[i].parentNode.insertBefore(fontEl, vInput[i].nextSibling); } } else if (vInput[i].nextSibling != null && vInput[i].nextSibling.hasChildNodes() && vInput[i].nextSibling.childNodes[0].nodeValue == "*") vInput[i].parentNode.removeChild( vInput[i].nextSibling ); break; case "phone": bCheck = true; if (!isEmpty(vInput[i].value) && vInput[i].value.length > 4 && vInput[i].value.length <= 20) { for (n = 0; n < vInput[i].value.length; n++) { if (vInput[i].value.charAt(n) != '+' && vInput[i].value.charAt(n) != '-' && !isWhitespace(vInput[i].value.charAt(n)) && !isDigit(vInput[i].value.charAt(n))) { bCheck = bOk = false; break; } } if (!bCheck) { if (vInput[i].nextSibling == null || !(vInput[i].nextSibling.nodeName == "FONT" && vInput[i].nextSibling.hasChildNodes() && vInput[i].nextSibling.childNodes[0].nodeValue == "*")) { var fontEl = document.createElement("font"); fontEl.setAttribute("color", "red"); fontEl.appendChild( document.createTextNode("*") ); if (vInput[i].nextSibling == null) vInput[i].parentNode.appendChild(fontEl); else vInput[i].parentNode.insertBefore(fontEl, vInput[i].nextSibling); } } else if (vInput[i].nextSibling != null && vInput[i].nextSibling.hasChildNodes() && vInput[i].nextSibling.childNodes[0].nodeValue == "*") vInput[i].parentNode.removeChild( vInput[i].nextSibling ); } else { bOk = false; if (vInput[i].nextSibling == null || !(vInput[i].nextSibling.nodeName == "FONT" && vInput[i].nextSibling.hasChildNodes() && vInput[i].nextSibling.childNodes[0].nodeValue == "*")) { var fontEl = document.createElement("font"); fontEl.setAttribute("color", "red"); fontEl.appendChild( document.createTextNode("*") ); if (vInput[i].nextSibling == null) vInput[i].parentNode.appendChild(fontEl); else vInput[i].parentNode.insertBefore(fontEl, vInput[i].nextSibling); } } break; case "number": if (!(isInteger(vInput[i].value) || isFloat(vInput[i].value))) { bOk = false; if (vInput[i].nextSibling == null || !(vInput[i].nextSibling.nodeName == "FONT" && vInput[i].nextSibling.hasChildNodes() && vInput[i].nextSibling.childNodes[0].nodeValue == "*")) { var fontEl = document.createElement("font"); fontEl.setAttribute("color", "red"); fontEl.appendChild( document.createTextNode("*") ); if (vInput[i].nextSibling == null) vInput[i].parentNode.appendChild(fontEl); else vInput[i].parentNode.insertBefore(fontEl, vInput[i].nextSibling); } } else if (vInput[i].nextSibling != null && vInput[i].nextSibling.hasChildNodes() && vInput[i].nextSibling.childNodes[0].nodeValue == "*") vInput[i].parentNode.removeChild( vInput[i].nextSibling ); break; case "postal": if (!(isInteger(vInput[i].value) || isFloat(vInput[i].value)) || vInput[i].value.length < 5) { bOk = false; if (vInput[i].nextSibling == null || !(vInput[i].nextSibling.nodeName == "FONT" && vInput[i].nextSibling.hasChildNodes() && vInput[i].nextSibling.childNodes[0].nodeValue == "*")) { var fontEl = document.createElement("font"); fontEl.setAttribute("color", "red"); fontEl.appendChild( document.createTextNode("*") ); if (vInput[i].nextSibling == null) vInput[i].parentNode.appendChild(fontEl); else vInput[i].parentNode.insertBefore(fontEl, vInput[i].nextSibling); } } else if (vInput[i].nextSibling != null && vInput[i].nextSibling.hasChildNodes() && vInput[i].nextSibling.childNodes[0].nodeValue == "*") vInput[i].parentNode.removeChild( vInput[i].nextSibling ); break; case "url": sUrl = vInput[i].value; if (isWhitespace(sUrl) || sUrl.lastIndexOf("http://") != 0) { bOk = false; if (vInput[i].nextSibling == null || !(vInput[i].nextSibling.nodeName == "FONT" && vInput[i].nextSibling.hasChildNodes() && vInput[i].nextSibling.childNodes[0].nodeValue == "*")) { var fontEl = document.createElement("font"); fontEl.setAttribute("color", "red"); fontEl.appendChild( document.createTextNode("*") ); if (vInput[i].nextSibling == null) vInput[i].parentNode.appendChild(fontEl); else vInput[i].parentNode.insertBefore(fontEl, vInput[i].nextSibling); } } else if (vInput[i].nextSibling != null && vInput[i].nextSibling.hasChildNodes() && vInput[i].nextSibling.childNodes[0].nodeValue == "*") vInput[i].parentNode.removeChild( vInput[i].nextSibling ); break; case "date": if (!chkdate(vInput[i], false)) { bOk = false; if (vInput[i].nextSibling == null || !(vInput[i].nextSibling.nodeName == "FONT" && vInput[i].nextSibling.hasChildNodes() && vInput[i].nextSibling.childNodes[0].nodeValue == "*")) { var fontEl = document.createElement("font"); fontEl.setAttribute("color", "red"); fontEl.appendChild( document.createTextNode("*") ); if (vInput[i].nextSibling == null) vInput[i].parentNode.appendChild(fontEl); else vInput[i].parentNode.insertBefore(fontEl, vInput[i].nextSibling); } } else if (vInput[i].nextSibling != null && vInput[i].nextSibling.hasChildNodes() && vInput[i].nextSibling.childNodes[0].nodeValue == "*") vInput[i].parentNode.removeChild( vInput[i].nextSibling ); break; case "bicode": if (!isBICode(vInput[i].value)) { bOk = false; if (vInput[i].nextSibling == null || !(vInput[i].nextSibling.nodeName == "FONT" && vInput[i].nextSibling.hasChildNodes() && vInput[i].nextSibling.childNodes[0].nodeValue == "*")) { var fontEl = document.createElement("font"); fontEl.setAttribute("color", "red"); fontEl.appendChild( document.createTextNode("*") ); if (vInput[i].nextSibling == null) vInput[i].parentNode.appendChild(fontEl); else vInput[i].parentNode.insertBefore(fontEl, vInput[i].nextSibling); } } else if (vInput[i].nextSibling != null && vInput[i].nextSibling.hasChildNodes() && vInput[i].nextSibling.childNodes[0].nodeValue == "*") vInput[i].parentNode.removeChild( vInput[i].nextSibling ); break; default: if (isEmpty(vInput[i].value)) { bOk = false; if (vInput[i].nextSibling == null || !(vInput[i].nextSibling.nodeName == "FONT" && vInput[i].nextSibling.hasChildNodes() && vInput[i].nextSibling.childNodes[0].nodeValue == "*")) { var fontEl = document.createElement("font"); fontEl.setAttribute("color", "red"); fontEl.appendChild( document.createTextNode("*") ); if (vInput[i].nextSibling == null) vInput[i].parentNode.appendChild(fontEl); else vInput[i].parentNode.insertBefore(fontEl, vInput[i].nextSibling); } } else if (vInput[i].nextSibling != null && vInput[i].nextSibling.hasChildNodes() && vInput[i].nextSibling.childNodes[0].nodeValue == "*") vInput[i].parentNode.removeChild( vInput[i].nextSibling ); break; } } } vSel = elForm.getElementsByTagName("select"); for (i = 0; i < vSel.length; i++) { if (vSel[i].className == "required" && vSel[i].value == "") { bOk = false; if (vSel[i].nextSibling == null || !(vSel[i].nextSibling.nodeName == "FONT" && vSel[i].nextSibling.hasChildNodes() && vSel[i].nextSibling.childNodes[0].nodeValue == "*")) { var fontEl = document.createElement("font"); fontEl.setAttribute("color", "red"); fontEl.appendChild( document.createTextNode("*") ); if (vSel[i].nextSibling == null) vSel[i].parentNode.appendChild(fontEl); else vSel[i].parentNode.insertBefore(fontEl, vSel[i].nextSibling); } } else if (vSel[i].nextSibling != null && vSel[i].nextSibling.hasChildNodes() && vSel[i].nextSibling.childNodes[0].nodeValue == "*") vSel[i].parentNode.removeChild( vSel[i].nextSibling ); } if (!bOk && sLang == "swe") alert("Du har inte fyllt i alla obligatoriska fält (*) korrekt!"); else if (!bOk && sLang == "fin") alert("Et ole täyttänyt kaikkia pakollisia kenttiä (*) oikein!"); return bOk; } function post(sForm, sAction, sNr) { if (sNr != "") document.forms[sForm].areacode.value = sNr; if (sAction != "") document.forms[sForm].action = sAction; document.forms[sForm].submit(); } function postForm(sForm, sUrl, bValidate) { document.forms[sForm].action = sUrl; if (bValidate) { if (checkForm(document.forms[sForm])) document.forms[sForm].submit(); } else document.forms[sForm].submit(); } function checkAll(elForm, bChecked) { el = elForm.getElementsByTagName("input"); for (i = 0; i < el.length; i++) el[i].checked = bChecked; } function checkFinnish() { bCheck = checkForm(document.publish_form); if (document.publish_form.publishFinnish.checked) document.publish_form.action = "fin.asp"; else document.publish_form.action = "promptPwd.asp#topofpage"; return bCheck; } function fillAbout(el) { vara = ""; marke = ""; id = el.value; if (navigator.appName.indexOf("Netscape") == 0) { if (el.parentNode.nextSibling.nextSibling.nextSibling.hasChildNodes()) vara = el.parentNode.nextSibling.nextSibling.childNodes[0].nodeValue; } else { if (el.parentNode.nextSibling.hasChildNodes()) vara = el.parentNode.nextSibling.childNodes[0].nodeValue; } if (document.mailform.companies.value != "") document.mailform.companies.value += ", " + id; else document.mailform.companies.value = id; if (document.mailform.about.value.length > 10) document.mailform.about.value += ", " + id; else document.mailform.about.value += id; } function checkClick(el) { var boxes = document.f1.svar; var boxesCount = boxes.length; var checkedCount = 0; var iValues = ""; for (i = 0; i < boxesCount; i++) { if (boxes[i].checked) { checkedCount++; iValues += boxes[i].value + ", "; } } document.mailform.companies.value = iValues.substring(0, iValues.length - 2); if (checkedCount > 5) { if (sLang == "swe") alert("Du kan bara välja fem (5) företag eller produkter åt gången!"); else if (sLang == "fin") alert("Voit vain valita viisi (5) yritystä tai tuotetta kerralla!"); el.checked = false; } }