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>

Reply via email to