From: Subject: =?Windows-1252?Q?Tg_Roseto:_Pescara=2C_Asso:_domani_le_temperature_tocche?= =?Windows-1252?Q?ranno_i_39_C=B0?= Date: Fri, 8 Aug 2008 09:45:10 +0200 MIME-Version: 1.0 Content-Type: multipart/related; type="multipart/alternative"; boundary="----=_NextPart_000_0019_01C8F93B.72920CE0" X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5512 This is a multi-part message in MIME format. ------=_NextPart_000_0019_01C8F93B.72920CE0 Content-Type: image/jpeg Content-Transfer-Encoding: base64 Content-Location: http://img246.imageshack.us/img246/7291/temprn8.jpg /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAB/AcoDASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3xxnH rWHJ408LWtxNb3HiXR4ZonKPHJfRKysDgggtkEHj8K3jWB4N/wCQJc/9hXUv/S2egBP+E78If9DX of8A4MYf/iqP+E78If8AQ16H/wCDGH/4quhooA57/hO/CH/Q16H/AODGH/4qj/hO/CH/AENeh/8A gxh/+KroaKAOe/4Tvwh/0Neh/wDgxh/+Ko/4Tvwh/wBDXof/AIMYf/iq6GigDnv+E78If9DXof8A 4MYf/iqP+E78If8AQ16H/wCDGH/4quhooA57/hO/CH/Q16H/AODGH/4qj/hO/CH/AENeh/8Agxh/ +KroaKAOe/4Tvwh/0Neh/wDgxh/+Ko/4Tvwh/wBDXof/AIMYf/iq6GigDnv+E78If9DXof8A4MYf /iqP+E78If8AQ16H/wCDGH/4quhooA57/hO/CH/Q16H/AODGH/4qj/hO/CH/AENeh/8Agxh/+Kro a56y/wCShaz/ANgqw/8ARt3QAf8ACd+EP+hr0P8A8GMP/wAVR/wnfhD/AKGvQ/8AwYw//FV0NFAH Pf8ACd+EP+hr0P8A8GMP/wAVR/wnfhD/AKGvQ/8AwYw//FVrandw6fp1xfXL7Le2iaWVs4wigkn8 ua5a28YajcaG2uPoaQaPJZSX0N015kxqqF185FUsuRg/J5nfPpQBp/8ACd+EP+hr0P8A8GMP/wAV R/wnfhD/AKGvQ/8AwYw//FVWt/HGhNDpoub6KKa9t4ZwIxI8cYlHybpCgChiSF3hCeMDPSxH4y0C WeKFdRXzJbqa1RTG4xLCMyKfl42gEknA98EUAL/wnfhD/oa9D/8ABjD/APFUf8J34Q/6GvQ//BjD /wDFVFbeN/D01ndXK6mqQ2kAnkaaJ0JiPSRdwBdDyAygg9ia5+P4kwz+KJtNRYrW1gvbK1D3UUxk umuYmdUVdoMTAr/GCD3K8UAdL/wnfhD/AKGvQ/8AwYw//FUf8J34Q/6GvQ//AAYw/wDxVUvF/ibV PDb2ZtNJs7+O9uIrSJXvWileZyeAgiYFQoyW3DvxxXVRcL3/ABoAwv8AhO/CH/Q16H/4MYf/AIqj /hO/CH/Q16H/AODGH/4quhooA57/AITvwh/0Neh/+DGH/wCKo/4Tvwh/0Neh/wDgxh/+Kovf+Sha N/2Cr/8A9G2ldDQBz3/Cd+EP+hr0P/wYw/8AxVH/AAnfhD/oa9D/APBjD/8AFV0NY/inWJfD/hnU NXitBdmzgaYwGTZvAGTzg9snp2oArf8ACd+EP+hr0P8A8GMP/wAVR/wnfhD/AKGvQ/8AwYw//FVS t/HFnLq9/buIo9PsdOhvp795vlXzclV24/ujO7PfGOamfx14chgWeXUHj8y8SyEcltKsqzOCyK0Z QMuQDglQCAOaAJ/+E78If9DXof8A4MYf/iqP+E78If8AQ16H/wCDGH/4qo08aaDJYpfQ38kkTTvb CJLeVpzKv3k8oJ5m4DkjbkAZPHV0HjHw/d6laaba35nubu1W7t1gheQNCzbQ+VUqBuBByeMc4FAD v+E78If9DXof/gxh/wDiqP8AhO/CH/Q16H/4MYf/AIquc134l2dte2VppjxOtzHfM19PHKYbf7NH vY7QAZQSGBKNwQepGK2NY8XrpnhPT9ehtkvIrxoAkgkMMEay4xJI7LlIxkZYrkccDsAW/wDhO/CH /Q16H/4MYf8A4qj/AITvwh/0Neh/+DGH/wCKqz4X1r/hIvDljq/2Sa0F1EJBBMPmUc4+oPUHuMHj NbFAHPf8J34Q/wChr0P/AMGMP/xVH/Cd+EP+hr0P/wAGMP8A8VXQ1z/iL/kN+E/+wq//AKRXVACf 8J34Q/6GvQ//AAYw/wDxVH/Cd+EP+hr0P/wYw/8AxVTeKdei8L+Gb3WpreW4S0j3+VEMs2SB+XOS ewBPaqWneKZHsHvNUso7aIuBBJYXH26O6ypP7oRqHYjByNoPBIyBmgCf/hO/CH/Q16H/AODGH/4q j/hO/CH/AENeh/8Agxh/+KrCb4n6KNdjtQ/maS+k/wBqLqUYeQY87ytrRqhIAILFiRjHIHNbl94x 0OwngjuLx902FjMVtJKruy7lQMqkb2HITO48YByMgC/8J34Q/wChr0P/AMGMP/xVH/Cd+EP+hr0P /wAGMP8A8VWXovxE0XVvC1vrzi7tIbqd4YoJLd5JZChI+RFBMnyjcSu4DBBPynGjrni7T9H8GXPi iI/b7KKISx+Q2fM3EKuD2GTye3PpQA//AITvwh/0Neh/+DGH/wCKo/4Tvwh/0Neh/wDgxh/+KqPw 74qt9c0m+vZFjtn0+5mtbxDMHjjeI/MQ+BlcYIbA69KF8a6AYLyU30im0lSKWKS3mSUSSAeWojKh yWz8oCnd1FAEn/Cd+EP+hr0P/wAGMP8A8VR/wnfhD/oa9D/8GMP/AMVVdPHnhySzlukv5HWG8ayZ UtpGkM6KGdVjC7mwDk4BAGakufG/hyziheTU1aOe3+1IYIpJQIM4MjbAdiZONzYA6E8UASf8J34Q /wChr0P/AMGMP/xVH/Cd+EP+hr0P/wAGMP8A8VWbp/xC0a91jXbL99BBo8Mc0t5PGyxMrDO4Ej02 4JOXzlcgZrf0TXdO123llsJy/lNskSSNopIyRkBkYBlyCCMjkHPNAFe18W+HNSvYbOw8QaXd3Mmd kNveRyO2AScKpJOACfwrY3e4/WsPxF/yG/Cf/YVf/wBIrqt8fdH0oADWB4N/5Alz/wBhXUv/AEtn rfNYHg3/AJAlz/2FdS/9LZ6AOgooooAKKKKACiiigAooooAKKKKACiiigAooooAK56y/5KFrP/YK sP8A0bd10Nc9Zf8AJQtZ/wCwVYf+jbugDoaKKKAKuoWcOoWU9ncpvt54nilQjO5WGCMfQmvPbr4U LdizW51iMrp+mT6bZSJZASiOSFoh5z7/AN5tDEgAIOvqa9MrG8S63/YOnR3IjhkkklWGJJpvLVnb OBkKzEnGAFViT27gA4s/Ce3+xvp41QmzvbWxttTi+z83JtVUIUbd+6B2jd972weatH4W20vi/VtY utReWx1CGeMWCxbTC08aRyyB88kquPujr145p23xciv9Khu9P0hpJf7IuNXnhlufL2RRO0ZAIU7m Lq3YfLz1wKf/AMLZgSxa/wD7Lc2Vna2Nxqknn4e2+1KpRUXZ+9xuySNvt6UALB8I7AeHb/Rrie02 T2iWkc1rpscEiqrBg8jjLSPuRCSSFO37oOTSy/DC5vfEb65ea7G9xLqmn6jIsdltUm1R02j5zjfu znnbjHzdauS/EC6j8UPog0RYpDObeBry6NuZ22kq67k2tGTx8jM47IR1yvC3xH1bUPC/h2S6sba6 1zXJroWkSTGGJo4SxYu2xvLwBgAbs4BzycAHZax4dfVfEWgao155cGlSzTNbmLPnM8exTuz8u0kn oc57VvqMVj+FPENr4q8N2et2SyJb3SEqkgwylWKsD9CpGfatqgAooooA569/5KFo3/YKv/8A0baV 0Nc9e/8AJQtG/wCwVf8A/o20roaACq99bR3tlNazDMU0bRuCM5Vhg/oasUUAeZ6P8Jraz8E6v4e1 HVpL7+0jHuuUg8l0WJUWIAbmyF2DvirCfDFDHYH7Xp9vNa6xbam5sNKjto3EIYCPapzzuJ3MzYJO ABxXZa7qkWi6RcajN5YSBdxMsojQZIAyx6DJHYnjgE4B4rSvieNUuLLT4NKH9p3Oo3NgYHuCsamB Q8jBygONrDAKgknBA5NAEVz8Jbaaee7e9t7i6OsXeqQrd2ImgUXCqGjeIvh8bAQ2V55xWtoXgSPQ vElrq8N6jLb6OdL8iO0jhBYzGVpMJhV5J+UL3zk81g2Xxe/tHRbe8ttD33LadcatdW7Xe0Q20UrR HDbPnc7CQuB9RxV+9+JyW+o2gj0mQ6dcxW80V5cy/ZxMkoBHlll2Erkbld0JPTNAFF/hFvtLCwh1 wRWOnxajBaQmz3MiXcbKQzeZ8xQsTnAyABx1PQX3gn7X4R0PRF1Bkm0ZrWSG48rKSPAoVS8WfmU9 1yO3PHODo/xH1ZbLV5dXsLWS5HiL+xNOt7echWl4ARmKcKOT5mMnn5VwAez8K+JI/EtjdyfZzbXV jeS2N3Dv3qk0Z+YK2BuHIIOB1oAf4S8Pw+FvDFlosE0k6WqFfNk+85JJJ9hk8DsMVt0UUAFc/wCI v+Q34T/7Cr/+kV1XQVz/AIi/5DfhP/sKv/6RXVAGjqltc3mmy21pevZTyLtS5RFcxn12sCD6c+v4 1xKfDaVYbxzrXkT3t/b3dxHaWnlWzLEMGPydxBDj753cnB6DB9EXpS0AeTad8HrjS7NbeHxCpzos 2jyMbDO5JZ3lZh+84OH2j3GTx8pv3fwtWXWdJu4dZmW002ewlt7aaEyeUtspXYjbxtD5BPBO4Z57 elUZoA850/4Zy6Rp+iwWOsILrQ5rhtOuJbTdsjnzvWVfMAc/NwwK9uOudux8IQ6R4BXwtpt40EaQ NGlxNEk/LEszMjjawJJJB4wcV1dFAHLaL4Sj0bw5f6ZBdPHNfvNLNc2yCIpJIMZjXkJtwoUZOAoB NcTJ8K7zSYJb62u/7Uvzd6feRbIRGVltUZfMKtJiUuWywLp94ndnAPr9FAHlXh/4d6oiyaxc3AsN cXWb3ULQyRrOES4VUZZEV9pYhc8PgHHJ5Bt3Pwos10XS9N069WFbGB4EnltRJKpdixljkVkdH3Fi PmKc/dNelUUAed3vwvgvf7ein1aea21u2toLnzoy0wkt1AjlEgIHYMwKnJ7jpXQ+GvDTaPqOrare Xi3mqaq0Rupo4vKjxGuxFVNzYwM5+Y5J7DAro6KAOf8AEX/Ib8J/9hV//SK6rfH3R9KwPEX/ACG/ Cf8A2FX/APSK6rfH3R9KABu1cL4Y8W+HNNsb6zv/ABBpdrcx6rqG+G4vI43XN3MRlWII4IP413Rr A8G/8gS5/wCwrqX/AKWz0AJ/wnfhD/oa9D/8GMP/AMVR/wAJ34Q/6GvQ/wDwYw//ABVdDRQBz3/C d+EP+hr0P/wYw/8AxVH/AAnfhD/oa9D/APBjD/8AFV0NFAHPf8J34Q/6GvQ//BjD/wDFUf8ACd+E P+hr0P8A8GMP/wAVXQ0UAc9/wnfhD/oa9D/8GMP/AMVR/wAJ34Q/6GvQ/wDwYw//ABVdDRQBz3/C d+EP+hr0P/wYw/8AxVH/AAnfhD/oa9D/APBjD/8AFV0NFAHPf8J34Q/6GvQ//BjD/wDFUf8ACd+E P+hr0P8A8GMP/wAVXQ0UAc9/wnfhD/oa9D/8GMP/AMVR/wAJ34Q/6GvQ/wDwYw//ABVdDRQBzreO /CGOPFWhn/uIw/n96sOy8Z+Fk8c6tcN4k0dYH02yRJDfxbWZZbokA7sEgMpIHTcPWu+rnrL/AJKF rP8A2CrD/wBG3dAAfHfhD/oa9E/8GMP/AMVSf8J14Q/6GvQ//BjD/wDFVvucc00nNJuwm7GF/wAJ 14Qz/wAjVon/AIMIf/iqztZ8Q+AdatYYdQ8Q6FOkE6XEX/EyjDRyKcqykNkEfyJB4JrG8TX97D4i u0hvLiNBtwiSlQPlHOAap/aNS/sn+0Dqd3j7T5HlmVv7u7Oc14k86jCpKPK3a/U9aGVSlCM+ZLm/ Up6po3gG4sLew0nxhoGnWcNpLaCN7xZSiSszPtYTKSSWzhy6ggELxW1EvwySLT1k1zRJnsYIYEd9 VQCRYRiPzFDhXIxkbgcHOAKrKutPp0d6l5fmIo8jH7R0CnGR82T+IFOFt4jMjr5t2GUjINzxk9h8 3J46Uf2091Sf/DiWWrW9RaGibz4aNqg1Ntb0Rrnzhc7f7VXyzMBgSeUZNm/HG7GccZqBf+FXxacu nw63o8VukxniWLWtnks2d3lMJMxA5IIQgHJ45qFLbVGsBcPql8h8ieUoZGyDG2MH5vfpVaYa7awe fPcXiR8c/aCdvpkbs/nRLOHFX9m+/wAhQy5T0VRHVWHizwPptlFZ2XiLw/b28KhIoo76FVVfQDdV k+OfCBGP+Eq0TH/YRh/+KrkIhqT6VLqLatciOPaRH5zEkFtuTzwMg4/GpfDN/eS+IbWOW9uJIzuy jylgflPqacc4TnGDptc22vdg8rkoSmp35Tqx478Id/Feh/8Agxh/+Kpf+E78If8AQ16H/wCDGH/4 qt6M9van17Z5hwN74z8LP450m4XxJo7QJpt6jyC/i2qzS2pAJ3YBIViAeu0+lbi+O/CGOfFWhj/u Iw/n96lvf+ShaN/2Cr//ANG2ldDQBzx8d+EP+hq0P/wYw/8AxVJ/wnfhD/oatE/8GEP/AMVXQPxz WVeuwuSA7AbRwDivOzPMI4Cj7aUb62LhBydjF1nxL4E1zS59N1HxDoNzZXClZon1CLDDqOjZyDgg jBBGQciuZ1C28BFU/sbxXoNjIt5JfOZ78TiSeQAMxPnK/IGMBtpDMCDXR6hrr2Wu6TpoR3+3ecfM MpGzy03dMc5/pUd74jt9P1RrK7uQg8gSlt7lxukCDhV2gZI53A/7NeNHibmtyUW7q61W236GjoW6 mDplh8MrLw5p2j3PiLR7pLGN4llbVUjaVXcu6tscbkJP3DlfUHrWpqFx8M9RuvPuNa0FnIRXVdUR I5AhygkRXCyBTyAwYCtCTxFZIZB9rlYpN5BjRXdjJgMVAUEthTnjP161h6149TS5JWt4Wu4UsUvF lS4wJA0qx7QMH1zn2I4rSlxBOrLlhQld92l+YvY+Zbaf4ZSLqCnW9ECX8wuJ1TVlUecDnzVAfCSZ A+dcE9c1paV4k8B6LZLZ2HiPQ4YQSxH9pRszMSSWZi5LMSeSSSacdetDqIsBen7Tu2/xbN+M7d2N u7HO3PbpVTXNeudEjSdraaW0BXfIso3DLBQqqeXbnOOOM89jmuJuaah7F3e12l+Y/YeZsf8ACdeE P+hq0T/wYQ//ABVH/CdeEMf8jVof/gxh/wDiqfFI3mJiR8bh1OM/N71uLyM16eV5rHMIylGFuV2I nDkMH/hO/CH/AENeh/8Agxh/+KrC1/xl4Wn1fwy8XiXRpEh1J3lK38RCL9kuFy2G4G5lGT3IHeu9 FYHiL/kN+E/+wq//AKRXVeuZjB468I558V6J/wCDGH/4qnf8J14Q/wChr0P/AMGMP/xVb46fhTc8 D+tAn3MH/hO/CH/Q1aJ/4MIf/iqY3jjwgzA/8JVonGf+YjD/APFVh+ML67t9aSOC6niTyASscpUZ 3NzwayYLjUp7C7uxql2ottmVMzHdubHXdx0968WpnChVdNQu15+Vz1KeWTnTVTmST/XQ7RfHPhAc f8JVon/gwh/+Kp3/AAnfhD/oatE/8GEP/wAVXG2qa1fWpltry9kPmmPH2jA+7nOd+e/pSImvyJGy z3m14/MVmucfKehOSAOvfr2qFnV0mqTH/ZiTs6i0OyPjrwgf+Zq0T/wYQ/8AxVJ/wnPhDOf+Eq0T /wAGMP8A8VXM2Vjq90VSXU72CVrlrdlMjHGIy+eo9Ko/8T37ELw3F8ICm85nOQPXG7OKp5u4x5nS fX8CY5fGUrKojtB468Igf8jVof8A4MIf/iqP+E68I9/FWif+DGH/AOKrj7P+1Lyzubo6rOiQRyOA Z2LMVHOBnpyOai07Ur5tVtFa+uWVp4wVMzFWG4ZFT/bcdLwauW8qkua00+Xc7ceO/CH/AENeh/8A gxh/+Ko/4Tvwh/0Neh/+DGH/AOKrdj6fgKkr3Iu6ueUcTqPiXQtZ8SeFbfS9c069mXUpJGjtbqOV gos7gZIUkgZIGfeuw86NeC5BHBHJxWL4i/5DfhP/ALCr/wDpFdVvj7o+lMANYHg3/kCXP/YV1L/0 tnrfbtXB+G/Cfh7UbK9vL/w/pd1cS6rqG+a4s45JGIu5gPmYEngAfhQB3tFcFDpfw/utcbSIvCti L1BmRX8PuiKvzYO9oggUlGw2cNtIFbUfgXwgc/8AFK6JnPP/ABLov/iaAOjornv+EE8If9Cpof8A 4Lof/iaP+EE8If8AQqaH/wCC6H/4mgDoaK51vA3hAY/4pTQ//BdDz/47VWHwn4Il1KewXwzojXME MczqdNi4Ry4U524OTG/T0oA6yiue/wCEE8If9Cpof/guh/8AiaP+EE8If9Cpof8A4Lof/iaAOhor nv8AhBPCH/QqaH/4Lof/AImj/hBPCH/QqaH/AOC6H/4mgDoaK43VvD/gPRxF9p8K6W8suSkNtoy3 ErAY3NsjQttGQC2MAsozkjNVdM+HLXUFqmg6HL52wLPDpayQKXAKKZhH5YZgybQWBbemB8y5AO8o rh9R0b4f6TOsN74d0dHKiRymkI6wITgPKyIREvyt8zlVO1ucKcJFo3w/n1RtPi8OaOZt7RozaQqx SOudyLKU2M42vlVYkbXyPkOADua56y/5KFrP/YKsP/Rt3TB4F8I7f+RV0Qf9w+HPXp0/CsWy8GeF n8c6tbt4b0doE02ydIzYRbVZpboEgbcAkKoJHXaPSgDu3GeKaRisM+BPCH/QqaJ/4Lof/iaT/hBf CH/QqaH/AOC6H/4mk1cTVzlfE+n3k3iK7eKzuJIztwyRFgflHGQKrww3SaU2nz6Rfunn+eHjDKc4 C4+6a7I+BfCH/Qq6J/4L4f8A4mj/AIQXwhj/AJFXQ/8AwXw//E14lTJYyqSmptXv0PUjmklTjTcb pW6voczZXmoWX2RE0S6eG3EsZVlb51c5x90YwQOxp66lqrPdedpN7snmEw8oyRFTgDBYAZGAPSuh fwL4SxlfC2hjj/oHxf8AxNc9cx/C6y8TxeHLjTPD0WrzYVLdtOj6tnaC2zarHjAJBOV4ORWiyuVr Kq/u+RDxsG7umvvfe5CLrUzZC3OjXRPkzxFyj8mRs91J4x+OaS+n1C8trhf7Fuo5brZ58nlMd2zp gY46VNoKfC3xNqV3YaPpnh27ubX/AFsaadGOM4LKSgDrnjK5HIPcV0KeBvCJXH/CK6Hx1/4l8X/x NTLKW1b2r+4ax8VLm9mvvfqcbbw6jBY3dodLu2FyUy/lMNu1s9Mc1a8M2F5H4htZJbK4jjG7LPEV A+U+tdV/wgnhHHHhXRM/9g+H/wCJo/4QbwgOf+EV0TH/AGD4f/iamGSqE4z537u333NJ5rOUZR5L c3/DHQRj6dKfXPDwJ4Q/6FTQ/wDwXQ//ABNH/CCeEP8AoVND/wDBdD/8TXuHlBe/8lC0b/sFX/8A 6NtK6GuBvfBnhZPHOk26+G9HWB9NvXeMWEW1mWW1AJG3BIDMAT03H1rcXwJ4Qxz4V0M/9w6H8vu0 AdA/PFZV6jG5JCMRtHIGaqnwJ4Q/6FXQ/wDwXQ//ABNJ/wAIJ4Q/6FXRP/BfD/8AE152Z5fHH0fY ylbW5cJuLuZGsaDdX2raXqNrOIJrDzcLJbGRX3rt5wynjr1/wNK/8I3Gp3NzdXl0Glm09rEiO2Kg EuXEmCxPGQMfyrpP+EE8If8AQq6J/wCC+H/4mmv4G8IAf8irof8A4L4v/ia8mnw86SShWatt7q73 /M0da7u0cqvgQfYLKKeVLi8tpZZTNPa74pDIfm3R7vTGPmGCAai1L4fG9jaJLowK9ktoQtoAMiYS lsLtHODwAPXnJze15Phb4a1G0sNY03w7aXV1jykfTozwTjcxCYRcn7zED5T6Gp4tO+HM2uLpCaDo v22TzBGh0pVSYxkCQRuU2OyZ+ZVJK4bIBBrZZJWi7qu7+i9SfarsQ/8ACID+0vNLy/ZPt39oeSYy W87GM78/dzztx269qvajot3e6ra3avF5VucrFNbNIA56vw4GccAkHH44rSj8C+EsZbwtoecf9A+L /wCJp3/CCeEc/wDIq6H/AOC+H/4msZcOuUlJ1m2lbZdRqtboPjjfzUHltwy84zjn1rcXgYrA/wCE F8If9Cron/gvh/8AiaP+EF8IY/5FXQ//AAXQ/wDxNehlWVRy6MoRne7JnU5zoRWB4i/5DfhP/sKv /wCkV1Sf8IJ4Q/6FTQ//AAXQ/wDxNYWv+DfC0Gr+GUi8NaNGk2pOkoWwiAdfslw2GwvI3Kpwe4B7 V65md4On4U3HA/rWAPAvhHPPhTRP/BdD/wDE07/hBfCH/QqaH/4Lof8A4mgT7HPeMLK7n1pJILaa VfIA3Rxlhnc3HArLtYLyCzuraXSb6VLgJkojIV2nI6qe5rsz4F8ID/mVdE/8F8P/AMTR/wAIL4Qz z4V0Tnp/xL4f/ia8WplClVdVTab8u6s/wPThmTVJUuW6Xm/U5Wynv7CKKO30i82x3X2jLozHGzaV +6B681YfU9Ve6ndtHu0iljSPZGHVk2kkEOB6k9q6BvA3hAL/AMiroef+wfF/8TXP66nwt8N6jbad rOm+HbS5u8eUj6dHwCcbmITCLk43MQODzwaccqlBcqqu3p8ifrsG+Z0197CC/wBShk8z+xrxwLkz YPmE48vywvzAn3zVfz9TNns/sW5+1C1+y+d5b42Z/u4/Wrdva/DO7199Eg0fQXv0eSPyxpaBWdAp dFcpsZ0DKWVSSozkDBrdTwJ4SIyfC2hnj/oHxf8AxNDyqVuX2r+4PrsE7qmvvZxlnb6hY/aQNLu3 E9u1vzG2QDjnp7Umm6dfrqtmzWN0FE6MXaJgANw5zXb/APCC+Ecf8irof/gvh/8AiaP+EF8I/wDQ q6H/AOC6H/4mso5HBNPnehq82laSUErm9H0/AVJXPDwJ4Q/6FTQ//BdD/wDE0f8ACCeEP+hU0P8A 8F0P/wATXuxVlY8oXxF/yG/Cf/YVf/0iuq3x90fSuK1Hw1oWjeJPCtxpeh6dZTNqUkbSWtrHExU2 dwcEqASMgHHtXYeTG3JQknknkZpgSmue8If8gS4Hrqupc56f6bPW9ICSuCQBXD+G9IvrzT72eDxL qtmj6rqBEFvFbMif6XMOC8LMc9eT39KANDVNH1O81LxJJYubaS90aG0s7nzCmycG65+X5l2+ZGc4 78Vy+m+B3a4sI5NLvYNL/tBJLi1untIhgW9yjN5VoqoVZpYkYkszgbWUIvO5DLbXOqHS4PiVdS3/ AJjx/ZY5NPaXcudw2CDORtbP0rWHh7VP+hy1wH18my5/8l6APOR4Uu9HXwtYy6IjWrrZLcWMMyRL PcpaXv2kHadrOy7ASxCyYCsduSL134K1a4kgaa2vtnlOthDayWg/s0m4mdQXlVzDtjeBc224r5Jw Dtjz3P8Awjuqf9Dnrn/fmy/+R6P+Ed1T/oc9c/782X/yPQBzF14OuD4auITYPNPdatc3F2kbxySy 25mnaEIJmMJGXR9j/KNzsAJcGsfSPBOsWBuZZ9EQ3hS1kFxG8DFhb6hJN5II2HLQLAF+REwiKfLC gDvX8P6mB/yOeuZP/TKy/wDkeo00a+e5ktl8cawZ41V3jEdjuCtkKxH2fIBKsAe+0+lAGHpnh/UL 7xzLrer6T5FqZbieKM3CvtYxWKxFwpwWBgkOMMFdAQThHMXg/wANavpHitbue1eC3ks5Y71t8G2a 63xEONi+ZIn+s2vMzSctu2kkv0//AAjuqf8AQ565/wB+bL/5Ho/4R3VP+hz1z/vzZf8AyPQBxmte FNWvLPVIbXR8anL/AGg0upmSEfbYZY5xDb793mHb5kAw4CL5PB+Vc2fE3gq4uNUh+x2989qlqsVm baS2za3HmSNJPJJOryRsxeNjLFukJQswLKueq/4R3VP+hz1z/vzZf/I9H/CO6p/0Oeuf9+bL/wCR 6AItZhvbXxBpus21hPqEcFtcWzw28kayjzWhcN+8ZV2jymB+bI3LgYyRyumeENX01bCxltHlngbT 2F5DdAWaxwRwCQSxFgZJCYpNjmJiN0WGXYNnU3OiX9vEHm8b6xGrOkYMkdkoLMwVR/x79SxAA7kg d6bLo99DJDG/jbWVeZykYdLEF22s2FBt+ThWOPQE9qAMzxHpurX8mvC20q4ddb0oaWjmSLFsyNcL 5kvz52MJlYbA7YDZUHCmSy0jUo9TsLSWxkjgsNXvNSa9MiGKVJhc7VQbt+4faFzuUL8j4J43WLuz awuLa3vfiDqNvPdvst4pzYI0zZAwgMHzH5l4Hcj1ojtWm1WXS4viFqUmoRL5klspsDLGvHzFPIyB 8y9u49aAOtT9PesGy/5KFrP/AGCrD/0bd0weH9SIGfGOt5HX9zZHH529Ytloeot441WIeLNYWRNM si0oitCzAyXWFOYMYGCRxn5jknjAB31Fc9/wjuqf9Dnrn/fmy/8Akej/AIR3VP8Aoc9c/wC/Nl/8 j0AdDRXPf8I7qn/Q565/35sv/kej/hHdU/6HPXP+/Nl/8j0AbzrnHAP1Ga8+12DX7nx9pYh8IW93 oMF1FdyXhmhjb7TsMfnMCxMipGwwNqsWjXDYAB6F/D+pgf8AI565k/8ATKy/+R6pSWrQ6rFpcvxC 1KPUJV8yO2Y2AlkXn5gnkZI+Vu3Y+lAGX4RtddHjDULzV/CEGl2q2gs7C5jnhJjtY5CYovLVnIYh yWIbb8ijAxk+hJ34/wDr1yVjZtqFxdW9l8QtRuJ7R/LuIoDYO0LZIw4EHynKng+h9Kvf8I7qn/Q5 65/35sv/AJHoA6Giue/4R3VP+hz1z/vzZf8AyPR/wjuqf9Dnrn/fmy/+R6AOhornv+Ed1T/oc9c/ 782X/wAj0f8ACO6p/wBDnrn/AH5sv/kegAvf+ShaN/2Cr/8A9G2ldDXA3uh6ivjjSoj4s1hpH0y9 KymK0DKBJa5UYgxg5BPGflGCOc7g8O6nyR4y1sf9sbL/AOR6AOiornv+Ed1T/oc9c/782X/yPR/w juqf9Dnrn/fmy/8AkegDoaZIM4IzkdMVg/8ACO6p/wBDnrn/AH5sv/kej/hHdU/6HPXP+/Nl/wDI 9AHOfEG2167ubW10nwlDrVhL5b6kzzQxNMsUgkhiDuSSu4NuBQgq5AOSSLF5pWtah8TtE1b+zfIt NMiu4ri4lmSWOZHAEfkrkskn987E4BXc67c3r60bTbi0t734hajbzXcmy3jm+wI0rZAwgMGWOWUY HqKWXTri2vLazn8d6rHdXW7yInWxDzFRltqm3y2BknHTj1oA6qM53dcZ4zT650eHtU/6HLXAfXyb Ln/yXpf+Ed1T/oc9c/782X/yPQB0NFc9/wAI7qn/AEOeuf8Afmy/+R6P+Ed1T/oc9c/782X/AMj0 AdDXP+Iv+Q34T/7Cr/8ApFdUn/CO6p/0Oeuf9+bL/wCR6wtf0LUotX8Mg+K9ZlZ9SdVZorMGM/ZL g7lxABnAI5yME8ZwQAd6vSlrnV8Papj/AJHLWxz/AM8bL/5Hpf8AhHdU/wChz1z/AL82X/yPQB0N Fc9/wjuqf9Dnrn/fmy/+R6P+Ed1T/oc9c/782X/yPQBvSDOCM5HTFeffEG2167ubW00rwjBrVhN5 b6izzQxNKsUgkhiDOeV3BiwZCNrkAgkkdH/wjuqf9Dnrn/fmy/8AkeqV9aNptxaW978QtRt5ruTZ bxzfYEaVsgYQGDLHLKMD1FAHHaJ4G1+z+JkWoz2yLp9tq+p6kLsSqyypdRRrGqqDu3Ag7sqq8HDH ivXI8FentXMyaNfwvDHJ421lXmcpGGjsgXbazYUG35OFY49AT2qZfD2qHP8AxWeuf9+bL/5HoA6O iue/4R3VP+hz1z/vzZf/ACPR/wAI7qn/AEOeuf8Afmy/+R6AOhornv8AhHdU/wChz1z/AL82X/yP R/wjuqf9Dnrn/fmy/wDkegBfEX/Ib8J/9hV//SK6rfH3R9K4nU9KvLLxF4We58Rajfo2pSKI7mO2 CqTZ3PzDy4lOe3JI56Hiuzzn+MD2OeP1oAea53wgcaHc8/8AMV1L/wBLZq6B85UCuH8MXPiSPTrx bDStLuLX+1NQ2SXGpyROf9LmzlVgcDnP8R/oAC1qcGqrrXiifSYZBfPoduljIQNpuFa7KgF/lyCy Z7DcM8Gud0vT9ZnubG3TVdcfTJdQTznW2u7Qon2e58wFriSSbax8kE/KqkqUIfJHZfbPF/8A0AtD /wDBzN/8i0fbPF//AEAtD/8ABzN/8i0Aeexf25p9v4btLufxGttcw2Mt4Emled5Wtbw3KguS/Hlx kxody4BQBytWLuPxVK1uxvNWtYhE/wDZeyzuLiVm8+by9+yVFDCH7N/x9ZBJO7B83PaTy+KppIHk 8O6A7QuXjZtWlJRtpXKk2vynazDPoSO9Srd+Lx/zA9D/APBxMP8A21oA5m5tdYHh26llutYWS41e 5SZj50ht7ZZp/KCRQlZWQ/Jjy2DYYEsYk2ViaNa6/Fd3l/dw64uo+TZlmPn4NvBqMvmIAHdWb7Os ZChnZwzEFzIzN6F9s8X/APQC0P8A8HM3/wAi0fbPF/8A0AtD/wDBzN/8i0Ac5pjavq/jiS4l/tu0 0nzbmeKGTfEkqrFY+VkfwqW81guVP+sVhzIhi8HN4iTxUBftqTW01lK90LmGXZHdK8WIw7uVYgPJ 80KRRP1UEDCdR9s8X/8AQC0P/wAHM3/yLR9s8X/9ALQ//BzN/wDItAHGa5/bottUWwbXBredQ87Y Ljyfs3lz/ZvK/wCWXmZFrjy/3mc5531Z8Tadr8GqQQWeraosKWqG0lS2nunluzJIZC5ikjiXrCQJ x5PZQqBxXVfbPF//AEAtD/8ABzN/8i0fbPF//QC0P/wczf8AyLQBX8XaSmoWVhOttJcXNrqVk8W3 cwQfaoS8m0HGQgb5sZC7+QC2cfWNM11/iFo2qixtrmzjvVSCX7S+62hNrP5m5RGwUsznLBsNsgXA xuHQfbPF/wD0AtD/APBzN/8AItH2zxf/ANALQ/8Awczf/ItAHOeJ0mnl8SxwWd9KdX0YabZGO0kI kuEa6RlchcRrmVCHfapByCQCQ/Tra7OpaXp32W7Wex1y/v53e3dYhBL9q2MspHlsT58fyqSRuOR8 rY6D7Z4v/wCgFof/AIOZv/kWj7Z4v/6AWh/+Dmb/AORaAN5CTnNYNl/yULWf+wVYf+jbuka78Xkf 8gPQwO//ABOZh/7a1h2V14qHjnVmGj6O0502y3odVlCqvmXWCD9mySTuyCOMDk5wADvqK577Z4v/ AOgFof8A4OZv/kWj7Z4v/wCgFof/AIOZv/kWgDoaK577Z4v/AOgFof8A4OZv/kWj7Z4v/wCgFof/ AIOZv/kWgDekGcD1yM+nvXnfjS0mvvE3hy2sdHupJINdgvbkfZiLeWNYyPtDSqMB4woVVZwSVwUd dmem+2eL/wDoBaH/AODmb/5Fo+2eL/8AoBaH/wCDmb/5FoA5fQbWd/itcajBpFza6dDocVluurY2 4tJFkJNvEBhXTA3FhvAwNr7SAfRo881g/bPF/wD0AtD/APBzN/8AItH2zxf/ANALQ/8Awczf/ItA HQ0Vz32zxf8A9ALQ/wDwczf/ACLR9s8X/wDQC0P/AMHM3/yLQB0NFc99s8X/APQC0P8A8HM3/wAi 0fbPF/8A0AtD/wDBzN/8i0AF7/yULRv+wVf/APo20roa4G9uvFR8c6Sx0fR1nGm3uxBqspVl8y1y Sfs2QQduABzk8jGDuLd+LwP+QHoZHb/iczH/ANtaAOiornvtni//AKAWh/8Ag5m/+RaPtni//oBa H/4OZv8A5FoA6GmSDOCM5HTFYP2zxf8A9ALQ/wDwczf/ACLR9s8X/wDQC0P/AMHM3/yLQBzPxUtJ tR8PXGmWGkXV3qF29qEEVsXivFSfPkzSqMxooJbJaPr8rH56yvDC+LLT4q6p51nM1nfahdNeyvaI sX2VI4xZskwUbj1TZubGGJUNuau7+2+Lh/zA9D/8HM3/AMi0fbfF3/QD0P8A8HM3/wAi0Ab6Agcn Jp1c99t8X/8AQC0P/wAHM3/yLR9s8X/9ALQ//BzN/wDItAHQ0Vz32zxf/wBALQ//AAczf/ItH2zx f/0AtD/8HM3/AMi0AdDXP+Iv+Q34T/7Cr/8ApFdUn2zxf/0AtD/8HM3/AMi1ha/deKW1fwy0ujaM rrqTmILqsrBm+yXHDE2w2jG45GeQBjnIAO9Xp+FLXOreeLxnOh6HnOf+QxN/8i0v2zxf/wBALQ// AAczf/ItAHQ0Vz32zxf/ANALQ/8Awczf/ItH2zxf/wBALQ//AAczf/ItAG9IM4IzkdMV538VLSfU fDtxpthpF1d6hdvahBFbForxEnz5M0qjMaLkvlmj6/Kx+cV032zxf/0AtD/8HM3/AMi0fbPF/wD0 AtD/APBzN/8AItAHEappXiqT4ueFtSnsUuLaO4vVSaKeVoYbdo8LvXy9sbbSepYyPkblUKF9VjGA ep9z1P1rB+2eL/8AoBaH/wCDmb/5Fo+2eL/+gFof/g5m/wDkWgDoaK577Z4v/wCgFof/AIOZv/kW j7Z4v/6AWh/+Dmb/AORaAOhornvtni//AKAWh/8Ag5m/+RaPtni//oBaH/4OZv8A5FoAXxF/yG/C f/YVf/0iuq3x90fSuK1KfXpvEXhZdS03TrWEalIVe21CSdi32O54KtCmBjPOT9Oa7DEo4U4XsNo/ xoAlNc54RJGizgdDqupZ9v8ATZv/ANX410ZrnfCIB0O59f7V1L/0tmoAwr110LxD4l1ffqVwNN0e PUUtZNSn8oyMbreNhcoARGoAwQuAQAaZH4m8WLe2ml3NhZQXtzdJGslyETEbQXD7vKjuJT8pt8gl 1D5ZfkwXrufs8SXMtykMYndVR5Qo3FVyQpPoNzEZ6bjVSy0PSNMhWKw0uwtY45TMiwW6oqSFdhcA DG7blSRzgkUAcNZ+PNclh0OCd9HW61VbOUTvHJFFEtzDcMqbS5LOr24x8w37wo2ffp1x438Qs86W WmQT/wBmxSSX0g8tY5Nk88Od0kyeQp+zO2cS7Q/IO35+vuvDGk3cliHsoFjtTtWJYkCPGIpYhEy4 wYws0mF4ALe5Bml0PSZ/sLSaVYv/AGdj7GHgXFtjGPLyPkxtXpjoPQUAcw/iPxA+mSyww2TTz6rc adYQxozs4hknDMwd0VmKRH5S6gbWbcxKxDG0LxjrWoXtzqpntntJF062W3CFlBk1Ca1eVSsrLlgj t8u4cxjcwjy/e3cOhSxtot5DpsiTvvewkVMSFmeTOwjklo5G9yjN2OJTomkGSaRtJsmlmikhlYW6 bpI3cs6HjJVnYsQeCSSetAHN2/ivUdT8aTaPYHTXs4Z7hJJyWYqsKWbMo2ttL7riRD028HkqVdvh fxjqOreIY7C9ghWG8sDqVq8QVcQh0Cn/AFrO6sJOGeOE/IfkySE6q10rT7KRHtdOtYGRfLUwwquF wi4GBkDEUYx6RqP4RSW+k6daTvcW2n2kE8jyPJJFEEZmcqXYsADliiknvtHoKAOFu/GfiKGS6uym lrZWsWq3HkiGRpJ47K4WPG7eFjZlbGdrgFd2Du2LaHjHV5/FMOmLDara39xdWllKYtwWSBZNzk+c JJAGj2snlIPmwHIwX7CTSdNeN43062ZHWaN1MS4KyndIv0cgFh0J5PNMn0LSJ57i4n0qxkmuOZ3e 3VmlxG0fzEj5vkdl5/hZh0NAFbwvrU2vW092xtFgRhCkUMnmMGAyzl+AUfKtH8ozGVf+MKu9UEME QuJLnyUFxIqo8gX5mVSxUE9SBuYgdtx96noAKKKKACuesv8AkoWs/wDYKsP/AEbd10Nc9Zf8lC1n /sFWH/o27oA6GiiigAooooAZIcYPpk49favO/Gl5Np3ibw5e2esXaibXYLC6WG5LrGHjJWAwcIQ+ 4MXb513AruG0L6JIAR71RfSdOm1aPU5dOtXv4l8uO6aFTLGvPyh8ZA+Y/wDfXvQB5x8NvGs3ijW2 bUYrtbu9spr+1xeboY7UXTxiLywqKHUqAHIZmBOWUYUerIcg4Pt0xVLT9K06wuLq5stPtLae7fzL iSCFUaZsk5cj7xyx5PqfWr9ABRRRQAUUUUAc9e/8lC0b/sFX/wD6NtK6Guevf+ShaN/2Cr//ANG2 ldDQAUUUUAFRvngD6/X9aeeoooDY4Xx/PJZ6VLfW1/NDc2rQnbFOR5SNJgv5fAk3Yxtc7cKcEc5z tPfXYfiQkFzcyyRSPPOyiYNGbXaoi/d5yCG4yFBJzywBrvr3TbK9nt5rm1imltyWheSMMYzxypPQ 8Cn2tlbWhmNvbxQmaQyy+WgXe56scdScDmueVJynzX7HbTxUYU+Xlu7Na+f+W5PECM5OW71JTU6U 6ug4lsFFFFABXP8AiL/kN+E/+wq//pFdV0Fc/wCIv+Q34T/7Cr/+kV1QBvr0/ClpF6fhS0AFFFFA DJDjAGcnpivO/ireTaZ4duNXstXurW7sHtXK29yVNtE82PM8gYExbG3ZKdmFbG07g3o9UNQ0rTr+ 4tbm90+0uZ7R/Mt5J4VdoWyDlCfunKjkeg9KAPN9C8ay6n8TZbC+iu/IfUr2w00RXhEcTW0SGQyR qqhw4YsC7PtOAAuCx9UjztwetUU0nTodWk1OLTrVL+VfLkulhUSyLx8pfGSPlH/fPtV6MAD3oAfR RRQAUUUUAc/4i/5DfhP/ALCr/wDpFdVvj7o+lYHiL/kN+E/+wq//AKRXVb4+6PpQAGue8IY/sS4P pqupH/ydnroG6rXKWWieI9NW4hstb0tbaS7nnVbjSpHdPOlaUqWW4XOC+M4FAHLQXHiK5ivn0abW JdYW91REa4JNsIFNysIj3fugROIQA37wAEf6oCn6ZY63c3NjbLquttpsuoKJ3Ftd2rKv2a4Lgtcy yTYY+SCflVTtKEPkjrLbTfFMEZSDVtAhUu0jImiygbmYsx4uupYsSe5JNTfY/F//AEHdD/8ABNN/ 8lUAc7INXA1gWZ1weJc33kg7/sYj/efZv9Z/o/TyP9X8+773Hm1hqdUtfsCSan4hm0+41JEdYbS5 t5totrlpVX7TK8zjAjJC4Ax+6zJnHffY/F//AEHdD/8ABNN/8lVDPpvimWSF5NX0GR4nLxFtFlJR tpXIJuuDtZhkdiR3oA4qKx1W48WaDdanFrTWVvdR/Z/muCFjZtQEbSBT97abRXaQbgGxIRubOp4P bxDH4pH246kbWezlkuvtUM22O7V48R73cqxAeT5oUiif+EELtTpVtPFxzjXND/DR5v8A5Kp32Pxf /wBB3Q//AATTf/JVAG+owTxzTq577H4v/wCg7of/AIJpv/kqj7H4v/6Duh/+Cab/AOSqAOhornvs fi//AKDuh/8Agmm/+SqPsfi//oO6H/4Jpv8A5KoA6Giue+x+L/8AoO6H/wCCab/5Ko+x+L/+g7of /gmm/wDkqgDoaK577H4v/wCg7of/AIJpv/kqj7H4v/6Duh/+Cab/AOSqAOhrnrL/AJKFrP8A2CrD /wBG3dI1n4vxzrmh47/8Seb/AOSqpQaD4ph1q71Ia/o/n3FvDbsp0iXaFjaRlI/0nOSZWzknt0oA 6+iue+x+L/8AoO6H/wCCab/5Ko+x+L/+g7of/gmm/wDkqgDoaK577H4v/wCg7of/AIJpv/kqj7H4 v/6Duh/+Cab/AOSqAOhornvsfi//AKDuh/8Agmm/+SqPsfi//oO6H/4Jpv8A5KoA6Giue+x+L/8A oO6H/wCCab/5Ko+x+L/+g7of/gmm/wDkqgDoaK577H4v/wCg7of/AIJpv/kqj7H4v/6Duh/+Cab/ AOSqAOhornvsfi//AKDuh/8Agmm/+SqPsfi//oO6H/4Jpv8A5KoAL3/koWjf9gq//wDRtpXQ1yE+ g+KZtatNSOv6P59vbzW6qNIl2lZGjZif9JzkGJcYI79aurZ+L8ca5oeO3/Enm/8AkqgDoqK577H4 v/6Duh/+Cab/AOSqPsfi/wD6Duh/+Cab/wCSqAOhornvsfi//oO6H/4Jpv8A5Ko+x+L/APoO6H/4 Jpv/AJKoA6Giue+x+L/+g7of/gmm/wDkqj7H4v8A+g7of/gmm/8AkqgDoaK577H4v/6Duh/+Cab/ AOSqPsfi/wD6Duh/+Cab/wCSqAOhornvsfi//oO6H/4Jpv8A5Ko+x+L/APoO6H/4Jpv/AJKoA6Gu f8Rf8hvwn/2FX/8ASK6pPsfi/wD6Duh/+Cab/wCSqo3+ieKLy80yeXX9HD2VyZ4Qujy4ZzFJHhs3 J42yMe3IH0oA65en4Utc3HaeL9g/4nuidB/zB5v/AJKp/wBj8X/9B3Q//BNN/wDJVAHQ0Vz32Pxf /wBB3Q//AATTf/JVH2Pxf/0HdD/8E03/AMlUAdDRXPfY/F//AEHdD/8ABNN/8lUfY/F//Qd0P/wT Tf8AyVQB0NFc99j8X/8AQd0P/wAE03/yVR9j8X/9B3Q//BNN/wDJVAHQ0Vz32Pxf/wBB3Q//AATT f/JVH2Pxf/0HdD/8E03/AMlUAdDRXPfY/F//AEHdD/8ABNN/8lUfY/F//Qd0P/wTTf8AyVQAviL/ AJDfhP8A7Cr/APpFdVvj7o+lc0dG1651bSrvU9Y02aCwuWuBFbabJCzsYZIgNzTvgfvSenauhzIO ApA7cD/GgD//2Q== ------=_NextPart_000_0019_01C8F93B.72920CE0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.tgroseto.net/wp-content/themes/tgrtheme_n/images/orologio.gif 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 ------=_NextPart_000_0019_01C8F93B.72920CE0 Content-Type: image/png Content-Transfer-Encoding: base64 Content-Location: http://explicatum.com/e-aggregator.png iVBORw0KGgoAAAANSUhEUgAAAFAAAAAPCAIAAAD8q9/YAAAA00lEQVRIieVXWw6EIBCbbjgrnInT jh/s+oAOjGuiJvSL1M6LgkbEGGUmBBHJOT/dxk1IKYWyAuAJUFWf8I1QFRH5PN3G3Zhu4EBZLfaP jnpR7SW/uI2smKGgw1wRrOADi+NWq24zVItWc8xcP6q2zEqyLoCDjDZgtWQOXEz2OEzJ1nbLDX/I KbQ5C8w7DGBoMmAa2GGooK+hhYa9UVxyuK1R7WvL7HnquRVyqi6tUsAH9sxJb6DfXhruDOlohsmn +yxNN/D3SKv7PfjHC/NVwGx/SwtAumLarTYUzgAAAABJRU5ErkJggg== ------=_NextPart_000_0019_01C8F93B.72920CE0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.tgroseto.net/immagini/rsspress.gif R0lGODdhUAAPAMIAAAAAAOrq6pnMAP///5nMAP////L436XSHywAAAAAUAAPAAADqgi63P4wyklX uDjrzbv/YKgERGmeaFoGReu+cCzPtByMap6zde//sBuApCuaeMCkMogrDZ6n58AkPSEFWBdWoBUc utzWdskcUksGJ2qauorfhW8hDNeSbU1Clcp29ldggWJeXS9Zdy5CRHqMa45HdoZzkTB0dXeKZwRp elB+fwRuknGDcmODlph5RjpIiK8zmaxFrrC2iauzbbe8uEMhwMHCwxwVxsfIyQ4JADs= ------=_NextPart_000_0019_01C8F93B.72920CE0 Content-Type: image/png Content-Transfer-Encoding: base64 Content-Location: http://www.tgroseto.net/immagini/cc.png iVBORw0KGgoAAAANSUhEUgAAAFAAAAAPCAIAAAD8q9/YAAAABGdBTUEAANbY1E9YMgAAABl0RVh0 U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJLSURBVHjaYmAYYYARiP///z9SfAsEEA+v 2bQaWWLPrr0zp87s6OgoLy/H1Obq6nrq1Km27lZxCXEgV15WwdXJ9eOHj4Pct0BvAv3LhCnx8sXL 5YuX4/ItEOzevdvMzGxy/xQI98PHD4UFhUMlkrF4ePmSFcLCwrh8CwHA4Lh54+aGtRuB7I+fPnj4 eHj7eA9VD1+6eCk9PR3IOHv2rLKyMjAZANPw+/fvgSSQDRQBihsbG7u4uFy7eg1qChMTkIuWfiAA zkWWwpreMNnIJuBKpWi2ECyPmDB8e/nzp89A/wDZYWFhQAbQCCDZ2dkJ9Oe7d++AMX/v3j2gLFDw zu078FQNTORYSghGRogL4AxIRsLleswsB9eIK09CADHqsXv465cvQFJQUBAYpUCPQXwOTMBAtpKS ElA8LS0tNDQUVsRDnf7z5w9GFkaswQ/3HsQpcC5a5CAHCmbAYdUCUY+WNEiOYW4eHiAJ9C3Qb0Af AmMVUiwDuUA/A8UrKipmzZqFFifs7Bz///zHE8PYawhY5OD3M7IP0bSgWYFpIGEP6+nr8vLyQvwJ jNg9e/YAjQD6HMgGxraQkBBQBJJdz5w5o6isCNElwC8ArKjwxzDxVSVaBOLJAmRYgaUe7uvqf/70 +f379/FoA4aIiYlJdFx0QLA/kCsrLdfc0Lx1y9YhWQ9Hx0W9ffsGGKV4NJeVlamoKkN8y88nsGPL jkHuW3zVErD9lJqZWllZ2d7ejlWPk7PT9evXC0oK4Om5f0L/aFt6kLalR1pniQEgwAAqmGXUQtYz 7AAAAABJRU5ErkJggg== ------=_NextPart_000_0019_01C8F93B.72920CE0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.wikio.it/shared/img/vote/wikio5.gif R0lGODlhMwAQAPf/APf396ytrXl7foeJjezs7d3e3tnZ2d/f4NPT1JKTlL/AwszOz0NFSMLDxX6A g6Kkp6ChomhrbmZnaWJlZ4qMkF5iZ/KEAFtdX1tdXn1/gXN2e1VXWjw+QEtNUGVobP39/W5xdlxf Ynd6f1NWWXh8gZeYme7u74SIjMvNzszNz5ucnfjCAPj4+PWiAPPz9OHi4uLj4/e8APDw8Nra28jI yYqLjPLz89bX2POYAOPk5fT09fKOANvc3WdpbNfX19fY2ejp6Xt+guuXP3p+gnp+g2NmaUhKTeXm 5uvr7LKztMHCxO/v8NfX2O+RH19iZn6BhrO0tmxoY0FDRUZISvTz8/HJhs7P0fCrQK2dhvDbh/LT r8/Pz+15AfLVnfPRZHV4fXFydPLy7/LZiunp6vbr3tnSx5aXmPjCBJ6GXvGjIXN1elFTVmxvcV1g YvKzOFRPSU9QU3F0ebu8vtHS1Li4uYKDhV5hZGFiZfLPfqiqrb6/v+62e8vNz/Pz89vc3NDR03+B hMDBw7K0te7ktv79/PTkrPjt2Pr06vWvD/e0APa2C+6FGPDEhuHi4/TlsvTkv4WIjfTlwPW/FFZa YPSnEP79+8LExcTExfGiHvPXunt/hPjx2qutr83NzcvMzd/g4fiCDbCxsvPNj+vs7JyeofLVYGdv e66wsfKWKLy8vb2+v/PYgfz58f36952dm/HFfJ6en+rq69na2+Tk5eXl5u+fQObn56Oorqeoqqep rFJTWERGSPG5d/C/eWttb21ub/CbI4SFhvPHU/PMUG5wc/z8/VlbXPn5+nR3fI2PkvLRh/C+gvLW Zfry4vny5ZSWmJWXm9XW1vT09PX19VxeYV5fYtXW2PmjAL6/wJ+go83O0IiKjoCChXiAjICDh/nu 5Pnv5vPVhefn6O7u7u98BPTPffLz9KqrrFlcX/TNQXp8fr6+v7+/v/7//////rKztvOxb/arAHl9 gXJ0dvLm0Ojo6Wptcc/Q0srLzdHR0s/P0HZ5fPP09ISHjP///////yH5BAEAAP8ALAAAAAAzABAA AAj/AP/J60ewoMGDCBMqXEiQyD8SsvhJnEixosWLGOmVYpZlUJiKOUj04+evpMmTKFOqXFlohcsz 6Ryd5NfvhIuVOHPi3CRm1TBJMWJ4qVTSxYmROpMqPckqnKJEwgj5oznyB4pGJk2g+JQ1xR8d9xbo aDcnxRJ/ALThM+HPGopRJs2VKafsUclIiOLhmUqQ3zsRFD6UfCAC0rGSuURAkyFCxIEPT0RY8ZdH xDZp/iiIsFRSSTc011q0cGPIX5cWlJpR5RcLGQhP/mDEAQFCgT8kX0Bom6YBxOMgIH4gAKGGR8kB IBr4awDCFBZRr9LgwOTM3RUcVVb7y+Yhmb8HHsID//IHxYMDfwTseSjwQYMHVfs8CDLJzUMgfwI8 3DJ5CNiOXv4wssMV2t3QxgQ0RBACLj2EoIA6IZzizxgThODHB2yEoOB5JgkQghK0hFABAWSgsow/ vFhQiz9aWNCEdv5kMEIIIxDjzzMjULOBE+P4Uw86I8zwQREj9DCCHfmYNM8I2LwwwiQy0AMKPP7s wYUQ/mRCziIwrtPBl6H4MwMcXyZQkjhrdGDAB9R0cEkGHVwAQ0m+dEDHB3d0QIpJVETxhiv+tPIN ODTZVBIL1TBwAQsl1cGAEQaUZEsHDDDxwQYM0NDHBQxIAIA/EjCQhD/nMMCAN3Jw4gQDuhwxU18m QWXAASwmbcHBLybNwgEHCBQzBQep+BPNLhyAwYIxHARQkgpS7LorBj6gZAMkJOQwEQ81vEBRAuxM BIQKJbxgAwQl+CCRHiWYUUAAJegzUScqBFNDAEBYZAIJ/wzB0L789tuPJv8EBAA7 ------=_NextPart_000_0019_01C8F93B.72920CE0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.tgroseto.net/wp-content/themes/tgrtheme_n/style.css BODY { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: = url(images/html-bg.gif) #42afdc repeat-x; PADDING-BOTTOM: 0px; MARGIN: = 0px; FONT: 75%/170% Arial, Helvetica, sans-serif; COLOR: #333333; = PADDING-TOP: 0px } A { COLOR: #44a1d0; TEXT-DECORATION: none } A:visited { COLOR: #5eafd7 } A:hover { TEXT-DECORATION: underline } P { MARGIN: 0px 0px 15px } IMG { BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: = none; BORDER-BOTTOM-STYLE: none } UL { PADDING-LEFT: 20px; MARGIN: 5px 0px 15px } UL LI { MARGIN: 0px } OL { PADDING-LEFT: 20px; MARGIN: 5px 0px 15px } UL LI { MARGIN: 0px } FORM { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px } SMALL { FONT-SIZE: 90% } #page { BACKGROUND: url(images/main-bg.jpg) no-repeat center top } #wrapper { MARGIN: 0px auto; WIDTH: 985px; POSITION: relative } #header { HEIGHT: 120px } H1 { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; LEFT: 25px; PADDING-BOTTOM: 0px; = MARGIN: 0px; FONT: bold italic 30px/100% "Arial", sans-serif; COLOR: = #ffff00; PADDING-TOP: 0px; POSITION: absolute; TOP: 15px } H1 A { COLOR: #ffff00; TEXT-DECORATION: none } H1 A:visited { COLOR: #ffff00; TEXT-DECORATION: none } H1 A:hover { COLOR: #ffff00; TEXT-DECORATION: none } .description { LEFT: 25px; FONT: bold 12px Arial, Helvetica, sans-serif; COLOR: = #ffffff; POSITION: absolute; TOP: 55px } #searchform { RIGHT: 0px; BACKGROUND: url(images/searchform-bg.png) no-repeat right = bottom; WIDTH: 210px; POSITION: absolute; TOP: 0px; HEIGHT: 37px } #searchform #s { PADDING-RIGHT: 7px; PADDING-LEFT: 5px; BACKGROUND: = url(images/form-field-bg.gif) #ffffff no-repeat; PADDING-BOTTOM: 2px; = MARGIN: 6px 5px 0px 10px; WIDTH: 148px; COLOR: #999999; = BORDER-TOP-STYLE: none; PADDING-TOP: 3px; BORDER-RIGHT-STYLE: none; = BORDER-LEFT-STYLE: none; HEIGHT: 17px; BORDER-BOTTOM-STYLE: none } #searchform #searchsubmit { MARGIN-TOP: 6px; BACKGROUND: url(images/search-btn.png) no-repeat left = top; WIDTH: 24px; BORDER-TOP-STYLE: none; TEXT-INDENT: -999%; = LINE-HEIGHT: 1px; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; = HEIGHT: 24px; BORDER-BOTTOM-STYLE: none } #left-col { MARGIN-TOP: 11px; FLOAT: left; WIDTH: 545px } #nav { BACKGROUND: url(images/content-top-bg.png) no-repeat left top; HEIGHT: = 26px } #nav UL { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px = 0px 0px 25px; FONT: bold 12px/100% Arial, Helvetica, sans-serif; = PADDING-TOP: 0px; LIST-STYLE-TYPE: none } #nav UL LI { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FLOAT: left; PADDING-BOTTOM: = 0px; MARGIN: 0px 1px 0px 0px; PADDING-TOP: 0px } #nav UL LI A { PADDING-RIGHT: 7px; DISPLAY: block; PADDING-LEFT: 7px; PADDING-BOTTOM: = 6px; COLOR: #000000; PADDING-TOP: 5px; TEXT-DECORATION: none } #nav LI A:visited { COLOR: #000000; TEXT-DECORATION: none } #nav LI A:hover { BACKGROUND: url(images/nav-item-hover.gif) #2e91c6 repeat-x; COLOR: = #ffffff; TEXT-DECORATION: none } #nav .current_page_item A { BACKGROUND: url(images/nav-item-hover.gif) #2e91c6 repeat-x; COLOR: = #ffffff; TEXT-DECORATION: none } #nav .current_page_item A:visited { BACKGROUND: url(images/nav-item-hover.gif) #2e91c6 repeat-x; COLOR: = #ffffff; TEXT-DECORATION: none } #subnav { BACKGROUND: #ecebeb } #subnav UL { PADDING-RIGHT: 0px; PADDING-LEFT: 5px; PADDING-BOTTOM: 18px; MARGIN: = 0px; FONT: 11px/100% Arial, Helvetica, sans-serif; PADDING-TOP: 3px; = LIST-STYLE-TYPE: none } #subnav LI { BORDER-RIGHT: #d8d8d8 1px solid; PADDING-RIGHT: 7px; PADDING-LEFT: 7px; = FLOAT: left; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px } #subnav LI A { COLOR: #333333; TEXT-DECORATION: none } #subnav LI A:visited { COLOR: #333333; TEXT-DECORATION: none } #subnav .page_item { COLOR: #333333; TEXT-DECORATION: none } #subnav .current_page_item A { COLOR: #3b9acc } #subnav .current_page_item A:visited { COLOR: #3b9acc } #subnav LI A:hover { COLOR: #3b9acc; TEXT-DECORATION: none } #content { CLEAR: both; PADDING-RIGHT: 25px; PADDING-LEFT: 25px; BACKGROUND: = #ffffff; PADDING-BOTTOM: 15px; OVERFLOW: hidden; WIDTH: 495px; = PADDING-TOP: 25px } .post { CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: = 0px; OVERFLOW: hidden; PADDING-TOP: 0px } .post .date { PADDING-RIGHT: 2px; PADDING-LEFT: 0px; BACKGROUND: = url(images/calendar.gif) no-repeat; FLOAT: left; PADDING-BOTTOM: 0px; = FONT: 22px/100% Arial, Helvetica, sans-serif; WIDTH: 45px; COLOR: = #666666; PADDING-TOP: 0px; HEIGHT: 50px; TEXT-ALIGN: center } .post .date SPAN { DISPLAY: block; FONT: 11px Arial, Helvetica, sans-serif; COLOR: = #ffffff; PADDING-TOP: 5px; HEIGHT: 16px; TEXT-ALIGN: center } .post .title { FLOAT: left; MARGIN-LEFT: 10px; WIDTH: 438px } .postdata { FONT-SIZE: 90%; COLOR: #999999 } .postdata A { COLOR: #999999; TEXT-DECORATION: none } .postdata A:visited { COLOR: #999999; TEXT-DECORATION: none } .postdata A:hover { COLOR: #44a1d0; TEXT-DECORATION: none } .postdata .category { PADDING-LEFT: 18px; BACKGROUND: url(images/mini-category.gif) = no-repeat; FLOAT: left } .postdata .comments { PADDING-LEFT: 18px; BACKGROUND: url(images/mini-comment.gif) no-repeat; = FLOAT: right } .mini-add-comment { PADDING-LEFT: 12px; BACKGROUND: url(images/mini-down-arrow.gif) = no-repeat left center; FLOAT: right } .entry { CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: = 5px; PADDING-TOP: 10px } H2 { PADDING-BOTTOM: 4px; MARGIN: 3px 0px 2px; FONT: 150%/100% "Lucida = Grande", Arial, sans-serif; COLOR: #333333; BORDER-BOTTOM: #cccccc 1px = dotted } H2 A { COLOR: #333333; TEXT-DECORATION: none } H2 A:visited { COLOR: #333333; TEXT-DECORATION: none } H2 A:hover { COLOR: #44a1d0; TEXT-DECORATION: none } H3 { MARGIN: 5px 0px; FONT: bold 110%/110% "Lucida Grande", Arial, = sans-serif; COLOR: #666666 } .page-nav { CLEAR: both; BACKGROUND: url(images/navigation-bg.gif) no-repeat left = center; HEIGHT: 21px } .page-nav A { COLOR: #ffffff; TEXT-DECORATION: none } .page-nav A:visited { COLOR: #ffffff; TEXT-DECORATION: none } .page-nav A:hover { COLOR: #000000; TEXT-DECORATION: none } .previous-entries A { PADDING-LEFT: 10px; BACKGROUND: url(images/navigation-left.gif) = no-repeat left center; FLOAT: left; MARGIN-LEFT: 10px } .next-entries A { PADDING-RIGHT: 10px; BACKGROUND: url(images/navigation-right.gif) = no-repeat right center; FLOAT: right; MARGIN-RIGHT: 10px } .post-nav { CLEAR: both; MARGIN-TOP: -15px; FONT-SIZE: 95%; PADDING-BOTTOM: 35px } .post-nav A { COLOR: #999999; TEXT-DECORATION: none } .post-nav A:visited { COLOR: #999999; TEXT-DECORATION: none } .post-nav A:hover { COLOR: #000000; TEXT-DECORATION: none } .post-nav .previous A { PADDING-LEFT: 20px; BACKGROUND: url(images/post-nav-previous.gif) = no-repeat left center; FLOAT: left } .post-nav .next A { PADDING-RIGHT: 20px; BACKGROUND: url(images/post-nav-next.gif) = no-repeat right center; FLOAT: right; TEXT-ALIGN: right } H3#comments { CLEAR: both; PADDING-LEFT: 22px; BACKGROUND: url(images/comments.gif) = no-repeat; FONT: 140%/120% Arial, Helvetica, sans-serif } H3#respond { CLEAR: both; PADDING-LEFT: 22px; BACKGROUND: url(images/respond.gif) = no-repeat; MARGIN: 20px 0px 0px; FONT: 140%/120% Arial, Helvetica, = sans-serif } #commentform { MARGIN-TOP: 10px } #commentform LABEL { PADDING-LEFT: 5px; FONT-WEIGHT: bold; FONT-SIZE: 100%; COLOR: #666 } #commentform SMALL { FONT-SIZE: 90%; COLOR: #999999 } #commentform INPUT { BORDER-RIGHT: #e2e2e2 1px solid; PADDING-RIGHT: 3px; BORDER-TOP: = #e6e6e6 1px solid; PADDING-LEFT: 7px; BACKGROUND: = url(images/form-field-bg.gif) no-repeat; PADDING-BOTTOM: 3px; FONT: 110% = Arial, Helvetica, sans-serif; BORDER-LEFT: #e6e6e6 1px solid; WIDTH: = 220px; PADDING-TOP: 5px; BORDER-BOTTOM: #e2e2e2 1px solid } #commentform TEXTAREA { BORDER-RIGHT: #e6e6e6 1px solid; PADDING-RIGHT: 3px; BORDER-TOP: = #e6e6e6 1px solid; PADDING-LEFT: 7px; BACKGROUND: = url(images/form-field-bg.gif) no-repeat; PADDING-BOTTOM: 3px; FONT: 110% = Arial, Helvetica, sans-serif; BORDER-LEFT: #e6e6e6 1px solid; WIDTH: = 480px; PADDING-TOP: 5px; BORDER-BOTTOM: #e6e6e6 1px solid; HEIGHT: 140px } #commentform #submit { BACKGROUND: url(images/submit-btn.gif) no-repeat left top; = PADDING-BOTTOM: 6px; FONT: 12px/100% Arial, Helvetica, sans-serif; = MARGIN-LEFT: 355px; WIDTH: 135px; COLOR: #000000; BORDER-TOP-STYLE: = none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; HEIGHT: 25px; = BORDER-BOTTOM-STYLE: none } #commentform #submit:hover { BACKGROUND: url(images/submit-btn.gif) no-repeat left bottom } #commentform TEXTAREA:focus { BORDER-RIGHT: #3b9acc 1px solid; BORDER-TOP: #3b9acc 1px solid; = BORDER-LEFT: #3b9acc 1px solid; BORDER-BOTTOM: #3b9acc 1px solid } #commentform INPUT[type=3D'text']:focus { BORDER-RIGHT: #3b9acc 1px solid; BORDER-TOP: #3b9acc 1px solid; = BORDER-LEFT: #3b9acc 1px solid; BORDER-BOTTOM: #3b9acc 1px solid } .commentlist { PADDING-LEFT: 45px; MARGIN: 10px 0px; LINE-HEIGHT: 130% } .commentlist LI { PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 5px; = PADDING-TOP: 5px } .commentlist .alt { BACKGROUND: #f4f4f4 } .commentlist CITE { FONT-WEIGHT: bold; FONT-SIZE: 110%; COLOR: #669900; FONT-STYLE: normal } .commentlist CITE A { COLOR: #669900 } .commentlist CITE A:visited { COLOR: #669900 } .commentlist SMALL { DISPLAY: block; FONT-SIZE: 87%; MARGIN-BOTTOM: 5px } .commentlist SMALL A { COLOR: #999999 } .commentlist SMALL A:visited { COLOR: #999999 } #footer { PADDING-RIGHT: 0px; PADDING-LEFT: 10px; FONT-SIZE: 87%; BACKGROUND: = url(images/content-bottom-bg.png) no-repeat; PADDING-BOTTOM: 0px; COLOR: = #282828; PADDING-TOP: 10px } #footer A { COLOR: #000000; TEXT-DECORATION: none } #footer A:visited { COLOR: #000000; TEXT-DECORATION: none } #footer A:hover { TEXT-DECORATION: underline } #sidebar-right { FLOAT: right; MARGIN-LEFT: 10px; WIDTH: 210px; COLOR: #666666; = LINE-HEIGHT: 160% } #sidebar-left { FLOAT: left; MARGIN-RIGHT: 10px } #sidebar-right P { MARGIN: 0px 0px 15px } #sidebar-left P { MARGIN: 0px 0px 15px } #sidebar-right H3 { FONT: bold 12px/100% Arial, Helvetica, sans-serif; COLOR: #666666 } #sidebar-left H3 { FONT: bold 12px/100% Arial, Helvetica, sans-serif; COLOR: #666666 } #sidebar-right H3 A { COLOR: #666666 } #sidebar-right H3 A:visited { COLOR: #666666 } #sidebar-left H3 A { COLOR: #666666 } #sidebar-left H3 A:visited { COLOR: #666666 } #sidebar-right H3 IMG { VERTICAL-ALIGN: middle } #sidebar-left H3 IMG { VERTICAL-ALIGN: middle } #sidebar-right A { COLOR: #000000; TEXT-DECORATION: none } #sidebar-right A:visited { COLOR: #000000; TEXT-DECORATION: none } #sidebar-left A { COLOR: #000000; TEXT-DECORATION: none } #sidebar-left A:visited { COLOR: #000000; TEXT-DECORATION: none } #sidebar-right A:hover { TEXT-DECORATION: underline } #sidebar-right A:focus { TEXT-DECORATION: underline } #sidebar-right A:active { TEXT-DECORATION: underline } #sidebar-left A:hover { TEXT-DECORATION: underline } #sidebar-left A:focus { TEXT-DECORATION: underline } #sidebar-left A:active { TEXT-DECORATION: underline } #sidebar-right UL { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none } #sidebar-left UL { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: = 0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none } #sidebar-right UL LI { PADDING-LEFT: 18px; BACKGROUND: url(images/bullet-orange.gif) no-repeat } #sidebar-left UL LI { PADDING-LEFT: 18px; BACKGROUND: url(images/bullet-orange.gif) no-repeat } #sidebar-right UL LI UL LI { PADDING-LEFT: 12px; BACKGROUND: url(images/bullet-grey.gif) no-repeat } #sidebar-left UL LI UL LI { PADDING-LEFT: 12px; BACKGROUND: url(images/bullet-grey.gif) no-repeat } #archives UL LI { BACKGROUND: url(images/mini-archive.gif) no-repeat } #recent-comments UL LI { BACKGROUND: url(images/mini-comment.gif) no-repeat } #categories UL LI { BACKGROUND: url(images/mini-category.gif) no-repeat } #recent-posts UL LI { BACKGROUND: url(images/mini-page.gif) no-repeat } #links UL LI { BACKGROUND: url(images/mini-blogroll.gif) no-repeat } #meta .rss { BACKGROUND: url(images/mini-rss.gif) no-repeat } #meta .login { BACKGROUND: url(images/mini-user.gif) no-repeat } #meta .check { BACKGROUND: url(images/mini-check.gif) no-repeat } #meta .wordpress { BACKGROUND: url(images/mini-wp.gif) no-repeat } #calendar TABLE { MARGIN: 0px auto } #calendar TD { PADDING-RIGHT: 4px; PADDING-LEFT: 4px; PADDING-BOTTOM: 0px; = PADDING-TOP: 0px } .center { TEXT-ALIGN: center } IMG.center { DISPLAY: block; MARGIN-LEFT: auto; MARGIN-RIGHT: auto } IMG[align=3D'center'] { DISPLAY: block; MARGIN-LEFT: auto; MARGIN-RIGHT: auto } .left { FLOAT: left } IMG.left { FLOAT: left; MARGIN: 2px 10px 5px 0px } IMG[align=3D'left'] { FLOAT: left; MARGIN: 2px 10px 5px 0px } .right { FLOAT: right } IMG.right { FLOAT: right; MARGIN: 2px 0px 5px 10px } IMG[align=3D'right'] { FLOAT: right; MARGIN: 2px 0px 5px 10px } .clear { CLEAR: both } HR.clear { CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; VISIBILITY: hidden; = PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px } .hidden { CLEAR: both; VISIBILITY: hidden } #mangoorange { COLOR: #fff } #mangoorange A { FONT-WEIGHT: bold; COLOR: #fff; TEXT-DECORATION: none } #mangoorange A:visited { FONT-WEIGHT: bold; COLOR: #fff; TEXT-DECORATION: none } #mangoorange A:hover { TEXT-DECORATION: none } #main_start { LEFT: -10000px; POSITION: absolute } ------=_NextPart_000_0019_01C8F93B.72920CE0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.tgroseto.net/wp-content/themes/tgrtheme_n/print.css BODY { PADDING-RIGHT: 40px; PADDING-LEFT: 40px; BACKGROUND: url(none) #ffffff; = PADDING-BOTTOM: 0px; MARGIN: 0px; FONT: 12px/16px Arial, Helvetica, = sans-serif; COLOR: #000000; PADDING-TOP: 0px } #page { BACKGROUND: none transparent scroll repeat 0% 0% } #wrapper { MARGIN: 0px; WIDTH: 100% } #header { MARGIN-BOTTOM: 15px; BORDER-BOTTOM: #000000 1px solid; HEIGHT: 100px } H1 { LEFT: 0px; MARGIN: 0px; COLOR: #000000 } H1 A { COLOR: #000000; TEXT-DECORATION: none } H1 A:visited { COLOR: #000000; TEXT-DECORATION: none } H2 { BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: = none; BORDER-BOTTOM-STYLE: none } .description { LEFT: 0px } #left-col { WIDTH: 100% } #content { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: #ffffff; = PADDING-BOTTOM: 0px; WIDTH: 100%; PADDING-TOP: 0px } .post { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: none transparent = scroll repeat 0% 0%; PADDING-BOTTOM: 0px; PADDING-TOP: 0px } .post .date { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: none transparent = scroll repeat 0% 0%; PADDING-BOTTOM: 0px; FONT: 11px/100% Arial, = Helvetica, sans-serif; WIDTH: 100%; COLOR: #666666; PADDING-TOP: 0px; = HEIGHT: auto; TEXT-ALIGN: left } .post .date SPAN { PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: = 0px; PADDING-TOP: 0px; HEIGHT: auto; TEXT-ALIGN: left } .post .title { CLEAR: both; MARGIN: 0px; WIDTH: 100% } .postdata .category { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: none transparent = scroll repeat 0% 0%; FLOAT: left; PADDING-BOTTOM: 0px; PADDING-TOP: 0px } .postdata .comments { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: none transparent = scroll repeat 0% 0%; FLOAT: right; PADDING-BOTTOM: 0px; PADDING-TOP: 0px } H3#comments { CLEAR: both; PADDING-LEFT: 0px; BACKGROUND: none transparent scroll = repeat 0% 0%; FONT: bold 14px/120% Arial, Helvetica, sans-serif } .commentlist LI { BORDER-TOP-STYLE: none! important; BORDER-RIGHT-STYLE: none! important; = BORDER-LEFT-STYLE: none! important; BORDER-BOTTOM-STYLE: none! important } .commentlist .alt { BORDER-TOP-STYLE: none! important; BORDER-RIGHT-STYLE: none! important; = BORDER-LEFT-STYLE: none! important; BORDER-BOTTOM-STYLE: none! important } #searchform { DISPLAY: none! important } #nav { DISPLAY: none! important } #subnav { DISPLAY: none! important } .mini-add-comment { DISPLAY: none! important } .page-nav { DISPLAY: none! important } .post-nav { DISPLAY: none! important } H3#respond { DISPLAY: none! important } #commentform { DISPLAY: none! important } #footer { DISPLAY: none! important } #sidebar { DISPLAY: none! important } ------=_NextPart_000_0019_01C8F93B.72920CE0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.tgroseto.net/wp-content/themes/tgrtheme_n/dbx.css .dbx-clone { VISIBILITY: hidden; POSITION: absolute } .dbx-clone { CURSOR: move! important } .dbx-clone .dbx-handle-cursor { CURSOR: move! important } .dbx-dummy { DISPLAY: block; OVERFLOW: hidden; WIDTH: 0px; HEIGHT: 0px } .dbx-group { DISPLAY: block; POSITION: relative } .dbx-box { DISPLAY: block; POSITION: relative } .dbx-handle { DISPLAY: block; POSITION: relative } .dbx-box { CLEAR: both; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: = 0px; MARGIN: 0px; BORDER-TOP-STYLE: none; PADDING-TOP: 0px; = BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: = none } .dbx-group { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 10px; WIDTH: = 210px; PADDING-TOP: 0px } * HTML .dbx-group { PADDING-BOTTOM: 0px; WIDTH: 210px } .dbx-handle { PADDING-RIGHT: 24px; PADDING-LEFT: 10px; BACKGROUND: = url(images/sidep-handle.png) no-repeat 0px 0px; PADDING-BOTTOM: 7px; = MARGIN: 0px; PADDING-TOP: 16px; POSITION: relative } * HTML .dbx-handle { WIDTH: 176px } .dbx-handle-cursor { CURSOR: move } A.dbx-toggle { DISPLAY: block; RIGHT: 3px; BACKGROUND: url(images/sidep-toggle.png) = no-repeat; OVERFLOW: hidden; WIDTH: 20px; TEXT-INDENT: -50px; POSITION: = absolute; TOP: 12px; HEIGHT: 20px; TEXT-DECORATION: none } A.dbx-toggle:visited { DISPLAY: block; RIGHT: 3px; BACKGROUND: url(images/sidep-toggle.png) = no-repeat; OVERFLOW: hidden; WIDTH: 20px; TEXT-INDENT: -50px; POSITION: = absolute; TOP: 12px; HEIGHT: 20px; TEXT-DECORATION: none } A.dbx-toggle-open { BACKGROUND-POSITION: 0px 0px } A.dbx-toggle-open:visited { BACKGROUND-POSITION: 0px 0px } A.dbx-toggle-closed { BACKGROUND-POSITION: 0px -20px } A.dbx-toggle-closed:visited { BACKGROUND-POSITION: 0px -20px } A.dbx-toggle-hilite-open { BACKGROUND-POSITION: -20px 0px } A.dbx-toggle-hilite-open:visited { BACKGROUND-POSITION: -20px 0px } A.dbx-toggle-hilite-closed { BACKGROUND-POSITION: -20px -20px } A.dbx-toggle-hilite-closed:visited { BACKGROUND-POSITION: -20px -20px } .dbx-tooltip { BORDER-RIGHT: #000 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: #000 1px = solid; DISPLAY: block; PADDING-LEFT: 5px; BACKGROUND: #ffd; = PADDING-BOTTOM: 3px; MARGIN: 36px 0px 0px 125px; FONT: 0.85em tahoma, = arial, sans-serif; BORDER-LEFT: #000 1px solid; WIDTH: 185px; COLOR: = #000; PADDING-TOP: 2px; BORDER-BOTTOM: #000 1px solid; POSITION: = absolute; TEXT-ALIGN: left } * HTML .dbx-tooltip { WIDTH: 210px } UNKNOWN { FONT-WEIGHT: normal; BORDER-LEFT-COLOR: infotext; BACKGROUND: = infobackground; BORDER-BOTTOM-COLOR: infotext; FONT: small-caption; = COLOR: infotext; BORDER-TOP-COLOR: infotext; BORDER-RIGHT-COLOR: = infotext } .dbx-content { PADDING-RIGHT: 10px; PADDING-LEFT: 10px; BACKGROUND: = url(images/sidep-bottom.png) no-repeat 0px 100%; PADDING-BOTTOM: 9px; = MARGIN: 0px; OVERFLOW: hidden; PADDING-TOP: 5px } .dbx-box-closed .dbx-content { PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 0px; PADDING-BOTTOM: = 0px; OVERFLOW: hidden; PADDING-TOP: 0px; HEIGHT: 4px } .dbx-box-closed .dbx-content * { DISPLAY: none } .dbx-clone { FILTER: alpha(opacity=3D80); opacity: 0.8; -moz-opacity: 0.8; = -khtml-opacity: 0.8 } ------=_NextPart_000_0019_01C8F93B.72920CE0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.tgroseto.net/wp-content/plugins/kpicasa-gallery/kpicasa_gallery.css TABLE#kpg-albums TD { PADDING-RIGHT: 10px; PADDING-LEFT: 0px; PADDING-BOTTOM: 20px; = VERTICAL-ALIGN: top; PADDING-TOP: 0px } TABLE#kpg-albums TD IMG.kpg-thumb { BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; = BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black 1px solid } TABLE#kpg-albums TD DIV.kpg-title A { FONT-WEIGHT: bold } TABLE#kpg-albums TD DIV.kpg-summary { =09 } TABLE#kpg-albums TD DIV.kpg-location { FONT-STYLE: italic } TABLE#kpg-albums TD DIV.kpg-nbPhotos { MARGIN-TOP: 15px } TABLE#kpg-albums TD IMG.kpg-thumb-onePerRow { FLOAT: left; MARGIN-RIGHT: 10px } TABLE#kpg-albums TD IMG.kpg-thumb-multiplePerRow { CLEAR: both } DIV#kpg-backLink { PADDING-BOTTOM: 20px } DIV#kpg-album-description { BORDER-RIGHT: #cecf8e 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: = #cecf8e 1px solid; PADDING-LEFT: 10px; MARGIN-BOTTOM: 30px; = PADDING-BOTTOM: 10px; BORDER-LEFT: #cecf8e 1px solid; PADDING-TOP: 10px; = BORDER-BOTTOM: #cecf8e 1px solid; BACKGROUND-COLOR: #ffffe1 } DIV#kpg-album-description DIV#kpg-title { FONT-WEIGHT: bold } DIV#kpg-album-description DIV#kpg-summary { =09 } DIV#kpg-album-description DIV#kpg-location { FONT-STYLE: italic } DIV#kpg-album-description DIV#kpg-nbPhotos { =09 } TABLE#kpg-pictures TD { PADDING-BOTTOM: 20px; VERTICAL-ALIGN: top; TEXT-ALIGN: center } TABLE#kpg-pictures TD DIV.kpg-summary { =09 } TABLE#kpg-pictures TD IMG.kpg-thumb { BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; = BORDER-LEFT: black 1px solid; BORDER-BOTTOM: black 1px solid } DIV#kpg-paginator { FONT-WEIGHT: bold; LINE-HEIGHT: 30px; TEXT-ALIGN: center } DIV#kpg-paginator SPAN.kpg-on { BORDER-RIGHT: #c0c0c0 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: = #c0c0c0 1px solid; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; BORDER-LEFT: = #c0c0c0 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #c0c0c0 1px solid } DIV#kpg-paginator A { BORDER-RIGHT: #f0f0f0 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: = #f0f0f0 1px solid; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; BORDER-LEFT: = #f0f0f0 1px solid; PADDING-TOP: 4px; BORDER-BOTTOM: #f0f0f0 1px solid } ------=_NextPart_000_0019_01C8F93B.72920CE0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.tgroseto.net/wp-content/plugins/kpicasa-gallery/lightbox2/css/lightbox.css #lightbox { Z-INDEX: 100; LEFT: 0px; WIDTH: 100%; LINE-HEIGHT: 0; POSITION: = absolute; TEXT-ALIGN: center } #lightbox A IMG { BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: = none; BORDER-BOTTOM-STYLE: none } #outerImageContainer { MARGIN: 0px auto; WIDTH: 250px; POSITION: relative; HEIGHT: 250px; = BACKGROUND-COLOR: #fff } #imageContainer { PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; = PADDING-TOP: 10px } #loading { LEFT: 0%; WIDTH: 100%; LINE-HEIGHT: 0; POSITION: absolute; TOP: 40%; = HEIGHT: 25%; TEXT-ALIGN: center } #hoverNav { Z-INDEX: 10; LEFT: 0px; WIDTH: 100%; POSITION: absolute; TOP: 0px; = HEIGHT: 100% } #imageContainer > #hoverNav { LEFT: 0px } #hoverNav A { outline: none } #prevLink { DISPLAY: block; BACKGROUND: url(../images/blank.gif) no-repeat; WIDTH: = 49%; HEIGHT: 100% } #nextLink { DISPLAY: block; BACKGROUND: url(../images/blank.gif) no-repeat; WIDTH: = 49%; HEIGHT: 100% } #prevLink { LEFT: 0px; FLOAT: left } #nextLink { RIGHT: 0px; FLOAT: right } #prevLink:hover { BACKGROUND: url(../images/prevlabel.gif) no-repeat left 15% } #prevLink:hover:visited { BACKGROUND: url(../images/prevlabel.gif) no-repeat left 15% } #nextLink:hover { BACKGROUND: url(../images/nextlabel.gif) no-repeat right 15% } #nextLink:hover:visited { BACKGROUND: url(../images/nextlabel.gif) no-repeat right 15% } #imageDataContainer { MARGIN: 0px auto; FONT: 10px/1.4em Verdana, Helvetica, sans-serif; = OVERFLOW: auto; WIDTH: 100%; BACKGROUND-COLOR: #fff } #imageData { PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; COLOR: = #666; PADDING-TOP: 0px } #imageData #imageDetails { FLOAT: left; WIDTH: 70%; TEXT-ALIGN: left } #imageData #caption { FONT-WEIGHT: bold } #imageData #numberDisplay { CLEAR: left; DISPLAY: block; PADDING-BOTTOM: 1em } #imageData #bottomNavClose { FLOAT: right; PADDING-BOTTOM: 0.7em; WIDTH: 66px } #overlay { Z-INDEX: 90; LEFT: 0px; WIDTH: 100%; POSITION: absolute; TOP: 0px; = HEIGHT: 500px; BACKGROUND-COLOR: #000 } ------=_NextPart_000_0019_01C8F93B.72920CE0 Content-Type: multipart/alternative; boundary="----=_NextPart_001_0030_01C8F93B.72947DE0" ------=_NextPart_001_0030_01C8F93B.72947DE0 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Location: =?utf-8?Q?http://www.tgroseto.net/6427/pes?= =?utf-8?Q?cara-asso-domani-le-temperature-?= =?utf-8?Q?toccheranno-i-39-c=C2=B0/?= =EF=BB=BF Tg Roseto: Pescara, Asso: domani = le temperature toccheranno i 39 C=C2=B0

