// Boolean variable specified if alert should be displayed if cookie exceeds 4KB var caution = false //alert("titi"); function setCookie( jscookie, value, expires, path, domain, secure) { var curCookie = jscookie + "=" + escape(value) + ((expires) ? "; expires=" + expires.toGMTString() : "") + ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "") + ((secure) ? "; secure" : "") if (!caution || (name + "=" + escape(value)).length <= 4000) document.cookie = curCookie else if (confirm("Cookie exceeds 4KB and will be cut!")) document.cookie = curCookie } // name - cookie name, return string containing value of specified cookie or null if cookie does not exist function getCookie(name) { var prefix = name + "=" var cookieStartIndex = document.cookie.indexOf(prefix) if (cookieStartIndex == -1) return null var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length) if (cookieEndIndex == -1) cookieEndIndex = document.cookie.length return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex)) } function fixDate(date) { var base = new Date(0) var skew = base.getTime() if (skew > 0) date.setTime(date.getTime() - skew) } // name - cookie name, return string containing value of specified cookie or null if cookie does not exist function doCookie() { var now = new Date() fixDate(now) now.setTime(now.getTime() + 365 * 24 * 60 * 60 * 1000) var visits = getCookie('KumuloCookie') if ((visits==null) || (visits=='')) { setCookie('KumuloCookie', 'SEROD4Q9TM', now, '/') } } doCookie() function supprime(id, origine) { url3 = "/kumulo/shopping/kmshopwe.nsf/supplienportail?OpenAgent&id="+id+"&origine="+origine; window.open(url3 , '', 'left=200,top=120 width='+(screen.width-530)+',height='+(screen.height-200)+',location=no,menubar=no,scrollbars=yes,status=no,toolbar=no,resizable=yes'); } var menu_options = new Object(); //alert("tototto"); menu_options.bvis = ""; menu_options.bhide = ""; var menu_si, menu_lo, menu_tt, menu_ts, menu_la, menu_ic, menu_ff; var menu_li = new Object(); var menu_ib = ''; var qp = "parentNode"; var qc = "className"; var menu_t = navigator.userAgent; var menu_o = menu_t.indexOf("Opera") + 1; var menu_s = menu_t.indexOf("afari") + 1; var menu_s2 = menu_s && menu_t.indexOf("ersion/2") + 1; var menu_s3 = menu_s && menu_t.indexOf("ersion/3") + 1; var menu_n = menu_t.indexOf("Netscape") + 1; var menu_v = parseFloat(navigator.vendorSub);; /* * menu_create ( Menu ID, * Is Vertical, * Show Timer, * Hide Timer, * On Click, * Right to Left, * Horizontal Subs, * Flush Left * ) */ function menu_create(sd, v, ts, th, oc, rl, sh, fl, ft, aux, l) { var w = "onmouseover"; var ww = w; var e = "onclick"; if (oc) { if (oc.indexOf("all") + 1 || (oc == "lev2" && l >= 2)) { w = e; ts = 0; } if (oc.indexOf("all") + 1 || oc == "main") { ww = e; th = 0; } } if (!l) { l = 1; sd = document.getElementById("menu" + sd); if (window.menu_pure) sd = menu_pure(sd); sd[w] = function(e) { try { menu_kille(e); } catch(e) { } }; if (oc != "all-always-open") document[ww] = menu_bo; if (oc == "main") { menu_ib += sd.id; sd[e] = function(event) { menu_ic = true; menu_oo(new Object(), menu_la, 1); menu_kille(event); }; } sd.style.zoom = 1; if (sh) x2("menu_sh", sd, 1); if (!v) sd.ch = 1; } else if (sh) sd.ch = 1; if (oc) sd.oc = oc; if (sh) sd.sh = 1; if (fl) sd.fl = 1; if (ft) sd.ft = 1; if (rl) sd.rl = 1; sd.th = th; sd.style.zIndex = l + "" + 1; var lsp; var sp = sd.childNodes; for (var i = 0; i < sp.length; i++) { var b = sp[i]; if (b.tagName == "A") { lsp = b; b[w] = menu_oo; if (w == e) { b.onmouseover = function(event) { clearTimeout(menu_tt); menu_tt = null; menu_la = null; menu_kille(event); }; } b.menu_ts = ts; if (l == 1 && v) { b.style.styleFloat = "none"; b.style.cssFloat = "none"; } } else if (b.tagName == "DIV") { if (window.showHelp && !window.XMLHttpRequest) sp[i].insertAdjacentHTML("afterBegin", " "); x2("menu_parent", lsp, 1); lsp.cdiv = b; b.idiv = lsp; if (menu_n && menu_v < 8 && !b.style.width) b.style.width = b.offsetWidth + "px"; new menu_create(b, null, ts, th, oc, rl, sh, fl, ft, aux, l + 1); } } } function menu_bo(e) { e = e || event; if (e.type == "click") menu_ic = false; menu_la = null; clearTimeout(menu_tt); menu_tt = null; var i; for (i in menu_li) { if (menu_li[i] && !((menu_ib.indexOf(i) + 1) && e.type == "mouseover")) menu_tt = setTimeout("x0('" + i + "')", menu_li[i].th); } } function menu_co(t) { var f; for (f in menu_li) { if (f != t && menu_li[f]) x0(f); } } function x0(id) { var i; var a; var a; if ((a = menu_li[id]) && menu_li[id].oc != "all-always-open") { do { menu_uo(a); } while ((a = a[qp]) && !menu_a(a)) menu_li[id] = null; } } function menu_a(a) { if (a[qc].indexOf("menu_mc") + 1) return 1; } function menu_uo(a, go) { if (!go && a.menu_tree) return; if (window.menu_options && menu_options.bhide) eval(menu_options.bhide); a.style.visibility = ""; x2("menu_active", a.idiv); } function menu_oo(e, o, nt) { try { if (!o) o = this; if (menu_la == o && !nt) return; if (window.menu_v_a && !nt) menu_v_a(o); if (window.menu_wait) { menu_kille(e); return; } clearTimeout(menu_tt); menu_tt = null; menu_la = o; if (!nt && o.menu_ts) { menu_si = o; menu_tt = setTimeout("menu_oo(new Object(),menu_si,1)", o.menu_ts); return; } var a = o; if (a[qp].isrun) { menu_kille(e); return; } while ((a = a[qp]) && !menu_a(a)) { } var d = a.id; a = o; menu_co(d); if (menu_ib.indexOf(d) + 1 && !menu_ic) return; var go = true; while ((a = a[qp]) && !menu_a(a)) { if (a == menu_li[d]) go = false; } if (menu_li[d] && go) { a = o; if ((!a.cdiv) || (a.cdiv && a.cdiv != menu_li[d])) menu_uo(menu_li[d]); a = menu_li[d]; while ((a = a[qp]) && !menu_a(a)) { if (a != o[qp] && a != o.cdiv) menu_uo(a); else break; } } var b = o; var c = o.cdiv; if (b.cdiv) { var aw = b.offsetWidth; var ah = b.offsetHeight; var ax = b.offsetLeft; var ay = b.offsetTop; if (c[qp].ch) { aw = 0; if (c.fl) ax = 0; } else { if (c.ft) ay = 0; if (c.rl) { ax = ax - c.offsetWidth; aw = 0; } ah = 0; } if (menu_o) { ax -= b[qp].clientLeft; ay -= b[qp].clientTop; } if (menu_s2 && !menu_s3) { ax -= menu_gcs(b[qp], "border-left-width", "borderLeftWidth"); ay -= menu_gcs(b[qp], "border-top-width", "borderTopWidth"); } if (!c.ismove) { c.style.left = (ax + aw) + "px"; c.style.top = (ay + ah) + "px"; } x2("menu_active", o, 1); if (window.menu_options && menu_options.bvis) eval(menu_options.bvis); c.style.visibility = "inherit"; menu_li[d] = c; } else if (!menu_a(b[qp])) menu_li[d] = b[qp]; else menu_li[d] = null; menu_kille(e); } catch(e) { } } function menu_gcs(obj, sname, jname) { var v; if (document.defaultView && document.defaultView.getComputedStyle) { v = document.defaultView.getComputedStyle(obj, null).getPropertyValue(sname); } else if (obj.currentStyle) { v = obj.currentStyle[jname]; } if (v && !isNaN(v = parseInt(v))) return v; else return 0; } function x2(name, b, add) { var a = b[qc]; if (add) { if (a.indexOf(name) == -1) b[qc] += (a ? ' ' : '') + name; } else { b[qc] = a.replace(" " + name, ""); b[qc] = b[qc].replace(name, ""); } } function menu_kille(e) { if (!e) e = event; e.cancelBubble = true; if (e.stopPropagation && !(menu_s && e.type == "click")) e.stopPropagation(); } function menu_pure(sd) { if (sd.tagName == "UL") { var nd = document.createElement("DIV"); nd.menu_pure = 1; var c; if (c = sd.style.cssText) nd.style.cssText = c; menu_convert(sd, nd); var csp = document.createElement("SPAN"); csp.className = "menu_clear"; csp.innerHTML = " "; nd.appendChild(csp); sd = sd[qp].replaceChild(nd, sd); sd = nd; } return sd; } function menu_convert(a, bm, l) { if (!l) bm[qc] = a[qc]; bm.id = a.id; var ch = a.childNodes; for (var i = 0; i < ch.length; i++) { if (ch[i].tagName == "LI") { var sh = ch[i].childNodes; for (var j = 0; j < sh.length; j++) { if (sh[j] && (sh[j].tagName == "A" || sh[j].tagName == "SPAN")) bm.appendChild(ch[i].removeChild(sh[j])); if (sh[j] && sh[j].tagName == "UL") { var na = document.createElement("DIV"); var c; if (c = sh[j].style.cssText) na.style.cssText = c; if (c = sh[j].className) na.className = c; na = bm.appendChild(na); new menu_convert(sh[j], na, 1)} } } } } /* * Add-On Code: Rounded Corners * ---------------------------- */ function menu_enable_rounded_corners() { menu_options.rcorner = new Object(); menu_options.br_ie7 = navigator.userAgent.indexOf("MSIE 7") + 1; if (menu_options.bvis.indexOf("menu_rcorner(b.cdiv);") == -1) menu_options.bvis += "menu_rcorner(b.cdiv);";; } function menu_rcorner(a, hide, force) { var z; if (!hide && ((z = window.menu_v) && (z = z.addons) && (z = z.round_corners) && !z["on" + menu_index(a)])) return; var q = menu_options.rcorner; if ((!hide && !a.hasrcorner) || force) { var ss; if (!a.settingsid) { var v = a; while ((v = v.parentNode)) { if (v.className.indexOf("menu_mc") + 1) { a.settingsid = v.id; break; } } } ss = menu_options[a.settingsid]; if (!ss) return; if (!ss.rcorner_size) return; q.size = ss.rcorner_size; q.background = ss.rcorner_bg_color; if (!q.background) q.background = "transparent"; q.border = ss.rcorner_border_color; if (!q.border) q.border = "#ff0000"; q.angle = ss.rcorner_angle_corners; q.corners = ss.rcorner_apply_corners; if (!q.corners || q.corners.length < 4) q.corners = new Array(true, 1, 1, 1); q.tinset = 0; if (ss.rcorner_top_line_auto_inset && menu_a(a[qp])) q.tinset = a.idiv.offsetWidth; q.opacity = ss.rcorner_opacity; if (q.opacity && q.opacity != 1) { var addf = ""; if (window.showHelp) addf = "filter:alpha(opacity=" + (q.opacity * 100) + ");"; q.opacity = "opacity:" + q.opacity + ";" + addf; } else q.opacity = ""; var f = document.createElement("SPAN"); x2("menu_rcorner", f, 1); var fs = f.style; fs.position = "absolute"; fs.display = "block"; fs.top = "0px"; fs.left = "0px"; var size = q.size; q.mid = parseInt(size / 2); q.ps = new Array(size + 1); var t2 = 0; q.osize = q.size; if (!q.angle) { for (var i = 0; i <= size; i++) { if (i == q.mid) t2 = 0; q.ps[i] = t2; t2 += Math.abs(q.mid - i) + 1; } q.osize = 1; } var fi = ""; for (var i = 0; i < size; i++) fi += menu_rcorner_get_span(size, i, 1, q.tinset); fi += ''; for (var i = size - 1; i >= 0; i--) fi += menu_rcorner_get_span(size, i); f.innerHTML = fi; f.noselect = 1; a.insertBefore(f, a.firstChild); a.hasrcorner = f; } var b = a.hasrcorner; if (b) { if (!a.offsetWidth) a.style.visibility = "inherit"; ft = menu_gcs(b[qp], "border-top-width", "borderTopWidth"); fb = menu_gcs(b[qp], "border-top-width", "borderTopWidth"); fl = menu_gcs(b[qp], "border-left-width", "borderLeftWidth"); fr = menu_gcs(b[qp], "border-left-width", "borderLeftWidth"); b.style.width = (a.offsetWidth - fl) + "px"; b.style.height = (a.offsetHeight - fr) + "px"; if (menu_options.br_ie7) { var sp = b.getElementsByTagName("SPAN"); for (var i = 0; i < sp.length; i++) sp[i].style.visibility = "inherit"; } b.style.visibility = "inherit"; var s = b.childNodes; for (var i = 0; i < s.length; i++) { if (s[i].getAttribute("menu_rcmid")) s[i].style.height = Math.abs((a.offsetHeight - (q.osize * 2) - ft - fb)) + "px"; } } } function menu_rcorner_get_span(size, i, top, tinset) { var q = menu_options.rcorner; var mlmr; if (i == 0) { var mo = q.ps[size] + q.mid; if (q.angle) mo = size - i; mlmr = menu_rcorner_get_corners(mo, null, top); if (tinset) mlmr[0] += tinset; return ''; } else { var md = size - (i); var ih = 1; var bs = 1; if (!q.angle) { if (i >= q.mid) ih = Math.abs(q.mid - i) + 1; else { bs = Math.abs(q.mid - i) + 1; md = q.ps[size - i] + q.mid; } if (top) q.osize += ih; } mlmr = menu_rcorner_get_corners(md, bs, top); return ''; } } function menu_rcorner_get_corners(mval, bval, top) { var q = menu_options.rcorner; var ml = mval; var mr = mval; var bl = bval; var br = bval; if (top) { if (!q.corners[0]) { ml = 0; bl = 1; } if (!q.corners[1]) { mr = 0; br = 1; } } else { if (!q.corners[2]) { mr = 0; br = 1; } if (!q.corners[3]) { ml = 0; bl = 1; } } return new Array(ml, mr, bl, br); } /* * Add-On Code: Rounded Items * -------------------------- */ function menu_enable_rounded_items() { menu_options.br_navigator = navigator.userAgent.indexOf("Netscape") + 1; menu_options.br_version = parseFloat(navigator.vendorSub); menu_options.br_oldnav6 = menu_options.br_navigator && menu_options.br_version < 7; menu_options.br_strict = (dcm = document.compatMode) && dcm == "CSS1Compat"; menu_options.br_ie = window.showHelp; menu_options.str = (menu_options.br_ie && !menu_options.br_strict); if (!menu_options.br_oldnav6) { if (!menu_options.ritem) { menu_options.ritem = new Object(); if (menu_options.bvis.indexOf("menu_ritem_a(b.cdiv);") == -1) { menu_options.bvis += "menu_ritem_a(b.cdiv);"; menu_options.bhide += "menu_ritem_a_hide(a);"; } // if (window.attachEvent) // window.attachEvent("onload", menu_ritem_init); // else if (window.addEventListener) // window.addEventListener("load", menu_ritem_init, 1); // var ca = "cursor:pointer;"; // if (menu_options.br_ie) // ca = "cursor:hand;"; // var wt = ''); menu_ritem_init(null, NaN); } } } function menu_ritem_init(e, spec) { var z; if ((z = window.menu_v) && (z = z.addons) && (z = z.ritem) && (!z["on" + menu_v.id] && z["on" + menu_v.id] != undefined && z["on" + menu_v.id] != null)) return; menu_ts = 1; var q = menu_options.ritem; var a, b, r, sx, sy; z = window.menu_v; for (i = 0; i < 10; i++) { if (!(a = document.getElementById("menu" + i)) || (!isNaN(spec) && spec != i)) continue; var ss = menu_options[a.id]; if (ss && ss.ritem_size) { q.size = ss.ritem_size; q.apply = ss.ritem_apply; if (!q.apply) q.apply = "main"; q.angle = ss.ritem_angle_corners; q.corners_main = ss.ritem_main_apply_corners; if (!q.corners_main || q.corners_main.length < 4) q.corners_main = new Array(true, 1, 1, 1); q.corners_sub = ss.ritem_sub_apply_corners; if (!q.corners_sub || q.corners_sub.length < 4) q.corners_sub = new Array(true, 1, 1, 1); q.sactive = false; if (ss.ritem_show_on_actives) q.sactive = true; q.opacity = ss.ritem_opacity; if (q.opacity && q.opacity != 1) { var addf = ""; if (window.showHelp) addf = "filter:alpha(opacity=" + (q.opacity * 100) + ");"; q.opacity = "opacity:" + q.opacity + ";" + addf; } else q.opacity = ""; menu_ritem_add_rounds(a); } } } function menu_ritem_a_hide(a) { if (a.idiv.hasritem && menu_options.ritem.sactive) a.idiv.hasritem.style.visibility = "hidden"; } function menu_ritem_a(a) { if (a) menu_options.ritem.a = a; else a = menu_options.ritem.a; if (a.idiv.hasritem && menu_options.ritem.sactive) a.idiv.hasritem.style.visibility = "inherit"; if (a.ritemfixed) return; var aa = a.childNodes; for (var i = 0; i < aa.length; i++) { var b; if (b = aa[i].hasritem) { if (!aa[i].offsetWidth) { setTimeout("menu_ritem_a()", 10); return; } else { b.style.top = "0px"; b.style.left = "0px"; b.style.width = aa[i].offsetWidth + "px"; a.ritemfixed = 1; } } } } function menu_ritem_add_rounds(a) { var q = menu_options.ritem; var atags, ist, isd, isp, gom, gos; if (q.apply.indexOf("titles") + 1) ist = true; if (q.apply.indexOf("dividers") + 1) isd = true; if (q.apply.indexOf("parents") + 1) isp = true; if (q.apply.indexOf("sub") + 1) gos = true; if (q.apply.indexOf("main") + 1) gom = true; atags = a.childNodes; for (var k = 0; k < atags.length; k++) { if ((atags[k].tagName != "SPAN" && atags[k].tagName != "A") || (q.sactive && !atags[k].cdiv)) continue; var ism = menu_a(atags[k][qp]); if ((isd && atags[k].className.indexOf("menu_divider") + 1) || (ist && atags[k].className.indexOf("menu_title") + 1) || (gom && ism && atags[k]. tagName == "A") || (atags[k].className.indexOf("menu_rounditem") + 1) || (gos && !ism && atags[k]. tagName == "A") || (isp && atags[k].cdiv)) { var f = document.createElement("SPAN"); f.className = "menu_ritem"; f.setAttribute("menu_vbefore", 1); var fs = f.style; fs.position = "absolute"; fs.display = "block"; fs.top = "0px"; fs.left = "0px"; fs.width = atags[k].offsetWidth + "px"; if (q.sactive && atags[k].cdiv.style.visibility != "inherit") fs.visibility = "hidden"; var size = q.size; q.mid = parseInt(size / 2); q.ps = new Array(size + 1); var t2 = 0; q.osize = q.size; if (!q.angle) { for (var i = 0; i <= size; i++) { if (i == q.mid) t2 = 0; q.ps[i] = t2; t2 += Math.abs(q.mid - i) + 1; } q.osize = 1; } var fi = ""; var ctype = "main"; if (!ism) ctype = "sub"; for (var i = 0; i < size; i++) fi += menu_ritem_get_span(size, i, 1, ctype); var cn = atags[k].cloneNode(true); var cns = cn.getElementsByTagName("SPAN"); for (var l = 0; l < cns.length; l++) { if (cns[l].getAttribute("isibulletcss") || cns[l].getAttribute("isibullet")) cn.removeChild(cns[l]); } fi += '' + cn.innerHTML + ''; for (var i = size - 1; i >= 0; i--) fi += menu_ritem_get_span(size, i, null, ctype); f.innerHTML = fi; f = atags[k].insertBefore(f, atags[k].firstChild); atags[k].hasritem = f; } if (atags[k].cdiv) new menu_ritem_add_rounds(atags[k].cdiv); } } function menu_ritem_get_span(size, i, top, ctype) { var q = menu_options.ritem; var mlmr; if (i == 0) { var mo = q.ps[size] + q.mid; if (q.angle) mo = size - i; var fs = ""; if (menu_options.str) fs = "
"; mlmr = menu_ritem_get_corners(mo, null, top, ctype); return '' + fs + ''; } else { var md = size - (i); var ih = 1; var bs = 1; if (!q.angle) { if (i >= q.mid) { ih = Math.abs(q.mid - i) + 1; } else { bs = Math.abs(q.mid - i) + 1; md = q.ps[size - i] + q.mid; } if (top) q.osize += ih; } mlmr = menu_ritem_get_corners(md, bs, top, ctype); return ''; } } function menu_ritem_get_corners(mval, bval, top, ctype) { var q = menu_options.ritem; var ml = mval; var mr = mval; var bl = bval; var br = bval; if (top) { if (!q["corners_" + ctype][0]) { ml = 0; bl = 1; } if (!q["corners_" + ctype][1]) { mr = 0; br = 1; } } else { if (!q["corners_" + ctype][2]) { mr = 0; br = 1; } if (!q["corners_" + ctype][3]) { ml = 0; bl = 1; } } return new Array(ml, mr, bl, br); } /* Liste des options pour le menu principal menu0 */ menu_options.menu0 = new Object(); menu_options.menu0.rcorner_size = 6; menu_options.menu0.rcorner_border_color = "#dadada"; menu_options.menu0.rcorner_bg_color = "#F7F7F7"; menu_options.menu0.rcorner_apply_corners = new Array(false, true, true, true); menu_options.menu0.rcorner_top_line_auto_inset = true; menu_options.menu0.ritem_size = 4; menu_options.menu0.ritem_apply = "main"; menu_options.menu0.ritem_main_apply_corners = new Array(true, true, false, false); menu_options.menu0.ritem_show_on_actives = true; var menu_delay = false; //if (navigator.userAgent.indexOf("MSIE 5") > 0) menu_delay = true; //if (navigator.userAgent.indexOf("MSIE 6") > 0) menu_delay = true; function menu_init() { if (menu_delay) { menu_delay = false; setTimeout("menu_init()", 200); } else { menu_create(0,false,0,100,false,false,false,false,false); menu_enable_rounded_items(); menu_enable_rounded_corners(); } } (function(){ /* * jQuery 1.2.6 - New Wave Javascript * * Copyright (c) 2008 John Resig (jquery.com) * Dual licensed under the MIT (MIT-LICENSE.txt) * and GPL (GPL-LICENSE.txt) licenses. * * $Date: 2008-05-24 14:22:17 -0400 (Sat, 24 May 2008) $ * $Rev: 5685 $ */ // Map over jQuery in case of overwrite var _jQuery = window.jQuery, // Map over the $ in case of overwrite _$ = window.$; var jQuery = window.jQuery = window.$ = function( selector, context ) { // The jQuery object is actually just the init constructor 'enhanced' return new jQuery.fn.init( selector, context ); }; // A simple way to check for HTML strings or ID strings // (both of which we optimize for) var quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/, // Is it a simple selector isSimple = /^.[^:#\[\.]*$/, // Will speed up references to undefined, and allows munging its name. undefined; jQuery.fn = jQuery.prototype = { init: function( selector, context ) { // Make sure that a selection was provided selector = selector || document; // Handle $(DOMElement) if ( selector.nodeType ) { this[0] = selector; this.length = 1; return this; } // Handle HTML strings if ( typeof selector == "string" ) { // Are we dealing with HTML string or an ID? var match = quickExpr.exec( selector ); // Verify a match, and that no context was specified for #id if ( match && (match[1] || !context) ) { // HANDLE: $(html) -> $(array) if ( match[1] ) selector = jQuery.clean( [ match[1] ], context ); // HANDLE: $("#id") else { var elem = document.getElementById( match[3] ); // Make sure an element was located if ( elem ){ // Handle the case where IE and Opera return items // by name instead of ID if ( elem.id != match[3] ) return jQuery().find( selector ); // Otherwise, we inject the element directly into the jQuery object return jQuery( elem ); } selector = []; } // HANDLE: $(expr, [context]) // (which is just equivalent to: $(content).find(expr) } else return jQuery( context ).find( selector ); // HANDLE: $(function) // Shortcut for document ready } else if ( jQuery.isFunction( selector ) ) return jQuery( document )[ jQuery.fn.ready ? "ready" : "load" ]( selector ); return this.setArray(jQuery.makeArray(selector)); }, // The current version of jQuery being used jquery: "1.2.6", // The number of elements contained in the matched element set size: function() { return this.length; }, // The number of elements contained in the matched element set length: 0, // Get the Nth element in the matched element set OR // Get the whole matched element set as a clean array get: function( num ) { return num == undefined ? // Return a 'clean' array jQuery.makeArray( this ) : // Return just the object this[ num ]; }, // Take an array of elements and push it onto the stack // (returning the new matched element set) pushStack: function( elems ) { // Build a new jQuery matched element set var ret = jQuery( elems ); // Add the old object onto the stack (as a reference) ret.prevObject = this; // Return the newly-formed element set return ret; }, // Force the current matched set of elements to become // the specified array of elements (destroying the stack in the process) // You should use pushStack() in order to do this, but maintain the stack setArray: function( elems ) { // Resetting the length to 0, then using the native Array push // is a super-fast way to populate an object with array-like properties this.length = 0; Array.prototype.push.apply( this, elems ); return this; }, // Execute a callback for every element in the matched set. // (You can seed the arguments with an array of args, but this is // only used internally.) each: function( callback, args ) { return jQuery.each( this, callback, args ); }, // Determine the position of an element within // the matched set of elements index: function( elem ) { var ret = -1; // Locate the position of the desired element return jQuery.inArray( // If it receives a jQuery object, the first element is used elem && elem.jquery ? elem[0] : elem , this ); }, attr: function( name, value, type ) { var options = name; // Look for the case where we're accessing a style value if ( name.constructor == String ) if ( value === undefined ) return this[0] && jQuery[ type || "attr" ]( this[0], name ); else { options = {}; options[ name ] = value; } // Check to see if we're setting style values return this.each(function(i){ // Set all the styles for ( name in options ) jQuery.attr( type ? this.style : this, name, jQuery.prop( this, options[ name ], type, i, name ) ); }); }, css: function( key, value ) { // ignore negative width and height values if ( (key == 'width' || key == 'height') && parseFloat(value) < 0 ) value = undefined; return this.attr( key, value, "curCSS" ); }, text: function( text ) { if ( typeof text != "object" && text != null ) return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) ); var ret = ""; jQuery.each( text || this, function(){ jQuery.each( this.childNodes, function(){ if ( this.nodeType != 8 ) ret += this.nodeType != 1 ? this.nodeValue : jQuery.fn.text( [ this ] ); }); }); return ret; }, wrapAll: function( html ) { if ( this[0] ) // The elements to wrap the target around jQuery( html, this[0].ownerDocument ) .clone() .insertBefore( this[0] ) .map(function(){ var elem = this; while ( elem.firstChild ) elem = elem.firstChild; return elem; }) .append(this); return this; }, wrapInner: function( html ) { return this.each(function(){ jQuery( this ).contents().wrapAll( html ); }); }, wrap: function( html ) { return this.each(function(){ jQuery( this ).wrapAll( html ); }); }, append: function() { return this.domManip(arguments, true, false, function(elem){ if (this.nodeType == 1) this.appendChild( elem ); }); }, prepend: function() { return this.domManip(arguments, true, true, function(elem){ if (this.nodeType == 1) this.insertBefore( elem, this.firstChild ); }); }, before: function() { return this.domManip(arguments, false, false, function(elem){ this.parentNode.insertBefore( elem, this ); }); }, after: function() { return this.domManip(arguments, false, true, function(elem){ this.parentNode.insertBefore( elem, this.nextSibling ); }); }, end: function() { return this.prevObject || jQuery( [] ); }, find: function( selector ) { var elems = jQuery.map(this, function(elem){ return jQuery.find( selector, elem ); }); return this.pushStack( /[^+>] [^+>]/.test( selector ) || selector.indexOf("..") > -1 ? jQuery.unique( elems ) : elems ); }, clone: function( events ) { // Do the clone var ret = this.map(function(){ if ( jQuery.browser.msie && !jQuery.isXMLDoc(this) ) { // IE copies events bound via attachEvent when // using cloneNode. Calling detachEvent on the // clone will also remove the events from the orignal // In order to get around this, we use innerHTML. // Unfortunately, this means some modifications to // attributes in IE that are actually only stored // as properties will not be copied (such as the // the name attribute on an input). var clone = this.cloneNode(true), container = document.createElement("div"); container.appendChild(clone); return jQuery.clean([container.innerHTML])[0]; } else return this.cloneNode(true); }); // Need to set the expando to null on the cloned set if it exists // removeData doesn't work here, IE removes it from the original as well // this is primarily for IE but the data expando shouldn't be copied over in any browser var clone = ret.find("*").andSelf().each(function(){ if ( this[ expando ] != undefined ) this[ expando ] = null; }); // Copy the events from the original to the clone if ( events === true ) this.find("*").andSelf().each(function(i){ if (this.nodeType == 3) return; var events = jQuery.data( this, "events" ); for ( var type in events ) for ( var handler in events[ type ] ) jQuery.event.add( clone[ i ], type, events[ type ][ handler ], events[ type ][ handler ].data ); }); // Return the cloned set return ret; }, filter: function( selector ) { return this.pushStack( jQuery.isFunction( selector ) && jQuery.grep(this, function(elem, i){ return selector.call( elem, i ); }) || jQuery.multiFilter( selector, this ) ); }, not: function( selector ) { if ( selector.constructor == String ) // test special case where just one selector is passed in if ( isSimple.test( selector ) ) return this.pushStack( jQuery.multiFilter( selector, this, true ) ); else selector = jQuery.multiFilter( selector, this ); var isArrayLike = selector.length && selector[selector.length - 1] !== undefined && !selector.nodeType; return this.filter(function() { return isArrayLike ? jQuery.inArray( this, selector ) < 0 : this != selector; }); }, add: function( selector ) { return this.pushStack( jQuery.unique( jQuery.merge( this.get(), typeof selector == 'string' ? jQuery( selector ) : jQuery.makeArray( selector ) ))); }, is: function( selector ) { return !!selector && jQuery.multiFilter( selector, this ).length > 0; }, hasClass: function( selector ) { return this.is( "." + selector ); }, val: function( value ) { if ( value == undefined ) { if ( this.length ) { var elem = this[0]; // We need to handle select boxes special if ( jQuery.nodeName( elem, "select" ) ) { var index = elem.selectedIndex, values = [], options = elem.options, one = elem.type == "select-one"; // Nothing was selected if ( index < 0 ) return null; // Loop through all the selected options for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) { var option = options[ i ]; if ( option.selected ) { // Get the specifc value for the option value = jQuery.browser.msie && !option.attributes.value.specified ? option.text : option.value; // We don't need an array for one selects if ( one ) return value; // Multi-Selects return an array values.push( value ); } } return values; // Everything else, we just grab the value } else return (this[0].value || "").replace(/\r/g, ""); } return undefined; } if( value.constructor == Number ) value += ''; return this.each(function(){ if ( this.nodeType != 1 ) return; if ( value.constructor == Array && /radio|checkbox/.test( this.type ) ) this.checked = (jQuery.inArray(this.value, value) >= 0 || jQuery.inArray(this.name, value) >= 0); else if ( jQuery.nodeName( this, "select" ) ) { var values = jQuery.makeArray(value); jQuery( "option", this ).each(function(){ this.selected = (jQuery.inArray( this.value, values ) >= 0 || jQuery.inArray( this.text, values ) >= 0); }); if ( !values.length ) this.selectedIndex = -1; } else this.value = value; }); }, html: function( value ) { return value == undefined ? (this[0] ? this[0].innerHTML : null) : this.empty().append( value ); }, replaceWith: function( value ) { return this.after( value ).remove(); }, eq: function( i ) { return this.slice( i, i + 1 ); }, slice: function() { return this.pushStack( Array.prototype.slice.apply( this, arguments ) ); }, map: function( callback ) { return this.pushStack( jQuery.map(this, function(elem, i){ return callback.call( elem, i, elem ); })); }, andSelf: function() { return this.add( this.prevObject ); }, data: function( key, value ){ var parts = key.split("."); parts[1] = parts[1] ? "." + parts[1] : ""; if ( value === undefined ) { var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); if ( data === undefined && this.length ) data = jQuery.data( this[0], key ); return data === undefined && parts[1] ? this.data( parts[0] ) : data; } else return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function(){ jQuery.data( this, key, value ); }); }, removeData: function( key ){ return this.each(function(){ jQuery.removeData( this, key ); }); }, domManip: function( args, table, reverse, callback ) { var clone = this.length > 1, elems; return this.each(function(){ if ( !elems ) { elems = jQuery.clean( args, this.ownerDocument ); if ( reverse ) elems.reverse(); } var obj = this; if ( table && jQuery.nodeName( this, "table" ) && jQuery.nodeName( elems[0], "tr" ) ) obj = this.getElementsByTagName("tbody")[0] || this.appendChild( this.ownerDocument.createElement("tbody") ); var scripts = jQuery( [] ); jQuery.each(elems, function(){ var elem = clone ? jQuery( this ).clone( true )[0] : this; // execute all scripts after the elements have been injected if ( jQuery.nodeName( elem, "script" ) ) scripts = scripts.add( elem ); else { // Remove any inner scripts for later evaluation if ( elem.nodeType == 1 ) scripts = scripts.add( jQuery( "script", elem ).remove() ); // Inject the elements into the document callback.call( obj, elem ); } }); scripts.each( evalScript ); }); } }; // Give the init function the jQuery prototype for later instantiation jQuery.fn.init.prototype = jQuery.fn; function evalScript( i, elem ) { if ( elem.src ) jQuery.ajax({ url: elem.src, async: false, dataType: "script" }); else jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" ); if ( elem.parentNode ) elem.parentNode.removeChild( elem ); } function now(){ return +new Date; } jQuery.extend = jQuery.fn.extend = function() { // copy reference to target object var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options; // Handle a deep copy situation if ( target.constructor == Boolean ) { deep = target; target = arguments[1] || {}; // skip the boolean and the target i = 2; } // Handle case when target is a string or something (possible in deep copy) if ( typeof target != "object" && typeof target != "function" ) target = {}; // extend jQuery itself if only one argument is passed if ( length == i ) { target = this; --i; } for ( ; i < length; i++ ) // Only deal with non-null/undefined values if ( (options = arguments[ i ]) != null ) // Extend the base object for ( var name in options ) { var src = target[ name ], copy = options[ name ]; // Prevent never-ending loop if ( target === copy ) continue; // Recurse if we're merging object values if ( deep && copy && typeof copy == "object" && !copy.nodeType ) target[ name ] = jQuery.extend( deep, // Never move original objects, clone them src || ( copy.length != null ? [ ] : { } ) , copy ); // Don't bring in undefined values else if ( copy !== undefined ) target[ name ] = copy; } // Return the modified object return target; }; var expando = "jQuery" + now(), uuid = 0, windowData = {}, // exclude the following css properties to add px exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i, // cache defaultView defaultView = document.defaultView || {}; jQuery.extend({ noConflict: function( deep ) { window.$ = _$; if ( deep ) window.jQuery = _jQuery; return jQuery; }, // See test/unit/core.js for details concerning this function. isFunction: function( fn ) { return !!fn && typeof fn != "string" && !fn.nodeName && fn.constructor != Array && /^[\s[]?function/.test( fn + "" ); }, // check if an element is in a (or is an) XML document isXMLDoc: function( elem ) { return elem.documentElement && !elem.body || elem.tagName && elem.ownerDocument && !elem.ownerDocument.body; }, // Evalulates a script in a global context globalEval: function( data ) { data = jQuery.trim( data ); if ( data ) { // Inspired by code by Andrea Giammarchi // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html var head = document.getElementsByTagName("head")[0] || document.documentElement, script = document.createElement("script"); script.type = "text/javascript"; if ( jQuery.browser.msie ) script.text = data; else script.appendChild( document.createTextNode( data ) ); // Use insertBefore instead of appendChild to circumvent an IE6 bug. // This arises when a base node is used (#2709). head.insertBefore( script, head.firstChild ); head.removeChild( script ); } }, nodeName: function( elem, name ) { return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase(); }, cache: {}, data: function( elem, name, data ) { elem = elem == window ? windowData : elem; var id = elem[ expando ]; // Compute a unique ID for the element if ( !id ) id = elem[ expando ] = ++uuid; // Only generate the data cache if we're // trying to access or manipulate it if ( name && !jQuery.cache[ id ] ) jQuery.cache[ id ] = {}; // Prevent overriding the named cache with undefined values if ( data !== undefined ) jQuery.cache[ id ][ name ] = data; // Return the named cache data, or the ID for the element return name ? jQuery.cache[ id ][ name ] : id; }, removeData: function( elem, name ) { elem = elem == window ? windowData : elem; var id = elem[ expando ]; // If we want to remove a specific section of the element's data if ( name ) { if ( jQuery.cache[ id ] ) { // Remove the section of cache data delete jQuery.cache[ id ][ name ]; // If we've removed all the data, remove the element's cache name = ""; for ( name in jQuery.cache[ id ] ) break; if ( !name ) jQuery.removeData( elem ); } // Otherwise, we want to remove all of the element's data } else { // Clean up the element expando try { delete elem[ expando ]; } catch(e){ // IE has trouble directly removing the expando // but it's ok with using removeAttribute if ( elem.removeAttribute ) elem.removeAttribute( expando ); } // Completely remove the data cache delete jQuery.cache[ id ]; } }, // args is for internal usage only each: function( object, callback, args ) { var name, i = 0, length = object.length; if ( args ) { if ( length == undefined ) { for ( name in object ) if ( callback.apply( object[ name ], args ) === false ) break; } else for ( ; i < length; ) if ( callback.apply( object[ i++ ], args ) === false ) break; // A special, fast, case for the most common use of each } else { if ( length == undefined ) { for ( name in object ) if ( callback.call( object[ name ], name, object[ name ] ) === false ) break; } else for ( var value = object[0]; i < length && callback.call( value, i, value ) !== false; value = object[++i] ){} } return object; }, prop: function( elem, value, type, i, name ) { // Handle executable functions if ( jQuery.isFunction( value ) ) value = value.call( elem, i ); // Handle passing in a number to a CSS property return value && value.constructor == Number && type == "curCSS" && !exclude.test( name ) ? value + "px" : value; }, className: { // internal only, use addClass("class") add: function( elem, classNames ) { jQuery.each((classNames || "").split(/\s+/), function(i, className){ if ( elem.nodeType == 1 && !jQuery.className.has( elem.className, className ) ) elem.className += (elem.className ? " " : "") + className; }); }, // internal only, use removeClass("class") remove: function( elem, classNames ) { if (elem.nodeType == 1) elem.className = classNames != undefined ? jQuery.grep(elem.className.split(/\s+/), function(className){ return !jQuery.className.has( classNames, className ); }).join(" ") : ""; }, // internal only, use hasClass("class") has: function( elem, className ) { return jQuery.inArray( className, (elem.className || elem).toString().split(/\s+/) ) > -1; } }, // A method for quickly swapping in/out CSS properties to get correct calculations swap: function( elem, options, callback ) { var old = {}; // Remember the old values, and insert the new ones for ( var name in options ) { old[ name ] = elem.style[ name ]; elem.style[ name ] = options[ name ]; } callback.call( elem ); // Revert the old values for ( var name in options ) elem.style[ name ] = old[ name ]; }, css: function( elem, name, force ) { if ( name == "width" || name == "height" ) { var val, props = { position: "absolute", visibility: "hidden", display:"block" }, which = name == "width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ]; function getWH() { val = name == "width" ? elem.offsetWidth : elem.offsetHeight; var padding = 0, border = 0; jQuery.each( which, function() { padding += parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0; border += parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0; }); val -= Math.round(padding + border); } if ( jQuery(elem).is(":visible") ) getWH(); else jQuery.swap( elem, props, getWH ); return Math.max(0, val); } return jQuery.curCSS( elem, name, force ); }, curCSS: function( elem, name, force ) { var ret, style = elem.style; // A helper method for determining if an element's values are broken function color( elem ) { if ( !jQuery.browser.safari ) return false; // defaultView is cached var ret = defaultView.getComputedStyle( elem, null ); return !ret || ret.getPropertyValue("color") == ""; } // We need to handle opacity special in IE if ( name == "opacity" && jQuery.browser.msie ) { ret = jQuery.attr( style, "opacity" ); return ret == "" ? "1" : ret; } // Opera sometimes will give the wrong display answer, this fixes it, see #2037 if ( jQuery.browser.opera && name == "display" ) { var save = style.outline; style.outline = "0 solid black"; style.outline = save; } // Make sure we're using the right name for getting the float value if ( name.match( /float/i ) ) name = styleFloat; if ( !force && style && style[ name ] ) ret = style[ name ]; else if ( defaultView.getComputedStyle ) { // Only "float" is needed here if ( name.match( /float/i ) ) name = "float"; name = name.replace( /([A-Z])/g, "-$1" ).toLowerCase(); var computedStyle = defaultView.getComputedStyle( elem, null ); if ( computedStyle && !color( elem ) ) ret = computedStyle.getPropertyValue( name ); // If the element isn't reporting its values properly in Safari // then some display: none elements are involved else { var swap = [], stack = [], a = elem, i = 0; // Locate all of the parent display: none elements for ( ; a && color(a); a = a.parentNode ) stack.unshift(a); // Go through and make them visible, but in reverse // (It would be better if we knew the exact display type that they had) for ( ; i < stack.length; i++ ) if ( color( stack[ i ] ) ) { swap[ i ] = stack[ i ].style.display; stack[ i ].style.display = "block"; } // Since we flip the display style, we have to handle that // one special, otherwise get the value ret = name == "display" && swap[ stack.length - 1 ] != null ? "none" : ( computedStyle && computedStyle.getPropertyValue( name ) ) || ""; // Finally, revert the display styles back for ( i = 0; i < swap.length; i++ ) if ( swap[ i ] != null ) stack[ i ].style.display = swap[ i ]; } // We should always get a number back from opacity if ( name == "opacity" && ret == "" ) ret = "1"; } else if ( elem.currentStyle ) { var camelCase = name.replace(/\-(\w)/g, function(all, letter){ return letter.toUpperCase(); }); ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ]; // From the awesome hack by Dean Edwards // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 // If we're not dealing with a regular pixel number // but a number that has a weird ending, we need to convert it to pixels if ( !/^\d+(px)?$/i.test( ret ) && /^\d/.test( ret ) ) { // Remember the original values var left = style.left, rsLeft = elem.runtimeStyle.left; // Put in the new values to get a computed value out elem.runtimeStyle.left = elem.currentStyle.left; style.left = ret || 0; ret = style.pixelLeft + "px"; // Revert the changed values style.left = left; elem.runtimeStyle.left = rsLeft; } } return ret; }, clean: function( elems, context ) { var ret = []; context = context || document; // !context.createElement fails in IE with an error but returns typeof 'object' if (typeof context.createElement == 'undefined') context = context.ownerDocument || context[0] && context[0].ownerDocument || document; jQuery.each(elems, function(i, elem){ if ( !elem ) return; if ( elem.constructor == Number ) elem += ''; // Convert html string into DOM nodes if ( typeof elem == "string" ) { // Fix "XHTML"-style tags in all browsers elem = elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all, front, tag){ return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i) ? all : front + ">"; }); // Trim whitespace, otherwise indexOf won't work as expected var tags = jQuery.trim( elem ).toLowerCase(), div = context.createElement("div"); var wrap = // option or optgroup !tags.indexOf("", "" ] || !tags.indexOf("", "" ] || tags.match(/^<(thead|tbody|tfoot|colg|cap)/) && [ 1, "", "
" ] || !tags.indexOf("", "" ] || // matched above (!tags.indexOf("", "" ] || !tags.indexOf("", "" ] || // IE can't serialize and