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 ; } } //alert(cible.innerHTML); /* var variables = 'var1='+document.getElementById('var1')+'&var2='+document.getElementById('var2') ; */ // L'objet qui va effectuer le lien vers le php 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; } //On charge le fichier PHP qui va être éxécuté xhr_object.open('POST',fichierPHP, true); //On affiche le résultat, ou tant que l'on a pas fini on affiche que l'on est en chargement 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 reg=new RegExp("(?:)((\n|\r|.)*?)(?:<\/script>)", "g"); //exécution des codes Javascript... var test = chaine.match(reg); test = test+''; //On ajoute le '' pour transformer la variable en chaine de caractère et pouvoir faire des replace() test = test.replace(/(?:)/g,''); test = test.replace(/(?:<\/script>)/g,''); //La ligne suivante est un bout de scotch //En effet, lorsque l'on trouve plusieurs script, match() les sépare par une virgule. //Chaque ligne de code javascript se terminant pas un point-virgule, on recherche ';,' //et on le remplace par ';' pour éviter l'erreur de syntaxe test = test.replace(/;,/g,';'); //alert(xhr_object.responseText); cible.innerHTML = xhr_object.responseText; eval(test); } } xhr_object.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); //Les variables à ajouter var data = variables; //On envoie les données 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) } /* Lightbox JS: Fullsize Image Overlays by Lokesh Dhakar - http://www.huddletogether.com For more information on this script, visit: http://huddletogether.com/projects/lightbox/ Licensed under the Creative Commons Attribution 2.5 License - http://creativecommons.org/licenses/by/2.5/ (basically, do anything you want, just leave my name and link) Table of Contents ----------------- Configuration Functions - getPageScroll() - getPageSize() - pause() - getKey() - listenKey() - showLightbox() - hideLightbox() - initLightbox() - addLoadEvent() Function Calls - addLoadEvent(initLightbox) */ // // Configuration // // If you would like to use a custom loading image or close button reference them in the next two lines. var loadingImage = '../images/lightbox/loading.gif'; var closeButton = '../images/lightbox/close.gif'; // // getPageScroll() // Returns array with x,y page scroll values. // Core code from - quirksmode.org // function getPageScroll(){ var yScroll; if (self.pageYOffset) { yScroll = self.pageYOffset; } else if (document.documentElement && document.documentElement.scrollTop){ // Explorer 6 Strict yScroll = document.documentElement.scrollTop; } else if (document.body) {// all other Explorers yScroll = document.body.scrollTop; } arrayPageScroll = new Array('',yScroll) return arrayPageScroll; } // // getPageSize() // Returns array with page width, height and window width, height // Core code from - quirksmode.org // Edit for Firefox by pHaez // function getPageSize(){ var xScroll, yScroll; if (window.innerHeight && window.scrollMaxY) { xScroll = document.body.scrollWidth; yScroll = window.innerHeight + window.scrollMaxY; } else if (document.body.scrollHeight > 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 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/ajouter_favoris.php','btn_favoris_'+type+'_'+id,'type='+type+'&id='+id) ; } /* 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, ol = obj.length; i < ol; i++ ) if ( fn.apply( obj[i], args ) === false ) break; // A special, fast, case for the most common use of each } else { if ( obj.length == undefined ) for ( var i in obj ) fn.call( obj[i], i, obj[i] ); else for ( var i = 0, ol = obj.length, val = obj[0]; i < ol && fn.call(val,i,val) !== false; val = obj[++i] ){} } return obj; }, prop: function(elem, value, type, index, prop){ // Handle executable functions if ( jQuery.isFunction( value ) ) value = value.call( elem, [index] ); // exclude the following css properties to add px var exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i; // Handle passing in a number to a CSS property return value && value.constructor == Number && type == "curCSS" && !exclude.test(prop) ? value + "px" : value; }, className: { // internal only, use addClass("class") add: function( elem, c ){ jQuery.each( (c || "").split(/\s+/), function(i, cur){ if ( !jQuery.className.has( elem.className, cur ) ) elem.className += ( elem.className ? " " : "" ) + cur; }); }, // internal only, use removeClass("class") remove: function( elem, c ){ elem.className = c != undefined ? jQuery.grep( elem.className.split(/\s+/), function(cur){ return !jQuery.className.has( c, cur ); }).join(" ") : ""; }, // internal only, use is(".class") has: function( t, c ) { return jQuery.inArray( c, (t.className || t).toString().split(/\s+/) ) > -1; } }, swap: function(e,o,f) { for ( var i in o ) { e.style["old"+i] = e.style[i]; e.style[i] = o[i]; } f.apply( e, [] ); for ( var i in o ) e.style[i] = e.style["old"+i]; }, css: function(e,p) { if ( p == "height" || p == "width" ) { var old = {}, oHeight, oWidth, d = ["Top","Bottom","Right","Left"]; jQuery.each( d, function(){ old["padding" + this] = 0; old["border" + this + "Width"] = 0; }); jQuery.swap( e, old, function() { if ( jQuery(e).is(':visible') ) { oHeight = e.offsetHeight; oWidth = e.offsetWidth; } else { e = jQuery(e.cloneNode(true)) .find(":radio").removeAttr("checked").end() .css({ visibility: "hidden", position: "absolute", display: "block", right: "0", left: "0" }).appendTo(e.parentNode)[0]; var parPos = jQuery.css(e.parentNode,"position") || "static"; if ( parPos == "static" ) e.parentNode.style.position = "relative"; oHeight = e.clientHeight; oWidth = e.clientWidth; if ( parPos == "static" ) e.parentNode.style.position = "static"; e.parentNode.removeChild(e); } }); return p == "height" ? oHeight : oWidth; } return jQuery.curCSS( e, p ); }, curCSS: function(elem, prop, force) { var ret, stack = [], swap = []; // A helper method for determining if an element's values are broken function color(a){ if ( !jQuery.browser.safari ) return false; var ret = document.defaultView.getComputedStyle(a,null); return !ret || ret.getPropertyValue("color") == ""; } if (prop == "opacity" && jQuery.browser.msie) { ret = jQuery.attr(elem.style, "opacity"); return ret == "" ? "1" : ret; } if (prop.match(/float/i)) prop = styleFloat; if (!force && elem.style[prop]) ret = elem.style[prop]; else if (document.defaultView && document.defaultView.getComputedStyle) { if (prop.match(/float/i)) prop = "float"; prop = prop.replace(/([A-Z])/g,"-$1").toLowerCase(); var cur = document.defaultView.getComputedStyle(elem, null); if ( cur && !color(elem) ) ret = cur.getPropertyValue(prop); // If the element isn't reporting its values properly in Safari // then some display: none elements are involved else { // Locate all of the parent display: none elements for ( var a = elem; 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 ( a = 0; a < stack.length; a++ ) if ( color(stack[a]) ) { swap[a] = stack[a].style.display; stack[a].style.display = "block"; } // Since we flip the display style, we have to handle that // one special, otherwise get the value ret = prop == "display" && swap[stack.length-1] != null ? "none" : document.defaultView.getComputedStyle(elem,null).getPropertyValue(prop) || ""; // Finally, revert the display styles back for ( a = 0; a < swap.length; a++ ) if ( swap[a] != null ) stack[a].style.display = swap[a]; } if ( prop == "opacity" && ret == "" ) ret = "1"; } else if (elem.currentStyle) { var newProp = prop.replace(/\-(\w)/g,function(m,c){return c.toUpperCase();}); ret = elem.currentStyle[prop] || elem.currentStyle[newProp]; // 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) ) { var style = elem.style.left; var runtimeStyle = elem.runtimeStyle.left; elem.runtimeStyle.left = elem.currentStyle.left; elem.style.left = ret || 0; ret = elem.style.pixelLeft + "px"; elem.style.left = style; elem.runtimeStyle.left = runtimeStyle; } } return ret; }, clean: function(a, doc) { var r = []; doc = doc || document; jQuery.each( a, function(i,arg){ if ( !arg ) return; if ( arg.constructor == Number ) arg = arg.toString(); // Convert html string into DOM nodes if ( typeof arg == "string" ) { // Fix "XHTML"-style tags in all browsers arg = arg.replace(/(<(\w+)[^>]*?)\/>/g, function(m, all, tag){ return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area)$/i)? m : all+">"; }); // Trim whitespace, otherwise indexOf won't work as expected var s = jQuery.trim(arg).toLowerCase(), div = doc.createElement("div"), tb = []; var wrap = // option or optgroup !s.indexOf("", ""] || !s.indexOf("", ""] || s.match(/^<(thead|tbody|tfoot|colg|cap)/) && [1, "", "
"] || !s.indexOf("", ""] || // matched above (!s.indexOf("", ""] || !s.indexOf("", ""] || // IE can't serialize and