// (C) 2003 - 2010 Serge Lamarche
// http://sergewebservice.ca/
// All codes copyrights Serge Lamarche, any reproduction and 
// use strictly forbidden without written consent.
// Tous les codes droits d'auteurs Serge Lamarche, toute reproduction et 
// utilisation est strictement interdite sans autorisation écrite.
// Contact: info@sergewebservice.ca, sergewebservice@yahoo.ca or/ou sergelamarche@gmail.com 
// ...for help with your website. Reliable, inexpensive website service. Thanks.
// ...pour de l'aide avec votre site. Service internet abordable et professionnel. Merci. 

versancien="http://sergewebservice.ca/ancien/"; 
if (-1 != document.title.search(/Serge/)) { javascriptanimeT=new Array(); 
JSanimT0=new Image(); JSanimT0.src="AnimT/Note01.gif"; 
JSanimT1=new Image(); JSanimT1.src="Animations/attends-b.gif"; 
zerosT="000"; iiT=0; iiiT=0; bloqueT=1; }; 
function prechargeT(seql) { chgcadT=seql-6; if (iiiT>0) return; 
if (iiT==0) {document.images['imageT'].src=JSanimT1.src; }; 
if (iiT>seql) {if (!javascriptanimeT[seql].complete||!javascriptanimeT[chgcadT].complete)  {window.setTimeout("prechargeT("+seql+")",2000); return;}; 
iiT=1; bloqueT=0; document.images['imageT'].src=javascriptanimeT[0].src; filmT(seql,1000); return}; 
javascriptanimeT[iiT]=new Image(); if (iiT==10) {zerosT="00"}; if (iiT==100) {zerosT="0"}; 
javascriptanimeT[iiT].src='AnimT/Terre'+zerosT+iiT+'.gif'; iiT++; prechargeT(seql);}
function filmT(seqlT,cadence) { if (iiT!=1) return; if (bloqueT>0) return; 
if (document.images['imageT'].src==JSanimT1.src) return; 
window.setTimeout("filmTs("+seqlT+","+cadence+")",cadence); bloqueT++; }
function filmTs(seqlT,cadence) { if (iiiT==chgcadT) {cadence=1200}; 
if (iiiT>seqlT) {iiiT=1; bloqueT=0; return}; 
document.images['imageT'].src=javascriptanimeT[iiiT].src; iiiT++; 
window.setTimeout("filmTs("+seqlT+","+cadence+")",cadence); }


///////////////////////////////////////
//for (var j=3;j<navdivs.length;j++) { 
//bgmarge(document.getElementById(navdivs[j]).nextSibling,1) ; }; 

ncss=0; if (document.getElementById) bgblanc=false; //pr bg ds gecko avec ncss=1
function chgcss(Xcss) { if (!document.styleSheets) return; ncss=Xcss; 
//ncss++; if (ncss==document.styleSheets.length) ncss=0; //pr activer en séquence 
for (var i=0;i<document.styleSheets.length;i++) { 
document.styleSheets[i].disabled = (i==ncss ? false : true); };
metbiscuitsws(ncss); //souvient du dernier choix de css (ncss); 
return; // Pas de pmarge dans cette page sergewebservice. 
if (!document.getElementById||!document.getElementsByTagName) return; 
lesPmarge=document.getElementById('tdnavmarge').getElementsByTagName('p'); 
for (var j=0;j<lesPmarge.length;j++) { bgmarge(lesPmarge.item(j),1) ; }; 
if (bgblanc&&(ncss==1)) if (document.styleSheets[1].insertRule) { document.styleSheets[1].insertRule('body.index2 { background: url(images-gen/bg-index2b-blanc.jpg) bottom left; }',document.styleSheets[1].cssRules.length); }; 
if (document.getElementById("divcp")) document.getElementById("divcp").style.background=(ncss==2) ? "#000000" : "#ffffff"; }; 

function testcss() { //tests pour mac
//getelbyid=getelbytagname=docCss=docCsslength=docCssable=lesPmarge=cssinsertrule="néant"; 
//docCsslength=docCssable=lesPmarge=cssinsertrule="neant"; 
getelbyid="pasdutout"; getelbytagname="pasdutout"; docCss="pasdutout"; docCsslength="pasdutout"; docCssable="pasdutout"; lesPmarge="pasdutout"; cssinsertrule=cssaddrule="pasdutout"; 
navappversion=navigator.appVersion; navUA=navigator.userAgent; 
systemeOp=systOp(); navigateur=fureteur(); 
if (navigateur=="safari") { document.write("Results: OS: "+systemeOp+" nav: "+navigateur+" rejet: "+rejet+" rejet2: "+rejet2+" css: "+typeof(document.styleSheets)); return; };
if (document.getElementById) { getelbyid=typeof(document.getElementById); 
getelbytagname=typeof(document.getElementsByTagName); 
lesPmarge=typeof(document.getElementById('tdnavmarge').getElementsByTagName('p')); 
docCss=typeof(document.styleSheets); 
if (document.styleSheets) { docCsslength=document.styleSheets.length; 
docCssable=typeof(document.styleSheets[1].disabled); 
cssinsertrule=typeof(document.styleSheets[1].insertRule); 
cssaddrule=typeof(document.styleSheets[1].addRule); }; }; 
//document.open(); alert
document.write("<h1>Results</h1><br>app version: "+navappversion+"<br>agent utilisateur: "+navUA+"<br>systeme oper: "+systemeOp+"<br>navigateur: "+navigateur+"<br>rejet: "+rejet+"<br>rejet2: "+rejet2+"<br>getelementbyid: "+getelbyid+"<br>getelementbytagname: "+getelbytagname+"<br>typelesPmarge: "+lesPmarge+"<br>docCSS: "+docCss+"<br>docCSSlength: "+docCsslength+"<br>docCSSable: "+docCssable+"<br>typeCSSinsertrule: "+cssinsertrule+"<br>typeCSSaddrule: "+cssaddrule);
document.close(); };


