[OpenLayers-Commits] r11244 - in sandbox/cmoullet/openlayers: . examples examples/img lib lib/OpenLayers lib/OpenLayers/Control lib/OpenLayers/Handler tests tests/Control tests/Handler

commits-20090109 at openlayers.org commits-20090109 at openlayers.org
Tue Feb 22 09:41:55 EST 2011


Author: cmoullet
Date: 2011-02-22 06:41:55 -0800 (Tue, 22 Feb 2011)
New Revision: 11244

Added:
   sandbox/cmoullet/openlayers/examples/img/
   sandbox/cmoullet/openlayers/examples/img/marker_shadow.png
   sandbox/cmoullet/openlayers/examples/img/mobile-zoombar.png
   sandbox/cmoullet/openlayers/examples/img/popupMatrix.jpg
   sandbox/cmoullet/openlayers/examples/img/small.jpg
   sandbox/cmoullet/openlayers/examples/img/thinlong.jpg
   sandbox/cmoullet/openlayers/examples/img/widelong.jpg
   sandbox/cmoullet/openlayers/examples/img/wideshort.jpg
   sandbox/cmoullet/openlayers/examples/kinetic.html
   sandbox/cmoullet/openlayers/examples/mobile-navigation.js
   sandbox/cmoullet/openlayers/examples/style.mobile.css
   sandbox/cmoullet/openlayers/lib/OpenLayers/Kinetic.js
   sandbox/cmoullet/openlayers/tests/Kinetic.html
Removed:
   sandbox/cmoullet/openlayers/examples/img/marker_shadow.png
   sandbox/cmoullet/openlayers/examples/img/mobile-zoombar.png
   sandbox/cmoullet/openlayers/examples/img/popupMatrix.jpg
   sandbox/cmoullet/openlayers/examples/img/small.jpg
   sandbox/cmoullet/openlayers/examples/img/thinlong.jpg
   sandbox/cmoullet/openlayers/examples/img/widelong.jpg
   sandbox/cmoullet/openlayers/examples/img/wideshort.jpg
   sandbox/cmoullet/openlayers/examples/marker_shadow.png
   sandbox/cmoullet/openlayers/examples/popupMatrix.jpg
   sandbox/cmoullet/openlayers/examples/small.jpg
   sandbox/cmoullet/openlayers/examples/thinlong.jpg
   sandbox/cmoullet/openlayers/examples/widelong.jpg
   sandbox/cmoullet/openlayers/examples/wideshort.jpg
Modified:
   sandbox/cmoullet/openlayers/
   sandbox/cmoullet/openlayers/examples/example-list.html
   sandbox/cmoullet/openlayers/examples/marker-shadow.html
   sandbox/cmoullet/openlayers/examples/mobile-jq.html
   sandbox/cmoullet/openlayers/examples/mobile-navigation.html
   sandbox/cmoullet/openlayers/examples/mobile-sencha.html
   sandbox/cmoullet/openlayers/examples/mobile.html
   sandbox/cmoullet/openlayers/examples/mobile.js
   sandbox/cmoullet/openlayers/examples/popupMatrix.html
   sandbox/cmoullet/openlayers/lib/OpenLayers.js
   sandbox/cmoullet/openlayers/lib/OpenLayers/Control/DragPan.js
   sandbox/cmoullet/openlayers/lib/OpenLayers/Control/PanZoomBar.js
   sandbox/cmoullet/openlayers/lib/OpenLayers/Control/TouchNavigation.js
   sandbox/cmoullet/openlayers/lib/OpenLayers/Handler/Click.js
   sandbox/cmoullet/openlayers/tests/Control/PanZoomBar.html
   sandbox/cmoullet/openlayers/tests/Control/TouchNavigation.html
   sandbox/cmoullet/openlayers/tests/Events.html
   sandbox/cmoullet/openlayers/tests/Handler/Click.html
   sandbox/cmoullet/openlayers/tests/Handler/Drag.html
   sandbox/cmoullet/openlayers/tests/list-tests.html
Log:
Merge with trunk



Property changes on: sandbox/cmoullet/openlayers
___________________________________________________________________
Modified: svn:mergeinfo
   - /sandbox/roberthl/openlayers:9745-9748
/trunk/openlayers:11161-11216
   + /sandbox/roberthl/openlayers:9745-9748
/trunk/openlayers:11161-11242

Modified: sandbox/cmoullet/openlayers/examples/example-list.html
===================================================================
--- sandbox/cmoullet/openlayers/examples/example-list.html	2011-02-22 14:40:37 UTC (rev 11243)
+++ sandbox/cmoullet/openlayers/examples/example-list.html	2011-02-22 14:41:55 UTC (rev 11244)
@@ -14,14 +14,24 @@
         <link rel="stylesheet" href="style.css" type="text/css" />
         <style type="text/css">
             html, body {
-                height: 100%;
-                overflow: hidden;
                 margin: 0;
                 padding: 0;
                 line-height: 1.25em;
             }
+            #logo {
+                text-shadow: 2px 2px 3px gray;
+                color: white;
+                vertical-align: middle;
+                position: absolute;
+                top: 5px;
+                left: 5px;
+                font-size: 34px;
+                font-family: "Trebuchet MS",Helvetica,Arial,sans-serif;
+            }
+            #logo img {
+                vertical-align: middle;
+            }
             .ex_container{
-                border-bottom: 1px solid #cccccc;
             }
             .ex_container a {
                 text-decoration: none;
@@ -57,20 +67,18 @@
                 display: none;
             }
             #toc {
-                width: 30%;
+                width: 100%;
                 height: 100%;
             }
             #filter {
+                position: fixed;
+                text-align: center;
                 top: 0px;
-                height: 50px;
-                padding: 10px 1em 10px 1em;
+                background: #9D9FA1;
+                width: 100%;
+                padding: 1.3em 0;
             }
             #examples {
-                border-top: 1px solid #cccccc;
-                position: absolute;
-                width: 30%;
-                top: 70px;
-                bottom: 0px;
                 overflow: auto;
                 list-style: none;
                 margin: 0;
@@ -80,12 +88,21 @@
                 list-style: none;
                 margin: 0;
                 padding: 0;
+                margin-top: 4em;
             }
             #examples ul li {
-                display: block;
-                margin: 0;
+                display: inline;
+                float: left;
+                width: 350px;
+                margin: 10px 0 0 10px;
                 padding: 0;
+                border: 1px solid #ddd;
+                border-radius: 3px;
             }
+            #examples .mainlink {
+                height: 8em;
+                overflow: hidden;
+            }
             #exwin {
                 position: absolute;
                 top: 0;
@@ -96,6 +113,26 @@
                 border-left: 1px solid #cccccc;
                 margin: 0;
             }
+            @media only screen and (max-width: 600px) {
+                #examples ul {
+                    margin-top: 100px;
+                }
+                #filter {
+                    padding-top: 50px;
+                }
+                #examples ul li {
+                    margin-left: 0;
+                    border-radius: 0;
+                    border-width: 1px 0;
+                    width: 100%;
+                }
+                #examples .mainlink {
+                    height: auto;
+                }
+                #examples .ex_tags, #examples .ex_filename {
+                    display: none;
+                }
+            }
         </style>
         <script type="text/javascript" src="Jugl.js"></script>
         <script type="text/javascript" src="example-list.js"></script>
@@ -133,7 +170,7 @@
                     for(var i=0; i<words.length; ++i) {
                         var word = words[i].toLowerCase()
                         var dict = info.index[word];
-                        if(dict) {
+                        var updateScores = function() {
                             for(exIndex in dict) {
                                 var count = dict[exIndex];
                                 if(scores[exIndex]) {
@@ -148,6 +185,18 @@
                                 }
                             }
                         }
+                        if(dict) {
+                            updateScores();
+                        } else {
+                            var r;
+                            for (idx in info.index) {
+                               r = new RegExp(word);
+                               if (r.test(idx)) {
+                                    dict = info.index[idx];
+                                    updateScores();
+                               }
+                            }
+                        }
                     }
                     examples = [];
                     for(var j in scores) {
@@ -201,10 +250,10 @@
                 }
             }
             window.onload = function() {
+                //document.getElementById('keywords').focus();
                 template = new jugl.Template("template");
                 target = document.getElementById("examples");
                 listExamples(info.examples);
-                document.getElementById("exwin").src = "../examples/example.html";
                 document.getElementById("keywords").onkeyup = inputChange
                 parseQuery();
             };
@@ -213,20 +262,24 @@
     <body>
         <div id="toc">
             <div id="filter">
+                <div id="logo">
+                <img src="http://www.openlayers.org/images/OpenLayers.trac.png"
+                 />
+                 OpenLayers
+             </div>
                 <p>
-                    <label for="keywords">Filter by keywords</label><br />
-                    <input type="text" id="keywords" />
-                    <span id="count"></span><br />
+                    <input autofocus placeholder="filter by keywords..." type="text" id="keywords" />
+                    <span id="count"></span>
                     <a href="javascript:void showAll();">show all</a>
                 </p>
             </div>
             <div id="examples"></div>
         </div>
-        <iframe id="exwin" name="exwin" frameborder="0"></iframe>        
         <div style="display: none;">
             <ul id="template">
                 <li class="ex_container" jugl:repeat="example examples">
-                    <a jugl:attributes="href example.link" target="exwin">
+                <a jugl:attributes="href example.link" class="mainlink"
+                    target="_blank">
                         <h5 class="ex_title">
                             <span jugl:replace="example.title">title</span><br />
                             <span class="ex_filename" jugl:content="'(' + example.example + ')'">filename</span>

Deleted: sandbox/cmoullet/openlayers/examples/img/marker_shadow.png
===================================================================
(Binary files differ)

Copied: sandbox/cmoullet/openlayers/examples/img/marker_shadow.png (from rev 11242, trunk/openlayers/examples/img/marker_shadow.png)
===================================================================
(Binary files differ)

