/* =================================================== Help me choose Javascript - Dyson Version: v2.1 Author: James Taylor - 07/12/2007 /* =================================================*/ function initForm() { // attaches all the events to the form elements if($("frmHelpMeChoose") && browser.indexOf('safari1') == -1) { checkFormState(); var aElm = $$("#frmHelpMeChoose fieldset input"); // get all form input elements var aSel = $$("#frmHelpMeChoose fieldset select"); // get select elements var event; for(var i=0; i < aElm.length; i++) { if($(aElm[i]).hasClassName("rad")) { event="click" } else { event="change" }; // radio buttons use onclick Event.observe ( aElm[i], event, doFilter ); // set doFilter for event; if($(aElm[i]).hasClassName("rad") || $(aElm[i]).hasClassName("chk")) { if(browser=="ie7"||browser=="ie6") Event.observe ( aElm[i], "click", function(){this.parent.focus()}); // hack for ie's radio buttons bug } } for(var i=0; i < aSel.length; i++) { Event.observe ( aSel[i], "change", doFilter ); // set doFilter for event; } var newReset=document.createElement("input"); newReset.type='image'; newReset.id="reset"; newReset.value="Reset"; newReset.className="reset"; newReset.name="reset"; newReset.src="/images/btnReset.png"; newReset.alt="Reset"; $("frmControls").innerHTML=""; $("frmControls").appendChild(newReset); Event.observe ( $("reset"), "click", resetForm ); } } function checkFormState() { // Checks the status of each form and hightlights selected labels var aElm = $$("#frmHelpMeChoose fieldset input"); for(var i=0; i < aElm.length; i++) { if(aElm[i].hasClassName("rad")) { if(aElm[i].checked) { $(aElm[i].parentNode.parentNode).addClassName("on"); //reference span as grandparent as rad is wrapped in label } else { $(aElm[i].parentNode.parentNode).removeClassName("on"); } } else { if(aElm[i].checked) { $(aElm[i].parentNode).addClassName("on"); //reference span as parent as Check is not wrapped in label } else { $(aElm[i].parentNode).removeClassName("on"); } } } } var data function doFilter() { data = $("frmHelpMeChoose").serialize(); // gets all forms data var splitData = data.split("&reset") // strip off reset data = splitData[0]; checkFormState(); // update form toggleForm(); // disable form toggleIE6("none"); new Effect.Fade($("resultsList"), {duration: 0.8, afterFinish: doCall}); // fade out and do ajax call } function doCall() { // ajax call to return results var url = "helpmechoose_ajax.asp" var myAjax = new Ajax.Updater ("resultsHolder", url, {parameters: data, onComplete: endCall}); // fade in when done } function endCall() { // fades in search results if($("resultsList")) { $("resultsList").style.display='none'; new Effect.Appear($("resultsList"), {duration: 0.8, afterFinish: toggleIE6}); } doHMCTracking(); } function toggleIE6(strDisplay) { if(strDisplay!="none") strDisplay="block"; if(browser=="ie6") { if($("panels")) { $("panels").style.display=strDisplay; } if($("footer")) { $("footer").style.display=strDisplay; } } if(strDisplay=="block") toggleForm(); } function toggleForm() { // enables and disables the form var form = $("frmHelpMeChoose"); form[form.disabled ? 'enable' : 'disable']();// cycle between calling form.disable() and form.enable() form.disabled = !form.disabled; } function resetForm() { // resets all the forms elements var aChk = $$("#frmHelpMeChoose input.chk"); for(var i=0; i < aChk.length; i++) aChk[i].checked=false; var aRad = $$("#frmHelpMeChoose input.rad"); aRad[0].checked=true; var aOpt = $$("#frmHelpMeChoose select option") aOpt[0].selected=true; doFilter(); return false; } function trackingChecks(){ if (!document.getElementsByTagName) return; var checks = document.getElementsByTagName("input"); for (var i=0; i