Tg Roseto

=20

Mondo di TG Roseto

Categorie di TG Roseto

  • Notizie = di Roseto=20 (544)=20
  • Sport a = Roseto=20 (267)=20
  • Curiosita = di=20 Roseto (209)=20
  • Rubriche di = Roseto=20 (469)=20
  • Notizie = di=20 Giulianova (247)=20
  • Sport a = Giulianova=20 (22)=20
  • Notizie = di Pineto=20 (111)=20
  • Sport a = Pineto=20 (27)=20
  • Notizie di = Atri=20 (67)=20
  • Sport ad Atri = (81)=20
  • Curiosita = di Atri=20 (17)=20
  • Notizie = Abruzzo=20 (3083)=20
  • Sport in = Abruzzo=20 (335)=20
  • Notizie= Italia=20 e Mondo (216)=20
  • Promozionale = (106)=20
  • Angolo = del Lavoro=20 (17)=20
  • Posta dai = lettori=20 (17)=20
  • Le = nostre=20 INCHIESTE (1)
Alba=20 Adriatica, arresto e sequestro di sostanze stupefacenti =E2=80=9CI=20 socialisti lasciano la maggioranza di Roseto=E2=80=9D. Ma era solo per=20 scherzo

Ago 07

Pescara, Asso: domani le temperature toccheranno i 39 = C=C2=B0