bgmargin=new Array(); //brmargin=new Array(); bgmargin[1]=new Array(); 
bgmargin[0]=["#99cc99 url(images-gen/bg-btn-navmarge-vert-0b.gif) no-repeat top left","url(images-gen/bg-ombre-rougp.gif) top","#000000"]; 
bgmargin[1]=["#88bb88 url(images-gen/bg-btn-navmarge-vert-0a.gif) no-repeat top left","url(images-gen/bg-ombre-rougm.gif) top","url(images-gen/invis.gif)"]; 
brmargin=[" outset #bbeebb"," inset #cc6666"," solid #222233"]; 
function ajBGmargin() { ajbtnchgcss(document.styleSheets.length);
if (document.styleSheets.length!=5) return; // assure les 5 css pour ajouter ci dessous. 
bgmargin[0]=bgmargin[0].concat(["#ff7777","#9999cc"]); 
bgmargin[1]=bgmargin[1].concat(["#ee6666","#8888bb"]); 
brmargin=brmargin.concat([" outset #eebbbb"," outset #bbbbee"]); };
function bgmarge(elemt,audessus) { return; //style inactivé;// elemt.style.background=bgmargin[audessus][ncss]; 
elemt.style.borderRight=(0+2*audessus)+"px"+((audessus!=0)?brmargin[ncss]:""); 
elemt.style.width=(192-2*audessus)+"px"; }; 

function ajbtnchgcss(nbcss) { if (!document.getElementsByTagName||!document.createElement||!document.appendChild) return; 
var tempNomCss; var elemprchgcssEn=document.getElementById("chgcssen"); 
var elemprchgcssFr=document.getElementById("chgcssfr"); 
for (var j=0, i=0;j<document.getElementsByTagName("link").length;j++) if (document.getElementsByTagName("link")[j].getAttribute("rel").search(/stylesheet/)!=-1) { 
tempNomCss=document.getElementsByTagName("link")[j].getAttribute("title"); 
var leboutonEn= document.createElement("a"); var leboutonFr= document.createElement("a"); 
leboutonEn.href = leboutonFr.href = "javascript: chgcss("+i+")"; 
if (leboutonEn.setAttribute) { 
leboutonEn.setAttribute("class","navdans"); leboutonFr.setAttribute("class","navdans"); }; 
var espace = document.createTextNode(' '); 
var letexte = document.createTextNode(' ['+tempNomCss.substr(3, -4+tempNomCss.search(/fr=/))+']'); 
leboutonEn.appendChild(letexte); elemprchgcssEn.appendChild(leboutonEn); 
elemprchgcssEn.appendChild(espace); espace = document.createTextNode(' '); //doit faire 2 espaces.
letexte = document.createTextNode(' ['+tempNomCss.substr(3+tempNomCss.search(/fr=/))+']'); 
leboutonFr.appendChild(letexte); elemprchgcssFr.appendChild(leboutonFr); 
elemprchgcssFr.appendChild(espace); i++; }; 
elemprchgcssEn.style.display = elemprchgcssFr.style.display = "block"; 
if (nbcss != i) elemprchgcssEn.style.display = elemprchgcssFr.style.display = "none"; return; alert("erreur de nombre de style: "+nbcss+" != "+i); }; // alerte inactivée! Remplacée par la cache des p pr chg de style ne fonctionnant pas. 

navdivs=new Array(); 
navdivs=["ch01"]; tofermernavs=false; // navdivs=["ch01","ch02","ch03"]; rejet=false; init ds index.html, rejet vérif si furtr prend page. 
function fermernavs(sauf) { if (tofermernavs) clearTimeout(fermernavsto); 
tofermernavs=false; for (var i=0;i<navdivs.length;i++) { 
if (navdivs[i]!=sauf) montrer(navdivs[i],'ferme'); }; }; 

vaindex=true; //par défaut. aussi défini dans index2.html. aj ici cause bug ie cotr.
function fermerscenes(sauf) { if (rejet) return; fermernavs(); 
if (!vaindex) { alert("Told you! :-) These text swapping links don't work on this browser. \nCome again with a more advanced browser or go to my former entrance page to read them. \nYou can still navigate though. \n\nJe l'ai dit! :-) Ces liens échangeant les textes ne fonctionnent pas dans ce fureteur. \nRevenez avec un fureteur plus avancé ou allez à ma première page portique pour les lire. \nVous pouvez quand même fureter, cependant.\n\n- Serge Lamarche."); return; };
for (var i=0;i<scenedivids.length;i++) { 
if (scenedivids[i]!=sauf) montrer(scenedivids[i],'ferme'); }; }; 

function montrer(elemt,metoupas) { if (rejet) return; 
if (tofermernavs) clearTimeout(fermernavsto); 
if (metoupas=="hidden") { 
fermernavsto = setTimeout('fermernavs()',500); tofermernavs = true; return; }; 
if (metoupas=="ferme") metoupas = "hidden"; else fermernavs(elemt); 
//metoupas = (metoupas=="none") ? "hidden" : "visible"; //visibility au lieu de display!
if (typeof(document.getElementById(elemt).style.visibility)=="string") document.getElementById(elemt).style.visibility = metoupas;
else if (typeof(document.all(elemt).style.visibility)=="string") document.all(elemt).style.visibility = metoupas; }; 

function montrer0(elemt,metoupas) { if (rejet) return; 
if (tofermernavs) clearTimeout(fermernavsto); 
if (metoupas=="none") { 
fermernavsto = setTimeout('fermernavs()',500); tofermernavs = true; return; }; 
if (metoupas=="ferme") metoupas = "none"; else fermernavs(elemt); 
if (typeof(document.getElementById(elemt).style.display)=="string") document.getElementById(elemt).style.display = metoupas;
else if (typeof(document.all(elemt).style.display)=="string")  document.all(elemt).style.display = metoupas; }; 


function ajscenedivs() { if (!vaindex) return; //implique va vers index normal
if (document.styleSheets) ajBGmargin(); litbiscuitsws(); //se souvient après bgmarg OK. 
scenedivs=[sceneWP,sceneJG,sceneSI,sceneAS,sceneAT,sceneCG,sceneCI]; 
scenedivids=["sceneWP","sceneJG","sceneSI", "sceneAS","sceneAT","sceneCG","sceneCI","sceneINIT"]; 
elemscene = document.getElementById('scene'); 
for (var i=0;i<scenedivs.length;i++) { var divscene = document.createElement('div');
divscene.className="divscene"; divscene.id = scenedivids[i]; divscene.innerHTML=""; 
divscene.innerHTML=scenedivs[i]; elemscene.appendChild(divscene); }; 
return; //pas de corrections pour le moment. 
var systemeOp=systOp(); var nav=fureteur(); 
if (nav=="gecko") elemscene.style.paddingTop="20px"; //corrige position scene;
if (!document.styleSheets) return; // corrige? un bug sur IE mac (largeur div 100%); 
if ((systemeOp!="mac")||(nav!="msie")) return; //corrige largeur div.navs sur ie mac?
for (var i=0;i<document.styleSheets.length;i++) { 
if (document.styleSheets[i].addRule) { document.styleSheets[i].addRule('div.navmarge', 'width: 200px'); }; }; }