Deleted: sandbox/cmoullet/openlayers/examples/img/mobile-zoombar.png
===================================================================
--- trunk/openlayers/examples/img/mobile-zoombar.png	2011-02-22 14:39:49 UTC (rev 11242)
+++ sandbox/cmoullet/openlayers/examples/img/mobile-zoombar.png	2011-02-22 14:41:55 UTC (rev 11244)
@@ -1,27 +0,0 @@
-‰PNG
-
-   
-IHDR   $   l   ™   sBIT|dˆ   	pHYs  ¯  ¯^‘   tEXtSoftware www.inkscape.org›î<  -IDAThí›{T•e¾Ç?ï»/Ü6÷« fj„˜†Z)N*á’Ê0q¼•¶\ÙÊÕLuœ™3+s¦ƒ9x#M0
-5ó¬$DEA‡ƒH(rÚ(°A`ßÞóÇƍ»½1Mç,¿ÿíçúÙÏýù½ÏO$‰¾HVz‚b20¤@Ø]Tƒp	øôÙ’´üjŸÊ¿Y Aø(¤Å@4 ¿Éò
- at .k%éõ]·H>ŠÓ <v“ÝH:â›’ôzÎ-	Â\ú¤³Un£„µ0`©$Í0Þ4 |à²tàéÛcÑ0>'Io6õ
-Ô	“„ß!˜ë*côÏ¡Dk˜²Î–¹Ó0˜ë¥›ëìÈ<fîX7ÙÓӝuZdé2ól’ÿŠ07bŒ»>ûnh!ÓwƺnA’¤ë‹Þ—}-FÜÜ”VaÍÍ:L¦¾­þ(Ó%éõ]+nß×¹\$#c
-Ï>ûUøîÝ?2cÆWèõ¦>–(-v	ð7O×sóÛ ƒ¹SV6ßn\HÈΟïÓ` ƒŸØ¹Qö	æIŠÉ"0án“Ü 	bçâ‘4@Ä|ž¹W$§ëpeWÎÎ
-†÷±Í¤ê6ÏÈ‘¾x{;Ú„i¸vMßSu|Øí¢¡Pˆ:”Àã÷祖›VNNO=•ÁÐý’ v¸»;Ü6€˜˜þ¸»;ô˜¦G »¡û@½©G +WÚÙ²¥ä¶U¶iÓ®\ië1M³@°;tçÔ©—ìæQ«·PVÖhÞÔÔAo·®^÷0I‚ÆÆ›ðæfÛ°®8Ý<7£ÿ¬1t7t¨7Ý2Pe¥–¯¿.·	ß¿ÿÍ·Ôë´ïIr¹ˆ“U˜FÓÖãæÙk™·œ0L\¾ÜúKŠ°ÑÿŸ1t§t¨7õyP;;+HHeÖ¬0BC½psSâì,ÚÚô44´S^ÞÈŽçHM-¦½ÝЧòozÚGDøñùçO3r¤¢(ÐØØÁ¹sW	óæ‹/ÎÒÜÜAPŠ/tÃÛÛ	I’(,¬ç•WrâÄåÛìÊΝS5ªMM|öÙ¿IN. ¶Ö<ÝW­G` ŠÄįmò%!“	¸º*9r¤š„„=ÔÔ´ôÔãš1#”²²ù„‡û Ñ´—Åòå9€·ßÎ%2ҏ¸¸!Vy++µüö·;Ñju¼õÖ÷DFúSQ±€ÄÄ°[Z³æ	ÒÓ§`2Iüã§yãÃ¬]ûr¹u–Ž#³gïãÓO'àím½j?^KJJQQøù­ãèÑ6ožÌêÕ㺒Aìý<pÕª–.}”uëNŸE||‹G —‹øù9sð`…Uúšš¼¼™5+Œ;ÏYÅåæV±xq$žžhµz""üˆŽî‹‹Â¦»@óæ
-cåÊqlÛv–yóÐÚª'3ó<[·–àëëÄ’%‘L™2£QâÚ5W¯¶#I›[Í[o=†FÓFII¢(êÅĉ	
-õdþüáÖ¿•JÉk¯ERZÚÀ™3
-V at Vƒ:(HEEÅ4švRRþÍ;ï±ù«W'2ÒŸÚÚÔê Uœ=Û@K‹Æùrút=áá>ÔÔ´PXXÏ¡C(•2¦Oa„ŒÎî|‘ˆ‚ƒÿ›ººVû@yy/¢Vû1lØF¾ÿþÂÂRÑh¬o	*•‚ÒÒ¹Lžü%EE?áêª$<ÜGG92™@JJ,ï¿ŒôôÐju]]!¨ªz™Ñ£Ó¸t©ggõõ‹(.ÖðØci¶]6fL ï¾;†ººkøúºpòäeÆŽíÏ7ß\´ÒéLøú:âÉwßU¢Ó©ªÒrñbååM¸¹9п¿+{÷–Yå“$xðAw‚ƒÝ8r¤½ÞD}}¯¼2’¬¬
 -­d™2ÉÉO¢Ñ´²WW±±Y¸p..
-›nÛ³§Œiӆ؄ìØñ		¡‚mÜöí¥Ìœ9€èè ‡ÒÒ¢'%e¢%x½9#"üØ´é­­zž~/þóQ
-‘;§Ò¿¿«UÁÇŽÕ¨"8Ø: ´ô
-DEÙZyŽ©¦_?rržgóæÉlÜx†ääÔê d2¡())Qùë_Z2gdüÀGÀÇÇ™¢¢ÙlÛö£G÷Àd’ÈÎ.gêÔî[é¹ç¶
-1—;§áä$§¥EOhè6n,æƒòEÁÒr"@BB(õõ­6—»ìì˜Â±c5lÝú;ŠŠ’øôÓ§hlì !!Ô.СCÄÆ>À’%‘ddL¡¦æ²²âÈÍ­búô¯ðòr´˜µZ
-
-m 9ÀàÁ´´ØZ¶òók1—ÖV=ÉÉ…üýï…DFú3vl“&=Ș147/A§3b0H&ŒF	OOG”JaaÞìÞý#Ë–æÒ%óÁ?,ÌÛÆØ~îÜU†õîòósÆ`0±aÃÓ,\xÐrH×ëM´¶êquUÒØh¾—ÔQPPÇ—_ž#??‘°°Tär¹\@&‘É”J'N$òòËmþ¤V«ÃÕÕ¨²RKX˜wW—98ÈøüóÿÅßß…}û¦àbIÜܬÃÍÍÖØÐÜl.¸©©ƒ††6êê®QSÓBe¥y	puUڝiZ­•Ê¤R)X¹2†‰ÀÁAÖd2I("Ó¦e’“SÅéÓ³Y°`8‚`6*¨T¶S¿¥E‡³³Ân¥×·•Ÿ·„9Ÿ•JÁ¬Ya”–ÎÅÇlj´´á†YÖÞn$ À£Qâ/9ÊøñÛ™5ërsgàbצ#IÐÞnÀÙÙö:°= ßüÆ™LäÕW#ˆ‹ËbÞ¼xz:¡Ó»€´ZÕZSZz…˜˜m|öÙi<=ùöÛæÌ	G©ìúøçáá€Ñ(ÑÚj;åxx8XîlJ¥ŒñãƒÙ¸q{öÄS_ßJTT'OšO‘C†xðÓO×€ÎA]\¬aÔ¨ ›((¨£¬¬‘W_=IJejV¯O^^5¹¹Õ45é8{Öz§¾®¡C½¨¬Ôò‡?D;1c‚(.֐]N~~-ÑÑý­Wƒ¹sâD]Ð_”0iÒƒÄÇ?Ä®]ç-	Ǎ¦  ŽÃ‡+9|¸'¢£ƒxüñþ¼üòH‚‚T\¼¸ÀÈËËAxøaoÖ¯/â…öÒÜlÞh×­›À‰µVi}}Ùµë\Ðöí?°iÓd6ožŒ(î³²fÌaíÚS–ÌMYY?’•õ#J¥ŒÊJ-?Ø -[¦¦¦¦…÷ß?n§Vû³}{©å÷Šc1%6o>Ód0˜(,¬ã¡‡<IN~’G
- 9¹ˆöí»`·[&OijÏfqñ¢Í§wFŒðcÏž2›ðÜ<؃“'/ãêªdÅŠ±,Z4’S§ê,+·e·Ÿ;÷ îî|òÉIyć¼¼™äæVÛ½WEEríšž¢¢Ÿlâö`Ⱥd·hÑH¶l)aÊ”Á””Ì
 !**AX²ä,i, at EE?qòäeÞ}wññ»io7Äš5OÒ¯Ÿ‹UÁ3g%-í¬Ý–KJ
-'-í¬IÆÉI΂ÃQ«xç(fÏÞÇðá¾äåU“—Wc0ujrNŸžÝy&þŠŠ’X³æIxÀ
-WW%		¡lÛf$Š/½Fjj±UبQýÈÌŒC¥R²gO›yï½h
-‘¸¸,ë2nüQ[Û‹/~ÍС^œ?•Ë—[yóÍÂÂRÑëäç'ráÂ|Ú9ÒÏÆ~=}zµµ­47w0wî0ÒÓ§PW·ˆõëc;63¾bÕª|þùωŒÈ‚ßØ‘íÞ\?þx<K—ªIM-æ÷¿ßo	÷÷w¦´t.ë֝B­`ìØ DѼU®®JZZtèõ&¬`ÿþ8p?þñ1ä,\ø
-))±ÌŸ?œ÷Þ;ÆŸþ”kÓÊÝ^¥W¬ÃÛoáøñZžx"övS(/obùró ™LÀÁÁ|¸íµHbb‚ILü¦Íòí^­`ïÞxÔê-ìÞGD„?|’e˾³WmÏwû¤¤pÖ¯Å`0‘™yžðp_}tÖO
-rçøñDbb¶[­Þ~~Îäç'òí·Ìœ9¹\dÎœý¤¥uÿý¤Wcƒ¿¿3™™qDEÒØØΆ
-ŬYS at U•0ïSyy3Ùºµ„5k
-,ùöàðáçðövÂÑQNAAÏ<³«W›äM›cƍæÃÇéL& Ñ´Q^Þˆ££''9ÙÙåôëg>ø‡†záåeþæZPp™…RPPw3ÕôÝ,ìì¬`Îœp¦MÌ A¸àè(Çh4¡Ó™hnîàÌ™ÒÓKÉÌ<Ï•+í})þ—Ù©ï„î9ã} Þt¨7ÝêM÷zÓ} Þt¨7Ýs@½~ÀëîuÌ­è¿ŽHMÄìُÜ -[JHJÚ×ããÝhÞÞNh4¯Þ˜ëòõ]gs»Q÷Üí݆¸AZ³û̽¢¨î.¶©©ƒœœªÛVÛ÷ßWÑÔÔãS°j¹Ù±Èþ¸6LLšô¥Ý·°·¢¢"M//Ñ…K¬~¤­·¥Æ_,!Q}6f/§»-è³ÅNÿ/[»È¯¯\IZ~µsÖÞ]–.†<_><úË}ÈnUÒ1Iz#
-¬VjñÍ»c]·Èì›s7ºNX{£WÞÏö²K¿"́Î:-²2»éŸŠ¹ó*6{áY»Úìöf8c4w¶¥Øó¾ƒÿ§Ik°{Ä­Ôؽáxkvg]“ÿˆ¿=yíÑ    IEND®B`‚
\ No newline at end of file

Copied: sandbox/cmoullet/openlayers/examples/img/mobile-zoombar.png (from rev 11242, trunk/openlayers/examples/img/mobile-zoombar.png)
===================================================================
--- sandbox/cmoullet/openlayers/examples/img/mobile-zoombar.png	                        (rev 0)
+++ sandbox/cmoullet/openlayers/examples/img/mobile-zoombar.png	2011-02-22 14:41:55 UTC (rev 11244)
@@ -0,0 +1,27 @@
+‰PNG
+
+   
+IHDR   $   l   ™   sBIT|dˆ   	pHYs  ¯  ¯^‘   tEXtSoftware www.inkscape.org›î<  -IDAThí›{T•e¾Ç?ï»/Ü6÷« fj„˜†Z)N*á’Ê0q¼•¶\ÙÊÕLuœ™3+s¦ƒ9x#M0
+5ó¬$DEA‡ƒH(rÚ(°A`ßÞóÇƍ»½1Mç,¿ÿíçúÙÏýù½ÏO$‰¾HVz‚b20¤@Ø]Tƒp	øôÙ’´üjŸÊ¿Y Aø(¤Å@4 ¿Éò
+ at .k%éõ]·H>ŠÓ <v“ÝH:â›’ôzÎ-	Â\ú¤³Un£„µ0`©$Í0Þ4 |à²tàéÛcÑ0>'Io6õ
+Ô	“„ß!˜ë*côÏ¡Dk˜²Î–¹Ó0˜ë¥›ëìÈ<fîX7ÙÓӝuZdé2ól’ÿŠ07bŒ»>ûnh!ÓwƺnA’¤ë‹Þ—}-FÜÜ”VaÍÍ:L¦¾­þ(Ó%éõ]+nß×¹\$#c
+Ï>ûUøîÝ?2cÆWèõ¦>–(-v	ð7O×sóÛ ƒ¹SV6ßn\HÈΟïÓ` ƒŸØ¹Qö	æIŠÉ"0án“Ü 	bçâ‘4@Ä|ž¹W$§ëpeWÎÎ
+†÷±Í¤ê6ÏÈ‘¾x{;Ú„i¸vMßSu|Øí¢¡Pˆ:”Àã÷祖›VNNO=•ÁÐý’ v¸»;Ü6€˜˜þ¸»;ô˜¦G »¡û@½©G +WÚÙ²¥ä¶U¶iÓ®\ië1M³@°;tçÔ©—ìæQ«·PVÖhÞÔÔAo·®^÷0I‚ÆÆ›ðæfÛ°®8Ý<7£ÿ¬1t7t¨7Ý2Pe¥–¯¿.·	ß¿ÿÍ·Ôë´ïIr¹ˆ“U˜FÓÖãæÙk™·œ0L\¾ÜúKŠ°ÑÿŸ1t§t¨7õyP;;+HHeÖ¬0BC½psSâì,ÚÚô44´S^ÞÈŽçHM-¦½ÝЧòozÚGDøñùçO3r¤¢(ÐØØÁ¹sW	óæ‹/ÎÒÜÜAPŠ/tÃÛÛ	I’(,¬ç•WrâÄåÛìÊΝS5ªMM|öÙ¿IN. ¶Ö<ÝW­G` ŠÄįmò%!“	¸º*9r¤š„„=ÔÔ´ôÔãš1#”²²ù„‡û Ñ´—Åòå9€·ßÎ%2ҏ¸¸!Vy++µüö·;Ñju¼õÖ÷DFúSQ±€ÄÄ°[Z³æ	ÒÓ§`2Iüã§yãÃ¬]ûr¹u–Ž#³gïãÓO'àím½j?^KJJQQøù­ãèÑ6ožÌêÕ㺒Aìý<pÕª–.}”uëNŸE||‹G —‹øù9sð`…Uúšš¼¼™5+Œ;ÏYÅåæV±xq$žžhµz""üˆŽî‹‹Â¦»@óæ
+cåÊqlÛv–yóÐÚª'3ó<[·–àëëÄ’%‘L™2£QâÚ5W¯¶#I›[Í[o=†FÓFII¢(êÅĉ	
+õdþüáÖ¿•JÉk¯ERZÚÀ™3
+V at Vƒ:(HEEÅ4švRRþÍ;ï±ù«W'2ÒŸÚÚÔê Uœ=Û@K‹Æùrút=áá>ÔÔ´PXXÏ¡C(•2¦Oa„ŒÎî|‘ˆ‚ƒÿ›ººVû@yy/¢Vû1lØF¾ÿþÂÂRÑh¬o	*•‚ÒÒ¹Lžü%EE?áêª$<ÜGG92™@JJ,ï¿ŒôôÐju]]!¨ªz™Ñ£Ó¸t©ggõõ‹(.ÖðØci¶]6fL ï¾;†ººkøúºpòäeÆŽíÏ7ß\´ÒéLøú:âÉwßU¢Ó©ªÒrñbååM¸¹9п¿+{÷–Yå“$xðAw‚ƒÝ8r¤½ÞD}}¯¼2’¬¬
 -­d™2ÉÉO¢Ñ´²WW±±Y¸p..
+›nÛ³§Œiӆ؄ìØñ		¡‚mÜöí¥Ìœ9€èè ‡ÒÒ¢'%e¢%x½9#"üØ´é­­zž~/þóQ
+‘;§Ò¿¿«UÁÇŽÕ¨"8Ø: ´ô
+DEÙZyŽ©¦_?rržgóæÉlÜx†ääÔê d2¡())Qùë_Z2gdüÀGÀÇÇ™¢¢ÙlÛö£G÷Àd’ÈÎ.gêÔî[é¹ç¶
+1—;§áä$§¥EOhè6n,æƒòEÁÒr"@BB(õõ­6—»ìì˜Â±c5lÝú;ŠŠ’øôÓ§hlì !!Ô.СCÄÆ>À’%‘ddL¡¦æ²²âÈÍ­búô¯ðòr´˜µZ
+
+m 9ÀàÁ´´ØZ¶òók1—ÖV=ÉÉ…üýï…DFú3vl“&=Ș147/A§3b0H&ŒF	OOG”JaaÞìÞý#Ë–æÒ%óÁ?,ÌÛÆØ~îÜU†õîòósÆ`0±aÃÓ,\xÐrH×ëM´¶êquUÒØh¾—ÔQPPÇ—_ž#??‘°°Tär¹\@&‘É”J'N$òòËmþ¤V«ÃÕÕ¨²RKX˜wW—98ÈøüóÿÅßß…}û¦àbIÜܬÃÍÍÖØÐÜl.¸©©ƒ††6êê®QSÓBe¥y	puUڝiZ­•Ê¤R)X¹2†‰ÀÁAÖd2I("Ó¦e’“SÅéÓ³Y°`8‚`6*¨T¶S¿¥E‡³³Ân¥×·•Ÿ·„9Ÿ•JÁ¬Ya”–ÎÅÇlj´´á†YÖÞn$ À£Qâ/9ÊøñÛ™5ërsgàbצ#IÐÞnÀÙÙö:°= ßüÆ™LäÕW#ˆ‹ËbÞ¼xz:¡Ó»€´ZÕZSZz…˜˜m|öÙi<=ùöÛæÌ	G©ìúøçáá€Ñ(ÑÚj;åxx8XîlJ¥ŒñãƒÙ¸q{öÄS_ßJTT'OšO‘C†xðÓO×€ÎA]\¬aÔ¨ ›((¨£¬¬‘W_=IJejV¯O^^5¹¹Õ45é8{Öz§¾®¡C½¨¬Ôò‡?D;1c‚(.֐]N~~-ÑÑý­Wƒ¹sâD]Ð_”0iÒƒÄÇ?Ä®]ç-	Ǎ¦  ŽÃ‡+9|¸'¢£ƒxüñþ¼üòH‚‚T\¼¸ÀÈËËAxøaoÖ¯/â…öÒÜlÞh×­›À‰µVi}}Ùµë\Ðöí?°iÓd6ožŒ(î³²fÌaíÚS–ÌMYY?’•õ#J¥ŒÊJ-?Ø -[¦¦¦¦…÷ß?n§Vû³}{©å÷Šc1%6o>Ód0˜(,¬ã¡‡<IN~’G
+ 9¹ˆöí»`·[&OijÏfqñ¢Í§wFŒðcÏž2›ðÜ<؃“'/ãêªdÅŠ±,Z4’S§ê,+·e·Ÿ;÷ îî|òÉIyć¼¼™äæVÛ½WEEríšž¢¢Ÿlâö`Ⱥd·hÑH¶l)aÊ”Á””Ì
 !**AX²ä,i, at EE?qòäeÞ}wññ»io7Äš5OÒ¯Ÿ‹UÁ3g%-í¬Ý–KJ
+'-í¬IÆÉI΂ÃQ«xç(fÏÞÇðá¾äåU“—Wc0ujrNŸžÝy&þŠŠ’X³æIxÀ
+WW%		¡lÛf$Š/½Fjj±UبQýÈÌŒC¥R²gO›yï½h
+‘¸¸,ë2nüQ[Û‹/~ÍС^œ?•Ë—[yóÍÂÂRÑëäç'ráÂ|Ú9ÒÏÆ~=}zµµ­47w0wî0ÒÓ§PW·ˆõëc;63¾bÕª|þùωŒÈ‚ßØ‘íÞ\?þx<K—ªIM-æ÷¿ßo	÷÷w¦´t.ë֝B­`ìØ DѼU®®JZZtèõ&¬`ÿþ8p?þñ1ä,\ø
+))±ÌŸ?œ÷Þ;ÆŸþ”kÓÊÝ^¥W¬ÃÛoáøñZžx"övS(/obùró ™LÀÁÁ|¸íµHbb‚ILü¦Íòí^­`ïÞxÔê-ìÞGD„?|’e˾³WmÏwû¤¤pÖ¯Å`0‘™yžðp_}tÖO
+rçøñDbb¶[­Þ~~Îäç'òí·Ìœ9¹\dÎœý¤¥uÿý¤Wcƒ¿¿3™™qDEÒØØΆ
+ŬYS at U•0ïSyy3Ùºµ„5k
+,ùöàðáçðövÂÑQNAAÏ<³«W›äM›cƍæÃÇéL& Ñ´Q^Þˆ££''9ÙÙåôëg>ø‡†záåeþæZPp™…RPPw3ÕôÝ,ìì¬`Îœp¦MÌ A¸àè(Çh4¡Ó™hnîàÌ™ÒÓKÉÌ<Ï•+í})þ—Ù©ï„î9ã} Þt¨7ÝêM÷zÓ} Þt¨7Ýs@½~ÀëîuÌ­è¿ŽHMÄìُÜ -[JHJÚ×ããÝhÞÞNh4¯Þ˜ëòõ]gs»Q÷Üí݆¸AZ³û̽¢¨î.¶©©ƒœœªÛVÛ÷ßWÑÔÔãS°j¹Ù±Èþ¸6LLšô¥Ý·°·¢¢"M//Ñ…K¬~¤­·¥Æ_,!Q}6f/§»-è³ÅNÿ/[»È¯¯\IZ~µsÖÞ]–.†<_><úË}ÈnUÒ1Iz#
+¬VjñÍ»c]·Èì›s7ºNX{£WÞÏö²K¿"́Î:-²2»éŸŠ¹ó*6{áY»Úìöf8c4w¶¥Øó¾ƒÿ§Ik°{Ä­Ôؽáxkvg]“ÿˆ¿=yíÑ    IEND®B`‚
\ No newline at end of file

Deleted: sandbox/cmoullet/openlayers/examples/img/popupMatrix.jpg
===================================================================
(Binary files differ)

Copied: sandbox/cmoullet/openlayers/examples/img/popupMatrix.jpg (from rev 11242, trunk/openlayers/examples/img/popupMatrix.jpg)
===================================================================
(Binary files differ)

Deleted: sandbox/cmoullet/openlayers/examples/img/small.jpg
===================================================================
(Binary files differ)

Copied: sandbox/cmoullet/openlayers/examples/img/small.jpg (from rev 11242, trunk/openlayers/examples/img/small.jpg)
===================================================================
(Binary files differ)

Deleted: sandbox/cmoullet/openlayers/examples/img/thinlong.jpg
===================================================================
(Binary files differ)

Copied: sandbox/cmoullet/openlayers/examples/img/thinlong.jpg (from rev 11242, trunk/openlayers/examples/img/thinlong.jpg)
===================================================================
(Binary files differ)

Deleted: sandbox/cmoullet/openlayers/examples/img/widelong.jpg
===================================================================
(Binary files differ)

Copied: sandbox/cmoullet/openlayers/examples/img/widelong.jpg (from rev 11242, trunk/openlayers/examples/img/widelong.jpg)
===================================================================
(Binary files differ)

Deleted: sandbox/cmoullet/openlayers/examples/img/wideshort.jpg
===================================================================
(Binary files differ)

Copied: sandbox/cmoullet/openlayers/examples/img/wideshort.jpg (from rev 11242, trunk/openlayers/examples/img/wideshort.jpg)
===================================================================
(Binary files differ)

Copied: sandbox/cmoullet/openlayers/examples/kinetic.html (from rev 11242, trunk/openlayers/examples/kinetic.html)
===================================================================
--- sandbox/cmoullet/openlayers/examples/kinetic.html	                        (rev 0)
+++ sandbox/cmoullet/openlayers/examples/kinetic.html	2011-02-22 14:41:55 UTC (rev 11244)
@@ -0,0 +1,81 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <title>OpenLayers Kinetic Dragging Example</title>
+    <link rel="stylesheet" href="../theme/default/style.css" type="text/css" />
+    <link rel="stylesheet" href="style.css" type="text/css" />
+    <style type="text/css">
+        #map {
+            width: 100%;
+            height: 100%;
+        }
+    </style>
+    <script src="../lib/OpenLayers.js"></script>
+    <script type="text/javascript">
+        var map, layer;
+        function init(){
+            map = new OpenLayers.Map({
+                div: "map",
+                resolutions: [0.087890625, 0.0439453125, 0.02197265625, 0.010986328125],
+                panDuration: 100,
+                controls: [
+                    new OpenLayers.Control.Navigation(
+                        {dragPanOptions: {enableKinetic: true}}
+                    )
+                ]
+            });
+            layer = new OpenLayers.Layer.TileCache("TileCache Layer",
+                ["http://c0.tilecache.osgeo.org/wms-c/cache/",
+                 "http://c1.tilecache.osgeo.org/wms-c/cache/",
+                 "http://c2.tilecache.osgeo.org/wms-c/cache/",
+                 "http://c3.tilecache.osgeo.org/wms-c/cache/",
+                 "http://c4.tilecache.osgeo.org/wms-c/cache/"],
+                "basic",
+                {
+                    serverResolutions: [0.703125, 0.3515625, 0.17578125, 0.087890625,
+                                        0.0439453125, 0.02197265625, 0.010986328125,
+                                        0.0054931640625, 0.00274658203125, 0.001373291015625,
+                                        0.0006866455078125, 0.00034332275390625, 0.000171661376953125,
+                                        0.0000858306884765625, 0.00004291534423828125, 0.000021457672119140625],
+                    buffer: 4
+                }
+            );
+            map.addLayer(layer);
+            map.setCenter(new OpenLayers.LonLat(0, 0), 0);
+        }
+    </script>
+  </head>
+  <body onload="init()">
+      <h1 id="title">Kinetic Dragging Example</h1>
+
+      <div id="tags">
+          kinetic, dragging
+      </div>
+
+      <p id="shortdesc">
+        Demonstrates Kinetic Dragging.
+      </p>
+
+    <div id="map" class="smallmap"></div>
+
+    <div id="docs">
+
+        <p>
+        OpenLayers Kinetic Dragging inspired from <a href="http://www.tile5.org">Tile5</a>, and
+        <a href="http://code.google.com/p/kineticscrolling/">kineticscrolling</a> for Google Maps API V3.
+        </p>
+
+        <p>
+
+        As shown in this example Kinetic Dragging is enabled by setting
+        <code>enableKinetic</code> to true in the config object provided to the
+        <code>Control.DragPan</code> constructor. When using
+        <code>Control.Navigation</code> or <code>Control.TouchNavigation</code>
+        providing options to the underlying <code>Control.DragPan</code>
+        instance is done through the <code>dragPanOptions</code> config
+        property.
+
+        </p>
+
+    </div>
+  </body>
+</html>

Modified: sandbox/cmoullet/openlayers/examples/marker-shadow.html
===================================================================
--- sandbox/cmoullet/openlayers/examples/marker-shadow.html	2011-02-22 14:40:37 UTC (rev 11243)
+++ sandbox/cmoullet/openlayers/examples/marker-shadow.html	2011-02-22 14:41:55 UTC (rev 11244)
@@ -39,7 +39,7 @@
                     styleMap: new OpenLayers.StyleMap({
                         // Set the external graphic and background graphic images.
                         externalGraphic: "../img/marker-gold.png",
-                        backgroundGraphic: "./marker_shadow.png",
+                        backgroundGraphic: "./img/marker_shadow.png",
                         
                         // Makes sure the background graphic is placed correctly relative
                         // to the external graphic.

Deleted: sandbox/cmoullet/openlayers/examples/marker_shadow.png
===================================================================
(Binary files differ)

Modified: sandbox/cmoullet/openlayers/examples/mobile-jq.html
===================================================================
--- sandbox/cmoullet/openlayers/examples/mobile-jq.html	2011-02-22 14:40:37 UTC (rev 11243)
+++ sandbox/cmoullet/openlayers/examples/mobile-jq.html	2011-02-22 14:41:55 UTC (rev 11244)
@@ -9,7 +9,7 @@
         <link rel="stylesheet" href="http://code.jquery.com/mobile/1.0a3/jquery.mobile-1.0a3.min.css">
         <script src="http://code.jquery.com/jquery-1.5.min.js"></script>
         <script src="http://code.jquery.com/mobile/1.0a3/jquery.mobile-1.0a3.min.js"></script>
-        <link rel="stylesheet" href="../theme/default/style.css" type="text/css">
+        <link rel="stylesheet" href="style.mobile.css" type="text/css">
         <script src="../lib/OpenLayers.js"></script>
         <script src="mobile.js"></script>
         <style>
@@ -37,6 +37,9 @@
                 bottom: 5px;
                 right: 5px;
             }
+            #tags {
+                display: none;
+            }
         </style>
         <script>
             $(document).ready(function() {
@@ -101,6 +104,9 @@
         </script>
     </head>
     <body>
+        <div id="tags">
+            mobile, jquery
+        </div>
         <div data-role="page">
             <div data-role="header">
                 <input id="west" type="button" data-icon="arrow-l" value="west">

Modified: sandbox/cmoullet/openlayers/examples/mobile-navigation.html
===================================================================
--- sandbox/cmoullet/openlayers/examples/mobile-navigation.html	2011-02-22 14:40:37 UTC (rev 11243)
+++ sandbox/cmoullet/openlayers/examples/mobile-navigation.html	2011-02-22 14:41:55 UTC (rev 11244)
@@ -5,25 +5,10 @@
     <meta name="apple-mobile-web-app-capable" content="yes" />
     <title>OpenLayers TouchNavigation Control</title>
     <link rel="stylesheet" href="../theme/default/style.css" type="text/css" />
+    <link rel="stylesheet" href="style.mobile.css" type="text/css" />
     <link rel="stylesheet" href="style.css" type="text/css" />
-    <script src="../lib/OpenLayers.js"></script>
-    <script type="text/javascript">
-        var map, layer;
-        function init() {
-            map = new OpenLayers.Map( 'map', { controls: [
-                new OpenLayers.Control.TouchNavigation({
-                    dragPanOptions: {
-                        interval: 0 // non-zero kills performance on some mobile phones
-                    }
-                })
-            ] });
-            layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
-                    "http://vmap0.tiles.osgeo.org/wms/vmap0",
-                    {layers: 'basic'} );
-            map.addLayer(layer);
-            map.setCenter(new OpenLayers.LonLat(5, 40), 2);
-        }
-    </script>
+    <script type="text/javascript" src="../lib/OpenLayers.js"></script>
+    <script type="text/javascript" src="mobile-navigation.js"></script>
   </head>
   <body onload="init()">
     <h1 id="title">TouchNavigation Control</h1>
@@ -36,9 +21,15 @@
 
     <div id="map" class="smallmap"></div>
     <div id="docs">
-        This example demonstrates a couple features of the TouchNavigation
-        control. The TouchNavigation control controls most map dragging,
-        movement, zooming, etc, optimized for mobile devices.
+        <p>
+            This example demonstrates a couple features of the TouchNavigation
+            control. The TouchNavigation control controls most map dragging,
+            movement, zooming, etc, optimized for mobile devices.
+        </p> 
+        <p>
+            See the <a href="mobile-navigation.js" target="_blank">mobile-navigation.js
+            source</a> to see how this is done.
+        </p> 
     </div>
   </body>
 </html>

Copied: sandbox/cmoullet/openlayers/examples/mobile-navigation.js (from rev 11242, trunk/openlayers/examples/mobile-navigation.js)
===================================================================
--- sandbox/cmoullet/openlayers/examples/mobile-navigation.js	                        (rev 0)
+++ sandbox/cmoullet/openlayers/examples/mobile-navigation.js	2011-02-22 14:41:55 UTC (rev 11244)
@@ -0,0 +1,17 @@
+var map, layer;
+function init() {
+    map = new OpenLayers.Map('map', { controls: [
+        new OpenLayers.Control.TouchNavigation({
+            dragPanOptions: {
+                interval: 0, // non-zero kills performance on some mobile phones
+                enableKinetic: true
+            }
+        }),
+        new OpenLayers.Control.ZoomPanel()
+    ] });
+    layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
+            "http://vmap0.tiles.osgeo.org/wms/vmap0",
+            {layers: 'basic'} );
+    map.addLayer(layer);
+    map.setCenter(new OpenLayers.LonLat(5, 40), 2);
+}

Modified: sandbox/cmoullet/openlayers/examples/mobile-sencha.html
===================================================================
--- sandbox/cmoullet/openlayers/examples/mobile-sencha.html	2011-02-22 14:40:37 UTC (rev 11243)
+++ sandbox/cmoullet/openlayers/examples/mobile-sencha.html	2011-02-22 14:41:55 UTC (rev 11244)
@@ -6,7 +6,7 @@
         <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
         <title>OpenLayers with Sencha Touch</title>
         <script src="../lib/OpenLayers.js"></script>
-        <link rel="stylesheet" href="../theme/default/style.css" type="text/css">
+        <link rel="stylesheet" href="style.mobile.css" type="text/css">
         <link rel="stylesheet" href="http://dev.sencha.com/deploy/touch/resources/css/sencha-touch.css">
         <script src="http://dev.sencha.com/deploy/touch/sencha-touch.js"></script>
         <script src="mobile.js"></script>
@@ -20,6 +20,9 @@
                 bottom: 5px;
                 right: 5px;
             }
+            #tags {
+                display: none;
+            }
         </style>
         <script>
         
@@ -121,5 +124,9 @@
         });
         </script>
     </head>
