From: gburri Date: Sun, 28 Sep 2008 17:44:47 +0000 (+0000) Subject: ADD premier commit X-Git-Tag: cl7~22 X-Git-Url: http://git.euphorik.ch/?p=cl7.git;a=commitdiff_plain;h=96ad00a7adb7626acc3328b0669eb58e54c1381b ADD premier commit git-svn-id: svn://localhost/cl7/trunk@1 4c3d3983-c6fa-4c6c-9935-18c3bbef1bf0 --- 96ad00a7adb7626acc3328b0669eb58e54c1381b diff --git a/TODO b/TODO new file mode 100644 index 0000000..d718d9e --- /dev/null +++ b/TODO @@ -0,0 +1,17 @@ +V proposer à fabrice de remplacer chaton par euphorik.ch +V Pomper le code de la dll, pour rajouter par exemple des traitement_pre_affichage() dans menu_droit.php +V discuter des tournois et corriger les choix dans l'inscription +V virer ICQ dans les inscriptions +V indiquer que l'email n'est pas public +V Finir la page inscription + controller.php +V Finir la page "Inscrits" +V faire un favicon à base de capsule de biere +V Ajouter un peu de javascript sur la page "jeux joués" pour éviter de cocher trop de jeux (pas forcéement util) +V controller que la limite du nombre de participant fontionne bien, ev. afficher le nombre de place restante + +* demander à fabrice : + * quels personnes à mettre dans 'contacts' avec quel email + * s'il y aura le net sur place + * le prix exact +* mettre un lien vers euphorik sur la conversation lié au nouveau troll concernant l'ouverture du site +* implémenter le paramètre de config '$INSCRIPTIONS_TERMINEES' diff --git a/class_galerie_photos.php b/class_galerie_photos.php new file mode 100644 index 0000000..64c3df4 --- /dev/null +++ b/class_galerie_photos.php @@ -0,0 +1,205 @@ +repertoire_galerie.'/'.$this->section_courante.'/'; } + + #constructeur + function Galerie($rep='.') + { + $this->repertoire_galerie = $rep; + + #ouvre le repertoire de la galerie + $rep_galerie = dir($this->repertoire_galerie); + #pour chaque repertoire (section) + while ($section = $rep_galerie->read()) + { + if ($section != '..' and $section != '.') + { + if (is_null($this->section_courante)) $this->section_courante = $section; + + #ouvre le repertoire des images de la section en cours + $rep_section = dir($this->repertoire_galerie.'/'.$section); + + #essais d'inclure le fichier d'info + if (!@include($this->repertoire_galerie.'/'.$section.'/'.NOM_FICHIER_INFO)) + {$auteur = 'auteur inconnu'; $date = 'date inconnue';} + + #enregistre les infos + $this->sections[$section]['infos']['auteur'] = $auteur; + $this->sections[$section]['infos']['date'] = $date; + + #pour chaque images + while ($photo = $rep_section->read()) + { + if (ereg('('.SUFFIXE_VIGNETTE.'|'.SUFFIXE_PHOTO_REDUITE.').*', $photo)) continue; + if (ereg('.*\.[jJ][pP][gG]', $photo)) #si l'extension est .jpg alors mémorise l'image + $this->sections[$section]['images'][] = $photo; + } + $rep_section->close(); + } + } + $rep_galerie->close(); + + foreach($this->sections as $nom_section => $null) + sort($this->sections[$nom_section]['images']); + } + + #affiche la liste des pages + function liste_pages() + { + for($i=1; $i<=ceil(count($this->sections[$this->section_courante]['images'])/NOMBRE_VIGNETTE_PAR_PAGE); $i++) + echo ($i==1?'':' | ') ,($i==$_GET['__page_section']?'':''),'',$i,'',($i==$_GET['__page_section']?'':''); + } + + #affiche les vignettes de la section courante + function afficher_vignettes($page) + { + $num_image = 0; + + echo ''; + echo ''; + echo ''; + echo '
',$this->section_courante,'
Pages : ',$this->liste_pages(),'
Auteur : ', $this->get_auteur(), ' - Date : ', $this->get_date(), '
'; + + #pour chaque image de la section courante + echo '
'; + foreach ($this->sections[$this->section_courante]['images'] as $image) + { + $num_image++; + + if ($num_image <= $page*NOMBRE_VIGNETTE_PAR_PAGE-NOMBRE_VIGNETTE_PAR_PAGE or $num_image > $page*NOMBRE_VIGNETTE_PAR_PAGE) + continue; + + $vignette = $this->repertoire_courant().SUFFIXE_VIGNETTE.$image; + image_redim ($this->repertoire_courant().$image, TAILLE_VIGNETTE, $vignette, 60, 1); + + if (($num_image - $page*NOMBRE_VIGNETTE_PAR_PAGE-1) % NOMBRE_COLONNE == 0) echo ''; + echo ''; + } + echo '
+ + ', $vignette ,' +
'; + } + + #pour afficher une seule photo + function afficher_photo($photo) + { + $photo_reduite = $this->repertoire_courant().SUFFIXE_PHOTO_REDUITE.$photo; + $pas_redim = false; + if (!image_redim ($this->repertoire_courant().$photo, TAILLE_PHOTO_REDUITE, $photo_reduite, 70, 1)) + $pas_redim = true; + + $lien_retour = NOM_FICHIER.'?'.arguments_page().'__section='.$this->section_courante.'&__page_section='.$this->num_page_photo($photo).'&__page_galerie=section'; + + if ($photo_suivant = $this->photo_suivante($photo)) + $lien_suivant = NOM_FICHIER.'?'.arguments_page().'__section='.$this->section_courante.'&__photo='.$photo_suivant.'&__page_galerie=photo'; + + if ($photo_precedante = $this->photo_precedante($photo)) + $lien_precedant = NOM_FICHIER.'?'.arguments_page().'__section='.$this->section_courante.'&__photo='.$photo_precedante.'&__page_galerie=photo'; + + + echo ''; + + #la barre de navigation : suivant / précédant + $nav = ''. + ''. + ''; + + echo $nav; + echo ''; + echo ''; + echo $nav; + echo '
'.(isset($lien_precedant)?'Photo précédente':'').'Retour'.(isset($lien_suivant)?'Photo suivante':'').'
'.($pas_redim ? '' : '0').''. ($pas_redim ? $photo : $photo_reduite) .''.($pas_redim ?'':'').'
',$photo,'
'; + } + + #renvois le numéros de la page ou se trouve une photo + function num_page_photo($photo) + { + $num_image = 0; + foreach($this->sections[$this->section_courante]['images'] as $nom_image) + { + $num_image++; + if ($photo == $nom_image) return ceil($num_image/NOMBRE_VIGNETTE_PAR_PAGE); + } + return 1; + } + + #renvois la photo suivant, si elle n'existe pas alors renvois 0 + function photo_suivante($photo) + { + $num_photo = array_search($photo, $this->sections[$this->section_courante]['images']); + if (isset($this->sections[$this->section_courante]['images'][$num_photo+1])) + return $this->sections[$this->section_courante]['images'][$num_photo+1]; + else + return 0; + } + + #renvois la photo precedante, si elle n'existe pas alors renvois 0 + function photo_precedante($photo) + { + $num_photo = array_search($photo, $this->sections[$this->section_courante]['images']); + if (isset($this->sections[$this->section_courante]['images'][$num_photo-1])) + return $this->sections[$this->section_courante]['images'][$num_photo-1]; + else + return 0; + } + + #renvois un tableau des sections + function sections() + { + $sections = array(); + foreach ($this->sections as $nom_section => $section) + array_push($sections, $nom_section); + + return $sections; + } + + function set_section_courante($section) + { + $this->section_courante = $section; + } + + #renvois l'auteur d'une section + function get_auteur($section=null) + { + if (is_null($section)) $section = $this->section_courante; + return $this->sections[$section]['infos']['auteur']; + } + + #renvois la date de la section + function get_date($section=null) + { + if (is_null($section)) $section = $this->section_courante; + return $this->sections[$section]['infos']['date']; + } +} +?> \ No newline at end of file diff --git a/class_participant.php b/class_participant.php new file mode 100644 index 0000000..d5f9c71 --- /dev/null +++ b/class_participant.php @@ -0,0 +1,80 @@ + ce n'est pas un participant valide + if ($v1 == NULL && $v2 == NULL) + { + $this->valide = 0; + return; + } + + if (is_string($v1) && is_string($v2)) # Aucun des arguments n'est vide alors c'est le pseudo et le password qui ont été transmis + $res = mysql_query("SELECT * FROM participants WHERE pseudo = '" . addslashes($v1) . "' AND password = '" . addslashes($v2) . "'"); + else # Sinon c'est l'id + $res = mysql_query("SELECT * FROM participants WHERE id = " . addslashes($v1)); + + if (mysql_num_rows($res) == 0) + { + $this->valide = FALSE; + } + else + { + $this->info = mysql_fetch_object($res); + $this->valide = TRUE; + } + } + + /** + * Renvoie le nombre de votes restant pour le participant. + */ + function nb_vote_restant() + { + $nombre_de_vote = mysql_fetch_array(mysql_query(" + SELECT COUNT(*) FROM participants RIGHT JOIN jeux_choisis ON participants.id = jeux_choisis.participant_id + WHERE participants.id = " . $this->info->id . " + GROUP BY participants.id + ")); + + return Participant::$NB_VOTES_PAR_PARTICIPANT - $nombre_de_vote[0]; + } + + /** + * Renvois TRUE si le nombre de participant max est atteint. + */ + static function nombre_participant_max_atteint() + { + global $NB_MAX_PARTICIPANT; + $res_SQL = mysql_query("SELECT COUNT(*) FROM participants"); + $nb_participant = mysql_fetch_row($res_SQL); + + return $nb_participant[0] >= $NB_MAX_PARTICIPANT; + } + + /** + * Renvois le nombre de places restantes. + */ + static function nombre_place_restante() + { + global $NB_MAX_PARTICIPANT; + $res_SQL = mysql_query("SELECT COUNT(*) FROM participants"); + $nb_participant = mysql_fetch_row($res_SQL); + + return $NB_MAX_PARTICIPANT - $nb_participant[0]; + } +} + +?> \ No newline at end of file diff --git a/config.php b/config.php new file mode 100644 index 0000000..ffc342a --- /dev/null +++ b/config.php @@ -0,0 +1,26 @@ + diff --git a/connexion.php b/connexion.php new file mode 100644 index 0000000..6b5e26c --- /dev/null +++ b/connexion.php @@ -0,0 +1,39 @@ +valide) + { + setcookie ("COOKIE_INFO_PATICIPANT", $le_participant->info->id, time() + 31104000); + } +} +else if (isset($HTTP_COOKIE_VARS["COOKIE_INFO_PATICIPANT"])) # le cookie existe deja chez le participant +{ + $le_participant = new Participant($HTTP_COOKIE_VARS["COOKIE_INFO_PATICIPANT"]); +} +else +{ + $le_participant = new Participant(); +} + +?> \ No newline at end of file diff --git a/controller.php b/controller.php new file mode 100644 index 0000000..ff47132 --- /dev/null +++ b/controller.php @@ -0,0 +1,101 @@ += 3 && + $_POST['nom'] != "" && + $_POST['prenom'] != "" && + $_POST['e_mail'] != ""; +} + +# insciption d'un nouveau participant +if (isset($_POST['inscription']) && !Participant::nombre_participant_max_atteint()) +{ + # vérification des données + if ( + donnees_inscription_valides() && + $_POST['accord'] == "on" + ) + { + mysql_query("BEGIN TRANSACTION"); + mysql_query(" + INSERT INTO participants + (pseudo, password, clan_nom, clan_tag, nom, prenom, age, e_mail, remarques) + VALUES ( + '".addslashes($_POST['pseudo'])."', + '".addslashes($_POST['pass1'])."', + '".addslashes($_POST['clan_nom'])."', + '".addslashes($_POST['clan_tag'])."', + '".addslashes($_POST['nom'])."', + '".addslashes($_POST['prenom'])."', + '".addslashes($_POST['age'])."', + '".addslashes($_POST['e_mail'])."', + '".addslashes($_POST['remarques'])."' + )" + ); + mysql_query("COMMIT"); + } + + $le_participant = new participant($_POST['pseudo'], $_POST['pass1']); + setcookie("COOKIE_INFO_PATICIPANT", $le_participant->info->id, time() + 31104000); +} +# un participant modifie ses infos +else if(isset($_POST['modification_participant']) && $le_participant->valide) +{ + if (donnees_inscription_valides()) + { + mysql_query("BEGIN TRANSACTION"); + mysql_query("UPDATE participants SET pseudo = '".addslashes($_POST['pseudo'])."' WHERE id = " . $le_participant->info->id); + mysql_query("UPDATE participants SET password = '".addslashes($_POST['pass1'])."' WHERE id = " . $le_participant->info->id); + mysql_query("UPDATE participants SET clan_nom = '".addslashes($_POST['clan_nom'])."' WHERE id = " . $le_participant->info->id); + mysql_query("UPDATE participants SET clan_tag = '".addslashes($_POST['clan_tag'])."' WHERE id = " . $le_participant->info->id); + mysql_query("UPDATE participants SET nom = '".addslashes($_POST['nom'])."' WHERE id = " . $le_participant->info->id); + mysql_query("UPDATE participants SET prenom = '".addslashes($_POST['prenom'])."' WHERE id = " . $le_participant->info->id); + mysql_query("UPDATE participants SET age = '".addslashes($_POST['age'])."' WHERE id = " . $le_participant->info->id); + mysql_query("UPDATE participants SET e_mail = '".addslashes($_POST['e_mail'])."' WHERE id = " . $le_participant->info->id); + mysql_query("UPDATE participants SET remarques = '".addslashes($_POST['remarques'])."' WHERE id = " . $le_participant->info->id); + mysql_query("COMMIT"); + } +} +# vote pour des jeux +else if (isset($_POST['set_jeux_joues']) && $le_participant->valide) +{ + $votes = $_POST['votes']; + if (!$votes) + $votes = array(); + + mysql_query("BEGIN TRANSACTION"); + + # l'utilisateur peut proposer le nom d'un jeu qui ne se trouve pas dans la liste + $jeu = trim($_POST['jeu']); + if ($jeu !== '') + { + mysql_query("INSERT INTO jeux (nom) VALUES ('".addslashes($jeu)."')"); + $id = mysql_insert_id(); + if ($id != 0) # si le jeu se trouve déjà dans la liste alors $id == 0 + array_unshift($votes, $id); + } + + # suppression des anciens votes (remplacement par les nouveaux) + mysql_query("DELETE FROM jeux_choisis WHERE participant_id = " . $le_participant->info->id); + + # traite les trois premiers votes + for ($i = 0; $i < count($votes) && $i < $NB_VOTES_JEUX ; $i++) + { + mysql_query("INSERT INTO jeux_choisis (participant_id, jeu_id) VALUES (".$le_participant->info->id.", ".(int)$votes[$i].")"); + } + + mysql_query("COMMIT"); +} +?> diff --git a/css/style.css b/css/style.css new file mode 100644 index 0000000..5db7678 --- /dev/null +++ b/css/style.css @@ -0,0 +1,243 @@ +/* coding:utf-8 */ + +html { + min-height: 100%; + margin-bottom: 1px; +} +body { + margin: 0px; + font-family: monospace; + font-size: 11px; + color: #ffffff; + background-color: #000000; +} +img { + border-width: 0px; +} +a { + color: #8888ff; + text-decoration: none; +} +a:hover { + color: #aaaaff; +} +a.externe { + padding-right: 12px; + background:transparent url(../images/lien_externe.png) no-repeat scroll right center; +} +th { + background-image:url(../images/fond1.png); + background-repeat:repeat; +} +em { + color: #ffff00; +} + +#container { + padding-top: 50px; + padding-bottom: 50px; + margin-left: auto; + margin-right: auto; + width: 800px; + margin-top: 0px; + background-image: url(../images/bieres_fond1.jpg); + background-repeat: repeat-y; + background-position: 0px -25px; +} + +#cadre { + margin-left: 100px; + width: 600px; + border: 1px solid #ffffff; + background-image: url(../images/bieres_fond2.jpg); + background-repeat: repeat-y; + background-position: 0px -75px; + +} + +#titre { + width: 590px; + padding: 5px; + font-size: 20px; + background-image: url(../images/fond1.png); + background-repeat: repeat; +} + +#titre #nbPlacesRestantes { + font-size: 11px; + float: right; +} + +ul#menu { + text-align: justify; + margin: 0px; + padding: 3px; + background-image: url(../images/fond3.png); + background-repeat: repeat; +} +#menu li { + display:inline; + margin-right: 10px; +} +#menu a { + color: #6bff6b; + text-decoration: none; +} +#menu a:hover, +#menu li.courante a { + color: #ffffff; + background-color: #00d000; +} + +#contenu { + padding: 10px; + overflow: auto; + /*width: 100%*/ +} +#contenu h1 { + margin-top: 5px; + margin-bottom: 5px; + font-size: 15px; +} +#contenu h2 { + margin-top: 7px; + margin-bottom: 3px; + font-size: 12px; +} +#contenu p { + margin-top: 2px; +} +#contenu ul { + margin-top: 2px; + padding-left: 23px; +} +#contenu .miniInfo { + font-size: 9px; +} +#contenu table { + /*table-layout: fixed*/ +} +#contenu td { + vertical-align: top; +} +#contenu col#inscriptionColonneNom { + width: 30%; +} +#contenu col#inscriptionColonneValeur { + width: 70%; +} + +#contenu #formulaireJeuxJoues .aVote { + color: #ffff00; +} + +#informations { + margin: 5px; + padding: 5px; + float: right; + background-image: url(../images/fond2.png); + background-repeat: repeat; +} +#informations ul { + padding-left: 5px; +} +#informations li { + list-style-type: none; +} +#informations li:before { + content: "» "; +} +#informations form p { + margin-bottom: 1px; + margin-top: 1px; +} + +#pieddepage { + text-align: center; + background-image: url(../images/fond1.png); + background-repeat: repeat; + padding: 2px; +} + +form input, +form button, +form select, +form textarea{ + font-family: monospace; + font-size: 11px; + color: #ffffff; + background-color: transparent; + border: #ffffff 1px solid; +} +form input:hover, form input:focus, +form button:hover, form button:focus, +form select:hover, form select:focus, +form textarea:hover, form textarea:focus { + background-color: transparent; + border: #ffff00 1px solid; +} + +/***** La boite d'information (s'apparente à une MessageBox) *****/ +div#info { + text-align: center; + width:100%; + position: fixed; + left: 0px; + top: 0px; + background-color: #841919; + border-bottom: 1px solid #FFFFFF; + z-index: 100; + color: #f0df95 +} +div#info div.fermer { + float:right; + cursor: pointer; + height:16px; + width: 16px; + background-image: url(../images/fermer.gif) +} +div#info #icone { + float:left; + height:16px; + width: 16px; +} +div#info #icone.interrogation { + background-image: url(../images/interrogation.gif) +} +div#info #icone.information { + background-image: url(../images/information.gif) +} +div#info #icone.exclamation { + background-image: url(../images/exclamation.gif) +} +div#info .boutons { + padding: 1px; +} +div#info .boutons div { + cursor: pointer; + background-color: #c62929; + display: inline; + padding: 0px 5px 0px 5px; + margin: 0px 5px 0px 5px; +} +div#info .boutons div:hover { + background-color: #e84747; +} + +/* Pour la page des pizzas */ +.pizzaHeader { + background-image:url(../images/fond1.png); + background-repeat:repeat; +} + +tr:hover +{ + background-image:url(../images/fond2.png); + background-repeat:repeat; +} + +.pizzaChoisie +{ + background-image:url(../images/fond2.png); + background-repeat:repeat; +} diff --git a/doc/graphismes/bieres.xcf b/doc/graphismes/bieres.xcf new file mode 100644 index 0000000..41b6809 Binary files /dev/null and b/doc/graphismes/bieres.xcf differ diff --git a/doc/graphismes/bieres_fond1.xcf b/doc/graphismes/bieres_fond1.xcf new file mode 100644 index 0000000..a8e073b Binary files /dev/null and b/doc/graphismes/bieres_fond1.xcf differ diff --git a/doc/graphismes/bieres_fond2.xcf b/doc/graphismes/bieres_fond2.xcf new file mode 100644 index 0000000..094993d Binary files /dev/null and b/doc/graphismes/bieres_fond2.xcf differ diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000..643b140 Binary files /dev/null and b/favicon.ico differ diff --git a/fonc_images.php b/fonc_images.php new file mode 100644 index 0000000..f001223 --- /dev/null +++ b/fonc_images.php @@ -0,0 +1,169 @@ + +* 0 : si l'image de sortie existe deja alors ne fait rien (renvois 1) +* 1 : si l'image de sortie existe deha et qu'elle a la meme taille alors ne fait rien +* 2 : crée de toutes manières l'image de sortie +---------------------------------------------------*/ +function image_redim ($image_chemin, $dim, $nouveau_chemin, $qualite = 60, $force_rewrite_redim=0) +{ + $image = ImageCreateFromJpeg($image_chemin); + + $hauteur = imageSY($image); + $largeur = imageSX($image); + + if ($hauteur >= $largeur && $hauteur > $dim) + $rapport = $dim/$hauteur; + else if($largeur > $hauteur && $largeur > $dim) + $rapport = $dim/$largeur; + else return 0; + + $new_hauteur = round($hauteur * $rapport); + $new_largeur = round($largeur * $rapport); + + #si le fichier ne doit pas etre recree si il existe deja + if ($force_rewrite_redim==0) + { + #si le fichier existe deja alors ne fait rien + if (file_exists($nouveau_chemin)) return 1; + } + else if ($force_rewrite_redim==1) + { + if (file_exists($nouveau_chemin)) + { + $image_existe = ImageCreateFromJpeg($nouveau_chemin); + if (imageSY($image_existe) == $new_hauteur && imageSX($image_existe) == $new_largeur) return 1; + } + } + + + + ##gd 2.0 : + $image_redim = imagecreatetruecolor($new_largeur, $new_hauteur); #l'apercu de l'image (plus petite) + imagecopyresampled($image_redim, $image, 0, 0, 0, 0, $new_largeur, $new_hauteur, $largeur, $hauteur); + ## + + + imagejpeg($image_redim, $nouveau_chemin, $qualite); #ecrit l'apercu sur le disque + + return 1; + +} + +/*-------------------------------------------------- +auteur : pifou +date : 25.01.2003 + +Renvois le lien html vers l'image redimensionnée ou l'image +'no_image.jpg' +---------------------------------------------------*/ +function image_lien_html($card) +{ + global $glob; + $settings = $glob->get('settings'); + $link = $glob->get('link'); + + #si le fichier image n'existe pas + if (!file_exists($link->path().'DivXDB/images/image_tmp/'.$card->id.'.jpg')) + { + $fichier_image = fopen($link->path().'DivXDB/images/image_tmp/'.$card->id.'.jpg', 'wb'); + if ($card->image!='') fwrite($fichier_image, $card->image); + fclose($fichier_image); + } + else #sinon essais de le lire + { + #test la validité de l'image (il faudrait trouver une autre manière plus élégante) + if(!@getimagesize($link->path().'DivXDB/images/image_tmp/'.$card->id.'.jpg')) + { + #si l'image n'est pas valide (en tant que jpeg) alors l'efface de la BD + mysql_query("update movie set image = '' where id = ".$card->id, $glob->get('_the_db_')); + unlink($link->path().'DivXDB/images/image_tmp/'.$card->id.'.jpg'); + } + } + + $skin_no_image = false; + $current_skin_path = $link->path().DIR_SKINS.'/'.$settings->get('current_skin'); + #si le film n'a pas d'image' + if ($card->image=='') + { + #si le skin à une image 'no_image.jpg' + if (file_exists($current_skin_path .'/no_image.jpg')) + { + $image_path = $current_skin_path .'/no_image.jpg'; + $skin_no_image = true; + } + else + $image_path = $link->path().'DivXDB/images/no_image.jpg'; + } + else #le film a une image + $image_path = $link->path().'DivXDB/images/image_tmp/'.$card->id.'.jpg'; + + #si la library GD n'est pas installée + if ($settings->get('gd_library')=='0') + { + + $size = getimagesize($image_path); + $largeur = $size[0]; + $hauteur = $size[1]; + + if ($hauteur >= $largeur && $hauteur > $settings->get('size_image')) + $rapport = $settings->get('size_image')/$hauteur; + else if($largeur > $hauteur && $largeur > $settings->get('size_image')) + $rapport = $settings->get('size_image')/$largeur; + else $rapport = 1; + + $new_hauteur = round($hauteur * $rapport); + $new_largeur = round($largeur * $rapport); + + #si le film n'a pas d'image + if ($card->image=='') + { + #$no_image = $settings + $image = ''.$card->title.''; + } + else $image = ''.$card->title.''; + } + else + { + if ($skin_no_image) #si le film n'a pas d'image et que le skin a une 'no_image.jpg' + { + if (image_redim__($image_path, $settings->get('size_image'), $current_skin_path .'/'.SMALL_IMAGE_SUFIX.'no_image.jpg', 60, 1)==0) + $image = ''.$card->title.''; + else + $image = ''.$card->title.''; + } + elseif($card->image=='') + { + if (image_redim__($image_path, $settings->get('size_image'), $link->path().'DivXDB/images/image_tmp/'.SMALL_IMAGE_SUFIX.'no_image.jpg', 60, 1)==0) + $image = ''.$card->title.''; + else + $image = ''.$card->title.''; + } + else + { + if(image_redim__($link->path().'DivXDB/images/image_tmp/'.$card->id.'.jpg', $settings->get('size_image'), $link->path().'DivXDB/images/image_tmp/'.SMALL_IMAGE_SUFIX.$card->id.'.jpg', 60, 1)==0) + $image = ''.$card->title.''; + else + $image = ''.$card->title.''; + + } + } + return $image; +} +?> diff --git a/images/banniere_eupho.gif b/images/banniere_eupho.gif new file mode 100644 index 0000000..0c97777 Binary files /dev/null and b/images/banniere_eupho.gif differ diff --git a/images/bieres_fond1.jpg b/images/bieres_fond1.jpg new file mode 100644 index 0000000..48f70f1 Binary files /dev/null and b/images/bieres_fond1.jpg differ diff --git a/images/bieres_fond2.jpg b/images/bieres_fond2.jpg new file mode 100644 index 0000000..63845bb Binary files /dev/null and b/images/bieres_fond2.jpg differ diff --git a/images/carte.jpg b/images/carte.jpg new file mode 100644 index 0000000..070a7c3 Binary files /dev/null and b/images/carte.jpg differ diff --git a/images/carte_mini.jpg b/images/carte_mini.jpg new file mode 100644 index 0000000..6c548fb Binary files /dev/null and b/images/carte_mini.jpg differ diff --git a/images/carte_zoom.gif b/images/carte_zoom.gif new file mode 100644 index 0000000..b3f8e47 Binary files /dev/null and b/images/carte_zoom.gif differ diff --git a/images/carte_zoom_mini.gif b/images/carte_zoom_mini.gif new file mode 100644 index 0000000..dcabf2d Binary files /dev/null and b/images/carte_zoom_mini.gif differ diff --git a/images/exclamation.gif b/images/exclamation.gif new file mode 100755 index 0000000..46bb733 Binary files /dev/null and b/images/exclamation.gif differ diff --git a/images/fermer.gif b/images/fermer.gif new file mode 100755 index 0000000..3d78493 Binary files /dev/null and b/images/fermer.gif differ diff --git a/images/fond1.png b/images/fond1.png new file mode 100644 index 0000000..81ebb29 Binary files /dev/null and b/images/fond1.png differ diff --git a/images/fond2.png b/images/fond2.png new file mode 100644 index 0000000..1c25743 Binary files /dev/null and b/images/fond2.png differ diff --git a/images/fond3.png b/images/fond3.png new file mode 100644 index 0000000..4e7055f Binary files /dev/null and b/images/fond3.png differ diff --git a/images/information.gif b/images/information.gif new file mode 100755 index 0000000..c75a5d6 Binary files /dev/null and b/images/information.gif differ diff --git a/images/interrogation.gif b/images/interrogation.gif new file mode 100755 index 0000000..47fd4b0 Binary files /dev/null and b/images/interrogation.gif differ diff --git a/images/lien_externe.png b/images/lien_externe.png new file mode 100644 index 0000000..91f55f2 Binary files /dev/null and b/images/lien_externe.png differ diff --git a/images/smiles/Thumbs.db b/images/smiles/Thumbs.db new file mode 100644 index 0000000..07a5c16 Binary files /dev/null and b/images/smiles/Thumbs.db differ diff --git a/images/smiles/argn.gif b/images/smiles/argn.gif new file mode 100644 index 0000000..63d39a8 Binary files /dev/null and b/images/smiles/argn.gif differ diff --git a/images/smiles/bigsmile.gif b/images/smiles/bigsmile.gif new file mode 100644 index 0000000..b54cd0f Binary files /dev/null and b/images/smiles/bigsmile.gif differ diff --git a/images/smiles/chat.gif b/images/smiles/chat.gif new file mode 100644 index 0000000..33cb58f Binary files /dev/null and b/images/smiles/chat.gif differ diff --git a/images/smiles/chat.psd b/images/smiles/chat.psd new file mode 100644 index 0000000..ac92a90 Binary files /dev/null and b/images/smiles/chat.psd differ diff --git a/images/smiles/clin.gif b/images/smiles/clin.gif new file mode 100644 index 0000000..35e3625 Binary files /dev/null and b/images/smiles/clin.gif differ diff --git a/images/smiles/cool.gif b/images/smiles/cool.gif new file mode 100644 index 0000000..c3aff9d Binary files /dev/null and b/images/smiles/cool.gif differ diff --git a/images/smiles/eheheh.gif b/images/smiles/eheheh.gif new file mode 100644 index 0000000..4fc3e19 Binary files /dev/null and b/images/smiles/eheheh.gif differ diff --git a/images/smiles/langue.gif b/images/smiles/langue.gif new file mode 100644 index 0000000..d81ba96 Binary files /dev/null and b/images/smiles/langue.gif differ diff --git a/images/smiles/lol.gif b/images/smiles/lol.gif new file mode 100644 index 0000000..b5e7153 Binary files /dev/null and b/images/smiles/lol.gif differ diff --git a/images/smiles/oh.gif b/images/smiles/oh.gif new file mode 100644 index 0000000..18d3abb Binary files /dev/null and b/images/smiles/oh.gif differ diff --git a/images/smiles/pas_utilise_cool.gif b/images/smiles/pas_utilise_cool.gif new file mode 100644 index 0000000..2520bcf Binary files /dev/null and b/images/smiles/pas_utilise_cool.gif differ diff --git a/images/smiles/pascontent.gif b/images/smiles/pascontent.gif new file mode 100644 index 0000000..7297a64 Binary files /dev/null and b/images/smiles/pascontent.gif differ diff --git a/images/smiles/smile.gif b/images/smiles/smile.gif new file mode 100644 index 0000000..3fb63ae Binary files /dev/null and b/images/smiles/smile.gif differ diff --git a/images/smiles/sniff.gif b/images/smiles/sniff.gif new file mode 100644 index 0000000..da1895d Binary files /dev/null and b/images/smiles/sniff.gif differ diff --git a/images/smiles/spliff.gif b/images/smiles/spliff.gif new file mode 100644 index 0000000..a7338cb Binary files /dev/null and b/images/smiles/spliff.gif differ diff --git a/images/smiles/triste.gif b/images/smiles/triste.gif new file mode 100644 index 0000000..0d8abc8 Binary files /dev/null and b/images/smiles/triste.gif differ diff --git a/index.php b/index.php new file mode 100644 index 0000000..8d6c578 --- /dev/null +++ b/index.php @@ -0,0 +1,124 @@ + 'Accueil', + 'jeux_joues' => 'Jeux joués', + 'inscription' => 'Inscription', + 'inscrits' => 'Inscrits', + 'http://www.euphorik.ch/#page="minichat";conv=[1642]' => 'Chat', + 'contacts' => 'Contacts', + #'mods' => 'Mods', + #'cracks' => 'Cracks', + #'pizzas' => 'Pizza', +); + +echo ''; +?> + + + + + + Corcelles-Lan 7 + + + + + + + + +
+
+
+
+ 1 ? 's' : ''; + echo "Il reste ", $nb_places_libres, " place", $s, " libre", $s; + } + ?> +
+ Corcelles-Lan 7 +
+ +
+
+ valide) + echo 'Nous sommes désolés, il n\'y a plus de places libres'; + else + include("tx_inscription.php"); + break; + case 'inscrits' : + include("tx_inscrits.php"); + break; + case 'tournoi' : + include("tx_tournoi.php"); + break; + case 'intranet' : + include("tx_intranet.php"); + break; + case 'bienvenue' : + include("tx_bienvenue.php"); + break; + case 'contacts' : + include("tx_contacts.php"); + break; + case 'photos' : + include("tx_photos.php"); + break; + case 'pizzas': + include("pizzas.php"); + break; + default : + echo 'erreur, page introuvable'; + break; + } + ?> +
+
+ ~ site codé en PHP avec les pieds ~ +
+
+
+ + diff --git a/js/betterjs.js b/js/betterjs.js new file mode 100644 index 0000000..69788d8 --- /dev/null +++ b/js/betterjs.js @@ -0,0 +1,76 @@ +// tout un tas d'améliorations de JavaScript ;) + + +/** + * Pour chaque propriété de l'objet execute f(p, v) ou p est le nom de la propriété et v sa valeur. + * Ne parcours pas les propriétés des prototypes. + * FIXME : Normalement : Object.prototype.each = function(f) mais non supporté par jquery + */ +//Object.prototype.each = function(f) { +var objectEach = function(o, f) { + for (var k in o) { + if (o.hasOwnProperty(k)) { + f(k, o[k]); + } + } +}; + +var objectMemberCount = function(o) { + var nb = 0; + for (var k in o) { + if (o.hasOwnProperty(k)) { + nb += 1; + } + } + return nb; +}; + +Array.prototype.each = function(f) { + for (var i = 0; i < this.length; i++) { + f(i, this[i]); + } +}; + +Array.prototype.map = function(f) { + for (var i = 0; i < this.length; i++) { + this[i] = f(this[i]); + } +}; + +String.prototype.trim = function() { + return jQuery.trim(this); // anciennement : this.replace(/^\s+|\s+$/g, ""); +}; + +String.prototype.ltrim = function() { + return this.replace(/^\s+/, ""); +}; + +String.prototype.rtrim = function() { + return this.replace(/\s+$/, ""); +}; + +/** + * Voir : http://www.coolpage.com/developer/javascript/Correct%20OOP%20for%20Javascript.html + * + * Exemple : + * + * function Mammal(name) { + * this.name = name; + * } + * + * Cat.Inherits(Mammal); + * function Cat(name) { + * this.Super(Mammal, name); + * } + */ +/*Object.prototype.Super = function(parent) { + if(arguments.length > 1) { + parent.apply( this, Array.prototype.slice.call( arguments, 1 ) ); + } else { + parent.call( this ); + } +} +Function.prototype.Inherits = function(parent) { + this.prototype = new parent(); + this.prototype.constructor = this; +}*/ diff --git a/js/cl7.js b/js/cl7.js new file mode 100644 index 0000000..10b1c52 --- /dev/null +++ b/js/cl7.js @@ -0,0 +1,88 @@ +/** + * coding: utf-8 + * Quelques bouts de JS pour le site de la corcelles-lan 7. + * Necessite la lib jQuery. + */ + +var cl7 = {}; + +cl7.verification_formulaire_inscription = function(util) { + if ($('#formulaireInscription input[name="pseudo"]').val() === "") { + util.messageDialogue("Le pseudo ne peut pas être vide"); + return false; + } + if ($('#formulaireInscription input[name="pass1"]').val() === "" && + $('#formulaireInscription input[name="pass2"]').val() === "") { + util.messageDialogue("Le password ne peut pas être vide"); + return false; + } + if ($('#formulaireInscription input[name="pass1"]').val() !== $('#formulaireInscription input[name="pass2"]').val()) { + util.messageDialogue("Les passwords ne correspondent pas"); + return false; + } + if ($('#formulaireInscription input[name="pass1"]').val().length < 3) { + util.messageDialogue("La taille de password doit être d'au moins 3 caractères"); + return false; + } + if ($('#formulaireInscription input[name="nom"]').val() === "") { + util.messageDialogue("Le nom ne peut pas être vide"); + return false; + } + if ($('#formulaireInscription input[name="prenom"]').val() === "") { + util.messageDialogue("Le prénom ne peut pas être vide"); + return false; + } + if ($('#formulaireInscription input[name="e_mail"]').val() === "") { + util.messageDialogue("L'email ne peut pas être vide"); + return false; + } + if ($('#formulaireInscription input[name="accord"]').length === 1 && !$('#formulaireInscription input[name="accord"]').attr("checked")) { + util.messageDialogue("Vous devez être d'accord avec le préambule"); + return false; + } + return true; +} + +$(document).ready( + function() { + var util = new cl7.Util(); + $('form#formulaireInscription').submit(function() { + return cl7.verification_formulaire_inscription(util); + }); + + $('form#formulaireInscription select[name="clanChoix"]').change(function() { + if ($(this).val() === '0') { + return; + } + $clan = $(this).val().split(';'); + $('form#formulaireInscription input[name="clan_nom"]').val($clan [0]); + $('form#formulaireInscription input[name="clan_tag"]').val($clan [1]); + }); + + // inscrit les emails codés (page contact) + $('a#contactPifou').attr('href', util.rot13('znvygb:tert.oheev@tznvy.pbz')) + $('a#contactLePiaf').attr('href', util.rot13('znvygb:tyrcvns695@zfa.pbz')) + + // permet d'éviter de faire plus de choix qu'il n'en faut sur la page des jeux joués + var nbVotesMax = 3; + var coches = []; + $('#formulaireJeuxJoues input:checked').each(function() { + coches.unshift(parseInt($(this).attr("value"))); + }); + $('#formulaireJeuxJoues input[name="votes[]"]').change(function() { + if($(this).attr("checked")) { + if (coches.length >= nbVotesMax) { + $('#formulaireJeuxJoues input[value="' + coches.pop() + '"]').attr("checked", false); + } + coches.unshift(parseInt($(this).attr("value"))); + } else { + for (var i = 0; i < coches.length; i ++) { + if (coches[i] == parseInt($(this).attr("value"))) { + coches.splice(i, 1); + break; + } + } + } + }); + } +); diff --git a/js/jquery-1.2.6.min.js b/js/jquery-1.2.6.min.js new file mode 100644 index 0000000..82b98e1 --- /dev/null +++ b/js/jquery-1.2.6.min.js @@ -0,0 +1,32 @@ +/* + * 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 $ + */ +(function(){var _jQuery=window.jQuery,_$=window.$;var jQuery=window.jQuery=window.$=function(selector,context){return new jQuery.fn.init(selector,context);};var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/,isSimple=/^.[^:#\[\.]*$/,undefined;jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector||document;if(selector.nodeType){this[0]=selector;this.length=1;return this;}if(typeof selector=="string"){var match=quickExpr.exec(selector);if(match&&(match[1]||!context)){if(match[1])selector=jQuery.clean([match[1]],context);else{var elem=document.getElementById(match[3]);if(elem){if(elem.id!=match[3])return jQuery().find(selector);return jQuery(elem);}selector=[];}}else +return jQuery(context).find(selector);}else if(jQuery.isFunction(selector))return jQuery(document)[jQuery.fn.ready?"ready":"load"](selector);return this.setArray(jQuery.makeArray(selector));},jquery:"1.2.6",size:function(){return this.length;},length:0,get:function(num){return num==undefined?jQuery.makeArray(this):this[num];},pushStack:function(elems){var ret=jQuery(elems);ret.prevObject=this;return ret;},setArray:function(elems){this.length=0;Array.prototype.push.apply(this,elems);return this;},each:function(callback,args){return jQuery.each(this,callback,args);},index:function(elem){var ret=-1;return jQuery.inArray(elem&&elem.jquery?elem[0]:elem,this);},attr:function(name,value,type){var options=name;if(name.constructor==String)if(value===undefined)return this[0]&&jQuery[type||"attr"](this[0],name);else{options={};options[name]=value;}return this.each(function(i){for(name in options)jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name));});},css:function(key,value){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])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){var ret=this.map(function(){if(jQuery.browser.msie&&!jQuery.isXMLDoc(this)){var clone=this.cloneNode(true),container=document.createElement("div");container.appendChild(clone);return jQuery.clean([container.innerHTML])[0];}else +return this.cloneNode(true);});var clone=ret.find("*").andSelf().each(function(){if(this[expando]!=undefined)this[expando]=null;});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 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)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];if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type=="select-one";if(index<0)return null;for(var i=one?index:0,max=one?index+1:options.length;i=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;if(jQuery.nodeName(elem,"script"))scripts=scripts.add(elem);else{if(elem.nodeType==1)scripts=scripts.add(jQuery("script",elem).remove());callback.call(obj,elem);}});scripts.each(evalScript);});}};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(){var target=arguments[0]||{},i=1,length=arguments.length,deep=false,options;if(target.constructor==Boolean){deep=target;target=arguments[1]||{};i=2;}if(typeof target!="object"&&typeof target!="function")target={};if(length==i){target=this;--i;}for(;i-1;}},swap:function(elem,options,callback){var old={};for(var name in options){old[name]=elem.style[name];elem.style[name]=options[name];}callback.call(elem);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;function color(elem){if(!jQuery.browser.safari)return false;var ret=defaultView.getComputedStyle(elem,null);return!ret||ret.getPropertyValue("color")=="";}if(name=="opacity"&&jQuery.browser.msie){ret=jQuery.attr(style,"opacity");return ret==""?"1":ret;}if(jQuery.browser.opera&&name=="display"){var save=style.outline;style.outline="0 solid black";style.outline=save;}if(name.match(/float/i))name=styleFloat;if(!force&&style&&style[name])ret=style[name];else if(defaultView.getComputedStyle){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);else{var swap=[],stack=[],a=elem,i=0;for(;a&&color(a);a=a.parentNode)stack.unshift(a);for(;i]*?)\/>/g,function(all,front,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all:front+">";});var tags=jQuery.trim(elem).toLowerCase(),div=context.createElement("div");var wrap=!tags.indexOf("",""]||!tags.indexOf("",""]||tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
"]||!tags.indexOf("",""]||(!tags.indexOf("",""]||!tags.indexOf("",""]||jQuery.browser.msie&&[1,"div
","
"]||[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--)div=div.lastChild;if(jQuery.browser.msie){var tbody=!tags.indexOf(""&&tags.indexOf("=0;--j)if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)tbody[j].parentNode.removeChild(tbody[j]);if(/^\s/.test(elem))div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild);}elem=jQuery.makeArray(div.childNodes);}if(elem.length===0&&(!jQuery.nodeName(elem,"form")&&!jQuery.nodeName(elem,"select")))return;if(elem[0]==undefined||jQuery.nodeName(elem,"form")||elem.options)ret.push(elem);else +ret=jQuery.merge(ret,elem);});return ret;},attr:function(elem,name,value){if(!elem||elem.nodeType==3||elem.nodeType==8)return undefined;var notxml=!jQuery.isXMLDoc(elem),set=value!==undefined,msie=jQuery.browser.msie;name=notxml&&jQuery.props[name]||name;if(elem.tagName){var special=/href|src|style/.test(name);if(name=="selected"&&jQuery.browser.safari)elem.parentNode.selectedIndex;if(name in elem&¬xml&&!special){if(set){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode)throw"type property can't be changed";elem[name]=value;}if(jQuery.nodeName(elem,"form")&&elem.getAttributeNode(name))return elem.getAttributeNode(name).nodeValue;return elem[name];}if(msie&¬xml&&name=="style")return jQuery.attr(elem.style,"cssText",value);if(set)elem.setAttribute(name,""+value);var attr=msie&¬xml&&special?elem.getAttribute(name,2):elem.getAttribute(name);return attr===null?undefined:attr;}if(msie&&name=="opacity"){if(set){elem.zoom=1;elem.filter=(elem.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(value)+''=="NaN"?"":"alpha(opacity="+value*100+")");}return elem.filter&&elem.filter.indexOf("opacity=")>=0?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100)+'':"";}name=name.replace(/-([a-z])/ig,function(all,letter){return letter.toUpperCase();});if(set)elem[name]=value;return elem[name];},trim:function(text){return(text||"").replace(/^\s+|\s+$/g,"");},makeArray:function(array){var ret=[];if(array!=null){var i=array.length;if(i==null||array.split||array.setInterval||array.call)ret[0]=array;else +while(i)ret[--i]=array[i];}return ret;},inArray:function(elem,array){for(var i=0,length=array.length;i*",this).remove();while(this.firstChild)this.removeChild(this.firstChild);}},function(name,fn){jQuery.fn[name]=function(){return this.each(fn,arguments);};});jQuery.each(["Height","Width"],function(i,name){var type=name.toLowerCase();jQuery.fn[type]=function(size){return this[0]==window?jQuery.browser.opera&&document.body["client"+name]||jQuery.browser.safari&&window["inner"+name]||document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||document.body["client"+name]:this[0]==document?Math.max(Math.max(document.body["scroll"+name],document.documentElement["scroll"+name]),Math.max(document.body["offset"+name],document.documentElement["offset"+name])):size==undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,size.constructor==String?size:size+"px");};});function num(elem,prop){return elem[0]&&parseInt(jQuery.curCSS(elem[0],prop,true),10)||0;}var chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:[\\w*_-]|\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=new RegExp("^>\\s*("+chars+"+)"),quickID=new RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=new RegExp("^([#.]?)("+chars+"*)");jQuery.extend({expr:{"":function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);},"#":function(a,i,m){return a.getAttribute("id")==m[2];},":":{lt:function(a,i,m){return im[3]-0;},nth:function(a,i,m){return m[3]-0==i;},eq:function(a,i,m){return m[3]-0==i;},first:function(a,i){return i==0;},last:function(a,i,m,r){return i==r.length-1;},even:function(a,i){return i%2==0;},odd:function(a,i){return i%2;},"first-child":function(a){return a.parentNode.getElementsByTagName("*")[0]==a;},"last-child":function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;},"only-child":function(a){return!jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},parent:function(a){return a.firstChild;},empty:function(a){return!a.firstChild;},contains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0;},visible:function(a){return"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";},hidden:function(a){return"hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden";},enabled:function(a){return!a.disabled;},disabled:function(a){return a.disabled;},checked:function(a){return a.checked;},selected:function(a){return a.selected||jQuery.attr(a,"selected");},text:function(a){return"text"==a.type;},radio:function(a){return"radio"==a.type;},checkbox:function(a){return"checkbox"==a.type;},file:function(a){return"file"==a.type;},password:function(a){return"password"==a.type;},submit:function(a){return"submit"==a.type;},image:function(a){return"image"==a.type;},reset:function(a){return"reset"==a.type;},button:function(a){return"button"==a.type||jQuery.nodeName(a,"button");},input:function(a){return/input|select|textarea|button/i.test(a.nodeName);},has:function(a,i,m){return jQuery.find(m[3],a).length;},header:function(a){return/h\d/i.test(a.nodeName);},animated:function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var old,cur=[];while(expr&&expr!=old){old=expr;var f=jQuery.filter(expr,elems,not);expr=f.t.replace(/^\s*,\s*/,"");cur=not?elems=f.r:jQuery.merge(cur,f.r);}return cur;},find:function(t,context){if(typeof t!="string")return[t];if(context&&context.nodeType!=1&&context.nodeType!=9)return[];context=context||document;var ret=[context],done=[],last,nodeName;while(t&&last!=t){var r=[];last=t;t=jQuery.trim(t);var foundToken=false,re=quickChild,m=re.exec(t);if(m){nodeName=m[1].toUpperCase();for(var i=0;ret[i];i++)for(var c=ret[i].firstChild;c;c=c.nextSibling)if(c.nodeType==1&&(nodeName=="*"||c.nodeName.toUpperCase()==nodeName))r.push(c);ret=r;t=t.replace(re,"");if(t.indexOf(" ")==0)continue;foundToken=true;}else{re=/^([>+~])\s*(\w*)/i;if((m=re.exec(t))!=null){r=[];var merge={};nodeName=m[2].toUpperCase();m=m[1];for(var j=0,rl=ret.length;j=0;if(!not&&pass||not&&!pass)tmp.push(r[i]);}return tmp;},filter:function(t,r,not){var last;while(t&&t!=last){last=t;var p=jQuery.parse,m;for(var i=0;p[i];i++){m=p[i].exec(t);if(m){t=t.substring(m[0].length);m[2]=m[2].replace(/\\/g,"");break;}}if(!m)break;if(m[1]==":"&&m[2]=="not")r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3]);else if(m[1]==".")r=jQuery.classFilter(r,m[2],not);else if(m[1]=="["){var tmp=[],type=m[3];for(var i=0,rl=r.length;i=0)^not)tmp.push(a);}r=tmp;}else if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||1))-0,last=test[3]-0;for(var i=0,rl=r.length;i=0)add=true;if(add^not)tmp.push(node);}r=tmp;}else{var fn=jQuery.expr[m[1]];if(typeof fn=="object")fn=fn[m[2]];if(typeof fn=="string")fn=eval("false||function(a,i){return "+fn+";}");r=jQuery.grep(r,function(elem,i){return fn(elem,i,m,r);},not);}}return{r:r,t:t};},dir:function(elem,dir){var matched=[],cur=elem[dir];while(cur&&cur!=document){if(cur.nodeType==1)matched.push(cur);cur=cur[dir];}return matched;},nth:function(cur,result,dir,elem){result=result||1;var num=0;for(;cur;cur=cur[dir])if(cur.nodeType==1&&++num==result)break;return cur;},sibling:function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType==1&&n!=elem)r.push(n);}return r;}});jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3||elem.nodeType==8)return;if(jQuery.browser.msie&&elem.setInterval)elem=window;if(!handler.guid)handler.guid=this.guid++;if(data!=undefined){var fn=handler;handler=this.proxy(fn,function(){return fn.apply(this,arguments);});handler.data=data;}var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle")||jQuery.data(elem,"handle",function(){if(typeof jQuery!="undefined"&&!jQuery.event.triggered)return jQuery.event.handle.apply(arguments.callee.elem,arguments);});handle.elem=elem;jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];handler.type=parts[1];var handlers=events[type];if(!handlers){handlers=events[type]={};if(!jQuery.event.special[type]||jQuery.event.special[type].setup.call(elem)===false){if(elem.addEventListener)elem.addEventListener(type,handle,false);else if(elem.attachEvent)elem.attachEvent("on"+type,handle);}}handlers[handler.guid]=handler;jQuery.event.global[type]=true;});elem=null;},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3||elem.nodeType==8)return;var events=jQuery.data(elem,"events"),ret,index;if(events){if(types==undefined||(typeof types=="string"&&types.charAt(0)=="."))for(var type in events)this.remove(elem,type+(types||""));else{if(types.type){handler=types.handler;types=types.type;}jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];if(events[type]){if(handler)delete events[type][handler.guid];else +for(handler in events[type])if(!parts[1]||events[type][handler].type==parts[1])delete events[type][handler];for(ret in events[type])break;if(!ret){if(!jQuery.event.special[type]||jQuery.event.special[type].teardown.call(elem)===false){if(elem.removeEventListener)elem.removeEventListener(type,jQuery.data(elem,"handle"),false);else if(elem.detachEvent)elem.detachEvent("on"+type,jQuery.data(elem,"handle"));}ret=null;delete events[type];}}});}for(ret in events)break;if(!ret){var handle=jQuery.data(elem,"handle");if(handle)handle.elem=null;jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle");}}},trigger:function(type,data,elem,donative,extra){data=jQuery.makeArray(data);if(type.indexOf("!")>=0){type=type.slice(0,-1);var exclusive=true;}if(!elem){if(this.global[type])jQuery("*").add([window,document]).trigger(type,data);}else{if(elem.nodeType==3||elem.nodeType==8)return undefined;var val,ret,fn=jQuery.isFunction(elem[type]||null),event=!data[0]||!data[0].preventDefault;if(event){data.unshift({type:type,target:elem,preventDefault:function(){},stopPropagation:function(){},timeStamp:now()});data[0][expando]=true;}data[0].type=type;if(exclusive)data[0].exclusive=true;var handle=jQuery.data(elem,"handle");if(handle)val=handle.apply(elem,data);if((!fn||(jQuery.nodeName(elem,'a')&&type=="click"))&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false)val=false;if(event)data.shift();if(extra&&jQuery.isFunction(extra)){ret=extra.apply(elem,val==null?data:data.concat(val));if(ret!==undefined)val=ret;}if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(elem,'a')&&type=="click")){this.triggered=true;try{elem[type]();}catch(e){}}this.triggered=false;}return val;},handle:function(event){var val,ret,namespace,all,handlers;event=arguments[0]=jQuery.event.fix(event||window.event);namespace=event.type.split(".");event.type=namespace[0];namespace=namespace[1];all=!namespace&&!event.exclusive;handlers=(jQuery.data(this,"events")||{})[event.type];for(var j in handlers){var handler=handlers[j];if(all||handler.type==namespace){event.handler=handler;event.data=handler.data;ret=handler.apply(this,arguments);if(val!==false)val=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}}return val;},fix:function(event){if(event[expando]==true)return event;var originalEvent=event;event={originalEvent:originalEvent};var props="altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which".split(" ");for(var i=props.length;i;i--)event[props[i]]=originalEvent[props[i]];event[expando]=true;event.preventDefault=function(){if(originalEvent.preventDefault)originalEvent.preventDefault();originalEvent.returnValue=false;};event.stopPropagation=function(){if(originalEvent.stopPropagation)originalEvent.stopPropagation();originalEvent.cancelBubble=true;};event.timeStamp=event.timeStamp||now();if(!event.target)event.target=event.srcElement||document;if(event.target.nodeType==3)event.target=event.target.parentNode;if(!event.relatedTarget&&event.fromElement)event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc.clientTop||0);}if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode))event.which=event.charCode||event.keyCode;if(!event.metaKey&&event.ctrlKey)event.metaKey=event.ctrlKey;if(!event.which&&event.button)event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));return event;},proxy:function(fn,proxy){proxy.guid=fn.guid=fn.guid||proxy.guid||this.guid++;return proxy;},special:{ready:{setup:function(){bindReady();return;},teardown:function(){return;}},mouseenter:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseenter";return jQuery.event.handle.apply(this,arguments);}},mouseleave:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseleave";return jQuery.event.handle.apply(this,arguments);}}}};jQuery.fn.extend({bind:function(type,data,fn){return type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn||data,fn&&data);});},one:function(type,data,fn){var one=jQuery.event.proxy(fn||data,function(event){jQuery(this).unbind(event,one);return(fn||data).apply(this,arguments);});return this.each(function(){jQuery.event.add(this,type,one,fn&&data);});},unbind:function(type,fn){return this.each(function(){jQuery.event.remove(this,type,fn);});},trigger:function(type,data,fn){return this.each(function(){jQuery.event.trigger(type,data,this,true,fn);});},triggerHandler:function(type,data,fn){return this[0]&&jQuery.event.trigger(type,data,this[0],false,fn);},toggle:function(fn){var args=arguments,i=1;while(i=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}callback=callback||function(){};var type="GET";if(params)if(jQuery.isFunction(params)){callback=params;params=null;}else{params=jQuery.param(params);type="POST";}var self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"||status=="notmodified")self.html(selector?jQuery("
").append(res.responseText.replace(//g,"")).find(selector):res.responseText);self.each(callback,[res.responseText,status,res]);}});return this;},serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();}});jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(i,o){jQuery.fn[o]=function(f){return this.bind(o,f);};});var jsc=now();jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data=null;}return jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type});},getScript:function(url,callback){return jQuery.get(url,null,callback,"script");},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},post:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type});},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settings);},ajaxSettings:{url:location.href,global:true,type:"GET",timeout:0,contentType:"application/x-www-form-urlencoded",processData:true,async:true,data:null,username:null,password:null,accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(s){s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));var jsonp,jsre=/=\?(&|$)/g,status,data,type=s.type.toUpperCase();if(s.data&&s.processData&&typeof s.data!="string")s.data=jQuery.param(s.data);if(s.dataType=="jsonp"){if(type=="GET"){if(!s.url.match(jsre))s.url+=(s.url.match(/\?/)?"&":"?")+(s.jsonp||"callback")+"=?";}else if(!s.data||!s.data.match(jsre))s.data=(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=?";s.dataType="json";}if(s.dataType=="json"&&(s.data&&s.data.match(jsre)||s.url.match(jsre))){jsonp="jsonp"+jsc++;if(s.data)s.data=(s.data+"").replace(jsre,"="+jsonp+"$1");s.url=s.url.replace(jsre,"="+jsonp+"$1");s.dataType="script";window[jsonp]=function(tmp){data=tmp;success();complete();window[jsonp]=undefined;try{delete window[jsonp];}catch(e){}if(head)head.removeChild(script);};}if(s.dataType=="script"&&s.cache==null)s.cache=false;if(s.cache===false&&type=="GET"){var ts=now();var ret=s.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+ts+"$2");s.url=ret+((ret==s.url)?(s.url.match(/\?/)?"&":"?")+"_="+ts:"");}if(s.data&&type=="GET"){s.url+=(s.url.match(/\?/)?"&":"?")+s.data;s.data=null;}if(s.global&&!jQuery.active++)jQuery.event.trigger("ajaxStart");var remote=/^(?:\w+:)?\/\/([^\/?#]+)/;if(s.dataType=="script"&&type=="GET"&&remote.test(s.url)&&remote.exec(s.url)[1]!=location.host){var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.src=s.url;if(s.scriptCharset)script.charset=s.scriptCharset;if(!jsonp){var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){done=true;success();complete();head.removeChild(script);}};}head.appendChild(script);return undefined;}var requestDone=false;var xhr=window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();if(s.username)xhr.open(type,s.url,s.async,s.username,s.password);else +xhr.open(type,s.url,s.async);try{if(s.data)xhr.setRequestHeader("Content-Type",s.contentType);if(s.ifModified)xhr.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]||"Thu, 01 Jan 1970 00:00:00 GMT");xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");xhr.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataType]+", */*":s.accepts._default);}catch(e){}if(s.beforeSend&&s.beforeSend(xhr,s)===false){s.global&&jQuery.active--;xhr.abort();return false;}if(s.global)jQuery.event.trigger("ajaxSend",[xhr,s]);var onreadystatechange=function(isTimeout){if(!requestDone&&xhr&&(xhr.readyState==4||isTimeout=="timeout")){requestDone=true;if(ival){clearInterval(ival);ival=null;}status=isTimeout=="timeout"&&"timeout"||!jQuery.httpSuccess(xhr)&&"error"||s.ifModified&&jQuery.httpNotModified(xhr,s.url)&&"notmodified"||"success";if(status=="success"){try{data=jQuery.httpData(xhr,s.dataType,s.dataFilter);}catch(e){status="parsererror";}}if(status=="success"){var modRes;try{modRes=xhr.getResponseHeader("Last-Modified");}catch(e){}if(s.ifModified&&modRes)jQuery.lastModified[s.url]=modRes;if(!jsonp)success();}else +jQuery.handleError(s,xhr,status);complete();if(s.async)xhr=null;}};if(s.async){var ival=setInterval(onreadystatechange,13);if(s.timeout>0)setTimeout(function(){if(xhr){xhr.abort();if(!requestDone)onreadystatechange("timeout");}},s.timeout);}try{xhr.send(s.data);}catch(e){jQuery.handleError(s,xhr,null,e);}if(!s.async)onreadystatechange();function success(){if(s.success)s.success(data,status);if(s.global)jQuery.event.trigger("ajaxSuccess",[xhr,s]);}function complete(){if(s.complete)s.complete(xhr,status);if(s.global)jQuery.event.trigger("ajaxComplete",[xhr,s]);if(s.global&&!--jQuery.active)jQuery.event.trigger("ajaxStop");}return xhr;},handleError:function(s,xhr,status,e){if(s.error)s.error(xhr,status,e);if(s.global)jQuery.event.trigger("ajaxError",[xhr,s,e]);},active:0,httpSuccess:function(xhr){try{return!xhr.status&&location.protocol=="file:"||(xhr.status>=200&&xhr.status<300)||xhr.status==304||xhr.status==1223||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpNotModified:function(xhr,url){try{var xhrRes=xhr.getResponseHeader("Last-Modified");return xhr.status==304||xhrRes==jQuery.lastModified[url]||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpData:function(xhr,type,filter){var ct=xhr.getResponseHeader("content-type"),xml=type=="xml"||!type&&ct&&ct.indexOf("xml")>=0,data=xml?xhr.responseXML:xhr.responseText;if(xml&&data.documentElement.tagName=="parsererror")throw"parsererror";if(filter)data=filter(data,type);if(type=="script")jQuery.globalEval(data);if(type=="json")data=eval("("+data+")");return data;},param:function(a){var s=[];if(a.constructor==Array||a.jquery)jQuery.each(a,function(){s.push(encodeURIComponent(this.name)+"="+encodeURIComponent(this.value));});else +for(var j in a)if(a[j]&&a[j].constructor==Array)jQuery.each(a[j],function(){s.push(encodeURIComponent(j)+"="+encodeURIComponent(this));});else +s.push(encodeURIComponent(j)+"="+encodeURIComponent(jQuery.isFunction(a[j])?a[j]():a[j]));return s.join("&").replace(/%20/g,"+");}});jQuery.fn.extend({show:function(speed,callback){return speed?this.animate({height:"show",width:"show",opacity:"show"},speed,callback):this.filter(":hidden").each(function(){this.style.display=this.oldblock||"";if(jQuery.css(this,"display")=="none"){var elem=jQuery("<"+this.tagName+" />").appendTo("body");this.style.display=elem.css("display");if(this.style.display=="none")this.style.display="block";elem.remove();}}).end();},hide:function(speed,callback){return speed?this.animate({height:"hide",width:"hide",opacity:"hide"},speed,callback):this.filter(":visible").each(function(){this.oldblock=this.oldblock||jQuery.css(this,"display");this.style.display="none";}).end();},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){return jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle.apply(this,arguments):fn?this.animate({height:"toggle",width:"toggle",opacity:"toggle"},fn,fn2):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();});},slideDown:function(speed,callback){return this.animate({height:"show"},speed,callback);},slideUp:function(speed,callback){return this.animate({height:"hide"},speed,callback);},slideToggle:function(speed,callback){return this.animate({height:"toggle"},speed,callback);},fadeIn:function(speed,callback){return this.animate({opacity:"show"},speed,callback);},fadeOut:function(speed,callback){return this.animate({opacity:"hide"},speed,callback);},fadeTo:function(speed,to,callback){return this.animate({opacity:to},speed,callback);},animate:function(prop,speed,easing,callback){var optall=jQuery.speed(speed,easing,callback);return this[optall.queue===false?"each":"queue"](function(){if(this.nodeType!=1)return false;var opt=jQuery.extend({},optall),p,hidden=jQuery(this).is(":hidden"),self=this;for(p in prop){if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden)return opt.complete.call(this);if(p=="height"||p=="width"){opt.display=jQuery.css(this,"display");opt.overflow=this.style.overflow;}}if(opt.overflow!=null)this.style.overflow="hidden";opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var e=new jQuery.fx(self,opt,name);if(/toggle|show|hide/.test(val))e[val=="toggle"?hidden?"show":"hide":val](prop);else{var parts=val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),start=e.cur(true)||0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]||"px";if(unit!="px"){self.style[name]=(end||1)+unit;start=((end||1)/e.cur(true))*start;self.style[name]=start+unit;}if(parts[1])end=((parts[1]=="-="?-1:1)*end)+start;e.custom(start,end,unit);}else +e.custom(start,val,"");}});return true;});},queue:function(type,fn){if(jQuery.isFunction(type)||(type&&type.constructor==Array)){fn=type;type="fx";}if(!type||(typeof type=="string"&&!fn))return queue(this[0],type);return this.each(function(){if(fn.constructor==Array)queue(this,type,fn);else{queue(this,type).push(fn);if(queue(this,type).length==1)fn.call(this);}});},stop:function(clearQueue,gotoEnd){var timers=jQuery.timers;if(clearQueue)this.queue([]);this.each(function(){for(var i=timers.length-1;i>=0;i--)if(timers[i].elem==this){if(gotoEnd)timers[i](true);timers.splice(i,1);}});if(!gotoEnd)this.dequeue();return this;}});var queue=function(elem,type,array){if(elem){type=type||"fx";var q=jQuery.data(elem,type+"queue");if(!q||array)q=jQuery.data(elem,type+"queue",jQuery.makeArray(array));}return q;};jQuery.fn.dequeue=function(type){type=type||"fx";return this.each(function(){var q=queue(this,type);q.shift();if(q.length)q[0].call(this);});};jQuery.extend({speed:function(speed,easing,fn){var opt=speed&&speed.constructor==Object?speed:{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&easing.constructor!=Function&&easing};opt.duration=(opt.duration&&opt.duration.constructor==Number?opt.duration:jQuery.fx.speeds[opt.duration])||jQuery.fx.speeds.def;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false)jQuery(this).dequeue();if(jQuery.isFunction(opt.old))opt.old.call(this);};return opt;},easing:{linear:function(p,n,firstNum,diff){return firstNum+diff*p;},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum;}},timers:[],timerId:null,fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig)options.orig={};}});jQuery.fx.prototype={update:function(){if(this.options.step)this.options.step.call(this.elem,this.now,this);(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);if(this.prop=="height"||this.prop=="width")this.elem.style.display="block";},cur:function(force){if(this.elem[this.prop]!=null&&this.elem.style[this.prop]==null)return this.elem[this.prop];var r=parseFloat(jQuery.css(this.elem,this.prop,force));return r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0;},custom:function(from,to,unit){this.startTime=now();this.start=from;this.end=to;this.unit=unit||this.unit||"px";this.now=this.start;this.pos=this.state=0;this.update();var self=this;function t(gotoEnd){return self.step(gotoEnd);}t.elem=this.elem;jQuery.timers.push(t);if(jQuery.timerId==null){jQuery.timerId=setInterval(function(){var timers=jQuery.timers;for(var i=0;ithis.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var done=true;for(var i in this.options.curAnim)if(this.options.curAnim[i]!==true)done=false;if(done){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(jQuery.css(this.elem,"display")=="none")this.elem.style.display="block";}if(this.options.hide)this.elem.style.display="none";if(this.options.hide||this.options.show)for(var p in this.options.curAnim)jQuery.attr(this.elem.style,p,this.options.orig[p]);}if(done)this.options.complete.call(this.elem);return false;}else{var n=t-this.startTime;this.state=n/this.options.duration;this.pos=jQuery.easing[this.options.easing||(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update();}return true;}};jQuery.extend(jQuery.fx,{speeds:{slow:600,fast:200,def:400},step:{scrollLeft:function(fx){fx.elem.scrollLeft=fx.now;},scrollTop:function(fx){fx.elem.scrollTop=fx.now;},opacity:function(fx){jQuery.attr(fx.elem.style,"opacity",fx.now);},_default:function(fx){fx.elem.style[fx.prop]=fx.now+fx.unit;}}});jQuery.fn.offset=function(){var left=0,top=0,elem=this[0],results;if(elem)with(jQuery.browser){var parent=elem.parentNode,offsetChild=elem,offsetParent=elem.offsetParent,doc=elem.ownerDocument,safari2=safari&&parseInt(version)<522&&!/adobeair/i.test(userAgent),css=jQuery.curCSS,fixed=css(elem,"position")=="fixed";if(elem.getBoundingClientRect){var box=elem.getBoundingClientRect();add(box.left+Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),box.top+Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));add(-doc.documentElement.clientLeft,-doc.documentElement.clientTop);}else{add(elem.offsetLeft,elem.offsetTop);while(offsetParent){add(offsetParent.offsetLeft,offsetParent.offsetTop);if(mozilla&&!/^t(able|d|h)$/i.test(offsetParent.tagName)||safari&&!safari2)border(offsetParent);if(!fixed&&css(offsetParent,"position")=="fixed")fixed=true;offsetChild=/^body$/i.test(offsetParent.tagName)?offsetChild:offsetParent;offsetParent=offsetParent.offsetParent;}while(parent&&parent.tagName&&!/^body|html$/i.test(parent.tagName)){if(!/^inline|table.*$/i.test(css(parent,"display")))add(-parent.scrollLeft,-parent.scrollTop);if(mozilla&&css(parent,"overflow")!="visible")border(parent);parent=parent.parentNode;}if((safari2&&(fixed||css(offsetChild,"position")=="absolute"))||(mozilla&&css(offsetChild,"position")!="absolute"))add(-doc.body.offsetLeft,-doc.body.offsetTop);if(fixed)add(Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));}results={top:top,left:left};}function border(elem){add(jQuery.curCSS(elem,"borderLeftWidth",true),jQuery.curCSS(elem,"borderTopWidth",true));}function add(l,t){left+=parseInt(l,10)||0;top+=parseInt(t,10)||0;}return results;};jQuery.fn.extend({position:function(){var left=0,top=0,results;if(this[0]){var offsetParent=this.offsetParent(),offset=this.offset(),parentOffset=/^body|html$/i.test(offsetParent[0].tagName)?{top:0,left:0}:offsetParent.offset();offset.top-=num(this,'marginTop');offset.left-=num(this,'marginLeft');parentOffset.top+=num(offsetParent,'borderTopWidth');parentOffset.left+=num(offsetParent,'borderLeftWidth');results={top:offset.top-parentOffset.top,left:offset.left-parentOffset.left};}return results;},offsetParent:function(){var offsetParent=this[0].offsetParent;while(offsetParent&&(!/^body|html$/i.test(offsetParent.tagName)&&jQuery.css(offsetParent,'position')=='static'))offsetParent=offsetParent.offsetParent;return jQuery(offsetParent);}});jQuery.each(['Left','Top'],function(i,name){var method='scroll'+name;jQuery.fn[method]=function(val){if(!this[0])return;return val!=undefined?this.each(function(){this==window||this==document?window.scrollTo(!i?val:jQuery(window).scrollLeft(),i?val:jQuery(window).scrollTop()):this[method]=val;}):this[0]==window||this[0]==document?self[i?'pageYOffset':'pageXOffset']||jQuery.boxModel&&document.documentElement[method]||document.body[method]:this[0][method];};});jQuery.each(["Height","Width"],function(i,name){var tl=i?"Left":"Top",br=i?"Right":"Bottom";jQuery.fn["inner"+name]=function(){return this[name.toLowerCase()]()+num(this,"padding"+tl)+num(this,"padding"+br);};jQuery.fn["outer"+name]=function(margin){return this["inner"+name]()+num(this,"border"+tl+"Width")+num(this,"border"+br+"Width")+(margin?num(this,"margin"+tl)+num(this,"margin"+br):0);};});})(); \ No newline at end of file diff --git a/js/util.js b/js/util.js new file mode 100644 index 0000000..208e3a9 --- /dev/null +++ b/js/util.js @@ -0,0 +1,186 @@ +// coding: utf-8 + + +/** + * Cet objet regroupe des fonctions utilitaires (helpers) permettant notamment de : + * - afficher une boite de message + * - afficher une bulle d'aide lié à un élément + * - manipuler le curseur et réaliser des sélections sur des zones de saisie () + */ +cl7.Util = function () { + $("#info .fermer").click(function() { + $("#info").slideUp(50); + }); + + $("body").append('
').append('

'); + + this.bulleActive = true; +}; + +cl7.Util.messageType = {informatif: 0, question: 1, erreur: 2}; + +/** + * Affiche une boite de dialogue avec un message à l'intérieur. + * @param message le message (string) + * @param type voir 'messageType'. par défaut messageType.informatif + * @param les boutons sous la forme d'un objet ou les clefs sont les labels des boutons + * et les valeurs les fonctions executées lorsqu'un bouton est activé. + * @param formate faut-il formaté le message ? true par défaut + */ +cl7.Util.prototype.messageDialogue = function(message, type, boutons, formate) { + var thisUtil = this; + + type = type || cl7.Util.messageType.informatif; + formate = formate || true; + + if (this.timeoutMessageDialogue) { + clearTimeout(this.timeoutMessageDialogue); + } + + var fermer = function() { $("#info").slideUp(100); }; + fermer(); + + $("#info .message").html(message); + + switch(type) { + case cl7.Util.messageType.informatif : $("#info #icone").attr("class", "information"); break; + case cl7.Util.messageType.question : $("#info #icone").attr("class", "interrogation"); break; + case cl7.Util.messageType.erreur : $("#info #icone").attr("class", "exclamation"); break; + } + + $("#info .boutons").html(""); + objectEach(boutons, function(nom, bouton) { + $("#info .boutons").append("
" + nom + "
").find("div:last").click(bouton).click(fermer); + }); + + $("#info").slideDown(200); + this.timeoutMessageDialogue = setTimeout(fermer, 3000); +}; + +cl7.Util.positionTypeX = {gauche: 0, gaucheRecouvrement: 1, centre: 2, droiteRecouvrement: 3, droite: 4}; +cl7.Util.positionTypeY = {haut: 0, hautRecouvrement: 1, centre: 2, basRecouvrement: 3, bas: 4}; + +/** + * Afficher une boite flottante (élément) par rapport à une cible. + * La boite est affichée de manière à ne pas dépasser de la fenêtre. + * @boite l'élément à afficher + * @cible l'élément sur lequel est affiché la boite + * @positionX de type positionTypeX + * @positionY de type positionTypeY + */ +cl7.Util.prototype.afficherBoite = function(boite, cible, positionX, positionY) { + var positionCible = cible.offset(); + var positionBoite = { + left : positionX === cl7.Util.positionTypeX.gauche ? positionCible.left - boite.width() : + (positionX === cl7.Util.positionTypeX.gaucheRecouvrement ? positionCible.left - boite.width() + cible.width() : + (positionX === cl7.Util.positionTypeX.droitelsRecouvrement ? positionCible.left : + (positionX === cl7.Util.positionTypeX.droite ? positionCible.left + cible.width() : + positionCible.left + cible.width() / 2 - boite.width() / 2 ))), // centre + top : positionY === cl7.Util.positionTypeY.haut ? positionCible.top - boite.height() : + (positionY === cl7.Util.positionTypeY.hautRecouvrement ? positionCible.top - boite.height() + cible.height() : + (positionY === cl7.Util.positionTypeY.basRecouvrement ? positionCible.top : + (positionY === cl7.Util.positionTypeY.bas ? positionCible.top + cible.height() : + positionCible.top + cible.height() / 2 - boite.height() / 2 ))) // centre + }; + + // calcul les décalages en x et en y pour éviter que la boite ne sorte de la fenêtre, tient compte de la position des barres de défilement + var marge = 10; + positionBoite.left = positionBoite.left < marge + window.pageXOffset ? marge + window.pageXOffset : + (boite.width() - $(window).width() + (positionBoite.left - window.pageXOffset) + marge > 0 ? $(window).width() - boite.width() - marge + window.pageXOffset : positionBoite.left); + positionBoite.top = positionBoite.top < marge + window.pageYOffset ? marge + window.pageYOffset : + (boite.height() - $(window).height() + (positionBoite.top - window.pageYOffset) + marge > 0 ? $(window).height() - boite.height() - marge + window.pageYOffset : positionBoite.top); + + boite.css("top", positionBoite.top).css("left", positionBoite.left).show(); +}; + +cl7.Util.positionBulleType = {haut : 0, droite : 1, bas : 2, gauche : 3}; + +/** + * Affiche un info bulle lorsque le curseur survole l'élément donné. + * @param message le message à afficher + * @param element l'élément DOM sur lesquel afficher la bulle + * @param la position de la bulle, voir positionBulleType. Par défaut à 0 (haut) + */ +cl7.Util.prototype.infoBulle = function(message, element, position) { + var thisUtil = this; + var cacherBulle = function() { + $("#flecheBulle").hide(); + $("#messageBulle").hide(); + }; + + position = position || cl7.Util.positionBulleType.haut; + + element.hover( + function() { + if (!thisUtil.bulleActive) { + return; + } + + var m = $("#messageBulle"); + var f = $("#flecheBulle"); + f.removeClass().addClass(position === cl7.Util.positionBulleType.haut ? "flecheBulleHaut" : + (position === cl7.Util.positionBulleType.droite ? "flecheBulleDroite" : + (position === cl7.Util.positionBulleType.bas ? "flecheBulleBas" : "flecheBulleGauche" ))); + + // remplie le paragraphe de la bulle avec le message + $("p", m).html(message); + + // réinitialise la position, évite le cas ou la boite est collé à droite et remplie avec un texte la faisant dépassé + // dans ce cas la hauteur n'est pas calculé correctement + m.css("top", 0).css("left", 0); + + var positionFleche = { + left : position === cl7.Util.positionBulleType.haut || position === cl7.Util.positionBulleType.bas ? + element.offset().left + element.outerWidth() / 2 - f.width() / 2 : + (position === cl7.Util.positionBulleType.gauche ? element.offset().left - f.width() : element.offset().left + element.outerWidth()), + top : position === cl7.Util.positionBulleType.gauche || position === cl7.Util.positionBulleType.droite ? + element.offset().top + element.outerHeight() / 2 - f.height() / 2 : + (position === cl7.Util.positionBulleType.haut ? element.offset().top - f.height() : element.offset().top + element.outerHeight()) + }; + var positionMessage = { + left : position === cl7.Util.positionBulleType.haut || position === cl7.Util.positionBulleType.bas ? + element.offset().left + element.width() / 2 - m.width() / 2 : + (position === cl7.Util.positionBulleType.gauche ? element.offset().left - f.width() - m.width() : element.offset().left + f.width() + element.outerWidth()), + top : position === cl7.Util.positionBulleType.gauche || position === cl7.Util.positionBulleType.droite ? + element.offset().top + element.outerHeight() / 2 - m.height() / 2 : + (position === cl7.Util.positionBulleType.haut ? element.offset().top - f.height() - m.height() : element.offset().top + f.height() + element.outerHeight()) + }; + var depassementDroit = (positionMessage.left + m.width()) - $("body").width(); + if (depassementDroit > 0) { + positionMessage.left -= depassementDroit; + } else if (positionMessage.left < 0) { + positionMessage.left = 0; + } + + m.css("top", positionMessage.top).css("left", positionMessage.left).show(); + f.css("top", positionFleche.top).css("left", positionFleche.left).show(); + }, + cacherBulle + ).click(cacherBulle); +}; + +/** + * Rot13 d'une chaine, voir : http://fr.wikipedia.org/wiki/ROT13 + */ +cl7.Util.prototype.rot13 = function(chaine) { + var ACode = 'A'.charCodeAt(0); + var aCode = 'a'.charCodeAt(0); + var MCode = 'M'.charCodeAt(0); + var mCode = 'm'.charCodeAt(0); + var ZCode = 'Z'.charCodeAt(0); + var zCode = 'z'.charCodeAt(0); + + var f = function(ch, pos) { + if (pos === ch.length) { + return ""; + } + + var c = ch.charCodeAt(pos); + return String.fromCharCode( + c + + (c >= ACode && c <= MCode || c >= aCode && c <= mCode ? 13 : + (c > MCode && c <= ZCode || c > mCode && c <= zCode ? -13 : 0)) + ) + f(ch, pos + 1); + }; + return f(chaine, 0); +}; diff --git a/menu_droit.php b/menu_droit.php new file mode 100644 index 0000000..32800c9 --- /dev/null +++ b/menu_droit.php @@ -0,0 +1,58 @@ +', mysql_num_rows($res_SQL), ' inscrit', (mysql_num_rows($res_SQL) > 1 ? 's' : ''), '
'; + +# affichage des participants +if (mysql_num_rows($res_SQL) > 0) + echo '
    '; +for ($i=0; $i', traitement_pre_affichage($le_participant_pseudo->pseudo, 8), ''; +} +if (mysql_num_rows($res_SQL) > 0) + echo '
'; +?> + + +valide) +{ + echo' +
+

+

+
'; +} +else +{ + if (isset($log)) echo '[erreur de loggation]'; + + echo' +
+

login / pass

+

+

+

+

+
+ '; +} +?> diff --git a/participants.php b/participants.php new file mode 100644 index 0000000..995752b --- /dev/null +++ b/participants.php @@ -0,0 +1,56 @@ + + +Toutes les infos des participants de la corcelles-lan + + +

Toutes les infos des participants de la corcelles-lan

+ +Pseudo +Clan +Prénom + nom +age +E-mail +N°ICQ +Souhaite participer au tournoi War3 ? +Souhaite participer au tournoi Ra3 ? +Remarque +A payé ? + +'; + +while($participant = mysql_fetch_object($requ)) +{ + echo '', + '',$participant->pseudo,'', + '',($participant->clan_nom==''?'':'('.$participant->clan_tag.')'.$participant->clan_nom),'', + '',$participant->prenom, ' ', $participant->nom,'', + '',$participant->age,'', + '',$participant->e_mail,'', + '',$participant->icq,'', + '',ON($participant->tournoi_war3_1),'', + '',ON($participant->tournoi_ra3_1),'', + '',$participant->remarque,'', + '',ON($participant->a_paye),'', + ''; +} +echo ''; + +?> + + diff --git a/pizzas.php b/pizzas.php new file mode 100644 index 0000000..31aad2d --- /dev/null +++ b/pizzas.php @@ -0,0 +1,181 @@ +commande de pizza'; + + if ($PIZZA_PEUT_COMMANDER) + { + if ($le_participant->info->pizza != null) + echo '
Vous avez deja commandé une pizza ! mais vous pouvez encore changez votre choix:'; + + echo '
'; + echo ''; + echo ''; + echo ''; + while($pizza = mysql_fetch_object($requ)) + echo ''; + echo '
NomCompositionPrix
info->pizza==null?'checked':''), '>', ($le_participant->info->pizza==null?'':''), 'Aucune', ($le_participant->info->pizza==null?'':''), '
info->pizza==$pizza->id?'class="pizzaChoisie"':''),'>info->pizza==$pizza->id?'checked':''), '>

'; + } + else + if ($le_participant->info->pizza != null) + echo '

votre pizza ', pizza($le_participant->info->pizza), ' va bientot arriver'; + else + echo "

la commande de pizza est terminée, veuillez attendre la prochaine vague

"; +} + +// Affiche les statistique sur les pizza +function stats() +{ + $requ_pizza = mysql_query("select * from pizzas order by nom"); + $requ_participant = mysql_query("select * from participants"); + $nb = array(); + $nb_tot = 0; + $total = 0; + $nb_pizza = mysql_fetch_row(mysql_query("select count(*) from pizzas")); + + // Initialise le tableau de comptage + for ($i=0; $i < ($nb_pizza[0] + 3); $i++) // on fait un '+3' parce que on ne sais jamais trop ce qui pourrait se passer ;-)) + $nb[$i] = 0; + + // Rempli le tableau de nombre de pizzas + while ($participant = mysql_fetch_object($requ_participant)) + if ($participant->pizza != null) + $nb[$participant->pizza]++; + + echo '

total des commandes

'; + echo ''; + echo ''; + + while($pizza = mysql_fetch_object($requ_pizza)) + { + if ($nb[$pizza->id] == 0) + continue; + + echo ''; + $total += $nb[$pizza->id] * $pizza->prix; + $nb_tot += $nb[$pizza->id]; + } + echo '
NomNombrePrix unitairePrix total
' . $pizza->nom . '' . $nb[$pizza->id] . '' . $pizza->prix . '.-' . $nb[$pizza->id] * $pizza->prix . '.-
TOTAL', $nb_tot, '', $total, '.-
'; +} + +// Retourne le nom de la pizza en fonction de son ID +function pizza ($id) +{ + $requ = mysql_query("select * from pizzas where id = " . $id); + if ($pizza = mysql_fetch_object($requ)) + return $pizza->nom; + else + return 'Pizza inexistante !'; +} + + +// Affiche qui prends koi +function kiakoi() +{ + global $le_participant; + $requ = mysql_query("select * from participants order by nom"); + + + echo '

qui prend quoi

'; + echo ''; + echo ''; + + while ($participant = mysql_fetch_object($requ)) + { + if ($participant->pizza != null) + { + $pizza = mysql_fetch_object(mysql_query("select * from pizzas where id = " . $participant->pizza)); + echo ''; + } + else + echo ''; + } + echo '
PseudoNomPrixPaiement
', $participant->pseudo ,'', $pizza->nom, '', $pizza->prix, '.-', ($le_participant->info->admin?'':''), ($participant->pizza_paye?'payé':'non payé !'), ($le_participant->info->admin?'':'') ,'
', $participant->pseudo ,'--', '-
'; + +} + +function liens() +{ + global $le_participant; + + $res = ''; + if (!isset($_GET['stats'])) + $res .= '
voir les stats globaux'; + + // if ($le_participant->info->admin && !isset($kiakoi)) + // $res .= '
qui prend quoi'; + + if ($le_participant->info->admin) + $res .= '

remise a zero de toutes les commandes'; + + return $res; +} + + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + +echo '
'; +if ($le_participant->valide) // le participant est loggé +{ + // Si demande d'effacer les commande et que le gars est admin, le fait + if(isset($_GET['reset']) && $le_participant->info->admin) + { + mysql_query("update participants set pizza = null, pizza_paye = 0"); + $le_participant->info->pizza = -1; //mettre a jour le participants courant pour la beaute de l'affichage + } + + if(isset($_GET['paye']) && $le_participant->info->admin) + { + /////// methode d'inversion + // $gars = mysql_fetch_object(mysql_query("select * from participants where id = " . $paye)); + // mysql_query("update participants set pizza_paye = " . (1 - $gars->pizza_paye) . " where id = " . $paye); + /////// + + /////// methode d'un unique changement : non-paye -> paye + mysql_query("update participants set pizza_paye = 1 where id = " . $_GET['paye']); + /////// + } + + + if (!isset($_GET['stats']) && !isset($_GET['kiakoi'])) + { + if (isset($_POST['piz_choisie'])) // la pizza a ete choisie + { + if ($piz_choisie != -1) // La pizza est validei + { + echo 'une '. pizza($_POST['piz_choisie']) . ' commandée !
'; + $pizza_id = $_POST['piz_choisie']; + } + else + { + echo 'Aucune pizza commandée !'; // la pizza est '-1' donc pas de pizza commandée + $pizza_id = "NULL"; + } + mysql_query("update participants set pizza = " . $pizza_id . " where id = " . $le_participant->info->id); + } + else + selection_pizzas(); + } + + if (isset($_GET['stats'])) + { + kiakoi(); + echo '
'; + stats(); + } + + echo liens(); +} +else // le participant n'est pas loggé +{ + echo 'Vous devez vous loggé pour commander une pizza'; +} +echo '
'; +?> diff --git a/smiles.php b/smiles.php new file mode 100644 index 0000000..bd95a36 --- /dev/null +++ b/smiles.php @@ -0,0 +1,113 @@ +-(("] = "argn.gif"; +$smiles[">(("] = "argn.gif"; + +$smiles[">-("] = "pascontent.gif"; +$smiles[">("] = "pascontent.gif"; + +$smiles[":-(("] = "triste.gif"; +$smiles[":(("] = "triste.gif"; + +$smiles[":-("] = "sniff.gif"; +$smiles[":("] = "sniff.gif"; + +$smiles["8-)"] = "cool.gif"; +$smiles["8)"] = "cool.gif"; + +$smiles[":chat:"] = "chat.gif"; + +/*-------------------------------------------------- +auteur : pifou +date : 21.02.2002 + +affichage de tous les smiles dans un tableau +---------------------------------------------------*/ +function afficher_smiles ($smiles, $ajout=0) +{ + $nb_colonne = 3; #nombre de colonne que l'on souuhaite au tableau + + $fichier_avant = ""; #pour connaitre quel était le fichier precedement rencontré + + $nb_cellule = 0; #le nombre de cellule + $cellule_tmp =""; #pour la construction d'une cellule + + #parcours tous les smiles + foreach ($smiles as $smile => $fichier) + { + #si le fichier n'est pas le même qu'avant (passage à une autre figure) + if ($fichier != $fichier_avant) + { + $nb_cellule++; + if ($nb_cellule != 1) #si ce n'est pas la première iteration + { + $cellules[] = $cellule_tmp; #ajoute la celulle au tableau de cellules + $cellule_tmp=""; #remet à zero la celulle temporaire + } + if ($ajout) $cellule_tmp .= ''; + + $cellule_tmp .= ''; + + if ($ajout) $cellule_tmp .= ''; + } + + $cellule_tmp .= ' '. $smile; + $fichier_avant = $fichier; + } + $cellules[] = $cellule_tmp; + + #affiche le tableau + echo ''; + #pour chaque cellule + foreach($cellules as $num => $cellule) + { + if ($num % $nb_colonne == 0) echo ""; + echo ''; + if ($num % $nb_colonne == $nb_colonne-1) echo ""; + } + echo '
'; + echo $cellule; + echo '
'; + +} + +?> \ No newline at end of file diff --git a/tools/start_yaws.sh b/tools/start_yaws.sh new file mode 100755 index 0000000..534bf34 --- /dev/null +++ b/tools/start_yaws.sh @@ -0,0 +1,2 @@ +#!/bin/bash +yaws --conf ./yaws.conf --sname cl7_dev -I debian_cl7_dev diff --git a/tools/yaws.conf b/tools/yaws.conf new file mode 100644 index 0000000..91abdcd --- /dev/null +++ b/tools/yaws.conf @@ -0,0 +1,84 @@ +# Configuration pour euphorik.ch en mode de développement. + +logdir = /tmp + +ebin_dir = /usr/lib/yaws/ebin +include_dir = /usr/lib/yaws/include + +ebin_dir = ../urlrewrite + + + port = 8090 + listen = 0.0.0.0 + docroot = /home/gburri/projets/cl7/trunk/ + allowed_scripts = php + # arg_rewrite_mod = cl7_urlrewrite + # dir_listings = true + + + +# This is a debug variable, possible values are http | traffic | false +# It is also possible to set the trace (possibly to the tty) while +# invoking yaws from the shell as in +# yaws -i -T -x (see man yaws) +trace = false + +cache_refresh_secs = 0 + +# it is possible to have yaws start additional +# application specific code at startup +# runmod = my_app + + +# By default yaws will copy the erlang error_log and +# end write it to a wrap log called report.log (in the logdir) +# this feature can be turned off. This would typically +# be the case when yaws runs within another larger app +copy_error_log = true + + +# Logs are wrap logs +log_wrap_size = 1000000 + + +# Possibly resolve all hostnames in logfiles so webalizer +# can produce the nice geography piechart +log_resolve_hostname = false + + +# fail completely or not if yaws fails +# to bind a listen socket +fail_on_bind_err = true + + +# If HTTP auth is used, it is possible to have a specific +# auth log. +auth_log = true + + +# When we're running multiple yaws systems on the same +# host, we need to give each yaws system an individual +# name. Yaws will write a number of runtime files under +# /tmp/yaws/${id} +# The default value is "default" +# +# In Debian system init script supplies id from the command +# line, so it's not necessary to specify it here +# id = debian_yaws_pre_prod + + +# earlier versions of Yaws picked the first virtual host +# in a list of hosts with the same IP/PORT when the Host: +# header doesn't match any name on any Host +# This is often nice in testing environments but not +# acceptable in real live hosting scenarios +pick_first_virthost_on_nomatch = true + +# All unices are broken since it's not possible to bind to +# a privileged port (< 1024) unless uid==0 +# There is a contrib in jungerl which makes it possible by means +# of an external setuid root programm called fdsrv to listen to +# to privileged port. +# If we use this feature, it requires fdsrv to be properly installed. +# Doesn't yet work with SSL. +use_fdsrv = false diff --git a/traitement_pre_affichage.php b/traitement_pre_affichage.php new file mode 100644 index 0000000..85c56d4 --- /dev/null +++ b/traitement_pre_affichage.php @@ -0,0 +1,122 @@ + +---------------------------------------------------*/ +function traitement_pre_affichage($texte, $nb_max_long = 20) +{ + $texte = htmlentities($texte, ENT_QUOTES, "UTF-8"); + + #insère un espace au milieu d'un mot de longueur $nb_max_long + $texte = ereg_replace("([[:graph:]]{".$nb_max_long."})([[:graph:]]{".$nb_max_long."})", "\\1
\\2", $texte); + + #ajoute les smiles et les
, enlève les balises + $texte = couleur(smile(nl2br($texte))); + + + #souligné + $texte = str_replace("[u]", "", $texte); + $texte = str_replace("[/u]", "", $texte); + + #gras + $texte = str_replace("[b]", "", $texte); + $texte = str_replace("[/b]", "", $texte); + + #italique + $texte = str_replace("[i]", "", $texte); + $texte = str_replace("[/i]", "", $texte); + + #####plus valable##### + #gras + $texte = str_replace("[g]", "", $texte); + $texte = str_replace("[/g]", "", $texte); + ###################### + + if ($texte == "") + return " - "; + return $texte; +} + +/*-------------------------------------------------- +auteur : pifou +date : 19.02.2002 + +remplace les :), :-) etc... par des images de smiles +---------------------------------------------------*/ +function smile($texte) +{ + global $smiles; + + foreach ($smiles as $smile => $fichier) + $texte = str_replace($smile, '', $texte); + + return $texte; + +} + +/*-------------------------------------------------- +auteur : pifou +date : 2.04.2002 + +remplace les balise {1} {/1} par des balise html +font et met l'attribut couleur en fonction du numeros +--------------------------------------------------*/ +function couleur($texte) +{ + $les_couleurs[0] = 'black'; + $les_couleurs[1] = 'red'; + $les_couleurs[2] = 'green'; + $les_couleurs[3] = 'yellow'; + $les_couleurs[4] = 'blue'; + $les_couleurs[5] = 'aqua'; + $les_couleurs[6] = 'fuchsia'; + $les_couleurs[7] = 'white'; + #$les_couleurs[8] = 'black'; + #$les_couleurs[9] = 'black'; + + foreach ($les_couleurs as $num => $couleur) + { + #$texte = ereg_replace("\{" . $num . "\}([[:print:]]+)\{/" . $num . "\}", "\\1", $texte); + $texte = str_replace("{" . $num . "}", "", $texte); + $texte = str_replace("{/" . $num . "}", "", $texte); + } + + return $texte; +} + +?> diff --git a/tx_bienvenue.php b/tx_bienvenue.php new file mode 100644 index 0000000..53f8929 --- /dev/null +++ b/tx_bienvenue.php @@ -0,0 +1 @@ +Toute l'équipe de la Corcelles-LAN vous souhaite la bienvenue !! diff --git a/tx_contacts.php b/tx_contacts.php new file mode 100644 index 0000000..3727607 --- /dev/null +++ b/tx_contacts.php @@ -0,0 +1,12 @@ + + +

Organisateur

+ +

Hébergeur et Webmaster

+ \ No newline at end of file diff --git a/tx_informations.php b/tx_informations.php new file mode 100644 index 0000000..6f91a4f --- /dev/null +++ b/tx_informations.php @@ -0,0 +1,57 @@ + + +

Une puissante LAN aura lieu du vendredi 21 Novembre au Lundi 24 Novembre à Corcelles [NE]

+ +

Heures

+
  • Débute le vendredi à 19h00, finit le lundi à 16h00 env. avec les rangments.

+ +

Points forts

+
    +
  • Projecteur + Wii, PES, Worms, etc.
  • +
  • Platines pour les Dj's seront de la partie cette année.
  • +
  • Un serveur hostera les parties RA3, COD2, COD4, UT3 et Crysis. Counter Strike est strictement interdit durant la LAN, ce point est très important.
  • +
  • Accès à internet (pas pour WoW ou autre MMORPG autistique).
  • +
+ +

Matos

+
    +
  • Il est conseillé de disposer d'un PC en état de marche + carte ethernet et de drivers/soft en cas de réinstallation d'urgence.
  • +
  • Les haut-parleurs sont interdits, vous devez vous munir d'écouteurs (pas des écouteurs de 200W :)).
  • +
  • Apportez tout les câbles nécessaires à l'alimentation de votre PC + multiprise.
  • +
  • Un câble rj45 de si possible au moins 10m doit être amené pour la connexion au réseau.
  • +
+ +

Prix

+
    +
  • Il est de 40 CHF pour les 4 jours comprenand 3 repas chaud (dépend de l'état du cuistot) + 3 déjeunés à payer sur place au responsable.
  • +
  • Il est de 15 CHF par jours pour ceux qui ne peuvent pas venir toute la dureé de la lan.
  • +
+ +

Lieu

+
    +
  • La LAN ce déroule dans un abri civil à Corcelles, voici le plan : + carte d'accès + carte d'accès (aperçu).
  • +
  • Il y a six place de parc devant l'entrée et grand parking un peu plus loin (voir la deuxième carte ci-dessus).
  • +
  • Il est possible de dormir sur place, amenez votre sac de couchage si vous comptez roupiller, il y a aussi des couvertures si jamais des gens ont trop froid.
  • +
+ +

Bouffe, boissons & drogues

+
    +
  • Une cuisine munit d'un cuistot diplômé sera entièrement à votre disposition pour vous alimenter en nourriture.
  • +
  • Amenez quand même un peu de bouffe, on ne sait jamais...
  • +
  • La bière est offerte en quantité déraisonnable.
  • +
  • Il n'y a, cette année, pas de frigo disponible.
  • +
  • Attention : les drogues ne sont absolument pas interdites.
  • +
+ +

Intranet

+
    +
  • Un système de partage de fichiers (photos de vacances, vidéos de son chat, etc.) sera mis en place. (Actuellement pas encore définit)
  • +
+ +

Divers

+
    +
  • Les participants sont priés de ranger et nettoyer leur place en quittant la lan.
  • +
  • Toute personne ayant installé CS sur sont PC sera immolé dans la joie et la bonne humeur des autres gamers.
  • +
diff --git a/tx_inscription.php b/tx_inscription.php new file mode 100644 index 0000000..22847f4 --- /dev/null +++ b/tx_inscription.php @@ -0,0 +1,118 @@ +valide) + echo '

Modification de mes infos

'; +else + echo'

Les personnes inscrites s\'engagent à être présentes à la LAN et à payer la somme convenue.

+

Elles peuvent se désinscrirent en cas d\'empèchements majeurs.

'; +?> + +
+valide) + echo '

'; + else + echo '

'; +?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + valide) + echo' + + + + '; + ?> +
+ pseudo (login) + + valide?('value="'.$le_participant->info->pseudo.'"'):''); ?> /> +
+ password (pour pouvoir par la suite modifier mes infos) + + valide?('value="'.$le_participant->info->password.'"'):''); ?> /> + re: valide?('value="'.$le_participant->info->password.'"'):''); ?> /> +
+ clan name + + valide?('value="'.$le_participant->info->clan_nom.'"'):''); ?> /> + +
+ clan tag + + valide?('value="'.$le_participant->info->clan_tag.'"'):''); ?> /> +
+ nom + + valide?('value="'.$le_participant->info->nom.'"'):''); ?> /> +
+ prénom + + valide?('value="'.$le_participant->info->prenom.'"'):''); ?> /> +
+ age + + valide?('value="'.$le_participant->info->age.'"'):''); ?> /> +
+ email (non-public) + + valide?('value="'.$le_participant->info->e_mail.'"'):''); ?> /> +
+ remarques + + +
+ j\'ai bien lu et suis d\'accord avec le préambule + + +
+

