my javasript code not run server show the error on firefox TypeError: jQuery("#" + id2).position is not a function
<pre><code>/*Copyright(c)2009,www.supersite.me*/
var imageUrl = 'http://localhost/Essence/articlebase2/templates/articalbase/images/color.png';

function iColorShow(id, id2) {
    var eICP = jQuery("#" + id2).position();
    jQuery("#iColorPicker").css({
        'top': eICP.top + (jQuery("#" + id).outerHeight()) + "px",
        'left': (eICP.left) + "px",
        'position': 'absolute'
    }).fadeIn("fast");
    jQuery("#iColorPickerBg").css({
        'position': 'absolute',
        'top': 0,
        'left': 0,
        'width': '100%',
        'height': '100%'
    }).fadeIn("fast");
    var def = jQuery("#" + id).val();
    jQuery('#colorPreview span').text(def);
    jQuery('#colorPreview').css('background', def);
    jQuery('#color').val(def);
    jQuery("#" + id).css('color', getColor(def));
    var hxs = jQuery('#iColorPicker');
    for (i = 0; i &lt; hxs.length; i++) {
        var tbl = document.getElementById('hexSection' + i);
        var tblChilds = tbl.childNodes;
        for (j = 0; j &lt; tblChilds.length; j++) {
            var tblCells = tblChilds[j].childNodes;
            for (k = 0; k &lt; tblCells.length; k++) {
                jQuery(tblChilds[j].childNodes[k]).unbind().mouseover(function (a) {
                    var aaa = "#" + jQuery(this).attr('hx');
                    jQuery('#colorPreview').css('background', aaa);
                    jQuery('#colorPreview span').text(aaa);
                    initColor();
                }).click(function () {
                    var aaa = "#" + jQuery(this).attr('hx');
                    jQuery("#" + id).val(aaa).css("background", aaa);
                    jQuery("#iColorPickerBg").hide();
                    jQuery("#iColorPicker").fadeOut();
                    jQuery(this);
                    initColor();
                })
            }
        }
    }
}
this.iColorPicker = function () {
    jQuery("input.iColorPicker").each(function (i) {
        if (i == 0) {
            jQuery(document.createElement("div")).attr("id", "iColorPicker").css('display', 'none').html('&lt;table class="pickerTable" id="pickerTable0"&gt;&lt;thead id="hexSection0"&gt;&lt;tr&gt;&lt;td style="background:#f00;" hx="f00"&gt;&lt;/td&gt;&lt;td style="background:#ff0" hx="ff0"&gt;&lt;/td&gt;&lt;td style="background:#0f0" hx="0f0"&gt;&lt;/td&gt;&lt;td style="background:#0ff" hx="0ff"&gt;&lt;/td&gt;&lt;td style="background:#00f" hx="00f"&gt;&lt;/td&gt;&lt;td style="background:#f0f" hx="f0f"&gt;&lt;/td&gt;&lt;td style="background:#fff" hx="fff"&gt;&lt;/td&gt;&lt;td style="background:#ebebeb" hx="ebebeb"&gt;&lt;/td&gt;&lt;td style="background:#e1e1e1" hx="e1e1e1"&gt;&lt;/td&gt;&lt;td style="background:#d7d7d7" hx="d7d7d7"&gt;&lt;/td&gt;&lt;td style="background:#cccccc" hx="cccccc"&gt;&lt;/td&gt;&lt;td style="background:#c2c2c2" hx="c2c2c2"&gt;&lt;/td&gt;&lt;td style="background:#b7b7b7" hx="b7b7b7"&gt;&lt;/td&gt;&lt;td style="background:#acacac" hx="acacac"&gt;&lt;/td&gt;&lt;td style="background:#a0a0a0" hx="a0a0a0"&gt;&lt;/td&gt;&lt;td style="background:#959595" hx="959595"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background:#ee1d24" hx="ee1d24"&gt;&lt;/td&gt;&lt;td style="background:#fff100" hx="fff100"&gt;&lt;/td&gt;&lt;td style="background:#00a650" hx="00a650"&gt;&lt;/td&gt;&lt;td style="background:#00aeef" hx="00aeef"&gt;&lt;/td&gt;&lt;td style="background:#2f3192" hx="2f3192"&gt;&lt;/td&gt;&lt;td style="background:#ed008c" hx="ed008c"&gt;&lt;/td&gt;&lt;td style="background:#898989" hx="898989"&gt;&lt;/td&gt;&lt;td style="background:#7d7d7d" hx="7d7d7d"&gt;&lt;/td&gt;&lt;td style="background:#707070" hx="707070"&gt;&lt;/td&gt;&lt;td style="background:#626262" hx="626262"&gt;&lt;/td&gt;&lt;td style="background:#555" hx="555"&gt;&lt;/td&gt;&lt;td style="background:#464646" hx="464646"&gt;&lt;/td&gt;&lt;td style="background:#363636" hx="363636"&gt;&lt;/td&gt;&lt;td style="background:#262626" hx="262626"&gt;&lt;/td&gt;&lt;td style="background:#111" hx="111"&gt;&lt;/td&gt;&lt;td style="background:#000" hx="000"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background:#f7977a" hx="f7977a"&gt;&lt;/td&gt;&lt;td style="background:#fbad82" hx="fbad82"&gt;&lt;/td&gt;&lt;td style="background:#fdc68c" hx="fdc68c"&gt;&lt;/td&gt;&lt;td style="background:#fff799" hx="fff799"&gt;&lt;/td&gt;&lt;td style="background:#c6df9c" hx="c6df9c"&gt;&lt;/td&gt;&lt;td style="background:#a4d49d" hx="a4d49d"&gt;&lt;/td&gt;&lt;td style="background:#81ca9d" hx="81ca9d"&gt;&lt;/td&gt;&lt;td style="background:#7bcdc9" hx="7bcdc9"&gt;&lt;/td&gt;&lt;td style="background:#6ccff7" hx="6ccff7"&gt;&lt;/td&gt;&lt;td style="background:#7ca6d8" hx="7ca6d8"&gt;&lt;/td&gt;&lt;td style="background:#8293ca" hx="8293ca"&gt;&lt;/td&gt;&lt;td style="background:#8881be" hx="8881be"&gt;&lt;/td&gt;&lt;td style="background:#a286bd" hx="a286bd"&gt;&lt;/td&gt;&lt;td style="background:#bc8cbf" hx="bc8cbf"&gt;&lt;/td&gt;&lt;td style="background:#f49bc1" hx="f49bc1"&gt;&lt;/td&gt;&lt;td style="background:#f5999d" hx="f5999d"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background:#f16c4d" hx="f16c4d"&gt;&lt;/td&gt;&lt;td style="background:#f68e54" hx="f68e54"&gt;&lt;/td&gt;&lt;td style="background:#fbaf5a" hx="fbaf5a"&gt;&lt;/td&gt;&lt;td style="background:#fff467" hx="fff467"&gt;&lt;/td&gt;&lt;td style="background:#acd372" hx="acd372"&gt;&lt;/td&gt;&lt;td style="background:#7dc473" hx="7dc473"&gt;&lt;/td&gt;&lt;td style="background:#39b778" hx="39b778"&gt;&lt;/td&gt;&lt;td style="background:#16bcb4" hx="16bcb4"&gt;&lt;/td&gt;&lt;td style="background:#00bff3" hx="00bff3"&gt;&lt;/td&gt;&lt;td style="background:#438ccb" hx="438ccb"&gt;&lt;/td&gt;&lt;td style="background:#5573b7" hx="5573b7"&gt;&lt;/td&gt;&lt;td style="background:#5e5ca7" hx="5e5ca7"&gt;&lt;/td&gt;&lt;td style="background:#855fa8" hx="855fa8"&gt;&lt;/td&gt;&lt;td style="background:#a763a9" hx="a763a9"&gt;&lt;/td&gt;&lt;td style="background:#ef6ea8" hx="ef6ea8"&gt;&lt;/td&gt;&lt;td style="background:#f16d7e" hx="f16d7e"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background:#ee1d24" hx="ee1d24"&gt;&lt;/td&gt;&lt;td style="background:#f16522" hx="f16522"&gt;&lt;/td&gt;&lt;td style="background:#f7941d" hx="f7941d"&gt;&lt;/td&gt;&lt;td style="background:#fff100" hx="fff100"&gt;&lt;/td&gt;&lt;td style="background:#8fc63d" hx="8fc63d"&gt;&lt;/td&gt;&lt;td style="background:#37b44a" hx="37b44a"&gt;&lt;/td&gt;&lt;td style="background:#00a650" hx="00a650"&gt;&lt;/td&gt;&lt;td style="background:#00a99e" hx="00a99e"&gt;&lt;/td&gt;&lt;td style="background:#00aeef" hx="00aeef"&gt;&lt;/td&gt;&lt;td style="background:#0072bc" hx="0072bc"&gt;&lt;/td&gt;&lt;td style="background:#0054a5" hx="0054a5"&gt;&lt;/td&gt;&lt;td style="background:#2f3192" hx="2f3192"&gt;&lt;/td&gt;&lt;td style="background:#652c91" hx="652c91"&gt;&lt;/td&gt;&lt;td style="background:#91278f" hx="91278f"&gt;&lt;/td&gt;&lt;td style="background:#ed008c" hx="ed008c"&gt;&lt;/td&gt;&lt;td style="background:#ee105a" hx="ee105a"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background:#9d0a0f" hx="9d0a0f"&gt;&lt;/td&gt;&lt;td style="background:#a1410d" hx="a1410d"&gt;&lt;/td&gt;&lt;td style="background:#a36209" hx="a36209"&gt;&lt;/td&gt;&lt;td style="background:#aba000" hx="aba000"&gt;&lt;/td&gt;&lt;td style="background:#588528" hx="588528"&gt;&lt;/td&gt;&lt;td style="background:#197b30" hx="197b30"&gt;&lt;/td&gt;&lt;td style="background:#007236" hx="007236"&gt;&lt;/td&gt;&lt;td style="background:#00736a" hx="00736a"&gt;&lt;/td&gt;&lt;td style="background:#0076a4" hx="0076a4"&gt;&lt;/td&gt;&lt;td style="background:#004a80" hx="004a80"&gt;&lt;/td&gt;&lt;td style="background:#003370" hx="003370"&gt;&lt;/td&gt;&lt;td style="background:#1d1363" hx="1d1363"&gt;&lt;/td&gt;&lt;td style="background:#450e61" hx="450e61"&gt;&lt;/td&gt;&lt;td style="background:#62055f" hx="62055f"&gt;&lt;/td&gt;&lt;td style="background:#9e005c" hx="9e005c"&gt;&lt;/td&gt;&lt;td style="background:#9d0039" hx="9d0039"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background:#790000" hx="790000"&gt;&lt;/td&gt;&lt;td style="background:#7b3000" hx="7b3000"&gt;&lt;/td&gt;&lt;td style="background:#7c4900" hx="7c4900"&gt;&lt;/td&gt;&lt;td style="background:#827a00" hx="827a00"&gt;&lt;/td&gt;&lt;td style="background:#3e6617" hx="3e6617"&gt;&lt;/td&gt;&lt;td style="background:#045f20" hx="045f20"&gt;&lt;/td&gt;&lt;td style="background:#005824" hx="005824"&gt;&lt;/td&gt;&lt;td style="background:#005951" hx="005951"&gt;&lt;/td&gt;&lt;td style="background:#005b7e" hx="005b7e"&gt;&lt;/td&gt;&lt;td style="background:#003562" hx="003562"&gt;&lt;/td&gt;&lt;td style="background:#002056" hx="002056"&gt;&lt;/td&gt;&lt;td style="background:#0c004b" hx="0c004b"&gt;&lt;/td&gt;&lt;td style="background:#30004a" hx="30004a"&gt;&lt;/td&gt;&lt;td style="background:#4b0048" hx="4b0048"&gt;&lt;/td&gt;&lt;td style="background:#7a0045" hx="7a0045"&gt;&lt;/td&gt;&lt;td style="background:#7a0026" hx="7a0026"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="border:1px solid #000;background:#fff;cursor:pointer;height:60px;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;" colspan="16" align="center" id="colorPreview"&gt;&lt;span style="color:#000;border:1px solid rgb(0, 0, 0);padding:5px;background-color:#fff;font:11px Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;style&gt;#iColorPicker input{margin:2px}&lt;/style&gt;').appendTo("body");
            jQuery(document.createElement("div")).attr("id", "iColorPickerBg").click(function () {
                jQuery("#iColorPickerBg").hide();
                jQuery("#iColorPicker").fadeOut()
            }).appendTo("body");
            jQuery('table.pickerTable td').css({
                'width': '12px',
                'height': '14px',
                'border': '1px solid #000',
                'cursor': 'pointer'
            });
            jQuery('#iColorPicker table.pickerTable').css({
                'border-collapse': 'collapse'
            });
            jQuery('#iColorPicker').css({
                'border': '1px solid #ccc',
                'background': '#333',
                'padding': '5px',
                'color': '#fff',
                'z-index': 9999
            })
        }
        jQuery('#colorPreview').css({
            'height': '50px'
        });
        jQuery(this).css("backgroundColor", jQuery(this).position()).after('&lt;a href="javascript:void(null)" id="icp_' + this.id + '" onclick="iColorShow(\'' + this.id + '\',\'icp_' + this.id + '\')"&gt;&lt;img src="' + imageUrl + '" style="border:0;margin:0 0 0 3px" align="absmiddle" &gt;&lt;/a&gt;');
    })
};

function getColor(str) {
    if (str.length == 4) {
        str = str[1] + str[1] + str[2] + str[2] + str[3] + str[3];
    } else {
        str = str.slice(1);
    }
    arr = str.split("");
    c = 0;
    for (i = 0; i &lt; arr.length; i += 2) {
        num = '0x' + arr[i] + arr[i + 1];
        if (num &gt; '0x50') {
            c++
        }
    }
    return c &gt; 1 ? 'black' : 'white';
};
jQuery(function () {
    iColorPicker()
});

function initColor() {
    jQuery("input.iColorPicker").each(function () {
        jQuery(this).css('color', getColor(jQuery(this).val()))
    });
}
</code></pre>