-    <body></body>
+    <body>
+        <div id="tags">
+            mobile, sencha
+        </div>
+    </body>
 </html>

Modified: sandbox/cmoullet/openlayers/examples/mobile.html
===================================================================
--- sandbox/cmoullet/openlayers/examples/mobile.html	2011-02-22 14:40:37 UTC (rev 11243)
+++ sandbox/cmoullet/openlayers/examples/mobile.html	2011-02-22 14:41:55 UTC (rev 11244)
@@ -4,7 +4,7 @@
         <title>OpenLayers Mobile</title>
         <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0;">
         <meta name="apple-mobile-web-app-capable" content="yes">
-        <link rel="stylesheet" href="../theme/default/style.css" type="text/css">
+        <link rel="stylesheet" href="style.mobile.css" type="text/css">
         <script src="../lib/OpenLayers.js"></script>
         <script src="mobile.js"></script>
         <style>
@@ -23,9 +23,15 @@
                 bottom: 5px;
                 right: 5px;
             }
+            #tags {
+                display: none;
+            }
         </style>
     </head>
     <body>
+        <div id="tags">
+            mobile
+        </div>
         <div id="map"></div>
         <script>
             init();

Modified: sandbox/cmoullet/openlayers/examples/mobile.js
===================================================================
--- sandbox/cmoullet/openlayers/examples/mobile.js	2011-02-22 14:40:37 UTC (rev 11243)
+++ sandbox/cmoullet/openlayers/examples/mobile.js	2011-02-22 14:41:55 UTC (rev 11244)
@@ -19,7 +19,12 @@
             -20037508.34, -20037508.34, 20037508.34, 20037508.34
         ),
         controls: [
-            new OpenLayers.Control.Navigation(),
+            new OpenLayers.Control.TouchNavigation({
+                dragPanOptions: {
+                    interval: 0, // non-zero kills performance on some mobile phones
+                    enableKinetic: true
+                }
+            }),
             new OpenLayers.Control.Attribution(),
             new OpenLayers.Control.DrawFeature(
                 vector, OpenLayers.Handler.Point, {id: "point-control"}
@@ -30,7 +35,8 @@
             new OpenLayers.Control.DrawFeature(
                 vector, OpenLayers.Handler.Polygon, {id: "poly-control"}
             ),
-            new OpenLayers.Control.ModifyFeature(vector, {id: "mod-control"})
+            new OpenLayers.Control.ModifyFeature(vector, {id: "mod-control"}),
+            new OpenLayers.Control.ZoomPanel()
         ],
         layers: [new OpenLayers.Layer.OSM(), vector],
         center: new OpenLayers.LonLat(0, 0),

Modified: sandbox/cmoullet/openlayers/examples/popupMatrix.html
===================================================================
--- sandbox/cmoullet/openlayers/examples/popupMatrix.html	2011-02-22 14:40:37 UTC (rev 11243)
+++ sandbox/cmoullet/openlayers/examples/popupMatrix.html	2011-02-22 14:41:55 UTC (rev 11244)
@@ -83,7 +83,7 @@
 
             layer = new OpenLayers.Layer.Image(
                 "popupMatrix", 
-                "popupMatrix.jpg", 
+                "img/popupMatrix.jpg", 
                 new OpenLayers.Bounds(-82.5,-71.5,97.5,67.5),
                 new OpenLayers.Size(1024,768)
             );
@@ -109,52 +109,52 @@
             //anchored popup small contents no autosize
             ll = new OpenLayers.LonLat(-55,20);
             popupClass = OpenLayers.Popup.Anchored;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML);
 
             //anchored popup small contents no autosize closebox
             var ll = new OpenLayers.LonLat(-50,20);
             popupClass = OpenLayers.Popup.Anchored;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, true);
 
 
             //anchored popup small contents autosize
             ll = new OpenLayers.LonLat(-40,20);
             popupClass = AutoSizeAnchored;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML);
 
             //anchored popup small contents autosize closebox
             ll = new OpenLayers.LonLat(-35,20);
             popupClass = AutoSizeAnchored;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, true);
 
 
             //anchored popup small contents autosize minsize
             ll = new OpenLayers.LonLat(-25,20);
             popupClass = AutoSizeAnchoredMinSize;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML);
 
             //anchored popup small contents autosize minsize closebox
             ll = new OpenLayers.LonLat(-20,20);
             popupClass = AutoSizeAnchoredMinSize;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, true);
 
 
             //anchored popup small contents autosize maxsize
             ll = new OpenLayers.LonLat(-10,20);
             popupClass = AutoSizeAnchoredMaxSize;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML);
 
             //anchored popup small contents autosize maxsize closebox
             ll = new OpenLayers.LonLat(-5,20);
             popupClass = AutoSizeAnchoredMaxSize;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, true);
 
 