sceneWP='<h3 class="en">Why Serge Web Service?</h3><h3 class="fr">Pourquoi Serge Web Service?</h3><ul class="en"><li><span class="titre">Pay less, get more: </span>Being home based, the overhead cost is minimal. With my advanced skills always improving, I keep current and rapidly learn new technologies.</li><li><span class="titre">Originality, flexibility: </span>Your website can be totally original. Knowing how to code from A to Z, I can create completely from scratch. It also means your website could take any shape, even change shape. As is suitable for you. Moreover, I can customize the content management system (CMS) or function(s) you really need.<br>- No need for templates nor stiff, often problematic, code-generating softwares. <br>- Definitely more original and flexible than any prefabricated CMS, and less time-consuming for you. <br>- You already elected to use templates or CMS? You had your reasons, I will be able to help. </li><li><span class="titre">Interactivity: </span>Being master programmer coupled with the capabilities of the new browsers, your website can come alive with users inputs. </li><li><span class="titre">Reliable, personal service: </span>Work ethics to treat clients right, offering the best solutions for their needs. Explanations you understand, helping you learn how to update if needed. Always able to fix your problem or find a solution. </li><li><span class="titre">Hosting at great rates: </span>Starting at $1/month. We make sense, hosting rates have to be just as good as the rest. </li></ul><ul class="fr"><li><span class="titre">Payez moins, ayez plus: </span>Etant au foyer, les frais généraux sont minimes. Avec mon expertise s\'améliorant toujours, je suis les développements et apprend rapidement les nouvelles techniques.</li><li><span class="titre">Originalité, flexibilité: </span>Votre site internet peut être complètement original. Sachant coder de A à Z, je peux tout créer à partir de rien. Ceci veut aussi dire que votre site internet pourrait prendre n\'importe quelle forme, ou même changer de forme. Selon ce qui vous convient. De plus, je peux fabriquer les fonctions ou le système de gérance de contenu (alias CMS) dont vous avez vraiment besoin. <br>- Pas besoin de gabarits ni de logiciels générateurs de codes trop rigides, souvent problématiques. <br>- Définitivement plus original et flexible qu\'un CMS préfabriqué et moins gobeur de temps. <br>- Vous avez déjà choisi d\'utiliser un gabarit ou un CMS? Vous aviez vos raisons, je vais pouvoir aider. </li><li><span class="titre">Interactivité: </span>Etant maître programmeur et avec les capacités des nouveaux fureteurs, votre site peut prendre vie en réponse aux usagers. </li><li><span class="titre">Service fiable, personnel: </span>Une éthique de travail servant bien les clients, offrant les meilleures solution à leurs besoins. Explications que vous comprendrez, vous aidant à apprendre les mises à jour si besoin est. Toujours capable de résoudre votre problème ou de trouver une solution. </li><li><span class="titre">Hôte bon marché: </span>A partir de $1/mois. Soyons logique, le tarif d\'hôte doit être tout aussi bon que le reste. </li></ul>'; 

sceneJG='<h3 class="fr">Des labyrinthes, en quelque sorte</h3><p class="fr">Ces jeux furent mes premiers programmes javascripts élaborés. Ils étaient aussi mes premiers efforts de programmation selon le Document Objet Modèle (DOM). J\'ai en fait aussi programmé ces jeux en javascript traditionnel puisque les fureteurs respectant le DOM étaient rares à l\'époque. Safari, le fureteur d\'Apple pour ordinateurs Mac était tout juste né. Je n\'ai donc pas testé mes jeux sur celui là. Si vous avez Safari, dites-moi s\'ils fonctionnent bien pour vous. Evidemment, ces jeux ne se comparent pas du tout aux jeux vidéos présentement sur le marché. Ils restent toujours un exercice amusant, par contre. </p><p class="fr">Jouez avec deux variantes interactives gentilles du jeu de labyrinthe:</p><p class="fr"><img src="images-gen/jeus2.gif" align="left" width="25" height="25" hspace="3" alt="souris un">  <img src="images-gen/jeus3.gif" align="left" width="25" height="25" hspace="3" alt="souris deux"> Des souris blanches se sont &eacute;chapp&eacute;es et errent sur le plancher carrel&eacute; du labo. <a href="http://sergewebservice.ca/ancien/labyrinthe.html" class="txt">R&eacute;cup&eacute;rez les souris</a> s&eacute;curitairement en guidant une ou deux de celles-ci vers une cage afin de continuer les exp&eacute;riences.</p><p class="fr"><img src="images-gen/jeu-ec1.gif" align="left" width="25" height="25" hspace="3" alt="chipmunk one">  <img src="images-gen/jeu-ec2.gif" align="left" width="25" height="25" hspace="3" alt="chipmunk two"> Des tamias ray&eacute;s, semblables &agrave; des &eacute;cureuils, sont tomb&eacute;s &agrave; l\'eau et se sont agripp&eacute;s &agrave; une roche. <a href="http://sergewebservice.ca/ancien/labyrinthe-ec.html" class="txt">Sauvez les &eacute;cureuils</a> en lan&ccedil;ant d\'autres roches pour former une voie vers la berge.</p> <h3 class="en">Labyrinths, kind of</h3><p class="en">These games were my first extensive javascript programming. It was also my first effort of programming according to the Document Object Model (DOM). I did in fact also program the games in standard javascript since DOM compliant browsers were still rare at the time. Safari, Apple\'s browser for Mac computers was barely born. So I did not test these games on it. If you have Safari, please tell me how it works for you. Of course, these games can\'t be compared to any video game currently on the market. They\'re still an amusing exercise, though. </p><p class="en">Play with two kind interactive variations of the labyrinth game: </p><p class="en"><img src="images-gen/jeus2.gif" align="left" width="25" height="25" hspace="3" alt="mouse one">  <img src="images-gen/jeus3.gif" align="left" width="25" height="25" hspace="3" alt="mouse two">In <a href="http://sergewebservice.ca/ancien/labyrinth.html" class="txt">Recuperate the mice</a>, white mice escaped and roam freely on the tiled floor of the lab. You have to safely guide one or both of these mice toward a trap so that the experiments continue. </p><p class="en"><img src="images-gen/jeu-ec1.gif" align="left" width="25" height="25" hspace="3" alt="chipmunk one">  <img src="images-gen/jeu-ec2.gif" align="left" width="25" height="25" hspace="3" alt="chipmunk two"> In <a href="http://sergewebservice.ca/ancien/labyrinth-ec.html" class="txt">Save the squirrels</a>, one or both of these two chipmunks were thrown in the water and fortunately grasped a rock. Try to liberate one or both by throwing other rocks to give them a path to shore.</p>'; 

