Hi, I was asked to convert some javascript into a jquery plugin. I've followed the documentation for authoring a plugin at http://docs.jquery.com/Plugins/Authoring I've also followed other instructions found on the web. Currently I have my code working with respect to this, but largely the javascript code is still exactly the same. I was wondering if there was more I could do with jQuery with respect to this code.
here it is... (function($) { var tabHighlightClass = 'tabon'; var currentTab = 'hotel'; var currentLink; var tF0 = new Array('dl0r', 'dl0o', 'dl0m'); var tF1 = new Array('al0r', 'al0o', 'al0m'); var tFields = new Array('tF0', 'tF1'); var txtFields = new Array(tF0, tF1); var sF0 = new Array('numberOfAdults-hotel', 'numberOfAdults-package', 'adr', 'ado', 'adm'); var sF1 = new Array('numberOfChildren-hotel', 'numberOfChildren- package', 'chr', 'cho', 'chm'); var sF2 = new Array('lir', 'lio', 'lim'); var sF3 = new Array('dt0r', 'dt0o', 'dt0m'); var selFields = new Array(sF0, sF1, sF2, sF3); var sFields = new Array('sF0', 'sF1', 'sF2', 'sF3'); var fids = new Array('roundtrip', 'oneway', 'multiple'); var actids = new Array('popular', 'enter'); var tmp = ''; $.bots = { showTab: function(o) { if (currentTab) { if (document.getElementById(currentTab)) { document.getElementById(currentTab).style.display = 'none'; } var b = currentLink.firstChild; var ftype = b.src.substring(b.src.lastIndexOf('.'), b.src.length); b.src = b.src.replace('_o' + ftype, ftype); } var id = o.href.substring(o.href.lastIndexOf('#') + 1); currentTab = id; currentLink = o; if (document.getElementById(id)) { document.getElementById(id).style.display = 'block'; } o.firstChild.src = o.firstChild.src.replace(ftype, '_o' + ftype); }, initTabs: function() { if (document.getElementById && document.createTextNode) { var n = document.getElementById('tbs'); var as = n.getElementsByTagName("a"); for (var i = 0; i < as.length; i++) { as[i].onclick = function() { $.bots.showTab(this); return false; }; as[i].onfocus = function() { this.blur(); }; if (i == 0) currentLink = as[i]; } if (document.getElementById(currentTab)) { document.getElementById(currentTab).style.display = 'block'; } } }, tFieldsInit: function() { var obj; for (var i = 0; i < txtFields.length; i++) { for (var j = 0; j < txtFields[i].length; j++) { obj = document.getElementById(txtFields[i][j]); if (obj) obj.onblur = new Function("$.bots.syncTxtFields(" + tFields[i] + ", this.value)"); } } for (i = 0; i < selFields.length; i++) { for (j = 0; j < selFields[i].length; j++) { obj = document.getElementById(selFields[i][j]); if (obj) obj.onchange = new Function("$.bots.syncSelFields(" + sFields[i] + ", this.selectedIndex)"); } } }, syncTxtFields: function(arr, value) { for (var i = 0; i < arr.length; i++) { document.getElementById(arr[i]).value = value; } }, syncSelFields: function(arr, index) { for (var i = 0; i < arr.length; i++) { document.getElementById(arr[i]).options[index].selected = true; } }, setOpt: function(s) { s.form.locationID.value = s.options[s.selectedIndex].value; if (tmp && s.options[s.selectedIndex].value == '') s.form.locationID.value = tmp; }, initFlightForms: function () { var radios = document.forms['flightSearchType'].elements['flights [flightSearchType]']; for (var i = 0; i < fids.length; i++) { var fmName = 'flightSearchForm' + fids[i].ucFirst(); var fm = document.forms[fmName]; radios[i].onclick = new Function('$.bots.toggleFSF("' + fids [i] + '")'); fm.onsubmit = function() { for (i = 0; i < radios.length; i++) { if (radios[i].checked) ckd = radios[i].value; } this.elements['flights[flightSearchType]'].value = ckd; }; } radios[0].checked = true; }, initActivityForms: function () { var radios = document.forms['ActivitiesTab'].elements['activities [ActivitiesTab]']; for (var i = 0; i < actids.length; i++) { var fmName = 'ticketSearchForm' + actids[i].ucFirst(); var fm = document.forms[fmName]; radios[i].onclick = new Function('$.bots.toggleASF("' + actids [i] + '")'); fm.onsubmit = function() { for (i = 0; i < radios.length; i++) { if (radios[i].checked) ckd = radios[i].value; } this.elements['activities[ActivitiesTab]'].value = ckd; }; } radios[0].checked = true; }, toggleASF: function (actid) { for (var i = 0; i < actids.length; i++) { var obb = document.getElementById(actids[i]); if (actid == actids[i]) obb.style.display = 'block'; else obb.style.display = 'none'; } }, toggleFSF: function (fid) { for (var i = 0; i < fids.length; i++) { var obb = document.getElementById(fids[i]); if (fid == fids[i]) obb.style.display = 'block'; else obb.style.display = 'none'; } } }; })(jQuery); ...then for calling it I just use <script type="text/javascript"> //Initialization Code $(function() { $.bots.initTabs(); $.bots.tFieldsInit(); }); </script>