@@ -186,39 +186,39 @@
             //anchored popup wide short fixed contents autosize
             ll = new OpenLayers.LonLat(35,20);
             popupClass = AutoSizeAnchored;
-            popupContentHTML = '<img src="wideshort.jpg"></img>';
+            popupContentHTML = '<img src="img/wideshort.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML);
 
             //anchored popup wide short fixed contents autosize closebox
             ll = new OpenLayers.LonLat(40,20);
             popupClass = AutoSizeAnchored;
-            popupContentHTML = '<img src="wideshort.jpg"></img>';
+            popupContentHTML = '<img src="img/wideshort.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, true);
 
 
             //anchored popup thin long fixed contents autosize
             ll = new OpenLayers.LonLat(50,20);
             popupClass = AutoSizeAnchored;
-            popupContentHTML = '<img src="thinlong.jpg"></img>';
+            popupContentHTML = '<img src="img/thinlong.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML);
 
             //anchored popup thin long fixed contents autosize closebox
             ll = new OpenLayers.LonLat(55,20);
             popupClass = AutoSizeAnchored;
-            popupContentHTML = '<img src="thinlong.jpg"></img>';
+            popupContentHTML = '<img src="img/thinlong.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, true);
 
 
             //anchored popup wide long fixed contents autosize
             ll = new OpenLayers.LonLat(65,20);
             popupClass = AutoSizeAnchored;
-            popupContentHTML = '<img  src="widelong.jpg"></img>' 
+            popupContentHTML = '<img  src="img/widelong.jpg"></img>' 
             addMarker(ll, popupClass, popupContentHTML);
 
             //anchored popup wide long fixed contents autosize closebox
             ll = new OpenLayers.LonLat(70,20);
             popupClass = AutoSizeAnchored;
-            popupContentHTML = '<img  src="widelong.jpg"></img>' 
+            popupContentHTML = '<img  src="img/widelong.jpg"></img>' 
             addMarker(ll, popupClass, popupContentHTML, true);
 
         //