scenePA='<h3 class="fr">Papillon</h3><img class="encastrer" src="images-gen/GPsept0331coliade-butine_f2o.jpg" align="right" width="165" height="100" hspace="10" vspace="10" alt="Coliade butine"><p class="fr">Si vous utilisez un navigateur r&eacute;cent, un coliade commun, un papillon que l\'on retrouve entre autre dans les rocheuses, devrait voler au-dessus de la <a href="'+versancien+'index.html" class="txt">premi&egrave;re page portique</a>. <br>La larve se nourrit de bleuets. L\'&eacute;t&eacute; &eacute;tait sec en 2003 et on en voyait partout en ao&ucirc;t et septembre. Ils se posent bri&egrave;vement sur les plantes basses et butinent leurs fleurs et les sucs. On peut les voir virevolter verticalement par paires, jusqu\'&agrave; 5 m&egrave;tres. Leurs couleurs varient quelque peu et les m&acirc;les ont le bord des ailes plus fonc&eacute; (souvent noir). Contrairement &agrave; mon animation, ils gardent leurs ailes ferm&eacute;es, une fois pos&eacute;s.<br>Autres informations au site internet du <a href="http://www.cbif.gc.ca/spp_pages/butterflies/geography_f.php" class="txt">syst&egrave;me canadien d\'information sur la biodiversit&eacute;</a> dans "Cordill&egrave;re".</p><p>Photo: &copy; G. Pezderic.</p>'; 

sceneBU='<h3 class="en">Butterfly</h3><img class="encastrer" src="images-gen/GPseqcoliade2-003_f2o.jpg" align="right" width="165" height="100" hspace="10" vspace="10" alt="Colidne flies to next flower"><p class="en">If you are using a recent browser, a Colidne Sulfur, a butterfly found in the Rockies among other places, should be flying above the <a href="'+versancien+'index.html" class="txt">former entrance page</a>. <br>The larva feeds on blueberries. Summer was dry in 2003 and we did see them everywhere in August and September. They alight briefly on low plants to feed on their flowers\' nectars and on their juices. Pairs are seen twirling around vertically, up to 5 meters. There are variations of colors among them and the males wings have darker edges (often black). Contrary to my animation, they keep their wings closed, once alight.<br>Other infos at the <a href="http://www.cbif.gc.ca/spp_pages/butterflies/geography_e.php" class="txt">Canadian Biodiversity Information Facility</a> website in "Cordillera".</p><p>Photo: &copy; G. Pezderic.</p>'; 

sceneSI='<h3 class="fr">Services abordables pour sites internets</h3><p class="fr"><img src="images-gen/chermonde.gif" align="left" width="80" height="80" vspace="10" hspace="10" alt="Connectez avec le monde">Services internets pour individus, organisations, petits ou grands commer&ccedil;ants ayant besoin de solutions simples et abordables. Bien s&ucirc;r, les clients qui demandent des solutions complexes et dispendieuses sont tout aussi bienvenus. Prenant soin de produire sites et interactivit&eacute;s les plus universels. Peut ajouter aux sites existants. Service personnel. (x)HTML, CSS, Javascripts (AJAX), images, animations, PERL et PHP.</p><p class="fr">Javascript est le langage de programmation pour sites internets. Il permet de produire des pages interactives efficaces. Les changements d\'images, de textes et le coliade sont des exemples d\'encodages javascripts. Les donn&eacute;es, qu\'elles soient des nombres, du texte ou des images peuvent &ecirc;tre trait&eacute;es joliment avec du javascript. Votre site internet pourrait probablement s\'am&eacute;liorer avec l\'aide d\'automatismes javascripts. Vous pouvez avoir une petite id&eacute;e des possibilit&eacute;s, sur cette page, en faisant un d&eacute;clic sur un des styles des exemples javascripts du menu &agrave; gauche.</p><p class="fr">Les navigateurs r&eacute;cents permettent de nouveaux effets. Il est possible d\'&ecirc;tre cr&eacute;atif et original. Des effets pratiques, utiles ou simplement d&eacute;coratifs se trouvent partout dans les autres sections de mon site internet. L\'organigramme pr&eacute;sente une liste presque exhaustive des pages. Visitez ma <a href="http://sergewebservice.ca/ancien/index.html" class="txt">premi&egrave;re page portique</a>, ma <a href="http://sergewebservice.ca/serge/" class="txt">seconde page personnelle</a>, et la <a href="http://sergewebservice.ca/seven/seven_fr.html" class="txt">section vol libre</a> en particulier, pour appr&eacute;cier d\'autres exemples.</p><p class="fr">Pendant que le javascript est puissant du c&ocirc;t&eacute; client (votre ordinateur), PERL et PHP, d\'autre part, sont des langages de programmations qui agissent au niveau du serveur. Par exemple, ils permettent aux fureteurs de t&eacute;l&eacute;charger des fichiers, enregistrer des sondages, modifier des bases de donn&eacute;es.</p><p class="fr">Je fais aussi de la traduction anglaise. <br>Je cr&eacute;e ou r&eacute;nove des sites internets en produisant du code HTML et CSS satisfaisant les standards internationaux, avec ou sans effets javascripts compliqu&eacute;s.</p><p class="fr">Contactez sergelamarche@gmail.com ou sergewebservice@yahoo.ca pour plus de d&eacute;tails.</p> <h3 class="en">Affordable website services</h3><p class="en"><img src="images-gen/chermonde.gif" align="left" width="80" height="80" vspace="10" hspace="10" alt="Connect to the world">Website services for individuals, organizations, small or big business in need of simple affordable solutions. Of course, clients requesting complex and expensive solutions are just as welcome. Care is given to produce the most widely supported websites codes and interactivity. Can add to existing sites. Personal, reliable service. (x)HTML, CSS, Javascripts (AJAX), images, animations, PERL and PHP.</p><p class="en">Javascript is the programming language for websites. It allows production of efficient interactive pages. Images and texts changes, and the colidne are examples of javascripts encodings. Data, be it numbers, texts or images can be handled nicely with javascript. Your website could probably be improved with javascript automatisms. You can have an small idea of the possibilities, right on this page, by clicking on one of the styles in the javascript examples of the menu at the left.</p><p class="en">Recent browsers allow for new effects. It\'s possible to be creative and original. Practical, useful or simply decorative effects are found all over the other sections of my website. The site map present an almost exhaustive list. Visit my <a href="http://sergewebservice.ca/ancien/index.html" class="txt">former entrance page</a>, my <a href="http://sergewebservice.ca/serge/" class="txt">second personal page</a>, and the section about <a href="http://sergewebservice.ca/seven/seven.html" class="txt">free flight</a> in particular, and enjoy more examples.</p><p class="en">While javascript is powerful on the client side (your computer), PERL and PHP, on the other hand, are programming languages that act at the server. For example, they allow browsers to upload files, record polls or surveys, modify databases.</p><p class="en">I also do french translations. <br>I create or renovate websites by producing HTML and CSS according to international standards, with or without complicated javascript effects.</p><p class="en">Contact sergelamarche@gmail.com or sergewebservice@yahoo.ca for more details.</p>'; 