Notizie Abruzzo

Riceviamo e pubblichiamo - Il bollettino diramato = nella=20 mattinata di oggi 7 agosto prevede, per la giornata di Venerd=C3=AC 8 = agosto, una=20 temperatura massima percepita di 39 gradi. In conseguenza della = segnalazione=20 della

Protezione Civile nazionale, =C3=A8 stato rafforzato il personale = della Centrale=20 operativa (Telefono 085 6 18 99) affidata alla Associazione ASSO-Onlus, = numero=20 attivo dalle ore 08.30 alle ore 23.30

3D""

Livello 0: Condizioni meteorologiche non a rischio per la salute = della=20 popolazione.

Livello 1: Condizioni meteorologiche che non rappresentano un rischio = per la=20 salute della popolazione ma possono precedere il verificarsi di = condizioni di=20 livello 2.

Livello 2: Temperature elevate e condizioni meteorologiche che = possono avere=20 effetti negativi sulla salute della popolazione a rischio*.

Livello 3: Ondata di calore (condizioni meteorologiche a rischio che=20 persistono per tre o pi=C3=B9 giorni consecutivi).

E=E2=80=99 necessario adottare interventi di prevenzione mirati alla = popolazione a=20 rischio*.

Ricordiamo che i bollettini sono consultabili nel sito della = Protezione=20 civile=20 (http://www.protezionecivile.it/cms/view.php?cms_pk=3D14318&dir_pk=3D= 52)

Dal 15 maggio al 15 settembre 2008 =C3=A8 attivato il programma di = sorveglianza,=20 prevenzione e allarme degli effetti delle ondate di calore sulla salute = della=20 popolazione a cura del Dipartimento della Protezione Civile e del Centro = di=20 Competenza Nazionale.
L=E2=80=99Associazione ASSO, che = dall=E2=80=99anno 2003 cura, in=20 collaborazione con il Comune di Pescara le iniziative in favore degli = Anziani=20 nel periodo estivo, come negli anni passati inserisce il Bollettino nel = proprio=20 sito web (http://www.asso-onlus.it/linea_solidale_2008.htm) per = consentire una=20 pi=C3=B9 facile consultazione delle previsioni per la giornata in corso = e per le due=20 successive.

Il Piano operativo nazionale per la prevenzione degli effetti del = caldo sulla=20 salute, messo a punto dal Ccm, (Centro Nazionale per la Prevenzione ed = il=20 Controllo delle Malattie) in collaborazione col dipartimento di = Epidemiologia=20 dell=E2=80=99Asl Roma E, d=C3=A0 conto dei risultati del censimento = dell=E2=80=99attivit=C3=A0 di=20 prevenzione condotte durante l=E2=80=99estate, e si integra con il = progetto del=20 dipartimento della Protezione Civile =E2=80=9CSistema Nazionale di = Sorveglianza,=20 previsione e di allarme per la prevenzione degli effetti delle ondate di = calore=20 sulla salute della popolazione=E2=80=9D.

La Protezione Civile ha istituito nelle grandi aree urbane una rete = di=20 sistemi di allarme in grado di prevedere, anche con tre giorni di = anticipo, il=20 verificarsi di condizioni climatiche a rischio e il loro impatto sulla = salute=20 della popolazione, nonch=C3=A9 di identificare gli individui pi=C3=B9 = sensibili.

Anche per l=E2=80=99anno 2008 Pescara =C3=A8 stata inserita tra le = citt=C3=A0 in cui il sistema=20 sar=C3=A0 operativo dal 15 maggio al 15 settembre, in 26 citt=C3=A0 = italiane, tra cui=20 Pescara.

Da luned=C3=AC 23 giugno a domenica 31 agosto 2008 = l=E2=80=99Amministrazione comunale di=20 Pescara rinnova l=E2=80=99iniziativa =E2=80=9CLinea Solidale = 2008=E2=80=B3 rivolta alle persone anziane=20 che, in caso di necessit=C3=A0, possono rivolgersi alle Associazioni di = Volontariato=20 attive sul territorio della propria Circoscrizione.

Viene anche attivata una Centrale Operativa, affidata alla ASSO-Onlus = con il=20 compito di:
- mappare le risorse utilizzabili sul territorio;
-=20 predisporre piani di intervento;
- coinvolgere tutte le risorse = presenti sul=20 territorio;
- essere punto di riferimento per le =E2=80=9Cemergenze = sociali=E2=80=9D;
-=20 attuare la programmazione, l=E2=80=99organizzazione ed il coordinamento = delle attivit=C3=A0=20 ricreative.

WP=20 Theme & Icons=20 by N.Design Studio , columnized by MangoOrange =

Ricerca sul Web

Calendario di TG Roseto

    Ora italiana

    Agosto 2008
    L M M G V S D
    =C2=AB = Lug    
      1 2 3
    4 5 6 7 8 9 10
    11 12 13 14 15 16 17
    18 19 20 21 22 23 24
    25 26 27 28 29 30 31

Strumenti di TG Roseto

TG Roseto sul Web

    =20


------=_NextPart_001_0030_01C8F93B.72947DE0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-4101814589150147&dt=1218181286734&lmt=1218181286&output=html&slotname=7367424299&correlator=1218181286718&url=http%3A%2F%2Fwww.tgroseto.net%3A80%2F6427%2Fpescara-asso-domani-le-temperature-toccheranno-i-39-c%C2%B0%2F&frm=0&cc=100&ga_vid=2707793196000737300.1218181287&ga_sid=1218181287&ga_hid=1873138563&flash=9.0.115.0&u_h=768&u_w=1024&u_ah=740&u_aw=1024&u_cd=32&u_tz=120&u_his=2&u_java=true =EF=BB=BF
3D"" 3D""
Hotel
Clima
Vacanze Mare
Mega Pescara
Mare=20 Italia
------=_NextPart_001_0030_01C8F93B.72947DE0-- ------=_NextPart_000_0019_01C8F93B.72920CE0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.tgroseto.net/wp-content/themes/tgrtheme_n/dbx.js // DBX2.05 :: Docking Boxes (dbx)=0A= // *****************************************************=0A= // DOM scripting by brothercake -- http://www.brothercake.com/=0A= // GNU Lesser General Public License -- = http://www.gnu.org/licenses/lgpl.html=0A= //******************************************************=0A= var dbx;=0A= =0A= function dbxManager(sid){=0A= dbx =3D this;=0A= if(!/^[-_a-z0-9]+$/i.test(sid)) { =0A= alert('Error from dbxManager:\n"' + sid + '" is an invalid session = ID'); =0A= return; =0A= }=0A= =0A= this.supported =3D !(document.getElementsByTagName('*').length =3D=3D 0 = || (navigator.vendor =3D=3D 'KDE' && typeof window.sidebar-left =3D=3D = 'undefined'));=0A= =0A= if(!this.supported) { =0A= return; =0A= }=0A= =0A= this.etype =3D typeof document.addEventListener !=3D 'undefined' ? = 'addEventListener' : typeof document.attachEvent !=3D 'undefined' ? = 'attachEvent' : 'none';=0A= this.eprefix =3D (this.etype =3D=3D 'attachEvent' ? 'on' : '');=0A= if(typeof window.opera !=3D 'undefined' && = parseFloat(navigator.userAgent.toLowerCase().split(/opera[\/ = ]/)[1].split(' ')[0], 10) < 7.5){=0A= this.etype =3D 'none';=0A= }=0A= =0A= if(this.etype =3D=3D 'none') =0A= { =0A= this.supported =3D false; return; =0A= }=0A= =0A= this.running =3D 0;=0A= this.sid =3D sid;=0A= this.savedata =3D {};=0A= this.cookiestate =3D this.getCookieState();=0A= };dbxManager.prototype.setCookieState =3D function(){var now =3D new = Date();now.setTime(now.getTime() + (365*24*60*60*1000));var str =3D = '';for(j in this.savedata){if(typeof this.savedata[j]!=3D'function'){str = +=3D j + '=3D' + this.savedata[j] + '&'}}this.state =3D = str.replace(/^(.+)&$/, '$1');this.cookiestring =3D = this.state.replace(/,/g, '|');this.cookiestring =3D = this.cookiestring.replace(/=3D/g, ':');if(typeof this.onstatechange = =3D=3D 'undefined' || this.onstatechange()){document.cookie =3D 'dbx-' + = this.sid + '=3D'+ this.cookiestring+ '; expires=3D' + now.toGMTString()+ = '; path=3D/';}};dbxManager.prototype.getCookieState =3D = function(){this.cookiestate =3D = null;if(document.cookie){if(document.cookie.indexOf('dbx-' + = this.sid)!=3D-1){this.cookie =3D document.cookie.split('dbx-' + this.sid = + '=3D')[1].split(';')[0].split('&');for(var i in this.cookie){if(typeof = this.cookie[i]!=3D'function'){this.cookie[i] =3D = this.cookie[i].replace(/\|/g, ',');this.cookie[i]=3D = this.cookie[i].replace(/:/g, '=3D');this.cookie[i] =3D = this.cookie[i].split('=3D');this.cookie[i][1] =3D = this.cookie[i][1].split(',');}}this.cookiestate =3D {};for(i in = this.cookie){if(typeof = this.cookie[i]!=3D'function'){this.cookiestate[this.cookie[i][0]] =3D = this.cookie[i][1];}}}}return = this.cookiestate;};dbxManager.prototype.addDataMember =3D function(gid, = order){this.savedata[gid] =3D order;};dbxManager.prototype.createElement = =3D function(tag){return typeof document.createElementNS !=3D = 'undefined' ? document.createElementNS('http://www.w3.org/1999/xhtml', = tag) : document.createElement(tag);};dbxManager.prototype.getTarget =3D = function(e, pattern, node){if(typeof node !=3D 'undefined'){var target = =3D node;}else{target =3D typeof e.target !=3D 'undefined' ? e.target : = e.srcElement;}var regex =3D new RegExp(pattern, = '');while(!regex.test(target.className)){target =3D = target.parentNode;}return target;};function dbxGroup(gid, dir, thresh, = fix, ani, togs, def, open, close, move, toggle, kmove, ktoggle, = syntax){if(!/^[-_a-z0-9]+$/i.test(gid)) { alert('Error from = dbxGroup:\n"' + gid + '" is an invalid container ID'); return; = }this.container =3D document.getElementById(gid);if(this.container = =3D=3D null || !dbx.supported) { return; }var self =3D this;this.gid =3D = gid;this.dragok =3D false;this.box =3D null;this.vertical =3D dir =3D=3D = 'vertical';this.threshold =3D parseInt(thresh, 10);this.restrict =3D fix = =3D=3D 'yes';this.resolution =3D parseInt(ani, 10);this.toggles =3D togs = =3D=3D 'yes';this.defopen =3D def !=3D 'closed';this.vocab =3D {'open' : = open,'close' : close,'move' : move,'toggle' : toggle,'kmove' : = kmove,'ktoggle' : ktoggle,'syntax' : = syntax};this.container.style.position =3D = 'relative';this.container.style.display =3D 'block';if(typeof = window.opera !=3D 'undefined'){this.container.style.display =3D = 'run-in';}this.boxes =3D [];this.buttons =3D [];this.order =3D = [];this.eles =3D this.container.getElementsByTagName('*');for(var i=3D0; = i = 0)){var sibling =3D this.boxes[positions[i + (positive ? 1 : = -1)][0]];if(this.resolution > 0){var visipos =3D { 'x' : = parent.offsetLeft, 'y' : parent.offsetTop };var siblingpos =3D { 'x' : = sibling.offsetLeft, 'y' : sibling.offsetTop };}var obj =3D { 'insert' : = (positive ? sibling : parent), 'before' : (positive ? parent : sibling) = };this.container.insertBefore(obj.insert, obj.before);if(this.resolution = > 0){var animators =3D{'sibling' : new dbxAnimator(this, sibling, = siblingpos, this.resolution, true, anchor),'parent' : new = dbxAnimator(this, parent, visipos, this.resolution, true, = anchor)};}else{anchor.focus();}break;}}}this.getBoxOrder();}};dbxGroup.pr= ototype.compare =3D function(a, b){return a[1] - = b[1];};dbxGroup.prototype.createTooltip =3D function(isopen, = anchor){if(this.keydown){this.tooltip =3D = this.container.appendChild(dbx.createElement('span'));this.tooltip.style.= visibility =3D 'hidden';this.tooltip.className =3D = 'dbx-tooltip';if(isopen !=3D = null){this.tooltip.appendChild(document.createTextNode(this.vocab.kmove = + this.vocab.ktoggle.replace('%toggle%', isopen ? this.vocab.close : = this.vocab.open)));}else{this.tooltip.appendChild(document.createTextNode= (this.vocab.kmove));}var parent =3D dbx.getTarget(null, 'dbx\-box', = anchor);this.tooltip.style.left =3D parent.offsetLeft + = 'px';this.tooltip.style.top =3D parent.offsetTop + 'px';var tooltip =3D = this.tooltip;window.setTimeout(function(){if(tooltip !=3D null) { = tooltip.style.visibility =3D 'visible'; }}, = 500);}};dbxGroup.prototype.removeTooltip =3D function(){if(this.tooltip = !=3D = null){this.tooltip.parentNode.removeChild(this.tooltip);this.tooltip =3D = null;}};dbxGroup.prototype.mousedown =3D function(e, box){var node =3D = typeof e.target !=3D 'undefined' ? e.target : = e.srcElement;if(node.nodeName =3D=3D '#text') { node =3D = node.parentNode; = }if(!/dbx\-(toggle|box|group)/i.test(node.className)){while(!/dbx\-(handl= e|box|group)/i.test(node.className)){node =3D = node.parentNode;}}if(/dbx\-handle/i.test(node.className)){this.removeTool= tip();this.released =3D false;this.initial =3D { 'x' : e.clientX, 'y' : = e.clientY };this.current =3D { 'x' : 0, 'y' : 0 = };this.createCloneBox(box);if(typeof e.preventDefault !=3D 'undefined' ) = { e.preventDefault(); }if(typeof document.onselectstart !=3D = 'undefined'){document.onselectstart =3D function() { return false; = }}}};dbxGroup.prototype.mousemove =3D function(e){if(this.dragok && = this.box !=3D null){this.positive =3D this.vertical ? (e.clientY > = this.current.y ? true : false) : (e.clientX > this.current.x ? true : = false);this.current =3D { 'x' : e.clientX, 'y' : e.clientY };var overall = =3D { 'x' : this.current.x - this.initial.x, 'y' : this.current.y - = this.initial.y };if(((overall.x >=3D 0 && overall.x <=3D this.threshold) = || (overall.x <=3D 0 && overall.x >=3D 0 - this.threshold))&&((overall.y = >=3D 0 && overall.y <=3D this.threshold) || (overall.y <=3D 0 && = overall.y >=3D 0 - this.threshold))){this.current.x -=3D = overall.x;this.current.y -=3D overall.y;}if(this.released || overall.x > = this.threshold || overall.x < (0 - this.threshold) || overall.y > = this.threshold || overall.y < (0 - this.threshold)){dbx.group =3D = this.container;dbx.box =3D this.box;dbx.event =3D e;if(typeof = dbx.onboxdrag =3D=3D 'undefined' || dbx.onboxdrag()){this.released =3D = true;if(!this.restrict || !this.vertical) { this.boxclone.style.left =3D = (this.current.x - this.difference.x) + 'px'; }if(!this.restrict || = this.vertical) { this.boxclone.style.top =3D (this.current.y - = this.difference.y) + 'px'; }this.moveOriginalToPosition(this.current.x, = this.current.y);if(typeof e.preventDefault !=3D 'undefined' ) { = e.preventDefault(); }}}}return true;};dbxGroup.prototype.mouseup =3D = function(e){if(this.box !=3D = null){this.moveOriginalToPosition(e.clientX, = e.clientY);this.removeCloneBox();this.getBoxOrder();if(typeof = document.onselectstart !=3D 'undefined'){document.onselectstart =3D = function() { return true; }}}this.dragok =3D = false;};dbxGroup.prototype.keypress =3D function(e, = anchor){if(/^(3[7-9])|(40)$/.test(e.keyCode)){this.removeTooltip();if((th= is.vertical && /^(38|40)$/.test(e.keyCode)) || (!this.vertical && = /^(37|39)$/.test(e.keyCode))){this.shiftBoxPosition(e, anchor, = /^[3][78]$/.test(e.keyCode) ? false : true);if(typeof e.preventDefault = !=3D 'undefined') { e.preventDefault(); }else { return false; }typeof = e.stopPropagation !=3D 'undefined' ? e.stopPropagation() : = e.cancelBubble =3D true;this.keydown =3D false;}}return = true;};dbxGroup.prototype.getBoxOrder =3D function(){this.order =3D = [];var len =3D this.eles.length;for(var j=3D0; j boxprops.xy && cloneprops.xy < = boxprops.xy)||(!this.positive && cloneprops.xy < boxprops.xy && = cloneprops.xy + cloneprops.wh > boxprops.xy)){if(this.boxes[i] =3D=3D = this.box) { return; }var sibling =3D = this.box.nextSibling;while(sibling.className =3D=3D null || = !/dbx\-box/.test(sibling.className)){sibling =3D = sibling.nextSibling;}if(this.boxes[i] =3D=3D sibling) { return; = }if(this.resolution > 0){if(this.box[this.vertical ? 'offsetTop' : = 'offsetLeft'] < boxprops.xy){var visibox =3D = this.boxes[i].previousSibling;while(visibox.className =3D=3D null || = !/dbx\-box/.test(visibox.className)){visibox =3D = visibox.previousSibling;}}else{visibox =3D this.boxes[i];}var visipos = =3D { 'x' : visibox.offsetLeft, 'y' : visibox.offsetTop };}var prepos = =3D { 'x' : this.box.offsetLeft, 'y' : this.box.offsetTop = };this.container.insertBefore(this.box, this.boxes[i]);this.initial.x = +=3D (this.box.offsetLeft - prepos.x);this.initial.y +=3D = (this.box.offsetTop - prepos.y);if(this.resolution > 0 && visibox !=3D = this.box){var animator =3D new dbxAnimator(this, visibox, visipos, = this.resolution, false, null);}else{}break;}}};function = dbxAnimator(caller, box, pos, res, kbd, anchor){this.caller =3D = caller;this.box =3D box;this.timer =3D null;var before =3D = pos[this.caller.vertical ? 'y' : 'x'];var after =3D = this.box[this.caller.vertical ? 'offsetTop' : 'offsetLeft'];if(before = !=3D after){if(dbx.running > this.caller.boxes.length - 1) { return; = }var clone =3D this.caller.createClone(this.box, 29999, = arguments[2]);clone.style.visibility =3D = 'visible';this.box.style.visibility =3D = 'hidden';this.animateClone(clone,before,after > before ? after - before = : 0 - (before - after),this.caller.vertical ? 'top' : = 'left',res,kbd,anchor);}};dbxAnimator.prototype.animateClone =3D = function(clone, current, change, dir, res, kbd, anchor){var self =3D = this;var count =3D 0;dbx.running ++;this.timer =3D = window.setInterval(function(){count ++;current +=3D change / = res;clone.style[dir] =3D current + 'px';if(count =3D=3D = res){window.clearTimeout(self.timer);self.timer =3D null;dbx.running = --;self.caller.container.removeChild(clone);self.box.style.visibility = =3D 'visible';if(kbd){if(anchor !=3D null && = anchor.parentNode.style.visibility !=3D 'hidden'){anchor.focus();}else = if(self.caller.toggles){var button =3D = self.caller.buttons[parseInt(self.box.className.split('dbxid')[1],10)];if= (button !=3D null && typeof button.isactive !=3D = 'undefined'){button.focus();}}}}}, 20);};if(typeof window.attachEvent = !=3D 'undefined'){window.attachEvent('onunload', function(){var ev =3D = ['mousedown', 'mousemove', 'mouseup', 'mouseout', 'click', 'keydown', = 'keyup', 'focus', 'blur', 'selectstart', 'statechange', 'boxdrag', = 'boxopen', 'boxclose'];var el =3D ev.length;var dl =3D = document.all.length;for(var i=3D0; i -1,=0A= Gecko: navigator.userAgent.indexOf('Gecko') > -1 && = navigator.userAgent.indexOf('KHTML') =3D=3D -1,=0A= MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)=0A= },=0A= =0A= BrowserFeatures: {=0A= XPath: !!document.evaluate,=0A= ElementExtensions: !!window.HTMLElement,=0A= SpecificElementExtensions:=0A= document.createElement('div').__proto__ &&=0A= document.createElement('div').__proto__ !=3D=3D=0A= document.createElement('form').__proto__=0A= },=0A= =0A= ScriptFragment: ']*>([\\S\\s]*?)<\/script>',=0A= JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/,=0A= =0A= emptyFunction: function() { },=0A= K: function(x) { return x }=0A= };=0A= =0A= if (Prototype.Browser.MobileSafari)=0A= Prototype.BrowserFeatures.SpecificElementExtensions =3D false;=0A= =0A= if (Prototype.Browser.WebKit)=0A= Prototype.BrowserFeatures.XPath =3D false;=0A= =0A= /* Based on Alex Arnell's inheritance implementation. */=0A= var Class =3D {=0A= create: function() {=0A= var parent =3D null, properties =3D $A(arguments);=0A= if (Object.isFunction(properties[0]))=0A= parent =3D properties.shift();=0A= =0A= function klass() {=0A= this.initialize.apply(this, arguments);=0A= }=0A= =0A= Object.extend(klass, Class.Methods);=0A= klass.superclass =3D parent;=0A= klass.subclasses =3D [];=0A= =0A= if (parent) {=0A= var subclass =3D function() { };=0A= subclass.prototype =3D parent.prototype;=0A= klass.prototype =3D new subclass;=0A= parent.subclasses.push(klass);=0A= }=0A= =0A= for (var i =3D 0; i < properties.length; i++)=0A= klass.addMethods(properties[i]);=0A= =0A= if (!klass.prototype.initialize)=0A= klass.prototype.initialize =3D Prototype.emptyFunction;=0A= =0A= klass.prototype.constructor =3D klass;=0A= =0A= return klass;=0A= }=0A= };=0A= =0A= Class.Methods =3D {=0A= addMethods: function(source) {=0A= var ancestor =3D this.superclass && this.superclass.prototype;=0A= var properties =3D Object.keys(source);=0A= =0A= if (!Object.keys({ toString: true }).length)=0A= properties.push("toString", "valueOf");=0A= =0A= for (var i =3D 0, length =3D properties.length; i < length; i++) {=0A= var property =3D properties[i], value =3D source[property];=0A= if (ancestor && Object.isFunction(value) &&=0A= value.argumentNames().first() =3D=3D "$super") {=0A= var method =3D value, value =3D Object.extend((function(m) {=0A= return function() { return ancestor[m].apply(this, arguments) = };=0A= })(property).wrap(method), {=0A= valueOf: function() { return method },=0A= toString: function() { return method.toString() }=0A= });=0A= }=0A= this.prototype[property] =3D value;=0A= }=0A= =0A= return this;=0A= }=0A= };=0A= =0A= var Abstract =3D { };=0A= =0A= Object.extend =3D function(destination, source) {=0A= for (var property in source)=0A= destination[property] =3D source[property];=0A= return destination;=0A= };=0A= =0A= Object.extend(Object, {=0A= inspect: function(object) {=0A= try {=0A= if (object =3D=3D=3D undefined) return 'undefined';=0A= if (object =3D=3D=3D null) return 'null';=0A= return object.inspect ? object.inspect() : object.toString();=0A= } catch (e) {=0A= if (e instanceof RangeError) return '...';=0A= throw e;=0A= }=0A= },=0A= =0A= toJSON: function(object) {=0A= var type =3D typeof object;=0A= switch (type) {=0A= case 'undefined':=0A= case 'function':=0A= case 'unknown': return;=0A= case 'boolean': return object.toString();=0A= }=0A= =0A= if (object =3D=3D=3D null) return 'null';=0A= if (object.toJSON) return object.toJSON();=0A= if (Object.isElement(object)) return;=0A= =0A= var results =3D [];=0A= for (var property in object) {=0A= var value =3D Object.toJSON(object[property]);=0A= if (value !=3D=3D undefined)=0A= results.push(property.toJSON() + ': ' + value);=0A= }=0A= =0A= return '{' + results.join(', ') + '}';=0A= },=0A= =0A= toQueryString: function(object) {=0A= return $H(object).toQueryString();=0A= },=0A= =0A= toHTML: function(object) {=0A= return object && object.toHTML ? object.toHTML() : = String.interpret(object);=0A= },=0A= =0A= keys: function(object) {=0A= var keys =3D [];=0A= for (var property in object)=0A= keys.push(property);=0A= return keys;=0A= },=0A= =0A= values: function(object) {=0A= var values =3D [];=0A= for (var property in object)=0A= values.push(object[property]);=0A= return values;=0A= },=0A= =0A= clone: function(object) {=0A= return Object.extend({ }, object);=0A= },=0A= =0A= isElement: function(object) {=0A= return object && object.nodeType =3D=3D 1;=0A= },=0A= =0A= isArray: function(object) {=0A= return object && object.constructor =3D=3D=3D Array;=0A= },=0A= =0A= isHash: function(object) {=0A= return object instanceof Hash;=0A= },=0A= =0A= isFunction: function(object) {=0A= return typeof object =3D=3D "function";=0A= },=0A= =0A= isString: function(object) {=0A= return typeof object =3D=3D "string";=0A= },=0A= =0A= isNumber: function(object) {=0A= return typeof object =3D=3D "number";=0A= },=0A= =0A= isUndefined: function(object) {=0A= return typeof object =3D=3D "undefined";=0A= }=0A= });=0A= =0A= Object.extend(Function.prototype, {=0A= argumentNames: function() {=0A= var names =3D = this.toString().match(/^[\s\(]*function[^(]*\((.*?)\)/)[1].split(",").inv= oke("strip");=0A= return names.length =3D=3D 1 && !names[0] ? [] : names;=0A= },=0A= =0A= bind: function() {=0A= if (arguments.length < 2 && arguments[0] =3D=3D=3D undefined) return = this;=0A= var __method =3D this, args =3D $A(arguments), object =3D = args.shift();=0A= return function() {=0A= return __method.apply(object, args.concat($A(arguments)));=0A= }=0A= },=0A= =0A= bindAsEventListener: function() {=0A= var __method =3D this, args =3D $A(arguments), object =3D = args.shift();=0A= return function(event) {=0A= return __method.apply(object, [event || = window.event].concat(args));=0A= }=0A= },=0A= =0A= curry: function() {=0A= if (!arguments.length) return this;=0A= var __method =3D this, args =3D $A(arguments);=0A= return function() {=0A= return __method.apply(this, args.concat($A(arguments)));=0A= }=0A= },=0A= =0A= delay: function() {=0A= var __method =3D this, args =3D $A(arguments), timeout =3D = args.shift() * 1000;=0A= return window.setTimeout(function() {=0A= return __method.apply(__method, args);=0A= }, timeout);=0A= },=0A= =0A= wrap: function(wrapper) {=0A= var __method =3D this;=0A= return function() {=0A= return wrapper.apply(this, = [__method.bind(this)].concat($A(arguments)));=0A= }=0A= },=0A= =0A= methodize: function() {=0A= if (this._methodized) return this._methodized;=0A= var __method =3D this;=0A= return this._methodized =3D function() {=0A= return __method.apply(null, [this].concat($A(arguments)));=0A= };=0A= }=0A= });=0A= =0A= Function.prototype.defer =3D Function.prototype.delay.curry(0.01);=0A= =0A= Date.prototype.toJSON =3D function() {=0A= return '"' + this.getUTCFullYear() + '-' +=0A= (this.getUTCMonth() + 1).toPaddedString(2) + '-' +=0A= this.getUTCDate().toPaddedString(2) + 'T' +=0A= this.getUTCHours().toPaddedString(2) + ':' +=0A= this.getUTCMinutes().toPaddedString(2) + ':' +=0A= this.getUTCSeconds().toPaddedString(2) + 'Z"';=0A= };=0A= =0A= var Try =3D {=0A= these: function() {=0A= var returnValue;=0A= =0A= for (var i =3D 0, length =3D arguments.length; i < length; i++) {=0A= var lambda =3D arguments[i];=0A= try {=0A= returnValue =3D lambda();=0A= break;=0A= } catch (e) { }=0A= }=0A= =0A= return returnValue;=0A= }=0A= };=0A= =0A= RegExp.prototype.match =3D RegExp.prototype.test;=0A= =0A= RegExp.escape =3D function(str) {=0A= return String(str).replace(/([.*+?^=3D!:${}()|[\]\/\\])/g, '\\$1');=0A= };=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= var PeriodicalExecuter =3D Class.create({=0A= initialize: function(callback, frequency) {=0A= this.callback =3D callback;=0A= this.frequency =3D frequency;=0A= this.currentlyExecuting =3D false;=0A= =0A= this.registerCallback();=0A= },=0A= =0A= registerCallback: function() {=0A= this.timer =3D setInterval(this.onTimerEvent.bind(this), = this.frequency * 1000);=0A= },=0A= =0A= execute: function() {=0A= this.callback(this);=0A= },=0A= =0A= stop: function() {=0A= if (!this.timer) return;=0A= clearInterval(this.timer);=0A= this.timer =3D null;=0A= },=0A= =0A= onTimerEvent: function() {=0A= if (!this.currentlyExecuting) {=0A= try {=0A= this.currentlyExecuting =3D true;=0A= this.execute();=0A= } finally {=0A= this.currentlyExecuting =3D false;=0A= }=0A= }=0A= }=0A= });=0A= Object.extend(String, {=0A= interpret: function(value) {=0A= return value =3D=3D null ? '' : String(value);=0A= },=0A= specialChar: {=0A= '\b': '\\b',=0A= '\t': '\\t',=0A= '\n': '\\n',=0A= '\f': '\\f',=0A= '\r': '\\r',=0A= '\\': '\\\\'=0A= }=0A= });=0A= =0A= Object.extend(String.prototype, {=0A= gsub: function(pattern, replacement) {=0A= var result =3D '', source =3D this, match;=0A= replacement =3D arguments.callee.prepareReplacement(replacement);=0A= =0A= while (source.length > 0) {=0A= if (match =3D source.match(pattern)) {=0A= result +=3D source.slice(0, match.index);=0A= result +=3D String.interpret(replacement(match));=0A= source =3D source.slice(match.index + match[0].length);=0A= } else {=0A= result +=3D source, source =3D '';=0A= }=0A= }=0A= return result;=0A= },=0A= =0A= sub: function(pattern, replacement, count) {=0A= replacement =3D this.gsub.prepareReplacement(replacement);=0A= count =3D count =3D=3D=3D undefined ? 1 : count;=0A= =0A= return this.gsub(pattern, function(match) {=0A= if (--count < 0) return match[0];=0A= return replacement(match);=0A= });=0A= },=0A= =0A= scan: function(pattern, iterator) {=0A= this.gsub(pattern, iterator);=0A= return String(this);=0A= },=0A= =0A= truncate: function(length, truncation) {=0A= length =3D length || 30;=0A= truncation =3D truncation =3D=3D=3D undefined ? '...' : truncation;=0A= return this.length > length ?=0A= this.slice(0, length - truncation.length) + truncation : = String(this);=0A= },=0A= =0A= strip: function() {=0A= return this.replace(/^\s+/, '').replace(/\s+$/, '');=0A= },=0A= =0A= stripTags: function() {=0A= return this.replace(/<\/?[^>]+>/gi, '');=0A= },=0A= =0A= stripScripts: function() {=0A= return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');=0A= },=0A= =0A= extractScripts: function() {=0A= var matchAll =3D new RegExp(Prototype.ScriptFragment, 'img');=0A= var matchOne =3D new RegExp(Prototype.ScriptFragment, 'im');=0A= return (this.match(matchAll) || []).map(function(scriptTag) {=0A= return (scriptTag.match(matchOne) || ['', ''])[1];=0A= });=0A= },=0A= =0A= evalScripts: function() {=0A= return this.extractScripts().map(function(script) { return = eval(script) });=0A= },=0A= =0A= escapeHTML: function() {=0A= var self =3D arguments.callee;=0A= self.text.data =3D this;=0A= return self.div.innerHTML;=0A= },=0A= =0A= unescapeHTML: function() {=0A= var div =3D new Element('div');=0A= div.innerHTML =3D this.stripTags();=0A= return div.childNodes[0] ? (div.childNodes.length > 1 ?=0A= $A(div.childNodes).inject('', function(memo, node) { return = memo+node.nodeValue }) :=0A= div.childNodes[0].nodeValue) : '';=0A= },=0A= =0A= toQueryParams: function(separator) {=0A= var match =3D this.strip().match(/([^?#]*)(#.*)?$/);=0A= if (!match) return { };=0A= =0A= return match[1].split(separator || '&').inject({ }, function(hash, = pair) {=0A= if ((pair =3D pair.split('=3D'))[0]) {=0A= var key =3D decodeURIComponent(pair.shift());=0A= var value =3D pair.length > 1 ? pair.join('=3D') : pair[0];=0A= if (value !=3D undefined) value =3D decodeURIComponent(value);=0A= =0A= if (key in hash) {=0A= if (!Object.isArray(hash[key])) hash[key] =3D [hash[key]];=0A= hash[key].push(value);=0A= }=0A= else hash[key] =3D value;=0A= }=0A= return hash;=0A= });=0A= },=0A= =0A= toArray: function() {=0A= return this.split('');=0A= },=0A= =0A= succ: function() {=0A= return this.slice(0, this.length - 1) +=0A= String.fromCharCode(this.charCodeAt(this.length - 1) + 1);=0A= },=0A= =0A= times: function(count) {=0A= return count < 1 ? '' : new Array(count + 1).join(this);=0A= },=0A= =0A= camelize: function() {=0A= var parts =3D this.split('-'), len =3D parts.length;=0A= if (len =3D=3D 1) return parts[0];=0A= =0A= var camelized =3D this.charAt(0) =3D=3D '-'=0A= ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1)=0A= : parts[0];=0A= =0A= for (var i =3D 1; i < len; i++)=0A= camelized +=3D parts[i].charAt(0).toUpperCase() + = parts[i].substring(1);=0A= =0A= return camelized;=0A= },=0A= =0A= capitalize: function() {=0A= return this.charAt(0).toUpperCase() + = this.substring(1).toLowerCase();=0A= },=0A= =0A= underscore: function() {=0A= return this.gsub(/::/, = '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{= 1}_#{2}').gsub(/-/,'_').toLowerCase();=0A= },=0A= =0A= dasherize: function() {=0A= return this.gsub(/_/,'-');=0A= },=0A= =0A= inspect: function(useDoubleQuotes) {=0A= var escapedString =3D this.gsub(/[\x00-\x1f\\]/, function(match) {=0A= var character =3D String.specialChar[match[0]];=0A= return character ? character : '\\u00' + = match[0].charCodeAt().toPaddedString(2, 16);=0A= });=0A= if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') = + '"';=0A= return "'" + escapedString.replace(/'/g, '\\\'') + "'";=0A= },=0A= =0A= toJSON: function() {=0A= return this.inspect(true);=0A= },=0A= =0A= unfilterJSON: function(filter) {=0A= return this.sub(filter || Prototype.JSONFilter, '#{1}');=0A= },=0A= =0A= isJSON: function() {=0A= var str =3D this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, '');=0A= return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str);=0A= },=0A= =0A= evalJSON: function(sanitize) {=0A= var json =3D this.unfilterJSON();=0A= try {=0A= if (!sanitize || json.isJSON()) return eval('(' + json + ')');=0A= } catch (e) { }=0A= throw new SyntaxError('Badly formed JSON string: ' + this.inspect());=0A= },=0A= =0A= include: function(pattern) {=0A= return this.indexOf(pattern) > -1;=0A= },=0A= =0A= startsWith: function(pattern) {=0A= return this.indexOf(pattern) =3D=3D=3D 0;=0A= },=0A= =0A= endsWith: function(pattern) {=0A= var d =3D this.length - pattern.length;=0A= return d >=3D 0 && this.lastIndexOf(pattern) =3D=3D=3D d;=0A= },=0A= =0A= empty: function() {=0A= return this =3D=3D '';=0A= },=0A= =0A= blank: function() {=0A= return /^\s*$/.test(this);=0A= },=0A= =0A= interpolate: function(object, pattern) {=0A= return new Template(this, pattern).evaluate(object);=0A= }=0A= });=0A= =0A= if (Prototype.Browser.WebKit || Prototype.Browser.IE) = Object.extend(String.prototype, {=0A= escapeHTML: function() {=0A= return = this.replace(/&/g,'&').replace(//g,'>');=0A= },=0A= unescapeHTML: function() {=0A= return = this.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>');=0A= }=0A= });=0A= =0A= String.prototype.gsub.prepareReplacement =3D function(replacement) {=0A= if (Object.isFunction(replacement)) return replacement;=0A= var template =3D new Template(replacement);=0A= return function(match) { return template.evaluate(match) };=0A= };=0A= =0A= String.prototype.parseQuery =3D String.prototype.toQueryParams;=0A= =0A= Object.extend(String.prototype.escapeHTML, {=0A= div: document.createElement('div'),=0A= text: document.createTextNode('')=0A= });=0A= =0A= with (String.prototype.escapeHTML) div.appendChild(text);=0A= =0A= var Template =3D Class.create({=0A= initialize: function(template, pattern) {=0A= this.template =3D template.toString();=0A= this.pattern =3D pattern || Template.Pattern;=0A= },=0A= =0A= evaluate: function(object) {=0A= if (Object.isFunction(object.toTemplateReplacements))=0A= object =3D object.toTemplateReplacements();=0A= =0A= return this.template.gsub(this.pattern, function(match) {=0A= if (object =3D=3D null) return '';=0A= =0A= var before =3D match[1] || '';=0A= if (before =3D=3D '\\') return match[2];=0A= =0A= var ctx =3D object, expr =3D match[3];=0A= var pattern =3D /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/, match = =3D pattern.exec(expr);=0A= if (match =3D=3D null) return before;=0A= =0A= while (match !=3D null) {=0A= var comp =3D match[1].startsWith('[') ? match[2].gsub('\\\\]', = ']') : match[1];=0A= ctx =3D ctx[comp];=0A= if (null =3D=3D ctx || '' =3D=3D match[3]) break;=0A= expr =3D expr.substring('[' =3D=3D match[3] ? match[1].length : = match[0].length);=0A= match =3D pattern.exec(expr);=0A= }=0A= =0A= return before + String.interpret(ctx);=0A= }.bind(this));=0A= }=0A= });=0A= Template.Pattern =3D /(^|.|\r|\n)(#\{(.*?)\})/;=0A= =0A= var $break =3D { };=0A= =0A= var Enumerable =3D {=0A= each: function(iterator, context) {=0A= var index =3D 0;=0A= iterator =3D iterator.bind(context);=0A= try {=0A= this._each(function(value) {=0A= iterator(value, index++);=0A= });=0A= } catch (e) {=0A= if (e !=3D $break) throw e;=0A= }=0A= return this;=0A= },=0A= =0A= eachSlice: function(number, iterator, context) {=0A= iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A= var index =3D -number, slices =3D [], array =3D this.toArray();=0A= while ((index +=3D number) < array.length)=0A= slices.push(array.slice(index, index+number));=0A= return slices.collect(iterator, context);=0A= },=0A= =0A= all: function(iterator, context) {=0A= iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A= var result =3D true;=0A= this.each(function(value, index) {=0A= result =3D result && !!iterator(value, index);=0A= if (!result) throw $break;=0A= });=0A= return result;=0A= },=0A= =0A= any: function(iterator, context) {=0A= iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A= var result =3D false;=0A= this.each(function(value, index) {=0A= if (result =3D !!iterator(value, index))=0A= throw $break;=0A= });=0A= return result;=0A= },=0A= =0A= collect: function(iterator, context) {=0A= iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A= var results =3D [];=0A= this.each(function(value, index) {=0A= results.push(iterator(value, index));=0A= });=0A= return results;=0A= },=0A= =0A= detect: function(iterator, context) {=0A= iterator =3D iterator.bind(context);=0A= var result;=0A= this.each(function(value, index) {=0A= if (iterator(value, index)) {=0A= result =3D value;=0A= throw $break;=0A= }=0A= });=0A= return result;=0A= },=0A= =0A= findAll: function(iterator, context) {=0A= iterator =3D iterator.bind(context);=0A= var results =3D [];=0A= this.each(function(value, index) {=0A= if (iterator(value, index))=0A= results.push(value);=0A= });=0A= return results;=0A= },=0A= =0A= grep: function(filter, iterator, context) {=0A= iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A= var results =3D [];=0A= =0A= if (Object.isString(filter))=0A= filter =3D new RegExp(filter);=0A= =0A= this.each(function(value, index) {=0A= if (filter.match(value))=0A= results.push(iterator(value, index));=0A= });=0A= return results;=0A= },=0A= =0A= include: function(object) {=0A= if (Object.isFunction(this.indexOf))=0A= if (this.indexOf(object) !=3D -1) return true;=0A= =0A= var found =3D false;=0A= this.each(function(value) {=0A= if (value =3D=3D object) {=0A= found =3D true;=0A= throw $break;=0A= }=0A= });=0A= return found;=0A= },=0A= =0A= inGroupsOf: function(number, fillWith) {=0A= fillWith =3D fillWith =3D=3D=3D undefined ? null : fillWith;=0A= return this.eachSlice(number, function(slice) {=0A= while(slice.length < number) slice.push(fillWith);=0A= return slice;=0A= });=0A= },=0A= =0A= inject: function(memo, iterator, context) {=0A= iterator =3D iterator.bind(context);=0A= this.each(function(value, index) {=0A= memo =3D iterator(memo, value, index);=0A= });=0A= return memo;=0A= },=0A= =0A= invoke: function(method) {=0A= var args =3D $A(arguments).slice(1);=0A= return this.map(function(value) {=0A= return value[method].apply(value, args);=0A= });=0A= },=0A= =0A= max: function(iterator, context) {=0A= iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A= var result;=0A= this.each(function(value, index) {=0A= value =3D iterator(value, index);=0A= if (result =3D=3D undefined || value >=3D result)=0A= result =3D value;=0A= });=0A= return result;=0A= },=0A= =0A= min: function(iterator, context) {=0A= iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A= var result;=0A= this.each(function(value, index) {=0A= value =3D iterator(value, index);=0A= if (result =3D=3D undefined || value < result)=0A= result =3D value;=0A= });=0A= return result;=0A= },=0A= =0A= partition: function(iterator, context) {=0A= iterator =3D iterator ? iterator.bind(context) : Prototype.K;=0A= var trues =3D [], falses =3D [];=0A= this.each(function(value, index) {=0A= (iterator(value, index) ?=0A= trues : falses).push(value);=0A= });=0A= return [trues, falses];=0A= },=0A= =0A= pluck: function(property) {=0A= var results =3D [];=0A= this.each(function(value) {=0A= results.push(value[property]);=0A= });=0A= return results;=0A= },=0A= =0A= reject: function(iterator, context) {=0A= iterator =3D iterator.bind(context);=0A= var results =3D [];=0A= this.each(function(value, index) {=0A= if (!iterator(value, index))=0A= results.push(value);=0A= });=0A= return results;=0A= },=0A= =0A= sortBy: function(iterator, context) {=0A= iterator =3D iterator.bind(context);=0A= return this.map(function(value, index) {=0A= return {value: value, criteria: iterator(value, index)};=0A= }).sort(function(left, right) {=0A= var a =3D left.criteria, b =3D right.criteria;=0A= return a < b ? -1 : a > b ? 1 : 0;=0A= }).pluck('value');=0A= },=0A= =0A= toArray: function() {=0A= return this.map();=0A= },=0A= =0A= zip: function() {=0A= var iterator =3D Prototype.K, args =3D $A(arguments);=0A= if (Object.isFunction(args.last()))=0A= iterator =3D args.pop();=0A= =0A= var collections =3D [this].concat(args).map($A);=0A= return this.map(function(value, index) {=0A= return iterator(collections.pluck(index));=0A= });=0A= },=0A= =0A= size: function() {=0A= return this.toArray().length;=0A= },=0A= =0A= inspect: function() {=0A= return '#';=0A= }=0A= };=0A= =0A= Object.extend(Enumerable, {=0A= map: Enumerable.collect,=0A= find: Enumerable.detect,=0A= select: Enumerable.findAll,=0A= filter: Enumerable.findAll,=0A= member: Enumerable.include,=0A= entries: Enumerable.toArray,=0A= every: Enumerable.all,=0A= some: Enumerable.any=0A= });=0A= function $A(iterable) {=0A= if (!iterable) return [];=0A= if (iterable.toArray) return iterable.toArray();=0A= var length =3D iterable.length, results =3D new Array(length);=0A= while (length--) results[length] =3D iterable[length];=0A= return results;=0A= }=0A= =0A= if (Prototype.Browser.WebKit) {=0A= function $A(iterable) {=0A= if (!iterable) return [];=0A= if (!(Object.isFunction(iterable) && iterable =3D=3D '[object = NodeList]') &&=0A= iterable.toArray) return iterable.toArray();=0A= var length =3D iterable.length, results =3D new Array(length);=0A= while (length--) results[length] =3D iterable[length];=0A= return results;=0A= }=0A= }=0A= =0A= Array.from =3D $A;=0A= =0A= Object.extend(Array.prototype, Enumerable);=0A= =0A= if (!Array.prototype._reverse) Array.prototype._reverse =3D = Array.prototype.reverse;=0A= =0A= Object.extend(Array.prototype, {=0A= _each: function(iterator) {=0A= for (var i =3D 0, length =3D this.length; i < length; i++)=0A= iterator(this[i]);=0A= },=0A= =0A= clear: function() {=0A= this.length =3D 0;=0A= return this;=0A= },=0A= =0A= first: function() {=0A= return this[0];=0A= },=0A= =0A= last: function() {=0A= return this[this.length - 1];=0A= },=0A= =0A= compact: function() {=0A= return this.select(function(value) {=0A= return value !=3D null;=0A= });=0A= },=0A= =0A= flatten: function() {=0A= return this.inject([], function(array, value) {=0A= return array.concat(Object.isArray(value) ?=0A= value.flatten() : [value]);=0A= });=0A= },=0A= =0A= without: function() {=0A= var values =3D $A(arguments);=0A= return this.select(function(value) {=0A= return !values.include(value);=0A= });=0A= },=0A= =0A= reverse: function(inline) {=0A= return (inline !=3D=3D false ? this : this.toArray())._reverse();=0A= },=0A= =0A= reduce: function() {=0A= return this.length > 1 ? this : this[0];=0A= },=0A= =0A= uniq: function(sorted) {=0A= return this.inject([], function(array, value, index) {=0A= if (0 =3D=3D index || (sorted ? array.last() !=3D value : = !array.include(value)))=0A= array.push(value);=0A= return array;=0A= });=0A= },=0A= =0A= intersect: function(array) {=0A= return this.uniq().findAll(function(item) {=0A= return array.detect(function(value) { return item =3D=3D=3D value = });=0A= });=0A= },=0A= =0A= clone: function() {=0A= return [].concat(this);=0A= },=0A= =0A= size: function() {=0A= return this.length;=0A= },=0A= =0A= inspect: function() {=0A= return '[' + this.map(Object.inspect).join(', ') + ']';=0A= },=0A= =0A= toJSON: function() {=0A= var results =3D [];=0A= this.each(function(object) {=0A= var value =3D Object.toJSON(object);=0A= if (value !=3D=3D undefined) results.push(value);=0A= });=0A= return '[' + results.join(', ') + ']';=0A= }=0A= });=0A= =0A= // use native browser JS 1.6 implementation if available=0A= if (Object.isFunction(Array.prototype.forEach))=0A= Array.prototype._each =3D Array.prototype.forEach;=0A= =0A= if (!Array.prototype.indexOf) Array.prototype.indexOf =3D function(item, = i) {=0A= i || (i =3D 0);=0A= var length =3D this.length;=0A= if (i < 0) i =3D length + i;=0A= for (; i < length; i++)=0A= if (this[i] =3D=3D=3D item) return i;=0A= return -1;=0A= };=0A= =0A= if (!Array.prototype.lastIndexOf) Array.prototype.lastIndexOf =3D = function(item, i) {=0A= i =3D isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1;=0A= var n =3D this.slice(0, i).reverse().indexOf(item);=0A= return (n < 0) ? n : i - n - 1;=0A= };=0A= =0A= Array.prototype.toArray =3D Array.prototype.clone;=0A= =0A= function $w(string) {=0A= if (!Object.isString(string)) return [];=0A= string =3D string.strip();=0A= return string ? string.split(/\s+/) : [];=0A= }=0A= =0A= if (Prototype.Browser.Opera){=0A= Array.prototype.concat =3D function() {=0A= var array =3D [];=0A= for (var i =3D 0, length =3D this.length; i < length; i++) = array.push(this[i]);=0A= for (var i =3D 0, length =3D arguments.length; i < length; i++) {=0A= if (Object.isArray(arguments[i])) {=0A= for (var j =3D 0, arrayLength =3D arguments[i].length; j < = arrayLength; j++)=0A= array.push(arguments[i][j]);=0A= } else {=0A= array.push(arguments[i]);=0A= }=0A= }=0A= return array;=0A= };=0A= }=0A= Object.extend(Number.prototype, {=0A= toColorPart: function() {=0A= return this.toPaddedString(2, 16);=0A= },=0A= =0A= succ: function() {=0A= return this + 1;=0A= },=0A= =0A= times: function(iterator) {=0A= $R(0, this, true).each(iterator);=0A= return this;=0A= },=0A= =0A= toPaddedString: function(length, radix) {=0A= var string =3D this.toString(radix || 10);=0A= return '0'.times(length - string.length) + string;=0A= },=0A= =0A= toJSON: function() {=0A= return isFinite(this) ? this.toString() : 'null';=0A= }=0A= });=0A= =0A= $w('abs round ceil floor').each(function(method){=0A= Number.prototype[method] =3D Math[method].methodize();=0A= });=0A= function $H(object) {=0A= return new Hash(object);=0A= };=0A= =0A= var Hash =3D Class.create(Enumerable, (function() {=0A= if (function() {=0A= var i =3D 0, Test =3D function(value) { this.key =3D value };=0A= Test.prototype.key =3D 'foo';=0A= for (var property in new Test('bar')) i++;=0A= return i > 1;=0A= }()) {=0A= function each(iterator) {=0A= var cache =3D [];=0A= for (var key in this._object) {=0A= var value =3D this._object[key];=0A= if (cache.include(key)) continue;=0A= cache.push(key);=0A= var pair =3D [key, value];=0A= pair.key =3D key;=0A= pair.value =3D value;=0A= iterator(pair);=0A= }=0A= }=0A= } else {=0A= function each(iterator) {=0A= for (var key in this._object) {=0A= var value =3D this._object[key], pair =3D [key, value];=0A= pair.key =3D key;=0A= pair.value =3D value;=0A= iterator(pair);=0A= }=0A= }=0A= }=0A= =0A= function toQueryPair(key, value) {=0A= if (Object.isUndefined(value)) return key;=0A= return key + '=3D' + encodeURIComponent(String.interpret(value));=0A= }=0A= =0A= return {=0A= initialize: function(object) {=0A= this._object =3D Object.isHash(object) ? object.toObject() : = Object.clone(object);=0A= },=0A= =0A= _each: each,=0A= =0A= set: function(key, value) {=0A= return this._object[key] =3D value;=0A= },=0A= =0A= get: function(key) {=0A= return this._object[key];=0A= },=0A= =0A= unset: function(key) {=0A= var value =3D this._object[key];=0A= delete this._object[key];=0A= return value;=0A= },=0A= =0A= toObject: function() {=0A= return Object.clone(this._object);=0A= },=0A= =0A= keys: function() {=0A= return this.pluck('key');=0A= },=0A= =0A= values: function() {=0A= return this.pluck('value');=0A= },=0A= =0A= index: function(value) {=0A= var match =3D this.detect(function(pair) {=0A= return pair.value =3D=3D=3D value;=0A= });=0A= return match && match.key;=0A= },=0A= =0A= merge: function(object) {=0A= return this.clone().update(object);=0A= },=0A= =0A= update: function(object) {=0A= return new Hash(object).inject(this, function(result, pair) {=0A= result.set(pair.key, pair.value);=0A= return result;=0A= });=0A= },=0A= =0A= toQueryString: function() {=0A= return this.map(function(pair) {=0A= var key =3D encodeURIComponent(pair.key), values =3D pair.value;=0A= =0A= if (values && typeof values =3D=3D 'object') {=0A= if (Object.isArray(values))=0A= return values.map(toQueryPair.curry(key)).join('&');=0A= }=0A= return toQueryPair(key, values);=0A= }).join('&');=0A= },=0A= =0A= inspect: function() {=0A= return '#';=0A= },=0A= =0A= toJSON: function() {=0A= return Object.toJSON(this.toObject());=0A= },=0A= =0A= clone: function() {=0A= return new Hash(this);=0A= }=0A= }=0A= })());=0A= =0A= Hash.prototype.toTemplateReplacements =3D Hash.prototype.toObject;=0A= Hash.from =3D $H;=0A= var ObjectRange =3D Class.create(Enumerable, {=0A= initialize: function(start, end, exclusive) {=0A= this.start =3D start;=0A= this.end =3D end;=0A= this.exclusive =3D exclusive;=0A= },=0A= =0A= _each: function(iterator) {=0A= var value =3D this.start;=0A= while (this.include(value)) {=0A= iterator(value);=0A= value =3D value.succ();=0A= }=0A= },=0A= =0A= include: function(value) {=0A= if (value < this.start)=0A= return false;=0A= if (this.exclusive)=0A= return value < this.end;=0A= return value <=3D this.end;=0A= }=0A= });=0A= =0A= var $R =3D function(start, end, exclusive) {=0A= return new ObjectRange(start, end, exclusive);=0A= };=0A= =0A= var Ajax =3D {=0A= getTransport: function() {=0A= return Try.these(=0A= function() {return new XMLHttpRequest()},=0A= function() {return new ActiveXObject('Msxml2.XMLHTTP')},=0A= function() {return new ActiveXObject('Microsoft.XMLHTTP')}=0A= ) || false;=0A= },=0A= =0A= activeRequestCount: 0=0A= };=0A= =0A= Ajax.Responders =3D {=0A= responders: [],=0A= =0A= _each: function(iterator) {=0A= this.responders._each(iterator);=0A= },=0A= =0A= register: function(responder) {=0A= if (!this.include(responder))=0A= this.responders.push(responder);=0A= },=0A= =0A= unregister: function(responder) {=0A= this.responders =3D this.responders.without(responder);=0A= },=0A= =0A= dispatch: function(callback, request, transport, json) {=0A= this.each(function(responder) {=0A= if (Object.isFunction(responder[callback])) {=0A= try {=0A= responder[callback].apply(responder, [request, transport, = json]);=0A= } catch (e) { }=0A= }=0A= });=0A= }=0A= };=0A= =0A= Object.extend(Ajax.Responders, Enumerable);=0A= =0A= Ajax.Responders.register({=0A= onCreate: function() { Ajax.activeRequestCount++ },=0A= onComplete: function() { Ajax.activeRequestCount-- }=0A= });=0A= =0A= Ajax.Base =3D Class.create({=0A= initialize: function(options) {=0A= this.options =3D {=0A= method: 'post',=0A= asynchronous: true,=0A= contentType: 'application/x-www-form-urlencoded',=0A= encoding: 'UTF-8',=0A= parameters: '',=0A= evalJSON: true,=0A= evalJS: true=0A= };=0A= Object.extend(this.options, options || { });=0A= =0A= this.options.method =3D this.options.method.toLowerCase();=0A= if (Object.isString(this.options.parameters))=0A= this.options.parameters =3D = this.options.parameters.toQueryParams();=0A= }=0A= });=0A= =0A= Ajax.Request =3D Class.create(Ajax.Base, {=0A= _complete: false,=0A= =0A= initialize: function($super, url, options) {=0A= $super(options);=0A= this.transport =3D Ajax.getTransport();=0A= this.request(url);=0A= },=0A= =0A= request: function(url) {=0A= this.url =3D url;=0A= this.method =3D this.options.method;=0A= var params =3D Object.clone(this.options.parameters);=0A= =0A= if (!['get', 'post'].include(this.method)) {=0A= // simulate other verbs over post=0A= params['_method'] =3D this.method;=0A= this.method =3D 'post';=0A= }=0A= =0A= this.parameters =3D params;=0A= =0A= if (params =3D Object.toQueryString(params)) {=0A= // when GET, append parameters to URL=0A= if (this.method =3D=3D 'get')=0A= this.url +=3D (this.url.include('?') ? '&' : '?') + params;=0A= else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent))=0A= params +=3D '&_=3D';=0A= }=0A= =0A= try {=0A= var response =3D new Ajax.Response(this);=0A= if (this.options.onCreate) this.options.onCreate(response);=0A= Ajax.Responders.dispatch('onCreate', this, response);=0A= =0A= this.transport.open(this.method.toUpperCase(), this.url,=0A= this.options.asynchronous);=0A= =0A= if (this.options.asynchronous) = this.respondToReadyState.bind(this).defer(1);=0A= =0A= this.transport.onreadystatechange =3D = this.onStateChange.bind(this);=0A= this.setRequestHeaders();=0A= =0A= this.body =3D this.method =3D=3D 'post' ? (this.options.postBody = || params) : null;=0A= this.transport.send(this.body);=0A= =0A= /* Force Firefox to handle ready state 4 for synchronous requests = */=0A= if (!this.options.asynchronous && this.transport.overrideMimeType)=0A= this.onStateChange();=0A= =0A= }=0A= catch (e) {=0A= this.dispatchException(e);=0A= }=0A= },=0A= =0A= onStateChange: function() {=0A= var readyState =3D this.transport.readyState;=0A= if (readyState > 1 && !((readyState =3D=3D 4) && this._complete))=0A= this.respondToReadyState(this.transport.readyState);=0A= },=0A= =0A= setRequestHeaders: function() {=0A= var headers =3D {=0A= 'X-Requested-With': 'XMLHttpRequest',=0A= 'X-Prototype-Version': Prototype.Version,=0A= 'Accept': 'text/javascript, text/html, application/xml, text/xml, = */*'=0A= };=0A= =0A= if (this.method =3D=3D 'post') {=0A= headers['Content-type'] =3D this.options.contentType +=0A= (this.options.encoding ? '; charset=3D' + this.options.encoding = : '');=0A= =0A= /* Force "Connection: close" for older Mozilla browsers to work=0A= * around a bug where XMLHttpRequest sends an incorrect=0A= * Content-length header. See Mozilla Bugzilla #246651.=0A= */=0A= if (this.transport.overrideMimeType &&=0A= (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < = 2005)=0A= headers['Connection'] =3D 'close';=0A= }=0A= =0A= // user-defined headers=0A= if (typeof this.options.requestHeaders =3D=3D 'object') {=0A= var extras =3D this.options.requestHeaders;=0A= =0A= if (Object.isFunction(extras.push))=0A= for (var i =3D 0, length =3D extras.length; i < length; i +=3D 2)=0A= headers[extras[i]] =3D extras[i+1];=0A= else=0A= $H(extras).each(function(pair) { headers[pair.key] =3D = pair.value });=0A= }=0A= =0A= for (var name in headers)=0A= this.transport.setRequestHeader(name, headers[name]);=0A= },=0A= =0A= success: function() {=0A= var status =3D this.getStatus();=0A= return !status || (status >=3D 200 && status < 300);=0A= },=0A= =0A= getStatus: function() {=0A= try {=0A= return this.transport.status || 0;=0A= } catch (e) { return 0 }=0A= },=0A= =0A= respondToReadyState: function(readyState) {=0A= var state =3D Ajax.Request.Events[readyState], response =3D new = Ajax.Response(this);=0A= =0A= if (state =3D=3D 'Complete') {=0A= try {=0A= this._complete =3D true;=0A= (this.options['on' + response.status]=0A= || this.options['on' + (this.success() ? 'Success' : 'Failure')]=0A= || Prototype.emptyFunction)(response, response.headerJSON);=0A= } catch (e) {=0A= this.dispatchException(e);=0A= }=0A= =0A= var contentType =3D response.getHeader('Content-type');=0A= if (this.options.evalJS =3D=3D 'force'=0A= || (this.options.evalJS && contentType=0A= && = contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s= *$/i)))=0A= this.evalResponse();=0A= }=0A= =0A= try {=0A= (this.options['on' + state] || Prototype.emptyFunction)(response, = response.headerJSON);=0A= Ajax.Responders.dispatch('on' + state, this, response, = response.headerJSON);=0A= } catch (e) {=0A= this.dispatchException(e);=0A= }=0A= =0A= if (state =3D=3D 'Complete') {=0A= // avoid memory leak in MSIE: clean up=0A= this.transport.onreadystatechange =3D Prototype.emptyFunction;=0A= }=0A= },=0A= =0A= getHeader: function(name) {=0A= try {=0A= return this.transport.getResponseHeader(name);=0A= } catch (e) { return null }=0A= },=0A= =0A= evalResponse: function() {=0A= try {=0A= return eval((this.transport.responseText || '').unfilterJSON());=0A= } catch (e) {=0A= this.dispatchException(e);=0A= }=0A= },=0A= =0A= dispatchException: function(exception) {=0A= (this.options.onException || Prototype.emptyFunction)(this, = exception);=0A= Ajax.Responders.dispatch('onException', this, exception);=0A= }=0A= });=0A= =0A= Ajax.Request.Events =3D=0A= ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];=0A= =0A= Ajax.Response =3D Class.create({=0A= initialize: function(request){=0A= this.request =3D request;=0A= var transport =3D this.transport =3D request.transport,=0A= readyState =3D this.readyState =3D transport.readyState;=0A= =0A= if((readyState > 2 && !Prototype.Browser.IE) || readyState =3D=3D 4) = {=0A= this.status =3D this.getStatus();=0A= this.statusText =3D this.getStatusText();=0A= this.responseText =3D String.interpret(transport.responseText);=0A= this.headerJSON =3D this._getHeaderJSON();=0A= }=0A= =0A= if(readyState =3D=3D 4) {=0A= var xml =3D transport.responseXML;=0A= this.responseXML =3D xml =3D=3D=3D undefined ? null : xml;=0A= this.responseJSON =3D this._getResponseJSON();=0A= }=0A= },=0A= =0A= status: 0,=0A= statusText: '',=0A= =0A= getStatus: Ajax.Request.prototype.getStatus,=0A= =0A= getStatusText: function() {=0A= try {=0A= return this.transport.statusText || '';=0A= } catch (e) { return '' }=0A= },=0A= =0A= getHeader: Ajax.Request.prototype.getHeader,=0A= =0A= getAllHeaders: function() {=0A= try {=0A= return this.getAllResponseHeaders();=0A= } catch (e) { return null }=0A= },=0A= =0A= getResponseHeader: function(name) {=0A= return this.transport.getResponseHeader(name);=0A= },=0A= =0A= getAllResponseHeaders: function() {=0A= return this.transport.getAllResponseHeaders();=0A= },=0A= =0A= _getHeaderJSON: function() {=0A= var json =3D this.getHeader('X-JSON');=0A= if (!json) return null;=0A= json =3D decodeURIComponent(escape(json));=0A= try {=0A= return json.evalJSON(this.request.options.sanitizeJSON);=0A= } catch (e) {=0A= this.request.dispatchException(e);=0A= }=0A= },=0A= =0A= _getResponseJSON: function() {=0A= var options =3D this.request.options;=0A= if (!options.evalJSON || (options.evalJSON !=3D 'force' &&=0A= !(this.getHeader('Content-type') || = '').include('application/json')))=0A= return null;=0A= try {=0A= return this.transport.responseText.evalJSON(options.sanitizeJSON);=0A= } catch (e) {=0A= this.request.dispatchException(e);=0A= }=0A= }=0A= });=0A= =0A= Ajax.Updater =3D Class.create(Ajax.Request, {=0A= initialize: function($super, container, url, options) {=0A= this.container =3D {=0A= success: (container.success || container),=0A= failure: (container.failure || (container.success ? null : = container))=0A= };=0A= =0A= options =3D options || { };=0A= var onComplete =3D options.onComplete;=0A= options.onComplete =3D (function(response, param) {=0A= this.updateContent(response.responseText);=0A= if (Object.isFunction(onComplete)) onComplete(response, param);=0A= }).bind(this);=0A= =0A= $super(url, options);=0A= },=0A= =0A= updateContent: function(responseText) {=0A= var receiver =3D this.container[this.success() ? 'success' : = 'failure'],=0A= options =3D this.options;=0A= =0A= if (!options.evalScripts) responseText =3D = responseText.stripScripts();=0A= =0A= if (receiver =3D $(receiver)) {=0A= if (options.insertion) {=0A= if (Object.isString(options.insertion)) {=0A= var insertion =3D { }; insertion[options.insertion] =3D = responseText;=0A= receiver.insert(insertion);=0A= }=0A= else options.insertion(receiver, responseText);=0A= }=0A= else receiver.update(responseText);=0A= }=0A= =0A= if (this.success()) {=0A= if (this.onComplete) this.onComplete.bind(this).defer();=0A= }=0A= }=0A= });=0A= =0A= Ajax.PeriodicalUpdater =3D Class.create(Ajax.Base, {=0A= initialize: function($super, container, url, options) {=0A= $super(options);=0A= this.onComplete =3D this.options.onComplete;=0A= =0A= this.frequency =3D (this.options.frequency || 2);=0A= this.decay =3D (this.options.decay || 1);=0A= =0A= this.updater =3D { };=0A= this.container =3D container;=0A= this.url =3D url;=0A= =0A= this.start();=0A= },=0A= =0A= start: function() {=0A= this.options.onComplete =3D this.updateComplete.bind(this);=0A= this.onTimerEvent();=0A= },=0A= =0A= stop: function() {=0A= this.updater.options.onComplete =3D undefined;=0A= clearTimeout(this.timer);=0A= (this.onComplete || Prototype.emptyFunction).apply(this, arguments);=0A= },=0A= =0A= updateComplete: function(response) {=0A= if (this.options.decay) {=0A= this.decay =3D (response.responseText =3D=3D this.lastText ?=0A= this.decay * this.options.decay : 1);=0A= =0A= this.lastText =3D response.responseText;=0A= }=0A= this.timer =3D this.onTimerEvent.bind(this).delay(this.decay * = this.frequency);=0A= },=0A= =0A= onTimerEvent: function() {=0A= this.updater =3D new Ajax.Updater(this.container, this.url, = this.options);=0A= }=0A= });=0A= function $(element) {=0A= if (arguments.length > 1) {=0A= for (var i =3D 0, elements =3D [], length =3D arguments.length; i < = length; i++)=0A= elements.push($(arguments[i]));=0A= return elements;=0A= }=0A= if (Object.isString(element))=0A= element =3D document.getElementById(element);=0A= return Element.extend(element);=0A= }=0A= =0A= if (Prototype.BrowserFeatures.XPath) {=0A= document._getElementsByXPath =3D function(expression, parentElement) {=0A= var results =3D [];=0A= var query =3D document.evaluate(expression, $(parentElement) || = document,=0A= null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);=0A= for (var i =3D 0, length =3D query.snapshotLength; i < length; i++)=0A= results.push(Element.extend(query.snapshotItem(i)));=0A= return results;=0A= };=0A= }=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= if (!window.Node) var Node =3D { };=0A= =0A= if (!Node.ELEMENT_NODE) {=0A= // DOM level 2 ECMAScript Language Binding=0A= Object.extend(Node, {=0A= ELEMENT_NODE: 1,=0A= ATTRIBUTE_NODE: 2,=0A= TEXT_NODE: 3,=0A= CDATA_SECTION_NODE: 4,=0A= ENTITY_REFERENCE_NODE: 5,=0A= ENTITY_NODE: 6,=0A= PROCESSING_INSTRUCTION_NODE: 7,=0A= COMMENT_NODE: 8,=0A= DOCUMENT_NODE: 9,=0A= DOCUMENT_TYPE_NODE: 10,=0A= DOCUMENT_FRAGMENT_NODE: 11,=0A= NOTATION_NODE: 12=0A= });=0A= }=0A= =0A= (function() {=0A= var element =3D this.Element;=0A= this.Element =3D function(tagName, attributes) {=0A= attributes =3D attributes || { };=0A= tagName =3D tagName.toLowerCase();=0A= var cache =3D Element.cache;=0A= if (Prototype.Browser.IE && attributes.name) {=0A= tagName =3D '<' + tagName + ' name=3D"' + attributes.name + '">';=0A= delete attributes.name;=0A= return Element.writeAttribute(document.createElement(tagName), = attributes);=0A= }=0A= if (!cache[tagName]) cache[tagName] =3D = Element.extend(document.createElement(tagName));=0A= return Element.writeAttribute(cache[tagName].cloneNode(false), = attributes);=0A= };=0A= Object.extend(this.Element, element || { });=0A= }).call(window);=0A= =0A= Element.cache =3D { };=0A= =0A= Element.Methods =3D {=0A= visible: function(element) {=0A= return $(element).style.display !=3D 'none';=0A= },=0A= =0A= toggle: function(element) {=0A= element =3D $(element);=0A= Element[Element.visible(element) ? 'hide' : 'show'](element);=0A= return element;=0A= },=0A= =0A= hide: function(element) {=0A= $(element).style.display =3D 'none';=0A= return element;=0A= },=0A= =0A= show: function(element) {=0A= $(element).style.display =3D '';=0A= return element;=0A= },=0A= =0A= remove: function(element) {=0A= element =3D $(element);=0A= element.parentNode.removeChild(element);=0A= return element;=0A= },=0A= =0A= update: function(element, content) {=0A= element =3D $(element);=0A= if (content && content.toElement) content =3D content.toElement();=0A= if (Object.isElement(content)) return = element.update().insert(content);=0A= content =3D Object.toHTML(content);=0A= element.innerHTML =3D content.stripScripts();=0A= content.evalScripts.bind(content).defer();=0A= return element;=0A= },=0A= =0A= replace: function(element, content) {=0A= element =3D $(element);=0A= if (content && content.toElement) content =3D content.toElement();=0A= else if (!Object.isElement(content)) {=0A= content =3D Object.toHTML(content);=0A= var range =3D element.ownerDocument.createRange();=0A= range.selectNode(element);=0A= content.evalScripts.bind(content).defer();=0A= content =3D range.createContextualFragment(content.stripScripts());=0A= }=0A= element.parentNode.replaceChild(content, element);=0A= return element;=0A= },=0A= =0A= insert: function(element, insertions) {=0A= element =3D $(element);=0A= =0A= if (Object.isString(insertions) || Object.isNumber(insertions) ||=0A= Object.isElement(insertions) || (insertions && = (insertions.toElement || insertions.toHTML)))=0A= insertions =3D {bottom:insertions};=0A= =0A= var content, t, range;=0A= =0A= for (position in insertions) {=0A= content =3D insertions[position];=0A= position =3D position.toLowerCase();=0A= t =3D Element._insertionTranslations[position];=0A= =0A= if (content && content.toElement) content =3D content.toElement();=0A= if (Object.isElement(content)) {=0A= t.insert(element, content);=0A= continue;=0A= }=0A= =0A= content =3D Object.toHTML(content);=0A= =0A= range =3D element.ownerDocument.createRange();=0A= t.initializeRange(element, range);=0A= t.insert(element, = range.createContextualFragment(content.stripScripts()));=0A= =0A= content.evalScripts.bind(content).defer();=0A= }=0A= =0A= return element;=0A= },=0A= =0A= wrap: function(element, wrapper, attributes) {=0A= element =3D $(element);=0A= if (Object.isElement(wrapper))=0A= $(wrapper).writeAttribute(attributes || { });=0A= else if (Object.isString(wrapper)) wrapper =3D new Element(wrapper, = attributes);=0A= else wrapper =3D new Element('div', wrapper);=0A= if (element.parentNode)=0A= element.parentNode.replaceChild(wrapper, element);=0A= wrapper.appendChild(element);=0A= return wrapper;=0A= },=0A= =0A= inspect: function(element) {=0A= element =3D $(element);=0A= var result =3D '<' + element.tagName.toLowerCase();=0A= $H({'id': 'id', 'className': 'class'}).each(function(pair) {=0A= var property =3D pair.first(), attribute =3D pair.last();=0A= var value =3D (element[property] || '').toString();=0A= if (value) result +=3D ' ' + attribute + '=3D' + = value.inspect(true);=0A= });=0A= return result + '>';=0A= },=0A= =0A= recursivelyCollect: function(element, property) {=0A= element =3D $(element);=0A= var elements =3D [];=0A= while (element =3D element[property])=0A= if (element.nodeType =3D=3D 1)=0A= elements.push(Element.extend(element));=0A= return elements;=0A= },=0A= =0A= ancestors: function(element) {=0A= return $(element).recursivelyCollect('parentNode');=0A= },=0A= =0A= descendants: function(element) {=0A= return $A($(element).getElementsByTagName('*')).each(Element.extend);=0A= },=0A= =0A= firstDescendant: function(element) {=0A= element =3D $(element).firstChild;=0A= while (element && element.nodeType !=3D 1) element =3D = element.nextSibling;=0A= return $(element);=0A= },=0A= =0A= immediateDescendants: function(element) {=0A= if (!(element =3D $(element).firstChild)) return [];=0A= while (element && element.nodeType !=3D 1) element =3D = element.nextSibling;=0A= if (element) return [element].concat($(element).nextSiblings());=0A= return [];=0A= },=0A= =0A= previousSiblings: function(element) {=0A= return $(element).recursivelyCollect('previousSibling');=0A= },=0A= =0A= nextSiblings: function(element) {=0A= return $(element).recursivelyCollect('nextSibling');=0A= },=0A= =0A= siblings: function(element) {=0A= element =3D $(element);=0A= return = element.previousSiblings().reverse().concat(element.nextSiblings());=0A= },=0A= =0A= match: function(element, selector) {=0A= if (Object.isString(selector))=0A= selector =3D new Selector(selector);=0A= return selector.match($(element));=0A= },=0A= =0A= up: function(element, expression, index) {=0A= element =3D $(element);=0A= if (arguments.length =3D=3D 1) return $(element.parentNode);=0A= var ancestors =3D element.ancestors();=0A= return expression ? Selector.findElement(ancestors, expression, = index) :=0A= ancestors[index || 0];=0A= },=0A= =0A= down: function(element, expression, index) {=0A= element =3D $(element);=0A= if (arguments.length =3D=3D 1) return element.firstDescendant();=0A= var descendants =3D element.descendants();=0A= return expression ? Selector.findElement(descendants, expression, = index) :=0A= descendants[index || 0];=0A= },=0A= =0A= previous: function(element, expression, index) {=0A= element =3D $(element);=0A= if (arguments.length =3D=3D 1) return = $(Selector.handlers.previousElementSibling(element));=0A= var previousSiblings =3D element.previousSiblings();=0A= return expression ? Selector.findElement(previousSiblings, = expression, index) :=0A= previousSiblings[index || 0];=0A= },=0A= =0A= next: function(element, expression, index) {=0A= element =3D $(element);=0A= if (arguments.length =3D=3D 1) return = $(Selector.handlers.nextElementSibling(element));=0A= var nextSiblings =3D element.nextSiblings();=0A= return expression ? Selector.findElement(nextSiblings, expression, = index) :=0A= nextSiblings[index || 0];=0A= },=0A= =0A= select: function() {=0A= var args =3D $A(arguments), element =3D $(args.shift());=0A= return Selector.findChildElements(element, args);=0A= },=0A= =0A= adjacent: function() {=0A= var args =3D $A(arguments), element =3D $(args.shift());=0A= return Selector.findChildElements(element.parentNode, = args).without(element);=0A= },=0A= =0A= identify: function(element) {=0A= element =3D $(element);=0A= var id =3D element.readAttribute('id'), self =3D arguments.callee;=0A= if (id) return id;=0A= do { id =3D 'anonymous_element_' + self.counter++ } while ($(id));=0A= element.writeAttribute('id', id);=0A= return id;=0A= },=0A= =0A= readAttribute: function(element, name) {=0A= element =3D $(element);=0A= if (Prototype.Browser.IE) {=0A= var t =3D Element._attributeTranslations.read;=0A= if (t.values[name]) return t.values[name](element, name);=0A= if (t.names[name]) name =3D t.names[name];=0A= if (name.include(':')) {=0A= return (!element.attributes || !element.attributes[name]) ? null = :=0A= element.attributes[name].value;=0A= }=0A= }=0A= return element.getAttribute(name);=0A= },=0A= =0A= writeAttribute: function(element, name, value) {=0A= element =3D $(element);=0A= var attributes =3D { }, t =3D Element._attributeTranslations.write;=0A= =0A= if (typeof name =3D=3D 'object') attributes =3D name;=0A= else attributes[name] =3D value =3D=3D=3D undefined ? true : value;=0A= =0A= for (var attr in attributes) {=0A= var name =3D t.names[attr] || attr, value =3D attributes[attr];=0A= if (t.values[attr]) name =3D t.values[attr](element, value);=0A= if (value =3D=3D=3D false || value =3D=3D=3D null)=0A= element.removeAttribute(name);=0A= else if (value =3D=3D=3D true)=0A= element.setAttribute(name, name);=0A= else element.setAttribute(name, value);=0A= }=0A= return element;=0A= },=0A= =0A= getHeight: function(element) {=0A= return $(element).getDimensions().height;=0A= },=0A= =0A= getWidth: function(element) {=0A= return $(element).getDimensions().width;=0A= },=0A= =0A= classNames: function(element) {=0A= return new Element.ClassNames(element);=0A= },=0A= =0A= hasClassName: function(element, className) {=0A= if (!(element =3D $(element))) return;=0A= var elementClassName =3D element.className;=0A= return (elementClassName.length > 0 && (elementClassName =3D=3D = className ||=0A= new RegExp("(^|\\s)" + className + = "(\\s|$)").test(elementClassName)));=0A= },=0A= =0A= addClassName: function(element, className) {=0A= if (!(element =3D $(element))) return;=0A= if (!element.hasClassName(className))=0A= element.className +=3D (element.className ? ' ' : '') + className;=0A= return element;=0A= },=0A= =0A= removeClassName: function(element, className) {=0A= if (!(element =3D $(element))) return;=0A= element.className =3D element.className.replace(=0A= new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip();=0A= return element;=0A= },=0A= =0A= toggleClassName: function(element, className) {=0A= if (!(element =3D $(element))) return;=0A= return element[element.hasClassName(className) ?=0A= 'removeClassName' : 'addClassName'](className);=0A= },=0A= =0A= // removes whitespace-only text node children=0A= cleanWhitespace: function(element) {=0A= element =3D $(element);=0A= var node =3D element.firstChild;=0A= while (node) {=0A= var nextNode =3D node.nextSibling;=0A= if (node.nodeType =3D=3D 3 && !/\S/.test(node.nodeValue))=0A= element.removeChild(node);=0A= node =3D nextNode;=0A= }=0A= return element;=0A= },=0A= =0A= empty: function(element) {=0A= return $(element).innerHTML.blank();=0A= },=0A= =0A= descendantOf: function(element, ancestor) {=0A= element =3D $(element), ancestor =3D $(ancestor);=0A= =0A= if (element.compareDocumentPosition)=0A= return (element.compareDocumentPosition(ancestor) & 8) =3D=3D=3D 8;=0A= =0A= if (element.sourceIndex && !Prototype.Browser.Opera) {=0A= var e =3D element.sourceIndex, a =3D ancestor.sourceIndex,=0A= nextAncestor =3D ancestor.nextSibling;=0A= if (!nextAncestor) {=0A= do { ancestor =3D ancestor.parentNode; }=0A= while (!(nextAncestor =3D ancestor.nextSibling) && = ancestor.parentNode);=0A= }=0A= if (nextAncestor) return (e > a && e < nextAncestor.sourceIndex);=0A= }=0A= =0A= while (element =3D element.parentNode)=0A= if (element =3D=3D ancestor) return true;=0A= return false;=0A= },=0A= =0A= scrollTo: function(element) {=0A= element =3D $(element);=0A= var pos =3D element.cumulativeOffset();=0A= window.scrollTo(pos[0], pos[1]);=0A= return element;=0A= },=0A= =0A= getStyle: function(element, style) {=0A= element =3D $(element);=0A= style =3D style =3D=3D 'float' ? 'cssFloat' : style.camelize();=0A= var value =3D element.style[style];=0A= if (!value) {=0A= var css =3D document.defaultView.getComputedStyle(element, null);=0A= value =3D css ? css[style] : null;=0A= }=0A= if (style =3D=3D 'opacity') return value ? parseFloat(value) : 1.0;=0A= return value =3D=3D 'auto' ? null : value;=0A= },=0A= =0A= getOpacity: function(element) {=0A= return $(element).getStyle('opacity');=0A= },=0A= =0A= setStyle: function(element, styles) {=0A= element =3D $(element);=0A= var elementStyle =3D element.style, match;=0A= if (Object.isString(styles)) {=0A= element.style.cssText +=3D ';' + styles;=0A= return styles.include('opacity') ?=0A= element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : = element;=0A= }=0A= for (var property in styles)=0A= if (property =3D=3D 'opacity') = element.setOpacity(styles[property]);=0A= else=0A= elementStyle[(property =3D=3D 'float' || property =3D=3D = 'cssFloat') ?=0A= (elementStyle.styleFloat =3D=3D=3D undefined ? 'cssFloat' : = 'styleFloat') :=0A= property] =3D styles[property];=0A= =0A= return element;=0A= },=0A= =0A= setOpacity: function(element, value) {=0A= element =3D $(element);=0A= element.style.opacity =3D (value =3D=3D 1 || value =3D=3D=3D '') ? = '' :=0A= (value < 0.00001) ? 0 : value;=0A= return element;=0A= },=0A= =0A= getDimensions: function(element) {=0A= element =3D $(element);=0A= var display =3D $(element).getStyle('display');=0A= if (display !=3D 'none' && display !=3D null) // Safari bug=0A= return {width: element.offsetWidth, height: element.offsetHeight};=0A= =0A= // All *Width and *Height properties give 0 on elements with display = none,=0A= // so enable the element temporarily=0A= var els =3D element.style;=0A= var originalVisibility =3D els.visibility;=0A= var originalPosition =3D els.position;=0A= var originalDisplay =3D els.display;=0A= els.visibility =3D 'hidden';=0A= els.position =3D 'absolute';=0A= els.display =3D 'block';=0A= var originalWidth =3D element.clientWidth;=0A= var originalHeight =3D element.clientHeight;=0A= els.display =3D originalDisplay;=0A= els.position =3D originalPosition;=0A= els.visibility =3D originalVisibility;=0A= return {width: originalWidth, height: originalHeight};=0A= },=0A= =0A= makePositioned: function(element) {=0A= element =3D $(element);=0A= var pos =3D Element.getStyle(element, 'position');=0A= if (pos =3D=3D 'static' || !pos) {=0A= element._madePositioned =3D true;=0A= element.style.position =3D 'relative';=0A= // Opera returns the offset relative to the positioning context, = when an=0A= // element is position relative but top and left have not been = defined=0A= if (window.opera) {=0A= element.style.top =3D 0;=0A= element.style.left =3D 0;=0A= }=0A= }=0A= return element;=0A= },=0A= =0A= undoPositioned: function(element) {=0A= element =3D $(element);=0A= if (element._madePositioned) {=0A= element._madePositioned =3D undefined;=0A= element.style.position =3D=0A= element.style.top =3D=0A= element.style.left =3D=0A= element.style.bottom =3D=0A= element.style.right =3D '';=0A= }=0A= return element;=0A= },=0A= =0A= makeClipping: function(element) {=0A= element =3D $(element);=0A= if (element._overflow) return element;=0A= element._overflow =3D Element.getStyle(element, 'overflow') || = 'auto';=0A= if (element._overflow !=3D=3D 'hidden')=0A= element.style.overflow =3D 'hidden';=0A= return element;=0A= },=0A= =0A= undoClipping: function(element) {=0A= element =3D $(element);=0A= if (!element._overflow) return element;=0A= element.style.overflow =3D element._overflow =3D=3D 'auto' ? '' : = element._overflow;=0A= element._overflow =3D null;=0A= return element;=0A= },=0A= =0A= cumulativeOffset: function(element) {=0A= var valueT =3D 0, valueL =3D 0;=0A= do {=0A= valueT +=3D element.offsetTop || 0;=0A= valueL +=3D element.offsetLeft || 0;=0A= element =3D element.offsetParent;=0A= } while (element);=0A= return Element._returnOffset(valueL, valueT);=0A= },=0A= =0A= positionedOffset: function(element) {=0A= var valueT =3D 0, valueL =3D 0;=0A= do {=0A= valueT +=3D element.offsetTop || 0;=0A= valueL +=3D element.offsetLeft || 0;=0A= element =3D element.offsetParent;=0A= if (element) {=0A= if (element.tagName =3D=3D 'BODY') break;=0A= var p =3D Element.getStyle(element, 'position');=0A= if (p =3D=3D 'relative' || p =3D=3D 'absolute') break;=0A= }=0A= } while (element);=0A= return Element._returnOffset(valueL, valueT);=0A= },=0A= =0A= absolutize: function(element) {=0A= element =3D $(element);=0A= if (element.getStyle('position') =3D=3D 'absolute') return;=0A= // Position.prepare(); // To be done manually by Scripty when it = needs it.=0A= =0A= var offsets =3D element.positionedOffset();=0A= var top =3D offsets[1];=0A= var left =3D offsets[0];=0A= var width =3D element.clientWidth;=0A= var height =3D element.clientHeight;=0A= =0A= element._originalLeft =3D left - parseFloat(element.style.left || = 0);=0A= element._originalTop =3D top - parseFloat(element.style.top || = 0);=0A= element._originalWidth =3D element.style.width;=0A= element._originalHeight =3D element.style.height;=0A= =0A= element.style.position =3D 'absolute';=0A= element.style.top =3D top + 'px';=0A= element.style.left =3D left + 'px';=0A= element.style.width =3D width + 'px';=0A= element.style.height =3D height + 'px';=0A= return element;=0A= },=0A= =0A= relativize: function(element) {=0A= element =3D $(element);=0A= if (element.getStyle('position') =3D=3D 'relative') return;=0A= // Position.prepare(); // To be done manually by Scripty when it = needs it.=0A= =0A= element.style.position =3D 'relative';=0A= var top =3D parseFloat(element.style.top || 0) - = (element._originalTop || 0);=0A= var left =3D parseFloat(element.style.left || 0) - = (element._originalLeft || 0);=0A= =0A= element.style.top =3D top + 'px';=0A= element.style.left =3D left + 'px';=0A= element.style.height =3D element._originalHeight;=0A= element.style.width =3D element._originalWidth;=0A= return element;=0A= },=0A= =0A= cumulativeScrollOffset: function(element) {=0A= var valueT =3D 0, valueL =3D 0;=0A= do {=0A= valueT +=3D element.scrollTop || 0;=0A= valueL +=3D element.scrollLeft || 0;=0A= element =3D element.parentNode;=0A= } while (element);=0A= return Element._returnOffset(valueL, valueT);=0A= },=0A= =0A= getOffsetParent: function(element) {=0A= if (element.offsetParent) return $(element.offsetParent);=0A= if (element =3D=3D document.body) return $(element);=0A= =0A= while ((element =3D element.parentNode) && element !=3D = document.body)=0A= if (Element.getStyle(element, 'position') !=3D 'static')=0A= return $(element);=0A= =0A= return $(document.body);=0A= },=0A= =0A= viewportOffset: function(forElement) {=0A= var valueT =3D 0, valueL =3D 0;=0A= =0A= var element =3D forElement;=0A= do {=0A= valueT +=3D element.offsetTop || 0;=0A= valueL +=3D element.offsetLeft || 0;=0A= =0A= // Safari fix=0A= if (element.offsetParent =3D=3D document.body &&=0A= Element.getStyle(element, 'position') =3D=3D 'absolute') break;=0A= =0A= } while (element =3D element.offsetParent);=0A= =0A= element =3D forElement;=0A= do {=0A= if (!Prototype.Browser.Opera || element.tagName =3D=3D 'BODY') {=0A= valueT -=3D element.scrollTop || 0;=0A= valueL -=3D element.scrollLeft || 0;=0A= }=0A= } while (element =3D element.parentNode);=0A= =0A= return Element._returnOffset(valueL, valueT);=0A= },=0A= =0A= clonePosition: function(element, source) {=0A= var options =3D Object.extend({=0A= setLeft: true,=0A= setTop: true,=0A= setWidth: true,=0A= setHeight: true,=0A= offsetTop: 0,=0A= offsetLeft: 0=0A= }, arguments[2] || { });=0A= =0A= // find page position of source=0A= source =3D $(source);=0A= var p =3D source.viewportOffset();=0A= =0A= // find coordinate system to use=0A= element =3D $(element);=0A= var delta =3D [0, 0];=0A= var parent =3D null;=0A= // delta [0,0] will do fine with position: fixed elements,=0A= // position:absolute needs offsetParent deltas=0A= if (Element.getStyle(element, 'position') =3D=3D 'absolute') {=0A= parent =3D element.getOffsetParent();=0A= delta =3D parent.viewportOffset();=0A= }=0A= =0A= // correct by body offsets (fixes Safari)=0A= if (parent =3D=3D document.body) {=0A= delta[0] -=3D document.body.offsetLeft;=0A= delta[1] -=3D document.body.offsetTop;=0A= }=0A= =0A= // set position=0A= if (options.setLeft) element.style.left =3D (p[0] - delta[0] + = options.offsetLeft) + 'px';=0A= if (options.setTop) element.style.top =3D (p[1] - delta[1] + = options.offsetTop) + 'px';=0A= if (options.setWidth) element.style.width =3D source.offsetWidth + = 'px';=0A= if (options.setHeight) element.style.height =3D source.offsetHeight = + 'px';=0A= return element;=0A= }=0A= };=0A= =0A= Element.Methods.identify.counter =3D 1;=0A= =0A= Object.extend(Element.Methods, {=0A= getElementsBySelector: Element.Methods.select,=0A= childElements: Element.Methods.immediateDescendants=0A= });=0A= =0A= Element._attributeTranslations =3D {=0A= write: {=0A= names: {=0A= className: 'class',=0A= htmlFor: 'for'=0A= },=0A= values: { }=0A= }=0A= };=0A= =0A= =0A= if (!document.createRange || Prototype.Browser.Opera) {=0A= Element.Methods.insert =3D function(element, insertions) {=0A= element =3D $(element);=0A= =0A= if (Object.isString(insertions) || Object.isNumber(insertions) ||=0A= Object.isElement(insertions) || (insertions && = (insertions.toElement || insertions.toHTML)))=0A= insertions =3D { bottom: insertions };=0A= =0A= var t =3D Element._insertionTranslations, content, position, pos, = tagName;=0A= =0A= for (position in insertions) {=0A= content =3D insertions[position];=0A= position =3D position.toLowerCase();=0A= pos =3D t[position];=0A= =0A= if (content && content.toElement) content =3D content.toElement();=0A= if (Object.isElement(content)) {=0A= pos.insert(element, content);=0A= continue;=0A= }=0A= =0A= content =3D Object.toHTML(content);=0A= tagName =3D ((position =3D=3D 'before' || position =3D=3D 'after')=0A= ? element.parentNode : element).tagName.toUpperCase();=0A= =0A= if (t.tags[tagName]) {=0A= var fragments =3D = Element._getContentFromAnonymousElement(tagName, content.stripScripts());=0A= if (position =3D=3D 'top' || position =3D=3D 'after') = fragments.reverse();=0A= fragments.each(pos.insert.curry(element));=0A= }=0A= else element.insertAdjacentHTML(pos.adjacency, = content.stripScripts());=0A= =0A= content.evalScripts.bind(content).defer();=0A= }=0A= =0A= return element;=0A= };=0A= }=0A= =0A= if (Prototype.Browser.Opera) {=0A= Element.Methods._getStyle =3D Element.Methods.getStyle;=0A= Element.Methods.getStyle =3D function(element, style) {=0A= switch(style) {=0A= case 'left':=0A= case 'top':=0A= case 'right':=0A= case 'bottom':=0A= if (Element._getStyle(element, 'position') =3D=3D 'static') = return null;=0A= default: return Element._getStyle(element, style);=0A= }=0A= };=0A= Element.Methods._readAttribute =3D Element.Methods.readAttribute;=0A= Element.Methods.readAttribute =3D function(element, attribute) {=0A= if (attribute =3D=3D 'title') return element.title;=0A= return Element._readAttribute(element, attribute);=0A= };=0A= }=0A= =0A= else if (Prototype.Browser.IE) {=0A= $w('positionedOffset getOffsetParent = viewportOffset').each(function(method) {=0A= Element.Methods[method] =3D Element.Methods[method].wrap(=0A= function(proceed, element) {=0A= element =3D $(element);=0A= var position =3D element.getStyle('position');=0A= if (position !=3D 'static') return proceed(element);=0A= element.setStyle({ position: 'relative' });=0A= var value =3D proceed(element);=0A= element.setStyle({ position: position });=0A= return value;=0A= }=0A= );=0A= });=0A= =0A= Element.Methods.getStyle =3D function(element, style) {=0A= element =3D $(element);=0A= style =3D (style =3D=3D 'float' || style =3D=3D 'cssFloat') ? = 'styleFloat' : style.camelize();=0A= var value =3D element.style[style];=0A= if (!value && element.currentStyle) value =3D = element.currentStyle[style];=0A= =0A= if (style =3D=3D 'opacity') {=0A= if (value =3D (element.getStyle('filter') || = '').match(/alpha\(opacity=3D(.*)\)/))=0A= if (value[1]) return parseFloat(value[1]) / 100;=0A= return 1.0;=0A= }=0A= =0A= if (value =3D=3D 'auto') {=0A= if ((style =3D=3D 'width' || style =3D=3D 'height') && = (element.getStyle('display') !=3D 'none'))=0A= return element['offset' + style.capitalize()] + 'px';=0A= return null;=0A= }=0A= return value;=0A= };=0A= =0A= Element.Methods.setOpacity =3D function(element, value) {=0A= function stripAlpha(filter){=0A= return filter.replace(/alpha\([^\)]*\)/gi,'');=0A= }=0A= element =3D $(element);=0A= var currentStyle =3D element.currentStyle;=0A= if ((currentStyle && !currentStyle.hasLayout) ||=0A= (!currentStyle && element.style.zoom =3D=3D 'normal'))=0A= element.style.zoom =3D 1;=0A= =0A= var filter =3D element.getStyle('filter'), style =3D element.style;=0A= if (value =3D=3D 1 || value =3D=3D=3D '') {=0A= (filter =3D stripAlpha(filter)) ?=0A= style.filter =3D filter : style.removeAttribute('filter');=0A= return element;=0A= } else if (value < 0.00001) value =3D 0;=0A= style.filter =3D stripAlpha(filter) +=0A= 'alpha(opacity=3D' + (value * 100) + ')';=0A= return element;=0A= };=0A= =0A= Element._attributeTranslations =3D {=0A= read: {=0A= names: {=0A= 'class': 'className',=0A= 'for': 'htmlFor'=0A= },=0A= values: {=0A= _getAttr: function(element, attribute) {=0A= return element.getAttribute(attribute, 2);=0A= },=0A= _getAttrNode: function(element, attribute) {=0A= var node =3D element.getAttributeNode(attribute);=0A= return node ? node.value : "";=0A= },=0A= _getEv: function(element, attribute) {=0A= var attribute =3D element.getAttribute(attribute);=0A= return attribute ? attribute.toString().slice(23, -2) : null;=0A= },=0A= _flag: function(element, attribute) {=0A= return $(element).hasAttribute(attribute) ? attribute : null;=0A= },=0A= style: function(element) {=0A= return element.style.cssText.toLowerCase();=0A= },=0A= title: function(element) {=0A= return element.title;=0A= }=0A= }=0A= }=0A= };=0A= =0A= Element._attributeTranslations.write =3D {=0A= names: Object.clone(Element._attributeTranslations.read.names),=0A= values: {=0A= checked: function(element, value) {=0A= element.checked =3D !!value;=0A= },=0A= =0A= style: function(element, value) {=0A= element.style.cssText =3D value ? value : '';=0A= }=0A= }=0A= };=0A= =0A= Element._attributeTranslations.has =3D {};=0A= =0A= $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' +=0A= 'encType maxLength readOnly longDesc').each(function(attr) {=0A= Element._attributeTranslations.write.names[attr.toLowerCase()] =3D = attr;=0A= Element._attributeTranslations.has[attr.toLowerCase()] =3D attr;=0A= });=0A= =0A= (function(v) {=0A= Object.extend(v, {=0A= href: v._getAttr,=0A= src: v._getAttr,=0A= type: v._getAttr,=0A= action: v._getAttrNode,=0A= disabled: v._flag,=0A= checked: v._flag,=0A= readonly: v._flag,=0A= multiple: v._flag,=0A= onload: v._getEv,=0A= onunload: v._getEv,=0A= onclick: v._getEv,=0A= ondblclick: v._getEv,=0A= onmousedown: v._getEv,=0A= onmouseup: v._getEv,=0A= onmouseover: v._getEv,=0A= onmousemove: v._getEv,=0A= onmouseout: v._getEv,=0A= onfocus: v._getEv,=0A= onblur: v._getEv,=0A= onkeypress: v._getEv,=0A= onkeydown: v._getEv,=0A= onkeyup: v._getEv,=0A= onsubmit: v._getEv,=0A= onreset: v._getEv,=0A= onselect: v._getEv,=0A= onchange: v._getEv=0A= });=0A= })(Element._attributeTranslations.read.values);=0A= }=0A= =0A= else if (Prototype.Browser.Gecko && = /rv:1\.8\.0/.test(navigator.userAgent)) {=0A= Element.Methods.setOpacity =3D function(element, value) {=0A= element =3D $(element);=0A= element.style.opacity =3D (value =3D=3D 1) ? 0.999999 :=0A= (value =3D=3D=3D '') ? '' : (value < 0.00001) ? 0 : value;=0A= return element;=0A= };=0A= }=0A= =0A= else if (Prototype.Browser.WebKit) {=0A= Element.Methods.setOpacity =3D function(element, value) {=0A= element =3D $(element);=0A= element.style.opacity =3D (value =3D=3D 1 || value =3D=3D=3D '') ? = '' :=0A= (value < 0.00001) ? 0 : value;=0A= =0A= if (value =3D=3D 1)=0A= if(element.tagName =3D=3D 'IMG' && element.width) {=0A= element.width++; element.width--;=0A= } else try {=0A= var n =3D document.createTextNode(' ');=0A= element.appendChild(n);=0A= element.removeChild(n);=0A= } catch (e) { }=0A= =0A= return element;=0A= };=0A= =0A= // Safari returns margins on body which is incorrect if the child is = absolutely=0A= // positioned. For performance reasons, redefine = Position.cumulativeOffset for=0A= // KHTML/WebKit only.=0A= Element.Methods.cumulativeOffset =3D function(element) {=0A= var valueT =3D 0, valueL =3D 0;=0A= do {=0A= valueT +=3D element.offsetTop || 0;=0A= valueL +=3D element.offsetLeft || 0;=0A= if (element.offsetParent =3D=3D document.body)=0A= if (Element.getStyle(element, 'position') =3D=3D 'absolute') = break;=0A= =0A= element =3D element.offsetParent;=0A= } while (element);=0A= =0A= return Element._returnOffset(valueL, valueT);=0A= };=0A= }=0A= =0A= if (Prototype.Browser.IE || Prototype.Browser.Opera) {=0A= // IE and Opera are missing .innerHTML support for TABLE-related and = SELECT elements=0A= Element.Methods.update =3D function(element, content) {=0A= element =3D $(element);=0A= =0A= if (content && content.toElement) content =3D content.toElement();=0A= if (Object.isElement(content)) return = element.update().insert(content);=0A= =0A= content =3D Object.toHTML(content);=0A= var tagName =3D element.tagName.toUpperCase();=0A= =0A= if (tagName in Element._insertionTranslations.tags) {=0A= $A(element.childNodes).each(function(node) { = element.removeChild(node) });=0A= Element._getContentFromAnonymousElement(tagName, = content.stripScripts())=0A= .each(function(node) { element.appendChild(node) });=0A= }=0A= else element.innerHTML =3D content.stripScripts();=0A= =0A= content.evalScripts.bind(content).defer();=0A= return element;=0A= };=0A= }=0A= =0A= if (document.createElement('div').outerHTML) {=0A= Element.Methods.replace =3D function(element, content) {=0A= element =3D $(element);=0A= =0A= if (content && content.toElement) content =3D content.toElement();=0A= if (Object.isElement(content)) {=0A= element.parentNode.replaceChild(content, element);=0A= return element;=0A= }=0A= =0A= content =3D Object.toHTML(content);=0A= var parent =3D element.parentNode, tagName =3D = parent.tagName.toUpperCase();=0A= =0A= if (Element._insertionTranslations.tags[tagName]) {=0A= var nextSibling =3D element.next();=0A= var fragments =3D Element._getContentFromAnonymousElement(tagName, = content.stripScripts());=0A= parent.removeChild(element);=0A= if (nextSibling)=0A= fragments.each(function(node) { parent.insertBefore(node, = nextSibling) });=0A= else=0A= fragments.each(function(node) { parent.appendChild(node) });=0A= }=0A= else element.outerHTML =3D content.stripScripts();=0A= =0A= content.evalScripts.bind(content).defer();=0A= return element;=0A= };=0A= }=0A= =0A= Element._returnOffset =3D function(l, t) {=0A= var result =3D [l, t];=0A= result.left =3D l;=0A= result.top =3D t;=0A= return result;=0A= };=0A= =0A= Element._getContentFromAnonymousElement =3D function(tagName, html) {=0A= var div =3D new Element('div'), t =3D = Element._insertionTranslations.tags[tagName];=0A= div.innerHTML =3D t[0] + html + t[1];=0A= t[2].times(function() { div =3D div.firstChild });=0A= return $A(div.childNodes);=0A= };=0A= =0A= Element._insertionTranslations =3D {=0A= before: {=0A= adjacency: 'beforeBegin',=0A= insert: function(element, node) {=0A= element.parentNode.insertBefore(node, element);=0A= },=0A= initializeRange: function(element, range) {=0A= range.setStartBefore(element);=0A= }=0A= },=0A= top: {=0A= adjacency: 'afterBegin',=0A= insert: function(element, node) {=0A= element.insertBefore(node, element.firstChild);=0A= },=0A= initializeRange: function(element, range) {=0A= range.selectNodeContents(element);=0A= range.collapse(true);=0A= }=0A= },=0A= bottom: {=0A= adjacency: 'beforeEnd',=0A= insert: function(element, node) {=0A= element.appendChild(node);=0A= }=0A= },=0A= after: {=0A= adjacency: 'afterEnd',=0A= insert: function(element, node) {=0A= element.parentNode.insertBefore(node, element.nextSibling);=0A= },=0A= initializeRange: function(element, range) {=0A= range.setStartAfter(element);=0A= }=0A= },=0A= tags: {=0A= TABLE: ['', '
', 1],=0A= TBODY: ['', '
', 2],=0A= TR: ['', '
', 3],=0A= TD: ['
', '
', 4],=0A= SELECT: ['', 1]=0A= }=0A= };=0A= =0A= (function() {=0A= this.bottom.initializeRange =3D this.top.initializeRange;=0A= Object.extend(this.tags, {=0A= THEAD: this.tags.TBODY,=0A= TFOOT: this.tags.TBODY,=0A= TH: this.tags.TD=0A= });=0A= }).call(Element._insertionTranslations);=0A= =0A= Element.Methods.Simulated =3D {=0A= hasAttribute: function(element, attribute) {=0A= attribute =3D Element._attributeTranslations.has[attribute] || = attribute;=0A= var node =3D $(element).getAttributeNode(attribute);=0A= return node && node.specified;=0A= }=0A= };=0A= =0A= Element.Methods.ByTag =3D { };=0A= =0A= Object.extend(Element, Element.Methods);=0A= =0A= if (!Prototype.BrowserFeatures.ElementExtensions &&=0A= document.createElement('div').__proto__) {=0A= window.HTMLElement =3D { };=0A= window.HTMLElement.prototype =3D = document.createElement('div').__proto__;=0A= Prototype.BrowserFeatures.ElementExtensions =3D true;=0A= }=0A= =0A= Element.extend =3D (function() {=0A= if (Prototype.BrowserFeatures.SpecificElementExtensions)=0A= return Prototype.K;=0A= =0A= var Methods =3D { }, ByTag =3D Element.Methods.ByTag;=0A= =0A= var extend =3D Object.extend(function(element) {=0A= if (!element || element._extendedByPrototype ||=0A= element.nodeType !=3D 1 || element =3D=3D window) return element;=0A= =0A= var methods =3D Object.clone(Methods),=0A= tagName =3D element.tagName, property, value;=0A= =0A= // extend methods for specific tags=0A= if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]);=0A= =0A= for (property in methods) {=0A= value =3D methods[property];=0A= if (Object.isFunction(value) && !(property in element))=0A= element[property] =3D value.methodize();=0A= }=0A= =0A= element._extendedByPrototype =3D Prototype.emptyFunction;=0A= return element;=0A= =0A= }, {=0A= refresh: function() {=0A= // extend methods for all tags (Safari doesn't need this)=0A= if (!Prototype.BrowserFeatures.ElementExtensions) {=0A= Object.extend(Methods, Element.Methods);=0A= Object.extend(Methods, Element.Methods.Simulated);=0A= }=0A= }=0A= });=0A= =0A= extend.refresh();=0A= return extend;=0A= })();=0A= =0A= Element.hasAttribute =3D function(element, attribute) {=0A= if (element.hasAttribute) return element.hasAttribute(attribute);=0A= return Element.Methods.Simulated.hasAttribute(element, attribute);=0A= };=0A= =0A= Element.addMethods =3D function(methods) {=0A= var F =3D Prototype.BrowserFeatures, T =3D Element.Methods.ByTag;=0A= =0A= if (!methods) {=0A= Object.extend(Form, Form.Methods);=0A= Object.extend(Form.Element, Form.Element.Methods);=0A= Object.extend(Element.Methods.ByTag, {=0A= "FORM": Object.clone(Form.Methods),=0A= "INPUT": Object.clone(Form.Element.Methods),=0A= "SELECT": Object.clone(Form.Element.Methods),=0A= "TEXTAREA": Object.clone(Form.Element.Methods)=0A= });=0A= }=0A= =0A= if (arguments.length =3D=3D 2) {=0A= var tagName =3D methods;=0A= methods =3D arguments[1];=0A= }=0A= =0A= if (!tagName) Object.extend(Element.Methods, methods || { });=0A= else {=0A= if (Object.isArray(tagName)) tagName.each(extend);=0A= else extend(tagName);=0A= }=0A= =0A= function extend(tagName) {=0A= tagName =3D tagName.toUpperCase();=0A= if (!Element.Methods.ByTag[tagName])=0A= Element.Methods.ByTag[tagName] =3D { };=0A= Object.extend(Element.Methods.ByTag[tagName], methods);=0A= }=0A= =0A= function copy(methods, destination, onlyIfAbsent) {=0A= onlyIfAbsent =3D onlyIfAbsent || false;=0A= for (var property in methods) {=0A= var value =3D methods[property];=0A= if (!Object.isFunction(value)) continue;=0A= if (!onlyIfAbsent || !(property in destination))=0A= destination[property] =3D value.methodize();=0A= }=0A= }=0A= =0A= function findDOMClass(tagName) {=0A= var klass;=0A= var trans =3D {=0A= "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph",=0A= "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": = "DList",=0A= "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": = "Heading",=0A= "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote",=0A= "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", = "CAPTION":=0A= "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD":=0A= "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", = "TR":=0A= "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET":=0A= "FrameSet", "IFRAME": "IFrame"=0A= };=0A= if (trans[tagName]) klass =3D 'HTML' + trans[tagName] + 'Element';=0A= if (window[klass]) return window[klass];=0A= klass =3D 'HTML' + tagName + 'Element';=0A= if (window[klass]) return window[klass];=0A= klass =3D 'HTML' + tagName.capitalize() + 'Element';=0A= if (window[klass]) return window[klass];=0A= =0A= window[klass] =3D { };=0A= window[klass].prototype =3D = document.createElement(tagName).__proto__;=0A= return window[klass];=0A= }=0A= =0A= if (F.ElementExtensions) {=0A= copy(Element.Methods, HTMLElement.prototype);=0A= copy(Element.Methods.Simulated, HTMLElement.prototype, true);=0A= }=0A= =0A= if (F.SpecificElementExtensions) {=0A= for (var tag in Element.Methods.ByTag) {=0A= var klass =3D findDOMClass(tag);=0A= if (Object.isUndefined(klass)) continue;=0A= copy(T[tag], klass.prototype);=0A= }=0A= }=0A= =0A= Object.extend(Element, Element.Methods);=0A= delete Element.ByTag;=0A= =0A= if (Element.extend.refresh) Element.extend.refresh();=0A= Element.cache =3D { };=0A= };=0A= =0A= document.viewport =3D {=0A= getDimensions: function() {=0A= var dimensions =3D { };=0A= $w('width height').each(function(d) {=0A= var D =3D d.capitalize();=0A= dimensions[d] =3D self['inner' + D] ||=0A= (document.documentElement['client' + D] || document.body['client' = + D]);=0A= });=0A= return dimensions;=0A= },=0A= =0A= getWidth: function() {=0A= return this.getDimensions().width;=0A= },=0A= =0A= getHeight: function() {=0A= return this.getDimensions().height;=0A= },=0A= =0A= getScrollOffsets: function() {=0A= return Element._returnOffset(=0A= window.pageXOffset || document.documentElement.scrollLeft || = document.body.scrollLeft,=0A= window.pageYOffset || document.documentElement.scrollTop || = document.body.scrollTop);=0A= }=0A= };=0A= /* Portions of the Selector class are derived from Jack Slocum=E2=80=99s = DomQuery,=0A= * part of YUI-Ext version 0.40, distributed under the terms of an = MIT-style=0A= * license. Please see http://www.yui-ext.com/ for more information. */=0A= =0A= var Selector =3D Class.create({=0A= initialize: function(expression) {=0A= this.expression =3D expression.strip();=0A= this.compileMatcher();=0A= },=0A= =0A= compileMatcher: function() {=0A= // Selectors with namespaced attributes can't use the XPath version=0A= if (Prototype.BrowserFeatures.XPath && = !(/(\[[\w-]*?:|:checked)/).test(this.expression))=0A= return this.compileXPathMatcher();=0A= =0A= var e =3D this.expression, ps =3D Selector.patterns, h =3D = Selector.handlers,=0A= c =3D Selector.criteria, le, p, m;=0A= =0A= if (Selector._cache[e]) {=0A= this.matcher =3D Selector._cache[e];=0A= return;=0A= }=0A= =0A= this.matcher =3D ["this.matcher =3D function(root) {",=0A= "var r =3D root, h =3D Selector.handlers, c =3D = false, n;"];=0A= =0A= while (e && le !=3D e && (/\S/).test(e)) {=0A= le =3D e;=0A= for (var i in ps) {=0A= p =3D ps[i];=0A= if (m =3D e.match(p)) {=0A= this.matcher.push(Object.isFunction(c[i]) ? c[i](m) :=0A= new Template(c[i]).evaluate(m));=0A= e =3D e.replace(m[0], '');=0A= break;=0A= }=0A= }=0A= }=0A= =0A= this.matcher.push("return h.unique(n);\n}");=0A= eval(this.matcher.join('\n'));=0A= Selector._cache[this.expression] =3D this.matcher;=0A= },=0A= =0A= compileXPathMatcher: function() {=0A= var e =3D this.expression, ps =3D Selector.patterns,=0A= x =3D Selector.xpath, le, m;=0A= =0A= if (Selector._cache[e]) {=0A= this.xpath =3D Selector._cache[e]; return;=0A= }=0A= =0A= this.matcher =3D ['.//*'];=0A= while (e && le !=3D e && (/\S/).test(e)) {=0A= le =3D e;=0A= for (var i in ps) {=0A= if (m =3D e.match(ps[i])) {=0A= this.matcher.push(Object.isFunction(x[i]) ? x[i](m) :=0A= new Template(x[i]).evaluate(m));=0A= e =3D e.replace(m[0], '');=0A= break;=0A= }=0A= }=0A= }=0A= =0A= this.xpath =3D this.matcher.join('');=0A= Selector._cache[this.expression] =3D this.xpath;=0A= },=0A= =0A= findElements: function(root) {=0A= root =3D root || document;=0A= if (this.xpath) return document._getElementsByXPath(this.xpath, = root);=0A= return this.matcher(root);=0A= },=0A= =0A= match: function(element) {=0A= this.tokens =3D [];=0A= =0A= var e =3D this.expression, ps =3D Selector.patterns, as =3D = Selector.assertions;=0A= var le, p, m;=0A= =0A= while (e && le !=3D=3D e && (/\S/).test(e)) {=0A= le =3D e;=0A= for (var i in ps) {=0A= p =3D ps[i];=0A= if (m =3D e.match(p)) {=0A= // use the Selector.assertions methods unless the selector=0A= // is too complex.=0A= if (as[i]) {=0A= this.tokens.push([i, Object.clone(m)]);=0A= e =3D e.replace(m[0], '');=0A= } else {=0A= // reluctantly do a document-wide search=0A= // and look for a match in the array=0A= return this.findElements(document).include(element);=0A= }=0A= }=0A= }=0A= }=0A= =0A= var match =3D true, name, matches;=0A= for (var i =3D 0, token; token =3D this.tokens[i]; i++) {=0A= name =3D token[0], matches =3D token[1];=0A= if (!Selector.assertions[name](element, matches)) {=0A= match =3D false; break;=0A= }=0A= }=0A= =0A= return match;=0A= },=0A= =0A= toString: function() {=0A= return this.expression;=0A= },=0A= =0A= inspect: function() {=0A= return "#";=0A= }=0A= });=0A= =0A= Object.extend(Selector, {=0A= _cache: { },=0A= =0A= xpath: {=0A= descendant: "//*",=0A= child: "/*",=0A= adjacent: "/following-sibling::*[1]",=0A= laterSibling: '/following-sibling::*',=0A= tagName: function(m) {=0A= if (m[1] =3D=3D '*') return '';=0A= return "[local-name()=3D'" + m[1].toLowerCase() +=0A= "' or local-name()=3D'" + m[1].toUpperCase() + "']";=0A= },=0A= className: "[contains(concat(' ', @class, ' '), ' #{1} ')]",=0A= id: "[@id=3D'#{1}']",=0A= attrPresence: "[@#{1}]",=0A= attr: function(m) {=0A= m[3] =3D m[5] || m[6];=0A= return new Template(Selector.xpath.operators[m[2]]).evaluate(m);=0A= },=0A= pseudo: function(m) {=0A= var h =3D Selector.xpath.pseudos[m[1]];=0A= if (!h) return '';=0A= if (Object.isFunction(h)) return h(m);=0A= return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m);=0A= },=0A= operators: {=0A= '=3D': "[@#{1}=3D'#{3}']",=0A= '!=3D': "[@#{1}!=3D'#{3}']",=0A= '^=3D': "[starts-with(@#{1}, '#{3}')]",=0A= '$=3D': "[substring(@#{1}, (string-length(@#{1}) - = string-length('#{3}') + 1))=3D'#{3}']",=0A= '*=3D': "[contains(@#{1}, '#{3}')]",=0A= '~=3D': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]",=0A= '|=3D': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]"=0A= },=0A= pseudos: {=0A= 'first-child': '[not(preceding-sibling::*)]',=0A= 'last-child': '[not(following-sibling::*)]',=0A= 'only-child': '[not(preceding-sibling::* or = following-sibling::*)]',=0A= 'empty': "[count(*) =3D 0 and (count(text()) =3D 0 or = translate(text(), ' \t\r\n', '') =3D '')]",=0A= 'checked': "[@checked]",=0A= 'disabled': "[@disabled]",=0A= 'enabled': "[not(@disabled)]",=0A= 'not': function(m) {=0A= var e =3D m[6], p =3D Selector.patterns,=0A= x =3D Selector.xpath, le, m, v;=0A= =0A= var exclusion =3D [];=0A= while (e && le !=3D e && (/\S/).test(e)) {=0A= le =3D e;=0A= for (var i in p) {=0A= if (m =3D e.match(p[i])) {=0A= v =3D Object.isFunction(x[i]) ? x[i](m) : new = Template(x[i]).evaluate(m);=0A= exclusion.push("(" + v.substring(1, v.length - 1) + ")");=0A= e =3D e.replace(m[0], '');=0A= break;=0A= }=0A= }=0A= }=0A= return "[not(" + exclusion.join(" and ") + ")]";=0A= },=0A= 'nth-child': function(m) {=0A= return = Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m);=0A= },=0A= 'nth-last-child': function(m) {=0A= return = Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m);=0A= },=0A= 'nth-of-type': function(m) {=0A= return Selector.xpath.pseudos.nth("position() ", m);=0A= },=0A= 'nth-last-of-type': function(m) {=0A= return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", = m);=0A= },=0A= 'first-of-type': function(m) {=0A= m[6] =3D "1"; return Selector.xpath.pseudos['nth-of-type'](m);=0A= },=0A= 'last-of-type': function(m) {=0A= m[6] =3D "1"; return = Selector.xpath.pseudos['nth-last-of-type'](m);=0A= },=0A= 'only-of-type': function(m) {=0A= var p =3D Selector.xpath.pseudos; return p['first-of-type'](m) + = p['last-of-type'](m);=0A= },=0A= nth: function(fragment, m) {=0A= var mm, formula =3D m[6], predicate;=0A= if (formula =3D=3D 'even') formula =3D '2n+0';=0A= if (formula =3D=3D 'odd') formula =3D '2n+1';=0A= if (mm =3D formula.match(/^(\d+)$/)) // digit only=0A= return '[' + fragment + "=3D " + mm[1] + ']';=0A= if (mm =3D formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b=0A= if (mm[1] =3D=3D "-") mm[1] =3D -1;=0A= var a =3D mm[1] ? Number(mm[1]) : 1;=0A= var b =3D mm[2] ? Number(mm[2]) : 0;=0A= predicate =3D "[((#{fragment} - #{b}) mod #{a} =3D 0) and " +=0A= "((#{fragment} - #{b}) div #{a} >=3D 0)]";=0A= return new Template(predicate).evaluate({=0A= fragment: fragment, a: a, b: b });=0A= }=0A= }=0A= }=0A= },=0A= =0A= criteria: {=0A= tagName: 'n =3D h.tagName(n, r, "#{1}", c); c =3D false;',=0A= className: 'n =3D h.className(n, r, "#{1}", c); c =3D false;',=0A= id: 'n =3D h.id(n, r, "#{1}", c); c =3D false;',=0A= attrPresence: 'n =3D h.attrPresence(n, r, "#{1}"); c =3D false;',=0A= attr: function(m) {=0A= m[3] =3D (m[5] || m[6]);=0A= return new Template('n =3D h.attr(n, r, "#{1}", "#{3}", "#{2}"); c = =3D false;').evaluate(m);=0A= },=0A= pseudo: function(m) {=0A= if (m[6]) m[6] =3D m[6].replace(/"/g, '\\"');=0A= return new Template('n =3D h.pseudo(n, "#{1}", "#{6}", r, c); c = =3D false;').evaluate(m);=0A= },=0A= descendant: 'c =3D "descendant";',=0A= child: 'c =3D "child";',=0A= adjacent: 'c =3D "adjacent";',=0A= laterSibling: 'c =3D "laterSibling";'=0A= },=0A= =0A= patterns: {=0A= // combinators must be listed first=0A= // (and descendant needs to be last combinator)=0A= laterSibling: /^\s*~\s*/,=0A= child: /^\s*>\s*/,=0A= adjacent: /^\s*\+\s*/,=0A= descendant: /^\s/,=0A= =0A= // selectors follow=0A= tagName: /^\s*(\*|[\w\-]+)(\b|$)?/,=0A= id: /^#([\w\-\*]+)(\b|$)/,=0A= className: /^\.([\w\-\*]+)(\b|$)/,=0A= pseudo: = /^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis= )abled|not)(\((.*?)\))?(\b|$|(?=3D\s)|(?=3D:))/,=0A= attrPresence: /^\[([\w]+)\]/,=0A= attr: = /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=3D)\s*((['"])([^\4]*?)\4|([^'"][^= \]]*?)))?\]/=0A= },=0A= =0A= // for Selector.match and Element#match=0A= assertions: {=0A= tagName: function(element, matches) {=0A= return matches[1].toUpperCase() =3D=3D = element.tagName.toUpperCase();=0A= },=0A= =0A= className: function(element, matches) {=0A= return Element.hasClassName(element, matches[1]);=0A= },=0A= =0A= id: function(element, matches) {=0A= return element.id =3D=3D=3D matches[1];=0A= },=0A= =0A= attrPresence: function(element, matches) {=0A= return Element.hasAttribute(element, matches[1]);=0A= },=0A= =0A= attr: function(element, matches) {=0A= var nodeValue =3D Element.readAttribute(element, matches[1]);=0A= return Selector.operators[matches[2]](nodeValue, matches[3]);=0A= }=0A= },=0A= =0A= handlers: {=0A= // UTILITY FUNCTIONS=0A= // joins two collections=0A= concat: function(a, b) {=0A= for (var i =3D 0, node; node =3D b[i]; i++)=0A= a.push(node);=0A= return a;=0A= },=0A= =0A= // marks an array of nodes for counting=0A= mark: function(nodes) {=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= node._counted =3D true;=0A= return nodes;=0A= },=0A= =0A= unmark: function(nodes) {=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= node._counted =3D undefined;=0A= return nodes;=0A= },=0A= =0A= // mark each child node with its position (for nth calls)=0A= // "ofType" flag indicates whether we're indexing for nth-of-type=0A= // rather than nth-child=0A= index: function(parentNode, reverse, ofType) {=0A= parentNode._counted =3D true;=0A= if (reverse) {=0A= for (var nodes =3D parentNode.childNodes, i =3D nodes.length - = 1, j =3D 1; i >=3D 0; i--) {=0A= var node =3D nodes[i];=0A= if (node.nodeType =3D=3D 1 && (!ofType || node._counted)) = node.nodeIndex =3D j++;=0A= }=0A= } else {=0A= for (var i =3D 0, j =3D 1, nodes =3D parentNode.childNodes; node = =3D nodes[i]; i++)=0A= if (node.nodeType =3D=3D 1 && (!ofType || node._counted)) = node.nodeIndex =3D j++;=0A= }=0A= },=0A= =0A= // filters out duplicates and extends all nodes=0A= unique: function(nodes) {=0A= if (nodes.length =3D=3D 0) return nodes;=0A= var results =3D [], n;=0A= for (var i =3D 0, l =3D nodes.length; i < l; i++)=0A= if (!(n =3D nodes[i])._counted) {=0A= n._counted =3D true;=0A= results.push(Element.extend(n));=0A= }=0A= return Selector.handlers.unmark(results);=0A= },=0A= =0A= // COMBINATOR FUNCTIONS=0A= descendant: function(nodes) {=0A= var h =3D Selector.handlers;=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= h.concat(results, node.getElementsByTagName('*'));=0A= return results;=0A= },=0A= =0A= child: function(nodes) {=0A= var h =3D Selector.handlers;=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A= for (var j =3D 0, children =3D [], child; child =3D = node.childNodes[j]; j++)=0A= if (child.nodeType =3D=3D 1 && child.tagName !=3D '!') = results.push(child);=0A= }=0A= return results;=0A= },=0A= =0A= adjacent: function(nodes) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A= var next =3D this.nextElementSibling(node);=0A= if (next) results.push(next);=0A= }=0A= return results;=0A= },=0A= =0A= laterSibling: function(nodes) {=0A= var h =3D Selector.handlers;=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= h.concat(results, Element.nextSiblings(node));=0A= return results;=0A= },=0A= =0A= nextElementSibling: function(node) {=0A= while (node =3D node.nextSibling)=0A= if (node.nodeType =3D=3D 1) return node;=0A= return null;=0A= },=0A= =0A= previousElementSibling: function(node) {=0A= while (node =3D node.previousSibling)=0A= if (node.nodeType =3D=3D 1) return node;=0A= return null;=0A= },=0A= =0A= // TOKEN FUNCTIONS=0A= tagName: function(nodes, root, tagName, combinator) {=0A= tagName =3D tagName.toUpperCase();=0A= var results =3D [], h =3D Selector.handlers;=0A= if (nodes) {=0A= if (combinator) {=0A= // fastlane for ordinary descendant combinators=0A= if (combinator =3D=3D "descendant") {=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= h.concat(results, node.getElementsByTagName(tagName));=0A= return results;=0A= } else nodes =3D this[combinator](nodes);=0A= if (tagName =3D=3D "*") return nodes;=0A= }=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (node.tagName.toUpperCase() =3D=3D tagName) = results.push(node);=0A= return results;=0A= } else return root.getElementsByTagName(tagName);=0A= },=0A= =0A= id: function(nodes, root, id, combinator) {=0A= var targetNode =3D $(id), h =3D Selector.handlers;=0A= if (!targetNode) return [];=0A= if (!nodes && root =3D=3D document) return [targetNode];=0A= if (nodes) {=0A= if (combinator) {=0A= if (combinator =3D=3D 'child') {=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (targetNode.parentNode =3D=3D node) return [targetNode];=0A= } else if (combinator =3D=3D 'descendant') {=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (Element.descendantOf(targetNode, node)) return = [targetNode];=0A= } else if (combinator =3D=3D 'adjacent') {=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (Selector.handlers.previousElementSibling(targetNode) = =3D=3D node)=0A= return [targetNode];=0A= } else nodes =3D h[combinator](nodes);=0A= }=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (node =3D=3D targetNode) return [targetNode];=0A= return [];=0A= }=0A= return (targetNode && Element.descendantOf(targetNode, root)) ? = [targetNode] : [];=0A= },=0A= =0A= className: function(nodes, root, className, combinator) {=0A= if (nodes && combinator) nodes =3D this[combinator](nodes);=0A= return Selector.handlers.byClassName(nodes, root, className);=0A= },=0A= =0A= byClassName: function(nodes, root, className) {=0A= if (!nodes) nodes =3D Selector.handlers.descendant([root]);=0A= var needle =3D ' ' + className + ' ';=0A= for (var i =3D 0, results =3D [], node, nodeClassName; node =3D = nodes[i]; i++) {=0A= nodeClassName =3D node.className;=0A= if (nodeClassName.length =3D=3D 0) continue;=0A= if (nodeClassName =3D=3D className || (' ' + nodeClassName + ' = ').include(needle))=0A= results.push(node);=0A= }=0A= return results;=0A= },=0A= =0A= attrPresence: function(nodes, root, attr) {=0A= if (!nodes) nodes =3D root.getElementsByTagName("*");=0A= var results =3D [];=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (Element.hasAttribute(node, attr)) results.push(node);=0A= return results;=0A= },=0A= =0A= attr: function(nodes, root, attr, value, operator) {=0A= if (!nodes) nodes =3D root.getElementsByTagName("*");=0A= var handler =3D Selector.operators[operator], results =3D [];=0A= for (var i =3D 0, node; node =3D nodes[i]; i++) {=0A= var nodeValue =3D Element.readAttribute(node, attr);=0A= if (nodeValue =3D=3D=3D null) continue;=0A= if (handler(nodeValue, value)) results.push(node);=0A= }=0A= return results;=0A= },=0A= =0A= pseudo: function(nodes, name, value, root, combinator) {=0A= if (nodes && combinator) nodes =3D this[combinator](nodes);=0A= if (!nodes) nodes =3D root.getElementsByTagName("*");=0A= return Selector.pseudos[name](nodes, value, root);=0A= }=0A= },=0A= =0A= pseudos: {=0A= 'first-child': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A= if (Selector.handlers.previousElementSibling(node)) continue;=0A= results.push(node);=0A= }=0A= return results;=0A= },=0A= 'last-child': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A= if (Selector.handlers.nextElementSibling(node)) continue;=0A= results.push(node);=0A= }=0A= return results;=0A= },=0A= 'only-child': function(nodes, value, root) {=0A= var h =3D Selector.handlers;=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= if (!h.previousElementSibling(node) && = !h.nextElementSibling(node))=0A= results.push(node);=0A= return results;=0A= },=0A= 'nth-child': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, formula, root);=0A= },=0A= 'nth-last-child': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, formula, root, true);=0A= },=0A= 'nth-of-type': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, formula, root, false, true);=0A= },=0A= 'nth-last-of-type': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, formula, root, true, true);=0A= },=0A= 'first-of-type': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, "1", root, false, true);=0A= },=0A= 'last-of-type': function(nodes, formula, root) {=0A= return Selector.pseudos.nth(nodes, "1", root, true, true);=0A= },=0A= 'only-of-type': function(nodes, formula, root) {=0A= var p =3D Selector.pseudos;=0A= return p['last-of-type'](p['first-of-type'](nodes, formula, root), = formula, root);=0A= },=0A= =0A= // handles the an+b logic=0A= getIndices: function(a, b, total) {=0A= if (a =3D=3D 0) return b > 0 ? [b] : [];=0A= return $R(1, total).inject([], function(memo, i) {=0A= if (0 =3D=3D (i - b) % a && (i - b) / a >=3D 0) memo.push(i);=0A= return memo;=0A= });=0A= },=0A= =0A= // handles nth(-last)-child, nth(-last)-of-type, and = (first|last)-of-type=0A= nth: function(nodes, formula, root, reverse, ofType) {=0A= if (nodes.length =3D=3D 0) return [];=0A= if (formula =3D=3D 'even') formula =3D '2n+0';=0A= if (formula =3D=3D 'odd') formula =3D '2n+1';=0A= var h =3D Selector.handlers, results =3D [], indexed =3D [], m;=0A= h.mark(nodes);=0A= for (var i =3D 0, node; node =3D nodes[i]; i++) {=0A= if (!node.parentNode._counted) {=0A= h.index(node.parentNode, reverse, ofType);=0A= indexed.push(node.parentNode);=0A= }=0A= }=0A= if (formula.match(/^\d+$/)) { // just a number=0A= formula =3D Number(formula);=0A= for (var i =3D 0, node; node =3D nodes[i]; i++)=0A= if (node.nodeIndex =3D=3D formula) results.push(node);=0A= } else if (m =3D formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // = an+b=0A= if (m[1] =3D=3D "-") m[1] =3D -1;=0A= var a =3D m[1] ? Number(m[1]) : 1;=0A= var b =3D m[2] ? Number(m[2]) : 0;=0A= var indices =3D Selector.pseudos.getIndices(a, b, nodes.length);=0A= for (var i =3D 0, node, l =3D indices.length; node =3D nodes[i]; = i++) {=0A= for (var j =3D 0; j < l; j++)=0A= if (node.nodeIndex =3D=3D indices[j]) results.push(node);=0A= }=0A= }=0A= h.unmark(nodes);=0A= h.unmark(indexed);=0A= return results;=0A= },=0A= =0A= 'empty': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {=0A= // IE treats comments as element nodes=0A= if (node.tagName =3D=3D '!' || (node.firstChild && = !node.innerHTML.match(/^\s*$/))) continue;=0A= results.push(node);=0A= }=0A= return results;=0A= },=0A= =0A= 'not': function(nodes, selector, root) {=0A= var h =3D Selector.handlers, selectorType, m;=0A= var exclusions =3D new Selector(selector).findElements(root);=0A= h.mark(exclusions);=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= if (!node._counted) results.push(node);=0A= h.unmark(exclusions);=0A= return results;=0A= },=0A= =0A= 'enabled': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= if (!node.disabled) results.push(node);=0A= return results;=0A= },=0A= =0A= 'disabled': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= if (node.disabled) results.push(node);=0A= return results;=0A= },=0A= =0A= 'checked': function(nodes, value, root) {=0A= for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)=0A= if (node.checked) results.push(node);=0A= return results;=0A= }=0A= },=0A= =0A= operators: {=0A= '=3D': function(nv, v) { return nv =3D=3D v; },=0A= '!=3D': function(nv, v) { return nv !=3D v; },=0A= '^=3D': function(nv, v) { return nv.startsWith(v); },=0A= '$=3D': function(nv, v) { return nv.endsWith(v); },=0A= '*=3D': function(nv, v) { return nv.include(v); },=0A= '~=3D': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + = ' '); },=0A= '|=3D': function(nv, v) { return ('-' + nv.toUpperCase() + = '-').include('-' + v.toUpperCase() + '-'); }=0A= },=0A= =0A= matchElements: function(elements, expression) {=0A= var matches =3D new Selector(expression).findElements(), h =3D = Selector.handlers;=0A= h.mark(matches);=0A= for (var i =3D 0, results =3D [], element; element =3D elements[i]; = i++)=0A= if (element._counted) results.push(element);=0A= h.unmark(matches);=0A= return results;=0A= },=0A= =0A= findElement: function(elements, expression, index) {=0A= if (Object.isNumber(expression)) {=0A= index =3D expression; expression =3D false;=0A= }=0A= return Selector.matchElements(elements, expression || '*')[index || = 0];=0A= },=0A= =0A= findChildElements: function(element, expressions) {=0A= var exprs =3D expressions.join(','), expressions =3D [];=0A= exprs.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m) {=0A= expressions.push(m[1].strip());=0A= });=0A= var results =3D [], h =3D Selector.handlers;=0A= for (var i =3D 0, l =3D expressions.length, selector; i < l; i++) {=0A= selector =3D new Selector(expressions[i].strip());=0A= h.concat(results, selector.findElements(element));=0A= }=0A= return (l > 1) ? h.unique(results) : results;=0A= }=0A= });=0A= =0A= function $$() {=0A= return Selector.findChildElements(document, $A(arguments));=0A= }=0A= var Form =3D {=0A= reset: function(form) {=0A= $(form).reset();=0A= return form;=0A= },=0A= =0A= serializeElements: function(elements, options) {=0A= if (typeof options !=3D 'object') options =3D { hash: !!options };=0A= else if (options.hash =3D=3D=3D undefined) options.hash =3D true;=0A= var key, value, submitted =3D false, submit =3D options.submit;=0A= =0A= var data =3D elements.inject({ }, function(result, element) {=0A= if (!element.disabled && element.name) {=0A= key =3D element.name; value =3D $(element).getValue();=0A= if (value !=3D null && (element.type !=3D 'submit' || = (!submitted &&=0A= submit !=3D=3D false && (!submit || key =3D=3D submit) && = (submitted =3D true)))) {=0A= if (key in result) {=0A= // a key is already present; construct an array of values=0A= if (!Object.isArray(result[key])) result[key] =3D = [result[key]];=0A= result[key].push(value);=0A= }=0A= else result[key] =3D value;=0A= }=0A= }=0A= return result;=0A= });=0A= =0A= return options.hash ? data : Object.toQueryString(data);=0A= }=0A= };=0A= =0A= Form.Methods =3D {=0A= serialize: function(form, options) {=0A= return Form.serializeElements(Form.getElements(form), options);=0A= },=0A= =0A= getElements: function(form) {=0A= return $A($(form).getElementsByTagName('*')).inject([],=0A= function(elements, child) {=0A= if (Form.Element.Serializers[child.tagName.toLowerCase()])=0A= elements.push(Element.extend(child));=0A= return elements;=0A= }=0A= );=0A= },=0A= =0A= getInputs: function(form, typeName, name) {=0A= form =3D $(form);=0A= var inputs =3D form.getElementsByTagName('input');=0A= =0A= if (!typeName && !name) return $A(inputs).map(Element.extend);=0A= =0A= for (var i =3D 0, matchingInputs =3D [], length =3D inputs.length; i = < length; i++) {=0A= var input =3D inputs[i];=0A= if ((typeName && input.type !=3D typeName) || (name && input.name = !=3D name))=0A= continue;=0A= matchingInputs.push(Element.extend(input));=0A= }=0A= =0A= return matchingInputs;=0A= },=0A= =0A= disable: function(form) {=0A= form =3D $(form);=0A= Form.getElements(form).invoke('disable');=0A= return form;=0A= },=0A= =0A= enable: function(form) {=0A= form =3D $(form);=0A= Form.getElements(form).invoke('enable');=0A= return form;=0A= },=0A= =0A= findFirstElement: function(form) {=0A= var elements =3D $(form).getElements().findAll(function(element) {=0A= return 'hidden' !=3D element.type && !element.disabled;=0A= });=0A= var firstByIndex =3D elements.findAll(function(element) {=0A= return element.hasAttribute('tabIndex') && element.tabIndex >=3D 0;=0A= }).sortBy(function(element) { return element.tabIndex }).first();=0A= =0A= return firstByIndex ? firstByIndex : elements.find(function(element) = {=0A= return ['input', 'select', = 'textarea'].include(element.tagName.toLowerCase());=0A= });=0A= },=0A= =0A= focusFirstElement: function(form) {=0A= form =3D $(form);=0A= form.findFirstElement().activate();=0A= return form;=0A= },=0A= =0A= request: function(form, options) {=0A= form =3D $(form), options =3D Object.clone(options || { });=0A= =0A= var params =3D options.parameters, action =3D = form.readAttribute('action') || '';=0A= if (action.blank()) action =3D window.location.href;=0A= options.parameters =3D form.serialize(true);=0A= =0A= if (params) {=0A= if (Object.isString(params)) params =3D params.toQueryParams();=0A= Object.extend(options.parameters, params);=0A= }=0A= =0A= if (form.hasAttribute('method') && !options.method)=0A= options.method =3D form.method;=0A= =0A= return new Ajax.Request(action, options);=0A= }=0A= };=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Form.Element =3D {=0A= focus: function(element) {=0A= $(element).focus();=0A= return element;=0A= },=0A= =0A= select: function(element) {=0A= $(element).select();=0A= return element;=0A= }=0A= };=0A= =0A= Form.Element.Methods =3D {=0A= serialize: function(element) {=0A= element =3D $(element);=0A= if (!element.disabled && element.name) {=0A= var value =3D element.getValue();=0A= if (value !=3D undefined) {=0A= var pair =3D { };=0A= pair[element.name] =3D value;=0A= return Object.toQueryString(pair);=0A= }=0A= }=0A= return '';=0A= },=0A= =0A= getValue: function(element) {=0A= element =3D $(element);=0A= var method =3D element.tagName.toLowerCase();=0A= return Form.Element.Serializers[method](element);=0A= },=0A= =0A= setValue: function(element, value) {=0A= element =3D $(element);=0A= var method =3D element.tagName.toLowerCase();=0A= Form.Element.Serializers[method](element, value);=0A= return element;=0A= },=0A= =0A= clear: function(element) {=0A= $(element).value =3D '';=0A= return element;=0A= },=0A= =0A= present: function(element) {=0A= return $(element).value !=3D '';=0A= },=0A= =0A= activate: function(element) {=0A= element =3D $(element);=0A= try {=0A= element.focus();=0A= if (element.select && (element.tagName.toLowerCase() !=3D 'input' = ||=0A= !['button', 'reset', 'submit'].include(element.type)))=0A= element.select();=0A= } catch (e) { }=0A= return element;=0A= },=0A= =0A= disable: function(element) {=0A= element =3D $(element);=0A= element.blur();=0A= element.disabled =3D true;=0A= return element;=0A= },=0A= =0A= enable: function(element) {=0A= element =3D $(element);=0A= element.disabled =3D false;=0A= return element;=0A= }=0A= };=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= var Field =3D Form.Element;=0A= var $F =3D Form.Element.Methods.getValue;=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Form.Element.Serializers =3D {=0A= input: function(element, value) {=0A= switch (element.type.toLowerCase()) {=0A= case 'checkbox':=0A= case 'radio':=0A= return Form.Element.Serializers.inputSelector(element, value);=0A= default:=0A= return Form.Element.Serializers.textarea(element, value);=0A= }=0A= },=0A= =0A= inputSelector: function(element, value) {=0A= if (value =3D=3D=3D undefined) return element.checked ? = element.value : null;=0A= else element.checked =3D !!value;=0A= },=0A= =0A= textarea: function(element, value) {=0A= if (value =3D=3D=3D undefined) return element.value;=0A= else element.value =3D value;=0A= },=0A= =0A= select: function(element, index) {=0A= if (index =3D=3D=3D undefined)=0A= return this[element.type =3D=3D 'select-one' ?=0A= 'selectOne' : 'selectMany'](element);=0A= else {=0A= var opt, value, single =3D !Object.isArray(index);=0A= for (var i =3D 0, length =3D element.length; i < length; i++) {=0A= opt =3D element.options[i];=0A= value =3D this.optionValue(opt);=0A= if (single) {=0A= if (value =3D=3D index) {=0A= opt.selected =3D true;=0A= return;=0A= }=0A= }=0A= else opt.selected =3D index.include(value);=0A= }=0A= }=0A= },=0A= =0A= selectOne: function(element) {=0A= var index =3D element.selectedIndex;=0A= return index >=3D 0 ? this.optionValue(element.options[index]) : = null;=0A= },=0A= =0A= selectMany: function(element) {=0A= var values, length =3D element.length;=0A= if (!length) return null;=0A= =0A= for (var i =3D 0, values =3D []; i < length; i++) {=0A= var opt =3D element.options[i];=0A= if (opt.selected) values.push(this.optionValue(opt));=0A= }=0A= return values;=0A= },=0A= =0A= optionValue: function(opt) {=0A= // extend element because hasAttribute may not be native=0A= return Element.extend(opt).hasAttribute('value') ? opt.value : = opt.text;=0A= }=0A= };=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Abstract.TimedObserver =3D Class.create(PeriodicalExecuter, {=0A= initialize: function($super, element, frequency, callback) {=0A= $super(callback, frequency);=0A= this.element =3D $(element);=0A= this.lastValue =3D this.getValue();=0A= },=0A= =0A= execute: function() {=0A= var value =3D this.getValue();=0A= if (Object.isString(this.lastValue) && Object.isString(value) ?=0A= this.lastValue !=3D value : String(this.lastValue) !=3D = String(value)) {=0A= this.callback(this.element, value);=0A= this.lastValue =3D value;=0A= }=0A= }=0A= });=0A= =0A= Form.Element.Observer =3D Class.create(Abstract.TimedObserver, {=0A= getValue: function() {=0A= return Form.Element.getValue(this.element);=0A= }=0A= });=0A= =0A= Form.Observer =3D Class.create(Abstract.TimedObserver, {=0A= getValue: function() {=0A= return Form.serialize(this.element);=0A= }=0A= });=0A= =0A= /*-----------------------------------------------------------------------= ---*/=0A= =0A= Abstract.EventObserver =3D Class.create({=0A= initialize: function(element, callback) {=0A= this.element =3D $(element);=0A= this.callback =3D callback;=0A= =0A= this.lastValue =3D this.getValue();=0A= if (this.element.tagName.toLowerCase() =3D=3D 'form')=0A= this.registerFormCallbacks();=0A= else=0A= this.registerCallback(this.element);=0A= },=0A= =0A= onElementEvent: function() {=0A= var value =3D this.getValue();=0A= if (this.lastValue !=3D value) {=0A= this.callback(this.element, value);=0A= this.lastValue =3D value;=0A= }=0A= },=0A= =0A= registerFormCallbacks: function() {=0A= Form.getElements(this.element).each(this.registerCallback, this);=0A= },=0A= =0A= registerCallback: function(element) {=0A= if (element.type) {=0A= switch (element.type.toLowerCase()) {=0A= case 'checkbox':=0A= case 'radio':=0A= Event.observe(element, 'click', = this.onElementEvent.bind(this));=0A= break;=0A= default:=0A= Event.observe(element, 'change', = this.onElementEvent.bind(this));=0A= break;=0A= }=0A= }=0A= }=0A= });=0A= =0A= Form.Element.EventObserver =3D Class.create(Abstract.EventObserver, {=0A= getValue: function() {=0A= return Form.Element.getValue(this.element);=0A= }=0A= });=0A= =0A= Form.EventObserver =3D Class.create(Abstract.EventObserver, {=0A= getValue: function() {=0A= return Form.serialize(this.element);=0A= }=0A= });=0A= if (!window.Event) var Event =3D { };=0A= =0A= Object.extend(Event, {=0A= KEY_BACKSPACE: 8,=0A= KEY_TAB: 9,=0A= KEY_RETURN: 13,=0A= KEY_ESC: 27,=0A= KEY_LEFT: 37,=0A= KEY_UP: 38,=0A= KEY_RIGHT: 39,=0A= KEY_DOWN: 40,=0A= KEY_DELETE: 46,=0A= KEY_HOME: 36,=0A= KEY_END: 35,=0A= KEY_PAGEUP: 33,=0A= KEY_PAGEDOWN: 34,=0A= KEY_INSERT: 45,=0A= =0A= cache: { },=0A= =0A= relatedTarget: function(event) {=0A= var element;=0A= switch(event.type) {=0A= case 'mouseover': element =3D event.fromElement; break;=0A= case 'mouseout': element =3D event.toElement; break;=0A= default: return null;=0A= }=0A= return Element.extend(element);=0A= }=0A= });=0A= =0A= Event.Methods =3D (function() {=0A= var isButton;=0A= =0A= if (Prototype.Browser.IE) {=0A= var buttonMap =3D { 0: 1, 1: 4, 2: 2 };=0A= isButton =3D function(event, code) {=0A= return event.button =3D=3D buttonMap[code];=0A= };=0A= =0A= } else if (Prototype.Browser.WebKit) {=0A= isButton =3D function(event, code) {=0A= switch (code) {=0A= case 0: return event.which =3D=3D 1 && !event.metaKey;=0A= case 1: return event.which =3D=3D 1 && event.metaKey;=0A= default: return false;=0A= }=0A= };=0A= =0A= } else {=0A= isButton =3D function(event, code) {=0A= return event.which ? (event.which =3D=3D=3D code + 1) : = (event.button =3D=3D=3D code);=0A= };=0A= }=0A= =0A= return {=0A= isLeftClick: function(event) { return isButton(event, 0) },=0A= isMiddleClick: function(event) { return isButton(event, 1) },=0A= isRightClick: function(event) { return isButton(event, 2) },=0A= =0A= element: function(event) {=0A= var node =3D Event.extend(event).target;=0A= return Element.extend(node.nodeType =3D=3D Node.TEXT_NODE ? = node.parentNode : node);=0A= },=0A= =0A= findElement: function(event, expression) {=0A= var element =3D Event.element(event);=0A= return element.match(expression) ? element : = element.up(expression);=0A= },=0A= =0A= pointer: function(event) {=0A= return {=0A= x: event.pageX || (event.clientX +=0A= (document.documentElement.scrollLeft || = document.body.scrollLeft)),=0A= y: event.pageY || (event.clientY +=0A= (document.documentElement.scrollTop || = document.body.scrollTop))=0A= };=0A= },=0A= =0A= pointerX: function(event) { return Event.pointer(event).x },=0A= pointerY: function(event) { return Event.pointer(event).y },=0A= =0A= stop: function(event) {=0A= Event.extend(event);=0A= event.preventDefault();=0A= event.stopPropagation();=0A= event.stopped =3D true;=0A= }=0A= };=0A= })();=0A= =0A= Event.extend =3D (function() {=0A= var methods =3D Object.keys(Event.Methods).inject({ }, function(m, = name) {=0A= m[name] =3D Event.Methods[name].methodize();=0A= return m;=0A= });=0A= =0A= if (Prototype.Browser.IE) {=0A= Object.extend(methods, {=0A= stopPropagation: function() { this.cancelBubble =3D true },=0A= preventDefault: function() { this.returnValue =3D false },=0A= inspect: function() { return "[object Event]" }=0A= });=0A= =0A= return function(event) {=0A= if (!event) return false;=0A= if (event._extendedByPrototype) return event;=0A= =0A= event._extendedByPrototype =3D Prototype.emptyFunction;=0A= var pointer =3D Event.pointer(event);=0A= Object.extend(event, {=0A= target: event.srcElement,=0A= relatedTarget: Event.relatedTarget(event),=0A= pageX: pointer.x,=0A= pageY: pointer.y=0A= });=0A= return Object.extend(event, methods);=0A= };=0A= =0A= } else {=0A= Event.prototype =3D Event.prototype || = document.createEvent("HTMLEvents").__proto__;=0A= Object.extend(Event.prototype, methods);=0A= return Prototype.K;=0A= }=0A= })();=0A= =0A= Object.extend(Event, (function() {=0A= var cache =3D Event.cache;=0A= =0A= function getEventID(element) {=0A= if (element._eventID) return element._eventID;=0A= arguments.callee.id =3D arguments.callee.id || 1;=0A= return element._eventID =3D ++arguments.callee.id;=0A= }=0A= =0A= function getDOMEventName(eventName) {=0A= if (eventName && eventName.include(':')) return "dataavailable";=0A= return eventName;=0A= }=0A= =0A= function getCacheForID(id) {=0A= return cache[id] =3D cache[id] || { };=0A= }=0A= =0A= function getWrappersForEventName(id, eventName) {=0A= var c =3D getCacheForID(id);=0A= return c[eventName] =3D c[eventName] || [];=0A= }=0A= =0A= function createWrapper(element, eventName, handler) {=0A= var id =3D getEventID(element);=0A= var c =3D getWrappersForEventName(id, eventName);=0A= if (c.pluck("handler").include(handler)) return false;=0A= =0A= var wrapper =3D function(event) {=0A= if (!Event || !Event.extend ||=0A= (event.eventName && event.eventName !=3D eventName))=0A= return false;=0A= =0A= Event.extend(event);=0A= handler.call(element, event)=0A= };=0A= =0A= wrapper.handler =3D handler;=0A= c.push(wrapper);=0A= return wrapper;=0A= }=0A= =0A= function findWrapper(id, eventName, handler) {=0A= var c =3D getWrappersForEventName(id, eventName);=0A= return c.find(function(wrapper) { return wrapper.handler =3D=3D = handler });=0A= }=0A= =0A= function destroyWrapper(id, eventName, handler) {=0A= var c =3D getCacheForID(id);=0A= if (!c[eventName]) return false;=0A= c[eventName] =3D c[eventName].without(findWrapper(id, eventName, = handler));=0A= }=0A= =0A= function destroyCache() {=0A= for (var id in cache)=0A= for (var eventName in cache[id])=0A= cache[id][eventName] =3D null;=0A= }=0A= =0A= if (window.attachEvent) {=0A= window.attachEvent("onunload", destroyCache);=0A= }=0A= =0A= return {=0A= observe: function(element, eventName, handler) {=0A= element =3D $(element);=0A= var name =3D getDOMEventName(eventName);=0A= =0A= var wrapper =3D createWrapper(element, eventName, handler);=0A= if (!wrapper) return element;=0A= =0A= if (element.addEventListener) {=0A= element.addEventListener(name, wrapper, false);=0A= } else {=0A= element.attachEvent("on" + name, wrapper);=0A= }=0A= =0A= return element;=0A= },=0A= =0A= stopObserving: function(element, eventName, handler) {=0A= element =3D $(element);=0A= var id =3D getEventID(element), name =3D = getDOMEventName(eventName);=0A= =0A= if (!handler && eventName) {=0A= getWrappersForEventName(id, eventName).each(function(wrapper) {=0A= element.stopObserving(eventName, wrapper.handler);=0A= });=0A= return element;=0A= =0A= } else if (!eventName) {=0A= Object.keys(getCacheForID(id)).each(function(eventName) {=0A= element.stopObserving(eventName);=0A= });=0A= return element;=0A= }=0A= =0A= var wrapper =3D findWrapper(id, eventName, handler);=0A= if (!wrapper) return element;=0A= =0A= if (element.removeEventListener) {=0A= element.removeEventListener(name, wrapper, false);=0A= } else {=0A= element.detachEvent("on" + name, wrapper);=0A= }=0A= =0A= destroyWrapper(id, eventName, handler);=0A= =0A= return element;=0A= },=0A= =0A= fire: function(element, eventName, memo) {=0A= element =3D $(element);=0A= if (element =3D=3D document && document.createEvent && = !element.dispatchEvent)=0A= element =3D document.documentElement;=0A= =0A= if (document.createEvent) {=0A= var event =3D document.createEvent("HTMLEvents");=0A= event.initEvent("dataavailable", true, true);=0A= } else {=0A= var event =3D document.createEventObject();=0A= event.eventType =3D "ondataavailable";=0A= }=0A= =0A= event.eventName =3D eventName;=0A= event.memo =3D memo || { };=0A= =0A= if (document.createEvent) {=0A= element.dispatchEvent(event);=0A= } else {=0A= element.fireEvent(event.eventType, event);=0A= }=0A= =0A= return event;=0A= }=0A= };=0A= })());=0A= =0A= Object.extend(Event, Event.Methods);=0A= =0A= Element.addMethods({=0A= fire: Event.fire,=0A= observe: Event.observe,=0A= stopObserving: Event.stopObserving=0A= });=0A= =0A= Object.extend(document, {=0A= fire: Element.Methods.fire.methodize(),=0A= observe: Element.Methods.observe.methodize(),=0A= stopObserving: Element.Methods.stopObserving.methodize()=0A= });=0A= =0A= (function() {=0A= /* Support for the DOMContentLoaded event is based on work by Dan Webb,=0A= Matthias Miller, Dean Edwards and John Resig. */=0A= =0A= var timer, fired =3D false;=0A= =0A= function fireContentLoadedEvent() {=0A= if (fired) return;=0A= if (timer) window.clearInterval(timer);=0A= document.fire("dom:loaded");=0A= fired =3D true;=0A= }=0A= =0A= if (document.addEventListener) {=0A= if (Prototype.Browser.WebKit) {=0A= timer =3D window.setInterval(function() {=0A= if (/loaded|complete/.test(document.readyState))=0A= fireContentLoadedEvent();=0A= }, 0);=0A= =0A= Event.observe(window, "load", fireContentLoadedEvent);=0A= =0A= } else {=0A= document.addEventListener("DOMContentLoaded",=0A= fireContentLoadedEvent, false);=0A= }=0A= =0A= } else {=0A= document.write("