@@ -228,52 +228,52 @@
             //anchored popup small contents no autosize overflow
             var ll = new OpenLayers.LonLat(-55,15);
             popupClass = OpenLayers.Popup.Anchored;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, false, true);
 
             //anchored popup small contents no autosize closebox overflow
             var ll = new OpenLayers.LonLat(-50,15);
             popupClass = OpenLayers.Popup.Anchored;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, true, true);
 
 
             //anchored popup small contents autosize overflow
             ll = new OpenLayers.LonLat(-40,15);
             popupClass = AutoSizeAnchored;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, false, true);
 
             //anchored popup small contents autosize closebox overflow
             ll = new OpenLayers.LonLat(-35,15);
             popupClass = AutoSizeAnchored;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, true, true);
 
 
             //anchored popup small contents autosize minsize overflow
             ll = new OpenLayers.LonLat(-25,15);
             popupClass = AutoSizeAnchoredMinSize;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, false, true);
 
             //anchored popup small contents autosize minsize closebox overflow
             ll = new OpenLayers.LonLat(-20,15);
             popupClass = AutoSizeAnchoredMinSize;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, true, true);
 
 
             //anchored popup small contents autosize maxsize overflow
             ll = new OpenLayers.LonLat(-10,15);
             popupClass = AutoSizeAnchoredMaxSize;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, false, true);
 
             //anchored popup small contents autosize maxsize closebox overflow
             ll = new OpenLayers.LonLat(-5,15);
             popupClass = AutoSizeAnchoredMaxSize;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, true, true);
 
 
@@ -305,39 +305,39 @@
             //anchored popup wide short fixed contents autosize overflow
             ll = new OpenLayers.LonLat(35,15);
             popupClass = AutoSizeAnchored;
-            popupContentHTML = '<img src="wideshort.jpg"></img>' 
+            popupContentHTML = '<img src="img/wideshort.jpg"></img>' 
             addMarker(ll, popupClass, popupContentHTML, false, true);
 
             //anchored popup wide short fixed contents autosize closebox overflow
             ll = new OpenLayers.LonLat(40,15);
             popupClass = AutoSizeAnchored;
-            popupContentHTML = '<img src="wideshort.jpg"></img>' 
+            popupContentHTML = '<img src="img/wideshort.jpg"></img>' 
             addMarker(ll, popupClass, popupContentHTML, true, true);
 
 
             //anchored popup thin long fixed contents autosize overflow
             ll = new OpenLayers.LonLat(50,15);
             popupClass = AutoSizeAnchored;
-            popupContentHTML = '<img src="thinlong.jpg"></img>' 
+            popupContentHTML = '<img src="img/thinlong.jpg"></img>' 
             addMarker(ll, popupClass, popupContentHTML, false, true);
 
             //anchored popup thin long fixed contents autosize closebox overflow
             ll = new OpenLayers.LonLat(55,15);
             popupClass = AutoSizeAnchored;
-            popupContentHTML = '<img src="thinlong.jpg"></img>' 
+            popupContentHTML = '<img src="img/thinlong.jpg"></img>' 
             addMarker(ll, popupClass, popupContentHTML, true, true);
 
 
             //anchored popup wide long fixed contents autosize overflow
             ll = new OpenLayers.LonLat(65,15);
             popupClass = AutoSizeAnchored;
-            popupContentHTML = '<img src="widelong.jpg"></img>' 
+            popupContentHTML = '<img src="img/widelong.jpg"></img>' 
             addMarker(ll, popupClass, popupContentHTML, false, true);
 
             //anchored popup wide long fixed contents autosize closebox overflow
             ll = new OpenLayers.LonLat(70,15);
             popupClass = AutoSizeAnchored;
-            popupContentHTML = '<img src="widelong.jpg"></img>' 
+            popupContentHTML = '<img src="img/widelong.jpg"></img>' 
             addMarker(ll, popupClass, popupContentHTML, true, true);
 
 
@@ -348,52 +348,52 @@
             //anchored bubble popup small contents no autosize
             var ll = new OpenLayers.LonLat(-55,5);
             popupClass = OpenLayers.Popup.AnchoredBubble;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, false);
 
             //anchored bubble popup small contents no autosize closebox
             var ll = new OpenLayers.LonLat(-50,5);
             popupClass = OpenLayers.Popup.AnchoredBubble;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, true);
 
 
             //anchored bubble popup small contents autosize
             ll = new OpenLayers.LonLat(-40,5);
             popupClass = AutoSizeAnchoredBubble;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, false);
 
             //anchored bubble popup small contents autosize closebox
             ll = new OpenLayers.LonLat(-35,5);
             popupClass = AutoSizeAnchoredBubble;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, true);
 
 
             //anchored bubble popup small contents autosize minsize
             ll = new OpenLayers.LonLat(-25,5);
             popupClass = AutoSizeAnchoredBubbleMinSize;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, false);
 
             //anchored bubble popup small contents autosize minsize closebox
             ll = new OpenLayers.LonLat(-20,5);
             popupClass = AutoSizeAnchoredBubbleMinSize;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, true);
 
 
             //anchored bubble popup small contents autosize maxsize
             ll = new OpenLayers.LonLat(-10,5);
             popupClass = AutoSizeAnchoredBubbleMaxSize;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, false);
 
             //anchored bubble popup small contents autosize maxsize closebox
             ll = new OpenLayers.LonLat(-5,5);
             popupClass = AutoSizeAnchoredBubbleMaxSize;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, true);
 
 
@@ -426,39 +426,39 @@
             //anchored bubble popup wide short fixed contents autosize
             ll = new OpenLayers.LonLat(35,5);
             popupClass = AutoSizeAnchoredBubble;
-            popupContentHTML = '<img src="wideshort.jpg"></img>' 
+            popupContentHTML = '<img src="img/wideshort.jpg"></img>' 
             addMarker(ll, popupClass, popupContentHTML);
 
             //anchored bubble popup wide short fixed contents autosize closebox
             ll = new OpenLayers.LonLat(40,5);
             popupClass = AutoSizeAnchoredBubble;
-            popupContentHTML = '<img src="wideshort.jpg"></img>' 
+            popupContentHTML = '<img src="img/wideshort.jpg"></img>' 
             addMarker(ll, popupClass, popupContentHTML, true);
 
 
             //anchored bubble popup thin long fixed contents autosize
             ll = new OpenLayers.LonLat(50,5);
             popupClass = AutoSizeAnchoredBubble;
-            popupContentHTML = '<img src="thinlong.jpg"></img>' 
+            popupContentHTML = '<img src="img/thinlong.jpg"></img>' 
             addMarker(ll, popupClass, popupContentHTML);
 
             //anchored bubble popup thin long fixed contents autosize closebox
             ll = new OpenLayers.LonLat(55,5);
             popupClass = AutoSizeAnchoredBubble;
-            popupContentHTML = '<img src="thinlong.jpg"></img>' 
+            popupContentHTML = '<img src="img/thinlong.jpg"></img>' 
             addMarker(ll, popupClass, popupContentHTML, true);
 
 
             //anchored bubble popup wide long fixed contents autosize
             ll = new OpenLayers.LonLat(65,5);
             popupClass = AutoSizeAnchoredBubble;
-            popupContentHTML = '<img src="widelong.jpg"></img>' 
+            popupContentHTML = '<img src="img/widelong.jpg"></img>' 
             addMarker(ll, popupClass, popupContentHTML);
 
             //anchored bubble popup wide long fixed contents autosize closebox
             ll = new OpenLayers.LonLat(70,5);
             popupClass = AutoSizeAnchoredBubble;
-            popupContentHTML = '<img src="widelong.jpg"></img>' 
+            popupContentHTML = '<img src="img/widelong.jpg"></img>' 
             addMarker(ll, popupClass, popupContentHTML, true);
 
           //
@@ -468,52 +468,52 @@
               //anchored bubble popup small contents no autosize
             var ll = new OpenLayers.LonLat(-55,0);
             popupClass = OpenLayers.Popup.AnchoredBubble;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, false, true);
 
               //anchored bubble popup small contents no autosize closebox
             var ll = new OpenLayers.LonLat(-50,0);
             popupClass = OpenLayers.Popup.AnchoredBubble;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, true, true);
 
 
             //anchored bubble popup small contents autosize
             ll = new OpenLayers.LonLat(-40,0);
             popupClass = AutoSizeAnchoredBubble;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, false, true);
 
             //anchored bubble popup small contents autosize closebox
             ll = new OpenLayers.LonLat(-35,0);
             popupClass = AutoSizeAnchoredBubble;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, true, true);
 
 
             //anchored bubble popup small contents autosize minsize
             ll = new OpenLayers.LonLat(-25,0);
             popupClass = AutoSizeAnchoredBubbleMinSize;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, false, true);
 
             //anchored bubble popup small contents autosize minsize closebox
             ll = new OpenLayers.LonLat(-20,0);
             popupClass = AutoSizeAnchoredBubbleMinSize;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, true, true);
 
 
             //anchored bubble popup small contents autosize maxsize
             ll = new OpenLayers.LonLat(-10,0);
             popupClass = AutoSizeAnchoredBubbleMaxSize;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, false, true);
 
             //anchored bubble popup small contents autosize maxsize closebox
             ll = new OpenLayers.LonLat(-5,0);
             popupClass = AutoSizeAnchoredBubbleMaxSize;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, true, true);
 
 
@@ -546,39 +546,39 @@
             //anchored bubble popup wide short fixed contents autosize overflow
             ll = new OpenLayers.LonLat(35,0);
             popupClass = AutoSizeAnchoredBubble;
-            popupContentHTML = '<img src="wideshort.jpg"></img>' 
+            popupContentHTML = '<img src="img/wideshort.jpg"></img>' 
             addMarker(ll, popupClass, popupContentHTML, false, true);
 
             //anchored bubble popup wide short fixed contents autosize closebox overflow
             ll = new OpenLayers.LonLat(40,0);
             popupClass = AutoSizeAnchoredBubble;
-            popupContentHTML = '<img src="wideshort.jpg"></img>' 
+            popupContentHTML = '<img src="img/wideshort.jpg"></img>' 
             addMarker(ll, popupClass, popupContentHTML, true, true);
 
 
             //anchored bubble popup thin long fixed contents autosize overflow
             ll = new OpenLayers.LonLat(50,0);
             popupClass = AutoSizeAnchoredBubble;
-            popupContentHTML = '<img src="thinlong.jpg"></img>' 
+            popupContentHTML = '<img src="img/thinlong.jpg"></img>' 
             addMarker(ll, popupClass, popupContentHTML, false, true);
 
             //anchored bubble popup thin long fixed contents autosize closebox overflow
             ll = new OpenLayers.LonLat(55,0);
             popupClass = AutoSizeAnchoredBubble;
-            popupContentHTML = '<img src="thinlong.jpg"></img>' 
+            popupContentHTML = '<img src="img/thinlong.jpg"></img>' 
             addMarker(ll, popupClass, popupContentHTML, true, true);
 
 
             //anchored bubble popup wide long fixed contents autosize overflow
             ll = new OpenLayers.LonLat(65,0);
             popupClass = AutoSizeAnchoredBubble;
-            popupContentHTML = '<img src="widelong.jpg"></img>' 
+            popupContentHTML = '<img src="img/widelong.jpg"></img>' 
             addMarker(ll, popupClass, popupContentHTML, false, true);
 
             //anchored bubble popup wide long fixed contents autosize closebox overflow
             ll = new OpenLayers.LonLat(70,0);
             popupClass = AutoSizeAnchoredBubble;
-            popupContentHTML = '<img src="widelong.jpg"></img>' 
+            popupContentHTML = '<img src="img/widelong.jpg"></img>' 
             addMarker(ll, popupClass, popupContentHTML, true, true);
 
    //FRAMED
@@ -590,52 +590,52 @@
               //anchored bubble popup small contents no autosize
             var ll = new OpenLayers.LonLat(-55,-15);
             popupClass = OpenLayers.Popup.FramedCloud;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, false);
 
               //anchored bubble popup small contents no autosize closebox
             var ll = new OpenLayers.LonLat(-50,-15);
             popupClass = OpenLayers.Popup.FramedCloud;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, true);
 
 
             //anchored bubble popup small contents autosize
             ll = new OpenLayers.LonLat(-40,-15);
             popupClass = AutoSizeFramedCloud;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, false);
 
             //anchored bubble popup small contents autosize closebox
             ll = new OpenLayers.LonLat(-35,-15);
             popupClass = AutoSizeFramedCloud;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, true);
 
 
             //anchored bubble popup small contents autosize minsize
             ll = new OpenLayers.LonLat(-25,-15);
             popupClass = AutoSizeFramedCloudMinSize;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, false);
 
             //anchored bubble popup small contents autosize minsize closebox
             ll = new OpenLayers.LonLat(-20,-15);
             popupClass = AutoSizeFramedCloudMinSize;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, true);
 
 
             //anchored bubble popup small contents autosize maxsize
             ll = new OpenLayers.LonLat(-10,-15);
             popupClass = AutoSizeFramedCloudMaxSize;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, false);
 
             //anchored bubble popup small contents autosize maxsize closebox
             ll = new OpenLayers.LonLat(-5,-15);
             popupClass = AutoSizeFramedCloudMaxSize;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, true);
 
 
@@ -668,39 +668,39 @@
             //anchored bubble popup wide short fixed contents autosize
             ll = new OpenLayers.LonLat(35,-15);
             popupClass = AutoSizeFramedCloud;