sceneM3='<h3 class="fr">Monde en trois dimensions</h3><p class="fr"><img class="encastrer" src="images-gen/atmoterrelunesoleil.jpg" align="right" width="200" height="150" vspace="10" hspace="10" alt="Monde Atmo">Si vous avez un ordinateur Window et n\'avez pas peur d\'ajouter un autre logiciel, vous pouvez voir mon petit <a href="http://sergewebservice.ca/3d/mondes/terrelune.aer" class="txt">syst&egrave;me terrestre</a> b&acirc;ti avec le logiciel tridimensionnel Atmosph&egrave;re. Joli petit syst&egrave;me qui montre la Terre et sa lune &agrave; l\'&eacute;chelle i.e. distances et grandeurs. Les rotations sont rendues plus rapides mais quand m&ecirc;me &agrave; l\'&eacute;chelle.</p><p class="fr">Le logiciel <a href="http://gd.tuwien.ac.at/pc/atmosphere/win/2.x/AtmospherePlayer216.exe" class="txt">Atmosphere</a>, abandonné par les soci&eacute;t&eacute;s commerciales Viewpoint et Adobe, est encore disponible à l\'université technologique de Vienne. Je pourrais aussi l\'envoyer par courriel.</p> <h3 class="en">Three-dimensional world</h3><p class="en"><img class="encastrer" src="images-gen/atmoterrelunesoleil.jpg" align="right" width="200" height="150" vspace="10" hspace="10" alt="Atmo World">If you have a Window computer and are not afraid to add another software, you can see my little <a href="http://sergewebservice.ca/3d/mondes/terrelune.aer" class="txt">Earth system</a> built with the three-dimensional software Atmosphere. Nice little system that shows Earth and its moon to scale i.e. distances and sizes. Rotations are rendered faster but still to scale.</p><p class="en">The <a href="http://gd.tuwien.ac.at/pc/atmosphere/win/2.x/AtmospherePlayer216.exe" class="txt">Atmosphere</a> player was abandonned by Viewpoint and Adobe corporations, but is still available from the Vienna University of Technology. I could also email it.</p>'; 

sceneAS='<h3 class="fr">Animation saisonni&egrave;re</h3><p class="fr">Ces animations furent créées à l\'époque où il n\'existait pas d\'application vidéo fonctionnant sur tous les fureteurs. Clairement, une évolution des applications vidéos internets s\'en venait. Pour cette raison, j\'ai créé ma propre application en javascript, un langage solide presqu\'essentiel à l\'internet. Il se trouve que mon système vidéo est très efficace. L\'inconvénient est le manque de son, compensé par sa capacité de changer du texte (ou autres éléments) en jouant. Notez que cette capacité texte n\'est pas montrée dans ce vidéo, quoique je l\'utilise dans mes <a href="http://sergewebservice.ca/seven/seven_videos.html" class="txt">vidéos de vol libre</a>. Le vidéo suivant fut aussi généré à l\'intérieur d\'un monde 3D que j\'ai entièrement créé. Ce logiciel fut retiré du marché lorsque d\'autres algorithmes de calculs d\'ombrages se sont révélés supérieurs, je crois. </p><p class="fr"><img id="imagea" class="encastrer" src="images-gen/saison1.jpg" align="right" width="240" height="180" vspace="10" hspace="10" alt="seasonal 3D image saisonni&egrave;re">L\'animation vidéo est plutôt simple, question de ne pas passer tout mon temps à la faire. Une animation normale image par image avec interactions de caractères demande une quantité de temps incroyable. Notez que cette animation saisonnière est encore hébergée sur un serveur gratuit qui affiche des publicités dans des fenêtres ouvrantes. Activez vos bloqueurs de "pop-up" et/ou fermez ces fenêtres supplémentaires. Il y a aussi des bannières que je cache sur ma page, vous ne devriez pas les voir longtemps. Le vidéo se trouve sous les flèches colorées. Alors voyez la <a href="http://sergewebservice.ca/3d/animation-atmo-af.html" class="txt">version anim&eacute;e</a> du "monde" tridimensionnel comme &agrave; droite. Une courte animation qui devrait fonctionner sur tous les navigateurs.</p><p class="fr">Avertissement: cette animation fait de 1 &agrave; 5 Moctets. Une connexion rapide est recommand&eacute;e.</p> <h3 class="en">Seasonal animation</h3><p class="en">These animations were created at a time when no cross-browser video application existed. Clearly, there was some evolution coming for vidéos on the web. For this reason, I created my own with javascript, a reliable language that is almost essential for the web. It turns out that my video system works very efficiently. One drawback is the lack of sound, compensated by the ability to change text (or any other element) as it plays. Note that this text feature is not shown on this video, although I use it on the <a href="http://sergewebservice.ca/seven/seven_videos.html" class="txt">hang gliding videos</a>. The following video is also generated within a 3D world I entirely created. This 3D application was removed from the market when other shade rendering algorithms proved superior, I believe. </p><p class="en"><img id="imagea" class="encastrer" src="images-gen/saison1.jpg" align="right" width="240" height="180" vspace="10" hspace="10" alt="seasonal 3D image saisonni&egrave;re">The video animation is rather simple, question to not spend all my time doing this. A normal stop-motion animation with interacting characters requires an incredible amount of time.  Note, this seasonal animation is still hosted on a free server that posts ads in pop-up windows. Activate your pop-up blockers and/or close these extra windows. There are also some banners I covered on my page, you shouldn\'t be seeing them for long. The video is just below the multicolored arrows. So, see the <a href="http://sergewebservice.ca/3d/animation-atmo-af.html" class="txt">animated version</a> of the 3D "world" like beside. A short animation that should work on any browser.</p><p class="en">Size warning: this animation file takes 1 to 5 Mbytes. A fast connection is recommended.</p>'; 

