var req_fields = new Array('username','password','first_name','last_name','address','zip','city'); req_fields.push('last_ad'); var reg_fields = new Array('username','password','company','orgnr','first_name','last_name','address','address_more','zip','city','country','phone','mobile','fax'); reg_fields.push('last_ad'); var httpClient = null; var commentClient = null; var forumClient = null; var mainarea = new String('mainarea/'); var webpage = new String('webpages/'); var expert = new String('expert/'); var messages = new String('messages/'); var functions = new String('functions/'); var theEnchilada = new String(); var part_blowup_pic = new Array(); var num_part_pics = new Number(4); var errorMessage = new String("Felaktigheter i formuläret!\n\nVänligen kontrollera fältet i formuläret som är röd markerad!\n\n"); var oldBrowser = new String("Vänligen kontrollera din webläsare, den verkar vara av en tidigare version än vad som krävs av BåtSkroten.\nFör mer information läs våran FAQ"); var emptyMessage = new String("Vänligen skriv ett medelande!"); var serverError = new String("Ett fel har uppstått på servern! Webmaster är informerad."); // Dummy function, used to ensure we have a valid object for onclick function do_nothing() { return(true); } function advanced_search () { // Silly IE var what = new String(document.forms['advancedsearch'].elements['what'].value); var category = new Number(parseInt(document.forms['advancedsearch'].elements['category'].value)); what = what.replace(/^\s+|\s+$/g, ''); document.getElementById('what').value = what; if((what.length < 2) && (category < 1)) { alert("vänligen välj en kategori att visa eller ange något att söka efter!"); return(false); } return(true); } function forum_post_validation() { var what = new String(document.getElementById('what').value); if(what == 'new') { var subject = new String(document.getElementById('subject').value); subject = subject.replace(/^\s+|\s+$/g, ''); document.getElementById('subject').value = subject; if(subject.length < 2) { document.getElementById('subject').style.backgroundColor = "#FF0000"; document.getElementById('subject').focus(); alert(errorMessage); return(false); } } var message = new String(document.getElementById('message').value); message = message.replace(/^\s+|\s+$/g, ''); document.getElementById('message').value = message; if(message.length < 2) { document.getElementById('message').style.backgroundColor = "#FF0000"; document.getElementById('message').focus(); alert('Vänligen skriv ett inlägg'); return(false); } if(!test_whatever()) { return(false); } return(true); } // Fetch the images attached to the post function view_forum_attachment(id) { if(document.getElementById('forum_attachment')) { var box = document.getElementById('forum_attachment'); var ypos; var xpos; var scrolledY; var httpClient = null; // Ensure that all the pics are set to "blank" before proceeding // A thread can have multiple posts with attachements document.getElementById('forum_blowup').src = "/logos/tom.gif"; document.getElementById('one').src = "/logos/tom.gif"; document.getElementById('two').src = "/logos/tom.gif"; document.getElementById('three').src = "/logos/tom.gif"; document.getElementById('four').src = "/logos/tom.gif"; document.getElementById('one').setAttribute("onclick", "return do_nothing()"); document.getElementById('two').setAttribute("onclick", "return do_nothing()"); document.getElementById('three').setAttribute("onclick", "return do_nothing()"); document.getElementById('four').setAttribute("onclick", "return do_nothing()"); if(self.pageYOffset) { scrolledY = self.pageYOffset; } else if(document.documentElement && document.documentElement.scrollTop) { scrolledY = document.documentElement.scrollTop; } else if(document.body) { scrolledY = document.body.scrollTop; } // The center of the browser window xpos = Math.round((document.body.clientWidth / 2) - (box.offsetWidth / 2)); // 50px down from the top ypos = Math.round(scrolledY + 50); box.style.top = ypos + "px"; box.style.left = xpos + "px"; box.style.visibility = "visible"; httpClient = mk_browser(); if(httpClient != null) { document.body.style.cursor = 'wait'; httpClient.onreadystatechange = forum_view_attachment_callback; httpClient.open('GET', functions + 'grab_thread_attachments.php?id=' + id, true); httpClient.send(null); } } return false; } // Callback for the forum function forum_view_attachment_callback() { if(httpClient.readyState == 4) { if(httpClient.status == 200) { // We cannot expect that a browser can eval a json object.. Parse the raw output document.body.style.cursor = 'default'; var tmp = new String(); var t = new String(); var b = new String(); var o = new String(); var change_pic = new String("document.getElementById('forum_blowup').src="); var lines = new Array(); var files = new Array(); var thumbs = new Array('one','two','three','four'); var i = new Number(0); tmp = httpClient.responseText; lines = tmp.split("\n"); for(i = 0; i < lines.length; i++) { tmp = lines[i]; if(tmp.length > 5) { files = tmp.split('#'); b = files[0]; t = files[1]; o = thumbs[i] if(i == 0) { document.getElementById('forum_blowup').src = b; } // Populate the thumb src and the onclick document.getElementById('' + o).src = t; document.getElementById('' + o).setAttribute("onclick", change_pic + "'" + b + "'"); } } // alert(tmp); } else { // Catch the error document.body.style.cursor = 'default'; alert("Ett fel uppstod på servern!"); } } } function test_login_form() { var username = new String(document.getElementById('login_username').value); var password = new String(document.getElementById('login_password').value); username = username.replace(/\s/g, ''); password = password.replace(/\s/g, ''); document.getElementById('login_username').value = username; document.getElementById('login_password').value = password; if(!username) { document.getElementById('login_username').style.backgroundColor = "#FF0000"; document.getElementById('login_username').focus(); alert(errorMessage); return false; } if(!validateEmail(username)) { document.getElementById('login_username').style.backgroundColor = "#FF0000"; document.getElementById('login_username').focus(); alert(errorMessage); return false; } if(!password) { document.getElementById('login_password').style.backgroundColor = "#FF0000"; document.getElementById('login_password').focus(); alert(errorMessage); return false; } return true; } // Form verification for scrap request function send_scrap_request() { var tmp = new String(); var fields = new Array('brand', 'length', 'width', 'weight', 'description', 'name', 'phone', 'email', 'location'); var i = new Number(); // Image password if(!test_whatever()) { return false; } // Trim the fields for(i = 0; i <= (fields.length - 1); i++) { tmp = document.getElementById(fields[i]).value; tmp = tmp.replace(/^\s+|\s+$/g, ''); document.getElementById(fields[i]).value = tmp; } // Ensure they do not submit blank forms if(!document.getElementById('name').value) { document.getElementById('name').style.backgroundColor = "#FF0000"; document.getElementById('name').focus(); alert(errorMessage); return false; } if((!document.getElementById('phone').value) && (!document.getElementById('email').value)) { document.getElementById('phone').style.backgroundColor = "#FF0000"; document.getElementById('phone').focus(); alert(errorMessage); return false; } if(!document.getElementById('location').value) { document.getElementById('location').style.backgroundColor = "#FF0000"; document.getElementById('location').focus(); alert('Vänligen ange vart skrovet finns att avhämtas!'); return false; } return(true); } // Returns the checked item in a radio button list function getCheckedValue(radioObj) { if(!radioObj) return ""; var radioLength = radioObj.length; if(radioLength == undefined) if(radioObj.checked) return radioObj.value; else return ""; for(var i = 0; i < radioLength; i++) { if(radioObj[i].checked) { return radioObj[i].value; } } return ""; } // Create the http request object function mk_browser() { httpClient = null; // For now we must test for IE5 and IE6 if(window.XMLHttpRequest) { httpClient = new XMLHttpRequest(); } else if(window.ActiveXObject) { httpClient = new ActiveXObject("Microsoft.XMLHTTP"); } if(httpClient != null) { return(httpClient); } alert(oldBrowser); return(httpClient); } function viewcomments() { if(document.getElementById('comments').style.visibility == "hidden") { document.getElementById('comments').style.visibility = "visible"; document.getElementById('comments').style.display = 'inline'; } else { document.getElementById('comments').style.visibility = "hidden"; document.getElementById('comments').style.display = "none"; } return true; } function advanced_search_part() { var what = new String(document.getElementById('search_string').value); var category = new String(document.getElementById('category').value); // Trim the search string. Search strategy is selected inside what = what.replace(/^\s+|\s+$/g,''); what = what.replace(/\s+/g,' '); document.getElementById('search_string').value = what; if(!what) { alert('Vänligen ange något eller några sökord'); return false; } theEnchilada = 'what=' + encodeURIComponent(what); theEnchilada += '&category=' + encodeURIComponent(category); httpClient = mk_browser(); if(httpClient != null) { document.body.style.cursor = 'wait'; httpClient.open('GET', mainarea + 'nm_search.php?' + theEnchilada, true); httpClient.onreadystatechange = load_mainpage_callback; httpClient.send(null); } return false; } function step_one_lost_password() { var tmp = new String(); theEnchilada = ''; tmp = document.getElementById('last_ad').value; tmp = tmp.replace(/\s/g,''); document.getElementById('last_ad').value = tmp; tmp = document.getElementById('the_username').value; tmp = tmp.replace(/\s/g,''); document.getElementById('the_username').value = tmp; if(!document.getElementById('the_username').value) { document.getElementById('the_username').style.backgroundColor = "#FF0000"; document.getElementById('the_username').focus(); alert(errorMessage); return false; } if(!validateEmail(document.getElementById('the_username').value)) { document.getElementById('the_username').style.backgroundColor = "#FF0000"; document.getElementById('the_username').focus(); alert('E-Post adressen är felaktig, vänligen korrigera!'); return false; } if(!document.getElementById('last_ad').value) { document.getElementById('last_ad').style.backgroundColor = "#FF0000"; document.getElementById('last_ad').focus(); alert(errorMessage); return false; } theEnchilada = 'last_ad' + '=' + document.getElementById('last_ad').value + '&'; theEnchilada += 'username' + '=' + document.getElementById('the_username').value + '&'; httpClient = mk_browser(); if(httpClient != null) { document.body.style.cursor = 'wait'; httpClient.open('GET', mainarea + 'nm_recoverpassword.php?' + theEnchilada, true); httpClient.onreadystatechange = load_mainpage_callback; httpClient.send(null); } return false; } function not_member() { alert("Vänligen logga in!\n\nDu måste vara inloggad för att använda den här funktionen"); return(false); } function browse_category(category) { window.location.href = 'nm_advancedsearch.php?by_select_list=1&category=' + category; return true; } function test_whatever() { var kvack = new String(document.getElementById('last_ad').value); kvack = kvack.replace(/\s/g, ''); document.getElementById('last_ad').value = kvack; if(!kvack) { document.getElementById('last_ad').style.backgroundColor = "#FF0000"; document.getElementById('last_ad').focus(); alert(errorMessage); return false; } return true; } // Update user password function new_password() { var tmp = new String(); if(!test_whatever()) { return false; } tmp = document.getElementById('password').value; tmp = tmp.replace(/\s/g,''); document.getElementById('password').value = tmp; if(!document.getElementById('password').value) { document.getElementById('password').style.backgroundColor = "#FF0000"; document.getElementById('password').focus(); alert(errorMessage); return false; } if(tmp.length < 7) { document.getElementById('password').style.backgroundColor = "#FF0000"; document.getElementById('password').focus(); alert("Vänligen välj ett lösenord som är minst 8 tecken"); return false; } tmp = document.getElementById('password_confirm').value; tmp = tmp.replace(/\s/g,''); document.getElementById('password_confirm').value = tmp; if(!document.getElementById('password_confirm').value) { document.getElementById('password_confirm').style.backgroundColor = "#FF0000"; document.getElementById('password_confirm').focus(); alert(errorMessage); return false; } if(document.getElementById('password').value != document.getElementById('password_confirm').value) { document.getElementById('password').value = ''; document.getElementById('password_confirm').value = ''; document.getElementById('password').style.backgroundColor = "#FF0000"; document.getElementById('password').focus(); alert('Vänligen skriv in lösenordet igen, dom var inte identiska!'); return false; } tmp = document.getElementById('username').value; tmp = tmp.replace(/\s/g,''); document.getElementById('username').value = tmp; if(!document.getElementById('username').value) { alert(errorMessage); return false; } return true; } // First step to recover the password function recover_password() { var username = new String(document.getElementById('the_username').value); username.replace(/\s/g, ''); document.getElementById('the_username').value = username; // We must have a username to work on if(!username) { document.getElementById('the_username').style.backgroundColor = "#FF0000"; document.getElementById('the_username').focus(); alert(errorMessage); return false; } if(!validateEmail(username)) { document.getElementById('the_username').style.backgroundColor = "#FF0000"; document.getElementById('the_username').focus(); alert(errorMessage); return false; } // Test the image field for content if(!test_whatever()) { return false; } return true; } // Basic test that there is content in the user form function validate_userform() { var i = new Number(0); // Verify that there is content in the req fields for(i = 0; i < req_fields.length; i++) { if(document.getElementById(req_fields[i])) { if(!document.getElementById(req_fields[i]).value) { document.getElementById(req_fields[i]).style.backgroundColor = "#FF0000"; document.getElementById(req_fields[i]).focus(); alert(errorMessage); return false; } } } return true; } // New member function signup_new_member() { var temp_str = new String(); // Format the form fields for(i = 0; i < reg_fields.length; i++) { // Clean the leading and trailing whitespaces from the input temp_str = document.getElementById(reg_fields[i]).value; temp_str = temp_str.replace(/^\s+|\s+$/g,''); document.getElementById(reg_fields[i]).value = temp_str; } // Username and Password my be white washed temp_str = document.getElementById('username').value; temp_str = temp_str.replace(/\s/g,''); document.getElementById('username').value = temp_str; temp_str = document.getElementById('password').value; temp_str = temp_str.replace(/\s/g,''); document.getElementById('password').value = temp_str; if(!test_whatever()) { return false; } // Check the reqired fields if(!validate_userform()) { return false; } if(!document.getElementById('approve').checked) { document.getElementById('membership_rules').style.backgroundColor = "#FF0000"; document.getElementById('membership_rules').focus(); alert('För att bli medlem på båtskroten.se måste du godkänna villkoren!'); return(false); } // Test that it is a valid username if(!validateEmail(document.getElementById('username').value)) { document.getElementById('username').style.backgroundColor = "#FF0000"; document.getElementById('username').focus(); alert('Vänligen kontrollera ditt användarnamn!'); return false; } // Test that the password is of minimal length if(temp_str.length < 7) { document.getElementById('password').style.backgroundColor = "#FF0000"; document.getElementById('password').focus(); alert("Vänligen kontrollera ditt lösenord - det är för enkelt!\nVälj ett som är minst 7 tecken"); return false; } return true; } // Simple test for positive integer function isNumerical(form_value) { var testNum = new RegExp(/(^\d+$)/); return testNum.test(form_value); } // Simple test on format function validateEmail(emailAddress) { var emailRegexp = new RegExp(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/); return emailRegexp.test(emailAddress); }