-            popupContentHTML = '<img src="wideshort.jpg"></img>' 
+            popupContentHTML = '<img src="img/wideshort.jpg"></img>' 
             addMarker(ll, popupClass, popupContentHTML);
 
             //anchored bubble popup wide short fixed contents autosize closebox
             ll = new OpenLayers.LonLat(40,-15);
             popupClass = AutoSizeFramedCloud;
-            popupContentHTML = '<img src="wideshort.jpg"></img>' 
+            popupContentHTML = '<img src="img/wideshort.jpg"></img>' 
             addMarker(ll, popupClass, popupContentHTML, true);
 
 
             //anchored bubble popup thin long fixed contents autosize
             ll = new OpenLayers.LonLat(50,-15);
             popupClass = AutoSizeFramedCloud;
-            popupContentHTML = '<img src="thinlong.jpg"></img>' 
+            popupContentHTML = '<img src="img/thinlong.jpg"></img>' 
             addMarker(ll, popupClass, popupContentHTML);
 
             //anchored bubble popup thin long fixed contents autosize closebox
             ll = new OpenLayers.LonLat(55,-15);
             popupClass = AutoSizeFramedCloud;
-            popupContentHTML = '<img src="thinlong.jpg"></img>' 
+            popupContentHTML = '<img src="img/thinlong.jpg"></img>' 
             addMarker(ll, popupClass, popupContentHTML, true);
 
 
             //anchored bubble popup wide long fixed contents autosize
             ll = new OpenLayers.LonLat(65,-15);
             popupClass = AutoSizeFramedCloud;
-            popupContentHTML = '<img src="widelong.jpg"></img>' 
+            popupContentHTML = '<img src="img/widelong.jpg"></img>' 
             addMarker(ll, popupClass, popupContentHTML);
 
             //anchored bubble popup wide long fixed contents autosize closebox
             ll = new OpenLayers.LonLat(70,-15);
             popupClass = AutoSizeFramedCloud;
-            popupContentHTML = '<img src="widelong.jpg"></img>' 
+            popupContentHTML = '<img src="img/widelong.jpg"></img>' 
             addMarker(ll, popupClass, popupContentHTML, true);
 
           //
@@ -710,52 +710,52 @@
               //anchored bubble popup small contents no autosize
             var ll = new OpenLayers.LonLat(-55,-20);
             popupClass = OpenLayers.Popup.FramedCloud;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, false, true);
 
               //anchored bubble popup small contents no autosize closebox
             var ll = new OpenLayers.LonLat(-50,-20);
             popupClass = OpenLayers.Popup.FramedCloud;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, true, true);
 
 
             //anchored bubble popup small contents autosize
             ll = new OpenLayers.LonLat(-40,-20);
             popupClass = AutoSizeFramedCloud;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, false, true);
 
             //anchored bubble popup small contents autosize closebox
             ll = new OpenLayers.LonLat(-35,-20);
             popupClass = AutoSizeFramedCloud;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, true, true);
 
 
             //anchored bubble popup small contents autosize minsize
             ll = new OpenLayers.LonLat(-25,-20);
             popupClass = AutoSizeFramedCloudMinSize;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, false, true);
 
             //anchored bubble popup small contents autosize minsize closebox
             ll = new OpenLayers.LonLat(-20,-20);
             popupClass = AutoSizeFramedCloudMinSize;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, true, true);
 
 
             //anchored bubble popup small contents autosize maxsize
             ll = new OpenLayers.LonLat(-10,-20);
             popupClass = AutoSizeFramedCloudMaxSize;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, false, true);
 
             //anchored bubble popup small contents autosize maxsize closebox
             ll = new OpenLayers.LonLat(-5,-20);
             popupClass = AutoSizeFramedCloudMaxSize;
-            popupContentHTML = '<img src="small.jpg"></img>';
+            popupContentHTML = '<img src="img/small.jpg"></img>';
             addMarker(ll, popupClass, popupContentHTML, true, true);
 
 
@@ -788,39 +788,39 @@
             //anchored bubble popup wide short fixed contents autosize overflow
             ll = new OpenLayers.LonLat(35,-20);
             popupClass = AutoSizeFramedCloud;
-            popupContentHTML = '<img src="wideshort.jpg"></img>' 
+            popupContentHTML = '<img src="img/wideshort.jpg"></img>' 
             addMarker(ll, popupClass, popupContentHTML, false, true);
 
             //anchored bubble popup wide short fixed contents autosize closebox overflow
             ll = new OpenLayers.LonLat(40,-20);
             popupClass = AutoSizeFramedCloud;
-            popupContentHTML = '<img src="wideshort.jpg"></img>' 
+            popupContentHTML = '<img src="img/wideshort.jpg"></img>' 
             addMarker(ll, popupClass, popupContentHTML, true, true);
 
 
             //anchored bubble popup thin long fixed contents autosize overflow
             ll = new OpenLayers.LonLat(50,-20);
             popupClass = AutoSizeFramedCloud;
-            popupContentHTML = '<img src="thinlong.jpg"></img>' 
+            popupContentHTML = '<img src="img/thinlong.jpg"></img>' 
             addMarker(ll, popupClass, popupContentHTML, false, true);
 
             //anchored bubble popup thin long fixed contents autosize closebox overflow
             ll = new OpenLayers.LonLat(55,-20);
             popupClass = AutoSizeFramedCloud;
-            popupContentHTML = '<img src="thinlong.jpg"></img>' 
+            popupContentHTML = '<img src="img/thinlong.jpg"></img>' 
             addMarker(ll, popupClass, popupContentHTML, true, true);
 
 
             //anchored bubble popup wide long fixed contents autosize overflow
             ll = new OpenLayers.LonLat(65,-20);
             popupClass = AutoSizeFramedCloud;
-            popupContentHTML = '<img src="widelong.jpg"></img>' 
+            popupContentHTML = '<img src="img/widelong.jpg"></img>' 
             addMarker(ll, popupClass, popupContentHTML, false, true);
 
             //anchored bubble popup wide long fixed contents autosize closebox overflow
             ll = new OpenLayers.LonLat(70,-20);
             popupClass = AutoSizeFramedCloud;
-            popupContentHTML = '<img src="widelong.jpg"></img>' 
+            popupContentHTML = '<img src="img/widelong.jpg"></img>' 
             addMarker(ll, popupClass, popupContentHTML, true, true);
  
 
@@ -881,16 +881,16 @@
       <div id="map" class="smallmap"></div>
 
         <!-- preloading these images so the autosize will work correctly -->
-        <img src="wideshort.jpg" style="position:absolute; top:-5000px; left: -5000px"></img>
-        <img src="widelong.jpg" style="position:absolute; top:-5000px; left: -5000px"></img>
-        <img src="thinlong.jpg" style="position:absolute; top:-5000px; left: -5000px"></img>
+        <img src="img/wideshort.jpg" style="position:absolute; top:-5000px; left: -5000px"></img>
+        <img src="img/widelong.jpg" style="position:absolute; top:-5000px; left: -5000px"></img>
+        <img src="img/thinlong.jpg" style="position:absolute; top:-5000px; left: -5000px"></img>
 
        <p> All of the images in this file a pre-cached, meaning they are 
            loaded immediately when you load the page (they are just placed 
            far offscreen, that's why you don't see them). 
        </p>
        <br>    
-       <p> The only image that is *not* preloaded is small.jpg, the brazilian
+       <p> The only image that is *not* preloaded is img/small.jpg, the brazilian
            flag. We do this in order to test out to make sure that our auto-sizing
              code does in fact activate itself as the images load. To verify 
              this, clear your cache and reload this example page. Click on 

Deleted: sandbox/cmoullet/openlayers/examples/popupMatrix.jpg
===================================================================
(Binary files differ)

Deleted: sandbox/cmoullet/openlayers/examples/small.jpg
===================================================================
(Binary files differ)

Copied: sandbox/cmoullet/openlayers/examples/style.mobile.css (from rev 11242, trunk/openlayers/examples/style.mobile.css)
===================================================================
--- sandbox/cmoullet/openlayers/examples/style.mobile.css	                        (rev 0)
+++ sandbox/cmoullet/openlayers/examples/style.mobile.css	2011-02-22 14:41:55 UTC (rev 11244)
@@ -0,0 +1,25 @@
+div.olControlZoomPanel {
+    height: 108px
+    width: 36px;
+    position: absolute;
+    top: 20px;
+    left: 20px;
+}
+div.olControlZoomPanel div {
+    width: 36px;
+    height: 36px;
+    background-image: url(img/mobile-zoombar.png);
+    left: 0;
+}
+div.olControlZoomPanel .olControlZoomInItemInactive {
+    top: 0;
+    background-position: 0 0;
+}
+div.olControlZoomPanel .olControlZoomToMaxExtentItemInactive {
+    top: 36px;
+    background-position: 0 -36px;
+}
+div.olControlZoomPanel .olControlZoomOutItemInactive {
+    top: 72px;
+    background-position: 0 -72px;
+}

Deleted: sandbox/cmoullet/openlayers/examples/thinlong.jpg
===================================================================
(Binary files differ)

Deleted: sandbox/cmoullet/openlayers/examples/widelong.jpg
===================================================================
(Binary files differ)

Deleted: sandbox/cmoullet/openlayers/examples/wideshort.jpg
===================================================================
(Binary files differ)

Modified: sandbox/cmoullet/openlayers/lib/OpenLayers/Control/DragPan.js
===================================================================
--- sandbox/cmoullet/openlayers/lib/OpenLayers/Control/DragPan.js	2011-02-22 14:40:37 UTC (rev 11243)
+++ sandbox/cmoullet/openlayers/lib/OpenLayers/Control/DragPan.js	2011-02-22 14:41:55 UTC (rev 11244)
@@ -43,16 +43,48 @@
      *     mouse cursor leaves the map viewport. Default is false.
      */
     documentDrag: false,