sceneAT='<h3 class="en">Earth from space</h3><h3 class="fr">La Terre de l\'espace</h3><a href="javascript:prechargeT(61); filmT(61,1000);" onMouseOver="document.images[\'imageT\'].src=JSanimT0.src;"><img class="encastrer" name="imageT" id="imageT" src="AnimT/Terre0000.gif" align="right" width="132" height="99" alt="Mon chez-moi nordique. (animation)" title="My northern home. \nMon chez-moi nordique."></a><p class="en">In this animation, we gradually get closer until we arrive right above Golden and Nicholson, in the canadian rockies. I added the close-up view with satellite photos courtesy of Geobase.</p><p class="en">This animation is another example of my javascript video program. Just click on the image to start it. The Earth here is not quite real. With the help of a sophisticated 3D software, one that actually renders surface properties by light rays calculations (I used Virtualight), the effect is startling. The view is produced by using a (flat) mercator composite of the real Earth and real clouds, separately available courtesy of the NASA. These maps are then wrapped into a sphere of Earth\'s proportions (flatter a bit at the poles). The clouds are wrapped above the ground at the proper altitude for these views. I further the refinements by adding a layer for the air and gave it appropriate values of diffraction, refraction and transparency. The software is a little marvel for this. The rest is question of placing the camera, the light, and to position and rotate the planet according to real life values. I chose this small size to minimise the traffic of the site but the image can be made larger. Actually, here is an example of <a href="#" onMousedown="javascript: cefonddevient(document.getElementById(\'sceneAT\'),\'url(images-gen/bg-terre30-printemps.jpg) no-repeat center\'); " onMouseout="javascript: cefonddevient(document.getElementById(\'sceneAT\'),\'url(images-gen/invis.gif) bottom\'); ">larger Earth image</a> created this way. </p><p class="fr">Dans cette animation, nous nous approchons graduellement jusqu\'à arriver juste au dessus de Golden et Nicholson, dans les rocheuses canadiennes. J\'ai ajouté la vue rapprochée avec des images satellitaires coutoisie de Géobase.</p><p class="fr">Cette animation est un autre exemple de mon programme vidéo javascript. Faites un déclic sur l\'image pour la démarrer. La Terre ici n\'est pas tout à fait réelle. A l\'aide d\'un logiciel 3D sophistiqué, un qui interprète les propriétés des surfaces en calculant les rayons de lumières (j\'ai utilisé Virtualight), l\'effet est remarquable. La vue est produite en utilisant une image composite mercator (plate) de la vraie Terre et de vrais nuages, disponibles séparément courtoisie de la NASA. Ces cartes sont ensuite mises en sphères proportionelles à la Terre (plus plate aux pôles). Les nuages sont enveloppés au dessus du sol à l\'altitude appropriée, dans ces vues. J\'ajoute au raffinement en ajoutant une couche pour l\'air et lui donne les valeurs appropriées de diffraction, réfraction et transparence. Le logiciel est une petite merveille pour ca. Le reste est question de placer la caméra, la lumière et de placer et faire tourner la planète selon les valeurs réelles. J\'ai choisi ce petit format pour r&eacute;duire le trafic du site mais l\'image pourrait &ecirc;tre plus grande. En fait, voici un exemple d\'une <a href="#" onMousedown="javascript: cefonddevient(document.getElementById(\'sceneAT\'),\'url(images-gen/bg-terre30-printemps.jpg) no-repeat top\'); " onMouseout="javascript: cefonddevient(document.getElementById(\'sceneAT\'),\'url(images-gen/invis.gif) bottom\'); ">image Terre plus grande</a> produite de cette façon. </p><p class="en">Click on the image to load and play animation. Whole Earth mercator image courtesy of NASA. Satellite close-up courtesy of GeoBase&reg;, Canada.</p><p class="fr">Un déclic sur l\'image charge et joue l\'animation. Image mercator de la Terre gracieuset&eacute; de la NASA. Image satellite rapproch&eacute;e gracieuset&eacute; de G&eacute;oBase&reg;, Canada.</p>'; 
//G&eacute;oBase®, Canada GeoBase®, Canada

