// Form Functions v1.0 // documentation: http://www.dithered.com/javascript/form/index.html // license: http://creativecommons.org/licenses/by/1.0/ // code by Chris Nott (chris[at]dithered[dot]com) // Convert a list of strings into a 'get' query string function makeSearchString() { var args = makeSearchString.arguments; var searchString = "?"; var pair; for (var i = 0; i < args.length; i++) { pair = escape(args[i++]) + "="; pair += escape(args[i]); searchString += pair + "&"; } return searchString.substring(0, searchString.length - 1); } // Create a 'get' query string with the data from a given form function gatherFormData(form) { var formData = ''; var element; // For each form element, extract the name and value for (var i = 0; i < form.elements.length; i++) { element = form.elements[i]; if (element.type == "text" || element.type == "password" || element.type == "textarea") formData += "'" + element.name + "', '" + escape(element.value) + "', "; else if (element.type.indexOf("select") != -1) { for (var j = 0; j < element.options.length; j++) { if (element.options[j].selected == true) formData += "'" + element.name + "', '" + element.options[element.selectedIndex].value + "', "; } } else if (element.type == "checkbox" && element.checked) formData += "'" + element.name + "', '" + element.value + "', "; else if (element.type == "radio" && element.checked == true) formData += "'" + element.name + "', '" + element.value + "', "; } // Feed strings to makeSearchString() to do 'get' query string conversion return (eval("makeSearchString(" + formData.substring(0, formData.length - 2) + ")")); } // Clear a form so that default initial values are erased function clearForm(form) { var element; for (var i = 0; i < form.elements.length; i++) { element = form.elements[i]; if (element.type == "text" || element.type == "password" || element.type == "textarea") element.value = ''; else if (element.type.indexOf("select") != -1) element.selectedIndex = -1; else if (element.type == "checkbox" && element.checked) element.checked = false; else if (element.type == "radio" && element.checked == true) element.checked = false; } } // Build an associative array with all name and value pairs in a 'get' query string function getSearchAsArray() { var searchQuery = new Array; var pair; var temp; var search = location.search; // replace all '+'s with ' 's because unescape() doesn't do it search = search.replace(/\+/g, ' '); // for each pair, separate, unescape and place into the associate array var split = 1; while (split > 0) { split = search.lastIndexOf('&'); if (split == -1) split = 0; pair = search.substring(split + 1, search.length); // multiple select values should be placed in an array if (searchQuery[unescape(pair.substring(0, pair.indexOf('=')))] != null) { temp = searchQuery[unescape(pair.substring(0, pair.indexOf('=')))]; searchQuery[unescape(pair.substring(0, pair.indexOf('=')))] = new Array(temp, unescape(pair.substring(pair.indexOf('=') + 1))); } // all other form elements have a one-to-one name and value relationship else searchQuery[unescape(pair.substring(0, pair.indexOf('=')))] = unescape(pair.substring(pair.indexOf('=') + 1)); search = search.substring(0, split); } return searchQuery; } var query = getSearchAsArray();