-    
+
     /**
+     * Property: kinetic
+     * {OpenLayers.Kinetic} The OpenLayers.Kinetic object.
+     */
+    kinetic: null,
+
+    /**
+     * APIProperty: enableKinetic
+     * {Boolean} Set this option to enable "kinetic dragging". Can be
+     *     set to true or to an object. If set to an object this
+     *     object will be passed to the {<OpenLayers.Kinetic>}
+     *     constructor. Defaults to false.
+     */
+    enableKinetic: false,
+
+    /**
+     * APIProperty: kineticInterval
+     * {Integer} Interval in milliseconds between 2 steps in the "kinetic
+     *     scrolling". Applies only if enableKinetic is set. Defaults
+     *     to 10 milliseconds.
+     */
+    kineticInterval: 10,
+
+
+    /**
      * Method: draw
      * Creates a Drag handler, using <panMap> and
      * <panMapDone> as callbacks.
      */    
     draw: function() {
+        if(this.enableKinetic) {
+            var config = {interval: this.kineticInterval};
+            if(typeof this.enableKinetic === "object") {
+                config = OpenLayers.Util.extend(config, this.enableKinetic);
+            }
+            this.kinetic = new OpenLayers.Kinetic(config);
+        }
         this.handler = new OpenLayers.Handler.Drag(this, {
                 "move": this.panMap,
-                "done": this.panMapDone
+                "done": this.panMapDone,
+                "down": this.panMapStart
             }, {
                 interval: this.interval,
                 documentDrag: this.documentDrag
@@ -61,17 +93,29 @@
     },
 
     /**
+     * Method: panMapStart
+     */
+    panMapStart: function() {
+        if(this.kinetic) {
+            this.kinetic.begin();
+        }
+    },
+
+    /**
     * Method: panMap
     *
     * Parameters:
     * xy - {<OpenLayers.Pixel>} Pixel of the mouse position
     */
     panMap: function(xy) {
+        if(this.kinetic) {
+            this.kinetic.update(xy);
+        }
         this.panned = true;
         this.map.pan(
             this.handler.last.x - xy.x,
             this.handler.last.y - xy.y,
-            {dragging: this.handler.dragging, animate: false}
+            {dragging: true, animate: false}
         );
     },
     
@@ -85,7 +129,21 @@
      */
     panMapDone: function(xy) {
         if(this.panned) {
-            this.panMap(xy);
+            var res = null;
+            if (this.kinetic) {
+                res = this.kinetic.end(xy);
+            }
+            this.map.pan(
+                this.handler.last.x - xy.x,
+                this.handler.last.y - xy.y,
+                {dragging: !!res, animate: false}
+            );
+            if (res) {
+                var self = this;
+                this.kinetic.move(res, function(x, y, end) {
+                    self.map.pan(x, y, {dragging: !end, animate: false});
+                });
+            }
             this.panned = false;
         }
     },

Modified: sandbox/cmoullet/openlayers/lib/OpenLayers/Control/PanZoomBar.js
===================================================================
--- sandbox/cmoullet/openlayers/lib/OpenLayers/Control/PanZoomBar.js	2011-02-22 14:40:37 UTC (rev 11243)
+++ sandbox/cmoullet/openlayers/lib/OpenLayers/Control/PanZoomBar.js	2011-02-22 14:41:55 UTC (rev 11244)
@@ -386,7 +386,8 @@
                 zoomLevel = Math.min(Math.max(zoomLevel, 0), 
                                      this.map.getNumZoomLevels() - 1);
             } else {
-                zoomLevel += Math.round(this.deltaY/this.zoomStopHeight);
+                zoomLevel += this.deltaY/this.zoomStopHeight;
+                zoomLevel = Math.max(Math.round(zoomLevel), 0);      
             }
             this.map.zoomTo(zoomLevel);
             this.mouseDragStart = null;

Modified: sandbox/cmoullet/openlayers/lib/OpenLayers/Control/TouchNavigation.js
===================================================================
--- sandbox/cmoullet/openlayers/lib/OpenLayers/Control/TouchNavigation.js	2011-02-22 14:40:37 UTC (rev 11243)
+++ sandbox/cmoullet/openlayers/lib/OpenLayers/Control/TouchNavigation.js	2011-02-22 14:41:55 UTC (rev 11244)
@@ -128,7 +128,7 @@
      * evt - {Event}
      */
     defaultClick: function (evt) {
-        if(evt.lasttouches && evt.lasttouches.length == 2) {
+        if(evt.lastTouches && evt.lastTouches.length == 2) {
             this.map.zoomOut();
         }
     },

Modified: sandbox/cmoullet/openlayers/lib/OpenLayers/Handler/Click.js
===================================================================
--- sandbox/cmoullet/openlayers/lib/OpenLayers/Handler/Click.js	2011-02-22 14:40:37 UTC (rev 11243)
+++ sandbox/cmoullet/openlayers/lib/OpenLayers/Handler/Click.js	2011-02-22 14:41:55 UTC (rev 11244)
@@ -97,6 +97,12 @@
     last: null,
 
     /**
+     * Property: touch
+     * {Boolean} Are we on a touch enabled device? Default is false.
+     */
+    touch: false,
+
+    /**
      * Property: rightclickTimerId
      * {Number} The id of the right mouse timeout waiting to clear the 
      *     <delayedEvent>.
@@ -148,6 +154,7 @@
      * {Boolean} Continue propagating this event.
      */
     touchstart: function(evt) {
+        this.touch = true;
         this.down = evt;
         this.last = null;
         return true;
@@ -279,6 +286,10 @@
      * {Boolean} Continue propagating this event.
      */
     click: function(evt) {
+        // Sencha Touch emulates click events, see ticket 3079 for more info
+        if (this.touch === true && evt.type === "click") {
+            return !this.stopSingle;
+        }
         if(this.passesTolerance(evt)) {
             if(this.timerId != null) {
                 // already received a click

Copied: sandbox/cmoullet/openlayers/lib/OpenLayers/Kinetic.js (from rev 11242, trunk/openlayers/lib/OpenLayers/Kinetic.js)
===================================================================
--- sandbox/cmoullet/openlayers/lib/OpenLayers/Kinetic.js	                        (rev 0)
+++ sandbox/cmoullet/openlayers/lib/OpenLayers/Kinetic.js	2011-02-22 14:41:55 UTC (rev 11244)
@@ -0,0 +1,174 @@
+/* Copyright (c) 2006-2011 by OpenLayers Contributors (see authors.txt for 
+ * full list of contributors). Published under the Clear BSD license.  
+ * See http://svn.openlayers.org/trunk/openlayers/license.txt for the
+ * full text of the license. */
+
+OpenLayers.Kinetic = OpenLayers.Class({
+
+    /**
+     * Property: threshold
+     * In most cases changing the threshold isn't needed.
+     * In px/ms, default to 0.
+     */
+    threshold: 0,
+
+    /**
+     * Property: interval
+     * {Integer} Interval in milliseconds between 2 steps in the "kinetic
+     *     dragging". Defaults to 10 milliseconds.
+     */
+    interval: 10,
+
+    /**
+     * Property: deceleration
+     * {Float} the deseleration in px/ms², default to 0.0035.
+     */
+    deceleration: 0.0035,
+
+    /**
+     * Property: nbPoints
+     * {Integer} the number of points we use to calculate the kinetic
+     * initial values.
+     */
+    nbPoints: 100,
+
+    /**
+     * Property: delay
+     * {Float} time to consider to calculate the kinetic initial values.
+     * In ms, default to 200.
+     */
+    delay: 200,
+
+    /**
+     * Property: points
+     * List of points use to calculate the kinetic initial values.
+     */
+    points: undefined,
+
+    /**
+     * Property: timerId
+     * ID of the timer.
+     */
+    timerId: undefined,
+
+    /**
+     * Constructor: OpenLayers.Kinetic
+     *
+     * Parameters:
+     * options - {Object}
+     */
+    initialize: function(options) {
+        OpenLayers.Util.extend(this, options);
+    },
+
+    /**
+     * Method: begin
+     *
+     * Begins the dragging.
+     */
+    begin: function() {
+        clearInterval(this.timerId);
+        this.timerId = undefined;
+        this.points = [];
+    },
+
+    /**
+     * Method: update
+     *
+     * Updates during the dragging.
+     */
+    update: function(xy) {
+        this.points.unshift({xy: xy, tick: new Date().getTime()});
+        if (this.points.length > this.nbPoints) {
+            this.points.pop();
+        }
+    },
+
+    /**
+     * Method: end
+     *
+     * Ends the dragging, start the kinetic.
+     */
+    end: function(xy) {
+        var last, now = new Date().getTime();
+        for (var i = 0, l = this.points.length, point; i < l; i++) {
+            point = this.points[i];
+            if (now - point.tick > this.delay) {
+                break;
+            }
+            last = point;
+        }
+        if (!last) {
+            return;
+        }
+        var time = new Date().getTime() - last.tick;
+        var dist = Math.sqrt(Math.pow(xy.x - last.xy.x, 2) +
+                             Math.pow(xy.y - last.xy.y, 2));
+        var speed = dist / time;
+        if (speed == 0 || speed < this.threshold) {
+            return;
+        }
+        var theta = Math.asin((xy.y - last.xy.y) / dist);
+        if (last.xy.x <= xy.x) {
+            theta = Math.PI - theta;
+        }
+        return {speed: speed, theta: theta};
+    },
+
+    /**
+     * Method: move
+     *
+     * Launch the kinetic move pan.
+     *
+     * Parameters:
+     * info - {Object}
+     * callback - arguments x, y (values to pan), end (is the last point)
+     */
+    move: function(info, callback) {
+        var v0 = info.speed;
+        var fx = Math.cos(info.theta);
+        var fy = -Math.sin(info.theta);
+
+        var time = 0;
+        var initialTime = new Date().getTime();
+
+        var lastX = 0;
+        var lastY = 0;
+
+        var timerCallback = function() {
+            if (this.timerId == null) {
+                return;
+            }
+
+            time += this.interval;
+            var realTime = new Date().getTime() - initialTime;
+            var t = (time + realTime) / 2.0;
+
+            var p = (-this.deceleration * Math.pow(t, 2)) / 2.0 + v0 * t;
+            var x = p * fx;
+            var y = p * fy;
+
+            var args = {};
+            args.end = false;
+            var v = -this.deceleration * t + v0;
+
+            if (v <= 0) {
+                clearInterval(this.timerId);
+                this.timerId = null;
+                args.end = true;
+            }
+
+            args.x = x - lastX;
+            args.y = y - lastY;
+            lastX = x;
+            lastY = y;
+            callback(args.x, args.y, args.end);
+        };
+
+        this.timerId = window.setInterval(
+            OpenLayers.Function.bind(timerCallback, this),
+            this.interval);
+    },
+
+    CLASS_NAME: "OpenLayers.Kinetic"
+});

Modified: sandbox/cmoullet/openlayers/lib/OpenLayers.js
===================================================================
--- sandbox/cmoullet/openlayers/lib/OpenLayers.js	2011-02-22 14:40:37 UTC (rev 11243)
+++ sandbox/cmoullet/openlayers/lib/OpenLayers.js	2011-02-22 14:41:55 UTC (rev 11244)
@@ -105,6 +105,7 @@
                 "OpenLayers/BaseTypes/Size.js",
                 "OpenLayers/Console.js",
                 "OpenLayers/Tween.js",
+                "OpenLayers/Kinetic.js",
                 "Rico/Corner.js",
                 "Rico/Color.js",
                 "OpenLayers/Ajax.js",

Modified: sandbox/cmoullet/openlayers/tests/Control/PanZoomBar.html
===================================================================
--- sandbox/cmoullet/openlayers/tests/Control/PanZoomBar.html	2011-02-22 14:40:37 UTC (rev 11243)
+++ sandbox/cmoullet/openlayers/tests/Control/PanZoomBar.html	2011-02-22 14:41:55 UTC (rev 11244)
@@ -44,7 +44,7 @@
         control = new OpenLayers.Control.PanZoomBar();
         map.addControl(control);
         control.removeButtons();
-        control._removeZoomBar();
+        map.destroy();
         t.eq(control.div.childNodes.length, 0, "control's div cleared.");
         t.eq(control.zoombarDiv, null, "zoombar div nullified.")
     }
@@ -67,20 +67,104 @@
 
     }
 
-    function test_Control_PanZoomBar_forceFixedZoomLevel_divClick (t) {
+    function test_Control_PanZoomBar_forceFixedZoomLevel_divClick(t){
         t.plan(1);
-        map = new OpenLayers.Map('map', {controls:[], fractionalZoom: true});
-        var layer = new OpenLayers.Layer.WMS("Test Layer",
-            "http://octo.metacarta.com/cgi-bin/mapserv?",
-            {map: "/mapdata/vmap_wms.map", layers: "basic"});
+        map = new OpenLayers.Map('map', {
+            controls: [],
+            fractionalZoom: true
+        });
+        var layer = new OpenLayers.Layer.WMS("Test Layer", "http://octo.metacarta.com/cgi-bin/mapserv?", {
+            map: "/mapdata/vmap_wms.map",
+            layers: "basic"
+        });
         map.addLayer(layer);
-        control = new OpenLayers.Control.PanZoomBar({forceFixedZoomLevel: true});
+        control = new OpenLayers.Control.PanZoomBar({
+            forceFixedZoomLevel: true
+        });
         map.addControl(control);
-
-        control.divClick({'xy': {'x': 0, 'y': 49}, which: 1});
-        t.eq(map.zoom, 11, "forceFixedZoomLevel makes sure only fixed zoom levels are used even if the map has fractionalZoom");
+        
+        control.divClick({
+            'xy': {
+                'x': 0,
+                'y': 49
+            },
+            which: 1
+        });
+        t.eq(map.zoom, 11, "forceFixedZoomLevel makes sure that after a div click only fixed zoom levels are used even if the map has fractionalZoom");
+    }     
+         
+    function test_Control_PanZoomBar_forceFixedZoomLevel_zoomBarUp (t) {     
+        var numRandomDrags = 25;
+        // plan one static recorded test and two for every random drag
+        t.plan(1 + (numRandomDrags * 2));
+        
+        
+        var map = new OpenLayers.Map('map', {
+            controls: [],
+            fractionalZoom: true
+        });
+        var layer = new OpenLayers.Layer.WMS("Test Layer", "http://octo.metacarta.com/cgi-bin/mapserv?", {
+            map: "/mapdata/vmap_wms.map",
+            layers: "basic"
+        });
+        map.addLayer(layer);
+        
+        // zoom to a fractional ZoomLevel initially:
+        map.setCenter(new OpenLayers.LonLat(0, 0), 9.545);
+        
+        control = new OpenLayers.Control.PanZoomBar({
+            forceFixedZoomLevel: true
+        });
+        map.addControl(control);
+        
+        // The y values come from manually recording real values in an example
+        var evt = {
+            'xy': {
+                'x': 0,
+                'y': -10.633
+            },
+            which: 1
+        };
+        control.zoomStart = {
+            'x': 0,
+            'y': 5.366
+        };
+        control.mouseDragStart = {
+            'x': 0,
+            'y': -10.633
+        };
+        control.deltaY = control.zoomStart.y - evt.xy.y
+        control.zoomBarUp(evt);
+        t.eq(map.zoom, 11, "forceFixedZoomLevel makes sure that after dragging of the handle only fixed zoom levels are used even if the map has fractionalZoom");
+        
+        // randomly drag the handle around
+        // we should never get a zoom < 0 or a non-integer zoom, regardless of
+        // captured random values for start and end of the drag.
+        for (var i = 0; i < numRandomDrags; i++) {
+            var randStartY = Math.random() * 10 * ((i % 2 === 0) ? -1 : 1);
+            var randStopY = Math.random() * 160 * ((i % 2 === 1) ? -1 : 1);
+            var evt = {
+                'xy': {
+                    'x': 0,
+                    'y': randStopY
+                },
+                which: 1
+            };
+            control.zoomStart = {
+                'x': 0,
+                'y': randStartY
+            };
+            control.mouseDragStart = {
+                'x': 0,
+                'y': randStopY
+            };
+            control.deltaY = control.zoomStart.y - evt.xy.y
+            control.zoomBarUp(evt);
+            
+            t.eq(Math.floor(map.zoom), Math.ceil(map.zoom), 'Only integer zooms after random handle drag with forceFixedZoomLevel=true and fractionalZoom=true (current zoom was ' + map.zoom + ')');
+            t.ok(map.zoom >= 0, 'map.zoom is never < 0 after random handle drag with forceFixedZoomLevel=true and fractionalZoom=true');
+        }
     }
-
   </script>
 </head>
 <body>

Modified: sandbox/cmoullet/openlayers/tests/Control/TouchNavigation.html
===================================================================
--- sandbox/cmoullet/openlayers/tests/Control/TouchNavigation.html	2011-02-22 14:40:37 UTC (rev 11243)
+++ sandbox/cmoullet/openlayers/tests/Control/TouchNavigation.html	2011-02-22 14:41:55 UTC (rev 11244)
@@ -102,6 +102,28 @@
 
     }
 
+    function test_zoomOut(t) {
+        t.plan(1);
+
+        var map = new OpenLayers.Map(document.body);
+        var layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
+                    "http://labs.metacarta.com/wms/vmap0",
+                    {layers: 'basic'} );
+        map.addLayer(layer);
+        map.setCenter(new OpenLayers.LonLat(0, 0), 5);
+        var control = new OpenLayers.Control.TouchNavigation();
+        map.addControl(control);
+        var handler = control.handlers.click;
+        handler.touchstart({xy: {x: 1, y: 1}, touches: ["foo", "bar"]});
+        handler.touchend({});
+        t.delay_call(1, function() {
+            t.eq(map.getZoom(), 4, "Did we zoom out?");
+            // tear down
+            map.destroy();
+        });
+
+    }
+
   </script>
 </head>
 <body>

Modified: sandbox/cmoullet/openlayers/tests/Events.html
===================================================================
--- sandbox/cmoullet/openlayers/tests/Events.html	2011-02-22 14:40:37 UTC (rev 11243)
+++ sandbox/cmoullet/openlayers/tests/Events.html	2011-02-22 14:41:55 UTC (rev 11244)
@@ -305,9 +305,23 @@
         events.unregister("something", instance, listener1);
         events.unregister("something", instance, listener2);
         events.unregister("something", instance, listener3);
-        
     }
 
+    function test_Events_handleBrowserEvent(t) {
+        t.plan(2);
+        var events = new OpenLayers.Events({}, null, ['sometouchevent']);
+        events.on({'sometouchevent': function() {}});
+
+        // this test verifies that when handling a touch event we correctly
+        // set clientX and clientY in the event object 
+        var evt = {type: 'sometouchevent',
+                   touches: [{clientX: 1, clientY: 1}, {clientX: 2, clientY: 2}]
+                  };
+        events.handleBrowserEvent(evt);
+        t.eq(evt.clientX, 1, "evt.clientX value is correct");
+        t.eq(evt.clientY, 1, "evt.clientY value is correct");
+    }
+
     function test_Events_destroy (t) {
         t.plan(2);
 

Modified: sandbox/cmoullet/openlayers/tests/Handler/Click.html
===================================================================
--- sandbox/cmoullet/openlayers/tests/Handler/Click.html	2011-02-22 14:40:37 UTC (rev 11243)
+++ sandbox/cmoullet/openlayers/tests/Handler/Click.html	2011-02-22 14:41:55 UTC (rev 11244)
@@ -329,6 +329,43 @@
         });
     }
 