sceneCG='<h3 class="en">Privacy Policy &amp; Copyrights</h3><h3 class="fr">Politique de confidentialit&eacute; &amp; Droits d\'auteurs</h3><p><span class="en">Privacy policy: All information obtained is kept private, will never be passed to other parties and will never be used for spams, of course. Clients and friends may request their informations to check for accuracy and/or update it. <br>Problem with spams: Many spammers imitate legitimate emails. Be careful. When in doubt, contact me safely via the form: "Contact Form". </span><span class="fr">Politique de confidentialité: Toute information obtenue est gardée secrète, ne sera jamais partagée et ne sera jamais utilisée pour envoyer des spams (pourriels), évidemment. Clients et amis peuvent demander leurs informations pour s\'assurer de leur justesse et/ou les mettre à jour. <br>Problème avec les pourriels: Plusieurs exploiteurs imitent les courriels l&eacute;gitimes. Soyez prudent. En cas de doute, contactez-moi en toute s&eacute;curit&eacute; avec le formulaire: "Contacter". </span></p><br><p><span class="en">Serge Web Service - Affordable internet services. </span><span class="fr">Serge Web Service - Services internets abordables. </span></p><p><span class="bi">Codes sources</span><span class="en">, design by </span><span class="fr">, conception par </span><span class="bi">Serge Lamarche </span><span class="en">at </span><span class="fr">&agrave; </span><span class="bi">sergelamarche@gmail.com, serge_lamarche@yahoo.ca &amp; sergewebservice@yahoo.ca </span></p><p><span class="fr"><a href="http://lois.justice.gc.ca/fra/C-42" class="txt" title="Lien vers la loi des droits d\'auteurs" target="_blank">Droits d\'auteurs </a></span><span class="en"><a href="http://lois.justice.gc.ca/eng/C-42" class="txt" title="Link toward copyrights law" target="_blank">Copyrights </a></span><span class="bi">2000 - 2010 &copy; Serge Lamarche </span></p><p><span class="bi">Golden, </span><span class="en">British Columbia, </span><span class="fr">Colombie-Britannique, </span><span class="bi">Canada. </span></p>'; 

sceneCI='<h3 class="en">Fine Websites</h3><h3 class="fr">Excellents Sites</h3><ul><li class="en"><a href="http://westcanadafilms.com" class="txt" title="Films and photos produced in Golden">West Canada Films </a>: Films and photos produced in Golden.</li><li class="en"><a href="http://suddwickhomes.ca" class="txt" title="Home construction in Golden">Suddwick Homes </a>: Home construction in Golden.</li><li class="en"><a href="http://ankedesign.ca" class="txt" title="Log home design">Anke Design </a>: Log home design.</li><li class="en"><a href="http://trinkwon.com" class="txt" title="Carl Trinkwon aka Carlos Coyote, composer, musician, singer">Carl Trinkwon </a>: aka Carlos Coyote, composer, musician, singer.</li><li class="en"><a href="http://peterbowleevans.ca" class="txt" title="Peter Bowle-Evans, memorial">Peter Bowle-Evans </a>: Memorial.</li><li class="en"><a href="http://topnotch-bbs.ca" class="txt" title="Top Notch &amp; Brent\'s board shop, retail store">Top Notch &amp; Brent\'s board shop </a>: Retail store.</li><li class="fr"><a href="http://westcanadafilms.com" class="txt" title="Films et photos produits à Golden">West Canada Films </a>: Films et photos produits à Golden.</li><li class="fr"><a href="http://suddwickhomes.ca" class="txt" title="Construction domiciliaire à Golden">Suddwick Homes </a>: Construction domiciliaire à Golden.</li><li class="fr"><a href="http://ankedesign.ca" class="txt" title="Conception et plans de domiciles en bois ronds">Anke Design</a>: Conception et plans de domiciles en bois ronds.</li><li class="fr"><a href="http://trinkwon.com" class="txt" title="Carl Trinkwon alias Carlos Coyote, auteur, compositeur et interprète">Carl Trinkwon</a>: alias Carlos Coyote, auteur, compositeur et interprète.</li><li class="fr"><a href="http://peterbowleevans.ca" class="txt" title="Peter Bowle-Evans, commémoratif">Peter Bowle-Evans </a>: Commémoratif.</li><li class="fr"><a href="http://topnotch-bbs.ca" class="txt" title="Notch &amp; boutique de planches de Brent, détaillant">Top Notch &amp; boutique de planches de Brent </a>: Détaillant.</li></ul>'; 

//fonctions de base:

function rien() { return; };

//change le bg comme :hover:
function cefonddevient(cetelement,couleurfond) { var savanna = quelcss() == 1; 
if (savanna && -1!=couleurfond.search(/invis/)) couleurfond = 'url(images-gen/base_bg_sceneb.gif)';
if (cetelement.style) cetelement.style.background = couleurfond; }; 

//fonction montre ou disparait element:
var dispto = false; 
function montre(elementId, quoi) { if (!document.getElementById) return; 
if (!document.getElementById(elementId)) return; 
document.getElementById(elementId).style.display = (quoi) ? "block" : "none"; 
if (dispto) clearTimeout(dispto); dispto = false; }; 

function btnlangues() { montre("navmargejs", true); //navigation avec js en marche.
if (document.styleSheets&&document.getElementById) { 
var chg = document.styleSheets[0]; if (chg.insertRule||chg.addRule) { 
for (var i=0;i<document.styleSheets.length;i++) { 
var chg = document.styleSheets[i]; 
if (chg.insertRule) { chg.insertRule('ul#langue {display: block; }',chg.cssRules.length); } 
if (chg.addRule) { chg.addRule('ul#langue', 'display: block;'); }; }; }; }; }

function unilingue(langue0, langue1) { if (!document.styleSheets) return; 
for (var i=0;i<document.styleSheets.length;i++) { //alert(langue0+" "+langue1);
var chg = document.styleSheets[i]; 
if (chg.insertRule) { 
chg.insertRule('*.'+langue0+', span.'+langue0+', span.langsep {display: none; }',chg.cssRules.length);
chg.insertRule('*.'+langue1+' {display: block; }',chg.cssRules.length); 
chg.insertRule('span.'+langue1+' {display: inline; }',chg.cssRules.length); } 
if (chg.addRule) { 
chg.addRule('*.'+langue0, 'display: none;'); 
chg.addRule('span.'+langue0, 'display: none;'); 
chg.addRule('span.langsep', 'display: none;'); 
chg.addRule('*.'+langue1, 'display: block;'); 
chg.addRule('span.'+langue1, 'display: inline;'); }; }; metbiscuitsws(langue0+","+langue1); }