+
diff --git a/tx_inscrits.php b/tx_inscrits.php new file mode 100644 index 0000000..89ff6a0 --- /dev/null +++ b/tx_inscrits.php @@ -0,0 +1,36 @@ + + + pseudo + nom + prénom + age + remarques + '; + +$clan_courant = null; + +while($participant = mysql_fetch_object($res)) +{ + if ($clan_courant !== $participant->clan_nom) + { + echo ($participant->clan_nom != '' ? '

'.traitement_pre_affichage($participant->clan_nom).'

' : ''), $debut_table; + $clan_courant = $participant->clan_nom; + } + + echo ''; + echo '', htmlentities($participant->clan_tag, ENT_QUOTES, "UTF-8"), traitement_pre_affichage($participant->pseudo), ''; + echo '', traitement_pre_affichage($participant->nom), ''; + echo '', traitement_pre_affichage($participant->prenom), ''; + echo '', traitement_pre_affichage($participant->age), ''; + echo '', traitement_pre_affichage($participant->remarques), ''; + echo ''; +} +echo ''; +?> diff --git a/tx_intranet.php b/tx_intranet.php new file mode 100644 index 0000000..8746475 --- /dev/null +++ b/tx_intranet.php @@ -0,0 +1,21 @@ + +
>>Le serveur ftp !!DivX - Mp3 - Progz!! <<
+
>>Le serveur de Faty !!Mp3 - Videos!! <<
+
>>Kiki ftp !!Manga - Roms Nes/Snes!! <<
+
>>Le0 ftp !!Tout!! <<
+
  • CLIENT FTP BIEN
  • + +
    >> Stats CS <<
    + +
    PATCHS
    + +
    MODS
    + + diff --git a/tx_jeux_joues.php b/tx_jeux_joues.php new file mode 100644 index 0000000..8908949 --- /dev/null +++ b/tx_jeux_joues.php @@ -0,0 +1,57 @@ +valide) +{ + echo '

    Remarque : Il faut être inscrit pour pouvoir voter.

    '; +} + + +echo ' +
    +

    + + ', ($le_participant->valide ? '' : ''), ''; + +$jeux_query = mysql_query(" + SELECT jeux.id, jeux.nom, jeux_choisis.participant_id, COUNT(*) + IF(participant_id is not null, 1, 0) - 1 AS nb_vote + FROM jeux LEFT JOIN jeux_choisis ON jeux.id = jeux_choisis.jeu_id + GROUP BY jeux.id + ORDER BY nb_vote DESC, nom +"); + +while ($jeu = mysql_fetch_object($jeux_query)) +{ + // est-ce que le participant courant à voté pour ce jeu ? + if ($le_participant->valide) + { + $a_vote = mysql_fetch_row(mysql_query(" + SELECT COUNT(*) FROM jeux_choisis + WHERE participant_id = ".$le_participant->info->id." AND jeu_id = ".$jeu->id + )); $a_vote = $a_vote[0]; + } + else + $a_vote = FALSE; + + echo '', + $le_participant->valide ? '' : '', + '', + ''; +} + +echo ' +
    VotesJeux
    ' . $jeu->nb_vote . '' . traitement_pre_affichage($jeu->nom) . '
    '; + +if ($le_participant->valide) + echo ' +

    Autre :

    +

    '; + +echo '
    '; + +// affichage du nombre de vote restant +if ($le_participant->valide) + echo '

    Nombre de votes restant : ' . $le_participant->nb_vote_restant() . '

    '; + +?> \ No newline at end of file diff --git a/tx_photos.php b/tx_photos.php new file mode 100644 index 0000000..939e7ad --- /dev/null +++ b/tx_photos.php @@ -0,0 +1,41 @@ +sections() as $section) + echo 'Auteur : ',$ma_galerie->get_auteur($section),'
    Date : ',$ma_galerie->get_date($section),'

    '; + break; + + case 'section' : + $ma_galerie->set_section_courante($_GET['__section']); + $ma_galerie->afficher_vignettes($_GET['__page_section']); + break; + + case 'photo' : + $ma_galerie->set_section_courante($_GET['__section']); + $ma_galerie->afficher_photo($_GET['__photo']); + break; +} + +?> \ No newline at end of file diff --git a/update_db.php b/update_db.php new file mode 100644 index 0000000..3cce184 --- /dev/null +++ b/update_db.php @@ -0,0 +1,89 @@ + diff --git a/urlrewrite/cl7_urlrewrite.erl b/urlrewrite/cl7_urlrewrite.erl new file mode 100644 index 0000000..9115af9 --- /dev/null +++ b/urlrewrite/cl7_urlrewrite.erl @@ -0,0 +1,20 @@ +-module(cl7_urlrewrite). +-export([arg_rewrite/1]). + +-include_lib("yaws/include/yaws_api.hrl"). + +arg_rewrite(Arg) -> + Req = Arg#arg.req, + {abs_path, Path} = Req#http_request.path, + NPath = {abs_path, + case string:rstr(Path, ".html") of + 0 -> Path; + N -> "/?page=" ++ string:substr(Path, 2, N - 2) ++ string:substr(Path, N + 5) + end + }, + % pour les tests + %{ok, F} = file:open("/tmp/out.txt", [write]), + %io:format(F, "~p~n", [Path]), + %file:close(F), + Arg#arg{req = Req#http_request{path = NPath}}. +