+    function test_touch_ignoresimulatedclick(t) {
+        t.plan(2);
+
+        // set up
+
+        var log;
+
+        var map = new OpenLayers.Map('map');
+        var control = {map: map};
+
+        var callbacks = {
+            'dblclick': function(e) {
+                log.dblclick = {x: e.xy.x, y: e.xy.y,
+                   lastTouches: e.lastTouches};
+            }
+        };
+
+        var handler = new OpenLayers.Handler.Click(
+                control, callbacks,
+                {'double': true, pixelTolerance: null});
+
+        // test
+
+        log = {};
+        handler.touchstart({xy: {x: 1, y: 1}, touches: ["foo"]});
+        handler.touchend({});
+        handler.touchstart({xy: {x: 1, y: 1}, touches: ["foo"]});
+        handler.touchend({type: "click"});
+
+        t.eq(handler.touch, true, "Touch property should be true");
+        
+        t.ok(log.dblclick == undefined, "dblclick callback not called with simulated click");
+
+        // tear down
+        map.destroy();
+    }
+
     function test_touch_dblclick(t) {
         t.plan(5);
 

Modified: sandbox/cmoullet/openlayers/tests/Handler/Drag.html
===================================================================
--- sandbox/cmoullet/openlayers/tests/Handler/Drag.html	2011-02-22 14:40:37 UTC (rev 11243)
+++ sandbox/cmoullet/openlayers/tests/Handler/Drag.html	2011-02-22 14:41:55 UTC (rev 11244)
@@ -289,6 +289,57 @@
         
     }
 
+    function test_Handler_Drag_touch(t) {
+        // In this test we verify that "touchstart", "touchmove", and
+        // "touchend" events set expected states in the drag handler.
+        // We also verify that we stop event bubbling as appropriate.
+
+        t.plan(12);
+
+        // set up
+
+        var m = new OpenLayers.Map('map', {controls: []});
+        var c = new OpenLayers.Control();
+        m.addControl(c);
+        var h = new OpenLayers.Handler.Drag(c, {
+            done: function(px) { log = px; }});
+        h.activate();
+
+        var _stop = OpenLayers.Event.stop;
+        OpenLayers.Event.stop = function(e) { log = e; };
+
+        var Px = OpenLayers.Pixel, e, log;
+
+        // test
+
+        e = {touches: [{}], xy: new Px(0, 0)};
+        m.events.triggerEvent('touchstart', e);
+        t.eq(h.started, true, '[touchstart] started is set');
+        t.eq(h.start.x, 0, '[touchstart] start.x is correct');
+        t.eq(h.start.y, 0, '[touchstart] start.y is correct');
+        t.eq(log, undefined, '[touchstart] event is not stopped');
+
+        e = {xy: new Px(1, 1)};
+        m.events.triggerEvent('touchmove', e);
+        t.eq(h.dragging, true, '[touchmove] dragging is set');
+        t.eq(h.last.x, 1, '[touchstart] last.x is correct');
+        t.eq(h.last.y, 1, '[touchstart] last.y is correct');
+        t.ok(log == e, '[touchmove] event is stopped');
+
+        e = {xy: new Px(2, 2)};
+        m.events.triggerEvent('touchend', e);
+        t.eq(h.started, false, '[touchend] started is reset');
+        t.eq(h.started, false, '[touchend] started is reset');
+        // the "done" callback gets the position of the last touchmove
+        t.eq(log.x, 1, '[touchend] done callback got correct x position');
+        t.eq(log.y, 1, '[touchend] done callback got correct y position');
+
+        // tear down
+
+        OpenLayers.Event.stop = _stop;
+        m.destroy();
+    }
+
     function test_Handler_Drag_submethods(t) {
         t.plan(8);
         

Copied: sandbox/cmoullet/openlayers/tests/Kinetic.html (from rev 11242, trunk/openlayers/tests/Kinetic.html)
===================================================================
--- sandbox/cmoullet/openlayers/tests/Kinetic.html	                        (rev 0)
+++ sandbox/cmoullet/openlayers/tests/Kinetic.html	2011-02-22 14:41:55 UTC (rev 11244)
@@ -0,0 +1,130 @@
+<html>
+<head>
+  <script src="OLLoader.js"></script>
+  <script type="text/javascript">
+
+    function test_Kinetic (t) {
+        t.plan(17);
+        var finish = false;
+        var results = {
+            110: {x: -2.7, y: -3.6, end: false},
+            120: {x: -2.1, y: -2.8, end: false},
+            130: {x: -1.5, y: -2.0, end: false},
+            140: {x: -0.9, y: -1.2, end: false},
+            150: {x: -0.3, y: -0.4, end: true}
+        };
+
+        var originalGetTime = Date.prototype.getTime;
+        Date.prototype.getTime = function() { return 0 };
+
+        var originalSetInterval = window.setInterval;
+        window.setInterval = function(callback, interval) {
+            while (!finish) {
+                var time = new Date().getTime();
+                Date.prototype.getTime = function() { return time+interval };
+                callback();
+            }
+        };
+
+        var kinetic = new OpenLayers.Kinetic({
+            deceleration: 0.01
+        });
+        kinetic.begin();
+        kinetic.update({x:0, y:0});
+        
+        Date.prototype.getTime = function() { return 100 };
+        var measure = kinetic.end({x:30, y:40});
+
+        t.eq(measure.speed, 0.5, "correct speed");
+        t.eq(measure.theta, Math.PI - Math.atan(40/30), "correct angle");
+
+        // fake timer id    
+        kinetic.timerId = 0;
+        kinetic.move(measure, function(x, y, end) {
+            var result = results[new Date().getTime()];
+            t.eq(Math.round(x * 1000) / 1000, result.x, "correct x");
+            t.eq(Math.round(y * 1000) / 1000, result.y, "correct y");
+            t.eq(end, result.end, "correct end");
+            finish = end;
+        });
+        
+        Date.prototype.getTime = originalGetTime;
+        window.setInterval = originalSetInterval;
+    }
+
+    function test_Angle (t) {
+        t.plan(8);
+        var results = [
+            {speed: 0.5, theta: Math.round((Math.PI - Math.atan(40/30)) * 1000000) / 1000000},
+            {speed: 0.5, theta: Math.round((Math.PI + Math.atan(40/30)) * 1000000) / 1000000},
+            {speed: 0.5, theta: Math.round((- Math.atan(40/30)) * 1000000) / 1000000},
+            {speed: 0.5, theta: Math.round((Math.atan(40/30)) * 1000000) / 1000000}
+        ];
+
+        var originalGetTime = Date.prototype.getTime;
+        Date.prototype.getTime = function() { return 0 };
+
+        var kinetic = new OpenLayers.Kinetic();
+        kinetic.begin();
+        kinetic.update({x:0, y:0});
+        
+        Date.prototype.getTime = function() { return 100 };
+        var measure = kinetic.end({x:30, y:40});
+
+        t.eq(measure.speed, results[0].speed, "correct speed");
+        t.eq(Math.round(measure.theta * 1000000) / 1000000,
+                results[0].theta, "correct angle");
+
+
+        var originalGetTime = Date.prototype.getTime;
+        Date.prototype.getTime = function() { return 0 };
+
+        var kinetic = new OpenLayers.Kinetic();
+        kinetic.begin();
+        kinetic.update({x:0, y:0});
+        
+        Date.prototype.getTime = function() { return 100 };
+        var measure = kinetic.end({x:30, y:-40});
+
+        t.eq(measure.speed, results[1].speed, "correct speed");
+        t.eq(Math.round(measure.theta * 1000000) / 1000000,
+                results[1].theta, "correct angle");
+
+
+        var originalGetTime = Date.prototype.getTime;
+        Date.prototype.getTime = function() { return 0 };
+
+        var kinetic = new OpenLayers.Kinetic();
+        kinetic.begin();
+        kinetic.update({x:0, y:0});
+        
+        Date.prototype.getTime = function() { return 100 };
+        var measure = kinetic.end({x:-30, y:-40});
+
+        t.eq(measure.speed, results[2].speed, "correct speed");
+        t.eq(Math.round(measure.theta * 1000000) / 1000000,
+                results[2].theta, "correct angle");
+
+        var originalGetTime = Date.prototype.getTime;
+        Date.prototype.getTime = function() { return 0 };
+
+        var kinetic = new OpenLayers.Kinetic();
+        kinetic.begin();
+        kinetic.update({x:0, y:0});
+        
+        Date.prototype.getTime = function() { return 100 };
+        var measure = kinetic.end({x:-30, y:40});
+
+        t.eq(measure.speed, results[3].speed, "correct speed");
+        t.eq(Math.round(measure.theta * 1000000) / 1000000,
+                results[3].theta, "correct angle");
+
+        Date.prototype.getTime = originalGetTime;
+    }
+  </script>
+</head>
+<body>
+    <div id="map" style="width: 600px; height: 300px;"/>
+    <div style="display: none;"><div id="invisimap"></div></div>
+</body>
+</html>

Modified: sandbox/cmoullet/openlayers/tests/list-tests.html
===================================================================
--- sandbox/cmoullet/openlayers/tests/list-tests.html	2011-02-22 14:40:37 UTC (rev 11243)
+++ sandbox/cmoullet/openlayers/tests/list-tests.html	2011-02-22 14:41:55 UTC (rev 11244)
@@ -208,5 +208,6 @@
     <li>Tile/Image/IFrame.html</li>
     <li>Tile/WFS.html</li>
     <li>Tween.html</li>
+    <li>Kinetic.html</li>
     <li>Util.html</li>
 </ul>



More information about the Commits mailing list