function afficheDate(maj) { if (!document.createTextNode||!document.appendChild) return; 
var dmaj = new Array(); var now = new Date(); 
var jour = new Array("dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi");
var mois = new Array("janvier","février","mars","avril","mai","juin","juillet", "août","septembre","octobre","novembre","décembre");
var day = new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
var month = new Array("January","February","March","April","May","June","July", "August","September","October","November","December");
dmaj[0]=Number(maj.getDay()); dmaj[1]=Number(maj.getDate()); 
dmaj[2]=Number(maj.getMonth()); dmaj[3]=Number(maj.getYear()); 
if (isNaN(dmaj[0])||isNaN(dmaj[1])||isNaN(dmaj[2])||isNaN(dmaj[3])||(dmaj[3]==1970)||((1000*60*60*24)>(now.getTime() - maj.getTime()))) return; 
if (dmaj[3] < 99) {dmaj[0]=dmaj[0]-1};
var MM = dmaj[3] + ((dmaj[3] < 1999) ? (dmaj[3] < 99 ? 2000 : 1900) : 0) ;
var un = one = ""; if (dmaj[1] == 1) {un = "er"; one = "st"; }; 
var dmajtxten = document.createTextNode("Last update "+day[dmaj[0]]+", "+MM+" "+month[dmaj[2]]+" "+dmaj[1]+one+"."); document.getElementById('dmajen').appendChild(dmajtxten); 
var dmajtxtfr = document.createTextNode("Mis à jour "+jour[dmaj[0]]+", le "+dmaj[1]+un+" "+mois[dmaj[2]]+" "+MM+"."); document.getElementById('dmajfr').appendChild(dmajtxtfr); }; 

function fureteur() { var navteur = navigator.userAgent.toLowerCase(); 
var fureteurs = ["konqueror", "safari", "omniweb", "opera", "webtv", "icab", "msie", "firefox", "gecko", "compatible", "mozilla"]; 
for (var i=0;i<fureteurs.length;i++) { var furteur = new RegExp(fureteurs[i], "i"); 
if (-1!=navteur.search(furteur)) return fureteurs[i]; }; return "inconnu"; }
//Thanks to PPK www.quirksmode.com. His infos helped me quickly create these two functions.
function systOp() { var navteur = navigator.userAgent.toLowerCase(); 
var codesSystOp = ["linux", "x11", "mac", "win"]; 
var systOps = ["linux", "unix", "macintosh", "windows"]; 
for (var i=0;i<codesSystOp.length;i++) { var OSys = new RegExp(codesSystOp[i], "i"); 
if (-1!=navteur.search(OSys)) return systOps[i]; }; return "inconnu"; }

//ajuste grandeur textes selon grandeur écran: *** à mettre à jour!!!!
function ajuste() { ; 
if (!document.styleSheets||!document.getElementById||!document.body.clientWidth) return; 
if (document.body.clientWidth>900) return; 
var pasfirefox = fureteur(); pasfirefox = (pasfirefox!="firefox"); 
for (var i=0;i<document.styleSheets.length;i++) { 
var chg = document.styleSheets[i]; 
if (chg.insertRule) { //&&pasfirefox// plusieurs changements de css fait capoter firefox.
chg.insertRule('p {font-size: 12px; line-height: 16px; }', chg.cssRules.length); 
chg.insertRule('h1 {font-size: 20px; text-align: center;}', chg.cssRules.length); 
chg.insertRule('h3 {font-size: 14px; line-height: 18px; }', chg.cssRules.length); 
chg.insertRule('li span.titre {font-size: 14px; line-height: 18px; font-weight: bold;}', chg.cssRules.length); } 
else if (chg.addRule) { 
chg.addRule('p', 'font-size: 12px; line-height: 16px; '); 
chg.addRule('h1', 'font-size: 20px; '); 
chg.addRule('h3', 'font-size: 14px; line-height: 18px; '); 
chg.addRule('li span.titre', 'font-size: 14px; line-height: 18px; font-weight: bold;'); }; }; }; 


function quelcss() { if (!document.cookie||!document.styleSheets) return 0; 
var csssws = document.cookie.search(/csssws=/); if (csssws!=-1) { 
csssws=document.cookie.substr(7+csssws,1); return csssws; }; }

function litbiscuitsws0() { if (!document.cookie||!document.styleSheets) return; 
var csssws = document.cookie.search(/csssws=/); if (csssws!=-1) { 
csssws=document.cookie.substr(7+csssws,1); chgcss(csssws); }; }
function metbiscuitsws0(lecss) { var echu=new Date(); 
echu.setTime(echu.getTime()+1000*60*60*24*7*52); //réinitialise pour un an
document.cookie="csssws="+lecss+"; expires="+echu; }

var langue = ""; 
function litbiscuitsws() { if (!document.cookie||!document.styleSheets) return; 
var lang = document.cookie.search(/lang=/); if (lang!=-1) { 
lang=document.cookie.substr(5+lang,5); lang = lang.split(","); unilingue(lang[0],lang[1]); }; 
var csssws = document.cookie.search(/csssws=/); if (csssws!=-1) { 
csssws=document.cookie.substr(7+csssws,1); chgcss(csssws); }; }
function metbiscuitsws(cssoulang) { //if (!document.cookie||!document.styleSheets) return; 
var echu=new Date(); var lang = ""; var temp = cssoulang=="fr,en" || cssoulang=="en,fr" ; 
echu.setTime(echu.getTime()+1000*60*60*24*7*52); //réinitialise pour un an
if (temp) { var lecss = document.cookie.search(/csssws=/); 
lecss = (lecss!=-1) ? document.cookie.substr(7+lecss,1) : 0; 
lang = "lang="+cssoulang; } else { lecss = cssoulang; var lang = document.cookie.search(/lang=/); lang = (lang!=-1) ? "lang="+document.cookie.substr(5+lang,5) : ""; }; 
langue = lang; // utile pour envoyer avec url.
document.cookie="csssws="+lecss+lang+"; expires="+echu; 
if (document.contactsws) document.contactsws.lang.value = lang; 
if (document.contactsws) document.contactsws.csssws.value = lecss; }

// (C) 2003 - 2010 Serge Lamarche
// http://sergewebservice.ca/
// All codes copyrights Serge Lamarche, any reproduction and 
// use strictly forbidden without written consent.
// Tous les codes droits d'auteurs Serge Lamarche, toute reproduction et 
// utilisation est strictement interdite sans autorisation écrite.
// Contact: info@sergewebservice.ca, sergewebservice@yahoo.ca or/ou sergelamarche@gmail.com 
// ...for help with your website. Reliable, inexpensive website service. Thanks.
// ...pour de l'aide avec votre site. Service internet abordable et professionnel. Merci. 
