diff --git a/Activity_3_python/LangagePython_fonctions/._Activite_decouverte_Python.html b/Activity_3_python/LangagePython_fonctions/._Activite_decouverte_Python.html
new file mode 100644
index 0000000..e4e5229
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/._Activite_decouverte_Python.html differ
diff --git a/Activity_3_python/LangagePython_fonctions/._Exemplen6.html b/Activity_3_python/LangagePython_fonctions/._Exemplen6.html
new file mode 100644
index 0000000..8678366
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/._Exemplen6.html differ
diff --git a/Activity_3_python/LangagePython_fonctions/._Exercice31.html b/Activity_3_python/LangagePython_fonctions/._Exercice31.html
new file mode 100644
index 0000000..80fbdd1
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/._Exercice31.html differ
diff --git a/Activity_3_python/LangagePython_fonctions/._Exercice34.html b/Activity_3_python/LangagePython_fonctions/._Exercice34.html
new file mode 100644
index 0000000..e6c71b2
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/._Exercice34.html differ
diff --git a/Activity_3_python/LangagePython_fonctions/Activite_decouverte_Python.html b/Activity_3_python/LangagePython_fonctions/Activite_decouverte_Python.html
new file mode 100644
index 0000000..db1ff9d
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Activite_decouverte_Python.html
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+ Introduction au langage de programmation Python 3
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Annexelacomprehensiondelistes.html b/Activity_3_python/LangagePython_fonctions/Annexelacomprehensiondelistes.html
new file mode 100644
index 0000000..5e43da4
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Annexelacomprehensiondelistes.html
@@ -0,0 +1,122 @@
+
+
+
+
+
+ Annexe: la compréhension de listes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
La compréhension de listes est une structure syntaxique disponible dans un certain nombre de langages de programmation, dont Python. C'est une manière de créer efficacement des listes.
+
Revenons sur l'exemple vu dans le script Fonction5.py :
+
resultat = [random.randint(1,6) for i in range (10)]
+
>>> print (resultat)
+
Autre exemple : liste de carrés
+
carres = [i*i for i in range (11)]
+
>>> print (carres)
+
La compréhension de listes évite donc d'écrire le code "classique" suivant :
+
carres = [] for i in range (11): carres.append(i*i)
+
+
Créé avec HelpNDoc Personal Edition: Créer des fichiers d'aide pour la plateforme Qt Help
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Autrestypes.html b/Activity_3_python/LangagePython_fonctions/Autrestypes.html
new file mode 100644
index 0000000..9e08e0a
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Autrestypes.html
@@ -0,0 +1,121 @@
+
+
+
+
+
+ Autres types
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Nous avons vu les types les plus courants. Il en existe bien d'autres :
+
+complex (nombres complexes, par exemple 1+2.5j)
+tuple (structure de données)
+set (structure de données)
+file (fichiers)
+...
+
+
+
Créé avec HelpNDoc Personal Edition: Créer des livres électroniques EPub facilement
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Exemplen1.html b/Activity_3_python/LangagePython_fonctions/Exemplen1.html
new file mode 100644
index 0000000..d94dc25
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Exemplen1.html
@@ -0,0 +1,118 @@
+
+
+
+
+
+ Exemple n°1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
# script Fonction1.py def mapremierefonction (): # cette fonction n'a pas de paramètre """ Cette fonction affiche 'Bonjour' """ print ("Bonjour") return # cette fonction ne retourne rien ('None') # l'instruction return est ici facultative
+
Une fois la fonction définie, nous pouvons l'appeler :
+
>>> mapremierefonction() # ne pas oublier les parenthèses ()
+
L'accès à la documentation se fait avec la fonction pré-définie help() :
+
>>> help (mapremierefonction) # affichage de la documentation
+
+
Créé avec HelpNDoc Personal Edition: Sites web iPhone faciles
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Exemplen2.html b/Activity_3_python/LangagePython_fonctions/Exemplen2.html
new file mode 100644
index 0000000..f56df41
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Exemplen2.html
@@ -0,0 +1,116 @@
+
+
+
+
+
+ Exemple n°2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
La fonction suivante simule le comportement d'un dé à 6 faces. Pour cela, on utilise la fonction randint() du module random .
+
# script Fonction2.py def tirage_de (): """ Retourne un nombre entier aléatoire entre 1 et 6 """ import random valeur = random.randint(1, 6) return valeur
+
>>> print (tirage_de()) >>> print (tirage_de()) >>> resultat = tirage_de() >>> print (resultat)
+
+
Créé avec HelpNDoc Personal Edition: Éditeur de documentation CHM facile
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Exemplen3.html b/Activity_3_python/LangagePython_fonctions/Exemplen3.html
new file mode 100644
index 0000000..b63cd07
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Exemplen3.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+ Exemple n°3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
# script Fonction3.py # définition des fonctions def info (): """ Informations """ print ("Touche q pour quitter") print ("Touche Enter pour continuer") def tirage_de (): """ Retourne un nombre entier aléatoire entre 1 et 6 """ import random valeur = random.randint(1, 6) return valeur # début du programme info() while True : choix = input () if choix == 'q' : break print ( "Tirage :" , tirage_de())
+
Exécuter et tester
+
+
Créé avec HelpNDoc Personal Edition: Générateur de documentation d'aide HTML gratuit
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Exemplen4.html b/Activity_3_python/LangagePython_fonctions/Exemplen4.html
new file mode 100644
index 0000000..a038374
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Exemplen4.html
@@ -0,0 +1,116 @@
+
+
+
+
+
+ Exemple n°4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Une fonction avec deux paramètres :
+
# script Fonction4.py # définition de fonction def tirage_de2 (valeur_min, valeur_max): """ Retourne un nombre entier aléatoire entre valeur_min et valeur_max """ import random return random.randint(valeur_min, valeur_max) # début du programme for i in range (5): print (tirage_de2(1, 10)) # appel de la fonction avec les arguments 1 et 10
+
+
+
Créé avec HelpNDoc Personal Edition: Créer des fichiers d'aide pour la plateforme Qt Help
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Exemplen5.html b/Activity_3_python/LangagePython_fonctions/Exemplen5.html
new file mode 100644
index 0000000..657489c
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Exemplen5.html
@@ -0,0 +1,117 @@
+
+
+
+
+
+ Exemple n°5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Une fonction qui retourne une liste :
+
# script Fonction5.py # définition de fonction def tirage_multiple_de (nombretirage): """ Retourne une liste de nombres entiers aléatoires entre 1 et 6 """ import random resultat = [random.randint(1, 6) for i in range (nombretirage)] # compréhension de listes (Cf. annexe) return resultat # début du programme print (tirage_multiple_de(10))
+
+
>>> help (tirage_multiple_de)
+
+
Créé avec HelpNDoc Personal Edition: Produire des livres électroniques facilement
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Exemplen6.html b/Activity_3_python/LangagePython_fonctions/Exemplen6.html
new file mode 100644
index 0000000..d8348b7
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Exemplen6.html
@@ -0,0 +1,116 @@
+
+
+
+
+
+ Exemple n°6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Une fonction qui affiche la parité d'un nombre entier. Il peut y avoir plusieurs instructions return dans une fonction. L'instruction return provoque le retour immédiat de la fonction.
+
# script Fonction6.py # définition de fonction def parite (nombre): """ Affiche la parité d'un nombre entier """ if nombre%2 == 1: # L'opérateur % donne le reste d'une division print (nombre, 'est impair' ) return if nombre%2 == 0: print (nombre, 'est pair' ) return
+
>>> parite(13) >>> parite(24)
+
+
Créé avec HelpNDoc Personal Edition: Créer des documents d'aide HTML facilement
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Exercice11.html b/Activity_3_python/LangagePython_fonctions/Exercice11.html
new file mode 100644
index 0000000..ee7c13f
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Exercice11.html
@@ -0,0 +1,118 @@
+
+
+
+
+
+ Exercice 1.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
☆ Afficher la taille en octets et en bits d'un fichier de 536 kio.
+
On donne : 1 kio (1 kibioctet) = 2 10 octets
+
1 octet = 1 byte = 8 bits
+
+
+
+
Créé avec HelpNDoc Personal Edition: Sites web iPhone faciles
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Exercice13.html b/Activity_3_python/LangagePython_fonctions/Exercice13.html
new file mode 100644
index 0000000..97acbbd
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Exercice13.html
@@ -0,0 +1,117 @@
+
+
+
+
+
+ Exercice 1.3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
★ Afficher la valeur numérique de √(4,6 3 - 15/16)
+
Comparer avec votre calculette.
+
+
+
+
Créé avec HelpNDoc Personal Edition: Générateur de documentations PDF gratuit
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Exercice14.html b/Activity_3_python/LangagePython_fonctions/Exercice14.html
new file mode 100644
index 0000000..f5d138d
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Exercice14.html
@@ -0,0 +1,116 @@
+
+
+
+
+
+ Exercice 1.4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
★ A partir des deux variables prenom et nom , afficher les initiales (par exemple LM pour Léa Martin).
+
+
+
+
Créé avec HelpNDoc Personal Edition: Écrire des livres électroniques ePub pour l'iPad
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Exercice15.html b/Activity_3_python/LangagePython_fonctions/Exercice15.html
new file mode 100644
index 0000000..cdc6b03
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Exercice15.html
@@ -0,0 +1,118 @@
+
+
+
+
+
+ Exercice 1.5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
★☆ L'identifiant d'accès au réseau du lycée est construit de la manière suivante : les 4 premiers caractères du prénom (maximum), suivi d'un point, puis les caractères du nom (limités à 12) le tout en minuscule.
+
Exemple : Alexandre Lecouturier → ale.lecouturier
+
A partir des deux variables prenom et nom , construire l'identifiant.
+
+
+
+
Créé avec HelpNDoc Personal Edition: Éditeur complet de livres électroniques ePub
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Exercice16.html b/Activity_3_python/LangagePython_fonctions/Exercice16.html
new file mode 100644
index 0000000..7cb0efb
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Exercice16.html
@@ -0,0 +1,120 @@
+
+
+
+
+
+ Exercice 1.6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
★★ On donne un extrait des logins d'accès au réseau du lycée :
+
ale.lecouturier Huz4 lea.martin monty
+
1) Créer une variable de type dict qui contient les couples identifiant - mot de passe ci-dessus.
+
2) La saisie du login fournit deux variables identifiant et motdepasse : une pour l'identifiant et l'autre pour le mot de passe. Construire une variable booléenne qui donne True en cas d'identification correcte, et False dans le cas contraire :
+
+
+
+
+
Créé avec HelpNDoc Personal Edition: Générateur de documentations PDF gratuit
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Exercice17.html b/Activity_3_python/LangagePython_fonctions/Exercice17.html
new file mode 100644
index 0000000..ba44a1d
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Exercice17.html
@@ -0,0 +1,120 @@
+
+
+
+
+
+ Exercice 1.2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
★ Le numéro de sécurité sociale est constitué de 13 chiffres auquel s'ajoute la clé de contrôle (2 chiffres).
+
Exemple : 1 89 11 26 108 268 91
+
La clé de contrôle est calculée par la formule : 97 - (numéro de sécurité sociale modulo 97)
+
Retrouver la clé de contrôle de votre numéro de sécurité sociale.
+
Quel est l'intérêt de la clé de contrôle ?
+
+
+
+
Créé avec HelpNDoc Personal Edition: Qu'est-ce qu'un outil de création d'aide ?
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Exercice21.html b/Activity_3_python/LangagePython_fonctions/Exercice21.html
new file mode 100644
index 0000000..fb02c12
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Exercice21.html
@@ -0,0 +1,116 @@
+
+
+
+
+
+ Exercice 2.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
★ Le numéro de sécurité sociale est constitué de 13 chiffres auquel s'ajoute la clé de contrôle (2 chiffres). La clé de contrôle est calculée par la formule : 97 - (numéro de sécurité sociale modulo 97)
+
Ecrire un script qui contrôle la validité d'un numéro de sécurité sociale. On pourra utiliser la fonction int() pour convertir le type str en type int . Exemple :
+
>>> Entrer votre numéro de sécurité sociale (13 chiffres) --> 1891126108268 Entrer votre clé de contrôle (2 chiffres) --------------> 91 Votre numéro de sécurité sociale est valide. >>> Entrer votre numéro de sécurité sociale (13 chiffres) --> 2891126108268 Entrer votre clé de contrôle (2 chiffres) --------------> 91 Votre numéro de sécurité sociale est INVALIDE ! >>>
+
+
Créé avec HelpNDoc Personal Edition: Éditeur de documentation CHM facile
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Exercice22.html b/Activity_3_python/LangagePython_fonctions/Exercice22.html
new file mode 100644
index 0000000..4b1f4e9
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Exercice22.html
@@ -0,0 +1,117 @@
+
+
+
+
+
+ Exercice 2.2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
★ Nombre entier non signé et signé Dans un octet, on peut stocker un nombre entier compris entre 0b00000000 = 0 et 0b11111111 = 255 (entier non signé, en numération binaire naturel). On peut aussi stocker un entier compris entre -128 et +127 (entier signé, représentation dite en complément à deux). En complément à deux, les nombres négatifs sont codés de la manière suivante : -1 correspond à 255 en binaire naturel -2 correspond à 254 en binaire naturel ... -127 correspond à 129 en binaire naturel -128 correspond à 128 en binaire naturel 1) Ecrire un script qui donne la correspondance entre entier signé et entier non signé. Par exemple :
+
>>> Entrer un entier signé en complément à deux (-128 à +127): 25 La représentation en binaire naturel est : 25 >>> Entrer un entier signé en complément à deux (-128 à +127): -15 La représentation en binaire naturel est : 241
+
2) Ecrire un script qui donne la correspondance entre entier non signé et entier signé. Par exemple :
+
>>> Entrer un nombre entier (0 à 255): 250 Cela représente l'entier signé : -6
+
+
Créé avec HelpNDoc Personal Edition: Créer des livres électroniques facilement
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Exercice23.html b/Activity_3_python/LangagePython_fonctions/Exercice23.html
new file mode 100644
index 0000000..63cfc53
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Exercice23.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+ Exercice 2.3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
★ Ecrire un script qui demande la note au bac et qui affiche la mention correspondante. Par exemple :
+
>>> Note au bac (sur 20) : 13.5 Bac avec mention Assez Bien >>> Note au bac (sur 20) : 10.9 Bac avec mention Passable >>> Note au bac (sur 20) : 4 Recalé >>>
+
+
Créé avec HelpNDoc Personal Edition: Environnement de création d'aide complet
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Exercice24.html b/Activity_3_python/LangagePython_fonctions/Exercice24.html
new file mode 100644
index 0000000..0bee970
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Exercice24.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+ Exercice 2.4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
★ Ecrire un script qui calcule l'indice de masse corporelle (IMC) d'un adulte et qui en donne l'interprétation (corpulence normale, surpoids...). Par exemple :
+
>>> Votre taille en cm ? 170 Votre masse en kg ? 68.5 IMC = 23.70 kg/m² Interprétation : corpulence normale >>>
+
+
Créé avec HelpNDoc Personal Edition: Générateur d'aide complet
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Exercice25.html b/Activity_3_python/LangagePython_fonctions/Exercice25.html
new file mode 100644
index 0000000..aa9a0b4
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Exercice25.html
@@ -0,0 +1,116 @@
+
+
+
+
+
+ Exercice 2.5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
★★ Ecrire un script qui résout l'équation du second degré : ax² + bx + c = 0 Par exemple :
+
>>> Résolution de l'équation du second degré : ax² + bx + c = 0 Coefficient a ? 1 Coefficient b ? -0.9 Coefficient c ? 0.056 Discriminant : 0.586 Deux solutions : 0.0672468158199 0.83275318418
+
>>> Résolution de l'équation du second degré : ax² + bx + c = 0 Coefficient a ? 2 Coefficient b ? 1.5 Coefficient c ? 4 Discriminant : -29.75 Il n'y a pas de solution.
+
+
Créé avec HelpNDoc Personal Edition: Écrire des livres électroniques ePub pour l'iPad
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Exercice31.html b/Activity_3_python/LangagePython_fonctions/Exercice31.html
new file mode 100644
index 0000000..b6ecc74
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Exercice31.html
@@ -0,0 +1,114 @@
+
+
+
+
+
+ Exercice 3.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
★ Ecrire un script qui affiche toutes les tables de multiplication (de 1 à 10).
+
+
Créé avec HelpNDoc Personal Edition: Générer facilement des livres électroniques Kindle
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Exercice32.html b/Activity_3_python/LangagePython_fonctions/Exercice32.html
new file mode 100644
index 0000000..be00ab9
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Exercice32.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+ Exercice 3.2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
★ Ecrire un script qui calcule la moyenne d'une série de notes. On pourra utiliser une variable qui contient la somme intermédiaire des notes.
+
>>> Nombre de notes ? 3 --> 15 --> 11.5 --> 14 Moyenne : 13.5 >>>
+
+
Créé avec HelpNDoc Personal Edition: Créer des aides HTML, DOC, PDF et des manuels depuis une même source
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Exercice33.html b/Activity_3_python/LangagePython_fonctions/Exercice33.html
new file mode 100644
index 0000000..8a9c055
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Exercice33.html
@@ -0,0 +1,117 @@
+
+
+
+
+
+ Exercice 3.3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
★ 1) Avec une boucle for , écrire un script qui compte le nombre de lettres z dans une chaîne de caractères. Par exemple :
+
>>> Entrer la chaîne : Zinedine Zidane Résultat : 2
+
2) Faire la même chose, directement avec la méthode count() de la classe str . Pour obtenir de l'aide sur cette méthode :
+
>>> help ( str .count)
+
+
Créé avec HelpNDoc Personal Edition: Produire des livres Kindle gratuitement
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Exercice34.html b/Activity_3_python/LangagePython_fonctions/Exercice34.html
new file mode 100644
index 0000000..9f5a5cf
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Exercice34.html
@@ -0,0 +1,118 @@
+
+
+
+
+
+ Exercice 3.4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
★ Avec une boucle while , écrire un script qui affiche l'heure courante avec une actualisation chaque seconde. On utilisera la fonction sleep() du module time . Pour obtenir de l'aide sur cette fonction :
+
>>> import time >>> help (time.sleep)
+
Par exemple :
+
>>> # Taper CTRL + C pour arrêter le programme. >>> Heure courante 12:40:59 Heure courante 12:41:00 Heure courante 12:41:01 Heure courante 12:41:02 KeyboardInterrupt >>>
+
Remarque : il n'est pas conventionnel de forcer l'arrêt d'un programme avec CTRL + C Nous verrons comment interrompre proprement un programme dans le chapitre Gestion des exceptions .
+
+
Créé avec HelpNDoc Personal Edition: Écrire des livres électronique Kindle
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Exercice35.html b/Activity_3_python/LangagePython_fonctions/Exercice35.html
new file mode 100644
index 0000000..460b1dd
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Exercice35.html
@@ -0,0 +1,120 @@
+
+
+
+
+
+ Exercice 3.5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
★☆ 1) Ecrire le script du jeu de devinette suivant :
+
>>> Le jeu consiste à deviner un nombre entre 1 et 100 : ---> 50 trop petit ! ---> 75 trop petit ! ---> 87 trop grand ! ---> 81 trop petit ! ---> 84 trop petit ! ---> 85 Gagné en 6 coups !
+
2) Quelle est la stratégie la plus efficace ?
+
3) Montrer que l'on peut deviner un nombre en 7 coups maximum.
+
Bibliographie : La dichotomie
+
Remarque : pour créer un nombre entier aléatoire entre 1 et 100 :
+
import random nombre = random.randint(1,100)
+
+
Créé avec HelpNDoc Personal Edition: Générer facilement des livres électroniques Kindle
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Exercice36.html b/Activity_3_python/LangagePython_fonctions/Exercice36.html
new file mode 100644
index 0000000..5117b5a
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Exercice36.html
@@ -0,0 +1,121 @@
+
+
+
+
+
+ Exercice 3.6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
★★ Code de César En cryptographie, le code de César est une technique de chiffrement élémentaire qui consiste à décaler une lettre de 3 rangs vers la droite : A → D B → E ... Z → C
+
1) Ecrire le script de ce codage. Par exemple :
+
>>> Message à coder ? abcdefghijklmnopqrstuvwxyz defghijklmnopqrstuvwxyzabc
+
>>> Message à coder ? Monty Python's Flying Circus prqwb sbwkrq'v ioblqj flufxv
+
On pourra utiliser la chaîne ' abcdefghijklmnopqrstuvwxyz ' et la méthode find() de la classe str . Pour obtenir de l'aide sur cette méthode :
+
>>> help ( str .find)
+
2) Ecrire le script du décodage. Par exemple :
+
>>> Message à décoder ? prqwb sbwkrq'v ioblqj flufxv monty python's flying circus
+
+
Créé avec HelpNDoc Personal Edition: Produire facilement des livres électroniques Kindle
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Exercice37.html b/Activity_3_python/LangagePython_fonctions/Exercice37.html
new file mode 100644
index 0000000..75e8f4d
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Exercice37.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+ Exercice 3.7
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
★★ Ecrire un script qui donne l'évolution de la suite convergente : u n+1 = u n /2 + 1/u n Par exemple :
+
>>> Valeur initiale ? 20 Jusqu'à quel rang ? 10 0 20.0 1 10.05 2 5.12450248756 3 2.75739213842 4 1.74135758045 5 1.44494338196 6 1.41454033013 7 1.41421360012 8 1.41421356237 9 1.41421356237 10 1.41421356237 >>>
+
+
Créé avec HelpNDoc Personal Edition: Sites web iPhone faciles
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Exercice38.html b/Activity_3_python/LangagePython_fonctions/Exercice38.html
new file mode 100644
index 0000000..527778e
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Exercice38.html
@@ -0,0 +1,117 @@
+
+
+
+
+
+ Exercice 3.8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
★★ Fraction continue infinie
+
Estimer la valeur numérique de la fraction continue suivante :
+
+
Comparer avec la valeur exacte : (1 + √5)/2
+
+
Créé avec HelpNDoc Personal Edition: Création d'aide CHM, PDF, DOC et HTML d'une même source
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Exercice39.html b/Activity_3_python/LangagePython_fonctions/Exercice39.html
new file mode 100644
index 0000000..33c5ac0
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Exercice39.html
@@ -0,0 +1,117 @@
+
+
+
+
+
+ Exercice 3.9
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
1) ★ Ecrire un script qui détermine si un nombre entier est premier ou pas. Par exemple :
+
>>> Nombre ? 17 17 est un nombre premier
+
2) ★★ Ecrire un script qui décompose un nombre entier en un produit de facteurs premiers.
+
>>> Nombre à décomposer ? 2142 2142 = 2 * 3 * 3 * 7 * 17
+
+
Créé avec HelpNDoc Personal Edition: Créer des documents d'aide CHM facilement
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Exercice41.html b/Activity_3_python/LangagePython_fonctions/Exercice41.html
new file mode 100644
index 0000000..12f0f6e
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Exercice41.html
@@ -0,0 +1,117 @@
+
+
+
+
+
+ Exercice 4.1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
☆ 1) Ecrire une fonction carre() qui retourne le carré d'un nombre :
+
>>> print (carre(11.11111)) 123.4567654321
+
2) Avec une boucle while et la fonction carre() , écrire un script qui affiche le carré des nombres entiers de 1 à 100 :
+
>>> 1² = 1 2² = 4 3² = 9 ... 99² = 9801 100² = 10000 Fin du programme
+
+
Créé avec HelpNDoc Personal Edition: Générateur d'aides Web gratuit
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Exercice42.html b/Activity_3_python/LangagePython_fonctions/Exercice42.html
new file mode 100644
index 0000000..2836d64
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Exercice42.html
@@ -0,0 +1,117 @@
+
+
+
+
+
+ Exercice 4.2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
☆ 1) Ecrire une fonction qui retourne l'aire de la surface d'un disque de rayon R. Exemple :
+
>>> print (airedisque(2.5)) 19.6349540849
+
2) Ajouter un paramètre qui précise l'unité de mesure :
+
>>> print (airedisque2(4.2, 'cm')) 55.4176944093 cm²
+
+
Créé avec HelpNDoc Personal Edition: Créer des fichiers d'aide pour la plateforme Qt Help
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Exercice43.html b/Activity_3_python/LangagePython_fonctions/Exercice43.html
new file mode 100644
index 0000000..d4721bb
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Exercice43.html
@@ -0,0 +1,116 @@
+
+
+
+
+
+ Exercice 4.3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
★ 1) Ecrire une fonction qui retourne la factorielle d'un nombre entier N. On rappelle que : N ! = 1×2×...×(N-1)×N Exemple :
+
>>> print (factorielle(50)) 30414093201713378043612608166064768844377641568960512000000000000
+
2) Comparez avec le résultat de la fonction factorial() du module math .
+
+
Créé avec HelpNDoc Personal Edition: Générateur facile de livres électroniques et documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Exercice44.html b/Activity_3_python/LangagePython_fonctions/Exercice44.html
new file mode 100644
index 0000000..cf5fcf0
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Exercice44.html
@@ -0,0 +1,119 @@
+
+
+
+
+
+ Exercice 4.4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
★ 1) A l'aide de la fonction randint() du module random , écrire une fonction qui retourne un mot de passe de longueur N (chiffres, lettres minuscules ou majuscules). On donne : chaine = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
+
>>> print (password(10)) mHVeC5rs8P >>> print (password(6)) PYthoN
+
2) Reprendre la question 1) avec la fonction choice() du module random . Pour obtenir de l'aide sur cette fonction :
+
>>> import random >>> help (random.choice)
+
3) Quel est le nombre de combinaisons possibles ? 4) Quelle durée faut-il pour casser le mot de passe avec un logiciel capable de générer 1 million de combinaisons par seconde ?
+
Lien utile : www.exhaustif.com/Generateur-de-mot-de-passe-en.html
+
+
Créé avec HelpNDoc Personal Edition: Sites web iPhone faciles
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Exercice45.html b/Activity_3_python/LangagePython_fonctions/Exercice45.html
new file mode 100644
index 0000000..c10b12d
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Exercice45.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+ Exercice 4.5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
★ Ecrire une fonction qui retourne une carte (au hasard) d'un jeu de Poker à 52 cartes. On utilisera la fonction choice() ou randint() du module random . On donne : ListeCarte = ['2s','2h','2d','2c','3s','3h','3d','3c','4s','4h','4d','4c','5s','5h','5d','5c', '6s','6h','6d','6c','7s','7h','7d','7c','8s','8h','8d','8c','9s','9h','9d','9c', 'Ts','Th','Td','Tc','Js','Jh','Jd','Jc','Qs','Qh','Qd','Qc','Ks','Kh','Kd','Kc','As','Ah','Ad','Ac']
+
>>> print (tiragecarte()) 7s >>> print (tiragecarte()) Kd
+
+
Créé avec HelpNDoc Personal Edition: Générateur d'aides CHM gratuit
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Exercice46.html b/Activity_3_python/LangagePython_fonctions/Exercice46.html
new file mode 100644
index 0000000..60ee038
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Exercice46.html
@@ -0,0 +1,116 @@
+
+
+
+
+
+ Exercice 4.6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
★★ 1) Ecrire une fonction qui retourne une liste de N cartes différentes d'un jeu de Poker à 52 cartes. Noter qu'une fonction peut appeler une fonction : on peut donc réutiliser la fonction tiragecarte() de l'exercice précédent. Exemple :
+
>>> print (tirage_n_carte(2)) ['As', 'Ah'] >>> print (tirage_n_carte(25)) ['Jc', 'Jh', 'Tc', '2d', '3h', 'Qc', '8d', '7c', 'As', 'Td', '8h', '9c', 'Ad', 'Qh', 'Kc', '6s', '5h', 'Qd', 'Kh', '9h', '5d', 'Js', 'Ks', '5c', 'Th']
+
2) Simplifier le script avec la fonction shuffle() ou sample() du module random .
+
+
Créé avec HelpNDoc Personal Edition: Générateur de documentations PDF gratuit
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Exercice47.html b/Activity_3_python/LangagePython_fonctions/Exercice47.html
new file mode 100644
index 0000000..2cb8e93
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Exercice47.html
@@ -0,0 +1,116 @@
+
+
+
+
+
+ Exercice 4.7
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
★ Ecrire une fonction qui retourne une grille de numéros du jeu Euro Millions. On utilisera la fonction sample() du module random .
+
+
>>> print (euromillions()) [37, 23, 9, 11, 49, 2, 11] >>> print (euromillions()) [16, 32, 8, 30, 40, 6, 4]
+
+
Créé avec HelpNDoc Personal Edition: Créer des fichiers d'aide pour la plateforme Qt Help
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Exercice48.html b/Activity_3_python/LangagePython_fonctions/Exercice48.html
new file mode 100644
index 0000000..8866279
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Exercice48.html
@@ -0,0 +1,116 @@
+
+
+
+
+
+ Exercice 4.8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
★★ 1) Ecrire une fonction qui retourne la valeur de la fonction mathématique f(x)= 27x 3 -27x 2 -18x +8 :
+
>>> print (f(0), f(1), f(0.5), f(0.25), f(0.375)) 8.0 -10.0 -4.375 2.234375 -1.123046875
+
2) On se propose de chercher les zéros de cette fonction par la méthode de dichotomie . Ecrire le script correspondant.
+
>>> Recherche d'un zéro dans l'intervalle [a,b] a? 0 b? 1 Précision ? 1e-12 0.5 0.25 0.375 0.3125 0.34375 0.328125 0.3359375 0.33203125 0.333984375 0.3330078125 0.33349609375 0.333251953125 ... ... 0.333333333333 >>>
+
3) Chercher tous les zéros de cette fonction.
+
Annexe : représentation graphique de la fonction f(x)= 27x 3 -27x 2 -18x +8 (graphique réalisé avec la librairie matplotlib de Python)
+
+
+
Créé avec HelpNDoc Personal Edition: Créer des documentations web iPhone
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Exercices1.html b/Activity_3_python/LangagePython_fonctions/Exercices1.html
new file mode 100644
index 0000000..01a10c2
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Exercices1.html
@@ -0,0 +1,114 @@
+
+
+
+
+
+ Exercices 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Créé avec HelpNDoc Personal Edition: Générateur complet de livres électroniques ePub
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Exercices2.html b/Activity_3_python/LangagePython_fonctions/Exercices2.html
new file mode 100644
index 0000000..852b475
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Exercices2.html
@@ -0,0 +1,114 @@
+
+
+
+
+
+ Exercices 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Créé avec HelpNDoc Personal Edition: Avantages d'un outil de création d'aide
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Exercices3.html b/Activity_3_python/LangagePython_fonctions/Exercices3.html
new file mode 100644
index 0000000..5e0ff33
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Exercices3.html
@@ -0,0 +1,114 @@
+
+
+
+
+
+ Exercices 3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Créé avec HelpNDoc Personal Edition: Produire des livres électroniques facilement
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Exercices4.html b/Activity_3_python/LangagePython_fonctions/Exercices4.html
new file mode 100644
index 0000000..7d3d08d
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Exercices4.html
@@ -0,0 +1,114 @@
+
+
+
+
+
+ Exercices 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Créé avec HelpNDoc Personal Edition: Créer des livres électroniques facilement
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/IDLE.html b/Activity_3_python/LangagePython_fonctions/IDLE.html
new file mode 100644
index 0000000..3e1a497
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/IDLE.html
@@ -0,0 +1,140 @@
+
+
+
+
+
+ IDLE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
IDLE
+
IDLE est un environnement de développement intégré (Integrated Development Environment) pour Python. Un IDLE propose un certain nombre d'outils :
+
+
+un éditeur de texte (pour écrire le programme)
+un interpréteur (pour exécuter le programme)
+un débogueur (pour tester le programme)
+une fenètre intéractive REPL (Read-Evaluate-Print-Loop) permettant d'entrer du code Python arbitraire et de voir immédiatement les résultats.
+
+
+
Il existe des IDLE en ligne pour Python:
+
+
+
Il existe des IDLE installables sur les ordinateurs:
+
+
+
Exemple pour Edupython:
+
+
La Console Python est un interpréteur Python en mode interactif.
+
+
Exemple de fenêtre interactive REPL dans Mu
+
+
+
+
Créé avec HelpNDoc Personal Edition: Générateur complet de livres électroniques Kindle
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Immuablevsmutable.html b/Activity_3_python/LangagePython_fonctions/Immuablevsmutable.html
new file mode 100644
index 0000000..480b965
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Immuablevsmutable.html
@@ -0,0 +1,171 @@
+
+
+
+
+
+ Immuable vs mutable
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Les nombres sont des types immuables tout comme les chaînes de caractères et les tuples (tableaux d’objets).
+
Une variable de type immuable ne peut être modifiée. Une opération sur une variable de ce type entraîne nécessairement la création d’une autre variable du même type.
+
+
Pour mettre en évidence cette propriété, jouons avec la fonction id() qui renvoie l'identificateur unique d'un objet, cela correspond à l'adresse mémoire dans laquelle il est stocké.
+
Si l'identifiant est le même, c'est le même objet.
+
+
Vous allez vérifier cela dans la Console Python (interpréteur Python en mode interactif)
+
+
>>> a = 1 >>> id(a)
+
+
>>> a += 2 >>> print(a)
+
+
>>> id(a)
+
+
>>> b = a >>> id(b)
+
+
Donner plusieurs noms à un même objet s'appelle l' aliasing, les variables a et b sont des alias l'une de l'autre. a et b pointent vers le même emplacement mémoire
+
+
>>> b = 5 >>> a
+
+
>>> b
+
+
>>> id(a)
+
+
>>> id(a)
+
+
Conclusion, l'aliasing se fait sans risque.
+
+
+
Un objet de type mutable peut être modifié et modifié in situ. Aucune copie implicite n'est faite.
+
Cette catégorie comprend: les listes , les dictionnaires , ...
+
+
>>> liste1 = [] >>> id(liste1)
+
+
>>> liste1.append('Nicolas') >>> liste1
+
+
>>> id(liste1)
+
+
La valeur de liste peut être modifié mais liste ne change pas d'id.
+
+
Si un objet doit être souvent modifié, un type mutable est préférable qu'un type immuable d'un point de vue espace mémoire mais attention à l'aliasing par exemple:
+
+
>>> liste2 = liste1 >>> id(liste2)
+
+
>>> liste2.append(3) >>> liste2
+
>>> liste1
+
+
+
+
+
+
+
+
+
Créé avec HelpNDoc Personal Edition: Générateur de documentation complet
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Lesbouclesinstructionsforwhile.html b/Activity_3_python/LangagePython_fonctions/Lesbouclesinstructionsforwhile.html
new file mode 100644
index 0000000..d3e1ceb
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Lesbouclesinstructionsforwhile.html
@@ -0,0 +1,181 @@
+
+
+
+
+
+ Les boucles (instructions for, while)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Une boucle permet d'exécuter une portion de code plusieurs fois de suite.
+
+
+
+
+Séquence
+
+Algorithme
+
+Algorigramme
+
+
+
+
+
+Répétitive ou itérative à condition initiale
+
+
+TANT QUE la condition est vrai
+ Faire “Traitement”
+Fin TANT QUE
+
+
+
+
+
+
+
+Répétitive ou itérative à condition finale
+
+
+RÉPÉTER
+ “Traitement”
+JUSQU'À “Condition” vraie
+
+
+
+
+
+
+
+
+
+
+
+
+Séquence
+
+Algorithme
+
+Algorigramme
+
+
+
+
+
+
+Boucle avec comptage
+
+
+
+POUR i allant de VI jusqu’à VF
+ Faire “Traitement”
+Fin POUR
+
+
+
+
+
+
+
+
+
+
Créé avec HelpNDoc Personal Edition: Créer des documents d'aide HTML facilement
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Lesconditionsinstructionsifelife.html b/Activity_3_python/LangagePython_fonctions/Lesconditionsinstructionsifelife.html
new file mode 100644
index 0000000..1616e42
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Lesconditionsinstructionsifelife.html
@@ -0,0 +1,152 @@
+
+
+
+
+
+ Les conditions (instructions if, elif, else)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Les langages informatiques savent interpréter des expressions conditionnelles telles que :
+
+
• " Si la météo le permet alors je vais me promener, sinon je reste à la maison . "
+
+
Structure conditionnelle ou alternative
+
+
+
+Séquence
+
+Algorithme
+
+Algorigramme
+
+
+
+
+
+Alternative partielle
+
+
+SI la condition est vrai ALORS
+ Faire “Traitement”
+Fin SI
+
+
+
+
+
+
+
+Alternative complète
+
+SI l’expression est vrai ALORS
+ Faire “Traitement 1”
+SINON
+ Faire “Traitement 2”
+Fin SI
+
+
+
+
+
+
+
+
La condition peut être composée de plusieurs conditions combinées par les opérateurs logiques ET, OU, et NON.
+
+
+
Créé avec HelpNDoc Personal Edition: Générateur d'aides CHM gratuit
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Lesfonctions.html b/Activity_3_python/LangagePython_fonctions/Lesfonctions.html
new file mode 100644
index 0000000..5599304
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Lesfonctions.html
@@ -0,0 +1,114 @@
+
+
+
+
+
+ Les fonctions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Nous avons déjà vu beaucoup de fonctions : print() , type() , len() , input() , range() ... Ce sont des fonctions pré-définies ( built-in functions ). Nous avons aussi la possibilité de créer nos propres fonctions !
+
Intérêt des fonctions
+
Une fonction est une portion de code que l'on peut appeler au besoin (c'est une sorte de sous-programme).
+
L'utilisation des fonctions évite des redondances dans le code : on obtient ainsi des programmes plus courts et plus lisibles.
+
Par exemple, nous avons besoin de convertir à plusieurs reprises des degrés Celsius en degrés Fahrenheit :
+
>>> print (100.0*9.0/5.0 + 32.0) >>> print (37.0*9.0/5.0 + 32.0) >>> print (233.0*9.0/5.0 + 32.0)
+
La même chose en utilisant une fonction :
+
>>> def fahrenheit (degre_celsius): """ Conversion degré Celsius en degré Fahrenheit """ print (degre_celsius*9.0/5.0 + 32.0) >>> fahrenheit(100) >>> fahrenheit(37) >>> temperature = 233 >>> fahrenheit(temperature)
+
Rien ne vous oblige à définir des fonctions dans vos scripts, mais cela est tellement pratique qu'il serait improductif de s'en passer !
+
+
Créé avec HelpNDoc Personal Edition: Générateur de documentation et EPub gratuit
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Lesfonctionsmathematiques.html b/Activity_3_python/LangagePython_fonctions/Lesfonctionsmathematiques.html
new file mode 100644
index 0000000..ddc0757
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Lesfonctionsmathematiques.html
@@ -0,0 +1,128 @@
+
+
+
+
+
+ Les fonctions mathématiques
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Sous Python, pour utiliser les fonctions mathématiques, il faut commencer par importer le module math :
+
>>> import math
+
Sous l'IDLE (Python GUI), la fonction dir() retourne la liste des fonctions et données d'un module :
+
>>> dir (math) ['__doc__', '__name__', '__package__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'hypot', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']
+
Sous Edupython, vous trouverez la liste des fonctions dans l'onglet du bas nommé Variables
+
+
Pour appeler une fonction d'un module, la syntaxe est la suivante : module.fonction(arguments)
+
Pour accéder à une donnée d'un module : module.data
+
>>> print (math.pi) # donnée pi du module math (nombre pi) >>> print (math.sin(math.pi/4.0)) # fonction sin() du module math (sinus) >>> print (math.sqrt(2.0)) # fonction sqrt() du module math (racine carrée) >>> print (math.sqrt(-5.0)) >>> print (math.exp(-3.0)) # fonction exp() du module math (exponentielle) >>> print (math.log(math.e)) # fonction log() du module math (logarithme népérien)
+
Pour simplifier, vous pouvez importer toutes les fonctions d'un module :
+
>>> from math import *
+
+
Vous devez privilégier uniquement l'importation des fonctions que vous souhaitez utiliser:
+
>>> from math import pi
+
Utilisation d'un module en Python (vidéo)
+
+
Créé avec HelpNDoc Personal Edition: Générateur de documentations PDF gratuit
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Letypeboolbooleen.html b/Activity_3_python/LangagePython_fonctions/Letypeboolbooleen.html
new file mode 100644
index 0000000..fb57ef7
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Letypeboolbooleen.html
@@ -0,0 +1,181 @@
+
+
+
+
+
+ Le type bool (booléen)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Deux valeurs sont possibles : True et False
+
>>> choix = True >>> print ( type (choix))
+
Les opérateurs de comparaison :
+
+
+Opérateur
+
+Signification
+
+Remarques
+
+
+
+<
+
+strictement inférieur
+
+
+
+
+
+<=
+
+inférieur ou égal
+
+
+
+
+
+>
+
+strictement supérieur
+
+
+
+
+
+>=
+
+supérieur ou égal
+
+
+
+
+
+==
+
+égal
+
+Attention : deux signes ==
+
+
+
+!=
+
+différent
+
+
+
+
+
+
+
>>> b = 10 >>> print (b > 8) >>> print (b == 5) >>> print (b != 10) >>> print (0 <= b <= 20)
+
Les opérateurs logiques : and , or , not
+
>>> note = 13.0 >>> mention_ab = note >= 12.0 and note < 14.0 # ou bien : mention_ab = 12.0 <= note < 14.0 >>> print (mention_ab) >>> print ( not mention_ab) >>> print (note == 20.0 or note == 0.0)
+
L'opérateur in s'utilise avec des chaînes (type str ) ou des listes (type list ) :
+
>>> chaine = 'Bonsoir' >>> # la sous-chaîne 'soir' fait-elle partie de la chaîne 'Bonsoir' ? >>> resultat = 'soir' in chaine >>> print (resultat) >>> print ( 'b' in chaine)
+
>>> maliste = [4, 8, 15] >>> # le nombre entier 9 est-il dans la liste ? >>> print (9 in maliste) >>> print (8 in maliste) >>> print (14 not in maliste)
+
+
Créé avec HelpNDoc Personal Edition: Générateur de documentation et EPub facile
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Letypedictdictionnaire.html b/Activity_3_python/LangagePython_fonctions/Letypedictdictionnaire.html
new file mode 100644
index 0000000..9b46360
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Letypedictdictionnaire.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+ Le type dict (dictionnaire)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Un dictionnaire stocke des données sous la forme clé ⇒ valeur Une clé est unique et n'est pas nécessairement un entier (comme c'est le cas de l'indice d'une liste).
+
>>> moyennes = { 'math' : 12.5, 'anglais' : 15.8} # entre accolades >>> print ( type (moyennes)) >>> print (moyennes[ 'anglais' ]) # entre crochets >>> moyennes[ 'anglais' ] = 14.3 # nouvelle affectation >>> print (moyennes) >>> moyennes[ 'sport' ] = 11.0 # nouvelle entrée >>> print (moyennes)
+
+
Créé avec HelpNDoc Personal Edition: Créer des documentations web iPhone
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Letypefloatnombresenvirguleflott.html b/Activity_3_python/LangagePython_fonctions/Letypefloatnombresenvirguleflott.html
new file mode 100644
index 0000000..0e72176
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Letypefloatnombresenvirguleflott.html
@@ -0,0 +1,152 @@
+
+
+
+
+
+ Le type float (nombres en virgule flottante)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
>>> b = 17.0 # le séparateur décimal est un point (et non une virgule) >>> print (b) >>> print ( type (b))
+
>>> c = 14.0/3.0 >>> print (c)
+
>>> c = 14.0//3.0 # division entière >>> print (c)
+
Attention: il faut éviter de faire des divisions entières sur des nombres négatifs
+
>>> print ( 7//3 )
+
>>> print ( -7//3 )
+
Attention : avec des nombres entiers, l'opérateur / fait une division classique et retourne toujours un type float :
+
>>> c = 12/3 >>> print (c)
+
Notation scientifique :
+
>>> a = -1.784892e4 >>> print (a)
+
Entre deux nombres donnés, par exemple entre 1 et 4, ou entre 3,5 et 3,6 ou entre – 10,36 et – 10,34… il existe une infinité d’autres nombres. Certaines sont des entiers, comme 2 ou 3, certains sont des décimaux comme 1,5 ou 2,3, d’autres sont des rationnels comme 4/3, d’autres sont des irrationnels comme .
+
+
Nous allons voir qu’en machine, certains nombres sont stockés de manière exacte et d’autre de manière approchée.
+
+
+Calculer 0,1 + 0,2 en langage Python.
+
+
Expliquer pourquoi le résultat n’est pas celui attendu
+
+
On peut tester l’égalité de 0,1 + 0,2 avec 0,3
+
+
>>> print ( 0.1+0.2 == 0.3 )
+
Il faut éviter de tester l’égalité de deux flottants.
+
+
• La fonction « float() » permet de convertir un entier en flottant.
+
>>> print ( float (5) )
+
• La fonction « int() » permet de convertir un flottant en entier.
+
>>> print ( int (4.8) )
+
À tester avec des nombres positifs ou négatifs pour voir comment la valeur est obtenue (tronquée ? arrondie ?).
+
+
La fonction « print () » permet d’afficher des flottants en indiquant le nombre de chiffres à afficher après la virgule à l’aide de la chaîne "%.2f" %x dans laquelle le nombre devant f donne le nombre de décimales et x est le nombre à afficher.
+
>>> x = 0.123456 >>> print (x)
+
>>> print ( "%.2f" %x )
+
• Il faut être prudent avec les arrondis.
+
+
>>> print ( "%.2f" %0.1 )
+
>>> print ( "%.20f" %0.1 )
+
>>> print ( "%.20f" %0.125 )
+
>>> print ( 1.2*3 )
+
+
Créé avec HelpNDoc Personal Edition: Générateur complet de livres électroniques ePub
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Letypeintintegernombresentiers.html b/Activity_3_python/LangagePython_fonctions/Letypeintintegernombresentiers.html
new file mode 100644
index 0000000..0e51d49
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Letypeintintegernombresentiers.html
@@ -0,0 +1,160 @@
+
+
+
+
+
+ Le type int (integer: nombres entiers)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Depuis EduPython (IDLE PyScripter), saisir ces lignes de programme dans la Console Python (interpréteur Python en mode interactif)
+
Pour affecter (on dit aussi assigner) la valeur 16 à la variable nommée age :
+
+
Afin que vous gardiez une trace de votre travail, saisir les différentes lignes de programme dans la zone de saisie puis exécuter pour voir le résultat dans la console Python.
+
+
Désormais vous devrez utiliser la fonction print() pour afficher la valeur de la variable :
+
Remarque : Il est possible en langage Python de réaliser des affectations multiples:
+
>>> a,b = 2,3
+
>>> print (a)
+
>>> print (b)
+
En programmation, le codage de la variable diffère en fonction de la donnée utilisée (booléen, nombre entiers, nombre à virgule, caractères...). On parle alors de type de variable.
+
En langage Python, le typage est dynamique ce qui signifie que c’est l’instruction d’affectation qui va définir le type de la variable.
+
+
La fonction type() retourne le type de la variable :
+
>>> print ( type (age))
+
int est le type des nombres entiers.
+
>>> x= 0b11111011101 >>> print (x)
+
>>> y= 0x7DD >>> print (y)
+
Rappel:
+
La notation « 0b… » indique que la valeur du nombre est en binaire.
+
La notation « 0x… » indique que la valeur du nombre est en hexadécimal.
+
+
+On peut convertir un nombre en binaire en utilisant la fonction « bin() ». Par exemple:
+
+
>>> binaire= bin (25) >>> print (binaire)
+
+On peut convertir un nombre en décimal en écrivant simplement sa valeur.
+
+
>>> decimal= 0x1FA >>> print (decimal)
+
+On peut convertir un nombre en hexadécimal en utilisant la fonction « hex() ».
+
+
>>> hexadecimal= hex (506) >>> print (hexadecimal)
+
+
Commenter et documenter son programme sont essentiels pour maintenir un code clair et pour faciliter la collaboration avec d'autres personnes. Cette pratique de programmation permet également de se rappeler ultérieurement l'utilité de telle ou telle variable, méthode, etc...
+
>>> # ceci est un commentaire >>> age = age + 1 # en plus court : age += 1 >>> print (age) >>> age = age - 3 # en plus court : age -= 3 >>> print (age) >>> age = age*2 # en plus court : age *= 2 >>> print (age)
+
>>> a = 6*3 - 20 >>> print (a)
+
>>> b = 25 >>> c = a + 2*b >>> print (b, c) # ne pas oublier la virgule
+
L'opérateur // donne la division entière :
+
>>> tour = 450//360 >>> print (tour)
+
L'opérateur % donne le reste de la division (opération modulo) :
+
>>> angle = 450%360 >>> print (angle)
+
L'opérateur ** donne la puissance :
+
>>> mo = 2**20 >>> print (mo) >>> racine2 = 2**0.5 >>> print (racine2)
+
+
+
+
Créé avec HelpNDoc Personal Edition: Qu'est-ce qu'un outil de création d'aide ?
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Letypelistliste.html b/Activity_3_python/LangagePython_fonctions/Letypelistliste.html
new file mode 100644
index 0000000..f0c25c0
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Letypelistliste.html
@@ -0,0 +1,121 @@
+
+
+
+
+
+ Le type list (liste)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Une liste est une structure de données. Le premier élément d'une liste possède l'indice (l'index) 0. Dans une liste, on peut avoir des éléments de plusieurs types.
+
>>> infoperso = [ 'Pierre' , 'Dupont' , 17, 1.75, 72.5] >>> # la liste infoperso contient 5 éléments de types str, str, int, float et float >>> print ( type (infoperso)) >>> print (infoperso) >>> print ( 'Prénom : ' , infoperso[0]) # premier élément (indice 0) >>> print ( 'Age : ' , infoperso[2]) # le troisième élément a l'indice 2 >>> print ( 'Taille : ' , infoperso[3]) # le quatrième élément a l'indice 3
+
La fonction range() crée une liste d'entiers régulièrement espacés :
+
>>> maliste = range (10) >>> print ( list (maliste)) >>> print ( type (maliste))
+
>>> maliste = range (1,10,2) # range(début,fin non comprise,intervalle) >>> print ( list (maliste)) >>> print (maliste[2]) # le troisième élément a l'indice 2
+
On peut créer une liste de listes, qui s'apparente à un tableau à 2 dimensions (ligne, colonne) :
+
0 1 2 10 11 12 20 21 22
+
>>> maliste = [[0, 1, 2], [10, 11, 12], [20, 21, 22]] >>> print (maliste[0]) >>> print (maliste[0][0]) >>> print (maliste[2][1]) # élément à la troisième ligne et deuxième colonne >>> maliste[2][1] = 69 # nouvelle affectation >>> print (maliste)
+
+
Créé avec HelpNDoc Personal Edition: Nouvelles et informations sur les outils de logiciels de création d'aide
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Letypestrstringchainedecaractere.html b/Activity_3_python/LangagePython_fonctions/Letypestrstringchainedecaractere.html
new file mode 100644
index 0000000..ef61bcc
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Letypestrstringchainedecaractere.html
@@ -0,0 +1,134 @@
+
+
+
+
+
+ Le type str (string : chaîne de caractères)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
>>> nom = 'Dupont' # entre apostrophes >>> print (nom) >>> print ( type (nom)) >>> prenom = "Pierre" # on peut aussi utiliser les guillemets >>> print (prenom) >>> print (nom, prenom) # ne pas oublier la virgule
+
La concaténation désigne la mise bout à bout de plusieurs chaînes de caractères. La concaténation utilise l'opérateur +
+
>>> chaine = nom + prenom # concaténation de deux chaînes de caractères >>> print (chaine) >>> chaine = prenom + nom # concaténation de deux chaînes de caractères >>> print (chaine) >>> chaine = prenom + ' ' + nom >>> print (chaine) >>> chaine = chaine + ' 18 ans' # en plus court : chaine += ' 18 ans' >>> print (chaine)
+
La fonction len() retourne la longueur (length) de la chaîne de caractères :
+
>>> print ( len (chaine))
+
Indexage et slicing :
+
>>> print (chaine[0]) # premier caractère (indice 0) >>> print (chaine[1]) # deuxième caractère (indice 1) >>> print (chaine[1:4]) # slicing >>> print (chaine[2:]) # slicing >>> print (chaine[-1]) # dernier caractère (indice -1) >>> print (chaine[-6:]) # slicing
+
En résumé :
+
+---+---+---+---+---+---+ | M | u | r | i | e | l | +---+---+---+---+---+---+ 0 1 2 3 4 5 6 -6 -5 -4 -3 -2 -1
+
+
>>> chaine = 'Aujourd' hui ' SyntaxError: invalid syntax >>> chaine = 'Aujourd\'hui' # séquence d'échappement \' >>> print (chaine) >>> chaine = "Aujourd'hui" >>> print (chaine)
+
La séquence d'échappement \n représente un saut ligne :
+
>>> chaine = 'Première ligne\nDeuxième ligne' >>> print (chaine)
+
Plus simplement, on peut utiliser les triples guillemets (ou les triples apostrophes) pour encadrer une chaîne définie sur plusieurs lignes :
+
>>> chaine = """Première ligne Deuxième ligne""" >>> print (chaine)
+
On ne peut pas mélanger les serviettes et les torchons (ici type str et type int ) :
+
>>> chaine = '17.45' >>> print ( type (chaine)) >>> chaine = chaine + 2
+
La fonction float() permet de convertir un type str en type float
+
>>> nombre = float (chaine) >>> print (nombre) >>> print ( type (nombre)) >>> nombre = nombre + 2 # en plus court : nombre += 2 >>> print (nombre)
+
La fonction input() lance une invite de commande (en anglais : prompt) pour saisir une chaîne de caractères.
+
>>> # saisir une chaîne de caractères et valider avec la touche Enter >>> chaine = input ( "Entrer un nombre : " ) Entrer un nombre : 14.56 >>> print (chaine) >>> print ( type (chaine)) >>> nombre = float (chaine) # conversion de type >>> print (nombre**2)
+
+
Créé avec HelpNDoc Personal Edition: Générateur facile de livres électroniques et documentation
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Letypetuple.html b/Activity_3_python/LangagePython_fonctions/Letypetuple.html
new file mode 100644
index 0000000..b42dbbb
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Letypetuple.html
@@ -0,0 +1,113 @@
+
+
+
+
+
+ Le type tuple
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Linstructiondef.html b/Activity_3_python/LangagePython_fonctions/Linstructiondef.html
new file mode 100644
index 0000000..7c3e4d2
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Linstructiondef.html
@@ -0,0 +1,115 @@
+
+
+
+
+
+ L'instruction def
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Syntaxe
+
def nom_de_la_fonction (parametre1, parametre2, parametre3, ...): """ Documentation qu'on peut écrire sur plusieurs lignes """ # docstring entouré de 3 guillemets (ou apostrophes) bloc d'instructions # attention à l'indentation return resultat # la fonction retourne le contenu de la variable resultat
+
+
Créé avec HelpNDoc Personal Edition: Générateur de documentation et EPub gratuit
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Linstructionelif.html b/Activity_3_python/LangagePython_fonctions/Linstructionelif.html
new file mode 100644
index 0000000..3ab208d
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Linstructionelif.html
@@ -0,0 +1,129 @@
+
+
+
+
+
+ L'instruction elif
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Une instruction elif (contraction de else if ) est toujours associée à une instruction if
+
Syntaxe
+
if expression 1: bloc d'instructions 1 elif expression 2: bloc d'instructions 2 elif expression 3: bloc d'instructions 3 # ici deux instructions elif, mais il n'y a pas de limitation else : bloc d'instructions 4 # suite du programme
+
Si l'expression 1 est vraie alors le bloc d'instructions 1 est exécuté, et on passe à la suite du programme. Si l'expression 1 est fausse alors on teste l'expression 2 :
+
+si l'expression 2 est vraie on exécute le bloc d'instructions 2, et on passe à la suite du programme.
+si l'expression 2 est fausse alors on teste l'expression 3, etc.
+
+
Le bloc d'instructions 4 est donc exécuté si toutes les expressions sont fausses (c'est le bloc "par défaut").
+
Parfois il n'y a rien à faire. Dans ce cas, on peut omettre l'instruction else :
+
if expression 1: bloc d'instructions 1 elif expression 2: bloc d'instructions 2 elif expression 3: bloc d'instructions 3 # suite du programme
+
L'instruction elif évite souvent l'utilisation de conditions imbriquées (et souvent compliquées).
+
Exemple
+
# script Condition5.py # ce script fait la même chose que Condition4.py note = float ( input ( "Note sur 20 : " )) if note == 0.0: print ("C'est en dessous de la moyenne") print ("... lamentable !") elif note == 20.0: print ("J'ai la moyenne") print ("C'est même excellent !") elif note < 10.0 and note > 0.0: # ou bien : elif 0.0 < note < 10.0: print ("C'est en dessous de la moyenne") elif note >= 10.0 and note < 20.0: # ou bien : elif 10.0 <= note < 20.0: print ("J'ai la moyenne") else : print ("Note invalide !") print ("Fin du programme")
+
Exécuter et tester
+
+
+
Créé avec HelpNDoc Personal Edition: Générateur de documentation complet
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Linstructionelse.html b/Activity_3_python/LangagePython_fonctions/Linstructionelse.html
new file mode 100644
index 0000000..45235ca
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Linstructionelse.html
@@ -0,0 +1,125 @@
+
+
+
+
+
+ L'instruction else
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Une instruction else est toujours associée à une instruction if
+
Syntaxe
+
if expression: bloc d'instructions 1 # attention à l'indentation else : # else est au même niveau que if bloc d'instructions 2 # attention à l'indentation # suite du programme
+
Si l'expression est vraie (True) alors le bloc d'instructions 1 est exécuté. Si l'expression est fausse (False) alors c'est le bloc d'instructions 2 qui est exécuté.
+
# script Condition2.py chaine = input ( "Note sur 20 : " ) note = float (chaine) if note >= 10.0: # ce bloc est exécuté si l'expression (note >= 10.0) est vraie print ("J'ai la moyenne") else : # ce bloc est exécuté si l'expression (note >= 10.0) est fausse print ("C'est en dessous de la moyenne") print ("Fin du programme")
+
Exécuter et tester
+
Pour traiter le cas des notes invalides (<0 ou >20), on peut imbriquer des instructions conditionnelles :
+
# script Condition3.py chaine = input ( "Note sur 20 : " ) note = float (chaine) if note > 20.0 or note < 0.0: # ce bloc est exécuté si l'expression (note > 20.0 or note < 0.0) est vraie print ("Note invalide !") else : # ce bloc est exécuté si l'expression (note > 20.0 or note < 0.0) est fausse if note >= 10.0: # ce bloc est exécuté si l'expression (note >= 10.0) est vraie print ("J'ai la moyenne") else : # ce bloc est exécuté si l'expression (note >= 10.0) est fausse print ("C'est en dessous de la moyenne") print ("Fin du programme")
+
Exécuter et tester
+
On ajoute encore un niveau d'imbrication pour traiter les cas particuliers 0 et 20 :
+
# script Condition4.py chaine = input ( "Note sur 20 : " ) note = float (chaine) if note > 20.0 or note < 0.0: print ("Note invalide !") else : if note >= 10.0: print ("J'ai la moyenne") if note == 20.0: # ce bloc est exécuté si l'expression (note == 20.0) est vraie print ("C'est même excellent !") else : print ("C'est en dessous de la moyenne") if note == 0.0: # ce bloc est exécuté si l'expression (note == 0.0) est vraie print ("... lamentable !") print ("Fin du programme")
+
Exécuter et tester
+
+
Créé avec HelpNDoc Personal Edition: Créer des documents d'aide PDF facilement
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Linstructionfor.html b/Activity_3_python/LangagePython_fonctions/Linstructionfor.html
new file mode 100644
index 0000000..b31e876
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Linstructionfor.html
@@ -0,0 +1,140 @@
+
+
+
+
+
+ L'instruction for
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Syntaxe
+
for élément in séquence : bloc d'instructions # suite du programme
+
Les éléments de la séquence sont issus d'une chaîne de caractères ou bien d'une liste.
+
Exemple avec une séquence de caractères
+
# script Boucle4.py chaine = 'Bonsoir' for lettre in chaine: # lettre est la variable d'itération print (lettre) print ("Fin de la boucle")
+
Exécuter
+
La variable lettre est initialisée avec le premier élément de la séquence ( ' B ' ). Le bloc d'instructions est alors exécuté. Puis la variable lettre est mise à jour avec le second élément de la séquence ( ' o ' ) et le bloc d'instructions à nouveau exécuté... Le bloc d'instructions est exécuté une dernière fois lorsqu'on arrive au dernier élément de la séquence ( ' r ' ) :
+
Exemple avec les éléments d'une liste
+
# script Boucle5.py maliste = [ 'Pierre' , 67.5, 18] for element in maliste: print (element) print ("Fin de la boucle")
+
Exécuter et tester
+
Là, on affiche dans l'ordre les éléments de la liste :
+
Fonction range()
+
L'association avec la fonction range() est très utile pour créer des séquences automatiques de nombres entiers :
+
# script Boucle6.py print ( list ( range (1,5))) for i in range (1,5): print (i) print ("Fin de la boucle")
+
>>> [1, 2, 3, 4] 1 2 3 4 Fin de la boucle
+
Table de multiplication
+
La création d'une table de multiplication paraît plus simple avec une boucle for qu'avec une boucle while :
+
# script Boucle7.py for compteur in range (1,11): print (compteur, '* 9 =' , compteur*9) print ("Et voilà !")
+
Exécuter
+
L'instruction break
+
L'instruction break provoque une sortie immédiate d'une boucle while ou d'une boucle for .
+
Dans l'exemple suivant, l'expression True est toujours ... vraie : on a une boucle sans fin. L'instruction break est donc le seul moyen de sortir de la boucle.
+
Affichage de l'heure courante
+
# script Boucle8.py import time # importation du module time while True : # strftime() est une fonction du module time print ( 'Heure courante ' , time.strftime( '%H:%M:%S' )) quitter = input( 'Voulez-vous quitter le programme (o/n) ? ' ) if quitter == 'o' : break print ("A bientôt")
+
Exécuter et tester
+
Astuce
+
Si vous connaissez le nombre de boucles à effectuer, utiliser une boucle for . Autrement, utiliser une boucle while (notamment pour faire des boucles sans fin).
+
+
Créé avec HelpNDoc Personal Edition: Générateur de documentation complet
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Linstructionif.html b/Activity_3_python/LangagePython_fonctions/Linstructionif.html
new file mode 100644
index 0000000..31e40f7
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Linstructionif.html
@@ -0,0 +1,122 @@
+
+
+
+
+
+ L'instruction if
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Syntaxe
+
if expression: # ne pas oublier le signe de ponctuation ':' bloc d'instructions # attention à l'indentation # suite du programme
+
Si l'expression est vraie ( True ) alors le bloc d'instructions est exécuté. Si l'expression est fausse ( False ) on passe directement à la suite du programme.
+
Nous allons commencer par créer le script Condition1.py :
+
+
# script Condition1.py chaine = input ( "Note sur 20 : " ) note = float (chaine) if note >= 10.0: # ce bloc est exécuté si l'expression (note >= 10.0) est vraie print ("J'ai la moyenne") print ("Fin du programme")
+
Pour exécuter le script : Cliquer sur exécuter (ou touche Ctrl + F9) et tester.
+
+
+
Créé avec HelpNDoc Personal Edition: Créer facilement des fichiers Qt Help
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Linstructionwhile.html b/Activity_3_python/LangagePython_fonctions/Linstructionwhile.html
new file mode 100644
index 0000000..ed1c1fc
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Linstructionwhile.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+ L'instruction while
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Syntaxe
+
while expression: # ne pas oublier le signe de ponctuation ':' bloc d'instructions # attention à l'indentation # suite du programme
+
Si l'expression est vraie ( True ) le bloc d'instructions est exécuté, puis l'expression est à nouveau évaluée. Le cycle continue jusqu'à ce que l'expression soit fausse ( False ) : on passe alors à la suite du programme.
+
Exemple : un script qui compte de 1 à 4
+
# script Boucle1.py # initialisation de la variable de comptage compteur = 1 while compteur < 5: # ce bloc est exécuté tant que la condition (compteur < 5) est vraie print (compteur, compteur < 5) compteur += 1 # incrémentation du compteur, compteur = compteur + 1 print (compteur < 5) print ("Fin de la boucle")
+
Exécuter
+
Table de multiplication par 8
+
# script Boucle2.py compteur = 1 # initialisation de la variable de comptage while compteur <= 10: # ce bloc est exécuté tant que la condition (compteur <= 10) est vraie print (compteur, '* 8 =' , compteur*8) compteur += 1 # incrémentation du compteur, compteur = compteur + 1 print ("Et voilà !")
+
Exécuter
+
Affichage de l'heure courante
+
# script Boucle3.py import time # importation du module time quitter = 'n' # initialisation while quitter != 'o' : # ce bloc est exécuté tant que la condition est vraie # strftime() est une fonction du module time print ( 'Heure courante ' , time.strftime( '%H:%M:%S' )) quitter = input( "Voulez-vous quitter le programme (o/n) ? " ) print ("A bientôt")
+
Exécuter et tester
+
+
Créé avec HelpNDoc Personal Edition: Produire des livres EPub gratuitement
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Nomsdevariables.html b/Activity_3_python/LangagePython_fonctions/Nomsdevariables.html
new file mode 100644
index 0000000..d623293
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Nomsdevariables.html
@@ -0,0 +1,126 @@
+
+
+
+
+
+ Noms de variables
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Identificateur:
+
+
Le nom d'une variable s'écrit avec des lettres (non accentuées) , des chiffres ou bien l'underscore _
+
+
Le nom d'une variable ne doit pas commencer par un chiffre .
+
+
En langage Python, l'usage est de ne pas utiliser de lettres majuscules pour nommer les variables (celles-ci sont réservées pour nommer les classes).
+
+
Il est préférable d'utiliser des noms évocateurs
+
+
Exemple : age, mon_age, temperature1
+
+
A éviter : Age, AGE, MonAge, monAge, Temperature1
+
+
Créé avec HelpNDoc Personal Edition: Éditeur de documentation CHM facile
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Porteedevariablesvariablesglobal.html b/Activity_3_python/LangagePython_fonctions/Porteedevariablesvariablesglobal.html
new file mode 100644
index 0000000..1574b30
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Porteedevariablesvariablesglobal.html
@@ -0,0 +1,127 @@
+
+
+
+
+
+ Portée de variables: variables globales et locales
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
La portée d'une variable est l'endroit du programme où on peut accéder à la variable.
+
Observons le script suivant :
+
a = 10 # variable globale au programme def mafonction (): a = 20 # variable locale à la fonction print (a) return
+
>>> print (a) # nous sommmes dans l'espace global du programme >>> mafonction() # nous sommes dans l'espace local de la fonction >>> print (a) # de retour dans l'espace global
+
Nous avons deux variables différentes qui portent le même nom a
+
Une variable a de valeur 20 est créée dans la fonction : c'est une variable locale à la fonction. Elle est détruite dès que l'on sort de la fonction.
+
global
+
L'instruction global rend une variable globale :
+
a = 10 # variable globale def mafonction (): global a # la variable est maintenant globale a = 20 print (a) return
+
>>> print (a) >>> mafonction() >>> print (a)
+
Remarque : il est préférable d'éviter l'utilisation de l'instruction global car c'est une source d'erreurs (on peut ainsi modifier le contenu d'une variable globale en croyant agir sur une variable locale). La sagesse recommande donc de suivre la règle suivante :
+
+ne jamais affecter dans un bloc de code local une variable de même nom qu'une variable globale
+
+
+
Créé avec HelpNDoc Personal Edition: Environnement de création d'aide complet
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Preambule.html b/Activity_3_python/LangagePython_fonctions/Preambule.html
new file mode 100644
index 0000000..cd55ebc
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Preambule.html
@@ -0,0 +1,134 @@
+
+
+
+
+
+ Préambule
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Le langage Python est un langage de programmation objet interprété . Il a été développé par Guido Von Rossum à partir de 1989 à l’Université d’Amsterdam.
+
+
Python est un langage multiplateforme , c'est-à-dire disponible sur plusieurs architectures (compatible PC, tablettes, smartphones, ordinateur low cost Raspberry Pi...) et systèmes d'exploitation (Windows, Linux, Mac, Android...).
+
+
Le langage Python est gratuit, sous licence libre .
+
+
C'est un des langages informatiques les plus populaires avec C, C++, C#, Objective-C, Java, PHP, JavaScript, Delphi, Visual Basic, Ruby et Perl ( liste non exhaustive ).
+
+
Actuellement, Python en est à sa version 3 depuis 2008.
+
Attention : Python 2 n'est pas compatible avec Python 3 !
+
+
Que peut-on faire avec Python ?
+
Beaucoup de choses !
+
+
+du calcul scientifique (librairie NumPy )
+des graphiques (librairie matplotlib )
+du traitement du son, de la synthèse vocale (librairie eSpeak)
+du traitement d'image (librairie PIL ), de la vision artificielle par caméra (framework SimpleCV )
+de la bio-informatique (librairie Biopython )
+des applications avec interface graphique GUI (librairies Tkinter , PyQt , wxPython , PyGTK ...)
+des jeux vidéo en 2D (librairie Pygame )
+des applications multi-touch (framework kivy pour tablette et smartphone à écran tactile)
+des applications Web (serveur Web Zope ; frameworks Web Flask , Django )
+interfacer des systèmes de gestion de base de données (librairie MySQLdb ...)
+des applications réseau (framework Twisted )
+communiquer avec des ports série (librairie PySerial ), en Bluetooth (librairie pybluez )...
+
+
...
+
Des dizaines de milliers de librairies sont disponibles sur le dépôt officiel PyPI .
+
+
+
+
Créé avec HelpNDoc Personal Edition: Générateur de documentation et EPub facile
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/ProgrammationOrienteeObjetPOO.html b/Activity_3_python/LangagePython_fonctions/ProgrammationOrienteeObjetPOO.html
new file mode 100644
index 0000000..d80a01c
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/ProgrammationOrienteeObjetPOO.html
@@ -0,0 +1,129 @@
+
+
+
+
+
+ Programmation Orientée Objet (POO)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Python est un langage de programmation orienté objet (comme les langages C++, Java, PHP, Ruby...). Une variable est en fait un objet d'une certaine classe .
+
Tous les types du langage python sont également des objets.
+
Par exemple, la variable amis est un objet de la classe list . On dit aussi que la variable amis est une instance de la classe list . L' instanciation (action d'instancier) est la création d'un objet à partir d'une classe.
+
>>> # instanciation de l'objet amis de la classe list >>> amis = [ 'Nicolas' , 'Julie' ] # ou bien : amis = list(['Nicolas', 'Julie']) >>> print ( type (amis))
+
Une classe possède des fonctions que l'on appelle méthodes et des données que l'on appelle attributs .
+
La méthode append() de la classe list ajoute un nouvel élément en fin de liste :
+
>>> # instanciation d'une liste vide >>> amis = [] # ou bien : amis = list() >>> amis.append( 'Nicolas' ) # synthase générale : objet.méthode(arguments) >>> print (amis) >>> amis.append( 'Julie' ) # ou bien : amis = amis + ['Julie'] >>> print (amis) >>> amis.append( 'Pauline' ) >>> print (amis)
+
>>> amis.sort() # la méthode sort() trie les éléments >>> print (amis)
+
>>> amis.reverse() # la méthode reverse() inverse la liste des éléments >>> print (amis)
+
La méthode lower() de la classe str retourne la chaîne de caractères en casse minuscule :
+
>>> # la variable chaine est une instance de la classe str >>> chaine = "BONJOUR" # ou bien : chaine = str("BONJOUR") >>> chaine2 = chaine.lower() # on applique la méthode lower() à l'objet chaine >>> print (chaine2) >>> print (chaine)
+
La méthode pop() de la classe dict supprime une clé :
+
>>> # instanciation de l'objet moyennes de la classe dict >>> moyennes = { 'sport' : 11.0, 'anglais' : 14.3, 'math' : 12.5} >>> # ou : moyennes = dict({'sport': 11.0, 'anglais': 14.3, 'math': 12.5}) >>> moyennes.pop( 'anglais' ) >>> print (moyennes)
+
>>> print (moyennes.keys()) # la méthode keys() retourne la liste des clés
+
>>> print (moyennes.values()) # la méthode values() retourne la liste des valeurs
+
+
+
Créé avec HelpNDoc Personal Edition: Générateur d'aides CHM gratuit
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Scripts.html b/Activity_3_python/LangagePython_fonctions/Scripts.html
new file mode 100644
index 0000000..e275071
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Scripts.html
@@ -0,0 +1,132 @@
+
+
+
+
+
+ Scripts
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Scripts
+
Un programme (code source) est une séquence d'instructions.
+
Dans le cas d'un programme en langage Python, on parle souvent de script Python.
+
+
Un script se présente sous la forme d'un fichier texte avec l'extension .py
+
+
Voici un exemple de script Python :
+
Bonjour.py
+
Télécharger le et copier le dans votre dossier de travail
+
+
Le code source d'un script s'ouvre avec un éditeur de texte
+
+
Démarrer l'IDLE Edupython
+
L'IDLE muni d'un interpréteur permettra d'exécuter le script.
+
+
Ouvrir le script depuis Edupython.
+
Une fois chargé, 2 solutions s'offrent à vous pour l'exécuter:
+
+Soit vous cliquez sur l'icône Exécuter ou (Ctrl + F9)
+Soit vous appelez le script dans la Console Python (interpréteur Python en mode interactif)
+
+
+
+
+
+
+
+
+
Créé avec HelpNDoc Personal Edition: Environnement de création d'aide complet
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/Variablestypesetoperateurs.html b/Activity_3_python/LangagePython_fonctions/Variablestypesetoperateurs.html
new file mode 100644
index 0000000..693712e
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/Variablestypesetoperateurs.html
@@ -0,0 +1,136 @@
+
+
+
+
+
+ Variables, types et opérateurs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Notion de variables
+
+
Lorsque l’on écrit un programme informatique, on va manipuler des données comme des nombres entiers, des nombres à virgules, des chaînes de caractères.
+
+
Pour pouvoir manipuler facilement toutes ces données, on va les mémoriser, les stocker dans des variables , ce qui revient à les « ranger dans une boîte » et on va leur donner un nom, « coller une étiquette dessus ».
+
+
+
Le processeur sait très bien utiliser ces « boites » mémoires (c’est même son travail principal).
+
+
Déclarer une variable permet de réserver un espace mémoire volatile (cache, vive) dans lequel il est possible de stocker une valeur (une donnée), pour la réutiliser ou la modifier plus tard.
+
+
L’instruction d' affectation est l’action d'associer une valeur à cette variable.
+
+
En Python une affectation est effectuée avec le signe « = », la variable étant écrite en premier et le contenu qu’elle doit prendre étant écrit en deuxième.
+
+
Exemple:
+
+
x = 5 #On affecte à la variable nommée x la valeur 5
+
+
+
Remarque:
+
+Une affectation dans une variable peut faire appel à la variable elle-même.
+
+
Par exemple a = a + 1 peut se traduire par : la variable a prend la valeur (actuelle) de a , + 1.
+
+En informatique, « a = b » ne veut pas dire la même chose que « b = a ».
+
+
+
+
+
+
Créé avec HelpNDoc Personal Edition: Créer des livres électroniques facilement
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/LangagePython_fonctions/css/base.css b/Activity_3_python/LangagePython_fonctions/css/base.css
new file mode 100644
index 0000000..bd22c80
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/css/base.css
@@ -0,0 +1,112 @@
+body {
+ background-color: #fff;
+ overflow: auto;
+ width: 100%;
+}
+
+.clear {
+ border: 0;
+ clear: both;
+ margin: 0;
+ padding: 0;
+}
+
+#topic_header, #topic_footer,
+#toc_header, #toc_footer {
+ padding: 10px;
+}
+
+#topic_content,
+#toc_content{
+ margin: 10px;
+}
+
+/* Backgrounds */
+
+#topic_header {
+ background: #fff url(../img/header-bg.png) repeat-x left top;
+ border-bottom: 1px solid #ccc;
+ margin-bottom: 15px;
+}
+
+#topic_footer{
+ background: #fff url(../img/footer-bg.png) repeat-x left top;
+ margin-top: 20px;
+}
+
+/* Topic */
+
+#topic_header #topic_header_content {
+ float: left;
+}
+
+#topic_header #topic_header_nav {
+ float: right;
+}
+
+#topic_header #topic_header_nav img {
+ margin-left: 5px;
+}
+
+#topic_header a,
+#topic_footer a,
+#search_results a,
+#popupMenu a {
+ color: #333;
+ text-decoration: none;
+}
+
+#topic_header a:hover,
+#topic_footer a:hover,
+#search_results a:hover,
+#popupMenu a:hover{
+ text-decoration: underline;
+}
+
+#topic_header h1 {
+ color: #333;
+ font-size: 18px;
+}
+
+#topic_footer {
+ font-size: 11px;
+}
+
+#topic_breadcrumb {
+ color: #333;
+ font-size: 11px;
+}
+
+/* Popup */
+
+#popupMenu {
+ background-color: #eee;
+ border: 1px solid #999;
+ position: absolute;
+ padding: 5px;
+ webkit-box-shadow: 0px 0px 5px #cccccc;
+ -moz-box-shadow: 0px 0px 5px #cccccc;
+ box-shadow: 0px 0px 5px #cccccc;
+}
+
+#popupMenu a{
+ display: block;
+ margin: 5px 10px 2px 5px;
+}
+
+.close-button{
+ color: #666;
+ cursor: hand;
+ cursor: pointer;
+ float: right;
+ font-size: 10px;
+ position: relative;
+ top: -5px;
+ right: -3px;
+}
+
+/* Search highlight */
+
+.highlight {
+ background-color: yellow;
+}
\ No newline at end of file
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/0.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/0.png
new file mode 100644
index 0000000..0189cda
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/0.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/1.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/1.png
new file mode 100644
index 0000000..01335b0
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/1.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/10.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/10.png
new file mode 100644
index 0000000..86c1b70
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/10.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/11.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/11.png
new file mode 100644
index 0000000..60da179
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/11.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/12.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/12.png
new file mode 100644
index 0000000..7977cad
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/12.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/13.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/13.png
new file mode 100644
index 0000000..2d6b99e
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/13.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/14.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/14.png
new file mode 100644
index 0000000..c6150b5
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/14.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/15.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/15.png
new file mode 100644
index 0000000..58f205f
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/15.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/16.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/16.png
new file mode 100644
index 0000000..746f6c4
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/16.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/17.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/17.png
new file mode 100644
index 0000000..e450e6b
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/17.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/18.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/18.png
new file mode 100644
index 0000000..fae8d06
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/18.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/19.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/19.png
new file mode 100644
index 0000000..557aa37
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/19.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/2.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/2.png
new file mode 100644
index 0000000..3887079
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/2.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/20.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/20.png
new file mode 100644
index 0000000..cb6845b
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/20.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/21.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/21.png
new file mode 100644
index 0000000..bfb11c9
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/21.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/22.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/22.png
new file mode 100644
index 0000000..17ed9c5
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/22.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/23.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/23.png
new file mode 100644
index 0000000..1c4a863
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/23.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/24.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/24.png
new file mode 100644
index 0000000..e91b518
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/24.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/25.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/25.png
new file mode 100644
index 0000000..00d2d5d
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/25.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/26.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/26.png
new file mode 100644
index 0000000..4952af6
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/26.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/27.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/27.png
new file mode 100644
index 0000000..a61fe9b
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/27.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/28.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/28.png
new file mode 100644
index 0000000..52160f0
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/28.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/29.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/29.png
new file mode 100644
index 0000000..06aa97c
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/29.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/3.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/3.png
new file mode 100644
index 0000000..b1c9413
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/3.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/30.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/30.png
new file mode 100644
index 0000000..7b52276
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/30.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/31.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/31.png
new file mode 100644
index 0000000..02283db
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/31.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/32.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/32.png
new file mode 100644
index 0000000..875843c
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/32.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/33.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/33.png
new file mode 100644
index 0000000..d64f137
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/33.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/34.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/34.png
new file mode 100644
index 0000000..a6d94c5
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/34.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/35.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/35.png
new file mode 100644
index 0000000..dfc87bf
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/35.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/36.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/36.png
new file mode 100644
index 0000000..ce6235b
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/36.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/37.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/37.png
new file mode 100644
index 0000000..0120330
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/37.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/38.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/38.png
new file mode 100644
index 0000000..5334fae
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/38.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/39.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/39.png
new file mode 100644
index 0000000..06e446b
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/39.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/4.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/4.png
new file mode 100644
index 0000000..6e5cfc0
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/4.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/40.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/40.png
new file mode 100644
index 0000000..6d744db
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/40.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/41.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/41.png
new file mode 100644
index 0000000..476edf4
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/41.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/5.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/5.png
new file mode 100644
index 0000000..1df634f
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/5.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/6.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/6.png
new file mode 100644
index 0000000..947d9c4
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/6.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/7.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/7.png
new file mode 100644
index 0000000..a362886
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/7.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/8.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/8.png
new file mode 100644
index 0000000..5bcd3ec
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/8.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/9.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/9.png
new file mode 100644
index 0000000..3b4991d
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/9.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/icons.gif b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/icons.gif
new file mode 100644
index 0000000..c0ccac1
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/icons.gif differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/loading.gif b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/loading.gif
new file mode 100644
index 0000000..251df05
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/loading.gif differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/ui.dynatree.css b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/ui.dynatree.css
new file mode 100644
index 0000000..29679b4
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/ui.dynatree.css
@@ -0,0 +1,440 @@
+/*******************************************************************************
+ * Tree container
+ */
+ul.dynatree-container
+{
+ font-family: tahoma, arial, helvetica;
+ font-size: 10pt; /* font size should not be too big */
+ white-space: nowrap;
+ padding: 3px;
+ margin: 0; /* issue 201 */
+ background-color: white;
+ border: 1px dotted gray;
+ overflow: auto;
+ height: 100%; /* issue 263 */
+}
+
+ul.dynatree-container ul
+{
+ padding: 0 0 0 16px;
+ margin: 0;
+}
+
+ul.dynatree-container li
+{
+ list-style-image: none;
+ list-style-position: outside;
+ list-style-type: none;
+ -moz-background-clip:border;
+ -moz-background-inline-policy: continuous;
+ -moz-background-origin: padding;
+ background-attachment: scroll;
+ background-color: transparent;
+ background-repeat: repeat-y;
+ background-image: url("vline.gif");
+ background-position: 0 0;
+ /*
+ background-image: url("icons_96x256.gif");
+ background-position: -80px -64px;
+ */
+ margin: 0;
+ padding: 1px 0 0 0;
+}
+/* Suppress lines for last child node */
+ul.dynatree-container li.dynatree-lastsib
+{
+ background-image: none;
+}
+/* Suppress lines if level is fixed expanded (option minExpandLevel) */
+ul.dynatree-no-connector > li
+{
+ background-image: none;
+}
+
+/* Style, when control is disabled */
+.ui-dynatree-disabled ul.dynatree-container
+{
+ opacity: 0.5;
+/* filter: alpha(opacity=50); /* Yields a css warning */
+ background-color: silver;
+}
+
+/*******************************************************************************
+ * Common icon definitions
+ */
+span.dynatree-empty,
+span.dynatree-vline,
+span.dynatree-connector,
+span.dynatree-expander,
+span.dynatree-icon,
+span.dynatree-checkbox,
+span.dynatree-radio,
+span.dynatree-drag-helper-img,
+#dynatree-drop-marker
+{
+ width: 16px;
+ height: 16px;
+/* display: -moz-inline-box; /* @ FF 1+2 removed for issue 221 */
+/* -moz-box-align: start; /* issue 221 */
+ display: inline-block; /* Required to make a span sizeable */
+ vertical-align: top;
+ background-repeat: no-repeat;
+ background-position: left;
+ background-image: url("icons.gif");
+ background-position: 0 0;
+}
+
+/** Used by 'icon' node option: */
+ul.dynatree-container img
+{
+ width: 16px;
+ height: 16px;
+ margin-left: 3px;
+ vertical-align: top;
+ border-style: none;
+}
+
+
+/*******************************************************************************
+ * Lines and connectors
+ */
+
+span.dynatree-connector
+{
+ background-position: -16px -64px;
+}
+
+/*******************************************************************************
+ * Expander icon
+ * Note: IE6 doesn't correctly evaluate multiples class names,
+ * so we create combined class names that can be used in the CSS.
+ *
+ * Prefix: dynatree-exp-
+ * 1st character: 'e': expanded, 'c': collapsed
+ * 2nd character (optional): 'd': lazy (Delayed)
+ * 3rd character (optional): 'l': Last sibling
+ */
+
+span.dynatree-expander
+{
+ background-position: 0px -80px;
+ cursor: pointer;
+}
+.dynatree-exp-cl span.dynatree-expander /* Collapsed, not delayed, last sibling */
+{
+ background-position: 0px -96px;
+}
+.dynatree-exp-cd span.dynatree-expander /* Collapsed, delayed, not last sibling */
+{
+ background-position: -64px -80px;
+}
+.dynatree-exp-cdl span.dynatree-expander /* Collapsed, delayed, last sibling */
+{
+ background-position: -64px -96px;
+}
+.dynatree-exp-e span.dynatree-expander, /* Expanded, not delayed, not last sibling */
+.dynatree-exp-ed span.dynatree-expander /* Expanded, delayed, not last sibling */
+{
+ background-position: -32px -80px;
+}
+.dynatree-exp-el span.dynatree-expander, /* Expanded, not delayed, last sibling */
+.dynatree-exp-edl span.dynatree-expander /* Expanded, delayed, last sibling */
+{
+ background-position: -32px -96px;
+}
+.dynatree-loading span.dynatree-expander /* 'Loading' status overrides all others */
+{
+ background-position: 0 0;
+ background-image: url("loading.gif");
+}
+
+
+/*******************************************************************************
+ * Checkbox icon
+ */
+span.dynatree-checkbox
+{
+ margin-left: 3px;
+ background-position: 0px -32px;
+}
+span.dynatree-checkbox:hover
+{
+ background-position: -16px -32px;
+}
+
+.dynatree-partsel span.dynatree-checkbox
+{
+ background-position: -64px -32px;
+}
+.dynatree-partsel span.dynatree-checkbox:hover
+{
+ background-position: -80px -32px;
+}
+
+.dynatree-selected span.dynatree-checkbox
+{
+ background-position: -32px -32px;
+}
+.dynatree-selected span.dynatree-checkbox:hover
+{
+ background-position: -48px -32px;
+}
+
+/*******************************************************************************
+ * Radiobutton icon
+ * This is a customization, that may be activated by overriding the 'checkbox'
+ * class name as 'dynatree-radio' in the tree options.
+ */
+span.dynatree-radio
+{
+ margin-left: 3px;
+ background-position: 0px -48px;
+}
+span.dynatree-radio:hover
+{
+ background-position: -16px -48px;
+}
+
+.dynatree-partsel span.dynatree-radio
+{
+ background-position: -64px -48px;
+}
+.dynatree-partsel span.dynatree-radio:hover
+{
+ background-position: -80px -48px;
+}
+
+.dynatree-selected span.dynatree-radio
+{
+ background-position: -32px -48px;
+}
+.dynatree-selected span.dynatree-radio:hover
+{
+ background-position: -48px -48px;
+}
+
+/*******************************************************************************
+ * Node type icon
+ * Note: IE6 doesn't correctly evaluate multiples class names,
+ * so we create combined class names that can be used in the CSS.
+ *
+ * Prefix: dynatree-ico-
+ * 1st character: 'e': expanded, 'c': collapsed
+ * 2nd character (optional): 'f': folder
+ */
+
+span.dynatree-icon /* Default icon */
+{
+ margin-left: 3px;
+ background-position: 0px 0px;
+}
+
+.dynatree-ico-cf span.dynatree-icon /* Collapsed Folder */
+{
+ background-position: 0px -16px;
+}
+
+.dynatree-ico-ef span.dynatree-icon /* Expanded Folder */
+{
+ background-position: -64px -16px;
+}
+
+/* Status node icons */
+
+.dynatree-statusnode-wait span.dynatree-icon
+{
+ background-image: url("loading.gif");
+}
+
+.dynatree-statusnode-error span.dynatree-icon
+{
+ background-position: 0px -112px;
+/* background-image: url("ltError.gif");*/
+}
+
+/*******************************************************************************
+ * Node titles
+ */
+
+/* @Chrome: otherwise hit area of node titles is broken (issue 133)
+ Removed again for issue 165; (133 couldn't be reproduced) */
+span.dynatree-node
+{
+/* display: -moz-inline-box; /* issue 133, 165, 172, 192. removed for issue 221*/
+/* -moz-box-align: start; /* issue 221 */
+/* display: inline-block; /* Required to make a span sizeable */
+}
+
+
+/* Remove blue color and underline from title links */
+ul.dynatree-container a
+/*, ul.dynatree-container a:visited*/
+{
+ color: black; /* inherit doesn't work on IE */
+ text-decoration: none;
+ vertical-align: top;
+ margin: 0px;
+ margin-left: 3px;
+/* outline: 0; /* @ Firefox, prevent dotted border after click */
+}
+
+ul.dynatree-container a:hover
+{
+/* text-decoration: underline; */
+ background-color: #F2F7FD; /* light blue */
+ border-color: #B8D6FB; /* darker light blue */
+}
+
+span.dynatree-node a
+{
+ font-size: 10pt; /* required for IE, quirks mode */
+ display: inline-block; /* Better alignment, when title contains */
+/* vertical-align: top;*/
+ padding-left: 3px;
+ padding-right: 3px; /* Otherwise italic font will be outside bounds */
+ /* line-height: 16px; /* should be the same as img height, in case 16 px */
+}
+span.dynatree-folder a
+{
+ font-weight: bold;
+}
+
+ul.dynatree-container a:focus,
+span.dynatree-focused a:link /* @IE */
+{
+ background-color: #EFEBDE; /* gray */
+}
+
+span.dynatree-has-children a
+{
+}
+
+span.dynatree-expanded a
+{
+}
+
+span.dynatree-selected a
+{
+ color: green;
+ font-style: italic;
+}
+
+span.dynatree-active a
+{
+ background-color: #3169C6 !important;
+ color: white !important; /* @ IE6 */
+}
+
+/*******************************************************************************
+ * Drag'n'drop support
+ */
+
+/*** Helper object ************************************************************/
+div.dynatree-drag-helper
+{
+}
+div.dynatree-drag-helper a
+{
+ border: 1px solid gray;
+ background-color: white;
+ padding-left: 5px;
+ padding-right: 5px;
+ opacity: 0.8;
+}
+span.dynatree-drag-helper-img
+{
+ /*
+ position: relative;
+ left: -16px;
+ */
+}
+div.dynatree-drag-helper /*.dynatree-drop-accept*/
+{
+
+/* border-color: green;
+ background-color: red;*/
+}
+div.dynatree-drop-accept span.dynatree-drag-helper-img
+{
+ background-position: -32px -112px;
+}
+div.dynatree-drag-helper.dynatree-drop-reject
+{
+ border-color: red;
+}
+div.dynatree-drop-reject span.dynatree-drag-helper-img
+{
+ background-position: -16px -112px;
+}
+
+/*** Drop marker icon *********************************************************/
+
+#dynatree-drop-marker
+{
+ width: 24px;
+ position: absolute;
+ background-position: 0 -128px;
+ margin: 0;
+/* border: 1px solid red; */
+}
+#dynatree-drop-marker.dynatree-drop-after,
+#dynatree-drop-marker.dynatree-drop-before
+{
+ width:64px;
+ background-position: 0 -144px;
+}
+#dynatree-drop-marker.dynatree-drop-copy
+{
+ background-position: -64px -128px;
+}
+#dynatree-drop-marker.dynatree-drop-move
+{
+ background-position: -64px -128px;
+}
+
+/*** Source node while dragging ***********************************************/
+
+span.dynatree-drag-source
+{
+ /* border: 1px dotted gray; */
+ background-color: #e0e0e0;
+}
+span.dynatree-drag-source a
+{
+ color: gray;
+}
+
+/*** Target node while dragging cursor is over it *****************************/
+
+span.dynatree-drop-target
+{
+ /*border: 1px solid gray;*/
+}
+span.dynatree-drop-target a
+{
+}
+span.dynatree-drop-target.dynatree-drop-accept a
+{
+ /*border: 1px solid green;*/
+ background-color: #3169C6 !important;
+ color: white !important; /* @ IE6 */
+ text-decoration: none;
+}
+span.dynatree-drop-target.dynatree-drop-reject
+{
+ /*border: 1px solid red;*/
+}
+span.dynatree-drop-target.dynatree-drop-after a
+{
+}
+
+
+/*******************************************************************************
+ * Custom node classes (sample)
+ */
+
+span.custom1 a
+{
+ background-color: maroon;
+ color: yellow;
+}
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/vline.gif b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/vline.gif
new file mode 100644
index 0000000..1b00ae5
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/chm/vline.gif differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/0.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/0.png
new file mode 100644
index 0000000..0189cda
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/0.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/1.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/1.png
new file mode 100644
index 0000000..01335b0
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/1.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/10.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/10.png
new file mode 100644
index 0000000..86c1b70
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/10.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/11.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/11.png
new file mode 100644
index 0000000..60da179
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/11.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/12.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/12.png
new file mode 100644
index 0000000..7977cad
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/12.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/13.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/13.png
new file mode 100644
index 0000000..2d6b99e
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/13.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/14.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/14.png
new file mode 100644
index 0000000..c6150b5
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/14.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/15.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/15.png
new file mode 100644
index 0000000..58f205f
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/15.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/16.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/16.png
new file mode 100644
index 0000000..746f6c4
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/16.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/17.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/17.png
new file mode 100644
index 0000000..e450e6b
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/17.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/18.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/18.png
new file mode 100644
index 0000000..fae8d06
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/18.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/19.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/19.png
new file mode 100644
index 0000000..557aa37
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/19.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/2.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/2.png
new file mode 100644
index 0000000..3887079
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/2.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/20.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/20.png
new file mode 100644
index 0000000..cb6845b
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/20.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/21.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/21.png
new file mode 100644
index 0000000..bfb11c9
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/21.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/22.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/22.png
new file mode 100644
index 0000000..17ed9c5
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/22.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/23.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/23.png
new file mode 100644
index 0000000..1c4a863
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/23.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/24.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/24.png
new file mode 100644
index 0000000..e91b518
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/24.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/25.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/25.png
new file mode 100644
index 0000000..00d2d5d
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/25.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/26.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/26.png
new file mode 100644
index 0000000..4952af6
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/26.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/27.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/27.png
new file mode 100644
index 0000000..a61fe9b
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/27.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/28.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/28.png
new file mode 100644
index 0000000..52160f0
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/28.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/29.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/29.png
new file mode 100644
index 0000000..06aa97c
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/29.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/3.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/3.png
new file mode 100644
index 0000000..b1c9413
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/3.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/30.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/30.png
new file mode 100644
index 0000000..7b52276
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/30.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/31.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/31.png
new file mode 100644
index 0000000..02283db
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/31.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/32.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/32.png
new file mode 100644
index 0000000..875843c
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/32.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/33.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/33.png
new file mode 100644
index 0000000..d64f137
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/33.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/34.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/34.png
new file mode 100644
index 0000000..a6d94c5
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/34.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/35.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/35.png
new file mode 100644
index 0000000..dfc87bf
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/35.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/36.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/36.png
new file mode 100644
index 0000000..ce6235b
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/36.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/37.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/37.png
new file mode 100644
index 0000000..0120330
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/37.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/38.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/38.png
new file mode 100644
index 0000000..5334fae
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/38.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/39.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/39.png
new file mode 100644
index 0000000..06e446b
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/39.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/4.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/4.png
new file mode 100644
index 0000000..6e5cfc0
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/4.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/40.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/40.png
new file mode 100644
index 0000000..6d744db
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/40.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/41.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/41.png
new file mode 100644
index 0000000..476edf4
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/41.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/5.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/5.png
new file mode 100644
index 0000000..1df634f
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/5.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/6.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/6.png
new file mode 100644
index 0000000..947d9c4
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/6.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/7.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/7.png
new file mode 100644
index 0000000..a362886
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/7.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/8.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/8.png
new file mode 100644
index 0000000..5bcd3ec
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/8.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/9.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/9.png
new file mode 100644
index 0000000..3b4991d
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/9.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/icons.gif b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/icons.gif
new file mode 100644
index 0000000..a58eb93
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/icons.gif differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/loading.gif b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/loading.gif
new file mode 100644
index 0000000..251df05
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/loading.gif differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/ui.dynatree.css b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/ui.dynatree.css
new file mode 100644
index 0000000..29679b4
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/ui.dynatree.css
@@ -0,0 +1,440 @@
+/*******************************************************************************
+ * Tree container
+ */
+ul.dynatree-container
+{
+ font-family: tahoma, arial, helvetica;
+ font-size: 10pt; /* font size should not be too big */
+ white-space: nowrap;
+ padding: 3px;
+ margin: 0; /* issue 201 */
+ background-color: white;
+ border: 1px dotted gray;
+ overflow: auto;
+ height: 100%; /* issue 263 */
+}
+
+ul.dynatree-container ul
+{
+ padding: 0 0 0 16px;
+ margin: 0;
+}
+
+ul.dynatree-container li
+{
+ list-style-image: none;
+ list-style-position: outside;
+ list-style-type: none;
+ -moz-background-clip:border;
+ -moz-background-inline-policy: continuous;
+ -moz-background-origin: padding;
+ background-attachment: scroll;
+ background-color: transparent;
+ background-repeat: repeat-y;
+ background-image: url("vline.gif");
+ background-position: 0 0;
+ /*
+ background-image: url("icons_96x256.gif");
+ background-position: -80px -64px;
+ */
+ margin: 0;
+ padding: 1px 0 0 0;
+}
+/* Suppress lines for last child node */
+ul.dynatree-container li.dynatree-lastsib
+{
+ background-image: none;
+}
+/* Suppress lines if level is fixed expanded (option minExpandLevel) */
+ul.dynatree-no-connector > li
+{
+ background-image: none;
+}
+
+/* Style, when control is disabled */
+.ui-dynatree-disabled ul.dynatree-container
+{
+ opacity: 0.5;
+/* filter: alpha(opacity=50); /* Yields a css warning */
+ background-color: silver;
+}
+
+/*******************************************************************************
+ * Common icon definitions
+ */
+span.dynatree-empty,
+span.dynatree-vline,
+span.dynatree-connector,
+span.dynatree-expander,
+span.dynatree-icon,
+span.dynatree-checkbox,
+span.dynatree-radio,
+span.dynatree-drag-helper-img,
+#dynatree-drop-marker
+{
+ width: 16px;
+ height: 16px;
+/* display: -moz-inline-box; /* @ FF 1+2 removed for issue 221 */
+/* -moz-box-align: start; /* issue 221 */
+ display: inline-block; /* Required to make a span sizeable */
+ vertical-align: top;
+ background-repeat: no-repeat;
+ background-position: left;
+ background-image: url("icons.gif");
+ background-position: 0 0;
+}
+
+/** Used by 'icon' node option: */
+ul.dynatree-container img
+{
+ width: 16px;
+ height: 16px;
+ margin-left: 3px;
+ vertical-align: top;
+ border-style: none;
+}
+
+
+/*******************************************************************************
+ * Lines and connectors
+ */
+
+span.dynatree-connector
+{
+ background-position: -16px -64px;
+}
+
+/*******************************************************************************
+ * Expander icon
+ * Note: IE6 doesn't correctly evaluate multiples class names,
+ * so we create combined class names that can be used in the CSS.
+ *
+ * Prefix: dynatree-exp-
+ * 1st character: 'e': expanded, 'c': collapsed
+ * 2nd character (optional): 'd': lazy (Delayed)
+ * 3rd character (optional): 'l': Last sibling
+ */
+
+span.dynatree-expander
+{
+ background-position: 0px -80px;
+ cursor: pointer;
+}
+.dynatree-exp-cl span.dynatree-expander /* Collapsed, not delayed, last sibling */
+{
+ background-position: 0px -96px;
+}
+.dynatree-exp-cd span.dynatree-expander /* Collapsed, delayed, not last sibling */
+{
+ background-position: -64px -80px;
+}
+.dynatree-exp-cdl span.dynatree-expander /* Collapsed, delayed, last sibling */
+{
+ background-position: -64px -96px;
+}
+.dynatree-exp-e span.dynatree-expander, /* Expanded, not delayed, not last sibling */
+.dynatree-exp-ed span.dynatree-expander /* Expanded, delayed, not last sibling */
+{
+ background-position: -32px -80px;
+}
+.dynatree-exp-el span.dynatree-expander, /* Expanded, not delayed, last sibling */
+.dynatree-exp-edl span.dynatree-expander /* Expanded, delayed, last sibling */
+{
+ background-position: -32px -96px;
+}
+.dynatree-loading span.dynatree-expander /* 'Loading' status overrides all others */
+{
+ background-position: 0 0;
+ background-image: url("loading.gif");
+}
+
+
+/*******************************************************************************
+ * Checkbox icon
+ */
+span.dynatree-checkbox
+{
+ margin-left: 3px;
+ background-position: 0px -32px;
+}
+span.dynatree-checkbox:hover
+{
+ background-position: -16px -32px;
+}
+
+.dynatree-partsel span.dynatree-checkbox
+{
+ background-position: -64px -32px;
+}
+.dynatree-partsel span.dynatree-checkbox:hover
+{
+ background-position: -80px -32px;
+}
+
+.dynatree-selected span.dynatree-checkbox
+{
+ background-position: -32px -32px;
+}
+.dynatree-selected span.dynatree-checkbox:hover
+{
+ background-position: -48px -32px;
+}
+
+/*******************************************************************************
+ * Radiobutton icon
+ * This is a customization, that may be activated by overriding the 'checkbox'
+ * class name as 'dynatree-radio' in the tree options.
+ */
+span.dynatree-radio
+{
+ margin-left: 3px;
+ background-position: 0px -48px;
+}
+span.dynatree-radio:hover
+{
+ background-position: -16px -48px;
+}
+
+.dynatree-partsel span.dynatree-radio
+{
+ background-position: -64px -48px;
+}
+.dynatree-partsel span.dynatree-radio:hover
+{
+ background-position: -80px -48px;
+}
+
+.dynatree-selected span.dynatree-radio
+{
+ background-position: -32px -48px;
+}
+.dynatree-selected span.dynatree-radio:hover
+{
+ background-position: -48px -48px;
+}
+
+/*******************************************************************************
+ * Node type icon
+ * Note: IE6 doesn't correctly evaluate multiples class names,
+ * so we create combined class names that can be used in the CSS.
+ *
+ * Prefix: dynatree-ico-
+ * 1st character: 'e': expanded, 'c': collapsed
+ * 2nd character (optional): 'f': folder
+ */
+
+span.dynatree-icon /* Default icon */
+{
+ margin-left: 3px;
+ background-position: 0px 0px;
+}
+
+.dynatree-ico-cf span.dynatree-icon /* Collapsed Folder */
+{
+ background-position: 0px -16px;
+}
+
+.dynatree-ico-ef span.dynatree-icon /* Expanded Folder */
+{
+ background-position: -64px -16px;
+}
+
+/* Status node icons */
+
+.dynatree-statusnode-wait span.dynatree-icon
+{
+ background-image: url("loading.gif");
+}
+
+.dynatree-statusnode-error span.dynatree-icon
+{
+ background-position: 0px -112px;
+/* background-image: url("ltError.gif");*/
+}
+
+/*******************************************************************************
+ * Node titles
+ */
+
+/* @Chrome: otherwise hit area of node titles is broken (issue 133)
+ Removed again for issue 165; (133 couldn't be reproduced) */
+span.dynatree-node
+{
+/* display: -moz-inline-box; /* issue 133, 165, 172, 192. removed for issue 221*/
+/* -moz-box-align: start; /* issue 221 */
+/* display: inline-block; /* Required to make a span sizeable */
+}
+
+
+/* Remove blue color and underline from title links */
+ul.dynatree-container a
+/*, ul.dynatree-container a:visited*/
+{
+ color: black; /* inherit doesn't work on IE */
+ text-decoration: none;
+ vertical-align: top;
+ margin: 0px;
+ margin-left: 3px;
+/* outline: 0; /* @ Firefox, prevent dotted border after click */
+}
+
+ul.dynatree-container a:hover
+{
+/* text-decoration: underline; */
+ background-color: #F2F7FD; /* light blue */
+ border-color: #B8D6FB; /* darker light blue */
+}
+
+span.dynatree-node a
+{
+ font-size: 10pt; /* required for IE, quirks mode */
+ display: inline-block; /* Better alignment, when title contains */
+/* vertical-align: top;*/
+ padding-left: 3px;
+ padding-right: 3px; /* Otherwise italic font will be outside bounds */
+ /* line-height: 16px; /* should be the same as img height, in case 16 px */
+}
+span.dynatree-folder a
+{
+ font-weight: bold;
+}
+
+ul.dynatree-container a:focus,
+span.dynatree-focused a:link /* @IE */
+{
+ background-color: #EFEBDE; /* gray */
+}
+
+span.dynatree-has-children a
+{
+}
+
+span.dynatree-expanded a
+{
+}
+
+span.dynatree-selected a
+{
+ color: green;
+ font-style: italic;
+}
+
+span.dynatree-active a
+{
+ background-color: #3169C6 !important;
+ color: white !important; /* @ IE6 */
+}
+
+/*******************************************************************************
+ * Drag'n'drop support
+ */
+
+/*** Helper object ************************************************************/
+div.dynatree-drag-helper
+{
+}
+div.dynatree-drag-helper a
+{
+ border: 1px solid gray;
+ background-color: white;
+ padding-left: 5px;
+ padding-right: 5px;
+ opacity: 0.8;
+}
+span.dynatree-drag-helper-img
+{
+ /*
+ position: relative;
+ left: -16px;
+ */
+}
+div.dynatree-drag-helper /*.dynatree-drop-accept*/
+{
+
+/* border-color: green;
+ background-color: red;*/
+}
+div.dynatree-drop-accept span.dynatree-drag-helper-img
+{
+ background-position: -32px -112px;
+}
+div.dynatree-drag-helper.dynatree-drop-reject
+{
+ border-color: red;
+}
+div.dynatree-drop-reject span.dynatree-drag-helper-img
+{
+ background-position: -16px -112px;
+}
+
+/*** Drop marker icon *********************************************************/
+
+#dynatree-drop-marker
+{
+ width: 24px;
+ position: absolute;
+ background-position: 0 -128px;
+ margin: 0;
+/* border: 1px solid red; */
+}
+#dynatree-drop-marker.dynatree-drop-after,
+#dynatree-drop-marker.dynatree-drop-before
+{
+ width:64px;
+ background-position: 0 -144px;
+}
+#dynatree-drop-marker.dynatree-drop-copy
+{
+ background-position: -64px -128px;
+}
+#dynatree-drop-marker.dynatree-drop-move
+{
+ background-position: -64px -128px;
+}
+
+/*** Source node while dragging ***********************************************/
+
+span.dynatree-drag-source
+{
+ /* border: 1px dotted gray; */
+ background-color: #e0e0e0;
+}
+span.dynatree-drag-source a
+{
+ color: gray;
+}
+
+/*** Target node while dragging cursor is over it *****************************/
+
+span.dynatree-drop-target
+{
+ /*border: 1px solid gray;*/
+}
+span.dynatree-drop-target a
+{
+}
+span.dynatree-drop-target.dynatree-drop-accept a
+{
+ /*border: 1px solid green;*/
+ background-color: #3169C6 !important;
+ color: white !important; /* @ IE6 */
+ text-decoration: none;
+}
+span.dynatree-drop-target.dynatree-drop-reject
+{
+ /*border: 1px solid red;*/
+}
+span.dynatree-drop-target.dynatree-drop-after a
+{
+}
+
+
+/*******************************************************************************
+ * Custom node classes (sample)
+ */
+
+span.custom1 a
+{
+ background-color: maroon;
+ color: yellow;
+}
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/vline.gif b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/vline.gif
new file mode 100644
index 0000000..1b00ae5
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/folder/vline.gif differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/0.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/0.png
new file mode 100644
index 0000000..0189cda
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/0.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/1.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/1.png
new file mode 100644
index 0000000..01335b0
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/1.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/10.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/10.png
new file mode 100644
index 0000000..86c1b70
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/10.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/11.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/11.png
new file mode 100644
index 0000000..60da179
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/11.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/12.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/12.png
new file mode 100644
index 0000000..7977cad
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/12.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/13.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/13.png
new file mode 100644
index 0000000..2d6b99e
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/13.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/14.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/14.png
new file mode 100644
index 0000000..c6150b5
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/14.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/15.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/15.png
new file mode 100644
index 0000000..58f205f
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/15.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/16.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/16.png
new file mode 100644
index 0000000..746f6c4
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/16.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/17.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/17.png
new file mode 100644
index 0000000..e450e6b
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/17.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/18.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/18.png
new file mode 100644
index 0000000..fae8d06
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/18.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/19.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/19.png
new file mode 100644
index 0000000..557aa37
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/19.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/2.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/2.png
new file mode 100644
index 0000000..3887079
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/2.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/20.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/20.png
new file mode 100644
index 0000000..cb6845b
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/20.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/21.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/21.png
new file mode 100644
index 0000000..bfb11c9
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/21.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/22.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/22.png
new file mode 100644
index 0000000..17ed9c5
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/22.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/23.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/23.png
new file mode 100644
index 0000000..1c4a863
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/23.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/24.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/24.png
new file mode 100644
index 0000000..e91b518
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/24.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/25.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/25.png
new file mode 100644
index 0000000..00d2d5d
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/25.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/26.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/26.png
new file mode 100644
index 0000000..4952af6
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/26.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/27.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/27.png
new file mode 100644
index 0000000..a61fe9b
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/27.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/28.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/28.png
new file mode 100644
index 0000000..52160f0
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/28.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/29.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/29.png
new file mode 100644
index 0000000..06aa97c
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/29.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/3.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/3.png
new file mode 100644
index 0000000..b1c9413
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/3.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/30.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/30.png
new file mode 100644
index 0000000..7b52276
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/30.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/31.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/31.png
new file mode 100644
index 0000000..02283db
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/31.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/32.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/32.png
new file mode 100644
index 0000000..875843c
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/32.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/33.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/33.png
new file mode 100644
index 0000000..d64f137
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/33.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/34.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/34.png
new file mode 100644
index 0000000..a6d94c5
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/34.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/35.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/35.png
new file mode 100644
index 0000000..dfc87bf
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/35.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/36.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/36.png
new file mode 100644
index 0000000..ce6235b
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/36.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/37.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/37.png
new file mode 100644
index 0000000..0120330
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/37.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/38.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/38.png
new file mode 100644
index 0000000..5334fae
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/38.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/39.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/39.png
new file mode 100644
index 0000000..06e446b
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/39.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/4.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/4.png
new file mode 100644
index 0000000..6e5cfc0
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/4.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/40.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/40.png
new file mode 100644
index 0000000..6d744db
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/40.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/41.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/41.png
new file mode 100644
index 0000000..476edf4
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/41.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/5.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/5.png
new file mode 100644
index 0000000..1df634f
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/5.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/6.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/6.png
new file mode 100644
index 0000000..947d9c4
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/6.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/7.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/7.png
new file mode 100644
index 0000000..a362886
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/7.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/8.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/8.png
new file mode 100644
index 0000000..5bcd3ec
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/8.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/9.png b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/9.png
new file mode 100644
index 0000000..3b4991d
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/9.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/icons.gif b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/icons.gif
new file mode 100644
index 0000000..6e237a0
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/icons.gif differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/loading.gif b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/loading.gif
new file mode 100644
index 0000000..2a96840
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/loading.gif differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/ui.dynatree.css b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/ui.dynatree.css
new file mode 100644
index 0000000..347f7f3
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/css/dynatree/vista/ui.dynatree.css
@@ -0,0 +1,452 @@
+/*******************************************************************************
+ * Tree container
+ */
+ul.dynatree-container
+{
+ font-family: tahoma, arial, helvetica;
+ font-size: 10pt; /* font size should not be too big */
+ white-space: nowrap;
+ padding: 3px;
+ margin: 0; /* issue 201 */
+ background-color: white;
+ border: 1px dotted gray;
+ overflow: auto;
+ height: 100%; /* issue 263 */
+}
+
+ul.dynatree-container ul
+{
+ padding: 0 0 0 16px;
+ margin: 0;
+}
+
+ul.dynatree-container li
+{
+ list-style-image: none;
+ list-style-position: outside;
+ list-style-type: none;
+ -moz-background-clip:border;
+ -moz-background-inline-policy: continuous;
+ -moz-background-origin: padding;
+ background-attachment: scroll;
+ background-color: transparent;
+ background-position: 0 0;
+ background-repeat: repeat-y;
+ background-image: none; /* no v-lines */
+
+ margin:0;
+ padding:1px 0 0 0;
+}
+/* Suppress lines for last child node */
+ul.dynatree-container li.dynatree-lastsib
+{
+ background-image: none;
+}
+/* Suppress lines if level is fixed expanded (option minExpandLevel) */
+ul.dynatree-no-connector > li
+{
+ background-image: none;
+}
+
+/* Style, when control is disabled */
+.ui-dynatree-disabled ul.dynatree-container
+{
+ opacity: 0.5;
+/* filter: alpha(opacity=50); /* Yields a css warning */
+ background-color: silver;
+}
+
+
+/*******************************************************************************
+ * Common icon definitions
+ */
+span.dynatree-empty,
+span.dynatree-vline,
+span.dynatree-connector,
+span.dynatree-expander,
+span.dynatree-icon,
+span.dynatree-checkbox,
+span.dynatree-radio,
+span.dynatree-drag-helper-img,
+#dynatree-drop-marker
+{
+ width: 16px;
+ height: 16px;
+/* display: -moz-inline-box; /* @ FF 1+2 removed for issue 221*/
+/* -moz-box-align: start; /* issue 221 */
+ display: inline-block; /* Required to make a span sizeable */
+ vertical-align: top;
+ background-repeat: no-repeat;
+ background-position: left;
+ background-image: url("icons.gif");
+ background-position: 0 0;
+}
+
+/** Used by 'icon' node option: */
+ul.dynatree-container img
+{
+ width: 16px;
+ height: 16px;
+ margin-left: 3px;
+ vertical-align: top;
+ border-style: none;
+}
+
+
+/*******************************************************************************
+ * Lines and connectors
+ */
+
+/*
+span.dynatree-empty
+{
+}
+span.dynatree-vline
+{
+}
+*/
+span.dynatree-connector
+{
+ background-image: none;
+}
+/*
+.dynatree-lastsib span.dynatree-connector
+{
+}
+*/
+/*******************************************************************************
+ * Expander icon
+ * Note: IE6 doesn't correctly evaluate multiples class names,
+ * so we create combined class names that can be used in the CSS.
+ *
+ * Prefix: dynatree-exp-
+ * 1st character: 'e': expanded, 'c': collapsed
+ * 2nd character (optional): 'd': lazy (Delayed)
+ * 3rd character (optional): 'l': Last sibling
+ */
+
+span.dynatree-expander
+{
+ background-position: 0px -80px;
+ cursor: pointer;
+}
+span.dynatree-expander:hover
+{
+ background-position: -16px -80px;
+}
+.dynatree-exp-cl span.dynatree-expander /* Collapsed, not delayed, last sibling */
+{
+}
+.dynatree-exp-cd span.dynatree-expander /* Collapsed, delayed, not last sibling */
+{
+}
+.dynatree-exp-cdl span.dynatree-expander /* Collapsed, delayed, last sibling */
+{
+}
+.dynatree-exp-e span.dynatree-expander, /* Expanded, not delayed, not last sibling */
+.dynatree-exp-ed span.dynatree-expander, /* Expanded, delayed, not last sibling */
+.dynatree-exp-el span.dynatree-expander, /* Expanded, not delayed, last sibling */
+.dynatree-exp-edl span.dynatree-expander /* Expanded, delayed, last sibling */
+{
+ background-position: -32px -80px;
+}
+.dynatree-exp-e span.dynatree-expander:hover, /* Expanded, not delayed, not last sibling */
+.dynatree-exp-ed span.dynatree-expander:hover, /* Expanded, delayed, not last sibling */
+.dynatree-exp-el span.dynatree-expander:hover, /* Expanded, not delayed, last sibling */
+.dynatree-exp-edl span.dynatree-expander:hover /* Expanded, delayed, last sibling */
+{
+ background-position: -48px -80px;
+}
+.dynatree-loading span.dynatree-expander /* 'Loading' status overrides all others */
+{
+ background-position: 0 0;
+ background-image: url("loading.gif");
+}
+
+
+/*******************************************************************************
+ * Checkbox icon
+ */
+span.dynatree-checkbox
+{
+ margin-left: 3px;
+ background-position: 0px -32px;
+}
+span.dynatree-checkbox:hover
+{
+ background-position: -16px -32px;
+}
+
+.dynatree-partsel span.dynatree-checkbox
+{
+ background-position: -64px -32px;
+}
+.dynatree-partsel span.dynatree-checkbox:hover
+{
+ background-position: -80px -32px;
+}
+
+.dynatree-selected span.dynatree-checkbox
+{
+ background-position: -32px -32px;
+}
+.dynatree-selected span.dynatree-checkbox:hover
+{
+ background-position: -48px -32px;
+}
+
+/*******************************************************************************
+ * Radiobutton icon
+ * This is a customization, that may be activated by overriding the 'checkbox'
+ * class name as 'dynatree-radio' in the tree options.
+ */
+span.dynatree-radio
+{
+ margin-left: 3px;
+ background-position: 0px -48px;
+}
+span.dynatree-radio:hover
+{
+ background-position: -16px -48px;
+}
+
+.dynatree-partsel span.dynatree-radio
+{
+ background-position: -64px -48px;
+}
+.dynatree-partsel span.dynatree-radio:hover
+{
+ background-position: -80px -48px;
+}
+
+.dynatree-selected span.dynatree-radio
+{
+ background-position: -32px -48px;
+}
+.dynatree-selected span.dynatree-radio:hover
+{
+ background-position: -48px -48px;
+}
+
+/*******************************************************************************
+ * Node type icon
+ * Note: IE6 doesn't correctly evaluate multiples class names,
+ * so we create combined class names that can be used in the CSS.
+ *
+ * Prefix: dynatree-ico-
+ * 1st character: 'e': expanded, 'c': collapsed
+ * 2nd character (optional): 'f': folder
+ */
+
+span.dynatree-icon /* Default icon */
+{
+ margin-left: 3px;
+ background-position: 0px 0px;
+}
+
+.dynatree-has-children span.dynatree-icon /* Default icon */
+{
+/* background-position: 0px -16px; */
+}
+
+.dynatree-ico-cf span.dynatree-icon /* Collapsed Folder */
+{
+ background-position: 0px -16px;
+}
+
+.dynatree-ico-ef span.dynatree-icon /* Expanded Folder */
+{
+ background-position: -64px -16px;
+}
+
+/* Status node icons */
+
+.dynatree-statusnode-wait span.dynatree-icon
+{
+ background-image: url("loading.gif");
+}
+
+.dynatree-statusnode-error span.dynatree-icon
+{
+ background-position: 0px -112px;
+/* background-image: url("ltError.gif");*/
+}
+
+/*******************************************************************************
+ * Node titles
+ */
+
+/* @Chrome: otherwise hit area of node titles is broken (issue 133)
+ Removed again for issue 165; (133 couldn't be reproduced) */
+span.dynatree-node
+{
+/* display: -moz-inline-box; /* issue 133, 165, 172, 192. removed for issue 221 */
+/* -moz-box-align: start; /* issue 221 */
+/* display: inline-block; /* Required to make a span sizeable */
+}
+
+
+/* Remove blue color and underline from title links */
+ul.dynatree-container a
+/*, ul.dynatree-container a:visited*/
+{
+ color: black; /* inherit doesn't work on IE */
+ text-decoration: none;
+ vertical-align: top;
+ margin: 0px;
+ margin-left: 3px;
+/* outline: 0; /* @ Firefox, prevent dotted border after click */
+ /* Set transparent border to prevent jumping when active node gets a border
+ (we can do this, because this theme doesn't use vertical lines)
+ */
+ border: 1px solid white; /* Note: 'transparent' would not work in IE6 */
+
+}
+
+ul.dynatree-container a:hover
+{
+/* text-decoration: underline; */
+ background: #F2F7FD; /* light blue */
+ border-color: #B8D6FB; /* darker light blue */
+}
+
+span.dynatree-node a
+{
+ display: inline-block; /* Better alignment, when title contains */
+/* vertical-align: top;*/
+ padding-left: 3px;
+ padding-right: 3px; /* Otherwise italic font will be outside bounds */
+ /* line-height: 16px; /* should be the same as img height, in case 16 px */
+}
+span.dynatree-folder a
+{
+/* font-weight: bold; */ /* custom */
+}
+
+ul.dynatree-container a:focus,
+span.dynatree-focused a:link /* @IE */
+{
+ background-color: #EFEBDE; /* gray */
+}
+
+span.dynatree-has-children a
+{
+/* font-style: oblique; /* custom: */
+}
+
+span.dynatree-expanded a
+{
+}
+
+span.dynatree-selected a
+{
+/* color: green; */
+ font-style: italic;
+}
+
+span.dynatree-active a
+{
+ border: 1px solid #99DEFD;
+ background-color: #D8F0FA;
+}
+
+/*******************************************************************************
+ * Drag'n'drop support
+ */
+
+/*** Helper object ************************************************************/
+div.dynatree-drag-helper
+{
+}
+div.dynatree-drag-helper a
+{
+ border: 1px solid gray;
+ background-color: white;
+ padding-left: 5px;
+ padding-right: 5px;
+ opacity: 0.8;
+}
+span.dynatree-drag-helper-img
+{
+ /*
+ position: relative;
+ left: -16px;
+ */
+}
+div.dynatree-drag-helper /*.dynatree-drop-accept*/
+{
+/* border-color: green;
+ background-color: red;*/
+}
+div.dynatree-drop-accept span.dynatree-drag-helper-img
+{
+ background-position: -32px -112px;
+}
+div.dynatree-drag-helper.dynatree-drop-reject
+{
+ border-color: red;
+}
+div.dynatree-drop-reject span.dynatree-drag-helper-img
+{
+ background-position: -16px -112px;
+}
+
+/*** Drop marker icon *********************************************************/
+
+#dynatree-drop-marker
+{
+ width: 24px;
+ position: absolute;
+ background-position: 0 -128px;
+ margin: 0;
+}
+#dynatree-drop-marker.dynatree-drop-after,
+#dynatree-drop-marker.dynatree-drop-before
+{
+ width:64px;
+ background-position: 0 -144px;
+}
+#dynatree-drop-marker.dynatree-drop-copy
+{
+ background-position: -64px -128px;
+}
+#dynatree-drop-marker.dynatree-drop-move
+{
+ background-position: -64px -128px;
+}
+
+/*** Source node while dragging ***********************************************/
+
+span.dynatree-drag-source
+{
+ /* border: 1px dotted gray; */
+ background-color: #e0e0e0;
+}
+span.dynatree-drag-source a
+{
+ color: gray;
+}
+
+/*** Target node while dragging cursor is over it *****************************/
+
+span.dynatree-drop-target
+{
+ /*border: 1px solid gray;*/
+}
+span.dynatree-drop-target a
+{
+}
+span.dynatree-drop-target.dynatree-drop-accept a
+{
+ /*border: 1px solid green;*/
+ background-color: #3169C6 !important;
+ color: white !important; /* @ IE6 */
+ text-decoration: none;
+}
+span.dynatree-drop-target.dynatree-drop-reject
+{
+ /*border: 1px solid red;*/
+}
+span.dynatree-drop-target.dynatree-drop-after a
+{
+}
diff --git a/Activity_3_python/LangagePython_fonctions/css/hnd.css b/Activity_3_python/LangagePython_fonctions/css/hnd.css
new file mode 100644
index 0000000..626380f
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/css/hnd.css
@@ -0,0 +1,680 @@
+/* ========== Text Styles ========== */
+hr { color: #000000}
+body, table, span.rvts0 /* Normal text */
+{
+ font-size: 10pt;
+ font-family: 'Arial', 'Helvetica', sans-serif;
+ font-style: normal;
+ font-weight: normal;
+ color: #000000;
+ text-decoration: none;
+}
+span.rvts1 /* Heading */
+{
+ font-weight: bold;
+ color: #0000ff;
+}
+span.rvts2 /* Subheading */
+{
+ font-weight: bold;
+ color: #000080;
+}
+span.rvts3 /* Keywords */
+{
+ font-style: italic;
+ color: #800000;
+}
+a.rvts4, span.rvts4 /* Jump 1 */
+{
+ color: #008000;
+ text-decoration: underline;
+}
+a.rvts5, span.rvts5 /* Jump 2 */
+{
+ color: #008000;
+ text-decoration: underline;
+}
+span.rvts6
+{
+}
+span.rvts7
+{
+ font-weight: bold;
+ color: #0000ff;
+}
+span.rvts8
+{
+ font-weight: bold;
+ color: #000080;
+}
+span.rvts9
+{
+ font-style: italic;
+ color: #800000;
+}
+a.rvts10, span.rvts10
+{
+ color: #008000;
+ text-decoration: underline;
+}
+span.rvts11
+{
+ font-size: 12pt;
+ font-family: 'Cambria';
+}
+span.rvts12
+{
+ font-size: 12pt;
+ font-family: 'Cambria';
+ font-weight: bold;
+}
+span.rvts13
+{
+ font-size: 13pt;
+ font-family: 'Cambria';
+ font-weight: bold;
+}
+a.rvts14, span.rvts14
+{
+ font-size: 12pt;
+ font-family: 'Cambria';
+ color: #0000ff;
+ text-decoration: underline;
+}
+span.rvts15 /* Font Style */
+{
+ font-family: 'Tahoma', 'Geneva', sans-serif;
+ font-style: italic;
+ color: #c0c0c0;
+}
+a.rvts16, span.rvts16 /* Font Style */
+{
+ font-family: 'Tahoma', 'Geneva', sans-serif;
+ font-style: italic;
+ color: #6666ff;
+ text-decoration: underline;
+}
+span.rvts17
+{
+ font-size: 14pt;
+ font-family: 'Cambria';
+ font-weight: bold;
+}
+a.rvts18, span.rvts18
+{
+ font-size: 12pt;
+ font-family: 'Cambria';
+ color: #0000ff;
+ text-decoration: none;
+}
+span.rvts19
+{
+ font-size: 12pt;
+ font-family: 'Cambria';
+ font-weight: bold;
+ text-decoration: underline;
+}
+span.rvts20
+{
+ font-size: 12pt;
+ font-family: 'Times New Roman', 'Times', serif;
+ color: #000000;
+}
+span.rvts21
+{
+ font-size: 12pt;
+ font-family: 'Cambria';
+ color: #000000;
+ background-color: #fcfcfc;
+}
+span.rvts22
+{
+ font-size: 12pt;
+ font-family: 'Cambria';
+ color: #000000;
+ background-color: #fcfcfc;
+ text-decoration: underline;
+}
+span.rvts23
+{
+ font-size: 12pt;
+ font-family: 'Cambria';
+ font-weight: bold;
+ color: #000000;
+ background-color: #fcfcfc;
+}
+span.rvts24
+{
+ font-size: 12pt;
+ font-family: 'Cambria';
+ text-decoration: underline;
+}
+span.rvts25
+{
+ font-size: 12pt;
+ font-family: 'Cambria';
+ color: #000000;
+}
+span.rvts26
+{
+ font-size: 12pt;
+ font-family: 'Cambria';
+ color: #000000;
+ text-decoration: underline;
+}
+span.rvts27
+{
+ font-size: 12pt;
+ font-family: 'Cambria';
+ text-decoration: line-through;
+}
+span.rvts28
+{
+ font-size: 14pt;
+ font-family: 'Cambria';
+ color: #000000;
+}
+span.rvts29
+{
+ font-size: 14pt;
+ font-family: 'Cambria';
+ color: #900090;
+}
+span.rvts30
+{
+ font-size: 14pt;
+ font-family: 'Cambria';
+ color: #770000;
+}
+span.rvts31
+{
+ font-size: 14pt;
+ font-family: 'Cambria';
+ color: #dd0000;
+}
+span.rvts32
+{
+ font-size: 14pt;
+ font-family: 'Cambria';
+ font-weight: bold;
+ color: #000000;
+}
+span.rvts33
+{
+ font-size: 14pt;
+ font-family: 'Cambria';
+ color: ;
+}
+span.rvts34
+{
+ font-size: 14pt;
+ font-family: 'Cambria';
+ color: #007f7f;
+}
+span.rvts35
+{
+ font-size: 12pt;
+ font-family: 'cambria';
+ font-weight: bold;
+ color: #000000;
+}
+span.rvts36
+{
+ font-size: 14pt;
+ font-family: 'Cambria';
+ color: #0000ff;
+}
+span.rvts37
+{
+ font-size: 14pt;
+ font-family: 'Lucida Console', 'Monaco', monospace;
+ color: #770000;
+}
+span.rvts38
+{
+ font-size: 14pt;
+ font-family: 'Lucida Console', 'Monaco', monospace;
+ color: #000000;
+}
+span.rvts39
+{
+ font-size: 14pt;
+ font-family: 'Lucida Console', 'Monaco', monospace;
+ color: #dd0000;
+}
+span.rvts40
+{
+ font-size: 14pt;
+ font-family: 'Lucida Console', 'Monaco', monospace;
+ color: #900090;
+}
+span.rvts41
+{
+ font-size: 14pt;
+ font-family: 'Lucida Console', 'Monaco', monospace;
+ color: #0000ff;
+}
+span.rvts42
+{
+ font-size: 11pt;
+ font-family: 'Cambria';
+ font-weight: bold;
+}
+span.rvts43
+{
+ font-size: 12pt;
+ font-family: 'Cambria';
+ font-style: italic;
+}
+span.rvts44
+{
+ font-size: 14pt;
+ font-family: 'Lucida Console', 'Monaco', monospace;
+ color: #2f6b55;
+}
+span.rvts45
+{
+ font-size: 12pt;
+ font-family: 'Cambria';
+ color: #7030a0;
+}
+span.rvts46
+{
+ font-size: 14pt;
+ font-family: 'Lucida Console', 'Monaco', monospace;
+ color: #ff7700;
+}
+span.rvts47
+{
+ font-size: 12pt;
+ font-family: 'Verdana', 'Geneva', sans-serif;
+ font-weight: bold;
+ color: #181a12;
+}
+span.rvts48
+{
+ font-size: 14pt;
+ font-family: 'Lucida Console', 'Monaco', monospace;
+ color: #ff0000;
+}
+span.rvts49
+{
+ font-size: 12pt;
+ font-family: 'Cambria';
+ color: #363b29;
+}
+span.rvts50
+{
+ font-size: 13pt;
+ font-family: 'Cambria';
+ font-style: italic;
+ font-weight: bold;
+ color: #000000;
+}
+span.rvts51
+{
+ font-size: 14pt;
+ font-family: 'Lucida Console', 'Monaco', monospace;
+ color: ;
+}
+span.rvts52
+{
+ font-size: 14pt;
+ font-family: 'Lucida Console', 'Monaco', monospace;
+ color: #00aa00;
+}
+span.rvts53
+{
+ font-size: 14pt;
+ font-family: 'Lucida Console', 'Monaco', monospace;
+ color: #000000;
+ background-color: #ff7777;
+}
+span.rvts54
+{
+ font-size: 12pt;
+ font-family: 'Cambria';
+ color: ;
+}
+span.rvts55
+{
+ font-size: 14pt;
+ font-family: 'Cambria';
+ font-weight: bold;
+ color: ;
+}
+span.rvts56
+{
+ font-size: 12pt;
+ font-family: 'Verdana', 'Geneva', sans-serif;
+ color: ;
+}
+span.rvts57
+{
+ font-size: 12pt;
+ font-family: 'Verdana', 'Geneva', sans-serif;
+ color: #363b29;
+}
+span.rvts58
+{
+ font-size: 14pt;
+ font-family: 'Lucida Console', 'Monaco', monospace;
+ color: #363b29;
+}
+span.rvts59
+{
+ font-size: 12pt;
+ font-family: 'Verdana', 'Geneva', sans-serif;
+ font-weight: bold;
+ color: #363b29;
+}
+span.rvts60
+{
+ font-size: 12pt;
+ font-family: 'Cambria';
+ font-weight: bold;
+ color: #181a12;
+}
+span.rvts61
+{
+ font-size: 14pt;
+ font-family: 'Cambria';
+ font-style: italic;
+ font-weight: bold;
+ color: ;
+}
+span.rvts62
+{
+ font-size: 12pt;
+ font-family: 'Cambria';
+ font-weight: bold;
+ color: ;
+}
+span.rvts63
+{
+ font-size: 9pt;
+ font-family: 'consolas';
+ color: #3c3c3c;
+}
+span.rvts64
+{
+ font-size: 12pt;
+ font-family: 'cambria';
+ font-weight: bold;
+ color: #000000;
+ text-decoration: underline;
+}
+span.rvts65
+{
+ font-size: 8pt;
+ font-family: 'Cambria';
+ vertical-align: super;
+}
+span.rvts66
+{
+ font-size: 14pt;
+ font-family: 'Cambria';
+}
+span.rvts67
+{
+ font-size: 12pt;
+ font-family: 'Cambria';
+ font-style: italic;
+ color: #000000;
+}
+span.rvts68
+{
+ font-size: 12pt;
+ font-family: 'Cambria';
+ font-style: italic;
+ color: #810000;
+}
+span.rvts69
+{
+ font-size: 11pt;
+ font-family: 'Times';
+ font-weight: bold;
+ color: #ff0000;
+ background-color: #fcfcfc;
+}
+span.rvts70
+{
+ font-size: 11pt;
+ font-family: 'Times';
+ font-weight: bold;
+ background-color: #fcfcfc;
+}
+span.rvts71
+{
+ font-size: 11pt;
+ font-weight: bold;
+ background-color: #fcfcfc;
+}
+span.rvts72
+{
+ font-size: 11pt;
+ font-family: 'Times';
+ background-color: #fcfcfc;
+}
+span.rvts73
+{
+ font-size: 12pt;
+ font-family: 'Cambria';
+ background-color: #fcfcfc;
+}
+span.rvts74
+{
+ font-size: 14pt;
+ font-family: 'Verdana', 'Geneva', sans-serif;
+ font-weight: bold;
+ color: #363b29;
+}
+span.rvts75
+{
+ font-size: 14pt;
+ font-family: 'Lucida Console', 'Monaco', monospace;
+ color: #000000;
+ background-color: #ffff66;
+}
+span.rvts76
+{
+ font-size: 14pt;
+ font-family: 'Cambria';
+ font-weight: bold;
+ color: #363b29;
+}
+span.rvts77
+{
+ font-size: 12pt;
+ font-family: 'Cambria';
+ font-weight: bold;
+ color: #363b29;
+}
+span.rvts78
+{
+ font-size: 12pt;
+ font-family: 'Cambria';
+ color: #363b29;
+ text-decoration: underline;
+}
+span.rvts79
+{
+ font-size: 11pt;
+}
+span.rvts80
+{
+ font-size: 14pt;
+ font-family: 'Lucida Console', 'Monaco', monospace;
+ font-weight: bold;
+ color: #363b29;
+}
+span.rvts81
+{
+ font-size: 17pt;
+ font-family: 'Lucida Console', 'Monaco', monospace;
+ font-weight: bold;
+ color: #363b29;
+}
+span.rvts82
+{
+ font-size: 14pt;
+ font-family: 'Cambria';
+ color: #363b29;
+}
+a.rvts83, span.rvts83
+{
+ font-size: 12pt;
+ font-family: 'Cambria';
+ text-decoration: underline;
+}
+span.rvts84
+{
+ font-family: 'Cambria';
+ font-weight: bold;
+}
+a.rvts85, span.rvts85
+{
+ font-size: 12pt;
+ font-family: 'Cambria';
+ color: #332510;
+ text-decoration: underline;
+}
+span.rvts86
+{
+ font-size: 10pt;
+ font-family: 'Cambria';
+ color: #363b29;
+ vertical-align: sub;
+}
+a.rvts87, span.rvts87
+{
+ font-size: 14pt;
+ font-family: 'Cambria';
+ font-weight: bold;
+ text-decoration: underline;
+}
+span.rvts88
+{
+ font-size: 12pt;
+ font-family: 'Cambria';
+ font-style: italic;
+ color: #363b29;
+}
+span.rvts89
+{
+ font-size: 14pt;
+ font-family: 'Lucida Console', 'Monaco', monospace;
+ color: #991111;
+}
+a.rvts90, span.rvts90
+{
+ font-size: 14pt;
+ font-family: 'Cambria';
+ font-weight: bold;
+ color: #332510;
+ text-decoration: underline;
+}
+span.rvts91
+{
+ font-size: 12pt;
+ font-family: 'Cambria';
+ color: #363b29;
+ vertical-align: super;
+}
+span.rvts92
+{
+ font-size: 12pt;
+ font-family: 'Cambria';
+ vertical-align: super;
+}
+/* ========== Para Styles ========== */
+p,ul,ol /* Paragraph Style */
+{
+ text-align: left;
+ text-indent: 0px;
+ padding: 0px 0px 0px 0px;
+ margin: 0px 0px 0px 0px;
+}
+.rvps1 /* Centered */
+{
+ text-align: center;
+}
+.rvps2
+{
+}
+.rvps3
+{
+ text-align: center;
+}
+.rvps4 /* Paragraph Style */
+{
+ text-align: center;
+ border-color: #c0c0c0;
+ border-style: solid;
+ border-width: 1px;
+ border-right: none;
+ border-left: none;
+ padding: 2px 0px 2px 0px;
+ margin: 7px 0px 7px 0px;
+}
+.rvps5
+{
+ margin: 8px 0px 0px 0px;
+}
+.rvps6
+{
+ text-indent: 48px;
+}
+.rvps7
+{
+ margin: 12px 0px 12px 0px;
+}
+.rvps8
+{
+ background: #eeeeee;
+ padding: 12px 12px 12px 12px;
+ margin: 14px 0px 14px 0px;
+}
+.rvps9
+{
+ background: #ffffff;
+ padding: 12px 12px 12px 12px;
+ margin: 14px 0px 14px 0px;
+}
+.rvps10
+{
+ background: #eff0f1;
+ padding: 8px 8px 8px 8px;
+}
+.rvps11
+{
+ margin: 0px 0px 0px 1px;
+}
+.rvps12
+{
+ text-align: left;
+ text-indent: 0px;
+ padding: 0px 0px 0px 0px;
+ margin: 19px 0px 10px 0px;
+}
+.rvps13
+{
+ text-align: left;
+ text-indent: 0px;
+ padding: 0px 0px 0px 0px;
+ margin: 16px 0px 8px 0px;
+}
+.rvps14
+{
+ margin: 0px 0px 0px 96px;
+}
+/* ========== Lists ========== */
+.list0 {text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;}
+.list1 {text-indent: 0px; padding: 0; margin: 0 0 0 48px; list-style-position: outside; list-style-type: circle;}
+.list2 {text-indent: 0px; padding: 0; margin: 0 0 0 48px; list-style-position: outside; list-style-type: square;}
+.list3 {text-indent: 0px; padding: 0; margin: 0 0 0 48px; list-style-position: outside; list-style-type: disc;}
+.list4 {text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: decimal;}
+.list5 {text-indent: 0px; padding: 0; margin: 0 0 0 48px; list-style-position: outside; list-style-type: decimal;}
+.list6 {text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: square;}
+.list7 {text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: circle;}
+.list8 {text-indent: 0px; padding: 0; margin: 0 0 0 96px; list-style-position: outside; list-style-type: disc;}
diff --git a/Activity_3_python/LangagePython_fonctions/css/ielte8.css b/Activity_3_python/LangagePython_fonctions/css/ielte8.css
new file mode 100644
index 0000000..1d6f53c
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/css/ielte8.css
@@ -0,0 +1,3 @@
+.ui-tabs .ui-tabs-nav {
+ padding: 0;
+}
\ No newline at end of file
diff --git a/Activity_3_python/LangagePython_fonctions/css/reset.css b/Activity_3_python/LangagePython_fonctions/css/reset.css
new file mode 100644
index 0000000..391d3a3
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/css/reset.css
@@ -0,0 +1,48 @@
+/* http://meyerweb.com/eric/tools/css/reset/
+ v2.0 | 20110126
+ License: none (public domain)
+*/
+
+html, body, div, span, applet, object, iframe,
+h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+a, abbr, acronym, address, big, cite, code,
+del, dfn, em, ins, kbd, q, s, samp,
+small, strike, strong, sub, sup, tt, var,
+b, u, i, center,
+dl, dt, dd, ol, ul, li,
+fieldset, form, label, legend,
+article, aside, canvas, details, embed,
+figure, figcaption, footer, header, hgroup,
+menu, nav, output, ruby, section, summary,
+time, mark, audio, video {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ font-size: 100%;
+ font: inherit;
+ vertical-align: baseline;
+}
+img {
+ padding: 0;
+ border: 0;
+ font-size: 100%;
+ font: inherit;
+}
+table, caption, tbody, tfoot, thead, tr, th, td {
+ margin: 0;
+ font-size: 100%;
+ font: inherit;
+}
+/* HTML5 display-role reset for older browsers */
+article, aside, details, figcaption, figure,
+footer, header, hgroup, menu, nav, section {
+ display: block;
+}
+blockquote, q {
+ quotes: none;
+}
+blockquote:before, blockquote:after,
+q:before, q:after {
+ content: '';
+ content: none;
+}
\ No newline at end of file
diff --git a/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-bg_flat_0_aaaaaa_40x100.png b/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-bg_flat_0_aaaaaa_40x100.png
new file mode 100644
index 0000000..5b5dab2
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-bg_flat_0_aaaaaa_40x100.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-bg_flat_75_ffffff_40x100.png b/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-bg_flat_75_ffffff_40x100.png
new file mode 100644
index 0000000..ac8b229
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-bg_flat_75_ffffff_40x100.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-bg_glass_55_fbf9ee_1x400.png b/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-bg_glass_55_fbf9ee_1x400.png
new file mode 100644
index 0000000..ad3d634
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-bg_glass_55_fbf9ee_1x400.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-bg_glass_65_ffffff_1x400.png b/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-bg_glass_65_ffffff_1x400.png
new file mode 100644
index 0000000..42ccba2
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-bg_glass_65_ffffff_1x400.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-bg_glass_75_dadada_1x400.png b/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-bg_glass_75_dadada_1x400.png
new file mode 100644
index 0000000..5a46b47
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-bg_glass_75_dadada_1x400.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-bg_glass_75_e6e6e6_1x400.png b/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-bg_glass_75_e6e6e6_1x400.png
new file mode 100644
index 0000000..86c2baa
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-bg_glass_75_e6e6e6_1x400.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-bg_glass_95_fef1ec_1x400.png b/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-bg_glass_95_fef1ec_1x400.png
new file mode 100644
index 0000000..4443fdc
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-bg_glass_95_fef1ec_1x400.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png
new file mode 100644
index 0000000..7c9fa6c
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-bg_highlight-soft_75_cccccc_1x100.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-bg_inset-soft_95_fef1ec_1x100.png b/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-bg_inset-soft_95_fef1ec_1x100.png
new file mode 100644
index 0000000..0e05810
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-bg_inset-soft_95_fef1ec_1x100.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-icons_222222_256x240.png b/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-icons_222222_256x240.png
new file mode 100644
index 0000000..b273ff1
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-icons_222222_256x240.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-icons_2e83ff_256x240.png b/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-icons_2e83ff_256x240.png
new file mode 100644
index 0000000..09d1cdc
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-icons_2e83ff_256x240.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-icons_454545_256x240.png b/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-icons_454545_256x240.png
new file mode 100644
index 0000000..59bd45b
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-icons_454545_256x240.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-icons_888888_256x240.png b/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-icons_888888_256x240.png
new file mode 100644
index 0000000..6d02426
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-icons_888888_256x240.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-icons_cd0a0a_256x240.png b/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-icons_cd0a0a_256x240.png
new file mode 100644
index 0000000..2ab019b
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/css/silver-theme/images/ui-icons_cd0a0a_256x240.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/css/silver-theme/jquery-ui-1.8.12.custom.css b/Activity_3_python/LangagePython_fonctions/css/silver-theme/jquery-ui-1.8.12.custom.css
new file mode 100644
index 0000000..d94b6b2
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/css/silver-theme/jquery-ui-1.8.12.custom.css
@@ -0,0 +1,103 @@
+/*
+ * jQuery UI CSS Framework 1.8.12
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden { display: none; }
+.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+.ui-helper-clearfix { display: inline-block; }
+/* required comment for clearfix to work in Opera \*/
+* html .ui-helper-clearfix { height:1%; }
+.ui-helper-clearfix { display:block; }
+/* end clearfix */
+.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+ * jQuery UI CSS Framework 1.8.12
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=&fwDefault=normal&fsDefault=&cornerRadius=0&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=05_inset_soft.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: ; font-size: 1em; }
+.ui-widget-content { background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; }
+.ui-widget-content a { color: #222222; }
+.ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
+.ui-widget-header a { color: #222222; }
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
+.ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; }
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; }
+.ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; }
+.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
+.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_inset-soft_95_fef1ec_1x100.png) 50% bottom repeat-x; color: #cd0a0a; }
+.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
+.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
+.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/*
+ * jQuery UI Tabs 1.8.12
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs#theming
+ */
+.ui-tabs { position: relative; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
+.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.ui-tabs .ui-tabs-nav li a { float: left; padding: 2px 5px; text-decoration: none; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
+.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 10px; background: none; }
+.ui-tabs .ui-tabs-hide { display: none !important; }
diff --git a/Activity_3_python/LangagePython_fonctions/css/toc.css b/Activity_3_python/LangagePython_fonctions/css/toc.css
new file mode 100644
index 0000000..a8776ff
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/css/toc.css
@@ -0,0 +1,71 @@
+/* -- Body -- */
+
+body {
+ overflow: hidden;
+}
+
+/* -- UI Tabs -- */
+
+ul.dynatree-container {
+ line-height: 1.5em;
+}
+
+.ui-tabs {
+ position: static;
+}
+
+#toc_header {
+ padding-bottom: 0;
+}
+
+#tabs .ui-tabs-nav {
+ border: 0;
+ border-bottom: 1px solid #ccc;
+ padding-top: 19px;
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+}
+
+#tabs .ui-widget-header{
+ background: #fff url(../img/header-bg.png) left bottom repeat-x;
+}
+
+#tabs .ui-tabs-panel {
+ overflow: auto;
+ position: absolute;
+ top: 43px;
+ left: 0;
+ right: 0;
+ bottom: 0;
+}
+
+/* Search */
+
+#search_value {
+ width: 140px;
+}
+
+#search_results {
+ padding-top: 10px;
+}
+
+/* -- Tree -- */
+
+ul.dynatree-container {
+ border: 0;
+ font-family: inherit;
+ overflow: visible;
+ padding: 0;
+}
+
+/* Selection color */
+span.dynatree-active a {
+ background-color: #999999 !important;
+}
+
+/* Remove folder boldness */
+span.dynatree-folder a {
+ font-weight: normal;
+}
\ No newline at end of file
diff --git a/Activity_3_python/LangagePython_fonctions/img/arrow_left.png b/Activity_3_python/LangagePython_fonctions/img/arrow_left.png
new file mode 100644
index 0000000..7270e0d
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/img/arrow_left.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/img/arrow_right.png b/Activity_3_python/LangagePython_fonctions/img/arrow_right.png
new file mode 100644
index 0000000..ca41e5d
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/img/arrow_right.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/img/arrow_up.png b/Activity_3_python/LangagePython_fonctions/img/arrow_up.png
new file mode 100644
index 0000000..557d5e6
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/img/arrow_up.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/img/book-closed.png b/Activity_3_python/LangagePython_fonctions/img/book-closed.png
new file mode 100644
index 0000000..ad23b2a
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/img/book-closed.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/img/book.png b/Activity_3_python/LangagePython_fonctions/img/book.png
new file mode 100644
index 0000000..0a76cc1
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/img/book.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/img/footer-bg.png b/Activity_3_python/LangagePython_fonctions/img/footer-bg.png
new file mode 100644
index 0000000..5682c5f
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/img/footer-bg.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/img/header-bg.png b/Activity_3_python/LangagePython_fonctions/img/header-bg.png
new file mode 100644
index 0000000..81d526d
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/img/header-bg.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/img/topic.png b/Activity_3_python/LangagePython_fonctions/img/topic.png
new file mode 100644
index 0000000..3974bca
Binary files /dev/null and b/Activity_3_python/LangagePython_fonctions/img/topic.png differ
diff --git a/Activity_3_python/LangagePython_fonctions/js/hnd.js b/Activity_3_python/LangagePython_fonctions/js/hnd.js
new file mode 100644
index 0000000..a603c28
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/js/hnd.js
@@ -0,0 +1 @@
+jQuery.fn.highlight=function(a){function d(b,a){var e=0;if(b.nodeType==3){var c=b.data.toUpperCase().indexOf(a);if(c>=0){e=document.createElement("span");e.className="highlight";c=b.splitText(c);c.splitText(a.length);var g=c.cloneNode(!0);e.appendChild(g);c.parentNode.replaceChild(e,c);e=1}}else if(b.nodeType==1&&b.childNodes&&!/(script|style)/i.test(b.tagName))for(c=0;cb[1]?-1:a[1]=0)&&c(b,!e)}}),a(function(){var b=document.body,c=b.appendChild(c=document.createElement("div"));a.extend(c.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),a.support.minHeight=c.offsetHeight===100,a.support.selectstart="onselectstart"in c,b.removeChild(c).style.display="none"}),a.extend(a.ui,{plugin:{add:function(b,c,d){var e=a.ui[b].prototype;for(var f in d)e.plugins[f]=e.plugins[f]||[],e.plugins[f].push([c,d[f]])},call:function(a,b,c){var d=a.plugins[b];if(!!d&&!!a.element[0].parentNode)for(var e=0;e0)return!0;b[d]=1,e=b[d]>0,b[d]=0;return e},isOverAxis:function(a,b,c){return a>b&&a=9)&&!b.button)return this._mouseUp(b);if(this._mouseStarted){this._mouseDrag(b);return b.preventDefault()}this._mouseDistanceMet(b)&&this._mouseDelayMet(b)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,b)!==!1,this._mouseStarted?this._mouseDrag(b):this._mouseUp(b));return!this._mouseStarted},_mouseUp:function(b){a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,b.target==this._mouseDownEvent.target&&a.data(b.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(b));return!1},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(a){return this.mouseDelayMet},_mouseStart:function(a){},_mouseDrag:function(a){},_mouseStop:function(a){},_mouseCapture:function(a){return!0}})})(jQuery);/*
+ * jQuery UI Draggable 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Draggables
+ *
+ * Depends:
+ * jquery.ui.core.js
+ * jquery.ui.mouse.js
+ * jquery.ui.widget.js
+ */(function(a,b){a.widget("ui.draggable",a.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1},_create:function(){this.options.helper=="original"&&!/^(?:r|a|f)/.test(this.element.css("position"))&&(this.element[0].style.position="relative"),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._mouseInit()},destroy:function(){if(!!this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy();return this}},_mouseCapture:function(b){var c=this.options;if(this.helper||c.disabled||a(b.target).is(".ui-resizable-handle"))return!1;this.handle=this._getHandle(b);if(!this.handle)return!1;c.iframeFix&&a(c.iframeFix===!0?"iframe":c.iframeFix).each(function(){a('
').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(a(this).offset()).appendTo("body")});return!0},_mouseStart:function(b){var c=this.options;this.helper=this._createHelper(b),this._cacheHelperProportions(),a.ui.ddmanager&&(a.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(b),this.originalPageX=b.pageX,this.originalPageY=b.pageY,c.cursorAt&&this._adjustOffsetFromHelper(c.cursorAt),c.containment&&this._setContainment();if(this._trigger("start",b)===!1){this._clear();return!1}this._cacheHelperProportions(),a.ui.ddmanager&&!c.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b),this.helper.addClass("ui-draggable-dragging"),this._mouseDrag(b,!0),a.ui.ddmanager&&a.ui.ddmanager.dragStart(this,b);return!0},_mouseDrag:function(b,c){this.position=this._generatePosition(b),this.positionAbs=this._convertPositionTo("absolute");if(!c){var d=this._uiHash();if(this._trigger("drag",b,d)===!1){this._mouseUp({});return!1}this.position=d.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";a.ui.ddmanager&&a.ui.ddmanager.drag(this,b);return!1},_mouseStop:function(b){var c=!1;a.ui.ddmanager&&!this.options.dropBehaviour&&(c=a.ui.ddmanager.drop(this,b)),this.dropped&&(c=this.dropped,this.dropped=!1);if((!this.element[0]||!this.element[0].parentNode)&&this.options.helper=="original")return!1;if(this.options.revert=="invalid"&&!c||this.options.revert=="valid"&&c||this.options.revert===!0||a.isFunction(this.options.revert)&&this.options.revert.call(this.element,c)){var d=this;a(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){d._trigger("stop",b)!==!1&&d._clear()})}else this._trigger("stop",b)!==!1&&this._clear();return!1},_mouseUp:function(b){this.options.iframeFix===!0&&a("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),a.ui.ddmanager&&a.ui.ddmanager.dragStop(this,b);return a.ui.mouse.prototype._mouseUp.call(this,b)},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(b){var c=!this.options.handle||!a(this.options.handle,this.element).length?!0:!1;a(this.options.handle,this.element).find("*").andSelf().each(function(){this==b.target&&(c=!0)});return c},_createHelper:function(b){var c=this.options,d=a.isFunction(c.helper)?a(c.helper.apply(this.element[0],[b])):c.helper=="clone"?this.element.clone().removeAttr("id"):this.element;d.parents("body").length||d.appendTo(c.appendTo=="parent"?this.element[0].parentNode:c.appendTo),d[0]!=this.element[0]&&!/(fixed|absolute)/.test(d.css("position"))&&d.css("position","absolute");return d},_adjustOffsetFromHelper:function(b){typeof b=="string"&&(b=b.split(" ")),a.isArray(b)&&(b={left:+b[0],top:+b[1]||0}),"left"in b&&(this.offset.click.left=b.left+this.margins.left),"right"in b&&(this.offset.click.left=this.helperProportions.width-b.right+this.margins.left),"top"in b&&(this.offset.click.top=b.top+this.margins.top),"bottom"in b&&(this.offset.click.top=this.helperProportions.height-b.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var b=this.offsetParent.offset();this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&a.ui.contains(this.scrollParent[0],this.offsetParent[0])&&(b.left+=this.scrollParent.scrollLeft(),b.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&a.browser.msie)b={top:0,left:0};return{top:b.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:b.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var b=this.options;b.containment=="parent"&&(b.containment=this.helper[0].parentNode);if(b.containment=="document"||b.containment=="window")this.containment=[b.containment=="document"?0:a(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,b.containment=="document"?0:a(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,(b.containment=="document"?0:a(window).scrollLeft())+a(b.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(b.containment=="document"?0:a(window).scrollTop())+(a(b.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(b.containment)&&b.containment.constructor!=Array){var c=a(b.containment),d=c[0];if(!d)return;var e=c.offset(),f=a(d).css("overflow")!="hidden";this.containment=[(parseInt(a(d).css("borderLeftWidth"),10)||0)+(parseInt(a(d).css("paddingLeft"),10)||0),(parseInt(a(d).css("borderTopWidth"),10)||0)+(parseInt(a(d).css("paddingTop"),10)||0),(f?Math.max(d.scrollWidth,d.offsetWidth):d.offsetWidth)-(parseInt(a(d).css("borderLeftWidth"),10)||0)-(parseInt(a(d).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(f?Math.max(d.scrollHeight,d.offsetHeight):d.offsetHeight)-(parseInt(a(d).css("borderTopWidth"),10)||0)-(parseInt(a(d).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=c}else b.containment.constructor==Array&&(this.containment=b.containment)},_convertPositionTo:function(b,c){c||(c=this.position);var d=b=="absolute"?1:-1,e=this.options,f=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,g=/(html|body)/i.test(f[0].tagName);return{top:c.top+this.offset.relative.top*d+this.offset.parent.top*d-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():g?0:f.scrollTop())*d),left:c.left+this.offset.relative.left*d+this.offset.parent.left*d-(a.browser.safari&&a.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():g?0:f.scrollLeft())*d)}},_generatePosition:function(b){var c=this.options,d=this.cssPosition=="absolute"&&(this.scrollParent[0]==document||!a.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,e=/(html|body)/i.test(d[0].tagName),f=b.pageX,g=b.pageY;if(this.originalPosition){var h;if(this.containment){if(this.relative_container){var i=this.relative_container.offset();h=[this.containment[0]+i.left,this.containment[1]+i.top,this.containment[2]+i.left,this.containment[3]+i.top]}else h=this.containment;b.pageX-this.offset.click.lefth[2]&&(f=h[2]+this.offset.click.left),b.pageY-this.offset.click.top>h[3]&&(g=h[3]+this.offset.click.top)}if(c.grid){var j=c.grid[1]?this.originalPageY+Math.round((g-this.originalPageY)/c.grid[1])*c.grid[1]:this.originalPageY;g=h?j-this.offset.click.toph[3]?j-this.offset.click.toph[2]?k-this.offset.click.left=0;k--){var l=d.snapElements[k].left,m=l+d.snapElements[k].width,n=d.snapElements[k].top,o=n+d.snapElements[k].height;if(!(l-f=k&&g<=l||h>=k&&h<=l||gl)&&(e>=i&&e<=j||f>=i&&f<=j||ej);default:return!1}},a.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(b,c){var d=a.ui.ddmanager.droppables[b.options.scope]||[],e=c?c.type:null,f=(b.currentItem||b.element).find(":data(droppable)").andSelf();droppablesLoop:for(var g=0;g').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("resizable",this.element.data("resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=c.handles||(a(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se");if(this.handles.constructor==String){this.handles=="all"&&(this.handles="n,e,s,w,se,sw,ne,nw");var d=this.handles.split(",");this.handles={};for(var e=0;e');/sw|se|ne|nw/.test(f)&&h.css({zIndex:++c.zIndex}),"se"==f&&h.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[f]=".ui-resizable-"+f,this.element.append(h)}}this._renderAxis=function(b){b=b||this.element;for(var c in this.handles){this.handles[c].constructor==String&&(this.handles[c]=a(this.handles[c],this.element).show());if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var d=a(this.handles[c],this.element),e=0;e=/sw|ne|nw|se|n|s/.test(c)?d.outerHeight():d.outerWidth();var f=["padding",/ne|nw|n/.test(c)?"Top":/se|sw|s/.test(c)?"Bottom":/^e$/.test(c)?"Right":"Left"].join("");b.css(f,e),this._proportionallyResize()}if(!a(this.handles[c]).length)continue}},this._renderAxis(this.element),this._handles=a(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){if(!b.resizing){if(this.className)var a=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=a&&a[1]?a[1]:"se"}}),c.autoHide&&(this._handles.hide(),a(this.element).addClass("ui-resizable-autohide").hover(function(){c.disabled||(a(this).removeClass("ui-resizable-autohide"),b._handles.show())},function(){c.disabled||b.resizing||(a(this).addClass("ui-resizable-autohide"),b._handles.hide())})),this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(b){a(b).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){b(this.element);var c=this.element;c.after(this.originalElement.css({position:c.css("position"),width:c.outerWidth(),height:c.outerHeight(),top:c.css("top"),left:c.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle),b(this.originalElement);return this},_mouseCapture:function(b){var c=!1;for(var d in this.handles)a(this.handles[d])[0]==b.target&&(c=!0);return!this.options.disabled&&c},_mouseStart:function(b){var d=this.options,e=this.element.position(),f=this.element;this.resizing=!0,this.documentScroll={top:a(document).scrollTop(),left:a(document).scrollLeft()},(f.is(".ui-draggable")||/absolute/.test(f.css("position")))&&f.css({position:"absolute",top:e.top,left:e.left}),a.browser.opera&&/relative/.test(f.css("position"))&&f.css({position:"relative",top:"auto",left:"auto"}),this._renderProxy();var g=c(this.helper.css("left")),h=c(this.helper.css("top"));d.containment&&(g+=a(d.containment).scrollLeft()||0,h+=a(d.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:g,top:h},this.size=this._helper?{width:f.outerWidth(),height:f.outerHeight()}:{width:f.width(),height:f.height()},this.originalSize=this._helper?{width:f.outerWidth(),height:f.outerHeight()}:{width:f.width(),height:f.height()},this.originalPosition={left:g,top:h},this.sizeDiff={width:f.outerWidth()-f.width(),height:f.outerHeight()-f.height()},this.originalMousePosition={left:b.pageX,top:b.pageY},this.aspectRatio=typeof d.aspectRatio=="number"?d.aspectRatio:this.originalSize.width/this.originalSize.height||1;var i=a(".ui-resizable-"+this.axis).css("cursor");a("body").css("cursor",i=="auto"?this.axis+"-resize":i),f.addClass("ui-resizable-resizing"),this._propagate("start",b);return!0},_mouseDrag:function(b){var c=this.helper,d=this.options,e={},f=this,g=this.originalMousePosition,h=this.axis,i=b.pageX-g.left||0,j=b.pageY-g.top||0,k=this._change[h];if(!k)return!1;var l=k.apply(this,[b,i,j]),m=a.browser.msie&&a.browser.version<7,n=this.sizeDiff;this._updateVirtualBoundaries(b.shiftKey);if(this._aspectRatio||b.shiftKey)l=this._updateRatio(l,b);l=this._respectSize(l,b),this._propagate("resize",b),c.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"}),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),this._updateCache(l),this._trigger("resize",b,this.ui());return!1},_mouseStop:function(b){this.resizing=!1;var c=this.options,d=this;if(this._helper){var e=this._proportionallyResizeElements,f=e.length&&/textarea/i.test(e[0].nodeName),g=f&&a.ui.hasScroll(e[0],"left")?0:d.sizeDiff.height,h=f?0:d.sizeDiff.width,i={width:d.helper.width()-h,height:d.helper.height()-g},j=parseInt(d.element.css("left"),10)+(d.position.left-d.originalPosition.left)||null,k=parseInt(d.element.css("top"),10)+(d.position.top-d.originalPosition.top)||null;c.animate||this.element.css(a.extend(i,{top:k,left:j})),d.helper.height(d.size.height),d.helper.width(d.size.width),this._helper&&!c.animate&&this._proportionallyResize()}a("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",b),this._helper&&this.helper.remove();return!1},_updateVirtualBoundaries:function(a){var b=this.options,c,e,f,g,h;h={minWidth:d(b.minWidth)?b.minWidth:0,maxWidth:d(b.maxWidth)?b.maxWidth:Infinity,minHeight:d(b.minHeight)?b.minHeight:0,maxHeight:d(b.maxHeight)?b.maxHeight:Infinity};if(this._aspectRatio||a)c=h.minHeight*this.aspectRatio,f=h.minWidth/this.aspectRatio,e=h.maxHeight*this.aspectRatio,g=h.maxWidth/this.aspectRatio,c>h.minWidth&&(h.minWidth=c),f>h.minHeight&&(h.minHeight=f),ea.width,k=d(a.height)&&e.minHeight&&e.minHeight>a.height;j&&(a.width=e.minWidth),k&&(a.height=e.minHeight),h&&(a.width=e.maxWidth),i&&(a.height=e.maxHeight);var l=this.originalPosition.left+this.originalSize.width,m=this.position.top+this.size.height,n=/sw|nw|w/.test(g),o=/nw|ne|n/.test(g);j&&n&&(a.left=l-e.minWidth),h&&n&&(a.left=l-e.maxWidth),k&&o&&(a.top=m-e.minHeight),i&&o&&(a.top=m-e.maxHeight);var p=!a.width&&!a.height;p&&!a.left&&a.top?a.top=null:p&&!a.top&&a.left&&(a.left=null);return a},_proportionallyResize:function(){var b=this.options;if(!!this._proportionallyResizeElements.length){var c=this.helper||this.element;for(var d=0;d');var d=a.browser.msie&&a.browser.version<7,e=d?1:0,f=d?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+f,height:this.element.outerHeight()+f,position:"absolute",left:this.elementOffset.left-e+"px",top:this.elementOffset.top-e+"px",zIndex:++c.zIndex}),this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(a,b,c){return{width:this.originalSize.width+b}},w:function(a,b,c){var d=this.options,e=this.originalSize,f=this.originalPosition;return{left:f.left+b,width:e.width-b}},n:function(a,b,c){var d=this.options,e=this.originalSize,f=this.originalPosition;return{top:f.top+c,height:e.height-c}},s:function(a,b,c){return{height:this.originalSize.height+c}},se:function(b,c,d){return a.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,c,d]))},sw:function(b,c,d){return a.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,c,d]))},ne:function(b,c,d){return a.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[b,c,d]))},nw:function(b,c,d){return a.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,c,d]))}},_propagate:function(b,c){a.ui.plugin.call(this,b,[c,this.ui()]),b!="resize"&&this._trigger(b,c,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),a.extend(a.ui.resizable,{version:"1.8.17"}),a.ui.plugin.add("resizable","alsoResize",{start:function(b,c){var d=a(this).data("resizable"),e=d.options,f=function(b){a(b).each(function(){var b=a(this);b.data("resizable-alsoresize",{width:parseInt(b.width(),10),height:parseInt(b.height(),10),left:parseInt(b.css("left"),10),top:parseInt(b.css("top"),10),position:b.css("position")})})};typeof e.alsoResize=="object"&&!e.alsoResize.parentNode?e.alsoResize.length?(e.alsoResize=e.alsoResize[0],f(e.alsoResize)):a.each(e.alsoResize,function(a){f(a)}):f(e.alsoResize)},resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.originalSize,g=d.originalPosition,h={height:d.size.height-f.height||0,width:d.size.width-f.width||0,top:d.position.top-g.top||0,left:d.position.left-g.left||0},i=function(b,e){a(b).each(function(){var b=a(this),f=a(this).data("resizable-alsoresize"),g={},i=e&&e.length?e:b.parents(c.originalElement[0]).length?["width","height"]:["width","height","top","left"];a.each(i,function(a,b){var c=(f[b]||0)+(h[b]||0);c&&c>=0&&(g[b]=c||null)}),a.browser.opera&&/relative/.test(b.css("position"))&&(d._revertToRelativePosition=!0,b.css({position:"absolute",top:"auto",left:"auto"})),b.css(g)})};typeof e.alsoResize=="object"&&!e.alsoResize.nodeType?a.each(e.alsoResize,function(a,b){i(a,b)}):i(e.alsoResize)},stop:function(b,c){var d=a(this).data("resizable"),e=d.options,f=function(b){a(b).each(function(){var b=a(this);b.css({position:b.data("resizable-alsoresize").position})})};d._revertToRelativePosition&&(d._revertToRelativePosition=!1,typeof e.alsoResize=="object"&&!e.alsoResize.nodeType?a.each(e.alsoResize,function(a){f(a)}):f(e.alsoResize)),a(this).removeData("resizable-alsoresize")}}),a.ui.plugin.add("resizable","animate",{stop:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d._proportionallyResizeElements,g=f.length&&/textarea/i.test(f[0].nodeName),h=g&&a.ui.hasScroll(f[0],"left")?0:d.sizeDiff.height,i=g?0:d.sizeDiff.width,j={width:d.size.width-i,height:d.size.height-h},k=parseInt(d.element.css("left"),10)+(d.position.left-d.originalPosition.left)||null,l=parseInt(d.element.css("top"),10)+(d.position.top-d.originalPosition.top)||null;d.element.animate(a.extend(j,l&&k?{top:l,left:k}:{}),{duration:e.animateDuration,easing:e.animateEasing,step:function(){var c={width:parseInt(d.element.css("width"),10),height:parseInt(d.element.css("height"),10),top:parseInt(d.element.css("top"),10),left:parseInt(d.element.css("left"),10)};f&&f.length&&a(f[0]).css({width:c.width,height:c.height}),d._updateCache(c),d._propagate("resize",b)}})}}),a.ui.plugin.add("resizable","containment",{start:function(b,d){var e=a(this).data("resizable"),f=e.options,g=e.element,h=f.containment,i=h instanceof a?h.get(0):/parent/.test(h)?g.parent().get(0):h;if(!!i){e.containerElement=a(i);if(/document/.test(h)||h==document)e.containerOffset={left:0,top:0},e.containerPosition={left:0,top:0},e.parentData={element:a(document),left:0,top:0,width:a(document).width(),height:a(document).height()||document.body.parentNode.scrollHeight};else{var j=a(i),k=[];a(["Top","Right","Left","Bottom"]).each(function(a,b){k[a]=c(j.css("padding"+b))}),e.containerOffset=j.offset(),e.containerPosition=j.position(),e.containerSize={height:j.innerHeight()-k[3],width:j.innerWidth()-k[1]};var l=e.containerOffset,m=e.containerSize.height,n=e.containerSize.width,o=a.ui.hasScroll(i,"left")?i.scrollWidth:n,p=a.ui.hasScroll(i)?i.scrollHeight:m;e.parentData={element:i,left:l.left,top:l.top,width:o,height:p}}}},resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.containerSize,g=d.containerOffset,h=d.size,i=d.position,j=d._aspectRatio||b.shiftKey,k={top:0,left:0},l=d.containerElement;l[0]!=document&&/static/.test(l.css("position"))&&(k=g),i.left<(d._helper?g.left:0)&&(d.size.width=d.size.width+(d._helper?d.position.left-g.left:d.position.left-k.left),j&&(d.size.height=d.size.width/e.aspectRatio),d.position.left=e.helper?g.left:0),i.top<(d._helper?g.top:0)&&(d.size.height=d.size.height+(d._helper?d.position.top-g.top:d.position.top),j&&(d.size.width=d.size.height*e.aspectRatio),d.position.top=d._helper?g.top:0),d.offset.left=d.parentData.left+d.position.left,d.offset.top=d.parentData.top+d.position.top;var m=Math.abs((d._helper?d.offset.left-k.left:d.offset.left-k.left)+d.sizeDiff.width),n=Math.abs((d._helper?d.offset.top-k.top:d.offset.top-g.top)+d.sizeDiff.height),o=d.containerElement.get(0)==d.element.parent().get(0),p=/relative|absolute/.test(d.containerElement.css("position"));o&&p&&(m-=d.parentData.left),m+d.size.width>=d.parentData.width&&(d.size.width=d.parentData.width-m,j&&(d.size.height=d.size.width/d.aspectRatio)),n+d.size.height>=d.parentData.height&&(d.size.height=d.parentData.height-n,j&&(d.size.width=d.size.height*d.aspectRatio))},stop:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.position,g=d.containerOffset,h=d.containerPosition,i=d.containerElement,j=a(d.helper),k=j.offset(),l=j.outerWidth()-d.sizeDiff.width,m=j.outerHeight()-d.sizeDiff.height;d._helper&&!e.animate&&/relative/.test(i.css("position"))&&a(this).css({left:k.left-h.left-g.left,width:l,height:m}),d._helper&&!e.animate&&/static/.test(i.css("position"))&&a(this).css({left:k.left-h.left-g.left,width:l,height:m})}}),a.ui.plugin.add("resizable","ghost",{start:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.size;d.ghost=d.originalElement.clone(),d.ghost.css({opacity:.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof e.ghost=="string"?e.ghost:""),d.ghost.appendTo(d.helper)},resize:function(b,c){var d=a(this).data("resizable"),e=d.options;d.ghost&&d.ghost.css({position:"relative",height:d.size.height,width:d.size.width})},stop:function(b,c){var d=a(this).data("resizable"),e=d.options;d.ghost&&d.helper&&d.helper.get(0).removeChild(d.ghost.get(0))}}),a.ui.plugin.add("resizable","grid",{resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.size,g=d.originalSize,h=d.originalPosition,i=d.axis,j=e._aspectRatio||b.shiftKey;e.grid=typeof e.grid=="number"?[e.grid,e.grid]:e.grid;var k=Math.round((f.width-g.width)/(e.grid[0]||1))*(e.grid[0]||1),l=Math.round((f.height-g.height)/(e.grid[1]||1))*(e.grid[1]||1);/^(se|s|e)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l):/^(ne)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l,d.position.top=h.top-l):/^(sw)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l,d.position.left=h.left-k):(d.size.width=g.width+k,d.size.height=g.height+l,d.position.top=h.top-l,d.position.left=h.left-k)}});var c=function(a){return parseInt(a,10)||0},d=function(a){return!isNaN(parseInt(a,10))}})(jQuery);/*
+ * jQuery UI Selectable 1.8.17
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Selectables
+ *
+ * Depends:
+ * jquery.ui.core.js
+ * jquery.ui.mouse.js
+ * jquery.ui.widget.js
+ */(function(a,b){a.widget("ui.selectable",a.ui.mouse,{options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch"},_create:function(){var b=this;this.element.addClass("ui-selectable"),this.dragged=!1;var c;this.refresh=function(){c=a(b.options.filter,b.element[0]),c.addClass("ui-selectee"),c.each(function(){var b=a(this),c=b.offset();a.data(this,"selectable-item",{element:this,$element:b,left:c.left,top:c.top,right:c.left+b.outerWidth(),bottom:c.top+b.outerHeight(),startselected:!1,selected:b.hasClass("ui-selected"),selecting:b.hasClass("ui-selecting"),unselecting:b.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=c.addClass("ui-selectee"),this._mouseInit(),this.helper=a("
")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable"),this._mouseDestroy();return this},_mouseStart:function(b){var c=this;this.opos=[b.pageX,b.pageY];if(!this.options.disabled){var d=this.options;this.selectees=a(d.filter,this.element[0]),this._trigger("start",b),a(d.appendTo).append(this.helper),this.helper.css({left:b.clientX,top:b.clientY,width:0,height:0}),d.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var d=a.data(this,"selectable-item");d.startselected=!0,!b.metaKey&&!b.ctrlKey&&(d.$element.removeClass("ui-selected"),d.selected=!1,d.$element.addClass("ui-unselecting"),d.unselecting=!0,c._trigger("unselecting",b,{unselecting:d.element}))}),a(b.target).parents().andSelf().each(function(){var d=a.data(this,"selectable-item");if(d){var e=!b.metaKey&&!b.ctrlKey||!d.$element.hasClass("ui-selected");d.$element.removeClass(e?"ui-unselecting":"ui-selected").addClass(e?"ui-selecting":"ui-unselecting"),d.unselecting=!e,d.selecting=e,d.selected=e,e?c._trigger("selecting",b,{selecting:d.element}):c._trigger("unselecting",b,{unselecting:d.element});return!1}})}},_mouseDrag:function(b){var c=this;this.dragged=!0;if(!this.options.disabled){var d=this.options,e=this.opos[0],f=this.opos[1],g=b.pageX,h=b.pageY;if(e>g){var i=g;g=e,e=i}if(f>h){var i=h;h=f,f=i}this.helper.css({left:e,top:f,width:g-e,height:h-f}),this.selectees.each(function(){var i=a.data(this,"selectable-item");if(!!i&&i.element!=c.element[0]){var j=!1;d.tolerance=="touch"?j=!(i.left>g||i.righth||i.bottome&&i.rightf&&i.bottom *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3},_create:function(){var a=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?a.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):!1,this.offset=this.element.offset(),this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var a=this.items.length-1;a>=0;a--)this.items[a].item.removeData(this.widgetName+"-item");return this},_setOption:function(b,c){b==="disabled"?(this.options[b]=c,this.widget()[c?"addClass":"removeClass"]("ui-sortable-disabled")):a.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(b,c){var d=this;if(this.reverting)return!1;if(this.options.disabled||this.options.type=="static")return!1;this._refreshItems(b);var e=null,f=this,g=a(b.target).parents().each(function(){if(a.data(this,d.widgetName+"-item")==f){e=a(this);return!1}});a.data(b.target,d.widgetName+"-item")==f&&(e=a(b.target));if(!e)return!1;if(this.options.handle&&!c){var h=!1;a(this.options.handle,e).find("*").andSelf().each(function(){this==b.target&&(h=!0)});if(!h)return!1}this.currentItem=e,this._removeCurrentsFromItems();return!0},_mouseStart:function(b,c,d){var e=this.options,f=this;this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(b),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),a.extend(this.offset,{click:{left:b.pageX-this.offset.left,top:b.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this._generatePosition(b),this.originalPageX=b.pageX,this.originalPageY=b.pageY,e.cursorAt&&this._adjustOffsetFromHelper(e.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!=this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),e.containment&&this._setContainment(),e.cursor&&(a("body").css("cursor")&&(this._storedCursor=a("body").css("cursor")),a("body").css("cursor",e.cursor)),e.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",e.opacity)),e.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",e.zIndex)),this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",b,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions();if(!d)for(var g=this.containers.length-1;g>=0;g--)this.containers[g]._trigger("activate",b,f._uiHash(this));a.ui.ddmanager&&(a.ui.ddmanager.current=this),a.ui.ddmanager&&!e.dropBehaviour&&a.ui.ddmanager.prepareOffsets(this,b),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(b);return!0},_mouseDrag:function(b){this.position=this._generatePosition(b),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs);if(this.options.scroll){var c=this.options,d=!1;this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-b.pageY=0;e--){var f=this.items[e],g=f.item[0],h=this._intersectsWithPointer(f);if(!h)continue;if(g!=this.currentItem[0]&&this.placeholder[h==1?"next":"prev"]()[0]!=g&&!a.ui.contains(this.placeholder[0],g)&&(this.options.type=="semi-dynamic"?!a.ui.contains(this.element[0],g):!0)){this.direction=h==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(f))this._rearrange(b,f);else break;this._trigger("change",b,this._uiHash());break}}this._contactContainers(b),a.ui.ddmanager&&a.ui.ddmanager.drag(this,b),this._trigger("sort",b,this._uiHash()),this.lastPositionAbs=this.positionAbs;return!1},_mouseStop:function(b,c){if(!!b){a.ui.ddmanager&&!this.options.dropBehaviour&&a.ui.ddmanager.drop(this,b);if(this.options.revert){var d=this,e=d.placeholder.offset();d.reverting=!0,a(this.helper).animate({left:e.left-this.offset.parent.left-d.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:e.top-this.offset.parent.top-d.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){d._clear(b)})}else this._clear(b,c);return!1}},cancel:function(){var b=this;if(this.dragging){this._mouseUp({target:null}),this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var c=this.containers.length-1;c>=0;c--)this.containers[c]._trigger("deactivate",null,b._uiHash(this)),this.containers[c].containerCache.over&&(this.containers[c]._trigger("out",null,b._uiHash(this)),this.containers[c].containerCache.over=0)}this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),a.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?a(this.domPosition.prev).after(this.currentItem):a(this.domPosition.parent).prepend(this.currentItem));return this},serialize:function(b){var c=this._getItemsAsjQuery(b&&b.connected),d=[];b=b||{},a(c).each(function(){var c=(a(b.item||this).attr(b.attribute||"id")||"").match(b.expression||/(.+)[-=_](.+)/);c&&d.push((b.key||c[1]+"[]")+"="+(b.key&&b.expression?c[1]:c[2]))}),!d.length&&b.key&&d.push(b.key+"=");return d.join("&")},toArray:function(b){var c=this._getItemsAsjQuery(b&&b.connected),d=[];b=b||{},c.each(function(){d.push(a(b.item||this).attr(b.attribute||"id")||"")});return d},_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,d=this.positionAbs.top,e=d+this.helperProportions.height,f=a.left,g=f+a.width,h=a.top,i=h+a.height,j=this.offset.click.top,k=this.offset.click.left,l=d+j>h&&d+jf&&b+ka[this.floating?"width":"height"]?l:f0?"down":"up")},_getDragHorizontalDirection:function(){var a=this.positionAbs.left-this.lastPositionAbs.left;return a!=0&&(a>0?"right":"left")},refresh:function(a){this._refreshItems(a),this.refreshPositions();return this},_connectWith:function(){var a=this.options;return a.connectWith.constructor==String?[a.connectWith]:a.connectWith},_getItemsAsjQuery:function(b){var c=this,d=[],e=[],f=this._connectWith();if(f&&b)for(var g=f.length-1;g>=0;g--){var h=a(f[g]);for(var i=h.length-1;i>=0;i--){var j=a.data(h[i],this.widgetName);j&&j!=this&&!j.options.disabled&&e.push([a.isFunction(j.options.items)?j.options.items.call(j.element):a(j.options.items,j.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),j])}}e.push([a.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):a(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(var g=e.length-1;g>=0;g--)e[g][0].each(function(){d.push(this)});return a(d)},_removeCurrentsFromItems:function(){var a=this.currentItem.find(":data("+this.widgetName+"-item)");for(var b=0;b=0;g--){var h=a(f[g]);for(var i=h.length-1;i>=0;i--){var j=a.data(h[i],this.widgetName);j&&j!=this&&!j.options.disabled&&(e.push([a.isFunction(j.options.items)?j.options.items.call(j.element[0],b,{item:this.currentItem}):a(j.options.items,j.element),j]),this.containers.push(j))}}for(var g=e.length-1;g>=0;g--){var k=e[g][1],l=e[g][0];for(var i=0,m=l.length;i=0;c--){var d=this.items[c];if(d.instance!=this.currentContainer&&this.currentContainer&&d.item[0]!=this.currentItem[0])continue;var e=this.options.toleranceElement?a(this.options.toleranceElement,d.item):d.item;b||(d.width=e.outerWidth(),d.height=e.outerHeight());var f=e.offset();d.left=f.left,d.top=f.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(var c=this.containers.length-1;c>=0;c--){var f=this.containers[c].element.offset();this.containers[c].containerCache.left=f.left,this.containers[c].containerCache.top=f.top,this.containers[c].containerCache.width=this.containers[c].element.outerWidth(),this.containers[c].containerCache.height=this.containers[c].element.outerHeight()}return this},_createPlaceholder:function(b){var c=b||this,d=c.options;if(!d.placeholder||d.placeholder.constructor==String){var e=d.placeholder;d.placeholder={element:function(){var b=a(document.createElement(c.currentItem[0].nodeName)).addClass(e||c.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];e||(b.style.visibility="hidden");return b},update:function(a,b){if(!e||!!d.forcePlaceholderSize)b.height()||b.height(c.currentItem.innerHeight()-parseInt(c.currentItem.css("paddingTop")||0,10)-parseInt(c.currentItem.css("paddingBottom")||0,10)),b.width()||b.width(c.currentItem.innerWidth()-parseInt(c.currentItem.css("paddingLeft")||0,10)-parseInt(c.currentItem.css("paddingRight")||0,10))}}}c.placeholder=a(d.placeholder.element.call(c.element,c.currentItem)),c.currentItem.after(c.placeholder),d.placeholder.update(c,c.placeholder)},_contactContainers:function(b){var c=null,d=null;for(var e=this.containers.length-1;e>=0;e--){if(a.ui.contains(this.currentItem[0],this.containers[e].element[0]))continue;if(this._intersectsWith(this.containers[e].containerCache)){if(c&&a.ui.contains(this.containers[e].element[0],c.element[0]))continue;c=this.containers[e],d=e}else this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",b,this._uiHash(this)),this.containers[e].containerCache.over=0)}if(!!c)if(this.containers.length===1)this.containers[d]._trigger("over",b,this._uiHash(this)),this.containers[d].containerCache.over=1;else if(this.currentContainer!=this.containers[d]){var f=1e4,g=null,h=this.positionAbs[this.containers[d].floating?"left":"top"];for(var i=this.items.length-1;i>=0;i--){if(!a.ui.contains(this.containers[d].element[0],this.items[i].item[0]))continue;var j=this.items[i][this.containers[d].floating?"left":"top"];Math.abs(j-h)this.containment[2]&&(f=this.containment[2]+this.offset.click.left),b.pageY-this.offset.click.top>this.containment[3]&&(g=this.containment[3]+this.offset.click.top));if(c.grid){var h=this.originalPageY+Math.round((g-this.originalPageY)/c.grid[1])*c.grid[1];g=this.containment?h-this.offset.click.topthis.containment[3]?h-this.offset.click.topthis.containment[2]?i-this.offset.click.left=0;f--)a.ui.contains(this.containers[f].element[0],this.currentItem[0])&&!c&&(d.push(function(a){return function(b){a._trigger("receive",b,this._uiHash(this))}}.call(this,this.containers[f])),d.push(function(a){return function(b){a._trigger("update",b,this._uiHash(this))}}.call(this,this.containers[f])))}for(var f=this.containers.length-1;f>=0;f--)c||d.push(function(a){return function(b){a._trigger("deactivate",b,this._uiHash(this))}}.call(this,this.containers[f])),this.containers[f].containerCache.over&&(d.push(function(a){return function(b){a._trigger("out",b,this._uiHash(this))}}.call(this,this.containers[f])),this.containers[f].containerCache.over=0);this._storedCursor&&a("body").css("cursor",this._storedCursor),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex),this.dragging=!1;if(this.cancelHelperRemoval){if(!c){this._trigger("beforeStop",b,this._uiHash());for(var f=0;f",remove:null,select:null,show:null,spinner:"Loading… ",tabTemplate:"#{label} "},_create:function(){this._tabify(!0)},_setOption:function(a,b){if(a=="selected"){if(this.options.collapsible&&b==this.options.selected)return;this.select(b)}else this.options[a]=b,this._tabify()},_tabId:function(a){return a.title&&a.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+e()},_sanitizeSelector:function(a){return a.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+f());return a.cookie.apply(null,[b].concat(a.makeArray(arguments)))},_ui:function(a,b){return{tab:a,panel:b,index:this.anchors.index(a)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b=a(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(c){function m(b,c){b.css("display",""),!a.support.opacity&&c.opacity&&b[0].style.removeAttribute("filter")}var d=this,e=this.options,f=/^#.+/;this.list=this.element.find("ol,ul").eq(0),this.lis=a(" > li:has(a[href])",this.list),this.anchors=this.lis.map(function(){return a("a",this)[0]}),this.panels=a([]),this.anchors.each(function(b,c){var g=a(c).attr("href"),h=g.split("#")[0],i;h&&(h===location.toString().split("#")[0]||(i=a("base")[0])&&h===i.href)&&(g=c.hash,c.href=g);if(f.test(g))d.panels=d.panels.add(d.element.find(d._sanitizeSelector(g)));else if(g&&g!=="#"){a.data(c,"href.tabs",g),a.data(c,"load.tabs",g.replace(/#.*$/,""));var j=d._tabId(c);c.href="#"+j;var k=d.element.find("#"+j);k.length||(k=a(e.panelTemplate).attr("id",j).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(d.panels[b-1]||d.list),k.data("destroy.tabs",!0)),d.panels=d.panels.add(k)}else e.disabled.push(b)}),c?(this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"),this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"),this.lis.addClass("ui-state-default ui-corner-top"),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom"),e.selected===b?(location.hash&&this.anchors.each(function(a,b){if(b.hash==location.hash){e.selected=a;return!1}}),typeof e.selected!="number"&&e.cookie&&(e.selected=parseInt(d._cookie(),10)),typeof e.selected!="number"&&this.lis.filter(".ui-tabs-selected").length&&(e.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"))),e.selected=e.selected||(this.lis.length?0:-1)):e.selected===null&&(e.selected=-1),e.selected=e.selected>=0&&this.anchors[e.selected]||e.selected<0?e.selected:0,e.disabled=a.unique(e.disabled.concat(a.map(this.lis.filter(".ui-state-disabled"),function(a,b){return d.lis.index(a)}))).sort(),a.inArray(e.selected,e.disabled)!=-1&&e.disabled.splice(a.inArray(e.selected,e.disabled),1),this.panels.addClass("ui-tabs-hide"),this.lis.removeClass("ui-tabs-selected ui-state-active"),e.selected>=0&&this.anchors.length&&(d.element.find(d._sanitizeSelector(d.anchors[e.selected].hash)).removeClass("ui-tabs-hide"),this.lis.eq(e.selected).addClass("ui-tabs-selected ui-state-active"),d.element.queue("tabs",function(){d._trigger("show",null,d._ui(d.anchors[e.selected],d.element.find(d._sanitizeSelector(d.anchors[e.selected].hash))[0]))}),this.load(e.selected)),a(window).bind("unload",function(){d.lis.add(d.anchors).unbind(".tabs"),d.lis=d.anchors=d.panels=null})):e.selected=this.lis.index(this.lis.filter(".ui-tabs-selected")),this.element[e.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible"),e.cookie&&this._cookie(e.selected,e.cookie);for(var g=0,h;h=this.lis[g];g++)a(h)[a.inArray(g,e.disabled)!=-1&&!a(h).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");e.cache===!1&&this.anchors.removeData("cache.tabs"),this.lis.add(this.anchors).unbind(".tabs");if(e.event!=="mouseover"){var i=function(a,b){b.is(":not(.ui-state-disabled)")&&b.addClass("ui-state-"+a)},j=function(a,b){b.removeClass("ui-state-"+a)};this.lis.bind("mouseover.tabs",function(){i("hover",a(this))}),this.lis.bind("mouseout.tabs",function(){j("hover",a(this))}),this.anchors.bind("focus.tabs",function(){i("focus",a(this).closest("li"))}),this.anchors.bind("blur.tabs",function(){j("focus",a(this).closest("li"))})}var k,l;e.fx&&(a.isArray(e.fx)?(k=e.fx[0],l=e.fx[1]):k=l=e.fx);var n=l?function(b,c){a(b).closest("li").addClass("ui-tabs-selected ui-state-active"),c.hide().removeClass("ui-tabs-hide").animate(l,l.duration||"normal",function(){m(c,l),d._trigger("show",null,d._ui(b,c[0]))})}:function(b,c){a(b).closest("li").addClass("ui-tabs-selected ui-state-active"),c.removeClass("ui-tabs-hide"),d._trigger("show",null,d._ui(b,c[0]))},o=k?function(a,b){b.animate(k,k.duration||"normal",function(){d.lis.removeClass("ui-tabs-selected ui-state-active"),b.addClass("ui-tabs-hide"),m(b,k),d.element.dequeue("tabs")})}:function(a,b,c){d.lis.removeClass("ui-tabs-selected ui-state-active"),b.addClass("ui-tabs-hide"),d.element.dequeue("tabs")};this.anchors.bind(e.event+".tabs",function(){var b=this,c=a(b).closest("li"),f=d.panels.filter(":not(.ui-tabs-hide)"),g=d.element.find(d._sanitizeSelector(b.hash));if(c.hasClass("ui-tabs-selected")&&!e.collapsible||c.hasClass("ui-state-disabled")||c.hasClass("ui-state-processing")||d.panels.filter(":animated").length||d._trigger("select",null,d._ui(this,g[0]))===!1){this.blur();return!1}e.selected=d.anchors.index(this),d.abort();if(e.collapsible){if(c.hasClass("ui-tabs-selected")){e.selected=-1,e.cookie&&d._cookie(e.selected,e.cookie),d.element.queue("tabs",function(){o(b,f)}).dequeue("tabs"),this.blur();return!1}if(!f.length){e.cookie&&d._cookie(e.selected,e.cookie),d.element.queue("tabs",function(){n(b,g)}),d.load(d.anchors.index(this)),this.blur();return!1}}e.cookie&&d._cookie(e.selected,e.cookie);if(g.length)f.length&&d.element.queue("tabs",function(){o(b,f)}),d.element.queue("tabs",function(){n(b,g)}),d.load(d.anchors.index(this));else throw"jQuery UI Tabs: Mismatching fragment identifier.";a.browser.msie&&this.blur()}),this.anchors.bind("click.tabs",function(){return!1})},_getIndex:function(a){typeof a=="string"&&(a=this.anchors.index(this.anchors.filter("[href$="+a+"]")));return a},destroy:function(){var b=this.options;this.abort(),this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs"),this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"),this.anchors.each(function(){var b=a.data(this,"href.tabs");b&&(this.href=b);var c=a(this).unbind(".tabs");a.each(["href","load","cache"],function(a,b){c.removeData(b+".tabs")})}),this.lis.unbind(".tabs").add(this.panels).each(function(){a.data(this,"destroy.tabs")?a(this).remove():a(this).removeClass(["ui-state-default","ui-corner-top","ui-tabs-selected","ui-state-active","ui-state-hover","ui-state-focus","ui-state-disabled","ui-tabs-panel","ui-widget-content","ui-corner-bottom","ui-tabs-hide"].join(" "))}),b.cookie&&this._cookie(null,b.cookie);return this},add:function(c,d,e){e===b&&(e=this.anchors.length);var f=this,g=this.options,h=a(g.tabTemplate.replace(/#\{href\}/g,c).replace(/#\{label\}/g,d)),i=c.indexOf("#")?this._tabId(a("a",h)[0]):c.replace("#","");h.addClass("ui-state-default ui-corner-top").data("destroy.tabs",!0);var j=f.element.find("#"+i);j.length||(j=a(g.panelTemplate).attr("id",i).data("destroy.tabs",!0)),j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide"),e>=this.lis.length?(h.appendTo(this.list),j.appendTo(this.list[0].parentNode)):(h.insertBefore(this.lis[e]),j.insertBefore(this.panels[e])),g.disabled=a.map(g.disabled,function(a,b){return a>=e?++a:a}),this._tabify(),this.anchors.length==1&&(g.selected=0,h.addClass("ui-tabs-selected ui-state-active"),j.removeClass("ui-tabs-hide"),this.element.queue("tabs",function(){f._trigger("show",null,f._ui(f.anchors[0],f.panels[0]))}),this.load(0)),this._trigger("add",null,this._ui(this.anchors[e],this.panels[e]));return this},remove:function(b){b=this._getIndex(b);var c=this.options,d=this.lis.eq(b).remove(),e=this.panels.eq(b).remove();d.hasClass("ui-tabs-selected")&&this.anchors.length>1&&this.select(b+(b+1=b?--a:a}),this._tabify(),this._trigger("remove",null,this._ui(d.find("a")[0],e[0]));return this},enable:function(b){b=this._getIndex(b);var c=this.options;if(a.inArray(b,c.disabled)!=-1){this.lis.eq(b).removeClass("ui-state-disabled"),c.disabled=a.grep(c.disabled,function(a,c){return a!=b}),this._trigger("enable",null,this._ui(this.anchors[b],this.panels[b]));return this}},disable:function(a){a=this._getIndex(a);var b=this,c=this.options;a!=c.selected&&(this.lis.eq(a).addClass("ui-state-disabled"),c.disabled.push(a),c.disabled.sort(),this._trigger("disable",null,this._ui(this.anchors[a],this.panels[a])));return this},select:function(a){a=this._getIndex(a);if(a==-1)if(this.options.collapsible&&this.options.selected!=-1)a=this.options.selected;else return this;this.anchors.eq(a).trigger(this.options.event+".tabs");return this},load:function(b){b=this._getIndex(b);var c=this,d=this.options,e=this.anchors.eq(b)[0],f=a.data(e,"load.tabs");this.abort();if(!f||this.element.queue("tabs").length!==0&&a.data(e,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(b).addClass("ui-state-processing");if(d.spinner){var g=a("span",e);g.data("label.tabs",g.html()).html(d.spinner)}this.xhr=a.ajax(a.extend({},d.ajaxOptions,{url:f,success:function(f,g){c.element.find(c._sanitizeSelector(e.hash)).html(f),c._cleanup(),d.cache&&a.data(e,"cache.tabs",!0),c._trigger("load",null,c._ui(c.anchors[b],c.panels[b]));try{d.ajaxOptions.success(f,g)}catch(h){}},error:function(a,f,g){c._cleanup(),c._trigger("load",null,c._ui(c.anchors[b],c.panels[b]));try{d.ajaxOptions.error(a,f,b,e)}catch(g){}}})),c.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]),this.panels.stop(!1,!0),this.element.queue("tabs",this.element.queue("tabs").splice(-2,2)),this.xhr&&(this.xhr.abort(),delete this.xhr),this._cleanup();return this},url:function(a,b){this.anchors.eq(a).removeData("cache.tabs").data("load.tabs",b);return this},length:function(){return this.anchors.length}}),a.extend(a.ui.tabs,{version:"1.8.17"}),a.extend(a.ui.tabs.prototype,{rotation:null,rotate:function(a,b){var c=this,d=this.options,e=c._rotate||(c._rotate=function(b){clearTimeout(c.rotation),c.rotation=setTimeout(function(){var a=d.selected;c.select(++a: '"+this.data.title+"'";},toDict:function(recursive,callback){var dict=$.extend({},this.data);dict.activate=(this.tree.activeNode===this);dict.focus=(this.tree.focusNode===this);dict.expand=this.bExpanded;dict.select=this.bSelected;if(callback){callback(dict);}
+if(recursive&&this.childList){dict.children=[];for(var i=0,l=this.childList.length;i1){res+=cache.tagConnector;}}else if(this.hasChildren()!==false){res+=cache.tagExpander;}else{res+=cache.tagConnector;}
+if(opts.checkbox&&data.hideCheckbox!==true&&!data.isStatusNode){res+=cache.tagCheckbox;}
+if(data.icon){res+=" ";}else if(data.icon===false){noop();}else{res+=cache.tagNodeIcon;}
+var nodeTitle="";if(opts.onCustomRender){nodeTitle=opts.onCustomRender.call(tree,this)||"";}
+if(!nodeTitle){var tooltip=data.tooltip?' title="'+data.tooltip.replace(/\"/g,'"')+'"':'',href=data.href||"#";if(opts.noLink||data.noLink){nodeTitle=''+data.title+' ';}else{nodeTitle=''+data.title+' ';}}
+res+=nodeTitle;return res;},_fixOrder:function(){var cl=this.childList;if(!cl||!this.ul){return;}
+var childLI=this.ul.firstChild;for(var i=0,l=cl.length-1;i1){this.ul.className=cn.container+" "+cn.noConnector;}else{this.ul.className=cn.container;}}else if(parent){if(!this.li){firstTime=true;this.li=document.createElement("li");this.li.dtnode=this;if(data.key&&opts.generateIds){this.li.id=opts.idPrefix+data.key;}
+this.span=document.createElement("span");this.span.className=cn.title;this.li.appendChild(this.span);if(!parent.ul){parent.ul=document.createElement("ul");parent.ul.style.display="none";parent.li.appendChild(parent.ul);}
+parent.ul.appendChild(this.li);}
+this.span.innerHTML=this._getInnerHtml();var cnList=[];cnList.push(cn.node);if(data.isFolder){cnList.push(cn.folder);}
+if(this.bExpanded){cnList.push(cn.expanded);}
+if(this.hasChildren()!==false){cnList.push(cn.hasChildren);}
+if(data.isLazy&&this.childList===null){cnList.push(cn.lazy);}
+if(isLastSib){cnList.push(cn.lastsib);}
+if(this.bSelected){cnList.push(cn.selected);}
+if(this.hasSubSel){cnList.push(cn.partsel);}
+if(tree.activeNode===this){cnList.push(cn.active);}
+if(data.addClass){cnList.push(data.addClass);}
+cnList.push(cn.combinedExpanderPrefix
++(this.bExpanded?"e":"c")
++(data.isLazy&&this.childList===null?"d":"")
++(isLastSib?"l":""));cnList.push(cn.combinedIconPrefix
++(this.bExpanded?"e":"c")
++(data.isFolder?"f":""));this.span.className=cnList.join(" ");this.li.className=isLastSib?cn.lastsib:"";if(firstTime&&opts.onCreate){opts.onCreate.call(tree,this,this.span);}
+if(opts.onRender){opts.onRender.call(tree,this,this.span);}}
+if((this.bExpanded||includeInvisible===true)&&this.childList){for(var i=0,l=this.childList.length;iy?1:-1;};cl.sort(cmp);if(deep){for(var i=0,l=cl.length;i0){this.childList[0].focus();}else{this.focus();}}
+break;case DTNodeStatus_Loading:this._isLoading=true;$(this.span).addClass(this.tree.options.classNames.nodeLoading);if(!this.parent){this._setStatusNode({title:this.tree.options.strings.loading+info,tooltip:tooltip,addClass:this.tree.options.classNames.nodeWait});}
+break;case DTNodeStatus_Error:this._isLoading=false;this._setStatusNode({title:this.tree.options.strings.loadError+info,tooltip:tooltip,addClass:this.tree.options.classNames.nodeError});break;default:throw"Bad LazyNodeStatus: '"+lts+"'.";}},_parentList:function(includeRoot,includeSelf){var l=[];var dtn=includeSelf?this:this.parent;while(dtn){if(includeRoot||dtn.parent){l.unshift(dtn);}
+dtn=dtn.parent;}
+return l;},getLevel:function(){var level=0;var dtn=this.parent;while(dtn){level++;dtn=dtn.parent;}
+return level;},_getTypeForOuterNodeEvent:function(event){var cns=this.tree.options.classNames;var target=event.target;if(target.className.indexOf(cns.node)<0){return null;}
+var eventX=event.pageX-target.offsetLeft;var eventY=event.pageY-target.offsetTop;for(var i=0,l=target.childNodes.length;i=x&&eventX<=(x+nx)&&eventY>=y&&eventY<=(y+ny)){if(cn.className==cns.title){return"title";}else if(cn.className==cns.expander){return"expander";}else if(cn.className==cns.checkbox){return"checkbox";}else if(cn.className==cns.nodeIcon){return"icon";}}}
+return"prefix";},getEventTargetType:function(event){var tcn=event&&event.target?event.target.className:"",cns=this.tree.options.classNames;if(tcn===cns.title){return"title";}else if(tcn===cns.expander){return"expander";}else if(tcn===cns.checkbox){return"checkbox";}else if(tcn===cns.nodeIcon){return"icon";}else if(tcn===cns.empty||tcn===cns.vline||tcn===cns.connector){return"prefix";}else if(tcn.indexOf(cns.node)>=0){return this._getTypeForOuterNodeEvent(event);}
+return null;},isVisible:function(){var parents=this._parentList(true,false);for(var i=0,l=parents.length;ia").focus();}catch(e){}},isFocused:function(){return(this.tree.tnFocused===this);},_activate:function(flag,fireEvents){this.tree.logDebug("dtnode._activate(%o, fireEvents=%o) - %o",flag,fireEvents,this);var opts=this.tree.options;if(this.data.isStatusNode){return;}
+if(fireEvents&&opts.onQueryActivate&&opts.onQueryActivate.call(this.tree,flag,this)===false){return;}
+if(flag){if(this.tree.activeNode){if(this.tree.activeNode===this){return;}
+this.tree.activeNode.deactivate();}
+if(opts.activeVisible){this.makeVisible();}
+this.tree.activeNode=this;if(opts.persist){$.cookie(opts.cookieId+"-active",this.data.key,opts.cookie);}
+this.tree.persistence.activeKey=this.data.key;$(this.span).addClass(opts.classNames.active);if(fireEvents&&opts.onActivate){opts.onActivate.call(this.tree,this);}}else{if(this.tree.activeNode===this){if(opts.onQueryActivate&&opts.onQueryActivate.call(this.tree,false,this)===false){return;}
+$(this.span).removeClass(opts.classNames.active);if(opts.persist){$.cookie(opts.cookieId+"-active","",opts.cookie);}
+this.tree.persistence.activeKey=null;this.tree.activeNode=null;if(fireEvents&&opts.onDeactivate){opts.onDeactivate.call(this.tree,this);}}}},activate:function(){this._activate(true,true);},activateSilently:function(){this._activate(true,false);},deactivate:function(){this._activate(false,true);},isActive:function(){return(this.tree.activeNode===this);},_userActivate:function(){var activate=true;var expand=false;if(this.data.isFolder){switch(this.tree.options.clickFolderMode){case 2:activate=false;expand=true;break;case 3:activate=expand=true;break;}}
+if(this.parent===null){expand=false;}
+if(expand){this.toggleExpand();this.focus();}
+if(activate){this.activate();}},_setSubSel:function(hasSubSel){if(hasSubSel){this.hasSubSel=true;$(this.span).addClass(this.tree.options.classNames.partsel);}else{this.hasSubSel=false;$(this.span).removeClass(this.tree.options.classNames.partsel);}},_updatePartSelectionState:function(){var sel;if(!this.hasChildren()){sel=(this.bSelected&&!this.data.unselectable&&!this.data.isStatusNode);this._setSubSel(false);return sel;}
+var i,l,cl=this.childList,allSelected=true,allDeselected=true;for(i=0,l=cl.length;i=0;i--){sib=parents[i].getNextSibling();if(sib){break;}}}
+if(sib){sib.focus();}
+break;default:handled=false;}
+if(handled){event.preventDefault();}},_onKeypress:function(event){},_onFocus:function(event){var opts=this.tree.options;if(event.type=="blur"||event.type=="focusout"){if(opts.onBlur){opts.onBlur.call(this.tree,this);}
+if(this.tree.tnFocused){$(this.tree.tnFocused.span).removeClass(opts.classNames.focused);}
+this.tree.tnFocused=null;if(opts.persist){$.cookie(opts.cookieId+"-focus","",opts.cookie);}}else if(event.type=="focus"||event.type=="focusin"){if(this.tree.tnFocused&&this.tree.tnFocused!==this){this.tree.logDebug("dtnode.onFocus: out of sync: curFocus: %o",this.tree.tnFocused);$(this.tree.tnFocused.span).removeClass(opts.classNames.focused);}
+this.tree.tnFocused=this;if(opts.onFocus){opts.onFocus.call(this.tree,this);}
+$(this.tree.tnFocused.span).addClass(opts.classNames.focused);if(opts.persist){$.cookie(opts.cookieId+"-focus",this.data.key,opts.cookie);}}},visit:function(fn,includeSelf){var res=true;if(includeSelf===true){res=fn(this);if(res===false||res=="skip"){return res;}}
+if(this.childList){for(var i=0,l=this.childList.length;i reloading %s...",this,keyPath,child);var self=this;child.reloadChildren(function(node,isOk){if(isOk){tree.logDebug("%s._loadKeyPath(%s) -> reloaded %s.",node,keyPath,node);callback.call(tree,child,"loaded");node._loadKeyPath(segList.join(tree.options.keyPathSeparator),callback);}else{tree.logWarning("%s._loadKeyPath(%s) -> reloadChildren() failed.",self,keyPath);callback.call(tree,child,"error");}});}else{callback.call(tree,child,"loaded");child._loadKeyPath(segList.join(tree.options.keyPathSeparator),callback);}
+return;}}
+tree.logWarning("Node not found: "+seg);return;},resetLazy:function(){if(this.parent===null){throw"Use tree.reload() instead";}else if(!this.data.isLazy){throw"node.resetLazy() requires lazy nodes.";}
+this.expand(false);this.removeChildren();},_addChildNode:function(dtnode,beforeNode){var tree=this.tree,opts=tree.options,pers=tree.persistence;dtnode.parent=this;if(this.childList===null){this.childList=[];}else if(!beforeNode){if(this.childList.length>0){$(this.childList[this.childList.length-1].span).removeClass(opts.classNames.lastsib);}}
+if(beforeNode){var iBefore=$.inArray(beforeNode,this.childList);if(iBefore<0){throw" must be a child of ";}
+this.childList.splice(iBefore,0,dtnode);}else{this.childList.push(dtnode);}
+var isInitializing=tree.isInitializing();if(opts.persist&&pers.cookiesFound&&isInitializing){if(pers.activeKey===dtnode.data.key){tree.activeNode=dtnode;}
+if(pers.focusedKey===dtnode.data.key){tree.focusNode=dtnode;}
+dtnode.bExpanded=($.inArray(dtnode.data.key,pers.expandedKeyList)>=0);dtnode.bSelected=($.inArray(dtnode.data.key,pers.selectedKeyList)>=0);}else{if(dtnode.data.activate){tree.activeNode=dtnode;if(opts.persist){pers.activeKey=dtnode.data.key;}}
+if(dtnode.data.focus){tree.focusNode=dtnode;if(opts.persist){pers.focusedKey=dtnode.data.key;}}
+dtnode.bExpanded=(dtnode.data.expand===true);if(dtnode.bExpanded&&opts.persist){pers.addExpand(dtnode.data.key);}
+dtnode.bSelected=(dtnode.data.select===true);if(dtnode.bSelected&&opts.persist){pers.addSelect(dtnode.data.key);}}
+if(opts.minExpandLevel>=dtnode.getLevel()){this.bExpanded=true;}
+if(dtnode.bSelected&&opts.selectMode==3){var p=this;while(p){if(!p.hasSubSel){p._setSubSel(true);}
+p=p.parent;}}
+if(tree.bEnableUpdate){this.render();}
+return dtnode;},addChild:function(obj,beforeNode){if(typeof(obj)=="string"){throw"Invalid data type for "+obj;}else if(!obj||obj.length===0){return;}else if(obj instanceof DynaTreeNode){return this._addChildNode(obj,beforeNode);}
+if(!obj.length){obj=[obj];}
+var prevFlag=this.tree.enableUpdate(false);var tnFirst=null;for(var i=0,l=obj.length;i=0){this.expandedKeyList.splice(idx,1);$.cookie(this.cookieId+"-expand",this.expandedKeyList.join(","),this.cookieOpts);}},addSelect:function(key){if($.inArray(key,this.selectedKeyList)<0){this.selectedKeyList.push(key);$.cookie(this.cookieId+"-select",this.selectedKeyList.join(","),this.cookieOpts);}},clearSelect:function(key){var idx=$.inArray(key,this.selectedKeyList);if(idx>=0){this.selectedKeyList.splice(idx,1);$.cookie(this.cookieId+"-select",this.selectedKeyList.join(","),this.cookieOpts);}},isReloading:function(){return this.cookiesFound===true;},toDict:function(){return{cookiesFound:this.cookiesFound,activeKey:this.activeKey,focusedKey:this.activeKey,expandedKeyList:this.expandedKeyList,selectedKeyList:this.selectedKeyList};},lastentry:undefined};var DynaTree=Class.create();DynaTree.version="$Version: 1.2.1_rc3$";DynaTree.prototype={initialize:function($widget){this.phase="init";this.$widget=$widget;this.options=$widget.options;this.$tree=$widget.element;this.timer=null;this.divTree=this.$tree.get(0);_initDragAndDrop(this);},_load:function(callback){var $widget=this.$widget;var opts=this.options,self=this;this.bEnableUpdate=true;this._nodeCount=1;this.activeNode=null;this.focusNode=null;if(opts.rootVisible!==undefined){this.logWarning("Option 'rootVisible' is no longer supported.");}
+if(opts.minExpandLevel<1){this.logWarning("Option 'minExpandLevel' must be >= 1.");opts.minExpandLevel=1;}
+if(opts.classNames!==$.ui.dynatree.prototype.options.classNames){opts.classNames=$.extend({},$.ui.dynatree.prototype.options.classNames,opts.classNames);}
+if(opts.ajaxDefaults!==$.ui.dynatree.prototype.options.ajaxDefaults){opts.ajaxDefaults=$.extend({},$.ui.dynatree.prototype.options.ajaxDefaults,opts.ajaxDefaults);}
+if(opts.dnd!==$.ui.dynatree.prototype.options.dnd){opts.dnd=$.extend({},$.ui.dynatree.prototype.options.dnd,opts.dnd);}
+if(!opts.imagePath){$("script").each(function(){var _rexDtLibName=/.*dynatree[^\/]*\.js$/i;if(this.src.search(_rexDtLibName)>=0){if(this.src.indexOf("/")>=0){opts.imagePath=this.src.slice(0,this.src.lastIndexOf("/"))+"/skin/";}else{opts.imagePath="skin/";}
+self.logDebug("Guessing imagePath from '%s': '%s'",this.src,opts.imagePath);return false;}});}
+this.persistence=new DynaTreeStatus(opts.cookieId,opts.cookie);if(opts.persist){if(!$.cookie){_log("warn","Please include jquery.cookie.js to use persistence.");}
+this.persistence.read();}
+this.logDebug("DynaTree.persistence: %o",this.persistence.toDict());this.cache={tagEmpty:" ",tagVline:" ",tagExpander:" ",tagConnector:" ",tagNodeIcon:" ",tagCheckbox:" ",lastentry:undefined};if(opts.children||(opts.initAjax&&opts.initAjax.url)||opts.initId){$(this.divTree).empty();}
+var $ulInitialize=this.$tree.find(">ul:first").hide();this.tnRoot=new DynaTreeNode(null,this,{});this.tnRoot.bExpanded=true;this.tnRoot.render();this.divTree.appendChild(this.tnRoot.ul);var root=this.tnRoot;var isReloading=(opts.persist&&this.persistence.isReloading());var isLazy=false;var prevFlag=this.enableUpdate(false);this.logDebug("Dynatree._load(): read tree structure...");if(opts.children){root.addChild(opts.children);}else if(opts.initAjax&&opts.initAjax.url){isLazy=true;root.data.isLazy=true;this._reloadAjax(callback);}else if(opts.initId){this._createFromTag(root,$("#"+opts.initId));}else{this._createFromTag(root,$ulInitialize);$ulInitialize.remove();}
+this._checkConsistency();if(!isLazy&&opts.selectMode==3){root._updatePartSelectionState();}
+this.logDebug("Dynatree._load(): render nodes...");this.enableUpdate(prevFlag);this.logDebug("Dynatree._load(): bind events...");this.$widget.bind();this.logDebug("Dynatree._load(): postInit...");this.phase="postInit";if(opts.persist){this.persistence.write();}
+if(this.focusNode&&this.focusNode.isVisible()){this.logDebug("Focus on init: %o",this.focusNode);this.focusNode.focus();}
+if(!isLazy){if(opts.onPostInit){opts.onPostInit.call(this,isReloading,false);}
+if(callback){callback.call(this,"ok");}}
+this.phase="idle";},_reloadAjax:function(callback){var opts=this.options;if(!opts.initAjax||!opts.initAjax.url){throw"tree.reload() requires 'initAjax' mode.";}
+var pers=this.persistence;var ajaxOpts=$.extend({},opts.initAjax);if(ajaxOpts.addActiveKey){ajaxOpts.data.activeKey=pers.activeKey;}
+if(ajaxOpts.addFocusedKey){ajaxOpts.data.focusedKey=pers.focusedKey;}
+if(ajaxOpts.addExpandedKeyList){ajaxOpts.data.expandedKeyList=pers.expandedKeyList.join(",");}
+if(ajaxOpts.addSelectedKeyList){ajaxOpts.data.selectedKeyList=pers.selectedKeyList.join(",");}
+if(ajaxOpts.success){this.logWarning("initAjax: success callback is ignored; use onPostInit instead.");}
+if(ajaxOpts.error){this.logWarning("initAjax: error callback is ignored; use onPostInit instead.");}
+var isReloading=pers.isReloading();ajaxOpts.success=function(dtnode,data,textStatus){if(opts.selectMode==3){dtnode.tree.tnRoot._updatePartSelectionState();}
+if(opts.onPostInit){opts.onPostInit.call(dtnode.tree,isReloading,false);}
+if(callback){callback.call(dtnode.tree,"ok");}};ajaxOpts.error=function(dtnode,XMLHttpRequest,textStatus,errorThrown){if(opts.onPostInit){opts.onPostInit.call(dtnode.tree,isReloading,true,XMLHttpRequest,textStatus,errorThrown);}
+if(callback){callback.call(dtnode.tree,"error",XMLHttpRequest,textStatus,errorThrown);}};this.logDebug("Dynatree._init(): send Ajax request...");this.tnRoot.appendAjax(ajaxOpts);},toString:function(){return"Dynatree '"+this.$tree.attr("id")+"'";},toDict:function(){return this.tnRoot.toDict(true);},serializeArray:function(stopOnParents){var nodeList=this.getSelectedNodes(stopOnParents),name=this.$tree.attr("name")||this.$tree.attr("id"),arr=[];for(var i=0,l=nodeList.length;i=2){Array.prototype.unshift.apply(arguments,["debug"]);_log.apply(this,arguments);}},logInfo:function(msg){if(this.options.debugLevel>=1){Array.prototype.unshift.apply(arguments,["info"]);_log.apply(this,arguments);}},logWarning:function(msg){Array.prototype.unshift.apply(arguments,["warn"]);_log.apply(this,arguments);},isInitializing:function(){return(this.phase=="init"||this.phase=="postInit");},isReloading:function(){return(this.phase=="init"||this.phase=="postInit")&&this.options.persist&&this.persistence.cookiesFound;},isUserEvent:function(){return(this.phase=="userEvent");},redraw:function(){this.tnRoot.render(false,false);},renderInvisibleNodes:function(){this.tnRoot.render(false,true);},reload:function(callback){this._load(callback);},getRoot:function(){return this.tnRoot;},enable:function(){this.$widget.enable();},disable:function(){this.$widget.disable();},getNodeByKey:function(key){var el=document.getElementById(this.options.idPrefix+key);if(el){return el.dtnode?el.dtnode:null;}
+var match=null;this.visit(function(node){if(node.data.key==key){match=node;return false;}},true);return match;},getActiveNode:function(){return this.activeNode;},reactivate:function(setFocus){var node=this.activeNode;if(node){this.activeNode=null;node.activate();if(setFocus){node.focus();}}},getSelectedNodes:function(stopOnParents){var nodeList=[];this.tnRoot.visit(function(node){if(node.bSelected){nodeList.push(node);if(stopOnParents===true){return"skip";}}});return nodeList;},activateKey:function(key){var dtnode=(key===null)?null:this.getNodeByKey(key);if(!dtnode){if(this.activeNode){this.activeNode.deactivate();}
+this.activeNode=null;return null;}
+dtnode.focus();dtnode.activate();return dtnode;},loadKeyPath:function(keyPath,callback){var segList=keyPath.split(this.options.keyPathSeparator);if(segList[0]===""){segList.shift();}
+if(segList[0]==this.tnRoot.data.key){this.logDebug("Removed leading root key.");segList.shift();}
+keyPath=segList.join(this.options.keyPathSeparator);return this.tnRoot._loadKeyPath(keyPath,callback);},selectKey:function(key,select){var dtnode=this.getNodeByKey(key);if(!dtnode){return null;}
+dtnode.select(select);return dtnode;},enableUpdate:function(bEnable){if(this.bEnableUpdate==bEnable){return bEnable;}
+this.bEnableUpdate=bEnable;if(bEnable){this.redraw();}
+return!bEnable;},count:function(){return this.tnRoot.countChildren();},visit:function(fn,includeRoot){return this.tnRoot.visit(fn,includeRoot);},_createFromTag:function(parentTreeNode,$ulParent){var self=this;$ulParent.find(">li").each(function(){var $li=$(this),$liSpan=$li.find(">span:first"),$liA=$li.find(">a:first"),title,href=null,target=null,tooltip;if($liSpan.length){title=$liSpan.html();}else if($liA.length){title=$liA.html();href=$liA.attr("href");target=$liA.attr("target");tooltip=$liA.attr("title");}else{title=$li.html();var iPos=title.search(/=0){title=$.trim(title.substring(0,iPos));}else{title=$.trim(title);}}
+var data={title:title,tooltip:tooltip,isFolder:$li.hasClass("folder"),isLazy:$li.hasClass("lazy"),expand:$li.hasClass("expanded"),select:$li.hasClass("selected"),activate:$li.hasClass("active"),focus:$li.hasClass("focused"),noLink:$li.hasClass("noLink")};if(href){data.href=href;data.target=target;}
+if($li.attr("title")){data.tooltip=$li.attr("title");}
+if($li.attr("id")){data.key=$li.attr("id");}
+if($li.attr("data")){var dataAttr=$.trim($li.attr("data"));if(dataAttr){if(dataAttr.charAt(0)!="{"){dataAttr="{"+dataAttr+"}";}
+try{$.extend(data,eval("("+dataAttr+")"));}catch(e){throw("Error parsing node data: "+e+"\ndata:\n'"+dataAttr+"'");}}}
+var childNode=parentTreeNode.addChild(data);var $ul=$li.find(">ul:first");if($ul.length){self._createFromTag(childNode,$ul);}});},_checkConsistency:function(){},_setDndStatus:function(sourceNode,targetNode,helper,hitMode,accept){var $source=sourceNode?$(sourceNode.span):null,$target=$(targetNode.span);if(!this.$dndMarker){this.$dndMarker=$("
").hide().prependTo($(this.divTree).parent());}
+if(hitMode==="after"||hitMode==="before"||hitMode==="over"){var pos=$target.offset();switch(hitMode){case"before":this.$dndMarker.removeClass("dynatree-drop-after dynatree-drop-over");this.$dndMarker.addClass("dynatree-drop-before");pos.top-=8;break;case"after":this.$dndMarker.removeClass("dynatree-drop-before dynatree-drop-over");this.$dndMarker.addClass("dynatree-drop-after");pos.top+=8;break;default:this.$dndMarker.removeClass("dynatree-drop-after dynatree-drop-before");this.$dndMarker.addClass("dynatree-drop-over");$target.addClass("dynatree-drop-target");pos.left+=8;}
+this.$dndMarker.css({"left":pos.left,"top":pos.top,"z-index":1000}).show();}else{$target.removeClass("dynatree-drop-target");this.$dndMarker.hide();}
+if(hitMode==="after"){$target.addClass("dynatree-drop-after");}else{$target.removeClass("dynatree-drop-after");}
+if(hitMode==="before"){$target.addClass("dynatree-drop-before");}else{$target.removeClass("dynatree-drop-before");}
+if(accept===true){if($source){$source.addClass("dynatree-drop-accept");}
+$target.addClass("dynatree-drop-accept");helper.addClass("dynatree-drop-accept");}else{if($source){$source.removeClass("dynatree-drop-accept");}
+$target.removeClass("dynatree-drop-accept");helper.removeClass("dynatree-drop-accept");}
+if(accept===false){if($source){$source.addClass("dynatree-drop-reject");}
+$target.addClass("dynatree-drop-reject");helper.addClass("dynatree-drop-reject");}else{if($source){$source.removeClass("dynatree-drop-reject");}
+$target.removeClass("dynatree-drop-reject");helper.removeClass("dynatree-drop-reject");}},_onDragEvent:function(eventName,node,otherNode,event,ui,draggable){var opts=this.options,dnd=this.options.dnd,res=null,nodeTag=$(node.span),hitMode;switch(eventName){case"helper":var $helper=$("
").append($(event.target).closest('a').clone());$("ul.dynatree-container",node.tree.divTree).append($helper);$helper.data("dtSourceNode",node);res=$helper;break;case"start":if(node.isStatusNode()){res=false;}else if(dnd.onDragStart){res=dnd.onDragStart(node);}
+if(res===false){this.logDebug("tree.onDragStart() cancelled");ui.helper.trigger("mouseup");ui.helper.hide();}else{nodeTag.addClass("dynatree-drag-source");}
+break;case"enter":res=dnd.onDragEnter?dnd.onDragEnter(node,otherNode):null;res={over:(res!==false)&&((res===true)||(res==="over")||$.inArray("over",res)>=0),before:(res!==false)&&((res===true)||(res==="before")||$.inArray("before",res)>=0),after:(res!==false)&&((res===true)||(res==="after")||$.inArray("after",res)>=0)};ui.helper.data("enterResponse",res);break;case"over":var enterResponse=ui.helper.data("enterResponse");hitMode=null;if(enterResponse===false){break;}else if(typeof enterResponse==="string"){hitMode=enterResponse;}else{var nodeOfs=nodeTag.offset();var relPos={x:event.pageX-nodeOfs.left,y:event.pageY-nodeOfs.top};var relPos2={x:relPos.x/nodeTag.width(),y:relPos.y/nodeTag.height()};if(enterResponse.after&&relPos2.y>0.75){hitMode="after";}else if(!enterResponse.over&&enterResponse.after&&relPos2.y>0.5){hitMode="after";}else if(enterResponse.before&&relPos2.y<=0.25){hitMode="before";}else if(!enterResponse.over&&enterResponse.before&&relPos2.y<=0.5){hitMode="before";}else if(enterResponse.over){hitMode="over";}
+if(dnd.preventVoidMoves){if(node===otherNode){hitMode=null;}else if(hitMode==="before"&&otherNode&&node===otherNode.getNextSibling()){hitMode=null;}else if(hitMode==="after"&&otherNode&&node===otherNode.getPrevSibling()){hitMode=null;}else if(hitMode==="over"&&otherNode&&otherNode.parent===node&&otherNode.isLastSibling()){hitMode=null;}}
+ui.helper.data("hitMode",hitMode);}
+if(hitMode==="over"&&dnd.autoExpandMS&&node.hasChildren()!==false&&!node.bExpanded){node.scheduleAction("expand",dnd.autoExpandMS);}
+if(hitMode&&dnd.onDragOver){res=dnd.onDragOver(node,otherNode,hitMode);}
+this._setDndStatus(otherNode,node,ui.helper,hitMode,res!==false);break;case"drop":hitMode=ui.helper.data("hitMode");if(hitMode&&dnd.onDrop){dnd.onDrop(node,otherNode,hitMode,ui,draggable);}
+break;case"leave":node.scheduleAction("cancel");ui.helper.data("enterResponse",null);ui.helper.data("hitMode",null);this._setDndStatus(otherNode,node,ui.helper,"out",undefined);if(dnd.onDragLeave){dnd.onDragLeave(node,otherNode);}
+break;case"stop":nodeTag.removeClass("dynatree-drag-source");if(dnd.onDragStop){dnd.onDragStop(node);}
+break;default:throw"Unsupported drag event: "+eventName;}
+return res;},cancelDrag:function(){var dd=$.ui.ddmanager.current;if(dd){dd.cancel();}},lastentry:undefined};$.widget("ui.dynatree",{_init:function(){if(parseFloat($.ui.version)<1.8){if(this.options.debugLevel>=0){_log("warn","ui.dynatree._init() was called; you should upgrade to jquery.ui.core.js v1.8 or higher.");}
+return this._create();}
+if(this.options.debugLevel>=2){_log("debug","ui.dynatree._init() was called; no current default functionality.");}},_create:function(){var opts=this.options;if(opts.debugLevel>=1){logMsg("Dynatree._create(): version='%s', debugLevel=%o.",$.ui.dynatree.version,this.options.debugLevel);}
+this.options.event+=".dynatree";var divTree=this.element.get(0);this.tree=new DynaTree(this);this.tree._load();this.tree.logDebug("Dynatree._init(): done.");},bind:function(){this.unbind();var eventNames="click.dynatree dblclick.dynatree";if(this.options.keyboard){eventNames+=" keypress.dynatree keydown.dynatree";}
+this.element.bind(eventNames,function(event){var dtnode=$.ui.dynatree.getNode(event.target);if(!dtnode){return true;}
+var tree=dtnode.tree;var o=tree.options;tree.logDebug("event(%s): dtnode: %s",event.type,dtnode);var prevPhase=tree.phase;tree.phase="userEvent";try{switch(event.type){case"click":return(o.onClick&&o.onClick.call(tree,dtnode,event)===false)?false:dtnode._onClick(event);case"dblclick":return(o.onDblClick&&o.onDblClick.call(tree,dtnode,event)===false)?false:dtnode._onDblClick(event);case"keydown":return(o.onKeydown&&o.onKeydown.call(tree,dtnode,event)===false)?false:dtnode._onKeydown(event);case"keypress":return(o.onKeypress&&o.onKeypress.call(tree,dtnode,event)===false)?false:dtnode._onKeypress(event);}}catch(e){var _=null;tree.logWarning("bind(%o): dtnode: %o, error: %o",event,dtnode,e);}finally{tree.phase=prevPhase;}});function __focusHandler(event){event=$.event.fix(event||window.event);var dtnode=$.ui.dynatree.getNode(event.target);return dtnode?dtnode._onFocus(event):false;}
+var div=this.tree.divTree;if(div.addEventListener){div.addEventListener("focus",__focusHandler,true);div.addEventListener("blur",__focusHandler,true);}else{div.onfocusin=div.onfocusout=__focusHandler;}},unbind:function(){this.element.unbind(".dynatree");},enable:function(){this.bind();$.Widget.prototype.enable.apply(this,arguments);},disable:function(){this.unbind();$.Widget.prototype.disable.apply(this,arguments);},getTree:function(){return this.tree;},getRoot:function(){return this.tree.getRoot();},getActiveNode:function(){return this.tree.getActiveNode();},getSelectedNodes:function(){return this.tree.getSelectedNodes();},lastentry:undefined});if(parseFloat($.ui.version)<1.8){$.ui.dynatree.getter="getTree getRoot getActiveNode getSelectedNodes";}
+$.ui.dynatree.version="$Version: 1.2.1_rc3$";$.ui.dynatree.getNode=function(el){if(el instanceof DynaTreeNode){return el;}
+if(el.selector!==undefined){el=el[0];}
+while(el){if(el.dtnode){return el.dtnode;}
+el=el.parentNode;}
+return null;}
+$.ui.dynatree.getPersistData=DynaTreeStatus._getTreePersistData;$.ui.dynatree.prototype.options={title:"Dynatree",minExpandLevel:1,imagePath:null,children:null,initId:null,initAjax:null,autoFocus:true,keyboard:true,persist:false,autoCollapse:false,clickFolderMode:3,activeVisible:true,checkbox:false,selectMode:2,fx:null,noLink:false,onClick:null,onDblClick:null,onKeydown:null,onKeypress:null,onFocus:null,onBlur:null,onQueryActivate:null,onQuerySelect:null,onQueryExpand:null,onPostInit:null,onActivate:null,onDeactivate:null,onSelect:null,onExpand:null,onLazyRead:null,onCustomRender:null,onCreate:null,onRender:null,dnd:{onDragStart:null,onDragStop:null,autoExpandMS:1000,preventVoidMoves:true,onDragEnter:null,onDragOver:null,onDrop:null,onDragLeave:null},ajaxDefaults:{cache:false,timeout:0,dataType:"json"},strings:{loading:"Loading…",loadError:"Load error!"},generateIds:false,idPrefix:"dynatree-id-",keyPathSeparator:"/",cookieId:"dynatree",cookie:{expires:null},classNames:{container:"dynatree-container",node:"dynatree-node",folder:"dynatree-folder",empty:"dynatree-empty",vline:"dynatree-vline",expander:"dynatree-expander",connector:"dynatree-connector",checkbox:"dynatree-checkbox",nodeIcon:"dynatree-icon",title:"dynatree-title",noConnector:"dynatree-no-connector",nodeError:"dynatree-statusnode-error",nodeWait:"dynatree-statusnode-wait",hidden:"dynatree-hidden",combinedExpanderPrefix:"dynatree-exp-",combinedIconPrefix:"dynatree-ico-",nodeLoading:"dynatree-loading",hasChildren:"dynatree-has-children",active:"dynatree-active",selected:"dynatree-selected",expanded:"dynatree-expanded",lazy:"dynatree-lazy",focused:"dynatree-focused",partsel:"dynatree-partsel",lastsib:"dynatree-lastsib"},debugLevel:1,lastentry:undefined};if(parseFloat($.ui.version)<1.8){$.ui.dynatree.defaults=$.ui.dynatree.prototype.options;}
+$.ui.dynatree.nodedatadefaults={title:null,key:null,isFolder:false,isLazy:false,tooltip:null,href:null,icon:null,addClass:null,noLink:false,activate:false,focus:false,expand:false,select:false,hideCheckbox:false,unselectable:false,children:null,lastentry:undefined};function _initDragAndDrop(tree){var dnd=tree.options.dnd||null;if(dnd&&(dnd.onDragStart||dnd.onDrop)){_registerDnd();}
+if(dnd&&dnd.onDragStart){tree.$tree.draggable({addClasses:false,appendTo:"body",containment:false,delay:0,distance:4,revert:false,scroll:true,scrollSpeed:7,scrollSensitivity:10,connectToDynatree:true,helper:function(event){var sourceNode=$.ui.dynatree.getNode(event.target);if(!sourceNode){return"
";}
+return sourceNode.tree._onDragEvent("helper",sourceNode,null,event,null,null);},start:function(event,ui){},_last:null});}
+if(dnd&&dnd.onDrop){tree.$tree.droppable({addClasses:false,tolerance:"intersect",greedy:false,_last:null});}}
+var didRegisterDnd=false;var _registerDnd=function(){if(didRegisterDnd){return;}
+$.ui.plugin.add("draggable","connectToDynatree",{start:function(event,ui){var draggable=$(this).data("draggable"),sourceNode=ui.helper.data("dtSourceNode")||null;if(sourceNode){draggable.offset.click.top=-2;draggable.offset.click.left=+16;return sourceNode.tree._onDragEvent("start",sourceNode,null,event,ui,draggable);}},drag:function(event,ui){var draggable=$(this).data("draggable"),sourceNode=ui.helper.data("dtSourceNode")||null,prevTargetNode=ui.helper.data("dtTargetNode")||null,targetNode=$.ui.dynatree.getNode(event.target);if(event.target&&!targetNode){var isHelper=$(event.target).closest("div.dynatree-drag-helper,#dynatree-drop-marker").length>0;if(isHelper){return;}}
+ui.helper.data("dtTargetNode",targetNode);if(prevTargetNode&&prevTargetNode!==targetNode){prevTargetNode.tree._onDragEvent("leave",prevTargetNode,sourceNode,event,ui,draggable);}
+if(targetNode){if(!targetNode.tree.options.dnd.onDrop){noop();}else if(targetNode===prevTargetNode){targetNode.tree._onDragEvent("over",targetNode,sourceNode,event,ui,draggable);}else{targetNode.tree._onDragEvent("enter",targetNode,sourceNode,event,ui,draggable);}}},stop:function(event,ui){var draggable=$(this).data("draggable"),sourceNode=ui.helper.data("dtSourceNode")||null,targetNode=ui.helper.data("dtTargetNode")||null,mouseDownEvent=draggable._mouseDownEvent,eventType=event.type,dropped=(eventType=="mouseup"&&event.which==1);if(!dropped){logMsg("Drag was cancelled");}
+if(targetNode){if(dropped){targetNode.tree._onDragEvent("drop",targetNode,sourceNode,event,ui,draggable);}
+targetNode.tree._onDragEvent("leave",targetNode,sourceNode,event,ui,draggable);}
+if(sourceNode){sourceNode.tree._onDragEvent("stop",sourceNode,null,event,ui,draggable);}}});didRegisterDnd=true;};})(jQuery);
\ No newline at end of file
diff --git a/Activity_3_python/LangagePython_fonctions/js/jquery.min.js b/Activity_3_python/LangagePython_fonctions/js/jquery.min.js
new file mode 100644
index 0000000..ee02337
--- /dev/null
+++ b/Activity_3_python/LangagePython_fonctions/js/jquery.min.js
@@ -0,0 +1,4 @@
+/*! jQuery v1.7.1 jquery.com | jquery.org/license */
+(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"":"")+""),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;g=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;ca ",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o=""+"",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="
",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};
+f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&i.push({elem:this,matches:d.slice(e)});for(j=0;j0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c ",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML=" ",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="
";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/",""],legend:[1,""," "],thead:[1,""],tr:[2,""],td:[3,""],col:[2,""],area:[1,""," "],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function()
+{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>$2>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>$2>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Activity_3_python/exercises_3/exercise_3_6.py b/Activity_3_python/exercises_3/exercise_3_6.py
new file mode 100644
index 0000000..ea37a93
--- /dev/null
+++ b/Activity_3_python/exercises_3/exercise_3_6.py
@@ -0,0 +1,78 @@
+# Code de César
+# En cryptographie, le code de César est une technique de chiffrement élémentaire qui consiste à décaler une lettre de 3 rangs vers la droite :
+# Ecrire le script de ce codage.
+
+# Ces scripts prennent en charge les majuscules et les minuscules.
+
+from tkinter import *
+
+def code(msg:str) -> str:
+ """Fonction qui code un message selon le code de César"""
+ res = ""
+ alph = 'abcdefghijklmnopqrstuvwxyz'
+
+ for i in msg:
+ if i == ' ' or i =="'":
+ res += i
+
+ else:
+ p = alph.find(i.lower())
+ t = p + 3
+ if t > 25:
+ t = t - 26
+ if i.isupper():
+ res += alph[t].upper()
+ else:
+ res += alph[t]
+
+ return res
+
+def decode(msg:str) -> str:
+ """Fonction qui décode un message selon le code de César"""
+ res = ""
+ alph = 'abcdefghijklmnopqrstuvwxyz'
+
+ for i in msg:
+ if i == ' ' or i =="'":
+ res += i
+
+ else:
+ p = alph.find(i.lower())
+ t = p - 3
+ if t < 0:
+ t = t + 26
+ if i.isupper():
+ res += alph[t].upper()
+ else:
+ res += alph[t]
+
+ return res
+
+def update_labels(*args):
+ code_label.config(text=f"Votre message coder : {code(msg.get())}")
+ decode_label.config(text=f"Votre message decoder : {decode(msg.get())}")
+
+fen = Tk()
+fen.title("Code de César")
+fen.geometry("400x400")
+
+msg = StringVar()
+msg.set("")
+
+
+Label(fen, text="Votre message :").pack()
+Entry(fen, textvariable=msg).pack()
+
+code_label = Label(fen, text="")
+code_label.pack()
+btn = Button(fen, text="Copier le message coder", command=lambda:fen.clipboard_append(code(msg.get()))).pack()
+
+decode_label = Label(fen, text="")
+decode_label.pack()
+btn = Button(fen, text="Copier le message decoder", command=lambda:fen.clipboard_append(decode(msg.get()))).pack()
+
+
+update_labels()
+msg.trace_add("write", lambda *args: update_labels())
+
+fen.mainloop()
\ No newline at end of file
diff --git a/Activity_3_python/exercises_3/exercise_3_6_1.py b/Activity_3_python/exercises_3/exercise_3_6_1.py
deleted file mode 100644
index e485bdc..0000000
--- a/Activity_3_python/exercises_3/exercise_3_6_1.py
+++ /dev/null
@@ -1,16 +0,0 @@
-msg = input("Message à coder ? ")
-res = ""
-alph = 'abcdefghijklmnopqrstuvwxyz'
-
-for i in msg:
- if i == ' ' or i =="'":
- res += i
-
- else:
- p = alph.find(i)
- t = p + 3
- if t > 25:
- t = t - 26
- res += alph[t]
-
-print(res)
\ No newline at end of file
diff --git a/Activity_3_python/exercises_3/exercise_3_6_2.py b/Activity_3_python/exercises_3/exercise_3_6_2.py
deleted file mode 100644
index c5f84a2..0000000
--- a/Activity_3_python/exercises_3/exercise_3_6_2.py
+++ /dev/null
@@ -1,16 +0,0 @@
-msg = input("Message à coder ? ")
-res = ""
-alph = 'abcdefghijklmnopqrstuvwxyz'
-
-for i in msg:
- if i == ' ' or i =="'":
- res += i
-
- else:
- p = alph.find(i)
- t = p - 3
- if t < 0:
- t = 26 + t
- res += alph[t]
-
-print(res)
\ No newline at end of file
diff --git a/Activity_3_python/exercises_4/exercise_4_4.py b/Activity_3_python/exercises_4/exercise_4_4.py
new file mode 100644
index 0000000..f32dad7
--- /dev/null
+++ b/Activity_3_python/exercises_4/exercise_4_4.py
@@ -0,0 +1,19 @@
+chaine = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
+
+from random import randint, choice
+
+def password(n:int) -> str:
+ r = ''
+ for i in range(n):
+ r += chaine[randint(0, len(chaine))]
+ return r
+
+print(password(10))
+
+def password2(n:int) -> str:
+ r = ''
+ for i in range(n):
+ r += choice(chaine)
+ return r
+
+print(password2(10))
\ No newline at end of file
diff --git a/Activity_3_python/exercises_4/exercise_4_5.py b/Activity_3_python/exercises_4/exercise_4_5.py
new file mode 100644
index 0000000..cdb74b8
--- /dev/null
+++ b/Activity_3_python/exercises_4/exercise_4_5.py
@@ -0,0 +1,8 @@
+from random import choice
+
+ListeCarte = ['2s','2h','2d','2c','3s','3h','3d','3c','4s','4h','4d','4c','5s','5h','5d','5c', '6s','6h','6d','6c','7s','7h','7d','7c','8s','8h','8d','8c','9s','9h','9d','9c', 'Ts','Th','Td','Tc','Js','Jh','Jd','Jc','Qs','Qh','Qd','Qc','Ks','Kh','Kd','Kc','As','Ah','Ad','Ac']
+
+def tiragecarte():
+ return choice(ListeCarte)
+
+print(tiragecarte())
\ No newline at end of file
diff --git a/Activity_3_python/exercises_4/exercise_4_6.py b/Activity_3_python/exercises_4/exercise_4_6.py
new file mode 100644
index 0000000..dfc722d
--- /dev/null
+++ b/Activity_3_python/exercises_4/exercise_4_6.py
@@ -0,0 +1,12 @@
+from random import choice
+
+ListeCarte = ['2s','2h','2d','2c','3s','3h','3d','3c','4s','4h','4d','4c','5s','5h','5d','5c', '6s','6h','6d','6c','7s','7h','7d','7c','8s','8h','8d','8c','9s','9h','9d','9c', 'Ts','Th','Td','Tc','Js','Jh','Jd','Jc','Qs','Qh','Qd','Qc','Ks','Kh','Kd','Kc','As','Ah','Ad','Ac']
+
+def tiragecarte(n:int):
+ u = []
+ for i in range(n):
+ u.append(choice(ListeCarte))
+ return u
+
+
+print(tiragecarte(4))
\ No newline at end of file
diff --git a/Activity_3_python/exercises_4/exercise_4_7.py b/Activity_3_python/exercises_4/exercise_4_7.py
new file mode 100644
index 0000000..e830c7c
--- /dev/null
+++ b/Activity_3_python/exercises_4/exercise_4_7.py
@@ -0,0 +1,9 @@
+from random import sample
+
+def euromillions():
+ return sample(liste,5) + sample(etoiles,2)
+
+
+liste = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50]
+etoiles = [1,2,3,4,5,6,7,8,9,10,11]
+print(euromillions())
\ No newline at end of file
diff --git a/Activity_3_python/exercises_4/exercise_4_8.py b/Activity_3_python/exercises_4/exercise_4_8.py
new file mode 100644
index 0000000..550e5da
--- /dev/null
+++ b/Activity_3_python/exercises_4/exercise_4_8.py
@@ -0,0 +1,34 @@
+def f(x):
+ return 27*x**3 -27*x**2-18*x +8
+
+def dicotomi(x:int, t:list) -> int:
+ r = -1
+ g = 0
+ d = len(t) - 1
+ while r == -1 and g <= d:
+ m = (g + d)//2
+ if t[m] == x:
+ r = m
+ elif x > t[m]:
+ g = m + 1
+ else:
+ d = m - 1
+ return r
+
+
+print("Recherche d'un zéro dans l'intervalle [a,b]")
+a = int(input("a? "))
+b = int(input("b? ")) + 1
+p = eval(input("Précision ? "))
+
+u = []
+for i in range(a, b, p):
+ u.append(i)
+print(u)
+print(dicotomi(f(0),u))
+
+
+m = (a - b)/2
+
+
+