function favoris(titre,url) { browserName = navigator.appName; browserVer = parseInt(navigator.appVersion); if (browserName == "Microsoft Internet Explorer" & browserVer >= 4) { window.external.AddFavorite(url,titre); } else { window.sidebar.addPanel(titre,url,""); } } function pop(adresse) { var win = window.open(adresse,"pop", "top=50,left=50,scrollbars=yes,dialog=yes,minimizable=yes,modal=yes,width=640,height=480,resizable=yes"); win.resizeTo(840,680); win.focus(); } function enableMelTo(id) { var lnk,i; if(!document.getElementById || !document.getElementsByTagName) return; if(id==null) lnk=document.getElementsByTagName("a"); else lnk=document.getElementById(id).getElementsByTagName("a"); var reg = /^.*melto.*$/ for(i=0;i' ; } if ( document.getElementById('contact_message').value == '' ) alerte += 'Merci de saisir un message
' ; if ( alerte != '' ) { document.getElementById('div_contact').style.height = 'auto' ; document.getElementById('div_contact').style.overflow = 'visible' ; document.getElementById('erreur').innerHTML = alerte ; return false ; } return true; } function verif_mail(email) { var reg= new RegExp("^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]{2,}[.][a-z]{2,3}$", "g"); return email.match(reg) ; } function verif_url(url) { var reg= new RegExp("^(http\://)?[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(/\S*)?$", "g"); return url.match(reg) ; } function ajax(fichierPHP,cible,variables,nowait) { if ( document.getElementById(cible) ) { cible = document.getElementById(cible) ; } else { if ( ! cible ) { alert('Cible inconnue : '+cible) ; return ; } } var xhr_object = null; if(window.XMLHttpRequest) { // Firefox + Opera xhr_object = new XMLHttpRequest(); } else if(window.ActiveXObject) { // Internet Explorer xhr_object = new ActiveXObject('Microsoft.XMLHTTP'); } else { // XMLHttpRequest non supporté par le navigateur alert('Votre navigateur ne supporte pas les objets XMLHTTPRequest...'); return; } xhr_object.open('POST',fichierPHP, true); xhr_object.onreadystatechange = function() { if (xhr_object.readyState < 4) { if ( nowait == true ) ; else cible.innerHTML = '
Chargement ...
'; } if(xhr_object.readyState == 4) { var chaine=xhr_object.responseText; var reg=new RegExp("(?:)((\n|\r|.)*?)(?:<\/script>)", "g"); var test = chaine.match(reg); test = test+''; test = test.replace(/(?:)/g,''); test = test.replace(/(?:<\/script>)/g,''); test = test.replace(/;,/g,';'); cible.innerHTML = xhr_object.responseText; eval(test); } } xhr_object.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); var data = variables; xhr_object.send(data); } function ajax_mailer_form(form) { var fichierphp = 'mailer.inc.php' ; var cible = 'form_ajax_envoi' ; var f = document.getElementById(form); params = '' ; if(f) { var champs = f.getElementsByTagName("input"); for(var i=0, n=champs.length; i' ; } if ( document.getElementById('contact_message').value == '' ) alerte += 'Merci de saisir un message
' ; if ( alerte != '' ) { document.getElementById('erreur').innerHTML = alerte ; return false ; } return true; } function verif_phone(phone) { var reg = /^[0-9\. +]{10,14}$/ return (reg.exec(phone)!=null) } function ajax_chargement(a,b,c,texte) { $('body').append('
') ; $('#chargement .content').prepend(texte) ; ajax(a,b,c,true) ; } function ajax_send_form(form,fichierphp,cible,show) { var f = document.getElementById(form); params = '' ; if(f) { var champs = f.getElementsByTagName("input"); for(var i=0, n=champs.length; i document.body.offsetHeight){ // all but Explorer Mac xScroll = document.body.scrollWidth; yScroll = document.body.scrollHeight; } else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari xScroll = document.body.offsetWidth; yScroll = document.body.offsetHeight; } var windowWidth, windowHeight; if (self.innerHeight) { // all except Explorer windowWidth = self.innerWidth; windowHeight = self.innerHeight; } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode windowWidth = document.documentElement.clientWidth; windowHeight = document.documentElement.clientHeight; } else if (document.body) { // other Explorers windowWidth = document.body.clientWidth; windowHeight = document.body.clientHeight; } // for small pages with total height less then height of the viewport if(yScroll < windowHeight){ pageHeight = windowHeight; } else { pageHeight = yScroll; } // for small pages with total width less then width of the viewport if(xScroll < windowWidth){ pageWidth = windowWidth; } else { pageWidth = xScroll; } arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) return arrayPageSize; } // // pause(numberMillis) // Pauses code execution for specified time. Uses busy code, not good. // Code from http://www.faqts.com/knowledge_base/view.phtml/aid/1602 // function pause(numberMillis) { var now = new Date(); var exitTime = now.getTime() + numberMillis; while (true) { now = new Date(); if (now.getTime() > exitTime) return; } } // // getKey(key) // Gets keycode. If 'x' is pressed then it hides the lightbox. // function getKey(e){ if (e == null) { // ie keycode = event.keyCode; } else { // mozilla keycode = e.which; } key = String.fromCharCode(keycode).toLowerCase(); if(key == 'x'){ hideLightbox(); } } // // listenKey() // function listenKey () { document.onkeypress = getKey; } // // showLightbox() // Preloads images. Pleaces new image in lightbox then centers and displays. // function showLightbox(objLink) { // prep objects var objOverlay = document.getElementById('overlay'); var objLightbox = document.getElementById('lightbox'); var objCaption = document.getElementById('lightboxCaption'); var objImage = document.getElementById('lightboxImage'); var objLoadingImage = document.getElementById('loadingImage'); var objLightboxDetails = document.getElementById('lightboxDetails'); var arrayPageSize = getPageSize(); var arrayPageScroll = getPageScroll(); // center loadingImage if it exists if (objLoadingImage) { objLoadingImage.style.top = (arrayPageScroll[1] + ((arrayPageSize[3] - 35 - objLoadingImage.height) / 2) + 'px'); objLoadingImage.style.left = (((arrayPageSize[0] - 20 - objLoadingImage.width) / 2) + 'px'); objLoadingImage.style.display = 'block'; } // set height of Overlay to take up whole page and show objOverlay.style.height = (arrayPageSize[1] + 'px'); objOverlay.style.display = 'block'; // preload image imgPreload = new Image(); imgPreload.onload=function(){ objImage.src = objLink.href; // center lightbox and make sure that the top and left values are not negative // and the image placed outside the viewport var lightboxTop = arrayPageScroll[1] + ((arrayPageSize[3] - 35 - imgPreload.height) / 2); var lightboxLeft = ((arrayPageSize[0] - 20 - imgPreload.width) / 2); objLightbox.style.top = (lightboxTop < 0) ? "0px" : lightboxTop + "px"; objLightbox.style.left = (lightboxLeft < 0) ? "0px" : lightboxLeft + "px"; objLightboxDetails.style.width = imgPreload.width + 'px'; if(objLink.getAttribute('title')){ objCaption.style.display = 'block'; //objCaption.style.width = imgPreload.width + 'px'; objCaption.innerHTML = objLink.getAttribute('title'); } else { objCaption.style.display = 'none'; } // A small pause between the image loading and displaying is required with IE, // this prevents the previous image displaying for a short burst causing flicker. if (navigator.appVersion.indexOf("MSIE")!=-1){ pause(250); } if (objLoadingImage) { objLoadingImage.style.display = 'none'; } // Hide select boxes as they will 'peek' through the image in IE selects = document.getElementsByTagName("select"); for (i = 0; i != selects.length; i++) { selects[i].style.visibility = "hidden"; } objLightbox.style.display = 'block'; // After image is loaded, update the overlay height as the new image might have // increased the overall page height. arrayPageSize = getPageSize(); objOverlay.style.height = (arrayPageSize[1] + 'px'); // Check for 'x' keypress listenKey(); return false; } imgPreload.src = objLink.href; } // // hideLightbox() // function hideLightbox() { // get objects objOverlay = document.getElementById('overlay'); objLightbox = document.getElementById('lightbox'); // hide lightbox and overlay objOverlay.style.display = 'none'; objLightbox.style.display = 'none'; // make select boxes visible selects = document.getElementsByTagName("select"); for (i = 0; i != selects.length; i++) { selects[i].style.visibility = "visible"; } // disable keypress listener document.onkeypress = ''; } // // initLightbox() // Function runs on window load, going through link tags looking for rel="lightbox". // These links receive onclick events that enable the lightbox display for their targets. // The function also inserts html markup at the top of the page which will be used as a // container for the overlay pattern and the inline image. // function initLightbox() { if (!document.getElementsByTagName){ return; } var anchors = document.getElementsByTagName("a"); // loop through all anchor tags for (var i=0; i // // // var objBody = document.getElementsByTagName("body").item(0); // create overlay div and hardcode some functional styles (aesthetic styles are in CSS file) var objOverlay = document.createElement("div"); objOverlay.setAttribute('id','overlay'); objOverlay.onclick = function () {hideLightbox(); return false;} objOverlay.style.display = 'none'; objOverlay.style.position = 'absolute'; objOverlay.style.top = '0'; objOverlay.style.left = '0'; objOverlay.style.zIndex = '90'; objOverlay.style.width = '100%'; objBody.insertBefore(objOverlay, objBody.firstChild); var arrayPageSize = getPageSize(); var arrayPageScroll = getPageScroll(); // preload and create loader image var imgPreloader = new Image(); // if loader image found, create link to hide lightbox and create loadingimage imgPreloader.onload=function(){ var objLoadingImageLink = document.createElement("a"); objLoadingImageLink.setAttribute('href','#'); objLoadingImageLink.onclick = function () {hideLightbox(); return false;} objOverlay.appendChild(objLoadingImageLink); var objLoadingImage = document.createElement("img"); objLoadingImage.src = loadingImage; objLoadingImage.setAttribute('id','loadingImage'); objLoadingImage.style.position = 'absolute'; objLoadingImage.style.zIndex = '150'; objLoadingImageLink.appendChild(objLoadingImage); imgPreloader.onload=function(){}; // clear onLoad, as IE will flip out w/animated gifs return false; } imgPreloader.src = loadingImage; // create lightbox div, same note about styles as above var objLightbox = document.createElement("div"); objLightbox.setAttribute('id','lightbox'); objLightbox.style.display = 'none'; objLightbox.style.position = 'absolute'; objLightbox.style.zIndex = '100'; objBody.insertBefore(objLightbox, objOverlay.nextSibling); // create link var objLink = document.createElement("a"); objLink.setAttribute('href','#'); objLink.setAttribute('title','Click to close'); objLink.onclick = function () {hideLightbox(); return false;} objLightbox.appendChild(objLink); // preload and create close button image var imgPreloadCloseButton = new Image(); // if close button image found, imgPreloadCloseButton.onload=function(){ var objCloseButton = document.createElement("img"); objCloseButton.src = closeButton; objCloseButton.setAttribute('id','closeButton'); objCloseButton.style.position = 'absolute'; objCloseButton.style.zIndex = '200'; objLink.appendChild(objCloseButton); return false; } imgPreloadCloseButton.src = closeButton; // create image var objImage = document.createElement("img"); objImage.setAttribute('id','lightboxImage'); objLink.appendChild(objImage); // create details div, a container for the caption and keyboard message var objLightboxDetails = document.createElement("div"); objLightboxDetails.setAttribute('id','lightboxDetails'); objLightbox.appendChild(objLightboxDetails); // create caption var objCaption = document.createElement("div"); objCaption.setAttribute('id','lightboxCaption'); objCaption.style.display = 'none'; objLightboxDetails.appendChild(objCaption); // create keyboard message var objKeyboardMsg = document.createElement("div"); objKeyboardMsg.setAttribute('id','keyboardMsg'); objKeyboardMsg.innerHTML = 'Appuyez sur x pour fermer'; objLightboxDetails.appendChild(objKeyboardMsg); } // // addLoadEvent() // Adds event to window.onload without overwriting currently assigned onload functions. // Function found at Simon Willison's weblog - http://simon.incutio.com/ // function addLoadEvent(func) { var oldonload = window.onload; if (typeof window.onload != 'function'){ window.onload = func; } else { window.onload = function(){ oldonload(); func(); } } } addLoadEvent(initLightbox); // run initLightbox onLoad function checkSalle() { if ( document.getElementById('salle_existe').checked ) { document.getElementById('div_salle_existante').style.display = 'block' ; document.getElementById('div_salle_non_existante').style.display = 'none' ; } else { if ( document.getElementById('salle_existe_non').checked ) { document.getElementById('div_salle_existante').style.display = 'none' ; document.getElementById('div_salle_non_existante').style.display = 'block' ; } } } function favoris(titre,url) { browserName = navigator.appName; browserVer = parseInt(navigator.appVersion); if (browserName == "Microsoft Internet Explorer" & browserVer >= 4) { window.external.AddFavorite(url,titre); } else { window.sidebar.addPanel(titre,url,""); } } function enableMelTo(id) { var lnk,i; if(!document.getElementById || !document.getElementsByTagName) return; if(id==null) lnk=document.getElementsByTagName("a"); else lnk=document.getElementById(id).getElementsByTagName("a"); var reg = /^.*melto.*$/ for(i=0;i 11 ) add = ' double' ; if ( a.getAttribute('rel') == type ) a.className = 'selected'+add ; else a.className = ''+add ; } } function ajouter_favoris(type,id) { ajax('./pages/annuaires/navigation/favoris.inc.php','btn_favoris_'+type+'_'+id,'type='+type+'&id='+id) ; } function verif_contact() { var alerte = '' ; var sep = '' ; if ( document.getElementById('form_erreur') ) sep = '
' ; else sep = "\n" ; if ( document.getElementById('nom').value == '' ) { $('#nom').css('outline','1px solid red') ; alerte += 'Merci de préciser votre nom'+sep ; } if ( document.getElementById('prenom').value == '' ) alerte += 'Merci de préciser votre prénom'+sep ; if ( document.getElementById('adresse1').value == '' ) alerte += 'Merci de saisir votre adresse'+sep ; if ( document.getElementById('code_postal').value == '' ) alerte += 'Merci de saisir votre code postal'+sep ; if ( document.getElementById('ville').value == '' ) alerte += 'Merci de saisir votre ville'+sep ; /* Tel et mail invalides */ if ( ( document.getElementById('telephone').value == '' || ! verif_phone(document.getElementById('telephone').value) ) && ( document.getElementById('mail').value == '' || ! verif_mail(document.getElementById('mail').value) ) ) alerte += 'Merci de préciser un numéro de téléphone ou une adresse mail valide'+sep ; /* Tel valide */ if ( document.getElementById('telephone').value != '' && verif_phone(document.getElementById('telephone').value) ) { if ( document.getElementById('mail').value != '' && ! verif_mail(document.getElementById('mail').value) ) alerte += 'L\'adresse mail saisie est invalide'+sep ; } if ( document.getElementById('message').value == '' ) alerte += 'Merci de saisir un message'+sep ; if ( alerte != '' ) { if ( document.getElementById('form_erreur') ) document.getElementById('form_erreur').innerHTML = '

'+alerte+'

' ; else alert(alerte) ; return false ; } return true; } /* FONCTIONS DES MOTEURS DE RECHERCHE ANNUAIRES */ function annuaire_check_resultats() { var page = document.getElementById('annuaire_page_resultat').innerHTML ; ajax_send_form('annuaire_form_recherche','./pages/annuaires/recherche/nb_results.php','nb_results') ; } function annuaire_checker_subventions() { var div = document.getElementById('recherche_subventions') ; var checkboxs = div.getElementsByTagName('input') ; var input_cache = document.getElementById('subventions') ; input_cache.innerHTML = '' ; var compteur = 0 ; for ( var i = 0 ; i < checkboxs.length ; i++ ) { var checkbox = checkboxs[i] ; var pattern = /^subventions/ ; if ( pattern.exec(checkbox.getAttribute('name')) && checkbox.checked ) { if ( input_cache.innerHTML == '' ) input_cache.innerHTML = checkbox.getAttribute('rel') ; else input_cache.innerHTML += ', '+checkbox.getAttribute('rel') ; compteur++ ; } } if ( compteur > 0 ) document.getElementById('recherche_subventions_nbcheck').innerHTML = '('+compteur+')' ; else { document.getElementById('recherche_subventions_nbcheck').innerHTML = '' ; input_cache.innerHTML = 'Cliquez ici' ; } annuaire_check_resultats() ; } function annuaire_checker_regions() { var div = document.getElementById('recherche_regions') ; var checkboxs = div.getElementsByTagName('input') ; var input_cache = document.getElementById('regions') ; input_cache.innerHTML = '' ; var compteur = 0 ; for ( var i = 0 ; i < checkboxs.length ; i++ ) { var checkbox = checkboxs[i] ; var pattern = /^region/ ; if ( pattern.exec(checkbox.getAttribute('name')) && checkbox.checked ) { if ( input_cache.innerHTML == '' ) input_cache.innerHTML = checkbox.getAttribute('rel') ; else input_cache.innerHTML += ', '+checkbox.getAttribute('rel') ; compteur++ ; } } if ( compteur > 0 ) document.getElementById('recherche_regions_nbcheck').innerHTML = '('+compteur+')' ; else { document.getElementById('recherche_regions_nbcheck').innerHTML = '' ; input_cache.innerHTML = 'Cliquez ici' ; } annuaire_check_resultats() ; } function annuaire_checker_genres() { var div = document.getElementById('recherche_genres') ; var checkboxs = div.getElementsByTagName('input') ; var input_cache = document.getElementById('genres') ; input_cache.innerHTML = '' ; var compteur = 0 ; var pattern = /^cs/ ; for ( var i = 0 ; i < checkboxs.length ; i++ ) { var checkbox = checkboxs[i] ; if ( pattern.exec(checkbox.getAttribute('name')) ) { if ( checkbox.checked ) { if ( input_cache.innerHTML == '' ) input_cache.innerHTML = checkbox.getAttribute('rel') ; else input_cache.innerHTML += ', '+checkbox.getAttribute('rel') ; compteur++ ; } } } if ( compteur > 0 ) document.getElementById('recherche_genres_nbcheck').innerHTML = '('+compteur+')' ; else { document.getElementById('recherche_genres_nbcheck').innerHTML = '' ; input_cache.innerHTML = 'Cliquez ici' ; } annuaire_check_resultats() ; } function annuaire_checker_genres_enfants(id) { var div = document.getElementById('recherche_genres') ; var checkbox = document.getElementById(id) ; var pattern_parent = /^parent/ ; if ( pattern_parent.exec(checkbox.getAttribute('class')) ) { var checkboxs_enfants = div.getElementsByTagName('input') ; for ( var j = 0 ; j < checkboxs_enfants.length ; j++ ) { checkbox_enfant = checkboxs_enfants[j] ; if ( checkbox_enfant.getAttribute('class') == 'fils_de_'+checkbox.getAttribute('class') ) checkbox_enfant.checked = checkbox.checked ; } } } var timeoutREGION ; var timeoutGENRES ; var timeoutSUBVENTIONS ; function annuaire_show_timer(id,timeoute,time) { if ( time == null ) time = 1000 ; if ( id == 'recherche_regions' ) timeoutREGION = window.setTimeout("annuaire_show('"+id+"','none')",time) ; if ( id == 'recherche_genres' ) timeoutGENRES = window.setTimeout("annuaire_show('"+id+"','none')",time) ; if ( id == 'recherche_subventions' ) timeoutSUBVENTIONS = window.setTimeout("annuaire_show('"+id+"','none')",time) ; } function annuaire_show(id,show) { if ( id == 'recherche_regions' && show != 'none' ) { annuaire_show('recherche_genres','none') ; annuaire_annuler_timer(timeoutREGION) ; } if ( id == 'recherche_genres' && show != 'none' ) { annuaire_show('recherche_regions','none') ; annuaire_annuler_timer(timeoutGENRES) ; } if ( id == 'recherche_subventions' && show != 'none' ) { annuaire_show('recherche_subventions','none') ; annuaire_annuler_timer(timeoutSUBVENTIONS) ; } if ( document.getElementById(id) ) { var div_ = document.getElementById(id) ; if ( show != null && ( show == 'block' || show == 'none' ) ) div_.style.display = show ; else { if ( div_.style.display == 'block' ) div_.style.display = 'none' ; else div_.style.display = 'block' ; } } } function annuaire_annuler_timer(id) { if ( id == 'recherche_regions' ) window.clearTimeout(timeoutREGION) ; if ( id == 'recherche_genres' ) window.clearTimeout(timeoutGENRES) ; if ( id == 'recherche_subventions' ) window.clearTimeout(timeoutSUBVENTIONS) ; } (function(){ /* * jQuery 1.2.1 - New Wave Javascript * * Copyright (c) 2007 John Resig (jquery.com) * Dual licensed under the MIT (MIT-LICENSE.txt) * and GPL (GPL-LICENSE.txt) licenses. * * $Date: 2007-09-16 23:42:06 -0400 (Sun, 16 Sep 2007) $ * $Rev: 3353 $ */ // Map over jQuery in case of overwrite if ( typeof jQuery != "undefined" ) var _jQuery = jQuery; var jQuery = window.jQuery = function(selector, context) { // If the context is a namespace object, return a new object return this instanceof jQuery ? this.init(selector, context) : new jQuery(selector, context); }; // Map over the $ in case of overwrite if ( typeof $ != "undefined" ) var _$ = $; // Map the jQuery namespace to the '$' one window.$ = jQuery; var quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/; jQuery.fn = jQuery.prototype = { init: function(selector, context) { // Make sure that a selection was provided selector = selector || document; // Handle HTML strings if ( typeof selector == "string" ) { var m = quickExpr.exec(selector); if ( m && (m[1] || !context) ) { // HANDLE: $(html) -> $(array) if ( m[1] ) selector = jQuery.clean( [ m[1] ], context ); // HANDLE: $("#id") else { var tmp = document.getElementById( m[3] ); if ( tmp ) // Handle the case where IE and Opera return items // by name instead of ID if ( tmp.id != m[3] ) return jQuery().find( selector ); else { this[0] = tmp; this.length = 1; return this; } else selector = []; } // HANDLE: $(expr) } else return new jQuery( context ).find( selector ); // HANDLE: $(function) // Shortcut for document ready } else if ( jQuery.isFunction(selector) ) return new jQuery(document)[ jQuery.fn.ready ? "ready" : "load" ]( selector ); return this.setArray( // HANDLE: $(array) selector.constructor == Array && selector || // HANDLE: $(arraylike) // Watch for when an array-like object is passed as the selector (selector.jquery || selector.length && selector != window && !selector.nodeType && selector[0] != undefined && selector[0].nodeType) && jQuery.makeArray( selector ) || // HANDLE: $(*) [ selector ] ); }, jquery: "1.2.1", size: function() { return this.length; }, length: 0, get: function( num ) { return num == undefined ? // Return a 'clean' array jQuery.makeArray( this ) : // Return just the object this[num]; }, pushStack: function( a ) { var ret = jQuery(a); ret.prevObject = this; return ret; }, setArray: function( a ) { this.length = 0; Array.prototype.push.apply( this, a ); return this; }, each: function( fn, args ) { return jQuery.each( this, fn, args ); }, index: function( obj ) { var pos = -1; this.each(function(i){ if ( this == obj ) pos = i; }); return pos; }, attr: function( key, value, type ) { var obj = key; // Look for the case where we're accessing a style value if ( key.constructor == String ) if ( value == undefined ) return this.length && jQuery[ type || "attr" ]( this[0], key ) || undefined; else { obj = {}; obj[ key ] = value; } // Check to see if we're setting style values return this.each(function(index){ // Set all the styles for ( var prop in obj ) jQuery.attr( type ? this.style : this, prop, jQuery.prop(this, obj[prop], type, index, prop) ); }); }, css: function( key, value ) { return this.attr( key, value, "curCSS" ); }, text: function(e) { if ( typeof e != "object" && e != null ) return this.empty().append( document.createTextNode( e ) ); var t = ""; jQuery.each( e || this, function(){ jQuery.each( this.childNodes, function(){ if ( this.nodeType != 8 ) t += this.nodeType != 1 ? this.nodeValue : jQuery.fn.text([ this ]); }); }); return t; }, 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, 1, function(a){ this.appendChild( a ); }); }, prepend: function() { return this.domManip(arguments, true, -1, function(a){ this.insertBefore( a, this.firstChild ); }); }, before: function() { return this.domManip(arguments, false, 1, function(a){ this.parentNode.insertBefore( a, this ); }); }, after: function() { return this.domManip(arguments, false, -1, function(a){ this.parentNode.insertBefore( a, this.nextSibling ); }); }, end: function() { return this.prevObject || jQuery([]); }, find: function(t) { var data = jQuery.map(this, function(a){ return jQuery.find(t,a); }); return this.pushStack( /[^+>] [^+>]/.test( t ) || t.indexOf("..") > -1 ? jQuery.unique( data ) : data ); }, clone: function(events) { // Do the clone var ret = this.map(function(){ return this.outerHTML ? jQuery(this.outerHTML)[0] : 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) { 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(t) { return this.pushStack( jQuery.isFunction( t ) && jQuery.grep(this, function(el, index){ return t.apply(el, [index]); }) || jQuery.multiFilter(t,this) ); }, not: function(t) { return this.pushStack( t.constructor == String && jQuery.multiFilter(t, this, true) || jQuery.grep(this, function(a) { return ( t.constructor == Array || t.jquery ) ? jQuery.inArray( a, t ) < 0 : a != t; }) ); }, add: function(t) { return this.pushStack( jQuery.merge( this.get(), t.constructor == String ? jQuery(t).get() : t.length != undefined && (!t.nodeName || jQuery.nodeName(t, "form")) ? t : [t] ) ); }, is: function(expr) { return expr ? jQuery.multiFilter(expr,this).length > 0 : false; }, hasClass: function(expr) { return this.is("." + expr); }, val: function( val ) { if ( val == undefined ) { if ( this.length ) { var elem = this[0]; // We need to handle select boxes special if ( jQuery.nodeName(elem, "select") ) { var index = elem.selectedIndex, a = [], 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 var val = jQuery.browser.msie && !option.attributes["value"].specified ? option.text : option.value; // We don't need an array for one selects if ( one ) return val; // Multi-Selects return an array a.push(val); } } return a; // Everything else, we just grab the value } else return this[0].value.replace(/\r/g, ""); } } else return this.each(function(){ if ( val.constructor == Array && /radio|checkbox/.test(this.type) ) this.checked = (jQuery.inArray(this.value, val) >= 0 || jQuery.inArray(this.name, val) >= 0); else if ( jQuery.nodeName(this, "select") ) { var tmp = val.constructor == Array ? val : [val]; jQuery("option", this).each(function(){ this.selected = (jQuery.inArray(this.value, tmp) >= 0 || jQuery.inArray(this.text, tmp) >= 0); }); if ( !tmp.length ) this.selectedIndex = -1; } else this.value = val; }); }, html: function( val ) { return val == undefined ? ( this.length ? this[0].innerHTML : null ) : this.empty().append( val ); }, replaceWith: function( val ) { return this.after( val ).remove(); }, eq: function(i){ return this.slice(i, i+1); }, slice: function() { return this.pushStack( Array.prototype.slice.apply( this, arguments ) ); }, map: function(fn) { return this.pushStack(jQuery.map( this, function(elem,i){ return fn.call( elem, i, elem ); })); }, andSelf: function() { return this.add( this.prevObject ); }, domManip: function(args, table, dir, fn) { var clone = this.length > 1, a; return this.each(function(){ if ( !a ) { a = jQuery.clean(args, this.ownerDocument); if ( dir < 0 ) a.reverse(); } var obj = this; if ( table && jQuery.nodeName(this, "table") && jQuery.nodeName(a[0], "tr") ) obj = this.getElementsByTagName("tbody")[0] || this.appendChild(document.createElement("tbody")); jQuery.each( a, function(){ var elem = clone ? this.cloneNode(true) : this; if ( !evalScript(0, elem) ) fn.call( obj, elem ); }); }); } }; function evalScript(i, elem){ var script = jQuery.nodeName(elem, "script"); if ( script ) { 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); } else if ( elem.nodeType == 1 ) jQuery("script", elem).each(evalScript); return script; } jQuery.extend = jQuery.fn.extend = function() { // copy reference to target object var target = arguments[0] || {}, a = 1, al = arguments.length, deep = false; // Handle a deep copy situation if ( target.constructor == Boolean ) { deep = target; target = arguments[1] || {}; } // extend jQuery itself if only one argument is passed if ( al == 1 ) { target = this; a = 0; } var prop; for ( ; a < al; a++ ) // Only deal with non-null/undefined values if ( (prop = arguments[a]) != null ) // Extend the base object for ( var i in prop ) { // Prevent never-ending loop if ( target == prop[i] ) continue; // Recurse if we're merging object values if ( deep && typeof prop[i] == 'object' && target[i] ) jQuery.extend( target[i], prop[i] ); // Don't bring in undefined values else if ( prop[i] != undefined ) target[i] = prop[i]; } // Return the modified object return target; }; var expando = "jQuery" + (new Date()).getTime(), uuid = 0, win = {}; jQuery.extend({ noConflict: function(deep) { window.$ = _$; if ( deep ) window.jQuery = _jQuery; return jQuery; }, // This may seem like some crazy code, but trust me when I say that this // is the only cross-browser way to do this. --John isFunction: function( fn ) { return !!fn && typeof fn != "string" && !fn.nodeName && fn.constructor != Array && /function/i.test( fn + "" ); }, // check if an element is in a XML document isXMLDoc: function(elem) { return elem.documentElement && !elem.body || elem.tagName && elem.ownerDocument && !elem.ownerDocument.body; }, // Evalulates a script in a global context // Evaluates Async. in Safari 2 :-( globalEval: function( data ) { data = jQuery.trim( data ); if ( data ) { if ( window.execScript ) window.execScript( data ); else if ( jQuery.browser.safari ) // safari doesn't provide a synchronous global eval window.setTimeout( data, 0 ); else eval.call( window, data ); } }, nodeName: function( elem, name ) { return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase(); }, cache: {}, data: function( elem, name, data ) { elem = elem == window ? win : 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 ? win : 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( obj, fn, args ) { if ( args ) { if ( obj.length == undefined ) for ( var i in obj ) fn.apply( obj[i], args ); else for ( var i = 0, o