function $(id) { return document.getElementById(id); } function $c(className) { return getElementsByClassName(className); } function validate(what) { var regexes = new Array(); var checkboxes = new Array(); regexes["registration_username"] = /^[a-zA-Z0-9_. -]{2,}$/; // just basic chars, at least 2 regexes["registration_display_name"] = regexes["contact_name"] = regexes["comments_anonymous_name"] = regexes["registration_address"] = regexes["registration_email"] = regexes["contact_email"] = regexes["comments_anonymous_email"] = regexes["contact_message"] = /^(.|\n){2,}$/; // newlines accepted regexes["registration_about"] = /(^$)|(^(.|\n){2,}$)/; // blank or 2+, newlines accepted regexes["registration_skype"] = regexes["registration_facebook"] = /(^$)|(^.{2,}$)/; // blank or 2+ regexes["registration_birthyear"] = /(^$)|(^\d{4}$)/; // 4 digits or nothing regexes["registration_icq"] = /(^$)|(^\d{6,}$)/; // 6 or more digits or nothing var validity_images = new Array(); validity_images["valid"] = "https://www.ddr.cz/graphics/valid.png"; validity_images["invalid"] = "https://www.ddr.cz/graphics/invalid.png"; var value = document.getElementById(what).value; var img = document.getElementById(what + "_img"); if(regexes[what].exec(value) || (what in checkboxes && !checkboxes[what].checked)) { if(img.src != validity_images["valid"]) img.src = validity_images["valid"]; return true; } else { if(img.src != validity_images["invalid"]) img.src = validity_images["invalid"]; return false; } } function validate_password(edit, prefix) { var valid, identic; var password = $(prefix + "password").value; var password_img = $(prefix + "password_img"); var confirmation = $(prefix + "password_confirmation").value; var confirmation_img = $(prefix + "password_confirmation_img"); var regex = /^.{5,32}$/; var validity_images = new Array(); validity_images["valid"] = "https://www.ddr.cz/graphics/valid.png"; validity_images["invalid"] = "https://www.ddr.cz/graphics/invalid.png"; if(regex.exec(password) || (password == "" && confirmation == "" && edit == true)) { if(password_img.src != validity_images["valid"]) password_img.src = validity_images["valid"]; valid = true; } else { if(password_img.src != validity_images["invalid"]) password_img.src = validity_images["invalid"]; valid = false; } if(password == confirmation) { if(confirmation_img.src != validity_images["valid"]) confirmation_img.src = validity_images["valid"]; identic = true; } else { if(confirmation_img.src != validity_images["invalid"]) confirmation_img.src = validity_images["invalid"]; identic = false; } if(valid && identic) return(true); else return(false); } function validate_all(form, edit) { var errors = new Array(); if(form == 'registration') { if(!validate('registration_username')) errors.push("Nesprávně zadané uživatelské jméno (může obsahovat jen nediakritizovaná písmena latinky a musí být alespoň dva znaky dlouhé)."); if(!validate_password(edit, 'registration_')) errors.push("Nesprávně zadané heslo (musí být 5 až 32 znaků dlouhé a musí být napsáno do obou políček úplně stejně)."); if(!validate('registration_email')) errors.push("Nesprávně zadaný email (musí odpovídat specifikaci)."); if(!validate('registration_display_name')) errors.push("Nesprávně zadané zobrazované jméno (musí být alespoň dva znaky dlouhé)."); if(!validate('registration_birthyear')) errors.push("Nesprávně zadaný rok narození (musí se sestávat ze čtyř číslic nebo zůstat prázdný)."); if(!validate('registration_icq')) errors.push("Nesprávně zadané ICQ číslo (musí se sestávat ze šesti nebo více číslic nebo zůstat prázdné)."); if(!validate('registration_skype')) errors.push("Nesprávně zadané Skype jméno (musí se sestávat alespoň ze dvou znaků nebo zůstat prázdné)."); if(!validate('registration_facebook')) errors.push("Nesprávně zadaná Facebook přezdívka (musí se sestávat alespoň ze dvou znaků nebo zůstat prázdná)."); if(!validate('registration_about')) errors.push("Nesprávně zadaný popis „O mně“ (musí se sestávat alespoň ze dvou znaků nebo zůstat prázdný)."); } else if(form == 'contact') { if(!validate('contact_name')) errors.push("Nesprávně zadané jméno (musí být alespoň dva znaky dlouhé)."); if(!validate('contact_email')) errors.push("Nesprávně zadaný email (musí odpovídat specifikaci)."); if(!validate('contact_message')) errors.push("Nesprávně zadaná zpráva (musí být alespoň dva znaky dlouhá)."); } else if(form == 'login') { if(!validate_password(false, 'login_')) errors.push("Nesprávně zadané heslo (musí být 5 až 32 znaků dlouhé a musí být napsáno do obou políček úplně stejně)."); } if(errors.length) { alert(errors.join("\n")); return false; } else return true; } function in_array (needle, haystack, argStrict) { // http://kevin.vanzonneveld.net // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // + improved by: vlado houba // * example 1: in_array('van', ['Kevin', 'van', 'Zonneveld']); // * returns 1: true // * example 2: in_array('vlado', {0: 'Kevin', vlado: 'van', 1: 'Zonneveld'}); // * returns 2: false // * example 3: in_array(1, ['1', '2', '3']); // * returns 3: true // * example 3: in_array(1, ['1', '2', '3'], false); // * returns 3: true // * example 4: in_array(1, ['1', '2', '3'], true); // * returns 4: false var key = '', strict = !!argStrict; if (strict) { for (key in haystack) { if (haystack[key] === needle) { return true; } } } else { for (key in haystack) { if (haystack[key] == needle) { return true; } } } return false; } function nextElementSibling(e) { var defined = false; while(e.nextSibling !== null && !defined) { e = e.nextSibling; if(e.tagName !== undefined) defined = true; } if(defined) return(e) else return(null); } function menuover(li, active) { while(nextElementSibling(li) !== null && in_array('submenu', nextElementSibling(li).className.split(' '))) { nextElementSibling(li).style.visibility = (active ? 'visible' : 'hidden'); // + ' !important'; li = nextElementSibling(li); } }