/*var FONTSMALL = "x-small"; var FONTMEDIUM = "small"; var FONTLARGE = "medium";*/ var FONTSMALL = "100%"; var FONTMEDIUM = "120%"; var FONTLARGE = "140%"; function init() { // set up the font size on page load var fontSize = getCookie("TulliFontSize"); if (fontSize != null) { setFontSize(fontSize); } } onload = init; function increaseTextSize() { var oBody = document.getElementsByTagName("body")[0]; var oTop = document.getElementById("top"); var currSize = (oBody.style.fontSize != "") ? oBody.style.fontSize : FONTSMALL; var newSize; switch (currSize) { case FONTSMALL: newSize = FONTMEDIUM; oTop.className = "big"; break; default: newSize = FONTLARGE; oTop.className = "big"; break; } oBody.style.fontSize = newSize; setCookie("TulliFontSize", newSize, 365); } function decreaseTextSize() { var oBody = document.getElementsByTagName("body")[0]; var oTop = document.getElementById("top"); var currSize = (oBody.style.fontSize != "") ? oBody.style.fontSize : FONTSMALL; var newSize; switch (currSize) { case FONTLARGE: newSize = FONTMEDIUM; oTop.className = "big"; break; default: newSize = FONTSMALL; oTop.className = ""; break; } oBody.style.fontSize = newSize; setCookie("TulliFontSize", newSize, 365); } function setFontSize(size) { var oBody = document.getElementsByTagName("body")[0]; var oTop = document.getElementById("top"); oBody.style.fontSize = size; switch (size) { case FONTSMALL: oTop.className = ""; break; default: oTop.className = "big"; break; } } function UnCryptMailto(s) { var n=0; var r=""; for(var i=0; i < s.length; i++) { n=s.charCodeAt(i); if (n>=8364) {n = 128;} r += String.fromCharCode(n-(3)); } return r; } function linkTo_UnCryptMailto(s) { location.href=UnCryptMailto(s); } /* function hover(el, on, index) { var oTr, oTr2, oTd2, oAnchor; var oTd = (el != null) ? el.parentNode : null; if (oTd && oTd.tagName == "TD") { oTr = oTd.parentNode; oTr2 = getNextSibling(oTr); if (oTr2 == null) oTr2 = getPreviousSibling(oTr); if (oTr2 != null) { oTd2 = oTr2.cells[index]; oAnchor = getChildByTagName(oTd2, "A"); } } if (oTd2 && oAnchor) { el.className = oAnchor.className = oTd.className = oTd2.className = (on) ? "hover" : ""; } } */ function openWindow(url, w, h, feats) { if (h == undefined) { h = screen.availHeight - 200 } var l = (screen.width - w) / 2; var t = (screen.height - h) / 2; var newWin = window.open(url, 'tulli', feats + ',width=' + w + ',height=' + h + ',left=' + l + ',top=' + t); newWin.opener = self; newWin.focus(); } /* Cookie handling */ function getCookie(sName) { var aCookie = document.cookie.split("; "); for (var i = 0; i < aCookie.length; i++) { var aCrumb = aCookie[i].split("="); if (sName == aCrumb[0]) return unescape(aCrumb[1]); } return null; } function setCookie(sName, sValue, daysToExpire) { var date = new Date(); if (daysToExpire == undefined) daysToExpire = 365; date.setTime(date.getTime() + daysToExpire * 24 * 3600 * 1000); document.cookie = sName + "=" + escape(sValue) + "; expires=" + date.toGMTString() + ";"; } /* DOM Helpers * / function getPreviousSibling(node) { var sibling = node.previousSibling; while (sibling) { if (sibling.nodeType == 1) { return sibling; } sibling = sibling.previousSibling; } return null; } function getNextSibling(node) { var sibling = node.nextSibling; while (sibling) { if (sibling.nodeType == 1) { return sibling; } sibling = sibling.nextSibling; } return null; } function getChildByTagName(node, tag) { var len = (node && node.childNodes) ? node.childNodes.length : 0; var child; for (var i = 0; i < len; i++) { child = node.childNodes[i]; if (child.tagName == tag) return child; } return null; } /* */ // ---------------------------------------------------------------------- // Javascript form validation routines. // Author: Stephen Poley // // Simple routines to quickly pick up obvious typos. // All validation routines return true if executed by an older browser: // in this case validation must be left to the server. // // Update Jun 2005: discovered that reason IE wasn't setting focus was // due to an IE timing bug. Added 0.1 sec delay to fix. // // Update Oct 2005: minor tidy-up: unused parameter removed // // Update Jun 2006: minor improvements to variable names and layout // ---------------------------------------------------------------------- var nbsp = 160; // non-breaking space char var node_text = 3; // DOM text node-type var emptyString = /^\s*$/ ; var global_valfield; // retain valfield for timer thread // -------------------------------------------- // trim // Trim leading/trailing whitespace off string // -------------------------------------------- function trim(str) { return str.replace(/^\s+|\s+$/g, ''); } // -------------------------------------------- // setfocus // Delayed focus setting to get around IE bug // -------------------------------------------- function setFocusDelayed() { global_valfield.focus(); } function setfocus(valfield) { // save valfield in global variable so value retained when routine exits global_valfield = valfield; setTimeout( 'setFocusDelayed()', 100 ); } // -------------------------------------------- // msg // Display warn/error message in HTML element. // commonCheck routine must have previously been called // -------------------------------------------- function msg(fld, // id of element to display message in msgtype, // class to give element ("warn" or "error") message) // string to display { // setting an empty string can give problems if later set to a // non-empty string, so ensure a space present. (For Mozilla and Opera one could // simply use a space, but IE demands something more, like a non-breaking space.) var dispmessage; if (emptyString.test(message)) dispmessage = String.fromCharCode(nbsp); else dispmessage = message; var elem = document.getElementById(fld); elem.firstChild.nodeValue = dispmessage; elem.className = msgtype; // set the CSS class to adjust appearance of message } // -------------------------------------------- // commonCheck // Common code for all validation routines to: // (a) check for older / less-equipped browsers // (b) check if empty fields are required // Returns true (validation passed), // false (validation failed) or // proceed (don't know yet) // -------------------------------------------- var proceed = 2; function commonCheck (valfield, // element to be validated infofield, // id of element to receive info/error msg required) // true if required { if (!document.getElementById) return true; // not available on this browser - leave validation to the server var elem = document.getElementById(infofield); if (!elem.firstChild) return true; // not available on this browser if (elem.firstChild.nodeType != node_text) return true; // infofield is wrong type of node if (emptyString.test(valfield.value)) { if (required) { msg (infofield, "error", "Tieto puuttuu."); setfocus(valfield); return false; } else { msg (infofield, "warn", ""); // OK return true; } } return proceed; } // -------------------------------------------- // validatePresent // Validate if something has been entered // Returns true if so // -------------------------------------------- function validatePresent(valfield, // element to be validated infofield ) // id of element to receive info/error msg { var stat = commonCheck (valfield, infofield, true); if (stat != proceed) return stat; msg (infofield, "warn", ""); return true; } // -------------------------------------------- // validateEmail // Validate if e-mail address // Returns true if so (and also if could not be executed because of old browser) // -------------------------------------------- function validateEmail (valfield, // element to be validated infofield, // id of element to receive info/error msg required) // true if required { var stat = commonCheck (valfield, infofield, required); if (stat != proceed) return stat; var tfld = trim(valfield.value); // value of field with whitespace trimmed off var email = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ; if (!email.test(tfld)) { msg (infofield, "error", tfld +" ei ole oikeaa muotoa oleva sähköpostiosoite."); setfocus(valfield); return false; } var email2 = /^[A-Za-z][\w.-]+@\w[\w.-]+\.[\w.-]*[A-Za-z][A-Za-z]$/ ; if (!email2.test(tfld)) msg (infofield, "warn", "Epätavallinen sähköpostiosoite - tarkista oikeellisuus"); else msg (infofield, "warn", ""); return true; } // -------------------------------------------- // validateTelnr // Validate telephone number // Returns true if so (and also if could not be executed because of old browser) // Permits spaces, hyphens, brackets and leading + // -------------------------------------------- function validateTelnr (valfield, // element to be validated infofield, // id of element to receive info/error msg required) // true if required { var stat = commonCheck (valfield, infofield, required); if (stat != proceed) return stat; var tfld = trim(valfield.value); // value of field with whitespace trimmed off var telnr = /^\+?[0-9 ()-]+[0-9]$/ ; if (!telnr.test(tfld)) { msg (infofield, "error", "ERROR: not a valid telephone number. Characters permitted are digits, space ()- and leading +"); setfocus(valfield); return false; } var numdigits = 0; for (var j=0; j='0' && tfld.charAt(j)<='9') numdigits++; if (numdigits<6) { msg (infofield, "error", "ERROR: " + numdigits + " digits - too short"); setfocus(valfield); return false; } if (numdigits>14) msg (infofield, "warn", numdigits + " digits - check if correct"); else { if (numdigits<10) msg (infofield, "warn", "Only " + numdigits + " digits - check if correct"); else msg (infofield, "warn", ""); } return true; } // -------------------------------------------- // validateAge // Validate person's age // Returns true if OK // -------------------------------------------- function validateAge (valfield, // element to be validated infofield, // id of element to receive info/error msg required) // true if required { var stat = commonCheck (valfield, infofield, required); if (stat != proceed) return stat; var tfld = trim(valfield.value); var ageRE = /^[0-9]{1,3}$/ if (!ageRE.test(tfld)) { msg (infofield, "error", "ERROR: not a valid age"); setfocus(valfield); return false; } if (tfld>=200) { msg (infofield, "error", "ERROR: not a valid age"); setfocus(valfield); return false; } if (tfld>110) msg (infofield, "warn", "Older than 110: check correct"); else { if (tfld<7) msg (infofield, "warn", "Bit young for this, aren't you?"); else msg (infofield, "warn", ""); } return true; }