From 9a251394da74a00ec7081a6cb32f33615e2ecf9c Mon Sep 17 00:00:00 2001 From: "kay.one" Date: Sat, 2 Jul 2011 01:52:33 -0700 Subject: [PATCH 01/10] cleaned up script/content folder --- .../Content/2011.1.414/Black/editor.png | Bin 2873 -> 0 bytes .../Content/2011.1.414/Black/imagebrowser.png | Bin 4863 -> 0 bytes .../Content/2011.1.414/Black/loading.gif | Bin 1093 -> 0 bytes .../2011.1.414/Black/slider-h-both.gif | Bin 98 -> 0 bytes .../2011.1.414/Black/slider-h-bottom.gif | Bin 93 -> 0 bytes .../Content/2011.1.414/Black/slider-h-top.gif | Bin 93 -> 0 bytes .../2011.1.414/Black/slider-hs-both.gif | Bin 92 -> 0 bytes .../2011.1.414/Black/slider-hs-bottom.gif | Bin 90 -> 0 bytes .../2011.1.414/Black/slider-hs-top.gif | Bin 90 -> 0 bytes .../2011.1.414/Black/slider-v-both.gif | Bin 98 -> 0 bytes .../2011.1.414/Black/slider-v-left.gif | Bin 93 -> 0 bytes .../2011.1.414/Black/slider-v-right.gif | Bin 93 -> 0 bytes .../2011.1.414/Black/slider-vs-both.gif | Bin 92 -> 0 bytes .../2011.1.414/Black/slider-vs-left.gif | Bin 90 -> 0 bytes .../2011.1.414/Black/slider-vs-right.gif | Bin 90 -> 0 bytes .../2011.1.414/Black/sprite-vertical.png | Bin 222 -> 0 bytes .../Content/2011.1.414/Black/sprite.png | Bin 5723 -> 0 bytes .../2011.1.414/Black/treeview-line.png | Bin 322 -> 0 bytes .../2011.1.414/Black/treeview-nodes-rtl.png | Bin 177 -> 0 bytes .../2011.1.414/Black/treeview-nodes.png | Bin 261 -> 0 bytes .../Content/2011.1.414/Default/editor.png | Bin 2877 -> 0 bytes .../2011.1.414/Default/imagebrowser.png | Bin 4876 -> 0 bytes .../Content/2011.1.414/Default/loading.gif | Bin 1517 -> 0 bytes .../2011.1.414/Default/slider-h-both.gif | Bin 102 -> 0 bytes .../2011.1.414/Default/slider-h-bottom.gif | Bin 96 -> 0 bytes .../2011.1.414/Default/slider-h-top.gif | Bin 96 -> 0 bytes .../2011.1.414/Default/slider-hs-both.gif | Bin 92 -> 0 bytes .../2011.1.414/Default/slider-hs-bottom.gif | Bin 90 -> 0 bytes .../2011.1.414/Default/slider-hs-top.gif | Bin 90 -> 0 bytes .../2011.1.414/Default/slider-v-both.gif | Bin 102 -> 0 bytes .../2011.1.414/Default/slider-v-left.gif | Bin 96 -> 0 bytes .../2011.1.414/Default/slider-v-right.gif | Bin 96 -> 0 bytes .../2011.1.414/Default/slider-vs-both.gif | Bin 92 -> 0 bytes .../2011.1.414/Default/slider-vs-left.gif | Bin 90 -> 0 bytes .../2011.1.414/Default/slider-vs-right.gif | Bin 90 -> 0 bytes .../2011.1.414/Default/sprite-vertical.png | Bin 222 -> 0 bytes .../Content/2011.1.414/Default/sprite.png | Bin 6387 -> 0 bytes .../2011.1.414/Default/treeview-line.png | Bin 322 -> 0 bytes .../2011.1.414/Default/treeview-nodes-rtl.png | Bin 212 -> 0 bytes .../2011.1.414/Default/treeview-nodes.png | Bin 261 -> 0 bytes .../Content/2011.1.414/Forest/editor.png | Bin 2978 -> 0 bytes .../2011.1.414/Forest/imagebrowser.png | Bin 4935 -> 0 bytes .../Content/2011.1.414/Forest/loading.gif | Bin 1376 -> 0 bytes .../2011.1.414/Forest/slider-h-both.gif | Bin 98 -> 0 bytes .../2011.1.414/Forest/slider-h-bottom.gif | Bin 93 -> 0 bytes .../2011.1.414/Forest/slider-h-top.gif | Bin 93 -> 0 bytes .../2011.1.414/Forest/slider-hs-both.gif | Bin 92 -> 0 bytes .../2011.1.414/Forest/slider-hs-bottom.gif | Bin 90 -> 0 bytes .../2011.1.414/Forest/slider-hs-top.gif | Bin 90 -> 0 bytes .../2011.1.414/Forest/slider-v-both.gif | Bin 98 -> 0 bytes .../2011.1.414/Forest/slider-v-left.gif | Bin 93 -> 0 bytes .../2011.1.414/Forest/slider-v-right.gif | Bin 93 -> 0 bytes .../2011.1.414/Forest/slider-vs-both.gif | Bin 92 -> 0 bytes .../2011.1.414/Forest/slider-vs-left.gif | Bin 90 -> 0 bytes .../2011.1.414/Forest/slider-vs-right.gif | Bin 90 -> 0 bytes .../2011.1.414/Forest/sprite-vertical.png | Bin 240 -> 0 bytes .../Content/2011.1.414/Forest/sprite.png | Bin 5665 -> 0 bytes .../2011.1.414/Forest/treeview-line.png | Bin 322 -> 0 bytes .../2011.1.414/Forest/treeview-nodes-rtl.png | Bin 212 -> 0 bytes .../2011.1.414/Forest/treeview-nodes.png | Bin 261 -> 0 bytes .../Content/2011.1.414/Hay/editor.png | Bin 2912 -> 0 bytes .../Content/2011.1.414/Hay/imagebrowser.png | Bin 4927 -> 0 bytes .../Content/2011.1.414/Hay/loading.gif | Bin 1620 -> 0 bytes .../Content/2011.1.414/Hay/slider-h-both.gif | Bin 102 -> 0 bytes .../2011.1.414/Hay/slider-h-bottom.gif | Bin 96 -> 0 bytes .../Content/2011.1.414/Hay/slider-h-top.gif | Bin 96 -> 0 bytes .../Content/2011.1.414/Hay/slider-hs-both.gif | Bin 92 -> 0 bytes .../2011.1.414/Hay/slider-hs-bottom.gif | Bin 90 -> 0 bytes .../Content/2011.1.414/Hay/slider-hs-top.gif | Bin 90 -> 0 bytes .../Content/2011.1.414/Hay/slider-v-both.gif | Bin 102 -> 0 bytes .../Content/2011.1.414/Hay/slider-v-left.gif | Bin 96 -> 0 bytes .../Content/2011.1.414/Hay/slider-v-right.gif | Bin 96 -> 0 bytes .../Content/2011.1.414/Hay/slider-vs-both.gif | Bin 92 -> 0 bytes .../Content/2011.1.414/Hay/slider-vs-left.gif | Bin 90 -> 0 bytes .../2011.1.414/Hay/slider-vs-right.gif | Bin 90 -> 0 bytes .../2011.1.414/Hay/sprite-vertical.png | Bin 225 -> 0 bytes .../Content/2011.1.414/Hay/sprite.png | Bin 5358 -> 0 bytes .../Content/2011.1.414/Hay/treeview-line.png | Bin 322 -> 0 bytes .../2011.1.414/Hay/treeview-nodes-rtl.png | Bin 212 -> 0 bytes .../Content/2011.1.414/Hay/treeview-nodes.png | Bin 261 -> 0 bytes .../Content/2011.1.414/Office2007/editor.png | Bin 5132 -> 0 bytes .../2011.1.414/Office2007/imagebrowser.png | Bin 4933 -> 0 bytes .../Content/2011.1.414/Office2007/loading.gif | Bin 2080 -> 0 bytes .../2011.1.414/Office2007/slider-h-both.gif | Bin 47 -> 0 bytes .../2011.1.414/Office2007/slider-h-bottom.gif | Bin 47 -> 0 bytes .../2011.1.414/Office2007/slider-h-top.gif | Bin 47 -> 0 bytes .../2011.1.414/Office2007/slider-hs-both.gif | Bin 46 -> 0 bytes .../Office2007/slider-hs-bottom.gif | Bin 46 -> 0 bytes .../2011.1.414/Office2007/slider-hs-top.gif | Bin 46 -> 0 bytes .../2011.1.414/Office2007/slider-v-both.gif | Bin 47 -> 0 bytes .../2011.1.414/Office2007/slider-v-left.gif | Bin 47 -> 0 bytes .../2011.1.414/Office2007/slider-v-right.gif | Bin 47 -> 0 bytes .../2011.1.414/Office2007/slider-vs-both.gif | Bin 46 -> 0 bytes .../2011.1.414/Office2007/slider-vs-left.gif | Bin 46 -> 0 bytes .../2011.1.414/Office2007/slider-vs-right.gif | Bin 46 -> 0 bytes .../2011.1.414/Office2007/sprite-vertical.png | Bin 216 -> 0 bytes .../Content/2011.1.414/Office2007/sprite.png | Bin 5668 -> 0 bytes .../2011.1.414/Office2007/treeview-line.png | Bin 322 -> 0 bytes .../Office2007/treeview-nodes-rtl.png | Bin 212 -> 0 bytes .../2011.1.414/Office2007/treeview-nodes.png | Bin 261 -> 0 bytes .../2011.1.414/Office2010Black/editor.png | Bin 2797 -> 0 bytes .../Office2010Black/imagebrowser.png | Bin 3460 -> 0 bytes .../2011.1.414/Office2010Black/loading.gif | Bin 2080 -> 0 bytes .../Office2010Black/slider-h-both.gif | Bin 47 -> 0 bytes .../Office2010Black/slider-h-bottom.gif | Bin 47 -> 0 bytes .../Office2010Black/slider-h-top.gif | Bin 47 -> 0 bytes .../Office2010Black/slider-hs-both.gif | Bin 46 -> 0 bytes .../Office2010Black/slider-hs-bottom.gif | Bin 46 -> 0 bytes .../Office2010Black/slider-hs-top.gif | Bin 46 -> 0 bytes .../Office2010Black/slider-v-both.gif | Bin 47 -> 0 bytes .../Office2010Black/slider-v-left.gif | Bin 47 -> 0 bytes .../Office2010Black/slider-v-right.gif | Bin 47 -> 0 bytes .../Office2010Black/slider-vs-both.gif | Bin 46 -> 0 bytes .../Office2010Black/slider-vs-left.gif | Bin 46 -> 0 bytes .../Office2010Black/slider-vs-right.gif | Bin 46 -> 0 bytes .../Office2010Black/sprite-vertical.png | Bin 222 -> 0 bytes .../2011.1.414/Office2010Black/sprite.png | Bin 6091 -> 0 bytes .../Office2010Black/treeview-line.png | Bin 322 -> 0 bytes .../Office2010Black/treeview-nodes-rtl.png | Bin 212 -> 0 bytes .../Office2010Black/treeview-nodes.png | Bin 261 -> 0 bytes .../Content/2011.1.414/Outlook/editor.png | Bin 2969 -> 0 bytes .../2011.1.414/Outlook/imagebrowser.png | Bin 4969 -> 0 bytes .../Content/2011.1.414/Outlook/loading.gif | Bin 2080 -> 0 bytes .../2011.1.414/Outlook/slider-h-both.gif | Bin 47 -> 0 bytes .../2011.1.414/Outlook/slider-h-bottom.gif | Bin 47 -> 0 bytes .../2011.1.414/Outlook/slider-h-top.gif | Bin 47 -> 0 bytes .../2011.1.414/Outlook/slider-hs-both.gif | Bin 46 -> 0 bytes .../2011.1.414/Outlook/slider-hs-bottom.gif | Bin 46 -> 0 bytes .../2011.1.414/Outlook/slider-hs-top.gif | Bin 46 -> 0 bytes .../2011.1.414/Outlook/slider-v-both.gif | Bin 47 -> 0 bytes .../2011.1.414/Outlook/slider-v-left.gif | Bin 47 -> 0 bytes .../2011.1.414/Outlook/slider-v-right.gif | Bin 47 -> 0 bytes .../2011.1.414/Outlook/slider-vs-both.gif | Bin 46 -> 0 bytes .../2011.1.414/Outlook/slider-vs-left.gif | Bin 46 -> 0 bytes .../2011.1.414/Outlook/slider-vs-right.gif | Bin 46 -> 0 bytes .../2011.1.414/Outlook/sprite-vertical.png | Bin 239 -> 0 bytes .../Content/2011.1.414/Outlook/sprite.png | Bin 5086 -> 0 bytes .../2011.1.414/Outlook/treeview-line.png | Bin 322 -> 0 bytes .../2011.1.414/Outlook/treeview-nodes-rtl.png | Bin 212 -> 0 bytes .../2011.1.414/Outlook/treeview-nodes.png | Bin 261 -> 0 bytes .../Content/2011.1.414/Simple/editor.png | Bin 2927 -> 0 bytes .../2011.1.414/Simple/imagebrowser.png | Bin 4740 -> 0 bytes .../Content/2011.1.414/Simple/loading.gif | Bin 2080 -> 0 bytes .../2011.1.414/Simple/slider-h-both.gif | Bin 47 -> 0 bytes .../2011.1.414/Simple/slider-h-bottom.gif | Bin 47 -> 0 bytes .../2011.1.414/Simple/slider-h-top.gif | Bin 47 -> 0 bytes .../2011.1.414/Simple/slider-hs-both.gif | Bin 46 -> 0 bytes .../2011.1.414/Simple/slider-hs-bottom.gif | Bin 46 -> 0 bytes .../2011.1.414/Simple/slider-hs-top.gif | Bin 46 -> 0 bytes .../2011.1.414/Simple/slider-v-both.gif | Bin 47 -> 0 bytes .../2011.1.414/Simple/slider-v-left.gif | Bin 47 -> 0 bytes .../2011.1.414/Simple/slider-v-right.gif | Bin 47 -> 0 bytes .../2011.1.414/Simple/slider-vs-both.gif | Bin 46 -> 0 bytes .../2011.1.414/Simple/slider-vs-left.gif | Bin 46 -> 0 bytes .../2011.1.414/Simple/slider-vs-right.gif | Bin 46 -> 0 bytes .../2011.1.414/Simple/sprite-vertical.png | Bin 184 -> 0 bytes .../Content/2011.1.414/Simple/sprite.png | Bin 4275 -> 0 bytes .../2011.1.414/Simple/treeview-line.png | Bin 322 -> 0 bytes .../2011.1.414/Simple/treeview-nodes-rtl.png | Bin 212 -> 0 bytes .../2011.1.414/Simple/treeview-nodes.png | Bin 261 -> 0 bytes .../Content/2011.1.414/Sitefinity/editor.png | Bin 2806 -> 0 bytes .../2011.1.414/Sitefinity/imagebrowser.png | Bin 4740 -> 0 bytes .../Content/2011.1.414/Sitefinity/loading.gif | Bin 1282 -> 0 bytes .../2011.1.414/Sitefinity/slider-h-both.gif | Bin 102 -> 0 bytes .../2011.1.414/Sitefinity/slider-h-bottom.gif | Bin 96 -> 0 bytes .../2011.1.414/Sitefinity/slider-h-top.gif | Bin 96 -> 0 bytes .../2011.1.414/Sitefinity/slider-hs-both.gif | Bin 92 -> 0 bytes .../Sitefinity/slider-hs-bottom.gif | Bin 90 -> 0 bytes .../2011.1.414/Sitefinity/slider-hs-top.gif | Bin 90 -> 0 bytes .../2011.1.414/Sitefinity/slider-v-both.gif | Bin 102 -> 0 bytes .../2011.1.414/Sitefinity/slider-v-left.gif | Bin 96 -> 0 bytes .../2011.1.414/Sitefinity/slider-v-right.gif | Bin 96 -> 0 bytes .../2011.1.414/Sitefinity/slider-vs-both.gif | Bin 92 -> 0 bytes .../2011.1.414/Sitefinity/slider-vs-left.gif | Bin 90 -> 0 bytes .../2011.1.414/Sitefinity/slider-vs-right.gif | Bin 90 -> 0 bytes .../2011.1.414/Sitefinity/sprite-vertical.png | Bin 188 -> 0 bytes .../Content/2011.1.414/Sitefinity/sprite.png | Bin 4586 -> 0 bytes .../2011.1.414/Sitefinity/treeview-line.png | Bin 322 -> 0 bytes .../Sitefinity/treeview-nodes-rtl.png | Bin 212 -> 0 bytes .../2011.1.414/Sitefinity/treeview-nodes.png | Bin 261 -> 0 bytes .../Content/2011.1.414/Sunset/editor.png | Bin 2958 -> 0 bytes .../2011.1.414/Sunset/imagebrowser.png | Bin 4926 -> 0 bytes .../Content/2011.1.414/Sunset/loading.gif | Bin 1306 -> 0 bytes .../2011.1.414/Sunset/slider-h-both.gif | Bin 98 -> 0 bytes .../2011.1.414/Sunset/slider-h-bottom.gif | Bin 93 -> 0 bytes .../2011.1.414/Sunset/slider-h-top.gif | Bin 93 -> 0 bytes .../2011.1.414/Sunset/slider-hs-both.gif | Bin 92 -> 0 bytes .../2011.1.414/Sunset/slider-hs-bottom.gif | Bin 90 -> 0 bytes .../2011.1.414/Sunset/slider-hs-top.gif | Bin 90 -> 0 bytes .../2011.1.414/Sunset/slider-v-both.gif | Bin 98 -> 0 bytes .../2011.1.414/Sunset/slider-v-left.gif | Bin 93 -> 0 bytes .../2011.1.414/Sunset/slider-v-right.gif | Bin 93 -> 0 bytes .../2011.1.414/Sunset/slider-vs-both.gif | Bin 92 -> 0 bytes .../2011.1.414/Sunset/slider-vs-left.gif | Bin 90 -> 0 bytes .../2011.1.414/Sunset/slider-vs-right.gif | Bin 90 -> 0 bytes .../2011.1.414/Sunset/sprite-vertical.png | Bin 243 -> 0 bytes .../Content/2011.1.414/Sunset/sprite.png | Bin 4928 -> 0 bytes .../2011.1.414/Sunset/treeview-line.png | Bin 322 -> 0 bytes .../2011.1.414/Sunset/treeview-nodes-rtl.png | Bin 212 -> 0 bytes .../2011.1.414/Sunset/treeview-nodes.png | Bin 261 -> 0 bytes .../Content/2011.1.414/Telerik/editor.png | Bin 2842 -> 0 bytes .../2011.1.414/Telerik/imagebrowser.png | Bin 4839 -> 0 bytes .../Content/2011.1.414/Telerik/loading.gif | Bin 1202 -> 0 bytes .../2011.1.414/Telerik/slider-h-both.gif | Bin 102 -> 0 bytes .../2011.1.414/Telerik/slider-h-bottom.gif | Bin 96 -> 0 bytes .../2011.1.414/Telerik/slider-h-top.gif | Bin 96 -> 0 bytes .../2011.1.414/Telerik/slider-hs-both.gif | Bin 92 -> 0 bytes .../2011.1.414/Telerik/slider-hs-bottom.gif | Bin 90 -> 0 bytes .../2011.1.414/Telerik/slider-hs-top.gif | Bin 90 -> 0 bytes .../2011.1.414/Telerik/slider-v-both.gif | Bin 102 -> 0 bytes .../2011.1.414/Telerik/slider-v-left.gif | Bin 96 -> 0 bytes .../2011.1.414/Telerik/slider-v-right.gif | Bin 96 -> 0 bytes .../2011.1.414/Telerik/slider-vs-both.gif | Bin 92 -> 0 bytes .../2011.1.414/Telerik/slider-vs-left.gif | Bin 90 -> 0 bytes .../2011.1.414/Telerik/slider-vs-right.gif | Bin 90 -> 0 bytes .../2011.1.414/Telerik/sprite-vertical.png | Bin 219 -> 0 bytes .../Content/2011.1.414/Telerik/sprite.png | Bin 5518 -> 0 bytes .../2011.1.414/Telerik/treeview-line.png | Bin 322 -> 0 bytes .../2011.1.414/Telerik/treeview-nodes-rtl.png | Bin 212 -> 0 bytes .../2011.1.414/Telerik/treeview-nodes.png | Bin 261 -> 0 bytes .../Content/2011.1.414/Vista/editor.png | Bin 2906 -> 0 bytes .../Content/2011.1.414/Vista/imagebrowser.png | Bin 4903 -> 0 bytes .../Content/2011.1.414/Vista/loading.gif | Bin 2055 -> 0 bytes .../2011.1.414/Vista/slider-h-both.gif | Bin 102 -> 0 bytes .../2011.1.414/Vista/slider-h-bottom.gif | Bin 96 -> 0 bytes .../Content/2011.1.414/Vista/slider-h-top.gif | Bin 96 -> 0 bytes .../2011.1.414/Vista/slider-hs-both.gif | Bin 92 -> 0 bytes .../2011.1.414/Vista/slider-hs-bottom.gif | Bin 90 -> 0 bytes .../2011.1.414/Vista/slider-hs-top.gif | Bin 90 -> 0 bytes .../2011.1.414/Vista/slider-v-both.gif | Bin 102 -> 0 bytes .../2011.1.414/Vista/slider-v-left.gif | Bin 96 -> 0 bytes .../2011.1.414/Vista/slider-v-right.gif | Bin 96 -> 0 bytes .../2011.1.414/Vista/slider-vs-both.gif | Bin 92 -> 0 bytes .../2011.1.414/Vista/slider-vs-left.gif | Bin 90 -> 0 bytes .../2011.1.414/Vista/slider-vs-right.gif | Bin 90 -> 0 bytes .../2011.1.414/Vista/sprite-vertical.png | Bin 253 -> 0 bytes .../Content/2011.1.414/Vista/sprite.png | Bin 5310 -> 0 bytes .../Content/2011.1.414/Web20/editor.png | Bin 2984 -> 0 bytes .../Content/2011.1.414/Web20/imagebrowser.png | Bin 4957 -> 0 bytes .../Content/2011.1.414/Web20/loading.gif | Bin 1263 -> 0 bytes .../2011.1.414/Web20/slider-h-both.gif | Bin 102 -> 0 bytes .../2011.1.414/Web20/slider-h-bottom.gif | Bin 96 -> 0 bytes .../Content/2011.1.414/Web20/slider-h-top.gif | Bin 96 -> 0 bytes .../2011.1.414/Web20/slider-hs-both.gif | Bin 92 -> 0 bytes .../2011.1.414/Web20/slider-hs-bottom.gif | Bin 90 -> 0 bytes .../2011.1.414/Web20/slider-hs-top.gif | Bin 90 -> 0 bytes .../2011.1.414/Web20/slider-v-both.gif | Bin 102 -> 0 bytes .../2011.1.414/Web20/slider-v-left.gif | Bin 96 -> 0 bytes .../2011.1.414/Web20/slider-v-right.gif | Bin 96 -> 0 bytes .../2011.1.414/Web20/slider-vs-both.gif | Bin 92 -> 0 bytes .../2011.1.414/Web20/slider-vs-left.gif | Bin 90 -> 0 bytes .../2011.1.414/Web20/slider-vs-right.gif | Bin 90 -> 0 bytes .../2011.1.414/Web20/sprite-vertical.png | Bin 219 -> 0 bytes .../Content/2011.1.414/Web20/sprite.png | Bin 5204 -> 0 bytes .../2011.1.414/Web20/treeview-line.png | Bin 322 -> 0 bytes .../2011.1.414/Web20/treeview-nodes-rtl.png | Bin 212 -> 0 bytes .../2011.1.414/Web20/treeview-nodes.png | Bin 261 -> 0 bytes .../Content/2011.1.414/WebBlue/editor.png | Bin 2998 -> 0 bytes .../2011.1.414/WebBlue/imagebrowser.png | Bin 4918 -> 0 bytes .../Content/2011.1.414/WebBlue/loading.gif | Bin 835 -> 0 bytes .../2011.1.414/WebBlue/slider-h-both.gif | Bin 98 -> 0 bytes .../2011.1.414/WebBlue/slider-h-bottom.gif | Bin 93 -> 0 bytes .../2011.1.414/WebBlue/slider-h-top.gif | Bin 93 -> 0 bytes .../2011.1.414/WebBlue/slider-hs-both.gif | Bin 92 -> 0 bytes .../2011.1.414/WebBlue/slider-hs-bottom.gif | Bin 90 -> 0 bytes .../2011.1.414/WebBlue/slider-hs-top.gif | Bin 90 -> 0 bytes .../2011.1.414/WebBlue/slider-v-both.gif | Bin 98 -> 0 bytes .../2011.1.414/WebBlue/slider-v-left.gif | Bin 93 -> 0 bytes .../2011.1.414/WebBlue/slider-v-right.gif | Bin 93 -> 0 bytes .../2011.1.414/WebBlue/slider-vs-both.gif | Bin 92 -> 0 bytes .../2011.1.414/WebBlue/slider-vs-left.gif | Bin 90 -> 0 bytes .../2011.1.414/WebBlue/slider-vs-right.gif | Bin 90 -> 0 bytes .../2011.1.414/WebBlue/sprite-vertical.png | Bin 214 -> 0 bytes .../Content/2011.1.414/WebBlue/sprite.png | Bin 5167 -> 0 bytes .../2011.1.414/WebBlue/treeview-line.png | Bin 322 -> 0 bytes .../2011.1.414/WebBlue/treeview-nodes-rtl.png | Bin 212 -> 0 bytes .../2011.1.414/WebBlue/treeview-nodes.png | Bin 261 -> 0 bytes .../Content/2011.1.414/Windows7/editor.png | Bin 2913 -> 0 bytes .../2011.1.414/Windows7/imagebrowser.png | Bin 4877 -> 0 bytes .../Content/2011.1.414/Windows7/loading.gif | Bin 2076 -> 0 bytes .../2011.1.414/Windows7/slider-h-both.gif | Bin 102 -> 0 bytes .../2011.1.414/Windows7/slider-h-bottom.gif | Bin 96 -> 0 bytes .../2011.1.414/Windows7/slider-h-top.gif | Bin 96 -> 0 bytes .../2011.1.414/Windows7/slider-hs-both.gif | Bin 92 -> 0 bytes .../2011.1.414/Windows7/slider-hs-bottom.gif | Bin 90 -> 0 bytes .../2011.1.414/Windows7/slider-hs-top.gif | Bin 90 -> 0 bytes .../2011.1.414/Windows7/slider-v-both.gif | Bin 102 -> 0 bytes .../2011.1.414/Windows7/slider-v-left.gif | Bin 96 -> 0 bytes .../2011.1.414/Windows7/slider-v-right.gif | Bin 96 -> 0 bytes .../2011.1.414/Windows7/slider-vs-both.gif | Bin 92 -> 0 bytes .../2011.1.414/Windows7/slider-vs-left.gif | Bin 90 -> 0 bytes .../2011.1.414/Windows7/slider-vs-right.gif | Bin 90 -> 0 bytes .../2011.1.414/Windows7/sprite-vertical.png | Bin 228 -> 0 bytes .../Content/2011.1.414/Windows7/sprite.png | Bin 5165 -> 0 bytes .../Content/2011.1.414/telerik.black.min.css | 1 - .../Content/2011.1.414/telerik.common.min.css | 1 - .../2011.1.414/telerik.default.min.css | 1 - .../Content/2011.1.414/telerik.forest.min.css | 1 - .../Content/2011.1.414/telerik.hay.min.css | 1 - .../2011.1.414/telerik.office2007.min.css | 1 - .../telerik.office2010black.min.css | 1 - .../2011.1.414/telerik.outlook.min.css | 1 - .../Content/2011.1.414/telerik.rtl.min.css | 1 - .../Content/2011.1.414/telerik.simple.min.css | 1 - .../2011.1.414/telerik.sitefinity.min.css | 1 - .../Content/2011.1.414/telerik.sunset.min.css | 1 - .../2011.1.414/telerik.telerik.min.css | 1 - .../Content/2011.1.414/telerik.vista.min.css | 1 - .../Content/2011.1.414/telerik.web20.min.css | 1 - .../2011.1.414/telerik.webblue.min.css | 1 - .../2011.1.414/telerik.windows7.min.css | 1 - NzbDrone.Web/Content/Settings.css | 2 +- NzbDrone.Web/NzbDrone.Web.csproj | 372 +- .../Scripts/2011.1.414/jquery-1.5.1.min.js | 16 - .../Scripts/2011.1.414/jquery.validate.min.js | 50 - .../2011.1.414/telerik.autocomplete.min.js | 1 - .../2011.1.414/telerik.calendar.min.js | 1 - .../2011.1.414/telerik.combobox.min.js | 1 - .../Scripts/2011.1.414/telerik.common.min.js | 1 - .../2011.1.414/telerik.datepicker.min.js | 1 - .../2011.1.414/telerik.datetimepicker.min.js | 1 - .../2011.1.414/telerik.draganddrop.min.js | 1 - .../Scripts/2011.1.414/telerik.editor.min.js | 1 - .../2011.1.414/telerik.grid.editing.min.js | 1 - .../2011.1.414/telerik.grid.filtering.min.js | 1 - .../2011.1.414/telerik.grid.grouping.min.js | 1 - .../Scripts/2011.1.414/telerik.grid.min.js | 1 - .../2011.1.414/telerik.grid.reordering.min.js | 1 - .../2011.1.414/telerik.grid.resizing.min.js | 1 - .../2011.1.414/telerik.imagebrowser.min.js | 1 - .../Scripts/2011.1.414/telerik.list.min.js | 1 - .../Scripts/2011.1.414/telerik.menu.min.js | 1 - .../2011.1.414/telerik.panelbar.min.js | 1 - .../Scripts/2011.1.414/telerik.slider.min.js | 1 - .../2011.1.414/telerik.splitter.min.js | 1 - .../2011.1.414/telerik.tabstrip.min.js | 1 - .../Scripts/2011.1.414/telerik.textbox.min.js | 1 - .../2011.1.414/telerik.timepicker.min.js | 1 - .../2011.1.414/telerik.treeview.min.js | 1 - .../Scripts/2011.1.414/telerik.upload.min.js | 1 - .../Scripts/2011.1.414/telerik.window.min.js | 1 - NzbDrone.Web/Scripts/MicrosoftAjax.debug.js | 7117 ---------- NzbDrone.Web/Scripts/MicrosoftAjax.js | 6 - .../Scripts/MicrosoftMvcAjax.debug.js | 408 - NzbDrone.Web/Scripts/MicrosoftMvcAjax.js | 25 - .../Scripts/MicrosoftMvcValidation.debug.js | 883 -- .../Scripts/MicrosoftMvcValidation.js | 55 - .../Scripts/{ => Plugins}/doTimeout.js | 0 .../{ => Plugins}/jquery-tgc-countdown-1.0.js | 0 .../Scripts/{ => Plugins}/jquery.form.js | 0 .../Scripts/{ => Plugins}/jquery.jgrowl.js | 0 .../{ => Plugins}/jquery.watermark.min.js | 0 NzbDrone.Web/Scripts/jquery-1.6.1-vsdoc.js | 6938 --------- NzbDrone.Web/Scripts/jquery-1.6.1.js | 8936 ------------ NzbDrone.Web/Scripts/jquery-1.6.1.min.js | 18 - .../Scripts/jquery-ui-1.8.5.custom.min.js | 66 - NzbDrone.Web/Scripts/jquery-ui-1.8.8.min.js | 404 - NzbDrone.Web/Scripts/jquery-ui.js | 11630 ---------------- NzbDrone.Web/Scripts/jquery-ui.min.js | 409 - NzbDrone.Web/Scripts/jquery.simpledropdown.js | 32 - .../Scripts/jquery.unobtrusive-ajax.js | 165 - .../Scripts/jquery.unobtrusive-ajax.min.js | 5 - NzbDrone.Web/Scripts/jquery.validate-vsdoc.js | 1292 -- NzbDrone.Web/Scripts/jquery.validate.js | 1155 -- NzbDrone.Web/Scripts/jquery.validate.min.js | 20 - .../Scripts/jquery.validate.unobtrusive.js | 319 - .../jquery.validate.unobtrusive.min.js | 5 - NzbDrone.Web/Views/Series/Index.cshtml | 2 - .../Views/Settings/EpisodeSorting.cshtml | 4 +- .../Views/Settings/Notifications.cshtml | 4 +- NzbDrone.Web/Views/Settings/Quality.cshtml | 2 +- NzbDrone.Web/Views/Shared/_Layout.cshtml | 19 +- 372 files changed, 20 insertions(+), 40382 deletions(-) delete mode 100644 NzbDrone.Web/Content/2011.1.414/Black/editor.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Black/imagebrowser.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Black/loading.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Black/slider-h-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Black/slider-h-bottom.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Black/slider-h-top.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Black/slider-hs-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Black/slider-hs-bottom.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Black/slider-hs-top.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Black/slider-v-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Black/slider-v-left.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Black/slider-v-right.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Black/slider-vs-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Black/slider-vs-left.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Black/slider-vs-right.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Black/sprite-vertical.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Black/sprite.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Black/treeview-line.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Black/treeview-nodes-rtl.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Black/treeview-nodes.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Default/editor.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Default/imagebrowser.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Default/loading.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Default/slider-h-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Default/slider-h-bottom.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Default/slider-h-top.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Default/slider-hs-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Default/slider-hs-bottom.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Default/slider-hs-top.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Default/slider-v-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Default/slider-v-left.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Default/slider-v-right.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Default/slider-vs-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Default/slider-vs-left.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Default/slider-vs-right.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Default/sprite-vertical.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Default/sprite.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Default/treeview-line.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Default/treeview-nodes-rtl.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Default/treeview-nodes.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Forest/editor.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Forest/imagebrowser.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Forest/loading.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Forest/slider-h-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Forest/slider-h-bottom.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Forest/slider-h-top.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Forest/slider-hs-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Forest/slider-hs-bottom.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Forest/slider-hs-top.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Forest/slider-v-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Forest/slider-v-left.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Forest/slider-v-right.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Forest/slider-vs-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Forest/slider-vs-left.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Forest/slider-vs-right.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Forest/sprite-vertical.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Forest/sprite.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Forest/treeview-line.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Forest/treeview-nodes-rtl.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Forest/treeview-nodes.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Hay/editor.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Hay/imagebrowser.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Hay/loading.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Hay/slider-h-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Hay/slider-h-bottom.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Hay/slider-h-top.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Hay/slider-hs-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Hay/slider-hs-bottom.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Hay/slider-hs-top.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Hay/slider-v-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Hay/slider-v-left.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Hay/slider-v-right.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Hay/slider-vs-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Hay/slider-vs-left.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Hay/slider-vs-right.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Hay/sprite-vertical.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Hay/sprite.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Hay/treeview-line.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Hay/treeview-nodes-rtl.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Hay/treeview-nodes.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2007/editor.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2007/imagebrowser.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2007/loading.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2007/slider-h-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2007/slider-h-bottom.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2007/slider-h-top.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2007/slider-hs-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2007/slider-hs-bottom.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2007/slider-hs-top.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2007/slider-v-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2007/slider-v-left.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2007/slider-v-right.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2007/slider-vs-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2007/slider-vs-left.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2007/slider-vs-right.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2007/sprite-vertical.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2007/sprite.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2007/treeview-line.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2007/treeview-nodes-rtl.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2007/treeview-nodes.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2010Black/editor.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2010Black/imagebrowser.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2010Black/loading.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2010Black/slider-h-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2010Black/slider-h-bottom.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2010Black/slider-h-top.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2010Black/slider-hs-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2010Black/slider-hs-bottom.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2010Black/slider-hs-top.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2010Black/slider-v-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2010Black/slider-v-left.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2010Black/slider-v-right.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2010Black/slider-vs-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2010Black/slider-vs-left.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2010Black/slider-vs-right.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2010Black/sprite-vertical.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2010Black/sprite.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2010Black/treeview-line.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2010Black/treeview-nodes-rtl.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Office2010Black/treeview-nodes.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Outlook/editor.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Outlook/imagebrowser.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Outlook/loading.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Outlook/slider-h-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Outlook/slider-h-bottom.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Outlook/slider-h-top.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Outlook/slider-hs-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Outlook/slider-hs-bottom.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Outlook/slider-hs-top.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Outlook/slider-v-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Outlook/slider-v-left.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Outlook/slider-v-right.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Outlook/slider-vs-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Outlook/slider-vs-left.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Outlook/slider-vs-right.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Outlook/sprite-vertical.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Outlook/sprite.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Outlook/treeview-line.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Outlook/treeview-nodes-rtl.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Outlook/treeview-nodes.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Simple/editor.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Simple/imagebrowser.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Simple/loading.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Simple/slider-h-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Simple/slider-h-bottom.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Simple/slider-h-top.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Simple/slider-hs-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Simple/slider-hs-bottom.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Simple/slider-hs-top.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Simple/slider-v-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Simple/slider-v-left.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Simple/slider-v-right.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Simple/slider-vs-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Simple/slider-vs-left.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Simple/slider-vs-right.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Simple/sprite-vertical.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Simple/sprite.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Simple/treeview-line.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Simple/treeview-nodes-rtl.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Simple/treeview-nodes.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sitefinity/editor.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sitefinity/imagebrowser.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sitefinity/loading.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sitefinity/slider-h-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sitefinity/slider-h-bottom.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sitefinity/slider-h-top.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sitefinity/slider-hs-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sitefinity/slider-hs-bottom.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sitefinity/slider-hs-top.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sitefinity/slider-v-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sitefinity/slider-v-left.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sitefinity/slider-v-right.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sitefinity/slider-vs-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sitefinity/slider-vs-left.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sitefinity/slider-vs-right.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sitefinity/sprite-vertical.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sitefinity/sprite.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sitefinity/treeview-line.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sitefinity/treeview-nodes-rtl.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sitefinity/treeview-nodes.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sunset/editor.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sunset/imagebrowser.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sunset/loading.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sunset/slider-h-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sunset/slider-h-bottom.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sunset/slider-h-top.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sunset/slider-hs-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sunset/slider-hs-bottom.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sunset/slider-hs-top.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sunset/slider-v-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sunset/slider-v-left.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sunset/slider-v-right.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sunset/slider-vs-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sunset/slider-vs-left.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sunset/slider-vs-right.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sunset/sprite-vertical.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sunset/sprite.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sunset/treeview-line.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sunset/treeview-nodes-rtl.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Sunset/treeview-nodes.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Telerik/editor.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Telerik/imagebrowser.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Telerik/loading.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Telerik/slider-h-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Telerik/slider-h-bottom.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Telerik/slider-h-top.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Telerik/slider-hs-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Telerik/slider-hs-bottom.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Telerik/slider-hs-top.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Telerik/slider-v-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Telerik/slider-v-left.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Telerik/slider-v-right.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Telerik/slider-vs-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Telerik/slider-vs-left.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Telerik/slider-vs-right.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Telerik/sprite-vertical.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Telerik/sprite.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Telerik/treeview-line.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Telerik/treeview-nodes-rtl.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Telerik/treeview-nodes.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Vista/editor.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Vista/imagebrowser.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Vista/loading.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Vista/slider-h-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Vista/slider-h-bottom.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Vista/slider-h-top.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Vista/slider-hs-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Vista/slider-hs-bottom.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Vista/slider-hs-top.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Vista/slider-v-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Vista/slider-v-left.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Vista/slider-v-right.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Vista/slider-vs-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Vista/slider-vs-left.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Vista/slider-vs-right.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Vista/sprite-vertical.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Vista/sprite.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Web20/editor.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Web20/imagebrowser.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Web20/loading.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Web20/slider-h-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Web20/slider-h-bottom.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Web20/slider-h-top.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Web20/slider-hs-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Web20/slider-hs-bottom.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Web20/slider-hs-top.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Web20/slider-v-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Web20/slider-v-left.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Web20/slider-v-right.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Web20/slider-vs-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Web20/slider-vs-left.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Web20/slider-vs-right.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Web20/sprite-vertical.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Web20/sprite.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Web20/treeview-line.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Web20/treeview-nodes-rtl.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Web20/treeview-nodes.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/WebBlue/editor.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/WebBlue/imagebrowser.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/WebBlue/loading.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/WebBlue/slider-h-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/WebBlue/slider-h-bottom.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/WebBlue/slider-h-top.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/WebBlue/slider-hs-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/WebBlue/slider-hs-bottom.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/WebBlue/slider-hs-top.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/WebBlue/slider-v-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/WebBlue/slider-v-left.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/WebBlue/slider-v-right.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/WebBlue/slider-vs-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/WebBlue/slider-vs-left.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/WebBlue/slider-vs-right.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/WebBlue/sprite-vertical.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/WebBlue/sprite.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/WebBlue/treeview-line.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/WebBlue/treeview-nodes-rtl.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/WebBlue/treeview-nodes.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Windows7/editor.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Windows7/imagebrowser.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Windows7/loading.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Windows7/slider-h-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Windows7/slider-h-bottom.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Windows7/slider-h-top.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Windows7/slider-hs-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Windows7/slider-hs-bottom.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Windows7/slider-hs-top.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Windows7/slider-v-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Windows7/slider-v-left.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Windows7/slider-v-right.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Windows7/slider-vs-both.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Windows7/slider-vs-left.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Windows7/slider-vs-right.gif delete mode 100644 NzbDrone.Web/Content/2011.1.414/Windows7/sprite-vertical.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/Windows7/sprite.png delete mode 100644 NzbDrone.Web/Content/2011.1.414/telerik.black.min.css delete mode 100644 NzbDrone.Web/Content/2011.1.414/telerik.common.min.css delete mode 100644 NzbDrone.Web/Content/2011.1.414/telerik.default.min.css delete mode 100644 NzbDrone.Web/Content/2011.1.414/telerik.forest.min.css delete mode 100644 NzbDrone.Web/Content/2011.1.414/telerik.hay.min.css delete mode 100644 NzbDrone.Web/Content/2011.1.414/telerik.office2007.min.css delete mode 100644 NzbDrone.Web/Content/2011.1.414/telerik.office2010black.min.css delete mode 100644 NzbDrone.Web/Content/2011.1.414/telerik.outlook.min.css delete mode 100644 NzbDrone.Web/Content/2011.1.414/telerik.rtl.min.css delete mode 100644 NzbDrone.Web/Content/2011.1.414/telerik.simple.min.css delete mode 100644 NzbDrone.Web/Content/2011.1.414/telerik.sitefinity.min.css delete mode 100644 NzbDrone.Web/Content/2011.1.414/telerik.sunset.min.css delete mode 100644 NzbDrone.Web/Content/2011.1.414/telerik.telerik.min.css delete mode 100644 NzbDrone.Web/Content/2011.1.414/telerik.vista.min.css delete mode 100644 NzbDrone.Web/Content/2011.1.414/telerik.web20.min.css delete mode 100644 NzbDrone.Web/Content/2011.1.414/telerik.webblue.min.css delete mode 100644 NzbDrone.Web/Content/2011.1.414/telerik.windows7.min.css delete mode 100644 NzbDrone.Web/Scripts/2011.1.414/jquery-1.5.1.min.js delete mode 100644 NzbDrone.Web/Scripts/2011.1.414/jquery.validate.min.js delete mode 100644 NzbDrone.Web/Scripts/2011.1.414/telerik.autocomplete.min.js delete mode 100644 NzbDrone.Web/Scripts/2011.1.414/telerik.calendar.min.js delete mode 100644 NzbDrone.Web/Scripts/2011.1.414/telerik.combobox.min.js delete mode 100644 NzbDrone.Web/Scripts/2011.1.414/telerik.common.min.js delete mode 100644 NzbDrone.Web/Scripts/2011.1.414/telerik.datepicker.min.js delete mode 100644 NzbDrone.Web/Scripts/2011.1.414/telerik.datetimepicker.min.js delete mode 100644 NzbDrone.Web/Scripts/2011.1.414/telerik.draganddrop.min.js delete mode 100644 NzbDrone.Web/Scripts/2011.1.414/telerik.editor.min.js delete mode 100644 NzbDrone.Web/Scripts/2011.1.414/telerik.grid.editing.min.js delete mode 100644 NzbDrone.Web/Scripts/2011.1.414/telerik.grid.filtering.min.js delete mode 100644 NzbDrone.Web/Scripts/2011.1.414/telerik.grid.grouping.min.js delete mode 100644 NzbDrone.Web/Scripts/2011.1.414/telerik.grid.min.js delete mode 100644 NzbDrone.Web/Scripts/2011.1.414/telerik.grid.reordering.min.js delete mode 100644 NzbDrone.Web/Scripts/2011.1.414/telerik.grid.resizing.min.js delete mode 100644 NzbDrone.Web/Scripts/2011.1.414/telerik.imagebrowser.min.js delete mode 100644 NzbDrone.Web/Scripts/2011.1.414/telerik.list.min.js delete mode 100644 NzbDrone.Web/Scripts/2011.1.414/telerik.menu.min.js delete mode 100644 NzbDrone.Web/Scripts/2011.1.414/telerik.panelbar.min.js delete mode 100644 NzbDrone.Web/Scripts/2011.1.414/telerik.slider.min.js delete mode 100644 NzbDrone.Web/Scripts/2011.1.414/telerik.splitter.min.js delete mode 100644 NzbDrone.Web/Scripts/2011.1.414/telerik.tabstrip.min.js delete mode 100644 NzbDrone.Web/Scripts/2011.1.414/telerik.textbox.min.js delete mode 100644 NzbDrone.Web/Scripts/2011.1.414/telerik.timepicker.min.js delete mode 100644 NzbDrone.Web/Scripts/2011.1.414/telerik.treeview.min.js delete mode 100644 NzbDrone.Web/Scripts/2011.1.414/telerik.upload.min.js delete mode 100644 NzbDrone.Web/Scripts/2011.1.414/telerik.window.min.js delete mode 100644 NzbDrone.Web/Scripts/MicrosoftAjax.debug.js delete mode 100644 NzbDrone.Web/Scripts/MicrosoftAjax.js delete mode 100644 NzbDrone.Web/Scripts/MicrosoftMvcAjax.debug.js delete mode 100644 NzbDrone.Web/Scripts/MicrosoftMvcAjax.js delete mode 100644 NzbDrone.Web/Scripts/MicrosoftMvcValidation.debug.js delete mode 100644 NzbDrone.Web/Scripts/MicrosoftMvcValidation.js rename NzbDrone.Web/Scripts/{ => Plugins}/doTimeout.js (100%) rename NzbDrone.Web/Scripts/{ => Plugins}/jquery-tgc-countdown-1.0.js (100%) rename NzbDrone.Web/Scripts/{ => Plugins}/jquery.form.js (100%) rename NzbDrone.Web/Scripts/{ => Plugins}/jquery.jgrowl.js (100%) rename NzbDrone.Web/Scripts/{ => Plugins}/jquery.watermark.min.js (100%) delete mode 100644 NzbDrone.Web/Scripts/jquery-1.6.1-vsdoc.js delete mode 100644 NzbDrone.Web/Scripts/jquery-1.6.1.js delete mode 100644 NzbDrone.Web/Scripts/jquery-1.6.1.min.js delete mode 100644 NzbDrone.Web/Scripts/jquery-ui-1.8.5.custom.min.js delete mode 100644 NzbDrone.Web/Scripts/jquery-ui-1.8.8.min.js delete mode 100644 NzbDrone.Web/Scripts/jquery-ui.js delete mode 100644 NzbDrone.Web/Scripts/jquery-ui.min.js delete mode 100644 NzbDrone.Web/Scripts/jquery.simpledropdown.js delete mode 100644 NzbDrone.Web/Scripts/jquery.unobtrusive-ajax.js delete mode 100644 NzbDrone.Web/Scripts/jquery.unobtrusive-ajax.min.js delete mode 100644 NzbDrone.Web/Scripts/jquery.validate-vsdoc.js delete mode 100644 NzbDrone.Web/Scripts/jquery.validate.js delete mode 100644 NzbDrone.Web/Scripts/jquery.validate.min.js delete mode 100644 NzbDrone.Web/Scripts/jquery.validate.unobtrusive.js delete mode 100644 NzbDrone.Web/Scripts/jquery.validate.unobtrusive.min.js diff --git a/NzbDrone.Web/Content/2011.1.414/Black/editor.png b/NzbDrone.Web/Content/2011.1.414/Black/editor.png deleted file mode 100644 index 456f9c51871269e844af4beb056bbf8a7376504f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2873 zcmd^>`#;kU8^%XYt(75i=qrq24vkqRhbAM(EQc_aQL{O(kTV~OlF@{k4s2pMgeg38 z$_IT#QLB*h#GVcsU$LYpvd8mxJogXxef@I(a=otW^?K(Mj~>|x)r3MIkezO>1Rn@Q zim|2D6t->cPcgxBTSp_oIWWODE<7PA^c)4^cqT54qT?15N~QQvLeHd}9j4epAlo2B zPd{f0h2rDmqphvo*VmVuo12-L`S9UG2M34L)YRnUWPN>oDwQfDBcq_80Efd>RaMi| z(_t`}j*bomy?roadGkX_O`^@pv*AR($YposIaipd-m*sLZP;{wi+55Dk>_b zrlyLDibh685{U$fL@FyQ=j7xd5C~USS5Hq*5{cyO?98kcT)K4W`}gm=cI`4TF~J7{ zWU|1*!Xhy-adL7}vL>Me?3tMvHeX=j78)5DIW#o1xh6rQ(Qa;TgM)+DuU{{&f2D71 zP9_67ct9)`8ylm_%gaMUL!+akdwP26>gost!hr(^tgNiWV#&(N%8M5-;Ar~UvuF43 z-yatjheDxjY;5pEa#>j!od&eEwE-;9+S*#YCg~fUzi{Eg@bK`#g9jIWY{GE>kH;e? zv(?qrIUG)9WhD-WYiVg=vcaOFqTb$K0U5ozx=O#y({TklJ39*t3ynVl^H#IdiEiEmDLNS-iJ$34oKq$7ev%_Ms025@^ zf`UmgoyG$$GkHUj`T6;^wKbtg%wRCGv$OT|^q5R$M@NUhzdsKYuz3OrNEb{B(XId* zPpqk_A=23(Q3n8k`uch{UpPBE8y_Dp5C{cC9UUA%2Y5`jKrkfu_3Iar#I>rkB`%nnMp}W0RaI#zK{nB=>U^V zW3s!~1Ol-x(!6{0vo$eND3bUDoqqD}TXAvm@;@RgYrCkZXy%p`Y@S2}IyxS1Zf+*i znUc+pf^M zJv6OIz7`$&%3%r@DK*F8jd&Ru0-h4lCyUBau$*sSjCr57)I)v$t|z!F>Fa~E)z80U zKk<`puy&6GOf5?srr-ZrT7I-Ty>w_=qN}U*xkAb9qq0>$t<<(3^i!YUYZG_#uSqU% zub%!RU1-vH5z(^o<=N(>0SV zEDMQT>?rX5eh=K&)_K%JhXl<--8*ts`_$OcP-M4F-QkJsb5}p;en6L1ss0lkJuvd7 zOC8|CT^`cN^JMkyRbE%}3}p9INFn&s?>*a3&tGeKVp{Ha{q)?6$`YfXUi2B#pm{m; z!tV5_;l~;?pgSwQCGO2^oSG~Gy)klCik`Z=Kg`i{NYt_sk-l$lE`~y9SlvXR7darLDe^EKi7B< zi$&5;KKpaGM{j^3RkG0?VqS)EU}H1~^m<&9UR`s)of%dABQWzx(bXf)qm^{gt14#$ z1=y0Avg^Q&dlB+M32!^-(|1qqOTp>&HyN!Z>k zB-2*yTRVbG?^O06ZPPxC8h53jxj`kP4v;l*UYibgM=1wZK#!%Yj9nx|;YA&{IkV(i z)cVTYX>R{mN^;5ELF$V9oqM)MA%N0OUlYYxE^VI))3@v;pth49IjQCSkHa zHa;=mfgYk*c6d&=*A)dp_c~}wU+)uEqtS5@_Q!VxnPz;S8g2+^h}}dp6rGkYz1;&K zW7XLSk9D3#F;?!;x_JcZ(z zh-kySzuFB^oTdBu&2rwGo4(^a?9>S_+en8odx3!D?9=IMor)1^X9#O)Kk6{(5x&92 zGE~mL+9-z_x{D3k{VWP~NFn4G)MWT1X(u!?eh_&1rT-HKU(r0a<$#9SCE33-!aMp{ zlaI1a3$91ZVyIV86`nsDRM!*?C_N2M0J=m#t(H?pp^)t-PdN|xeOLdm|aOZ+K zqChlJV&fDTH{Bu~@b05V7Sg>cO+P{Zc1Pq_wDN4PTDNtt-TdRc;kO!lVdZw!DYvpO za8+~q-8L%Ha$lPcEv4o|!wLsFPay1eZAXtrm=&|AX(?~kaWeei*;EvD3tA>X=xqmC z&U3CPUP*0`8+7vfm+MC|z76ItGz8eFLkBAHTyS^Z6ogTVu%fAb3ahVw&owxS zSbI4px6h*oaZtCt)i%p$<5hGE>W-bn0HamEw5s`j8r+R` diff --git a/NzbDrone.Web/Content/2011.1.414/Black/imagebrowser.png b/NzbDrone.Web/Content/2011.1.414/Black/imagebrowser.png deleted file mode 100644 index 4b723a2f4dd5ab15cf42be72d839c0441621ad41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4863 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 diff --git a/NzbDrone.Web/Content/2011.1.414/Black/loading.gif b/NzbDrone.Web/Content/2011.1.414/Black/loading.gif deleted file mode 100644 index 1079b7a965a0956ede6840081a377367f8a3b1c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1093 zcmZ?wbhEHb6krfwxXQpV<)~s05bafL0ivynEo&94foQ2>F%ZpB%m$(u~hCt*bplQXSX~>}nM4B9uiX4)X90EWj zz`-HFzyTyV7#M(vf#LuE{~(HDp!lEL&ow02*)hP?NY8+o5on;|PZm~I1`P%skl`S2 zGO#5&OeyHFn%m*A=;90+qv`I;iXwZ0=7uYZXwDV#UiwU+hpW{^$?(>n%=#nqcCa74 z+0iQX`+}3F(=QhhL4IBrb{>8~7l9T|4JHN+7ET^M58gf&Mg~R=w!S2$*>lUCXZt!L z+sXvAlMiTXxWg0!6(OnqHMZ%@3$|;41Uqez(qp8}7hfhOPN-nI~Q(RikH*2N`R=XlVc6pg}cq}~l!($N> z{%hWEmF&FzOCSc<>3cUlF=sqA-Ea?NES? z5ML*o;3QuG-iPc)i`>j^Ih{Fbxg{ZB_MWzNCyQ+wa@wzyRcdX_E(ibhsUEMGd%b#r9_T)IB+tZ=x?9w=-79Sp+SSI((H&fgSSlU zr0hp8pU4RDtoXU7&Ot?}s>F}Cg}1V)R6wA}Pgdh?{FI=wE?~*dlVV)AoE;PR z+!^0BSatEaOMDUF6gYAMK*>C7p0mwL0%2!dPWa< XSq)JE-V&znV3CQOh5YTFjttfSF{3Q9 diff --git a/NzbDrone.Web/Content/2011.1.414/Black/slider-h-both.gif b/NzbDrone.Web/Content/2011.1.414/Black/slider-h-both.gif deleted file mode 100644 index 232f90be8f5cb4a123923f6ba99f2147578a8f4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98 zcmZ?wbhEHbWMq(F*v!BX5D?JW*;!j#+tSjKl9EzdS{fP}nv;_g6BG0Q|9=Jyp!k!8 ik%57eK?fuQGJ}DIUqHgePf+>g+QR}z9TnVI7_0#+`xj&Y diff --git a/NzbDrone.Web/Content/2011.1.414/Black/slider-h-bottom.gif b/NzbDrone.Web/Content/2011.1.414/Black/slider-h-bottom.gif deleted file mode 100644 index ee02b418a3d5f950b40ba61b0abb3036717df7d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93 zcmZ?wbhEHbWMq(F*v!CCTU*=G(vp&rQd(LX8XDT!*_o4*6B85j|NnmmY(ViR3nK#q a2ZIhs5@ZGg3zxu2Pi-wm9%a5x25SI~V-w{7 diff --git a/NzbDrone.Web/Content/2011.1.414/Black/slider-h-top.gif b/NzbDrone.Web/Content/2011.1.414/Black/slider-h-top.gif deleted file mode 100644 index 4de0f2760e94917078028a4a49bd4da9c6b7e6ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93 zcmZ?wbhEHbWMq(F*v!CCTU#3t5YW=nl9G~AT3Q+!8k&=n6B85j|NnmmY(ViR3nK#q a2ZIhs5@ZGg3zxwZV;)APmuIcJ7_0$f-4uNQ diff --git a/NzbDrone.Web/Content/2011.1.414/Black/slider-hs-both.gif b/NzbDrone.Web/Content/2011.1.414/Black/slider-hs-both.gif deleted file mode 100644 index 51572053628066f4040b26a688d78667fd1f61d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 92 zcmZ?wbhEHbWMmLv*v!BX5D?JW*;!j#+tSjKl9EzdS{fP}nv;_g6BG0Q|9=Jyp!k!8 ck%57eK?fuQGJ}DIQ($87q`hHNoRt`?0i|>n82|tP diff --git a/NzbDrone.Web/Content/2011.1.414/Black/slider-hs-bottom.gif b/NzbDrone.Web/Content/2011.1.414/Black/slider-hs-bottom.gif deleted file mode 100644 index 4813fd384d7c2dd668eedc260d40c4026ad5aacf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90 zcmZ?wbhEHbWMmLv*v!CCTU*=G(vp&rQd(LX8XDT!*_o4*6B85j|NnmmY(ViR3nK#q X2ZIhs5@ZGg3%kHcPgMyw7Y1tpP%#sI diff --git a/NzbDrone.Web/Content/2011.1.414/Black/slider-hs-top.gif b/NzbDrone.Web/Content/2011.1.414/Black/slider-hs-top.gif deleted file mode 100644 index 7f584111b788b08ac490f4f92d959412e835e44e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90 zcmZ?wbhEHbWMmLv*v!CCTU#3t5YW=nl9G~AT3Q+!8k&=n6B85j|NnmmY(ViR3nK#q Y2ZIhs5@ZGg3;PEi=LvgnxG`7*04+xplK=n! diff --git a/NzbDrone.Web/Content/2011.1.414/Black/slider-v-both.gif b/NzbDrone.Web/Content/2011.1.414/Black/slider-v-both.gif deleted file mode 100644 index e9d26688bbda0ea9a0680596f96bf1f7e97c23f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98 zcmZ?wbhEHblwe?F*v!BX5D?JW*;!j#+tSjKl9EzdS{fP}nv;_g6BG0Q|9=Jyp!k!8 ik%57eK?fuQGJ}DIUqHgePf+>g+QR}z9TnVI7_0#-R~KXe diff --git a/NzbDrone.Web/Content/2011.1.414/Black/slider-v-left.gif b/NzbDrone.Web/Content/2011.1.414/Black/slider-v-left.gif deleted file mode 100644 index 303b45a47e22e8e7427ae4388d41ca45cf459ef5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93 zcmZ?wbhEHblwe?F*v!CCTU#3t5YW=nl9G~AT3Q+!8k&=n6B85j|NnmmY(ViR3nK#q a2ZIhs5@ZGg3zxwZV;)APmuIcJ7_0$gITU>W diff --git a/NzbDrone.Web/Content/2011.1.414/Black/slider-v-right.gif b/NzbDrone.Web/Content/2011.1.414/Black/slider-v-right.gif deleted file mode 100644 index 347349384a331db3cca0cf85f5a093e52c7d060c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93 zcmZ?wbhEHblwe?F*v!CCTU*=G(vp&rQd(LX8XDT!*_o4*6B85j|NnmmY(ViR3nK#q a2ZIhs5@ZGg3zxu2Pi-wm9%a5x25SI~zZ2yE diff --git a/NzbDrone.Web/Content/2011.1.414/Black/slider-vs-both.gif b/NzbDrone.Web/Content/2011.1.414/Black/slider-vs-both.gif deleted file mode 100644 index 20d90e19342b6167da5ff5e4f811b28f87d6372d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 92 zcmZ?wbhEHb6kuRv*v!BX5D?JW*;!j#+tSjKl9EzdS{fP}nv;_g6BG0Q|9=Jyp!k!8 ck%57eK?fuQGJ}DIQ($87q`hHNoRt`?0j01O82|tP diff --git a/NzbDrone.Web/Content/2011.1.414/Black/slider-vs-left.gif b/NzbDrone.Web/Content/2011.1.414/Black/slider-vs-left.gif deleted file mode 100644 index ba4966bf7b99690a30ac18203d0262b4f6c3c660..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90 zcmZ?wbhEHb6kuRv*v!CCTU#3t5YW=nl9G~AT3Q+!8k&=n6B85j|NnmmY(ViR3nK#q Y2ZIhs5@ZGg3;PEi=LvgnxG`7*04;+QlK=n! diff --git a/NzbDrone.Web/Content/2011.1.414/Black/slider-vs-right.gif b/NzbDrone.Web/Content/2011.1.414/Black/slider-vs-right.gif deleted file mode 100644 index 88bf21c0b419907c9e902c15c553cf19af3922cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90 zcmZ?wbhEHb6kuRv*v!CCTU*=G(vp&rQd(LX8XDT!*_o4*6B85j|NnmmY(ViR3nK#q X2ZIhs5@ZGg3%kHcPgMyw7Y1tpP;C=^ diff --git a/NzbDrone.Web/Content/2011.1.414/Black/sprite-vertical.png b/NzbDrone.Web/Content/2011.1.414/Black/sprite-vertical.png deleted file mode 100644 index 6754eee18db1b1bd1bbe2129847c4334a9476db6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^(m*W0!3-oXoc*!{NJ*BsMwA5SrM32_w?5=xsOs-&cJnt@^7Elt-H4kIHYR#sLnE^ZYS zRW>%Z6$}jj)zqY=Wu&B}OiWCKgoOV~NVM-!^ziWD|SP^`5UXr_** zi(^Q|tt5fR0uP>w2qz0BrHBeY6Mrh4_&g~g>9L?l`m;2NsnTDH7#P_YPM;G^TyVm_ Q5U7vA)78&qol`;+05)hnD*ylh diff --git a/NzbDrone.Web/Content/2011.1.414/Black/sprite.png b/NzbDrone.Web/Content/2011.1.414/Black/sprite.png deleted file mode 100644 index 824376232ecb9db5fd94e1e3e9cb17ad7e1bbbbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5723 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 LtDnm{r-UW|OoV0x diff --git a/NzbDrone.Web/Content/2011.1.414/Black/treeview-nodes-rtl.png b/NzbDrone.Web/Content/2011.1.414/Black/treeview-nodes-rtl.png deleted file mode 100644 index 5f249c633b3c26a36c00e5ee617eade4e5eb5110..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^!a$tI!3-on8QpjYq$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~-c6|n{Qgt(@pqyU-kzPLsKDW;Mjzu^B2Pq!O*0eQxrE{-7; zw~`W$u<$qs_B0AIc3!q#m1nR*+4f#r_YIHk?GG2_Etxv`uv1TB$lVD+>;ef4>a*Ct U?7GpF1=P;q>FVdQ&MBb@0D=ZN*#H0l diff --git a/NzbDrone.Web/Content/2011.1.414/Black/treeview-nodes.png b/NzbDrone.Web/Content/2011.1.414/Black/treeview-nodes.png deleted file mode 100644 index f498056630bde2eb861d2d5cc257e92582bc5436..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^c_7Te3?x6cUONe-BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrH1%aR&H=xTd6}q^70vjS4gB|(0{|Nk>wKgH_^uT7z226kuFjgi zNjpK@+D6T~>`m0oyHmqkw~F!c@x6O%TlPlm@ub+q-7?kFcV3>kDS5f^!v_x@TzfEY zu6Fu=&wfsJ_Ul68Z*JsfPJeS_ruEH}eX*C%*|175?2wPs>zddm2y_mEr>mdKI;Vst E0JchFCIA2c diff --git a/NzbDrone.Web/Content/2011.1.414/Default/editor.png b/NzbDrone.Web/Content/2011.1.414/Default/editor.png deleted file mode 100644 index 311414557f9a7191fdcf1985221119f538099bd6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2877 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 diff --git a/NzbDrone.Web/Content/2011.1.414/Default/loading.gif b/NzbDrone.Web/Content/2011.1.414/Default/loading.gif deleted file mode 100644 index 67065a6307b5fd784c2ce8ef042ba741891602ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1517 zcmd7R-A_|z90%~4?b0`VH&M}vh@xhk z=i!{^2o!{&QVa@$C@8|FLKdUZxkba&#Vpx;Nw#dvo9Qlgw<~svS+eOru;=Ev{p9=o zeWRif2-c)SI=ldwot+&YAHQFoRuA|HRWI{ab8 zU*t1Vx_0Sb^GqiFFHFjlH9>0QrywJsC`_Q9J6N=hok#$%)1W{X9b8XTo>&|j#wG^Hv$l%1)DD|t?FF^()H^lcD|S;%#M zr*ajr!p9as&f;4ozkYTLd7ljZhw)D=b#t)@ydI0B_%#%bffVI^U^i<*R0L67M8}(t zBm24Pb7WO`M5ch}L!oojB*lHnU7vzrV9aR5r6rm$#pW0G4v|_2E;bkPeT$S3s^;~L5LBV4?$H+n_uLm?;33e_BMMBd)#-)@?4_VoSWlhu<^k|*|mgmKspU3!voAL z1iS4f7!B7l(rC*)+4__E2Ilp#)X$|-!Re`#2RU9t@B5%E!09B-!xj}oH-xJ}zy-Zt z+#^IuzDE;ccxi4sk|bE-bh;)bF)A=$Gn4%NxWh3i7j~ir8JgKnGSaPd`*UP_W&tDh z5a?f0W`27Crr%%5hL_|mO7c!#7vy1e%6p1eLyKLI=Vp@}vXEJv0|n}eavhrOV4S#2 zw~{P}Hik1Y;;5<$tkyK!R5haS(o@1c0W6j&ITphyCQX!x$!MT(VMzD^J*A!_mp>FC zGuRC7(uaS(1xXI5b}kbKqeI?RoEoy)AhQ+n3dnrgnhx3OvV0wBwj^-gKoJ?zSTCMu zilfppFc^%+tL1?}kh()%<-XzI&Q&=Sn#NU+P)va8X*Unz_tT3CdGT3v+U4VC9)ths z>(Q9s81dX_Kp!i??0p-hP#WWmPr&lL&vCxn z?YSH=J%@I^cQlk?Td2@I!G*yZ07Kv? A?f?J) diff --git a/NzbDrone.Web/Content/2011.1.414/Default/slider-h-bottom.gif b/NzbDrone.Web/Content/2011.1.414/Default/slider-h-bottom.gif deleted file mode 100644 index e46ce524ef1dbc9a95ef346bbeab08c703c7f46a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96 zcmZ?wbhEHbWMq(I*v!Ci<;s=m)2DCTxN+jdi7QsDm_L7hPfyR`!-sF(y0vT9t}|!O q{Qv)-0SPGnWMO1r;AYSPiGj>uVBsw|>8Wk1ETVKNkU@x%!5RR)&>@om diff --git a/NzbDrone.Web/Content/2011.1.414/Default/slider-h-top.gif b/NzbDrone.Web/Content/2011.1.414/Default/slider-h-top.gif deleted file mode 100644 index ef76ca58ddbd2577996f475218109f8e2b6d0a25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96 zcmZ?wbhEHbWMq(I*v!Ci<;s=m)2DCTxN+jdi7QsDxPSlt{Q2__A3l8R)~#K;cAYtM r=Kufy3`junCkrD312=;XNDO2K0}Jm4g#~^>M_M-S`u{+jk--`O6agib diff --git a/NzbDrone.Web/Content/2011.1.414/Default/slider-hs-both.gif b/NzbDrone.Web/Content/2011.1.414/Default/slider-hs-both.gif deleted file mode 100644 index ff85fa71d808704b6019b2e377c97275b8f0d509..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 92 zcmZ?wbhEHbWMmLv*v!Ci|Ni}+o}MdLu1udkedETB6DLkwv0}yi`STASK78xetzElz pojG&n|Ns9CFrfI8g^_`Qhd~D<05XGtg)=~~c*fo`8D}L1YXGY7BftOv diff --git a/NzbDrone.Web/Content/2011.1.414/Default/slider-hs-bottom.gif b/NzbDrone.Web/Content/2011.1.414/Default/slider-hs-bottom.gif deleted file mode 100644 index 4ed265846b8527925ff61292de9e0c2516ed4d48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90 zcmZ?wbhEHbWMmLv*v!Ci<;s=m)2DCTxN+jdi7QsDm_L7hPfyR`!-sF(y0vT9t}|!O k{Qv)-0SPGnWMO1r;AYSPiGj>uU|}yf>6xnG;=*7J0P%GomjD0& diff --git a/NzbDrone.Web/Content/2011.1.414/Default/slider-hs-top.gif b/NzbDrone.Web/Content/2011.1.414/Default/slider-hs-top.gif deleted file mode 100644 index 7d8dbde5e50205ace62f2e6427cd6c133385c387..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90 zcmZ?wbhEHbWMmLv*v!Ci<;s=m)2DCTxN+jdi7QsDxPSlt{Q2__A3l8R)~#K;cAYtM k=Kufy3`junCkrD312=;XNDO2K0}HzWXVSF2H{2Mk0V@I`1poj5 diff --git a/NzbDrone.Web/Content/2011.1.414/Default/slider-v-both.gif b/NzbDrone.Web/Content/2011.1.414/Default/slider-v-both.gif deleted file mode 100644 index e955d4f2b2235bdbb797bce0fe104eb95226cc87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102 zcmZ?wbhEHblw)9I*v!Ci|Ni}+o}MdLu1udkedETB6DLkwv0}yi`STASK78xetzElz zojG&n|Ns9CFrfI8g^_`Qhd~D<05XGtMOZ*(;{>H=J%@I^cQlk?Td2@I!G*yZ07O(M A?f?J) diff --git a/NzbDrone.Web/Content/2011.1.414/Default/slider-v-left.gif b/NzbDrone.Web/Content/2011.1.414/Default/slider-v-left.gif deleted file mode 100644 index 0ff99d3d8699be906c7a0f5592a6cb53ca41f8a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96 zcmZ?wbhEHblw)9I*v!Ci<;s=m)2DCTxN+jdi7QsDxPSlt{Q2__A3l8R)~#K;cAYtM r=Kufy3`junCkrD312=;XNDO2K0}Jm4g#~^>M_M-S`u{+jk--`O6m=z) diff --git a/NzbDrone.Web/Content/2011.1.414/Default/slider-v-right.gif b/NzbDrone.Web/Content/2011.1.414/Default/slider-v-right.gif deleted file mode 100644 index 6fea0636f3d66822b855e14a91d96eb9bd7d2c4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96 zcmZ?wbhEHblw)9I*v!Ci<;s=m)2DCTxN+jdi7QsDm_L7hPfyR`!-sF(y0vT9t}|!O q{Qv)-0SPGnWMO1r;AYSPiGj>uVBsw|>8Wk1ETVKNkU@x%!5RR*L?M#^ diff --git a/NzbDrone.Web/Content/2011.1.414/Default/slider-vs-both.gif b/NzbDrone.Web/Content/2011.1.414/Default/slider-vs-both.gif deleted file mode 100644 index cfb829dc097abfd4190757e54508b0f7eb26217d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 92 zcmZ?wbhEHb6kuRv*v!Ci|Ni}+o}MdLu1udkedETB6DLkwv0}yi`STASK78xetzElz pojG&n|Ns9CFrfI8g^_`Qhd~D<05XGtg)=~~c*fo`8D}L1YXGY(BftOv diff --git a/NzbDrone.Web/Content/2011.1.414/Default/slider-vs-left.gif b/NzbDrone.Web/Content/2011.1.414/Default/slider-vs-left.gif deleted file mode 100644 index b091822f5fca57cf04a03ab6745fb55739f17b45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90 zcmZ?wbhEHb6kuRv*v!Ci<;s=m)2DCTxN+jdi7QsDxPSlt{Q2__A3l8R)~#K;cAYtM k=Kufy3`junCkrD312=;XNDO2K0}HzWXVSF2H{2Mk0V_Tt1poj5 diff --git a/NzbDrone.Web/Content/2011.1.414/Default/slider-vs-right.gif b/NzbDrone.Web/Content/2011.1.414/Default/slider-vs-right.gif deleted file mode 100644 index b8196da332dee0e9d19307fb3f7706c5fded3b57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90 zcmZ?wbhEHb6kuRv*v!Ci<;s=m)2DCTxN+jdi7QsDm_L7hPfyR`!-sF(y0vT9t}|!O k{Qv)-0SPGnWMO1r;AYSPiGj>uU|}yf>6xnG;=*7J0P(RPmjD0& diff --git a/NzbDrone.Web/Content/2011.1.414/Default/sprite-vertical.png b/NzbDrone.Web/Content/2011.1.414/Default/sprite-vertical.png deleted file mode 100644 index 122af8061881e167a4e00605adfec6c97f9fe08a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^(m*W0!3-oXoc*!{NJ*BsMwA5SrM32~h{bLP#PH+SvYb((=;^5n@iH8m?&u54~@K7Rao zZ*T9zhYwdUF#K0jD=8@n4-bF(^y#NhpJvRMk)55rY15{cFJJzbkXXKa`F{om0}G9h zKr?kbT^vIyZY2pMKM@iX5Eg!tA}aLwc|ub1gU6}qg3km+)1ReDOqKpp#K6eLaBQDw V;_|;A?1B0iJYD@<);T3K0RYFMShfHF diff --git a/NzbDrone.Web/Content/2011.1.414/Default/sprite.png b/NzbDrone.Web/Content/2011.1.414/Default/sprite.png deleted file mode 100644 index 2da9604452ffbaa63c8ce3ef6dcb381eb122e700..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6387 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 E3w$OEWdHyG diff --git a/NzbDrone.Web/Content/2011.1.414/Default/treeview-line.png b/NzbDrone.Web/Content/2011.1.414/Default/treeview-line.png deleted file mode 100644 index 0c03dc1289c9af53a998c6c9246b7bab12470b0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 322 zcmeAS@N?(olHy`uVBq!ia0vp^f(#7YUpSb7EDzgE5G7gS8c`CQpH@|6H_V+Po~-c6>$dmgt(@pq@<>%0(one&$9wj%q2m7!THN zx;TbZ+)7F~#KPko*we_#*m>DH;FSdX&fhOq_c2Py^{5=ZT_7m^<|Y4rtB5&Dmxbv9O=s|Q^>bP0l+XkK DKVC&C diff --git a/NzbDrone.Web/Content/2011.1.414/Default/treeview-nodes.png b/NzbDrone.Web/Content/2011.1.414/Default/treeview-nodes.png deleted file mode 100644 index f498056630bde2eb861d2d5cc257e92582bc5436..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^c_7Te3?x6cUONe-BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrH1%aR&H=xTd6}q^70vjS4gB|(0{|Nk>wKgH_^uT7z226kuFjgi zNjpK@+D6T~>`m0oyHmqkw~F!c@x6O%TlPlm@ub+q-7?kFcV3>kDS5f^!v_x@TzfEY zu6Fu=&wfsJ_Ul68Z*JsfPJeS_ruEH}eX*C%*|175?2wPs>zddm2y_mEr>mdKI;Vst E0JchFCIA2c diff --git a/NzbDrone.Web/Content/2011.1.414/Forest/editor.png b/NzbDrone.Web/Content/2011.1.414/Forest/editor.png deleted file mode 100644 index a4bf2d17ef570645c072f5186948e6af69a1d329..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2978 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 FV1i*7GNJ$g diff --git a/NzbDrone.Web/Content/2011.1.414/Forest/loading.gif b/NzbDrone.Web/Content/2011.1.414/Forest/loading.gif deleted file mode 100644 index b8453f0e9be0578a4ab31a6d87f341a6c289808b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1376 zcmdUu&r=&^9L8U}>=Jh~A*3aM$#&Un(?Cjrwm`yoZuM%o6icHdxbTNTzStdKQtG&jm2$TAZ!|iO`@sXW~#7;b8D%b zrK-86m_*Bjlv!4ca?&U(=Avp?D8^zETO^Evf(uD(X(DA2$GK!Gmq=L}S1n?y8CT7O zYQ_{ZrWy&=h$|K`#fT=2sDk53982P8G8IdvqKQ-}K~#;#)lgiO<4P#5$T32a&=Msi zT0#ji6c_jR_rd?_+KH2CUpXIlsL0*NjDRYlVPf>x`7H6~E~{s&M)aOf=7 zaU|T^l|~mLP;QX|@N}y_-X%dPpAF&Ru4`CI}*!1eB6!;y|PfNf3@jd!ezw~^XBP5H1 zql;q z9v|<+36s2<+U^&GG#qGy4%X&?f{4az0Hhh{@_2cz?P?ym+yw;Y zu{a0YCo<@apQTqc@&nViKfbY{xoYnT9{1#J(fgI$xx&v$yVAy^Umx$Ge|0_h+xIHA z-6zSUPcOssj$)W<9BN`FP?ijgo7CAQG~mx5rwc}U#rjo$ zUA>!(+`Ag|Y(ZIC)p#CDKmLSH2c*ER*82FDCqF;=Pw#`uAyOIlwF?btbUq9PmyOXT z@bJsQI>>!OQxuNKUbhYwbRVClK!GgU3>*r#NM#3o=WMU^ZKi>_2fG4gjbrblp4uJk zbLSsG-t*7ag zLyyjlvI}F&C7lJ=zlP--E4NA~s1+Er(^aL99Jcvo-a~TQN?Y~cZ7o;a$krV?rMD^{ zY@L#BUD8o#WW5*YX!Lf(mU diff --git a/NzbDrone.Web/Content/2011.1.414/Forest/slider-h-both.gif b/NzbDrone.Web/Content/2011.1.414/Forest/slider-h-both.gif deleted file mode 100644 index 7cc8e478e175c0ef77776b65c56e3f592d3262ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98 zcmZ?wbhEHbWMq(F*v!D-k*!>~I3aUJNZ!2YusVy_cBkYC-rfZo0cHCC|Nm#e0E$0Z j7#SEi8FWB0ATtY`atP1aI#Gjes)!|Ns9pU;~OjSr{1@ bI2d$5k{~k}ShxgEdTL8O;|Ox-V6X-NCSntC diff --git a/NzbDrone.Web/Content/2011.1.414/Forest/slider-h-top.gif b/NzbDrone.Web/Content/2011.1.414/Forest/slider-h-top.gif deleted file mode 100644 index bf144da03b18dee4fbc96e0e8d2209dde9b5b32f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93 zcmZ?wbhEHbWMq(F*v!C?IU^)*UUXQUMQpoM;o^kk3EtiX8Ubbc|NsAIzy=h5vM@3* ba4_hABtd2{uy9Ra323umdwJHni@_QIR0$Nq diff --git a/NzbDrone.Web/Content/2011.1.414/Forest/slider-hs-both.gif b/NzbDrone.Web/Content/2011.1.414/Forest/slider-hs-both.gif deleted file mode 100644 index bdd5cd3ffd54a4f972e9a51355bfef760da59fa0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 92 zcmZ?wbhEHbWMmLv*v!D-k*!>~I3aUJNZ!2YusVy_cBkYC-rfZo0cHCC|Nm#e0E$0Z d7#SEi8FWB0ATtY`atP1aI#Gjes)!|Ns9pU;~OjSr{1@ YI2d$5k{~k}Sl9(ldOj6g;=*7J0PKwt?f?J) diff --git a/NzbDrone.Web/Content/2011.1.414/Forest/slider-hs-top.gif b/NzbDrone.Web/Content/2011.1.414/Forest/slider-hs-top.gif deleted file mode 100644 index 1c8edf4fde728197f3c3b3b5af04860a6a588a70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90 zcmZ?wbhEHbWMmLv*v!C?IU^)*UUXQUMQpoM;o^kk3EtiX8Ubbc|NsAIzy=h5vM@3* Ya4_hABtd2{u&@hEQJk>%h8u%502FK!yZ`_I diff --git a/NzbDrone.Web/Content/2011.1.414/Forest/slider-v-both.gif b/NzbDrone.Web/Content/2011.1.414/Forest/slider-v-both.gif deleted file mode 100644 index 024c90f2dac928f8b2959189c38744209ac797a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98 zcmZ?wbhEHblwe?F*v!D-k*!>~I3aUJNZ!2YusVy_cBkYC-rfZo0cHCC|Nm#e0E$0Z j7#SEi8FWB0ATtY`atP1aI#Gjes)!|Ns9pU;~OjSr{1@ bI2d$5k{~k}ShxgEdTL8O;|Ox-V6X-NCcYDJ diff --git a/NzbDrone.Web/Content/2011.1.414/Forest/slider-vs-both.gif b/NzbDrone.Web/Content/2011.1.414/Forest/slider-vs-both.gif deleted file mode 100644 index 88668cca65035562f504dcfd21abdf2a6c45c371..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 92 zcmZ?wbhEHb6kuRv*v!D-k*!>~I3aUJNZ!2YusVy_cBkYC-rfZo0cHCC|Nm#e0E$0Z d7#SEi8FWB0ATt%h8u%502HVbyZ`_I diff --git a/NzbDrone.Web/Content/2011.1.414/Forest/slider-vs-right.gif b/NzbDrone.Web/Content/2011.1.414/Forest/slider-vs-right.gif deleted file mode 100644 index 34bee57114c62ed1acd06cbbb7e8a5ce5b5d459c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90 zcmZ?wbhEHb6kuRv*v!C?IU^)*UUXQUg-5n>Y`atP1aI#Gjes)!|Ns9pU;~OjSr{1@ YI2d$5k{~k}Sl9(ldOj6g;=*7J0PM*U?f?J) diff --git a/NzbDrone.Web/Content/2011.1.414/Forest/sprite-vertical.png b/NzbDrone.Web/Content/2011.1.414/Forest/sprite-vertical.png deleted file mode 100644 index 5d3ec80331ac8e14b9eba46ed835a70b828dd190..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^(m*W0!3-oXoc*!{NJ*BsMwA5Sr79(yYrpen&S1>UAS5wQL>{h=t?!SbDMVw;Vbid5mAzI$z?W;0t7sUN% zVEBGPHX3NSsi%u$NX4zB2ag0r9zA{}lAiSNsfh5?goJdF#I&bk0@IQnr%U)0O;WJ* kFVdQ&MBb@00MYVh5!Hn diff --git a/NzbDrone.Web/Content/2011.1.414/Forest/sprite.png b/NzbDrone.Web/Content/2011.1.414/Forest/sprite.png deleted file mode 100644 index 5a32779174f61bb79cd3422456df815271c6b234..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5665 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 diff --git a/NzbDrone.Web/Content/2011.1.414/Forest/treeview-line.png b/NzbDrone.Web/Content/2011.1.414/Forest/treeview-line.png deleted file mode 100644 index 0c03dc1289c9af53a998c6c9246b7bab12470b0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 322 zcmeAS@N?(olHy`uVBq!ia0vp^f(#7YUpSb7EDzgE5G7gS8c`CQpH@|6H_V+Po~-c6>$dmgt(@pq@<>%0(one&$9wj%q2m7!THN zx;TbZ+)7F~#KPko*we_#*m>DH;FSdX&fhOq_c2Py^{5=ZT_7m^<|Y4rtB5&Dmxbv9O=s|Q^>bP0l+XkK DKVC&C diff --git a/NzbDrone.Web/Content/2011.1.414/Forest/treeview-nodes.png b/NzbDrone.Web/Content/2011.1.414/Forest/treeview-nodes.png deleted file mode 100644 index f498056630bde2eb861d2d5cc257e92582bc5436..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^c_7Te3?x6cUONe-BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrH1%aR&H=xTd6}q^70vjS4gB|(0{|Nk>wKgH_^uT7z226kuFjgi zNjpK@+D6T~>`m0oyHmqkw~F!c@x6O%TlPlm@ub+q-7?kFcV3>kDS5f^!v_x@TzfEY zu6Fu=&wfsJ_Ul68Z*JsfPJeS_ruEH}eX*C%*|175?2wPs>zddm2y_mEr>mdKI;Vst E0JchFCIA2c diff --git a/NzbDrone.Web/Content/2011.1.414/Hay/editor.png b/NzbDrone.Web/Content/2011.1.414/Hay/editor.png deleted file mode 100644 index 0af0168e90740851a7373786a92003bbb21f3860..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2912 zcmd^B`!^GeAD&`qZmZmLnFy2IqRE|@(P+&?3vDiQdoh}OW^5}-#_E~{P6iaKRxGjo^zh(e6mokjuIe65C8y>a6;Il0RW-g zeJ(3{aDV<4c6DoiDUcjINp2AYQY=0y0ATAM;Tr&P3d08mpaby!@sSe&768CO01An5 zV05o1K6c#L*hnpp-rn9`d;4YDQ=7ZC$6ly0^DKj$r!YGz=uLB;(QvPNhj(B99UdMI zEY0LB3i4*Ls7olg8^L=3{NP!GyzZeZeNskY!gxGh!6Yn%qjk535!m7kfk2SWKtn@A z=1PM7O_B12P}lGwT`Zc>!;O!R&(6+vYmqFT^YyRyqcexJ;c=8wPGx1K7yC2{M>*#T zeek-o(ALj=nI$^3zTU%S{H#rb{5h|66A5aYIwY`A6K%GFK zXlu9n?g;h-N=iz$zKn})KoW_hX{vy|t&7NVG(zPw2MU^>r?!ok&(F`Z*h}sn?zXme zRf`dqdw}#xTH=I-6|SR;S3oIYVY^j~&$(RkwRc9_^ZERsL?4$VUc#7_zP>(f8iVcz zY9Rarh9FosY{nGIy$cvSY8ExBN9SHEXv_)>3`E)^g~f!@r(B(HD-EsJX3V&f#~sXV zV49j*HBU*`M@$3)0eBzsU>i>=4#x$Hf{7G{p%We=4-u0Wx)}R}&lgZ=bYc+2r(cf0 zC*aI%;cygO9K)kmf;BEcHUc50$<+^7#2^-(&J}Qobo!c}a|({eXK}c=PPLF8{qUR_ zGgq<&hJ1-(I(Y$wK((%BdiF?7PfRzC6%-8Rl`RBu#<}h-YOI0A z4pw{egXk;0!2IzD8&iWn`t@<1xabjBK+R>rJB}~Qh1}v5(}^JUU524Tid&0=A1k{w zNYszEf7yP=rQ7&7>zT&Ftf=Qwrx9t>&J2#AYqG}uo{VSrvA)?RMia;2^tqhc!t~B6 zIQnvNR~44whYO=+hXFL?^GQ2 zJmx5$p%z8Mp+uvELqtaoNR-Kqil&tVo-(53b->-y#)Tkv+d_oMkyMbddL{)t+TuR< zRE!-W)zFP?8PrdFzVMV+#@->tT>o%HBgJB=@uy1p%YPIyUdI0rJe(c@d6JgLCyhj8 z_VdFca3nvY=+2v1Ms zbiT4y{txr9-RiB>soeMNl>sIS3h7f~{jR)wXX2YnBThK0CP9~W)TE&xk+jzb>*uBO zgvK=6dcvZ6*q?UQW-X${w|injC)cIYP0Ihy4Z+{49G-8!1AvVYkgb_k%zqru-Zirm z{g7=k0{v`L^mFmlnY$nJ9XxVRJsNB%$S22L6oDN2Rn(~E&p<#kA07}oJZ2pe6S&g` z2jizFz3de08YL*-ZT&N(Hs>m_w?XTD<`NP40fuMgazA*VON~1A$nNK=gqPjBx-`RO znXtGtmbKBPr9TB5Uobk=WU!U091QNR`ECZz(v24iy8|QQ-swG zo>LZoP#bHG)aY3jD9Z@Tzu5745x8lWQdm|VpGrCx|H0BpIc#L5)-TO*9BdsUiZV*Q zr)0G;jDMUd^*FyJkJ+T()bfY`KOJDU*-_PBn3EHX*pZ&H(r;^^pb;u_eZpW&)e;<;1ya{SYfHyOnl!KC`SoCrrbVO)|a@h6~pXSsv>13mW|AaqCg)(JNO3OUscIgD4JsVky zO!C>8t&@>C$vGh-Eq5P+ZB0*mL?K6x&4$0$(>jnl;P@|zxL4)bFj;h~@#({IUT3U8 zDXH}DTcV^wya|wA7cc>SbIrhjtFYS_h9>7^bu$Cw2+GItY zj!<{L@RdCJAo{rEi|&b@X6RGiXuxti*q5LYqNH^6vu3pxS;x|Qac*Pa_snkzpyKY% z^x8=ZhIvyskgy=6mOX4*F-1po8)zJ@=;xTm_+9rC@^16dgSW1+cLVp-2}6 z9UeUa*t@Y7xPOUyjt-R$zgN4I@;pskSzIwsR%;iU-slVcC0nGseT)_RpvRkft$ zl*l(ASAC1|jro2>Net>=XvIG5pGaA_nE_1NL$D&PL}wGzKuic$v)E-l#CVm>_Xo~G z6cdlP*sAC3C?p$SJA3K&@#8JrG0!{Lfuh1GE@!)_Pzqbp=q&3l-WF!f0*6c#4nLKE>0UQn9`luTNJf+T5+CF~p%F37?$vh6+nP34r#QcL$v9~-sYro2_ z)160aW6)E2*xQxjEz^ZrJ)S;5lAa+_=J`n_I2y<)`yw#BVB7iqIY&blA?8&XKpB-~L z(lUI6gcU#4>XHEx-}I$4&H&0w!1cxJCx+e9p_xpfzqAWpEYmWE8oX9M5gZiFY@lG= z2UG$)G<2vBD0vSu!w8`ohJ<;0C;8k^GzaY(Wc#X;qCh#pl?KmdX0A$|SNqK;FM9K? zyd4Y~JaADR(6!PF&%Gd?Bw6lLR*Wz4iniF4S0TSjs%zjdWCqsJ~D3=rb*YQkZLyT{X) z2D0})UjM8wEq)_3+xPbGXpJAn*5Nd8;w#Z_XJSQoo4gVm%7_1Hex5zj^xfXU;Zgju zj6UlO+v0Rv_@=z7ao?oL-qGFwb)?P{nDD`u>~yTK>BWcCl^tdv1HnKSX%$vsWE?Zl z41|R$1I<7IsxTO6p~^ttMBpB%!VF{}1gOHUF)9odW*`F@2&b@ppb85RPGJW6tjR!_ zfeiHXHWh{nyTK>I)yR$-_x0~zQgf>|fAOh7(gUv&nD2wY>Vv%H0!!UCLi z05cFOEI>1mfykIQ8puF15Da7>0|kiGpDGLn3Q&LogoUb)N(}VlA~-}CC_n*1fC3bt z0FkOy`ygvGKd7((1?Uh#dif#$H9r+rVFtnsRACiXVHG|bp|`LK-)o>#*eQ&xiw_Zp zh-(b83Jhc*1Kk7RryUHmOt4IV3Ohs?Xq^S?EC!l^?t$_p55I$=% z&|6rA;VGxWD(n=7mxy(iQ&@%J8l%GQfhvsAS?T|_cWyCO9O(i6|LX2@oik@H+y)E- zUT|!J@H%Upo4mro_9m;4wPZO`-tw?78%5fOD4Vw+OL>bFDHlbNB5hVY5M_xrO1v+L zVlQ@9&Sjmz;#t64i~)Nv9t_M3GjsY<^{4-Hx~BS6b&nsIg${8^b^hwVsyWQ3|5nvK znlnHA^S?$>gO#O)H^VUbky6Q(*MBT}q!P$Ck}-%{E0wG#SFa>r003t52qYsA^$tKP zJt1IzaS66=9*2wXe+YXX+YO(5G6$obCfvGp7bYh<@ae4uXx0VPT4NCQ?(#i@e@Cgb zC*Ui_ORHsz~V7T;g4uMF8<_Q0$V3X%}7~YGbud zYixA9y$i8*5XA-n@*s*}dB+!4=EI)+sJF6oCG5pNiQ{M{Nz@scz@;~4sQ1tUG>yrz zWFb<4104pdb3_by0Vr7*OrrpfoxW(aI^AY#bfP_lIQcYU>t!GTNrGY6Te`dB(db6F zvi#xQ#icV>uHF90)aK|+En2z|DmnL%0AxA?Nr0J3X|UFY$76T{$paGoL;)%RiWjx9 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 diff --git a/NzbDrone.Web/Content/2011.1.414/Hay/slider-h-both.gif b/NzbDrone.Web/Content/2011.1.414/Hay/slider-h-both.gif deleted file mode 100644 index 159ad706f3e9bb9c740a4105ca7e432ad65b68b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102 zcmZ?wbhEHbWMq(I*v!E2=FN@H_M+3Lwyjz@<^H`>3+8n`dvx?3nK#qH-ipH3}gla3vaz4Tk_OI^mt+;yi;Iyd? q|NsAIKmv+CSr{1@xEXXnVjwdZSa=PlOgv!Nq_Jh!{|DlX4AuZ4N+mb| diff --git a/NzbDrone.Web/Content/2011.1.414/Hay/slider-hs-both.gif b/NzbDrone.Web/Content/2011.1.414/Hay/slider-hs-both.gif deleted file mode 100644 index 01344b63e33aabc6d3c2087bfb0a4c0e66ab4173..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 92 zcmZ?wbhEHbWMmLv*v!E2=FN@H_M+3Lwyjz@<^H`>3+8n`dvx?3nK#qH-ipH3}gla3wyyy&!tL-To|kY=z4Tk_OI^mt+;yi;Iyd? k|NsAIKmv+CSr{1@xEXXnVjwdZSlB;EI8NJp!;Qfj06^j*djJ3c diff --git a/NzbDrone.Web/Content/2011.1.414/Hay/slider-v-both.gif b/NzbDrone.Web/Content/2011.1.414/Hay/slider-v-both.gif deleted file mode 100644 index d293ca856b7fd2c2ab65a59e851261695ed34abd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102 zcmZ?wbhEHblw)9I*v!E2=FN@H_M+3Lwyjz@<^H`>3+8n`dvz4Tk_OI^mt+;yi;Iyd? q|NsAIKmv+CSr{1@xEXXnVjwdZSa=PlOgv!Nq_Jh!{|DlX4AuZ4z9l#S diff --git a/NzbDrone.Web/Content/2011.1.414/Hay/slider-v-right.gif b/NzbDrone.Web/Content/2011.1.414/Hay/slider-v-right.gif deleted file mode 100644 index 69d04a90721a8651c5d60ff104d47243afeedf45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96 zcmZ?wbhEHblw)9I*v!Ci`qZ}0_M%lQr`*4HYQenDXU{He-7^2c{?+}x6<4nwoHn)L p|Ns9CNI>x?3nK#qH-ipH3}gla3va3+8n`dvz4Tk_OI^mt+;yi;Iyd? k|NsAIKmv+CSr{1@xEXXnVjwdZSlB;EI8NJp!;Qfj06`uidjJ3c diff --git a/NzbDrone.Web/Content/2011.1.414/Hay/slider-vs-right.gif b/NzbDrone.Web/Content/2011.1.414/Hay/slider-vs-right.gif deleted file mode 100644 index a19b1b9fe7c7bb0008c99cac0b82642fbe09ada3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90 zcmZ?wbhEHb6kuRv*v!Ci`qZ}0_M%lQr`*4HYQenDXU{He-7^2c{?+}x6<4nwoHn)L j|Ns9CNI>x?3nK#qH-ipH3}gla3wyyy&!tL-To|kY=_w%M diff --git a/NzbDrone.Web/Content/2011.1.414/Hay/sprite-vertical.png b/NzbDrone.Web/Content/2011.1.414/Hay/sprite-vertical.png deleted file mode 100644 index 6f83f17fbd336f6d98696f45c0413114413d8b10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^(m*W0!3-oXoc*!{NJ*BsMwA5Src=6)W zqesW$4zjOcV7Po`vsEAGoxA%IkFft&Qw!a}7PXf>_5l0!>pM%%DhF<1J9}pPtQn2# z1$5Ye#_D*wIEGZ*N}3>$nEFs)x`1ff6Vc~S9w(+fel8>=BAk$r^gK;ss`Qs421Ygp YiMyg3xlYDz2kK++boFyt=akR{0GdlyJ^%m! diff --git a/NzbDrone.Web/Content/2011.1.414/Hay/sprite.png b/NzbDrone.Web/Content/2011.1.414/Hay/sprite.png deleted file mode 100644 index 504abdca602059b578dd466316b928b4431fa5a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5358 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 DKVC&C diff --git a/NzbDrone.Web/Content/2011.1.414/Hay/treeview-nodes.png b/NzbDrone.Web/Content/2011.1.414/Hay/treeview-nodes.png deleted file mode 100644 index f498056630bde2eb861d2d5cc257e92582bc5436..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^c_7Te3?x6cUONe-BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrH1%aR&H=xTd6}q^70vjS4gB|(0{|Nk>wKgH_^uT7z226kuFjgi zNjpK@+D6T~>`m0oyHmqkw~F!c@x6O%TlPlm@ub+q-7?kFcV3>kDS5f^!v_x@TzfEY zu6Fu=&wfsJ_Ul68Z*JsfPJeS_ruEH}eX*C%*|175?2wPs>zddm2y_mEr>mdKI;Vst E0JchFCIA2c diff --git a/NzbDrone.Web/Content/2011.1.414/Office2007/editor.png b/NzbDrone.Web/Content/2011.1.414/Office2007/editor.png deleted file mode 100644 index 3bb258c4ff36c3570eb20b12af932ffd83d51509..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5132 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 Dc&Z)~ diff --git a/NzbDrone.Web/Content/2011.1.414/Office2007/loading.gif b/NzbDrone.Web/Content/2011.1.414/Office2007/loading.gif deleted file mode 100644 index daec89e001c8f174bf967924f06812654f91cdbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2080 zcmeH{e{2(F7{{;c!LDQ6j$d=bZuCYW+uWor6S^_O^^QST=BQ;XqY~{lWoZ4;t&vPG z>bl+5Z5&ca5hmwsk(&jq8Nv(_F>B{({gGoTIgN=I%E&Q;k*dT~L#$W%&&+@Q%QxRV zdG5XU&3*3qKJUAwezUo{6#)=H27t80rX@y}n6#*fl|?o!24#_v#b8=s(*iALA|>;T z%(H2plzAm5C7w=mUYR4)oLkPwD{(=IqtX`@krGEr7isCDH$9;wqxFRg0dj$kfSy!N{UfRih8A}Q_SRUAxa8Sugp4ys9RiZ9qd?mP8W(9JPdjV-5WpHGLyeGR*`pCX~F;d{);6JK-!ljy!;&!%o{yiNraXLt3aTv>P) zxcFUtgq@o55tQ~zTyOc@zxRU=2Rq-e^n&YWehZ*8(_b9Rdg->#+`btnJjmGNrrvom z+;^%8ojq}5AJO}>_QJ}&6_)&tPZD8MbH(M#twFobX1F=kGZ!TNH>7nztS@_F)(iqk ztg;$@RtJR800Q3yo#-wlAe9Q5-x<)UEE*kAQ(J(s*t+|gb8by0?M3(L*S&SEw@;;B zThaS=6`qXs5o;b!)K;}-SxgThe>~S^4=}525InqO3XGk$MYQF&t|PCmFturO$=R1j z%atDq{604P9jm@sk_-JSU}=X!@$Z=XHO?K2nB!Ke^!;!!$SG9h)Nu3Kg4k zj!(4_aUYe^mi%%&i5fHuRnD$!c8*vJS6i{vwq>ifLZb!shg{3bHA~JdZJFh#d_@Lr z`O=8(@G+|c(S)`Y zGXFXqK$jM1myiD%-oGI4T1k;P8JpW?|KBzzkYWXLdCsQC>f^rtKeZRO*9{RHJBpi6 zc15nDrjEVi*7FBl`3Fm^s~p3N z_{>53)@JcDVqnVOHohz3 zNl-N50h`eleY{Tte%7>e$gb+6DzdwhDbJPH*87j93XsrPxOPW`!jRDQsoJJsX?4@N zu}P&7b_W9Ec_S1Gt8^_L{JtXaY?jVr9iCjivgLgYa=HBk3_gJ*mlC~T<0A2e0whDI z`Nt*Gf9L$ti!#Q(Z$OjSY6JY7D-{aAwgy5=3Os{X!{{Sz3EeD?Decogc-xnH6fdk; zvD;%t8b^EpFs*H=b2YyD(kbZvO+Ax5L1gcp3`|cKQ4YA$ig}RG3H6&fP3;mgvdR|G dHDJ#UEXiL37wvquB;4Tum%7FvI+qJ diff --git a/NzbDrone.Web/Content/2011.1.414/Office2007/slider-hs-bottom.gif b/NzbDrone.Web/Content/2011.1.414/Office2007/slider-hs-bottom.gif deleted file mode 100644 index 9cb545c3f797f6a15cad2790b796eb07e50bf763..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46 ycmZ?wbhEHbWMmLvXkcLQPbmHW|G(l-7DfgJMg|=QAOOiQFtPUZvvIRBSOWk776~f= diff --git a/NzbDrone.Web/Content/2011.1.414/Office2007/slider-hs-top.gif b/NzbDrone.Web/Content/2011.1.414/Office2007/slider-hs-top.gif deleted file mode 100644 index 846db855878985e9ca29d42e9cb2dee6962bab03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46 ycmZ?wbhEHbWMmLvXkcLQPbmHW|G(l-7DfgJMg|=QAOOiQFtN4>uAI%vU=08RSqazx diff --git a/NzbDrone.Web/Content/2011.1.414/Office2007/slider-v-both.gif b/NzbDrone.Web/Content/2011.1.414/Office2007/slider-v-both.gif deleted file mode 100644 index a9ddf6890cb2ace9cbb46125ecc75971d368772e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 ycmZ?wbhEHblwe?FXkcLQPbmHW|G(l-7Dfi3fDQu?fMgh$*jn-zuI^xEum%7V$O_j0 diff --git a/NzbDrone.Web/Content/2011.1.414/Office2007/slider-v-left.gif b/NzbDrone.Web/Content/2011.1.414/Office2007/slider-v-left.gif deleted file mode 100644 index 7c4fbcc7b803502cafabb88a6edcd27919b2e3ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 ycmZ?wbhEHblwe?FXkcLQPbmHW|G(l-7Dfi3fDQu?fMgh$*jn-zo|a{0um%7Uyb6o} diff --git a/NzbDrone.Web/Content/2011.1.414/Office2007/slider-v-right.gif b/NzbDrone.Web/Content/2011.1.414/Office2007/slider-v-right.gif deleted file mode 100644 index 5bb2c46aa70ab1581b024b86478772f6c2e2fc61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 ycmZ?wbhEHblwe?FXkcLQPbmHW|G(l-7Dfi3fDQu?fMgh$*n0XU51eIXum%7VH44!H diff --git a/NzbDrone.Web/Content/2011.1.414/Office2007/slider-vs-both.gif b/NzbDrone.Web/Content/2011.1.414/Office2007/slider-vs-both.gif deleted file mode 100644 index 965a705c6a1473ac1943fe8444c94836be113338..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46 xcmZ?wbhEHb6kuRvXkcLQPbmHW|G(l-7Dfi3fDQu?fMgh$SX%^FRt7Lw0{{c=3IPBB diff --git a/NzbDrone.Web/Content/2011.1.414/Office2007/slider-vs-left.gif b/NzbDrone.Web/Content/2011.1.414/Office2007/slider-vs-left.gif deleted file mode 100644 index d082a80484c1489febc4fb0a61e2910bf9da1d20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46 xcmZ?wbhEHb6kuRvXkcLQPbmHW|G(l-7Dfi3fDQu?fMgh$SX%^F&Sqt>1^@$<3D^Jt diff --git a/NzbDrone.Web/Content/2011.1.414/Office2007/slider-vs-right.gif b/NzbDrone.Web/Content/2011.1.414/Office2007/slider-vs-right.gif deleted file mode 100644 index 8be02c7ce84578439202d8e3636486e1c555dc9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46 wcmZ?wbhEHb6kuRvXkcLQPbmHW|G(l-7Dfi3fDQu?fMgh$SbO@}xLFyj0Rd78D*ylh diff --git a/NzbDrone.Web/Content/2011.1.414/Office2007/sprite-vertical.png b/NzbDrone.Web/Content/2011.1.414/Office2007/sprite-vertical.png deleted file mode 100644 index 8387e7720205d0b65c925d74f3a013e63f0a8bfe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^(m*W0!3-oXoc*!{NJ*BsMwA5SrZ2rysnTDH7#P_YuKX8qtc_6*0qSG$ MboFyt=akR{07S=BjsO4v diff --git a/NzbDrone.Web/Content/2011.1.414/Office2007/sprite.png b/NzbDrone.Web/Content/2011.1.414/Office2007/sprite.png deleted file mode 100644 index 94c141a37ff134b4b26d252c925fa516f0352f52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5668 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 DKVC&C diff --git a/NzbDrone.Web/Content/2011.1.414/Office2007/treeview-nodes.png b/NzbDrone.Web/Content/2011.1.414/Office2007/treeview-nodes.png deleted file mode 100644 index f498056630bde2eb861d2d5cc257e92582bc5436..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^c_7Te3?x6cUONe-BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrH1%aR&H=xTd6}q^70vjS4gB|(0{|Nk>wKgH_^uT7z226kuFjgi zNjpK@+D6T~>`m0oyHmqkw~F!c@x6O%TlPlm@ub+q-7?kFcV3>kDS5f^!v_x@TzfEY zu6Fu=&wfsJ_Ul68Z*JsfPJeS_ruEH}eX*C%*|175?2wPs>zddm2y_mEr>mdKI;Vst E0JchFCIA2c diff --git a/NzbDrone.Web/Content/2011.1.414/Office2010Black/editor.png b/NzbDrone.Web/Content/2011.1.414/Office2010Black/editor.png deleted file mode 100644 index 5b5eff047874645743f87b544575de099cc79896..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2797 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 dHDJ#UEXiL37wvq7SOWl|-v=E4 diff --git a/NzbDrone.Web/Content/2011.1.414/Office2010Black/slider-v-left.gif b/NzbDrone.Web/Content/2011.1.414/Office2010Black/slider-v-left.gif deleted file mode 100644 index f633df233b838899c9c0ec142ef21fe841b2d3eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 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 diff --git a/NzbDrone.Web/Content/2011.1.414/Office2010Black/treeview-line.png b/NzbDrone.Web/Content/2011.1.414/Office2010Black/treeview-line.png deleted file mode 100644 index 0c03dc1289c9af53a998c6c9246b7bab12470b0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 322 zcmeAS@N?(olHy`uVBq!ia0vp^f(#7YUpSb7EDzgE5G7gS8c`CQpH@|6H_V+Po~-c6>$dmgt(@pq@<>%0(one&$9wj%q2m7!THN zx;TbZ+)7F~#KPko*we_#*m>DH;FSdX&fhOq_c2Py^{5=ZT_7m^<|Y4rtB5&Dmxbv9O=s|Q^>bP0l+XkK DKVC&C diff --git a/NzbDrone.Web/Content/2011.1.414/Office2010Black/treeview-nodes.png b/NzbDrone.Web/Content/2011.1.414/Office2010Black/treeview-nodes.png deleted file mode 100644 index f498056630bde2eb861d2d5cc257e92582bc5436..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^c_7Te3?x6cUONe-BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrH1%aR&H=xTd6}q^70vjS4gB|(0{|Nk>wKgH_^uT7z226kuFjgi zNjpK@+D6T~>`m0oyHmqkw~F!c@x6O%TlPlm@ub+q-7?kFcV3>kDS5f^!v_x@TzfEY zu6Fu=&wfsJ_Ul68Z*JsfPJeS_ruEH}eX*C%*|175?2wPs>zddm2y_mEr>mdKI;Vst E0JchFCIA2c diff --git a/NzbDrone.Web/Content/2011.1.414/Outlook/editor.png b/NzbDrone.Web/Content/2011.1.414/Outlook/editor.png deleted file mode 100644 index 2f88b4a47aeb49c09fad94b872b2728676f6aa96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2969 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 diff --git a/NzbDrone.Web/Content/2011.1.414/Outlook/loading.gif b/NzbDrone.Web/Content/2011.1.414/Outlook/loading.gif deleted file mode 100644 index daec89e001c8f174bf967924f06812654f91cdbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2080 zcmeH{e{2(F7{{;c!LDQ6j$d=bZuCYW+uWor6S^_O^^QST=BQ;XqY~{lWoZ4;t&vPG z>bl+5Z5&ca5hmwsk(&jq8Nv(_F>B{({gGoTIgN=I%E&Q;k*dT~L#$W%&&+@Q%QxRV zdG5XU&3*3qKJUAwezUo{6#)=H27t80rX@y}n6#*fl|?o!24#_v#b8=s(*iALA|>;T z%(H2plzAm5C7w=mUYR4)oLkPwD{(=IqtX`@krGEr7isCDH$9;wqxFRg0dj$kfSy!N{UfRih8A}Q_SRUAxa8Sugp4ys9RiZ9qd?mP8W(9JPdjV-5WpHGLyeGR*`pCX~F;d{);6JK-!ljy!;&!%o{yiNraXLt3aTv>P) zxcFUtgq@o55tQ~zTyOc@zxRU=2Rq-e^n&YWehZ*8(_b9Rdg->#+`btnJjmGNrrvom z+;^%8ojq}5AJO}>_QJ}&6_)&tPZD8MbH(M#twFobX1F=kGZ!TNH>7nztS@_F)(iqk ztg;$@RtJR800Q3yo#-wlAe9Q5-x<)UEE*kAQ(J(s*t+|gb8by0?M3(L*S&SEw@;;B zThaS=6`qXs5o;b!)K;}-SxgThe>~S^4=}525InqO3XGk$MYQF&t|PCmFturO$=R1j z%atDq{604P9jm@sk_-JSU}=X!@$Z=XHO?K2nB!Ke^!;!!$SG9h)Nu3Kg4k zj!(4_aUYe^mi%%&i5fHuRnD$!c8*vJS6i{vwq>ifLZb!shg{3bHA~JdZJFh#d_@Lr z`O=8(@G+|c(S)`Y zGXFXqK$jM1myiD%-oGI4T1k;P8JpW?|KBzzkYWXLdCsQC>f^rtKeZRO*9{RHJBpi6 zc15nDrjEVi*7FBl`3Fm^s~p3N z_{>53)@JcDVqnVOHohz3 zNl-N50h`eleY{Tte%7>e$gb+6DzdwhDbJPH*87j93XsrPxOPW`!jRDQsoJJsX?4@N zu}P&7b_W9Ec_S1Gt8^_L{JtXaY?jVr9iCjivgLgYa=HBk3_gJ*mlC~T<0A2e0whDI z`Nt*Gf9L$ti!#Q(Z$OjSY6JY7D-{aAwgy5=3Os{X!{{Sz3EeD?Decogc-xnH6fdk; zvD;%t8b^EpFs*H=b2YyD(kbZvO+Ax5L1gcp3`|cKQ4YA$ig}RG3H6&fP3;mgvdR|G dHDJ#UEXiL37wvquB;4Tum%7FSPA_A diff --git a/NzbDrone.Web/Content/2011.1.414/Outlook/slider-hs-bottom.gif b/NzbDrone.Web/Content/2011.1.414/Outlook/slider-hs-bottom.gif deleted file mode 100644 index 4a517d845a9dc525db9cc70b66620d1f5fc7e286..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46 ycmZ?wbhEHbWMmLvXkcJSNJ#kq|G(l-7DfgJMg|=QAOOiQFtPUZvvIRBSOWk6ya^`& diff --git a/NzbDrone.Web/Content/2011.1.414/Outlook/slider-hs-top.gif b/NzbDrone.Web/Content/2011.1.414/Outlook/slider-hs-top.gif deleted file mode 100644 index 0a2c03acb65338daccc2215f88bf69be6aecdf2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46 ycmZ?wbhEHbWMmLvXkcJSNJ#kq|G(l-7DfgJMg|=QAOOiQFtN4>uAI%vU=08Q{|VFp diff --git a/NzbDrone.Web/Content/2011.1.414/Outlook/slider-v-both.gif b/NzbDrone.Web/Content/2011.1.414/Outlook/slider-v-both.gif deleted file mode 100644 index 5152a607baa41f1bcbb6438b9d7e392e987c5f0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 ycmZ?wbhEHblwe?FXkcJSNJ#kq|G(l-7Dfi3fDQu?fMgh$*jn-zuI^xEum%7VY6{Z; diff --git a/NzbDrone.Web/Content/2011.1.414/Outlook/slider-v-left.gif b/NzbDrone.Web/Content/2011.1.414/Outlook/slider-v-left.gif deleted file mode 100644 index cf44e307d85c87492f1a78ce4948944b9ac167b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 ycmZ?wbhEHblwe?FXkcJSNJ#kq|G(l-7Dfi3fDQu?fMgh$*jn-zo|a{0um%7UUJ8f+ diff --git a/NzbDrone.Web/Content/2011.1.414/Outlook/slider-v-right.gif b/NzbDrone.Web/Content/2011.1.414/Outlook/slider-v-right.gif deleted file mode 100644 index f08d556ae27fe777db355c5e878a4860e92e7d7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 ycmZ?wbhEHblwe?FXkcJSNJ#kq|G(l-7Dfi3fDQu?fMgh$*n0XU51eIXum%7U*9y%5 diff --git a/NzbDrone.Web/Content/2011.1.414/Outlook/slider-vs-both.gif b/NzbDrone.Web/Content/2011.1.414/Outlook/slider-vs-both.gif deleted file mode 100644 index 2701a731b89c990e91aaabbbf33211743a0643ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46 xcmZ?wbhEHb6kuRvXkcJSNJ#kq|G(l-7Dfi3fDQu?fMgh$SX%^FRt7Lw0{{b*3H<;7 diff --git a/NzbDrone.Web/Content/2011.1.414/Outlook/slider-vs-left.gif b/NzbDrone.Web/Content/2011.1.414/Outlook/slider-vs-left.gif deleted file mode 100644 index 37f5029005cd010c581ceb75fd8c3a47c4be52ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46 xcmZ?wbhEHb6kuRvXkcJSNJ#kq|G(l-7Dfi3fDQu?fMgh$SX%^F&Sqt>1^@#)3Df`p diff --git a/NzbDrone.Web/Content/2011.1.414/Outlook/slider-vs-right.gif b/NzbDrone.Web/Content/2011.1.414/Outlook/slider-vs-right.gif deleted file mode 100644 index c4ad20ee2ec1694a9163f8974c93304d6874dc2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46 wcmZ?wbhEHb6kuRvXkcJSNJ#kq|G(l-7Dfi3fDQu?fMgh$SbO@}xLFyj0RZ?3CjbBd diff --git a/NzbDrone.Web/Content/2011.1.414/Outlook/sprite-vertical.png b/NzbDrone.Web/Content/2011.1.414/Outlook/sprite-vertical.png deleted file mode 100644 index 78a4605cc32d99f2fa78683262580d1f54b9ad35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^(m*W0!3-oXoc*!{NJ*BsMwA5SrXoPFE0?iRA3GxdD38Dc8fB)x# zKzU717srr_TS*U|CqGORe(+p4B|%7ljnPdnu8c3tPf;$dEpVr!KD$5y17E&y;l@kN QEI>^Rp00i_>zopr06jNmrT_o{ diff --git a/NzbDrone.Web/Content/2011.1.414/Outlook/sprite.png b/NzbDrone.Web/Content/2011.1.414/Outlook/sprite.png deleted file mode 100644 index 2bc5203d1beb21cda4d23725d60e36f04fb004af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5086 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 DKVC&C diff --git a/NzbDrone.Web/Content/2011.1.414/Outlook/treeview-nodes.png b/NzbDrone.Web/Content/2011.1.414/Outlook/treeview-nodes.png deleted file mode 100644 index f498056630bde2eb861d2d5cc257e92582bc5436..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^c_7Te3?x6cUONe-BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrH1%aR&H=xTd6}q^70vjS4gB|(0{|Nk>wKgH_^uT7z226kuFjgi zNjpK@+D6T~>`m0oyHmqkw~F!c@x6O%TlPlm@ub+q-7?kFcV3>kDS5f^!v_x@TzfEY zu6Fu=&wfsJ_Ul68Z*JsfPJeS_ruEH}eX*C%*|175?2wPs>zddm2y_mEr>mdKI;Vst E0JchFCIA2c diff --git a/NzbDrone.Web/Content/2011.1.414/Simple/editor.png b/NzbDrone.Web/Content/2011.1.414/Simple/editor.png deleted file mode 100644 index bea6d33a0ff8c7c1b85504e3ee34c0b0b8ce34ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2927 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 dHDJ#UEXiL37wvquB;4Tum%7FSPA_A diff --git a/NzbDrone.Web/Content/2011.1.414/Simple/slider-hs-bottom.gif b/NzbDrone.Web/Content/2011.1.414/Simple/slider-hs-bottom.gif deleted file mode 100644 index 4a517d845a9dc525db9cc70b66620d1f5fc7e286..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46 ycmZ?wbhEHbWMmLvXkcJSNJ#kq|G(l-7DfgJMg|=QAOOiQFtPUZvvIRBSOWk6ya^`& diff --git a/NzbDrone.Web/Content/2011.1.414/Simple/slider-hs-top.gif b/NzbDrone.Web/Content/2011.1.414/Simple/slider-hs-top.gif deleted file mode 100644 index 0a2c03acb65338daccc2215f88bf69be6aecdf2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46 ycmZ?wbhEHbWMmLvXkcJSNJ#kq|G(l-7DfgJMg|=QAOOiQFtN4>uAI%vU=08Q{|VFp diff --git a/NzbDrone.Web/Content/2011.1.414/Simple/slider-v-both.gif b/NzbDrone.Web/Content/2011.1.414/Simple/slider-v-both.gif deleted file mode 100644 index ec1b6588deaf0cc4007abcabe2c628e89a6021fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 ycmZ?wbhEHblwe?FXkcVWNJ#kq|G(l-7Dfi3fDQu?fMgh$*jn-zuI^xEum%7VjtbNO diff --git a/NzbDrone.Web/Content/2011.1.414/Simple/slider-v-left.gif b/NzbDrone.Web/Content/2011.1.414/Simple/slider-v-left.gif deleted file mode 100644 index d71cc4da0e3c6abac6758d863fa3490840707566..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 ycmZ?wbhEHblwe?FXkcVWNJ#kq|G(l-7Dfi3fDQu?fMgh$*jn-zo|a{0um%7Uf(nTM diff --git a/NzbDrone.Web/Content/2011.1.414/Simple/slider-v-right.gif b/NzbDrone.Web/Content/2011.1.414/Simple/slider-v-right.gif deleted file mode 100644 index ee99d7a50924b83628bcd6d46fd22d2b3c507f5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 ycmZ?wbhEHblwe?FXkcVWNJ#kq|G(l-7Dfi3fDQu?fMgh$*n0XU51eIXum%7U`wGqg diff --git a/NzbDrone.Web/Content/2011.1.414/Simple/slider-vs-both.gif b/NzbDrone.Web/Content/2011.1.414/Simple/slider-vs-both.gif deleted file mode 100644 index 2701a731b89c990e91aaabbbf33211743a0643ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46 xcmZ?wbhEHb6kuRvXkcJSNJ#kq|G(l-7Dfi3fDQu?fMgh$SX%^FRt7Lw0{{b*3H<;7 diff --git a/NzbDrone.Web/Content/2011.1.414/Simple/slider-vs-left.gif b/NzbDrone.Web/Content/2011.1.414/Simple/slider-vs-left.gif deleted file mode 100644 index 37f5029005cd010c581ceb75fd8c3a47c4be52ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46 xcmZ?wbhEHb6kuRvXkcJSNJ#kq|G(l-7Dfi3fDQu?fMgh$SX%^F&Sqt>1^@#)3Df`p diff --git a/NzbDrone.Web/Content/2011.1.414/Simple/slider-vs-right.gif b/NzbDrone.Web/Content/2011.1.414/Simple/slider-vs-right.gif deleted file mode 100644 index c4ad20ee2ec1694a9163f8974c93304d6874dc2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46 wcmZ?wbhEHb6kuRvXkcJSNJ#kq|G(l-7Dfi3fDQu?fMgh$SbO@}xLFyj0RZ?3CjbBd diff --git a/NzbDrone.Web/Content/2011.1.414/Simple/sprite-vertical.png b/NzbDrone.Web/Content/2011.1.414/Simple/sprite-vertical.png deleted file mode 100644 index 8141effe0536294e04830e42a68623c17fb5be6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 184 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 Mw2U>Y)SV*!1DX@5#Q*>R diff --git a/NzbDrone.Web/Content/2011.1.414/Simple/treeview-line.png b/NzbDrone.Web/Content/2011.1.414/Simple/treeview-line.png deleted file mode 100644 index 0c03dc1289c9af53a998c6c9246b7bab12470b0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 322 zcmeAS@N?(olHy`uVBq!ia0vp^f(#7YUpSb7EDzgE5G7gS8c`CQpH@|6H_V+Po~-c6>$dmgt(@pq@<>%0(one&$9wj%q2m7!THN zx;TbZ+)7F~#KPko*we_#*m>DH;FSdX&fhOq_c2Py^{5=ZT_7m^<|Y4rtB5&Dmxbv9O=s|Q^>bP0l+XkK DKVC&C diff --git a/NzbDrone.Web/Content/2011.1.414/Simple/treeview-nodes.png b/NzbDrone.Web/Content/2011.1.414/Simple/treeview-nodes.png deleted file mode 100644 index f498056630bde2eb861d2d5cc257e92582bc5436..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^c_7Te3?x6cUONe-BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrH1%aR&H=xTd6}q^70vjS4gB|(0{|Nk>wKgH_^uT7z226kuFjgi zNjpK@+D6T~>`m0oyHmqkw~F!c@x6O%TlPlm@ub+q-7?kFcV3>kDS5f^!v_x@TzfEY zu6Fu=&wfsJ_Ul68Z*JsfPJeS_ruEH}eX*C%*|175?2wPs>zddm2y_mEr>mdKI;Vst E0JchFCIA2c diff --git a/NzbDrone.Web/Content/2011.1.414/Sitefinity/editor.png b/NzbDrone.Web/Content/2011.1.414/Sitefinity/editor.png deleted file mode 100644 index 57a0ca9177256da530290589e1ab9043ae41c544..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2806 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 diff --git a/NzbDrone.Web/Content/2011.1.414/Sitefinity/imagebrowser.png b/NzbDrone.Web/Content/2011.1.414/Sitefinity/imagebrowser.png deleted file mode 100644 index 02ba545e61c436b8538b4ef01cf51de1c24dcef1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4740 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 TAR{%HrBO@<3FVhm5%ku-ZEmSR diff --git a/NzbDrone.Web/Content/2011.1.414/Sitefinity/slider-h-both.gif b/NzbDrone.Web/Content/2011.1.414/Sitefinity/slider-h-both.gif deleted file mode 100644 index 3bbe4057cf548fc6306570af93fdfacadf85b0b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102 zcmZ?wbhEHbWMq(I*v!CCQ&V&N`0?q}ryo3cu)V!~tfU%7JSu3fv% zoH_IV|9=J;Q2fcl$iTqEpaT*BnZdv!T+q7E%juE8;a%?=9A%g$iJTH}VXy`Ol^rH? diff --git a/NzbDrone.Web/Content/2011.1.414/Sitefinity/slider-h-bottom.gif b/NzbDrone.Web/Content/2011.1.414/Sitefinity/slider-h-bottom.gif deleted file mode 100644 index ff879a4982cf5de3f6e6cac82ae6a0612c2daae1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96 zcmZ?wbhEHbWMq(I*v!Ci{P^+d)2AOic(A>_edETBjg5_ceSP!i&tJK6Wlc@Zu3fwS p|NqZ`1QdU=FfuT3Gw6WCKxQzo@D`l()b>rCQ6Lb=B*4gE4FEsHAHV_edETBjg5_ceSP!i&tJK6<*r@3&YU^( q|NnmmB%t_{g^_`Qn?VO81~P+zg*Sk4B8Sz%o=v;{KM-eRum%8meIls< diff --git a/NzbDrone.Web/Content/2011.1.414/Sitefinity/slider-hs-both.gif b/NzbDrone.Web/Content/2011.1.414/Sitefinity/slider-hs-both.gif deleted file mode 100644 index 61021f3b5edd4fa2f8f637f0ac6e987686fa888a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 92 zcmZ?wbhEHbWMmLv*v!CCQ&V&N`0?q}ryo3cu)V!~tfU%7JSu3fv% ooH_IV|9=J;Q2fcl$iTqEpaT*BnZdxqX`om*WA8MXMkNMo01y2kmH+?% diff --git a/NzbDrone.Web/Content/2011.1.414/Sitefinity/slider-hs-bottom.gif b/NzbDrone.Web/Content/2011.1.414/Sitefinity/slider-hs-bottom.gif deleted file mode 100644 index ff93f91c605185b58a9c2649d24048ee24afd3f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90 zcmZ?wbhEHbWMmLv*v!Ci{P^+d)2AOic(A>_edETBjg5_ceSP!i&tJK6Wlc@Zu3fwS j|NqZ`1QdU=FfuT3Gw6WCKxQzouos;4d}{E}g~1vCfe#;l diff --git a/NzbDrone.Web/Content/2011.1.414/Sitefinity/slider-hs-top.gif b/NzbDrone.Web/Content/2011.1.414/Sitefinity/slider-hs-top.gif deleted file mode 100644 index fe8a3c1be5c11496fc5649a91dc29de47c8720c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90 zcmZ?wbhEHbWMmLv*v!Ci{P^+d)2AOic(A>_edETBjg5_ceSP!i&tJK6<*r@3&YU^( j|NnmmB%t_{g^_`Qn?VO81~P+zgtfU%7JSu3fv% zoH_IV|9=J;Q2fcl$iTqEpaT*BnZdv!T+q7E%juE8;a%?=9A%g$iJTH}VXy`Om60ZM diff --git a/NzbDrone.Web/Content/2011.1.414/Sitefinity/slider-v-left.gif b/NzbDrone.Web/Content/2011.1.414/Sitefinity/slider-v-left.gif deleted file mode 100644 index 335fcfc774423647bd52ce8d7cd618f98666f708..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96 zcmZ?wbhEHblw)9I*v!Ci{P^+d)2AOic(A>_edETBjg5_ceSP!i&tJK6<*r@3&YU^( q|NnmmB%t_{g^_`Qn?VO81~P+zg*Sk4B8Sz%o=v;{KM-eRum%8m@gk`J diff --git a/NzbDrone.Web/Content/2011.1.414/Sitefinity/slider-v-right.gif b/NzbDrone.Web/Content/2011.1.414/Sitefinity/slider-v-right.gif deleted file mode 100644 index 810e4fc29707055898172c7574a39e0f3e87789d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96 zcmZ?wbhEHblw)9I*v!Ci{P^+d)2AOic(A>_edETBjg5_ceSP!i&tJK6Wlc@Zu3fwS p|NqZ`1QdU=FfuT3Gw6WCKxQzo@D`l()b>rCQ6Lb=B*4gE4FEtmAHVtfU%7JSu3fv% ooH_IV|9=J;Q2fcl$iTqEpaT*BnZdxqX`om*WA8MXMkNMo01!DLmH+?% diff --git a/NzbDrone.Web/Content/2011.1.414/Sitefinity/slider-vs-left.gif b/NzbDrone.Web/Content/2011.1.414/Sitefinity/slider-vs-left.gif deleted file mode 100644 index 731e969604649552cbac49626f35ab95c38a8e65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90 zcmZ?wbhEHb6kuRv*v!Ci{P^+d)2AOic(A>_edETBjg5_ceSP!i&tJK6<*r@3&YU^( j|NnmmB%t_{g^_`Qn?VO81~P+zg_edETBjg5_ceSP!i&tJK6Wlc@Zu3fwS j|NqZ`1QdU=FfuT3Gw6WCKxQzouos;4d}{E}g~1vCflD8M diff --git a/NzbDrone.Web/Content/2011.1.414/Sitefinity/sprite-vertical.png b/NzbDrone.Web/Content/2011.1.414/Sitefinity/sprite-vertical.png deleted file mode 100644 index 2bfcefd4a44b0644130a8d6a40d66bec3b12dcd9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 188 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 DKVC&C diff --git a/NzbDrone.Web/Content/2011.1.414/Sitefinity/treeview-nodes.png b/NzbDrone.Web/Content/2011.1.414/Sitefinity/treeview-nodes.png deleted file mode 100644 index f498056630bde2eb861d2d5cc257e92582bc5436..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^c_7Te3?x6cUONe-BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrH1%aR&H=xTd6}q^70vjS4gB|(0{|Nk>wKgH_^uT7z226kuFjgi zNjpK@+D6T~>`m0oyHmqkw~F!c@x6O%TlPlm@ub+q-7?kFcV3>kDS5f^!v_x@TzfEY zu6Fu=&wfsJ_Ul68Z*JsfPJeS_ruEH}eX*C%*|175?2wPs>zddm2y_mEr>mdKI;Vst E0JchFCIA2c diff --git a/NzbDrone.Web/Content/2011.1.414/Sunset/editor.png b/NzbDrone.Web/Content/2011.1.414/Sunset/editor.png deleted file mode 100644 index 3bdf9d60712aca2a3ccf9bc0e4ebff30a82ba4fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2958 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 diff --git a/NzbDrone.Web/Content/2011.1.414/Sunset/loading.gif b/NzbDrone.Web/Content/2011.1.414/Sunset/loading.gif deleted file mode 100644 index f5c95b7876d5f5087fbefd73b34b2e53d2a6872f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1306 zcmZ`&eN0v4;d_3lMy6yI%ZtVqW|FQ{xXK$oSgiUdy{+a zx##4vub2*>#Q+9=2H@GH@@KuJPdIeib~>#)t=63e4wOFttG~hQuc7=k27is&Uv6Fx zfLt#(te0{ieWeCpfC-Qj&>3zZ(HRnqlju0d1h`Cqy}do~pGEA29?vN$ zwqzIOr0WmzdE6H9caT5;AkYSm1)d3l?caV@cWYkjWVVtLP?baZV=VzpX_2a5ZL;5| zR&z&>t;H|W3q$!Ou@@gcc=TtiEn$A}05UmZ3=3CFIveA0CzQz=sWv(}nN3$S8G4eW zvoaKNI%8M^O(v)(2n90?jYjRKlYQ4``)IAUFnd2C^#LKNC!EYxwnL+G=vJ?-s89v7 zITf{e=qm)wcFi99=m9v_!6Iu5ul;toOxASsbPD~=kzoEiBxx5398jaNQ%;M~$f|Q` zlQB(Ot`2+ElBpf08eYQiFlJP*C*;MI_Ad!VFHN+uFIMsKFlWc~oA0X}H#c`Xt9SFI zs@lPj$LWLjf4QK+>L-l@S2aW3nv#`*wdE^pT)+3bCou>QrnQ}qKmd4`=3TJp^=xct zA@RCJDdzL7g9@mNhj{H}n)p015f6vLw+ofnbdP0je=nK>UabDac@g2VCOMYk!aoUl zT#>SU(R=Si^NeJX8mpgQC|*Qb)SI_QmUPoaoEJa*qdJKRb**izSSS!cg~AT`L3E;$ zm9jdu7^kI?2r>}O-K}g!d4R{@VNfIz@F6l)i#u=hQO^CPG;mTFZA|m6`#p^!|66dQ z-+O!c!@1KMRmDoxq-gf9&8YI}I>Ve{%CSB1hy9*AA7hFq?!0jX!|?*O&Z-=KW zp}}l=G9wK~0If@vDQFkqQDst0B4I`;T!_L-JKB1!mulVLjk>_cWVCQ9aD@RhE#1;MyEszJ1R!bXPX@QySq_%&@LUyC8OD-bwb{I?cH<} zV>Ysp)t0ObjfTdn&ZyN;M~*RNtxAa;5@fp=lgQfX+2hZxIPky9K5xoXhRbM|jcbbQ z`&vWQt~I8jB!1&$^QAl$)rJDzmI=uYSz$5wDmZRDCF p7PF>pF diff --git a/NzbDrone.Web/Content/2011.1.414/Sunset/slider-h-bottom.gif b/NzbDrone.Web/Content/2011.1.414/Sunset/slider-h-bottom.gif deleted file mode 100644 index 94b44b95df67a0d472825da8674b5416c54a9220..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93 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 diff --git a/NzbDrone.Web/Content/2011.1.414/Sunset/treeview-line.png b/NzbDrone.Web/Content/2011.1.414/Sunset/treeview-line.png deleted file mode 100644 index 0c03dc1289c9af53a998c6c9246b7bab12470b0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 322 zcmeAS@N?(olHy`uVBq!ia0vp^f(#7YUpSb7EDzgE5G7gS8c`CQpH@|6H_V+Po~-c6>$dmgt(@pq@<>%0(one&$9wj%q2m7!THN zx;TbZ+)7F~#KPko*we_#*m>DH;FSdX&fhOq_c2Py^{5=ZT_7m^<|Y4rtB5&Dmxbv9O=s|Q^>bP0l+XkK DKVC&C diff --git a/NzbDrone.Web/Content/2011.1.414/Sunset/treeview-nodes.png b/NzbDrone.Web/Content/2011.1.414/Sunset/treeview-nodes.png deleted file mode 100644 index f498056630bde2eb861d2d5cc257e92582bc5436..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^c_7Te3?x6cUONe-BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrH1%aR&H=xTd6}q^70vjS4gB|(0{|Nk>wKgH_^uT7z226kuFjgi zNjpK@+D6T~>`m0oyHmqkw~F!c@x6O%TlPlm@ub+q-7?kFcV3>kDS5f^!v_x@TzfEY zu6Fu=&wfsJ_Ul68Z*JsfPJeS_ruEH}eX*C%*|175?2wPs>zddm2y_mEr>mdKI;Vst E0JchFCIA2c diff --git a/NzbDrone.Web/Content/2011.1.414/Telerik/editor.png b/NzbDrone.Web/Content/2011.1.414/Telerik/editor.png deleted file mode 100644 index 239e092e69d590135698e88754cd63342bf709c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2842 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 diff --git a/NzbDrone.Web/Content/2011.1.414/Telerik/imagebrowser.png b/NzbDrone.Web/Content/2011.1.414/Telerik/imagebrowser.png deleted file mode 100644 index e13cb462184b5f5f8c769eb4176a8246a6c33ec1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4839 zcmY+IWn2^P*T%Ooav-By0Y{B)gb4#_r5i?rpmYcWL>VnzBP5(i3c_fSkWx~S8X!oQ zfC9n{%K!X*o;S~%bD#S<=ep1LyuF_o8|u)}aMAz(06INgO;gfo3;+PxsVGRSm^cG&;az(5j#(s377TVuG36zC>s6C~NN|7C(Y4oOQsp*i_DOvJ;LI+{il zT@mYCchq(5Af^jMJ;0!d0a3#;kkhuJ-H9M-Fb2%HLvxE1b$O{s^5d_h{3#yv97*be z{!=kkV=32gq$?Pc_Mf2yLu1a%tc#--g_07CU@cPE_&=!%Ne(ATI1mdJIh-WLf>=nB z2C0T4z4uQt#(}8iod31Mpd=p&XMcdL&g2V^s1j$H(2#)&~Nhlz7UJ@1+=z`Uf z7sH!@)Y1Is|9{2Arv*{}ZKK3bLvo-g;2B7!_;3Uv!*Dloo3xxZ#Qvyu=1;znE%71KC4Q|DEt4|cLKb>Wo6=Oq zgWIKZ$;H?p8zDTJ;3V-r>Lxoq#ohRV8Nq3b;W1_TBOO+`8`d&16ov|L1J>0DV6e{pc(>@Wt$2B$QbCt6!=l zQzlF?X`o!uaLS;{u!f??|7-S8LNdSv1c;Ta}Xtf8t; z7il6UHkb6#(n)Kf>q;diPeQ*t8cxjoZ3AGSP&*_)g)smuosk4sv%}2^Fic5wBB$Tq zFDA_Gpd;8^_IQ)%02}Jey+6_Gb@y>op%coQx76{FNHD5U&^eeXEkAyq6+};ktdPwB=U3-YcnL(LuhPNjbx)YctH8nz z)9-1bO05gi^%yTMR8t|O z8aWznee@~XN2!JenO{C@M2>7*OkQu~mF2-=%4m5VlQ36q=FTgFO{D<>I5(PHVj@lx z&|MW)?CVt~s~{sIe^Fkn|HKh-I65AEhtaw_`}6*fZ+0DOmu?bQX2|JRBTaXM8K>^B zpB?;Nut}=<+V>3Nho*M9q5>%!vt^*lkfcl&CQHWCSPfGdzXvGMJEM7^&qVRJH9 zm;7DN*iMa@a@ytw+uf;c>8FNbz?>vZ=>hU_fD6O+fJr00t7D8~*y+=$Q{8{JEl=y#-!3R8G@IOffvL6+#f9OBBW{LAi>H`-Ds z7mNkww?#3cB{b#Cac~%RWaf^AIDKTClSdJaX z_){)@*QLYotL{>w1)3hA&-r5Tc^88+-&6nCtfuI|taF&#uGBf0)5EMZM^zqJ;-N8@n)nsWh*V551 z1`f!1u&qW52F`LOBE&?xM|(`;Q2AnUTytOATas-cSrCE&`%9@_sEzS(v?CpxL|aNr zwiZJWWfmlzhRBK#mMD=|!1lhfWHb>t6sxOav5oRMDAyP*TciEfBWqyu%N&fmp{*fA zU2C6|@nNi`Gpo!MHA&4OfoN}#E6-gL zsC9kYHN>id9dCOM8sKFrIYF9kNdLB3CL0wN%95K_U)il0UsU0G1e+*B>|06YU`^Lxo`utt&Bvy|{VA@po+lJ0j@rplYkDzh=&LP>skELu9Vvd#+}jk5U|IGcQ^D!;L7|k?KgRg1xO7edef!_@w>wx zh5goQOq-r#<9EU`+Bd)>jy`F}e*(EoDDZx2KvLEcuxi#;{YP1FcZ{12FAIZ0Ufn2H zmus(Ekfa{FIY=_JW-`y3hfQJTW^NA4E%<^ykFj8D!KRmob7Lxjj&11r*bFu)@uj71 zhkOxmQ#%p5iT97oaV&2*8+jqOY_#axjW$HB*bcKpL{gB=RmQx>2{*T z{-W!n@l5VOU)(m~S-7Vzd_){qMy0(1Vc!E+4@7`7P5|XqCHvyzB;xYe@^Sq zSHFf{J~;a^$z!Z<@gk$5w2d}#WQDEWpL?oba}yE`AWMK^R+#*UTzkq;81osTIzU# zd;aDdtz@2ZpE#;^fWunW?H3Y5e}ar_s=JPlk6W083=`J}(<8(V?D-7BlA*VFGd^`j z`Zc$2U+Y6^WcK!#^0%MMJC7wmeKKEe*sEJgVwUscx26^OY`Ve1ch$8H^h`HCeE8t} zVgj0+oSdN%8$(I|GNPFY*zs}wIT?LV^#QGJ6G0BPXE|~bZ@;9Ry71X=XS-@NR;|a+ z_aM~R3OW2%3-klfvquc)jPg)NJ&yX`@0{5yD}~Bf>AB90)RKEbIdLvq)#fZX&hBBA z)1-Va%Kd0Aa#I{Qal#VcK*TSlLsbhpDD{```MQ@1=5JR2GN*f}-|^J%OiJC;th%`8Uk$a}-Wc8>mh*2;^|VQ2a~d~5g#r~&SIF8aFei{N zi04;Ah#renGcX1#b`snTbHUgwj?TuxKFqnfyT(Ok0x-=bub>s;8K#2zB6m96q7tdR zQ>q0{y`S70B&K5mIWlrm%ei5!>##EpYF3t2+ZQQ&_jO?$cPM6HjFU(!dnG&9;;QRT zxSXU1D5ET}+<-ZKfyymgp+3?2PX5`6IO*AT5&Mdqg2I{1@|Lvt^kMvlfhZkBX4G^a zqs3u;duT;ZlmhNn&!RDHR&6@`ox2jc&YxJ{_4BFH!{7d$-IOma337CFj0VFaYo7gt zQ`)QWJ!o%_?C_}ff|$P(D!oRI_Y94< zNMO@eSt~eda0)LIKSi2Ikx|21ETm9=JBR9u+~F*_FiZ8>ydAyP6XJtTZgyN)t_#*Yk-m|4=%{E*MIBQP#Y{;ML~l^WabLtdkNRlFqR(b0*CuPxLrsR zlvRV?SNzY)^$1WnZ6X^V|1m#bY+eDrRhNh9M!OTmgaN;rJ?=wI3H`Eq^ucdn-@0AD zJy98?pu2Qwi{s-c9Y~u3I$Y`Nffe23d1LK-a zo~P_ymy4QKK3?)K-biWyb}?CzIKd7w5EVF@aWn?u3DyFAUK0OorbZ{5tTOEqJ58P< zYvu0A$WV|rB4$Fvmo?UPJ-%r7wSwCY?PMzE7t_vg@>1Ax|8eZ0RSRI{NCaJK>Bqg> zTsWQ{I+LC4dSu=t4M>86-bqLbK=VDW)-Bv6GtDqgeIIQ!(-!i#?&-7dL+|I7eh");var a7=a1(ba);var a9=a5.getRange();a9.deleteContents();if(a9.startContainer==a5.document){a9.selectNodeContents(a5.body)}var bc=new ac();var bf=bc.addCaret(a9);var be=a3(a7,bf);var bd=false;if(!/body|td/.test(D.name(be))&&(a7||D.isInline(be))){a9.selectNode(bf);am(a9,be,true);bd=true}var bg=a2(ba);if(bg.firstChild&&bg.firstChild.className==="t-paste-container"){var bb=[];for(a6=0,a8=bg.childNodes.length;a6"))}a9.insertNode(bg);be=a3(a7,bf);if(bd){while(bf.parentNode!=be){D.unwrap(bf.parentNode)}D.unwrap(bf.parentNode)}g(a9.commonAncestorContainer);bf.style.display="inline";D.scrollTo(bf);bc.removeCaret(a9);O(a9)}}function f(){var a1=[//g,"",/mso-[^;"]*;?/ig,"",/<\/?(meta|link|style|o:|v:)[^>]*>((?:.|\n)*?<\/(meta|link|style|o:|v:)[^>]*>)?/ig,""];this.applicable=function(a4){return/class="?Mso|style="[^"]*mso-/i.test(a4)};function a2(a4){if(/^[\u2022\u00b7\u00a7\u00d8o\-]\u00a0+/.test(a4)){return"ul"}if(/^\s*\w+[\.\)]\u00a0{2,}/.test(a4)){return"ol"}}function a3(bh){var a9=D.create(document,"div",{innerHTML:bh});var bg=s(H.join(","),a9);var bb=-1,a6,bf={ul:{},ol:{}},a4=a9;for(var bc=0;bc]*>/g,"").replace(/ /g,"\u00a0");var ba=a2(bh);if(!ba||D.name(a7)!="p"){if(a7.innerHTML==""){D.remove(a7)}else{bf={ul:{},ol:{}};a4=a9;bb=-1}continue}var bd=parseFloat(a7.style.marginLeft||0);var be=bf[ba][bd];if(bd>bb||!be){be=D.create(document,ba);if(a4==a9){D.insertBefore(be,a7)}else{a4.appendChild(be)}bf[ba][bd]=be}if(a6!=ba){for(var a8 in bf){for(var a5 in bf[a8]){if(s.contains(be,bf[a8][a5])){delete bf[a8][a5]}}}}D.remove(a7.firstChild);a4=D.create(document,"li",{innerHTML:a7.innerHTML});be.appendChild(a4);D.remove(a7);bb=bd;a6=ba}return a9.innerHTML}this.clean=function(a5){for(var a4=0,a6=a1.length;a4]*"?/ig,"");return a5}}function i(a1){function a2(a5){var a3=0;for(var a4=a5.parentNode.firstChild;a4;a4=a4.nextSibling){if(a4!=a5&&a4.className!="t-marker"&&a4.nodeType==1){a3++}}return a3}this.findSuitable=function(a4,a3){if(!a3&&a2(a4)>0){return null}return D.parentOfType(a4,a1[0].tags)};this.findFormat=function(a7){for(var a3=0;a30){this.activate(a7,a6)}};this.apply=function(a9){var a8=[];for(var a6=0,a7=a9.length;a60){for(var a6=0,a9=ba.length;a61){var a6=a8.pop();var a7=a8[a8.length-1];if(a6.previousSibling&&a6.previousSibling.className=="t-marker"){a7.appendChild(a6.previousSibling)}if(a6.previousSibling==a7&&a6.style.cssText==a7.style.cssText){while(a6.firstChild){a7.appendChild(a6.firstChild)}D.remove(a6)}}}}function a0(a2,a1){i.call(this,a2);function a3(a7){var bi=a7.attributes,bf=s.trim;if(!bi){return}for(var a6=0,bd=bi.length;a6=0?D.toHex(a5):a5}}}}return}function a4(a9){var ba=s(af(a9)?a9.parentNode:a9);var a8=ba.parents().andSelf();for(var a6=0,a7=a8.length;a6'+a9.dataItem.Text+""}}}function aY(a3){X.call(this,a3);var a2=[{tags:["span"]}],a1=new a0(a2,a3.cssAttr);this.update=function(a4){a4.data("tColorPicker").close()};this.command=function(a4){return new aJ(s.extend(a4,{formatter:function(){var a5={};a5[a3.domAttr]=a4.value;return new F(a2,{style:a5},a3.cssAttr)}}))};this.willDelayExecution=ad;this.init=function(a6,a4){var a5=a4.editor;a6.tColorPicker({selectedColor:"#000000",onChange:function(a7){X.exec(a5,a3.name,a7.value)}})}}function ab(){X.call(this);var a2=[{tags:["span"]}],a1=new a0(a2,"className");this.command=function(a3){return new aJ(s.extend(a3,{formatter:function(){return new F(a2,{className:a3.value})}}))};this.update=function(a3,a5){var a4=a3.data("tSelectBox");a4.close();a4.value(a1.getFormat(a5))};this.init=function(a5,a3){var a4=a3.editor;a5.tSelectBox({data:a4.style,title:a4.localization.style,onItemCreate:function(a6){var a7=D.inlineStyle(a4.document,"span",{className:a6.dataItem.Value});a6.html=''+a6.html+""},onChange:function(a6){X.exec(a4,"style",a6.value)}})}}function y(a2){function a1(a5,a6){for(var a3=0;a3'+a6.dataItem.Text+""},onChange:function(a5){X.exec(a3,"formatBlock",a5.value)},highlightFirst:false})}}function aS(a1){c.call(this,a1);this.exec=function(){var a4=this.getRange(),be=q(a4),a7,bc=s.browser.msie?"":'
';var a6="p,h1,h2,h3,h4,h5,h6".split(","),bf=D.parentOfType(a4.startContainer,a6),a2=D.parentOfType(a4.endContainer,a6),a3=(bf&&!a2)||(!bf&&a2);a4.deleteContents();var bd=D.create(be,"a");a4.insertNode(bd);g(bd.parentNode);var a5=D.parentOfType(bd,["li"]),bg=D.parentOfType(bd,"h1,h2,h3,h4,h5,h6".split(","));if(a5){var a9=a4.cloneRange();a9.selectNode(a5);if(j(a9).length==0){var bh=D.create(be,"p");if(a5.nextSibling){am(a9,a5.parentNode)}D.insertAfter(bh,a5.parentNode);D.remove(a5.parentNode.childNodes.length==1?a5.parentNode:a5);bh.innerHTML=bc;a7=bh}}else{if(bg&&!bd.nextSibling){var bh=D.create(be,"p");D.insertAfter(bh,bg);bh.innerHTML=bc;D.remove(bd);a7=bh}}if(!a7){if(!(a5||bg)){new W([{tags:["p"]}]).apply([bd])}a4.selectNode(bd);var a8=D.parentOfType(bd,[a5?"li":bg?D.name(bg):"p"]);am(a4,a8,a3);var ba=a8.previousSibling;if(D.is(ba,"li")&&ba.firstChild&&!D.is(ba.firstChild,"br")){ba=ba.firstChild}a7=a8.nextSibling;if(D.is(a7,"li")&&a7.firstChild&&!D.is(a7.firstChild,"br")){a7=a7.firstChild}D.remove(a8);function bb(bi){if(bi.firstChild&&D.is(bi.firstChild,"br")){D.remove(bi.firstChild)}if(af(bi)&&bi.nodeValue==""){bi=bi.parentNode}if(bi&&!D.is(bi,"img")&&bi.innerHTML==""){bi.innerHTML=bc}}bb(ba);bb(a7);g(ba)}g(a7);if(!D.is(a7,"img")){a4.selectNodeContents(a7)}else{a4.setStartBefore(a7)}a4.collapse(true);D.scrollTo(a7);O(a4)}}function d(a1){c.call(this,a1);this.exec=function(){var a3=this.getRange();a3.deleteContents();var a2=D.create(q(a3),"br");a3.insertNode(a2);g(a2.parentNode);if(!s.browser.msie&&(!a2.nextSibling||D.isWhitespace(a2.nextSibling))){var a4=a2.cloneNode(true);a4.setAttribute("_moz_dirty","");D.insertAfter(a4,a2)}a3.setStartAfter(a2);a3.collapse(true);O(a3)}}function ap(a2){var a1=[a2=="ul"?"ol":"ul",a2];y.call(this,[{tags:a1}]);this.isFormatted=function(a6){var a3=[],a4;for(var a5=0;a51){D.insertAfter(a4[a4.length-1],a5);D.insertAfter(a4[1],a5);D[a3.length>0?"insertBefore":"insertAfter"](a4[0],a5)}}else{var a6=new b([{tags:["a"]}],a7);a6.finder=this.finder;a6.apply(a3)}}}function ao(a1){a1.formatter={toggle:function(a2){new b([{tags:["a"]}]).remove(j(a2))}};c.call(this,a1)}function aa(a2){c.call(this,a2);var a1;this.async=true;var a3=new aX();this.exec=function(){var a8=this.getRange();var a6=a8.collapsed;a8=this.lockRange(true);var bb=j(a8);var ba=null;var a5=this;function bc(bi){var bh=s("#t-editor-link-url",a9.element).val();if(bh&&bh!="http://"){a1={href:bh};var be=s("#t-editor-link-title",a9.element).val();if(be){a1.title=be}var bf=s("#t-editor-link-text",a9.element).val();if(bf!==ba){a1.innerHTML=bf}var bg=s("#t-editor-link-target",a9.element).is(":checked");if(bg){a1.target="_blank"}a3.apply(a8,a1)}a7(bi);if(a5.change){a5.change()}}function a7(be){be.preventDefault();a9.destroy();az(q(a8)).focus();a5.releaseRange(a8)}var bd=bb.length?a3.finder.findSuitable(bb[0]):null;var a4=bb.length<=1||(bb.length==2&&a6);var a9=ar.window.create(s.extend({},this.editor.dialogOptions,{title:"Insert link",html:new s.telerik.stringBuilder().cat('
').cat("
    ").cat('
  1. ').catIf('
  2. ',a4).cat('
  3. ').cat('
  4. ').cat("
").cat('
').cat('').cat(" or ").cat('Close').cat("
").cat("
").string(),onClose:a7})).hide().find(".t-dialog-insert").click(bc).end().find(".t-dialog-close").click(a7).end().find(".t-form-text-row input").keydown(function(be){if(be.keyCode==13){bc(be)}else{if(be.keyCode==27){a7(be)}}}).end().find("#t-editor-link-url").val(bd?bd.getAttribute("href",2):"http://").end().find("#t-editor-link-text").val(bb.length>0?(bb.length==1?bb[0].nodeValue:bb[0].nodeValue+bb[1].nodeValue):"").end().find("#t-editor-link-title").val(bd?bd.title:"").end().find("#t-editor-link-target").attr("checked",bd?bd.target=="_blank":false).end().show().data("tWindow").center();if(a4&&bb.length>0){ba=s("#t-editor-link-text",a9.element).val()}s("#t-editor-link-url",a9.element).focus().select()},this.redo=function(){var a4=this.lockRange(true);a3.apply(a4,a1);this.releaseRange(a4)}}function aT(a2){X.call(this,s.extend(a2,{command:ao}));var a1=new i([{tags:["a"]}]);this.init=function(a3){a3.attr("unselectable","on").addClass("t-state-disabled")};this.update=function(a3,a4){a3.toggleClass("t-state-disabled",!a1.isFormatted(a4)).removeClass("t-state-hover")}}function aO(a2){c.call(this,a2);this.async=true;var a1;function a3(a4,a5){if(a1.src&&a1.src!="http://"){if(!a4){a4=D.create(q(a5),"img",a1);a4.onload=a4.onerror=function(){a4.removeAttribute("complete");a4.removeAttribute("width");a4.removeAttribute("height")};a5.deleteContents();a5.insertNode(a4);a5.setStartAfter(a4);a5.setEndAfter(a4);O(a5);return true}else{D.attr(a4,a1)}}return false}this.redo=function(){var a4=this.lockRange();if(!a3(U.image(a4),a4)){this.releaseRange(a4)}};this.exec=function(){var a7=this.lockRange();var a4=false;var ba=U.image(a7);var a5=this;function bb(be){a1={src:s("#t-editor-image-url",a8.element).val(),alt:s("#t-editor-image-title",a8.element).val()};a4=a3(ba,a7);a6(be);if(a5.change){a5.change()}}function a6(be){be.preventDefault();a8.destroy();az(q(a7)).focus();if(!a4){a5.releaseRange(a7)}}var a9=this.editor.fileBrowser;var bc=a9&&a9.selectUrl!==undefined;function bd(){if(bc){new ar.imageBrowser(s(this).find(".t-image-browser"),s.extend(a9,{apply:bb,element:a5.editor.element,localization:a5.editor.localization}))}}var a8=ar.window.create(s.extend({width:750},this.editor.dialogOptions,{title:"Insert image",html:new s.telerik.stringBuilder().cat('
').catIf('
',bc).cat("
    ").cat('
  1. ').cat('
  2. ').cat("
").cat('
').cat('').cat(" or ").cat('Close').cat("
").cat("
").string(),onClose:a6,onActivate:bd})).hide().find(".t-dialog-insert").click(bb).end().find(".t-dialog-close").click(a6).end().find(".t-form-text-row input").keydown(function(be){if(be.keyCode==13){bb(be)}else{if(be.keyCode==27){a6(be)}}}).end().toggleClass("t-imagebrowser",bc).find("#t-editor-image-url").val(ba?ba.getAttribute("src",2):"http://").end().find("#t-editor-image-title").val(ba?ba.alt:"").end().show().data("tWindow").center();s("#t-editor-image-url",a8.element).focus().select()}}ar.selectbox=function(a1,a2){var a9;var a3=s(a1);var a5=a3.find(".t-input");var a6=this.dropDown=new ar.dropDown({effects:ar.fx.slide.defaults(),onItemCreate:a2.onItemCreate,onClick:function(ba){a8(a2.data[s(ba.item).index()].Value);a2.onChange({value:a9})}});function a4(){if(!a6.$items){a6.dataBind(a2.data)}}function a7(ba){a5.html(ba?ba:" ")}function a8(bc){a4();var bb=-1;for(var ba=0,bd=a2.data.length;ba0?"rtl":"");s(document.documentElement).bind("mousedown",s.proxy(function(bc){var ba=a6.$element;var bb=ba&&ba.parent().length>0;if(bb&&!s.contains(a1,bc.target)&&!s.contains(ba.parent()[0],bc.target)){a6.close()}},this))};s.fn.tSelectBox=function(a1){return ar.create(this,{name:"tSelectBox",init:function(a2,a3){return new ar.selectbox(a2,a3)},options:a1})};s.fn.tSelectBox.defaults={effects:ar.fx.slide.defaults()};ar.colorpicker=function(a1,a2){this.element=a1;var a3=s(a1);s.extend(this,a2);a3.bind("click",s.proxy(this.click,this)).find("*").attr("unselectable","on");if(this.selectedColor){a3.find(".t-selected-color").css("background-color",this.selectedColor)}s(a1.ownerDocument.documentElement).bind("mousedown",s.proxy(function(a4){if(!s(a4.target).closest(".t-colorpicker-popup").length){this.close()}},this));ar.bind(this,{change:this.onChange,load:this.onLoad})};ar.colorpicker.prototype={select:function(a1){if(a1){a1=D.toHex(a1);if(!ar.trigger(this.element,"change",{value:a1})){this.value(a1);this.close()}}else{ar.trigger(this.element,"change",{value:this.selectedColor})}},open:function(){var a1=this.popup();var a4=s(this.element);var a3=a4.offset();a3.top+=a4.outerHeight();if(a4.closest(".t-rtl").length){a3.left-=a1.outerWidth()-a4.outerWidth()}var a2="auto";a4.parents().andSelf().each(function(){a2=s(this).css("zIndex");if(Number(a2)){a2=Number(a2)+1;return false}});ar.fx._wrap(a1).css(s.extend({position:"absolute",zIndex:a2},a3));a1.find(".t-item").bind("click",s.proxy(function(a6){var a5=s(a6.target,a6.target.ownerDocument).css("background-color");this.select(a5)},this));ar.fx.play(this.effects,a1,{direction:"bottom"})},close:function(){if(!this.$popup){return}ar.fx.rewind(this.effects,this.$popup,{direction:"bottom"},s.proxy(function(){D.remove(this.$popup[0].parentNode);this.$popup=null},this))},toggle:function(){if(!this.$popup||!this.$popup.is(":visible")){this.open()}else{this.close()}},click:function(a1){if(s(a1.target).closest(".t-tool-icon").length>0){this.select()}else{this.toggle()}},value:function(a1){if(!a1){return this.selectedColor}a1=D.toHex(a1);this.selectedColor=a1;s(".t-selected-color",this.element).css("background-color",a1)},popup:function(){if(!this.$popup){this.$popup=s(ar.colorpicker.buildPopup(this)).hide().appendTo(document.body).find("*").attr("unselectable","on").end()}return this.$popup}};s.extend(ar.colorpicker,{buildPopup:function(a1){var a4=new ar.stringBuilder();a4.cat('
').cat('
    ');var a6=a1.data;var a3=(a1.value()||"").substring(1);for(var a2=0,a5=a6.length;a2')}a4.cat("
");return a4.string()}});s.fn.tColorPicker=function(a1){return ar.create(this,{name:"tColorPicker",init:function(a2,a3){return new ar.colorpicker(a2,a3)},options:a1})};s.fn.tColorPicker.defaults={data:"000000,7f7f7f,880015,ed1c24,ff7f27,fff200,22b14c,00a2e8,3f48cc,a349a4,ffffff,c3c3c3,b97a57,ffaec9,ffc90e,efe4b0,b5e61d,99d9ea,7092be,c8bfe7".split(","),selectedColor:null,effects:ar.fx.slide.defaults()};function aV(){var a2=new y([{tags:H}]);function a1(a3){return a3.style.marginLeft||0}this.apply=function(a8){var a6=a2.findSuitable(a8);if(a6.length){var a5=[];for(var a4=0;a4ul")[0];if(!bb){bb=D.create(a9.ownerDocument,D.name(bc));a7.append(bb)}while(a9&&a9.parentNode==bc){bb.appendChild(a9);a9=a5.shift()}}else{var a3=parseInt(a1(a9))+30;D.style(a9,{marginLeft:a3})}}}else{var ba=new W([{tags:H}],{style:{marginLeft:30}});ba.apply(a8)}};this.remove=function(a5){var a7=a2.findSuitable(a5);for(var a3=0;a31)||(D.ofType(a4[a3],["ul","ol"])&&a7>0)}if(a5){a2.removeClass("t-state-disabled");return}}a2.addClass("t-state-disabled").removeClass("t-state-hover")}}function aE(a1){this.editor=a1;this.formats=[]}aE.prototype={apply:function(a5){if(!this.hasPending()){return}var a4=new ac();a4.addCaret(a5);var a1=a5.startContainer.childNodes[a5.startOffset];var a7=a1.previousSibling;if(!a7.nodeValue){a7=a7.previousSibling}a5.setStart(a7,a7.nodeValue.length-1);a4.add(a5);if(j(a5).length==0){a4.remove(a5);a5.collapse(true);this.editor.selectRange(a5);return}var a3=a4.end.previousSibling.previousSibling;var a9,a6=this.formats;for(var a2=0;a20},isPending:function(a1){return !!this.getPending(a1)},getPending:function(a2){var a3=this.formats;for(var a1=0;a1",{src:'javascript:""',frameBorder:"0",className:"t-content"}).css("display","").insertBefore(a1)[0];var a2=a5.contentWindow||a5;var a4=a2.document||a5.contentDocument;var a3=a1.val().replace(/(<\/?img[^>]*>)[\r\n\v\f\t ]+/ig,"$1");if(!a3.length&&s.browser.mozilla){a3='
'}a4.designMode="On";a4.open();a4.write(new ar.stringBuilder().cat("").cat('').cat('").cat(s.map(a6,function(a7){return[''].join("")}).join("")).cat('').cat(a3).cat("").string());a4.close();return a2}function V(a1){ar.trigger(a1.element,"selectionChange")}function aI(a2){var a1=true;a2.window=ax(s(a2.textarea),a2.stylesheets);a2.document=a2.window.contentDocument||a2.window.document;a2.body=a2.document.body;s(a2.document).bind({keydown:function(a5){var a3=a2.keyboard.toolFromShortcut(a2.tools,a5);if(a3){a5.preventDefault();a2.exec(a3);return false}if(a2.keyboard.isTypingKey(a5)&&a2.pendingFormats.hasPending()){if(a1){a1=false}else{var a4=a2.getRange();a2.pendingFormats.apply(a4);a2.selectRange(a4)}}a2.keyboard.clearTimeout();a2.keyboard.keydown(a5)},keyup:function(a5){var a4=[8,9,33,34,35,36,37,38,39,40,40,45,46];if(s.browser.mozilla&&a5.keyCode==8){aK(a2,a5)}if(s.inArray(a5.keyCode,a4)>-1||(a5.keyCode==65&&a5.ctrlKey&&!a5.altKey&&!a5.shiftKey)){a2.pendingFormats.clear();V(a2)}if(a2.keyboard.isTypingKey(a5)){if(a2.pendingFormats.hasPending()){var a3=a2.getRange();a2.pendingFormats.apply(a3);a2.selectRange(a3)}}else{a1=true}a2.keyboard.keyup(a5)},mousedown:function(a3){a2.pendingFormats.clear();var a4=s(a3.target);if(!s.browser.gecko&&a3.which==2&&a4.is("a[href]")){window.open(a4.attr("href"),"_new")}},mouseup:function(){V(a2)}});s(a2.window).bind("blur",function(){var a3=a2.textarea.value,a4=a2.encodedValue();a2.update(a4);if(a4!=a3){ar.trigger(a2.element,"change")}});s(a2.body).bind("cut paste",function(a3){a2.clipboard["on"+a3.type](a3)})}ar.editor=function(a1,a2){if(/Mobile.*Safari/.test(navigator.userAgent)){return}var a3=this;this.element=a1;var a4=s(a1);a4.closest("form").bind("submit",function(){a3.update()});s.extend(this,a2);ar.bind(this,{load:this.onLoad,selectionChange:this.onSelectionChange,change:this.onChange,execute:this.onExecute,error:this.onError});for(var a7 in this.tools){this.tools[a7].name=a7.toLowerCase()}this.textarea=a4.find("textarea").attr("autocomplete","off")[0];aI(this);this.keyboard=new aH([new aR(this),new A(this)]);this.clipboard=new aA(this);this.pendingFormats=new aE(this);this.undoRedoStack=new R();function bb(bc){var bd=s.grep(bc.className.split(" "),function(be){return !/^t-(widget|tool-icon|state-hover|header|combobox|dropdown|selectbox|colorpicker)$/i.test(be)});return bd[0]?bd[0].substring(2):"custom"}function a8(bd,bc){if(!bc.key){return bd}return new ar.stringBuilder().cat(bd).cat(" (").catIf("Ctrl + ",bc.ctrl).catIf("Shift + ",bc.shift).catIf("Alt + ",bc.alt).cat(bc.key).cat(")").string()}var a6=".t-editor-toolbar > li > *",a5=".t-editor-button .t-tool-icon",a9=a5+":not(.t-state-disabled)",ba=a5+".t-state-disabled";a4.delegate(a9,"mouseenter",ar.hover).delegate(a9,"mouseleave",ar.leave).delegate(a5,"mousedown",ar.preventDefault).delegate(a9,"click",ar.stopAll(function(bc){a3.exec(bb(this))})).delegate(ba,"click",function(bc){bc.preventDefault()}).find(a6).each(function(){var bg=bb(this),bd=a3.tools[bg],bf=a3.localization[bg],be=s(this);if(!bd){return}if(bg=="fontSize"||bg=="fontName"){var bc=a3.localization[bg+"Inherit"]||aP[bg+"Inherit"];a3[bg][0].Text=bc;be.find("input").val(bc).end().find("span.t-input").text(bc).end()}bd.init(be,{title:a8(bf,bd),editor:a3})}).end().bind("selectionChange",function(){var bd=a3.getRange();a3.selectionRestorePoint=new an(bd);var bc=j(bd);if(!bc.length){bc=[bd.startContainer]}a4.find(a6).each(function(){var be=a3.tools[bb(this)];if(be){be.update(s(this),bc,a3.pendingFormats)}})});s(document).bind("DOMNodeInserted",function(bc){if(s.contains(bc.target,a3.element)||a3.element==bc.target){s(a3.element).find("iframe").remove();aI(a3)}}).bind("mousedown",function(bc){try{if(a3.keyboard.typingInProgress()){a3.keyboard.endTyping(true)}if(!a3.selectionRestorePoint){a3.selectionRestorePoint=new an(a3.getRange())}}catch(bc){}})};function aK(a1,a4){var a2=a1.getRange(),a5=a2.startContainer;if(a5==a1.body.firstChild||!D.isBlock(a5)||(a5.childNodes.length>0&&!(a5.childNodes.length==1&&D.is(a5.firstChild,"br")))){return}var a7=a5.previousSibling;while(a7&&!D.isBlock(a7)){a7=a7.previousSibling}if(!a7){return}var a6=a1.document.createTreeWalker(a7,NodeFilter.SHOW_TEXT,null,false);var a3;while(a3=a6.nextNode()){a7=a3}a2.setStart(a7,af(a7)?a7.nodeValue.length:0);a2.collapse(true);O(a2);D.remove(a5);a4.preventDefault()}s.extend(ar.editor,{BlockFormatFinder:y,BlockFormatter:W,Dom:D,FormatCommand:aJ,GenericCommand:aW,GreedyBlockFormatter:au,GreedyInlineFormatFinder:a0,GreedyInlineFormatter:F,ImageCommand:aO,IndentCommand:o,IndentFormatter:aV,InlineFormatFinder:i,InlineFormatter:b,InsertHtmlCommand:t,Keyboard:aH,LinkCommand:aa,LinkFormatFinder:I,LinkFormatter:aX,ListCommand:ay,ListFormatFinder:ap,ListFormatter:J,MSWordFormatCleaner:f,Marker:ac,NewLineCommand:d,OutdentCommand:S,ParagraphCommand:aS,PendingFormats:aE,RangeEnumerator:aj,RangeUtils:U,RestorePoint:an,SystemHandler:A,TypingHandler:aR,UndoRedoStack:R,UnlinkCommand:ao});ar.editor.prototype={value:function(a3){var a1=this.body;if(a3===undefined){return C(a1)}this.pendingFormats.clear();a3=a3.replace(//g,"");a3=a3.replace(/]*)>(.*)?<\/script>/ig,"$2");if(s.browser.mozilla){a3=a3.replace(/]*)>(\s*)?<\/p>/ig,'


')}if(s.browser.msie&&parseInt(s.browser.version)<9){a3="
"+a3;var a4="originalsrc",a2="originalhref";a3=a3.replace(/href\s*=\s*(?:'|")?([^'">\s]*)(?:'|")?/,a2+'="$1"');a3=a3.replace(/src\s*=\s*(?:'|")?([^'">\s]*)(?:'|")?/,a4+'="$1"');a1.innerHTML=a3;D.remove(a1.firstChild);s(a1).find("telerik\\:script,script,link,img,a").each(function(){var a5=this;if(a5[a2]){a5.setAttribute("href",a5[a2]);a5.removeAttribute(a2)}if(a5[a4]){a5.setAttribute("src",a5[a4]);a5.removeAttribute(a4)}})}else{a1.innerHTML=a3;if(s.browser.msie){g(a1)}}this.selectionRestorePoint=null;this.update()},focus:function(){this.window.focus()},update:function(a1){this.textarea.value=a1||this.encoded?this.encodedValue():this.value()},encodedValue:function(){return D.encode(this.value())},createRange:function(a1){return aQ(a1||this.document)},getSelection:function(){return aZ(this.document)},selectRange:function(a2){this.focus();var a1=this.getSelection();a1.removeAllRanges();a1.addRange(a2)},getRange:function(){var a2=this.getSelection();var a1=a2.rangeCount>0?a2.getRangeAt(0):this.createRange();if(a1.startContainer==this.document&&a1.endContainer==this.document&&a1.startOffset==0&&a1.endOffset==0){a1.setStart(this.body,0);a1.collapse(true)}return a1},selectedHtml:function(){return C(this.getRange().cloneContents())},paste:function(a1){this.clipboard.paste(a1)},exec:function(a4,a1){if(!this.keyboard.typingInProgress()){this.focus();if(this.selectionRestorePoint){this.selectRange(this.selectionRestorePoint.toRange());this.selectionRestorePoint=null}}a4=a4.toLowerCase();var a6="";for(var a3 in this.tools){if(a3.toLowerCase()==a4){a6=this.tools[a3];break}}if(a6){var a2=this.getRange();if(!/undo|redo/i.test(a4)&&a6.willDelayExecution(a2)){this.pendingFormats.toggle({name:a4,params:a1,command:a6.command});V(this);return}var a5=a6.command?a6.command(s.extend({range:a2},a1)):null;ar.trigger(this.element,"execute",{name:a4,command:a5});if(/undo|redo/i.test(a4)){this.undoRedoStack[a4]()}else{if(a5){if(!a5.managesUndoRedo){this.undoRedoStack.push(a5)}a5.editor=this;a5.exec();if(a5.async){a5.change=s.proxy(function(){V(this)},this);return}}}V(this)}}};s.fn.tEditor=function(a1){return ar.create(this,{name:"tEditor",init:function(a2,a3){return new ar.editor(a2,a3)},options:a1})};var ak={bold:[{tags:["strong"]},{tags:["span"],attr:{style:{fontWeight:"bold"}}}],italic:[{tags:["em"]},{tags:["span"],attr:{style:{fontStyle:"italic"}}}],underline:[{tags:["span"],attr:{style:{textDecoration:"underline"}}}],strikethrough:[{tags:["del"]},{tags:["span"],attr:{style:{textDecoration:"line-through"}}}],justifyLeft:[{tags:H,attr:{style:{textAlign:"left"}}},{tags:["img"],attr:{style:{"float":"left"}}}],justifyCenter:[{tags:H,attr:{style:{textAlign:"center"}}},{tags:["img"],attr:{style:{display:"block",marginLeft:"auto",marginRight:"auto"}}}],justifyRight:[{tags:H,attr:{style:{textAlign:"right"}}},{tags:["img"],attr:{style:{"float":"right"}}}],justifyFull:[{tags:H,attr:{style:{textAlign:"justify"}}}]};function ae(a3,a2){for(var a1=0;a1=0){return a2[a1]}}}function X(a1){s.extend(this,a1);this.init=function(a2,a3){a2.attr({unselectable:"on",title:a3.title})};this.command=function(a2){return new a1.command(a2)};this.update=function(){};this.willDelayExecution=function(){return false}}X.exec=function(a2,a3,a1){a2.exec(a3,{value:a1})};function ai(a1){X.call(this,a1);this.command=function(a2){return new aJ(s.extend(a2,{formatter:a1.formatter}))};this.update=function(a2,a6,a4){var a3=a4.isPending(this.name),a5=a1.finder.isFormatted(a6),a7=a3?!a5:a5;a2.toggleClass("t-state-active",a7)}}var Q=function(){return{isFormatted:function(){return false}}};var aP={bold:"Bold",italic:"Italic",underline:"Underline",strikethrough:"Strikethrough",justifyCenter:"Center text",justifyLeft:"Align text left",justifyRight:"Align text right",justifyFull:"Justify",insertUnorderedList:"Insert unordered list",insertOrderedList:"Insert ordered list",indent:"Indent",outdent:"Outdent",createLink:"Insert hyperlink",unlink:"Remove hyperlink",insertImage:"Insert image",insertHtml:"Insert HTML",fontName:"Select font family",fontNameInherit:"(inherited font)",fontSize:"Select font size",fontSizeInherit:"(inherited size)",formatBlock:"Format",style:"Styles",emptyFolder:"Empty Folder",uploadFile:"Upload",orderBy:"Arrange by:",orderBySize:"Size",orderByName:"Name",invalidFileType:'The selected file "{0}" is not valid. Supported file types are {1}.',deleteFile:'Are you sure you want to delete "{0}"?',overwriteFile:'A file with name "{0}" already exists in the current directory. Do you want to overwrite it?',directoryNotFound:"A directory with this name was not found."};s.fn.tEditor.defaults={localization:aP,formats:ak,encoded:true,stylesheets:[],dialogOptions:{modal:true,resizable:false,draggable:true,effects:{list:[{name:"toggle"}]}},fontName:[{Text:aP.fontNameInherit,Value:"inherit"},{Text:"Arial",Value:"Arial,Helvetica,sans-serif"},{Text:"Courier New",Value:"'Courier New',Courier,monospace"},{Text:"Georgia",Value:"Georgia,serif"},{Text:"Impact",Value:"Impact,Charcoal,sans-serif"},{Text:"Lucida Console",Value:"'Lucida Console',Monaco,monospace"},{Text:"Tahoma",Value:"Tahoma,Geneva,sans-serif"},{Text:"Times New Roman",Value:"'Times New Roman',Times,serif"},{Text:"Trebuchet MS",Value:"'Trebuchet MS',Helvetica,sans-serif"},{Text:"Verdana",Value:"Verdana,Geneva,sans-serif"}],fontSize:[{Text:aP.fontSizeInherit,Value:"inherit"},{Text:"1 (8pt)",Value:"xx-small"},{Text:"2 (10pt)",Value:"x-small"},{Text:"3 (12pt)",Value:"small"},{Text:"4 (14pt)",Value:"medium"},{Text:"5 (18pt)",Value:"large"},{Text:"6 (24pt)",Value:"x-large"},{Text:"7 (36pt)",Value:"xx-large"}],formatBlock:[{Text:"Paragraph",Value:"p"},{Text:"Quotation",Value:"blockquote"},{Text:"Heading 1",Value:"h1"},{Text:"Heading 2",Value:"h2"},{Text:"Heading 3",Value:"h3"},{Text:"Heading 4",Value:"h4"},{Text:"Heading 5",Value:"h5"},{Text:"Heading 6",Value:"h6"}],tools:{bold:new Y({key:"B",ctrl:true,format:ak.bold}),italic:new Y({key:"I",ctrl:true,format:ak.italic}),underline:new Y({key:"U",ctrl:true,format:ak.underline}),strikethrough:new Y({format:ak.strikethrough}),undo:{key:"Z",ctrl:true},redo:{key:"Y",ctrl:true},insertLineBreak:new X({key:13,shift:true,command:d}),insertParagraph:new X({key:13,command:aS}),justifyCenter:new P({format:ak.justifyCenter}),justifyLeft:new P({format:ak.justifyLeft}),justifyRight:new P({format:ak.justifyRight}),justifyFull:new P({format:ak.justifyFull}),insertUnorderedList:new aN({tag:"ul"}),insertOrderedList:new aN({tag:"ol"}),createLink:new X({key:"K",ctrl:true,command:aa}),unlink:new aT({key:"K",ctrl:true,shift:true}),insertImage:new X({command:aO}),indent:new X({command:o}),outdent:new ag(),insertHtml:new x(),style:new ab(),fontName:new aC({cssAttr:"font-family",domAttr:"fontFamily",name:"fontName"}),fontSize:new aC({cssAttr:"font-size",domAttr:"fontSize",name:"fontSize"}),formatBlock:new n(),foreColor:new aY({cssAttr:"color",domAttr:"color",name:"foreColor"}),backColor:new aY({cssAttr:"background-color",domAttr:"backgroundColor",name:"backColor"})}}})(jQuery); \ No newline at end of file diff --git a/NzbDrone.Web/Scripts/2011.1.414/telerik.grid.editing.min.js b/NzbDrone.Web/Scripts/2011.1.414/telerik.grid.editing.min.js deleted file mode 100644 index 89beda8c0..000000000 --- a/NzbDrone.Web/Scripts/2011.1.414/telerik.grid.editing.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(h){var c=h.telerik,j=/^\/Date\((.*?)\)\/$/;var g=function(l){this.formId=l;this._isBuild=false;var n="tUnobtrusiveValidation";var m="tUnobtrusiveContainer";var k=this.unobtrusive={adapters:[],parseElement:function(o,r){var p=h(o),q=p.parents("form")[0],t,s,u;if(!q){return}t=k.validationInfo(q);t.options.rules[o.name]=s={};t.options.messages[o.name]=u={};h.each(this.adapters,function(){var v="data-val-"+this.name,w=p.attr(v),x={};if(w!==undefined){v+="-";h.each(this.params,function(){x[this]=p.attr(v+this)});this.adapt({element:o,form:q,message:w,params:x,rules:s,messages:u})}});if(!r){t.attachValidation()}},parse:function(o){h(o).find(":input[data-val=true]").each(function(){k.parseElement(this,true)});h("form").each(function(){var p=k.validationInfo(this);if(p){p.attachValidation()}})},onError:function(o,r){var q=h(this).find("[data-valmsg-for='"+r[0].name+"']"),p=h.parseJSON(q.attr("data-valmsg-replace"))!==false;q.removeClass("field-validation-valid").addClass("field-validation-error");o.data(m,q);if(p){q.empty();o.removeClass("input-validation-error").appendTo(q)}else{o.hide()}},onErrors:function(o,r){var q=h(this).find("[data-valmsg-summary=true]"),p=q.find("ul");if(p&&p.length&&r.errorList.length){p.empty();q.addClass("validation-summary-errors").removeClass("validation-summary-valid");h.each(r.errorList,function(){h("
  • ").html(this.message).appendTo(p)})}},onSuccess:function(o){var q=o.data(m),p=h.parseJSON(q.attr("data-valmsg-replace"));if(q){q.addClass("field-valiion-valid").removeClass("field-validation-error");o.removeData(m);if(p){q.empty()}}},validationInfo:function(o){var q=h(o),p=q.data(n);if(!p){p={options:{errorClass:"input-validation-error",errorElement:"span",errorPlacement:h.proxy(k.onError,o),invalidHandler:h.proxy(k.onErrors,o),messages:{},rules:{},success:h.proxy(k.onSuccess,o)},attachValidation:function(){q.validate(this.options)},validate:function(){q.validate();return q.valid()}};q.data(n,p)}return p}}};g.prototype={build:function(){if(this._isBuild){return}this._isBuild=true;var o=[];function m(r,q,p){r.rules[q]=p;if(r.message){r.messages[q]=r.message}}function n(p){return p.replace(/^\s+|\s+$/g,"").split(/\s*,\s*/g)}function l(p){return p.substr(0,p.lastIndexOf(".")+1)}function k(q,p){if(q.indexOf("*.")===0){q=q.replace("*.",p)}return q}o=this.unobtrusive.adapters;o.add=function(r,q,p){if(!p){p=q;q=[]}this.push({name:r,params:q,adapt:p});return this};o.addBool=function(q,p){return this.add(q,function(r){m(r,p||q,true)})};o.addMinMax=function(s,q,u,p,r,t){return this.add(s,[r||"min",t||"max"],function(x){var v=x.params.min,w=x.params.max;if(v&&w){m(x,p,[v,w])}else{if(v){m(x,q,v)}else{if(w){m(x,u,w)}}}})};o.addSingleVal=function(q,r,p){return this.add(q,[r||"val"],function(s){m(s,p||q,s.params[r])})};o.addSingleVal("accept","exts").addSingleVal("regex","pattern");o.addBool("creditcard").addBool("date").addBool("digits").addBool("email").addBool("number").addBool("url");o.addMinMax("length","minlength","maxlength","rangelength").addMinMax("range","min","max","range");o.add("equalto",["other"],function(q){var p=h(q.form).find(":input[name="+q.params.other+"]")[0];m(q,"equalTo",p)});o.add("required",function(p){if(p.element.tagName.toUpperCase()!=="INPUT"||p.element.type.toUpperCase()!=="CHECKBOX"){m(p,"required",true)}});o.add("remote",["url","type","additionalfields"],function(r){var p={url:r.params.url,type:r.params.type||"GET",data:{}},q=l(r.element.name);h.each(n(r.params.additionalfields||r.element.name),function(s,u){var t=k(u,q);p.data[t]=function(){return h(r.form).find(":input[name='"+t+"']").val()}});m(r,"remote",p)});if(h.validator.unobtrusive&&h.validator.unobtrusive.adapters){h.extend(o,h.validator.unobtrusive.adapters)}h.validator.addMethod("regex",function(p,r,q){if(this.optional(r)){return true}var s=new RegExp(q).exec(p);return s&&s.index==0&&s[0].length==p.length});h.validator.addMethod("number",function(p,s){var q=c.cultureInfo.numericgroupsize;var r=new c.stringBuilder();r.cat("^-?(?:\\d+|\\d{1,").cat(q).cat("}(?:").cat(c.cultureInfo.numericgroupseparator).cat("\\d{").cat(q).cat("})+)(?:\\").cat(c.cultureInfo.numericdecimalseparator).cat("\\d+)?$");return this.optional(s)||new RegExp(r.string()).test(p)})},parse:function(){this.build();this.unobtrusive.parse(this.formId)}};var f=function(k){this.validationMetaData=k};f.prototype={build:function(o){h.validator.addMethod("regex",function(A,C,B){if(this.optional(C)){return true}var D=new RegExp(B).exec(A);return D&&D.index==0&&D[0].length==A.length});h.validator.addMethod("number",function(A,D){var B=c.cultureInfo.numericgroupsize;var C=new c.stringBuilder();C.cat("^-?(?:\\d+|\\d{1,").cat(B).cat("}(?:").cat(c.cultureInfo.numericgroupseparator).cat("\\d{").cat(B).cat("})+)(?:\\").cat(c.cultureInfo.numericdecimalseparator).cat("\\d+)?$");return this.optional(D)||new RegExp(C.string()).test(A)});function t(B,A,C){B.range=[A,C]}function p(A,B){A.regex=B}function z(A){A.required=true}function v(A,B){A.maxlength=B}function m(A,B,C){A[B]=C}function x(D){var A={};for(var C=0;C-1){var m=o.substring(0,n);var l=k[m]||{};l[o.substring(n+1)]=k[o];k[m]=i(l);delete k[o]}}return k}function d(l){var m,k,n;for(m in l){k=l[m];if(typeof k==="string"){n=j.exec(k);if(n){l[m]=new Date(parseInt(n[1]))}}else{if(h.isPlainObject(k)){d(k)}}}}c.editing.initialize=function(l){h.extend(l,this.implementation);var k=h(l.element);l.modelBinder=new c.grid.ModelBinder();l.formViewBinder=new c.grid.FormViewBinder({date:function(v,s){var u=l.columnFromMember(v);var t=u?u.format:"";return c.formatString(t||"{0:G}",s)}});if(l.isAjax()){if(l.editing.mode=="InCell"){d(l.editing.defaultDataItem||{});l.changeLog=new c.grid.ChangeLog(l.pageSize||(l.data&&l.data.length)||0);h(l.element).bind("dataBound",function(){l.changeLog.clear()});l.cellEditor=new c.grid.CellEditor({columns:l.columns,cellIndex:function(s){return l.cellIndex(s)},id:l.formId(),bind:h.proxy(l.formViewBinder.bind,l.formViewBinder),validate:h.proxy(l.validation,l)});k.delegate(".t-grid-save-changes:not(.t-state-disabled)","click",c.stopAll(function(s){l.submitChanges()}));k.delegate(".t-grid-cancel-changes","click",c.stopAll(function(s){l.cancelChanges()}));l.hasChanges=function(){return l.changeLog.dirty()};l.submitChanges=function(){if(l.changeLog.dirty()){var s=l.changeLog.inserted;var u=h.grep(l.changeLog.updated,function(w){return w!=undefined});var t=h.grep(l.changeLog.deleted,function(w){return w!=undefined});if(c.trigger(l.element,"submitChanges",{inserted:s,updated:u,deleted:t})){return}var v=l.ws?{inserted:h.map(s,function(w){return l._convert(w)}),updated:h.map(u,function(w){return l._convert(w)}),deleted:h.map(t,function(w){return l._convert(w)})}:l.changeLog.serialize(s,u,t);l.sendValues(v,"updateUrl")}};l.cancelChanges=function(){l.changeLog.clear();l.dataBind(l.data.slice(0));l.valid=true};l.cellIndex=function(s){return h(s).parent().find("td:not(.t-group-cell,.t-hierarchy-cell)").index(s)};l.rowIndex=function(s){return h(s).parent().find("tr:not(.t-detail-row,.t-grouping-row)").index(s)};var p;l.valid=true;l.editCell=function(v){var s=l.columns[l.cellIndex(v)];if(l.valid&&(s&&!s.readonly)){l.td=v;v=h(v);var u=v.parent();var w=l.rowIndex(u);var t=l.changeLog.get(w)||l.dataItem(u);p=v.find(".t-dirty");l.cellEditor.edit(v,t);c.trigger(l.element,"edit",{mode:u.hasClass("t-grid-new-row")?"insert":"edit",form:l.form()[0],dataItem:t,cell:v[0]})}};l.saveCell=function(v){l.valid=l.validate();if(l.valid){v=h(v);var u=v.parent();var t=l.dataItem(u);var w=i(l.modelBinder.bind(v));var s=false;if(c.trigger(l.element,"save",{mode:u.hasClass("t-grid-new-row")?"insert":"edit",dataItem:t,values:w,form:l.form()[0],cell:v[0]})){return}if(u.hasClass("t-grid-new-row")){l.changeLog.insert(l.rowIndex(u),w)}else{s=l.changeLog.update(l.rowIndex(u),t,w)}l.cellEditor.display(v,w);if(s||u.hasClass("t-grid-new-row")){p=h('')}if(p&&p.length){p.prependTo(l.td)}l.td=null}};l.td=null;l.$tbody.delegate("tr:not(.t-grouping-row) > td:not(.t-detail-cell,.t-grid-edit-cell,.t-group-cell,.t-hierarchy-cell)",l.editing.beginEdit||"click",function(s){if(h(this).closest("tbody")[0]==l.$tbody[0]){l.editCell(this)}});h(document).mousedown(function(s){if(l.td&&!h.contains(l.td,s.target)&&l.td!=s.target&&!h(s.target).closest(".t-animation-container").length){l.saveCell(l.td)}})}else{if(l.editing.beginEdit){l.$tbody.delegate("tr:not(.t-detail-row,.t-grouping-row,.t-grid-edit-row,.t-group-footer)",l.editing.beginEdit,function(s){if(!h(s.target).is(":button,a,:input,a>.t-icon")){l.editRow(h(this))}})}}k.delegate(".t-grid-edit","click",c.stopAll(function(s){l.editRow(h(this).closest("tr"))})).delegate(".t-grid-delete","click",c.stopAll(function(s){l.deleteRow(h(this).closest("tr"))})).delegate(".t-grid-add","click",c.stopAll(function(s){l.addRow()}))}else{k.delegate(".t-grid-delete","click",c.stop(function(s){if(l.editing.confirmDelete!==false&&!confirm(l.localization.deleteConfirmation)){s.preventDefault()}}));l.validation()}l.errorView=new c.grid.ErrorView();var r=new c.grid.DataCellBuilder({columns:l.columns});var m=h.grep(l.columns,function(s){return s.commands&&h.grep(s.commands,function(t){return t.name=="edit"})[0]})[0];if(!m){m={commands:[{name:"edit",buttonType:"Text"}]};m.insert=l.insertFor(m);m.edit=l.editFor(m)}var n=new c.grid.FormContainerBuilder({html:function(){return unescape(l.editing.editor)},insert:function(){return m.insert()},edit:function(){return m.edit()}});var q=l.editing.mode;var o=function(){return(l.groups||[]).length};if(q=="InLine"){l.rowEditor=new c.grid.Editor({id:l.formId(),cancel:r.display,edit:r.edit,insert:r.insert,groups:o,details:l.detail})}else{if(q=="InForm"){l.rowEditor=new c.grid.Editor({id:l.formId(),cancel:r.display,groups:o,details:l.detail,edit:function(){return''+n.edit()+""},insert:function(){return''+n.insert()+""}})}else{if(q=="PopUp"){l.rowEditor=new c.grid.PopUpEditor({id:l.formId(),edit:n.edit,container:l.element,settings:l.editing.popup,insert:n.insert,editTitle:l.localization.edit,insertTitle:l.localization.insert})}else{r=new c.grid.CellBuilder({columns:l.columns});l.rowEditor=new c.grid.Editor({id:l.formId(),cancel:r.display,edit:r.edit,insert:r.insert})}}}k.delegate(":input:not(.t-button):not(textarea)","keydown",function(t){if(t.keyCode==13||t.keyCode==27){t.preventDefault();var s={13:".t-grid-update, .t-grid-insert",27:".t-grid-cancel"};h(this).closest("tr").find(s[t.keyCode]).click()}})};c.editing.implementation={editFor:function(l){var m=this.localization;if(l.commands){var o=h.grep(l.commands,function(q){return q.name=="edit"})[0];if(o){var p=c.grid.ButtonBuilder.create(h.extend({text:m.update},o,{name:"update"}));var n=c.grid.ButtonBuilder.create(h.extend({text:m.cancel},o,{name:"cancel"}));var k=p.build()+n.build();return function(){return k}}else{return function(){return""}}}else{if(!l.readonly&&l.editor){return function(){return unescape(l.editor)}}}return this.displayFor(l)},insertFor:function(l){var m=this.localization;if(l.commands){var o=h.grep(l.commands,function(q){return q.name=="edit"})[0];if(o){var p=c.grid.ButtonBuilder.create(h.extend({text:m.insert},o,{name:"insert"}));var n=c.grid.ButtonBuilder.create(h.extend({text:m.cancel},o,{name:"cancel"}));var k=p.build()+n.build();return function(){return k}}else{return function(){return""}}}else{return this.editFor(l)}},insertRow:function(k){if(this.validate()){var l=this.extractValues(k);if(c.trigger(this.element,"save",{mode:"insert",values:l,form:this.form()[0]})){return}this.sendValues(l,"insertUrl")}},updateRow:function(k){if(this.validate()){var l=this.dataItem(k.data("tr")||k);var m=this.extractValues(k,(this.editing.mode!="InCell"||!this.ws));if(c.trigger(this.element,"save",{mode:"edit",dataItem:l,values:m,form:this.form()[0]})){return}if(this.editing.mode=="InCell"){m=h.extend(l,m)}d(m);this.sendValues(m,"updateUrl")}},deleteRow:function(k){var l=this.dataItem(k);if(this.editing.mode!="InCell"){if(c.trigger(this.element,"delete",{dataItem:l})){return}if(this.editing.confirmDelete===false||confirm(this.localization.deleteConfirmation)){this.sendValues(this.extractValues(k,true),"deleteUrl")}}else{if(this.editing.confirmDelete===false||confirm(this.localization.deleteConfirmation)){this.changeLog.erase(this.rowIndex(k),l);this.td=null;this.cancelRow(k);k.hide()}}},editRow:function(k){var m=this.dataItem(k);if(this.editing.mode!="InCell"){b();var n=this.rowEditor.edit(k,m);var l=this.form();l.undelegate(".t-grid-update").delegate(".t-grid-update","click",c.stopAll(h.proxy(function(){this.updateRow(n)},this))).undelegate(".t-grid-cancel").delegate(".t-grid-cancel","click",c.stopAll(h.proxy(function(){this.cancelRow(k)},this)));this.formViewBinder.bind(n,m);c.trigger(this.element,"edit",{mode:"edit",form:l[0],dataItem:m});this.validation()}else{if(this.valid){this.rowEditor.edit(k,m);this.td=row.find(":input:visible:first").focus().closest("td")[0];this.validation()}}},form:function(){return h("#"+this.formId())},addRow:function(){var n=h.extend(true,{},this.editing.defaultDataItem);if(this.editing.mode!="InCell"){b();var p=this.rowEditor.insert(this.$tbody,n);var l=this.form();l.undelegate(".t-grid-insert").delegate(".t-grid-insert","click",c.stopAll(h.proxy(function(){this.insertRow(p)},this))).undelegate(".t-grid-cancel").delegate(".t-grid-cancel","click",c.stopAll(h.proxy(function(){this.cancelRow(p)},this)));c.trigger(this.element,"edit",{mode:"insert",form:l[0]});this.validation()}else{if(this.valid){var m=this.rowEditor.insert(this.$tbody,n);this.changeLog.insert(n);this.td=m.find(":input:enabled:visible:first").focus().closest("td")[0];for(var k=this.columns.length-1;k>=0;k--){if(!this.columns[k].readonly){var o=m.children().eq(k);if(o[0]!=this.td){o.prepend('')}}}this.validation()}}},extractValues:function(p,m){var n=this.modelBinder.bind(p);if(m){var o=this.dataItem(p.data("tr")||p);for(var l in this.dataKeys){var k=this.valueFor({member:l})(o);if(k instanceof Date){k=c.formatString("{0:G}",k)}n[this.ws?l:this.dataKeys[l]]=k}}return n},cancelRow:function(k){if(!k.length){return}var l=this.dataItem(k);this.rowEditor.cancel(k,l);if(k.is(".t-grid-new-row")){return}c.trigger(this.element,"rowDataBound",{row:k[0],dataItem:l})},validate:function(){var k=this.form();if(k.length){var m=k.validate();var l=m.form();if(m.pendingRequest){m.formSubmitted=true;return false}return l}return true},cancel:function(){this.cancelRow(this.$tbody.find(">.t-grid-edit-row"))},_convert:function(o){for(var l in o){var k=o[l];if(k instanceof Date){var n=this.columnFromMember(l);var m="{0:G}";if(n&&n.format){m=n.format}o[l]=this.ws?"\\/Date("+k.getTime()+")\\/":c.formatString(m,k)}if(k==undefined){delete o[l]}if(h.isPlainObject(k)){this._convert(k)}}return o},sendValues:function(n,k){if(this.editing.mode!="InCell"||!this.ws){this._convert(n);for(var l in this.dataKeys){var m=this.valueFor({member:l})(n);if(m!=undefined){n[this.ws?l:this.dataKeys[l]]=m}}}h.ajax(this.ajaxOptions({data:this.ws?(this.editing.mode=="InCell"?n:{value:n}):n,url:this.url(k),hasErrors:h.proxy(this.hasErrors,this),displayErrors:h.proxy(this.displayErrors,this)}))},displayErrors:function(k){this.errorView.bind(h("#"+this.formId()),k.modelState)},hasErrors:function(k){var l=k.modelState;var m=false;if(l){h.each(l,function(n,o){if("errors" in o){m=true;return false}})}return m},formId:function(){return h(this.element).attr("id")+"form"},validation:function(){this.validator().parse()},validator:function(){if(this.validationMetadata){return new f(this.validationMetadata)}else{return new g(h("#"+this.formId()))}}};c.grid.ModelBinder=function(){this.binders={":input.t-autocomplete":function(){return h(this).val()},".t-numerictextbox :input":function(){return h(this).val()},":input:not(.t-input):not(:radio),:radio:checked":function(){return h(this).val()},":checkbox":function(){return h(this).is(":checked")},".t-datepicker :input":function(){return h(this).data("tDatePicker").value()},".t-timepicker :input":function(){return h(this).data("tTimePicker").value()},".t-datetimepicker :input":function(){return h(this).data("tDateTimePicker").value()},".t-editor textarea:hidden":function(){var k=h(this).closest(".t-editor").data("tEditor");if(k.encoded){return k.encodedValue()}return k.value()}};this.bind=function(k){var l={};h.each(this.binders,function(m,n){k.find(m).each(function(){if(!this.disabled){l[this.name]=n.call(this)}})});return l}};c.grid.FormViewBinder=function(m){this.converters=m||{};this.binders={":input:not(:radio)":function(n){if(typeof n=="boolean"){n=n+""}h(this).val(n)},":checkbox":function(n){h(this).attr("checked",n==true)},":radio":function(o){var n=h(this).val();if(typeof o=="boolean"){n=n.toLowerCase()}if(n==o.toString()){h(this).attr("checked",true)}}};function l(n){return function(o){h(this).data(n).value(o)}}function k(){return function(n){h(this).closest(".t-editor").data("tEditor").value(n)}}this.binders[".t-numerictextbox :input"]=l("tTextBox");this.binders[".t-dropdown :input:hidden"]=l("tDropDownList");this.binders[".t-datepicker :input"]=l("tDatePicker");this.binders[".t-datetimepicker :input"]=l("tDateTimePicker");this.binders[".t-combobox :input:hidden"]=l("tComboBox");this.binders[".t-editor textarea:hidden"]=k();this.evaluate=function(o,r){if(r!=null){var n=o,p=false,t=r.split(".");while(t.length){var u=t.shift();if(n!=null&&typeof(n[u])!="undefined"){n=n[u];p=true}else{if(p){p=false;break}}}if(p&&!h.isPlainObject(n)){var q=j.exec(n);if(q){n=new Date(parseInt(q[1]))}var s=c.getType(n);if(s in this.converters){n=this.converters[s](r,n)}return n}}};this.bind=function(p,o){var n;h.each(this.binders,h.proxy(function(q,r){p.find(q).each(h.proxy(function(t,u){var s=this.evaluate(o,u.name);if(s!=n){r.call(u,s)}},this))},this))}};c.grid.CellBuilder=function(k){function l(n,m){return h.map(k.columns,function(p,o){return"':">")+p[o==0?m:"display"](n)+""}).join("")}this.edit=function(m){return l(m,"edit")};this.insert=function(m){return l(m,"insert")};this.display=function(m){return l(m,"display")}};c.grid.DataCellBuilder=function(k){function l(n,m){return h.map(k.columns,function(p,o){return"':">")+p[m](n)+""}).join("")}this.edit=function(m){return l(m,"edit")};this.insert=function(m){return l(m,"insert")};this.display=function(m){return l(m,"display")}};c.grid.FormContainerBuilder=function(k){function l(m){return'
    '+k.html()+k[m]()+"
    "}this.edit=function(){return l("edit")};this.insert=function(){return l("insert")}};function e(k){return h("
    ",{className:"t-edit-form",id:k}).submit(c.preventDefault)}c.grid.PopUpEditor=function(m){var l;function k(){var o=l.data("tWindow");o&&o.close();l.remove()}function n(p,o){l=h("
    ",{id:m.container.id+"PopUp"}).appendTo(m.container).css({top:0,left:"50%",marginLeft:-90}).tWindow(m.settings).find(".t-window-content").append(m[o](p)).wrapInner(e(m.id)).end();h(m.container).one("dataBound",k);l.find("t-close").bind("close",c.stopAll(k)).end().data("tWindow").open().title(m[o+"Title"]);return l}this.edit=function(o,p){o.addClass("t-grid-edit-row");return n(p,"edit").data("tr",o)};this.insert=function(o,p){return n(p,"insert")};this.cancel=function(o){o.removeClass("t-grid-edit-row");k()}};c.grid.Editor=function(m){var l=m.groups||function(){return 0};function k(n,o,p){var q=n.find(".t-group-cell,.t-hierarchy-cell");n.addClass("t-grid-edit-row").empty().append(q).append(m[p](o)).closest("table").wrap(function(){if(!h(this).parent().is("form")){return e(m.id)}})}this.cancel=function(n,o){if(n.is(".t-grid-new-row")){n.remove()}else{k(n,o,"cancel");n.removeClass("t-grid-edit-row")}};this.insert=function(p,o){var q=''+new Array(l()+1).join('')+((m.details)?'':"")+"";var n=h(q);p.prepend(n);k(n,o,"insert");return n};this.edit=function(n,o){k(n,o,"edit");return n}};c.grid.CellEditor=function(k){this.edit=function(n,m){var l=k.columns[k.cellIndex(n)];if(!l.readonly){n.parent().addClass("t-grid-edit-row").end().empty().html(l.edit(m)).closest("table").wrap(function(){if(!h(this).parent().is("form")){return e(k.id)}});k.bind(n,m);k.validate();n.find(":input:visible:first").trigger("focusin").focus();n.addClass("t-grid-edit-cell")}return !l.readonly};this.display=function(n,m){var l=k.columns[k.cellIndex(n)];n.removeClass("t-grid-edit-cell").empty().html(l.display(m)).parent().removeClass("t-grid-edit-row")}};c.grid.ChangeLog=function(l){this.insert=function(m,o){if(o==undefined){o=m;this.inserted.splice(0,0,o)}else{var n=this.inserted[m];if(n===undefined){this.inserted.splice(0,0,o)}else{h.extend(n,o)}}};this.get=function(n){var m=this.inserted[n];if(this.inserted[n]){return m}return this.updated[n-this.inserted.length]};this.update=function(s,p,o){s=s-this.inserted.length;var t=this.updated[s]||p||{};var r=false;for(var m in o){var q=t[m],n=o[m];if(q instanceof Date){if(n.getTime()!==q.getTime()){r=true}}else{if(n!==q){r=true}}}if(r){this.updated[s]=h.extend({},t,o)}return r};this.erase=function(n,p){var m=this.inserted[n];if(m){this.inserted.splice(n,1)}else{n=n-this.inserted.length;var o=this.updated[n];if(o){delete this.updated[n]}this.deleted[n]=p}};this.clear=function(){this.updated=new Array(l);this.deleted=new Array(l);this.inserted=[]};function k(n,r,t){var u={};for(var s=0,o=0;s .t-grid-content",g.element).bind("scroll",function(){g.hideFilter()});c(document).click(function(h){if(h.which!=3){g.hideFilter()}});g.$header.find(".t-grid-filter").click(c.proxy(g.showFilter,g)).hover(function(){c(this).toggleClass("t-state-hover")})};b.filtering.implementation={createFilterCommands:function(h,g){var i={};c.each(this.localization,function(m,j){var k="filter"+g.type;var l=m.indexOf(k);if(l>-1){i[m.substring(l+k.length).toLowerCase()]=j}});h.cat('")},createTypeSpecificInput:function(j,g,h,i){if(g.type=="Date"){j.cat('
    ').cat('').cat('
    ')}else{if(g.type=="Boolean"){j.cat('
    ').cat('
    ")}else{if(g.type=="Enum"){j.cat("
    ")}else{if(g.type=="Number"){j.cat('
    ').cat('').cat("
    ")}else{j.cat('')}}}}},createFilterMenu:function(g){var j=new b.stringBuilder();j.cat('
    ");var i=c(j.string());c.each(g.filters||[],function(k){i.find(".t-filter-operator:eq("+k+")").val(this.operator).end().find(":text:eq("+k+"),select:not(.t-filter-operator):eq("+k+")").val(a(g,this.value));if(g.type=="Boolean"){i.find(":radio[id$="+this.value+"]").attr("checked",true)}});return i.find(".t-datepicker .t-input").each(function(){c(this).tDatePicker({format:f(g)})}).end().find(".t-numerictextbox .t-input").each(function(){c(this).tTextBox({type:"numeric",minValue:null,maxValue:null,numFormat:"",groupSeparator:""})}).end().appendTo(this.element)},showFilter:function(m){m.stopPropagation();var g=c(m.target).closest(".t-grid-filter");this.hideFilter(function(){return this.parentNode!=g[0]});var k=g.data("filter");if(!k){var h=this.columns[this.$columns().index(g.parent())];k=this.createFilterMenu(h).data("column",h).click(function(p){p.stopPropagation();if(c(p.target).parents(".t-datepicker").length==0){c(".t-datepicker .t-input",this).each(function(){c(this).data("tDatePicker").hidePopup()})}}).find(".t-filter-button").click(c.proxy(this.filterClick,this)).end().find(".t-clear-button").click(c.proxy(this.clearClick,this)).end().find("input[type=text]").keyup(c.proxy(function(p){if(p.keyCode==13){this.filterClick(p)}},this)).end();g.data("filter",k)}var l=0;c(this.element).find("> .t-grouping-header, > .t-grid-toolbar").add(this.$header).each(function(){l+=this.offsetHeight});var i={top:l};var n=-this.$headerWrap.scrollLeft()-1;g.parent().add(g.parent().prevAll("th")).each(function(){if(c(this).css("display")!="none"){n+=this.offsetWidth}});var j=n-g.outerWidth();var o=k.outerWidth()||k.find(".t-group").outerWidth();if(j+o>this.$header.outerWidth()){j=n-o+1}if(c(this.element).closest(".t-rtl").length){i.right=j+(c.browser.mozilla||c.browser.safari?18:0)}else{i.left=j}k.css(i);b.fx[k.find(".t-filter-options").is(":visible")?"rewind":"play"](d,k.find(".t-filter-options"),{direction:"bottom"})},hideFilter:function(g){g=g||function(){return true};c(".t-grid .t-animation-container").find(".t-datepicker .t-input").each(function(){c(this).data("tDatePicker").hidePopup()}).end().find(".t-filter-options").filter(g).each(function(){b.fx.rewind(d,c(this),{direction:"bottom"})})},clearClick:function(i){i.preventDefault();var h=c(i.target);var g=h.closest(".t-animation-container").data("column");g.filters=null;h.parent().find("input").removeAttr("checked").removeClass("t-state-error").not(":radio").val("").end().end().find("select").removeClass("t-state-error").find("option:first").attr("selected","selected");this.filter(this.filterExpr())},filterClick:function(j){j.preventDefault();var i=c(j.target);var g=i.closest(".t-animation-container").data("column");g.filters=[];var h=false;i.closest(".t-filter-options").find("input[type=text]:visible,select:not(.t-filter-operator)").each(c.proxy(function(p,n){var l=c(n);var k=c.trim(l.val());if(!k){l.removeClass("t-state-error");return true}var m=this.isValidFilterValue(g,k);l.toggleClass("t-state-error",!m);if(!m){h=true;return true}var o=l.prev("select").val()||l.parent().prev("select").val()||l.parent().parent().prev("select").val();if(k!=this.localization.filterSelectValue){g.filters.push({operator:o,value:k})}},this));i.parent().find("input:checked").each(c.proxy(function(m,l){var n=c(l);var k=c(l).attr("value");g.filters.push({operator:"eq",value:k})},this));if(!h){if(g.filters.length>0){this.filter(this.filterExpr())}this.hideFilter()}},isValidFilterValue:function(g,h){if(g.type=="Number"){return !isNaN(h)}else{if(g.type=="Date"){var i;if(h.indexOf("Date(")>-1){i=new Date(parseInt(h.replace(/^\/Date\((.*?)\)\/$/,"$1")))}else{i=b.datetime.parse({value:h,format:f(g)})}return i!=undefined}}return true},encodeFilterValue:function(g,h){switch(g.type){case"String":return"'"+h.replace(e,"''")+"'";case"Date":var i;if(h.indexOf("Date(")>-1){i=new Date(parseInt(h.replace(/^\/Date\((.*?)\)\/$/,"$1")))}else{i=b.datetime.parse({value:h,format:f(g)}).toDate()}return"datetime'"+b.formatString("{0:yyyy-MM-ddTHH-mm-ss}",i)+"'"}return h},filterExpr:function(){var h=[];for(var g=0;g');f.$groupHeader=d("> .t-grouping-header",f.element);function h(){var k=d.map(f.$groupHeader.find(".t-group-indicator"),function(l){var m=d(l);var n=m.offset().left;var o=m.outerWidth();return{left:n,right:n+o,width:o,$group:m}});return{first:k[0],all:k,last:k[k.length-1]}}function g(u){var l=u.$cue.text();if(!d.contains(f.element,u.target)||!d(u.target).closest(".t-grouping-header").length||(f.groupFromTitle(l)&&u.$draggable.closest(".t-header").length)){f.$groupDropCue.remove();return}var w=d(f.element),o=w.find("> .t-grid-toolbar"),m=o.outerHeight()+c,q=h(),p=w.closest(".t-rtl").length;if(!q.all.length){var r=p?o.width()-a:a;f.$groupDropCue.css({top:m,left:r}).appendTo(f.$groupHeader);return}var v=q.first;var t=q.last;var k=parseInt(v.$group.css("marginLeft"));var s=parseInt(v.$group.css("marginRight"));var n=d.grep(q.all,function(x){return u.pageX>=x.left-k-s&&u.pageX<=x.right})[0];if(!n&&v){if(!p&&u.pageX=0){f.groups.splice(d.inArray(m,f.groups),1);f.groups.splice(o,0,m)}f.groupBy=d.map(f.groups,function(q){return q.member+"-"+q.order}).join("~");if(this.isAjax()){var p=this.$groupHeader.find('div:contains("'+l+'")');if(p.length==0){var k=new d.telerik.stringBuilder().cat('").string();p=d(k).appendTo(this.$groupHeader)}if(this.$groupDropCue.is(":visible")){p.insertBefore(this.$groupDropCue)}p.find(".t-link .t-icon").toggleClass("t-arrow-up-small",m.order=="asc").toggleClass("t-arrow-down-small",m.order=="desc").html("("+(m.order=="asc"?f.localization.sortedAsc:f.localization.sortedDesc)+")");this.ajaxRequest()}else{this.serverRequest()}};f.unGroup=function(l){var k=f.groupFromTitle(l);f.groups.splice(d.inArray(k,f.groups),1);if(f.groups.length==0){f.$groupHeader.html(f.localization.groupHint)}f.groupBy=d.map(f.groups,function(m){return m.member+"-"+m.order}).join("~");if(f.isAjax()){f.$groupHeader.find('div:contains("'+k.title+'")').remove();f.ajaxRequest()}else{f.serverRequest()}},f.normalizeColumns=function(n){var o=f.groups.length;var m=n-f.$tbody.parent().find(" > colgroup > col").length;if(m==0){return}var p=f.$tbody.parent().add(f.$headerWrap.find("table")).add(f.$footer.find("table"));if(d.browser.msie){if(m>0){d(new b.stringBuilder().rep('',m).string()).prependTo(p.find("colgroup"));d(new b.stringBuilder().rep(' ',m).string()).insertBefore(p.find("th.t-header:first"));d(new b.stringBuilder().rep(' ',m).string()).insertBefore(p.find("tr.t-footer-template > td:first"))}else{p.find("th:lt("+Math.abs(m)+"), tr.t-footer-template > td:lt("+Math.abs(m)+")").remove().end().find("col:lt("+Math.abs(m)+")").remove()}var k=[];var l=0;d("table, .t-grid-bottom",f.element).each(function(){k.push(this.parentNode)}).appendTo(d("
    ")).each(function(){k[l++].appendChild(this)})}else{p.find("col.t-group-col").remove();d(new b.stringBuilder().rep('',o).string()).prependTo(p.find("colgroup"));p.find("th.t-group-cell").remove();p.find("tr.t-footer-template > td.t-group-cell").remove();d(new b.stringBuilder().rep(' ',o).string()).insertBefore(p.find("th.t-header:first"));d(new b.stringBuilder().rep(' ',o).string()).insertBefore(p.find("tr.t-footer-template > td:first"))}},f.bindGroup=function(n,r,q,p){var o=f.groups[p];var t=n.Key;var m=d.grep(f.columns,function(l){return o.member==l.member})[0];if(m&&(m.format||m.type=="Date")){t=b.formatString(m.format||"{0:G}",t)}q.cat('').rep('',p).cat('

    ');if(m){q.cat(m.groupHeader(d.extend({Title:o.title,Key:t},n.Aggregates[m.member])))}else{q.cat(o.title+": "+t)}q.cat("

    ");if(n.HasSubgroups){for(var k=0,s=n.Items.length;k').rep('',f.groups.length);d.each(f.columns,function(){q.cat("");if(this.groupFooter){q.cat(this.groupFooter(n.Aggregates[this.member]))}q.cat("")});q.cat("")}}}})(jQuery); \ No newline at end of file diff --git a/NzbDrone.Web/Scripts/2011.1.414/telerik.grid.min.js b/NzbDrone.Web/Scripts/2011.1.414/telerik.grid.min.js deleted file mode 100644 index e6ebd531e..000000000 --- a/NzbDrone.Web/Scripts/2011.1.414/telerik.grid.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(c){var g=c.telerik;var a=/"\\\/Date\((.*?)\)\\\/"/g;function d(h){return new Function("data",("var p=[];with(data){p.push('"+unescape(h).replace(/[\r\t\n]/g," ").replace(/'(?=[^#]*#>)/g,"\t").split("'").join("\\'").split("\t").join("'").replace(/<#=(.+?)#>/g,"',$1,'").split("<#").join("');").split("#>").join("p.push('")+"');}return p.join('');"))}function f(h){return(h!=null?h+"":"").replace(/&/g,"&").replace(//g,">")}g.grid=function(h,j){this.element=h;this.groups=[];this.editing={};this.filterBy="";this.groupBy="";this.orderBy="";c.extend(this,j);this.sorted=c.grep(this.columns,function(i){return i.order});this.$tbody=c("> .t-grid-content > table > tbody",h);this.scrollable=this.$tbody.length>0;if(!this.scrollable){this.$tbody=c("> table > tbody",h);this.$header=c("> table > thead tr",h);this.$footer=c("> table > tfoot",h)}else{c("> .t-grid-content",h).tScrollable();this.$header=c("> .t-grid-header tr",h);this.$footer=c("> .t-grid-footer",h)}this.$headerWrap=c("> .t-grid-header > .t-grid-header-wrap",h);this.$footerWrap=c("> .t-grid-footer > .t-grid-footer-wrap",h);var o=this.$headerWrap.add(this.$footerWrap);c("> .t-grid-content",h).bind("scroll",function(){o.scrollLeft(this.scrollLeft)});this.$tbody.delegate(".t-hierarchy-cell .t-plus, .t-hierarchy-cell .t-minus","click",g.stopAll(function(t){var r=c(t.target);var q=r.hasClass("t-plus");r.toggleClass("t-minus",q).toggleClass("t-plus",!q);var i=r.closest("tr.t-master-row");if(this.detail&&!i.next().hasClass("t-detail-row")){var s=0;c.each(this.columns,function(){if(!this.hidden){s++}});c(new g.stringBuilder().cat('').rep('',i.find(".t-group-cell").length).cat('').cat('').cat(this.displayDetails(this.dataItem(i))).cat("").string()).insertAfter(i)}g.trigger(this.element,q?"detailViewExpand":"detailViewCollapse",{masterRow:i[0],detailRow:i.next(".t-detail-row")[0]});i.next().toggle(q)},this));this.$pager=c("> .t-grid-pager .t-pager",h);var n=new g.dropDown({effects:g.fx.slide.defaults(),onClick:c.proxy(function(i){this.changePageSize(c(i.item).text());n.close()},this)});n.dataBind(j.pageSizesInDropDown||[]);c(document.documentElement).bind("mousedown",function(q){var i=n.$element[0];if(!c.contains(i,q.target)){n.close()}});this.$pager.delegate(".t-state-disabled","click",g.preventDefault).delegate(".t-link:not(.t-state-disabled)","mouseenter",g.hover).delegate(".t-link:not(.t-state-disabled)","mouseleave",g.leave).delegate("input[type=text]","keydown",c.proxy(this.pagerKeyDown,this)).delegate(".t-page-size .t-dropdown-wrap","click",function(){var i=c(this);n.open({offset:i.offset(),outerHeight:i.outerHeight(),outerWidth:i.outerWidth(),zIndex:g.getElementZIndex(this)})});c("> .t-grid-pager",h).delegate(".t-refresh","click",c.proxy(this.refreshClick,this));c(h).delegate(".t-button","hover",g.preventDefault);if(this.sort){this.$header.delegate(".t-link","hover",function(){c(this).toggleClass("t-state-hover")})}var p="tr:not(.t-grouping-row,.t-detail-row,.t-no-data,:has(>.t-edit-container))";if(this.selectable){var m=this.$tbody[0];var l=this;this.$tbody.delegate(p,"click",function(i){if(this.parentNode==m){l.rowClick(i)}}).delegate(p,"hover",function(){if(this.parentNode==m){c(this).toggleClass("t-state-hover")}})}if(this.isAjax()){this.$pager.delegate(".t-link:not(.t-state-disabled)","click",g.stop(this.pagerClick,this));if(this.sort){this.$header.delegate(".t-link","click",g.stop(this.headerClick,this))}}for(var k=0;k.t-icon")){j.stopPropagation();var h=i.closest("tr").addClass("t-state-selected").siblings().removeClass("t-state-selected").end();g.trigger(this.element,"rowSelect",{row:h[0]})}},$rows:function(){return this.$tbody.find("> tr:not(.t-grouping-row,.t-detail-row)")},expandRow:function(h){c(h).find("> td .t-plus, > td .t-expand").click()},collapseRow:function(h){c(h).find("> td .t-minus, > td .t-collapse").click()},headerClick:function(h){h.preventDefault();this.toggleOrder(this.$columns().index(c(h.target).closest("th")));this.sort(this.sortExpr())},refreshClick:function(i,h){if(c(h).is(".t-loading")){return}if(this.isAjax()){i.preventDefault();this.ajaxRequest(true)}},sort:function(h){this.orderBy=h;this.ajaxRequest()},columnFromTitle:function(i){i=c.trim(i);var h=c.grep(this.$columns(),function(j){return c.trim(c(j).text())==i})[0];if(h){return this.columns[this.$columns().index(h)]}return c.grep(this.columns,function(j){return j.title==i})[0]},columnFromMember:function(h){var i=c.grep(this.columns,function(j){return j.member==h})[0];if(!i){i=c.grep(this.columns,function(k){var j="."+k.member;return h.substr(h.length-j.length)==j})[0]}return i},toggleOrder:function(h){h=typeof h=="number"?this.columns[h]:h;var j="asc";if(h.order=="asc"){j="desc"}else{if(h.order=="desc"){j=null}}h.order=j;var i=c.inArray(h,this.sorted);if(this.sortMode=="single"&&i<0){c.each(this.sorted,function(){this.order=null});this.sorted=[]}if(i<0&&j){this.sorted.push(h)}if(!j){this.sorted.splice(i,1)}},sortExpr:function(){return c.map(this.sorted,function(h){return h.member+"-"+h.order}).join("~")},pagerKeyDown:function(h){if(h.keyCode==13){var i=this.sanitizePage(c(h.target).val());if(i!=this.currentPage){this.pageTo(i)}else{c(h.target).val(i)}}},isAjax:function(){return this.ajax||this.ws||this.onDataBinding},url:function(h){return(this.ajax||this.ws)[h]},pagerClick:function(m){m.preventDefault();var i=c(m.target).closest(".t-link");var j=this.currentPage;var k=i.find(".t-icon");if(k.hasClass("t-arrow-next")){j++}else{if(k.hasClass("t-arrow-last")){j=this.totalPages()}else{if(k.hasClass("t-arrow-prev")){j--}else{if(k.hasClass("t-arrow-first")){j=1}else{var h=i.text();if(h=="..."){var l=i.parent().children().index(i);if(l==0){j=parseInt(i.next().text())-1}else{j=parseInt(i.prev().text())+1}}else{j=parseInt(h)}}}}}this.pageTo(isFinite(j)?j:this.currentPage)},changePageSize:function(i){var h=parseInt(i,10);if(isNaN(h)||h<1){return this.pageSize}h=Math.max(h,1);this.pageSize=h;if(this.isAjax()){this.ajaxRequest()}else{this.serverRequest()}},pageTo:function(h){this.currentPage=h;if(this.isAjax()){this.ajaxRequest()}else{this.serverRequest()}},ajaxOptions:function(i){var h={type:"POST",dataType:"text",dataFilter:function(k,l){return k.replace(a,"new Date($1)")},error:c.proxy(function(l,k){if(g.ajaxError(this.element,"error",l,k)){return}},this),complete:c.proxy(this.hideBusy,this),success:c.proxy(function(l,m,k){try{l=eval("("+l+")")}catch(n){if(!g.ajaxError(this.element,"error",k,"parseeror")){alert("Error! The requested URL did not return JSON.")}return}l=l.d||l;if(i.hasErrors&&i.hasErrors(l)){if(!g.trigger(this.element,"error",{XMLHttpRequest:k,textStatus:"modelstateerror",modelState:l.modelState})){i.displayErrors(l)}return}this.total=l.total||l.Total||0;this.aggregates=l.aggregates||{};this.dataBind(l.data||l.Data)},this)};c.extend(h,i);var j=this.ws?h.data.state={}:h.data;j[this.queryString.page]=this.currentPage;j[this.queryString.size]=this.pageSize;j[this.queryString.orderBy]=this.orderBy||"";j[this.queryString.groupBy]=this.groupBy;j[this.queryString.filter]=(this.filterBy||"").replace(/\"/g,'\\"');j[this.queryString.aggregates]=c.map(this.columns,function(k){if(k.aggregates){return k.member+"-"+k.aggregates.join("-")}}).join("~");if(this.ws){h.data=g.toJson(h.data);h.contentType="application/json; charset=utf-8"}return h},showBusy:function(){this.busyTimeout=setTimeout(c.proxy(function(){c("> .t-grid-pager .t-status .t-icon",this.element).addClass("t-loading")},this),100)},hideBusy:function(){clearTimeout(this.busyTimeout);c("> .t-grid-pager .t-status .t-icon",this.element).removeClass("t-loading")},serverRequest:function(){location.href=g.formatString(unescape(this.urlFormat),this.currentPage,this.orderBy||"~",this.groupBy||"~",encodeURIComponent(this.filterBy)||"~",this.pageSize||"~")},ajaxRequest:function(i){var h={page:this.currentPage,sortedColumns:this.sorted,filteredColumns:c.grep(this.columns,function(j){return j.filters})};if(g.trigger(this.element,"dataBinding",h)){return}if(!this.ajax&&!this.ws){return}this.showBusy();c.ajax(this.ajaxOptions({data:c.extend({},h.data,i),url:this.url("selectUrl")}))},valueFor:function(h){if(h.type=="Date"){return new Function("data","var value = data."+h.member+'; if (!value) return null; return value instanceof Date? value : new Date(parseInt(value.replace(/\\/Date\\((.*?)\\)\\//, "$1")));')}return new Function("data","return data"+(h.member?"."+h.member:"")+";")},displayFor:function(h){var j=this.localization;if(h.commands){var k=c.map(h.commands,function(l){var m=g.grid.ButtonBuilder.create(c.extend({text:j[l.name]},l));return m.build()}).join("");return function(){return k}}if(!h.template){var i=h.value||function(){return""};if(h.format||h.type=="Date"){i=function(l){var m=h.value(l);return m==null?"":g.formatString(h.format||"{0:G}",m)}}return h.encoded===false?i:function(l){return f(i(l))}}return d(h.template)},insertFor:function(h){return this.displayFor(h)},editFor:function(h){return this.displayFor(h)},initializeColumns:function(){c.each(this.columns,c.proxy(function(j,k){if(k.member!==undefined){k.value=this.valueFor(k)}else{k.readonly=true}k.insert=this.insertFor(k);k.edit=this.editFor(k);k.display=this.displayFor(k);if(k.footerTemplate){k.footer=d(k.footerTemplate)}if(k.groupFooterTemplate){this.showGroupFooter=true;k.groupFooter=d(k.groupFooterTemplate)}k.groupHeader=d("<#= Title #>: <#= Key #>");if(k.groupHeaderTemplate){k.groupHeader=d(k.groupHeaderTemplate)}},this));var i=this.columns.length-1;while(i>=0){var h=this.columns[i];if(h.hidden){i--;continue}if(!h.attr){h.attr=' class="t-last"';break}else{if(h.attr.indexOf("class")==-1){h.attr+=' class="t-last"';break}else{h.attr=h.attr.replace('class="','class="t-last ');break}}i--}if(this.detail){this.displayDetails=d(this.detail.template)}},bindData:function(j,l,n){Array.prototype.push.apply(this.data,j);var p=Math.min(this.pageSize,j.length);p=this.pageSize?p:j.length;if(c.browser.msie){c(this.element).find(".t-grid-content colgroup:first col").css("display","")}for(var q=0;q')}else{l.cat("")}l.rep('',n).catIf('',this.detail);for(var k=0,m=this.columns.length;k").cat(o.display(j[q]));l.cat("")}l.cat("")}},normalizeColumns:function(){},dataItem:function(h){return this.data[this.$tbody.find("> tr:not(.t-grouping-row,.t-detail-row,.t-grid-new-row)").index(c(h))]},bindTo:function(n){var k=new g.stringBuilder();var m=this.groups.length+this.columns.length+(this.detail?1:0);if(n&&n.length){this.normalizeColumns(m);if(typeof n[0].HasSubgroups!="undefined"){for(var h=0,j=n.length;h").cat("").cat(this.noRecordsTemplate?this.noRecordsTemplate:this.localization.noRecords).cat("")}this.$tbody.html(k.string());if(this.onRowDataBound){var o=jQuery.grep(this.$tbody[0].rows,function(i){return !c(i).hasClass("t-grouping-row")});for(var h=0,j=this.data.length;h=h).removeClass("t-state-hover");this.$pager.find(".t-arrow-prev").parent().add(this.$pager.find(".t-arrow-first").parent()).toggleClass("t-state-disabled",j==1).removeClass("t-state-hover");var i=this.localization;this.$pager.find(".t-page-i-of-n").each(function(){this.innerHTML=new g.stringBuilder().cat(i.page).cat(' ').cat(g.formatString(i.pageOf,h)).string()});this.$pager.find(".t-page-size").each(function(){var l='
    '+k+'select
    ';this.innerHTML=l});this.$pager.find(".t-numeric").each(c.proxy(function(m,l){this.numericPager(l,j,h)},this));this.$pager.parent().find(".t-status-text").text(g.formatString(i.displayingItems,this.firstItemInPage(),this.lastItemInPage(),this.total))},numericPager:function(i,o,p){var m=10;var k=1;if(o>m){var h=(o%m);k=(h==0)?(o-m)+1:(o-h)+1}var l=(k+m)-1;l=Math.min(l,p);var j=new g.stringBuilder();if(k>1){j.cat('
    ...')}for(var n=k;n<=l;n++){if(n==o){j.cat('').cat(n).cat("")}else{j.cat('').cat(n).cat("")}}if(l...')}i.innerHTML=j.string()},$columns:function(){return this.$header.find("th:not(.t-hierarchy-cell,.t-group-cell)")},updateSorting:function(){this.sorted=[];c.each(this.orderBy.split("~"),c.proxy(function(i,h){var j=h.split("-");var k=this.columnFromMember(j[0]);if(k){k.order=j[1];this.sorted.push(k)}},this));this.$columns().each(c.proxy(function(j,m){var k=this.columns[j].order;var h=c(m).children(".t-link");var l=h.children(".t-icon");if(!k){l.hide()}else{if(l.length==0){l=c('').appendTo(h)}l.toggleClass("t-arrow-up",k=="asc").toggleClass("t-arrow-down",k=="desc").html("("+(k=="asc"?this.localization.sortedAsc:this.localization.sortedDesc)+")").show()}},this))},sanitizePage:function(i){var h=parseInt(i,10);if(isNaN(h)||h<1){return this.currentPage}return Math.min(h,this.totalPages())},totalPages:function(){return Math.ceil(this.total/this.pageSize)},firstItemInPage:function(){return this.total>0?(this.currentPage-1)*this.pageSize+1:0},lastItemInPage:function(){return Math.min(this.currentPage*this.pageSize,this.total)},dataBind:function(h){this.data=[];this.bindTo(h);this.bindFooter();this.updatePager();this.updateSorting();g.trigger(this.element,"dataBound");g.trigger(this.element,"repaint")},bindFooter:function(){var i=this.$footer.find("td:not(.t-group-cell,.t-hierarchy-cell)");var h=this.aggregates;c.each(this.columns,function(j){if(this.footer){i.eq(j).html(this.footer(h[this.member]||{}))}})},rebind:function(h){this.sorted=[];this.orderBy="";this.filterBy="";this.currentPage=1;c.each(this.columns,function(){this.order=null;this.filters=null});c(".t-filter-options",this.element).find('input[type="text"], select').val("").removeClass("t-state-error").end().find("div.t-formatted-value").html("");c(".t-grid-filter",this.element).removeClass("t-active-filter");this.ajaxRequest(h)}};g.grid.ButtonBuilder=function(h){this.classNames=["t-button","t-grid-"+h.name];this.content=function(){return h.text};this.build=function(){return'"+this.content()+""}};g.grid.ButtonBuilder.create=function(h){return new (e[h.buttonType])(h)};function b(i,h){return'"}g.grid.ImageButtonBuilder=function(h){g.grid.ButtonBuilder.call(this,h);this.classNames.push("t-button-icon");this.content=function(){return b(h.name,h.imageAttr)}};g.grid.ImageTextButtonBuilder=function(h){g.grid.ButtonBuilder.call(this,h);this.classNames.push("t-button-icontext");this.content=function(){return'"+h.text}};g.grid.BareImageButtonBuilder=function(h,i){g.grid.ImageButtonBuilder.call(this,h,i);this.classNames.push("t-button-icon","t-button-bare")};var e={Text:g.grid.ButtonBuilder,ImageAndText:g.grid.ImageTextButtonBuilder,Image:g.grid.ImageButtonBuilder,BareImage:g.grid.BareImageButtonBuilder};c.fn.tGrid=function(h){return g.create(this,{name:"tGrid",init:function(i,j){return new g.grid(i,j)},options:h,success:function(i){if(i.$tbody.find("tr.t-no-data").length){i.ajaxRequest()}}})};c.fn.tGrid.defaults={columns:[],plugins:[],currentPage:1,pageSize:10,localization:{addNew:"Add new record","delete":"Delete",cancel:"Cancel",insert:"Insert",update:"Update",select:"Select",pageOf:"of {0}",displayingItems:"Displaying items {0} - {1} of {2}",edit:"Edit",noRecords:"No records to display.",page:"Page ",filter:"Filter",filterClear:"Clear Filter",filterShowRows:"Show rows with value that",filterAnd:"And",filterStringEq:"Is equal to",filterStringNe:"Is not equal to",filterStringStartsWith:"Starts with",filterStringSubstringOf:"Contains",filterStringEndsWith:"Ends with",filterNumberEq:"Is equal to",filterNumberNe:"Is not equal to",filterNumberLt:"Is less than",filterNumberLe:"Is less than or equal to",filterNumberGt:"Is greater than",filterNumberGe:"Is greater than or equal to",filterDateEq:"Is equal to",filterDateNe:"Is not equal to",filterDateLt:"Is before",filterDateLe:"Is before or equal to",filterDateGt:"Is after",filterDateGe:"Is after or equal to",filterEnumEq:"Is equal to",filterEnumNe:"Is not equal to",filterBoolIsTrue:"is true",filterBoolIsFalse:"is false",filterSelectValue:"-Select value-",filterOpenPopupHint:"Open the calendar popup",groupHint:"Drag a column header and drop it here to group by that column",deleteConfirmation:"Are you sure you want to delete this record?",sortedAsc:"sorted ascending",sortedDesc:"sorted descending",ungroup:"ungroup"},queryString:{page:"page",size:"size",orderBy:"orderBy",groupBy:"groupBy",filter:"filter",aggregates:"aggregates"}}})(jQuery); \ No newline at end of file diff --git a/NzbDrone.Web/Scripts/2011.1.414/telerik.grid.reordering.min.js b/NzbDrone.Web/Scripts/2011.1.414/telerik.grid.reordering.min.js deleted file mode 100644 index ebd306594..000000000 --- a/NzbDrone.Web/Scripts/2011.1.414/telerik.grid.reordering.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(a){var b=a.telerik;b.reordering={};b.reordering.initialize=function(d){d.$reorderDropCue=a('
    ');var c=d.$header.children("th").length-1;var e=function(i,l){var k=a.inArray(l,d.columns);d.columns.splice(k,1);d.columns.splice(i,0,l);h(d.$columns(),k,i);h(d.$tbody.parent().find("> colgroup > col:not(.t-group-col,.t-hierarchy-col)"),k,i);h(d.$headerWrap.find("table").find("> colgroup > col:not(.t-group-col,.t-hierarchy-col)"),k,i);var j=d.$footer.find("table");h(j.find("> colgroup > col:not(.t-group-col,.t-hierarchy-col)"),k,i);h(j.find("> tbody > tr.t-footer-template > td:not(.t-group-cell,.t-hierarchy-cell)").add(d.$footer.find("tr.t-footer-template > td:not(.t-group-cell,.t-hierarchy-cell)")),k,i);a.each(d.$tbody.children(),function(){h(a(this).find(" > td:not(.t-group-cell, .t-hierarchy-cell, .t-detail-cell)"),k,i)})};d.reorderColumn=e;function f(i,k,l,j){g(i,k,l,j,"th","t-last-header");g(i,k,l,j,"td","t-last")}function g(j,l,k,m,i,n){if(k.is(i)&&m==c){j.addClass(n);k.removeClass(n)}if(j.is(i)&&l==c){j.removeClass(n).prev(i).addClass(n)}}function h(j,k,i){var l=j.eq(k);var m=j.eq(i);f(l,k,m,i);l[k>i?"insertBefore":"insertAfter"](m)}new b.draggable({owner:d.$header,selector:".t-header:not(.t-group-cell,.t-hierarchy-cell)",scope:d.element.id+"-reodering",cue:function(i){return b.dragCue(i.$draggable.text())},destroy:function(i){i.$cue.remove()}});new b.droppable({owner:d.$header,scope:d.element.id+"-reodering",selector:".t-header:not(.t-group-cell,.t-hierarchy-cell)",over:function(k){var i=a.trim(k.$draggable.text())==a.trim(k.$droppable.text());b.dragCueStatus(k.$cue,i?"t-denied":"t-add");var j=0;a("> .t-grid-top, > .t-grouping-header",d.element).each(function(){j+=a(this).outerHeight()});if(!i){d.$reorderDropCue.css({height:k.$droppable.outerHeight(),top:j,left:function(){return k.$droppable.position().left+((k.$droppable.index()>k.$draggable.index())?k.$droppable.outerWidth():0)}}).appendTo(d.element)}},out:function(i){d.$reorderDropCue.remove();b.dragCueStatus(i.$cue,"t-denied")},drop:function(k){d.$reorderDropCue.remove();if(k.$cue.find(".t-drag-status").is(".t-add")){var i=d.columnFromTitle(a.trim(k.$draggable.text()));var j=d.$columns().index(k.$droppable);b.trigger(d.element,"columnReorder",{column:i,oldIndex:a.inArray(i,d.columns),newIndex:j});e(j,i);b.trigger(d.element,"repaint")}}})}})(jQuery); \ No newline at end of file diff --git a/NzbDrone.Web/Scripts/2011.1.414/telerik.grid.resizing.min.js b/NzbDrone.Web/Scripts/2011.1.414/telerik.grid.resizing.min.js deleted file mode 100644 index c0f72e29e..000000000 --- a/NzbDrone.Web/Scripts/2011.1.414/telerik.grid.resizing.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(a){var b=a.telerik;b.resizing={};b.resizing.initialize=function(p){var c,o=a('
    '),i,d,h,l=3;function m(q,r){a("th, th .t-grid-filter, th .t-link",q).add(document.body).css("cursor",r)}function k(q){var r=0;a("> .t-grouping-header, > .t-grid-top",q).each(function(){r+=this.offsetHeight});return r}function e(t){var r=0;a(".t-resize-handle",p.element).each(function(){r+=a(this).data("th").outerWidth();a(this).css("left",r-l)});r=-p.$tbody.closest(".t-grid-content").scrollLeft();t.prevAll("th").add(t).each(function(){r+=this.offsetWidth});var q=p.scrollable?a(".t-grid-content",p.element):a("tbody",p.element);var s=q.attr(p.scrollable?"clientWidth":"offsetWidth");if(r>=s){o.remove()}else{o.css({left:r,top:k(p.element),height:t.outerHeight()+q.attr(p.scrollable?"clientHeight":"offsetHeight")});if(!o.parent().length){o.appendTo(p.element)}}}function j(r){var q=r.$draggable.data("th");c=a("colgroup",p.element).find("col:eq("+q.index()+")");h=r.pageX;d=q.outerWidth();i=p.$tbody.outerWidth()}function g(q){var r=d+q.pageX-h;if(r>10){c.css("width",r);if(p.scrollable){p.$tbody.parent().add(p.$headerWrap.find("table")).add(p.$footer.find("table")).css("width",i+q.pageX-h)}e(q.$draggable.data("th"))}}function f(s){o.remove();m(p.element,"");var r=s.$draggable.data("th");var q=r.outerWidth();if(p.onColumnResize&&q!=d){b.trigger(p.element,"columnResize",{column:p.columns[p.$columns().index(r)],oldWidth:d,newWidth:q})}return false}function n(){var r=0,q=p.element.id+"-column-resizing";var s=b.draggable.get(q);if(s){s._destroy()}p.$headerWrap.add(p.element).find("> .t-resize-handle").remove();p.$header.find(".t-header:visible:not(.t-group-cell)").each(function(){r+=this.offsetWidth;var t=a(this);a('
    ').css({left:r-l,top:p.scrollable?0:k(p.element),width:l*2}).appendTo(p.scrollable?p.$headerWrap:p.element).data("th",t).mousedown(function(){e(t);m(p.element,a(this).css("cursor"))}).mouseup(function(){m(p.element,"")})});new b.draggable({owner:p.element,selector:".t-resize-handle",scope:q,distance:0,start:j,drag:g,stop:f})}n();a(p.element).one("mouseenter",n).bind("repaint",n)}})(jQuery); \ No newline at end of file diff --git a/NzbDrone.Web/Scripts/2011.1.414/telerik.imagebrowser.min.js b/NzbDrone.Web/Scripts/2011.1.414/telerik.imagebrowser.min.js deleted file mode 100644 index bba132ec0..000000000 --- a/NzbDrone.Web/Scripts/2011.1.414/telerik.imagebrowser.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(i,o){var n=i.telerik,e=i.telerik.query;n.imageBrowser=function(q,r){this.element=q;this.wrapper=i(q);var t=r.filter||"*.png,*.gif,*.jpg,*.jpeg";var s=r.localization;this.wrapper.append('
    select
    ').append(k(s,r.uploadUrl,r.createDirectoryUrl,r.deleteFileUrl||r.deleteDirectoryUrl)).append('
      ');var u=this.wrapper.find(".t-breadcrumbs");var y=this.wrapper.find(".t-tiles");var v=this.wrapper.find(".t-search-wrap");if(r.uploadUrl){this.wrapper.find(".t-upload input").tUpload({async:{saveUrl:r.uploadUrl,autoUpload:true},multiple:false,onUpload:function(B){var C=new RegExp(("("+t.split(",").join(")|(")+")").replace(/\*\./g,".*."),"i");var A=B.files[0].name;if(C.test(A)){B.data={path:u.val()};y.trigger("t:upload",[{name:A},function(){B.preventDefault()}])}else{B.preventDefault();alert(n.formatString(s.invalidFileType,A,t))}},onError:function(A){A.preventDefault();y.trigger("t:error",[A.files[0]]);var B=A.XMLHttpRequest;if(n.ajaxError(r.element,"error",B,B.statusText)){return}},onSuccess:function(A){y.trigger("t:completeFile",[i.extend(A.response,{path:u.val()})])}})}new n.searchBox(v[0]);new n.fileListView(y[0],{thumbnailUrl:r.thumbUrl,localization:s});var w=new n.dropDown({effects:n.fx.slide.defaults(),onClick:function(A){i(q).find(".t-tiles-arrange a span:first").html(i(A.item).text());w.close();u.trigger("t:change")}});var z=[{Text:s.orderByName,Value:"name"},{Text:s.orderBySize,Value:"size"}];w.dataBind(z);this.wrapper.find(".t-tiles-arrange a").click(function(B){B.preventDefault();var A=i(this);w.open({offset:A.offset(),outerHeight:A.outerHeight(),outerWidth:A.outerWidth(),zIndex:n.getElementZIndex(this)})}).end().delegate(".t-button:not(.t-state-disabled):has(.t-delete)","click",function(){var A=y.find(".t-state-selected");if(A.length&&confirm(n.formatString(s.deleteFile,A.find("strong").text()))){i.ajax({type:"POST",url:A.data("kind")=="f"?r.deleteFileUrl:r.deleteDirectoryUrl,data:{path:A.data("url")},error:function(C,B){if(n.ajaxError(r.element,"error",C,B)){return}},success:function(){y.trigger("t:delete");i(q).find(".t-delete").parent().addClass("t-state-disabled")}})}}).delegate(".t-button:not(.t-state-disabled):has(.t-addfolder)","click",function(){y.trigger("t:createDirectory",[function(A){i.ajax({type:"POST",url:r.createDirectoryUrl,data:{path:u.val(),name:A},error:function(C,B){y.trigger("t:errorDirectory",{name:A});if(n.ajaxError(r.element,"error",C,B)){return}},success:function(){y.trigger("t:completeDirectory",{path:u.val(),name:A})}})}])});i(document.documentElement).bind("mousedown",function(B){var A=w.$element[0];if(!i.contains(A,B.target)){w.close()}});var x=new n.dataSource({error:function(A,C){var B=n.trigger(r.element,"error",{XMLHttpRequest:A,textStatus:C});if(!B){if(C=="error"){if(A.status=="404"){alert(r.localization.directoryNotFound)}else{if(A.status!="0"){alert("Error! The requested URL returned "+A.status+" - "+A.statusText)}}}else{if(C=="timeout"){alert("Error! Server timeout.")}}}},url:r.selectUrl,callback:function(B){i(q).find(".t-delete").parent().addClass("t-state-disabled");if(!u.val()){new n.breadcrumbs(u[0],{path:B.Path,roots:B.ContentPaths})}u.val(B.Path).trigger("t:refresh");var C=i(q).find(".t-tiles-arrange a span:first").text();var A=i.map(z,function(E){if(E.Text==C){return E.Value}})[0];var D=v.val();y.trigger("t:refresh",[B,A,D])}});v.bind("t:change",function(){u.trigger("t:change")});x.get({path:""});y.bind("t:select",function(A){if(A.kind=="d"){x.get({path:A.url})}else{r.apply(A)}}).bind("t:change",function(B){var C=i(q).find(".t-delete").parent().addClass("t-state-disabled");if(B.kind=="f"){var A=B.url;if(r.imageUrl){A=r.imageUrl+"?path="+A}i(q).parent().find("#t-editor-image-url").val(A)}if((B.kind=="f"&&r.deleteFileUrl)||(B.kind=="d"&&r.deleteDirectoryUrl)){C.removeClass("t-state-disabled")}});u.bind("t:change",function(){var A=i(this).val();if(!A.match(/\/$/)){A=A+"/"}x.get({path:A})})};function k(r,s,t,q){var v=!s?"":'
      '+r.uploadFile+'
      ',u=!t?"":'',w=!q?"":' ';return'
      '+v+u+w+'
      '+r.orderBy+' '+r.orderByName+'
      '}n.fileInfoReader=function(q){this._thumbnailUrl=q.thumbnailUrl||""};n.fileInfoReader.prototype={read:function(q,r){return r[q]||r[(q.charAt(0).toUpperCase()+q.substring(1))]},directories:function(q){return this.read("directories",q)},files:function(q){return this.read("files",q)},thumbUrl:function(q,r){return this._thumbnailUrl+"/?path="+q+r},size:function(s){var q=this.read("size",s);if(!q){return""}var r=" bytes";if(q>=1073741824){r=" GB";q/=1073741824}else{if(q>=1048576){r=" MB";q/=1048576}else{if(q>=1024){r=" KB";q/=1024}}}return Math.round(q*100)/100+r},name:function(q){return this.read("name",q)},path:function(q){return this.read("path",q)},concatPaths:function(q,r){if(q===o||!q.match(/\/$/)){q=(q||"")+"/"}return q+r}};n.fileListView=function(q,r){this.element=q;this.wrapper=i(q);this._localization=r.localization;this._reader=r.reader||new n.fileInfoReader({thumbnailUrl:r.thumbnailUrl});this._pageSize=r.pageSize||20;this.wrapper.bind({"t:refresh":i.proxy(this._refresh,this),"t:upload":i.proxy(this._upload,this),"t:completeFile":i.proxy(this._completeFile,this),"t:completeDirectory":i.proxy(this._completeDirectory,this),"t:delete":i.proxy(this._delete,this),"t:errorFile":i.proxy(this._errorFile,this),"t:errorDirectory":i.proxy(this._errorDirectory,this),"t:createDirectory":i.proxy(this._createDirectory,this),scroll:i.proxy(this._scroll,this)}).delegate("li[data-url]:not(.t-tile-empty)","click",i.proxy(this._click,this)).delegate("li[data-url]:not(.t-tile-empty)","dblclick",i.proxy(this._dblclick,this))};function d(q){return'
    • '+q.name+"
    • "}function m(q){return'
    • '+q+"
    • "}function h(q){return'
    • '+q.name+''+q.size+"";"
    • "}function l(q){return'
    • '+q.name+"
    • "}function p(q){return'
    • '}function b(r){var s=i(r);var q=i("",{src:s.data("thumbUrl"),alt:s.data("filename")}).hide().bind("load",function(){i(this).prev().remove().end().fadeIn()});s.find(".t-loading").after(q);r.loaded=true}if(i.browser.msie&&parseFloat(i.browser.version)<8){var a=function(q){return q.offsetTop}}else{var a=function(q){return q.offsetTop-i(q).height()}}var f=/(\:|\^|\$|\/|\.|\+|\||\(|\)|\[|\]|\{|\}|\\)/g,j=/\*/g,c=/\?/g;function g(q){return new RegExp(q.replace(f,"\\$1").replace(j,".*").replace(c,".?"),"ig")}n.fileListView.prototype={bindTo:function(r,t,s){this._filter=s;var x=this._reader;this.wrapper.empty();var q=e(this._reader.directories(r)||[]);var v=e(this._reader.files(r)||[]);if(s){var w=function(z){return g(s).test(x.name(z))};q=q.where(w);v=v.where(w)}var y=function(z){return x[t](z)};this._data=this._process(this._reader.path(r),q.orderBy(y),v.orderBy(y));var u=this._data.select(function(z){return z.kind=="f"?h(z):l(z)}).toArray().join("");this.wrapper.append(u);this._tiles=this.wrapper.find("li[data-kind=f]");this._scroll();this._asEmpty()},_asEmpty:function(){if(!this._data.any()&&!this._filter){this.wrapper.append(m(this._localization.emptyFolder))}},_completeFile:function(u,r){var t=this._reader.name(r);var q=this._reader.path(r);var s=i(h({kind:"f",thumbUrl:this._reader.thumbUrl(q,t),url:this._reader.concatPaths(q,t),name:t,size:this._reader.size(r)}));this.wrapper.find("li").eq(this.fileIndex(t)).replaceWith(s);b(s[0]);s.click()},_completeDirectory:function(u,r){var t=this._reader.name(r);var q=this._reader.path(r);var s=i(l({kind:"d",url:this._reader.concatPaths(q,t),name:t}));this.wrapper.find("li").eq(this.directoryIndex(t)).replaceWith(s)},_delete:function(){var q=this.wrapper.find(".t-state-selected");if(q.length){var r=this._data.toArray();r.splice(q.index(),1);this._data=e(r);q.remove();this._scroll();this._asEmpty()}},_scroll:function(q){clearTimeout(this._timeout);this._timeout=setTimeout(i.proxy(function(){var r=this.wrapper.outerHeight();var t=this.wrapper.scrollTop();var s=t+r;this._tiles.each(function(){var v=a(this);var u=v+this.offsetHeight;if((v>=t&&v=t&&us){return false}});this._tiles=this._tiles.filter(function(){return !this.loaded})},this),250)},_upload:function(u,q,v){var s=this.fileIndex(q.name);if(s>-1&&!confirm(n.formatString(this._localization.overwriteFile,q.name))){v()}else{this.wrapper.find(".t-tile-empty").remove();var w=i(d(q));if(s>-1){w.data("existing",true);this.wrapper.find("li").eq(s).replaceWith(w)}else{var t=this.wrapper.find("li[data-kind=f]:first");if(t.length){t.before(w)}else{this.wrapper.append(w)}var r=this._data.toArray();r.splice(w.index(),0,{name:q.name,kind:"f"})}this.wrapper.scrollTop(w.attr("offsetTop")-this.element.offsetHeight)}},_nameDirectory:function(){var t="New folder";var s=this._data.where(function(u){return u.kind=="d"&&u.name.indexOf(t)>-1}).select(function(u){return u.name}).toArray();if(i.inArray(t,s)>-1){var r=2;do{var q=t+" ("+r+")";r++}while(i.inArray(q,s)>-1);t=q}return t},_createDirectory:function(u,r){var t=this._nameDirectory();var w=i(p(t));var v=this.wrapper.find("li[data-kind=f]:first");if(v.length){v.before(w)}else{this.wrapper.append(w)}var q=this._data.toArray();var s=w.addClass("t-state-selected").siblings().removeClass("t-state-selected").end().find("input").keydown(function(x){if(x.keyCode==13){this.blur()}}).blur(i.proxy(function(x){var y=i.trim(x.target.value);if(!y||this._data.any(function(z){return z.kind=="d"&&z.name.toLowerCase()==y.toLowerCase()})){y=this._nameDirectory()}q.splice(w.index(),0,{name:y,kind:"d"});i(x.target).replaceWith(""+y+"");r(y)},this));setTimeout(function(){s.select()});this.wrapper.find(".t-tile-empty").remove();this.wrapper.scrollTop(w.attr("offsetTop")-this.element.offsetHeight)},_errorFile:function(u,s){var q=this.fileIndex(s.name);if(q>-1){var r=this.wrapper.find("li").eq(q);if(r.data("existing")){var t=i(h(this._data.toArray()[q]));r.replaceWith(t);b(t[0])}else{r.remove();this._data.toArray().splice(q,1)}this._asEmpty()}},_errorDirectory:function(s,r){var q=this.directoryIndex(r.name);if(q>-1){this.wrapper.find("li").eq(q).remove();this._data.toArray().splice(q,1);this._asEmpty()}},fileIndex:function(q){return this._index("f",q)},directoryIndex:function(q){return this._index("d",q)},_index:function(s,t){var q=-1,r=this._data?this._data.toArray():[];t=t.toLowerCase();i.each(r,function(u,v){if(v.kind==s&&v.name.toLowerCase()==t){q=u;return false}});return q},_raise:function(s,q){var r=i(s.currentTarget);n.trigger(this.wrapper,q,{kind:r.data("kind"),url:r.data("url")})},_click:function(q){i(q.currentTarget).addClass("t-state-selected").siblings().removeClass("t-state-selected");this._raise(q,"t:change")},_dblclick:function(q){if(document.selection&&document.selection.empty){document.selection.empty()}this._raise(q,"t:select")},_refresh:function(t,q,s,r){this.bindTo(q,s,r)},_process:function(s,q,r){var t=this._reader;var q=q.select(function(u){return{url:t.concatPaths(s,t.name(u)),name:t.name(u),kind:"d"}});var r=r.select(function(u){var v=t.name(u);return{url:t.concatPaths(s,v),name:v,kind:"f",thumbUrl:t.thumbUrl(s,v),size:t.size(u)}});return q.concat(r)}};n.dataSource=function(q){this._url=q.url;this._callback=q.callback;this._error=q.error};n.dataSource.prototype={_complete:function(q){if(this._callback){this._callback(q)}},get:function(q){i.ajax({type:"POST",url:this._url,data:q,success:i.proxy(this._complete,this),error:this._error})}};n.breadcrumbs=function(r,s){this.element=r;this.wrapper=i(r);this._gap=s.gap||50;this._initPaths(s.path);var q=new n.dropDown({effects:n.fx.slide.defaults(),onClick:i.proxy(function(t){var u=i(t.item).text();q.close();this._initPaths(u);i(r).val(u).trigger("t:change")},this)});q.dataBind(s.roots);this.wrapper.delegate("input","focus",i.proxy(this._focus,this)).delegate("input","blur",i.proxy(this._blur,this)).delegate("input","keydown",i.proxy(function(t){if(t.keyCode==13){this._blur()}},this)).delegate("a:not(.t-first)","click",n.stopAll(this._click,this)).delegate(".t-select","click",function(){var t=i(r);q.open({offset:t.offset(),outerHeight:t.outerHeight(),outerWidth:t.outerWidth(),zIndex:n.getElementZIndex(this)})}).bind("t:refresh",i.proxy(this.refresh,this));i(document.documentElement).bind("mousedown",function(u){var t=q.$element[0];if(!i.contains(t,u.target)){q.close()}});this.value(s.path)};n.breadcrumbs.prototype={_initPaths:function(q){this._basePath=(q||"").replace(/\/{2,}/g,"/").replace(/\/$/,"");q=this._basePath.split("/");q.pop();this._root=q.join("/")},_html:function(){var r=this._basePath.split("/").length-1;var q=this.value();if(q===o||!q.match(/^\//)){q="/"+(q||"")}return'
      '+i.map(q.split("/"),function(t,s){if(t&&s>=r){return''+t+""}}).join('>')+'
      select
      '},_path:function(q){return this._root+"/"+i.map(q,function(r){return i(r).text()}).join("/")},_update:function(q){q=q.charAt(0)==="/"?q:"/"+q;var r=this.value()!=q;this.value(q);if(r){this.wrapper.trigger("t:change")}},value:function(q){if(q!==o){this.wrapper.val(q.replace(/\/{2,}/g,"/"));this.refresh()}else{return this.wrapper.val()}},_click:function(q){this._update(this._path(i(q.target).prevAll("a").andSelf()))},refresh:function(){this.wrapper.empty().append(this._html());var r=this.wrapper.width()-this._gap;var q=this.wrapper.find("a");q.each(function(t){var s=i(this);if(s.parent().width()>r){if(t==q.length-1){s.width(r)}else{s.prev().andSelf().hide()}}})},_focus:function(){var q=this.wrapper.find(".t-breadcrumbs-wrap").hide().end().find("input").val(this.value());setTimeout(function(){q.select()})},_blur:function(){var q=this.wrapper.find("input").val().replace(/\/{2,}/g,"/");if(!q||q.toLowerCase().indexOf(this._basePath.toLowerCase())<0){q=this._basePath}this._update(q)}};n.searchBox=function(q){this.element=q;this.wrapper=i(q);this.wrapper.delegate("input","focus",i.proxy(this._focus,this)).delegate("input","blur",i.proxy(this._blur,this)).delegate("input","keydown",i.proxy(function(r){if(r.keyCode==13){this._blur()}},this)).delegate("a","click",n.stopAll(this._click,this));this._render()};n.searchBox.prototype={_render:function(){var q='search';this.wrapper.empty().append(i(q))},_focus:function(){this.wrapper.find("label").hide()},_blur:function(){this._update(this.wrapper.find("input").val());if(this.value()==""){this.wrapper.find("label").show()}},_update:function(q){var r=this.value()!=q;this.value(q);if(r){this.wrapper.trigger("t:change")}},value:function(q){if(q!==o){this.wrapper.val(q)}else{return this.wrapper.val()}},_click:function(){this._blur()}}})(jQuery); \ No newline at end of file diff --git a/NzbDrone.Web/Scripts/2011.1.414/telerik.list.min.js b/NzbDrone.Web/Scripts/2011.1.414/telerik.list.min.js deleted file mode 100644 index 741fb2c60..000000000 --- a/NzbDrone.Web/Scripts/2011.1.414/telerik.list.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(e){var a=e.telerik;var b=/\s+/;a.list={htmlBuilder:function(g,f,h){var k,n,l=g.id,m=g.name,o=new a.stringBuilder(),i=e(g);if(h){n=i.find("option:selected").text();k=i.val()}else{n=g.value}function j(){return e(['
      '].join(" "))}this.render=function(){i.wrap(j()).hide();var p=e('
      ').insertBefore(i);this.text({builder:o,text:n,id:l,name:m}).appendTo(p);e('select').appendTo(p);if(h){o.buffer=[];e(o.cat('").string()).insertAfter(p)}};this.text=function(p){return e(['',p.text||" ",""].join(""))}},initialize:function(){this.previousValue=this.value();a.bind(this,{dataBinding:this.onDataBinding,dataBound:this.onDataBound,error:this.onError,open:this.onOpen,close:this.onClose,valueChange:this.onChange,load:this.onLoad})},common:function(){this.open=function(){if(!this.loader.isAjax()&&(!this.data||this.data.length==0)){return}var g=this.$wrapper||this.$element,f=this.dropDown;var h={offset:g.offset(),outerHeight:g.outerHeight(),outerWidth:g.outerWidth(),zIndex:a.getElementZIndex(g[0])};if(f.$items){f.open(h)}else{this.fill(function(){f.open(h)})}};this.close=function(){this.dropDown.close()};this.dataBind=function(h,f){this.data=h=(h||[]);var l=-1,j=!!this.loader.isAjax();for(var g=0,k=h.length;g-1&&j0){m.filters[k](m,f,j);var g=m.filteredDataIndexes;if((g&&g.length>0)||(k==0&&m.selectedIndex!=-1)){s=false}}if(s){var p={};p[m.queryString.text]=j;m.loader.ajaxRequest(function(w){var v=m.trigger;var x=m.dropDown;if(w&&w.length==0){x.close();x.dataBind();return}if(m.encoded&&!m.onDataBinding){for(var t=0,y=w.length;t0){if(!x.isOpened()){v.open()}m.filtering.autoFill(m,u.first().text())}else{v.close()}},{data:p})}}else{s=false;m.filters[k](m,m.data,j)}if(!s){var r=l.$items;if(!r){return}var h=r.length,i=m.selectedIndex;var n=k==0?i!=-1?r[i].innerText||r[i].textContent:"":r.length>0?r.first().text():"";this.autoFill(m,n);if(h==0){o.close()}else{if(!l.isOpened()){o.open()}}}};this.multiple=function(f){return f}},filters:function(){this.filters=[function f(g,k,n){if(!k||k.length==0){return}var l=g.dropDown;var j=l.$items;if(!j||j.length==0||g.loader.isAjax()){l.dataBind(k);j=l.$items}for(var h=0,m=k.length;h .t-dropdown-wrap .t-icon").addClass("t-loading")},this),100)},this.hideBusy=function(){clearTimeout(this.busyTimeout);this.component.$wrapper.find("> .t-dropdown-wrap .t-icon").removeClass("t-loading")}},trigger:function(f){this.component=f;this.change=function(){var g=f.previousValue;var h=f.value();if(g==undefined||h!=g){a.trigger(f.element,"valueChange",{value:h})}f.previousValue=h};this.open=function(){var g=f.dropDown;if((g.$items&&g.$items.length>0)&&!g.isOpened()&&!a.trigger(f.element,"open")){f.open()}};this.close=function(){if(!f.dropDown.$element.is(":animated")&&f.dropDown.isOpened()&&!a.trigger(f.element,"close")){f.close()}}},retrieveData:function(l){var k=[];var h=e(l).find("option");for(var f=0,g=h.length;f]*)("+l.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi,"\\$1")+")(?![^<>]*>)(?![^&;]+;)",f?"ig":"i");h.filteredDataIndexes=j;h.selectedIndex=-1;h.dropDown.onItemCreate=function(n){if(l){n.html=n.html.replace(m,"$1")}};h.dropDown.dataBind(e.map(j,function(o,n){return k[o]}));var i=h.dropDown.$items;i.removeClass("t-state-selected");a.list.highlightFirstOnFilter(h,i)}}function c(f,h,k){if(!f||!h){return null}var l=k.length;k=k.toLowerCase();for(var g=0,j=f.length;g .t-dropdown-wrap > .t-input");if(!this.$wrapper.attr("tabIndex")){this.$wrapper.attr("tabIndex",0)}this.dropDown=new a.dropDown({attr:this.dropDownAttr,effects:this.effects,onClick:e.proxy(function(n){this.select(n.item);this.trigger.change();this.trigger.close();this.$wrapper.focus()},this)});this.dropDown.$element.css("direction",this.$wrapper.closest(".t-rtl").length?"rtl":"");this.fill=function(q){function p(s){var r,u=s.selectedValue||s.value();if(u){r=function(x){return u==(x.Value||x.Text)}}else{var t=s.dropDown.$items,v=s.index,w=t.filter(".t-state-selected").length;r=v!=-1&&v0?w-1:0}s.select(r)}var n=this.dropDown,o=this.loader;if(!n.$items&&!o.ajaxError){if(o.isAjax()){o.ajaxRequest(function(r){this.dataBind(r);p(this);a.trigger(this.element,"dataBound");this.trigger.change();if(q){q()}})}else{this.dataBind(this.data);p(this);if(q){q()}}}};this.enable=function(){this.$wrapper.removeClass("t-state-disabled").bind({keydown:e.proxy(k,this),keypress:e.proxy(l,this),click:e.proxy(function(p){var o=this.trigger;var n=this.dropDown;this.$wrapper.focus();if(n.isOpened()){o.close()}else{if(!n.$items){this.fill(o.open)}else{o.open()}}},this)})};this.disable=function(){this.$wrapper.addClass("t-state-disabled").unbind()};this.reload=function(){this.dropDown.$items=null;this.fill()};this.select=function(o){var n=this.highlight(o);if(n==-1){return n}this.selectedIndex=n;a.list.updateTextAndValue(this,this.data[n].Text,this.data[n].Value)};this.text=function(n){if(n!==undefined){this.$text.html(n&&n.replace(b,"")?n:"  ")}else{return this.$text.html()}};this.value=function(o){if(o!==undefined){var n=this.select(function(p){return o==p.Value});if(n==-1){n=this.select(function(p){return o==p.Text})}if(n!=-1){this.previousValue=o}}else{return this.$element.val()}};a.list.common.call(this);a.list.initialize.call(this);e(document.documentElement).bind("mousedown",e.proxy(function(p){var n=this.dropDown.$element;var o=n&&n.parent().length>0;if(e.contains(this.$wrapper[0],p.target)||(o&&e.contains(n.parent()[0],p.target))){return}this.trigger.change();this.trigger.close()},this));this[this.enabled?"enable":"disable"]();function j(){clearTimeout(this.timeout);this.timeout=setTimeout(e.proxy(function(){i=""},this),1000)}function k(t){var q=this.trigger;var o=this.dropDown;var r=t.keyCode||t.which;if(t.altKey&&r==38){q.close();return}if(t.altKey&&r==40){q.open();return}if(r>34&&r<41){t.preventDefault();if(!o.$items){this.fill();return}var p=o.$items,s=e(p[this.selectedIndex]);var n=(r==35)?p.last():(r==36)?p.first():(r==37||r==38)?s.prev():(r==39||r==40)?s.next():[];if(n.length){var u=n[0];this.select(u);o.scrollTo(u);if(!o.isOpened()){q.change()}}}if(r==8){j();t.preventDefault();i=i.slice(0,-1)}if(r==9||r==13||r==27){q.change();q.close()}}function l(r){var n=this.dropDown;var o=r.keyCode||r.charCode;if(o==0||e.inArray(o,a.list.keycodes)!=-1||r.ctrlKey||r.altKey||r.shiftKey){return}if(!n.$items){this.fill();return}var p=i;p+=String.fromCharCode(o);if(p){var q=c(this.data,n.$items,p);if(q){this.select(q);n.scrollTo(q)}i=p}j()}};e.fn.tDropDownList=function(f){return a.create(this,{name:"tDropDownList",init:function(g,h){return new a.dropDownList(g,h)},options:f})};e.fn.tDropDownList.defaults={effects:a.fx.slide.defaults(),accessible:false,index:0,enabled:true,encoded:true}})(jQuery); \ No newline at end of file diff --git a/NzbDrone.Web/Scripts/2011.1.414/telerik.menu.min.js b/NzbDrone.Web/Scripts/2011.1.414/telerik.menu.min.js deleted file mode 100644 index 745beba2c..000000000 --- a/NzbDrone.Web/Scripts/2011.1.414/telerik.menu.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(d){var a=d.telerik;a.menu=function(e,f){this.element=e;this.nextItemZIndex=100;d.extend(this,f);d(".t-item:not(.t-state-disabled)",e).live("mouseenter",a.delegate(this,this.mouseenter),true).live("mouseleave",a.delegate(this,this.mouseleave),true).live("click",a.delegate(this,this.click));d(".t-item").live("click",a.delegate(this,this.click));d(".t-item:not(.t-state-disabled) > .t-link",e).live("mouseenter",a.hover).live("mouseleave",a.leave);d(document).click(a.delegate(this,this.documentClick));a.bind(this,{select:this.onSelect,open:this.onOpen,close:this.onClose,load:this.onLoad})};function b(e){var f=e.parent();return{direction:f.hasClass("t-menu")?f.hasClass("t-menu-vertical")?"right":"bottom":"right"}}function c(f,g){try{return d.contains(f,g)}catch(h){return false}}a.menu.prototype={toggle:function(f,e){d(f).each(function(){d(this).toggleClass("t-state-default",e).toggleClass("t-state-disabled",!e)})},enable:function(e){this.toggle(e,true)},disable:function(e){this.toggle(e,false)},open:function(f){var e=this;d(f).each(function(){var g=d(this);clearTimeout(g.data("timer"));g.data("timer",setTimeout(function(){var h=g.find(".t-group:first");if(h.length){a.fx.play(e.effects,h,b(g));g.css("z-index",e.nextItemZIndex++)}},100))})},close:function(f){var e=this;d(f).each(function(h,i){var g=d(i);clearTimeout(g.data("timer"));g.data("timer",setTimeout(function(){var j=g.find(".t-group:first");if(j.length){a.fx.rewind(e.effects,j,b(g),function(){g.css("zIndex","");if(d(e.element).find(".t-group:visible").length==0){e.nextItemZIndex=100}});j.find(".t-group").stop(false,true)}},100))})},mouseenter:function(i,h){var g=d(h);if(!this.openOnClick||this.clicked){if(!c(h,i.relatedTarget)){this.triggerEvent("open",g);this.open(g);var f=g.parent().closest(".t-item")[0];if(f&&!c(f,i.relatedTarget)){this.mouseenter(i,f)}}}if(this.openOnClick&&this.clicked){this.triggerEvent("close",g);g.siblings().each(d.proxy(function(j,e){this.close(d(e))},this))}},mouseleave:function(i,h){if(!this.openOnClick&&!c(h,i.relatedTarget)){var g=d(h);this.triggerEvent("close",g);this.close(g);var f=g.parent().closest(".t-item")[0];if(f&&!c(f,i.relatedTarget)){this.mouseleave(i,f)}}},click:function(h,g){h.stopPropagation();var f=d(g);if(f.hasClass("t-state-disabled")){h.preventDefault();return}a.trigger(this.element,"select",{item:f[0]});if(!f.parent().hasClass("t-menu")||!this.openOnClick){return}h.preventDefault();this.clicked=true;this.triggerEvent("open",f);this.open(f)},documentClick:function(g,f){if(d.contains(this.element,g.target)){return}if(this.clicked){this.clicked=false;d(this.element).children(".t-item").each(d.proxy(function(e,h){this.close(d(h))},this))}},hasChildren:function(e){return e.find(".t-group:first").length},triggerEvent:function(e,f){if(this.hasChildren(f)){a.trigger(this.element,e,{item:f[0]})}}};d.fn.tMenu=function(e){return a.create(this,{name:"tMenu",init:function(f,g){return new a.menu(f,g)},options:e})};d.fn.tMenu.defaults={orientation:"horizontal",effects:a.fx.slide.defaults(),openOnClick:false}})(jQuery); \ No newline at end of file diff --git a/NzbDrone.Web/Scripts/2011.1.414/telerik.panelbar.min.js b/NzbDrone.Web/Scripts/2011.1.414/telerik.panelbar.min.js deleted file mode 100644 index 641357aec..000000000 --- a/NzbDrone.Web/Scripts/2011.1.414/telerik.panelbar.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(c){var a=c.telerik,b={single:0,multi:1};c.extend(a,{panelbar:function(f,g){this.element=f;c.extend(this,g);var h=c(f),e=h.find("li.t-state-active > .t-content"),d=".t-item:not(.t-state-disabled) > .t-link";h.delegate(d,"click",c.proxy(this._click,this)).delegate(d,"mouseenter",a.hover).delegate(d,"mouseleave",a.leave).delegate(".t-item.t-state-disabled > .t-link","click",a.preventDefault);a.bind(this,{expand:this.onExpand,collapse:this.onCollapse,select:c.proxy(function(i){if(i.target==this.element&&this.onSelect){this.onSelect(i)}},this),error:this.onError,load:this.onLoad});if(this.contentUrls){h.find("> .t-item").each(c.proxy(function(i,j){c(j).find(".t-link").data("ContentUrl",this.contentUrls[i])},this))}if(e.length>0&&e.is(":empty")){this.expand(e.parent())}}});a.panelbar.prototype={expand:function(d){c(d).each(c.proxy(function(f,g){var e=c(g);if(!e.hasClass(".t-state-disabled")&&e.find("> .t-group, > .t-content").length>0){if(this.expandMode==b.single&&this._collapseAllExpanded(e)){return}this._toggleItem(e,false,null)}},this))},collapse:function(d){c(d).each(c.proxy(function(f,g){var e=c(g);if(!e.hasClass(".t-state-disabled")&&e.find("> .t-group, > .t-content").is(":visible")){this._toggleItem(e,true,null)}},this))},toggle:function(e,d){c(e).each(function(){c(this).toggleClass("t-state-default",d).toggleClass("t-state-disabled",!d)})},enable:function(d){this.toggle(d,true)},disable:function(d){this.toggle(d,false)},_click:function(m){var f=c(m.target),g=this.element;if(f.closest(".t-widget")[0]!=g){return}var d=f.closest(".t-link"),j=d.closest(".t-item");c(".t-state-selected",g).removeClass("t-state-selected");d.addClass("t-state-selected");if(a.trigger(g,"select",{item:j[0]})){m.preventDefault()}var l=j.find("> .t-content, > .t-group"),h=d.attr("href"),k=d.data("ContentUrl")||(h&&(h.charAt(h.length-1)=="#"||h.indexOf("#"+g.id+"-")!=-1));if(k||l.length>0){m.preventDefault()}else{return}if(this.expandMode==b.single){if(this._collapseAllExpanded(j)){return}}if(l.length!=0){var i=l.is(":visible");if(!a.trigger(g,!i?"expand":"collapse",{item:j[0]})){this._toggleItem(j,i,m)}}},_toggleItem:function(f,h,i){var j=f.find("> .t-group");if(j.length){this._toggleGroup(j,h);if(i!=null){i.preventDefault()}}else{var g=f.parent().children().index(f),d=f.find("> .t-content");if(d.length){if(i!=null){i.preventDefault()}if(!d.is(":empty")){this._toggleGroup(d,h)}else{this._ajaxRequest(f,d,h)}}}},_toggleGroup:function(d,e){if(d.data("animating")){return}d.data("animating",true).parent().toggleClass("t-state-default",e).toggleClass("t-state-active",!e).find("> .t-link > .t-icon").toggleClass("t-arrow-up",!e).toggleClass("t-panelbar-collapse",!e).toggleClass("t-arrow-down",e).toggleClass("t-panelbar-expand",e);a.fx[!e?"play":"rewind"](this.effects,d,null,function(){d.data("animating",false)})},_collapseAllExpanded:function(d){if(d.find("> .t-link").hasClass("t-header")){if(d.find("> .t-content, > .t-group").is(":visible")||d.find("> .t-content, > .t-group").length==0){return true}else{c(this.element).children().find("> .t-content, > .t-group").filter(function(){return c(this).is(":visible")}).each(c.proxy(function(f,e){this._toggleGroup(c(e),true)},this))}}},_ajaxRequest:function(f,d,h){var i=f.find(".t-panelbar-collapse, .t-panelbar-expand"),e=f.find(".t-link"),g=setTimeout(function(){i.addClass("t-loading")},100),j={};c.ajax({type:"GET",cache:false,url:e.data("ContentUrl")||e.attr("href"),dataType:"html",data:j,error:c.proxy(function(l,k){if(a.ajaxError(this.element,"error",l,k)){return}},this),complete:function(){clearTimeout(g);i.removeClass("t-loading")},success:c.proxy(function(k,l){d.html(k);this._toggleGroup(d,h)},this)})}};c.fn.tPanelBar=function(d){return a.create(this,{name:"tPanelBar",init:function(e,f){return new a.panelbar(e,f)},options:d})};c.fn.tPanelBar.defaults={effects:a.fx.property.defaults("height")}})(jQuery); \ No newline at end of file diff --git a/NzbDrone.Web/Scripts/2011.1.414/telerik.slider.min.js b/NzbDrone.Web/Scripts/2011.1.414/telerik.slider.min.js deleted file mode 100644 index 740e8343d..000000000 --- a/NzbDrone.Web/Scripts/2011.1.414/telerik.slider.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(f){var k=f.telerik;k.slider=function(n,o){var p=f(n);this.element=n;o.distance=o.maxValue-o.minValue;f.extend(this,o);o.position=this.orientation=="horizontal"?"left":"bottom";o.size=this.orientation=="horizontal"?"width":"height";o.orientation=this.orientation;j(n,o);this.wrapper=p.closest(".t-slider");this.trackDiv=this.wrapper.find(".t-slider-track");k.slider.setTrackDivWidth(this.wrapper,o);this.maxSelection=this.trackDiv[o.size]();var l=this.maxSelection/((this.maxValue-this.minValue)/this.smallStep);if(o.tickPlacement!="none"&&l>=2){this.trackDiv.before(a(o));k.slider.setItemsWidth(this.wrapper,this.trackDiv,o);k.slider.setItemsTitle(this.wrapper,o);k.slider.setItemsLargeTick(this.wrapper,o)}else{this.pixelStepsArray=k.slider.getPixelSteps(this.trackDiv,o)}var m={element:n,dragHandle:this.wrapper.find(".t-draghandle"),orientation:o.orientation,size:o.size,position:o.position,owner:this};this._setValueInRange(o.val);this[o.enabled?"enable":"disable"]();new k.slider.Selection(m);new k.slider.Drag(m);this.keyMap={37:g(o.smallStep),40:g(o.smallStep),39:h(o.smallStep),38:h(o.smallStep),35:d(o.maxValue),36:d(o.minValue),33:h(o.largeStep),34:g(o.largeStep)};k.bind(this,{slide:this.onSlide,change:this.onChange,load:this.onLoad})};f.extend(k.slider,{setTrackDivWidth:function(n,o){var m=n.find(".t-slider-track");var l=parseFloat(m.css(o.position),10)*2;m[o.size]((n[o.size]()-2)-l)},setItemsWidth:function(t,p,m){var l=Math.floor(m.distance/m.smallStep),r=t.find(".t-tick"),q=0,s=p[m.size]();var o=this.calculateItemsWidth(t,m,l);if(m.orientation=="horizontal"){for(var n=0;n=0;l--){f(p[l]).attr("title",k.formatString(o.tooltip.format||"{0}",parseFloat(m.toFixed(3),10)));m+=o.smallStep}}},setItemsLargeTick:function(q,n){if((1000*n.largeStep)%(1000*n.smallStep)==0){var p=q.find(".t-tick"),o={},l=parseFloat((n.largeStep/n.smallStep).toFixed(3),10);if(n.orientation=="horizontal"){for(var m=0;m").html(o.attr("title")))}}else{for(var m=p.length-1;m>=0;m=parseFloat((m-l).toFixed(3),10)){o=f(p[m]);o.addClass("t-tick-large").html(f("").html(o.attr("title")));if(m!=0&&m!=p.length-1){o.css("line-height",o[n.size]()+"px")}}}}},calculateItemsWidth:function(s,n,m){var r=parseFloat(s.find(".t-slider-track").css(n.size))+1,o=r/n.distance;if((n.distance/n.smallStep)-Math.floor(n.distance/n.smallStep)>0){r-=((n.distance%n.smallStep)*o)}var l=r/m,q=new Array();for(var p=0;p=r){while(p>l){p-=l;m+=q.smallStep}}return parseFloat((q.minValue+m).toFixed(3))},getDragableArea:function(m,n,l){var p=m.offset().left,o=m.offset().top;return{startPoint:l=="horizontal"?p:o+n,endPoint:l=="horizontal"?p+n:o}},fixDragHandlePosition:function(q,r,m){var o=q-m.owner.minValue,n=0;if(q==m.owner.minValue||q==m.owner.maxValue){if(q==m.owner.maxValue){n=m.owner.maxSelection}}else{var p=parseInt(((m.orientation=="horizontal"?o:m.owner.maxValue-q)/m.owner.smallStep).toFixed(3)),u=f(r.find(".t-tick")[p]),s=u[m.size]()/2,t=u.offset(),l=k.slider.getDragableArea(m.owner.trackDiv,m.owner.maxSelection,m.orientation);if(m.orientation=="horizontal"){n=t.left-l.startPoint+s}else{n=(l.startPoint-(t.top+s))+1;if(!f.browser.mozilla){n+=(n-Math.floor(n))>0?1:0}}}return n}});function h(l){return function(m){return m+l}}function g(l){return function(m){return m-l}}function d(l){return function(){return l}}k.slider.prototype={enable:function(){this.wrapper.removeAttr("disabled").removeClass("t-state-disabled").addClass("t-state-default");var l=f.proxy(function(p){var o=this.orientation=="horizontal"?p.pageX:p.pageY,n=k.slider.getDragableArea(this.trackDiv,this.maxSelection,this.orientation);this._update(k.slider.getValueFromPosition(o,n,this))},this);this.wrapper.find(".t-tick").bind("click",l).end().find(".t-slider-track").bind("click",l);if(this.showButtons){var m=f.proxy(function(n,o){if(n.which==1){this._setValueInRange(this.val+(o*this.smallStep));this.timeout=setTimeout(f.proxy(function(){this.timer=setInterval(f.proxy(function(){this._setValueInRange(this.val+(o*this.smallStep))},this),60)},this),200)}},this);this.wrapper.find(".t-button").unbind("mousedown").unbind("mouseup").bind("mouseup",f.proxy(function(n){this._clearTimer()},this)).unbind("mouseover").bind("mouseover",function(n){f(n.currentTarget).addClass("t-state-hover")}).unbind("mouseout").bind("mouseout",f.proxy(function(n){f(n.currentTarget).removeClass("t-state-hover");this._clearTimer()},this)).eq(0).bind("mousedown",f.proxy(function(n){m(n,1)},this)).end().eq(1).bind("mousedown",f.proxy(function(n){m(n,-1)},this))}this.wrapper.find(".t-draghandle").bind({keydown:f.proxy(this._keydown,this)});this.enabled=true},disable:function(){this.wrapper.attr("disabled","disabled").removeClass("t-state-default").addClass("t-state-disabled");var l=k.preventDefault;this.wrapper.find(".t-button").unbind("mousedown").bind("mousedown",l).unbind("mouseup").bind("mouseup",l).unbind("mouseleave").bind("mouseleave",l).unbind("mouseover").bind("mouseover",l);this.wrapper.find(".t-tick").unbind("click").end().find(".t-slider-track").unbind("click");this.wrapper.find(".t-draghandle").unbind("keydown").bind("keydown",l);this.enabled=false},_update:function(l){var m=this.value()!=l;this.value(l);if(m){k.trigger(this.element,"change",{value:this.val})}},value:function(l){l=parseFloat(parseFloat(l,10).toFixed(3),10);if(isNaN(l)){return this.val}if(l>=this.minValue&&l<=this.maxValue){if(this.val!=l){f(this.element).val(l);this.val=l;this.refresh()}}},refresh:function(){k.trigger(this.element,"t:moveSelection",{value:this.val})},_clearTimer:function(l){clearTimeout(this.timeout);clearInterval(this.timer)},_keydown:function(l){if(l.keyCode in this.keyMap){this._setValueInRange(this.keyMap[l.keyCode](this.val));l.preventDefault()}},_setValueInRange:function(l){l=parseFloat(parseFloat(l,10).toFixed(3),10);if(isNaN(l)){this._update(this.minValue);return}l=Math.max(l,this.minValue);l=Math.min(l,this.maxValue);this._update(l)}};k.slider.Selection=function(n){var o=f(n.element);function m(s){var r=s-n.owner.minValue,t=n.owner.wrapper.find(".t-slider-items"),p=0,q=0;if(t.length!=0){q=k.slider.fixDragHandlePosition(s,t,n)}else{if(n.owner.pixelStepsArray.length==0){q=0}else{while(r>0){r=parseFloat((r-n.owner.smallStep).toFixed(5),10);q+=n.owner.pixelStepsArray[p];p++}}}var v=n.owner.trackDiv.find(".t-slider-selection"),u=parseInt(n.dragHandle[n.size]()/2,10)+1;v[n.size](q);n.dragHandle.css(n.position,q-u)}m(parseFloat(o.val(),10));var l=function(p){m(parseFloat(p.value,10))};o.bind({change:l,slide:l,"t:moveSelection":l})};k.slider.Drag=function(m){m.dragHandleSize=m.dragHandle[m.size]();f.extend(this,m);var l="";switch(m.type){case"leftHandle":l=".t-draghandle:first";break;case"rightHandle":l=".t-draghandle:last";break;default:l=".t-draghandle";break}new k.draggable({distance:0,owner:m.owner.wrapper[0],selector:l,scope:m.element.id,start:f.proxy(this.start,this),drag:f.proxy(this.drag,this),stop:f.proxy(this.stop,this)})};k.slider.Drag.prototype={start:function(o){if(!this.owner.enabled){return false}f(this.element).unbind("mouseover");this.val=parseFloat(f(this.element).val());this.dragableArea=k.slider.getDragableArea(this.owner.trackDiv,this.owner.maxSelection,this.orientation);this.step=Math.max(this.owner.smallStep*(this.owner.maxSelection/this.owner.distance),0);this.selectionStart=this.owner.selectionStart;this.selectionEnd=this.owner.selectionEnd;this.oldVal=this.val;this.format=this.owner.tooltip.format||"{0}";if(this.type){this.owner._setZIndex(this.type)}if(this.owner.tooltip.enabled){this.tooltipDiv=f("
      ").appendTo(document.body);if(this.type){var m=k.formatString(this.format,this.selectionStart),l=k.formatString(this.format,this.selectionEnd);this.tooltipDiv.html(m+" - "+l)}else{var n="t-callout-";if(this.orientation=="horizontal"){if(this.owner.tickPlacement=="topLeft"){n+="n"}else{n+="s"}}else{if(this.owner.tickPlacement=="topLeft"){n+="w"}else{n+="e"}}this.tooltipInnerDiv="
      ";this.tooltipDiv.html(k.formatString(this.owner.tooltip.format||"{0}",this.val)+this.tooltipInnerDiv)}this.moveTooltip(this.tooltipDiv)}},drag:function(n){if(this.orientation=="horizontal"){this.val=this.horizontalDrag(n)}else{this.val=this.verticalDrag(n)}if(this.oldVal!=this.val){this.oldVal=this.val;if(this.type){if(this.type=="leftHandle"){if(this.valthis.selectionStart){this.selectionEnd=this.val}else{this.selectionStart=this.selectionEnd=this.val}}k.trigger(this.element,"slide",{values:[this.selectionStart,this.selectionEnd]});if(this.owner.tooltip.enabled){var m=k.formatString(this.format,this.selectionStart),l=k.formatString(this.format,this.selectionEnd);this.tooltipDiv.html(m+" - "+l)}}else{k.trigger(this.element,"slide",{value:this.val});if(this.owner.tooltip.enabled){this.tooltipDiv.html(k.formatString(this.format,this.val)+this.tooltipInnerDiv)}}if(this.owner.tooltip.enabled){this.moveTooltip(this.tooltipDiv)}}},stop:function(l){if(l.keyCode==27){this.owner.refresh()}else{if(this.type){this.owner._update(this.selectionStart,this.selectionEnd)}else{this.owner._update(this.val)}}if(this.owner.tooltip.enabled){this.tooltipDiv.remove()}f(this.element).bind("mouseover");return false},moveTooltip:function(r){var q=0,o=0;if(this.type){var n=this.owner.wrapper.find(".t-draghandle"),m=n.eq(0).offset(),s=n.eq(1).offset();if(this.orientation=="horizontal"){q=s.top;o=m.left+((s.left-m.left)/2)}else{q=m.top+((s.top-m.top)/2);o=s.left}}else{var p=this.dragHandle.offset();q=p.top;o=p.left}var l=r[this.size]()/2;if(this.orientation=="horizontal"){o-=l;if(this.owner.tickPlacement!="topLeft"){q-=35}else{q+=33}}else{q-=l;if(this.owner.tickPlacement!="topLeft"){o-=r.width()+23}else{o+=31}}r.css({top:q,left:o})},horizontalDrag:function(l){var m=0;if(this.dragableArea.startPoint=this.dragableArea.endPoint){m=this.owner.maxValue}else{m=this.owner.minValue}}return m},verticalDrag:function(l){var m=0;if(this.dragableArea.startPoint>l.pageY&&l.pageY>this.dragableArea.endPoint){m=k.slider.getValueFromPosition(l.pageY,this.dragableArea,this.owner)}else{if(l.pageY<=this.dragableArea.endPoint){m=this.owner.maxValue}else{m=this.owner.minValue}}return m}};function b(m,l){var n=f(l),q=m.orientation=="horizontal"?" t-slider-horizontal":" t-slider-vertical",o;if(m.tickPlacement=="bottomRight"){o=" t-slider-bottomright"}else{if(m.tickPlacement=="topLeft"){o=" t-slider-topleft"}}var p=m.style?m.style:n.attr("style");return new k.stringBuilder().cat("
      ").cat("
      ").string()}function c(o,n){var m,l=o.orientation=="horizontal";if(n=="increase"){m=l?"t-arrow-next":"t-arrow-up"}else{m=l?"t-arrow-prev":"t-arrow-down"}return new k.stringBuilder().cat("").cat(o[n+"ButtonTitle"]).cat("").string()}function a(l){return new k.stringBuilder().cat("
        ").rep("
      •  
      • ",(Math.floor((l.distance/l.smallStep).toFixed(3),10)+1)).cat("
      ").string()}function e(l){var m=l.is("input")?1:2;return new k.stringBuilder().cat("
      ").cat("
      ").cat("Drag").catIf("Drag",m>1).cat("
      ").string()}function j(l,m){var n=f(l);n.val(m.val);n.wrap(b(m,l)).hide();if(m.showButtons){n.before(c(m,"increase")).before(c(m,"decrease"))}n.before(e(n))}f.fn.tSlider=function(l){return k.create(this,{name:"tSlider",init:function(m,n){return new k.slider(m,n)},options:l})};f.fn.tSlider.defaults={enabled:true,minValue:0,maxValue:10,val:0,smallStep:1,largeStep:5,showButtons:true,increaseButtonTitle:"Increase",decreaseButtonTitle:"Decrease",orientation:"horizontal",tickPlacement:"both",tooltip:{enabled:true,format:"{0}"}};k.rangeSlider=function(l,m){var n=f(l);this.element=l;m.distance=m.maxValue-m.minValue;f.extend(this,m);m.position=this.orientation=="horizontal"?"left":"bottom";m.size=this.orientation=="horizontal"?"width":"height";j(l,m);this.wrapper=n.closest(".t-slider");this.trackDiv=this.wrapper.find(".t-slider-track");k.slider.setTrackDivWidth(this.wrapper,m);this.maxSelection=this.trackDiv[m.size]();var o=this.maxSelection/((this.maxValue-this.minValue)/this.smallStep);if(m.tickPlacement!="none"&&o>=2){this.trackDiv.before(a(m));k.slider.setItemsWidth(this.wrapper,this.trackDiv,m);k.slider.setItemsTitle(this.wrapper,m);k.slider.setItemsLargeTick(this.wrapper,m)}else{this.pixelStepsArray=k.slider.getPixelSteps(this.trackDiv,m)}this._correctValues(this.selectionStart,this.selectionEnd);var q={element:l,type:"leftHandle",dragHandle:this.wrapper.find(".t-draghandle:first"),orientation:m.orientation,size:m.size,position:m.position,owner:this};new k.slider.Drag(q);new k.rangeSlider.Selection(q);var p={element:l,type:"rightHandle",dragHandle:this.wrapper.find(".t-draghandle:last"),orientation:m.orientation,size:m.size,position:m.position,owner:this};new k.slider.Drag(p);this[m.enabled?"enable":"disable"]();this.keyMap={37:g(m.smallStep),40:g(m.smallStep),39:h(m.smallStep),38:h(m.smallStep),35:d(m.maxValue),36:d(m.minValue),33:h(m.largeStep),34:g(m.largeStep)};k.bind(this,{slide:this.onSlide,change:this.onChange,load:this.onLoad})};k.rangeSlider.prototype={enable:function(){this.wrapper.removeAttr("disabled").removeClass("t-state-disabled").addClass("t-state-default");var l=f.proxy(function(p){var n=this.orientation=="horizontal"?p.pageX:p.pageY,m=k.slider.getDragableArea(this.trackDiv,this.maxSelection,this.orientation),o=k.slider.getValueFromPosition(n,m,this);if(othis.selectionEnd){this._setValueInRange(this.selectionStart,o)}else{if(o-this.selectionStart<=this.selectionEnd-o){this._setValueInRange(o,this.selectionEnd)}else{this._setValueInRange(this.selectionStart,o)}}}},this);this.wrapper.find(".t-tick").bind("click",l).end().find(".t-slider-track").bind("click",l);this.wrapper.find(".t-draghandle").eq(0).bind({keydown:f.proxy(function(m){this._keydown(m,true)},this)}).end().eq(1).bind({keydown:f.proxy(function(m){this._keydown(m,false)},this)});this.enabled=true},disable:function(){this.wrapper.attr("disabled","disabled").removeClass("t-state-default").addClass("t-state-disabled");this.wrapper.find(".t-tick").unbind("click").end().find(".t-slider-track").unbind("click");this.wrapper.find(".t-draghandle").unbind("keydown").bind("keydown",k.preventDefault);this.enabled=false},_keydown:function(o,l){var n=this.selectionStart,m=this.selectionEnd;if(o.keyCode in this.keyMap){if(l){n=this.keyMap[o.keyCode](n);if(n>m){m=n}}else{m=this.keyMap[o.keyCode](m);if(m=this.minValue&&m<=this.maxValue&&l>=this.minValue&&l<=this.maxValue&&m<=l){if(this.selectionStart!=m||this.selectionEnd!=l){f(this.element).find("input").eq(0).val(m).end().eq(1).val(l);this.selectionStart=m;this.selectionEnd=l;this.refresh()}}},refresh:function(){k.trigger(this.element,"t:moveSelection",{values:[this.selectionStart,this.selectionEnd]});if(this.selectionStart==this.maxValue&&this.slectionEnd==this.maxValue){this._setZIndex("leftHandle")}},_setValueInRange:function(l,m){l=Math.max(l,this.minValue);l=Math.min(l,this.maxValue);m=Math.max(m,this.minValue);m=Math.min(m,this.maxValue);if(this.selectionStart==this.maxValue&&this.slectionEnd==this.maxValue){this._setZIndex("leftHandle")}this._update(l,m)},_correctValues:function(m,l){if(m>=l){this._setValueInRange(l,m)}else{this._setValueInRange(m,l)}},_setZIndex:function(n){var p=this.wrapper.find(".t-draghandle"),l=p.eq(0),o=p.eq(1),m="z-index";if(n=="leftHandle"){l.css(m,"1");o.css(m,"")}else{l.css(m,"");o.css(m,"1")}}};k.rangeSlider.Selection=function(p){function o(s){var x=s[0]-p.owner.minValue,w=s[1]-p.owner.minValue,u=p.owner.wrapper.find(".t-slider-items"),t=0,v=0,r=0;if(u.length!=0){t=k.slider.fixDragHandlePosition(s[0],u,p);v=k.slider.fixDragHandlePosition(s[1],u,p)}else{while(x>0){x=parseFloat((x-p.owner.smallStep).toFixed(5),10);t+=p.owner.pixelStepsArray[r];r++}r=0;while(w>0){w=parseFloat((w-p.owner.smallStep).toFixed(5),10);v+=p.owner.pixelStepsArray[r];r++}}var q=p.owner.wrapper.find(".t-draghandle");var y=parseInt(q.eq(0)[p.size]()/2,10)+1;q.eq(0).css(p.position,t-y).end().eq(1).css(p.position,v-y);m(t,v)}function m(t,r){var s=0,u=0;if(t");f.ajax(this.ajaxOptions(k,{url:j||l.contentUrl}))}},resize:function(){var v=this.$element,C=v.children(":not(.t-splitbar)"),k=this.orientation=="horizontal",q=v.children(".t-splitbar").length,z=k?"width":"height",D=v[z]();if(q===0){q=C.length-1;for(var l=0;l")}return this};t.cat("
      ").catIconIf("t-collapse-prev",n.collapsible&&!n.collapsed).catIconIf("t-expand-prev",n.collapsible&&n.collapsed).catIconIf("t-resize-handle",s).catIconIf("t-collapse-next",o.collapsible&&!o.collapsed).catIconIf("t-expand-next",o.collapsible&&o.collapsed).cat("
      ");j.after(t.string())}}D-=h*q;var y=0,x=0,p=f();C.css({position:"absolute",top:0})[z](function(){var E=f(this).data("pane"),F;if(E.collapsed){F=0}else{if(c(E.size)){p=p.add(this);return}else{F=parseInt(E.size,10);if(b(E.size)){F=Math.floor(F*D/100)}}}x++;y+=F;return F});D-=y;var u=p.length,B=Math.floor(D/u);p.slice(0,u-1).css(z,B).end().eq(u-1).css(z,D-(u-1)*B);var w=0,r=k?"height":"width",m=k?"left":"top",A=k?"offsetWidth":"offsetHeight";v.children().css(r,v[r]()).each(function(E,F){F.style[m]=Math.floor(w)+"px";w+=F[A]})}};i.splitter.PaneResizing=function(j){this.owner=j;new i.draggable({distance:0,owner:j.element,selector:".t-splitbar-draggable-horizontal, .t-splitbar-draggable-vertical",scope:j.element.id,start:f.proxy(this.start,this),drag:f.proxy(this.drag,this),stop:f.proxy(this.stop,this)})};i.splitter.PaneResizing.prototype={start:function(x){var l=x.$draggable,o=l.prev(),p=l.next(),m=o.data("pane"),q=p.data("pane"),u=this.owner.orientation==="horizontal",y=u?"width":"height",z=u?"offsetWidth":"offsetHeight",s=u?"height":"width";this.positioningProperty=u?"left":"top";this.mousePositioningProperty=u?"pageX":"pageY";this.previousPane=o;this.nextPane=p;this.initialSplitBarPosition=parseInt(l[0].style[this.positioningProperty]);this.initialMousePosition=x[this.mousePositioningProperty];this.ghostSplitBar=f("
      ").css(s,x.$draggable[s]()).css(this.positioningProperty,this.initialSplitBarPosition).appendTo(this.owner.element);var A=parseInt(o[0].style[this.positioningProperty]),n=parseInt(p[0].style[this.positioningProperty])+p[0][z]-h,w=this.owner.$element.css(y),t=function(C){var B=parseInt(C,10);return(g(C)?B:(w*B)/100)||0},v=t(m.minSize),k=t(m.maxSize)||n-A,j=t(q.minSize),r=t(q.maxSize)||n-A;this.maxSize=Math.min(n-j,A+k);this.minSize=Math.max(A+v,n-r);f(document.body).css("cursor",l.css("cursor"))},drag:function(k){var j=Math.min(this.maxSize,Math.max(this.minSize,this.initialSplitBarPosition+(k[this.mousePositioningProperty]-this.initialMousePosition)));this.ghostSplitBar.toggleClass("t-restricted-size-"+this.owner.orientation,j==this.maxSize||j==this.minSize)[0].style[this.positioningProperty]=j+"px"},stop:function(r){if(r.keyCode!==27){var n=parseInt(this.ghostSplitBar[0].style[this.positioningProperty]),j=this.owner.orientation==="horizontal",p=j?"width":"height",o=j?"offsetWidth":"offsetHeight",k=this.previousPane.data("pane"),q=this.nextPane.data("pane"),l=n-parseInt(this.previousPane[0].style[this.positioningProperty]),t=parseInt(this.nextPane[0].style[this.positioningProperty])+this.nextPane[0][o]-n-h,m=this.owner.$element[p]();m-=h*this.owner.$element.children(".t-splitbar").length;var s=this.owner.$element.children(".t-pane").filter(function(){return c(f(this).data("pane").size)}).length;if(!c(k.size)||s>1){if(c(k.size)){s--}k.size=l+"px"}if(!c(q.size)||s>1){q.size=t+"px"}}this.ghostSplitBar.remove();if(r.keyCode!==27){this.owner.$element.trigger("resize")}f(document.body).css("cursor","");return false}};f.fn.tSplitter=function(j){return i.create(this,{name:"tSplitter",init:function(k,l){return new i.splitter(k,l)},options:j})};f.fn.tSplitter.defaults={orientation:"horizontal"}})(jQuery); \ No newline at end of file diff --git a/NzbDrone.Web/Scripts/2011.1.414/telerik.tabstrip.min.js b/NzbDrone.Web/Scripts/2011.1.414/telerik.tabstrip.min.js deleted file mode 100644 index d6406d7a8..000000000 --- a/NzbDrone.Web/Scripts/2011.1.414/telerik.tabstrip.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(a){var b=a.telerik;b.tabstrip=function(c,d){this.element=c;var f=a(c);this.$contentElements=f.find("> .t-content");a.extend(this,d);if(this.contentUrls){f.find(".t-tabstrip-items > .t-item").each(a.proxy(function(i,j){a(j).find(".t-link").data("ContentUrl",this.contentUrls[i])},this))}var h=".t-tabstrip-items > .t-item:not(.t-state-disabled)";f.delegate(h,"mouseenter",b.hover).delegate(h,"mouseleave",b.leave).delegate(h,d.activateEvent,b.delegate(this,this._click)).delegate(".t-tabstrip-items > .t-state-disabled .t-link","click",b.preventDefault);b.bind(this,{select:a.proxy(function(i){if(i.target==this.element&&this.onSelect){this.onSelect(i)}},this),contentLoad:this.onContentLoad,error:this.onError,load:this.onLoad});var g=f.find("li.t-state-active"),e=a(this.getContentElement(g.parent().children().index(g)));if(e.length>0&&e[0].childNodes.length==0){this.activateTab(g.eq(0))}};a.extend(b.tabstrip.prototype,{select:function(c){a(c).each(a.proxy(function(e,f){var d=a(f);if(d.is(".t-state-disabled,.t-state-active")){return}this.activateTab(d)},this))},enable:function(c){a(c).addClass("t-state-default").removeClass("t-state-disabled")},disable:function(c){a(c).removeClass("t-state-default").removeClass("t-state-active").addClass("t-state-disabled")},reload:function(d){var c=this;a(d).each(function(){var f=a(this),e=f.find(".t-link").data("ContentUrl");if(e){c.ajaxRequest(f,a(c.getContentElement(f.index())),null,e)}})},_click:function(j,f){var h=a(f),c=h.find(".t-link"),d=c.attr("href"),g=a(this.getContentElement(h.index()));if(h.is(".t-state-disabled,.t-state-active")){j.preventDefault();return}if(b.trigger(this.element,"select",{item:h[0],contentElement:g[0]})){j.preventDefault()}var i=c.data("ContentUrl")||(d&&(d.charAt(d.length-1)=="#"||d.indexOf("#"+this.element.id+"-")!=-1));if(!d||i||(g.length>0&&g[0].childNodes.length==0)){j.preventDefault()}else{return}if(this.activateTab(h)){j.preventDefault()}},activateTab:function(d){var f=d.parent().children().removeClass("t-state-active").addClass("t-state-default").index(d);d.removeClass("t-state-default").addClass("t-state-active");var g=this.$contentElements;if(g.length==0){return false}var j=g.filter(".t-state-active");var e=a(this.getContentElement(f));var h=this;if(e.length==0){j.removeClass("t-state-active");b.fx.rewind(h.effects,j,{});return false}var c=e.is(":empty"),i=function(){e.addClass("t-state-active");b.fx.play(h.effects,e,{})};j.removeClass("t-state-active").stop(false,true);b.fx.rewind(h.effects,j,{},function(){if(d.hasClass("t-state-active")){if(!c){i()}else{h.ajaxRequest(d,e,function(){if(d.hasClass("t-state-active")){i()}})}}});return true},getSelectedTabIndex:function(){return a(this.element).find("li.t-state-active").index()},getContentElement:function(g){if(isNaN(g-0)){return}var c=this.$contentElements,e=new RegExp("-"+(g+1)+"$");for(var d=0,f=c.length;d').prependTo(d)},100);a.ajax({type:"GET",cache:false,url:g||d.data("ContentUrl")||d.attr("href"),dataType:"html",data:c,error:a.proxy(function(l,k){if(b.ajaxError(this.element,"error",l,k)){return}},this),complete:function(){clearTimeout(h);if(i!==null){i.remove()}},success:a.proxy(function(k,l){e.html(k);if(j){j.call(this,e)}b.trigger(this.element,"contentLoad",{item:f[0],contentElement:e[0]})},this)})}});a.fn.tTabStrip=function(c){return b.create(this,{name:"tTabStrip",init:function(d,e){return new b.tabstrip(d,e)},options:c})};a.fn.tTabStrip.defaults={activateEvent:"click",effects:b.fx.toggle.defaults()}})(jQuery); \ No newline at end of file diff --git a/NzbDrone.Web/Scripts/2011.1.414/telerik.textbox.min.js b/NzbDrone.Web/Scripts/2011.1.414/telerik.textbox.min.js deleted file mode 100644 index a93462bb6..000000000 --- a/NzbDrone.Web/Scripts/2011.1.414/telerik.textbox.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(e){var j=e.telerik,a=[8,9,37,38,39,40,46,35,36,44],b=["font-family","font-size","font-stretch","font-style","font-weight","letter-spacing","line-height","color","text-align","text-decoration","text-transform"];function g(m){var p={};for(var l=0,o=b.length;l
      '));if(this.showIncreaseButton){p.cat('Increment')}if(this.showDecreaseButton){p.cat('Decrement')}if(p.buffer.length>0){e(p.string()).insertAfter(m)}}this.$wrapper=m.closest(".t-numerictextbox").find(".t-arrow-up, .t-arrow-down").bind({click:j.preventDefault,dragstart:j.preventDefault}).end().bind({focusin:e.proxy(this._focus,this),focusout:e.proxy(this._blur,this)});this.enabled=!m.is("[disabled]");p.buffer=[];p.cat("[ |").cat(this.groupSeparator).catIf("|"+this.symbol,this.symbol).cat("]");this.replaceRegExp=new RegExp(p.string(),"g");var n=m.attr("value"),o=m.attr("class").replace("t-input","");p.buffer=[];p.cat('
      ').cat(n||(this.enabled?this.text:"")).cat("
      ");this.$text=e(p.string()).insertBefore(m).css(g(m)).click(function(q){k.focus()});this._blur();this[this.enabled?"enable":"disable"]();this.numFormat=this.numFormat===undefined?this.type.charAt(0):this.numFormat;this.step=this.parse(this.step);this.val=this.parse(this.val);this.minValue=this.parse(this.minValue);this.maxValue=this.parse(this.maxValue);this.decimals={"190":".","188":",","110":this.separator};this.value(n||this.val);j.bind(this,{load:this.onLoad,valueChange:this.onChange})};j.textbox.prototype={_paste:function(o){var m=this.$element.val();if(e.browser.msie){var l=this.element.document.selection.createRange().text;var k=window.clipboardData.getData("Text");if(l&&l.length>0){m=m.replace(l,k)}else{m+=k}}if(m=="-"){return true}var n=this.parse(m);if(n||n==0){this._update(n)}},_keydown:function(q){var n=q.keyCode,l=this.$element,p=this.separator,k=l.val();setTimeout(e.proxy(function(){l.toggleClass("t-state-error",!this.inRange(this.parse(l.val()),this.minValue,this.maxValue))},this));var m=this.decimals[n];if(m){if(m==p&&this.digits>0&&k.indexOf(p)==-1){return true}else{q.preventDefault()}}if(n==8||n==46){setTimeout(e.proxy(function(){this._update(this.parse(l.val()))},this));return true}if(n==38||n==40){var o=n==38?1:-1;this._modify(o*this.step);return true}if(n==222){q.preventDefault()}},_keypress:function(m){var l=e(m.target),k=m.keyCode||m.which;if(m.shiftKey&&k!=45){return false}if(k==0||e.inArray(k,a)!=-1||m.ctrlKey||(m.shiftKey&&k==45)){return true}if(((this.minValue!==null?this.minValue<0:true)&&String.fromCharCode(k)=="-"&&j.caretPos(l[0])==0&&l.val().indexOf("-")==-1)||this.inRange(k,48,57)){setTimeout(e.proxy(function(){var n=this.val,o=this.parse(l.val());if(o!=null&&this.digits){o=h(o,this.digits)}if(n!=o){this._value(o);if(j.trigger(this.element,"valueChange",{oldValue:n,newValue:o})){this._value(n)}}},this));return true}m.preventDefault()},_focus:function(){this.$element.css("text-indent","0").css("color",this.$text.css("color"));this.$text.hide()},_blur:function(){this.$element.css("color",this.$element.css("background-color")).removeClass("t-state-error");if(this.enabled){this.$text.show();if(!e.browser.msie){this.$element.css("text-indent","-4444px")}}var k=this.minValue,m=this.maxValue,l=this.parse(this.$element.val());if(l!=null){if(k!=null&&lm){l=m}}l=parseFloat(l.toFixed(this.digits))}this._update(l)},_clearTimer:function(k){clearTimeout(this.timeout);clearInterval(this.timer);clearInterval(this.acceleration)},_stepper:function(m,k){if(m.which==1){var l=this.step;this._modify(k*l);this.timeout=setTimeout(e.proxy(function(){this.timer=setInterval(e.proxy(function(){this._modify(k*l)},this),80);this.acceleration=setInterval(function(){l+=1},1000)},this),200)}},_modify:function(n){var k=this.parse(this.element.value),l=this.minValue,m=this.maxValue;k=k?k+n:n;if(l!==null&&km){k=m}}this._update(parseFloat(k.toFixed(this.digits)))},_update:function(k){var l=this.val;this._value(k);if(l!=k){if(j.trigger(this.element,"valueChange",{oldValue:l,newValue:k})){this._value(l)}}},_value:function(k){var m=(typeof k==="number")?k:this.parse(k),n=this.enabled?this.text:"",l=m===null;if(m!=null){m=parseFloat(m.toFixed(this.digits))}this.val=m;this.$element.val(l?"":this.formatEdit(m));this.$text.html(l?n:this.format(m));if(l){this.$text.addClass("t-state-empty")}else{this.$text.removeClass("t-state-empty")}},enable:function(){var k=this.$wrapper.find(".t-arrow-up, .t-arrow-down"),l=e.proxy(this._clearTimer,this);this.enabled=true;this.$element.removeAttr("disabled");if(!this.val&&this.val!=0){this.$text.addClass("t-state-empty").html(this.text)}else{if(true==e.browser.msie){this.$text.show()}else{this.$element.css("text-indent","-4444px").css("color",this.$element.css("background-color"))}}this.$wrapper.removeClass("t-state-disabled");k.unbind("mouseup").unbind("mouseout").unbind("dblclick").bind({mouseup:l,mouseout:l,dblclick:l});var m="mousedown";k.eq(0).unbind(m).bind(m,e.proxy(function(n){this._stepper(n,1)},this));k.eq(1).unbind(m).bind(m,e.proxy(function(n){this._stepper(n,-1)},this))},disable:function(){this.enabled=false;this.$wrapper.addClass("t-state-disabled").find(".t-icon").unbind("mousedown").bind("mousedown",j.preventDefault);this.$element.attr("disabled","disabled");if(!this.val&&this.val!=0){this.$text.html("")}else{if(true==e.browser.msie){this.$text.hide()}else{this.$element.css("text-indent","-4444px").css("color",this.$element.css("background-color"))}}},value:function(l){if(l===undefined){return this.val}var k=(typeof l==="number")?l:this.parse(l);if(!this.inRange(k,this.minValue,this.maxValue)){k=null}this._value(k)},formatEdit:function(l){var k=this.separator;if(l&&k!="."){l=l.toString().replace(".",k)}return l},format:function(k){return j.textbox.formatNumber(k,this.numFormat,this.digits,this.separator,this.groupSeparator,this.groupSize,this.positive,this.negative,this.symbol,true)},inRange:function(m,k,l){return m===null||((k!==null?m>=k:true)&&(l!==null?m<=l:true))},parse:function(k){var l=null,m=this.separator;if(k||k=="0"){if(typeof k==typeof 1){return k}k=k.replace(this.replaceRegExp,"");if(m&&m!="."){k=k.replace(m,".")}var o=e.fn.tTextBox.patterns[this.type].negative[this.negative].replace(/(\(|\))/g,"\\$1").replace("*","").replace("n","([\\d|\\.]*)"),n=new RegExp(o);if(n.test(k)){l=-parseFloat(n.exec(k)[1])}else{l=parseFloat(k)}}return isNaN(l)?null:l}};e.fn.tTextBox=function(m){var l="numeric";if(m&&m.type){l=m.type}var k=e.fn.tTextBox.defaults[l];k.digits=j.cultureInfo[l+"decimaldigits"];k.separator=j.cultureInfo[l+"decimalseparator"];k.groupSeparator=j.cultureInfo[l+"groupseparator"];k.groupSize=j.cultureInfo[l+"groupsize"];k.positive=j.cultureInfo[l+"positive"];k.negative=j.cultureInfo[l+"negative"];k.symbol=j.cultureInfo[l+"symbol"];m=e.extend({},k,m);m.type=l;return this.each(function(){var n=e(this);m=e.meta?e.extend({},m,n.data()):m;if(!n.data("tTextBox")){n.data("tTextBox",new j.textbox(this,m));j.trigger(this,"load")}})};var d={val:null,text:"",step:1,inputAttributes:"",increaseButtonTitle:"Increase value",decreaseButtonTitle:"Decrease value",showIncreaseButton:true,showDecreaseButton:true};e.fn.tTextBox.defaults={numeric:e.extend(d,{minValue:-100,maxValue:100}),currency:e.extend(d,{minValue:0,maxValue:1000}),percent:e.extend(d,{minValue:0,maxValue:100})};e.fn.tTextBox.patterns={numeric:{negative:["(n)","-n","- n","n-","n -"]},currency:{positive:["*n","n*","* n","n *"],negative:["(*n)","-*n","*-n","*n-","(n*)","-n*","n-*","n*-","-n *","-* n","n *-","* n-","* -n","n- *","(* n)","(n *)"]},percent:{positive:["n *","n*","*n"],negative:["-n *","-n*","-*n"]}};if(!j.cultureInfo.numericnegative){e.extend(j.cultureInfo,{currencydecimaldigits:2,currencydecimalseparator:".",currencygroupseparator:",",currencygroupsize:3,currencynegative:0,currencypositive:0,currencysymbol:"$",numericdecimaldigits:2,numericdecimalseparator:".",numericgroupseparator:",",numericgroupsize:3,numericnegative:1,percentdecimaldigits:2,percentdecimalseparator:".",percentgroupseparator:",",percentgroupsize:3,percentnegative:0,percentpositive:0,percentsymbol:"%"})}var i=/[0#?]/;function h(k,m){var l=Math.pow(10,m||0);return Math.round(k*l)/l}function c(k){return k.split("").reverse().join("")}function f(o,k,r){var l=0,m=0,q=k.length,s=o.length,v=new j.stringBuilder();while(l=0){if(k.charAt(l).match(i)){v.cat(o.charAt(m++))}else{v.cat(k.charAt(l))}l++}v.catIf(o.substring(m),m-1){t=u.indexOf("0")}if(t>-1){var n=u.slice(0,t),p=u.slice(t,u.length);u=n.replace(/#/g,"")+p.replace(/#/g,"0")}else{u=u.replace(/#/g,"")}if(u.indexOf(",")==0){u=u.replace(/,/g,"")}return r?u:c(u)}j.textbox.formatNumber=function(M,q,v,x,l,S,r,t,O,H){if(!q){return M}var R,I,N,p,L=M<0;q=q.split(":");q=q.length>1?q[1].replace("}",""):q[0];var o=q.search(i)!=-1;if(o){q=q.split(";");I=q[0];N=q[1];p=q[2];q=(L&&N?N:I).indexOf("%")!=-1?"p":"n"}switch(q.toLowerCase()){case"d":return Math.round(M).toString();case"c":R="currency";break;case"n":R="numeric";break;case"p":R="percent";if(!H){M=Math.abs(M)*100}break;default:return M.toString()}var C=function(V,T,U){for(var W=V.length;W1?E[1]:"",k=j.lastIndexOf(D,"0"),A=j.lastIndexOf(D,"#");v=(A>k?A:k)+1}var P=h(M,v);M=isFinite(P)?P:M;var y=M.toString().split(/e/i);B=y.length>1?parseInt(y[1]):0;y=y[0].split(".");m=y[0];m=L?m.replace("-",""):m;u=y.length>1?y[1]:"";if(B){if(!L){u=C(u,B,false);m+=u.slice(0,B);u=u.substr(B)}else{m=C(m,B+1,true);u=m.slice(B,m.length)+u;m=m.slice(0,B)}}var Q=u.length;if(v<1||(o&&k==-1&&Q===0)){u=""}else{u=Q>v?u.slice(0,v):C(u,v,false)}var n;if(o){if(m==0){m=""}m=f(c(m),c(z),true);m=z.indexOf(",")!=-1?K(m,l,S):m;u=u&&D?f(u,D):"";n=M===0&&p?p:(L&&!N?"-":"")+m+(u.length>0?x+u:"")}else{m=K(m,l,S);J=J[R];var w=L?J.negative[t]:O?J.positive[r]:null;var s=m+(u.length>0?x+u:"");n=w?w.replace("n",s).replace("*",O):s}return n};e.extend(j.formatters,{number:j.textbox.formatNumber})})(jQuery); \ No newline at end of file diff --git a/NzbDrone.Web/Scripts/2011.1.414/telerik.timepicker.min.js b/NzbDrone.Web/Scripts/2011.1.414/telerik.timepicker.min.js deleted file mode 100644 index 5a20c36f3..000000000 --- a/NzbDrone.Web/Scripts/2011.1.414/telerik.timepicker.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(a){var b=a.telerik;b.timeView=function(c){a.extend(this,c);var d=this.dropDown=new b.dropDown({attr:this.dropDownAttr,effects:this.effects,onClick:function(f){var g=f.item;c.onChange(g.innerText||g.textContent)}});d.$element.addClass("t-time-popup").css("direction",this.isRtl?"rtl":"")};b.timeView.prototype={_ensureItems:function(){if(!this.dropDown.$items){this.bind()}},open:function(c){this._ensureItems();this.dropDown.open(c)},close:function(){this.dropDown.close()},bind:function(){var j=b.timeView.getTimeMilliseconds;var g=[];var c=this.format;var n=this.interval;var p=new b.datetime(this.minValue);var d=j(p);var f=j(this.maxValue);var l=n*b.datetime.msPerMinute;var k=parseInt(b.datetime.msPerDay/(n*b.datetime.msPerMinute));if(d!=f){var o=di?i+d:i;h=e>h?h+d:h;return e-h==0||i>=e&&i<=h},getTimeMilliseconds:function(c){c=c.value?c:new b.datetime(c);return((c.hours()*60)+c.minutes())*b.datetime.msPerMinute+c.seconds()*1000+c.milliseconds()}});b.timepicker=function(d,e){a.extend(this,e);if(d.nodeName.toLowerCase()!=="input"&&d.type.toLowerCase()!=="text"){throw"Target element is not a INPUT"}this.element=d;var f=this.$element=a(d).addClass("t-input").attr("autocomplete","off").bind({keydown:a.proxy(this._keydown,this),focus:a.proxy(function(j){if(this.openOnFocus){this._open()}this.$element.removeClass("t-state-error")},this)});if(!f.parent().hasClass("t-picker-wrap")){f.wrap('
      ');if(e.showButton){var i=new b.stringBuilder(),g=e.buttonTitle;a(i.cat('').cat('').string()).insertAfter(f)}}this.timeView=new b.timeView({effects:this.effects,dropDownAttr:this.dropDownAttr,format:this.format,interval:this.interval,isRtl:f.closest(".t-rtl").length,minValue:this.minValue,maxValue:this.maxValue,onNavigateWithOpenPopup:a.proxy(function(j){this.$element.val(j)},this),onChange:a.proxy(function(j){if(j!=this.inputValue){this._update(j)}this._close()},this)});this.inputValue=f.val();var c=this.selectedValue||this.inputValue;if(c){this._value(this.parse(c))}var h=this.enabled?a.proxy(this._togglePopup,this):b.preventDefault;this.$wrapper=f.closest(".t-timepicker").find(".t-icon").bind("click",h).end();a(document.documentElement).bind("mousedown",a.proxy(function(m){var l=this.$element.val();if(l!=this.inputValue){this._update(l)}var j=this.timeView.dropDown.$element;var k=j&&j.parent().length>0;if(!k||a.contains(this.$wrapper[0],m.target)||a.contains(j.parent()[0],m.target)){return}this._close()},this));b.bind(this,{open:this.onOpen,close:this.onClose,valueChange:this.onChange,load:this.onLoad})};b.timepicker.prototype={_close:function(){var c=this.timeView.dropDown;if(!c.$element.is(":animated")&&c.isOpened()){this._trigger("close")}},_open:function(){if(!this.timeView.isOpened()){this._trigger("open")}},_trigger:function(c){if(!b.trigger(this.element,c)){this[c]()}},_togglePopup:function(){if(this.timeView.isOpened()){this._close()}else{this.element.focus();this._open()}},_update:function(f){var k=this.minValue,c=this.maxValue,f=this.parse(f),d=this.selectedValue;if(f!=null&&!b.timeView.isInRange(f,k,c)){var e=b.timeView.getTimeMilliseconds,i=e(f),j=Math.abs(e(k)-i),l=Math.abs(e(c)-i);f=new Date(j0)})}b.treeview=function(f,g){this.element=f;var h=c(f);c.extend(this,g);var d=".t-in:not(.t-state-selected,.t-state-disabled)";c(".t-in.t-state-selected",f).live("mouseenter",b.preventDefault);h.delegate(d,"mouseenter",b.hover).delegate(d,"mouseleave",b.leave).delegate(d,"click",b.delegate(this,this.nodeSelect)).delegate("div:not(.t-state-disabled) .t-in","dblclick",b.delegate(this,this.nodeClick)).delegate(":checkbox","click",b.delegate(this,this.checkboxClick)).delegate(".t-plus, .t-minus","click",b.delegate(this,this.nodeClick));if(this.isAjax()){a(h)}if(this.dragAndDrop){b.bind(this,{nodeDragStart:this.onNodeDragStart,nodeDragging:this.onNodeDragging,nodeDragCancelled:this.onNodeDragCancelled,nodeDrop:this.onNodeDrop,nodeDropped:this.onNodeDropped});(function(k){var i=c('
      ');var n;function j(o){if(b.trigger(k.element,"nodeDragStart",{item:o.$draggable.closest(".t-item")[0]})){return false}i.appendTo(k.element)}function l(w){var r;n=c(w.target);b.trigger(k.element,"nodeDragging",{pageY:w.pageY,pageX:w.pageX,dropTarget:w.target,setStatusClass:function(z){r=z},item:w.$draggable.closest(".t-item")[0]});if(r){i.css("visibility","hidden");b.dragCueStatus(w.$cue,r);return}r="t-insert-middle";if(k.dragAndDrop.dropTargets&&c(w.target).closest(k.dragAndDrop.dropTargets).length>0){b.dragCueStatus(w.$cue,"t-add");return}if(!c.contains(k.element,w.target)){i.css("visibility","hidden");return}else{if(c.contains(w.$draggable.closest(".t-item")[0],w.target)){i.css("visibility","hidden");b.dragCueStatus(w.$cue,"t-denied");return}}i.css("visibility","visible");var q=n.closest(".t-top,.t-mid,.t-bot");if(q.length>0){var v=q.outerHeight();var t=q.offset().top;var y=n.closest(".t-in");var x=v/(y.length>0?4:2);var u=w.pageY<(t+x);var o=(t+v-x)0&&!u&&!o;y.toggleClass("t-state-hover",p);i.css("visibility",p?"hidden":"visible");if(p){r="t-add"}else{var s=q.position();s.top+=u?0:v;i.css(s)[u?"prependTo":"appendTo"](n.closest(".t-item").find("> div:first"));r="t-insert-middle";if(u&&q.hasClass("t-top")){r="t-insert-top"}if(o&&q.hasClass("t-bot")){r="t-insert-bottom"}}}b.dragCueStatus(w.$cue,r)}function m(v){if(v.keyCode==27){b.trigger(k.element,"nodeDragCancelled",{item:v.$draggable.closest(".t-item")[0]})}else{var q="over",p;if(i.css("visibility")=="visible"){q=i.prevAll(".t-in").length>0?"after":"before";p=i.closest(".t-item").find("> div")}else{if(n){p=n.closest(".t-top,.t-mid,.t-bot")}}var r=b.trigger(k.element,"nodeDrop",{isValid:!v.$cue.find(".t-drag-status").hasClass("t-denied"),dropTarget:v.target,destinationItem:p.parent()[0],dropPosition:q,item:v.$draggable.closest(".t-item")[0]});if(r||!c.contains(k.element,v.target)){return !r}var t=v.$draggable.closest(".t-top,.t-mid,.t-bot");var u=t.parent();var x=t.closest(".t-group");if(c.contains(u[0],v.target)){return false}if(u.hasClass("t-last")){u.removeClass("t-last").prev().addClass("t-last").find("> div").removeClass("t-top t-mid").addClass("t-bot")}if(i.css("visibility")=="visible"){p.parent()[q](u)}else{var o=p.next(".t-group");if(o.length===0){o=c('
        ').appendTo(p.parent());if(!k.isAjax()){p.prepend('')}else{o.hide();k.nodeToggle(null,p.parent(),true);o.show()}}o.append(u);if(p.find("> .t-icon").hasClass("t-plus")){k.nodeToggle(null,p.parent(),true)}}var s=u.parents(".t-group").length;function w(z){var A=z.prev().length===0;var y=z.next().length===0;z.toggleClass("t-first",A&&s===1).toggleClass("t-last",y).find("> div").toggleClass("t-top",A&&!y).toggleClass("t-mid",!A&&!y).toggleClass("t-bot",y)}w(u);w(u.prev());w(u.next());if(x.children().length===0){x.prev("div").find(".t-plus,.t-minus").remove();x.remove()}b.trigger(k.element,"nodeDropped",{destinationItem:p.closest(".t-item")[0],dropPosition:q,item:t.parent(".t-item")[0]});return false}}new b.draggable({owner:k.element,selector:"div:not(.t-state-disabled) .t-in",scope:k.element.id,cue:function(o){return b.dragCue(o.$draggable.text())},start:j,drag:l,stop:m,destroy:function(o){i.remove();o.$cue.remove()}})})(this)}var e=h.find(".t-item > .t-content");if(e.length>0&&c(e[0]).children().length==0){h.find(".t-icon").hide()}b.bind(this,{expand:this.onExpand,collapse:this.onCollapse,select:c.proxy(function(i){if(i.target==this.element&&this.onSelect){this.onSelect(i)}},this),checked:this.onChecked,error:this.onError,load:this.onLoad,dataBinding:this.onDataBinding,dataBound:this.onDataBound})};b.treeview.prototype={expand:function(d){c(d,this.element).each(c.proxy(function(g,h){var f=c(h);var e=f.find("> .t-group, > .t-content");if((e.length>0&&!e.is(":visible"))||this.isAjax()){this.nodeToggle(null,f)}},this))},collapse:function(d){c(d,this.element).each(c.proxy(function(g,h){var f=c(h),e=f.find("> .t-group, > .t-content");if(e.length>0&&e.is(":visible")){this.nodeToggle(null,f)}},this))},enable:function(d){this.toggle(d,true)},disable:function(d){this.toggle(d,false)},toggle:function(e,d){c(e,this.element).each(c.proxy(function(g,h){var f=c(h),i=!f.find("> .t-group, > .t-content").is(":visible");if(!d){this.collapse(f);i=true}f.find("> div > .t-in").toggleClass("t-state-default",d).toggleClass("t-state-disabled",!d).end().find("> div > .t-checkbox > :checkbox").attr("disabled",d?"":"disabled").end().find("> div > .t-icon").toggleClass("t-plus",i&&d).toggleClass("t-plus-disabled",i&&!d).toggleClass("t-minus",!i&&d).toggleClass("t-minus-disabled",!i&&!d)},this))},reload:function(e){var d=this;c(e).each(function(){var f=c(this);f.find(".t-group").remove();d.ajaxRequest(f)})},shouldNavigate:function(e){var d=c(e).closest(".t-item").find("> .t-content, > .t-group");var f=c(e).attr("href");return !((f&&(f.charAt(f.length-1)=="#"||f.indexOf("#"+this.element.id+"-")!=-1))||(d.length>0&&d.children().length==0))},nodeSelect:function(g,f){if(!this.shouldNavigate(f)){g.preventDefault()}var d=c(f);if(!d.hasClass(".t-state-selected")&&!b.trigger(this.element,"select",{item:d.closest(".t-item")[0]})){c(".t-in",this.element).removeClass("t-state-hover t-state-selected");d.addClass("t-state-selected")}},nodeToggle:function(i,f,h){if(f.find(".t-minus").length==0&&f.find(".t-plus").length==0){return}if(i!=null){i.preventDefault()}if(f.data("animating")||f.find("> div > .t-in").hasClass("t-state-disabled")){return}f.data("animating",!h);var d=f.find(">.t-group, >.t-content, >.t-animation-container>.t-group, >.t-animation-container>.t-content"),g=!d.is(":visible");if(d.children().length>0&&f.data("loaded")!==false&&!b.trigger(this.element,g?"expand":"collapse",{item:f[0]})){f.find("> div > .t-icon").toggleClass("t-minus",g).toggleClass("t-plus",!g);if(!h){b.fx[g?"play":"rewind"](this.effects,d,{direction:"bottom"},function(){f.data("animating",false)})}else{d[g?"show":"hide"]()}}else{if(g&&this.isAjax()&&(d.length==0||f.data("loaded")===false)){if(!b.trigger(this.element,g?"expand":"collapse",{item:f[0]})){this.ajaxRequest(f)}}}},nodeClick:function(h,g){var f=c(g),d=f.closest(".t-item");if(f.hasClass("t-plus-disabled")||f.hasClass("t-minus-disabled")){return}this.nodeToggle(h,d)},isAjax:function(){return this.ajax||this.ws||this.onDataBinding},url:function(d){return(this.ajax||this.ws)[d]},ajaxOptions:function(e,h){var f={type:"POST",dataType:"text",error:c.proxy(function(j,i){if(b.ajaxError(this.element,"error",j,i)){return}if(i=="parsererror"){alert("Error! The requested URL did not return JSON.")}},this),success:c.proxy(function(i){i=eval("("+i+")");i=i.d||i;this.dataBind(e,i)},this)};f=c.extend(f,h);var g=this.ws?f.data.node={}:f.data;if(e.hasClass("t-item")){g[this.queryString.value]=this.getItemValue(e);g[this.queryString.text]=this.getItemText(e);var d=e.find(".t-checkbox:first :checkbox");if(d.length){g[this.queryString.checked]=d.is(":checked")}}if(this.ws){f.data=b.toJson(f.data);f.contentType="application/json; charset=utf-8"}return f},ajaxRequest:function(f){f=f||c(this.element);var d={item:f[0]};if(b.trigger(this.element,"dataBinding",d)||(!this.ajax&&!this.ws)){return}f.data("loadingIconTimeout",setTimeout(function(){f.find("> div > .t-icon").addClass("t-loading")},100));c.ajax(this.ajaxOptions(f,{data:c.extend({},d.data),url:this.url("selectUrl")}))},bindTo:function(d){this.dataBind(this.element,d)},dataBind:function(d,h){d=c(d);if(h.length==0){c(".t-icon",d).hide();return}var g=new b.stringBuilder(),e=d.find("> .t-group"),f=e.length==0;b.treeview.getGroupHtml({data:h,html:g,isAjax:this.isAjax(),isFirstLevel:d.hasClass("t-treeview"),showCheckBoxes:this.showCheckBox,groupLevel:d.find('> div > .t-checkbox :input[name="'+this.element.id+'_checkedNodes.Index"]').val(),isExpanded:(f?d.eq(0).is(".t-treeview")?true:h[0].Expanded:false),renderGroup:f,elementId:this.element.id});d.data("animating",true);if(e.length>0&&d.data("loaded")===false){c(g.string()).prependTo(e)}else{if(e.length>0&&d.data("loaded")!==false){e.html(g.string())}else{if(e.length==0){e=c(g.string()).appendTo(d)}}}b.fx.play(this.effects,e,{direction:"bottom"},function(){d.data("animating",false)});clearTimeout(d.data("loadingIconTimeout"));if(d.hasClass("t-item")){d.data("loaded",true).find(".t-icon:first").removeClass("t-loading").removeClass("t-plus").addClass("t-minus")}if(this.isAjax()){a(d)}b.trigger(this.element,"dataBound")},checkboxClick:function(h,f){var d=c(f).is(":checked");var g=b.trigger(this.element,"checked",{item:c(f).closest(".t-item")[0],checked:d});if(!g){this.nodeCheck(f,d)}else{h.preventDefault()}return g},nodeCheck:function(e,d){c(e,this.element).each(c.proxy(function(h,i){var f=c(i).closest(".t-item"),g=c("> div > .t-checkbox",f),j=this.element.id+"_checkedNodes",h=g.find(':input[name="'+j+'.Index"]').val();g.find(':input[name="'+j+"["+h+'].Text"]').remove();g.find(':input[name="'+j+"["+h+'].Value"]').remove();g.find(":checkbox").attr({checked:d?"checked":"",value:d});if(d){c(b.treeview.getNodeInputsHtml(this.getItemValue(f),this.getItemText(f),j,h)).appendTo(g)}},this))},getItemText:function(d){return c(d).find("> div > .t-in").text()},getItemValue:function(d){return c(d).find('>div>:input[name="itemValue"]').val()||this.getItemText(d)}};c.extend(b.treeview,{getNodeInputsHtml:function(g,e,f,d){return new b.stringBuilder().cat('').cat('').string()},getItemHtml:function(e){var m=e.item,h=e.html,i=e.isFirstLevel,f=e.groupLevel,g=e.itemIndex,d=e.itemsCount,l=new b.stringBuilder().cat(f).catIf(":",f).cat(g).string();h.cat('
      • ').cat('
        ');if((e.isAjax&&m.LoadOnDemand)||(m.Items&&m.Items.length>0)){h.cat('')}if(e.showCheckBoxes&&m.Checkable!==false){var j=e.elementId+"_checkedNodes";h.cat('').cat('').cat('");if(m.Checked){h.cat(b.treeview.getNodeInputsHtml(m.Value,m.Text,j,l))}h.cat("")}var k=m.NavigateUrl||m.Url;h.cat(k?'');if(m.ImageUrl!=null){h.cat('')}if(m.SpriteCssClasses!=null){h.cat('')}h.catIf(m.Text,m.Encoded===false).catIf(m.Text.replace(//g,">"),m.Encoded!==false).cat(k?"":"");if(m.Value){h.cat('')}h.cat("
        ");if(m.Items&&m.Items.length>0){b.treeview.getGroupHtml({data:m.Items,html:h,isAjax:e.isAjax,isFirstLevel:false,showCheckBoxes:e.showCheckBoxes,groupLevel:l,isExpanded:m.Expanded,elementId:e.elementId})}h.cat("
      • ")},getGroupHtml:function(e){var d=e.data;var g=e.html;var j=e.isFirstLevel;var k=e.renderGroup;if(k!==false){g.cat('
      ").catIf("
    ",!f);if(f){d(f).html(e.string())}else{return d(e.string()).appendTo(document.body).tWindow(g)}},getResizeHandlesHtml:function(){var e=new a.stringBuilder();d.each("n e s w se sw ne nw".split(" "),function(f,g){e.cat('
    ')});return e.string()}});d.fn.tWindow=function(e){return a.create(this,{name:"tWindow",init:function(f,g){return new a.window(f,g)},success:function(h){var g=h.element,f=d(g);if(f.is(":visible")){a.trigger(g,"open");a.trigger(g,"activated")}},options:e})};d.fn.tWindow.defaults={effects:{list:[{name:"zoom"},{name:"property",properties:["opacity"]}],openDuration:"fast",closeDuration:"fast"},modal:false,resizable:true,draggable:true,minWidth:50,minHeight:50}})(jQuery); \ No newline at end of file diff --git a/NzbDrone.Web/Scripts/MicrosoftAjax.debug.js b/NzbDrone.Web/Scripts/MicrosoftAjax.debug.js deleted file mode 100644 index a5f7942ef..000000000 --- a/NzbDrone.Web/Scripts/MicrosoftAjax.debug.js +++ /dev/null @@ -1,7117 +0,0 @@ -// Name: MicrosoftAjax.debug.js -// Assembly: System.Web.Extensions -// Version: 4.0.0.0 -// FileVersion: 4.0.20526.0 -//----------------------------------------------------------------------- -// Copyright (C) Microsoft Corporation. All rights reserved. -//----------------------------------------------------------------------- -// MicrosoftAjax.js -// Microsoft AJAX Framework. - -Function.__typeName = 'Function'; -Function.__class = true; -Function.createCallback = function Function$createCallback(method, context) { - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "method", type: Function}, - {name: "context", mayBeNull: true} - ]); - if (e) throw e; - return function() { - var l = arguments.length; - if (l > 0) { - var args = []; - for (var i = 0; i < l; i++) { - args[i] = arguments[i]; - } - args[l] = context; - return method.apply(this, args); - } - return method.call(this, context); - } -} -Function.createDelegate = function Function$createDelegate(instance, method) { - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "instance", mayBeNull: true}, - {name: "method", type: Function} - ]); - if (e) throw e; - return function() { - return method.apply(instance, arguments); - } -} -Function.emptyFunction = Function.emptyMethod = function Function$emptyMethod() { - /// -} -Function.validateParameters = function Function$validateParameters(parameters, expectedParameters, validateParameterCount) { - /// - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "parameters"}, - {name: "expectedParameters"}, - {name: "validateParameterCount", type: Boolean, optional: true} - ]); - if (e) throw e; - return Function._validateParams(parameters, expectedParameters, validateParameterCount); -} -Function._validateParams = function Function$_validateParams(params, expectedParams, validateParameterCount) { - var e, expectedLength = expectedParams.length; - validateParameterCount = validateParameterCount || (typeof(validateParameterCount) === "undefined"); - e = Function._validateParameterCount(params, expectedParams, validateParameterCount); - if (e) { - e.popStackFrame(); - return e; - } - for (var i = 0, l = params.length; i < l; i++) { - var expectedParam = expectedParams[Math.min(i, expectedLength - 1)], - paramName = expectedParam.name; - if (expectedParam.parameterArray) { - paramName += "[" + (i - expectedLength + 1) + "]"; - } - else if (!validateParameterCount && (i >= expectedLength)) { - break; - } - e = Function._validateParameter(params[i], expectedParam, paramName); - if (e) { - e.popStackFrame(); - return e; - } - } - return null; -} -Function._validateParameterCount = function Function$_validateParameterCount(params, expectedParams, validateParameterCount) { - var i, error, - expectedLen = expectedParams.length, - actualLen = params.length; - if (actualLen < expectedLen) { - var minParams = expectedLen; - for (i = 0; i < expectedLen; i++) { - var param = expectedParams[i]; - if (param.optional || param.parameterArray) { - minParams--; - } - } - if (actualLen < minParams) { - error = true; - } - } - else if (validateParameterCount && (actualLen > expectedLen)) { - error = true; - for (i = 0; i < expectedLen; i++) { - if (expectedParams[i].parameterArray) { - error = false; - break; - } - } - } - if (error) { - var e = Error.parameterCount(); - e.popStackFrame(); - return e; - } - return null; -} -Function._validateParameter = function Function$_validateParameter(param, expectedParam, paramName) { - var e, - expectedType = expectedParam.type, - expectedInteger = !!expectedParam.integer, - expectedDomElement = !!expectedParam.domElement, - mayBeNull = !!expectedParam.mayBeNull; - e = Function._validateParameterType(param, expectedType, expectedInteger, expectedDomElement, mayBeNull, paramName); - if (e) { - e.popStackFrame(); - return e; - } - var expectedElementType = expectedParam.elementType, - elementMayBeNull = !!expectedParam.elementMayBeNull; - if (expectedType === Array && typeof(param) !== "undefined" && param !== null && - (expectedElementType || !elementMayBeNull)) { - var expectedElementInteger = !!expectedParam.elementInteger, - expectedElementDomElement = !!expectedParam.elementDomElement; - for (var i=0; i < param.length; i++) { - var elem = param[i]; - e = Function._validateParameterType(elem, expectedElementType, - expectedElementInteger, expectedElementDomElement, elementMayBeNull, - paramName + "[" + i + "]"); - if (e) { - e.popStackFrame(); - return e; - } - } - } - return null; -} -Function._validateParameterType = function Function$_validateParameterType(param, expectedType, expectedInteger, expectedDomElement, mayBeNull, paramName) { - var e, i; - if (typeof(param) === "undefined") { - if (mayBeNull) { - return null; - } - else { - e = Error.argumentUndefined(paramName); - e.popStackFrame(); - return e; - } - } - if (param === null) { - if (mayBeNull) { - return null; - } - else { - e = Error.argumentNull(paramName); - e.popStackFrame(); - return e; - } - } - if (expectedType && expectedType.__enum) { - if (typeof(param) !== 'number') { - e = Error.argumentType(paramName, Object.getType(param), expectedType); - e.popStackFrame(); - return e; - } - if ((param % 1) === 0) { - var values = expectedType.prototype; - if (!expectedType.__flags || (param === 0)) { - for (i in values) { - if (values[i] === param) return null; - } - } - else { - var v = param; - for (i in values) { - var vali = values[i]; - if (vali === 0) continue; - if ((vali & param) === vali) { - v -= vali; - } - if (v === 0) return null; - } - } - } - e = Error.argumentOutOfRange(paramName, param, String.format(Sys.Res.enumInvalidValue, param, expectedType.getName())); - e.popStackFrame(); - return e; - } - if (expectedDomElement && (!Sys._isDomElement(param) || (param.nodeType === 3))) { - e = Error.argument(paramName, Sys.Res.argumentDomElement); - e.popStackFrame(); - return e; - } - if (expectedType && !Sys._isInstanceOfType(expectedType, param)) { - e = Error.argumentType(paramName, Object.getType(param), expectedType); - e.popStackFrame(); - return e; - } - if (expectedType === Number && expectedInteger) { - if ((param % 1) !== 0) { - e = Error.argumentOutOfRange(paramName, param, Sys.Res.argumentInteger); - e.popStackFrame(); - return e; - } - } - return null; -} - -Error.__typeName = 'Error'; -Error.__class = true; -Error.create = function Error$create(message, errorInfo) { - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "message", type: String, mayBeNull: true, optional: true}, - {name: "errorInfo", mayBeNull: true, optional: true} - ]); - if (e) throw e; - var err = new Error(message); - err.message = message; - if (errorInfo) { - for (var v in errorInfo) { - err[v] = errorInfo[v]; - } - } - err.popStackFrame(); - return err; -} -Error.argument = function Error$argument(paramName, message) { - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "paramName", type: String, mayBeNull: true, optional: true}, - {name: "message", type: String, mayBeNull: true, optional: true} - ]); - if (e) throw e; - var displayMessage = "Sys.ArgumentException: " + (message ? message : Sys.Res.argument); - if (paramName) { - displayMessage += "\n" + String.format(Sys.Res.paramName, paramName); - } - var err = Error.create(displayMessage, { name: "Sys.ArgumentException", paramName: paramName }); - err.popStackFrame(); - return err; -} -Error.argumentNull = function Error$argumentNull(paramName, message) { - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "paramName", type: String, mayBeNull: true, optional: true}, - {name: "message", type: String, mayBeNull: true, optional: true} - ]); - if (e) throw e; - var displayMessage = "Sys.ArgumentNullException: " + (message ? message : Sys.Res.argumentNull); - if (paramName) { - displayMessage += "\n" + String.format(Sys.Res.paramName, paramName); - } - var err = Error.create(displayMessage, { name: "Sys.ArgumentNullException", paramName: paramName }); - err.popStackFrame(); - return err; -} -Error.argumentOutOfRange = function Error$argumentOutOfRange(paramName, actualValue, message) { - /// - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "paramName", type: String, mayBeNull: true, optional: true}, - {name: "actualValue", mayBeNull: true, optional: true}, - {name: "message", type: String, mayBeNull: true, optional: true} - ]); - if (e) throw e; - var displayMessage = "Sys.ArgumentOutOfRangeException: " + (message ? message : Sys.Res.argumentOutOfRange); - if (paramName) { - displayMessage += "\n" + String.format(Sys.Res.paramName, paramName); - } - if (typeof(actualValue) !== "undefined" && actualValue !== null) { - displayMessage += "\n" + String.format(Sys.Res.actualValue, actualValue); - } - var err = Error.create(displayMessage, { - name: "Sys.ArgumentOutOfRangeException", - paramName: paramName, - actualValue: actualValue - }); - err.popStackFrame(); - return err; -} -Error.argumentType = function Error$argumentType(paramName, actualType, expectedType, message) { - /// - /// - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "paramName", type: String, mayBeNull: true, optional: true}, - {name: "actualType", type: Type, mayBeNull: true, optional: true}, - {name: "expectedType", type: Type, mayBeNull: true, optional: true}, - {name: "message", type: String, mayBeNull: true, optional: true} - ]); - if (e) throw e; - var displayMessage = "Sys.ArgumentTypeException: "; - if (message) { - displayMessage += message; - } - else if (actualType && expectedType) { - displayMessage += - String.format(Sys.Res.argumentTypeWithTypes, actualType.getName(), expectedType.getName()); - } - else { - displayMessage += Sys.Res.argumentType; - } - if (paramName) { - displayMessage += "\n" + String.format(Sys.Res.paramName, paramName); - } - var err = Error.create(displayMessage, { - name: "Sys.ArgumentTypeException", - paramName: paramName, - actualType: actualType, - expectedType: expectedType - }); - err.popStackFrame(); - return err; -} -Error.argumentUndefined = function Error$argumentUndefined(paramName, message) { - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "paramName", type: String, mayBeNull: true, optional: true}, - {name: "message", type: String, mayBeNull: true, optional: true} - ]); - if (e) throw e; - var displayMessage = "Sys.ArgumentUndefinedException: " + (message ? message : Sys.Res.argumentUndefined); - if (paramName) { - displayMessage += "\n" + String.format(Sys.Res.paramName, paramName); - } - var err = Error.create(displayMessage, { name: "Sys.ArgumentUndefinedException", paramName: paramName }); - err.popStackFrame(); - return err; -} -Error.format = function Error$format(message) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "message", type: String, mayBeNull: true, optional: true} - ]); - if (e) throw e; - var displayMessage = "Sys.FormatException: " + (message ? message : Sys.Res.format); - var err = Error.create(displayMessage, {name: 'Sys.FormatException'}); - err.popStackFrame(); - return err; -} -Error.invalidOperation = function Error$invalidOperation(message) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "message", type: String, mayBeNull: true, optional: true} - ]); - if (e) throw e; - var displayMessage = "Sys.InvalidOperationException: " + (message ? message : Sys.Res.invalidOperation); - var err = Error.create(displayMessage, {name: 'Sys.InvalidOperationException'}); - err.popStackFrame(); - return err; -} -Error.notImplemented = function Error$notImplemented(message) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "message", type: String, mayBeNull: true, optional: true} - ]); - if (e) throw e; - var displayMessage = "Sys.NotImplementedException: " + (message ? message : Sys.Res.notImplemented); - var err = Error.create(displayMessage, {name: 'Sys.NotImplementedException'}); - err.popStackFrame(); - return err; -} -Error.parameterCount = function Error$parameterCount(message) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "message", type: String, mayBeNull: true, optional: true} - ]); - if (e) throw e; - var displayMessage = "Sys.ParameterCountException: " + (message ? message : Sys.Res.parameterCount); - var err = Error.create(displayMessage, {name: 'Sys.ParameterCountException'}); - err.popStackFrame(); - return err; -} -Error.prototype.popStackFrame = function Error$popStackFrame() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - if (typeof(this.stack) === "undefined" || this.stack === null || - typeof(this.fileName) === "undefined" || this.fileName === null || - typeof(this.lineNumber) === "undefined" || this.lineNumber === null) { - return; - } - var stackFrames = this.stack.split("\n"); - var currentFrame = stackFrames[0]; - var pattern = this.fileName + ":" + this.lineNumber; - while(typeof(currentFrame) !== "undefined" && - currentFrame !== null && - currentFrame.indexOf(pattern) === -1) { - stackFrames.shift(); - currentFrame = stackFrames[0]; - } - var nextFrame = stackFrames[1]; - if (typeof(nextFrame) === "undefined" || nextFrame === null) { - return; - } - var nextFrameParts = nextFrame.match(/@(.*):(\d+)$/); - if (typeof(nextFrameParts) === "undefined" || nextFrameParts === null) { - return; - } - this.fileName = nextFrameParts[1]; - this.lineNumber = parseInt(nextFrameParts[2]); - stackFrames.shift(); - this.stack = stackFrames.join("\n"); -} - -Object.__typeName = 'Object'; -Object.__class = true; -Object.getType = function Object$getType(instance) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "instance"} - ]); - if (e) throw e; - var ctor = instance.constructor; - if (!ctor || (typeof(ctor) !== "function") || !ctor.__typeName || (ctor.__typeName === 'Object')) { - return Object; - } - return ctor; -} -Object.getTypeName = function Object$getTypeName(instance) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "instance"} - ]); - if (e) throw e; - return Object.getType(instance).getName(); -} - -String.__typeName = 'String'; -String.__class = true; -String.prototype.endsWith = function String$endsWith(suffix) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "suffix", type: String} - ]); - if (e) throw e; - return (this.substr(this.length - suffix.length) === suffix); -} -String.prototype.startsWith = function String$startsWith(prefix) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "prefix", type: String} - ]); - if (e) throw e; - return (this.substr(0, prefix.length) === prefix); -} -String.prototype.trim = function String$trim() { - /// - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this.replace(/^\s+|\s+$/g, ''); -} -String.prototype.trimEnd = function String$trimEnd() { - /// - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this.replace(/\s+$/, ''); -} -String.prototype.trimStart = function String$trimStart() { - /// - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this.replace(/^\s+/, ''); -} -String.format = function String$format(format, args) { - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "format", type: String}, - {name: "args", mayBeNull: true, parameterArray: true} - ]); - if (e) throw e; - return String._toFormattedString(false, arguments); -} -String._toFormattedString = function String$_toFormattedString(useLocale, args) { - var result = ''; - var format = args[0]; - for (var i=0;;) { - var open = format.indexOf('{', i); - var close = format.indexOf('}', i); - if ((open < 0) && (close < 0)) { - result += format.slice(i); - break; - } - if ((close > 0) && ((close < open) || (open < 0))) { - if (format.charAt(close + 1) !== '}') { - throw Error.argument('format', Sys.Res.stringFormatBraceMismatch); - } - result += format.slice(i, close + 1); - i = close + 2; - continue; - } - result += format.slice(i, open); - i = open + 1; - if (format.charAt(i) === '{') { - result += '{'; - i++; - continue; - } - if (close < 0) throw Error.argument('format', Sys.Res.stringFormatBraceMismatch); - var brace = format.substring(i, close); - var colonIndex = brace.indexOf(':'); - var argNumber = parseInt((colonIndex < 0)? brace : brace.substring(0, colonIndex), 10) + 1; - if (isNaN(argNumber)) throw Error.argument('format', Sys.Res.stringFormatInvalid); - var argFormat = (colonIndex < 0)? '' : brace.substring(colonIndex + 1); - var arg = args[argNumber]; - if (typeof(arg) === "undefined" || arg === null) { - arg = ''; - } - if (arg.toFormattedString) { - result += arg.toFormattedString(argFormat); - } - else if (useLocale && arg.localeFormat) { - result += arg.localeFormat(argFormat); - } - else if (arg.format) { - result += arg.format(argFormat); - } - else - result += arg.toString(); - i = close + 1; - } - return result; -} - -Boolean.__typeName = 'Boolean'; -Boolean.__class = true; -Boolean.parse = function Boolean$parse(value) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "value", type: String} - ], false); - if (e) throw e; - var v = value.trim().toLowerCase(); - if (v === 'false') return false; - if (v === 'true') return true; - throw Error.argumentOutOfRange('value', value, Sys.Res.boolTrueOrFalse); -} - -Date.__typeName = 'Date'; -Date.__class = true; - -Number.__typeName = 'Number'; -Number.__class = true; - -RegExp.__typeName = 'RegExp'; -RegExp.__class = true; - -if (!window) this.window = this; -window.Type = Function; -Type.__fullyQualifiedIdentifierRegExp = new RegExp("^[^.0-9 \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\]([^ \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\]*[^. \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\])?$", "i"); -Type.__identifierRegExp = new RegExp("^[^.0-9 \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\][^. \\s|,;:&*=+\\-()\\[\\]{}^%#@!~\\n\\r\\t\\f\\\\]*$", "i"); -Type.prototype.callBaseMethod = function Type$callBaseMethod(instance, name, baseArguments) { - /// - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "instance"}, - {name: "name", type: String}, - {name: "baseArguments", type: Array, mayBeNull: true, optional: true, elementMayBeNull: true} - ]); - if (e) throw e; - var baseMethod = Sys._getBaseMethod(this, instance, name); - if (!baseMethod) throw Error.invalidOperation(String.format(Sys.Res.methodNotFound, name)); - if (!baseArguments) { - return baseMethod.apply(instance); - } - else { - return baseMethod.apply(instance, baseArguments); - } -} -Type.prototype.getBaseMethod = function Type$getBaseMethod(instance, name) { - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "instance"}, - {name: "name", type: String} - ]); - if (e) throw e; - return Sys._getBaseMethod(this, instance, name); -} -Type.prototype.getBaseType = function Type$getBaseType() { - /// - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return (typeof(this.__baseType) === "undefined") ? null : this.__baseType; -} -Type.prototype.getInterfaces = function Type$getInterfaces() { - /// - /// - if (arguments.length !== 0) throw Error.parameterCount(); - var result = []; - var type = this; - while(type) { - var interfaces = type.__interfaces; - if (interfaces) { - for (var i = 0, l = interfaces.length; i < l; i++) { - var interfaceType = interfaces[i]; - if (!Array.contains(result, interfaceType)) { - result[result.length] = interfaceType; - } - } - } - type = type.__baseType; - } - return result; -} -Type.prototype.getName = function Type$getName() { - /// - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return (typeof(this.__typeName) === "undefined") ? "" : this.__typeName; -} -Type.prototype.implementsInterface = function Type$implementsInterface(interfaceType) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "interfaceType", type: Type} - ]); - if (e) throw e; - this.resolveInheritance(); - var interfaceName = interfaceType.getName(); - var cache = this.__interfaceCache; - if (cache) { - var cacheEntry = cache[interfaceName]; - if (typeof(cacheEntry) !== 'undefined') return cacheEntry; - } - else { - cache = this.__interfaceCache = {}; - } - var baseType = this; - while (baseType) { - var interfaces = baseType.__interfaces; - if (interfaces) { - if (Array.indexOf(interfaces, interfaceType) !== -1) { - return cache[interfaceName] = true; - } - } - baseType = baseType.__baseType; - } - return cache[interfaceName] = false; -} -Type.prototype.inheritsFrom = function Type$inheritsFrom(parentType) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "parentType", type: Type} - ]); - if (e) throw e; - this.resolveInheritance(); - var baseType = this.__baseType; - while (baseType) { - if (baseType === parentType) { - return true; - } - baseType = baseType.__baseType; - } - return false; -} -Type.prototype.initializeBase = function Type$initializeBase(instance, baseArguments) { - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "instance"}, - {name: "baseArguments", type: Array, mayBeNull: true, optional: true, elementMayBeNull: true} - ]); - if (e) throw e; - if (!Sys._isInstanceOfType(this, instance)) throw Error.argumentType('instance', Object.getType(instance), this); - this.resolveInheritance(); - if (this.__baseType) { - if (!baseArguments) { - this.__baseType.apply(instance); - } - else { - this.__baseType.apply(instance, baseArguments); - } - } - return instance; -} -Type.prototype.isImplementedBy = function Type$isImplementedBy(instance) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "instance", mayBeNull: true} - ]); - if (e) throw e; - if (typeof(instance) === "undefined" || instance === null) return false; - var instanceType = Object.getType(instance); - return !!(instanceType.implementsInterface && instanceType.implementsInterface(this)); -} -Type.prototype.isInstanceOfType = function Type$isInstanceOfType(instance) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "instance", mayBeNull: true} - ]); - if (e) throw e; - return Sys._isInstanceOfType(this, instance); -} -Type.prototype.registerClass = function Type$registerClass(typeName, baseType, interfaceTypes) { - /// - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "typeName", type: String}, - {name: "baseType", type: Type, mayBeNull: true, optional: true}, - {name: "interfaceTypes", type: Type, parameterArray: true} - ]); - if (e) throw e; - if (!Type.__fullyQualifiedIdentifierRegExp.test(typeName)) throw Error.argument('typeName', Sys.Res.notATypeName); - var parsedName; - try { - parsedName = eval(typeName); - } - catch(e) { - throw Error.argument('typeName', Sys.Res.argumentTypeName); - } - if (parsedName !== this) throw Error.argument('typeName', Sys.Res.badTypeName); - if (Sys.__registeredTypes[typeName]) throw Error.invalidOperation(String.format(Sys.Res.typeRegisteredTwice, typeName)); - if ((arguments.length > 1) && (typeof(baseType) === 'undefined')) throw Error.argumentUndefined('baseType'); - if (baseType && !baseType.__class) throw Error.argument('baseType', Sys.Res.baseNotAClass); - this.prototype.constructor = this; - this.__typeName = typeName; - this.__class = true; - if (baseType) { - this.__baseType = baseType; - this.__basePrototypePending = true; - } - Sys.__upperCaseTypes[typeName.toUpperCase()] = this; - if (interfaceTypes) { - this.__interfaces = []; - this.resolveInheritance(); - for (var i = 2, l = arguments.length; i < l; i++) { - var interfaceType = arguments[i]; - if (!interfaceType.__interface) throw Error.argument('interfaceTypes[' + (i - 2) + ']', Sys.Res.notAnInterface); - for (var methodName in interfaceType.prototype) { - var method = interfaceType.prototype[methodName]; - if (!this.prototype[methodName]) { - this.prototype[methodName] = method; - } - } - this.__interfaces.push(interfaceType); - } - } - Sys.__registeredTypes[typeName] = true; - return this; -} -Type.prototype.registerInterface = function Type$registerInterface(typeName) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "typeName", type: String} - ]); - if (e) throw e; - if (!Type.__fullyQualifiedIdentifierRegExp.test(typeName)) throw Error.argument('typeName', Sys.Res.notATypeName); - var parsedName; - try { - parsedName = eval(typeName); - } - catch(e) { - throw Error.argument('typeName', Sys.Res.argumentTypeName); - } - if (parsedName !== this) throw Error.argument('typeName', Sys.Res.badTypeName); - if (Sys.__registeredTypes[typeName]) throw Error.invalidOperation(String.format(Sys.Res.typeRegisteredTwice, typeName)); - Sys.__upperCaseTypes[typeName.toUpperCase()] = this; - this.prototype.constructor = this; - this.__typeName = typeName; - this.__interface = true; - Sys.__registeredTypes[typeName] = true; - return this; -} -Type.prototype.resolveInheritance = function Type$resolveInheritance() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - if (this.__basePrototypePending) { - var baseType = this.__baseType; - baseType.resolveInheritance(); - for (var memberName in baseType.prototype) { - var memberValue = baseType.prototype[memberName]; - if (!this.prototype[memberName]) { - this.prototype[memberName] = memberValue; - } - } - delete this.__basePrototypePending; - } -} -Type.getRootNamespaces = function Type$getRootNamespaces() { - /// - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return Array.clone(Sys.__rootNamespaces); -} -Type.isClass = function Type$isClass(type) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "type", mayBeNull: true} - ]); - if (e) throw e; - if ((typeof(type) === 'undefined') || (type === null)) return false; - return !!type.__class; -} -Type.isInterface = function Type$isInterface(type) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "type", mayBeNull: true} - ]); - if (e) throw e; - if ((typeof(type) === 'undefined') || (type === null)) return false; - return !!type.__interface; -} -Type.isNamespace = function Type$isNamespace(object) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "object", mayBeNull: true} - ]); - if (e) throw e; - if ((typeof(object) === 'undefined') || (object === null)) return false; - return !!object.__namespace; -} -Type.parse = function Type$parse(typeName, ns) { - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "typeName", type: String, mayBeNull: true}, - {name: "ns", mayBeNull: true, optional: true} - ]); - if (e) throw e; - var fn; - if (ns) { - fn = Sys.__upperCaseTypes[ns.getName().toUpperCase() + '.' + typeName.toUpperCase()]; - return fn || null; - } - if (!typeName) return null; - if (!Type.__htClasses) { - Type.__htClasses = {}; - } - fn = Type.__htClasses[typeName]; - if (!fn) { - fn = eval(typeName); - if (typeof(fn) !== 'function') throw Error.argument('typeName', Sys.Res.notATypeName); - Type.__htClasses[typeName] = fn; - } - return fn; -} -Type.registerNamespace = function Type$registerNamespace(namespacePath) { - /// - /// - var e = Function._validateParams(arguments, [ - {name: "namespacePath", type: String} - ]); - if (e) throw e; - Type._registerNamespace(namespacePath); -} -Type._registerNamespace = function Type$_registerNamespace(namespacePath) { - if (!Type.__fullyQualifiedIdentifierRegExp.test(namespacePath)) throw Error.argument('namespacePath', Sys.Res.invalidNameSpace); - var rootObject = window; - var namespaceParts = namespacePath.split('.'); - for (var i = 0; i < namespaceParts.length; i++) { - var currentPart = namespaceParts[i]; - var ns = rootObject[currentPart]; - var nsType = typeof(ns); - if ((nsType !== "undefined") && (ns !== null)) { - if (nsType === "function") { - throw Error.invalidOperation(String.format(Sys.Res.namespaceContainsClass, namespaceParts.splice(0, i + 1).join('.'))); - } - if ((typeof(ns) !== "object") || (ns instanceof Array)) { - throw Error.invalidOperation(String.format(Sys.Res.namespaceContainsNonObject, namespaceParts.splice(0, i + 1).join('.'))); - } - } - if (!ns) { - ns = rootObject[currentPart] = {}; - } - if (!ns.__namespace) { - if ((i === 0) && (namespacePath !== "Sys")) { - Sys.__rootNamespaces[Sys.__rootNamespaces.length] = ns; - } - ns.__namespace = true; - ns.__typeName = namespaceParts.slice(0, i + 1).join('.'); - var parsedName; - try { - parsedName = eval(ns.__typeName); - } - catch(e) { - parsedName = null; - } - if (parsedName !== ns) { - delete rootObject[currentPart]; - throw Error.argument('namespacePath', Sys.Res.invalidNameSpace); - } - ns.getName = function ns$getName() {return this.__typeName;} - } - rootObject = ns; - } -} -Type._checkDependency = function Type$_checkDependency(dependency, featureName) { - var scripts = Type._registerScript._scripts, isDependent = (scripts ? (!!scripts[dependency]) : false); - if ((typeof(featureName) !== 'undefined') && !isDependent) { - throw Error.invalidOperation(String.format(Sys.Res.requiredScriptReferenceNotIncluded, - featureName, dependency)); - } - return isDependent; -} -Type._registerScript = function Type$_registerScript(scriptName, dependencies) { - var scripts = Type._registerScript._scripts; - if (!scripts) { - Type._registerScript._scripts = scripts = {}; - } - if (scripts[scriptName]) { - throw Error.invalidOperation(String.format(Sys.Res.scriptAlreadyLoaded, scriptName)); - } - scripts[scriptName] = true; - if (dependencies) { - for (var i = 0, l = dependencies.length; i < l; i++) { - var dependency = dependencies[i]; - if (!Type._checkDependency(dependency)) { - throw Error.invalidOperation(String.format(Sys.Res.scriptDependencyNotFound, scriptName, dependency)); - } - } - } -} -Type._registerNamespace("Sys"); -Sys.__upperCaseTypes = {}; -Sys.__rootNamespaces = [Sys]; -Sys.__registeredTypes = {}; -Sys._isInstanceOfType = function Sys$_isInstanceOfType(type, instance) { - if (typeof(instance) === "undefined" || instance === null) return false; - if (instance instanceof type) return true; - var instanceType = Object.getType(instance); - return !!(instanceType === type) || - (instanceType.inheritsFrom && instanceType.inheritsFrom(type)) || - (instanceType.implementsInterface && instanceType.implementsInterface(type)); -} -Sys._getBaseMethod = function Sys$_getBaseMethod(type, instance, name) { - if (!Sys._isInstanceOfType(type, instance)) throw Error.argumentType('instance', Object.getType(instance), type); - var baseType = type.getBaseType(); - if (baseType) { - var baseMethod = baseType.prototype[name]; - return (baseMethod instanceof Function) ? baseMethod : null; - } - return null; -} -Sys._isDomElement = function Sys$_isDomElement(obj) { - var val = false; - if (typeof (obj.nodeType) !== 'number') { - var doc = obj.ownerDocument || obj.document || obj; - if (doc != obj) { - var w = doc.defaultView || doc.parentWindow; - val = (w != obj); - } - else { - val = (typeof (doc.body) === 'undefined'); - } - } - return !val; -} - -Array.__typeName = 'Array'; -Array.__class = true; -Array.add = Array.enqueue = function Array$enqueue(array, item) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "array", type: Array, elementMayBeNull: true}, - {name: "item", mayBeNull: true} - ]); - if (e) throw e; - array[array.length] = item; -} -Array.addRange = function Array$addRange(array, items) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "array", type: Array, elementMayBeNull: true}, - {name: "items", type: Array, elementMayBeNull: true} - ]); - if (e) throw e; - array.push.apply(array, items); -} -Array.clear = function Array$clear(array) { - /// - /// - var e = Function._validateParams(arguments, [ - {name: "array", type: Array, elementMayBeNull: true} - ]); - if (e) throw e; - array.length = 0; -} -Array.clone = function Array$clone(array) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "array", type: Array, elementMayBeNull: true} - ]); - if (e) throw e; - if (array.length === 1) { - return [array[0]]; - } - else { - return Array.apply(null, array); - } -} -Array.contains = function Array$contains(array, item) { - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "array", type: Array, elementMayBeNull: true}, - {name: "item", mayBeNull: true} - ]); - if (e) throw e; - return (Sys._indexOf(array, item) >= 0); -} -Array.dequeue = function Array$dequeue(array) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "array", type: Array, elementMayBeNull: true} - ]); - if (e) throw e; - return array.shift(); -} -Array.forEach = function Array$forEach(array, method, instance) { - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "array", type: Array, elementMayBeNull: true}, - {name: "method", type: Function}, - {name: "instance", mayBeNull: true, optional: true} - ]); - if (e) throw e; - for (var i = 0, l = array.length; i < l; i++) { - var elt = array[i]; - if (typeof(elt) !== 'undefined') method.call(instance, elt, i, array); - } -} -Array.indexOf = function Array$indexOf(array, item, start) { - /// - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "array", type: Array, elementMayBeNull: true}, - {name: "item", mayBeNull: true, optional: true}, - {name: "start", mayBeNull: true, optional: true} - ]); - if (e) throw e; - return Sys._indexOf(array, item, start); -} -Array.insert = function Array$insert(array, index, item) { - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "array", type: Array, elementMayBeNull: true}, - {name: "index", mayBeNull: true}, - {name: "item", mayBeNull: true} - ]); - if (e) throw e; - array.splice(index, 0, item); -} -Array.parse = function Array$parse(value) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "value", type: String, mayBeNull: true} - ]); - if (e) throw e; - if (!value) return []; - var v = eval(value); - if (!Array.isInstanceOfType(v)) throw Error.argument('value', Sys.Res.arrayParseBadFormat); - return v; -} -Array.remove = function Array$remove(array, item) { - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "array", type: Array, elementMayBeNull: true}, - {name: "item", mayBeNull: true} - ]); - if (e) throw e; - var index = Sys._indexOf(array, item); - if (index >= 0) { - array.splice(index, 1); - } - return (index >= 0); -} -Array.removeAt = function Array$removeAt(array, index) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "array", type: Array, elementMayBeNull: true}, - {name: "index", mayBeNull: true} - ]); - if (e) throw e; - array.splice(index, 1); -} -Sys._indexOf = function Sys$_indexOf(array, item, start) { - if (typeof(item) === "undefined") return -1; - var length = array.length; - if (length !== 0) { - start = start - 0; - if (isNaN(start)) { - start = 0; - } - else { - if (isFinite(start)) { - start = start - (start % 1); - } - if (start < 0) { - start = Math.max(0, length + start); - } - } - for (var i = start; i < length; i++) { - if ((typeof(array[i]) !== "undefined") && (array[i] === item)) { - return i; - } - } - } - return -1; -} -Type._registerScript._scripts = { - "MicrosoftAjaxCore.js": true, - "MicrosoftAjaxGlobalization.js": true, - "MicrosoftAjaxSerialization.js": true, - "MicrosoftAjaxComponentModel.js": true, - "MicrosoftAjaxHistory.js": true, - "MicrosoftAjaxNetwork.js" : true, - "MicrosoftAjaxWebServices.js": true }; - -Sys.IDisposable = function Sys$IDisposable() { - throw Error.notImplemented(); -} - function Sys$IDisposable$dispose() { - throw Error.notImplemented(); - } -Sys.IDisposable.prototype = { - dispose: Sys$IDisposable$dispose -} -Sys.IDisposable.registerInterface('Sys.IDisposable'); - -Sys.StringBuilder = function Sys$StringBuilder(initialText) { - /// - /// - var e = Function._validateParams(arguments, [ - {name: "initialText", mayBeNull: true, optional: true} - ]); - if (e) throw e; - this._parts = (typeof(initialText) !== 'undefined' && initialText !== null && initialText !== '') ? - [initialText.toString()] : []; - this._value = {}; - this._len = 0; -} - function Sys$StringBuilder$append(text) { - /// - /// - var e = Function._validateParams(arguments, [ - {name: "text", mayBeNull: true} - ]); - if (e) throw e; - this._parts[this._parts.length] = text; - } - function Sys$StringBuilder$appendLine(text) { - /// - /// - var e = Function._validateParams(arguments, [ - {name: "text", mayBeNull: true, optional: true} - ]); - if (e) throw e; - this._parts[this._parts.length] = - ((typeof(text) === 'undefined') || (text === null) || (text === '')) ? - '\r\n' : text + '\r\n'; - } - function Sys$StringBuilder$clear() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - this._parts = []; - this._value = {}; - this._len = 0; - } - function Sys$StringBuilder$isEmpty() { - /// - /// - if (arguments.length !== 0) throw Error.parameterCount(); - if (this._parts.length === 0) return true; - return this.toString() === ''; - } - function Sys$StringBuilder$toString(separator) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "separator", type: String, mayBeNull: true, optional: true} - ]); - if (e) throw e; - separator = separator || ''; - var parts = this._parts; - if (this._len !== parts.length) { - this._value = {}; - this._len = parts.length; - } - var val = this._value; - if (typeof(val[separator]) === 'undefined') { - if (separator !== '') { - for (var i = 0; i < parts.length;) { - if ((typeof(parts[i]) === 'undefined') || (parts[i] === '') || (parts[i] === null)) { - parts.splice(i, 1); - } - else { - i++; - } - } - } - val[separator] = this._parts.join(separator); - } - return val[separator]; - } -Sys.StringBuilder.prototype = { - append: Sys$StringBuilder$append, - appendLine: Sys$StringBuilder$appendLine, - clear: Sys$StringBuilder$clear, - isEmpty: Sys$StringBuilder$isEmpty, - toString: Sys$StringBuilder$toString -} -Sys.StringBuilder.registerClass('Sys.StringBuilder'); - -Sys.Browser = {}; -Sys.Browser.InternetExplorer = {}; -Sys.Browser.Firefox = {}; -Sys.Browser.Safari = {}; -Sys.Browser.Opera = {}; -Sys.Browser.agent = null; -Sys.Browser.hasDebuggerStatement = false; -Sys.Browser.name = navigator.appName; -Sys.Browser.version = parseFloat(navigator.appVersion); -Sys.Browser.documentMode = 0; -if (navigator.userAgent.indexOf(' MSIE ') > -1) { - Sys.Browser.agent = Sys.Browser.InternetExplorer; - Sys.Browser.version = parseFloat(navigator.userAgent.match(/MSIE (\d+\.\d+)/)[1]); - if (Sys.Browser.version >= 8) { - if (document.documentMode >= 7) { - Sys.Browser.documentMode = document.documentMode; - } - } - Sys.Browser.hasDebuggerStatement = true; -} -else if (navigator.userAgent.indexOf(' Firefox/') > -1) { - Sys.Browser.agent = Sys.Browser.Firefox; - Sys.Browser.version = parseFloat(navigator.userAgent.match(/ Firefox\/(\d+\.\d+)/)[1]); - Sys.Browser.name = 'Firefox'; - Sys.Browser.hasDebuggerStatement = true; -} -else if (navigator.userAgent.indexOf(' AppleWebKit/') > -1) { - Sys.Browser.agent = Sys.Browser.Safari; - Sys.Browser.version = parseFloat(navigator.userAgent.match(/ AppleWebKit\/(\d+(\.\d+)?)/)[1]); - Sys.Browser.name = 'Safari'; -} -else if (navigator.userAgent.indexOf('Opera/') > -1) { - Sys.Browser.agent = Sys.Browser.Opera; -} - -Sys.EventArgs = function Sys$EventArgs() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); -} -Sys.EventArgs.registerClass('Sys.EventArgs'); -Sys.EventArgs.Empty = new Sys.EventArgs(); - -Sys.CancelEventArgs = function Sys$CancelEventArgs() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - Sys.CancelEventArgs.initializeBase(this); - this._cancel = false; -} - function Sys$CancelEventArgs$get_cancel() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._cancel; - } - function Sys$CancelEventArgs$set_cancel(value) { - var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]); - if (e) throw e; - this._cancel = value; - } -Sys.CancelEventArgs.prototype = { - get_cancel: Sys$CancelEventArgs$get_cancel, - set_cancel: Sys$CancelEventArgs$set_cancel -} -Sys.CancelEventArgs.registerClass('Sys.CancelEventArgs', Sys.EventArgs); -Type.registerNamespace('Sys.UI'); - -Sys._Debug = function Sys$_Debug() { - /// - /// - if (arguments.length !== 0) throw Error.parameterCount(); -} - function Sys$_Debug$_appendConsole(text) { - if ((typeof(Debug) !== 'undefined') && Debug.writeln) { - Debug.writeln(text); - } - if (window.console && window.console.log) { - window.console.log(text); - } - if (window.opera) { - window.opera.postError(text); - } - if (window.debugService) { - window.debugService.trace(text); - } - } - function Sys$_Debug$_appendTrace(text) { - var traceElement = document.getElementById('TraceConsole'); - if (traceElement && (traceElement.tagName.toUpperCase() === 'TEXTAREA')) { - traceElement.value += text + '\n'; - } - } - function Sys$_Debug$assert(condition, message, displayCaller) { - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "condition", type: Boolean}, - {name: "message", type: String, mayBeNull: true, optional: true}, - {name: "displayCaller", type: Boolean, optional: true} - ]); - if (e) throw e; - if (!condition) { - message = (displayCaller && this.assert.caller) ? - String.format(Sys.Res.assertFailedCaller, message, this.assert.caller) : - String.format(Sys.Res.assertFailed, message); - if (confirm(String.format(Sys.Res.breakIntoDebugger, message))) { - this.fail(message); - } - } - } - function Sys$_Debug$clearTrace() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - var traceElement = document.getElementById('TraceConsole'); - if (traceElement && (traceElement.tagName.toUpperCase() === 'TEXTAREA')) { - traceElement.value = ''; - } - } - function Sys$_Debug$fail(message) { - /// - /// - var e = Function._validateParams(arguments, [ - {name: "message", type: String, mayBeNull: true} - ]); - if (e) throw e; - this._appendConsole(message); - if (Sys.Browser.hasDebuggerStatement) { - eval('debugger'); - } - } - function Sys$_Debug$trace(text) { - /// - /// - var e = Function._validateParams(arguments, [ - {name: "text"} - ]); - if (e) throw e; - this._appendConsole(text); - this._appendTrace(text); - } - function Sys$_Debug$traceDump(object, name) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "object", mayBeNull: true}, - {name: "name", type: String, mayBeNull: true, optional: true} - ]); - if (e) throw e; - var text = this._traceDump(object, name, true); - } - function Sys$_Debug$_traceDump(object, name, recursive, indentationPadding, loopArray) { - name = name? name : 'traceDump'; - indentationPadding = indentationPadding? indentationPadding : ''; - if (object === null) { - this.trace(indentationPadding + name + ': null'); - return; - } - switch(typeof(object)) { - case 'undefined': - this.trace(indentationPadding + name + ': Undefined'); - break; - case 'number': case 'string': case 'boolean': - this.trace(indentationPadding + name + ': ' + object); - break; - default: - if (Date.isInstanceOfType(object) || RegExp.isInstanceOfType(object)) { - this.trace(indentationPadding + name + ': ' + object.toString()); - break; - } - if (!loopArray) { - loopArray = []; - } - else if (Array.contains(loopArray, object)) { - this.trace(indentationPadding + name + ': ...'); - return; - } - Array.add(loopArray, object); - if ((object == window) || (object === document) || - (window.HTMLElement && (object instanceof HTMLElement)) || - (typeof(object.nodeName) === 'string')) { - var tag = object.tagName? object.tagName : 'DomElement'; - if (object.id) { - tag += ' - ' + object.id; - } - this.trace(indentationPadding + name + ' {' + tag + '}'); - } - else { - var typeName = Object.getTypeName(object); - this.trace(indentationPadding + name + (typeof(typeName) === 'string' ? ' {' + typeName + '}' : '')); - if ((indentationPadding === '') || recursive) { - indentationPadding += " "; - var i, length, properties, p, v; - if (Array.isInstanceOfType(object)) { - length = object.length; - for (i = 0; i < length; i++) { - this._traceDump(object[i], '[' + i + ']', recursive, indentationPadding, loopArray); - } - } - else { - for (p in object) { - v = object[p]; - if (!Function.isInstanceOfType(v)) { - this._traceDump(v, p, recursive, indentationPadding, loopArray); - } - } - } - } - } - Array.remove(loopArray, object); - } - } -Sys._Debug.prototype = { - _appendConsole: Sys$_Debug$_appendConsole, - _appendTrace: Sys$_Debug$_appendTrace, - assert: Sys$_Debug$assert, - clearTrace: Sys$_Debug$clearTrace, - fail: Sys$_Debug$fail, - trace: Sys$_Debug$trace, - traceDump: Sys$_Debug$traceDump, - _traceDump: Sys$_Debug$_traceDump -} -Sys._Debug.registerClass('Sys._Debug'); -Sys.Debug = new Sys._Debug(); - Sys.Debug.isDebug = true; - -function Sys$Enum$parse(value, ignoreCase) { - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "value", type: String}, - {name: "ignoreCase", type: Boolean, optional: true} - ]); - if (e) throw e; - var values, parsed, val; - if (ignoreCase) { - values = this.__lowerCaseValues; - if (!values) { - this.__lowerCaseValues = values = {}; - var prototype = this.prototype; - for (var name in prototype) { - values[name.toLowerCase()] = prototype[name]; - } - } - } - else { - values = this.prototype; - } - if (!this.__flags) { - val = (ignoreCase ? value.toLowerCase() : value); - parsed = values[val.trim()]; - if (typeof(parsed) !== 'number') throw Error.argument('value', String.format(Sys.Res.enumInvalidValue, value, this.__typeName)); - return parsed; - } - else { - var parts = (ignoreCase ? value.toLowerCase() : value).split(','); - var v = 0; - for (var i = parts.length - 1; i >= 0; i--) { - var part = parts[i].trim(); - parsed = values[part]; - if (typeof(parsed) !== 'number') throw Error.argument('value', String.format(Sys.Res.enumInvalidValue, value.split(',')[i].trim(), this.__typeName)); - v |= parsed; - } - return v; - } -} -function Sys$Enum$toString(value) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "value", mayBeNull: true, optional: true} - ]); - if (e) throw e; - if ((typeof(value) === 'undefined') || (value === null)) return this.__string; - if ((typeof(value) != 'number') || ((value % 1) !== 0)) throw Error.argumentType('value', Object.getType(value), this); - var values = this.prototype; - var i; - if (!this.__flags || (value === 0)) { - for (i in values) { - if (values[i] === value) { - return i; - } - } - } - else { - var sorted = this.__sortedValues; - if (!sorted) { - sorted = []; - for (i in values) { - sorted[sorted.length] = {key: i, value: values[i]}; - } - sorted.sort(function(a, b) { - return a.value - b.value; - }); - this.__sortedValues = sorted; - } - var parts = []; - var v = value; - for (i = sorted.length - 1; i >= 0; i--) { - var kvp = sorted[i]; - var vali = kvp.value; - if (vali === 0) continue; - if ((vali & value) === vali) { - parts[parts.length] = kvp.key; - v -= vali; - if (v === 0) break; - } - } - if (parts.length && v === 0) return parts.reverse().join(', '); - } - throw Error.argumentOutOfRange('value', value, String.format(Sys.Res.enumInvalidValue, value, this.__typeName)); -} -Type.prototype.registerEnum = function Type$registerEnum(name, flags) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "name", type: String}, - {name: "flags", type: Boolean, optional: true} - ]); - if (e) throw e; - if (!Type.__fullyQualifiedIdentifierRegExp.test(name)) throw Error.argument('name', Sys.Res.notATypeName); - var parsedName; - try { - parsedName = eval(name); - } - catch(e) { - throw Error.argument('name', Sys.Res.argumentTypeName); - } - if (parsedName !== this) throw Error.argument('name', Sys.Res.badTypeName); - if (Sys.__registeredTypes[name]) throw Error.invalidOperation(String.format(Sys.Res.typeRegisteredTwice, name)); - for (var j in this.prototype) { - var val = this.prototype[j]; - if (!Type.__identifierRegExp.test(j)) throw Error.invalidOperation(String.format(Sys.Res.enumInvalidValueName, j)); - if (typeof(val) !== 'number' || (val % 1) !== 0) throw Error.invalidOperation(Sys.Res.enumValueNotInteger); - if (typeof(this[j]) !== 'undefined') throw Error.invalidOperation(String.format(Sys.Res.enumReservedName, j)); - } - Sys.__upperCaseTypes[name.toUpperCase()] = this; - for (var i in this.prototype) { - this[i] = this.prototype[i]; - } - this.__typeName = name; - this.parse = Sys$Enum$parse; - this.__string = this.toString(); - this.toString = Sys$Enum$toString; - this.__flags = flags; - this.__enum = true; - Sys.__registeredTypes[name] = true; -} -Type.isEnum = function Type$isEnum(type) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "type", mayBeNull: true} - ]); - if (e) throw e; - if ((typeof(type) === 'undefined') || (type === null)) return false; - return !!type.__enum; -} -Type.isFlags = function Type$isFlags(type) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "type", mayBeNull: true} - ]); - if (e) throw e; - if ((typeof(type) === 'undefined') || (type === null)) return false; - return !!type.__flags; -} -Sys.CollectionChange = function Sys$CollectionChange(action, newItems, newStartingIndex, oldItems, oldStartingIndex) { - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "action", type: Sys.NotifyCollectionChangedAction}, - {name: "newItems", mayBeNull: true, optional: true}, - {name: "newStartingIndex", type: Number, mayBeNull: true, integer: true, optional: true}, - {name: "oldItems", mayBeNull: true, optional: true}, - {name: "oldStartingIndex", type: Number, mayBeNull: true, integer: true, optional: true} - ]); - if (e) throw e; - this.action = action; - if (newItems) { - if (!(newItems instanceof Array)) { - newItems = [newItems]; - } - } - this.newItems = newItems || null; - if (typeof newStartingIndex !== "number") { - newStartingIndex = -1; - } - this.newStartingIndex = newStartingIndex; - if (oldItems) { - if (!(oldItems instanceof Array)) { - oldItems = [oldItems]; - } - } - this.oldItems = oldItems || null; - if (typeof oldStartingIndex !== "number") { - oldStartingIndex = -1; - } - this.oldStartingIndex = oldStartingIndex; -} -Sys.CollectionChange.registerClass("Sys.CollectionChange"); -Sys.NotifyCollectionChangedAction = function Sys$NotifyCollectionChangedAction() { - /// - /// - /// - /// - if (arguments.length !== 0) throw Error.parameterCount(); - throw Error.notImplemented(); -} -Sys.NotifyCollectionChangedAction.prototype = { - add: 0, - remove: 1, - reset: 2 -} -Sys.NotifyCollectionChangedAction.registerEnum('Sys.NotifyCollectionChangedAction'); -Sys.NotifyCollectionChangedEventArgs = function Sys$NotifyCollectionChangedEventArgs(changes) { - /// - /// - var e = Function._validateParams(arguments, [ - {name: "changes", type: Array, elementType: Sys.CollectionChange} - ]); - if (e) throw e; - this._changes = changes; - Sys.NotifyCollectionChangedEventArgs.initializeBase(this); -} - function Sys$NotifyCollectionChangedEventArgs$get_changes() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._changes || []; - } -Sys.NotifyCollectionChangedEventArgs.prototype = { - get_changes: Sys$NotifyCollectionChangedEventArgs$get_changes -} -Sys.NotifyCollectionChangedEventArgs.registerClass("Sys.NotifyCollectionChangedEventArgs", Sys.EventArgs); -Sys.Observer = function Sys$Observer() { - throw Error.invalidOperation(); -} -Sys.Observer.registerClass("Sys.Observer"); -Sys.Observer.makeObservable = function Sys$Observer$makeObservable(target) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "target"} - ]); - if (e) throw e; - var isArray = target instanceof Array, - o = Sys.Observer; - Sys.Observer._ensureObservable(target); - if (target.setValue === o._observeMethods.setValue) return target; - o._addMethods(target, o._observeMethods); - if (isArray) { - o._addMethods(target, o._arrayMethods); - } - return target; -} -Sys.Observer._ensureObservable = function Sys$Observer$_ensureObservable(target) { - var type = typeof target; - if ((type === "string") || (type === "number") || (type === "boolean") || (type === "date")) { - throw Error.invalidOperation(String.format(Sys.Res.notObservable, type)); - } -} -Sys.Observer._addMethods = function Sys$Observer$_addMethods(target, methods) { - for (var m in methods) { - if (target[m] && (target[m] !== methods[m])) { - throw Error.invalidOperation(String.format(Sys.Res.observableConflict, m)); - } - target[m] = methods[m]; - } -} -Sys.Observer._addEventHandler = function Sys$Observer$_addEventHandler(target, eventName, handler) { - Sys.Observer._getContext(target, true).events._addHandler(eventName, handler); -} -Sys.Observer.addEventHandler = function Sys$Observer$addEventHandler(target, eventName, handler) { - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "target"}, - {name: "eventName", type: String}, - {name: "handler", type: Function} - ]); - if (e) throw e; - Sys.Observer._ensureObservable(target); - Sys.Observer._addEventHandler(target, eventName, handler); -} -Sys.Observer._removeEventHandler = function Sys$Observer$_removeEventHandler(target, eventName, handler) { - Sys.Observer._getContext(target, true).events._removeHandler(eventName, handler); -} -Sys.Observer.removeEventHandler = function Sys$Observer$removeEventHandler(target, eventName, handler) { - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "target"}, - {name: "eventName", type: String}, - {name: "handler", type: Function} - ]); - if (e) throw e; - Sys.Observer._ensureObservable(target); - Sys.Observer._removeEventHandler(target, eventName, handler); -} -Sys.Observer.raiseEvent = function Sys$Observer$raiseEvent(target, eventName, eventArgs) { - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "target"}, - {name: "eventName", type: String}, - {name: "eventArgs", type: Sys.EventArgs} - ]); - if (e) throw e; - Sys.Observer._ensureObservable(target); - var ctx = Sys.Observer._getContext(target); - if (!ctx) return; - var handler = ctx.events.getHandler(eventName); - if (handler) { - handler(target, eventArgs); - } -} -Sys.Observer.addPropertyChanged = function Sys$Observer$addPropertyChanged(target, handler) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "target"}, - {name: "handler", type: Function} - ]); - if (e) throw e; - Sys.Observer._ensureObservable(target); - Sys.Observer._addEventHandler(target, "propertyChanged", handler); -} -Sys.Observer.removePropertyChanged = function Sys$Observer$removePropertyChanged(target, handler) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "target"}, - {name: "handler", type: Function} - ]); - if (e) throw e; - Sys.Observer._ensureObservable(target); - Sys.Observer._removeEventHandler(target, "propertyChanged", handler); -} -Sys.Observer.beginUpdate = function Sys$Observer$beginUpdate(target) { - /// - /// - var e = Function._validateParams(arguments, [ - {name: "target"} - ]); - if (e) throw e; - Sys.Observer._ensureObservable(target); - Sys.Observer._getContext(target, true).updating = true; -} -Sys.Observer.endUpdate = function Sys$Observer$endUpdate(target) { - /// - /// - var e = Function._validateParams(arguments, [ - {name: "target"} - ]); - if (e) throw e; - Sys.Observer._ensureObservable(target); - var ctx = Sys.Observer._getContext(target); - if (!ctx || !ctx.updating) return; - ctx.updating = false; - var dirty = ctx.dirty; - ctx.dirty = false; - if (dirty) { - if (target instanceof Array) { - var changes = ctx.changes; - ctx.changes = null; - Sys.Observer.raiseCollectionChanged(target, changes); - } - Sys.Observer.raisePropertyChanged(target, ""); - } -} -Sys.Observer.isUpdating = function Sys$Observer$isUpdating(target) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "target"} - ]); - if (e) throw e; - Sys.Observer._ensureObservable(target); - var ctx = Sys.Observer._getContext(target); - return ctx ? ctx.updating : false; -} -Sys.Observer._setValue = function Sys$Observer$_setValue(target, propertyName, value) { - var getter, setter, mainTarget = target, path = propertyName.split('.'); - for (var i = 0, l = (path.length - 1); i < l ; i++) { - var name = path[i]; - getter = target["get_" + name]; - if (typeof (getter) === "function") { - target = getter.call(target); - } - else { - target = target[name]; - } - var type = typeof (target); - if ((target === null) || (type === "undefined")) { - throw Error.invalidOperation(String.format(Sys.Res.nullReferenceInPath, propertyName)); - } - } - var currentValue, lastPath = path[l]; - getter = target["get_" + lastPath]; - setter = target["set_" + lastPath]; - if (typeof(getter) === 'function') { - currentValue = getter.call(target); - } - else { - currentValue = target[lastPath]; - } - if (typeof(setter) === 'function') { - setter.call(target, value); - } - else { - target[lastPath] = value; - } - if (currentValue !== value) { - var ctx = Sys.Observer._getContext(mainTarget); - if (ctx && ctx.updating) { - ctx.dirty = true; - return; - }; - Sys.Observer.raisePropertyChanged(mainTarget, path[0]); - } -} -Sys.Observer.setValue = function Sys$Observer$setValue(target, propertyName, value) { - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "target"}, - {name: "propertyName", type: String}, - {name: "value", mayBeNull: true} - ]); - if (e) throw e; - Sys.Observer._ensureObservable(target); - Sys.Observer._setValue(target, propertyName, value); -} -Sys.Observer.raisePropertyChanged = function Sys$Observer$raisePropertyChanged(target, propertyName) { - /// - /// - /// - Sys.Observer.raiseEvent(target, "propertyChanged", new Sys.PropertyChangedEventArgs(propertyName)); -} -Sys.Observer.addCollectionChanged = function Sys$Observer$addCollectionChanged(target, handler) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "target", type: Array, elementMayBeNull: true}, - {name: "handler", type: Function} - ]); - if (e) throw e; - Sys.Observer._addEventHandler(target, "collectionChanged", handler); -} -Sys.Observer.removeCollectionChanged = function Sys$Observer$removeCollectionChanged(target, handler) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "target", type: Array, elementMayBeNull: true}, - {name: "handler", type: Function} - ]); - if (e) throw e; - Sys.Observer._removeEventHandler(target, "collectionChanged", handler); -} -Sys.Observer._collectionChange = function Sys$Observer$_collectionChange(target, change) { - var ctx = Sys.Observer._getContext(target); - if (ctx && ctx.updating) { - ctx.dirty = true; - var changes = ctx.changes; - if (!changes) { - ctx.changes = changes = [change]; - } - else { - changes.push(change); - } - } - else { - Sys.Observer.raiseCollectionChanged(target, [change]); - Sys.Observer.raisePropertyChanged(target, 'length'); - } -} -Sys.Observer.add = function Sys$Observer$add(target, item) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "target", type: Array, elementMayBeNull: true}, - {name: "item", mayBeNull: true} - ]); - if (e) throw e; - var change = new Sys.CollectionChange(Sys.NotifyCollectionChangedAction.add, [item], target.length); - Array.add(target, item); - Sys.Observer._collectionChange(target, change); -} -Sys.Observer.addRange = function Sys$Observer$addRange(target, items) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "target", type: Array, elementMayBeNull: true}, - {name: "items", type: Array, elementMayBeNull: true} - ]); - if (e) throw e; - var change = new Sys.CollectionChange(Sys.NotifyCollectionChangedAction.add, items, target.length); - Array.addRange(target, items); - Sys.Observer._collectionChange(target, change); -} -Sys.Observer.clear = function Sys$Observer$clear(target) { - /// - /// - var e = Function._validateParams(arguments, [ - {name: "target", type: Array, elementMayBeNull: true} - ]); - if (e) throw e; - var oldItems = Array.clone(target); - Array.clear(target); - Sys.Observer._collectionChange(target, new Sys.CollectionChange(Sys.NotifyCollectionChangedAction.reset, null, -1, oldItems, 0)); -} -Sys.Observer.insert = function Sys$Observer$insert(target, index, item) { - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "target", type: Array, elementMayBeNull: true}, - {name: "index", type: Number, integer: true}, - {name: "item", mayBeNull: true} - ]); - if (e) throw e; - Array.insert(target, index, item); - Sys.Observer._collectionChange(target, new Sys.CollectionChange(Sys.NotifyCollectionChangedAction.add, [item], index)); -} -Sys.Observer.remove = function Sys$Observer$remove(target, item) { - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "target", type: Array, elementMayBeNull: true}, - {name: "item", mayBeNull: true} - ]); - if (e) throw e; - var index = Array.indexOf(target, item); - if (index !== -1) { - Array.remove(target, item); - Sys.Observer._collectionChange(target, new Sys.CollectionChange(Sys.NotifyCollectionChangedAction.remove, null, -1, [item], index)); - return true; - } - return false; -} -Sys.Observer.removeAt = function Sys$Observer$removeAt(target, index) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "target", type: Array, elementMayBeNull: true}, - {name: "index", type: Number, integer: true} - ]); - if (e) throw e; - if ((index > -1) && (index < target.length)) { - var item = target[index]; - Array.removeAt(target, index); - Sys.Observer._collectionChange(target, new Sys.CollectionChange(Sys.NotifyCollectionChangedAction.remove, null, -1, [item], index)); - } -} -Sys.Observer.raiseCollectionChanged = function Sys$Observer$raiseCollectionChanged(target, changes) { - /// - /// - /// - Sys.Observer.raiseEvent(target, "collectionChanged", new Sys.NotifyCollectionChangedEventArgs(changes)); -} -Sys.Observer._observeMethods = { - add_propertyChanged: function(handler) { - Sys.Observer._addEventHandler(this, "propertyChanged", handler); - }, - remove_propertyChanged: function(handler) { - Sys.Observer._removeEventHandler(this, "propertyChanged", handler); - }, - addEventHandler: function(eventName, handler) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "eventName", type: String}, - {name: "handler", type: Function} - ]); - if (e) throw e; - Sys.Observer._addEventHandler(this, eventName, handler); - }, - removeEventHandler: function(eventName, handler) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "eventName", type: String}, - {name: "handler", type: Function} - ]); - if (e) throw e; - Sys.Observer._removeEventHandler(this, eventName, handler); - }, - get_isUpdating: function() { - /// - /// - return Sys.Observer.isUpdating(this); - }, - beginUpdate: function() { - /// - Sys.Observer.beginUpdate(this); - }, - endUpdate: function() { - /// - Sys.Observer.endUpdate(this); - }, - setValue: function(name, value) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "name", type: String}, - {name: "value", mayBeNull: true} - ]); - if (e) throw e; - Sys.Observer._setValue(this, name, value); - }, - raiseEvent: function(eventName, eventArgs) { - /// - /// - /// - Sys.Observer.raiseEvent(this, eventName, eventArgs); - }, - raisePropertyChanged: function(name) { - /// - /// - Sys.Observer.raiseEvent(this, "propertyChanged", new Sys.PropertyChangedEventArgs(name)); - } -} -Sys.Observer._arrayMethods = { - add_collectionChanged: function(handler) { - Sys.Observer._addEventHandler(this, "collectionChanged", handler); - }, - remove_collectionChanged: function(handler) { - Sys.Observer._removeEventHandler(this, "collectionChanged", handler); - }, - add: function(item) { - /// - /// - Sys.Observer.add(this, item); - }, - addRange: function(items) { - /// - /// - Sys.Observer.addRange(this, items); - }, - clear: function() { - /// - Sys.Observer.clear(this); - }, - insert: function(index, item) { - /// - /// - /// - Sys.Observer.insert(this, index, item); - }, - remove: function(item) { - /// - /// - /// - return Sys.Observer.remove(this, item); - }, - removeAt: function(index) { - /// - /// - Sys.Observer.removeAt(this, index); - }, - raiseCollectionChanged: function(changes) { - /// - /// - Sys.Observer.raiseEvent(this, "collectionChanged", new Sys.NotifyCollectionChangedEventArgs(changes)); - } -} -Sys.Observer._getContext = function Sys$Observer$_getContext(obj, create) { - var ctx = obj._observerContext; - if (ctx) return ctx(); - if (create) { - return (obj._observerContext = Sys.Observer._createContext())(); - } - return null; -} -Sys.Observer._createContext = function Sys$Observer$_createContext() { - var ctx = { - events: new Sys.EventHandlerList() - }; - return function() { - return ctx; - } -} -Date._appendPreOrPostMatch = function Date$_appendPreOrPostMatch(preMatch, strBuilder) { - var quoteCount = 0; - var escaped = false; - for (var i = 0, il = preMatch.length; i < il; i++) { - var c = preMatch.charAt(i); - switch (c) { - case '\'': - if (escaped) strBuilder.append("'"); - else quoteCount++; - escaped = false; - break; - case '\\': - if (escaped) strBuilder.append("\\"); - escaped = !escaped; - break; - default: - strBuilder.append(c); - escaped = false; - break; - } - } - return quoteCount; -} -Date._expandFormat = function Date$_expandFormat(dtf, format) { - if (!format) { - format = "F"; - } - var len = format.length; - if (len === 1) { - switch (format) { - case "d": - return dtf.ShortDatePattern; - case "D": - return dtf.LongDatePattern; - case "t": - return dtf.ShortTimePattern; - case "T": - return dtf.LongTimePattern; - case "f": - return dtf.LongDatePattern + " " + dtf.ShortTimePattern; - case "F": - return dtf.FullDateTimePattern; - case "M": case "m": - return dtf.MonthDayPattern; - case "s": - return dtf.SortableDateTimePattern; - case "Y": case "y": - return dtf.YearMonthPattern; - default: - throw Error.format(Sys.Res.formatInvalidString); - } - } - else if ((len === 2) && (format.charAt(0) === "%")) { - format = format.charAt(1); - } - return format; -} -Date._expandYear = function Date$_expandYear(dtf, year) { - var now = new Date(), - era = Date._getEra(now); - if (year < 100) { - var curr = Date._getEraYear(now, dtf, era); - year += curr - (curr % 100); - if (year > dtf.Calendar.TwoDigitYearMax) { - year -= 100; - } - } - return year; -} -Date._getEra = function Date$_getEra(date, eras) { - if (!eras) return 0; - var start, ticks = date.getTime(); - for (var i = 0, l = eras.length; i < l; i += 4) { - start = eras[i+2]; - if ((start === null) || (ticks >= start)) { - return i; - } - } - return 0; -} -Date._getEraYear = function Date$_getEraYear(date, dtf, era, sortable) { - var year = date.getFullYear(); - if (!sortable && dtf.eras) { - year -= dtf.eras[era + 3]; - } - return year; -} -Date._getParseRegExp = function Date$_getParseRegExp(dtf, format) { - if (!dtf._parseRegExp) { - dtf._parseRegExp = {}; - } - else if (dtf._parseRegExp[format]) { - return dtf._parseRegExp[format]; - } - var expFormat = Date._expandFormat(dtf, format); - expFormat = expFormat.replace(/([\^\$\.\*\+\?\|\[\]\(\)\{\}])/g, "\\\\$1"); - var regexp = new Sys.StringBuilder("^"); - var groups = []; - var index = 0; - var quoteCount = 0; - var tokenRegExp = Date._getTokenRegExp(); - var match; - while ((match = tokenRegExp.exec(expFormat)) !== null) { - var preMatch = expFormat.slice(index, match.index); - index = tokenRegExp.lastIndex; - quoteCount += Date._appendPreOrPostMatch(preMatch, regexp); - if ((quoteCount%2) === 1) { - regexp.append(match[0]); - continue; - } - switch (match[0]) { - case 'dddd': case 'ddd': - case 'MMMM': case 'MMM': - case 'gg': case 'g': - regexp.append("(\\D+)"); - break; - case 'tt': case 't': - regexp.append("(\\D*)"); - break; - case 'yyyy': - regexp.append("(\\d{4})"); - break; - case 'fff': - regexp.append("(\\d{3})"); - break; - case 'ff': - regexp.append("(\\d{2})"); - break; - case 'f': - regexp.append("(\\d)"); - break; - case 'dd': case 'd': - case 'MM': case 'M': - case 'yy': case 'y': - case 'HH': case 'H': - case 'hh': case 'h': - case 'mm': case 'm': - case 'ss': case 's': - regexp.append("(\\d\\d?)"); - break; - case 'zzz': - regexp.append("([+-]?\\d\\d?:\\d{2})"); - break; - case 'zz': case 'z': - regexp.append("([+-]?\\d\\d?)"); - break; - case '/': - regexp.append("(\\" + dtf.DateSeparator + ")"); - break; - default: - Sys.Debug.fail("Invalid date format pattern"); - } - Array.add(groups, match[0]); - } - Date._appendPreOrPostMatch(expFormat.slice(index), regexp); - regexp.append("$"); - var regexpStr = regexp.toString().replace(/\s+/g, "\\s+"); - var parseRegExp = {'regExp': regexpStr, 'groups': groups}; - dtf._parseRegExp[format] = parseRegExp; - return parseRegExp; -} -Date._getTokenRegExp = function Date$_getTokenRegExp() { - return /\/|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z|gg|g/g; -} -Date.parseLocale = function Date$parseLocale(value, formats) { - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "value", type: String}, - {name: "formats", mayBeNull: true, optional: true, parameterArray: true} - ]); - if (e) throw e; - return Date._parse(value, Sys.CultureInfo.CurrentCulture, arguments); -} -Date.parseInvariant = function Date$parseInvariant(value, formats) { - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "value", type: String}, - {name: "formats", mayBeNull: true, optional: true, parameterArray: true} - ]); - if (e) throw e; - return Date._parse(value, Sys.CultureInfo.InvariantCulture, arguments); -} -Date._parse = function Date$_parse(value, cultureInfo, args) { - var i, l, date, format, formats, custom = false; - for (i = 1, l = args.length; i < l; i++) { - format = args[i]; - if (format) { - custom = true; - date = Date._parseExact(value, format, cultureInfo); - if (date) return date; - } - } - if (! custom) { - formats = cultureInfo._getDateTimeFormats(); - for (i = 0, l = formats.length; i < l; i++) { - date = Date._parseExact(value, formats[i], cultureInfo); - if (date) return date; - } - } - return null; -} -Date._parseExact = function Date$_parseExact(value, format, cultureInfo) { - value = value.trim(); - var dtf = cultureInfo.dateTimeFormat, - parseInfo = Date._getParseRegExp(dtf, format), - match = new RegExp(parseInfo.regExp).exec(value); - if (match === null) return null; - - var groups = parseInfo.groups, - era = null, year = null, month = null, date = null, weekDay = null, - hour = 0, hourOffset, min = 0, sec = 0, msec = 0, tzMinOffset = null, - pmHour = false; - for (var j = 0, jl = groups.length; j < jl; j++) { - var matchGroup = match[j+1]; - if (matchGroup) { - switch (groups[j]) { - case 'dd': case 'd': - date = parseInt(matchGroup, 10); - if ((date < 1) || (date > 31)) return null; - break; - case 'MMMM': - month = cultureInfo._getMonthIndex(matchGroup); - if ((month < 0) || (month > 11)) return null; - break; - case 'MMM': - month = cultureInfo._getAbbrMonthIndex(matchGroup); - if ((month < 0) || (month > 11)) return null; - break; - case 'M': case 'MM': - month = parseInt(matchGroup, 10) - 1; - if ((month < 0) || (month > 11)) return null; - break; - case 'y': case 'yy': - year = Date._expandYear(dtf,parseInt(matchGroup, 10)); - if ((year < 0) || (year > 9999)) return null; - break; - case 'yyyy': - year = parseInt(matchGroup, 10); - if ((year < 0) || (year > 9999)) return null; - break; - case 'h': case 'hh': - hour = parseInt(matchGroup, 10); - if (hour === 12) hour = 0; - if ((hour < 0) || (hour > 11)) return null; - break; - case 'H': case 'HH': - hour = parseInt(matchGroup, 10); - if ((hour < 0) || (hour > 23)) return null; - break; - case 'm': case 'mm': - min = parseInt(matchGroup, 10); - if ((min < 0) || (min > 59)) return null; - break; - case 's': case 'ss': - sec = parseInt(matchGroup, 10); - if ((sec < 0) || (sec > 59)) return null; - break; - case 'tt': case 't': - var upperToken = matchGroup.toUpperCase(); - pmHour = (upperToken === dtf.PMDesignator.toUpperCase()); - if (!pmHour && (upperToken !== dtf.AMDesignator.toUpperCase())) return null; - break; - case 'f': - msec = parseInt(matchGroup, 10) * 100; - if ((msec < 0) || (msec > 999)) return null; - break; - case 'ff': - msec = parseInt(matchGroup, 10) * 10; - if ((msec < 0) || (msec > 999)) return null; - break; - case 'fff': - msec = parseInt(matchGroup, 10); - if ((msec < 0) || (msec > 999)) return null; - break; - case 'dddd': - weekDay = cultureInfo._getDayIndex(matchGroup); - if ((weekDay < 0) || (weekDay > 6)) return null; - break; - case 'ddd': - weekDay = cultureInfo._getAbbrDayIndex(matchGroup); - if ((weekDay < 0) || (weekDay > 6)) return null; - break; - case 'zzz': - var offsets = matchGroup.split(/:/); - if (offsets.length !== 2) return null; - hourOffset = parseInt(offsets[0], 10); - if ((hourOffset < -12) || (hourOffset > 13)) return null; - var minOffset = parseInt(offsets[1], 10); - if ((minOffset < 0) || (minOffset > 59)) return null; - tzMinOffset = (hourOffset * 60) + (matchGroup.startsWith('-')? -minOffset : minOffset); - break; - case 'z': case 'zz': - hourOffset = parseInt(matchGroup, 10); - if ((hourOffset < -12) || (hourOffset > 13)) return null; - tzMinOffset = hourOffset * 60; - break; - case 'g': case 'gg': - var eraName = matchGroup; - if (!eraName || !dtf.eras) return null; - eraName = eraName.toLowerCase().trim(); - for (var i = 0, l = dtf.eras.length; i < l; i += 4) { - if (eraName === dtf.eras[i + 1].toLowerCase()) { - era = i; - break; - } - } - if (era === null) return null; - break; - } - } - } - var result = new Date(), defaults, convert = dtf.Calendar.convert; - if (convert) { - defaults = convert.fromGregorian(result); - } - if (!convert) { - defaults = [result.getFullYear(), result.getMonth(), result.getDate()]; - } - if (year === null) { - year = defaults[0]; - } - else if (dtf.eras) { - year += dtf.eras[(era || 0) + 3]; - } - if (month === null) { - month = defaults[1]; - } - if (date === null) { - date = defaults[2]; - } - if (convert) { - result = convert.toGregorian(year, month, date); - if (result === null) return null; - } - else { - result.setFullYear(year, month, date); - if (result.getDate() !== date) return null; - if ((weekDay !== null) && (result.getDay() !== weekDay)) { - return null; - } - } - if (pmHour && (hour < 12)) { - hour += 12; - } - result.setHours(hour, min, sec, msec); - if (tzMinOffset !== null) { - var adjustedMin = result.getMinutes() - (tzMinOffset + result.getTimezoneOffset()); - result.setHours(result.getHours() + parseInt(adjustedMin/60, 10), adjustedMin%60); - } - return result; -} -Date.prototype.format = function Date$format(format) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "format", type: String} - ]); - if (e) throw e; - return this._toFormattedString(format, Sys.CultureInfo.InvariantCulture); -} -Date.prototype.localeFormat = function Date$localeFormat(format) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "format", type: String} - ]); - if (e) throw e; - return this._toFormattedString(format, Sys.CultureInfo.CurrentCulture); -} -Date.prototype._toFormattedString = function Date$_toFormattedString(format, cultureInfo) { - var dtf = cultureInfo.dateTimeFormat, - convert = dtf.Calendar.convert; - if (!format || !format.length || (format === 'i')) { - if (cultureInfo && cultureInfo.name.length) { - if (convert) { - return this._toFormattedString(dtf.FullDateTimePattern, cultureInfo); - } - else { - var eraDate = new Date(this.getTime()); - var era = Date._getEra(this, dtf.eras); - eraDate.setFullYear(Date._getEraYear(this, dtf, era)); - return eraDate.toLocaleString(); - } - } - else { - return this.toString(); - } - } - var eras = dtf.eras, - sortable = (format === "s"); - format = Date._expandFormat(dtf, format); - var ret = new Sys.StringBuilder(); - var hour; - function addLeadingZero(num) { - if (num < 10) { - return '0' + num; - } - return num.toString(); - } - function addLeadingZeros(num) { - if (num < 10) { - return '00' + num; - } - if (num < 100) { - return '0' + num; - } - return num.toString(); - } - function padYear(year) { - if (year < 10) { - return '000' + year; - } - else if (year < 100) { - return '00' + year; - } - else if (year < 1000) { - return '0' + year; - } - return year.toString(); - } - - var foundDay, checkedDay, dayPartRegExp = /([^d]|^)(d|dd)([^d]|$)/g; - function hasDay() { - if (foundDay || checkedDay) { - return foundDay; - } - foundDay = dayPartRegExp.test(format); - checkedDay = true; - return foundDay; - } - - var quoteCount = 0, - tokenRegExp = Date._getTokenRegExp(), - converted; - if (!sortable && convert) { - converted = convert.fromGregorian(this); - } - for (;;) { - var index = tokenRegExp.lastIndex; - var ar = tokenRegExp.exec(format); - var preMatch = format.slice(index, ar ? ar.index : format.length); - quoteCount += Date._appendPreOrPostMatch(preMatch, ret); - if (!ar) break; - if ((quoteCount%2) === 1) { - ret.append(ar[0]); - continue; - } - - function getPart(date, part) { - if (converted) { - return converted[part]; - } - switch (part) { - case 0: return date.getFullYear(); - case 1: return date.getMonth(); - case 2: return date.getDate(); - } - } - switch (ar[0]) { - case "dddd": - ret.append(dtf.DayNames[this.getDay()]); - break; - case "ddd": - ret.append(dtf.AbbreviatedDayNames[this.getDay()]); - break; - case "dd": - foundDay = true; - ret.append(addLeadingZero(getPart(this, 2))); - break; - case "d": - foundDay = true; - ret.append(getPart(this, 2)); - break; - case "MMMM": - ret.append((dtf.MonthGenitiveNames && hasDay()) - ? dtf.MonthGenitiveNames[getPart(this, 1)] - : dtf.MonthNames[getPart(this, 1)]); - break; - case "MMM": - ret.append((dtf.AbbreviatedMonthGenitiveNames && hasDay()) - ? dtf.AbbreviatedMonthGenitiveNames[getPart(this, 1)] - : dtf.AbbreviatedMonthNames[getPart(this, 1)]); - break; - case "MM": - ret.append(addLeadingZero(getPart(this, 1) + 1)); - break; - case "M": - ret.append(getPart(this, 1) + 1); - break; - case "yyyy": - ret.append(padYear(converted ? converted[0] : Date._getEraYear(this, dtf, Date._getEra(this, eras), sortable))); - break; - case "yy": - ret.append(addLeadingZero((converted ? converted[0] : Date._getEraYear(this, dtf, Date._getEra(this, eras), sortable)) % 100)); - break; - case "y": - ret.append((converted ? converted[0] : Date._getEraYear(this, dtf, Date._getEra(this, eras), sortable)) % 100); - break; - case "hh": - hour = this.getHours() % 12; - if (hour === 0) hour = 12; - ret.append(addLeadingZero(hour)); - break; - case "h": - hour = this.getHours() % 12; - if (hour === 0) hour = 12; - ret.append(hour); - break; - case "HH": - ret.append(addLeadingZero(this.getHours())); - break; - case "H": - ret.append(this.getHours()); - break; - case "mm": - ret.append(addLeadingZero(this.getMinutes())); - break; - case "m": - ret.append(this.getMinutes()); - break; - case "ss": - ret.append(addLeadingZero(this.getSeconds())); - break; - case "s": - ret.append(this.getSeconds()); - break; - case "tt": - ret.append((this.getHours() < 12) ? dtf.AMDesignator : dtf.PMDesignator); - break; - case "t": - ret.append(((this.getHours() < 12) ? dtf.AMDesignator : dtf.PMDesignator).charAt(0)); - break; - case "f": - ret.append(addLeadingZeros(this.getMilliseconds()).charAt(0)); - break; - case "ff": - ret.append(addLeadingZeros(this.getMilliseconds()).substr(0, 2)); - break; - case "fff": - ret.append(addLeadingZeros(this.getMilliseconds())); - break; - case "z": - hour = this.getTimezoneOffset() / 60; - ret.append(((hour <= 0) ? '+' : '-') + Math.floor(Math.abs(hour))); - break; - case "zz": - hour = this.getTimezoneOffset() / 60; - ret.append(((hour <= 0) ? '+' : '-') + addLeadingZero(Math.floor(Math.abs(hour)))); - break; - case "zzz": - hour = this.getTimezoneOffset() / 60; - ret.append(((hour <= 0) ? '+' : '-') + addLeadingZero(Math.floor(Math.abs(hour))) + - ":" + addLeadingZero(Math.abs(this.getTimezoneOffset() % 60))); - break; - case "g": - case "gg": - if (dtf.eras) { - ret.append(dtf.eras[Date._getEra(this, eras) + 1]); - } - break; - case "/": - ret.append(dtf.DateSeparator); - break; - default: - Sys.Debug.fail("Invalid date format pattern"); - } - } - return ret.toString(); -} -String.localeFormat = function String$localeFormat(format, args) { - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "format", type: String}, - {name: "args", mayBeNull: true, parameterArray: true} - ]); - if (e) throw e; - return String._toFormattedString(true, arguments); -} -Number.parseLocale = function Number$parseLocale(value) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "value", type: String} - ], false); - if (e) throw e; - return Number._parse(value, Sys.CultureInfo.CurrentCulture); -} -Number.parseInvariant = function Number$parseInvariant(value) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "value", type: String} - ], false); - if (e) throw e; - return Number._parse(value, Sys.CultureInfo.InvariantCulture); -} -Number._parse = function Number$_parse(value, cultureInfo) { - value = value.trim(); - - if (value.match(/^[+-]?infinity$/i)) { - return parseFloat(value); - } - if (value.match(/^0x[a-f0-9]+$/i)) { - return parseInt(value); - } - var numFormat = cultureInfo.numberFormat; - var signInfo = Number._parseNumberNegativePattern(value, numFormat, numFormat.NumberNegativePattern); - var sign = signInfo[0]; - var num = signInfo[1]; - - if ((sign === '') && (numFormat.NumberNegativePattern !== 1)) { - signInfo = Number._parseNumberNegativePattern(value, numFormat, 1); - sign = signInfo[0]; - num = signInfo[1]; - } - if (sign === '') sign = '+'; - - var exponent; - var intAndFraction; - var exponentPos = num.indexOf('e'); - if (exponentPos < 0) exponentPos = num.indexOf('E'); - if (exponentPos < 0) { - intAndFraction = num; - exponent = null; - } - else { - intAndFraction = num.substr(0, exponentPos); - exponent = num.substr(exponentPos + 1); - } - - var integer; - var fraction; - var decimalPos = intAndFraction.indexOf(numFormat.NumberDecimalSeparator); - if (decimalPos < 0) { - integer = intAndFraction; - fraction = null; - } - else { - integer = intAndFraction.substr(0, decimalPos); - fraction = intAndFraction.substr(decimalPos + numFormat.NumberDecimalSeparator.length); - } - - integer = integer.split(numFormat.NumberGroupSeparator).join(''); - var altNumGroupSeparator = numFormat.NumberGroupSeparator.replace(/\u00A0/g, " "); - if (numFormat.NumberGroupSeparator !== altNumGroupSeparator) { - integer = integer.split(altNumGroupSeparator).join(''); - } - - var p = sign + integer; - if (fraction !== null) { - p += '.' + fraction; - } - if (exponent !== null) { - var expSignInfo = Number._parseNumberNegativePattern(exponent, numFormat, 1); - if (expSignInfo[0] === '') { - expSignInfo[0] = '+'; - } - p += 'e' + expSignInfo[0] + expSignInfo[1]; - } - if (p.match(/^[+-]?\d*\.?\d*(e[+-]?\d+)?$/)) { - return parseFloat(p); - } - return Number.NaN; -} -Number._parseNumberNegativePattern = function Number$_parseNumberNegativePattern(value, numFormat, numberNegativePattern) { - var neg = numFormat.NegativeSign; - var pos = numFormat.PositiveSign; - switch (numberNegativePattern) { - case 4: - neg = ' ' + neg; - pos = ' ' + pos; - case 3: - if (value.endsWith(neg)) { - return ['-', value.substr(0, value.length - neg.length)]; - } - else if (value.endsWith(pos)) { - return ['+', value.substr(0, value.length - pos.length)]; - } - break; - case 2: - neg += ' '; - pos += ' '; - case 1: - if (value.startsWith(neg)) { - return ['-', value.substr(neg.length)]; - } - else if (value.startsWith(pos)) { - return ['+', value.substr(pos.length)]; - } - break; - case 0: - if (value.startsWith('(') && value.endsWith(')')) { - return ['-', value.substr(1, value.length - 2)]; - } - break; - default: - Sys.Debug.fail(""); - } - return ['', value]; -} -Number.prototype.format = function Number$format(format) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "format", type: String} - ]); - if (e) throw e; - return this._toFormattedString(format, Sys.CultureInfo.InvariantCulture); -} -Number.prototype.localeFormat = function Number$localeFormat(format) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "format", type: String} - ]); - if (e) throw e; - return this._toFormattedString(format, Sys.CultureInfo.CurrentCulture); -} -Number.prototype._toFormattedString = function Number$_toFormattedString(format, cultureInfo) { - if (!format || (format.length === 0) || (format === 'i')) { - if (cultureInfo && (cultureInfo.name.length > 0)) { - return this.toLocaleString(); - } - else { - return this.toString(); - } - } - - var _percentPositivePattern = ["n %", "n%", "%n" ]; - var _percentNegativePattern = ["-n %", "-n%", "-%n"]; - var _numberNegativePattern = ["(n)","-n","- n","n-","n -"]; - var _currencyPositivePattern = ["$n","n$","$ n","n $"]; - var _currencyNegativePattern = ["($n)","-$n","$-n","$n-","(n$)","-n$","n-$","n$-","-n $","-$ n","n $-","$ n-","$ -n","n- $","($ n)","(n $)"]; - function zeroPad(str, count, left) { - for (var l=str.length; l < count; l++) { - str = (left ? ('0' + str) : (str + '0')); - } - return str; - } - - function expandNumber(number, precision, groupSizes, sep, decimalChar) { - Sys.Debug.assert(groupSizes.length > 0, "groupSizes must be an array of at least 1"); - var curSize = groupSizes[0]; - var curGroupIndex = 1; - var factor = Math.pow(10, precision); - var rounded = (Math.round(number * factor) / factor); - if (!isFinite(rounded)) { - rounded = number; - } - number = rounded; - - var numberString = number.toString(); - var right = ""; - var exponent; - - - var split = numberString.split(/e/i); - numberString = split[0]; - exponent = (split.length > 1 ? parseInt(split[1]) : 0); - split = numberString.split('.'); - numberString = split[0]; - right = split.length > 1 ? split[1] : ""; - - var l; - if (exponent > 0) { - right = zeroPad(right, exponent, false); - numberString += right.slice(0, exponent); - right = right.substr(exponent); - } - else if (exponent < 0) { - exponent = -exponent; - numberString = zeroPad(numberString, exponent+1, true); - right = numberString.slice(-exponent, numberString.length) + right; - numberString = numberString.slice(0, -exponent); - } - if (precision > 0) { - if (right.length > precision) { - right = right.slice(0, precision); - } - else { - right = zeroPad(right, precision, false); - } - right = decimalChar + right; - } - else { - right = ""; - } - var stringIndex = numberString.length-1; - var ret = ""; - while (stringIndex >= 0) { - if (curSize === 0 || curSize > stringIndex) { - if (ret.length > 0) - return numberString.slice(0, stringIndex + 1) + sep + ret + right; - else - return numberString.slice(0, stringIndex + 1) + right; - } - if (ret.length > 0) - ret = numberString.slice(stringIndex - curSize + 1, stringIndex+1) + sep + ret; - else - ret = numberString.slice(stringIndex - curSize + 1, stringIndex+1); - stringIndex -= curSize; - if (curGroupIndex < groupSizes.length) { - curSize = groupSizes[curGroupIndex]; - curGroupIndex++; - } - } - return numberString.slice(0, stringIndex + 1) + sep + ret + right; - } - var nf = cultureInfo.numberFormat; - var number = Math.abs(this); - if (!format) - format = "D"; - var precision = -1; - if (format.length > 1) precision = parseInt(format.slice(1), 10); - var pattern; - switch (format.charAt(0)) { - case "d": - case "D": - pattern = 'n'; - if (precision !== -1) { - number = zeroPad(""+number, precision, true); - } - if (this < 0) number = -number; - break; - case "c": - case "C": - if (this < 0) pattern = _currencyNegativePattern[nf.CurrencyNegativePattern]; - else pattern = _currencyPositivePattern[nf.CurrencyPositivePattern]; - if (precision === -1) precision = nf.CurrencyDecimalDigits; - number = expandNumber(Math.abs(this), precision, nf.CurrencyGroupSizes, nf.CurrencyGroupSeparator, nf.CurrencyDecimalSeparator); - break; - case "n": - case "N": - if (this < 0) pattern = _numberNegativePattern[nf.NumberNegativePattern]; - else pattern = 'n'; - if (precision === -1) precision = nf.NumberDecimalDigits; - number = expandNumber(Math.abs(this), precision, nf.NumberGroupSizes, nf.NumberGroupSeparator, nf.NumberDecimalSeparator); - break; - case "p": - case "P": - if (this < 0) pattern = _percentNegativePattern[nf.PercentNegativePattern]; - else pattern = _percentPositivePattern[nf.PercentPositivePattern]; - if (precision === -1) precision = nf.PercentDecimalDigits; - number = expandNumber(Math.abs(this) * 100, precision, nf.PercentGroupSizes, nf.PercentGroupSeparator, nf.PercentDecimalSeparator); - break; - default: - throw Error.format(Sys.Res.formatBadFormatSpecifier); - } - var regex = /n|\$|-|%/g; - var ret = ""; - for (;;) { - var index = regex.lastIndex; - var ar = regex.exec(pattern); - ret += pattern.slice(index, ar ? ar.index : pattern.length); - if (!ar) - break; - switch (ar[0]) { - case "n": - ret += number; - break; - case "$": - ret += nf.CurrencySymbol; - break; - case "-": - if (/[1-9]/.test(number)) { - ret += nf.NegativeSign; - } - break; - case "%": - ret += nf.PercentSymbol; - break; - default: - Sys.Debug.fail("Invalid number format pattern"); - } - } - return ret; -} - -Sys.CultureInfo = function Sys$CultureInfo(name, numberFormat, dateTimeFormat) { - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "name", type: String}, - {name: "numberFormat", type: Object}, - {name: "dateTimeFormat", type: Object} - ]); - if (e) throw e; - this.name = name; - this.numberFormat = numberFormat; - this.dateTimeFormat = dateTimeFormat; -} - function Sys$CultureInfo$_getDateTimeFormats() { - if (! this._dateTimeFormats) { - var dtf = this.dateTimeFormat; - this._dateTimeFormats = - [ dtf.MonthDayPattern, - dtf.YearMonthPattern, - dtf.ShortDatePattern, - dtf.ShortTimePattern, - dtf.LongDatePattern, - dtf.LongTimePattern, - dtf.FullDateTimePattern, - dtf.RFC1123Pattern, - dtf.SortableDateTimePattern, - dtf.UniversalSortableDateTimePattern ]; - } - return this._dateTimeFormats; - } - function Sys$CultureInfo$_getIndex(value, a1, a2) { - var upper = this._toUpper(value), - i = Array.indexOf(a1, upper); - if (i === -1) { - i = Array.indexOf(a2, upper); - } - return i; - } - function Sys$CultureInfo$_getMonthIndex(value) { - if (!this._upperMonths) { - this._upperMonths = this._toUpperArray(this.dateTimeFormat.MonthNames); - this._upperMonthsGenitive = this._toUpperArray(this.dateTimeFormat.MonthGenitiveNames); - } - return this._getIndex(value, this._upperMonths, this._upperMonthsGenitive); - } - function Sys$CultureInfo$_getAbbrMonthIndex(value) { - if (!this._upperAbbrMonths) { - this._upperAbbrMonths = this._toUpperArray(this.dateTimeFormat.AbbreviatedMonthNames); - this._upperAbbrMonthsGenitive = this._toUpperArray(this.dateTimeFormat.AbbreviatedMonthGenitiveNames); - } - return this._getIndex(value, this._upperAbbrMonths, this._upperAbbrMonthsGenitive); - } - function Sys$CultureInfo$_getDayIndex(value) { - if (!this._upperDays) { - this._upperDays = this._toUpperArray(this.dateTimeFormat.DayNames); - } - return Array.indexOf(this._upperDays, this._toUpper(value)); - } - function Sys$CultureInfo$_getAbbrDayIndex(value) { - if (!this._upperAbbrDays) { - this._upperAbbrDays = this._toUpperArray(this.dateTimeFormat.AbbreviatedDayNames); - } - return Array.indexOf(this._upperAbbrDays, this._toUpper(value)); - } - function Sys$CultureInfo$_toUpperArray(arr) { - var result = []; - for (var i = 0, il = arr.length; i < il; i++) { - result[i] = this._toUpper(arr[i]); - } - return result; - } - function Sys$CultureInfo$_toUpper(value) { - return value.split("\u00A0").join(' ').toUpperCase(); - } -Sys.CultureInfo.prototype = { - _getDateTimeFormats: Sys$CultureInfo$_getDateTimeFormats, - _getIndex: Sys$CultureInfo$_getIndex, - _getMonthIndex: Sys$CultureInfo$_getMonthIndex, - _getAbbrMonthIndex: Sys$CultureInfo$_getAbbrMonthIndex, - _getDayIndex: Sys$CultureInfo$_getDayIndex, - _getAbbrDayIndex: Sys$CultureInfo$_getAbbrDayIndex, - _toUpperArray: Sys$CultureInfo$_toUpperArray, - _toUpper: Sys$CultureInfo$_toUpper -} -Sys.CultureInfo.registerClass('Sys.CultureInfo'); -Sys.CultureInfo._parse = function Sys$CultureInfo$_parse(value) { - var dtf = value.dateTimeFormat; - if (dtf && !dtf.eras) { - dtf.eras = value.eras; - } - return new Sys.CultureInfo(value.name, value.numberFormat, dtf); -} -Sys.CultureInfo.InvariantCulture = Sys.CultureInfo._parse({"name":"","numberFormat":{"CurrencyDecimalDigits":2,"CurrencyDecimalSeparator":".","IsReadOnly":true,"CurrencyGroupSizes":[3],"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":",","CurrencySymbol":"\u00A4","NaNSymbol":"NaN","CurrencyNegativePattern":0,"NumberNegativePattern":1,"PercentPositivePattern":0,"PercentNegativePattern":0,"NegativeInfinitySymbol":"-Infinity","NegativeSign":"-","NumberDecimalDigits":2,"NumberDecimalSeparator":".","NumberGroupSeparator":",","CurrencyPositivePattern":0,"PositiveInfinitySymbol":"Infinity","PositiveSign":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":".","PercentGroupSeparator":",","PercentSymbol":"%","PerMilleSymbol":"\u2030","NativeDigits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution":1},"dateTimeFormat":{"AMDesignator":"AM","Calendar":{"MinSupportedDateTime":"@-62135568000000@","MaxSupportedDateTime":"@253402300799999@","AlgorithmType":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2029,"IsReadOnly":true},"DateSeparator":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"FullDateTimePattern":"dddd, dd MMMM yyyy HH:mm:ss","LongDatePattern":"dddd, dd MMMM yyyy","LongTimePattern":"HH:mm:ss","MonthDayPattern":"MMMM dd","PMDesignator":"PM","RFC1123Pattern":"ddd, dd MMM yyyy HH\':\'mm\':\'ss \'GMT\'","ShortDatePattern":"MM/dd/yyyy","ShortTimePattern":"HH:mm","SortableDateTimePattern":"yyyy\'-\'MM\'-\'dd\'T\'HH\':\'mm\':\'ss","TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy\'-\'MM\'-\'dd HH\':\'mm\':\'ss\'Z\'","YearMonthPattern":"yyyy MMMM","AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"],"DayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"AbbreviatedMonthNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthNames":["January","February","March","April","May","June","July","August","September","October","November","December",""],"IsReadOnly":true,"NativeCalendarName":"Gregorian Calendar","AbbreviatedMonthGenitiveNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthGenitiveNames":["January","February","March","April","May","June","July","August","September","October","November","December",""]},"eras":[1,"A.D.",null,0]}); -if (typeof(__cultureInfo) === "object") { - Sys.CultureInfo.CurrentCulture = Sys.CultureInfo._parse(__cultureInfo); - delete __cultureInfo; -} -else { - Sys.CultureInfo.CurrentCulture = Sys.CultureInfo._parse({"name":"en-US","numberFormat":{"CurrencyDecimalDigits":2,"CurrencyDecimalSeparator":".","IsReadOnly":false,"CurrencyGroupSizes":[3],"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":",","CurrencySymbol":"$","NaNSymbol":"NaN","CurrencyNegativePattern":0,"NumberNegativePattern":1,"PercentPositivePattern":0,"PercentNegativePattern":0,"NegativeInfinitySymbol":"-Infinity","NegativeSign":"-","NumberDecimalDigits":2,"NumberDecimalSeparator":".","NumberGroupSeparator":",","CurrencyPositivePattern":0,"PositiveInfinitySymbol":"Infinity","PositiveSign":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":".","PercentGroupSeparator":",","PercentSymbol":"%","PerMilleSymbol":"\u2030","NativeDigits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution":1},"dateTimeFormat":{"AMDesignator":"AM","Calendar":{"MinSupportedDateTime":"@-62135568000000@","MaxSupportedDateTime":"@253402300799999@","AlgorithmType":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2029,"IsReadOnly":false},"DateSeparator":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"FullDateTimePattern":"dddd, MMMM dd, yyyy h:mm:ss tt","LongDatePattern":"dddd, MMMM dd, yyyy","LongTimePattern":"h:mm:ss tt","MonthDayPattern":"MMMM dd","PMDesignator":"PM","RFC1123Pattern":"ddd, dd MMM yyyy HH\':\'mm\':\'ss \'GMT\'","ShortDatePattern":"M/d/yyyy","ShortTimePattern":"h:mm tt","SortableDateTimePattern":"yyyy\'-\'MM\'-\'dd\'T\'HH\':\'mm\':\'ss","TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy\'-\'MM\'-\'dd HH\':\'mm\':\'ss\'Z\'","YearMonthPattern":"MMMM, yyyy","AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"],"DayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"AbbreviatedMonthNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthNames":["January","February","March","April","May","June","July","August","September","October","November","December",""],"IsReadOnly":false,"NativeCalendarName":"Gregorian Calendar","AbbreviatedMonthGenitiveNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthGenitiveNames":["January","February","March","April","May","June","July","August","September","October","November","December",""]},"eras":[1,"A.D.",null,0]}); -} -Type.registerNamespace('Sys.Serialization'); -Sys.Serialization.JavaScriptSerializer = function Sys$Serialization$JavaScriptSerializer() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); -} -Sys.Serialization.JavaScriptSerializer.registerClass('Sys.Serialization.JavaScriptSerializer'); -Sys.Serialization.JavaScriptSerializer._charsToEscapeRegExs = []; -Sys.Serialization.JavaScriptSerializer._charsToEscape = []; -Sys.Serialization.JavaScriptSerializer._dateRegEx = new RegExp('(^|[^\\\\])\\"\\\\/Date\\((-?[0-9]+)(?:[a-zA-Z]|(?:\\+|-)[0-9]{4})?\\)\\\\/\\"', 'g'); -Sys.Serialization.JavaScriptSerializer._escapeChars = {}; -Sys.Serialization.JavaScriptSerializer._escapeRegEx = new RegExp('["\\\\\\x00-\\x1F]', 'i'); -Sys.Serialization.JavaScriptSerializer._escapeRegExGlobal = new RegExp('["\\\\\\x00-\\x1F]', 'g'); -Sys.Serialization.JavaScriptSerializer._jsonRegEx = new RegExp('[^,:{}\\[\\]0-9.\\-+Eaeflnr-u \\n\\r\\t]', 'g'); -Sys.Serialization.JavaScriptSerializer._jsonStringRegEx = new RegExp('"(\\\\.|[^"\\\\])*"', 'g'); -Sys.Serialization.JavaScriptSerializer._serverTypeFieldName = '__type'; -Sys.Serialization.JavaScriptSerializer._init = function Sys$Serialization$JavaScriptSerializer$_init() { - var replaceChars = ['\\u0000','\\u0001','\\u0002','\\u0003','\\u0004','\\u0005','\\u0006','\\u0007', - '\\b','\\t','\\n','\\u000b','\\f','\\r','\\u000e','\\u000f','\\u0010','\\u0011', - '\\u0012','\\u0013','\\u0014','\\u0015','\\u0016','\\u0017','\\u0018','\\u0019', - '\\u001a','\\u001b','\\u001c','\\u001d','\\u001e','\\u001f']; - Sys.Serialization.JavaScriptSerializer._charsToEscape[0] = '\\'; - Sys.Serialization.JavaScriptSerializer._charsToEscapeRegExs['\\'] = new RegExp('\\\\', 'g'); - Sys.Serialization.JavaScriptSerializer._escapeChars['\\'] = '\\\\'; - Sys.Serialization.JavaScriptSerializer._charsToEscape[1] = '"'; - Sys.Serialization.JavaScriptSerializer._charsToEscapeRegExs['"'] = new RegExp('"', 'g'); - Sys.Serialization.JavaScriptSerializer._escapeChars['"'] = '\\"'; - for (var i = 0; i < 32; i++) { - var c = String.fromCharCode(i); - Sys.Serialization.JavaScriptSerializer._charsToEscape[i+2] = c; - Sys.Serialization.JavaScriptSerializer._charsToEscapeRegExs[c] = new RegExp(c, 'g'); - Sys.Serialization.JavaScriptSerializer._escapeChars[c] = replaceChars[i]; - } -} -Sys.Serialization.JavaScriptSerializer._serializeBooleanWithBuilder = function Sys$Serialization$JavaScriptSerializer$_serializeBooleanWithBuilder(object, stringBuilder) { - stringBuilder.append(object.toString()); -} -Sys.Serialization.JavaScriptSerializer._serializeNumberWithBuilder = function Sys$Serialization$JavaScriptSerializer$_serializeNumberWithBuilder(object, stringBuilder) { - if (isFinite(object)) { - stringBuilder.append(String(object)); - } - else { - throw Error.invalidOperation(Sys.Res.cannotSerializeNonFiniteNumbers); - } -} -Sys.Serialization.JavaScriptSerializer._serializeStringWithBuilder = function Sys$Serialization$JavaScriptSerializer$_serializeStringWithBuilder(string, stringBuilder) { - stringBuilder.append('"'); - if (Sys.Serialization.JavaScriptSerializer._escapeRegEx.test(string)) { - if (Sys.Serialization.JavaScriptSerializer._charsToEscape.length === 0) { - Sys.Serialization.JavaScriptSerializer._init(); - } - if (string.length < 128) { - string = string.replace(Sys.Serialization.JavaScriptSerializer._escapeRegExGlobal, - function(x) { return Sys.Serialization.JavaScriptSerializer._escapeChars[x]; }); - } - else { - for (var i = 0; i < 34; i++) { - var c = Sys.Serialization.JavaScriptSerializer._charsToEscape[i]; - if (string.indexOf(c) !== -1) { - if (Sys.Browser.agent === Sys.Browser.Opera || Sys.Browser.agent === Sys.Browser.FireFox) { - string = string.split(c).join(Sys.Serialization.JavaScriptSerializer._escapeChars[c]); - } - else { - string = string.replace(Sys.Serialization.JavaScriptSerializer._charsToEscapeRegExs[c], - Sys.Serialization.JavaScriptSerializer._escapeChars[c]); - } - } - } - } - } - stringBuilder.append(string); - stringBuilder.append('"'); -} -Sys.Serialization.JavaScriptSerializer._serializeWithBuilder = function Sys$Serialization$JavaScriptSerializer$_serializeWithBuilder(object, stringBuilder, sort, prevObjects) { - var i; - switch (typeof object) { - case 'object': - if (object) { - if (prevObjects){ - for( var j = 0; j < prevObjects.length; j++) { - if (prevObjects[j] === object) { - throw Error.invalidOperation(Sys.Res.cannotSerializeObjectWithCycle); - } - } - } - else { - prevObjects = new Array(); - } - try { - Array.add(prevObjects, object); - - if (Number.isInstanceOfType(object)){ - Sys.Serialization.JavaScriptSerializer._serializeNumberWithBuilder(object, stringBuilder); - } - else if (Boolean.isInstanceOfType(object)){ - Sys.Serialization.JavaScriptSerializer._serializeBooleanWithBuilder(object, stringBuilder); - } - else if (String.isInstanceOfType(object)){ - Sys.Serialization.JavaScriptSerializer._serializeStringWithBuilder(object, stringBuilder); - } - - else if (Array.isInstanceOfType(object)) { - stringBuilder.append('['); - - for (i = 0; i < object.length; ++i) { - if (i > 0) { - stringBuilder.append(','); - } - Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(object[i], stringBuilder,false,prevObjects); - } - stringBuilder.append(']'); - } - else { - if (Date.isInstanceOfType(object)) { - stringBuilder.append('"\\/Date('); - stringBuilder.append(object.getTime()); - stringBuilder.append(')\\/"'); - break; - } - var properties = []; - var propertyCount = 0; - for (var name in object) { - if (name.startsWith('$')) { - continue; - } - if (name === Sys.Serialization.JavaScriptSerializer._serverTypeFieldName && propertyCount !== 0){ - properties[propertyCount++] = properties[0]; - properties[0] = name; - } - else{ - properties[propertyCount++] = name; - } - } - if (sort) properties.sort(); - stringBuilder.append('{'); - var needComma = false; - - for (i=0; i - /// - /// - var e = Function._validateParams(arguments, [ - {name: "object", mayBeNull: true} - ]); - if (e) throw e; - var stringBuilder = new Sys.StringBuilder(); - Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(object, stringBuilder, false); - return stringBuilder.toString(); -} -Sys.Serialization.JavaScriptSerializer.deserialize = function Sys$Serialization$JavaScriptSerializer$deserialize(data, secure) { - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "data", type: String}, - {name: "secure", type: Boolean, optional: true} - ]); - if (e) throw e; - - if (data.length === 0) throw Error.argument('data', Sys.Res.cannotDeserializeEmptyString); - try { - var exp = data.replace(Sys.Serialization.JavaScriptSerializer._dateRegEx, "$1new Date($2)"); - - if (secure && Sys.Serialization.JavaScriptSerializer._jsonRegEx.test( - exp.replace(Sys.Serialization.JavaScriptSerializer._jsonStringRegEx, ''))) throw null; - return eval('(' + exp + ')'); - } - catch (e) { - throw Error.argument('data', Sys.Res.cannotDeserializeInvalidJson); - } -} -Type.registerNamespace('Sys.UI'); - -Sys.EventHandlerList = function Sys$EventHandlerList() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - this._list = {}; -} - function Sys$EventHandlerList$_addHandler(id, handler) { - Array.add(this._getEvent(id, true), handler); - } - function Sys$EventHandlerList$addHandler(id, handler) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "id", type: String}, - {name: "handler", type: Function} - ]); - if (e) throw e; - this._addHandler(id, handler); - } - function Sys$EventHandlerList$_removeHandler(id, handler) { - var evt = this._getEvent(id); - if (!evt) return; - Array.remove(evt, handler); - } - function Sys$EventHandlerList$removeHandler(id, handler) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "id", type: String}, - {name: "handler", type: Function} - ]); - if (e) throw e; - this._removeHandler(id, handler); - } - function Sys$EventHandlerList$getHandler(id) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "id", type: String} - ]); - if (e) throw e; - var evt = this._getEvent(id); - if (!evt || (evt.length === 0)) return null; - evt = Array.clone(evt); - return function(source, args) { - for (var i = 0, l = evt.length; i < l; i++) { - evt[i](source, args); - } - }; - } - function Sys$EventHandlerList$_getEvent(id, create) { - if (!this._list[id]) { - if (!create) return null; - this._list[id] = []; - } - return this._list[id]; - } -Sys.EventHandlerList.prototype = { - _addHandler: Sys$EventHandlerList$_addHandler, - addHandler: Sys$EventHandlerList$addHandler, - _removeHandler: Sys$EventHandlerList$_removeHandler, - removeHandler: Sys$EventHandlerList$removeHandler, - getHandler: Sys$EventHandlerList$getHandler, - _getEvent: Sys$EventHandlerList$_getEvent -} -Sys.EventHandlerList.registerClass('Sys.EventHandlerList'); -Sys.CommandEventArgs = function Sys$CommandEventArgs(commandName, commandArgument, commandSource) { - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "commandName", type: String}, - {name: "commandArgument", mayBeNull: true}, - {name: "commandSource", mayBeNull: true} - ]); - if (e) throw e; - Sys.CommandEventArgs.initializeBase(this); - this._commandName = commandName; - this._commandArgument = commandArgument; - this._commandSource = commandSource; -} - function Sys$CommandEventArgs$get_commandName() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._commandName; - } - function Sys$CommandEventArgs$get_commandArgument() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._commandArgument; - } - function Sys$CommandEventArgs$get_commandSource() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._commandSource; - } -Sys.CommandEventArgs.prototype = { - _commandName: null, - _commandArgument: null, - _commandSource: null, - get_commandName: Sys$CommandEventArgs$get_commandName, - get_commandArgument: Sys$CommandEventArgs$get_commandArgument, - get_commandSource: Sys$CommandEventArgs$get_commandSource -} -Sys.CommandEventArgs.registerClass("Sys.CommandEventArgs", Sys.CancelEventArgs); - -Sys.INotifyPropertyChange = function Sys$INotifyPropertyChange() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - throw Error.notImplemented(); -} - function Sys$INotifyPropertyChange$add_propertyChanged(handler) { - /// - var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); - if (e) throw e; - throw Error.notImplemented(); - } - function Sys$INotifyPropertyChange$remove_propertyChanged(handler) { - var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); - if (e) throw e; - throw Error.notImplemented(); - } -Sys.INotifyPropertyChange.prototype = { - add_propertyChanged: Sys$INotifyPropertyChange$add_propertyChanged, - remove_propertyChanged: Sys$INotifyPropertyChange$remove_propertyChanged -} -Sys.INotifyPropertyChange.registerInterface('Sys.INotifyPropertyChange'); - -Sys.PropertyChangedEventArgs = function Sys$PropertyChangedEventArgs(propertyName) { - /// - /// - var e = Function._validateParams(arguments, [ - {name: "propertyName", type: String} - ]); - if (e) throw e; - Sys.PropertyChangedEventArgs.initializeBase(this); - this._propertyName = propertyName; -} - - function Sys$PropertyChangedEventArgs$get_propertyName() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._propertyName; - } -Sys.PropertyChangedEventArgs.prototype = { - get_propertyName: Sys$PropertyChangedEventArgs$get_propertyName -} -Sys.PropertyChangedEventArgs.registerClass('Sys.PropertyChangedEventArgs', Sys.EventArgs); - -Sys.INotifyDisposing = function Sys$INotifyDisposing() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - throw Error.notImplemented(); -} - function Sys$INotifyDisposing$add_disposing(handler) { - /// - var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); - if (e) throw e; - throw Error.notImplemented(); - } - function Sys$INotifyDisposing$remove_disposing(handler) { - var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); - if (e) throw e; - throw Error.notImplemented(); - } -Sys.INotifyDisposing.prototype = { - add_disposing: Sys$INotifyDisposing$add_disposing, - remove_disposing: Sys$INotifyDisposing$remove_disposing -} -Sys.INotifyDisposing.registerInterface("Sys.INotifyDisposing"); - -Sys.Component = function Sys$Component() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - if (Sys.Application) Sys.Application.registerDisposableObject(this); -} - function Sys$Component$get_events() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - if (!this._events) { - this._events = new Sys.EventHandlerList(); - } - return this._events; - } - function Sys$Component$get_id() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._id; - } - function Sys$Component$set_id(value) { - var e = Function._validateParams(arguments, [{name: "value", type: String}]); - if (e) throw e; - if (this._idSet) throw Error.invalidOperation(Sys.Res.componentCantSetIdTwice); - this._idSet = true; - var oldId = this.get_id(); - if (oldId && Sys.Application.findComponent(oldId)) throw Error.invalidOperation(Sys.Res.componentCantSetIdAfterAddedToApp); - this._id = value; - } - function Sys$Component$get_isInitialized() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._initialized; - } - function Sys$Component$get_isUpdating() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._updating; - } - function Sys$Component$add_disposing(handler) { - /// - var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); - if (e) throw e; - this.get_events().addHandler("disposing", handler); - } - function Sys$Component$remove_disposing(handler) { - var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); - if (e) throw e; - this.get_events().removeHandler("disposing", handler); - } - function Sys$Component$add_propertyChanged(handler) { - /// - var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); - if (e) throw e; - this.get_events().addHandler("propertyChanged", handler); - } - function Sys$Component$remove_propertyChanged(handler) { - var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); - if (e) throw e; - this.get_events().removeHandler("propertyChanged", handler); - } - function Sys$Component$beginUpdate() { - this._updating = true; - } - function Sys$Component$dispose() { - if (this._events) { - var handler = this._events.getHandler("disposing"); - if (handler) { - handler(this, Sys.EventArgs.Empty); - } - } - delete this._events; - Sys.Application.unregisterDisposableObject(this); - Sys.Application.removeComponent(this); - } - function Sys$Component$endUpdate() { - this._updating = false; - if (!this._initialized) this.initialize(); - this.updated(); - } - function Sys$Component$initialize() { - this._initialized = true; - } - function Sys$Component$raisePropertyChanged(propertyName) { - /// - /// - var e = Function._validateParams(arguments, [ - {name: "propertyName", type: String} - ]); - if (e) throw e; - if (!this._events) return; - var handler = this._events.getHandler("propertyChanged"); - if (handler) { - handler(this, new Sys.PropertyChangedEventArgs(propertyName)); - } - } - function Sys$Component$updated() { - } -Sys.Component.prototype = { - _id: null, - _idSet: false, - _initialized: false, - _updating: false, - get_events: Sys$Component$get_events, - get_id: Sys$Component$get_id, - set_id: Sys$Component$set_id, - get_isInitialized: Sys$Component$get_isInitialized, - get_isUpdating: Sys$Component$get_isUpdating, - add_disposing: Sys$Component$add_disposing, - remove_disposing: Sys$Component$remove_disposing, - add_propertyChanged: Sys$Component$add_propertyChanged, - remove_propertyChanged: Sys$Component$remove_propertyChanged, - beginUpdate: Sys$Component$beginUpdate, - dispose: Sys$Component$dispose, - endUpdate: Sys$Component$endUpdate, - initialize: Sys$Component$initialize, - raisePropertyChanged: Sys$Component$raisePropertyChanged, - updated: Sys$Component$updated -} -Sys.Component.registerClass('Sys.Component', null, Sys.IDisposable, Sys.INotifyPropertyChange, Sys.INotifyDisposing); -function Sys$Component$_setProperties(target, properties) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "target"}, - {name: "properties"} - ]); - if (e) throw e; - var current; - var targetType = Object.getType(target); - var isObject = (targetType === Object) || (targetType === Sys.UI.DomElement); - var isComponent = Sys.Component.isInstanceOfType(target) && !target.get_isUpdating(); - if (isComponent) target.beginUpdate(); - for (var name in properties) { - var val = properties[name]; - var getter = isObject ? null : target["get_" + name]; - if (isObject || typeof(getter) !== 'function') { - var targetVal = target[name]; - if (!isObject && typeof(targetVal) === 'undefined') throw Error.invalidOperation(String.format(Sys.Res.propertyUndefined, name)); - if (!val || (typeof(val) !== 'object') || (isObject && !targetVal)) { - target[name] = val; - } - else { - Sys$Component$_setProperties(targetVal, val); - } - } - else { - var setter = target["set_" + name]; - if (typeof(setter) === 'function') { - setter.apply(target, [val]); - } - else if (val instanceof Array) { - current = getter.apply(target); - if (!(current instanceof Array)) throw new Error.invalidOperation(String.format(Sys.Res.propertyNotAnArray, name)); - for (var i = 0, j = current.length, l= val.length; i < l; i++, j++) { - current[j] = val[i]; - } - } - else if ((typeof(val) === 'object') && (Object.getType(val) === Object)) { - current = getter.apply(target); - if ((typeof(current) === 'undefined') || (current === null)) throw new Error.invalidOperation(String.format(Sys.Res.propertyNullOrUndefined, name)); - Sys$Component$_setProperties(current, val); - } - else { - throw new Error.invalidOperation(String.format(Sys.Res.propertyNotWritable, name)); - } - } - } - if (isComponent) target.endUpdate(); -} -function Sys$Component$_setReferences(component, references) { - for (var name in references) { - var setter = component["set_" + name]; - var reference = $find(references[name]); - if (typeof(setter) !== 'function') throw new Error.invalidOperation(String.format(Sys.Res.propertyNotWritable, name)); - if (!reference) throw Error.invalidOperation(String.format(Sys.Res.referenceNotFound, references[name])); - setter.apply(component, [reference]); - } -} -var $create = Sys.Component.create = function Sys$Component$create(type, properties, events, references, element) { - /// - /// - /// - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "type", type: Type}, - {name: "properties", mayBeNull: true, optional: true}, - {name: "events", mayBeNull: true, optional: true}, - {name: "references", mayBeNull: true, optional: true}, - {name: "element", mayBeNull: true, domElement: true, optional: true} - ]); - if (e) throw e; - if (!type.inheritsFrom(Sys.Component)) { - throw Error.argument('type', String.format(Sys.Res.createNotComponent, type.getName())); - } - if (type.inheritsFrom(Sys.UI.Behavior) || type.inheritsFrom(Sys.UI.Control)) { - if (!element) throw Error.argument('element', Sys.Res.createNoDom); - } - else if (element) throw Error.argument('element', Sys.Res.createComponentOnDom); - var component = (element ? new type(element): new type()); - var app = Sys.Application; - var creatingComponents = app.get_isCreatingComponents(); - component.beginUpdate(); - if (properties) { - Sys$Component$_setProperties(component, properties); - } - if (events) { - for (var name in events) { - if (!(component["add_" + name] instanceof Function)) throw new Error.invalidOperation(String.format(Sys.Res.undefinedEvent, name)); - if (!(events[name] instanceof Function)) throw new Error.invalidOperation(Sys.Res.eventHandlerNotFunction); - component["add_" + name](events[name]); - } - } - if (component.get_id()) { - app.addComponent(component); - } - if (creatingComponents) { - app._createdComponents[app._createdComponents.length] = component; - if (references) { - app._addComponentToSecondPass(component, references); - } - else { - component.endUpdate(); - } - } - else { - if (references) { - Sys$Component$_setReferences(component, references); - } - component.endUpdate(); - } - return component; -} - -Sys.UI.MouseButton = function Sys$UI$MouseButton() { - /// - /// - /// - /// - if (arguments.length !== 0) throw Error.parameterCount(); - throw Error.notImplemented(); -} -Sys.UI.MouseButton.prototype = { - leftButton: 0, - middleButton: 1, - rightButton: 2 -} -Sys.UI.MouseButton.registerEnum("Sys.UI.MouseButton"); - -Sys.UI.Key = function Sys$UI$Key() { - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - if (arguments.length !== 0) throw Error.parameterCount(); - throw Error.notImplemented(); -} -Sys.UI.Key.prototype = { - backspace: 8, - tab: 9, - enter: 13, - esc: 27, - space: 32, - pageUp: 33, - pageDown: 34, - end: 35, - home: 36, - left: 37, - up: 38, - right: 39, - down: 40, - del: 127 -} -Sys.UI.Key.registerEnum("Sys.UI.Key"); - -Sys.UI.Point = function Sys$UI$Point(x, y) { - /// - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "x", type: Number, integer: true}, - {name: "y", type: Number, integer: true} - ]); - if (e) throw e; - this.x = x; - this.y = y; -} -Sys.UI.Point.registerClass('Sys.UI.Point'); - -Sys.UI.Bounds = function Sys$UI$Bounds(x, y, width, height) { - /// - /// - /// - /// - /// - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "x", type: Number, integer: true}, - {name: "y", type: Number, integer: true}, - {name: "width", type: Number, integer: true}, - {name: "height", type: Number, integer: true} - ]); - if (e) throw e; - this.x = x; - this.y = y; - this.height = height; - this.width = width; -} -Sys.UI.Bounds.registerClass('Sys.UI.Bounds'); - -Sys.UI.DomEvent = function Sys$UI$DomEvent(eventObject) { - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "eventObject"} - ]); - if (e) throw e; - var ev = eventObject; - var etype = this.type = ev.type.toLowerCase(); - this.rawEvent = ev; - this.altKey = ev.altKey; - if (typeof(ev.button) !== 'undefined') { - this.button = (typeof(ev.which) !== 'undefined') ? ev.button : - (ev.button === 4) ? Sys.UI.MouseButton.middleButton : - (ev.button === 2) ? Sys.UI.MouseButton.rightButton : - Sys.UI.MouseButton.leftButton; - } - if (etype === 'keypress') { - this.charCode = ev.charCode || ev.keyCode; - } - else if (ev.keyCode && (ev.keyCode === 46)) { - this.keyCode = 127; - } - else { - this.keyCode = ev.keyCode; - } - this.clientX = ev.clientX; - this.clientY = ev.clientY; - this.ctrlKey = ev.ctrlKey; - this.target = ev.target ? ev.target : ev.srcElement; - if (!etype.startsWith('key')) { - if ((typeof(ev.offsetX) !== 'undefined') && (typeof(ev.offsetY) !== 'undefined')) { - this.offsetX = ev.offsetX; - this.offsetY = ev.offsetY; - } - else if (this.target && (this.target.nodeType !== 3) && (typeof(ev.clientX) === 'number')) { - var loc = Sys.UI.DomElement.getLocation(this.target); - var w = Sys.UI.DomElement._getWindow(this.target); - this.offsetX = (w.pageXOffset || 0) + ev.clientX - loc.x; - this.offsetY = (w.pageYOffset || 0) + ev.clientY - loc.y; - } - } - this.screenX = ev.screenX; - this.screenY = ev.screenY; - this.shiftKey = ev.shiftKey; -} - function Sys$UI$DomEvent$preventDefault() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - if (this.rawEvent.preventDefault) { - this.rawEvent.preventDefault(); - } - else if (window.event) { - this.rawEvent.returnValue = false; - } - } - function Sys$UI$DomEvent$stopPropagation() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - if (this.rawEvent.stopPropagation) { - this.rawEvent.stopPropagation(); - } - else if (window.event) { - this.rawEvent.cancelBubble = true; - } - } -Sys.UI.DomEvent.prototype = { - preventDefault: Sys$UI$DomEvent$preventDefault, - stopPropagation: Sys$UI$DomEvent$stopPropagation -} -Sys.UI.DomEvent.registerClass('Sys.UI.DomEvent'); -var $addHandler = Sys.UI.DomEvent.addHandler = function Sys$UI$DomEvent$addHandler(element, eventName, handler, autoRemove) { - /// - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "element"}, - {name: "eventName", type: String}, - {name: "handler", type: Function}, - {name: "autoRemove", type: Boolean, optional: true} - ]); - if (e) throw e; - Sys.UI.DomEvent._ensureDomNode(element); - if (eventName === "error") throw Error.invalidOperation(Sys.Res.addHandlerCantBeUsedForError); - if (!element._events) { - element._events = {}; - } - var eventCache = element._events[eventName]; - if (!eventCache) { - element._events[eventName] = eventCache = []; - } - var browserHandler; - if (element.addEventListener) { - browserHandler = function(e) { - return handler.call(element, new Sys.UI.DomEvent(e)); - } - element.addEventListener(eventName, browserHandler, false); - } - else if (element.attachEvent) { - browserHandler = function() { - var e = {}; - try {e = Sys.UI.DomElement._getWindow(element).event} catch(ex) {} - return handler.call(element, new Sys.UI.DomEvent(e)); - } - element.attachEvent('on' + eventName, browserHandler); - } - eventCache[eventCache.length] = {handler: handler, browserHandler: browserHandler, autoRemove: autoRemove }; - if (autoRemove) { - var d = element.dispose; - if (d !== Sys.UI.DomEvent._disposeHandlers) { - element.dispose = Sys.UI.DomEvent._disposeHandlers; - if (typeof(d) !== "undefined") { - element._chainDispose = d; - } - } - } -} -var $addHandlers = Sys.UI.DomEvent.addHandlers = function Sys$UI$DomEvent$addHandlers(element, events, handlerOwner, autoRemove) { - /// - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "element"}, - {name: "events", type: Object}, - {name: "handlerOwner", optional: true}, - {name: "autoRemove", type: Boolean, optional: true} - ]); - if (e) throw e; - Sys.UI.DomEvent._ensureDomNode(element); - for (var name in events) { - var handler = events[name]; - if (typeof(handler) !== 'function') throw Error.invalidOperation(Sys.Res.cantAddNonFunctionhandler); - if (handlerOwner) { - handler = Function.createDelegate(handlerOwner, handler); - } - $addHandler(element, name, handler, autoRemove || false); - } -} -var $clearHandlers = Sys.UI.DomEvent.clearHandlers = function Sys$UI$DomEvent$clearHandlers(element) { - /// - /// - var e = Function._validateParams(arguments, [ - {name: "element"} - ]); - if (e) throw e; - Sys.UI.DomEvent._ensureDomNode(element); - Sys.UI.DomEvent._clearHandlers(element, false); -} -Sys.UI.DomEvent._clearHandlers = function Sys$UI$DomEvent$_clearHandlers(element, autoRemoving) { - if (element._events) { - var cache = element._events; - for (var name in cache) { - var handlers = cache[name]; - for (var i = handlers.length - 1; i >= 0; i--) { - var entry = handlers[i]; - if (!autoRemoving || entry.autoRemove) { - $removeHandler(element, name, entry.handler); - } - } - } - element._events = null; - } -} -Sys.UI.DomEvent._disposeHandlers = function Sys$UI$DomEvent$_disposeHandlers() { - Sys.UI.DomEvent._clearHandlers(this, true); - var d = this._chainDispose, type = typeof(d); - if (type !== "undefined") { - this.dispose = d; - this._chainDispose = null; - if (type === "function") { - this.dispose(); - } - } -} -var $removeHandler = Sys.UI.DomEvent.removeHandler = function Sys$UI$DomEvent$removeHandler(element, eventName, handler) { - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "element"}, - {name: "eventName", type: String}, - {name: "handler", type: Function} - ]); - if (e) throw e; - Sys.UI.DomEvent._removeHandler(element, eventName, handler); -} -Sys.UI.DomEvent._removeHandler = function Sys$UI$DomEvent$_removeHandler(element, eventName, handler) { - Sys.UI.DomEvent._ensureDomNode(element); - var browserHandler = null; - if ((typeof(element._events) !== 'object') || !element._events) throw Error.invalidOperation(Sys.Res.eventHandlerInvalid); - var cache = element._events[eventName]; - if (!(cache instanceof Array)) throw Error.invalidOperation(Sys.Res.eventHandlerInvalid); - for (var i = 0, l = cache.length; i < l; i++) { - if (cache[i].handler === handler) { - browserHandler = cache[i].browserHandler; - break; - } - } - if (typeof(browserHandler) !== 'function') throw Error.invalidOperation(Sys.Res.eventHandlerInvalid); - if (element.removeEventListener) { - element.removeEventListener(eventName, browserHandler, false); - } - else if (element.detachEvent) { - element.detachEvent('on' + eventName, browserHandler); - } - cache.splice(i, 1); -} -Sys.UI.DomEvent._ensureDomNode = function Sys$UI$DomEvent$_ensureDomNode(element) { - if (element.tagName && (element.tagName.toUpperCase() === "SCRIPT")) return; - - var doc = element.ownerDocument || element.document || element; - if ((typeof(element.document) !== 'object') && (element != doc) && (typeof(element.nodeType) !== 'number')) { - throw Error.argument("element", Sys.Res.argumentDomNode); - } -} - -Sys.UI.DomElement = function Sys$UI$DomElement() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - throw Error.notImplemented(); -} -Sys.UI.DomElement.registerClass('Sys.UI.DomElement'); -Sys.UI.DomElement.addCssClass = function Sys$UI$DomElement$addCssClass(element, className) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "element", domElement: true}, - {name: "className", type: String} - ]); - if (e) throw e; - if (!Sys.UI.DomElement.containsCssClass(element, className)) { - if (element.className === '') { - element.className = className; - } - else { - element.className += ' ' + className; - } - } -} -Sys.UI.DomElement.containsCssClass = function Sys$UI$DomElement$containsCssClass(element, className) { - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "element", domElement: true}, - {name: "className", type: String} - ]); - if (e) throw e; - return Array.contains(element.className.split(' '), className); -} -Sys.UI.DomElement.getBounds = function Sys$UI$DomElement$getBounds(element) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "element", domElement: true} - ]); - if (e) throw e; - var offset = Sys.UI.DomElement.getLocation(element); - return new Sys.UI.Bounds(offset.x, offset.y, element.offsetWidth || 0, element.offsetHeight || 0); -} -var $get = Sys.UI.DomElement.getElementById = function Sys$UI$DomElement$getElementById(id, element) { - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "id", type: String}, - {name: "element", mayBeNull: true, domElement: true, optional: true} - ]); - if (e) throw e; - if (!element) return document.getElementById(id); - if (element.getElementById) return element.getElementById(id); - var nodeQueue = []; - var childNodes = element.childNodes; - for (var i = 0; i < childNodes.length; i++) { - var node = childNodes[i]; - if (node.nodeType == 1) { - nodeQueue[nodeQueue.length] = node; - } - } - while (nodeQueue.length) { - node = nodeQueue.shift(); - if (node.id == id) { - return node; - } - childNodes = node.childNodes; - for (i = 0; i < childNodes.length; i++) { - node = childNodes[i]; - if (node.nodeType == 1) { - nodeQueue[nodeQueue.length] = node; - } - } - } - return null; -} -if (document.documentElement.getBoundingClientRect) { - Sys.UI.DomElement.getLocation = function Sys$UI$DomElement$getLocation(element) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "element", domElement: true} - ]); - if (e) throw e; - if (element.self || element.nodeType === 9) return new Sys.UI.Point(0,0); - var clientRect = element.getBoundingClientRect(); - if (!clientRect) { - return new Sys.UI.Point(0,0); - } - var documentElement = element.ownerDocument.documentElement, - offsetX = Math.floor(clientRect.left + 0.5) + documentElement.scrollLeft, - offsetY = Math.floor(clientRect.top + 0.5) + documentElement.scrollTop; - if (Sys.Browser.agent === Sys.Browser.InternetExplorer) { - try { - var f = element.ownerDocument.parentWindow.frameElement || null; - if (f) { - var offset = (f.frameBorder === "0" || f.frameBorder === "no") ? 2 : 0; - offsetX += offset; - offsetY += offset; - } - } - catch(ex) { - } - if (Sys.Browser.version <= 7) { - - var multiplier, before, rect, d = document.createElement("div"); - d.style.cssText = "position:absolute !important;left:0px !important;right:0px !important;height:0px !important;width:1px !important;display:hidden !important"; - try { - before = document.body.childNodes[0]; - document.body.insertBefore(d, before); - rect = d.getBoundingClientRect(); - document.body.removeChild(d); - multiplier = (rect.right - rect.left); - } - catch (e) { - } - if (multiplier && (multiplier !== 1)) { - offsetX = Math.floor(offsetX / multiplier); - offsetY = Math.floor(offsetY / multiplier); - } - } - if ((document.documentMode || 0) < 8) { - offsetX -= 2; - offsetY -= 2; - } - } - return new Sys.UI.Point(offsetX, offsetY); - } -} -else if (Sys.Browser.agent === Sys.Browser.Safari) { - Sys.UI.DomElement.getLocation = function Sys$UI$DomElement$getLocation(element) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "element", domElement: true} - ]); - if (e) throw e; - if ((element.window && (element.window === element)) || element.nodeType === 9) return new Sys.UI.Point(0,0); - var offsetX = 0, offsetY = 0, - parent, - previous = null, - previousStyle = null, - currentStyle; - for (parent = element; parent; previous = parent, previousStyle = currentStyle, parent = parent.offsetParent) { - currentStyle = Sys.UI.DomElement._getCurrentStyle(parent); - var tagName = parent.tagName ? parent.tagName.toUpperCase() : null; - if ((parent.offsetLeft || parent.offsetTop) && - ((tagName !== "BODY") || (!previousStyle || previousStyle.position !== "absolute"))) { - offsetX += parent.offsetLeft; - offsetY += parent.offsetTop; - } - if (previous && Sys.Browser.version >= 3) { - offsetX += parseInt(currentStyle.borderLeftWidth); - offsetY += parseInt(currentStyle.borderTopWidth); - } - } - currentStyle = Sys.UI.DomElement._getCurrentStyle(element); - var elementPosition = currentStyle ? currentStyle.position : null; - if (!elementPosition || (elementPosition !== "absolute")) { - for (parent = element.parentNode; parent; parent = parent.parentNode) { - tagName = parent.tagName ? parent.tagName.toUpperCase() : null; - if ((tagName !== "BODY") && (tagName !== "HTML") && (parent.scrollLeft || parent.scrollTop)) { - offsetX -= (parent.scrollLeft || 0); - offsetY -= (parent.scrollTop || 0); - } - currentStyle = Sys.UI.DomElement._getCurrentStyle(parent); - var parentPosition = currentStyle ? currentStyle.position : null; - if (parentPosition && (parentPosition === "absolute")) break; - } - } - return new Sys.UI.Point(offsetX, offsetY); - } -} -else { - Sys.UI.DomElement.getLocation = function Sys$UI$DomElement$getLocation(element) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "element", domElement: true} - ]); - if (e) throw e; - if ((element.window && (element.window === element)) || element.nodeType === 9) return new Sys.UI.Point(0,0); - var offsetX = 0, offsetY = 0, - parent, - previous = null, - previousStyle = null, - currentStyle = null; - for (parent = element; parent; previous = parent, previousStyle = currentStyle, parent = parent.offsetParent) { - var tagName = parent.tagName ? parent.tagName.toUpperCase() : null; - currentStyle = Sys.UI.DomElement._getCurrentStyle(parent); - if ((parent.offsetLeft || parent.offsetTop) && - !((tagName === "BODY") && - (!previousStyle || previousStyle.position !== "absolute"))) { - offsetX += parent.offsetLeft; - offsetY += parent.offsetTop; - } - if (previous !== null && currentStyle) { - if ((tagName !== "TABLE") && (tagName !== "TD") && (tagName !== "HTML")) { - offsetX += parseInt(currentStyle.borderLeftWidth) || 0; - offsetY += parseInt(currentStyle.borderTopWidth) || 0; - } - if (tagName === "TABLE" && - (currentStyle.position === "relative" || currentStyle.position === "absolute")) { - offsetX += parseInt(currentStyle.marginLeft) || 0; - offsetY += parseInt(currentStyle.marginTop) || 0; - } - } - } - currentStyle = Sys.UI.DomElement._getCurrentStyle(element); - var elementPosition = currentStyle ? currentStyle.position : null; - if (!elementPosition || (elementPosition !== "absolute")) { - for (parent = element.parentNode; parent; parent = parent.parentNode) { - tagName = parent.tagName ? parent.tagName.toUpperCase() : null; - if ((tagName !== "BODY") && (tagName !== "HTML") && (parent.scrollLeft || parent.scrollTop)) { - offsetX -= (parent.scrollLeft || 0); - offsetY -= (parent.scrollTop || 0); - currentStyle = Sys.UI.DomElement._getCurrentStyle(parent); - if (currentStyle) { - offsetX += parseInt(currentStyle.borderLeftWidth) || 0; - offsetY += parseInt(currentStyle.borderTopWidth) || 0; - } - } - } - } - return new Sys.UI.Point(offsetX, offsetY); - } -} -Sys.UI.DomElement.isDomElement = function Sys$UI$DomElement$isDomElement(obj) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "obj"} - ]); - if (e) throw e; - return Sys._isDomElement(obj); -} -Sys.UI.DomElement.removeCssClass = function Sys$UI$DomElement$removeCssClass(element, className) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "element", domElement: true}, - {name: "className", type: String} - ]); - if (e) throw e; - var currentClassName = ' ' + element.className + ' '; - var index = currentClassName.indexOf(' ' + className + ' '); - if (index >= 0) { - element.className = (currentClassName.substr(0, index) + ' ' + - currentClassName.substring(index + className.length + 1, currentClassName.length)).trim(); - } -} -Sys.UI.DomElement.resolveElement = function Sys$UI$DomElement$resolveElement(elementOrElementId, containerElement) { - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "elementOrElementId", mayBeNull: true}, - {name: "containerElement", mayBeNull: true, domElement: true, optional: true} - ]); - if (e) throw e; - var el = elementOrElementId; - if (!el) return null; - if (typeof(el) === "string") { - el = Sys.UI.DomElement.getElementById(el, containerElement); - if (!el) { - throw Error.argument("elementOrElementId", String.format(Sys.Res.elementNotFound, elementOrElementId)); - } - } - else if(!Sys.UI.DomElement.isDomElement(el)) { - throw Error.argument("elementOrElementId", Sys.Res.expectedElementOrId); - } - return el; -} -Sys.UI.DomElement.raiseBubbleEvent = function Sys$UI$DomElement$raiseBubbleEvent(source, args) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "source", domElement: true}, - {name: "args", type: Sys.EventArgs} - ]); - if (e) throw e; - var target = source; - while (target) { - var control = target.control; - if (control && control.onBubbleEvent && control.raiseBubbleEvent) { - Sys.UI.DomElement._raiseBubbleEventFromControl(control, source, args); - return; - } - target = target.parentNode; - } -} -Sys.UI.DomElement._raiseBubbleEventFromControl = function Sys$UI$DomElement$_raiseBubbleEventFromControl(control, source, args) { - if (!control.onBubbleEvent(source, args)) { - control._raiseBubbleEvent(source, args); - } -} -Sys.UI.DomElement.setLocation = function Sys$UI$DomElement$setLocation(element, x, y) { - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "element", domElement: true}, - {name: "x", type: Number, integer: true}, - {name: "y", type: Number, integer: true} - ]); - if (e) throw e; - var style = element.style; - style.position = 'absolute'; - style.left = x + "px"; - style.top = y + "px"; -} -Sys.UI.DomElement.toggleCssClass = function Sys$UI$DomElement$toggleCssClass(element, className) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "element", domElement: true}, - {name: "className", type: String} - ]); - if (e) throw e; - if (Sys.UI.DomElement.containsCssClass(element, className)) { - Sys.UI.DomElement.removeCssClass(element, className); - } - else { - Sys.UI.DomElement.addCssClass(element, className); - } -} -Sys.UI.DomElement.getVisibilityMode = function Sys$UI$DomElement$getVisibilityMode(element) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "element", domElement: true} - ]); - if (e) throw e; - return (element._visibilityMode === Sys.UI.VisibilityMode.hide) ? - Sys.UI.VisibilityMode.hide : - Sys.UI.VisibilityMode.collapse; -} -Sys.UI.DomElement.setVisibilityMode = function Sys$UI$DomElement$setVisibilityMode(element, value) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "element", domElement: true}, - {name: "value", type: Sys.UI.VisibilityMode} - ]); - if (e) throw e; - Sys.UI.DomElement._ensureOldDisplayMode(element); - if (element._visibilityMode !== value) { - element._visibilityMode = value; - if (Sys.UI.DomElement.getVisible(element) === false) { - if (element._visibilityMode === Sys.UI.VisibilityMode.hide) { - element.style.display = element._oldDisplayMode; - } - else { - element.style.display = 'none'; - } - } - element._visibilityMode = value; - } -} -Sys.UI.DomElement.getVisible = function Sys$UI$DomElement$getVisible(element) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "element", domElement: true} - ]); - if (e) throw e; - var style = element.currentStyle || Sys.UI.DomElement._getCurrentStyle(element); - if (!style) return true; - return (style.visibility !== 'hidden') && (style.display !== 'none'); -} -Sys.UI.DomElement.setVisible = function Sys$UI$DomElement$setVisible(element, value) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "element", domElement: true}, - {name: "value", type: Boolean} - ]); - if (e) throw e; - if (value !== Sys.UI.DomElement.getVisible(element)) { - Sys.UI.DomElement._ensureOldDisplayMode(element); - element.style.visibility = value ? 'visible' : 'hidden'; - if (value || (element._visibilityMode === Sys.UI.VisibilityMode.hide)) { - element.style.display = element._oldDisplayMode; - } - else { - element.style.display = 'none'; - } - } -} -Sys.UI.DomElement._ensureOldDisplayMode = function Sys$UI$DomElement$_ensureOldDisplayMode(element) { - if (!element._oldDisplayMode) { - var style = element.currentStyle || Sys.UI.DomElement._getCurrentStyle(element); - element._oldDisplayMode = style ? style.display : null; - if (!element._oldDisplayMode || element._oldDisplayMode === 'none') { - switch(element.tagName.toUpperCase()) { - case 'DIV': case 'P': case 'ADDRESS': case 'BLOCKQUOTE': case 'BODY': case 'COL': - case 'COLGROUP': case 'DD': case 'DL': case 'DT': case 'FIELDSET': case 'FORM': - case 'H1': case 'H2': case 'H3': case 'H4': case 'H5': case 'H6': case 'HR': - case 'IFRAME': case 'LEGEND': case 'OL': case 'PRE': case 'TABLE': case 'TD': - case 'TH': case 'TR': case 'UL': - element._oldDisplayMode = 'block'; - break; - case 'LI': - element._oldDisplayMode = 'list-item'; - break; - default: - element._oldDisplayMode = 'inline'; - } - } - } -} -Sys.UI.DomElement._getWindow = function Sys$UI$DomElement$_getWindow(element) { - var doc = element.ownerDocument || element.document || element; - return doc.defaultView || doc.parentWindow; -} -Sys.UI.DomElement._getCurrentStyle = function Sys$UI$DomElement$_getCurrentStyle(element) { - if (element.nodeType === 3) return null; - var w = Sys.UI.DomElement._getWindow(element); - if (element.documentElement) element = element.documentElement; - var computedStyle = (w && (element !== w) && w.getComputedStyle) ? - w.getComputedStyle(element, null) : - element.currentStyle || element.style; - if (!computedStyle && (Sys.Browser.agent === Sys.Browser.Safari) && element.style) { - var oldDisplay = element.style.display; - var oldPosition = element.style.position; - element.style.position = 'absolute'; - element.style.display = 'block'; - var style = w.getComputedStyle(element, null); - element.style.display = oldDisplay; - element.style.position = oldPosition; - computedStyle = {}; - for (var n in style) { - computedStyle[n] = style[n]; - } - computedStyle.display = 'none'; - } - return computedStyle; -} - -Sys.IContainer = function Sys$IContainer() { - throw Error.notImplemented(); -} - function Sys$IContainer$addComponent(component) { - /// - /// - var e = Function._validateParams(arguments, [ - {name: "component", type: Sys.Component} - ]); - if (e) throw e; - throw Error.notImplemented(); - } - function Sys$IContainer$removeComponent(component) { - /// - /// - var e = Function._validateParams(arguments, [ - {name: "component", type: Sys.Component} - ]); - if (e) throw e; - throw Error.notImplemented(); - } - function Sys$IContainer$findComponent(id) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "id", type: String} - ]); - if (e) throw e; - throw Error.notImplemented(); - } - function Sys$IContainer$getComponents() { - /// - /// - if (arguments.length !== 0) throw Error.parameterCount(); - throw Error.notImplemented(); - } -Sys.IContainer.prototype = { - addComponent: Sys$IContainer$addComponent, - removeComponent: Sys$IContainer$removeComponent, - findComponent: Sys$IContainer$findComponent, - getComponents: Sys$IContainer$getComponents -} -Sys.IContainer.registerInterface("Sys.IContainer"); - -Sys.ApplicationLoadEventArgs = function Sys$ApplicationLoadEventArgs(components, isPartialLoad) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "components", type: Array, elementType: Sys.Component}, - {name: "isPartialLoad", type: Boolean} - ]); - if (e) throw e; - Sys.ApplicationLoadEventArgs.initializeBase(this); - this._components = components; - this._isPartialLoad = isPartialLoad; -} - - function Sys$ApplicationLoadEventArgs$get_components() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._components; - } - function Sys$ApplicationLoadEventArgs$get_isPartialLoad() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._isPartialLoad; - } -Sys.ApplicationLoadEventArgs.prototype = { - get_components: Sys$ApplicationLoadEventArgs$get_components, - get_isPartialLoad: Sys$ApplicationLoadEventArgs$get_isPartialLoad -} -Sys.ApplicationLoadEventArgs.registerClass('Sys.ApplicationLoadEventArgs', Sys.EventArgs); - -Sys._Application = function Sys$_Application() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - Sys._Application.initializeBase(this); - this._disposableObjects = []; - this._components = {}; - this._createdComponents = []; - this._secondPassComponents = []; - this._unloadHandlerDelegate = Function.createDelegate(this, this._unloadHandler); - Sys.UI.DomEvent.addHandler(window, "unload", this._unloadHandlerDelegate); - this._domReady(); -} - function Sys$_Application$get_isCreatingComponents() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._creatingComponents; - } - function Sys$_Application$get_isDisposing() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._disposing; - } - function Sys$_Application$add_init(handler) { - /// - var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); - if (e) throw e; - if (this._initialized) { - handler(this, Sys.EventArgs.Empty); - } - else { - this.get_events().addHandler("init", handler); - } - } - function Sys$_Application$remove_init(handler) { - var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); - if (e) throw e; - this.get_events().removeHandler("init", handler); - } - function Sys$_Application$add_load(handler) { - /// - var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); - if (e) throw e; - this.get_events().addHandler("load", handler); - } - function Sys$_Application$remove_load(handler) { - var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); - if (e) throw e; - this.get_events().removeHandler("load", handler); - } - function Sys$_Application$add_unload(handler) { - /// - var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); - if (e) throw e; - this.get_events().addHandler("unload", handler); - } - function Sys$_Application$remove_unload(handler) { - var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); - if (e) throw e; - this.get_events().removeHandler("unload", handler); - } - function Sys$_Application$addComponent(component) { - /// - /// - var e = Function._validateParams(arguments, [ - {name: "component", type: Sys.Component} - ]); - if (e) throw e; - var id = component.get_id(); - if (!id) throw Error.invalidOperation(Sys.Res.cantAddWithoutId); - if (typeof(this._components[id]) !== 'undefined') throw Error.invalidOperation(String.format(Sys.Res.appDuplicateComponent, id)); - this._components[id] = component; - } - function Sys$_Application$beginCreateComponents() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - this._creatingComponents = true; - } - function Sys$_Application$dispose() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - if (!this._disposing) { - this._disposing = true; - if (this._timerCookie) { - window.clearTimeout(this._timerCookie); - delete this._timerCookie; - } - if (this._endRequestHandler) { - Sys.WebForms.PageRequestManager.getInstance().remove_endRequest(this._endRequestHandler); - delete this._endRequestHandler; - } - if (this._beginRequestHandler) { - Sys.WebForms.PageRequestManager.getInstance().remove_beginRequest(this._beginRequestHandler); - delete this._beginRequestHandler; - } - if (window.pageUnload) { - window.pageUnload(this, Sys.EventArgs.Empty); - } - var unloadHandler = this.get_events().getHandler("unload"); - if (unloadHandler) { - unloadHandler(this, Sys.EventArgs.Empty); - } - var disposableObjects = Array.clone(this._disposableObjects); - for (var i = 0, l = disposableObjects.length; i < l; i++) { - var object = disposableObjects[i]; - if (typeof(object) !== "undefined") { - object.dispose(); - } - } - Array.clear(this._disposableObjects); - Sys.UI.DomEvent.removeHandler(window, "unload", this._unloadHandlerDelegate); - if (Sys._ScriptLoader) { - var sl = Sys._ScriptLoader.getInstance(); - if(sl) { - sl.dispose(); - } - } - Sys._Application.callBaseMethod(this, 'dispose'); - } - } - function Sys$_Application$disposeElement(element, childNodesOnly) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "element"}, - {name: "childNodesOnly", type: Boolean} - ]); - if (e) throw e; - if (element.nodeType === 1) { - var children = element.getElementsByTagName("*"); - for (var i = children.length - 1; i >= 0; i--) { - this._disposeElementInternal(children[i]); - } - if (!childNodesOnly) { - this._disposeElementInternal(element); - } - } - } - function Sys$_Application$endCreateComponents() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - var components = this._secondPassComponents; - for (var i = 0, l = components.length; i < l; i++) { - var component = components[i].component; - Sys$Component$_setReferences(component, components[i].references); - component.endUpdate(); - } - this._secondPassComponents = []; - this._creatingComponents = false; - } - function Sys$_Application$findComponent(id, parent) { - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "id", type: String}, - {name: "parent", mayBeNull: true, optional: true} - ]); - if (e) throw e; - return (parent ? - ((Sys.IContainer.isInstanceOfType(parent)) ? - parent.findComponent(id) : - parent[id] || null) : - Sys.Application._components[id] || null); - } - function Sys$_Application$getComponents() { - /// - /// - if (arguments.length !== 0) throw Error.parameterCount(); - var res = []; - var components = this._components; - for (var name in components) { - res[res.length] = components[name]; - } - return res; - } - function Sys$_Application$initialize() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - if(!this.get_isInitialized() && !this._disposing) { - Sys._Application.callBaseMethod(this, 'initialize'); - this._raiseInit(); - if (this.get_stateString) { - if (Sys.WebForms && Sys.WebForms.PageRequestManager) { - this._beginRequestHandler = Function.createDelegate(this, this._onPageRequestManagerBeginRequest); - Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(this._beginRequestHandler); - this._endRequestHandler = Function.createDelegate(this, this._onPageRequestManagerEndRequest); - Sys.WebForms.PageRequestManager.getInstance().add_endRequest(this._endRequestHandler); - } - var loadedEntry = this.get_stateString(); - if (loadedEntry !== this._currentEntry) { - this._navigate(loadedEntry); - } - else { - this._ensureHistory(); - } - } - this.raiseLoad(); - } - } - function Sys$_Application$notifyScriptLoaded() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - } - function Sys$_Application$registerDisposableObject(object) { - /// - /// - var e = Function._validateParams(arguments, [ - {name: "object", type: Sys.IDisposable} - ]); - if (e) throw e; - if (!this._disposing) { - var objects = this._disposableObjects, - i = objects.length; - objects[i] = object; - object.__msdisposeindex = i; - } - } - function Sys$_Application$raiseLoad() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - var h = this.get_events().getHandler("load"); - var args = new Sys.ApplicationLoadEventArgs(Array.clone(this._createdComponents), !!this._loaded); - this._loaded = true; - if (h) { - h(this, args); - } - if (window.pageLoad) { - window.pageLoad(this, args); - } - this._createdComponents = []; - } - function Sys$_Application$removeComponent(component) { - /// - /// - var e = Function._validateParams(arguments, [ - {name: "component", type: Sys.Component} - ]); - if (e) throw e; - var id = component.get_id(); - if (id) delete this._components[id]; - } - function Sys$_Application$unregisterDisposableObject(object) { - /// - /// - var e = Function._validateParams(arguments, [ - {name: "object", type: Sys.IDisposable} - ]); - if (e) throw e; - if (!this._disposing) { - var i = object.__msdisposeindex; - if (typeof(i) === "number") { - var disposableObjects = this._disposableObjects; - delete disposableObjects[i]; - delete object.__msdisposeindex; - if (++this._deleteCount > 1000) { - var newArray = []; - for (var j = 0, l = disposableObjects.length; j < l; j++) { - object = disposableObjects[j]; - if (typeof(object) !== "undefined") { - object.__msdisposeindex = newArray.length; - newArray.push(object); - } - } - this._disposableObjects = newArray; - this._deleteCount = 0; - } - } - } - } - function Sys$_Application$_addComponentToSecondPass(component, references) { - this._secondPassComponents[this._secondPassComponents.length] = {component: component, references: references}; - } - function Sys$_Application$_disposeComponents(list) { - if (list) { - for (var i = list.length - 1; i >= 0; i--) { - var item = list[i]; - if (typeof(item.dispose) === "function") { - item.dispose(); - } - } - } - } - function Sys$_Application$_disposeElementInternal(element) { - var d = element.dispose; - if (d && typeof(d) === "function") { - element.dispose(); - } - else { - var c = element.control; - if (c && typeof(c.dispose) === "function") { - c.dispose(); - } - } - var list = element._behaviors; - if (list) { - this._disposeComponents(list); - } - list = element._components; - if (list) { - this._disposeComponents(list); - element._components = null; - } - } - function Sys$_Application$_domReady() { - var check, er, app = this; - function init() { app.initialize(); } - var onload = function() { - Sys.UI.DomEvent.removeHandler(window, "load", onload); - init(); - } - Sys.UI.DomEvent.addHandler(window, "load", onload); - - if (document.addEventListener) { - try { - document.addEventListener("DOMContentLoaded", check = function() { - document.removeEventListener("DOMContentLoaded", check, false); - init(); - }, false); - } - catch (er) { } - } - else if (document.attachEvent) { - if ((window == window.top) && document.documentElement.doScroll) { - var timeout, el = document.createElement("div"); - check = function() { - try { - el.doScroll("left"); - } - catch (er) { - timeout = window.setTimeout(check, 0); - return; - } - el = null; - init(); - } - check(); - } - else { - document.attachEvent("onreadystatechange", check = function() { - if (document.readyState === "complete") { - document.detachEvent("onreadystatechange", check); - init(); - } - }); - } - } - } - function Sys$_Application$_raiseInit() { - var handler = this.get_events().getHandler("init"); - if (handler) { - this.beginCreateComponents(); - handler(this, Sys.EventArgs.Empty); - this.endCreateComponents(); - } - } - function Sys$_Application$_unloadHandler(event) { - this.dispose(); - } -Sys._Application.prototype = { - _creatingComponents: false, - _disposing: false, - _deleteCount: 0, - get_isCreatingComponents: Sys$_Application$get_isCreatingComponents, - get_isDisposing: Sys$_Application$get_isDisposing, - add_init: Sys$_Application$add_init, - remove_init: Sys$_Application$remove_init, - add_load: Sys$_Application$add_load, - remove_load: Sys$_Application$remove_load, - add_unload: Sys$_Application$add_unload, - remove_unload: Sys$_Application$remove_unload, - addComponent: Sys$_Application$addComponent, - beginCreateComponents: Sys$_Application$beginCreateComponents, - dispose: Sys$_Application$dispose, - disposeElement: Sys$_Application$disposeElement, - endCreateComponents: Sys$_Application$endCreateComponents, - findComponent: Sys$_Application$findComponent, - getComponents: Sys$_Application$getComponents, - initialize: Sys$_Application$initialize, - notifyScriptLoaded: Sys$_Application$notifyScriptLoaded, - registerDisposableObject: Sys$_Application$registerDisposableObject, - raiseLoad: Sys$_Application$raiseLoad, - removeComponent: Sys$_Application$removeComponent, - unregisterDisposableObject: Sys$_Application$unregisterDisposableObject, - _addComponentToSecondPass: Sys$_Application$_addComponentToSecondPass, - _disposeComponents: Sys$_Application$_disposeComponents, - _disposeElementInternal: Sys$_Application$_disposeElementInternal, - _domReady: Sys$_Application$_domReady, - _raiseInit: Sys$_Application$_raiseInit, - _unloadHandler: Sys$_Application$_unloadHandler -} -Sys._Application.registerClass('Sys._Application', Sys.Component, Sys.IContainer); -Sys.Application = new Sys._Application(); -var $find = Sys.Application.findComponent; - -Sys.UI.Behavior = function Sys$UI$Behavior(element) { - /// - /// - var e = Function._validateParams(arguments, [ - {name: "element", domElement: true} - ]); - if (e) throw e; - Sys.UI.Behavior.initializeBase(this); - this._element = element; - var behaviors = element._behaviors; - if (!behaviors) { - element._behaviors = [this]; - } - else { - behaviors[behaviors.length] = this; - } -} - function Sys$UI$Behavior$get_element() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._element; - } - function Sys$UI$Behavior$get_id() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - var baseId = Sys.UI.Behavior.callBaseMethod(this, 'get_id'); - if (baseId) return baseId; - if (!this._element || !this._element.id) return ''; - return this._element.id + '$' + this.get_name(); - } - function Sys$UI$Behavior$get_name() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - if (this._name) return this._name; - var name = Object.getTypeName(this); - var i = name.lastIndexOf('.'); - if (i !== -1) name = name.substr(i + 1); - if (!this.get_isInitialized()) this._name = name; - return name; - } - function Sys$UI$Behavior$set_name(value) { - var e = Function._validateParams(arguments, [{name: "value", type: String}]); - if (e) throw e; - if ((value === '') || (value.charAt(0) === ' ') || (value.charAt(value.length - 1) === ' ')) - throw Error.argument('value', Sys.Res.invalidId); - if (typeof(this._element[value]) !== 'undefined') - throw Error.invalidOperation(String.format(Sys.Res.behaviorDuplicateName, value)); - if (this.get_isInitialized()) throw Error.invalidOperation(Sys.Res.cantSetNameAfterInit); - this._name = value; - } - function Sys$UI$Behavior$initialize() { - Sys.UI.Behavior.callBaseMethod(this, 'initialize'); - var name = this.get_name(); - if (name) this._element[name] = this; - } - function Sys$UI$Behavior$dispose() { - Sys.UI.Behavior.callBaseMethod(this, 'dispose'); - var e = this._element; - if (e) { - var name = this.get_name(); - if (name) { - e[name] = null; - } - var behaviors = e._behaviors; - Array.remove(behaviors, this); - if (behaviors.length === 0) { - e._behaviors = null; - } - delete this._element; - } - } -Sys.UI.Behavior.prototype = { - _name: null, - get_element: Sys$UI$Behavior$get_element, - get_id: Sys$UI$Behavior$get_id, - get_name: Sys$UI$Behavior$get_name, - set_name: Sys$UI$Behavior$set_name, - initialize: Sys$UI$Behavior$initialize, - dispose: Sys$UI$Behavior$dispose -} -Sys.UI.Behavior.registerClass('Sys.UI.Behavior', Sys.Component); -Sys.UI.Behavior.getBehaviorByName = function Sys$UI$Behavior$getBehaviorByName(element, name) { - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "element", domElement: true}, - {name: "name", type: String} - ]); - if (e) throw e; - var b = element[name]; - return (b && Sys.UI.Behavior.isInstanceOfType(b)) ? b : null; -} -Sys.UI.Behavior.getBehaviors = function Sys$UI$Behavior$getBehaviors(element) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "element", domElement: true} - ]); - if (e) throw e; - if (!element._behaviors) return []; - return Array.clone(element._behaviors); -} -Sys.UI.Behavior.getBehaviorsByType = function Sys$UI$Behavior$getBehaviorsByType(element, type) { - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "element", domElement: true}, - {name: "type", type: Type} - ]); - if (e) throw e; - var behaviors = element._behaviors; - var results = []; - if (behaviors) { - for (var i = 0, l = behaviors.length; i < l; i++) { - if (type.isInstanceOfType(behaviors[i])) { - results[results.length] = behaviors[i]; - } - } - } - return results; -} - -Sys.UI.VisibilityMode = function Sys$UI$VisibilityMode() { - /// - /// - /// - if (arguments.length !== 0) throw Error.parameterCount(); - throw Error.notImplemented(); -} -Sys.UI.VisibilityMode.prototype = { - hide: 0, - collapse: 1 -} -Sys.UI.VisibilityMode.registerEnum("Sys.UI.VisibilityMode"); - -Sys.UI.Control = function Sys$UI$Control(element) { - /// - /// - var e = Function._validateParams(arguments, [ - {name: "element", domElement: true} - ]); - if (e) throw e; - if (typeof(element.control) !== 'undefined') throw Error.invalidOperation(Sys.Res.controlAlreadyDefined); - Sys.UI.Control.initializeBase(this); - this._element = element; - element.control = this; - var role = this.get_role(); - if (role) { - element.setAttribute("role", role); - } -} - function Sys$UI$Control$get_element() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._element; - } - function Sys$UI$Control$get_id() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - if (!this._element) return ''; - return this._element.id; - } - function Sys$UI$Control$set_id(value) { - var e = Function._validateParams(arguments, [{name: "value", type: String}]); - if (e) throw e; - throw Error.invalidOperation(Sys.Res.cantSetId); - } - function Sys$UI$Control$get_parent() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - if (this._parent) return this._parent; - if (!this._element) return null; - - var parentElement = this._element.parentNode; - while (parentElement) { - if (parentElement.control) { - return parentElement.control; - } - parentElement = parentElement.parentNode; - } - return null; - } - function Sys$UI$Control$set_parent(value) { - var e = Function._validateParams(arguments, [{name: "value", type: Sys.UI.Control}]); - if (e) throw e; - if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose); - var parents = [this]; - var current = value; - while (current) { - if (Array.contains(parents, current)) throw Error.invalidOperation(Sys.Res.circularParentChain); - parents[parents.length] = current; - current = current.get_parent(); - } - this._parent = value; - } - function Sys$UI$Control$get_role() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return null; - } - function Sys$UI$Control$get_visibilityMode() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose); - return Sys.UI.DomElement.getVisibilityMode(this._element); - } - function Sys$UI$Control$set_visibilityMode(value) { - var e = Function._validateParams(arguments, [{name: "value", type: Sys.UI.VisibilityMode}]); - if (e) throw e; - if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose); - Sys.UI.DomElement.setVisibilityMode(this._element, value); - } - function Sys$UI$Control$get_visible() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose); - return Sys.UI.DomElement.getVisible(this._element); - } - function Sys$UI$Control$set_visible(value) { - var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]); - if (e) throw e; - if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose); - Sys.UI.DomElement.setVisible(this._element, value) - } - function Sys$UI$Control$addCssClass(className) { - /// - /// - var e = Function._validateParams(arguments, [ - {name: "className", type: String} - ]); - if (e) throw e; - if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose); - Sys.UI.DomElement.addCssClass(this._element, className); - } - function Sys$UI$Control$dispose() { - Sys.UI.Control.callBaseMethod(this, 'dispose'); - if (this._element) { - this._element.control = null; - delete this._element; - } - if (this._parent) delete this._parent; - } - function Sys$UI$Control$onBubbleEvent(source, args) { - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "source"}, - {name: "args", type: Sys.EventArgs} - ]); - if (e) throw e; - return false; - } - function Sys$UI$Control$raiseBubbleEvent(source, args) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "source"}, - {name: "args", type: Sys.EventArgs} - ]); - if (e) throw e; - this._raiseBubbleEvent(source, args); - } - function Sys$UI$Control$_raiseBubbleEvent(source, args) { - var currentTarget = this.get_parent(); - while (currentTarget) { - if (currentTarget.onBubbleEvent(source, args)) { - return; - } - currentTarget = currentTarget.get_parent(); - } - } - function Sys$UI$Control$removeCssClass(className) { - /// - /// - var e = Function._validateParams(arguments, [ - {name: "className", type: String} - ]); - if (e) throw e; - if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose); - Sys.UI.DomElement.removeCssClass(this._element, className); - } - function Sys$UI$Control$toggleCssClass(className) { - /// - /// - var e = Function._validateParams(arguments, [ - {name: "className", type: String} - ]); - if (e) throw e; - if (!this._element) throw Error.invalidOperation(Sys.Res.cantBeCalledAfterDispose); - Sys.UI.DomElement.toggleCssClass(this._element, className); - } -Sys.UI.Control.prototype = { - _parent: null, - _visibilityMode: Sys.UI.VisibilityMode.hide, - get_element: Sys$UI$Control$get_element, - get_id: Sys$UI$Control$get_id, - set_id: Sys$UI$Control$set_id, - get_parent: Sys$UI$Control$get_parent, - set_parent: Sys$UI$Control$set_parent, - get_role: Sys$UI$Control$get_role, - get_visibilityMode: Sys$UI$Control$get_visibilityMode, - set_visibilityMode: Sys$UI$Control$set_visibilityMode, - get_visible: Sys$UI$Control$get_visible, - set_visible: Sys$UI$Control$set_visible, - addCssClass: Sys$UI$Control$addCssClass, - dispose: Sys$UI$Control$dispose, - onBubbleEvent: Sys$UI$Control$onBubbleEvent, - raiseBubbleEvent: Sys$UI$Control$raiseBubbleEvent, - _raiseBubbleEvent: Sys$UI$Control$_raiseBubbleEvent, - removeCssClass: Sys$UI$Control$removeCssClass, - toggleCssClass: Sys$UI$Control$toggleCssClass -} -Sys.UI.Control.registerClass('Sys.UI.Control', Sys.Component); -Sys.HistoryEventArgs = function Sys$HistoryEventArgs(state) { - /// - /// - var e = Function._validateParams(arguments, [ - {name: "state", type: Object} - ]); - if (e) throw e; - Sys.HistoryEventArgs.initializeBase(this); - this._state = state; -} - function Sys$HistoryEventArgs$get_state() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._state; - } -Sys.HistoryEventArgs.prototype = { - get_state: Sys$HistoryEventArgs$get_state -} -Sys.HistoryEventArgs.registerClass('Sys.HistoryEventArgs', Sys.EventArgs); -Sys.Application._appLoadHandler = null; -Sys.Application._beginRequestHandler = null; -Sys.Application._clientId = null; -Sys.Application._currentEntry = ''; -Sys.Application._endRequestHandler = null; -Sys.Application._history = null; -Sys.Application._enableHistory = false; -Sys.Application._historyEnabledInScriptManager = false; -Sys.Application._historyFrame = null; -Sys.Application._historyInitialized = false; -Sys.Application._historyPointIsNew = false; -Sys.Application._ignoreTimer = false; -Sys.Application._initialState = null; -Sys.Application._state = {}; -Sys.Application._timerCookie = 0; -Sys.Application._timerHandler = null; -Sys.Application._uniqueId = null; -Sys._Application.prototype.get_stateString = function Sys$_Application$get_stateString() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - var hash = null; - - if (Sys.Browser.agent === Sys.Browser.Firefox) { - var href = window.location.href; - var hashIndex = href.indexOf('#'); - if (hashIndex !== -1) { - hash = href.substring(hashIndex + 1); - } - else { - hash = ""; - } - return hash; - } - else { - hash = window.location.hash; - } - - if ((hash.length > 0) && (hash.charAt(0) === '#')) { - hash = hash.substring(1); - } - return hash; -}; -Sys._Application.prototype.get_enableHistory = function Sys$_Application$get_enableHistory() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._enableHistory; -}; -Sys._Application.prototype.set_enableHistory = function Sys$_Application$set_enableHistory(value) { - if (this._initialized && !this._initializing) { - throw Error.invalidOperation(Sys.Res.historyCannotEnableHistory); - } - else if (this._historyEnabledInScriptManager && !value) { - throw Error.invalidOperation(Sys.Res.invalidHistorySettingCombination); - } - this._enableHistory = value; -}; -Sys._Application.prototype.add_navigate = function Sys$_Application$add_navigate(handler) { - /// - /// - var e = Function._validateParams(arguments, [ - {name: "handler", type: Function} - ]); - if (e) throw e; - this.get_events().addHandler("navigate", handler); -}; -Sys._Application.prototype.remove_navigate = function Sys$_Application$remove_navigate(handler) { - /// - /// - var e = Function._validateParams(arguments, [ - {name: "handler", type: Function} - ]); - if (e) throw e; - this.get_events().removeHandler("navigate", handler); -}; -Sys._Application.prototype.addHistoryPoint = function Sys$_Application$addHistoryPoint(state, title) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "state", type: Object}, - {name: "title", type: String, mayBeNull: true, optional: true} - ]); - if (e) throw e; - if (!this._enableHistory) throw Error.invalidOperation(Sys.Res.historyCannotAddHistoryPointWithHistoryDisabled); - for (var n in state) { - var v = state[n]; - var t = typeof(v); - if ((v !== null) && ((t === 'object') || (t === 'function') || (t === 'undefined'))) { - throw Error.argument('state', Sys.Res.stateMustBeStringDictionary); - } - } - this._ensureHistory(); - var initialState = this._state; - for (var key in state) { - var value = state[key]; - if (value === null) { - if (typeof(initialState[key]) !== 'undefined') { - delete initialState[key]; - } - } - else { - initialState[key] = value; - } - } - var entry = this._serializeState(initialState); - this._historyPointIsNew = true; - this._setState(entry, title); - this._raiseNavigate(); -}; -Sys._Application.prototype.setServerId = function Sys$_Application$setServerId(clientId, uniqueId) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "clientId", type: String}, - {name: "uniqueId", type: String} - ]); - if (e) throw e; - this._clientId = clientId; - this._uniqueId = uniqueId; -}; -Sys._Application.prototype.setServerState = function Sys$_Application$setServerState(value) { - /// - /// - var e = Function._validateParams(arguments, [ - {name: "value", type: String} - ]); - if (e) throw e; - this._ensureHistory(); - this._state.__s = value; - this._updateHiddenField(value); -}; -Sys._Application.prototype._deserializeState = function Sys$_Application$_deserializeState(entry) { - var result = {}; - entry = entry || ''; - var serverSeparator = entry.indexOf('&&'); - if ((serverSeparator !== -1) && (serverSeparator + 2 < entry.length)) { - result.__s = entry.substr(serverSeparator + 2); - entry = entry.substr(0, serverSeparator); - } - var tokens = entry.split('&'); - for (var i = 0, l = tokens.length; i < l; i++) { - var token = tokens[i]; - var equal = token.indexOf('='); - if ((equal !== -1) && (equal + 1 < token.length)) { - var name = token.substr(0, equal); - var value = token.substr(equal + 1); - result[name] = decodeURIComponent(value); - } - } - return result; -}; -Sys._Application.prototype._enableHistoryInScriptManager = function Sys$_Application$_enableHistoryInScriptManager() { - this._enableHistory = true; - this._historyEnabledInScriptManager = true; -}; -Sys._Application.prototype._ensureHistory = function Sys$_Application$_ensureHistory() { - if (!this._historyInitialized && this._enableHistory) { - if ((Sys.Browser.agent === Sys.Browser.InternetExplorer) && (Sys.Browser.documentMode < 8)) { - this._historyFrame = document.getElementById('__historyFrame'); - if (!this._historyFrame) throw Error.invalidOperation(Sys.Res.historyMissingFrame); - this._ignoreIFrame = true; - } - this._timerHandler = Function.createDelegate(this, this._onIdle); - this._timerCookie = window.setTimeout(this._timerHandler, 100); - - try { - this._initialState = this._deserializeState(this.get_stateString()); - } catch(e) {} - - this._historyInitialized = true; - } -}; -Sys._Application.prototype._navigate = function Sys$_Application$_navigate(entry) { - this._ensureHistory(); - var state = this._deserializeState(entry); - - if (this._uniqueId) { - var oldServerEntry = this._state.__s || ''; - var newServerEntry = state.__s || ''; - if (newServerEntry !== oldServerEntry) { - this._updateHiddenField(newServerEntry); - __doPostBack(this._uniqueId, newServerEntry); - this._state = state; - return; - } - } - this._setState(entry); - this._state = state; - this._raiseNavigate(); -}; -Sys._Application.prototype._onIdle = function Sys$_Application$_onIdle() { - delete this._timerCookie; - - var entry = this.get_stateString(); - if (entry !== this._currentEntry) { - if (!this._ignoreTimer) { - this._historyPointIsNew = false; - this._navigate(entry); - } - } - else { - this._ignoreTimer = false; - } - this._timerCookie = window.setTimeout(this._timerHandler, 100); -}; -Sys._Application.prototype._onIFrameLoad = function Sys$_Application$_onIFrameLoad(entry) { - this._ensureHistory(); - if (!this._ignoreIFrame) { - this._historyPointIsNew = false; - this._navigate(entry); - } - this._ignoreIFrame = false; -}; -Sys._Application.prototype._onPageRequestManagerBeginRequest = function Sys$_Application$_onPageRequestManagerBeginRequest(sender, args) { - this._ignoreTimer = true; -}; -Sys._Application.prototype._onPageRequestManagerEndRequest = function Sys$_Application$_onPageRequestManagerEndRequest(sender, args) { - var dataItem = args.get_dataItems()[this._clientId]; - var eventTarget = document.getElementById("__EVENTTARGET"); - if (eventTarget && eventTarget.value === this._uniqueId) { - eventTarget.value = ''; - } - if (typeof(dataItem) !== 'undefined') { - this.setServerState(dataItem); - this._historyPointIsNew = true; - } - else { - this._ignoreTimer = false; - } - var entry = this._serializeState(this._state); - if (entry !== this._currentEntry) { - this._ignoreTimer = true; - this._setState(entry); - this._raiseNavigate(); - } -}; -Sys._Application.prototype._raiseNavigate = function Sys$_Application$_raiseNavigate() { - var h = this.get_events().getHandler("navigate"); - var stateClone = {}; - for (var key in this._state) { - if (key !== '__s') { - stateClone[key] = this._state[key]; - } - } - var args = new Sys.HistoryEventArgs(stateClone); - if (h) { - h(this, args); - } - var err; - try { - if ((Sys.Browser.agent === Sys.Browser.Firefox) && window.location.hash && - (!window.frameElement || window.top.location.hash)) { - window.history.go(0); - } - } - catch(err) { - } -}; -Sys._Application.prototype._serializeState = function Sys$_Application$_serializeState(state) { - var serialized = []; - for (var key in state) { - var value = state[key]; - if (key === '__s') { - var serverState = value; - } - else { - if (key.indexOf('=') !== -1) throw Error.argument('state', Sys.Res.stateFieldNameInvalid); - serialized[serialized.length] = key + '=' + encodeURIComponent(value); - } - } - return serialized.join('&') + (serverState ? '&&' + serverState : ''); -}; -Sys._Application.prototype._setState = function Sys$_Application$_setState(entry, title) { - if (this._enableHistory) { - entry = entry || ''; - if (entry !== this._currentEntry) { - if (window.theForm) { - var action = window.theForm.action; - var hashIndex = action.indexOf('#'); - window.theForm.action = ((hashIndex !== -1) ? action.substring(0, hashIndex) : action) + '#' + entry; - } - - if (this._historyFrame && this._historyPointIsNew) { - this._ignoreIFrame = true; - var frameDoc = this._historyFrame.contentWindow.document; - frameDoc.open("javascript:''"); - frameDoc.write("" + (title || document.title) + - "parent.Sys.Application._onIFrameLoad(" + - Sys.Serialization.JavaScriptSerializer.serialize(entry) + - ");"); - frameDoc.close(); - } - this._ignoreTimer = false; - this._currentEntry = entry; - if (this._historyFrame || this._historyPointIsNew) { - var currentHash = this.get_stateString(); - if (entry !== currentHash) { - var loc = document.location; - if (loc.href.length - loc.hash.length + entry.length > 1024) { - throw Error.invalidOperation(Sys.Res.urlMustBeLessThan1024chars); - } - window.location.hash = entry; - this._currentEntry = this.get_stateString(); - if ((typeof(title) !== 'undefined') && (title !== null)) { - document.title = title; - } - } - } - this._historyPointIsNew = false; - } - } -}; -Sys._Application.prototype._updateHiddenField = function Sys$_Application$_updateHiddenField(value) { - if (this._clientId) { - var serverStateField = document.getElementById(this._clientId); - if (serverStateField) { - serverStateField.value = value; - } - } -}; - -if (!window.XMLHttpRequest) { - window.XMLHttpRequest = function window$XMLHttpRequest() { - var progIDs = [ 'Msxml2.XMLHTTP.3.0', 'Msxml2.XMLHTTP' ]; - for (var i = 0, l = progIDs.length; i < l; i++) { - try { - return new ActiveXObject(progIDs[i]); - } - catch (ex) { - } - } - return null; - } -} -Type.registerNamespace('Sys.Net'); - -Sys.Net.WebRequestExecutor = function Sys$Net$WebRequestExecutor() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - this._webRequest = null; - this._resultObject = null; -} - function Sys$Net$WebRequestExecutor$get_webRequest() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._webRequest; - } - function Sys$Net$WebRequestExecutor$_set_webRequest(value) { - if (this.get_started()) { - throw Error.invalidOperation(String.format(Sys.Res.cannotCallOnceStarted, 'set_webRequest')); - } - this._webRequest = value; - } - function Sys$Net$WebRequestExecutor$get_started() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - throw Error.notImplemented(); - } - function Sys$Net$WebRequestExecutor$get_responseAvailable() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - throw Error.notImplemented(); - } - function Sys$Net$WebRequestExecutor$get_timedOut() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - throw Error.notImplemented(); - } - function Sys$Net$WebRequestExecutor$get_aborted() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - throw Error.notImplemented(); - } - function Sys$Net$WebRequestExecutor$get_responseData() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - throw Error.notImplemented(); - } - function Sys$Net$WebRequestExecutor$get_statusCode() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - throw Error.notImplemented(); - } - function Sys$Net$WebRequestExecutor$get_statusText() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - throw Error.notImplemented(); - } - function Sys$Net$WebRequestExecutor$get_xml() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - throw Error.notImplemented(); - } - function Sys$Net$WebRequestExecutor$get_object() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - if (!this._resultObject) { - this._resultObject = Sys.Serialization.JavaScriptSerializer.deserialize(this.get_responseData()); - } - return this._resultObject; - } - function Sys$Net$WebRequestExecutor$executeRequest() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - throw Error.notImplemented(); - } - function Sys$Net$WebRequestExecutor$abort() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - throw Error.notImplemented(); - } - function Sys$Net$WebRequestExecutor$getResponseHeader(header) { - /// - /// - var e = Function._validateParams(arguments, [ - {name: "header", type: String} - ]); - if (e) throw e; - throw Error.notImplemented(); - } - function Sys$Net$WebRequestExecutor$getAllResponseHeaders() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - throw Error.notImplemented(); - } -Sys.Net.WebRequestExecutor.prototype = { - get_webRequest: Sys$Net$WebRequestExecutor$get_webRequest, - _set_webRequest: Sys$Net$WebRequestExecutor$_set_webRequest, - get_started: Sys$Net$WebRequestExecutor$get_started, - get_responseAvailable: Sys$Net$WebRequestExecutor$get_responseAvailable, - get_timedOut: Sys$Net$WebRequestExecutor$get_timedOut, - get_aborted: Sys$Net$WebRequestExecutor$get_aborted, - get_responseData: Sys$Net$WebRequestExecutor$get_responseData, - get_statusCode: Sys$Net$WebRequestExecutor$get_statusCode, - get_statusText: Sys$Net$WebRequestExecutor$get_statusText, - get_xml: Sys$Net$WebRequestExecutor$get_xml, - get_object: Sys$Net$WebRequestExecutor$get_object, - executeRequest: Sys$Net$WebRequestExecutor$executeRequest, - abort: Sys$Net$WebRequestExecutor$abort, - getResponseHeader: Sys$Net$WebRequestExecutor$getResponseHeader, - getAllResponseHeaders: Sys$Net$WebRequestExecutor$getAllResponseHeaders -} -Sys.Net.WebRequestExecutor.registerClass('Sys.Net.WebRequestExecutor'); - -Sys.Net.XMLDOM = function Sys$Net$XMLDOM(markup) { - /// - /// - var e = Function._validateParams(arguments, [ - {name: "markup", type: String} - ]); - if (e) throw e; - if (!window.DOMParser) { - var progIDs = [ 'Msxml2.DOMDocument.3.0', 'Msxml2.DOMDocument' ]; - for (var i = 0, l = progIDs.length; i < l; i++) { - try { - var xmlDOM = new ActiveXObject(progIDs[i]); - xmlDOM.async = false; - xmlDOM.loadXML(markup); - xmlDOM.setProperty('SelectionLanguage', 'XPath'); - return xmlDOM; - } - catch (ex) { - } - } - } - else { - try { - var domParser = new window.DOMParser(); - return domParser.parseFromString(markup, 'text/xml'); - } - catch (ex) { - } - } - return null; -} -Sys.Net.XMLHttpExecutor = function Sys$Net$XMLHttpExecutor() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - Sys.Net.XMLHttpExecutor.initializeBase(this); - var _this = this; - this._xmlHttpRequest = null; - this._webRequest = null; - this._responseAvailable = false; - this._timedOut = false; - this._timer = null; - this._aborted = false; - this._started = false; - this._onReadyStateChange = (function () { - - if (_this._xmlHttpRequest.readyState === 4 ) { - try { - if (typeof(_this._xmlHttpRequest.status) === "undefined") { - return; - } - } - catch(ex) { - return; - } - - _this._clearTimer(); - _this._responseAvailable = true; - _this._webRequest.completed(Sys.EventArgs.Empty); - if (_this._xmlHttpRequest != null) { - _this._xmlHttpRequest.onreadystatechange = Function.emptyMethod; - _this._xmlHttpRequest = null; - } - } - }); - this._clearTimer = (function() { - if (_this._timer != null) { - window.clearTimeout(_this._timer); - _this._timer = null; - } - }); - this._onTimeout = (function() { - if (!_this._responseAvailable) { - _this._clearTimer(); - _this._timedOut = true; - _this._xmlHttpRequest.onreadystatechange = Function.emptyMethod; - _this._xmlHttpRequest.abort(); - _this._webRequest.completed(Sys.EventArgs.Empty); - _this._xmlHttpRequest = null; - } - }); -} - function Sys$Net$XMLHttpExecutor$get_timedOut() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._timedOut; - } - function Sys$Net$XMLHttpExecutor$get_started() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._started; - } - function Sys$Net$XMLHttpExecutor$get_responseAvailable() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._responseAvailable; - } - function Sys$Net$XMLHttpExecutor$get_aborted() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._aborted; - } - function Sys$Net$XMLHttpExecutor$executeRequest() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - this._webRequest = this.get_webRequest(); - if (this._started) { - throw Error.invalidOperation(String.format(Sys.Res.cannotCallOnceStarted, 'executeRequest')); - } - if (this._webRequest === null) { - throw Error.invalidOperation(Sys.Res.nullWebRequest); - } - var body = this._webRequest.get_body(); - var headers = this._webRequest.get_headers(); - this._xmlHttpRequest = new XMLHttpRequest(); - this._xmlHttpRequest.onreadystatechange = this._onReadyStateChange; - var verb = this._webRequest.get_httpVerb(); - this._xmlHttpRequest.open(verb, this._webRequest.getResolvedUrl(), true ); - this._xmlHttpRequest.setRequestHeader("X-Requested-With", "XMLHttpRequest"); - if (headers) { - for (var header in headers) { - var val = headers[header]; - if (typeof(val) !== "function") - this._xmlHttpRequest.setRequestHeader(header, val); - } - } - if (verb.toLowerCase() === "post") { - if ((headers === null) || !headers['Content-Type']) { - this._xmlHttpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8'); - } - if (!body) { - body = ""; - } - } - var timeout = this._webRequest.get_timeout(); - if (timeout > 0) { - this._timer = window.setTimeout(Function.createDelegate(this, this._onTimeout), timeout); - } - this._xmlHttpRequest.send(body); - this._started = true; - } - function Sys$Net$XMLHttpExecutor$getResponseHeader(header) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "header", type: String} - ]); - if (e) throw e; - if (!this._responseAvailable) { - throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'getResponseHeader')); - } - if (!this._xmlHttpRequest) { - throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'getResponseHeader')); - } - var result; - try { - result = this._xmlHttpRequest.getResponseHeader(header); - } catch (e) { - } - if (!result) result = ""; - return result; - } - function Sys$Net$XMLHttpExecutor$getAllResponseHeaders() { - /// - /// - if (arguments.length !== 0) throw Error.parameterCount(); - if (!this._responseAvailable) { - throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'getAllResponseHeaders')); - } - if (!this._xmlHttpRequest) { - throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'getAllResponseHeaders')); - } - return this._xmlHttpRequest.getAllResponseHeaders(); - } - function Sys$Net$XMLHttpExecutor$get_responseData() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - if (!this._responseAvailable) { - throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'get_responseData')); - } - if (!this._xmlHttpRequest) { - throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'get_responseData')); - } - return this._xmlHttpRequest.responseText; - } - function Sys$Net$XMLHttpExecutor$get_statusCode() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - if (!this._responseAvailable) { - throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'get_statusCode')); - } - if (!this._xmlHttpRequest) { - throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'get_statusCode')); - } - var result = 0; - try { - result = this._xmlHttpRequest.status; - } - catch(ex) { - } - return result; - } - function Sys$Net$XMLHttpExecutor$get_statusText() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - if (!this._responseAvailable) { - throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'get_statusText')); - } - if (!this._xmlHttpRequest) { - throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'get_statusText')); - } - return this._xmlHttpRequest.statusText; - } - function Sys$Net$XMLHttpExecutor$get_xml() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - if (!this._responseAvailable) { - throw Error.invalidOperation(String.format(Sys.Res.cannotCallBeforeResponse, 'get_xml')); - } - if (!this._xmlHttpRequest) { - throw Error.invalidOperation(String.format(Sys.Res.cannotCallOutsideHandler, 'get_xml')); - } - var xml = this._xmlHttpRequest.responseXML; - if (!xml || !xml.documentElement) { - xml = Sys.Net.XMLDOM(this._xmlHttpRequest.responseText); - if (!xml || !xml.documentElement) - return null; - } - else if (navigator.userAgent.indexOf('MSIE') !== -1) { - xml.setProperty('SelectionLanguage', 'XPath'); - } - if (xml.documentElement.namespaceURI === "http://www.mozilla.org/newlayout/xml/parsererror.xml" && - xml.documentElement.tagName === "parsererror") { - return null; - } - - if (xml.documentElement.firstChild && xml.documentElement.firstChild.tagName === "parsererror") { - return null; - } - - return xml; - } - function Sys$Net$XMLHttpExecutor$abort() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - if (!this._started) { - throw Error.invalidOperation(Sys.Res.cannotAbortBeforeStart); - } - if (this._aborted || this._responseAvailable || this._timedOut) - return; - this._aborted = true; - this._clearTimer(); - if (this._xmlHttpRequest && !this._responseAvailable) { - this._xmlHttpRequest.onreadystatechange = Function.emptyMethod; - this._xmlHttpRequest.abort(); - - this._xmlHttpRequest = null; - this._webRequest.completed(Sys.EventArgs.Empty); - } - } -Sys.Net.XMLHttpExecutor.prototype = { - get_timedOut: Sys$Net$XMLHttpExecutor$get_timedOut, - get_started: Sys$Net$XMLHttpExecutor$get_started, - get_responseAvailable: Sys$Net$XMLHttpExecutor$get_responseAvailable, - get_aborted: Sys$Net$XMLHttpExecutor$get_aborted, - executeRequest: Sys$Net$XMLHttpExecutor$executeRequest, - getResponseHeader: Sys$Net$XMLHttpExecutor$getResponseHeader, - getAllResponseHeaders: Sys$Net$XMLHttpExecutor$getAllResponseHeaders, - get_responseData: Sys$Net$XMLHttpExecutor$get_responseData, - get_statusCode: Sys$Net$XMLHttpExecutor$get_statusCode, - get_statusText: Sys$Net$XMLHttpExecutor$get_statusText, - get_xml: Sys$Net$XMLHttpExecutor$get_xml, - abort: Sys$Net$XMLHttpExecutor$abort -} -Sys.Net.XMLHttpExecutor.registerClass('Sys.Net.XMLHttpExecutor', Sys.Net.WebRequestExecutor); - -Sys.Net._WebRequestManager = function Sys$Net$_WebRequestManager() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - this._defaultTimeout = 0; - this._defaultExecutorType = "Sys.Net.XMLHttpExecutor"; -} - function Sys$Net$_WebRequestManager$add_invokingRequest(handler) { - /// - var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); - if (e) throw e; - this._get_eventHandlerList().addHandler("invokingRequest", handler); - } - function Sys$Net$_WebRequestManager$remove_invokingRequest(handler) { - var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); - if (e) throw e; - this._get_eventHandlerList().removeHandler("invokingRequest", handler); - } - function Sys$Net$_WebRequestManager$add_completedRequest(handler) { - /// - var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); - if (e) throw e; - this._get_eventHandlerList().addHandler("completedRequest", handler); - } - function Sys$Net$_WebRequestManager$remove_completedRequest(handler) { - var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); - if (e) throw e; - this._get_eventHandlerList().removeHandler("completedRequest", handler); - } - function Sys$Net$_WebRequestManager$_get_eventHandlerList() { - if (!this._events) { - this._events = new Sys.EventHandlerList(); - } - return this._events; - } - function Sys$Net$_WebRequestManager$get_defaultTimeout() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._defaultTimeout; - } - function Sys$Net$_WebRequestManager$set_defaultTimeout(value) { - var e = Function._validateParams(arguments, [{name: "value", type: Number}]); - if (e) throw e; - if (value < 0) { - throw Error.argumentOutOfRange("value", value, Sys.Res.invalidTimeout); - } - this._defaultTimeout = value; - } - function Sys$Net$_WebRequestManager$get_defaultExecutorType() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._defaultExecutorType; - } - function Sys$Net$_WebRequestManager$set_defaultExecutorType(value) { - var e = Function._validateParams(arguments, [{name: "value", type: String}]); - if (e) throw e; - this._defaultExecutorType = value; - } - function Sys$Net$_WebRequestManager$executeRequest(webRequest) { - /// - /// - var e = Function._validateParams(arguments, [ - {name: "webRequest", type: Sys.Net.WebRequest} - ]); - if (e) throw e; - var executor = webRequest.get_executor(); - if (!executor) { - var failed = false; - try { - var executorType = eval(this._defaultExecutorType); - executor = new executorType(); - } catch (e) { - failed = true; - } - if (failed || !Sys.Net.WebRequestExecutor.isInstanceOfType(executor) || !executor) { - throw Error.argument("defaultExecutorType", String.format(Sys.Res.invalidExecutorType, this._defaultExecutorType)); - } - webRequest.set_executor(executor); - } - if (executor.get_aborted()) { - return; - } - var evArgs = new Sys.Net.NetworkRequestEventArgs(webRequest); - var handler = this._get_eventHandlerList().getHandler("invokingRequest"); - if (handler) { - handler(this, evArgs); - } - if (!evArgs.get_cancel()) { - executor.executeRequest(); - } - } -Sys.Net._WebRequestManager.prototype = { - add_invokingRequest: Sys$Net$_WebRequestManager$add_invokingRequest, - remove_invokingRequest: Sys$Net$_WebRequestManager$remove_invokingRequest, - add_completedRequest: Sys$Net$_WebRequestManager$add_completedRequest, - remove_completedRequest: Sys$Net$_WebRequestManager$remove_completedRequest, - _get_eventHandlerList: Sys$Net$_WebRequestManager$_get_eventHandlerList, - get_defaultTimeout: Sys$Net$_WebRequestManager$get_defaultTimeout, - set_defaultTimeout: Sys$Net$_WebRequestManager$set_defaultTimeout, - get_defaultExecutorType: Sys$Net$_WebRequestManager$get_defaultExecutorType, - set_defaultExecutorType: Sys$Net$_WebRequestManager$set_defaultExecutorType, - executeRequest: Sys$Net$_WebRequestManager$executeRequest -} -Sys.Net._WebRequestManager.registerClass('Sys.Net._WebRequestManager'); -Sys.Net.WebRequestManager = new Sys.Net._WebRequestManager(); - -Sys.Net.NetworkRequestEventArgs = function Sys$Net$NetworkRequestEventArgs(webRequest) { - /// - /// - var e = Function._validateParams(arguments, [ - {name: "webRequest", type: Sys.Net.WebRequest} - ]); - if (e) throw e; - Sys.Net.NetworkRequestEventArgs.initializeBase(this); - this._webRequest = webRequest; -} - function Sys$Net$NetworkRequestEventArgs$get_webRequest() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._webRequest; - } -Sys.Net.NetworkRequestEventArgs.prototype = { - get_webRequest: Sys$Net$NetworkRequestEventArgs$get_webRequest -} -Sys.Net.NetworkRequestEventArgs.registerClass('Sys.Net.NetworkRequestEventArgs', Sys.CancelEventArgs); - -Sys.Net.WebRequest = function Sys$Net$WebRequest() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - this._url = ""; - this._headers = { }; - this._body = null; - this._userContext = null; - this._httpVerb = null; - this._executor = null; - this._invokeCalled = false; - this._timeout = 0; -} - function Sys$Net$WebRequest$add_completed(handler) { - /// - var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); - if (e) throw e; - this._get_eventHandlerList().addHandler("completed", handler); - } - function Sys$Net$WebRequest$remove_completed(handler) { - var e = Function._validateParams(arguments, [{name: "handler", type: Function}]); - if (e) throw e; - this._get_eventHandlerList().removeHandler("completed", handler); - } - function Sys$Net$WebRequest$completed(eventArgs) { - /// - /// - var e = Function._validateParams(arguments, [ - {name: "eventArgs", type: Sys.EventArgs} - ]); - if (e) throw e; - var handler = Sys.Net.WebRequestManager._get_eventHandlerList().getHandler("completedRequest"); - if (handler) { - handler(this._executor, eventArgs); - } - handler = this._get_eventHandlerList().getHandler("completed"); - if (handler) { - handler(this._executor, eventArgs); - } - } - function Sys$Net$WebRequest$_get_eventHandlerList() { - if (!this._events) { - this._events = new Sys.EventHandlerList(); - } - return this._events; - } - function Sys$Net$WebRequest$get_url() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._url; - } - function Sys$Net$WebRequest$set_url(value) { - var e = Function._validateParams(arguments, [{name: "value", type: String}]); - if (e) throw e; - this._url = value; - } - function Sys$Net$WebRequest$get_headers() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._headers; - } - function Sys$Net$WebRequest$get_httpVerb() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - if (this._httpVerb === null) { - if (this._body === null) { - return "GET"; - } - return "POST"; - } - return this._httpVerb; - } - function Sys$Net$WebRequest$set_httpVerb(value) { - var e = Function._validateParams(arguments, [{name: "value", type: String}]); - if (e) throw e; - if (value.length === 0) { - throw Error.argument('value', Sys.Res.invalidHttpVerb); - } - this._httpVerb = value; - } - function Sys$Net$WebRequest$get_body() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._body; - } - function Sys$Net$WebRequest$set_body(value) { - var e = Function._validateParams(arguments, [{name: "value", mayBeNull: true}]); - if (e) throw e; - this._body = value; - } - function Sys$Net$WebRequest$get_userContext() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._userContext; - } - function Sys$Net$WebRequest$set_userContext(value) { - var e = Function._validateParams(arguments, [{name: "value", mayBeNull: true}]); - if (e) throw e; - this._userContext = value; - } - function Sys$Net$WebRequest$get_executor() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._executor; - } - function Sys$Net$WebRequest$set_executor(value) { - var e = Function._validateParams(arguments, [{name: "value", type: Sys.Net.WebRequestExecutor}]); - if (e) throw e; - if (this._executor !== null && this._executor.get_started()) { - throw Error.invalidOperation(Sys.Res.setExecutorAfterActive); - } - this._executor = value; - this._executor._set_webRequest(this); - } - function Sys$Net$WebRequest$get_timeout() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - if (this._timeout === 0) { - return Sys.Net.WebRequestManager.get_defaultTimeout(); - } - return this._timeout; - } - function Sys$Net$WebRequest$set_timeout(value) { - var e = Function._validateParams(arguments, [{name: "value", type: Number}]); - if (e) throw e; - if (value < 0) { - throw Error.argumentOutOfRange("value", value, Sys.Res.invalidTimeout); - } - this._timeout = value; - } - function Sys$Net$WebRequest$getResolvedUrl() { - /// - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return Sys.Net.WebRequest._resolveUrl(this._url); - } - function Sys$Net$WebRequest$invoke() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - if (this._invokeCalled) { - throw Error.invalidOperation(Sys.Res.invokeCalledTwice); - } - Sys.Net.WebRequestManager.executeRequest(this); - this._invokeCalled = true; - } -Sys.Net.WebRequest.prototype = { - add_completed: Sys$Net$WebRequest$add_completed, - remove_completed: Sys$Net$WebRequest$remove_completed, - completed: Sys$Net$WebRequest$completed, - _get_eventHandlerList: Sys$Net$WebRequest$_get_eventHandlerList, - get_url: Sys$Net$WebRequest$get_url, - set_url: Sys$Net$WebRequest$set_url, - get_headers: Sys$Net$WebRequest$get_headers, - get_httpVerb: Sys$Net$WebRequest$get_httpVerb, - set_httpVerb: Sys$Net$WebRequest$set_httpVerb, - get_body: Sys$Net$WebRequest$get_body, - set_body: Sys$Net$WebRequest$set_body, - get_userContext: Sys$Net$WebRequest$get_userContext, - set_userContext: Sys$Net$WebRequest$set_userContext, - get_executor: Sys$Net$WebRequest$get_executor, - set_executor: Sys$Net$WebRequest$set_executor, - get_timeout: Sys$Net$WebRequest$get_timeout, - set_timeout: Sys$Net$WebRequest$set_timeout, - getResolvedUrl: Sys$Net$WebRequest$getResolvedUrl, - invoke: Sys$Net$WebRequest$invoke -} -Sys.Net.WebRequest._resolveUrl = function Sys$Net$WebRequest$_resolveUrl(url, baseUrl) { - if (url && url.indexOf('://') !== -1) { - return url; - } - if (!baseUrl || baseUrl.length === 0) { - var baseElement = document.getElementsByTagName('base')[0]; - if (baseElement && baseElement.href && baseElement.href.length > 0) { - baseUrl = baseElement.href; - } - else { - baseUrl = document.URL; - } - } - var qsStart = baseUrl.indexOf('?'); - if (qsStart !== -1) { - baseUrl = baseUrl.substr(0, qsStart); - } - qsStart = baseUrl.indexOf('#'); - if (qsStart !== -1) { - baseUrl = baseUrl.substr(0, qsStart); - } - baseUrl = baseUrl.substr(0, baseUrl.lastIndexOf('/') + 1); - if (!url || url.length === 0) { - return baseUrl; - } - if (url.charAt(0) === '/') { - var slashslash = baseUrl.indexOf('://'); - if (slashslash === -1) { - throw Error.argument("baseUrl", Sys.Res.badBaseUrl1); - } - var nextSlash = baseUrl.indexOf('/', slashslash + 3); - if (nextSlash === -1) { - throw Error.argument("baseUrl", Sys.Res.badBaseUrl2); - } - return baseUrl.substr(0, nextSlash) + url; - } - else { - var lastSlash = baseUrl.lastIndexOf('/'); - if (lastSlash === -1) { - throw Error.argument("baseUrl", Sys.Res.badBaseUrl3); - } - return baseUrl.substr(0, lastSlash+1) + url; - } -} -Sys.Net.WebRequest._createQueryString = function Sys$Net$WebRequest$_createQueryString(queryString, encodeMethod, addParams) { - encodeMethod = encodeMethod || encodeURIComponent; - var i = 0, obj, val, arg, sb = new Sys.StringBuilder(); - if (queryString) { - for (arg in queryString) { - obj = queryString[arg]; - if (typeof(obj) === "function") continue; - val = Sys.Serialization.JavaScriptSerializer.serialize(obj); - if (i++) { - sb.append('&'); - } - sb.append(arg); - sb.append('='); - sb.append(encodeMethod(val)); - } - } - if (addParams) { - if (i) { - sb.append('&'); - } - sb.append(addParams); - } - return sb.toString(); -} -Sys.Net.WebRequest._createUrl = function Sys$Net$WebRequest$_createUrl(url, queryString, addParams) { - if (!queryString && !addParams) { - return url; - } - var qs = Sys.Net.WebRequest._createQueryString(queryString, null, addParams); - return qs.length - ? url + ((url && url.indexOf('?') >= 0) ? "&" : "?") + qs - : url; -} -Sys.Net.WebRequest.registerClass('Sys.Net.WebRequest'); - -Sys._ScriptLoaderTask = function Sys$_ScriptLoaderTask(scriptElement, completedCallback) { - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "scriptElement", domElement: true}, - {name: "completedCallback", type: Function} - ]); - if (e) throw e; - this._scriptElement = scriptElement; - this._completedCallback = completedCallback; -} - function Sys$_ScriptLoaderTask$get_scriptElement() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._scriptElement; - } - function Sys$_ScriptLoaderTask$dispose() { - if(this._disposed) { - return; - } - this._disposed = true; - this._removeScriptElementHandlers(); - Sys._ScriptLoaderTask._clearScript(this._scriptElement); - this._scriptElement = null; - } - function Sys$_ScriptLoaderTask$execute() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - this._addScriptElementHandlers(); - var headElements = document.getElementsByTagName('head'); - if (headElements.length === 0) { - throw new Error.invalidOperation(Sys.Res.scriptLoadFailedNoHead); - } - else { - headElements[0].appendChild(this._scriptElement); - } - } - function Sys$_ScriptLoaderTask$_addScriptElementHandlers() { - this._scriptLoadDelegate = Function.createDelegate(this, this._scriptLoadHandler); - - if (Sys.Browser.agent !== Sys.Browser.InternetExplorer) { - this._scriptElement.readyState = 'loaded'; - $addHandler(this._scriptElement, 'load', this._scriptLoadDelegate); - } - else { - $addHandler(this._scriptElement, 'readystatechange', this._scriptLoadDelegate); - } - if (this._scriptElement.addEventListener) { - this._scriptErrorDelegate = Function.createDelegate(this, this._scriptErrorHandler); - this._scriptElement.addEventListener('error', this._scriptErrorDelegate, false); - } - } - function Sys$_ScriptLoaderTask$_removeScriptElementHandlers() { - if(this._scriptLoadDelegate) { - var scriptElement = this.get_scriptElement(); - if (Sys.Browser.agent !== Sys.Browser.InternetExplorer) { - $removeHandler(scriptElement, 'load', this._scriptLoadDelegate); - } - else { - $removeHandler(scriptElement, 'readystatechange', this._scriptLoadDelegate); - } - if (this._scriptErrorDelegate) { - this._scriptElement.removeEventListener('error', this._scriptErrorDelegate, false); - this._scriptErrorDelegate = null; - } - this._scriptLoadDelegate = null; - } - } - function Sys$_ScriptLoaderTask$_scriptErrorHandler() { - if(this._disposed) { - return; - } - - this._completedCallback(this.get_scriptElement(), false); - } - function Sys$_ScriptLoaderTask$_scriptLoadHandler() { - if(this._disposed) { - return; - } - var scriptElement = this.get_scriptElement(); - if ((scriptElement.readyState !== 'loaded') && - (scriptElement.readyState !== 'complete')) { - return; - } - - this._completedCallback(scriptElement, true); - } -Sys._ScriptLoaderTask.prototype = { - get_scriptElement: Sys$_ScriptLoaderTask$get_scriptElement, - dispose: Sys$_ScriptLoaderTask$dispose, - execute: Sys$_ScriptLoaderTask$execute, - _addScriptElementHandlers: Sys$_ScriptLoaderTask$_addScriptElementHandlers, - _removeScriptElementHandlers: Sys$_ScriptLoaderTask$_removeScriptElementHandlers, - _scriptErrorHandler: Sys$_ScriptLoaderTask$_scriptErrorHandler, - _scriptLoadHandler: Sys$_ScriptLoaderTask$_scriptLoadHandler -} -Sys._ScriptLoaderTask.registerClass("Sys._ScriptLoaderTask", null, Sys.IDisposable); -Sys._ScriptLoaderTask._clearScript = function Sys$_ScriptLoaderTask$_clearScript(scriptElement) { - if (!Sys.Debug.isDebug) { - scriptElement.parentNode.removeChild(scriptElement); - } -} -Type.registerNamespace('Sys.Net'); - -Sys.Net.WebServiceProxy = function Sys$Net$WebServiceProxy() { -} - function Sys$Net$WebServiceProxy$get_timeout() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._timeout || 0; - } - function Sys$Net$WebServiceProxy$set_timeout(value) { - var e = Function._validateParams(arguments, [{name: "value", type: Number}]); - if (e) throw e; - if (value < 0) { throw Error.argumentOutOfRange('value', value, Sys.Res.invalidTimeout); } - this._timeout = value; - } - function Sys$Net$WebServiceProxy$get_defaultUserContext() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return (typeof(this._userContext) === "undefined") ? null : this._userContext; - } - function Sys$Net$WebServiceProxy$set_defaultUserContext(value) { - var e = Function._validateParams(arguments, [{name: "value", mayBeNull: true}]); - if (e) throw e; - this._userContext = value; - } - function Sys$Net$WebServiceProxy$get_defaultSucceededCallback() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._succeeded || null; - } - function Sys$Net$WebServiceProxy$set_defaultSucceededCallback(value) { - var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]); - if (e) throw e; - this._succeeded = value; - } - function Sys$Net$WebServiceProxy$get_defaultFailedCallback() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._failed || null; - } - function Sys$Net$WebServiceProxy$set_defaultFailedCallback(value) { - var e = Function._validateParams(arguments, [{name: "value", type: Function, mayBeNull: true}]); - if (e) throw e; - this._failed = value; - } - function Sys$Net$WebServiceProxy$get_enableJsonp() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return !!this._jsonp; - } - function Sys$Net$WebServiceProxy$set_enableJsonp(value) { - var e = Function._validateParams(arguments, [{name: "value", type: Boolean}]); - if (e) throw e; - this._jsonp = value; - } - function Sys$Net$WebServiceProxy$get_path() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._path || null; - } - function Sys$Net$WebServiceProxy$set_path(value) { - var e = Function._validateParams(arguments, [{name: "value", type: String}]); - if (e) throw e; - this._path = value; - } - function Sys$Net$WebServiceProxy$get_jsonpCallbackParameter() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._callbackParameter || "callback"; - } - function Sys$Net$WebServiceProxy$set_jsonpCallbackParameter(value) { - var e = Function._validateParams(arguments, [{name: "value", type: String}]); - if (e) throw e; - this._callbackParameter = value; - } - function Sys$Net$WebServiceProxy$_invoke(servicePath, methodName, useGet, params, onSuccess, onFailure, userContext) { - /// - /// - /// - /// - /// - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "servicePath", type: String}, - {name: "methodName", type: String}, - {name: "useGet", type: Boolean}, - {name: "params"}, - {name: "onSuccess", type: Function, mayBeNull: true, optional: true}, - {name: "onFailure", type: Function, mayBeNull: true, optional: true}, - {name: "userContext", mayBeNull: true, optional: true} - ]); - if (e) throw e; - onSuccess = onSuccess || this.get_defaultSucceededCallback(); - onFailure = onFailure || this.get_defaultFailedCallback(); - if (userContext === null || typeof userContext === 'undefined') userContext = this.get_defaultUserContext(); - return Sys.Net.WebServiceProxy.invoke(servicePath, methodName, useGet, params, onSuccess, onFailure, userContext, this.get_timeout(), this.get_enableJsonp(), this.get_jsonpCallbackParameter()); - } -Sys.Net.WebServiceProxy.prototype = { - get_timeout: Sys$Net$WebServiceProxy$get_timeout, - set_timeout: Sys$Net$WebServiceProxy$set_timeout, - get_defaultUserContext: Sys$Net$WebServiceProxy$get_defaultUserContext, - set_defaultUserContext: Sys$Net$WebServiceProxy$set_defaultUserContext, - get_defaultSucceededCallback: Sys$Net$WebServiceProxy$get_defaultSucceededCallback, - set_defaultSucceededCallback: Sys$Net$WebServiceProxy$set_defaultSucceededCallback, - get_defaultFailedCallback: Sys$Net$WebServiceProxy$get_defaultFailedCallback, - set_defaultFailedCallback: Sys$Net$WebServiceProxy$set_defaultFailedCallback, - get_enableJsonp: Sys$Net$WebServiceProxy$get_enableJsonp, - set_enableJsonp: Sys$Net$WebServiceProxy$set_enableJsonp, - get_path: Sys$Net$WebServiceProxy$get_path, - set_path: Sys$Net$WebServiceProxy$set_path, - get_jsonpCallbackParameter: Sys$Net$WebServiceProxy$get_jsonpCallbackParameter, - set_jsonpCallbackParameter: Sys$Net$WebServiceProxy$set_jsonpCallbackParameter, - _invoke: Sys$Net$WebServiceProxy$_invoke -} -Sys.Net.WebServiceProxy.registerClass('Sys.Net.WebServiceProxy'); -Sys.Net.WebServiceProxy.invoke = function Sys$Net$WebServiceProxy$invoke(servicePath, methodName, useGet, params, onSuccess, onFailure, userContext, timeout, enableJsonp, jsonpCallbackParameter) { - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "servicePath", type: String}, - {name: "methodName", type: String, mayBeNull: true, optional: true}, - {name: "useGet", type: Boolean, optional: true}, - {name: "params", mayBeNull: true, optional: true}, - {name: "onSuccess", type: Function, mayBeNull: true, optional: true}, - {name: "onFailure", type: Function, mayBeNull: true, optional: true}, - {name: "userContext", mayBeNull: true, optional: true}, - {name: "timeout", type: Number, optional: true}, - {name: "enableJsonp", type: Boolean, mayBeNull: true, optional: true}, - {name: "jsonpCallbackParameter", type: String, mayBeNull: true, optional: true} - ]); - if (e) throw e; - var schemeHost = (enableJsonp !== false) ? Sys.Net.WebServiceProxy._xdomain.exec(servicePath) : null, - tempCallback, jsonp = schemeHost && (schemeHost.length === 3) && - ((schemeHost[1] !== location.protocol) || (schemeHost[2] !== location.host)); - useGet = jsonp || useGet; - if (jsonp) { - jsonpCallbackParameter = jsonpCallbackParameter || "callback"; - tempCallback = "_jsonp" + Sys._jsonp++; - } - if (!params) params = {}; - var urlParams = params; - if (!useGet || !urlParams) urlParams = {}; - var script, error, timeoutcookie = null, loader, body = null, - url = Sys.Net.WebRequest._createUrl(methodName - ? (servicePath+"/"+encodeURIComponent(methodName)) - : servicePath, urlParams, jsonp ? (jsonpCallbackParameter + "=Sys." + tempCallback) : null); - if (jsonp) { - script = document.createElement("script"); - script.src = url; - loader = new Sys._ScriptLoaderTask(script, function(script, loaded) { - if (!loaded || tempCallback) { - jsonpComplete({ Message: String.format(Sys.Res.webServiceFailedNoMsg, methodName) }, -1); - } - }); - function jsonpComplete(data, statusCode) { - if (timeoutcookie !== null) { - window.clearTimeout(timeoutcookie); - timeoutcookie = null; - } - loader.dispose(); - delete Sys[tempCallback]; - tempCallback = null; - if ((typeof(statusCode) !== "undefined") && (statusCode !== 200)) { - if (onFailure) { - error = new Sys.Net.WebServiceError(false, - data.Message || String.format(Sys.Res.webServiceFailedNoMsg, methodName), - data.StackTrace || null, - data.ExceptionType || null, - data); - error._statusCode = statusCode; - onFailure(error, userContext, methodName); - } - else { - if (data.StackTrace && data.Message) { - error = data.StackTrace + "-- " + data.Message; - } - else { - error = data.StackTrace || data.Message; - } - error = String.format(error ? Sys.Res.webServiceFailed : Sys.Res.webServiceFailedNoMsg, methodName, error); - throw Sys.Net.WebServiceProxy._createFailedError(methodName, String.format(Sys.Res.webServiceFailed, methodName, error)); - } - } - else if (onSuccess) { - onSuccess(data, userContext, methodName); - } - } - Sys[tempCallback] = jsonpComplete; - loader.execute(); - return null; - } - var request = new Sys.Net.WebRequest(); - request.set_url(url); - request.get_headers()['Content-Type'] = 'application/json; charset=utf-8'; - if (!useGet) { - body = Sys.Serialization.JavaScriptSerializer.serialize(params); - if (body === "{}") body = ""; - } - request.set_body(body); - request.add_completed(onComplete); - if (timeout && timeout > 0) request.set_timeout(timeout); - request.invoke(); - - function onComplete(response, eventArgs) { - if (response.get_responseAvailable()) { - var statusCode = response.get_statusCode(); - var result = null; - - try { - var contentType = response.getResponseHeader("Content-Type"); - if (contentType.startsWith("application/json")) { - result = response.get_object(); - } - else if (contentType.startsWith("text/xml")) { - result = response.get_xml(); - } - else { - result = response.get_responseData(); - } - } catch (ex) { - } - var error = response.getResponseHeader("jsonerror"); - var errorObj = (error === "true"); - if (errorObj) { - if (result) { - result = new Sys.Net.WebServiceError(false, result.Message, result.StackTrace, result.ExceptionType, result); - } - } - else if (contentType.startsWith("application/json")) { - result = (!result || (typeof(result.d) === "undefined")) ? result : result.d; - } - if (((statusCode < 200) || (statusCode >= 300)) || errorObj) { - if (onFailure) { - if (!result || !errorObj) { - result = new Sys.Net.WebServiceError(false , String.format(Sys.Res.webServiceFailedNoMsg, methodName)); - } - result._statusCode = statusCode; - onFailure(result, userContext, methodName); - } - else { - if (result && errorObj) { - error = result.get_exceptionType() + "-- " + result.get_message(); - } - else { - error = response.get_responseData(); - } - throw Sys.Net.WebServiceProxy._createFailedError(methodName, String.format(Sys.Res.webServiceFailed, methodName, error)); - } - } - else if (onSuccess) { - onSuccess(result, userContext, methodName); - } - } - else { - var msg; - if (response.get_timedOut()) { - msg = String.format(Sys.Res.webServiceTimedOut, methodName); - } - else { - msg = String.format(Sys.Res.webServiceFailedNoMsg, methodName) - } - if (onFailure) { - onFailure(new Sys.Net.WebServiceError(response.get_timedOut(), msg, "", ""), userContext, methodName); - } - else { - throw Sys.Net.WebServiceProxy._createFailedError(methodName, msg); - } - } - } - return request; -} -Sys.Net.WebServiceProxy._createFailedError = function Sys$Net$WebServiceProxy$_createFailedError(methodName, errorMessage) { - var displayMessage = "Sys.Net.WebServiceFailedException: " + errorMessage; - var e = Error.create(displayMessage, { 'name': 'Sys.Net.WebServiceFailedException', 'methodName': methodName }); - e.popStackFrame(); - return e; -} -Sys.Net.WebServiceProxy._defaultFailedCallback = function Sys$Net$WebServiceProxy$_defaultFailedCallback(err, methodName) { - var error = err.get_exceptionType() + "-- " + err.get_message(); - throw Sys.Net.WebServiceProxy._createFailedError(methodName, String.format(Sys.Res.webServiceFailed, methodName, error)); -} -Sys.Net.WebServiceProxy._generateTypedConstructor = function Sys$Net$WebServiceProxy$_generateTypedConstructor(type) { - return function(properties) { - if (properties) { - for (var name in properties) { - this[name] = properties[name]; - } - } - this.__type = type; - } -} -Sys._jsonp = 0; -Sys.Net.WebServiceProxy._xdomain = /^\s*([a-zA-Z0-9\+\-\.]+\:)\/\/([^?#\/]+)/; - -Sys.Net.WebServiceError = function Sys$Net$WebServiceError(timedOut, message, stackTrace, exceptionType, errorObject) { - /// - /// - /// - /// - /// - /// - var e = Function._validateParams(arguments, [ - {name: "timedOut", type: Boolean}, - {name: "message", type: String, mayBeNull: true}, - {name: "stackTrace", type: String, mayBeNull: true, optional: true}, - {name: "exceptionType", type: String, mayBeNull: true, optional: true}, - {name: "errorObject", type: Object, mayBeNull: true, optional: true} - ]); - if (e) throw e; - this._timedOut = timedOut; - this._message = message; - this._stackTrace = stackTrace; - this._exceptionType = exceptionType; - this._errorObject = errorObject; - this._statusCode = -1; -} - function Sys$Net$WebServiceError$get_timedOut() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._timedOut; - } - function Sys$Net$WebServiceError$get_statusCode() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._statusCode; - } - function Sys$Net$WebServiceError$get_message() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._message; - } - function Sys$Net$WebServiceError$get_stackTrace() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._stackTrace || ""; - } - function Sys$Net$WebServiceError$get_exceptionType() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._exceptionType || ""; - } - function Sys$Net$WebServiceError$get_errorObject() { - /// - if (arguments.length !== 0) throw Error.parameterCount(); - return this._errorObject || null; - } -Sys.Net.WebServiceError.prototype = { - get_timedOut: Sys$Net$WebServiceError$get_timedOut, - get_statusCode: Sys$Net$WebServiceError$get_statusCode, - get_message: Sys$Net$WebServiceError$get_message, - get_stackTrace: Sys$Net$WebServiceError$get_stackTrace, - get_exceptionType: Sys$Net$WebServiceError$get_exceptionType, - get_errorObject: Sys$Net$WebServiceError$get_errorObject -} -Sys.Net.WebServiceError.registerClass('Sys.Net.WebServiceError'); - - -Type.registerNamespace('Sys'); - -Sys.Res={ -'urlMustBeLessThan1024chars':'The history state must be small enough to not make the url larger than 1024 characters.', -'argumentTypeName':'Value is not the name of an existing type.', -'cantBeCalledAfterDispose':'Can\'t be called after dispose.', -'componentCantSetIdAfterAddedToApp':'The id property of a component can\'t be set after it\'s been added to the Application object.', -'behaviorDuplicateName':'A behavior with name \'{0}\' already exists or it is the name of an existing property on the target element.', -'notATypeName':'Value is not a valid type name.', -'elementNotFound':'An element with id \'{0}\' could not be found.', -'stateMustBeStringDictionary':'The state object can only have null and string fields.', -'boolTrueOrFalse':'Value must be \'true\' or \'false\'.', -'scriptLoadFailedNoHead':'ScriptLoader requires pages to contain a element.', -'stringFormatInvalid':'The format string is invalid.', -'referenceNotFound':'Component \'{0}\' was not found.', -'enumReservedName':'\'{0}\' is a reserved name that can\'t be used as an enum value name.', -'circularParentChain':'The chain of control parents can\'t have circular references.', -'namespaceContainsNonObject':'Object {0} already exists and is not an object.', -'undefinedEvent':'\'{0}\' is not an event.', -'propertyUndefined':'\'{0}\' is not a property or an existing field.', -'observableConflict':'Object already contains a member with the name \'{0}\'.', -'historyCannotEnableHistory':'Cannot set enableHistory after initialization.', -'eventHandlerInvalid':'Handler was not added through the Sys.UI.DomEvent.addHandler method.', -'scriptLoadFailedDebug':'The script \'{0}\' failed to load. Check for:\r\n Inaccessible path.\r\n Script errors. (IE) Enable \'Display a notification about every script error\' under advanced settings.', -'propertyNotWritable':'\'{0}\' is not a writable property.', -'enumInvalidValueName':'\'{0}\' is not a valid name for an enum value.', -'controlAlreadyDefined':'A control is already associated with the element.', -'addHandlerCantBeUsedForError':'Can\'t add a handler for the error event using this method. Please set the window.onerror property instead.', -'cantAddNonFunctionhandler':'Can\'t add a handler that is not a function.', -'invalidNameSpace':'Value is not a valid namespace identifier.', -'notAnInterface':'Value is not a valid interface.', -'eventHandlerNotFunction':'Handler must be a function.', -'propertyNotAnArray':'\'{0}\' is not an Array property.', -'namespaceContainsClass':'Object {0} already exists as a class, enum, or interface.', -'typeRegisteredTwice':'Type {0} has already been registered. The type may be defined multiple times or the script file that defines it may have already been loaded. A possible cause is a change of settings during a partial update.', -'cantSetNameAfterInit':'The name property can\'t be set on this object after initialization.', -'historyMissingFrame':'For the history feature to work in IE, the page must have an iFrame element with id \'__historyFrame\' pointed to a page that gets its title from the \'title\' query string parameter and calls Sys.Application._onIFrameLoad() on the parent window. This can be done by setting EnableHistory to true on ScriptManager.', -'appDuplicateComponent':'Two components with the same id \'{0}\' can\'t be added to the application.', -'historyCannotAddHistoryPointWithHistoryDisabled':'A history point can only be added if enableHistory is set to true.', -'baseNotAClass':'Value is not a class.', -'expectedElementOrId':'Value must be a DOM element or DOM element Id.', -'methodNotFound':'No method found with name \'{0}\'.', -'arrayParseBadFormat':'Value must be a valid string representation for an array. It must start with a \'[\' and end with a \']\'.', -'stateFieldNameInvalid':'State field names must not contain any \'=\' characters.', -'cantSetId':'The id property can\'t be set on this object.', -'stringFormatBraceMismatch':'The format string contains an unmatched opening or closing brace.', -'enumValueNotInteger':'An enumeration definition can only contain integer values.', -'propertyNullOrUndefined':'Cannot set the properties of \'{0}\' because it returned a null value.', -'argumentDomNode':'Value must be a DOM element or a text node.', -'componentCantSetIdTwice':'The id property of a component can\'t be set more than once.', -'createComponentOnDom':'Value must be null for Components that are not Controls or Behaviors.', -'createNotComponent':'{0} does not derive from Sys.Component.', -'createNoDom':'Value must not be null for Controls and Behaviors.', -'cantAddWithoutId':'Can\'t add a component that doesn\'t have an id.', -'notObservable':'Instances of type \'{0}\' cannot be observed.', -'badTypeName':'Value is not the name of the type being registered or the name is a reserved word.', -'argumentInteger':'Value must be an integer.', -'invokeCalledTwice':'Cannot call invoke more than once.', -'webServiceFailed':'The server method \'{0}\' failed with the following error: {1}', -'argumentType':'Object cannot be converted to the required type.', -'argumentNull':'Value cannot be null.', -'scriptAlreadyLoaded':'The script \'{0}\' has been referenced multiple times. If referencing Microsoft AJAX scripts explicitly, set the MicrosoftAjaxMode property of the ScriptManager to Explicit.', -'scriptDependencyNotFound':'The script \'{0}\' failed to load because it is dependent on script \'{1}\'.', -'formatBadFormatSpecifier':'Format specifier was invalid.', -'requiredScriptReferenceNotIncluded':'\'{0}\' requires that you have included a script reference to \'{1}\'.', -'webServiceFailedNoMsg':'The server method \'{0}\' failed.', -'argumentDomElement':'Value must be a DOM element.', -'invalidExecutorType':'Could not create a valid Sys.Net.WebRequestExecutor from: {0}.', -'cannotCallBeforeResponse':'Cannot call {0} when responseAvailable is false.', -'actualValue':'Actual value was {0}.', -'enumInvalidValue':'\'{0}\' is not a valid value for enum {1}.', -'scriptLoadFailed':'The script \'{0}\' could not be loaded.', -'parameterCount':'Parameter count mismatch.', -'cannotDeserializeEmptyString':'Cannot deserialize empty string.', -'formatInvalidString':'Input string was not in a correct format.', -'invalidTimeout':'Value must be greater than or equal to zero.', -'cannotAbortBeforeStart':'Cannot abort when executor has not started.', -'argument':'Value does not fall within the expected range.', -'cannotDeserializeInvalidJson':'Cannot deserialize. The data does not correspond to valid JSON.', -'invalidHttpVerb':'httpVerb cannot be set to an empty or null string.', -'nullWebRequest':'Cannot call executeRequest with a null webRequest.', -'eventHandlerInvalid':'Handler was not added through the Sys.UI.DomEvent.addHandler method.', -'cannotSerializeNonFiniteNumbers':'Cannot serialize non finite numbers.', -'argumentUndefined':'Value cannot be undefined.', -'webServiceInvalidReturnType':'The server method \'{0}\' returned an invalid type. Expected type: {1}', -'servicePathNotSet':'The path to the web service has not been set.', -'argumentTypeWithTypes':'Object of type \'{0}\' cannot be converted to type \'{1}\'.', -'cannotCallOnceStarted':'Cannot call {0} once started.', -'badBaseUrl1':'Base URL does not contain ://.', -'badBaseUrl2':'Base URL does not contain another /.', -'badBaseUrl3':'Cannot find last / in base URL.', -'setExecutorAfterActive':'Cannot set executor after it has become active.', -'paramName':'Parameter name: {0}', -'nullReferenceInPath':'Null reference while evaluating data path: \'{0}\'.', -'cannotCallOutsideHandler':'Cannot call {0} outside of a completed event handler.', -'cannotSerializeObjectWithCycle':'Cannot serialize object with cyclic reference within child properties.', -'format':'One of the identified items was in an invalid format.', -'assertFailedCaller':'Assertion Failed: {0}\r\nat {1}', -'argumentOutOfRange':'Specified argument was out of the range of valid values.', -'webServiceTimedOut':'The server method \'{0}\' timed out.', -'notImplemented':'The method or operation is not implemented.', -'assertFailed':'Assertion Failed: {0}', -'invalidOperation':'Operation is not valid due to the current state of the object.', -'breakIntoDebugger':'{0}\r\n\r\nBreak into debugger?' -}; diff --git a/NzbDrone.Web/Scripts/MicrosoftAjax.js b/NzbDrone.Web/Scripts/MicrosoftAjax.js deleted file mode 100644 index 52e6626a0..000000000 --- a/NzbDrone.Web/Scripts/MicrosoftAjax.js +++ /dev/null @@ -1,6 +0,0 @@ -//---------------------------------------------------------- -// Copyright (C) Microsoft Corporation. All rights reserved. -//---------------------------------------------------------- -// MicrosoftAjax.js -Function.__typeName="Function";Function.__class=true;Function.createCallback=function(b,a){return function(){var e=arguments.length;if(e>0){var d=[];for(var c=0;c=d)break;a=Function._validateParameter(g[b],f,h);if(a){a.popStackFrame();return a}}return null};Function._validateParameterCount=function(j,d,i){var a,c,b=d.length,e=j.length;if(eb){c=true;for(a=0;a0&&(d=0};Array.dequeue=function(a){return a.shift()};Array.forEach=function(b,e,d){for(var a=0,f=b.length;a=0)b.splice(a,1);return a>=0};Array.removeAt=function(a,b){a.splice(b,1)};Sys._indexOf=function(d,e,a){if(typeof e==="undefined")return -1;var c=d.length;if(c!==0){a=a-0;if(isNaN(a))a=0;else{if(isFinite(a))a=a-a%1;if(a<0)a=Math.max(0,c+a)}for(var b=a;b-1){Sys.Browser.agent=Sys.Browser.InternetExplorer;Sys.Browser.version=parseFloat(navigator.userAgent.match(/MSIE (\d+\.\d+)/)[1]);if(Sys.Browser.version>=8)if(document.documentMode>=7)Sys.Browser.documentMode=document.documentMode;Sys.Browser.hasDebuggerStatement=true}else if(navigator.userAgent.indexOf(" Firefox/")>-1){Sys.Browser.agent=Sys.Browser.Firefox;Sys.Browser.version=parseFloat(navigator.userAgent.match(/Firefox\/(\d+\.\d+)/)[1]);Sys.Browser.name="Firefox";Sys.Browser.hasDebuggerStatement=true}else if(navigator.userAgent.indexOf(" AppleWebKit/")>-1){Sys.Browser.agent=Sys.Browser.Safari;Sys.Browser.version=parseFloat(navigator.userAgent.match(/AppleWebKit\/(\d+(\.\d+)?)/)[1]);Sys.Browser.name="Safari"}else if(navigator.userAgent.indexOf("Opera/")>-1)Sys.Browser.agent=Sys.Browser.Opera;Sys.EventArgs=function(){};Sys.EventArgs.registerClass("Sys.EventArgs");Sys.EventArgs.Empty=new Sys.EventArgs;Sys.CancelEventArgs=function(){Sys.CancelEventArgs.initializeBase(this);this._cancel=false};Sys.CancelEventArgs.prototype={get_cancel:function(){return this._cancel},set_cancel:function(a){this._cancel=a}};Sys.CancelEventArgs.registerClass("Sys.CancelEventArgs",Sys.EventArgs);Type.registerNamespace("Sys.UI");Sys._Debug=function(){};Sys._Debug.prototype={_appendConsole:function(a){if(typeof Debug!=="undefined"&&Debug.writeln)Debug.writeln(a);if(window.console&&window.console.log)window.console.log(a);if(window.opera)window.opera.postError(a);if(window.debugService)window.debugService.trace(a)},_appendTrace:function(b){var a=document.getElementById("TraceConsole");if(a&&a.tagName.toUpperCase()==="TEXTAREA")a.value+=b+"\n"},assert:function(c,a,b){if(!c){a=b&&this.assert.caller?String.format(Sys.Res.assertFailedCaller,a,this.assert.caller):String.format(Sys.Res.assertFailed,a);if(confirm(String.format(Sys.Res.breakIntoDebugger,a)))this.fail(a)}},clearTrace:function(){var a=document.getElementById("TraceConsole");if(a&&a.tagName.toUpperCase()==="TEXTAREA")a.value=""},fail:function(message){this._appendConsole(message);if(Sys.Browser.hasDebuggerStatement)eval("debugger")},trace:function(a){this._appendConsole(a);this._appendTrace(a)},traceDump:function(a,b){var c=this._traceDump(a,b,true)},_traceDump:function(a,c,f,b,d){c=c?c:"traceDump";b=b?b:"";if(a===null){this.trace(b+c+": null");return}switch(typeof a){case "undefined":this.trace(b+c+": Undefined");break;case "number":case "string":case "boolean":this.trace(b+c+": "+a);break;default:if(Date.isInstanceOfType(a)||RegExp.isInstanceOfType(a)){this.trace(b+c+": "+a.toString());break}if(!d)d=[];else if(Array.contains(d,a)){this.trace(b+c+": ...");return}Array.add(d,a);if(a==window||a===document||window.HTMLElement&&a instanceof HTMLElement||typeof a.nodeName==="string"){var k=a.tagName?a.tagName:"DomElement";if(a.id)k+=" - "+a.id;this.trace(b+c+" {"+k+"}")}else{var i=Object.getTypeName(a);this.trace(b+c+(typeof i==="string"?" {"+i+"}":""));if(b===""||f){b+=" ";var e,j,l,g,h;if(Array.isInstanceOfType(a)){j=a.length;for(e=0;e=0;d--){var k=h[d].trim();b=a[k];if(typeof b!=="number")throw Error.argument("value",String.format(Sys.Res.enumInvalidValue,c.split(",")[d].trim(),this.__typeName));j|=b}return j}}function Sys$Enum$toString(c){if(typeof c==="undefined"||c===null)return this.__string;var d=this.prototype,a;if(!this.__flags||c===0){for(a in d)if(d[a]===c)return a}else{var b=this.__sortedValues;if(!b){b=[];for(a in d)b[b.length]={key:a,value:d[a]};b.sort(function(a,b){return a.value-b.value});this.__sortedValues=b}var e=[],g=c;for(a=b.length-1;a>=0;a--){var h=b[a],f=h.value;if(f===0)continue;if((f&c)===f){e[e.length]=h.key;g-=f;if(g===0)break}}if(e.length&&g===0)return e.reverse().join(", ")}return ""}Type.prototype.registerEnum=function(b,c){Sys.__upperCaseTypes[b.toUpperCase()]=this;for(var a in this.prototype)this[a]=this.prototype[a];this.__typeName=b;this.parse=Sys$Enum$parse;this.__string=this.toString();this.toString=Sys$Enum$toString;this.__flags=c;this.__enum=true};Type.isEnum=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__enum};Type.isFlags=function(a){if(typeof a==="undefined"||a===null)return false;return !!a.__flags};Sys.CollectionChange=function(e,a,c,b,d){this.action=e;if(a)if(!(a instanceof Array))a=[a];this.newItems=a||null;if(typeof c!=="number")c=-1;this.newStartingIndex=c;if(b)if(!(b instanceof Array))b=[b];this.oldItems=b||null;if(typeof d!=="number")d=-1;this.oldStartingIndex=d};Sys.CollectionChange.registerClass("Sys.CollectionChange");Sys.NotifyCollectionChangedAction=function(){throw Error.notImplemented()};Sys.NotifyCollectionChangedAction.prototype={add:0,remove:1,reset:2};Sys.NotifyCollectionChangedAction.registerEnum("Sys.NotifyCollectionChangedAction");Sys.NotifyCollectionChangedEventArgs=function(a){this._changes=a;Sys.NotifyCollectionChangedEventArgs.initializeBase(this)};Sys.NotifyCollectionChangedEventArgs.prototype={get_changes:function(){return this._changes||[]}};Sys.NotifyCollectionChangedEventArgs.registerClass("Sys.NotifyCollectionChangedEventArgs",Sys.EventArgs);Sys.Observer=function(){};Sys.Observer.registerClass("Sys.Observer");Sys.Observer.makeObservable=function(a){var c=a instanceof Array,b=Sys.Observer;if(a.setValue===b._observeMethods.setValue)return a;b._addMethods(a,b._observeMethods);if(c)b._addMethods(a,b._arrayMethods);return a};Sys.Observer._addMethods=function(c,b){for(var a in b)c[a]=b[a]};Sys.Observer._addEventHandler=function(c,a,b){Sys.Observer._getContext(c,true).events._addHandler(a,b)};Sys.Observer.addEventHandler=function(c,a,b){Sys.Observer._addEventHandler(c,a,b)};Sys.Observer._removeEventHandler=function(c,a,b){Sys.Observer._getContext(c,true).events._removeHandler(a,b)};Sys.Observer.removeEventHandler=function(c,a,b){Sys.Observer._removeEventHandler(c,a,b)};Sys.Observer.raiseEvent=function(b,e,d){var c=Sys.Observer._getContext(b);if(!c)return;var a=c.events.getHandler(e);if(a)a(b,d)};Sys.Observer.addPropertyChanged=function(b,a){Sys.Observer._addEventHandler(b,"propertyChanged",a)};Sys.Observer.removePropertyChanged=function(b,a){Sys.Observer._removeEventHandler(b,"propertyChanged",a)};Sys.Observer.beginUpdate=function(a){Sys.Observer._getContext(a,true).updating=true};Sys.Observer.endUpdate=function(b){var a=Sys.Observer._getContext(b);if(!a||!a.updating)return;a.updating=false;var d=a.dirty;a.dirty=false;if(d){if(b instanceof Array){var c=a.changes;a.changes=null;Sys.Observer.raiseCollectionChanged(b,c)}Sys.Observer.raisePropertyChanged(b,"")}};Sys.Observer.isUpdating=function(b){var a=Sys.Observer._getContext(b);return a?a.updating:false};Sys.Observer._setValue=function(a,j,g){var b,f,k=a,d=j.split(".");for(var i=0,m=d.length-1;i-1&&ac.Calendar.TwoDigitYearMax)a-=100}return a};Date._getEra=function(e,c){if(!c)return 0;var b,d=e.getTime();for(var a=0,f=c.length;a=b)return a}return 0};Date._getEraYear=function(d,b,e,c){var a=d.getFullYear();if(!c&&b.eras)a-=b.eras[e+3];return a};Date._getParseRegExp=function(b,e){if(!b._parseRegExp)b._parseRegExp={};else if(b._parseRegExp[e])return b._parseRegExp[e];var c=Date._expandFormat(b,e);c=c.replace(/([\^\$\.\*\+\?\|\[\]\(\)\{\}])/g,"\\\\$1");var a=new Sys.StringBuilder("^"),j=[],f=0,i=0,h=Date._getTokenRegExp(),d;while((d=h.exec(c))!==null){var l=c.slice(f,d.index);f=h.lastIndex;i+=Date._appendPreOrPostMatch(l,a);if(i%2===1){a.append(d[0]);continue}switch(d[0]){case "dddd":case "ddd":case "MMMM":case "MMM":case "gg":case "g":a.append("(\\D+)");break;case "tt":case "t":a.append("(\\D*)");break;case "yyyy":a.append("(\\d{4})");break;case "fff":a.append("(\\d{3})");break;case "ff":a.append("(\\d{2})");break;case "f":a.append("(\\d)");break;case "dd":case "d":case "MM":case "M":case "yy":case "y":case "HH":case "H":case "hh":case "h":case "mm":case "m":case "ss":case "s":a.append("(\\d\\d?)");break;case "zzz":a.append("([+-]?\\d\\d?:\\d{2})");break;case "zz":case "z":a.append("([+-]?\\d\\d?)");break;case "/":a.append("(\\"+b.DateSeparator+")")}Array.add(j,d[0])}Date._appendPreOrPostMatch(c.slice(f),a);a.append("$");var k=a.toString().replace(/\s+/g,"\\s+"),g={"regExp":k,"groups":j};b._parseRegExp[e]=g;return g};Date._getTokenRegExp=function(){return /\/|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z|gg|g/g};Date.parseLocale=function(a){return Date._parse(a,Sys.CultureInfo.CurrentCulture,arguments)};Date.parseInvariant=function(a){return Date._parse(a,Sys.CultureInfo.InvariantCulture,arguments)};Date._parse=function(h,d,i){var a,c,b,f,e,g=false;for(a=1,c=i.length;a31)return null;break;case "MMMM":c=k._getMonthIndex(a);if(c<0||c>11)return null;break;case "MMM":c=k._getAbbrMonthIndex(a);if(c<0||c>11)return null;break;case "M":case "MM":c=parseInt(a,10)-1;if(c<0||c>11)return null;break;case "y":case "yy":e=Date._expandYear(g,parseInt(a,10));if(e<0||e>9999)return null;break;case "yyyy":e=parseInt(a,10);if(e<0||e>9999)return null;break;case "h":case "hh":d=parseInt(a,10);if(d===12)d=0;if(d<0||d>11)return null;break;case "H":case "HH":d=parseInt(a,10);if(d<0||d>23)return null;break;case "m":case "mm":q=parseInt(a,10);if(q<0||q>59)return null;break;case "s":case "ss":r=parseInt(a,10);if(r<0||r>59)return null;break;case "tt":case "t":var z=a.toUpperCase();v=z===g.PMDesignator.toUpperCase();if(!v&&z!==g.AMDesignator.toUpperCase())return null;break;case "f":f=parseInt(a,10)*100;if(f<0||f>999)return null;break;case "ff":f=parseInt(a,10)*10;if(f<0||f>999)return null;break;case "fff":f=parseInt(a,10);if(f<0||f>999)return null;break;case "dddd":i=k._getDayIndex(a);if(i<0||i>6)return null;break;case "ddd":i=k._getAbbrDayIndex(a);if(i<0||i>6)return null;break;case "zzz":var u=a.split(/:/);if(u.length!==2)return null;h=parseInt(u[0],10);if(h<-12||h>13)return null;var o=parseInt(u[1],10);if(o<0||o>59)return null;n=h*60+(a.startsWith("-")?-o:o);break;case "z":case "zz":h=parseInt(a,10);if(h<-12||h>13)return null;n=h*60;break;case "g":case "gg":var p=a;if(!p||!g.eras)return null;p=p.toLowerCase().trim();for(var s=0,F=g.eras.length;s0)return this.toLocaleString();else return this.toString();var o=["n %","n%","%n"],n=["-n %","-n%","-%n"],p=["(n)","-n","- n","n-","n -"],m=["$n","n$","$ n","n $"],l=["($n)","-$n","$-n","$n-","(n$)","-n$","n-$","n$-","-n $","-$ n","n $-","$ n-","$ -n","n- $","($ n)","(n $)"];function g(a,c,d){for(var b=a.length;b1?parseInt(e[1]):0;e=b.split(".");b=e[0];a=e.length>1?e[1]:"";var q;if(c>0){a=g(a,c,false);b+=a.slice(0,c);a=a.substr(c)}else if(c<0){c=-c;b=g(b,c+1,true);a=b.slice(-c,b.length)+a;b=b.slice(0,-c)}if(i>0){if(a.length>i)a=a.slice(0,i);else a=g(a,i,false);a=p+a}else a="";var d=b.length-1,f="";while(d>=0){if(h===0||h>d)if(f.length>0)return b.slice(0,d+1)+n+f+a;else return b.slice(0,d+1)+a;if(f.length>0)f=b.slice(d-h+1,d+1)+n+f;else f=b.slice(d-h+1,d+1);d-=h;if(k1)b=parseInt(e.slice(1),10);var c;switch(e.charAt(0)){case "d":case "D":c="n";if(b!==-1)d=g(""+d,b,true);if(this<0)d=-d;break;case "c":case "C":if(this<0)c=l[a.CurrencyNegativePattern];else c=m[a.CurrencyPositivePattern];if(b===-1)b=a.CurrencyDecimalDigits;d=i(Math.abs(this),b,a.CurrencyGroupSizes,a.CurrencyGroupSeparator,a.CurrencyDecimalSeparator);break;case "n":case "N":if(this<0)c=p[a.NumberNegativePattern];else c="n";if(b===-1)b=a.NumberDecimalDigits;d=i(Math.abs(this),b,a.NumberGroupSizes,a.NumberGroupSeparator,a.NumberDecimalSeparator);break;case "p":case "P":if(this<0)c=n[a.PercentNegativePattern];else c=o[a.PercentPositivePattern];if(b===-1)b=a.PercentDecimalDigits;d=i(Math.abs(this)*100,b,a.PercentGroupSizes,a.PercentGroupSeparator,a.PercentDecimalSeparator);break;default:throw Error.format(Sys.Res.formatBadFormatSpecifier)}var k=/n|\$|-|%/g,f="";for(;true;){var q=k.lastIndex,h=k.exec(c);f+=c.slice(q,h?h.index:c.length);if(!h)break;switch(h[0]){case "n":f+=d;break;case "$":f+=a.CurrencySymbol;break;case "-":if(/[1-9]/.test(d))f+=a.NegativeSign;break;case "%":f+=a.PercentSymbol}}return f};Sys.CultureInfo=function(c,b,a){this.name=c;this.numberFormat=b;this.dateTimeFormat=a};Sys.CultureInfo.prototype={_getDateTimeFormats:function(){if(!this._dateTimeFormats){var a=this.dateTimeFormat;this._dateTimeFormats=[a.MonthDayPattern,a.YearMonthPattern,a.ShortDatePattern,a.ShortTimePattern,a.LongDatePattern,a.LongTimePattern,a.FullDateTimePattern,a.RFC1123Pattern,a.SortableDateTimePattern,a.UniversalSortableDateTimePattern]}return this._dateTimeFormats},_getIndex:function(c,d,e){var b=this._toUpper(c),a=Array.indexOf(d,b);if(a===-1)a=Array.indexOf(e,b);return a},_getMonthIndex:function(a){if(!this._upperMonths){this._upperMonths=this._toUpperArray(this.dateTimeFormat.MonthNames);this._upperMonthsGenitive=this._toUpperArray(this.dateTimeFormat.MonthGenitiveNames)}return this._getIndex(a,this._upperMonths,this._upperMonthsGenitive)},_getAbbrMonthIndex:function(a){if(!this._upperAbbrMonths){this._upperAbbrMonths=this._toUpperArray(this.dateTimeFormat.AbbreviatedMonthNames);this._upperAbbrMonthsGenitive=this._toUpperArray(this.dateTimeFormat.AbbreviatedMonthGenitiveNames)}return this._getIndex(a,this._upperAbbrMonths,this._upperAbbrMonthsGenitive)},_getDayIndex:function(a){if(!this._upperDays)this._upperDays=this._toUpperArray(this.dateTimeFormat.DayNames);return Array.indexOf(this._upperDays,this._toUpper(a))},_getAbbrDayIndex:function(a){if(!this._upperAbbrDays)this._upperAbbrDays=this._toUpperArray(this.dateTimeFormat.AbbreviatedDayNames);return Array.indexOf(this._upperAbbrDays,this._toUpper(a))},_toUpperArray:function(c){var b=[];for(var a=0,d=c.length;a0)a.append(",");Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(b[c],a,false,g)}a.append("]")}else{if(Date.isInstanceOfType(b)){a.append('"\\/Date(');a.append(b.getTime());a.append(')\\/"');break}var d=[],f=0;for(var e in b){if(e.startsWith("$"))continue;if(e===Sys.Serialization.JavaScriptSerializer._serverTypeFieldName&&f!==0){d[f++]=d[0];d[0]=e}else d[f++]=e}if(i)d.sort();a.append("{");var j=false;for(c=0;c=0;c--){var f=d[c];if(!g||f.autoRemove)$removeHandler(a,b,f.handler)}}a._events=null}};Sys.UI.DomEvent._disposeHandlers=function(){Sys.UI.DomEvent._clearHandlers(this,true);var b=this._chainDispose,a=typeof b;if(a!=="undefined"){this.dispose=b;this._chainDispose=null;if(a==="function")this.dispose()}};var $removeHandler=Sys.UI.DomEvent.removeHandler=function(b,a,c){Sys.UI.DomEvent._removeHandler(b,a,c)};Sys.UI.DomEvent._removeHandler=function(a,e,f){var d=null,c=a._events[e];for(var b=0,g=c.length;b=3){d+=parseInt(b.borderLeftWidth);e+=parseInt(b.borderTopWidth)}}b=Sys.UI.DomElement._getCurrentStyle(c);var h=b?b.position:null;if(!h||h!=="absolute")for(a=c.parentNode;a;a=a.parentNode){f=a.tagName?a.tagName.toUpperCase():null;if(f!=="BODY"&&f!=="HTML"&&(a.scrollLeft||a.scrollTop)){d-=a.scrollLeft||0;e-=a.scrollTop||0}b=Sys.UI.DomElement._getCurrentStyle(a);var i=b?b.position:null;if(i&&i==="absolute")break}return new Sys.UI.Point(d,e)};else Sys.UI.DomElement.getLocation=function(d){if(d.window&&d.window===d||d.nodeType===9)return new Sys.UI.Point(0,0);var e=0,f=0,a,i=null,g=null,b=null;for(a=d;a;i=a,(g=b,a=a.offsetParent)){var c=a.tagName?a.tagName.toUpperCase():null;b=Sys.UI.DomElement._getCurrentStyle(a);if((a.offsetLeft||a.offsetTop)&&!(c==="BODY"&&(!g||g.position!=="absolute"))){e+=a.offsetLeft;f+=a.offsetTop}if(i!==null&&b){if(c!=="TABLE"&&c!=="TD"&&c!=="HTML"){e+=parseInt(b.borderLeftWidth)||0;f+=parseInt(b.borderTopWidth)||0}if(c==="TABLE"&&(b.position==="relative"||b.position==="absolute")){e+=parseInt(b.marginLeft)||0;f+=parseInt(b.marginTop)||0}}}b=Sys.UI.DomElement._getCurrentStyle(d);var h=b?b.position:null;if(!h||h!=="absolute")for(a=d.parentNode;a;a=a.parentNode){c=a.tagName?a.tagName.toUpperCase():null;if(c!=="BODY"&&c!=="HTML"&&(a.scrollLeft||a.scrollTop)){e-=a.scrollLeft||0;f-=a.scrollTop||0;b=Sys.UI.DomElement._getCurrentStyle(a);if(b){e+=parseInt(b.borderLeftWidth)||0;f+=parseInt(b.borderTopWidth)||0}}}return new Sys.UI.Point(e,f)};Sys.UI.DomElement.isDomElement=function(a){return Sys._isDomElement(a)};Sys.UI.DomElement.removeCssClass=function(d,c){var a=" "+d.className+" ",b=a.indexOf(" "+c+" ");if(b>=0)d.className=(a.substr(0,b)+" "+a.substring(b+c.length+1,a.length)).trim()};Sys.UI.DomElement.resolveElement=function(b,c){var a=b;if(!a)return null;if(typeof a==="string")a=Sys.UI.DomElement.getElementById(a,c);return a};Sys.UI.DomElement.raiseBubbleEvent=function(c,d){var b=c;while(b){var a=b.control;if(a&&a.onBubbleEvent&&a.raiseBubbleEvent){Sys.UI.DomElement._raiseBubbleEventFromControl(a,c,d);return}b=b.parentNode}};Sys.UI.DomElement._raiseBubbleEventFromControl=function(a,b,c){if(!a.onBubbleEvent(b,c))a._raiseBubbleEvent(b,c)};Sys.UI.DomElement.setLocation=function(b,c,d){var a=b.style;a.position="absolute";a.left=c+"px";a.top=d+"px"};Sys.UI.DomElement.toggleCssClass=function(b,a){if(Sys.UI.DomElement.containsCssClass(b,a))Sys.UI.DomElement.removeCssClass(b,a);else Sys.UI.DomElement.addCssClass(b,a)};Sys.UI.DomElement.getVisibilityMode=function(a){return a._visibilityMode===Sys.UI.VisibilityMode.hide?Sys.UI.VisibilityMode.hide:Sys.UI.VisibilityMode.collapse};Sys.UI.DomElement.setVisibilityMode=function(a,b){Sys.UI.DomElement._ensureOldDisplayMode(a);if(a._visibilityMode!==b){a._visibilityMode=b;if(Sys.UI.DomElement.getVisible(a)===false)if(a._visibilityMode===Sys.UI.VisibilityMode.hide)a.style.display=a._oldDisplayMode;else a.style.display="none";a._visibilityMode=b}};Sys.UI.DomElement.getVisible=function(b){var a=b.currentStyle||Sys.UI.DomElement._getCurrentStyle(b);if(!a)return true;return a.visibility!=="hidden"&&a.display!=="none"};Sys.UI.DomElement.setVisible=function(a,b){if(b!==Sys.UI.DomElement.getVisible(a)){Sys.UI.DomElement._ensureOldDisplayMode(a);a.style.visibility=b?"visible":"hidden";if(b||a._visibilityMode===Sys.UI.VisibilityMode.hide)a.style.display=a._oldDisplayMode;else a.style.display="none"}};Sys.UI.DomElement._ensureOldDisplayMode=function(a){if(!a._oldDisplayMode){var b=a.currentStyle||Sys.UI.DomElement._getCurrentStyle(a);a._oldDisplayMode=b?b.display:null;if(!a._oldDisplayMode||a._oldDisplayMode==="none")switch(a.tagName.toUpperCase()){case "DIV":case "P":case "ADDRESS":case "BLOCKQUOTE":case "BODY":case "COL":case "COLGROUP":case "DD":case "DL":case "DT":case "FIELDSET":case "FORM":case "H1":case "H2":case "H3":case "H4":case "H5":case "H6":case "HR":case "IFRAME":case "LEGEND":case "OL":case "PRE":case "TABLE":case "TD":case "TH":case "TR":case "UL":a._oldDisplayMode="block";break;case "LI":a._oldDisplayMode="list-item";break;default:a._oldDisplayMode="inline"}}};Sys.UI.DomElement._getWindow=function(a){var b=a.ownerDocument||a.document||a;return b.defaultView||b.parentWindow};Sys.UI.DomElement._getCurrentStyle=function(a){if(a.nodeType===3)return null;var c=Sys.UI.DomElement._getWindow(a);if(a.documentElement)a=a.documentElement;var b=c&&a!==c&&c.getComputedStyle?c.getComputedStyle(a,null):a.currentStyle||a.style;if(!b&&Sys.Browser.agent===Sys.Browser.Safari&&a.style){var g=a.style.display,f=a.style.position;a.style.position="absolute";a.style.display="block";var e=c.getComputedStyle(a,null);a.style.display=g;a.style.position=f;b={};for(var d in e)b[d]=e[d];b.display="none"}return b};Sys.IContainer=function(){};Sys.IContainer.prototype={};Sys.IContainer.registerInterface("Sys.IContainer");Sys.ApplicationLoadEventArgs=function(b,a){Sys.ApplicationLoadEventArgs.initializeBase(this);this._components=b;this._isPartialLoad=a};Sys.ApplicationLoadEventArgs.prototype={get_components:function(){return this._components},get_isPartialLoad:function(){return this._isPartialLoad}};Sys.ApplicationLoadEventArgs.registerClass("Sys.ApplicationLoadEventArgs",Sys.EventArgs);Sys._Application=function(){Sys._Application.initializeBase(this);this._disposableObjects=[];this._components={};this._createdComponents=[];this._secondPassComponents=[];this._unloadHandlerDelegate=Function.createDelegate(this,this._unloadHandler);Sys.UI.DomEvent.addHandler(window,"unload",this._unloadHandlerDelegate);this._domReady()};Sys._Application.prototype={_creatingComponents:false,_disposing:false,_deleteCount:0,get_isCreatingComponents:function(){return this._creatingComponents},get_isDisposing:function(){return this._disposing},add_init:function(a){if(this._initialized)a(this,Sys.EventArgs.Empty);else this.get_events().addHandler("init",a)},remove_init:function(a){this.get_events().removeHandler("init",a)},add_load:function(a){this.get_events().addHandler("load",a)},remove_load:function(a){this.get_events().removeHandler("load",a)},add_unload:function(a){this.get_events().addHandler("unload",a)},remove_unload:function(a){this.get_events().removeHandler("unload",a)},addComponent:function(a){this._components[a.get_id()]=a},beginCreateComponents:function(){this._creatingComponents=true},dispose:function(){if(!this._disposing){this._disposing=true;if(this._timerCookie){window.clearTimeout(this._timerCookie);delete this._timerCookie}if(this._endRequestHandler){Sys.WebForms.PageRequestManager.getInstance().remove_endRequest(this._endRequestHandler);delete this._endRequestHandler}if(this._beginRequestHandler){Sys.WebForms.PageRequestManager.getInstance().remove_beginRequest(this._beginRequestHandler);delete this._beginRequestHandler}if(window.pageUnload)window.pageUnload(this,Sys.EventArgs.Empty);var c=this.get_events().getHandler("unload");if(c)c(this,Sys.EventArgs.Empty);var b=Array.clone(this._disposableObjects);for(var a=0,f=b.length;a=0;b--)this._disposeElementInternal(c[b]);if(!d)this._disposeElementInternal(a)}},endCreateComponents:function(){var b=this._secondPassComponents;for(var a=0,d=b.length;a1000){var c=[];for(var d=0,f=b.length;d=0;b--){var c=a[b];if(typeof c.dispose==="function")c.dispose()}},_disposeElementInternal:function(a){var d=a.dispose;if(d&&typeof d==="function")a.dispose();else{var c=a.control;if(c&&typeof c.dispose==="function")c.dispose()}var b=a._behaviors;if(b)this._disposeComponents(b);b=a._components;if(b){this._disposeComponents(b);a._components=null}},_domReady:function(){var a,g,f=this;function b(){f.initialize()}var c=function(){Sys.UI.DomEvent.removeHandler(window,"load",c);b()};Sys.UI.DomEvent.addHandler(window,"load",c);if(document.addEventListener)try{document.addEventListener("DOMContentLoaded",a=function(){document.removeEventListener("DOMContentLoaded",a,false);b()},false)}catch(h){}else if(document.attachEvent)if(window==window.top&&document.documentElement.doScroll){var e,d=document.createElement("div");a=function(){try{d.doScroll("left")}catch(c){e=window.setTimeout(a,0);return}d=null;b()};a()}else document.attachEvent("onreadystatechange",a=function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",a);b()}})},_raiseInit:function(){var a=this.get_events().getHandler("init");if(a){this.beginCreateComponents();a(this,Sys.EventArgs.Empty);this.endCreateComponents()}},_unloadHandler:function(){this.dispose()}};Sys._Application.registerClass("Sys._Application",Sys.Component,Sys.IContainer);Sys.Application=new Sys._Application;var $find=Sys.Application.findComponent;Sys.UI.Behavior=function(b){Sys.UI.Behavior.initializeBase(this);this._element=b;var a=b._behaviors;if(!a)b._behaviors=[this];else a[a.length]=this};Sys.UI.Behavior.prototype={_name:null,get_element:function(){return this._element},get_id:function(){var a=Sys.UI.Behavior.callBaseMethod(this,"get_id");if(a)return a;if(!this._element||!this._element.id)return "";return this._element.id+"$"+this.get_name()},get_name:function(){if(this._name)return this._name;var a=Object.getTypeName(this),b=a.lastIndexOf(".");if(b!==-1)a=a.substr(b+1);if(!this.get_isInitialized())this._name=a;return a},set_name:function(a){this._name=a},initialize:function(){Sys.UI.Behavior.callBaseMethod(this,"initialize");var a=this.get_name();if(a)this._element[a]=this},dispose:function(){Sys.UI.Behavior.callBaseMethod(this,"dispose");var a=this._element;if(a){var c=this.get_name();if(c)a[c]=null;var b=a._behaviors;Array.remove(b,this);if(b.length===0)a._behaviors=null;delete this._element}}};Sys.UI.Behavior.registerClass("Sys.UI.Behavior",Sys.Component);Sys.UI.Behavior.getBehaviorByName=function(b,c){var a=b[c];return a&&Sys.UI.Behavior.isInstanceOfType(a)?a:null};Sys.UI.Behavior.getBehaviors=function(a){if(!a._behaviors)return [];return Array.clone(a._behaviors)};Sys.UI.Behavior.getBehaviorsByType=function(d,e){var a=d._behaviors,c=[];if(a)for(var b=0,f=a.length;b0&&a.charAt(0)==="#")a=a.substring(1);return a};Sys._Application.prototype.get_enableHistory=function(){return this._enableHistory};Sys._Application.prototype.set_enableHistory=function(a){this._enableHistory=a};Sys._Application.prototype.add_navigate=function(a){this.get_events().addHandler("navigate",a)};Sys._Application.prototype.remove_navigate=function(a){this.get_events().removeHandler("navigate",a)};Sys._Application.prototype.addHistoryPoint=function(c,f){this._ensureHistory();var b=this._state;for(var a in c){var d=c[a];if(d===null){if(typeof b[a]!=="undefined")delete b[a]}else b[a]=d}var e=this._serializeState(b);this._historyPointIsNew=true;this._setState(e,f);this._raiseNavigate()};Sys._Application.prototype.setServerId=function(a,b){this._clientId=a;this._uniqueId=b};Sys._Application.prototype.setServerState=function(a){this._ensureHistory();this._state.__s=a;this._updateHiddenField(a)};Sys._Application.prototype._deserializeState=function(a){var e={};a=a||"";var b=a.indexOf("&&");if(b!==-1&&b+2'");c.write(""+(b||document.title)+"parent.Sys.Application._onIFrameLoad('+Sys.Serialization.JavaScriptSerializer.serialize(a)+");");c.close()}this._ignoreTimer=false;this._currentEntry=a;if(this._historyFrame||this._historyPointIsNew){var f=this.get_stateString();if(a!==f){window.location.hash=a;this._currentEntry=this.get_stateString();if(typeof b!=="undefined"&&b!==null)document.title=b}}this._historyPointIsNew=false}}};Sys._Application.prototype._updateHiddenField=function(b){if(this._clientId){var a=document.getElementById(this._clientId);if(a)a.value=b}};if(!window.XMLHttpRequest)window.XMLHttpRequest=function(){var b=["Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP"];for(var a=0,c=b.length;a0)this._timer=window.setTimeout(Function.createDelegate(this,this._onTimeout),d);this._xmlHttpRequest.send(c);this._started=true},getResponseHeader:function(b){var a;try{a=this._xmlHttpRequest.getResponseHeader(b)}catch(c){}if(!a)a="";return a},getAllResponseHeaders:function(){return this._xmlHttpRequest.getAllResponseHeaders()},get_responseData:function(){return this._xmlHttpRequest.responseText},get_statusCode:function(){var a=0;try{a=this._xmlHttpRequest.status}catch(b){}return a},get_statusText:function(){return this._xmlHttpRequest.statusText},get_xml:function(){var a=this._xmlHttpRequest.responseXML;if(!a||!a.documentElement){a=Sys.Net.XMLDOM(this._xmlHttpRequest.responseText);if(!a||!a.documentElement)return null}else if(navigator.userAgent.indexOf("MSIE")!==-1)a.setProperty("SelectionLanguage","XPath");if(a.documentElement.namespaceURI==="http://www.mozilla.org/newlayout/xml/parsererror.xml"&&a.documentElement.tagName==="parsererror")return null;if(a.documentElement.firstChild&&a.documentElement.firstChild.tagName==="parsererror")return null;return a},abort:function(){if(this._aborted||this._responseAvailable||this._timedOut)return;this._aborted=true;this._clearTimer();if(this._xmlHttpRequest&&!this._responseAvailable){this._xmlHttpRequest.onreadystatechange=Function.emptyMethod;this._xmlHttpRequest.abort();this._xmlHttpRequest=null;this._webRequest.completed(Sys.EventArgs.Empty)}}};Sys.Net.XMLHttpExecutor.registerClass("Sys.Net.XMLHttpExecutor",Sys.Net.WebRequestExecutor);Sys.Net._WebRequestManager=function(){this._defaultTimeout=0;this._defaultExecutorType="Sys.Net.XMLHttpExecutor"};Sys.Net._WebRequestManager.prototype={add_invokingRequest:function(a){this._get_eventHandlerList().addHandler("invokingRequest",a)},remove_invokingRequest:function(a){this._get_eventHandlerList().removeHandler("invokingRequest",a)},add_completedRequest:function(a){this._get_eventHandlerList().addHandler("completedRequest",a)},remove_completedRequest:function(a){this._get_eventHandlerList().removeHandler("completedRequest",a)},_get_eventHandlerList:function(){if(!this._events)this._events=new Sys.EventHandlerList;return this._events},get_defaultTimeout:function(){return this._defaultTimeout},set_defaultTimeout:function(a){this._defaultTimeout=a},get_defaultExecutorType:function(){return this._defaultExecutorType},set_defaultExecutorType:function(a){this._defaultExecutorType=a},executeRequest:function(webRequest){var executor=webRequest.get_executor();if(!executor){var failed=false;try{var executorType=eval(this._defaultExecutorType);executor=new executorType}catch(a){failed=true}webRequest.set_executor(executor)}if(executor.get_aborted())return;var evArgs=new Sys.Net.NetworkRequestEventArgs(webRequest),handler=this._get_eventHandlerList().getHandler("invokingRequest");if(handler)handler(this,evArgs);if(!evArgs.get_cancel())executor.executeRequest()}};Sys.Net._WebRequestManager.registerClass("Sys.Net._WebRequestManager");Sys.Net.WebRequestManager=new Sys.Net._WebRequestManager;Sys.Net.NetworkRequestEventArgs=function(a){Sys.Net.NetworkRequestEventArgs.initializeBase(this);this._webRequest=a};Sys.Net.NetworkRequestEventArgs.prototype={get_webRequest:function(){return this._webRequest}};Sys.Net.NetworkRequestEventArgs.registerClass("Sys.Net.NetworkRequestEventArgs",Sys.CancelEventArgs);Sys.Net.WebRequest=function(){this._url="";this._headers={};this._body=null;this._userContext=null;this._httpVerb=null;this._executor=null;this._invokeCalled=false;this._timeout=0};Sys.Net.WebRequest.prototype={add_completed:function(a){this._get_eventHandlerList().addHandler("completed",a)},remove_completed:function(a){this._get_eventHandlerList().removeHandler("completed",a)},completed:function(b){var a=Sys.Net.WebRequestManager._get_eventHandlerList().getHandler("completedRequest");if(a)a(this._executor,b);a=this._get_eventHandlerList().getHandler("completed");if(a)a(this._executor,b)},_get_eventHandlerList:function(){if(!this._events)this._events=new Sys.EventHandlerList;return this._events},get_url:function(){return this._url},set_url:function(a){this._url=a},get_headers:function(){return this._headers},get_httpVerb:function(){if(this._httpVerb===null){if(this._body===null)return "GET";return "POST"}return this._httpVerb},set_httpVerb:function(a){this._httpVerb=a},get_body:function(){return this._body},set_body:function(a){this._body=a},get_userContext:function(){return this._userContext},set_userContext:function(a){this._userContext=a},get_executor:function(){return this._executor},set_executor:function(a){this._executor=a;this._executor._set_webRequest(this)},get_timeout:function(){if(this._timeout===0)return Sys.Net.WebRequestManager.get_defaultTimeout();return this._timeout},set_timeout:function(a){this._timeout=a},getResolvedUrl:function(){return Sys.Net.WebRequest._resolveUrl(this._url)},invoke:function(){Sys.Net.WebRequestManager.executeRequest(this);this._invokeCalled=true}};Sys.Net.WebRequest._resolveUrl=function(b,a){if(b&&b.indexOf("://")!==-1)return b;if(!a||a.length===0){var d=document.getElementsByTagName("base")[0];if(d&&d.href&&d.href.length>0)a=d.href;else a=document.URL}var c=a.indexOf("?");if(c!==-1)a=a.substr(0,c);c=a.indexOf("#");if(c!==-1)a=a.substr(0,c);a=a.substr(0,a.lastIndexOf("/")+1);if(!b||b.length===0)return a;if(b.charAt(0)==="/"){var e=a.indexOf("://"),g=a.indexOf("/",e+3);return a.substr(0,g)+b}else{var f=a.lastIndexOf("/");return a.substr(0,f+1)+b}};Sys.Net.WebRequest._createQueryString=function(c,b,f){b=b||encodeURIComponent;var h=0,e,g,d,a=new Sys.StringBuilder;if(c)for(d in c){e=c[d];if(typeof e==="function")continue;g=Sys.Serialization.JavaScriptSerializer.serialize(e);if(h++)a.append("&");a.append(d);a.append("=");a.append(b(g))}if(f){if(h)a.append("&");a.append(f)}return a.toString()};Sys.Net.WebRequest._createUrl=function(a,b,c){if(!b&&!c)return a;var d=Sys.Net.WebRequest._createQueryString(b,null,c);return d.length?a+(a&&a.indexOf("?")>=0?"&":"?")+d:a};Sys.Net.WebRequest.registerClass("Sys.Net.WebRequest");Sys._ScriptLoaderTask=function(b,a){this._scriptElement=b;this._completedCallback=a};Sys._ScriptLoaderTask.prototype={get_scriptElement:function(){return this._scriptElement},dispose:function(){if(this._disposed)return;this._disposed=true;this._removeScriptElementHandlers();Sys._ScriptLoaderTask._clearScript(this._scriptElement);this._scriptElement=null},execute:function(){this._addScriptElementHandlers();document.getElementsByTagName("head")[0].appendChild(this._scriptElement)},_addScriptElementHandlers:function(){this._scriptLoadDelegate=Function.createDelegate(this,this._scriptLoadHandler);if(Sys.Browser.agent!==Sys.Browser.InternetExplorer){this._scriptElement.readyState="loaded";$addHandler(this._scriptElement,"load",this._scriptLoadDelegate)}else $addHandler(this._scriptElement,"readystatechange",this._scriptLoadDelegate);if(this._scriptElement.addEventListener){this._scriptErrorDelegate=Function.createDelegate(this,this._scriptErrorHandler);this._scriptElement.addEventListener("error",this._scriptErrorDelegate,false)}},_removeScriptElementHandlers:function(){if(this._scriptLoadDelegate){var a=this.get_scriptElement();if(Sys.Browser.agent!==Sys.Browser.InternetExplorer)$removeHandler(a,"load",this._scriptLoadDelegate);else $removeHandler(a,"readystatechange",this._scriptLoadDelegate);if(this._scriptErrorDelegate){this._scriptElement.removeEventListener("error",this._scriptErrorDelegate,false);this._scriptErrorDelegate=null}this._scriptLoadDelegate=null}},_scriptErrorHandler:function(){if(this._disposed)return;this._completedCallback(this.get_scriptElement(),false)},_scriptLoadHandler:function(){if(this._disposed)return;var a=this.get_scriptElement();if(a.readyState!=="loaded"&&a.readyState!=="complete")return;this._completedCallback(a,true)}};Sys._ScriptLoaderTask.registerClass("Sys._ScriptLoaderTask",null,Sys.IDisposable);Sys._ScriptLoaderTask._clearScript=function(a){if(!Sys.Debug.isDebug)a.parentNode.removeChild(a)};Type.registerNamespace("Sys.Net");Sys.Net.WebServiceProxy=function(){};Sys.Net.WebServiceProxy.prototype={get_timeout:function(){return this._timeout||0},set_timeout:function(a){if(a<0)throw Error.argumentOutOfRange("value",a,Sys.Res.invalidTimeout);this._timeout=a},get_defaultUserContext:function(){return typeof this._userContext==="undefined"?null:this._userContext},set_defaultUserContext:function(a){this._userContext=a},get_defaultSucceededCallback:function(){return this._succeeded||null},set_defaultSucceededCallback:function(a){this._succeeded=a},get_defaultFailedCallback:function(){return this._failed||null},set_defaultFailedCallback:function(a){this._failed=a},get_enableJsonp:function(){return !!this._jsonp},set_enableJsonp:function(a){this._jsonp=a},get_path:function(){return this._path||null},set_path:function(a){this._path=a},get_jsonpCallbackParameter:function(){return this._callbackParameter||"callback"},set_jsonpCallbackParameter:function(a){this._callbackParameter=a},_invoke:function(d,e,g,f,c,b,a){c=c||this.get_defaultSucceededCallback();b=b||this.get_defaultFailedCallback();if(a===null||typeof a==="undefined")a=this.get_defaultUserContext();return Sys.Net.WebServiceProxy.invoke(d,e,g,f,c,b,a,this.get_timeout(),this.get_enableJsonp(),this.get_jsonpCallbackParameter())}};Sys.Net.WebServiceProxy.registerClass("Sys.Net.WebServiceProxy");Sys.Net.WebServiceProxy.invoke=function(q,a,m,l,j,b,g,e,w,p){var i=w!==false?Sys.Net.WebServiceProxy._xdomain.exec(q):null,c,n=i&&i.length===3&&(i[1]!==location.protocol||i[2]!==location.host);m=n||m;if(n){p=p||"callback";c="_jsonp"+Sys._jsonp++}if(!l)l={};var r=l;if(!m||!r)r={};var s,h,f=null,k,o=null,u=Sys.Net.WebRequest._createUrl(a?q+"/"+encodeURIComponent(a):q,r,n?p+"=Sys."+c:null);if(n){s=document.createElement("script");s.src=u;k=new Sys._ScriptLoaderTask(s,function(d,b){if(!b||c)t({Message:String.format(Sys.Res.webServiceFailedNoMsg,a)},-1)});function v(){if(f===null)return;f=null;h=new Sys.Net.WebServiceError(true,String.format(Sys.Res.webServiceTimedOut,a));k.dispose();delete Sys[c];if(b)b(h,g,a)}function t(d,e){if(f!==null){window.clearTimeout(f);f=null}k.dispose();delete Sys[c];c=null;if(typeof e!=="undefined"&&e!==200){if(b){h=new Sys.Net.WebServiceError(false,d.Message||String.format(Sys.Res.webServiceFailedNoMsg,a),d.StackTrace||null,d.ExceptionType||null,d);h._statusCode=e;b(h,g,a)}}else if(j)j(d,g,a)}Sys[c]=t;e=e||Sys.Net.WebRequestManager.get_defaultTimeout();if(e>0)f=window.setTimeout(v,e);k.execute();return null}var d=new Sys.Net.WebRequest;d.set_url(u);d.get_headers()["Content-Type"]="application/json; charset=utf-8";if(!m){o=Sys.Serialization.JavaScriptSerializer.serialize(l);if(o==="{}")o=""}d.set_body(o);d.add_completed(x);if(e&&e>0)d.set_timeout(e);d.invoke();function x(d){if(d.get_responseAvailable()){var f=d.get_statusCode(),c=null;try{var e=d.getResponseHeader("Content-Type");if(e.startsWith("application/json"))c=d.get_object();else if(e.startsWith("text/xml"))c=d.get_xml();else c=d.get_responseData()}catch(m){}var k=d.getResponseHeader("jsonerror"),h=k==="true";if(h){if(c)c=new Sys.Net.WebServiceError(false,c.Message,c.StackTrace,c.ExceptionType,c)}else if(e.startsWith("application/json"))c=!c||typeof c.d==="undefined"?c:c.d;if(f<200||f>=300||h){if(b){if(!c||!h)c=new Sys.Net.WebServiceError(false,String.format(Sys.Res.webServiceFailedNoMsg,a));c._statusCode=f;b(c,g,a)}}else if(j)j(c,g,a)}else{var i;if(d.get_timedOut())i=String.format(Sys.Res.webServiceTimedOut,a);else i=String.format(Sys.Res.webServiceFailedNoMsg,a);if(b)b(new Sys.Net.WebServiceError(d.get_timedOut(),i,"",""),g,a)}}return d};Sys.Net.WebServiceProxy._generateTypedConstructor=function(a){return function(b){if(b)for(var c in b)this[c]=b[c];this.__type=a}};Sys._jsonp=0;Sys.Net.WebServiceProxy._xdomain=/^\s*([a-zA-Z0-9\+\-\.]+\:)\/\/([^?#\/]+)/;Sys.Net.WebServiceError=function(d,e,c,a,b){this._timedOut=d;this._message=e;this._stackTrace=c;this._exceptionType=a;this._errorObject=b;this._statusCode=-1};Sys.Net.WebServiceError.prototype={get_timedOut:function(){return this._timedOut},get_statusCode:function(){return this._statusCode},get_message:function(){return this._message},get_stackTrace:function(){return this._stackTrace||""},get_exceptionType:function(){return this._exceptionType||""},get_errorObject:function(){return this._errorObject||null}};Sys.Net.WebServiceError.registerClass("Sys.Net.WebServiceError"); -Type.registerNamespace('Sys');Sys.Res={'argumentInteger':'Value must be an integer.','invokeCalledTwice':'Cannot call invoke more than once.','webServiceFailed':'The server method \'{0}\' failed with the following error: {1}','argumentType':'Object cannot be converted to the required type.','argumentNull':'Value cannot be null.','scriptAlreadyLoaded':'The script \'{0}\' has been referenced multiple times. If referencing Microsoft AJAX scripts explicitly, set the MicrosoftAjaxMode property of the ScriptManager to Explicit.','scriptDependencyNotFound':'The script \'{0}\' failed to load because it is dependent on script \'{1}\'.','formatBadFormatSpecifier':'Format specifier was invalid.','requiredScriptReferenceNotIncluded':'\'{0}\' requires that you have included a script reference to \'{1}\'.','webServiceFailedNoMsg':'The server method \'{0}\' failed.','argumentDomElement':'Value must be a DOM element.','invalidExecutorType':'Could not create a valid Sys.Net.WebRequestExecutor from: {0}.','cannotCallBeforeResponse':'Cannot call {0} when responseAvailable is false.','actualValue':'Actual value was {0}.','enumInvalidValue':'\'{0}\' is not a valid value for enum {1}.','scriptLoadFailed':'The script \'{0}\' could not be loaded.','parameterCount':'Parameter count mismatch.','cannotDeserializeEmptyString':'Cannot deserialize empty string.','formatInvalidString':'Input string was not in a correct format.','invalidTimeout':'Value must be greater than or equal to zero.','cannotAbortBeforeStart':'Cannot abort when executor has not started.','argument':'Value does not fall within the expected range.','cannotDeserializeInvalidJson':'Cannot deserialize. The data does not correspond to valid JSON.','invalidHttpVerb':'httpVerb cannot be set to an empty or null string.','nullWebRequest':'Cannot call executeRequest with a null webRequest.','eventHandlerInvalid':'Handler was not added through the Sys.UI.DomEvent.addHandler method.','cannotSerializeNonFiniteNumbers':'Cannot serialize non finite numbers.','argumentUndefined':'Value cannot be undefined.','webServiceInvalidReturnType':'The server method \'{0}\' returned an invalid type. Expected type: {1}','servicePathNotSet':'The path to the web service has not been set.','argumentTypeWithTypes':'Object of type \'{0}\' cannot be converted to type \'{1}\'.','cannotCallOnceStarted':'Cannot call {0} once started.','badBaseUrl1':'Base URL does not contain ://.','badBaseUrl2':'Base URL does not contain another /.','badBaseUrl3':'Cannot find last / in base URL.','setExecutorAfterActive':'Cannot set executor after it has become active.','paramName':'Parameter name: {0}','nullReferenceInPath':'Null reference while evaluating data path: \'{0}\'.','cannotCallOutsideHandler':'Cannot call {0} outside of a completed event handler.','cannotSerializeObjectWithCycle':'Cannot serialize object with cyclic reference within child properties.','format':'One of the identified items was in an invalid format.','assertFailedCaller':'Assertion Failed: {0}\r\nat {1}','argumentOutOfRange':'Specified argument was out of the range of valid values.','webServiceTimedOut':'The server method \'{0}\' timed out.','notImplemented':'The method or operation is not implemented.','assertFailed':'Assertion Failed: {0}','invalidOperation':'Operation is not valid due to the current state of the object.','breakIntoDebugger':'{0}\r\n\r\nBreak into debugger?'}; diff --git a/NzbDrone.Web/Scripts/MicrosoftMvcAjax.debug.js b/NzbDrone.Web/Scripts/MicrosoftMvcAjax.debug.js deleted file mode 100644 index eb68ba7e7..000000000 --- a/NzbDrone.Web/Scripts/MicrosoftMvcAjax.debug.js +++ /dev/null @@ -1,408 +0,0 @@ -//!---------------------------------------------------------- -//! Copyright (C) Microsoft Corporation. All rights reserved. -//!---------------------------------------------------------- -//! MicrosoftMvcAjax.js - -Type.registerNamespace('Sys.Mvc'); - -//////////////////////////////////////////////////////////////////////////////// -// Sys.Mvc.AjaxOptions - -Sys.Mvc.$create_AjaxOptions = function Sys_Mvc_AjaxOptions() { return {}; } - - -//////////////////////////////////////////////////////////////////////////////// -// Sys.Mvc.InsertionMode - -Sys.Mvc.InsertionMode = function() { - /// - /// - /// - /// - /// - /// -}; -Sys.Mvc.InsertionMode.prototype = { - replace: 0, - insertBefore: 1, - insertAfter: 2 -} -Sys.Mvc.InsertionMode.registerEnum('Sys.Mvc.InsertionMode', false); - - -//////////////////////////////////////////////////////////////////////////////// -// Sys.Mvc.AjaxContext - -Sys.Mvc.AjaxContext = function Sys_Mvc_AjaxContext(request, updateTarget, loadingElement, insertionMode) { - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - this._request = request; - this._updateTarget = updateTarget; - this._loadingElement = loadingElement; - this._insertionMode = insertionMode; -} -Sys.Mvc.AjaxContext.prototype = { - _insertionMode: 0, - _loadingElement: null, - _response: null, - _request: null, - _updateTarget: null, - - get_data: function Sys_Mvc_AjaxContext$get_data() { - /// - if (this._response) { - return this._response.get_responseData(); - } - else { - return null; - } - }, - - get_insertionMode: function Sys_Mvc_AjaxContext$get_insertionMode() { - /// - return this._insertionMode; - }, - - get_loadingElement: function Sys_Mvc_AjaxContext$get_loadingElement() { - /// - return this._loadingElement; - }, - - get_object: function Sys_Mvc_AjaxContext$get_object() { - /// - var executor = this.get_response(); - return (executor) ? executor.get_object() : null; - }, - - get_response: function Sys_Mvc_AjaxContext$get_response() { - /// - return this._response; - }, - set_response: function Sys_Mvc_AjaxContext$set_response(value) { - /// - this._response = value; - return value; - }, - - get_request: function Sys_Mvc_AjaxContext$get_request() { - /// - return this._request; - }, - - get_updateTarget: function Sys_Mvc_AjaxContext$get_updateTarget() { - /// - return this._updateTarget; - } -} - - -//////////////////////////////////////////////////////////////////////////////// -// Sys.Mvc.AsyncHyperlink - -Sys.Mvc.AsyncHyperlink = function Sys_Mvc_AsyncHyperlink() { -} -Sys.Mvc.AsyncHyperlink.handleClick = function Sys_Mvc_AsyncHyperlink$handleClick(anchor, evt, ajaxOptions) { - /// - /// - /// - /// - /// - /// - evt.preventDefault(); - Sys.Mvc.MvcHelpers._asyncRequest(anchor.href, 'post', '', anchor, ajaxOptions); -} - - -//////////////////////////////////////////////////////////////////////////////// -// Sys.Mvc.MvcHelpers - -Sys.Mvc.MvcHelpers = function Sys_Mvc_MvcHelpers() { -} -Sys.Mvc.MvcHelpers._serializeSubmitButton = function Sys_Mvc_MvcHelpers$_serializeSubmitButton(element, offsetX, offsetY) { - /// - /// - /// - /// - /// - /// - /// - if (element.disabled) { - return null; - } - var name = element.name; - if (name) { - var tagName = element.tagName.toUpperCase(); - var encodedName = encodeURIComponent(name); - var inputElement = element; - if (tagName === 'INPUT') { - var type = inputElement.type; - if (type === 'submit') { - return encodedName + '=' + encodeURIComponent(inputElement.value); - } - else if (type === 'image') { - return encodedName + '.x=' + offsetX + '&' + encodedName + '.y=' + offsetY; - } - } - else if ((tagName === 'BUTTON') && (name.length) && (inputElement.type === 'submit')) { - return encodedName + '=' + encodeURIComponent(inputElement.value); - } - } - return null; -} -Sys.Mvc.MvcHelpers._serializeForm = function Sys_Mvc_MvcHelpers$_serializeForm(form) { - /// - /// - /// - var formElements = form.elements; - var formBody = new Sys.StringBuilder(); - var count = formElements.length; - for (var i = 0; i < count; i++) { - var element = formElements[i]; - var name = element.name; - if (!name || !name.length) { - continue; - } - var tagName = element.tagName.toUpperCase(); - if (tagName === 'INPUT') { - var inputElement = element; - var type = inputElement.type; - if ((type === 'text') || (type === 'password') || (type === 'hidden') || (((type === 'checkbox') || (type === 'radio')) && element.checked)) { - formBody.append(encodeURIComponent(name)); - formBody.append('='); - formBody.append(encodeURIComponent(inputElement.value)); - formBody.append('&'); - } - } - else if (tagName === 'SELECT') { - var selectElement = element; - var optionCount = selectElement.options.length; - for (var j = 0; j < optionCount; j++) { - var optionElement = selectElement.options[j]; - if (optionElement.selected) { - formBody.append(encodeURIComponent(name)); - formBody.append('='); - formBody.append(encodeURIComponent(optionElement.value)); - formBody.append('&'); - } - } - } - else if (tagName === 'TEXTAREA') { - formBody.append(encodeURIComponent(name)); - formBody.append('='); - formBody.append(encodeURIComponent((element.value))); - formBody.append('&'); - } - } - var additionalInput = form._additionalInput; - if (additionalInput) { - formBody.append(additionalInput); - formBody.append('&'); - } - return formBody.toString(); -} -Sys.Mvc.MvcHelpers._asyncRequest = function Sys_Mvc_MvcHelpers$_asyncRequest(url, verb, body, triggerElement, ajaxOptions) { - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - if (ajaxOptions.confirm) { - if (!confirm(ajaxOptions.confirm)) { - return; - } - } - if (ajaxOptions.url) { - url = ajaxOptions.url; - } - if (ajaxOptions.httpMethod) { - verb = ajaxOptions.httpMethod; - } - if (body.length > 0 && !body.endsWith('&')) { - body += '&'; - } - body += 'X-Requested-With=XMLHttpRequest'; - var upperCaseVerb = verb.toUpperCase(); - var isGetOrPost = (upperCaseVerb === 'GET' || upperCaseVerb === 'POST'); - if (!isGetOrPost) { - body += '&'; - body += 'X-HTTP-Method-Override=' + upperCaseVerb; - } - var requestBody = ''; - if (upperCaseVerb === 'GET' || upperCaseVerb === 'DELETE') { - if (url.indexOf('?') > -1) { - if (!url.endsWith('&')) { - url += '&'; - } - url += body; - } - else { - url += '?'; - url += body; - } - } - else { - requestBody = body; - } - var request = new Sys.Net.WebRequest(); - request.set_url(url); - if (isGetOrPost) { - request.set_httpVerb(verb); - } - else { - request.set_httpVerb('POST'); - request.get_headers()['X-HTTP-Method-Override'] = upperCaseVerb; - } - request.set_body(requestBody); - if (verb.toUpperCase() === 'PUT') { - request.get_headers()['Content-Type'] = 'application/x-www-form-urlencoded;'; - } - request.get_headers()['X-Requested-With'] = 'XMLHttpRequest'; - var updateElement = null; - if (ajaxOptions.updateTargetId) { - updateElement = $get(ajaxOptions.updateTargetId); - } - var loadingElement = null; - if (ajaxOptions.loadingElementId) { - loadingElement = $get(ajaxOptions.loadingElementId); - } - var ajaxContext = new Sys.Mvc.AjaxContext(request, updateElement, loadingElement, ajaxOptions.insertionMode); - var continueRequest = true; - if (ajaxOptions.onBegin) { - continueRequest = ajaxOptions.onBegin(ajaxContext) !== false; - } - if (loadingElement) { - Sys.UI.DomElement.setVisible(ajaxContext.get_loadingElement(), true); - } - if (continueRequest) { - request.add_completed(Function.createDelegate(null, function(executor) { - Sys.Mvc.MvcHelpers._onComplete(request, ajaxOptions, ajaxContext); - })); - request.invoke(); - } -} -Sys.Mvc.MvcHelpers._onComplete = function Sys_Mvc_MvcHelpers$_onComplete(request, ajaxOptions, ajaxContext) { - /// - /// - /// - /// - /// - /// - ajaxContext.set_response(request.get_executor()); - if (ajaxOptions.onComplete && ajaxOptions.onComplete(ajaxContext) === false) { - return; - } - var statusCode = ajaxContext.get_response().get_statusCode(); - if ((statusCode >= 200 && statusCode < 300) || statusCode === 304 || statusCode === 1223) { - if (statusCode !== 204 && statusCode !== 304 && statusCode !== 1223) { - var contentType = ajaxContext.get_response().getResponseHeader('Content-Type'); - if ((contentType) && (contentType.indexOf('application/x-javascript') !== -1)) { - eval(ajaxContext.get_data()); - } - else { - Sys.Mvc.MvcHelpers.updateDomElement(ajaxContext.get_updateTarget(), ajaxContext.get_insertionMode(), ajaxContext.get_data()); - } - } - if (ajaxOptions.onSuccess) { - ajaxOptions.onSuccess(ajaxContext); - } - } - else { - if (ajaxOptions.onFailure) { - ajaxOptions.onFailure(ajaxContext); - } - } - if (ajaxContext.get_loadingElement()) { - Sys.UI.DomElement.setVisible(ajaxContext.get_loadingElement(), false); - } -} -Sys.Mvc.MvcHelpers.updateDomElement = function Sys_Mvc_MvcHelpers$updateDomElement(target, insertionMode, content) { - /// - /// - /// - /// - /// - /// - if (target) { - switch (insertionMode) { - case Sys.Mvc.InsertionMode.replace: - target.innerHTML = content; - break; - case Sys.Mvc.InsertionMode.insertBefore: - if (content && content.length > 0) { - target.innerHTML = content + target.innerHTML.trimStart(); - } - break; - case Sys.Mvc.InsertionMode.insertAfter: - if (content && content.length > 0) { - target.innerHTML = target.innerHTML.trimEnd() + content; - } - break; - } - } -} - - -//////////////////////////////////////////////////////////////////////////////// -// Sys.Mvc.AsyncForm - -Sys.Mvc.AsyncForm = function Sys_Mvc_AsyncForm() { -} -Sys.Mvc.AsyncForm.handleClick = function Sys_Mvc_AsyncForm$handleClick(form, evt) { - /// - /// - /// - /// - var additionalInput = Sys.Mvc.MvcHelpers._serializeSubmitButton(evt.target, evt.offsetX, evt.offsetY); - form._additionalInput = additionalInput; -} -Sys.Mvc.AsyncForm.handleSubmit = function Sys_Mvc_AsyncForm$handleSubmit(form, evt, ajaxOptions) { - /// - /// - /// - /// - /// - /// - evt.preventDefault(); - var validationCallbacks = form.validationCallbacks; - if (validationCallbacks) { - for (var i = 0; i < validationCallbacks.length; i++) { - var callback = validationCallbacks[i]; - if (!callback()) { - return; - } - } - } - var body = Sys.Mvc.MvcHelpers._serializeForm(form); - Sys.Mvc.MvcHelpers._asyncRequest(form.action, form.method || 'post', body, form, ajaxOptions); -} - - -Sys.Mvc.AjaxContext.registerClass('Sys.Mvc.AjaxContext'); -Sys.Mvc.AsyncHyperlink.registerClass('Sys.Mvc.AsyncHyperlink'); -Sys.Mvc.MvcHelpers.registerClass('Sys.Mvc.MvcHelpers'); -Sys.Mvc.AsyncForm.registerClass('Sys.Mvc.AsyncForm'); - -// ---- Do not remove this footer ---- -// Generated using Script# v0.5.0.0 (http://projects.nikhilk.net) -// ----------------------------------- diff --git a/NzbDrone.Web/Scripts/MicrosoftMvcAjax.js b/NzbDrone.Web/Scripts/MicrosoftMvcAjax.js deleted file mode 100644 index c5a6165e7..000000000 --- a/NzbDrone.Web/Scripts/MicrosoftMvcAjax.js +++ /dev/null @@ -1,25 +0,0 @@ -//---------------------------------------------------------- -// Copyright (C) Microsoft Corporation. All rights reserved. -//---------------------------------------------------------- -// MicrosoftMvcAjax.js - -Type.registerNamespace('Sys.Mvc');Sys.Mvc.$create_AjaxOptions=function(){return {};} -Sys.Mvc.InsertionMode=function(){};Sys.Mvc.InsertionMode.prototype = {replace:0,insertBefore:1,insertAfter:2} -Sys.Mvc.InsertionMode.registerEnum('Sys.Mvc.InsertionMode',false);Sys.Mvc.AjaxContext=function(request,updateTarget,loadingElement,insertionMode){this.$3=request;this.$4=updateTarget;this.$1=loadingElement;this.$0=insertionMode;} -Sys.Mvc.AjaxContext.prototype={$0:0,$1:null,$2:null,$3:null,$4:null,get_data:function(){if(this.$2){return this.$2.get_responseData();}else{return null;}},get_insertionMode:function(){return this.$0;},get_loadingElement:function(){return this.$1;},get_object:function(){var $0=this.get_response();return ($0)?$0.get_object():null;},get_response:function(){return this.$2;},set_response:function(value){this.$2=value;return value;},get_request:function(){return this.$3;},get_updateTarget:function(){return this.$4;}} -Sys.Mvc.AsyncHyperlink=function(){} -Sys.Mvc.AsyncHyperlink.handleClick=function(anchor,evt,ajaxOptions){evt.preventDefault();Sys.Mvc.MvcHelpers.$2(anchor.href,'post','',anchor,ajaxOptions);} -Sys.Mvc.MvcHelpers=function(){} -Sys.Mvc.MvcHelpers.$0=function($p0,$p1,$p2){if($p0.disabled){return null;}var $0=$p0.name;if($0){var $1=$p0.tagName.toUpperCase();var $2=encodeURIComponent($0);var $3=$p0;if($1==='INPUT'){var $4=$3.type;if($4==='submit'){return $2+'='+encodeURIComponent($3.value);}else if($4==='image'){return $2+'.x='+$p1+'&'+$2+'.y='+$p2;}}else if(($1==='BUTTON')&&($0.length)&&($3.type==='submit')){return $2+'='+encodeURIComponent($3.value);}}return null;} -Sys.Mvc.MvcHelpers.$1=function($p0){var $0=$p0.elements;var $1=new Sys.StringBuilder();var $2=$0.length;for(var $4=0;$4<$2;$4++){var $5=$0[$4];var $6=$5.name;if(!$6||!$6.length){continue;}var $7=$5.tagName.toUpperCase();if($7==='INPUT'){var $8=$5;var $9=$8.type;if(($9==='text')||($9==='password')||($9==='hidden')||((($9==='checkbox')||($9==='radio'))&&$5.checked)){$1.append(encodeURIComponent($6));$1.append('=');$1.append(encodeURIComponent($8.value));$1.append('&');}}else if($7==='SELECT'){var $A=$5;var $B=$A.options.length;for(var $C=0;$C<$B;$C++){var $D=$A.options[$C];if($D.selected){$1.append(encodeURIComponent($6));$1.append('=');$1.append(encodeURIComponent($D.value));$1.append('&');}}}else if($7==='TEXTAREA'){$1.append(encodeURIComponent($6));$1.append('=');$1.append(encodeURIComponent(($5.value)));$1.append('&');}}var $3=$p0._additionalInput;if($3){$1.append($3);$1.append('&');}return $1.toString();} -Sys.Mvc.MvcHelpers.$2=function($p0,$p1,$p2,$p3,$p4){if($p4.confirm){if(!confirm($p4.confirm)){return;}}if($p4.url){$p0=$p4.url;}if($p4.httpMethod){$p1=$p4.httpMethod;}if($p2.length>0&&!$p2.endsWith('&')){$p2+='&';}$p2+='X-Requested-With=XMLHttpRequest';var $0=$p1.toUpperCase();var $1=($0==='GET'||$0==='POST');if(!$1){$p2+='&';$p2+='X-HTTP-Method-Override='+$0;}var $2='';if($0==='GET'||$0==='DELETE'){if($p0.indexOf('?')>-1){if(!$p0.endsWith('&')){$p0+='&';}$p0+=$p2;}else{$p0+='?';$p0+=$p2;}}else{$2=$p2;}var $3=new Sys.Net.WebRequest();$3.set_url($p0);if($1){$3.set_httpVerb($p1);}else{$3.set_httpVerb('POST');$3.get_headers()['X-HTTP-Method-Override']=$0;}$3.set_body($2);if($p1.toUpperCase()==='PUT'){$3.get_headers()['Content-Type']='application/x-www-form-urlencoded;';}$3.get_headers()['X-Requested-With']='XMLHttpRequest';var $4=null;if($p4.updateTargetId){$4=$get($p4.updateTargetId);}var $5=null;if($p4.loadingElementId){$5=$get($p4.loadingElementId);}var $6=new Sys.Mvc.AjaxContext($3,$4,$5,$p4.insertionMode);var $7=true;if($p4.onBegin){$7=$p4.onBegin($6)!==false;}if($5){Sys.UI.DomElement.setVisible($6.get_loadingElement(),true);}if($7){$3.add_completed(Function.createDelegate(null,function($p1_0){ -Sys.Mvc.MvcHelpers.$3($3,$p4,$6);}));$3.invoke();}} -Sys.Mvc.MvcHelpers.$3=function($p0,$p1,$p2){$p2.set_response($p0.get_executor());if($p1.onComplete&&$p1.onComplete($p2)===false){return;}var $0=$p2.get_response().get_statusCode();if(($0>=200&&$0<300)||$0===304||$0===1223){if($0!==204&&$0!==304&&$0!==1223){var $1=$p2.get_response().getResponseHeader('Content-Type');if(($1)&&($1.indexOf('application/x-javascript')!==-1)){eval($p2.get_data());}else{Sys.Mvc.MvcHelpers.updateDomElement($p2.get_updateTarget(),$p2.get_insertionMode(),$p2.get_data());}}if($p1.onSuccess){$p1.onSuccess($p2);}}else{if($p1.onFailure){$p1.onFailure($p2);}}if($p2.get_loadingElement()){Sys.UI.DomElement.setVisible($p2.get_loadingElement(),false);}} -Sys.Mvc.MvcHelpers.updateDomElement=function(target,insertionMode,content){if(target){switch(insertionMode){case 0:target.innerHTML=content;break;case 1:if(content&&content.length>0){target.innerHTML=content+target.innerHTML.trimStart();}break;case 2:if(content&&content.length>0){target.innerHTML=target.innerHTML.trimEnd()+content;}break;}}} -Sys.Mvc.AsyncForm=function(){} -Sys.Mvc.AsyncForm.handleClick=function(form,evt){var $0=Sys.Mvc.MvcHelpers.$0(evt.target,evt.offsetX,evt.offsetY);form._additionalInput = $0;} -Sys.Mvc.AsyncForm.handleSubmit=function(form,evt,ajaxOptions){evt.preventDefault();var $0=form.validationCallbacks;if($0){for(var $2=0;$2<$0.length;$2++){var $3=$0[$2];if(!$3()){return;}}}var $1=Sys.Mvc.MvcHelpers.$1(form);Sys.Mvc.MvcHelpers.$2(form.action,form.method||'post',$1,form,ajaxOptions);} -Sys.Mvc.AjaxContext.registerClass('Sys.Mvc.AjaxContext');Sys.Mvc.AsyncHyperlink.registerClass('Sys.Mvc.AsyncHyperlink');Sys.Mvc.MvcHelpers.registerClass('Sys.Mvc.MvcHelpers');Sys.Mvc.AsyncForm.registerClass('Sys.Mvc.AsyncForm'); -// ---- Do not remove this footer ---- -// Generated using Script# v0.5.0.0 (http://projects.nikhilk.net) -// ----------------------------------- diff --git a/NzbDrone.Web/Scripts/MicrosoftMvcValidation.debug.js b/NzbDrone.Web/Scripts/MicrosoftMvcValidation.debug.js deleted file mode 100644 index 346ba4818..000000000 --- a/NzbDrone.Web/Scripts/MicrosoftMvcValidation.debug.js +++ /dev/null @@ -1,883 +0,0 @@ -//!---------------------------------------------------------- -//! Copyright (C) Microsoft Corporation. All rights reserved. -//!---------------------------------------------------------- -//! MicrosoftMvcValidation.js - - -Type.registerNamespace('Sys.Mvc'); - -//////////////////////////////////////////////////////////////////////////////// -// Sys.Mvc.Validation - -Sys.Mvc.$create_Validation = function Sys_Mvc_Validation() { return {}; } - - -//////////////////////////////////////////////////////////////////////////////// -// Sys.Mvc.JsonValidationField - -Sys.Mvc.$create_JsonValidationField = function Sys_Mvc_JsonValidationField() { return {}; } - - -//////////////////////////////////////////////////////////////////////////////// -// Sys.Mvc.JsonValidationOptions - -Sys.Mvc.$create_JsonValidationOptions = function Sys_Mvc_JsonValidationOptions() { return {}; } - - -//////////////////////////////////////////////////////////////////////////////// -// Sys.Mvc.JsonValidationRule - -Sys.Mvc.$create_JsonValidationRule = function Sys_Mvc_JsonValidationRule() { return {}; } - - -//////////////////////////////////////////////////////////////////////////////// -// Sys.Mvc.ValidationContext - -Sys.Mvc.$create_ValidationContext = function Sys_Mvc_ValidationContext() { return {}; } - - -//////////////////////////////////////////////////////////////////////////////// -// Sys.Mvc.NumberValidator - -Sys.Mvc.NumberValidator = function Sys_Mvc_NumberValidator() { -} -Sys.Mvc.NumberValidator.create = function Sys_Mvc_NumberValidator$create(rule) { - /// - /// - /// - return Function.createDelegate(new Sys.Mvc.NumberValidator(), new Sys.Mvc.NumberValidator().validate); -} -Sys.Mvc.NumberValidator.prototype = { - - validate: function Sys_Mvc_NumberValidator$validate(value, context) { - /// - /// - /// - /// - /// - if (Sys.Mvc._validationUtil.stringIsNullOrEmpty(value)) { - return true; - } - var n = Number.parseLocale(value); - return (!isNaN(n)); - } -} - - -//////////////////////////////////////////////////////////////////////////////// -// Sys.Mvc.FormContext - -Sys.Mvc.FormContext = function Sys_Mvc_FormContext(formElement, validationSummaryElement) { - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - this._errors = []; - this.fields = new Array(0); - this._formElement = formElement; - this._validationSummaryElement = validationSummaryElement; - formElement[Sys.Mvc.FormContext._formValidationTag] = this; - if (validationSummaryElement) { - var ulElements = validationSummaryElement.getElementsByTagName('ul'); - if (ulElements.length > 0) { - this._validationSummaryULElement = ulElements[0]; - } - } - this._onClickHandler = Function.createDelegate(this, this._form_OnClick); - this._onSubmitHandler = Function.createDelegate(this, this._form_OnSubmit); -} -Sys.Mvc.FormContext._Application_Load = function Sys_Mvc_FormContext$_Application_Load() { - var allFormOptions = window.mvcClientValidationMetadata; - if (allFormOptions) { - while (allFormOptions.length > 0) { - var thisFormOptions = allFormOptions.pop(); - Sys.Mvc.FormContext._parseJsonOptions(thisFormOptions); - } - } -} -Sys.Mvc.FormContext._getFormElementsWithName = function Sys_Mvc_FormContext$_getFormElementsWithName(formElement, name) { - /// - /// - /// - /// - /// - var allElementsWithNameInForm = []; - var allElementsWithName = document.getElementsByName(name); - for (var i = 0; i < allElementsWithName.length; i++) { - var thisElement = allElementsWithName[i]; - if (Sys.Mvc.FormContext._isElementInHierarchy(formElement, thisElement)) { - Array.add(allElementsWithNameInForm, thisElement); - } - } - return allElementsWithNameInForm; -} -Sys.Mvc.FormContext.getValidationForForm = function Sys_Mvc_FormContext$getValidationForForm(formElement) { - /// - /// - /// - return formElement[Sys.Mvc.FormContext._formValidationTag]; -} -Sys.Mvc.FormContext._isElementInHierarchy = function Sys_Mvc_FormContext$_isElementInHierarchy(parent, child) { - /// - /// - /// - /// - /// - while (child) { - if (parent === child) { - return true; - } - child = child.parentNode; - } - return false; -} -Sys.Mvc.FormContext._parseJsonOptions = function Sys_Mvc_FormContext$_parseJsonOptions(options) { - /// - /// - /// - var formElement = $get(options.FormId); - var validationSummaryElement = (!Sys.Mvc._validationUtil.stringIsNullOrEmpty(options.ValidationSummaryId)) ? $get(options.ValidationSummaryId) : null; - var formContext = new Sys.Mvc.FormContext(formElement, validationSummaryElement); - formContext.enableDynamicValidation(); - formContext.replaceValidationSummary = options.ReplaceValidationSummary; - for (var i = 0; i < options.Fields.length; i++) { - var field = options.Fields[i]; - var fieldElements = Sys.Mvc.FormContext._getFormElementsWithName(formElement, field.FieldName); - var validationMessageElement = (!Sys.Mvc._validationUtil.stringIsNullOrEmpty(field.ValidationMessageId)) ? $get(field.ValidationMessageId) : null; - var fieldContext = new Sys.Mvc.FieldContext(formContext); - Array.addRange(fieldContext.elements, fieldElements); - fieldContext.validationMessageElement = validationMessageElement; - fieldContext.replaceValidationMessageContents = field.ReplaceValidationMessageContents; - for (var j = 0; j < field.ValidationRules.length; j++) { - var rule = field.ValidationRules[j]; - var validator = Sys.Mvc.ValidatorRegistry.getValidator(rule); - if (validator) { - var validation = Sys.Mvc.$create_Validation(); - validation.fieldErrorMessage = rule.ErrorMessage; - validation.validator = validator; - Array.add(fieldContext.validations, validation); - } - } - fieldContext.enableDynamicValidation(); - Array.add(formContext.fields, fieldContext); - } - var registeredValidatorCallbacks = formElement.validationCallbacks; - if (!registeredValidatorCallbacks) { - registeredValidatorCallbacks = []; - formElement.validationCallbacks = registeredValidatorCallbacks; - } - registeredValidatorCallbacks.push(Function.createDelegate(null, function() { - return Sys.Mvc._validationUtil.arrayIsNullOrEmpty(formContext.validate('submit')); - })); - return formContext; -} -Sys.Mvc.FormContext.prototype = { - _onClickHandler: null, - _onSubmitHandler: null, - _submitButtonClicked: null, - _validationSummaryElement: null, - _validationSummaryULElement: null, - _formElement: null, - replaceValidationSummary: false, - - addError: function Sys_Mvc_FormContext$addError(message) { - /// - /// - this.addErrors([ message ]); - }, - - addErrors: function Sys_Mvc_FormContext$addErrors(messages) { - /// - /// - if (!Sys.Mvc._validationUtil.arrayIsNullOrEmpty(messages)) { - Array.addRange(this._errors, messages); - this._onErrorCountChanged(); - } - }, - - clearErrors: function Sys_Mvc_FormContext$clearErrors() { - Array.clear(this._errors); - this._onErrorCountChanged(); - }, - - _displayError: function Sys_Mvc_FormContext$_displayError() { - if (this._validationSummaryElement) { - if (this._validationSummaryULElement) { - Sys.Mvc._validationUtil.removeAllChildren(this._validationSummaryULElement); - for (var i = 0; i < this._errors.length; i++) { - var liElement = document.createElement('li'); - Sys.Mvc._validationUtil.setInnerText(liElement, this._errors[i]); - this._validationSummaryULElement.appendChild(liElement); - } - } - Sys.UI.DomElement.removeCssClass(this._validationSummaryElement, Sys.Mvc.FormContext._validationSummaryValidCss); - Sys.UI.DomElement.addCssClass(this._validationSummaryElement, Sys.Mvc.FormContext._validationSummaryErrorCss); - } - }, - - _displaySuccess: function Sys_Mvc_FormContext$_displaySuccess() { - var validationSummaryElement = this._validationSummaryElement; - if (validationSummaryElement) { - var validationSummaryULElement = this._validationSummaryULElement; - if (validationSummaryULElement) { - validationSummaryULElement.innerHTML = ''; - } - Sys.UI.DomElement.removeCssClass(validationSummaryElement, Sys.Mvc.FormContext._validationSummaryErrorCss); - Sys.UI.DomElement.addCssClass(validationSummaryElement, Sys.Mvc.FormContext._validationSummaryValidCss); - } - }, - - enableDynamicValidation: function Sys_Mvc_FormContext$enableDynamicValidation() { - Sys.UI.DomEvent.addHandler(this._formElement, 'click', this._onClickHandler); - Sys.UI.DomEvent.addHandler(this._formElement, 'submit', this._onSubmitHandler); - }, - - _findSubmitButton: function Sys_Mvc_FormContext$_findSubmitButton(element) { - /// - /// - /// - if (element.disabled) { - return null; - } - var tagName = element.tagName.toUpperCase(); - var inputElement = element; - if (tagName === 'INPUT') { - var type = inputElement.type; - if (type === 'submit' || type === 'image') { - return inputElement; - } - } - else if ((tagName === 'BUTTON') && (inputElement.type === 'submit')) { - return inputElement; - } - return null; - }, - - _form_OnClick: function Sys_Mvc_FormContext$_form_OnClick(e) { - /// - /// - this._submitButtonClicked = this._findSubmitButton(e.target); - }, - - _form_OnSubmit: function Sys_Mvc_FormContext$_form_OnSubmit(e) { - /// - /// - var form = e.target; - var submitButton = this._submitButtonClicked; - if (submitButton && submitButton.disableValidation) { - return; - } - var errorMessages = this.validate('submit'); - if (!Sys.Mvc._validationUtil.arrayIsNullOrEmpty(errorMessages)) { - e.preventDefault(); - } - }, - - _onErrorCountChanged: function Sys_Mvc_FormContext$_onErrorCountChanged() { - if (!this._errors.length) { - this._displaySuccess(); - } - else { - this._displayError(); - } - }, - - validate: function Sys_Mvc_FormContext$validate(eventName) { - /// - /// - /// - var fields = this.fields; - var errors = []; - for (var i = 0; i < fields.length; i++) { - var field = fields[i]; - if (!field.elements[0].disabled) { - var thisErrors = field.validate(eventName); - if (thisErrors) { - Array.addRange(errors, thisErrors); - } - } - } - if (this.replaceValidationSummary) { - this.clearErrors(); - this.addErrors(errors); - } - return errors; - } -} - - -//////////////////////////////////////////////////////////////////////////////// -// Sys.Mvc.FieldContext - -Sys.Mvc.FieldContext = function Sys_Mvc_FieldContext(formContext) { - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - /// - this._errors = []; - this.elements = new Array(0); - this.validations = new Array(0); - this.formContext = formContext; - this._onBlurHandler = Function.createDelegate(this, this._element_OnBlur); - this._onChangeHandler = Function.createDelegate(this, this._element_OnChange); - this._onInputHandler = Function.createDelegate(this, this._element_OnInput); - this._onPropertyChangeHandler = Function.createDelegate(this, this._element_OnPropertyChange); -} -Sys.Mvc.FieldContext.prototype = { - _onBlurHandler: null, - _onChangeHandler: null, - _onInputHandler: null, - _onPropertyChangeHandler: null, - defaultErrorMessage: null, - formContext: null, - replaceValidationMessageContents: false, - validationMessageElement: null, - - addError: function Sys_Mvc_FieldContext$addError(message) { - /// - /// - this.addErrors([ message ]); - }, - - addErrors: function Sys_Mvc_FieldContext$addErrors(messages) { - /// - /// - if (!Sys.Mvc._validationUtil.arrayIsNullOrEmpty(messages)) { - Array.addRange(this._errors, messages); - this._onErrorCountChanged(); - } - }, - - clearErrors: function Sys_Mvc_FieldContext$clearErrors() { - Array.clear(this._errors); - this._onErrorCountChanged(); - }, - - _displayError: function Sys_Mvc_FieldContext$_displayError() { - var validationMessageElement = this.validationMessageElement; - if (validationMessageElement) { - if (this.replaceValidationMessageContents) { - Sys.Mvc._validationUtil.setInnerText(validationMessageElement, this._errors[0]); - } - Sys.UI.DomElement.removeCssClass(validationMessageElement, Sys.Mvc.FieldContext._validationMessageValidCss); - Sys.UI.DomElement.addCssClass(validationMessageElement, Sys.Mvc.FieldContext._validationMessageErrorCss); - } - var elements = this.elements; - for (var i = 0; i < elements.length; i++) { - var element = elements[i]; - Sys.UI.DomElement.removeCssClass(element, Sys.Mvc.FieldContext._inputElementValidCss); - Sys.UI.DomElement.addCssClass(element, Sys.Mvc.FieldContext._inputElementErrorCss); - } - }, - - _displaySuccess: function Sys_Mvc_FieldContext$_displaySuccess() { - var validationMessageElement = this.validationMessageElement; - if (validationMessageElement) { - if (this.replaceValidationMessageContents) { - Sys.Mvc._validationUtil.setInnerText(validationMessageElement, ''); - } - Sys.UI.DomElement.removeCssClass(validationMessageElement, Sys.Mvc.FieldContext._validationMessageErrorCss); - Sys.UI.DomElement.addCssClass(validationMessageElement, Sys.Mvc.FieldContext._validationMessageValidCss); - } - var elements = this.elements; - for (var i = 0; i < elements.length; i++) { - var element = elements[i]; - Sys.UI.DomElement.removeCssClass(element, Sys.Mvc.FieldContext._inputElementErrorCss); - Sys.UI.DomElement.addCssClass(element, Sys.Mvc.FieldContext._inputElementValidCss); - } - }, - - _element_OnBlur: function Sys_Mvc_FieldContext$_element_OnBlur(e) { - /// - /// - if (e.target[Sys.Mvc.FieldContext._hasTextChangedTag] || e.target[Sys.Mvc.FieldContext._hasValidationFiredTag]) { - this.validate('blur'); - } - }, - - _element_OnChange: function Sys_Mvc_FieldContext$_element_OnChange(e) { - /// - /// - e.target[Sys.Mvc.FieldContext._hasTextChangedTag] = true; - }, - - _element_OnInput: function Sys_Mvc_FieldContext$_element_OnInput(e) { - /// - /// - e.target[Sys.Mvc.FieldContext._hasTextChangedTag] = true; - if (e.target[Sys.Mvc.FieldContext._hasValidationFiredTag]) { - this.validate('input'); - } - }, - - _element_OnPropertyChange: function Sys_Mvc_FieldContext$_element_OnPropertyChange(e) { - /// - /// - if (e.rawEvent.propertyName === 'value') { - e.target[Sys.Mvc.FieldContext._hasTextChangedTag] = true; - if (e.target[Sys.Mvc.FieldContext._hasValidationFiredTag]) { - this.validate('input'); - } - } - }, - - enableDynamicValidation: function Sys_Mvc_FieldContext$enableDynamicValidation() { - var elements = this.elements; - for (var i = 0; i < elements.length; i++) { - var element = elements[i]; - if (Sys.Mvc._validationUtil.elementSupportsEvent(element, 'onpropertychange')) { - var compatMode = document.documentMode; - if (compatMode && compatMode >= 8) { - Sys.UI.DomEvent.addHandler(element, 'propertychange', this._onPropertyChangeHandler); - } - } - else { - Sys.UI.DomEvent.addHandler(element, 'input', this._onInputHandler); - } - Sys.UI.DomEvent.addHandler(element, 'change', this._onChangeHandler); - Sys.UI.DomEvent.addHandler(element, 'blur', this._onBlurHandler); - } - }, - - _getErrorString: function Sys_Mvc_FieldContext$_getErrorString(validatorReturnValue, fieldErrorMessage) { - /// - /// - /// - /// - /// - var fallbackErrorMessage = fieldErrorMessage || this.defaultErrorMessage; - if (Boolean.isInstanceOfType(validatorReturnValue)) { - return (validatorReturnValue) ? null : fallbackErrorMessage; - } - if (String.isInstanceOfType(validatorReturnValue)) { - return ((validatorReturnValue).length) ? validatorReturnValue : fallbackErrorMessage; - } - return null; - }, - - _getStringValue: function Sys_Mvc_FieldContext$_getStringValue() { - /// - var elements = this.elements; - return (elements.length > 0) ? elements[0].value : null; - }, - - _markValidationFired: function Sys_Mvc_FieldContext$_markValidationFired() { - var elements = this.elements; - for (var i = 0; i < elements.length; i++) { - var element = elements[i]; - element[Sys.Mvc.FieldContext._hasValidationFiredTag] = true; - } - }, - - _onErrorCountChanged: function Sys_Mvc_FieldContext$_onErrorCountChanged() { - if (!this._errors.length) { - this._displaySuccess(); - } - else { - this._displayError(); - } - }, - - validate: function Sys_Mvc_FieldContext$validate(eventName) { - /// - /// - /// - var validations = this.validations; - var errors = []; - var value = this._getStringValue(); - for (var i = 0; i < validations.length; i++) { - var validation = validations[i]; - var context = Sys.Mvc.$create_ValidationContext(); - context.eventName = eventName; - context.fieldContext = this; - context.validation = validation; - var retVal = validation.validator(value, context); - var errorMessage = this._getErrorString(retVal, validation.fieldErrorMessage); - if (!Sys.Mvc._validationUtil.stringIsNullOrEmpty(errorMessage)) { - Array.add(errors, errorMessage); - } - } - this._markValidationFired(); - this.clearErrors(); - this.addErrors(errors); - return errors; - } -} - - -//////////////////////////////////////////////////////////////////////////////// -// Sys.Mvc.RangeValidator - -Sys.Mvc.RangeValidator = function Sys_Mvc_RangeValidator(minimum, maximum) { - /// - /// - /// - /// - /// - /// - /// - /// - this._minimum = minimum; - this._maximum = maximum; -} -Sys.Mvc.RangeValidator.create = function Sys_Mvc_RangeValidator$create(rule) { - /// - /// - /// - var min = rule.ValidationParameters['min']; - var max = rule.ValidationParameters['max']; - return Function.createDelegate(new Sys.Mvc.RangeValidator(min, max), new Sys.Mvc.RangeValidator(min, max).validate); -} -Sys.Mvc.RangeValidator.prototype = { - _minimum: null, - _maximum: null, - - validate: function Sys_Mvc_RangeValidator$validate(value, context) { - /// - /// - /// - /// - /// - if (Sys.Mvc._validationUtil.stringIsNullOrEmpty(value)) { - return true; - } - var n = Number.parseLocale(value); - return (!isNaN(n) && this._minimum <= n && n <= this._maximum); - } -} - - -//////////////////////////////////////////////////////////////////////////////// -// Sys.Mvc.RegularExpressionValidator - -Sys.Mvc.RegularExpressionValidator = function Sys_Mvc_RegularExpressionValidator(pattern) { - /// - /// - /// - /// - this._pattern = pattern; -} -Sys.Mvc.RegularExpressionValidator.create = function Sys_Mvc_RegularExpressionValidator$create(rule) { - /// - /// - /// - var pattern = rule.ValidationParameters['pattern']; - return Function.createDelegate(new Sys.Mvc.RegularExpressionValidator(pattern), new Sys.Mvc.RegularExpressionValidator(pattern).validate); -} -Sys.Mvc.RegularExpressionValidator.prototype = { - _pattern: null, - - validate: function Sys_Mvc_RegularExpressionValidator$validate(value, context) { - /// - /// - /// - /// - /// - if (Sys.Mvc._validationUtil.stringIsNullOrEmpty(value)) { - return true; - } - var regExp = new RegExp(this._pattern); - var matches = regExp.exec(value); - return (!Sys.Mvc._validationUtil.arrayIsNullOrEmpty(matches) && matches[0].length === value.length); - } -} - - -//////////////////////////////////////////////////////////////////////////////// -// Sys.Mvc.RequiredValidator - -Sys.Mvc.RequiredValidator = function Sys_Mvc_RequiredValidator() { -} -Sys.Mvc.RequiredValidator.create = function Sys_Mvc_RequiredValidator$create(rule) { - /// - /// - /// - return Function.createDelegate(new Sys.Mvc.RequiredValidator(), new Sys.Mvc.RequiredValidator().validate); -} -Sys.Mvc.RequiredValidator._isRadioInputElement = function Sys_Mvc_RequiredValidator$_isRadioInputElement(element) { - /// - /// - /// - if (element.tagName.toUpperCase() === 'INPUT') { - var inputType = (element.type).toUpperCase(); - if (inputType === 'RADIO') { - return true; - } - } - return false; -} -Sys.Mvc.RequiredValidator._isSelectInputElement = function Sys_Mvc_RequiredValidator$_isSelectInputElement(element) { - /// - /// - /// - if (element.tagName.toUpperCase() === 'SELECT') { - return true; - } - return false; -} -Sys.Mvc.RequiredValidator._isTextualInputElement = function Sys_Mvc_RequiredValidator$_isTextualInputElement(element) { - /// - /// - /// - if (element.tagName.toUpperCase() === 'INPUT') { - var inputType = (element.type).toUpperCase(); - switch (inputType) { - case 'TEXT': - case 'PASSWORD': - case 'FILE': - return true; - } - } - if (element.tagName.toUpperCase() === 'TEXTAREA') { - return true; - } - return false; -} -Sys.Mvc.RequiredValidator._validateRadioInput = function Sys_Mvc_RequiredValidator$_validateRadioInput(elements) { - /// - /// - /// - for (var i = 0; i < elements.length; i++) { - var element = elements[i]; - if (element.checked) { - return true; - } - } - return false; -} -Sys.Mvc.RequiredValidator._validateSelectInput = function Sys_Mvc_RequiredValidator$_validateSelectInput(optionElements) { - /// - /// - /// - for (var i = 0; i < optionElements.length; i++) { - var element = optionElements[i]; - if (element.selected) { - if (!Sys.Mvc._validationUtil.stringIsNullOrEmpty(element.value)) { - return true; - } - } - } - return false; -} -Sys.Mvc.RequiredValidator._validateTextualInput = function Sys_Mvc_RequiredValidator$_validateTextualInput(element) { - /// - /// - /// - return (!Sys.Mvc._validationUtil.stringIsNullOrEmpty(element.value)); -} -Sys.Mvc.RequiredValidator.prototype = { - - validate: function Sys_Mvc_RequiredValidator$validate(value, context) { - /// - /// - /// - /// - /// - var elements = context.fieldContext.elements; - if (!elements.length) { - return true; - } - var sampleElement = elements[0]; - if (Sys.Mvc.RequiredValidator._isTextualInputElement(sampleElement)) { - return Sys.Mvc.RequiredValidator._validateTextualInput(sampleElement); - } - if (Sys.Mvc.RequiredValidator._isRadioInputElement(sampleElement)) { - return Sys.Mvc.RequiredValidator._validateRadioInput(elements); - } - if (Sys.Mvc.RequiredValidator._isSelectInputElement(sampleElement)) { - return Sys.Mvc.RequiredValidator._validateSelectInput((sampleElement).options); - } - return true; - } -} - - -//////////////////////////////////////////////////////////////////////////////// -// Sys.Mvc.StringLengthValidator - -Sys.Mvc.StringLengthValidator = function Sys_Mvc_StringLengthValidator(minLength, maxLength) { - /// - /// - /// - /// - /// - /// - /// - /// - this._minLength = minLength; - this._maxLength = maxLength; -} -Sys.Mvc.StringLengthValidator.create = function Sys_Mvc_StringLengthValidator$create(rule) { - /// - /// - /// - var minLength = (rule.ValidationParameters['min'] || 0); - var maxLength = (rule.ValidationParameters['max'] || Number.MAX_VALUE); - return Function.createDelegate(new Sys.Mvc.StringLengthValidator(minLength, maxLength), new Sys.Mvc.StringLengthValidator(minLength, maxLength).validate); -} -Sys.Mvc.StringLengthValidator.prototype = { - _maxLength: 0, - _minLength: 0, - - validate: function Sys_Mvc_StringLengthValidator$validate(value, context) { - /// - /// - /// - /// - /// - if (Sys.Mvc._validationUtil.stringIsNullOrEmpty(value)) { - return true; - } - return (this._minLength <= value.length && value.length <= this._maxLength); - } -} - - -//////////////////////////////////////////////////////////////////////////////// -// Sys.Mvc._validationUtil - -Sys.Mvc._validationUtil = function Sys_Mvc__validationUtil() { -} -Sys.Mvc._validationUtil.arrayIsNullOrEmpty = function Sys_Mvc__validationUtil$arrayIsNullOrEmpty(array) { - /// - /// - /// - return (!array || !array.length); -} -Sys.Mvc._validationUtil.stringIsNullOrEmpty = function Sys_Mvc__validationUtil$stringIsNullOrEmpty(value) { - /// - /// - /// - return (!value || !value.length); -} -Sys.Mvc._validationUtil.elementSupportsEvent = function Sys_Mvc__validationUtil$elementSupportsEvent(element, eventAttributeName) { - /// - /// - /// - /// - /// - return (eventAttributeName in element); -} -Sys.Mvc._validationUtil.removeAllChildren = function Sys_Mvc__validationUtil$removeAllChildren(element) { - /// - /// - while (element.firstChild) { - element.removeChild(element.firstChild); - } -} -Sys.Mvc._validationUtil.setInnerText = function Sys_Mvc__validationUtil$setInnerText(element, innerText) { - /// - /// - /// - /// - var textNode = document.createTextNode(innerText); - Sys.Mvc._validationUtil.removeAllChildren(element); - element.appendChild(textNode); -} - - -//////////////////////////////////////////////////////////////////////////////// -// Sys.Mvc.ValidatorRegistry - -Sys.Mvc.ValidatorRegistry = function Sys_Mvc_ValidatorRegistry() { - /// - /// -} -Sys.Mvc.ValidatorRegistry.getValidator = function Sys_Mvc_ValidatorRegistry$getValidator(rule) { - /// - /// - /// - var creator = Sys.Mvc.ValidatorRegistry.validators[rule.ValidationType]; - return (creator) ? creator(rule) : null; -} -Sys.Mvc.ValidatorRegistry._getDefaultValidators = function Sys_Mvc_ValidatorRegistry$_getDefaultValidators() { - /// - return { required: Function.createDelegate(null, Sys.Mvc.RequiredValidator.create), length: Function.createDelegate(null, Sys.Mvc.StringLengthValidator.create), regex: Function.createDelegate(null, Sys.Mvc.RegularExpressionValidator.create), range: Function.createDelegate(null, Sys.Mvc.RangeValidator.create), number: Function.createDelegate(null, Sys.Mvc.NumberValidator.create) }; -} - - -Sys.Mvc.NumberValidator.registerClass('Sys.Mvc.NumberValidator'); -Sys.Mvc.FormContext.registerClass('Sys.Mvc.FormContext'); -Sys.Mvc.FieldContext.registerClass('Sys.Mvc.FieldContext'); -Sys.Mvc.RangeValidator.registerClass('Sys.Mvc.RangeValidator'); -Sys.Mvc.RegularExpressionValidator.registerClass('Sys.Mvc.RegularExpressionValidator'); -Sys.Mvc.RequiredValidator.registerClass('Sys.Mvc.RequiredValidator'); -Sys.Mvc.StringLengthValidator.registerClass('Sys.Mvc.StringLengthValidator'); -Sys.Mvc._validationUtil.registerClass('Sys.Mvc._validationUtil'); -Sys.Mvc.ValidatorRegistry.registerClass('Sys.Mvc.ValidatorRegistry'); -Sys.Mvc.FormContext._validationSummaryErrorCss = 'validation-summary-errors'; -Sys.Mvc.FormContext._validationSummaryValidCss = 'validation-summary-valid'; -Sys.Mvc.FormContext._formValidationTag = '__MVC_FormValidation'; -Sys.Mvc.FieldContext._hasTextChangedTag = '__MVC_HasTextChanged'; -Sys.Mvc.FieldContext._hasValidationFiredTag = '__MVC_HasValidationFired'; -Sys.Mvc.FieldContext._inputElementErrorCss = 'input-validation-error'; -Sys.Mvc.FieldContext._inputElementValidCss = 'input-validation-valid'; -Sys.Mvc.FieldContext._validationMessageErrorCss = 'field-validation-error'; -Sys.Mvc.FieldContext._validationMessageValidCss = 'field-validation-valid'; -Sys.Mvc.ValidatorRegistry.validators = Sys.Mvc.ValidatorRegistry._getDefaultValidators(); - -// ---- Do not remove this footer ---- -// Generated using Script# v0.5.0.0 (http://projects.nikhilk.net) -// ----------------------------------- - -// register validation -Sys.Application.add_load(function() { - Sys.Application.remove_load(arguments.callee); - Sys.Mvc.FormContext._Application_Load(); -}); diff --git a/NzbDrone.Web/Scripts/MicrosoftMvcValidation.js b/NzbDrone.Web/Scripts/MicrosoftMvcValidation.js deleted file mode 100644 index 9483492f1..000000000 --- a/NzbDrone.Web/Scripts/MicrosoftMvcValidation.js +++ /dev/null @@ -1,55 +0,0 @@ -//---------------------------------------------------------- -// Copyright (C) Microsoft Corporation. All rights reserved. -//---------------------------------------------------------- -// MicrosoftMvcValidation.js - -Type.registerNamespace('Sys.Mvc');Sys.Mvc.$create_Validation=function(){return {};} -Sys.Mvc.$create_JsonValidationField=function(){return {};} -Sys.Mvc.$create_JsonValidationOptions=function(){return {};} -Sys.Mvc.$create_JsonValidationRule=function(){return {};} -Sys.Mvc.$create_ValidationContext=function(){return {};} -Sys.Mvc.NumberValidator=function(){} -Sys.Mvc.NumberValidator.create=function(rule){return Function.createDelegate(new Sys.Mvc.NumberValidator(),new Sys.Mvc.NumberValidator().validate);} -Sys.Mvc.NumberValidator.prototype={validate:function(value,context){if(Sys.Mvc._ValidationUtil.$1(value)){return true;}var $0=Number.parseLocale(value);return (!isNaN($0));}} -Sys.Mvc.FormContext=function(formElement,validationSummaryElement){this.$5=[];this.fields=new Array(0);this.$9=formElement;this.$7=validationSummaryElement;formElement['__MVC_FormValidation'] = this;if(validationSummaryElement){var $0=validationSummaryElement.getElementsByTagName('ul');if($0.length>0){this.$8=$0[0];}}this.$3=Function.createDelegate(this,this.$D);this.$4=Function.createDelegate(this,this.$E);} -Sys.Mvc.FormContext._Application_Load=function(){var $0=window.mvcClientValidationMetadata;if($0){while($0.length>0){var $1=$0.pop();Sys.Mvc.FormContext.$12($1);}}} -Sys.Mvc.FormContext.$F=function($p0,$p1){var $0=[];var $1=document.getElementsByName($p1);for(var $2=0;$2<$1.length;$2++){var $3=$1[$2];if(Sys.Mvc.FormContext.$10($p0,$3)){Array.add($0,$3);}}return $0;} -Sys.Mvc.FormContext.getValidationForForm=function(formElement){return formElement['__MVC_FormValidation'];} -Sys.Mvc.FormContext.$10=function($p0,$p1){while($p1){if($p0===$p1){return true;}$p1=$p1.parentNode;}return false;} -Sys.Mvc.FormContext.$12=function($p0){var $0=$get($p0.FormId);var $1=(!Sys.Mvc._ValidationUtil.$1($p0.ValidationSummaryId))?$get($p0.ValidationSummaryId):null;var $2=new Sys.Mvc.FormContext($0,$1);$2.enableDynamicValidation();$2.replaceValidationSummary=$p0.ReplaceValidationSummary;for(var $4=0;$4<$p0.Fields.length;$4++){var $5=$p0.Fields[$4];var $6=Sys.Mvc.FormContext.$F($0,$5.FieldName);var $7=(!Sys.Mvc._ValidationUtil.$1($5.ValidationMessageId))?$get($5.ValidationMessageId):null;var $8=new Sys.Mvc.FieldContext($2);Array.addRange($8.elements,$6);$8.validationMessageElement=$7;$8.replaceValidationMessageContents=$5.ReplaceValidationMessageContents;for(var $9=0;$9<$5.ValidationRules.length;$9++){var $A=$5.ValidationRules[$9];var $B=Sys.Mvc.ValidatorRegistry.getValidator($A);if($B){var $C=Sys.Mvc.$create_Validation();$C.fieldErrorMessage=$A.ErrorMessage;$C.validator=$B;Array.add($8.validations,$C);}}$8.enableDynamicValidation();Array.add($2.fields,$8);}var $3=$0.validationCallbacks;if(!$3){$3=[];$0.validationCallbacks = $3;}$3.push(Function.createDelegate(null,function(){ -return Sys.Mvc._ValidationUtil.$0($2.validate('submit'));}));return $2;} -Sys.Mvc.FormContext.prototype={$3:null,$4:null,$6:null,$7:null,$8:null,$9:null,replaceValidationSummary:false,addError:function(message){this.addErrors([message]);},addErrors:function(messages){if(!Sys.Mvc._ValidationUtil.$0(messages)){Array.addRange(this.$5,messages);this.$11();}},clearErrors:function(){Array.clear(this.$5);this.$11();},$A:function(){if(this.$7){if(this.$8){Sys.Mvc._ValidationUtil.$3(this.$8);for(var $0=0;$0=8){Sys.UI.DomEvent.addHandler($2,'propertychange',this.$9);}}else{Sys.UI.DomEvent.addHandler($2,'input',this.$8);}Sys.UI.DomEvent.addHandler($2,'change',this.$7);Sys.UI.DomEvent.addHandler($2,'blur',this.$6);}},$11:function($p0,$p1){var $0=$p1||this.defaultErrorMessage;if(Boolean.isInstanceOfType($p0)){return ($p0)?null:$0;}if(String.isInstanceOfType($p0)){return (($p0).length)?$p0:$0;}return null;},$12:function(){var $0=this.elements;return ($0.length>0)?$0[0].value:null;},$13:function(){var $0=this.elements;for(var $1=0;$1<$0.length;$1++){var $2=$0[$1];$2['__MVC_HasValidationFired'] = true;}},$14:function(){if(!this.$A.length){this.$C();}else{this.$B();}},validate:function(eventName){var $0=this.validations;var $1=[];var $2=this.$12();for(var $3=0;$3<$0.length;$3++){var $4=$0[$3];var $5=Sys.Mvc.$create_ValidationContext();$5.eventName=eventName;$5.fieldContext=this;$5.validation=$4;var $6=$4.validator($2,$5);var $7=this.$11($6,$4.fieldErrorMessage);if(!Sys.Mvc._ValidationUtil.$1($7)){Array.add($1,$7);}}this.$13();this.clearErrors();this.addErrors($1);return $1;}} -Sys.Mvc.RangeValidator=function(minimum,maximum){this.$0=minimum;this.$1=maximum;} -Sys.Mvc.RangeValidator.create=function(rule){var $0=rule.ValidationParameters['min'];var $1=rule.ValidationParameters['max'];return Function.createDelegate(new Sys.Mvc.RangeValidator($0,$1),new Sys.Mvc.RangeValidator($0,$1).validate);} -Sys.Mvc.RangeValidator.prototype={$0:null,$1:null,validate:function(value,context){if(Sys.Mvc._ValidationUtil.$1(value)){return true;}var $0=Number.parseLocale(value);return (!isNaN($0)&&this.$0<=$0&&$0<=this.$1);}} -Sys.Mvc.RegularExpressionValidator=function(pattern){this.$0=pattern;} -Sys.Mvc.RegularExpressionValidator.create=function(rule){var $0=rule.ValidationParameters['pattern'];return Function.createDelegate(new Sys.Mvc.RegularExpressionValidator($0),new Sys.Mvc.RegularExpressionValidator($0).validate);} -Sys.Mvc.RegularExpressionValidator.prototype={$0:null,validate:function(value,context){if(Sys.Mvc._ValidationUtil.$1(value)){return true;}var $0=new RegExp(this.$0);var $1=$0.exec(value);return (!Sys.Mvc._ValidationUtil.$0($1)&&$1[0].length===value.length);}} -Sys.Mvc.RequiredValidator=function(){} -Sys.Mvc.RequiredValidator.create=function(rule){return Function.createDelegate(new Sys.Mvc.RequiredValidator(),new Sys.Mvc.RequiredValidator().validate);} -Sys.Mvc.RequiredValidator.$0=function($p0){if($p0.tagName.toUpperCase()==='INPUT'){var $0=($p0.type).toUpperCase();if($0==='RADIO'){return true;}}return false;} -Sys.Mvc.RequiredValidator.$1=function($p0){if($p0.tagName.toUpperCase()==='SELECT'){return true;}return false;} -Sys.Mvc.RequiredValidator.$2=function($p0){if($p0.tagName.toUpperCase()==='INPUT'){var $0=($p0.type).toUpperCase();switch($0){case 'TEXT':case 'PASSWORD':case 'FILE':return true;}}if($p0.tagName.toUpperCase()==='TEXTAREA'){return true;}return false;} -Sys.Mvc.RequiredValidator.$3=function($p0){for(var $0=0;$0<$p0.length;$0++){var $1=$p0[$0];if($1.checked){return true;}}return false;} -Sys.Mvc.RequiredValidator.$4=function($p0){for(var $0=0;$0<$p0.length;$0++){var $1=$p0[$0];if($1.selected){if(!Sys.Mvc._ValidationUtil.$1($1.value)){return true;}}}return false;} -Sys.Mvc.RequiredValidator.$5=function($p0){return (!Sys.Mvc._ValidationUtil.$1($p0.value));} -Sys.Mvc.RequiredValidator.prototype={validate:function(value,context){var $0=context.fieldContext.elements;if(!$0.length){return true;}var $1=$0[0];if(Sys.Mvc.RequiredValidator.$2($1)){return Sys.Mvc.RequiredValidator.$5($1);}if(Sys.Mvc.RequiredValidator.$0($1)){return Sys.Mvc.RequiredValidator.$3($0);}if(Sys.Mvc.RequiredValidator.$1($1)){return Sys.Mvc.RequiredValidator.$4(($1).options);}return true;}} -Sys.Mvc.StringLengthValidator=function(minLength,maxLength){this.$1=minLength;this.$0=maxLength;} -Sys.Mvc.StringLengthValidator.create=function(rule){var $0=(rule.ValidationParameters['min']||0);var $1=(rule.ValidationParameters['max']||Number.MAX_VALUE);return Function.createDelegate(new Sys.Mvc.StringLengthValidator($0,$1),new Sys.Mvc.StringLengthValidator($0,$1).validate);} -Sys.Mvc.StringLengthValidator.prototype={$0:0,$1:0,validate:function(value,context){if(Sys.Mvc._ValidationUtil.$1(value)){return true;}return (this.$1<=value.length&&value.length<=this.$0);}} -Sys.Mvc._ValidationUtil=function(){} -Sys.Mvc._ValidationUtil.$0=function($p0){return (!$p0||!$p0.length);} -Sys.Mvc._ValidationUtil.$1=function($p0){return (!$p0||!$p0.length);} -Sys.Mvc._ValidationUtil.$2=function($p0,$p1){return ($p1 in $p0);} -Sys.Mvc._ValidationUtil.$3=function($p0){while($p0.firstChild){$p0.removeChild($p0.firstChild);}} -Sys.Mvc._ValidationUtil.$4=function($p0,$p1){var $0=document.createTextNode($p1);Sys.Mvc._ValidationUtil.$3($p0);$p0.appendChild($0);} -Sys.Mvc.ValidatorRegistry=function(){} -Sys.Mvc.ValidatorRegistry.getValidator=function(rule){var $0=Sys.Mvc.ValidatorRegistry.validators[rule.ValidationType];return ($0)?$0(rule):null;} -Sys.Mvc.ValidatorRegistry.$0=function(){return {required:Function.createDelegate(null,Sys.Mvc.RequiredValidator.create),length:Function.createDelegate(null,Sys.Mvc.StringLengthValidator.create),regex:Function.createDelegate(null,Sys.Mvc.RegularExpressionValidator.create),range:Function.createDelegate(null,Sys.Mvc.RangeValidator.create),number:Function.createDelegate(null,Sys.Mvc.NumberValidator.create)};} -Sys.Mvc.NumberValidator.registerClass('Sys.Mvc.NumberValidator');Sys.Mvc.FormContext.registerClass('Sys.Mvc.FormContext');Sys.Mvc.FieldContext.registerClass('Sys.Mvc.FieldContext');Sys.Mvc.RangeValidator.registerClass('Sys.Mvc.RangeValidator');Sys.Mvc.RegularExpressionValidator.registerClass('Sys.Mvc.RegularExpressionValidator');Sys.Mvc.RequiredValidator.registerClass('Sys.Mvc.RequiredValidator');Sys.Mvc.StringLengthValidator.registerClass('Sys.Mvc.StringLengthValidator');Sys.Mvc._ValidationUtil.registerClass('Sys.Mvc._ValidationUtil');Sys.Mvc.ValidatorRegistry.registerClass('Sys.Mvc.ValidatorRegistry');Sys.Mvc.ValidatorRegistry.validators=Sys.Mvc.ValidatorRegistry.$0(); -// ---- Do not remove this footer ---- -// Generated using Script# v0.5.0.0 (http://projects.nikhilk.net) -// ----------------------------------- -Sys.Application.add_load(function(){Sys.Application.remove_load(arguments.callee);Sys.Mvc.FormContext._Application_Load();}); \ No newline at end of file diff --git a/NzbDrone.Web/Scripts/doTimeout.js b/NzbDrone.Web/Scripts/Plugins/doTimeout.js similarity index 100% rename from NzbDrone.Web/Scripts/doTimeout.js rename to NzbDrone.Web/Scripts/Plugins/doTimeout.js diff --git a/NzbDrone.Web/Scripts/jquery-tgc-countdown-1.0.js b/NzbDrone.Web/Scripts/Plugins/jquery-tgc-countdown-1.0.js similarity index 100% rename from NzbDrone.Web/Scripts/jquery-tgc-countdown-1.0.js rename to NzbDrone.Web/Scripts/Plugins/jquery-tgc-countdown-1.0.js diff --git a/NzbDrone.Web/Scripts/jquery.form.js b/NzbDrone.Web/Scripts/Plugins/jquery.form.js similarity index 100% rename from NzbDrone.Web/Scripts/jquery.form.js rename to NzbDrone.Web/Scripts/Plugins/jquery.form.js diff --git a/NzbDrone.Web/Scripts/jquery.jgrowl.js b/NzbDrone.Web/Scripts/Plugins/jquery.jgrowl.js similarity index 100% rename from NzbDrone.Web/Scripts/jquery.jgrowl.js rename to NzbDrone.Web/Scripts/Plugins/jquery.jgrowl.js diff --git a/NzbDrone.Web/Scripts/jquery.watermark.min.js b/NzbDrone.Web/Scripts/Plugins/jquery.watermark.min.js similarity index 100% rename from NzbDrone.Web/Scripts/jquery.watermark.min.js rename to NzbDrone.Web/Scripts/Plugins/jquery.watermark.min.js diff --git a/NzbDrone.Web/Scripts/jquery-1.6.1-vsdoc.js b/NzbDrone.Web/Scripts/jquery-1.6.1-vsdoc.js deleted file mode 100644 index 87ccbc7fc..000000000 --- a/NzbDrone.Web/Scripts/jquery-1.6.1-vsdoc.js +++ /dev/null @@ -1,6938 +0,0 @@ -/* -* This file has been generated to support Visual Studio IntelliSense. -* You should not use this file at runtime inside the browser--it is only -* intended to be used only for design-time IntelliSense. Please use the -* standard jQuery library for all production use. -* -* Comment version: 1.6.1 -*/ - -/*! -* jQuery JavaScript Library v1.6.1 -* http://jquery.com/ -* -* Distributed in whole under the terms of the MIT -* -* Copyright 2010, John Resig -* -* Permission is hereby granted, free of charge, to any person obtaining -* a copy of this software and associated documentation files (the -* "Software"), to deal in the Software without restriction, including -* without limitation the rights to use, copy, modify, merge, publish, -* distribute, sublicense, and/or sell copies of the Software, and to -* permit persons to whom the Software is furnished to do so, subject to -* the following conditions: -* -* The above copyright notice and this permission notice shall be -* included in all copies or substantial portions of the Software. -* -* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -* -* Includes Sizzle.js -* http://sizzlejs.com/ -* Copyright 2010, The Dojo Foundation -* Released under the MIT and BSD Licenses. -*/ - -(function ( window, undefined ) { -var jQuery = function( selector, context ) { -/// -/// 1: Accepts a string containing a CSS selector which is then used to match a set of elements. -/// 1.1 - $(selector, context) -/// 1.2 - $(element) -/// 1.3 - $(elementArray) -/// 1.4 - $(jQuery object) -/// 1.5 - $() -/// 2: Creates DOM elements on the fly from the provided string of raw HTML. -/// 2.1 - $(html, ownerDocument) -/// 2.2 - $(html, props) -/// 3: Binds a function to be executed when the DOM has finished loading. -/// 3.1 - $(callback) -/// -/// -/// A string containing a selector expression -/// -/// -/// A DOM Element, Document, or jQuery to use as context -/// -/// - - // The jQuery object is actually just the init constructor 'enhanced' - return new jQuery.fn.init( selector, context, rootjQuery ); - }; -jQuery.Deferred = function( func ) { - - var deferred = jQuery._Deferred(), - failDeferred = jQuery._Deferred(), - promise; - // Add errorDeferred methods, then and promise - jQuery.extend( deferred, { - then: function( doneCallbacks, failCallbacks ) { - deferred.done( doneCallbacks ).fail( failCallbacks ); - return this; - }, - always: function() { - return deferred.done.apply( deferred, arguments ).fail.apply( this, arguments ); - }, - fail: failDeferred.done, - rejectWith: failDeferred.resolveWith, - reject: failDeferred.resolve, - isRejected: failDeferred.isResolved, - pipe: function( fnDone, fnFail ) { - return jQuery.Deferred(function( newDefer ) { - jQuery.each( { - done: [ fnDone, "resolve" ], - fail: [ fnFail, "reject" ] - }, function( handler, data ) { - var fn = data[ 0 ], - action = data[ 1 ], - returned; - if ( jQuery.isFunction( fn ) ) { - deferred[ handler ](function() { - returned = fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise().then( newDefer.resolve, newDefer.reject ); - } else { - newDefer[ action ]( returned ); - } - }); - } else { - deferred[ handler ]( newDefer[ action ] ); - } - }); - }).promise(); - }, - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - if ( obj == null ) { - if ( promise ) { - return promise; - } - promise = obj = {}; - } - var i = promiseMethods.length; - while( i-- ) { - obj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ]; - } - return obj; - } - }); - // Make sure only one callback list will be used - deferred.done( failDeferred.cancel ).fail( deferred.cancel ); - // Unexpose cancel - delete deferred.cancel; - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - return deferred; - }; -jQuery.Event = function( src, props ) { - - // Allow instantiation without the 'new' keyword - if ( !this.preventDefault ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false || - src.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // timeStamp is buggy for some events on Firefox(#3843) - // So we won't rely on the native value - this.timeStamp = jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; -jQuery._Deferred = function() { - - var // callbacks list - callbacks = [], - // stored [ context , args ] - fired, - // to avoid firing when already doing so - firing, - // flag to know if the deferred has been cancelled - cancelled, - // the deferred itself - deferred = { - - // done( f1, f2, ...) - done: function() { - if ( !cancelled ) { - var args = arguments, - i, - length, - elem, - type, - _fired; - if ( fired ) { - _fired = fired; - fired = 0; - } - for ( i = 0, length = args.length; i < length; i++ ) { - elem = args[ i ]; - type = jQuery.type( elem ); - if ( type === "array" ) { - deferred.done.apply( deferred, elem ); - } else if ( type === "function" ) { - callbacks.push( elem ); - } - } - if ( _fired ) { - deferred.resolveWith( _fired[ 0 ], _fired[ 1 ] ); - } - } - return this; - }, - - // resolve with given context and args - resolveWith: function( context, args ) { - if ( !cancelled && !fired && !firing ) { - // make sure args are available (#8421) - args = args || []; - firing = 1; - try { - while( callbacks[ 0 ] ) { - callbacks.shift().apply( context, args ); - } - } - finally { - fired = [ context, args ]; - firing = 0; - } - } - return this; - }, - - // resolve with this as context and given arguments - resolve: function() { - deferred.resolveWith( this, arguments ); - return this; - }, - - // Has this deferred been resolved? - isResolved: function() { - return !!( firing || fired ); - }, - - // Cancel - cancel: function() { - cancelled = 1; - callbacks = []; - return this; - } - }; - - return deferred; - }; -jQuery._data = function( elem, name, data ) { - - return jQuery.data( elem, name, data, true ); - }; -jQuery._mark = function( elem, type ) { - - if ( elem ) { - type = (type || "fx") + "mark"; - jQuery.data( elem, type, (jQuery.data(elem,type,undefined,true) || 0) + 1, true ); - } - }; -jQuery._unmark = function( force, elem, type ) { - - if ( force !== true ) { - type = elem; - elem = force; - force = false; - } - if ( elem ) { - type = type || "fx"; - var key = type + "mark", - count = force ? 0 : ( (jQuery.data( elem, key, undefined, true) || 1 ) - 1 ); - if ( count ) { - jQuery.data( elem, key, count, true ); - } else { - jQuery.removeData( elem, key, true ); - handleQueueMarkDefer( elem, type, "mark" ); - } - } - }; -jQuery.acceptData = function( elem ) { - - if ( elem.nodeName ) { - var match = jQuery.noData[ elem.nodeName.toLowerCase() ]; - - if ( match ) { - return !(match === true || elem.getAttribute("classid") !== match); - } - } - - return true; - }; -jQuery.access = function( elems, key, value, exec, fn, pass ) { - - var length = elems.length; - - // Setting many attributes - if ( typeof key === "object" ) { - for ( var k in key ) { - jQuery.access( elems, k, key[k], exec, fn, value ); - } - return elems; - } - - // Setting one attribute - if ( value !== undefined ) { - // Optionally, function values get executed if exec is true - exec = !pass && exec && jQuery.isFunction(value); - - for ( var i = 0; i < length; i++ ) { - fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass ); - } - - return elems; - } - - // Getting an attribute - return length ? fn( elems[0], key ) : undefined; - }; -jQuery.active = 0; -jQuery.ajax = function( url, options ) { -/// -/// Perform an asynchronous HTTP (Ajax) request. -/// 1 - jQuery.ajax(url, settings) -/// 2 - jQuery.ajax(settings) -/// -/// -/// A string containing the URL to which the request is sent. -/// -/// -/// A set of key/value pairs that configure the Ajax request. All settings are optional. A default can be set for any option with $.ajaxSetup(). See jQuery.ajax( settings ) below for a complete list of all settings. -/// - - - // If url is an object, simulate pre-1.5 signature - if ( typeof url === "object" ) { - options = url; - url = undefined; - } - - // Force options to be an object - options = options || {}; - - var // Create the final options object - s = jQuery.ajaxSetup( {}, options ), - // Callbacks context - callbackContext = s.context || s, - // Context for global events - // It's the callbackContext if one was provided in the options - // and if it's a DOM node or a jQuery collection - globalEventContext = callbackContext !== s && - ( callbackContext.nodeType || callbackContext instanceof jQuery ) ? - jQuery( callbackContext ) : jQuery.event, - // Deferreds - deferred = jQuery.Deferred(), - completeDeferred = jQuery._Deferred(), - // Status-dependent callbacks - statusCode = s.statusCode || {}, - // ifModified key - ifModifiedKey, - // Headers (they are sent all at once) - requestHeaders = {}, - requestHeadersNames = {}, - // Response headers - responseHeadersString, - responseHeaders, - // transport - transport, - // timeout handle - timeoutTimer, - // Cross-domain detection vars - parts, - // The jqXHR state - state = 0, - // To know if global events are to be dispatched - fireGlobals, - // Loop variable - i, - // Fake xhr - jqXHR = { - - readyState: 0, - - // Caches the header - setRequestHeader: function( name, value ) { - if ( !state ) { - var lname = name.toLowerCase(); - name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name; - requestHeaders[ name ] = value; - } - return this; - }, - - // Raw string - getAllResponseHeaders: function() { - return state === 2 ? responseHeadersString : null; - }, - - // Builds headers hashtable if needed - getResponseHeader: function( key ) { - var match; - if ( state === 2 ) { - if ( !responseHeaders ) { - responseHeaders = {}; - while( ( match = rheaders.exec( responseHeadersString ) ) ) { - responseHeaders[ match[1].toLowerCase() ] = match[ 2 ]; - } - } - match = responseHeaders[ key.toLowerCase() ]; - } - return match === undefined ? null : match; - }, - - // Overrides response content-type header - overrideMimeType: function( type ) { - if ( !state ) { - s.mimeType = type; - } - return this; - }, - - // Cancel the request - abort: function( statusText ) { - statusText = statusText || "abort"; - if ( transport ) { - transport.abort( statusText ); - } - done( 0, statusText ); - return this; - } - }; - - // Callback for when everything is done - // It is defined here because jslint complains if it is declared - // at the end of the function (which would be more logical and readable) - function done( status, statusText, responses, headers ) { - - // Called once - if ( state === 2 ) { - return; - } - - // State is "done" now - state = 2; - - // Clear timeout if it exists - if ( timeoutTimer ) { - clearTimeout( timeoutTimer ); - } - - // Dereference transport for early garbage collection - // (no matter how long the jqXHR object will be used) - transport = undefined; - - // Cache response headers - responseHeadersString = headers || ""; - - // Set readyState - jqXHR.readyState = status ? 4 : 0; - - var isSuccess, - success, - error, - response = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined, - lastModified, - etag; - - // If successful, handle type chaining - if ( status >= 200 && status < 300 || status === 304 ) { - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - - if ( ( lastModified = jqXHR.getResponseHeader( "Last-Modified" ) ) ) { - jQuery.lastModified[ ifModifiedKey ] = lastModified; - } - if ( ( etag = jqXHR.getResponseHeader( "Etag" ) ) ) { - jQuery.etag[ ifModifiedKey ] = etag; - } - } - - // If not modified - if ( status === 304 ) { - - statusText = "notmodified"; - isSuccess = true; - - // If we have data - } else { - - try { - success = ajaxConvert( s, response ); - statusText = "success"; - isSuccess = true; - } catch(e) { - // We have a parsererror - statusText = "parsererror"; - error = e; - } - } - } else { - // We extract error from statusText - // then normalize statusText and status for non-aborts - error = statusText; - if( !statusText || status ) { - statusText = "error"; - if ( status < 0 ) { - status = 0; - } - } - } - - // Set data for the fake xhr object - jqXHR.status = status; - jqXHR.statusText = statusText; - - // Success/Error - if ( isSuccess ) { - deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); - } else { - deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); - } - - // Status-dependent callbacks - jqXHR.statusCode( statusCode ); - statusCode = undefined; - - if ( fireGlobals ) { - globalEventContext.trigger( "ajax" + ( isSuccess ? "Success" : "Error" ), - [ jqXHR, s, isSuccess ? success : error ] ); - } - - // Complete - completeDeferred.resolveWith( callbackContext, [ jqXHR, statusText ] ); - - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxComplete", [ jqXHR, s] ); - // Handle the global AJAX counter - if ( !( --jQuery.active ) ) { - jQuery.event.trigger( "ajaxStop" ); - } - } - } - - // Attach deferreds - deferred.promise( jqXHR ); - jqXHR.success = jqXHR.done; - jqXHR.error = jqXHR.fail; - jqXHR.complete = completeDeferred.done; - - // Status-dependent callbacks - jqXHR.statusCode = function( map ) { - if ( map ) { - var tmp; - if ( state < 2 ) { - for( tmp in map ) { - statusCode[ tmp ] = [ statusCode[tmp], map[tmp] ]; - } - } else { - tmp = map[ jqXHR.status ]; - jqXHR.then( tmp, tmp ); - } - } - return this; - }; - - // Remove hash character (#7531: and string promotion) - // Add protocol if not provided (#5866: IE7 issue with protocol-less urls) - // We also use the url parameter if available - s.url = ( ( url || s.url ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" ); - - // Extract dataTypes list - s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( rspacesAjax ); - - // Determine if a cross-domain request is in order - if ( s.crossDomain == null ) { - parts = rurl.exec( s.url.toLowerCase() ); - s.crossDomain = !!( parts && - ( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] || - ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? 80 : 443 ) ) != - ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ) ) - ); - } - - // Convert data if not already a string - if ( s.data && s.processData && typeof s.data !== "string" ) { - s.data = jQuery.param( s.data, s.traditional ); - } - - // Apply prefilters - inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); - - // If request was aborted inside a prefiler, stop there - if ( state === 2 ) { - return false; - } - - // We can fire global events as of now if asked to - fireGlobals = s.global; - - // Uppercase the type - s.type = s.type.toUpperCase(); - - // Determine if request has content - s.hasContent = !rnoContent.test( s.type ); - - // Watch for a new set of requests - if ( fireGlobals && jQuery.active++ === 0 ) { - jQuery.event.trigger( "ajaxStart" ); - } - - // More options handling for requests with no content - if ( !s.hasContent ) { - - // If data is available, append data to url - if ( s.data ) { - s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.data; - } - - // Get ifModifiedKey before adding the anti-cache parameter - ifModifiedKey = s.url; - - // Add anti-cache in url if needed - if ( s.cache === false ) { - - var ts = jQuery.now(), - // try replacing _= if it is there - ret = s.url.replace( rts, "$1_=" + ts ); - - // if nothing was replaced, add timestamp to the end - s.url = ret + ( (ret === s.url ) ? ( rquery.test( s.url ) ? "&" : "?" ) + "_=" + ts : "" ); - } - } - - // Set the correct header, if data is being sent - if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { - jqXHR.setRequestHeader( "Content-Type", s.contentType ); - } - - // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. - if ( s.ifModified ) { - ifModifiedKey = ifModifiedKey || s.url; - if ( jQuery.lastModified[ ifModifiedKey ] ) { - jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ ifModifiedKey ] ); - } - if ( jQuery.etag[ ifModifiedKey ] ) { - jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ ifModifiedKey ] ); - } - } - - // Set the Accepts header for the server, depending on the dataType - jqXHR.setRequestHeader( - "Accept", - s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ? - s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", */*; q=0.01" : "" ) : - s.accepts[ "*" ] - ); - - // Check for headers option - for ( i in s.headers ) { - jqXHR.setRequestHeader( i, s.headers[ i ] ); - } - - // Allow custom headers/mimetypes and early abort - if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) { - // Abort if not done already - jqXHR.abort(); - return false; - - } - - // Install callbacks on deferreds - for ( i in { success: 1, error: 1, complete: 1 } ) { - jqXHR[ i ]( s[ i ] ); - } - - // Get transport - transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); - - // If no transport, we auto-abort - if ( !transport ) { - done( -1, "No Transport" ); - } else { - jqXHR.readyState = 1; - // Send global event - if ( fireGlobals ) { - globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); - } - // Timeout - if ( s.async && s.timeout > 0 ) { - timeoutTimer = setTimeout( function(){ - jqXHR.abort( "timeout" ); - }, s.timeout ); - } - - try { - state = 1; - transport.send( requestHeaders, done ); - } catch (e) { - // Propagate exception as error if not done - if ( status < 2 ) { - done( -1, e ); - // Simply rethrow otherwise - } else { - jQuery.error( e ); - } - } - } - - return jqXHR; - }; -jQuery.ajaxPrefilter = function( dataTypeExpression, func ) { -/// -/// Handle custom Ajax options or modify existing options before each request is sent and before they are processed by $.ajax(). -/// -/// -/// An optional string containing one or more space-separated dataTypes -/// -/// -/// A handler to set default values for future Ajax requests. -/// -/// - - - if ( typeof dataTypeExpression !== "string" ) { - func = dataTypeExpression; - dataTypeExpression = "*"; - } - - if ( jQuery.isFunction( func ) ) { - var dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ), - i = 0, - length = dataTypes.length, - dataType, - list, - placeBefore; - - // For each dataType in the dataTypeExpression - for(; i < length; i++ ) { - dataType = dataTypes[ i ]; - // We control if we're asked to add before - // any existing element - placeBefore = /^\+/.test( dataType ); - if ( placeBefore ) { - dataType = dataType.substr( 1 ) || "*"; - } - list = structure[ dataType ] = structure[ dataType ] || []; - // then we add to the structure accordingly - list[ placeBefore ? "unshift" : "push" ]( func ); - } - } - }; -jQuery.ajaxSettings = { "url": 'http://localhost:25813/', -"isLocal": false, -"global": true, -"type": 'GET', -"contentType": 'application/x-www-form-urlencoded', -"processData": true, -"async": true, -"accepts": {}, -"contents": {}, -"responseFields": {}, -"converters": {}, -"jsonp": 'callback' }; -jQuery.ajaxSetup = function ( target, settings ) { -/// -/// Set default values for future Ajax requests. -/// -/// -/// A set of key/value pairs that configure the default Ajax request. All options are optional. -/// - - if ( !settings ) { - // Only one parameter, we extend ajaxSettings - settings = target; - target = jQuery.extend( true, jQuery.ajaxSettings, settings ); - } else { - // target was provided, we extend into it - jQuery.extend( true, target, jQuery.ajaxSettings, settings ); - } - // Flatten fields we don't want deep extended - for( var field in { context: 1, url: 1 } ) { - if ( field in settings ) { - target[ field ] = settings[ field ]; - } else if( field in jQuery.ajaxSettings ) { - target[ field ] = jQuery.ajaxSettings[ field ]; - } - } - return target; - }; -jQuery.ajaxTransport = function( dataTypeExpression, func ) { - - - if ( typeof dataTypeExpression !== "string" ) { - func = dataTypeExpression; - dataTypeExpression = "*"; - } - - if ( jQuery.isFunction( func ) ) { - var dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ), - i = 0, - length = dataTypes.length, - dataType, - list, - placeBefore; - - // For each dataType in the dataTypeExpression - for(; i < length; i++ ) { - dataType = dataTypes[ i ]; - // We control if we're asked to add before - // any existing element - placeBefore = /^\+/.test( dataType ); - if ( placeBefore ) { - dataType = dataType.substr( 1 ) || "*"; - } - list = structure[ dataType ] = structure[ dataType ] || []; - // then we add to the structure accordingly - list[ placeBefore ? "unshift" : "push" ]( func ); - } - } - }; -jQuery.attr = function( elem, name, value, pass ) { - - var nType = elem.nodeType; - - // don't get/set attributes on text, comment and attribute nodes - if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { - return undefined; - } - - if ( pass && name in jQuery.attrFn ) { - return jQuery( elem )[ name ]( value ); - } - - // Fallback to prop when attributes are not supported - if ( !("getAttribute" in elem) ) { - return jQuery.prop( elem, name, value ); - } - - var ret, hooks, - notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); - - // Normalize the name if needed - name = notxml && jQuery.attrFix[ name ] || name; - - hooks = jQuery.attrHooks[ name ]; - - if ( !hooks ) { - // Use boolHook for boolean attributes - if ( rboolean.test( name ) && - (typeof value === "boolean" || value === undefined || value.toLowerCase() === name.toLowerCase()) ) { - - hooks = boolHook; - - // Use formHook for forms and if the name contains certain characters - } else if ( formHook && (jQuery.nodeName( elem, "form" ) || rinvalidChar.test( name )) ) { - hooks = formHook; - } - } - - if ( value !== undefined ) { - - if ( value === null ) { - jQuery.removeAttr( elem, name ); - return undefined; - - } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) { - return ret; - - } else { - elem.setAttribute( name, "" + value ); - return value; - } - - } else if ( hooks && "get" in hooks && notxml ) { - return hooks.get( elem, name ); - - } else { - - ret = elem.getAttribute( name ); - - // Non-existent attributes return null, we normalize to undefined - return ret === null ? - undefined : - ret; - } - }; -jQuery.attrFix = { "tabindex": 'tabIndex' }; -jQuery.attrFn = { "val": true, -"css": true, -"html": true, -"text": true, -"data": true, -"width": true, -"height": true, -"offset": true, -"blur": true, -"focus": true, -"focusin": true, -"focusout": true, -"load": true, -"resize": true, -"scroll": true, -"unload": true, -"click": true, -"dblclick": true, -"mousedown": true, -"mouseup": true, -"mousemove": true, -"mouseover": true, -"mouseout": true, -"mouseenter": true, -"mouseleave": true, -"change": true, -"select": true, -"submit": true, -"keydown": true, -"keypress": true, -"keyup": true, -"error": true }; -jQuery.attrHooks = { "type": {}, -"tabIndex": {}, -"value": {} }; -jQuery.bindReady = function() { - - if ( readyList ) { - return; - } - - readyList = jQuery._Deferred(); - - // Catch cases where $(document).ready() is called after the - // browser event has already occurred. - if ( document.readyState === "complete" ) { - // Handle it asynchronously to allow scripts the opportunity to delay ready - return setTimeout( jQuery.ready, 1 ); - } - - // Mozilla, Opera and webkit nightlies currently support this event - if ( document.addEventListener ) { - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", jQuery.ready, false ); - - // If IE event model is used - } else if ( document.attachEvent ) { - // ensure firing before onload, - // maybe late but safe also for iframes - document.attachEvent( "onreadystatechange", DOMContentLoaded ); - - // A fallback to window.onload, that will always work - window.attachEvent( "onload", jQuery.ready ); - - // If IE and not a frame - // continually check to see if the document is ready - var toplevel = false; - - try { - toplevel = window.frameElement == null; - } catch(e) {} - - if ( document.documentElement.doScroll && toplevel ) { - doScrollCheck(); - } - } - }; -jQuery.boxModel = true; -jQuery.browser = { "msie": true, -"version": '9.0' }; -jQuery.buildFragment = function( args, nodes, scripts ) { - - var fragment, cacheable, cacheresults, - doc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document); - - // Only cache "small" (1/2 KB) HTML strings that are associated with the main document - // Cloning options loses the selected state, so don't cache them - // IE 6 doesn't like it when you put or elements in a fragment - // Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache - if ( args.length === 1 && typeof args[0] === "string" && args[0].length < 512 && doc === document && - args[0].charAt(0) === "<" && !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) { - - cacheable = true; - - cacheresults = jQuery.fragments[ args[0] ]; - if ( cacheresults && cacheresults !== 1 ) { - fragment = cacheresults; - } - } - - if ( !fragment ) { - fragment = doc.createDocumentFragment(); - jQuery.clean( args, doc, fragment, scripts ); - } - - if ( cacheable ) { - jQuery.fragments[ args[0] ] = cacheresults ? fragment : 1; - } - - return { fragment: fragment, cacheable: cacheable }; -}; -jQuery.cache = {}; -jQuery.camelCase = function( string ) { - - return string.replace( rdashAlpha, fcamelCase ); - }; -jQuery.clean = function( elems, context, fragment, scripts ) { - - var checkScriptType; - - context = context || document; - - // !context.createElement fails in IE with an error but returns typeof 'object' - if ( typeof context.createElement === "undefined" ) { - context = context.ownerDocument || context[0] && context[0].ownerDocument || document; - } - - var ret = [], j; - - for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) { - if ( typeof elem === "number" ) { - elem += ""; - } - - if ( !elem ) { - continue; - } - - // Convert html string into DOM nodes - if ( typeof elem === "string" ) { - if ( !rhtml.test( elem ) ) { - elem = context.createTextNode( elem ); - } else { - // Fix "XHTML"-style tags in all browsers - elem = elem.replace(rxhtmlTag, "<$1>"); - - // Trim whitespace, otherwise indexOf won't work as expected - var tag = (rtagName.exec( elem ) || ["", ""])[1].toLowerCase(), - wrap = wrapMap[ tag ] || wrapMap._default, - depth = wrap[0], - div = context.createElement("div"); - - // Go to html and back, then peel off extra wrappers - div.innerHTML = wrap[1] + elem + wrap[2]; - - // Move to the right depth - while ( depth-- ) { - div = div.lastChild; - } - - // Remove IE's autoinserted from table fragments - if ( !jQuery.support.tbody ) { - - // String was a , *may* have spurious - var hasBody = rtbody.test(elem), - tbody = tag === "table" && !hasBody ? - div.firstChild && div.firstChild.childNodes : - - // String was a bare or - wrap[1] === "
    " && !hasBody ? - div.childNodes : - []; - - for ( j = tbody.length - 1; j >= 0 ; --j ) { - if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) { - tbody[ j ].parentNode.removeChild( tbody[ j ] ); - } - } - } - - // IE completely kills leading whitespace when innerHTML is used - if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { - div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild ); - } - - elem = div.childNodes; - } - } - - // Resets defaultChecked for any radios and checkboxes - // about to be appended to the DOM in IE 6/7 (#8060) - var len; - if ( !jQuery.support.appendChecked ) { - if ( elem[0] && typeof (len = elem.length) === "number" ) { - for ( j = 0; j < len; j++ ) { - findInputs( elem[j] ); - } - } else { - findInputs( elem ); - } - } - - if ( elem.nodeType ) { - ret.push( elem ); - } else { - ret = jQuery.merge( ret, elem ); - } - } - - if ( fragment ) { - checkScriptType = function( elem ) { - return !elem.type || rscriptType.test( elem.type ); - }; - for ( i = 0; ret[i]; i++ ) { - if ( scripts && jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) { - scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] ); - - } else { - if ( ret[i].nodeType === 1 ) { - var jsTags = jQuery.grep( ret[i].getElementsByTagName( "script" ), checkScriptType ); - - ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) ); - } - fragment.appendChild( ret[i] ); - } - } - } - - return ret; - }; -jQuery.cleanData = function( elems ) { - - var data, id, cache = jQuery.cache, internalKey = jQuery.expando, special = jQuery.event.special, - deleteExpando = jQuery.support.deleteExpando; - - for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) { - if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) { - continue; - } - - id = elem[ jQuery.expando ]; - - if ( id ) { - data = cache[ id ] && cache[ id ][ internalKey ]; - - if ( data && data.events ) { - for ( var type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - - // Null the DOM reference to avoid IE6/7/8 leak (#7054) - if ( data.handle ) { - data.handle.elem = null; - } - } - - if ( deleteExpando ) { - delete elem[ jQuery.expando ]; - - } else if ( elem.removeAttribute ) { - elem.removeAttribute( jQuery.expando ); - } - - delete cache[ id ]; - } - } - }; -jQuery.clone = function( elem, dataAndEvents, deepDataAndEvents ) { - - var clone = elem.cloneNode(true), - srcElements, - destElements, - i; - - if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) && - (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { - // IE copies events bound via attachEvent when using cloneNode. - // Calling detachEvent on the clone will also remove the events - // from the original. In order to get around this, we use some - // proprietary methods to clear the events. Thanks to MooTools - // guys for this hotness. - - cloneFixAttributes( elem, clone ); - - // Using Sizzle here is crazy slow, so we use getElementsByTagName - // instead - srcElements = getAll( elem ); - destElements = getAll( clone ); - - // Weird iteration because IE will replace the length property - // with an element if you are cloning the body and one of the - // elements on the page has a name or id of "length" - for ( i = 0; srcElements[i]; ++i ) { - cloneFixAttributes( srcElements[i], destElements[i] ); - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - cloneCopyEvent( elem, clone ); - - if ( deepDataAndEvents ) { - srcElements = getAll( elem ); - destElements = getAll( clone ); - - for ( i = 0; srcElements[i]; ++i ) { - cloneCopyEvent( srcElements[i], destElements[i] ); - } - } - } - - // Return the cloned set - return clone; - }; -jQuery.contains = function( a, b ) { -/// -/// Check to see if a DOM node is within another DOM node. -/// -/// -/// The DOM element that may contain the other element. -/// -/// -/// The DOM node that may be contained by the other element. -/// -/// - - return a !== b && (a.contains ? a.contains(b) : true); - }; -jQuery.css = function( elem, name, extra ) { - - var ret, hooks; - - // Make sure that we're working with the right name - name = jQuery.camelCase( name ); - hooks = jQuery.cssHooks[ name ]; - name = jQuery.cssProps[ name ] || name; - - // cssFloat needs a special treatment - if ( name === "cssFloat" ) { - name = "float"; - } - - // If a hook was provided get the computed value from there - if ( hooks && "get" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) { - return ret; - - // Otherwise, if a way to get the computed value exists, use that - } else if ( curCSS ) { - return curCSS( elem, name ); - } - }; -jQuery.cssHooks = { "opacity": {}, -"height": {}, -"width": {} }; -jQuery.cssNumber = { "zIndex": true, -"fontWeight": true, -"opacity": true, -"zoom": true, -"lineHeight": true, -"widows": true, -"orphans": true }; -jQuery.cssProps = { "float": 'cssFloat' }; -jQuery.curCSS = function( elem, name, extra ) { - - var ret, hooks; - - // Make sure that we're working with the right name - name = jQuery.camelCase( name ); - hooks = jQuery.cssHooks[ name ]; - name = jQuery.cssProps[ name ] || name; - - // cssFloat needs a special treatment - if ( name === "cssFloat" ) { - name = "float"; - } - - // If a hook was provided get the computed value from there - if ( hooks && "get" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) { - return ret; - - // Otherwise, if a way to get the computed value exists, use that - } else if ( curCSS ) { - return curCSS( elem, name ); - } - }; -jQuery.data = function( elem, name, data, pvt /* Internal Use Only */ ) { -/// -/// 1: Store arbitrary data associated with the specified element. Returns the value that was set. -/// 1.1 - jQuery.data(element, key, value) -/// 2: Returns value at named data store for the element, as set by jQuery.data(element, name, value), or the full data store for the element. -/// 2.1 - jQuery.data(element, key) -/// 2.2 - jQuery.data(element) -/// -/// -/// The DOM element to associate with the data. -/// -/// -/// A string naming the piece of data to set. -/// -/// -/// The new data value. -/// -/// - - if ( !jQuery.acceptData( elem ) ) { - return; - } - - var internalKey = jQuery.expando, getByName = typeof name === "string", thisCache, - - // We have to handle DOM nodes and JS objects differently because IE6-7 - // can't GC object references properly across the DOM-JS boundary - isNode = elem.nodeType, - - // Only DOM nodes need the global jQuery cache; JS object data is - // attached directly to the object so GC can occur automatically - cache = isNode ? jQuery.cache : elem, - - // Only defining an ID for JS objects if its cache already exists allows - // the code to shortcut on the same path as a DOM node with no cache - id = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando; - - // Avoid doing any more work than we need to when trying to get data on an - // object that has no data at all - if ( (!id || (pvt && id && !cache[ id ][ internalKey ])) && getByName && data === undefined ) { - return; - } - - if ( !id ) { - // Only DOM nodes need a new unique ID for each element since their data - // ends up in the global cache - if ( isNode ) { - elem[ jQuery.expando ] = id = ++jQuery.uuid; - } else { - id = jQuery.expando; - } - } - - if ( !cache[ id ] ) { - cache[ id ] = {}; - - // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery - // metadata on plain JS objects when the object is serialized using - // JSON.stringify - if ( !isNode ) { - cache[ id ].toJSON = jQuery.noop; - } - } - - // An object can be passed to jQuery.data instead of a key/value pair; this gets - // shallow copied over onto the existing cache - if ( typeof name === "object" || typeof name === "function" ) { - if ( pvt ) { - cache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name); - } else { - cache[ id ] = jQuery.extend(cache[ id ], name); - } - } - - thisCache = cache[ id ]; - - // Internal jQuery data is stored in a separate object inside the object's data - // cache in order to avoid key collisions between internal data and user-defined - // data - if ( pvt ) { - if ( !thisCache[ internalKey ] ) { - thisCache[ internalKey ] = {}; - } - - thisCache = thisCache[ internalKey ]; - } - - if ( data !== undefined ) { - thisCache[ jQuery.camelCase( name ) ] = data; - } - - // TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should - // not attempt to inspect the internal events object using jQuery.data, as this - // internal data object is undocumented and subject to change. - if ( name === "events" && !thisCache[name] ) { - return thisCache[ internalKey ] && thisCache[ internalKey ].events; - } - - return getByName ? thisCache[ jQuery.camelCase( name ) ] : thisCache; - }; -jQuery.dequeue = function( elem, type ) { -/// -/// Execute the next function on the queue for the matched element. -/// -/// -/// A DOM element from which to remove and execute a queued function. -/// -/// -/// A string containing the name of the queue. Defaults to fx, the standard effects queue. -/// -/// - - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - fn = queue.shift(), - defer; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - } - - if ( fn ) { - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift("inprogress"); - } - - fn.call(elem, function() { - jQuery.dequeue(elem, type); - }); - } - - if ( !queue.length ) { - jQuery.removeData( elem, type + "queue", true ); - handleQueueMarkDefer( elem, type, "queue" ); - } - }; -jQuery.dir = function( elem, dir, until ) { - - var matched = [], - cur = elem[ dir ]; - - while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { - if ( cur.nodeType === 1 ) { - matched.push( cur ); - } - cur = cur[dir]; - } - return matched; - }; -jQuery.each = function( object, callback, args ) { -/// -/// A generic iterator function, which can be used to seamlessly iterate over both objects and arrays. Arrays and array-like objects with a length property (such as a function's arguments object) are iterated by numeric index, from 0 to length-1. Other objects are iterated via their named properties. -/// -/// -/// The object or array to iterate over. -/// -/// -/// The function that will be executed on every object. -/// -/// - - var name, i = 0, - length = object.length, - isObj = length === undefined || jQuery.isFunction( object ); - - if ( args ) { - if ( isObj ) { - for ( name in object ) { - if ( callback.apply( object[ name ], args ) === false ) { - break; - } - } - } else { - for ( ; i < length; ) { - if ( callback.apply( object[ i++ ], args ) === false ) { - break; - } - } - } - - // A special, fast, case for the most common use of each - } else { - if ( isObj ) { - for ( name in object ) { - if ( callback.call( object[ name ], name, object[ name ] ) === false ) { - break; - } - } - } else { - for ( ; i < length; ) { - if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) { - break; - } - } - } - } - - return object; - }; -jQuery.easing = {}; -jQuery.error = function( msg ) { -/// -/// Takes a string and throws an exception containing it. -/// -/// -/// The message to send out. -/// - - throw msg; - }; -jQuery.etag = {}; -jQuery.event = { "global": {}, -"customEvent": {}, -"props": ['altKey','attrChange','attrName','bubbles','button','cancelable','charCode','clientX','clientY','ctrlKey','currentTarget','data','detail','eventPhase','fromElement','handler','keyCode','layerX','layerY','metaKey','newValue','offsetX','offsetY','pageX','pageY','prevValue','relatedNode','relatedTarget','screenX','screenY','shiftKey','srcElement','target','toElement','view','wheelDelta','which'], -"guid": 100000000, -"special": {}, -"triggered": }; -jQuery.expr = { "order": ['ID','CLASS','NAME','TAG'], -"match": {}, -"leftMatch": {}, -"attrMap": {}, -"attrHandle": {}, -"relative": {}, -"find": {}, -"preFilter": {}, -"filters": {}, -"setFilters": {}, -"filter": {}, -":": {} }; -jQuery.extend = function() { -/// -/// Merge the contents of two or more objects together into the first object. -/// 1 - jQuery.extend(target, object1, objectN) -/// 2 - jQuery.extend(deep, target, object1, objectN) -/// -/// -/// If true, the merge becomes recursive (aka. deep copy). -/// -/// -/// The object to extend. It will receive the new properties. -/// -/// -/// An object containing additional properties to merge in. -/// -/// -/// Additional objects containing properties to merge in. -/// -/// - - var options, name, src, copy, copyIsArray, clone, - target = arguments[0] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - target = arguments[1] || {}; - // skip the boolean and the target - i = 2; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction(target) ) { - target = {}; - } - - // extend jQuery itself if only one argument is passed - if ( length === i ) { - target = this; - --i; - } - - for ( ; i < length; i++ ) { - // Only deal with non-null/undefined values - if ( (options = arguments[ i ]) != null ) { - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray(src) ? src : []; - - } else { - clone = src && jQuery.isPlainObject(src) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; -jQuery.filter = function( expr, elems, not ) { - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return elems.length === 1 ? - jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : - jQuery.find.matches(expr, elems); - }; -jQuery.find = function( query, context, extra, seed ) { - - context = context || document; - - // Only use querySelectorAll on non-XML documents - // (ID selectors don't work in non-HTML documents) - if ( !seed && !Sizzle.isXML(context) ) { - // See if we find a selector to speed up - var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query ); - - if ( match && (context.nodeType === 1 || context.nodeType === 9) ) { - // Speed-up: Sizzle("TAG") - if ( match[1] ) { - return makeArray( context.getElementsByTagName( query ), extra ); - - // Speed-up: Sizzle(".CLASS") - } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) { - return makeArray( context.getElementsByClassName( match[2] ), extra ); - } - } - - if ( context.nodeType === 9 ) { - // Speed-up: Sizzle("body") - // The body element only exists once, optimize finding it - if ( query === "body" && context.body ) { - return makeArray( [ context.body ], extra ); - - // Speed-up: Sizzle("#ID") - } else if ( match && match[3] ) { - var elem = context.getElementById( match[3] ); - - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if ( elem && elem.parentNode ) { - // Handle the case where IE and Opera return items - // by name instead of ID - if ( elem.id === match[3] ) { - return makeArray( [ elem ], extra ); - } - - } else { - return makeArray( [], extra ); - } - } - - try { - return makeArray( context.querySelectorAll(query), extra ); - } catch(qsaError) {} - - // qSA works strangely on Element-rooted queries - // We can work around this by specifying an extra ID on the root - // and working up from there (Thanks to Andrew Dupont for the technique) - // IE 8 doesn't work on object elements - } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { - var oldContext = context, - old = context.getAttribute( "id" ), - nid = old || id, - hasParent = context.parentNode, - relativeHierarchySelector = /^\s*[+~]/.test( query ); - - if ( !old ) { - context.setAttribute( "id", nid ); - } else { - nid = nid.replace( /'/g, "\\$&" ); - } - if ( relativeHierarchySelector && hasParent ) { - context = context.parentNode; - } - - try { - if ( !relativeHierarchySelector || hasParent ) { - return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra ); - } - - } catch(pseudoError) { - } finally { - if ( !old ) { - oldContext.removeAttribute( "id" ); - } - } - } - } - - return oldSizzle(query, context, extra, seed); - }; -jQuery.fn = { "selector": '', -"jquery": '1.6.1', -"length": 0 }; -jQuery.fragments = {}; -jQuery.fx = function( elem, options, prop ) { - - this.options = options; - this.elem = elem; - this.prop = prop; - - options.orig = options.orig || {}; - }; -jQuery.get = function( url, data, callback, type ) { -/// -/// Load data from the server using a HTTP GET request. -/// -/// -/// A string containing the URL to which the request is sent. -/// -/// -/// A map or string that is sent to the server with the request. -/// -/// -/// A callback function that is executed if the request succeeds. -/// -/// -/// The type of data expected from the server. Default: Intelligent Guess (xml, json, script, or html). -/// - - // shift arguments if data argument was omitted - if ( jQuery.isFunction( data ) ) { - type = type || callback; - callback = data; - data = undefined; - } - - return jQuery.ajax({ - type: method, - url: url, - data: data, - success: callback, - dataType: type - }); - }; -jQuery.getJSON = function( url, data, callback ) { -/// -/// Load JSON-encoded data from the server using a GET HTTP request. -/// -/// -/// A string containing the URL to which the request is sent. -/// -/// -/// A map or string that is sent to the server with the request. -/// -/// -/// A callback function that is executed if the request succeeds. -/// - - return jQuery.get( url, data, callback, "json" ); - }; -jQuery.getScript = function( url, callback ) { -/// -/// Load a JavaScript file from the server using a GET HTTP request, then execute it. -/// -/// -/// A string containing the URL to which the request is sent. -/// -/// -/// A callback function that is executed if the request succeeds. -/// -/// - - return jQuery.get( url, undefined, callback, "script" ); - }; -jQuery.globalEval = function( data ) { -/// -/// Execute some JavaScript code globally. -/// -/// -/// The JavaScript code to execute. -/// - - if ( data && rnotwhite.test( data ) ) { - // We use execScript on Internet Explorer - // We use an anonymous function so that context is window - // rather than jQuery in Firefox - ( window.execScript || function( data ) { - window[ "eval" ].call( window, data ); - } )( data ); - } - }; -jQuery.grep = function( elems, callback, inv ) { -/// -/// Finds the elements of an array which satisfy a filter function. The original array is not affected. -/// -/// -/// The array to search through. -/// -/// -/// The function to process each item against. The first argument to the function is the item, and the second argument is the index. The function should return a Boolean value. this will be the global window object. -/// -/// -/// If "invert" is false, or not provided, then the function returns an array consisting of all elements for which "callback" returns true. If "invert" is true, then the function returns an array consisting of all elements for which "callback" returns false. -/// -/// - - var ret = [], retVal; - inv = !!inv; - - // Go through the array, only saving the items - // that pass the validator function - for ( var i = 0, length = elems.length; i < length; i++ ) { - retVal = !!callback( elems[ i ], i ); - if ( inv !== retVal ) { - ret.push( elems[ i ] ); - } - } - - return ret; - }; -jQuery.guid = 1; -jQuery.hasData = function( elem ) { -/// -/// Determine whether an element has any jQuery data associated with it. -/// -/// -/// A DOM element to be checked for data. -/// -/// - - elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; - - return !!elem && !isEmptyDataObject( elem ); - }; -jQuery.holdReady = function( hold ) { -/// -/// Holds or releases the execution of jQuery's ready event. -/// -/// -/// Indicates whether the ready hold is being requested or released -/// -/// - - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } - }; -jQuery.inArray = function( elem, array ) { -/// -/// Search for a specified value within an array and return its index (or -1 if not found). -/// -/// -/// The value to search for. -/// -/// -/// An array through which to search. -/// -/// - - - if ( indexOf ) { - return indexOf.call( array, elem ); - } - - for ( var i = 0, length = array.length; i < length; i++ ) { - if ( array[ i ] === elem ) { - return i; - } - } - - return -1; - }; -jQuery.isEmptyObject = function( obj ) { -/// -/// Check to see if an object is empty (contains no properties). -/// -/// -/// The object that will be checked to see if it's empty. -/// -/// - - for ( var name in obj ) { - return false; - } - return true; - }; -jQuery.isFunction = function( obj ) { -/// -/// Determine if the argument passed is a Javascript function object. -/// -/// -/// Object to test whether or not it is a function. -/// -/// - - return jQuery.type(obj) === "function"; - }; -jQuery.isNaN = function( obj ) { - - return obj == null || !rdigit.test( obj ) || isNaN( obj ); - }; -jQuery.isPlainObject = function( obj ) { -/// -/// Check to see if an object is a plain object (created using "{}" or "new Object"). -/// -/// -/// The object that will be checked to see if it's a plain object. -/// -/// - - // Must be an Object. - // Because of IE, we also have to check the presence of the constructor property. - // Make sure that DOM nodes and window objects don't pass through, as well - if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { - return false; - } - - // Not own constructor property must be Object - if ( obj.constructor && - !hasOwn.call(obj, "constructor") && - !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { - return false; - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own. - - var key; - for ( key in obj ) {} - - return key === undefined || hasOwn.call( obj, key ); - }; -jQuery.isReady = true; -jQuery.isWindow = function( obj ) { -/// -/// Determine whether the argument is a window. -/// -/// -/// Object to test whether or not it is a window. -/// -/// - - return obj && typeof obj === "object" && "setInterval" in obj; - }; -jQuery.isXMLDoc = function( elem ) { -/// -/// Check to see if a DOM node is within an XML document (or is an XML document). -/// -/// -/// The DOM node that will be checked to see if it's in an XML document. -/// -/// - - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement; - - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; -jQuery.lastModified = {}; -jQuery.makeArray = function( array, results ) { -/// -/// Convert an array-like object into a true JavaScript array. -/// -/// -/// Any object to turn into a native Array. -/// -/// - - var ret = results || []; - - if ( array != null ) { - // The window, strings (and functions) also have 'length' - // The extra typeof function check is to prevent crashes - // in Safari 2 (See: #3039) - // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930 - var type = jQuery.type( array ); - - if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) { - push.call( ret, array ); - } else { - jQuery.merge( ret, array ); - } - } - - return ret; - }; -jQuery.map = function( elems, callback, arg ) { -/// -/// Translate all items in an array or object to new array of items. -/// 1 - jQuery.map(array, callback(elementOfArray, indexInArray)) -/// 2 - jQuery.map(arrayOrObject, callback( value, indexOrKey )) -/// -/// -/// The Array to translate. -/// -/// -/// The function to process each item against. The first argument to the function is the array item, the second argument is the index in array The function can return any value. Within the function, this refers to the global (window) object. -/// -/// - - var value, key, ret = [], - i = 0, - length = elems.length, - // jquery objects are treated as arrays - isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ; - - // Go through the array, translating each of the items to their - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret[ ret.length ] = value; - } - } - - // Go through every key on the object, - } else { - for ( key in elems ) { - value = callback( elems[ key ], key, arg ); - - if ( value != null ) { - ret[ ret.length ] = value; - } - } - } - - // Flatten any nested arrays - return ret.concat.apply( [], ret ); - }; -jQuery.merge = function( first, second ) { -/// -/// Merge the contents of two arrays together into the first array. -/// -/// -/// The first array to merge, the elements of second added. -/// -/// -/// The second array to merge into the first, unaltered. -/// -/// - - var i = first.length, - j = 0; - - if ( typeof second.length === "number" ) { - for ( var l = second.length; j < l; j++ ) { - first[ i++ ] = second[ j ]; - } - - } else { - while ( second[j] !== undefined ) { - first[ i++ ] = second[ j++ ]; - } - } - - first.length = i; - - return first; - }; -jQuery.noConflict = function( deep ) { -/// -/// Relinquish jQuery's control of the $ variable. -/// -/// -/// A Boolean indicating whether to remove all jQuery variables from the global scope (including jQuery itself). -/// -/// - - if ( window.$ === jQuery ) { - window.$ = _$; - } - - if ( deep && window.jQuery === jQuery ) { - window.jQuery = _jQuery; - } - - return jQuery; - }; -jQuery.noData = { "embed": true, -"object": 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000', -"applet": true }; -jQuery.nodeName = function( elem, name ) { - - return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase(); - }; -jQuery.noop = function() { -/// -/// An empty function. -/// -/// -}; -jQuery.now = function() { -/// -/// Return a number representing the current time. -/// -/// - - return (new Date()).getTime(); - }; -jQuery.nth = function( cur, result, dir, elem ) { - - result = result || 1; - var num = 0; - - for ( ; cur; cur = cur[dir] ) { - if ( cur.nodeType === 1 && ++num === result ) { - break; - } - } - - return cur; - }; -jQuery.offset = {}; -jQuery.param = function( a, traditional ) { -/// -/// Create a serialized representation of an array or object, suitable for use in a URL query string or Ajax request. -/// 1 - jQuery.param(obj) -/// 2 - jQuery.param(obj, traditional) -/// -/// -/// An array or object to serialize. -/// -/// -/// A Boolean indicating whether to perform a traditional "shallow" serialization. -/// -/// - - var s = [], - add = function( key, value ) { - // If value is a function, invoke it and return its value - value = jQuery.isFunction( value ) ? value() : value; - s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value ); - }; - - // Set traditional to true for jQuery <= 1.3.2 behavior. - if ( traditional === undefined ) { - traditional = jQuery.ajaxSettings.traditional; - } - - // If an array was passed in, assume that it is an array of form elements. - if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { - // Serialize the form elements - jQuery.each( a, function() { - add( this.name, this.value ); - }); - - } else { - // If traditional, encode the "old" way (the way 1.3.2 or older - // did it), otherwise encode params recursively. - for ( var prefix in a ) { - buildParams( prefix, a[ prefix ], traditional, add ); - } - } - - // Return the resulting serialization - return s.join( "&" ).replace( r20, "+" ); - }; -jQuery.parseJSON = function( data ) { -/// -/// Takes a well-formed JSON string and returns the resulting JavaScript object. -/// -/// -/// The JSON string to parse. -/// -/// - - if ( typeof data !== "string" || !data ) { - return null; - } - - // Make sure leading/trailing whitespace is removed (IE can't handle it) - data = jQuery.trim( data ); - - // Attempt to parse using the native JSON parser first - if ( window.JSON && window.JSON.parse ) { - return window.JSON.parse( data ); - } - - // Make sure the incoming data is actual JSON - // Logic borrowed from http://json.org/json2.js - if ( rvalidchars.test( data.replace( rvalidescape, "@" ) - .replace( rvalidtokens, "]" ) - .replace( rvalidbraces, "")) ) { - - return (new Function( "return " + data ))(); - - } - jQuery.error( "Invalid JSON: " + data ); - }; -jQuery.parseXML = function( data , xml , tmp ) { -/// -/// Parses a string into an XML document. -/// -/// -/// a well-formed XML string to be parsed -/// -/// - - - if ( window.DOMParser ) { // Standard - tmp = new DOMParser(); - xml = tmp.parseFromString( data , "text/xml" ); - } else { // IE - xml = new ActiveXObject( "Microsoft.XMLDOM" ); - xml.async = "false"; - xml.loadXML( data ); - } - - tmp = xml.documentElement; - - if ( ! tmp || ! tmp.nodeName || tmp.nodeName === "parsererror" ) { - jQuery.error( "Invalid XML: " + data ); - } - - return xml; - }; -jQuery.post = function( url, data, callback, type ) { -/// -/// Load data from the server using a HTTP POST request. -/// -/// -/// A string containing the URL to which the request is sent. -/// -/// -/// A map or string that is sent to the server with the request. -/// -/// -/// A callback function that is executed if the request succeeds. -/// -/// -/// The type of data expected from the server. Default: Intelligent Guess (xml, json, script, or html). -/// - - // shift arguments if data argument was omitted - if ( jQuery.isFunction( data ) ) { - type = type || callback; - callback = data; - data = undefined; - } - - return jQuery.ajax({ - type: method, - url: url, - data: data, - success: callback, - dataType: type - }); - }; -jQuery.prop = function( elem, name, value ) { - - var nType = elem.nodeType; - - // don't get/set properties on text, comment and attribute nodes - if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { - return undefined; - } - - var ret, hooks, - notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); - - // Try to normalize/fix the name - name = notxml && jQuery.propFix[ name ] || name; - - hooks = jQuery.propHooks[ name ]; - - if ( value !== undefined ) { - if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { - return ret; - - } else { - return (elem[ name ] = value); - } - - } else { - if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== undefined ) { - return ret; - - } else { - return elem[ name ]; - } - } - }; -jQuery.propFix = { "tabindex": 'tabIndex', -"readonly": 'readOnly', -"for": 'htmlFor', -"class": 'className', -"maxlength": 'maxLength', -"cellspacing": 'cellSpacing', -"cellpadding": 'cellPadding', -"rowspan": 'rowSpan', -"colspan": 'colSpan', -"usemap": 'useMap', -"frameborder": 'frameBorder', -"contenteditable": 'contentEditable' }; -jQuery.propHooks = { "selected": {} }; -jQuery.proxy = function( fn, context ) { -/// -/// Takes a function and returns a new one that will always have a particular context. -/// 1 - jQuery.proxy(function, context) -/// 2 - jQuery.proxy(context, name) -/// -/// -/// The function whose context will be changed. -/// -/// -/// The object to which the context (this) of the function should be set. -/// -/// - - if ( typeof context === "string" ) { - var tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - var args = slice.call( arguments, 2 ), - proxy = function() { - return fn.apply( context, args.concat( slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++; - - return proxy; - }; -jQuery.queue = function( elem, type, data ) { -/// -/// 1: Show the queue of functions to be executed on the matched element. -/// 1.1 - jQuery.queue(element, queueName) -/// 2: Manipulate the queue of functions to be executed on the matched element. -/// 2.1 - jQuery.queue(element, queueName, newQueue) -/// 2.2 - jQuery.queue(element, queueName, callback()) -/// -/// -/// A DOM element where the array of queued functions is attached. -/// -/// -/// A string containing the name of the queue. Defaults to fx, the standard effects queue. -/// -/// -/// An array of functions to replace the current queue contents. -/// -/// - - if ( elem ) { - type = (type || "fx") + "queue"; - var q = jQuery.data( elem, type, undefined, true ); - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !q || jQuery.isArray(data) ) { - q = jQuery.data( elem, type, jQuery.makeArray(data), true ); - } else { - q.push( data ); - } - } - return q || []; - } - }; -jQuery.ready = function( wait ) { - - // Either a released hold or an DOMready/load event and not yet ready - if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) { - // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). - if ( !document.body ) { - return setTimeout( jQuery.ready, 1 ); - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - - // Trigger any bound ready events - if ( jQuery.fn.trigger ) { - jQuery( document ).trigger( "ready" ).unbind( "ready" ); - } - } - }; -jQuery.readyWait = 0; -jQuery.removeAttr = function( elem, name ) { - - var propName; - if ( elem.nodeType === 1 ) { - name = jQuery.attrFix[ name ] || name; - - if ( jQuery.support.getSetAttribute ) { - // Use removeAttribute in browsers that support it - elem.removeAttribute( name ); - } else { - jQuery.attr( elem, name, "" ); - elem.removeAttributeNode( elem.getAttributeNode( name ) ); - } - - // Set corresponding property to false for boolean attributes - if ( rboolean.test( name ) && (propName = jQuery.propFix[ name ] || name) in elem ) { - elem[ propName ] = false; - } - } - }; -jQuery.removeData = function( elem, name, pvt /* Internal Use Only */ ) { -/// -/// Remove a previously-stored piece of data. -/// -/// -/// A DOM element from which to remove data. -/// -/// -/// A string naming the piece of data to remove. -/// -/// - - if ( !jQuery.acceptData( elem ) ) { - return; - } - - var internalKey = jQuery.expando, isNode = elem.nodeType, - - // See jQuery.data for more information - cache = isNode ? jQuery.cache : elem, - - // See jQuery.data for more information - id = isNode ? elem[ jQuery.expando ] : jQuery.expando; - - // If there is already no cache entry for this object, there is no - // purpose in continuing - if ( !cache[ id ] ) { - return; - } - - if ( name ) { - var thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ]; - - if ( thisCache ) { - delete thisCache[ name ]; - - // If there is no data left in the cache, we want to continue - // and let the cache object itself get destroyed - if ( !isEmptyDataObject(thisCache) ) { - return; - } - } - } - - // See jQuery.data for more information - if ( pvt ) { - delete cache[ id ][ internalKey ]; - - // Don't destroy the parent cache unless the internal data object - // had been the only thing left in it - if ( !isEmptyDataObject(cache[ id ]) ) { - return; - } - } - - var internalCache = cache[ id ][ internalKey ]; - - // Browsers that fail expando deletion also refuse to delete expandos on - // the window, but it will allow it on all other JS objects; other browsers - // don't care - if ( jQuery.support.deleteExpando || cache != window ) { - delete cache[ id ]; - } else { - cache[ id ] = null; - } - - // We destroyed the entire user cache at once because it's faster than - // iterating through each key, but we need to continue to persist internal - // data if it existed - if ( internalCache ) { - cache[ id ] = {}; - // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery - // metadata on plain JS objects when the object is serialized using - // JSON.stringify - if ( !isNode ) { - cache[ id ].toJSON = jQuery.noop; - } - - cache[ id ][ internalKey ] = internalCache; - - // Otherwise, we need to eliminate the expando on the node to avoid - // false lookups in the cache for entries that no longer exist - } else if ( isNode ) { - // IE does not allow us to delete expando properties from nodes, - // nor does it have a removeAttribute function on Document nodes; - // we must handle all of these cases - if ( jQuery.support.deleteExpando ) { - delete elem[ jQuery.expando ]; - } else if ( elem.removeAttribute ) { - elem.removeAttribute( jQuery.expando ); - } else { - elem[ jQuery.expando ] = null; - } - } - }; -jQuery.removeEvent = function( elem, type, handle ) { - - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle, false ); - } - }; -jQuery.sibling = function( n, elem ) { - - var r = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - r.push( n ); - } - } - - return r; - }; -jQuery.speed = function( speed, easing, fn ) { - - var opt = speed && typeof speed === "object" ? jQuery.extend({}, speed) : { - complete: fn || !fn && easing || - jQuery.isFunction( speed ) && speed, - duration: speed, - easing: fn && easing || easing && !jQuery.isFunction(easing) && easing - }; - - opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration : - opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default; - - // Queueing - opt.old = opt.complete; - opt.complete = function( noUnmark ) { - if ( opt.queue !== false ) { - jQuery.dequeue( this ); - } else if ( noUnmark !== false ) { - jQuery._unmark( this ); - } - - if ( jQuery.isFunction( opt.old ) ) { - opt.old.call( this ); - } - }; - - return opt; - }; -jQuery.style = function( elem, name, value, extra ) { - - // Don't set styles on text and comment nodes - if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { - return; - } - - // Make sure that we're working with the right name - var ret, type, origName = jQuery.camelCase( name ), - style = elem.style, hooks = jQuery.cssHooks[ origName ]; - - name = jQuery.cssProps[ origName ] || origName; - - // Check if we're setting a value - if ( value !== undefined ) { - type = typeof value; - - // Make sure that NaN and null values aren't set. See: #7116 - if ( type === "number" && isNaN( value ) || value == null ) { - return; - } - - // convert relative number strings (+= or -=) to relative numbers. #7345 - if ( type === "string" && rrelNum.test( value ) ) { - value = +value.replace( rrelNumFilter, "" ) + parseFloat( jQuery.css( elem, name ) ); - } - - // If a number was passed in, add 'px' to the (except for certain CSS properties) - if ( type === "number" && !jQuery.cssNumber[ origName ] ) { - value += "px"; - } - - // If a hook was provided, use that value, otherwise just set the specified value - if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value )) !== undefined ) { - // Wrapped to prevent IE from throwing errors when 'invalid' values are provided - // Fixes bug #5509 - try { - style[ name ] = value; - } catch(e) {} - } - - } else { - // If a hook was provided get the non-computed value from there - if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) { - return ret; - } - - // Otherwise just get the value from the style object - return style[ name ]; - } - }; -jQuery.sub = function() { -/// -/// Creates a new copy of jQuery whose properties and methods can be modified without affecting the original jQuery object. -/// -/// - - function jQuerySub( selector, context ) { - return new jQuerySub.fn.init( selector, context ); - } - jQuery.extend( true, jQuerySub, this ); - jQuerySub.superclass = this; - jQuerySub.fn = jQuerySub.prototype = this(); - jQuerySub.fn.constructor = jQuerySub; - jQuerySub.sub = this.sub; - jQuerySub.fn.init = function init( selector, context ) { - if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) { - context = jQuerySub( context ); - } - - return jQuery.fn.init.call( this, selector, context, rootjQuerySub ); - }; - jQuerySub.fn.init.prototype = jQuerySub.fn; - var rootjQuerySub = jQuerySub(document); - return jQuerySub; - }; -jQuery.support = { "leadingWhitespace": true, -"tbody": true, -"htmlSerialize": true, -"style": true, -"hrefNormalized": true, -"opacity": true, -"cssFloat": true, -"checkOn": true, -"optSelected": false, -"getSetAttribute": true, -"submitBubbles": true, -"changeBubbles": true, -"focusinBubbles": true, -"deleteExpando": true, -"noCloneEvent": true, -"inlineBlockNeedsLayout": false, -"shrinkWrapBlocks": false, -"reliableMarginRight": true, -"noCloneChecked": false, -"optDisabled": true, -"radioValue": false, -"checkClone": , -"appendChecked": true, -"boxModel": true, -"reliableHiddenOffsets": true, -"ajax": true, -"cors": false }; -jQuery.swap = function( elem, options, callback ) { - - var old = {}; - - // Remember the old values, and insert the new ones - for ( var name in options ) { - old[ name ] = elem.style[ name ]; - elem.style[ name ] = options[ name ]; - } - - callback.call( elem ); - - // Revert the old values - for ( name in options ) { - elem.style[ name ] = old[ name ]; - } - }; -jQuery.text = function( elems ) { - - var ret = "", elem; - - for ( var i = 0; elems[i]; i++ ) { - elem = elems[i]; - - // Get the text from text nodes and CDATA nodes - if ( elem.nodeType === 3 || elem.nodeType === 4 ) { - ret += elem.nodeValue; - - // Traverse everything else, except comment nodes - } else if ( elem.nodeType !== 8 ) { - ret += Sizzle.getText( elem.childNodes ); - } - } - - return ret; -}; -jQuery.trim = function( text ) { -/// -/// Remove the whitespace from the beginning and end of a string. -/// -/// -/// The string to trim. -/// -/// - - return text == null ? - "" : - trim.call( text ); - }; -jQuery.type = function( obj ) { -/// -/// Determine the internal JavaScript [[Class]] of an object. -/// -/// -/// Object to get the internal JavaScript [[Class]] of. -/// -/// - - return obj == null ? - String( obj ) : - class2type[ toString.call(obj) ] || "object"; - }; -jQuery.uaMatch = function( ua ) { - - ua = ua.toLowerCase(); - - var match = rwebkit.exec( ua ) || - ropera.exec( ua ) || - rmsie.exec( ua ) || - ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) || - []; - - return { browser: match[1] || "", version: match[2] || "0" }; - }; -jQuery.unique = function( results ) { -/// -/// Sorts an array of DOM elements, in place, with the duplicates removed. Note that this only works on arrays of DOM elements, not strings or numbers. -/// -/// -/// The Array of DOM elements. -/// -/// - - if ( sortOrder ) { - hasDuplicate = baseHasDuplicate; - results.sort( sortOrder ); - - if ( hasDuplicate ) { - for ( var i = 1; i < results.length; i++ ) { - if ( results[i] === results[ i - 1 ] ) { - results.splice( i--, 1 ); - } - } - } - } - - return results; -}; -jQuery.uuid = 0; -jQuery.valHooks = { "option": {}, -"select": {}, -"radio": {}, -"checkbox": {} }; -jQuery.when = function( firstParam ) { -/// -/// Provides a way to execute callback functions based on one or more objects, usually Deferred objects that represent asynchronous events. -/// -/// -/// One or more Deferred objects, or plain JavaScript objects. -/// -/// - - var args = arguments, - i = 0, - length = args.length, - count = length, - deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ? - firstParam : - jQuery.Deferred(); - function resolveFunc( i ) { - return function( value ) { - args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; - if ( !( --count ) ) { - // Strange bug in FF4: - // Values changed onto the arguments object sometimes end up as undefined values - // outside the $.when method. Cloning the object into a fresh array solves the issue - deferred.resolveWith( deferred, sliceDeferred.call( args, 0 ) ); - } - }; - } - if ( length > 1 ) { - for( ; i < length; i++ ) { - if ( args[ i ] && jQuery.isFunction( args[ i ].promise ) ) { - args[ i ].promise().then( resolveFunc(i), deferred.reject ); - } else { - --count; - } - } - if ( !count ) { - deferred.resolveWith( deferred, args ); - } - } else if ( deferred !== firstParam ) { - deferred.resolveWith( deferred, length ? [ firstParam ] : [] ); - } - return deferred.promise(); - }; -jQuery.Event.prototype.isDefaultPrevented = function returnFalse() { -/// -/// Returns whether event.preventDefault() was ever called on this event object. -/// -/// - - return false; -}; -jQuery.Event.prototype.isImmediatePropagationStopped = function returnFalse() { -/// -/// Returns whether event.stopImmediatePropagation() was ever called on this event object. -/// -/// - - return false; -}; -jQuery.Event.prototype.isPropagationStopped = function returnFalse() { -/// -/// Returns whether event.stopPropagation() was ever called on this event object. -/// -/// - - return false; -}; -jQuery.Event.prototype.preventDefault = function() { -/// -/// If this method is called, the default action of the event will not be triggered. -/// -/// - - this.isDefaultPrevented = returnTrue; - - var e = this.originalEvent; - if ( !e ) { - return; - } - - // if preventDefault exists run it on the original event - if ( e.preventDefault ) { - e.preventDefault(); - - // otherwise set the returnValue property of the original event to false (IE) - } else { - e.returnValue = false; - } - }; -jQuery.Event.prototype.stopImmediatePropagation = function() { -/// -/// Keeps the rest of the handlers from being executed and prevents the event from bubbling up the DOM tree. -/// - - this.isImmediatePropagationStopped = returnTrue; - this.stopPropagation(); - }; -jQuery.Event.prototype.stopPropagation = function() { -/// -/// Prevents the event from bubbling up the DOM tree, preventing any parent handlers from being notified of the event. -/// - - this.isPropagationStopped = returnTrue; - - var e = this.originalEvent; - if ( !e ) { - return; - } - // if stopPropagation exists run it on the original event - if ( e.stopPropagation ) { - e.stopPropagation(); - } - // otherwise set the cancelBubble property of the original event to true (IE) - e.cancelBubble = true; - }; -jQuery.prototype._toggle = function( fn ) { - - // Save reference to arguments for access in closure - var args = arguments, - guid = fn.guid || jQuery.guid++, - i = 0, - toggler = function( event ) { - // Figure out which function to execute - var lastToggle = ( jQuery.data( this, "lastToggle" + fn.guid ) || 0 ) % i; - jQuery.data( this, "lastToggle" + fn.guid, lastToggle + 1 ); - - // Make sure that clicks stop - event.preventDefault(); - - // and execute the function - return args[ lastToggle ].apply( this, arguments ) || false; - }; - - // link all the functions, so any of them can unbind this click handler - toggler.guid = guid; - while ( i < args.length ) { - args[ i++ ].guid = guid; - } - - return this.click( toggler ); - }; -jQuery.prototype.add = function( selector, context ) { -/// -/// Add elements to the set of matched elements. -/// 1 - add(selector) -/// 2 - add(elements) -/// 3 - add(html) -/// 4 - add(selector, context) -/// -/// -/// A string representing a selector expression to find additional elements to add to the set of matched elements. -/// -/// -/// The point in the document at which the selector should begin matching; similar to the context argument of the $(selector, context) method. -/// -/// - - var set = typeof selector === "string" ? - jQuery( selector, context ) : - jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), - all = jQuery.merge( this.get(), set ); - - return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ? - all : - jQuery.unique( all ) ); - }; -jQuery.prototype.addClass = function( value ) { -/// -/// Adds the specified class(es) to each of the set of matched elements. -/// 1 - addClass(className) -/// 2 - addClass(function(index, currentClass)) -/// -/// -/// One or more class names to be added to the class attribute of each matched element. -/// -/// - - if ( jQuery.isFunction( value ) ) { - return this.each(function(i) { - var self = jQuery(this); - self.addClass( value.call(this, i, self.attr("class") || "") ); - }); - } - - if ( value && typeof value === "string" ) { - var classNames = (value || "").split( rspace ); - - for ( var i = 0, l = this.length; i < l; i++ ) { - var elem = this[i]; - - if ( elem.nodeType === 1 ) { - if ( !elem.className ) { - elem.className = value; - - } else { - var className = " " + elem.className + " ", - setClass = elem.className; - - for ( var c = 0, cl = classNames.length; c < cl; c++ ) { - if ( className.indexOf( " " + classNames[c] + " " ) < 0 ) { - setClass += " " + classNames[c]; - } - } - elem.className = jQuery.trim( setClass ); - } - } - } - } - - return this; - }; -jQuery.prototype.after = function() { -/// -/// Insert content, specified by the parameter, after each element in the set of matched elements. -/// 1 - after(content, content) -/// 2 - after(function(index)) -/// -/// -/// HTML string, DOM element, or jQuery object to insert after each element in the set of matched elements. -/// -/// -/// One or more additional DOM elements, arrays of elements, HTML strings, or jQuery objects to insert after each element in the set of matched elements. -/// -/// - - if ( this[0] && this[0].parentNode ) { - return this.domManip(arguments, false, function( elem ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - }); - } else if ( arguments.length ) { - var set = this.pushStack( this, "after", arguments ); - set.push.apply( set, jQuery(arguments[0]).toArray() ); - return set; - } - }; -jQuery.prototype.ajaxComplete = function( f ){ -/// -/// Register a handler to be called when Ajax requests complete. This is an Ajax Event. -/// -/// -/// The function to be invoked. -/// -/// - - return this.bind( o, f ); - }; -jQuery.prototype.ajaxError = function( f ){ -/// -/// Register a handler to be called when Ajax requests complete with an error. This is an Ajax Event. -/// -/// -/// The function to be invoked. -/// -/// - - return this.bind( o, f ); - }; -jQuery.prototype.ajaxSend = function( f ){ -/// -/// Attach a function to be executed before an Ajax request is sent. This is an Ajax Event. -/// -/// -/// The function to be invoked. -/// -/// - - return this.bind( o, f ); - }; -jQuery.prototype.ajaxStart = function( f ){ -/// -/// Register a handler to be called when the first Ajax request begins. This is an Ajax Event. -/// -/// -/// The function to be invoked. -/// -/// - - return this.bind( o, f ); - }; -jQuery.prototype.ajaxStop = function( f ){ -/// -/// Register a handler to be called when all Ajax requests have completed. This is an Ajax Event. -/// -/// -/// The function to be invoked. -/// -/// - - return this.bind( o, f ); - }; -jQuery.prototype.ajaxSuccess = function( f ){ -/// -/// Attach a function to be executed whenever an Ajax request completes successfully. This is an Ajax Event. -/// -/// -/// The function to be invoked. -/// -/// - - return this.bind( o, f ); - }; -jQuery.prototype.andSelf = function() { -/// -/// Add the previous set of elements on the stack to the current set. -/// -/// - - return this.add( this.prevObject ); - }; -jQuery.prototype.animate = function( prop, speed, easing, callback ) { -/// -/// Perform a custom animation of a set of CSS properties. -/// 1 - animate(properties, duration, easing, complete) -/// 2 - animate(properties, options) -/// -/// -/// A map of CSS properties that the animation will move toward. -/// -/// -/// A string or number determining how long the animation will run. -/// -/// -/// A string indicating which easing function to use for the transition. -/// -/// -/// A function to call once the animation is complete. -/// -/// - - var optall = jQuery.speed(speed, easing, callback); - - if ( jQuery.isEmptyObject( prop ) ) { - return this.each( optall.complete, [ false ] ); - } - - // Do not change referenced properties as per-property easing will be lost - prop = jQuery.extend( {}, prop ); - - return this[ optall.queue === false ? "each" : "queue" ](function() { - // XXX 'this' does not always have a nodeName when running the - // test suite - - if ( optall.queue === false ) { - jQuery._mark( this ); - } - - var opt = jQuery.extend( {}, optall ), - isElement = this.nodeType === 1, - hidden = isElement && jQuery(this).is(":hidden"), - name, val, p, - display, e, - parts, start, end, unit; - - // will store per property easing and be used to determine when an animation is complete - opt.animatedProperties = {}; - - for ( p in prop ) { - - // property name normalization - name = jQuery.camelCase( p ); - if ( p !== name ) { - prop[ name ] = prop[ p ]; - delete prop[ p ]; - } - - val = prop[ name ]; - - // easing resolution: per property > opt.specialEasing > opt.easing > 'swing' (default) - if ( jQuery.isArray( val ) ) { - opt.animatedProperties[ name ] = val[ 1 ]; - val = prop[ name ] = val[ 0 ]; - } else { - opt.animatedProperties[ name ] = opt.specialEasing && opt.specialEasing[ name ] || opt.easing || 'swing'; - } - - if ( val === "hide" && hidden || val === "show" && !hidden ) { - return opt.complete.call( this ); - } - - if ( isElement && ( name === "height" || name === "width" ) ) { - // Make sure that nothing sneaks out - // Record all 3 overflow attributes because IE does not - // change the overflow attribute when overflowX and - // overflowY are set to the same value - opt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ]; - - // Set display property to inline-block for height/width - // animations on inline elements that are having width/height - // animated - if ( jQuery.css( this, "display" ) === "inline" && - jQuery.css( this, "float" ) === "none" ) { - if ( !jQuery.support.inlineBlockNeedsLayout ) { - this.style.display = "inline-block"; - - } else { - display = defaultDisplay( this.nodeName ); - - // inline-level elements accept inline-block; - // block-level elements need to be inline with layout - if ( display === "inline" ) { - this.style.display = "inline-block"; - - } else { - this.style.display = "inline"; - this.style.zoom = 1; - } - } - } - } - } - - if ( opt.overflow != null ) { - this.style.overflow = "hidden"; - } - - for ( p in prop ) { - e = new jQuery.fx( this, opt, p ); - val = prop[ p ]; - - if ( rfxtypes.test(val) ) { - e[ val === "toggle" ? hidden ? "show" : "hide" : val ](); - - } else { - parts = rfxnum.exec( val ); - start = e.cur(); - - if ( parts ) { - end = parseFloat( parts[2] ); - unit = parts[3] || ( jQuery.cssNumber[ p ] ? "" : "px" ); - - // We need to compute starting value - if ( unit !== "px" ) { - jQuery.style( this, p, (end || 1) + unit); - start = ((end || 1) / e.cur()) * start; - jQuery.style( this, p, start + unit); - } - - // If a +=/-= token was provided, we're doing a relative animation - if ( parts[1] ) { - end = ( (parts[ 1 ] === "-=" ? -1 : 1) * end ) + start; - } - - e.custom( start, end, unit ); - - } else { - e.custom( start, val, "" ); - } - } - } - - // For JS strict compliance - return true; - }); - }; -jQuery.prototype.append = function() { -/// -/// Insert content, specified by the parameter, to the end of each element in the set of matched elements. -/// 1 - append(content, content) -/// 2 - append(function(index, html)) -/// -/// -/// DOM element, HTML string, or jQuery object to insert at the end of each element in the set of matched elements. -/// -/// -/// One or more additional DOM elements, arrays of elements, HTML strings, or jQuery objects to insert at the end of each element in the set of matched elements. -/// -/// - - return this.domManip(arguments, true, function( elem ) { - if ( this.nodeType === 1 ) { - this.appendChild( elem ); - } - }); - }; -jQuery.prototype.appendTo = function( selector ) { -/// -/// Insert every element in the set of matched elements to the end of the target. -/// -/// -/// A selector, element, HTML string, or jQuery object; the matched set of elements will be inserted at the end of the element(s) specified by this parameter. -/// -/// - - var ret = [], - insert = jQuery( selector ), - parent = this.length === 1 && this[0].parentNode; - - if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) { - insert[ original ]( this[0] ); - return this; - - } else { - for ( var i = 0, l = insert.length; i < l; i++ ) { - var elems = (i > 0 ? this.clone(true) : this).get(); - jQuery( insert[i] )[ original ]( elems ); - ret = ret.concat( elems ); - } - - return this.pushStack( ret, name, insert.selector ); - } - }; -jQuery.prototype.attr = function( name, value ) { -/// -/// 1: Get the value of an attribute for the first element in the set of matched elements. -/// 1.1 - attr(attributeName) -/// 2: Set one or more attributes for the set of matched elements. -/// 2.1 - attr(attributeName, value) -/// 2.2 - attr(map) -/// 2.3 - attr(attributeName, function(index, attr)) -/// -/// -/// The name of the attribute to set. -/// -/// -/// A value to set for the attribute. -/// -/// - - return jQuery.access( this, name, value, true, jQuery.attr ); - }; -jQuery.prototype.before = function() { -/// -/// Insert content, specified by the parameter, before each element in the set of matched elements. -/// 1 - before(content, content) -/// 2 - before(function) -/// -/// -/// HTML string, DOM element, or jQuery object to insert before each element in the set of matched elements. -/// -/// -/// One or more additional DOM elements, arrays of elements, HTML strings, or jQuery objects to insert before each element in the set of matched elements. -/// -/// - - if ( this[0] && this[0].parentNode ) { - return this.domManip(arguments, false, function( elem ) { - this.parentNode.insertBefore( elem, this ); - }); - } else if ( arguments.length ) { - var set = jQuery(arguments[0]); - set.push.apply( set, this.toArray() ); - return this.pushStack( set, "before", arguments ); - } - }; -jQuery.prototype.bind = function( type, data, fn ) { -/// -/// Attach a handler to an event for the elements. -/// 1 - bind(eventType, eventData, handler(eventObject)) -/// 2 - bind(eventType, eventData, false) -/// 3 - bind(events) -/// -/// -/// A string containing one or more JavaScript event types, such as "click" or "submit," or custom event names. -/// -/// -/// A map of data that will be passed to the event handler. -/// -/// -/// A function to execute each time the event is triggered. -/// -/// - - var handler; - - // Handle object literals - if ( typeof type === "object" ) { - for ( var key in type ) { - this[ name ](key, data, type[key], fn); - } - return this; - } - - if ( arguments.length === 2 || data === false ) { - fn = data; - data = undefined; - } - - if ( name === "one" ) { - handler = function( event ) { - jQuery( this ).unbind( event, handler ); - return fn.apply( this, arguments ); - }; - handler.guid = fn.guid || jQuery.guid++; - } else { - handler = fn; - } - - if ( type === "unload" && name !== "one" ) { - this.one( type, data, fn ); - - } else { - for ( var i = 0, l = this.length; i < l; i++ ) { - jQuery.event.add( this[i], type, handler, data ); - } - } - - return this; - }; -jQuery.prototype.blur = function( data, fn ) { -/// -/// Bind an event handler to the "blur" JavaScript event, or trigger that event on an element. -/// 1 - blur(handler(eventObject)) -/// 2 - blur(eventData, handler(eventObject)) -/// 3 - blur() -/// -/// -/// A map of data that will be passed to the event handler. -/// -/// -/// A function to execute each time the event is triggered. -/// -/// - - if ( fn == null ) { - fn = data; - data = null; - } - - return arguments.length > 0 ? - this.bind( name, data, fn ) : - this.trigger( name ); - }; -jQuery.prototype.change = function( data, fn ) { -/// -/// Bind an event handler to the "change" JavaScript event, or trigger that event on an element. -/// 1 - change(handler(eventObject)) -/// 2 - change(eventData, handler(eventObject)) -/// 3 - change() -/// -/// -/// A map of data that will be passed to the event handler. -/// -/// -/// A function to execute each time the event is triggered. -/// -/// - - if ( fn == null ) { - fn = data; - data = null; - } - - return arguments.length > 0 ? - this.bind( name, data, fn ) : - this.trigger( name ); - }; -jQuery.prototype.children = function( until, selector ) { -/// -/// Get the children of each element in the set of matched elements, optionally filtered by a selector. -/// -/// -/// A string containing a selector expression to match elements against. -/// -/// - - var ret = jQuery.map( this, fn, until ), - // The variable 'args' was introduced in - // https://github.com/jquery/jquery/commit/52a0238 - // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. - // http://code.google.com/p/v8/issues/detail?id=1050 - args = slice.call(arguments); - - if ( !runtil.test( name ) ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - ret = jQuery.filter( selector, ret ); - } - - ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; - - if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { - ret = ret.reverse(); - } - - return this.pushStack( ret, name, args.join(",") ); - }; -jQuery.prototype.clearQueue = function( type ) { -/// -/// Remove from the queue all items that have not yet been run. -/// -/// -/// A string containing the name of the queue. Defaults to fx, the standard effects queue. -/// -/// - - return this.queue( type || "fx", [] ); - }; -jQuery.prototype.click = function( data, fn ) { -/// -/// Bind an event handler to the "click" JavaScript event, or trigger that event on an element. -/// 1 - click(handler(eventObject)) -/// 2 - click(eventData, handler(eventObject)) -/// 3 - click() -/// -/// -/// A map of data that will be passed to the event handler. -/// -/// -/// A function to execute each time the event is triggered. -/// -/// - - if ( fn == null ) { - fn = data; - data = null; - } - - return arguments.length > 0 ? - this.bind( name, data, fn ) : - this.trigger( name ); - }; -jQuery.prototype.clone = function( dataAndEvents, deepDataAndEvents ) { -/// -/// Create a deep copy of the set of matched elements. -/// 1 - clone(withDataAndEvents) -/// 2 - clone(withDataAndEvents, deepWithDataAndEvents) -/// -/// -/// A Boolean indicating whether event handlers and data should be copied along with the elements. The default value is false. *For 1.5.0 the default value is incorrectly true. This will be changed back to false in 1.5.1 and up. -/// -/// -/// A Boolean indicating whether event handlers and data for all children of the cloned element should be copied. By default its value matches the first argument's value (which defaults to false). -/// -/// - - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map( function () { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - }); - }; -jQuery.prototype.closest = function( selectors, context ) { -/// -/// 1: Get the first ancestor element that matches the selector, beginning at the current element and progressing up through the DOM tree. -/// 1.1 - closest(selector) -/// 1.2 - closest(selector, context) -/// 1.3 - closest(jQuery object) -/// 1.4 - closest(element) -/// 2: Gets an array of all the elements and selectors matched against the current element up through the DOM tree. -/// 2.1 - closest(selectors, context) -/// -/// -/// A string containing a selector expression to match elements against. -/// -/// -/// A DOM element within which a matching element may be found. If no context is passed in then the context of the jQuery set will be used instead. -/// -/// - - var ret = [], i, l, cur = this[0]; - - // Array - if ( jQuery.isArray( selectors ) ) { - var match, selector, - matches = {}, - level = 1; - - if ( cur && selectors.length ) { - for ( i = 0, l = selectors.length; i < l; i++ ) { - selector = selectors[i]; - - if ( !matches[ selector ] ) { - matches[ selector ] = POS.test( selector ) ? - jQuery( selector, context || this.context ) : - selector; - } - } - - while ( cur && cur.ownerDocument && cur !== context ) { - for ( selector in matches ) { - match = matches[ selector ]; - - if ( match.jquery ? match.index( cur ) > -1 : jQuery( cur ).is( match ) ) { - ret.push({ selector: selector, elem: cur, level: level }); - } - } - - cur = cur.parentNode; - level++; - } - } - - return ret; - } - - // String - var pos = POS.test( selectors ) || typeof selectors !== "string" ? - jQuery( selectors, context || this.context ) : - 0; - - for ( i = 0, l = this.length; i < l; i++ ) { - cur = this[i]; - - while ( cur ) { - if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { - ret.push( cur ); - break; - - } else { - cur = cur.parentNode; - if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) { - break; - } - } - } - } - - ret = ret.length > 1 ? jQuery.unique( ret ) : ret; - - return this.pushStack( ret, "closest", selectors ); - }; -jQuery.prototype.constructor = function( selector, context ) { - - // The jQuery object is actually just the init constructor 'enhanced' - return new jQuery.fn.init( selector, context, rootjQuery ); - }; -jQuery.prototype.contents = function( until, selector ) { -/// -/// Get the children of each element in the set of matched elements, including text and comment nodes. -/// -/// - - var ret = jQuery.map( this, fn, until ), - // The variable 'args' was introduced in - // https://github.com/jquery/jquery/commit/52a0238 - // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. - // http://code.google.com/p/v8/issues/detail?id=1050 - args = slice.call(arguments); - - if ( !runtil.test( name ) ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - ret = jQuery.filter( selector, ret ); - } - - ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; - - if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { - ret = ret.reverse(); - } - - return this.pushStack( ret, name, args.join(",") ); - }; -jQuery.prototype.css = function( name, value ) { -/// -/// 1: Get the value of a style property for the first element in the set of matched elements. -/// 1.1 - css(propertyName) -/// 2: Set one or more CSS properties for the set of matched elements. -/// 2.1 - css(propertyName, value) -/// 2.2 - css(propertyName, function(index, value)) -/// 2.3 - css(map) -/// -/// -/// A CSS property name. -/// -/// -/// A value to set for the property. -/// -/// - - // Setting 'undefined' is a no-op - if ( arguments.length === 2 && value === undefined ) { - return this; - } - - return jQuery.access( this, name, value, true, function( elem, name, value ) { - return value !== undefined ? - jQuery.style( elem, name, value ) : - jQuery.css( elem, name ); - }); -}; -jQuery.prototype.data = function( key, value ) { -/// -/// 1: Store arbitrary data associated with the matched elements. -/// 1.1 - data(key, value) -/// 1.2 - data(obj) -/// 2: Returns value at named data store for the first element in the jQuery collection, as set by data(name, value). -/// 2.1 - data(key) -/// 2.2 - data() -/// -/// -/// A string naming the piece of data to set. -/// -/// -/// The new data value; it can be any Javascript type including Array or Object. -/// -/// - - var data = null; - - if ( typeof key === "undefined" ) { - if ( this.length ) { - data = jQuery.data( this[0] ); - - if ( this[0].nodeType === 1 ) { - var attr = this[0].attributes, name; - for ( var i = 0, l = attr.length; i < l; i++ ) { - name = attr[i].name; - - if ( name.indexOf( "data-" ) === 0 ) { - name = jQuery.camelCase( name.substring(5) ); - - dataAttr( this[0], name, data[ name ] ); - } - } - } - } - - return data; - - } else if ( typeof key === "object" ) { - return this.each(function() { - jQuery.data( this, key ); - }); - } - - var parts = key.split("."); - parts[1] = parts[1] ? "." + parts[1] : ""; - - if ( value === undefined ) { - data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); - - // Try to fetch any internally stored data first - if ( data === undefined && this.length ) { - data = jQuery.data( this[0], key ); - data = dataAttr( this[0], key, data ); - } - - return data === undefined && parts[1] ? - this.data( parts[0] ) : - data; - - } else { - return this.each(function() { - var $this = jQuery( this ), - args = [ parts[0], value ]; - - $this.triggerHandler( "setData" + parts[1] + "!", args ); - jQuery.data( this, key, value ); - $this.triggerHandler( "changeData" + parts[1] + "!", args ); - }); - } - }; -jQuery.prototype.dblclick = function( data, fn ) { -/// -/// Bind an event handler to the "dblclick" JavaScript event, or trigger that event on an element. -/// 1 - dblclick(handler(eventObject)) -/// 2 - dblclick(eventData, handler(eventObject)) -/// 3 - dblclick() -/// -/// -/// A map of data that will be passed to the event handler. -/// -/// -/// A function to execute each time the event is triggered. -/// -/// - - if ( fn == null ) { - fn = data; - data = null; - } - - return arguments.length > 0 ? - this.bind( name, data, fn ) : - this.trigger( name ); - }; -jQuery.prototype.delay = function( time, type ) { -/// -/// Set a timer to delay execution of subsequent items in the queue. -/// -/// -/// An integer indicating the number of milliseconds to delay execution of the next item in the queue. -/// -/// -/// A string containing the name of the queue. Defaults to fx, the standard effects queue. -/// -/// - - time = jQuery.fx ? jQuery.fx.speeds[time] || time : time; - type = type || "fx"; - - return this.queue( type, function() { - var elem = this; - setTimeout(function() { - jQuery.dequeue( elem, type ); - }, time ); - }); - }; -jQuery.prototype.delegate = function( selector, types, data, fn ) { -/// -/// Attach a handler to one or more events for all elements that match the selector, now or in the future, based on a specific set of root elements. -/// 1 - delegate(selector, eventType, handler) -/// 2 - delegate(selector, eventType, eventData, handler) -/// 3 - delegate(selector, events) -/// -/// -/// A selector to filter the elements that trigger the event. -/// -/// -/// A string containing one or more space-separated JavaScript event types, such as "click" or "keydown," or custom event names. -/// -/// -/// A map of data that will be passed to the event handler. -/// -/// -/// A function to execute at the time the event is triggered. -/// -/// - - return this.live( types, data, fn, selector ); - }; -jQuery.prototype.dequeue = function( type ) { -/// -/// Execute the next function on the queue for the matched elements. -/// -/// -/// A string containing the name of the queue. Defaults to fx, the standard effects queue. -/// -/// - - return this.each(function() { - jQuery.dequeue( this, type ); - }); - }; -jQuery.prototype.detach = function( selector ) { -/// -/// Remove the set of matched elements from the DOM. -/// -/// -/// A selector expression that filters the set of matched elements to be removed. -/// -/// - - return this.remove( selector, true ); - }; -jQuery.prototype.die = function( types, data, fn, origSelector /* Internal Use Only */ ) { -/// -/// 1: Remove all event handlers previously attached using .live() from the elements. -/// 1.1 - die() -/// 2: Remove an event handler previously attached using .live() from the elements. -/// 2.1 - die(eventType, handler) -/// 2.2 - die(eventTypes) -/// -/// -/// A string containing a JavaScript event type, such as click or keydown. -/// -/// -/// The function that is no longer to be executed. -/// -/// - - var type, i = 0, match, namespaces, preType, - selector = origSelector || this.selector, - context = origSelector ? this : jQuery( this.context ); - - if ( typeof types === "object" && !types.preventDefault ) { - for ( var key in types ) { - context[ name ]( key, data, types[key], selector ); - } - - return this; - } - - if ( name === "die" && !types && - origSelector && origSelector.charAt(0) === "." ) { - - context.unbind( origSelector ); - - return this; - } - - if ( data === false || jQuery.isFunction( data ) ) { - fn = data || returnFalse; - data = undefined; - } - - types = (types || "").split(" "); - - while ( (type = types[ i++ ]) != null ) { - match = rnamespaces.exec( type ); - namespaces = ""; - - if ( match ) { - namespaces = match[0]; - type = type.replace( rnamespaces, "" ); - } - - if ( type === "hover" ) { - types.push( "mouseenter" + namespaces, "mouseleave" + namespaces ); - continue; - } - - preType = type; - - if ( liveMap[ type ] ) { - types.push( liveMap[ type ] + namespaces ); - type = type + namespaces; - - } else { - type = (liveMap[ type ] || type) + namespaces; - } - - if ( name === "live" ) { - // bind live handler - for ( var j = 0, l = context.length; j < l; j++ ) { - jQuery.event.add( context[j], "live." + liveConvert( type, selector ), - { data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } ); - } - - } else { - // unbind live handler - context.unbind( "live." + liveConvert( type, selector ), fn ); - } - } - - return this; - }; -jQuery.prototype.domManip = function( args, table, callback ) { - - var results, first, fragment, parent, - value = args[0], - scripts = []; - - // We can't cloneNode fragments that contain checked, in WebKit - if ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === "string" && rchecked.test( value ) ) { - return this.each(function() { - jQuery(this).domManip( args, table, callback, true ); - }); - } - - if ( jQuery.isFunction(value) ) { - return this.each(function(i) { - var self = jQuery(this); - args[0] = value.call(this, i, table ? self.html() : undefined); - self.domManip( args, table, callback ); - }); - } - - if ( this[0] ) { - parent = value && value.parentNode; - - // If we're in a fragment, just use that instead of building a new one - if ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) { - results = { fragment: parent }; - - } else { - results = jQuery.buildFragment( args, this, scripts ); - } - - fragment = results.fragment; - - if ( fragment.childNodes.length === 1 ) { - first = fragment = fragment.firstChild; - } else { - first = fragment.firstChild; - } - - if ( first ) { - table = table && jQuery.nodeName( first, "tr" ); - - for ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) { - callback.call( - table ? - root(this[i], first) : - this[i], - // Make sure that we do not leak memory by inadvertently discarding - // the original fragment (which might have attached data) instead of - // using it; in addition, use the original fragment object for the last - // item instead of first because it can end up being emptied incorrectly - // in certain situations (Bug #8070). - // Fragments from the fragment cache must always be cloned and never used - // in place. - results.cacheable || (l > 1 && i < lastIndex) ? - jQuery.clone( fragment, true, true ) : - fragment - ); - } - } - - if ( scripts.length ) { - jQuery.each( scripts, evalScript ); - } - } - - return this; - }; -jQuery.prototype.each = function( callback, args ) { -/// -/// Iterate over a jQuery object, executing a function for each matched element. -/// -/// -/// A function to execute for each matched element. -/// -/// - - return jQuery.each( this, callback, args ); - }; -jQuery.prototype.empty = function() { -/// -/// Remove all child nodes of the set of matched elements from the DOM. -/// -/// - - for ( var i = 0, elem; (elem = this[i]) != null; i++ ) { - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( elem.getElementsByTagName("*") ); - } - - // Remove any remaining nodes - while ( elem.firstChild ) { - elem.removeChild( elem.firstChild ); - } - } - - return this; - }; -jQuery.prototype.end = function() { -/// -/// End the most recent filtering operation in the current chain and return the set of matched elements to its previous state. -/// -/// - - return this.prevObject || this.constructor(null); - }; -jQuery.prototype.eq = function( i ) { -/// -/// Reduce the set of matched elements to the one at the specified index. -/// 1 - eq(index) -/// 2 - eq(-index) -/// -/// -/// An integer indicating the 0-based position of the element. -/// -/// - - return i === -1 ? - this.slice( i ) : - this.slice( i, +i + 1 ); - }; -jQuery.prototype.error = function( data, fn ) { -/// -/// Bind an event handler to the "error" JavaScript event. -/// 1 - error(handler(eventObject)) -/// 2 - error(eventData, handler(eventObject)) -/// -/// -/// A map of data that will be passed to the event handler. -/// -/// -/// A function to execute each time the event is triggered. -/// -/// - - if ( fn == null ) { - fn = data; - data = null; - } - - return arguments.length > 0 ? - this.bind( name, data, fn ) : - this.trigger( name ); - }; -jQuery.prototype.extend = function() { - - var options, name, src, copy, copyIsArray, clone, - target = arguments[0] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - target = arguments[1] || {}; - // skip the boolean and the target - i = 2; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction(target) ) { - target = {}; - } - - // extend jQuery itself if only one argument is passed - if ( length === i ) { - target = this; - --i; - } - - for ( ; i < length; i++ ) { - // Only deal with non-null/undefined values - if ( (options = arguments[ i ]) != null ) { - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray(src) ? src : []; - - } else { - clone = src && jQuery.isPlainObject(src) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; -jQuery.prototype.fadeIn = function( speed, easing, callback ) { -/// -/// Display the matched elements by fading them to opaque. -/// 1 - fadeIn(duration, callback) -/// 2 - fadeIn(duration, easing, callback) -/// -/// -/// A string or number determining how long the animation will run. -/// -/// -/// A string indicating which easing function to use for the transition. -/// -/// -/// A function to call once the animation is complete. -/// -/// - - return this.animate( props, speed, easing, callback ); - }; -jQuery.prototype.fadeOut = function( speed, easing, callback ) { -/// -/// Hide the matched elements by fading them to transparent. -/// 1 - fadeOut(duration, callback) -/// 2 - fadeOut(duration, easing, callback) -/// -/// -/// A string or number determining how long the animation will run. -/// -/// -/// A string indicating which easing function to use for the transition. -/// -/// -/// A function to call once the animation is complete. -/// -/// - - return this.animate( props, speed, easing, callback ); - }; -jQuery.prototype.fadeTo = function( speed, to, easing, callback ) { -/// -/// Adjust the opacity of the matched elements. -/// 1 - fadeTo(duration, opacity, callback) -/// 2 - fadeTo(duration, opacity, easing, callback) -/// -/// -/// A string or number determining how long the animation will run. -/// -/// -/// A number between 0 and 1 denoting the target opacity. -/// -/// -/// A string indicating which easing function to use for the transition. -/// -/// -/// A function to call once the animation is complete. -/// -/// - - return this.filter(":hidden").css("opacity", 0).show().end() - .animate({opacity: to}, speed, easing, callback); - }; -jQuery.prototype.fadeToggle = function( speed, easing, callback ) { -/// -/// Display or hide the matched elements by animating their opacity. -/// -/// -/// A string or number determining how long the animation will run. -/// -/// -/// A string indicating which easing function to use for the transition. -/// -/// -/// A function to call once the animation is complete. -/// -/// - - return this.animate( props, speed, easing, callback ); - }; -jQuery.prototype.filter = function( selector ) { -/// -/// Reduce the set of matched elements to those that match the selector or pass the function's test. -/// 1 - filter(selector) -/// 2 - filter(function(index)) -/// 3 - filter(element) -/// 4 - filter(jQuery object) -/// -/// -/// A string containing a selector expression to match the current set of elements against. -/// -/// - - return this.pushStack( winnow(this, selector, true), "filter", selector ); - }; -jQuery.prototype.find = function( selector ) { -/// -/// Get the descendants of each element in the current set of matched elements, filtered by a selector, jQuery object, or element. -/// 1 - find(selector) -/// 2 - find(jQuery object) -/// 3 - find(element) -/// -/// -/// A string containing a selector expression to match elements against. -/// -/// - - var self = this, - i, l; - - if ( typeof selector !== "string" ) { - return jQuery( selector ).filter(function() { - for ( i = 0, l = self.length; i < l; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - }); - } - - var ret = this.pushStack( "", "find", selector ), - length, n, r; - - for ( i = 0, l = this.length; i < l; i++ ) { - length = ret.length; - jQuery.find( selector, this[i], ret ); - - if ( i > 0 ) { - // Make sure that the results are unique - for ( n = length; n < ret.length; n++ ) { - for ( r = 0; r < length; r++ ) { - if ( ret[r] === ret[n] ) { - ret.splice(n--, 1); - break; - } - } - } - } - } - - return ret; - }; -jQuery.prototype.first = function() { -/// -/// Reduce the set of matched elements to the first in the set. -/// -/// - - return this.eq( 0 ); - }; -jQuery.prototype.focus = function( data, fn ) { -/// -/// Bind an event handler to the "focus" JavaScript event, or trigger that event on an element. -/// 1 - focus(handler(eventObject)) -/// 2 - focus(eventData, handler(eventObject)) -/// 3 - focus() -/// -/// -/// A map of data that will be passed to the event handler. -/// -/// -/// A function to execute each time the event is triggered. -/// -/// - - if ( fn == null ) { - fn = data; - data = null; - } - - return arguments.length > 0 ? - this.bind( name, data, fn ) : - this.trigger( name ); - }; -jQuery.prototype.focusin = function( data, fn ) { -/// -/// Bind an event handler to the "focusin" JavaScript event. -/// 1 - focusin(handler(eventObject)) -/// 2 - focusin(eventData, handler(eventObject)) -/// -/// -/// A map of data that will be passed to the event handler. -/// -/// -/// A function to execute each time the event is triggered. -/// -/// - - if ( fn == null ) { - fn = data; - data = null; - } - - return arguments.length > 0 ? - this.bind( name, data, fn ) : - this.trigger( name ); - }; -jQuery.prototype.focusout = function( data, fn ) { -/// -/// Bind an event handler to the "focusout" JavaScript event. -/// 1 - focusout(handler(eventObject)) -/// 2 - focusout(eventData, handler(eventObject)) -/// -/// -/// A map of data that will be passed to the event handler. -/// -/// -/// A function to execute each time the event is triggered. -/// -/// - - if ( fn == null ) { - fn = data; - data = null; - } - - return arguments.length > 0 ? - this.bind( name, data, fn ) : - this.trigger( name ); - }; -jQuery.prototype.get = function( num ) { -/// -/// Retrieve the DOM elements matched by the jQuery object. -/// -/// -/// A zero-based integer indicating which element to retrieve. -/// -/// - - return num == null ? - - // Return a 'clean' array - this.toArray() : - - // Return just the object - ( num < 0 ? this[ this.length + num ] : this[ num ] ); - }; -jQuery.prototype.has = function( target ) { -/// -/// Reduce the set of matched elements to those that have a descendant that matches the selector or DOM element. -/// 1 - has(selector) -/// 2 - has(contained) -/// -/// -/// A string containing a selector expression to match elements against. -/// -/// - - var targets = jQuery( target ); - return this.filter(function() { - for ( var i = 0, l = targets.length; i < l; i++ ) { - if ( jQuery.contains( this, targets[i] ) ) { - return true; - } - } - }); - }; -jQuery.prototype.hasClass = function( selector ) { -/// -/// Determine whether any of the matched elements are assigned the given class. -/// -/// -/// The class name to search for. -/// -/// - - var className = " " + selector + " "; - for ( var i = 0, l = this.length; i < l; i++ ) { - if ( (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) { - return true; - } - } - - return false; - }; -jQuery.prototype.height = function( size ) { -/// -/// 1: Get the current computed height for the first element in the set of matched elements. -/// 1.1 - height() -/// 2: Set the CSS height of every matched element. -/// 2.1 - height(value) -/// 2.2 - height(function(index, height)) -/// -/// -/// An integer representing the number of pixels, or an integer with an optional unit of measure appended (as a string). -/// -/// - - // Get window width or height - var elem = this[0]; - if ( !elem ) { - return size == null ? null : this; - } - - if ( jQuery.isFunction( size ) ) { - return this.each(function( i ) { - var self = jQuery( this ); - self[ type ]( size.call( this, i, self[ type ]() ) ); - }); - } - - if ( jQuery.isWindow( elem ) ) { - // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode - // 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat - var docElemProp = elem.document.documentElement[ "client" + name ]; - return elem.document.compatMode === "CSS1Compat" && docElemProp || - elem.document.body[ "client" + name ] || docElemProp; - - // Get document width or height - } else if ( elem.nodeType === 9 ) { - // Either scroll[Width/Height] or offset[Width/Height], whichever is greater - return Math.max( - elem.documentElement["client" + name], - elem.body["scroll" + name], elem.documentElement["scroll" + name], - elem.body["offset" + name], elem.documentElement["offset" + name] - ); - - // Get or set width or height on the element - } else if ( size === undefined ) { - var orig = jQuery.css( elem, type ), - ret = parseFloat( orig ); - - return jQuery.isNaN( ret ) ? orig : ret; - - // Set the width or height on the element (default to pixels if value is unitless) - } else { - return this.css( type, typeof size === "string" ? size : size + "px" ); - } - }; -jQuery.prototype.hide = function( speed, easing, callback ) { -/// -/// Hide the matched elements. -/// 1 - hide() -/// 2 - hide(duration, callback) -/// 3 - hide(duration, easing, callback) -/// -/// -/// A string or number determining how long the animation will run. -/// -/// -/// A string indicating which easing function to use for the transition. -/// -/// -/// A function to call once the animation is complete. -/// -/// - - if ( speed || speed === 0 ) { - return this.animate( genFx("hide", 3), speed, easing, callback); - - } else { - for ( var i = 0, j = this.length; i < j; i++ ) { - if ( this[i].style ) { - var display = jQuery.css( this[i], "display" ); - - if ( display !== "none" && !jQuery._data( this[i], "olddisplay" ) ) { - jQuery._data( this[i], "olddisplay", display ); - } - } - } - - // Set the display of the elements in a second loop - // to avoid the constant reflow - for ( i = 0; i < j; i++ ) { - if ( this[i].style ) { - this[i].style.display = "none"; - } - } - - return this; - } - }; -jQuery.prototype.hover = function( fnOver, fnOut ) { -/// -/// 1: Bind two handlers to the matched elements, to be executed when the mouse pointer enters and leaves the elements. -/// 1.1 - hover(handlerIn(eventObject), handlerOut(eventObject)) -/// 2: Bind a single handler to the matched elements, to be executed when the mouse pointer enters or leaves the elements. -/// 2.1 - hover(handlerInOut(eventObject)) -/// -/// -/// A function to execute when the mouse pointer enters the element. -/// -/// -/// A function to execute when the mouse pointer leaves the element. -/// -/// - - return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); - }; -jQuery.prototype.html = function( value ) { -/// -/// 1: Get the HTML contents of the first element in the set of matched elements. -/// 1.1 - html() -/// 2: Set the HTML contents of each element in the set of matched elements. -/// 2.1 - html(htmlString) -/// 2.2 - html(function(index, oldhtml)) -/// -/// -/// A string of HTML to set as the content of each matched element. -/// -/// - - if ( value === undefined ) { - return this[0] && this[0].nodeType === 1 ? - this[0].innerHTML.replace(rinlinejQuery, "") : - null; - - // See if we can take a shortcut and just use innerHTML - } else if ( typeof value === "string" && !rnocache.test( value ) && - (jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) && - !wrapMap[ (rtagName.exec( value ) || ["", ""])[1].toLowerCase() ] ) { - - value = value.replace(rxhtmlTag, "<$1>"); - - try { - for ( var i = 0, l = this.length; i < l; i++ ) { - // Remove element nodes and prevent memory leaks - if ( this[i].nodeType === 1 ) { - jQuery.cleanData( this[i].getElementsByTagName("*") ); - this[i].innerHTML = value; - } - } - - // If using innerHTML throws an exception, use the fallback method - } catch(e) { - this.empty().append( value ); - } - - } else if ( jQuery.isFunction( value ) ) { - this.each(function(i){ - var self = jQuery( this ); - - self.html( value.call(this, i, self.html()) ); - }); - - } else { - this.empty().append( value ); - } - - return this; - }; -jQuery.prototype.index = function( elem ) { -/// -/// Search for a given element from among the matched elements. -/// 1 - index() -/// 2 - index(selector) -/// 3 - index(element) -/// -/// -/// A selector representing a jQuery collection in which to look for an element. -/// -/// - - if ( !elem || typeof elem === "string" ) { - return jQuery.inArray( this[0], - // If it receives a string, the selector is used - // If it receives nothing, the siblings are used - elem ? jQuery( elem ) : this.parent().children() ); - } - // Locate the position of the desired element - return jQuery.inArray( - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[0] : elem, this ); - }; -jQuery.prototype.init = function( selector, context, rootjQuery ) { - - var match, elem, ret, doc; - - // Handle $(""), $(null), or $(undefined) - if ( !selector ) { - return this; - } - - // Handle $(DOMElement) - if ( selector.nodeType ) { - this.context = this[0] = selector; - this.length = 1; - return this; - } - - // The body element only exists once, optimize finding it - if ( selector === "body" && !context && document.body ) { - this.context = document; - this[0] = document.body; - this.selector = selector; - this.length = 1; - return this; - } - - // Handle HTML strings - if ( typeof selector === "string" ) { - // Are we dealing with HTML string or an ID? - if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = quickExpr.exec( selector ); - } - - // Verify a match, and that no context was specified for #id - if ( match && (match[1] || !context) ) { - - // HANDLE: $(html) -> $(array) - if ( match[1] ) { - context = context instanceof jQuery ? context[0] : context; - doc = (context ? context.ownerDocument || context : document); - - // If a single string is passed in and it's a single tag - // just do a createElement and skip the rest - ret = rsingleTag.exec( selector ); - - if ( ret ) { - if ( jQuery.isPlainObject( context ) ) { - selector = [ document.createElement( ret[1] ) ]; - jQuery.fn.attr.call( selector, context, true ); - - } else { - selector = [ doc.createElement( ret[1] ) ]; - } - - } else { - ret = jQuery.buildFragment( [ match[1] ], [ doc ] ); - selector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes; - } - - return jQuery.merge( this, selector ); - - // HANDLE: $("#id") - } else { - elem = document.getElementById( match[2] ); - - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if ( elem && elem.parentNode ) { - // Handle the case where IE and Opera return items - // by name instead of ID - if ( elem.id !== match[2] ) { - return rootjQuery.find( selector ); - } - - // Otherwise, we inject the element directly into the jQuery object - this.length = 1; - this[0] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return (context || rootjQuery).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return rootjQuery.ready( selector ); - } - - if (selector.selector !== undefined) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray( selector, this ); - }; -jQuery.prototype.innerHeight = function() { -/// -/// Get the current computed height for the first element in the set of matched elements, including padding but not border. -/// -/// - - return this[0] ? - parseFloat( jQuery.css( this[0], type, "padding" ) ) : - null; - }; -jQuery.prototype.innerWidth = function() { -/// -/// Get the current computed width for the first element in the set of matched elements, including padding but not border. -/// -/// - - return this[0] ? - parseFloat( jQuery.css( this[0], type, "padding" ) ) : - null; - }; -jQuery.prototype.insertAfter = function( selector ) { -/// -/// Insert every element in the set of matched elements after the target. -/// -/// -/// A selector, element, HTML string, or jQuery object; the matched set of elements will be inserted after the element(s) specified by this parameter. -/// -/// - - var ret = [], - insert = jQuery( selector ), - parent = this.length === 1 && this[0].parentNode; - - if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) { - insert[ original ]( this[0] ); - return this; - - } else { - for ( var i = 0, l = insert.length; i < l; i++ ) { - var elems = (i > 0 ? this.clone(true) : this).get(); - jQuery( insert[i] )[ original ]( elems ); - ret = ret.concat( elems ); - } - - return this.pushStack( ret, name, insert.selector ); - } - }; -jQuery.prototype.insertBefore = function( selector ) { -/// -/// Insert every element in the set of matched elements before the target. -/// -/// -/// A selector, element, HTML string, or jQuery object; the matched set of elements will be inserted before the element(s) specified by this parameter. -/// -/// - - var ret = [], - insert = jQuery( selector ), - parent = this.length === 1 && this[0].parentNode; - - if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) { - insert[ original ]( this[0] ); - return this; - - } else { - for ( var i = 0, l = insert.length; i < l; i++ ) { - var elems = (i > 0 ? this.clone(true) : this).get(); - jQuery( insert[i] )[ original ]( elems ); - ret = ret.concat( elems ); - } - - return this.pushStack( ret, name, insert.selector ); - } - }; -jQuery.prototype.is = function( selector ) { -/// -/// Check the current matched set of elements against a selector, element, or jQuery object and return true if at least one of these elements matches the given arguments. -/// 1 - is(selector) -/// 2 - is(function(index)) -/// 3 - is(jQuery object) -/// 4 - is(element) -/// -/// -/// A string containing a selector expression to match elements against. -/// -/// - - return !!selector && ( typeof selector === "string" ? - jQuery.filter( selector, this ).length > 0 : - this.filter( selector ).length > 0 ); - }; -jQuery.prototype.keydown = function( data, fn ) { -/// -/// Bind an event handler to the "keydown" JavaScript event, or trigger that event on an element. -/// 1 - keydown(handler(eventObject)) -/// 2 - keydown(eventData, handler(eventObject)) -/// 3 - keydown() -/// -/// -/// A map of data that will be passed to the event handler. -/// -/// -/// A function to execute each time the event is triggered. -/// -/// - - if ( fn == null ) { - fn = data; - data = null; - } - - return arguments.length > 0 ? - this.bind( name, data, fn ) : - this.trigger( name ); - }; -jQuery.prototype.keypress = function( data, fn ) { -/// -/// Bind an event handler to the "keypress" JavaScript event, or trigger that event on an element. -/// 1 - keypress(handler(eventObject)) -/// 2 - keypress(eventData, handler(eventObject)) -/// 3 - keypress() -/// -/// -/// A map of data that will be passed to the event handler. -/// -/// -/// A function to execute each time the event is triggered. -/// -/// - - if ( fn == null ) { - fn = data; - data = null; - } - - return arguments.length > 0 ? - this.bind( name, data, fn ) : - this.trigger( name ); - }; -jQuery.prototype.keyup = function( data, fn ) { -/// -/// Bind an event handler to the "keyup" JavaScript event, or trigger that event on an element. -/// 1 - keyup(handler(eventObject)) -/// 2 - keyup(eventData, handler(eventObject)) -/// 3 - keyup() -/// -/// -/// A map of data that will be passed to the event handler. -/// -/// -/// A function to execute each time the event is triggered. -/// -/// - - if ( fn == null ) { - fn = data; - data = null; - } - - return arguments.length > 0 ? - this.bind( name, data, fn ) : - this.trigger( name ); - }; -jQuery.prototype.last = function() { -/// -/// Reduce the set of matched elements to the final one in the set. -/// -/// - - return this.eq( -1 ); - }; -jQuery.prototype.length = 0; -jQuery.prototype.live = function( types, data, fn, origSelector /* Internal Use Only */ ) { -/// -/// Attach a handler to the event for all elements which match the current selector, now and in the future. -/// 1 - live(eventType, handler) -/// 2 - live(eventType, eventData, handler) -/// 3 - live(events) -/// -/// -/// A string containing a JavaScript event type, such as "click" or "keydown." As of jQuery 1.4 the string can contain multiple, space-separated event types or custom event names, as well. -/// -/// -/// A map of data that will be passed to the event handler. -/// -/// -/// A function to execute at the time the event is triggered. -/// -/// - - var type, i = 0, match, namespaces, preType, - selector = origSelector || this.selector, - context = origSelector ? this : jQuery( this.context ); - - if ( typeof types === "object" && !types.preventDefault ) { - for ( var key in types ) { - context[ name ]( key, data, types[key], selector ); - } - - return this; - } - - if ( name === "die" && !types && - origSelector && origSelector.charAt(0) === "." ) { - - context.unbind( origSelector ); - - return this; - } - - if ( data === false || jQuery.isFunction( data ) ) { - fn = data || returnFalse; - data = undefined; - } - - types = (types || "").split(" "); - - while ( (type = types[ i++ ]) != null ) { - match = rnamespaces.exec( type ); - namespaces = ""; - - if ( match ) { - namespaces = match[0]; - type = type.replace( rnamespaces, "" ); - } - - if ( type === "hover" ) { - types.push( "mouseenter" + namespaces, "mouseleave" + namespaces ); - continue; - } - - preType = type; - - if ( liveMap[ type ] ) { - types.push( liveMap[ type ] + namespaces ); - type = type + namespaces; - - } else { - type = (liveMap[ type ] || type) + namespaces; - } - - if ( name === "live" ) { - // bind live handler - for ( var j = 0, l = context.length; j < l; j++ ) { - jQuery.event.add( context[j], "live." + liveConvert( type, selector ), - { data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } ); - } - - } else { - // unbind live handler - context.unbind( "live." + liveConvert( type, selector ), fn ); - } - } - - return this; - }; -jQuery.prototype.load = function( url, params, callback ) { -/// -/// 1: Bind an event handler to the "load" JavaScript event. -/// 1.1 - load(handler(eventObject)) -/// 1.2 - load(eventData, handler(eventObject)) -/// 2: Load data from the server and place the returned HTML into the matched element. -/// 2.1 - load(url, data, complete(responseText, textStatus, XMLHttpRequest)) -/// -/// -/// A string containing the URL to which the request is sent. -/// -/// -/// A map or string that is sent to the server with the request. -/// -/// -/// A callback function that is executed when the request completes. -/// -/// - - if ( typeof url !== "string" && _load ) { - return _load.apply( this, arguments ); - - // Don't do a request if no elements are being requested - } else if ( !this.length ) { - return this; - } - - var off = url.indexOf( " " ); - if ( off >= 0 ) { - var selector = url.slice( off, url.length ); - url = url.slice( 0, off ); - } - - // Default to a GET request - var type = "GET"; - - // If the second parameter was provided - if ( params ) { - // If it's a function - if ( jQuery.isFunction( params ) ) { - // We assume that it's the callback - callback = params; - params = undefined; - - // Otherwise, build a param string - } else if ( typeof params === "object" ) { - params = jQuery.param( params, jQuery.ajaxSettings.traditional ); - type = "POST"; - } - } - - var self = this; - - // Request the remote document - jQuery.ajax({ - url: url, - type: type, - dataType: "html", - data: params, - // Complete callback (responseText is used internally) - complete: function( jqXHR, status, responseText ) { - // Store the response as specified by the jqXHR object - responseText = jqXHR.responseText; - // If successful, inject the HTML into all the matched elements - if ( jqXHR.isResolved() ) { - // #4825: Get the actual response in case - // a dataFilter is present in ajaxSettings - jqXHR.done(function( r ) { - responseText = r; - }); - // See if a selector was specified - self.html( selector ? - // Create a dummy div to hold the results - jQuery("
    ") - // inject the contents of the document in, removing the scripts - // to avoid any 'Permission Denied' errors in IE - .append(responseText.replace(rscript, "")) - - // Locate the specified elements - .find(selector) : - - // If not, just inject the full result - responseText ); - } - - if ( callback ) { - self.each( callback, [ responseText, status, jqXHR ] ); - } - } - }); - - return this; - }; -jQuery.prototype.map = function( callback ) { -/// -/// Pass each element in the current matched set through a function, producing a new jQuery object containing the return values. -/// -/// -/// A function object that will be invoked for each element in the current set. -/// -/// - - return this.pushStack( jQuery.map(this, function( elem, i ) { - return callback.call( elem, i, elem ); - })); - }; -jQuery.prototype.mousedown = function( data, fn ) { -/// -/// Bind an event handler to the "mousedown" JavaScript event, or trigger that event on an element. -/// 1 - mousedown(handler(eventObject)) -/// 2 - mousedown(eventData, handler(eventObject)) -/// 3 - mousedown() -/// -/// -/// A map of data that will be passed to the event handler. -/// -/// -/// A function to execute each time the event is triggered. -/// -/// - - if ( fn == null ) { - fn = data; - data = null; - } - - return arguments.length > 0 ? - this.bind( name, data, fn ) : - this.trigger( name ); - }; -jQuery.prototype.mouseenter = function( data, fn ) { -/// -/// Bind an event handler to be fired when the mouse enters an element, or trigger that handler on an element. -/// 1 - mouseenter(handler(eventObject)) -/// 2 - mouseenter(eventData, handler(eventObject)) -/// 3 - mouseenter() -/// -/// -/// A map of data that will be passed to the event handler. -/// -/// -/// A function to execute each time the event is triggered. -/// -/// - - if ( fn == null ) { - fn = data; - data = null; - } - - return arguments.length > 0 ? - this.bind( name, data, fn ) : - this.trigger( name ); - }; -jQuery.prototype.mouseleave = function( data, fn ) { -/// -/// Bind an event handler to be fired when the mouse leaves an element, or trigger that handler on an element. -/// 1 - mouseleave(handler(eventObject)) -/// 2 - mouseleave(eventData, handler(eventObject)) -/// 3 - mouseleave() -/// -/// -/// A map of data that will be passed to the event handler. -/// -/// -/// A function to execute each time the event is triggered. -/// -/// - - if ( fn == null ) { - fn = data; - data = null; - } - - return arguments.length > 0 ? - this.bind( name, data, fn ) : - this.trigger( name ); - }; -jQuery.prototype.mousemove = function( data, fn ) { -/// -/// Bind an event handler to the "mousemove" JavaScript event, or trigger that event on an element. -/// 1 - mousemove(handler(eventObject)) -/// 2 - mousemove(eventData, handler(eventObject)) -/// 3 - mousemove() -/// -/// -/// A map of data that will be passed to the event handler. -/// -/// -/// A function to execute each time the event is triggered. -/// -/// - - if ( fn == null ) { - fn = data; - data = null; - } - - return arguments.length > 0 ? - this.bind( name, data, fn ) : - this.trigger( name ); - }; -jQuery.prototype.mouseout = function( data, fn ) { -/// -/// Bind an event handler to the "mouseout" JavaScript event, or trigger that event on an element. -/// 1 - mouseout(handler(eventObject)) -/// 2 - mouseout(eventData, handler(eventObject)) -/// 3 - mouseout() -/// -/// -/// A map of data that will be passed to the event handler. -/// -/// -/// A function to execute each time the event is triggered. -/// -/// - - if ( fn == null ) { - fn = data; - data = null; - } - - return arguments.length > 0 ? - this.bind( name, data, fn ) : - this.trigger( name ); - }; -jQuery.prototype.mouseover = function( data, fn ) { -/// -/// Bind an event handler to the "mouseover" JavaScript event, or trigger that event on an element. -/// 1 - mouseover(handler(eventObject)) -/// 2 - mouseover(eventData, handler(eventObject)) -/// 3 - mouseover() -/// -/// -/// A map of data that will be passed to the event handler. -/// -/// -/// A function to execute each time the event is triggered. -/// -/// - - if ( fn == null ) { - fn = data; - data = null; - } - - return arguments.length > 0 ? - this.bind( name, data, fn ) : - this.trigger( name ); - }; -jQuery.prototype.mouseup = function( data, fn ) { -/// -/// Bind an event handler to the "mouseup" JavaScript event, or trigger that event on an element. -/// 1 - mouseup(handler(eventObject)) -/// 2 - mouseup(eventData, handler(eventObject)) -/// 3 - mouseup() -/// -/// -/// A map of data that will be passed to the event handler. -/// -/// -/// A function to execute each time the event is triggered. -/// -/// - - if ( fn == null ) { - fn = data; - data = null; - } - - return arguments.length > 0 ? - this.bind( name, data, fn ) : - this.trigger( name ); - }; -jQuery.prototype.next = function( until, selector ) { -/// -/// Get the immediately following sibling of each element in the set of matched elements. If a selector is provided, it retrieves the next sibling only if it matches that selector. -/// -/// -/// A string containing a selector expression to match elements against. -/// -/// - - var ret = jQuery.map( this, fn, until ), - // The variable 'args' was introduced in - // https://github.com/jquery/jquery/commit/52a0238 - // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. - // http://code.google.com/p/v8/issues/detail?id=1050 - args = slice.call(arguments); - - if ( !runtil.test( name ) ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - ret = jQuery.filter( selector, ret ); - } - - ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; - - if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { - ret = ret.reverse(); - } - - return this.pushStack( ret, name, args.join(",") ); - }; -jQuery.prototype.nextAll = function( until, selector ) { -/// -/// Get all following siblings of each element in the set of matched elements, optionally filtered by a selector. -/// -/// -/// A string containing a selector expression to match elements against. -/// -/// - - var ret = jQuery.map( this, fn, until ), - // The variable 'args' was introduced in - // https://github.com/jquery/jquery/commit/52a0238 - // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. - // http://code.google.com/p/v8/issues/detail?id=1050 - args = slice.call(arguments); - - if ( !runtil.test( name ) ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - ret = jQuery.filter( selector, ret ); - } - - ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; - - if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { - ret = ret.reverse(); - } - - return this.pushStack( ret, name, args.join(",") ); - }; -jQuery.prototype.nextUntil = function( until, selector ) { -/// -/// Get all following siblings of each element up to but not including the element matched by the selector. -/// -/// -/// A string containing a selector expression to indicate where to stop matching following sibling elements. -/// -/// - - var ret = jQuery.map( this, fn, until ), - // The variable 'args' was introduced in - // https://github.com/jquery/jquery/commit/52a0238 - // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. - // http://code.google.com/p/v8/issues/detail?id=1050 - args = slice.call(arguments); - - if ( !runtil.test( name ) ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - ret = jQuery.filter( selector, ret ); - } - - ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; - - if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { - ret = ret.reverse(); - } - - return this.pushStack( ret, name, args.join(",") ); - }; -jQuery.prototype.not = function( selector ) { -/// -/// Remove elements from the set of matched elements. -/// 1 - not(selector) -/// 2 - not(elements) -/// 3 - not(function(index)) -/// -/// -/// A string containing a selector expression to match elements against. -/// -/// - - return this.pushStack( winnow(this, selector, false), "not", selector); - }; -jQuery.prototype.offset = function( options ) { -/// -/// 1: Get the current coordinates of the first element in the set of matched elements, relative to the document. -/// 1.1 - offset() -/// 2: Set the current coordinates of every element in the set of matched elements, relative to the document. -/// 2.1 - offset(coordinates) -/// 2.2 - offset(function(index, coords)) -/// -/// -/// An object containing the properties top and left, which are integers indicating the new top and left coordinates for the elements. -/// -/// - - var elem = this[0], box; - - if ( options ) { - return this.each(function( i ) { - jQuery.offset.setOffset( this, options, i ); - }); - } - - if ( !elem || !elem.ownerDocument ) { - return null; - } - - if ( elem === elem.ownerDocument.body ) { - return jQuery.offset.bodyOffset( elem ); - } - - try { - box = elem.getBoundingClientRect(); - } catch(e) {} - - var doc = elem.ownerDocument, - docElem = doc.documentElement; - - // Make sure we're not dealing with a disconnected DOM node - if ( !box || !jQuery.contains( docElem, elem ) ) { - return box ? { top: box.top, left: box.left } : { top: 0, left: 0 }; - } - - var body = doc.body, - win = getWindow(doc), - clientTop = docElem.clientTop || body.clientTop || 0, - clientLeft = docElem.clientLeft || body.clientLeft || 0, - scrollTop = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop || body.scrollTop, - scrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft, - top = box.top + scrollTop - clientTop, - left = box.left + scrollLeft - clientLeft; - - return { top: top, left: left }; - }; -jQuery.prototype.offsetParent = function() { -/// -/// Get the closest ancestor element that is positioned. -/// -/// - - return this.map(function() { - var offsetParent = this.offsetParent || document.body; - while ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) { - offsetParent = offsetParent.offsetParent; - } - return offsetParent; - }); - }; -jQuery.prototype.one = function( type, data, fn ) { -/// -/// Attach a handler to an event for the elements. The handler is executed at most once per element. -/// -/// -/// A string containing one or more JavaScript event types, such as "click" or "submit," or custom event names. -/// -/// -/// A map of data that will be passed to the event handler. -/// -/// -/// A function to execute at the time the event is triggered. -/// -/// - - var handler; - - // Handle object literals - if ( typeof type === "object" ) { - for ( var key in type ) { - this[ name ](key, data, type[key], fn); - } - return this; - } - - if ( arguments.length === 2 || data === false ) { - fn = data; - data = undefined; - } - - if ( name === "one" ) { - handler = function( event ) { - jQuery( this ).unbind( event, handler ); - return fn.apply( this, arguments ); - }; - handler.guid = fn.guid || jQuery.guid++; - } else { - handler = fn; - } - - if ( type === "unload" && name !== "one" ) { - this.one( type, data, fn ); - - } else { - for ( var i = 0, l = this.length; i < l; i++ ) { - jQuery.event.add( this[i], type, handler, data ); - } - } - - return this; - }; -jQuery.prototype.outerHeight = function( margin ) { -/// -/// Get the current computed height for the first element in the set of matched elements, including padding, border, and optionally margin. -/// -/// -/// A Boolean indicating whether to include the element's margin in the calculation. -/// -/// - - return this[0] ? - parseFloat( jQuery.css( this[0], type, margin ? "margin" : "border" ) ) : - null; - }; -jQuery.prototype.outerWidth = function( margin ) { -/// -/// Get the current computed width for the first element in the set of matched elements, including padding and border. -/// -/// -/// A Boolean indicating whether to include the element's margin in the calculation. -/// -/// - - return this[0] ? - parseFloat( jQuery.css( this[0], type, margin ? "margin" : "border" ) ) : - null; - }; -jQuery.prototype.parent = function( until, selector ) { -/// -/// Get the parent of each element in the current set of matched elements, optionally filtered by a selector. -/// -/// -/// A string containing a selector expression to match elements against. -/// -/// - - var ret = jQuery.map( this, fn, until ), - // The variable 'args' was introduced in - // https://github.com/jquery/jquery/commit/52a0238 - // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. - // http://code.google.com/p/v8/issues/detail?id=1050 - args = slice.call(arguments); - - if ( !runtil.test( name ) ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - ret = jQuery.filter( selector, ret ); - } - - ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; - - if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { - ret = ret.reverse(); - } - - return this.pushStack( ret, name, args.join(",") ); - }; -jQuery.prototype.parents = function( until, selector ) { -/// -/// Get the ancestors of each element in the current set of matched elements, optionally filtered by a selector. -/// -/// -/// A string containing a selector expression to match elements against. -/// -/// - - var ret = jQuery.map( this, fn, until ), - // The variable 'args' was introduced in - // https://github.com/jquery/jquery/commit/52a0238 - // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. - // http://code.google.com/p/v8/issues/detail?id=1050 - args = slice.call(arguments); - - if ( !runtil.test( name ) ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - ret = jQuery.filter( selector, ret ); - } - - ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; - - if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { - ret = ret.reverse(); - } - - return this.pushStack( ret, name, args.join(",") ); - }; -jQuery.prototype.parentsUntil = function( until, selector ) { -/// -/// Get the ancestors of each element in the current set of matched elements, up to but not including the element matched by the selector. -/// -/// -/// A string containing a selector expression to indicate where to stop matching ancestor elements. -/// -/// - - var ret = jQuery.map( this, fn, until ), - // The variable 'args' was introduced in - // https://github.com/jquery/jquery/commit/52a0238 - // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. - // http://code.google.com/p/v8/issues/detail?id=1050 - args = slice.call(arguments); - - if ( !runtil.test( name ) ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - ret = jQuery.filter( selector, ret ); - } - - ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; - - if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { - ret = ret.reverse(); - } - - return this.pushStack( ret, name, args.join(",") ); - }; -jQuery.prototype.position = function() { -/// -/// Get the current coordinates of the first element in the set of matched elements, relative to the offset parent. -/// -/// - - if ( !this[0] ) { - return null; - } - - var elem = this[0], - - // Get *real* offsetParent - offsetParent = this.offsetParent(), - - // Get correct offsets - offset = this.offset(), - parentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset(); - - // Subtract element margins - // note: when an element has margin: auto the offsetLeft and marginLeft - // are the same in Safari causing offset.left to incorrectly be 0 - offset.top -= parseFloat( jQuery.css(elem, "marginTop") ) || 0; - offset.left -= parseFloat( jQuery.css(elem, "marginLeft") ) || 0; - - // Add offsetParent borders - parentOffset.top += parseFloat( jQuery.css(offsetParent[0], "borderTopWidth") ) || 0; - parentOffset.left += parseFloat( jQuery.css(offsetParent[0], "borderLeftWidth") ) || 0; - - // Subtract the two offsets - return { - top: offset.top - parentOffset.top, - left: offset.left - parentOffset.left - }; - }; -jQuery.prototype.prepend = function() { -/// -/// Insert content, specified by the parameter, to the beginning of each element in the set of matched elements. -/// 1 - prepend(content, content) -/// 2 - prepend(function(index, html)) -/// -/// -/// DOM element, array of elements, HTML string, or jQuery object to insert at the beginning of each element in the set of matched elements. -/// -/// -/// One or more additional DOM elements, arrays of elements, HTML strings, or jQuery objects to insert at the beginning of each element in the set of matched elements. -/// -/// - - return this.domManip(arguments, true, function( elem ) { - if ( this.nodeType === 1 ) { - this.insertBefore( elem, this.firstChild ); - } - }); - }; -jQuery.prototype.prependTo = function( selector ) { -/// -/// Insert every element in the set of matched elements to the beginning of the target. -/// -/// -/// A selector, element, HTML string, or jQuery object; the matched set of elements will be inserted at the beginning of the element(s) specified by this parameter. -/// -/// - - var ret = [], - insert = jQuery( selector ), - parent = this.length === 1 && this[0].parentNode; - - if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) { - insert[ original ]( this[0] ); - return this; - - } else { - for ( var i = 0, l = insert.length; i < l; i++ ) { - var elems = (i > 0 ? this.clone(true) : this).get(); - jQuery( insert[i] )[ original ]( elems ); - ret = ret.concat( elems ); - } - - return this.pushStack( ret, name, insert.selector ); - } - }; -jQuery.prototype.prev = function( until, selector ) { -/// -/// Get the immediately preceding sibling of each element in the set of matched elements, optionally filtered by a selector. -/// -/// -/// A string containing a selector expression to match elements against. -/// -/// - - var ret = jQuery.map( this, fn, until ), - // The variable 'args' was introduced in - // https://github.com/jquery/jquery/commit/52a0238 - // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. - // http://code.google.com/p/v8/issues/detail?id=1050 - args = slice.call(arguments); - - if ( !runtil.test( name ) ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - ret = jQuery.filter( selector, ret ); - } - - ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; - - if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { - ret = ret.reverse(); - } - - return this.pushStack( ret, name, args.join(",") ); - }; -jQuery.prototype.prevAll = function( until, selector ) { -/// -/// Get all preceding siblings of each element in the set of matched elements, optionally filtered by a selector. -/// -/// -/// A string containing a selector expression to match elements against. -/// -/// - - var ret = jQuery.map( this, fn, until ), - // The variable 'args' was introduced in - // https://github.com/jquery/jquery/commit/52a0238 - // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. - // http://code.google.com/p/v8/issues/detail?id=1050 - args = slice.call(arguments); - - if ( !runtil.test( name ) ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - ret = jQuery.filter( selector, ret ); - } - - ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; - - if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { - ret = ret.reverse(); - } - - return this.pushStack( ret, name, args.join(",") ); - }; -jQuery.prototype.prevUntil = function( until, selector ) { -/// -/// Get all preceding siblings of each element up to but not including the element matched by the selector. -/// -/// -/// A string containing a selector expression to indicate where to stop matching preceding sibling elements. -/// -/// - - var ret = jQuery.map( this, fn, until ), - // The variable 'args' was introduced in - // https://github.com/jquery/jquery/commit/52a0238 - // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. - // http://code.google.com/p/v8/issues/detail?id=1050 - args = slice.call(arguments); - - if ( !runtil.test( name ) ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - ret = jQuery.filter( selector, ret ); - } - - ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; - - if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { - ret = ret.reverse(); - } - - return this.pushStack( ret, name, args.join(",") ); - }; -jQuery.prototype.promise = function( type, object ) { -/// -/// Return a Promise object to observe when all actions of a certain type bound to the collection, queued or not, have finished. -/// -/// -/// The type of queue that needs to be observed. -/// -/// -/// Object onto which the promise methods have to be attached -/// -/// - - if ( typeof type !== "string" ) { - object = type; - type = undefined; - } - type = type || "fx"; - var defer = jQuery.Deferred(), - elements = this, - i = elements.length, - count = 1, - deferDataKey = type + "defer", - queueDataKey = type + "queue", - markDataKey = type + "mark", - tmp; - function resolve() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - } - while( i-- ) { - if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) || - ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) || - jQuery.data( elements[ i ], markDataKey, undefined, true ) ) && - jQuery.data( elements[ i ], deferDataKey, jQuery._Deferred(), true ) )) { - count++; - tmp.done( resolve ); - } - } - resolve(); - return defer.promise(); - }; -jQuery.prototype.prop = function( name, value ) { -/// -/// 1: Get the value of a property for the first element in the set of matched elements. -/// 1.1 - prop(propertyName) -/// 2: Set one or more properties for the set of matched elements. -/// 2.1 - prop(propertyName, value) -/// 2.2 - prop(map) -/// 2.3 - prop(propertyName, function(index, oldPropertyValue)) -/// -/// -/// The name of the property to set. -/// -/// -/// A value to set for the property. -/// -/// - - return jQuery.access( this, name, value, true, jQuery.prop ); - }; -jQuery.prototype.pushStack = function( elems, name, selector ) { -/// -/// Add a collection of DOM elements onto the jQuery stack. -/// 1 - pushStack(elements) -/// 2 - pushStack(elements, name, arguments) -/// -/// -/// An array of elements to push onto the stack and make into a new jQuery object. -/// -/// -/// The name of a jQuery method that generated the array of elements. -/// -/// -/// The arguments that were passed in to the jQuery method (for serialization). -/// -/// - - // Build a new jQuery matched element set - var ret = this.constructor(); - - if ( jQuery.isArray( elems ) ) { - push.apply( ret, elems ); - - } else { - jQuery.merge( ret, elems ); - } - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - - ret.context = this.context; - - if ( name === "find" ) { - ret.selector = this.selector + (this.selector ? " " : "") + selector; - } else if ( name ) { - ret.selector = this.selector + "." + name + "(" + selector + ")"; - } - - // Return the newly-formed element set - return ret; - }; -jQuery.prototype.queue = function( type, data ) { -/// -/// 1: Show the queue of functions to be executed on the matched elements. -/// 1.1 - queue(queueName) -/// 2: Manipulate the queue of functions to be executed on the matched elements. -/// 2.1 - queue(queueName, newQueue) -/// 2.2 - queue(queueName, callback( next )) -/// -/// -/// A string containing the name of the queue. Defaults to fx, the standard effects queue. -/// -/// -/// An array of functions to replace the current queue contents. -/// -/// - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - } - - if ( data === undefined ) { - return jQuery.queue( this[0], type ); - } - return this.each(function() { - var queue = jQuery.queue( this, type, data ); - - if ( type === "fx" && queue[0] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - }); - }; -jQuery.prototype.ready = function( fn ) { -/// -/// Specify a function to execute when the DOM is fully loaded. -/// -/// -/// A function to execute after the DOM is ready. -/// -/// - - // Attach the listeners - jQuery.bindReady(); - - // Add the callback - readyList.done( fn ); - - return this; - }; -jQuery.prototype.remove = function( selector, keepData ) { -/// -/// Remove the set of matched elements from the DOM. -/// -/// -/// A selector expression that filters the set of matched elements to be removed. -/// -/// - - for ( var i = 0, elem; (elem = this[i]) != null; i++ ) { - if ( !selector || jQuery.filter( selector, [ elem ] ).length ) { - if ( !keepData && elem.nodeType === 1 ) { - jQuery.cleanData( elem.getElementsByTagName("*") ); - jQuery.cleanData( [ elem ] ); - } - - if ( elem.parentNode ) { - elem.parentNode.removeChild( elem ); - } - } - } - - return this; - }; -jQuery.prototype.removeAttr = function( name ) { -/// -/// Remove an attribute from each element in the set of matched elements. -/// -/// -/// An attribute to remove. -/// -/// - - return this.each(function() { - jQuery.removeAttr( this, name ); - }); - }; -jQuery.prototype.removeClass = function( value ) { -/// -/// Remove a single class, multiple classes, or all classes from each element in the set of matched elements. -/// 1 - removeClass(className) -/// 2 - removeClass(function(index, class)) -/// -/// -/// One or more space-separated classes to be removed from the class attribute of each matched element. -/// -/// - - if ( jQuery.isFunction(value) ) { - return this.each(function(i) { - var self = jQuery(this); - self.removeClass( value.call(this, i, self.attr("class")) ); - }); - } - - if ( (value && typeof value === "string") || value === undefined ) { - var classNames = (value || "").split( rspace ); - - for ( var i = 0, l = this.length; i < l; i++ ) { - var elem = this[i]; - - if ( elem.nodeType === 1 && elem.className ) { - if ( value ) { - var className = (" " + elem.className + " ").replace(rclass, " "); - for ( var c = 0, cl = classNames.length; c < cl; c++ ) { - className = className.replace(" " + classNames[c] + " ", " "); - } - elem.className = jQuery.trim( className ); - - } else { - elem.className = ""; - } - } - } - } - - return this; - }; -jQuery.prototype.removeData = function( key ) { -/// -/// Remove a previously-stored piece of data. -/// -/// -/// A string naming the piece of data to delete. -/// -/// - - return this.each(function() { - jQuery.removeData( this, key ); - }); - }; -jQuery.prototype.removeProp = function( name ) { -/// -/// Remove a property for the set of matched elements. -/// -/// -/// The name of the property to set. -/// -/// -/// A value to set for the property. -/// -/// - - name = jQuery.propFix[ name ] || name; - return this.each(function() { - // try/catch handles cases where IE balks (such as removing a property on window) - try { - this[ name ] = undefined; - delete this[ name ]; - } catch( e ) {} - }); - }; -jQuery.prototype.replaceAll = function( selector ) { -/// -/// Replace each target element with the set of matched elements. -/// -/// -/// A selector expression indicating which element(s) to replace. -/// -/// - - var ret = [], - insert = jQuery( selector ), - parent = this.length === 1 && this[0].parentNode; - - if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) { - insert[ original ]( this[0] ); - return this; - - } else { - for ( var i = 0, l = insert.length; i < l; i++ ) { - var elems = (i > 0 ? this.clone(true) : this).get(); - jQuery( insert[i] )[ original ]( elems ); - ret = ret.concat( elems ); - } - - return this.pushStack( ret, name, insert.selector ); - } - }; -jQuery.prototype.replaceWith = function( value ) { -/// -/// Replace each element in the set of matched elements with the provided new content. -/// 1 - replaceWith(newContent) -/// 2 - replaceWith(function) -/// -/// -/// The content to insert. May be an HTML string, DOM element, or jQuery object. -/// -/// - - if ( this[0] && this[0].parentNode ) { - // Make sure that the elements are removed from the DOM before they are inserted - // this can help fix replacing a parent with child elements - if ( jQuery.isFunction( value ) ) { - return this.each(function(i) { - var self = jQuery(this), old = self.html(); - self.replaceWith( value.call( this, i, old ) ); - }); - } - - if ( typeof value !== "string" ) { - value = jQuery( value ).detach(); - } - - return this.each(function() { - var next = this.nextSibling, - parent = this.parentNode; - - jQuery( this ).remove(); - - if ( next ) { - jQuery(next).before( value ); - } else { - jQuery(parent).append( value ); - } - }); - } else { - return this.length ? - this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value ) : - this; - } - }; -jQuery.prototype.resize = function( data, fn ) { -/// -/// Bind an event handler to the "resize" JavaScript event, or trigger that event on an element. -/// 1 - resize(handler(eventObject)) -/// 2 - resize(eventData, handler(eventObject)) -/// 3 - resize() -/// -/// -/// A map of data that will be passed to the event handler. -/// -/// -/// A function to execute each time the event is triggered. -/// -/// - - if ( fn == null ) { - fn = data; - data = null; - } - - return arguments.length > 0 ? - this.bind( name, data, fn ) : - this.trigger( name ); - }; -jQuery.prototype.scroll = function( data, fn ) { -/// -/// Bind an event handler to the "scroll" JavaScript event, or trigger that event on an element. -/// 1 - scroll(handler(eventObject)) -/// 2 - scroll(eventData, handler(eventObject)) -/// 3 - scroll() -/// -/// -/// A map of data that will be passed to the event handler. -/// -/// -/// A function to execute each time the event is triggered. -/// -/// - - if ( fn == null ) { - fn = data; - data = null; - } - - return arguments.length > 0 ? - this.bind( name, data, fn ) : - this.trigger( name ); - }; -jQuery.prototype.scrollLeft = function( val ) { -/// -/// 1: Get the current horizontal position of the scroll bar for the first element in the set of matched elements. -/// 1.1 - scrollLeft() -/// 2: Set the current horizontal position of the scroll bar for each of the set of matched elements. -/// 2.1 - scrollLeft(value) -/// -/// -/// An integer indicating the new position to set the scroll bar to. -/// -/// - - var elem, win; - - if ( val === undefined ) { - elem = this[ 0 ]; - - if ( !elem ) { - return null; - } - - win = getWindow( elem ); - - // Return the scroll offset - return win ? ("pageXOffset" in win) ? win[ i ? "pageYOffset" : "pageXOffset" ] : - jQuery.support.boxModel && win.document.documentElement[ method ] || - win.document.body[ method ] : - elem[ method ]; - } - - // Set the scroll offset - return this.each(function() { - win = getWindow( this ); - - if ( win ) { - win.scrollTo( - !i ? val : jQuery( win ).scrollLeft(), - i ? val : jQuery( win ).scrollTop() - ); - - } else { - this[ method ] = val; - } - }); - }; -jQuery.prototype.scrollTop = function( val ) { -/// -/// 1: Get the current vertical position of the scroll bar for the first element in the set of matched elements. -/// 1.1 - scrollTop() -/// 2: Set the current vertical position of the scroll bar for each of the set of matched elements. -/// 2.1 - scrollTop(value) -/// -/// -/// An integer indicating the new position to set the scroll bar to. -/// -/// - - var elem, win; - - if ( val === undefined ) { - elem = this[ 0 ]; - - if ( !elem ) { - return null; - } - - win = getWindow( elem ); - - // Return the scroll offset - return win ? ("pageXOffset" in win) ? win[ i ? "pageYOffset" : "pageXOffset" ] : - jQuery.support.boxModel && win.document.documentElement[ method ] || - win.document.body[ method ] : - elem[ method ]; - } - - // Set the scroll offset - return this.each(function() { - win = getWindow( this ); - - if ( win ) { - win.scrollTo( - !i ? val : jQuery( win ).scrollLeft(), - i ? val : jQuery( win ).scrollTop() - ); - - } else { - this[ method ] = val; - } - }); - }; -jQuery.prototype.select = function( data, fn ) { -/// -/// Bind an event handler to the "select" JavaScript event, or trigger that event on an element. -/// 1 - select(handler(eventObject)) -/// 2 - select(eventData, handler(eventObject)) -/// 3 - select() -/// -/// -/// A map of data that will be passed to the event handler. -/// -/// -/// A function to execute each time the event is triggered. -/// -/// - - if ( fn == null ) { - fn = data; - data = null; - } - - return arguments.length > 0 ? - this.bind( name, data, fn ) : - this.trigger( name ); - }; -jQuery.prototype.serialize = function() { -/// -/// Encode a set of form elements as a string for submission. -/// -/// - - return jQuery.param( this.serializeArray() ); - }; -jQuery.prototype.serializeArray = function() { -/// -/// Encode a set of form elements as an array of names and values. -/// -/// - - return this.map(function(){ - return this.elements ? jQuery.makeArray( this.elements ) : this; - }) - .filter(function(){ - return this.name && !this.disabled && - ( this.checked || rselectTextarea.test( this.nodeName ) || - rinput.test( this.type ) ); - }) - .map(function( i, elem ){ - var val = jQuery( this ).val(); - - return val == null ? - null : - jQuery.isArray( val ) ? - jQuery.map( val, function( val, i ){ - return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - }) : - { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; - }).get(); - }; -jQuery.prototype.show = function( speed, easing, callback ) { -/// -/// Display the matched elements. -/// 1 - show() -/// 2 - show(duration, callback) -/// 3 - show(duration, easing, callback) -/// -/// -/// A string or number determining how long the animation will run. -/// -/// -/// A string indicating which easing function to use for the transition. -/// -/// -/// A function to call once the animation is complete. -/// -/// - - var elem, display; - - if ( speed || speed === 0 ) { - return this.animate( genFx("show", 3), speed, easing, callback); - - } else { - for ( var i = 0, j = this.length; i < j; i++ ) { - elem = this[i]; - - if ( elem.style ) { - display = elem.style.display; - - // Reset the inline display of this element to learn if it is - // being hidden by cascaded rules or not - if ( !jQuery._data(elem, "olddisplay") && display === "none" ) { - display = elem.style.display = ""; - } - - // Set elements which have been overridden with display: none - // in a stylesheet to whatever the default browser style is - // for such an element - if ( display === "" && jQuery.css( elem, "display" ) === "none" ) { - jQuery._data(elem, "olddisplay", defaultDisplay(elem.nodeName)); - } - } - } - - // Set the display of most of the elements in a second loop - // to avoid the constant reflow - for ( i = 0; i < j; i++ ) { - elem = this[i]; - - if ( elem.style ) { - display = elem.style.display; - - if ( display === "" || display === "none" ) { - elem.style.display = jQuery._data(elem, "olddisplay") || ""; - } - } - } - - return this; - } - }; -jQuery.prototype.siblings = function( until, selector ) { -/// -/// Get the siblings of each element in the set of matched elements, optionally filtered by a selector. -/// -/// -/// A string containing a selector expression to match elements against. -/// -/// - - var ret = jQuery.map( this, fn, until ), - // The variable 'args' was introduced in - // https://github.com/jquery/jquery/commit/52a0238 - // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. - // http://code.google.com/p/v8/issues/detail?id=1050 - args = slice.call(arguments); - - if ( !runtil.test( name ) ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - ret = jQuery.filter( selector, ret ); - } - - ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; - - if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { - ret = ret.reverse(); - } - - return this.pushStack( ret, name, args.join(",") ); - }; -jQuery.prototype.size = function() { -/// -/// Return the number of elements in the jQuery object. -/// -/// - - return this.length; - }; -jQuery.prototype.slice = function() { -/// -/// Reduce the set of matched elements to a subset specified by a range of indices. -/// -/// -/// An integer indicating the 0-based position at which the elements begin to be selected. If negative, it indicates an offset from the end of the set. -/// -/// -/// An integer indicating the 0-based position at which the elements stop being selected. If negative, it indicates an offset from the end of the set. If omitted, the range continues until the end of the set. -/// -/// - - return this.pushStack( slice.apply( this, arguments ), - "slice", slice.call(arguments).join(",") ); - }; -jQuery.prototype.slideDown = function( speed, easing, callback ) { -/// -/// Display the matched elements with a sliding motion. -/// 1 - slideDown(duration, callback) -/// 2 - slideDown(duration, easing, callback) -/// -/// -/// A string or number determining how long the animation will run. -/// -/// -/// A string indicating which easing function to use for the transition. -/// -/// -/// A function to call once the animation is complete. -/// -/// - - return this.animate( props, speed, easing, callback ); - }; -jQuery.prototype.slideToggle = function( speed, easing, callback ) { -/// -/// Display or hide the matched elements with a sliding motion. -/// 1 - slideToggle(duration, callback) -/// 2 - slideToggle(duration, easing, callback) -/// -/// -/// A string or number determining how long the animation will run. -/// -/// -/// A string indicating which easing function to use for the transition. -/// -/// -/// A function to call once the animation is complete. -/// -/// - - return this.animate( props, speed, easing, callback ); - }; -jQuery.prototype.slideUp = function( speed, easing, callback ) { -/// -/// Hide the matched elements with a sliding motion. -/// 1 - slideUp(duration, callback) -/// 2 - slideUp(duration, easing, callback) -/// -/// -/// A string or number determining how long the animation will run. -/// -/// -/// A string indicating which easing function to use for the transition. -/// -/// -/// A function to call once the animation is complete. -/// -/// - - return this.animate( props, speed, easing, callback ); - }; -jQuery.prototype.stop = function( clearQueue, gotoEnd ) { -/// -/// Stop the currently-running animation on the matched elements. -/// -/// -/// A Boolean indicating whether to remove queued animation as well. Defaults to false. -/// -/// -/// A Boolean indicating whether to complete the current animation immediately. Defaults to false. -/// -/// - - if ( clearQueue ) { - this.queue([]); - } - - this.each(function() { - var timers = jQuery.timers, - i = timers.length; - // clear marker counters if we know they won't be - if ( !gotoEnd ) { - jQuery._unmark( true, this ); - } - while ( i-- ) { - if ( timers[i].elem === this ) { - if (gotoEnd) { - // force the next step to be the last - timers[i](true); - } - - timers.splice(i, 1); - } - } - }); - - // start the next in the queue if the last step wasn't forced - if ( !gotoEnd ) { - this.dequeue(); - } - - return this; - }; -jQuery.prototype.submit = function( data, fn ) { -/// -/// Bind an event handler to the "submit" JavaScript event, or trigger that event on an element. -/// 1 - submit(handler(eventObject)) -/// 2 - submit(eventData, handler(eventObject)) -/// 3 - submit() -/// -/// -/// A map of data that will be passed to the event handler. -/// -/// -/// A function to execute each time the event is triggered. -/// -/// - - if ( fn == null ) { - fn = data; - data = null; - } - - return arguments.length > 0 ? - this.bind( name, data, fn ) : - this.trigger( name ); - }; -jQuery.prototype.text = function( text ) { -/// -/// 1: Get the combined text contents of each element in the set of matched elements, including their descendants. -/// 1.1 - text() -/// 2: Set the content of each element in the set of matched elements to the specified text. -/// 2.1 - text(textString) -/// 2.2 - text(function(index, text)) -/// -/// -/// A string of text to set as the content of each matched element. -/// -/// - - if ( jQuery.isFunction(text) ) { - return this.each(function(i) { - var self = jQuery( this ); - - self.text( text.call(this, i, self.text()) ); - }); - } - - if ( typeof text !== "object" && text !== undefined ) { - return this.empty().append( (this[0] && this[0].ownerDocument || document).createTextNode( text ) ); - } - - return jQuery.text( this ); - }; -jQuery.prototype.toArray = function() { -/// -/// Retrieve all the DOM elements contained in the jQuery set, as an array. -/// -/// - - return slice.call( this, 0 ); - }; -jQuery.prototype.toggle = function( fn, fn2, callback ) { -/// -/// 1: Bind two or more handlers to the matched elements, to be executed on alternate clicks. -/// 1.1 - toggle(handler(eventObject), handler(eventObject), handler(eventObject)) -/// 2: Display or hide the matched elements. -/// 2.1 - toggle(duration, callback) -/// 2.2 - toggle(duration, easing, callback) -/// 2.3 - toggle(showOrHide) -/// -/// -/// A function to execute every even time the element is clicked. -/// -/// -/// A function to execute every odd time the element is clicked. -/// -/// -/// Additional handlers to cycle through after clicks. -/// -/// - - var bool = typeof fn === "boolean"; - - if ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) { - this._toggle.apply( this, arguments ); - - } else if ( fn == null || bool ) { - this.each(function() { - var state = bool ? fn : jQuery(this).is(":hidden"); - jQuery(this)[ state ? "show" : "hide" ](); - }); - - } else { - this.animate(genFx("toggle", 3), fn, fn2, callback); - } - - return this; - }; -jQuery.prototype.toggleClass = function( value, stateVal ) { -/// -/// Add or remove one or more classes from each element in the set of matched elements, depending on either the class's presence or the value of the switch argument. -/// 1 - toggleClass(className) -/// 2 - toggleClass(className, switch) -/// 3 - toggleClass(function(index, class), switch) -/// -/// -/// One or more class names (separated by spaces) to be toggled for each element in the matched set. -/// -/// -/// A boolean value to determine whether the class should be added or removed. -/// -/// - - var type = typeof value, - isBool = typeof stateVal === "boolean"; - - if ( jQuery.isFunction( value ) ) { - return this.each(function(i) { - var self = jQuery(this); - self.toggleClass( value.call(this, i, self.attr("class"), stateVal), stateVal ); - }); - } - - return this.each(function() { - if ( type === "string" ) { - // toggle individual class names - var className, - i = 0, - self = jQuery( this ), - state = stateVal, - classNames = value.split( rspace ); - - while ( (className = classNames[ i++ ]) ) { - // check each className given, space seperated list - state = isBool ? state : !self.hasClass( className ); - self[ state ? "addClass" : "removeClass" ]( className ); - } - - } else if ( type === "undefined" || type === "boolean" ) { - if ( this.className ) { - // store className if set - jQuery._data( this, "__className__", this.className ); - } - - // toggle whole className - this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; - } - }); - }; -jQuery.prototype.trigger = function( type, data ) { -/// -/// Execute all handlers and behaviors attached to the matched elements for the given event type. -/// 1 - trigger(eventType, extraParameters) -/// 2 - trigger(event) -/// -/// -/// A string containing a JavaScript event type, such as click or submit. -/// -/// -/// An array of additional parameters to pass along to the event handler. -/// -/// - - return this.each(function() { - jQuery.event.trigger( type, data, this ); - }); - }; -jQuery.prototype.triggerHandler = function( type, data ) { -/// -/// Execute all handlers attached to an element for an event. -/// -/// -/// A string containing a JavaScript event type, such as click or submit. -/// -/// -/// An array of additional parameters to pass along to the event handler. -/// -/// - - if ( this[0] ) { - return jQuery.event.trigger( type, data, this[0], true ); - } - }; -jQuery.prototype.unbind = function( type, fn ) { -/// -/// Remove a previously-attached event handler from the elements. -/// 1 - unbind(eventType, handler(eventObject)) -/// 2 - unbind(eventType, false) -/// 3 - unbind(event) -/// -/// -/// A string containing a JavaScript event type, such as click or submit. -/// -/// -/// The function that is to be no longer executed. -/// -/// - - // Handle object literals - if ( typeof type === "object" && !type.preventDefault ) { - for ( var key in type ) { - this.unbind(key, type[key]); - } - - } else { - for ( var i = 0, l = this.length; i < l; i++ ) { - jQuery.event.remove( this[i], type, fn ); - } - } - - return this; - }; -jQuery.prototype.undelegate = function( selector, types, fn ) { -/// -/// Remove a handler from the event for all elements which match the current selector, now or in the future, based upon a specific set of root elements. -/// 1 - undelegate() -/// 2 - undelegate(selector, eventType) -/// 3 - undelegate(selector, eventType, handler) -/// 4 - undelegate(selector, events) -/// 5 - undelegate(namespace) -/// -/// -/// A selector which will be used to filter the event results. -/// -/// -/// A string containing a JavaScript event type, such as "click" or "keydown" -/// -/// -/// A function to execute at the time the event is triggered. -/// -/// - - if ( arguments.length === 0 ) { - return this.unbind( "live" ); - - } else { - return this.die( types, null, fn, selector ); - } - }; -jQuery.prototype.unload = function( data, fn ) { -/// -/// Bind an event handler to the "unload" JavaScript event. -/// 1 - unload(handler(eventObject)) -/// 2 - unload(eventData, handler(eventObject)) -/// -/// -/// A map of data that will be passed to the event handler. -/// -/// -/// A function to execute each time the event is triggered. -/// -/// - - if ( fn == null ) { - fn = data; - data = null; - } - - return arguments.length > 0 ? - this.bind( name, data, fn ) : - this.trigger( name ); - }; -jQuery.prototype.unwrap = function() { -/// -/// Remove the parents of the set of matched elements from the DOM, leaving the matched elements in their place. -/// -/// - - return this.parent().each(function() { - if ( !jQuery.nodeName( this, "body" ) ) { - jQuery( this ).replaceWith( this.childNodes ); - } - }).end(); - }; -jQuery.prototype.val = function( value ) { -/// -/// 1: Get the current value of the first element in the set of matched elements. -/// 1.1 - val() -/// 2: Set the value of each element in the set of matched elements. -/// 2.1 - val(value) -/// 2.2 - val(function(index, value)) -/// -/// -/// A string of text or an array of strings corresponding to the value of each matched element to set as selected/checked. -/// -/// - - var hooks, ret, - elem = this[0]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ]; - - if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { - return ret; - } - - return (elem.value || "").replace(rreturn, ""); - } - - return undefined; - } - - var isFunction = jQuery.isFunction( value ); - - return this.each(function( i ) { - var self = jQuery(this), val; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( isFunction ) { - val = value.call( this, i, self.val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - } else if ( typeof val === "number" ) { - val += ""; - } else if ( jQuery.isArray( val ) ) { - val = jQuery.map(val, function ( value ) { - return value == null ? "" : value + ""; - }); - } - - hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - }); - }; -jQuery.prototype.width = function( size ) { -/// -/// 1: Get the current computed width for the first element in the set of matched elements. -/// 1.1 - width() -/// 2: Set the CSS width of each element in the set of matched elements. -/// 2.1 - width(value) -/// 2.2 - width(function(index, width)) -/// -/// -/// An integer representing the number of pixels, or an integer along with an optional unit of measure appended (as a string). -/// -/// - - // Get window width or height - var elem = this[0]; - if ( !elem ) { - return size == null ? null : this; - } - - if ( jQuery.isFunction( size ) ) { - return this.each(function( i ) { - var self = jQuery( this ); - self[ type ]( size.call( this, i, self[ type ]() ) ); - }); - } - - if ( jQuery.isWindow( elem ) ) { - // Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode - // 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat - var docElemProp = elem.document.documentElement[ "client" + name ]; - return elem.document.compatMode === "CSS1Compat" && docElemProp || - elem.document.body[ "client" + name ] || docElemProp; - - // Get document width or height - } else if ( elem.nodeType === 9 ) { - // Either scroll[Width/Height] or offset[Width/Height], whichever is greater - return Math.max( - elem.documentElement["client" + name], - elem.body["scroll" + name], elem.documentElement["scroll" + name], - elem.body["offset" + name], elem.documentElement["offset" + name] - ); - - // Get or set width or height on the element - } else if ( size === undefined ) { - var orig = jQuery.css( elem, type ), - ret = parseFloat( orig ); - - return jQuery.isNaN( ret ) ? orig : ret; - - // Set the width or height on the element (default to pixels if value is unitless) - } else { - return this.css( type, typeof size === "string" ? size : size + "px" ); - } - }; -jQuery.prototype.wrap = function( html ) { -/// -/// Wrap an HTML structure around each element in the set of matched elements. -/// 1 - wrap(wrappingElement) -/// 2 - wrap(function(index)) -/// -/// -/// An HTML snippet, selector expression, jQuery object, or DOM element specifying the structure to wrap around the matched elements. -/// -/// - - return this.each(function() { - jQuery( this ).wrapAll( html ); - }); - }; -jQuery.prototype.wrapAll = function( html ) { -/// -/// Wrap an HTML structure around all elements in the set of matched elements. -/// -/// -/// An HTML snippet, selector expression, jQuery object, or DOM element specifying the structure to wrap around the matched elements. -/// -/// - - if ( jQuery.isFunction( html ) ) { - return this.each(function(i) { - jQuery(this).wrapAll( html.call(this, i) ); - }); - } - - if ( this[0] ) { - // The elements to wrap the target around - var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true); - - if ( this[0].parentNode ) { - wrap.insertBefore( this[0] ); - } - - wrap.map(function() { - var elem = this; - - while ( elem.firstChild && elem.firstChild.nodeType === 1 ) { - elem = elem.firstChild; - } - - return elem; - }).append( this ); - } - - return this; - }; -jQuery.prototype.wrapInner = function( html ) { -/// -/// Wrap an HTML structure around the content of each element in the set of matched elements. -/// 1 - wrapInner(wrappingElement) -/// 2 - wrapInner(wrappingFunction) -/// -/// -/// An HTML snippet, selector expression, jQuery object, or DOM element specifying the structure to wrap around the content of the matched elements. -/// -/// - - if ( jQuery.isFunction( html ) ) { - return this.each(function(i) { - jQuery(this).wrapInner( html.call(this, i) ); - }); - } - - return this.each(function() { - var self = jQuery( this ), - contents = self.contents(); - - if ( contents.length ) { - contents.wrapAll( html ); - - } else { - self.append( html ); - } - }); - }; -jQuery.fn = jQuery.prototype; -jQuery.fn.init.prototype = jQuery.fn; -window.jQuery = window.$ = jQuery; -})(window); \ No newline at end of file diff --git a/NzbDrone.Web/Scripts/jquery-1.6.1.js b/NzbDrone.Web/Scripts/jquery-1.6.1.js deleted file mode 100644 index 5d5a1d58e..000000000 --- a/NzbDrone.Web/Scripts/jquery-1.6.1.js +++ /dev/null @@ -1,8936 +0,0 @@ -/*! - * jQuery JavaScript Library v1.6.1 - * http://jquery.com/ - * - * Copyright 2011, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Thu May 12 15:04:36 2011 -0400 - */ -(function( window, undefined ) { - -// Use the correct document accordingly with window argument (sandbox) -var document = window.document, - navigator = window.navigator, - location = window.location; -var jQuery = (function() { - -// Define a local copy of jQuery -var jQuery = function( selector, context ) { - // The jQuery object is actually just the init constructor 'enhanced' - return new jQuery.fn.init( selector, context, rootjQuery ); - }, - - // Map over jQuery in case of overwrite - _jQuery = window.jQuery, - - // Map over the $ in case of overwrite - _$ = window.$, - - // A central reference to the root jQuery(document) - rootjQuery, - - // A simple way to check for HTML strings or ID strings - // (both of which we optimize for) - quickExpr = /^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, - - // Check if a string has a non-whitespace character in it - rnotwhite = /\S/, - - // Used for trimming whitespace - trimLeft = /^\s+/, - trimRight = /\s+$/, - - // Check for digits - rdigit = /\d/, - - // Match a standalone tag - rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/, - - // JSON RegExp - rvalidchars = /^[\],:{}\s]*$/, - rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, - rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, - rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, - - // Useragent RegExp - rwebkit = /(webkit)[ \/]([\w.]+)/, - ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/, - rmsie = /(msie) ([\w.]+)/, - rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/, - - // Keep a UserAgent string for use with jQuery.browser - userAgent = navigator.userAgent, - - // For matching the engine and version of the browser - browserMatch, - - // The deferred used on DOM ready - readyList, - - // The ready event handler - DOMContentLoaded, - - // Save a reference to some core methods - toString = Object.prototype.toString, - hasOwn = Object.prototype.hasOwnProperty, - push = Array.prototype.push, - slice = Array.prototype.slice, - trim = String.prototype.trim, - indexOf = Array.prototype.indexOf, - - // [[Class]] -> type pairs - class2type = {}; - -jQuery.fn = jQuery.prototype = { - constructor: jQuery, - init: function( selector, context, rootjQuery ) { - var match, elem, ret, doc; - - // Handle $(""), $(null), or $(undefined) - if ( !selector ) { - return this; - } - - // Handle $(DOMElement) - if ( selector.nodeType ) { - this.context = this[0] = selector; - this.length = 1; - return this; - } - - // The body element only exists once, optimize finding it - if ( selector === "body" && !context && document.body ) { - this.context = document; - this[0] = document.body; - this.selector = selector; - this.length = 1; - return this; - } - - // Handle HTML strings - if ( typeof selector === "string" ) { - // Are we dealing with HTML string or an ID? - if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = quickExpr.exec( selector ); - } - - // Verify a match, and that no context was specified for #id - if ( match && (match[1] || !context) ) { - - // HANDLE: $(html) -> $(array) - if ( match[1] ) { - context = context instanceof jQuery ? context[0] : context; - doc = (context ? context.ownerDocument || context : document); - - // If a single string is passed in and it's a single tag - // just do a createElement and skip the rest - ret = rsingleTag.exec( selector ); - - if ( ret ) { - if ( jQuery.isPlainObject( context ) ) { - selector = [ document.createElement( ret[1] ) ]; - jQuery.fn.attr.call( selector, context, true ); - - } else { - selector = [ doc.createElement( ret[1] ) ]; - } - - } else { - ret = jQuery.buildFragment( [ match[1] ], [ doc ] ); - selector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes; - } - - return jQuery.merge( this, selector ); - - // HANDLE: $("#id") - } else { - elem = document.getElementById( match[2] ); - - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if ( elem && elem.parentNode ) { - // Handle the case where IE and Opera return items - // by name instead of ID - if ( elem.id !== match[2] ) { - return rootjQuery.find( selector ); - } - - // Otherwise, we inject the element directly into the jQuery object - this.length = 1; - this[0] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return (context || rootjQuery).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return rootjQuery.ready( selector ); - } - - if (selector.selector !== undefined) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray( selector, this ); - }, - - // Start with an empty selector - selector: "", - - // The current version of jQuery being used - jquery: "1.6.1", - - // The default length of a jQuery object is 0 - length: 0, - - // The number of elements contained in the matched element set - size: function() { - return this.length; - }, - - toArray: function() { - return slice.call( this, 0 ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num == null ? - - // Return a 'clean' array - this.toArray() : - - // Return just the object - ( num < 0 ? this[ this.length + num ] : this[ num ] ); - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems, name, selector ) { - // Build a new jQuery matched element set - var ret = this.constructor(); - - if ( jQuery.isArray( elems ) ) { - push.apply( ret, elems ); - - } else { - jQuery.merge( ret, elems ); - } - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - - ret.context = this.context; - - if ( name === "find" ) { - ret.selector = this.selector + (this.selector ? " " : "") + selector; - } else if ( name ) { - ret.selector = this.selector + "." + name + "(" + selector + ")"; - } - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - // (You can seed the arguments with an array of args, but this is - // only used internally.) - each: function( callback, args ) { - return jQuery.each( this, callback, args ); - }, - - ready: function( fn ) { - // Attach the listeners - jQuery.bindReady(); - - // Add the callback - readyList.done( fn ); - - return this; - }, - - eq: function( i ) { - return i === -1 ? - this.slice( i ) : - this.slice( i, +i + 1 ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ), - "slice", slice.call(arguments).join(",") ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map(this, function( elem, i ) { - return callback.call( elem, i, elem ); - })); - }, - - end: function() { - return this.prevObject || this.constructor(null); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: [].sort, - splice: [].splice -}; - -// Give the init function the jQuery prototype for later instantiation -jQuery.fn.init.prototype = jQuery.fn; - -jQuery.extend = jQuery.fn.extend = function() { - var options, name, src, copy, copyIsArray, clone, - target = arguments[0] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - target = arguments[1] || {}; - // skip the boolean and the target - i = 2; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction(target) ) { - target = {}; - } - - // extend jQuery itself if only one argument is passed - if ( length === i ) { - target = this; - --i; - } - - for ( ; i < length; i++ ) { - // Only deal with non-null/undefined values - if ( (options = arguments[ i ]) != null ) { - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray(src) ? src : []; - - } else { - clone = src && jQuery.isPlainObject(src) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend({ - noConflict: function( deep ) { - if ( window.$ === jQuery ) { - window.$ = _$; - } - - if ( deep && window.jQuery === jQuery ) { - window.jQuery = _jQuery; - } - - return jQuery; - }, - - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Hold (or release) the ready event - holdReady: function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } - }, - - // Handle when the DOM is ready - ready: function( wait ) { - // Either a released hold or an DOMready/load event and not yet ready - if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) { - // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). - if ( !document.body ) { - return setTimeout( jQuery.ready, 1 ); - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - - // Trigger any bound ready events - if ( jQuery.fn.trigger ) { - jQuery( document ).trigger( "ready" ).unbind( "ready" ); - } - } - }, - - bindReady: function() { - if ( readyList ) { - return; - } - - readyList = jQuery._Deferred(); - - // Catch cases where $(document).ready() is called after the - // browser event has already occurred. - if ( document.readyState === "complete" ) { - // Handle it asynchronously to allow scripts the opportunity to delay ready - return setTimeout( jQuery.ready, 1 ); - } - - // Mozilla, Opera and webkit nightlies currently support this event - if ( document.addEventListener ) { - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", jQuery.ready, false ); - - // If IE event model is used - } else if ( document.attachEvent ) { - // ensure firing before onload, - // maybe late but safe also for iframes - document.attachEvent( "onreadystatechange", DOMContentLoaded ); - - // A fallback to window.onload, that will always work - window.attachEvent( "onload", jQuery.ready ); - - // If IE and not a frame - // continually check to see if the document is ready - var toplevel = false; - - try { - toplevel = window.frameElement == null; - } catch(e) {} - - if ( document.documentElement.doScroll && toplevel ) { - doScrollCheck(); - } - } - }, - - // See test/unit/core.js for details concerning isFunction. - // Since version 1.3, DOM methods and functions like alert - // aren't supported. They return false on IE (#2968). - isFunction: function( obj ) { - return jQuery.type(obj) === "function"; - }, - - isArray: Array.isArray || function( obj ) { - return jQuery.type(obj) === "array"; - }, - - // A crude way of determining if an object is a window - isWindow: function( obj ) { - return obj && typeof obj === "object" && "setInterval" in obj; - }, - - isNaN: function( obj ) { - return obj == null || !rdigit.test( obj ) || isNaN( obj ); - }, - - type: function( obj ) { - return obj == null ? - String( obj ) : - class2type[ toString.call(obj) ] || "object"; - }, - - isPlainObject: function( obj ) { - // Must be an Object. - // Because of IE, we also have to check the presence of the constructor property. - // Make sure that DOM nodes and window objects don't pass through, as well - if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { - return false; - } - - // Not own constructor property must be Object - if ( obj.constructor && - !hasOwn.call(obj, "constructor") && - !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { - return false; - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own. - - var key; - for ( key in obj ) {} - - return key === undefined || hasOwn.call( obj, key ); - }, - - isEmptyObject: function( obj ) { - for ( var name in obj ) { - return false; - } - return true; - }, - - error: function( msg ) { - throw msg; - }, - - parseJSON: function( data ) { - if ( typeof data !== "string" || !data ) { - return null; - } - - // Make sure leading/trailing whitespace is removed (IE can't handle it) - data = jQuery.trim( data ); - - // Attempt to parse using the native JSON parser first - if ( window.JSON && window.JSON.parse ) { - return window.JSON.parse( data ); - } - - // Make sure the incoming data is actual JSON - // Logic borrowed from http://json.org/json2.js - if ( rvalidchars.test( data.replace( rvalidescape, "@" ) - .replace( rvalidtokens, "]" ) - .replace( rvalidbraces, "")) ) { - - return (new Function( "return " + data ))(); - - } - jQuery.error( "Invalid JSON: " + data ); - }, - - // Cross-browser xml parsing - // (xml & tmp used internally) - parseXML: function( data , xml , tmp ) { - - if ( window.DOMParser ) { // Standard - tmp = new DOMParser(); - xml = tmp.parseFromString( data , "text/xml" ); - } else { // IE - xml = new ActiveXObject( "Microsoft.XMLDOM" ); - xml.async = "false"; - xml.loadXML( data ); - } - - tmp = xml.documentElement; - - if ( ! tmp || ! tmp.nodeName || tmp.nodeName === "parsererror" ) { - jQuery.error( "Invalid XML: " + data ); - } - - return xml; - }, - - noop: function() {}, - - // Evaluates a script in a global context - // Workarounds based on findings by Jim Driscoll - // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context - globalEval: function( data ) { - if ( data && rnotwhite.test( data ) ) { - // We use execScript on Internet Explorer - // We use an anonymous function so that context is window - // rather than jQuery in Firefox - ( window.execScript || function( data ) { - window[ "eval" ].call( window, data ); - } )( data ); - } - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase(); - }, - - // args is for internal usage only - each: function( object, callback, args ) { - var name, i = 0, - length = object.length, - isObj = length === undefined || jQuery.isFunction( object ); - - if ( args ) { - if ( isObj ) { - for ( name in object ) { - if ( callback.apply( object[ name ], args ) === false ) { - break; - } - } - } else { - for ( ; i < length; ) { - if ( callback.apply( object[ i++ ], args ) === false ) { - break; - } - } - } - - // A special, fast, case for the most common use of each - } else { - if ( isObj ) { - for ( name in object ) { - if ( callback.call( object[ name ], name, object[ name ] ) === false ) { - break; - } - } - } else { - for ( ; i < length; ) { - if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) { - break; - } - } - } - } - - return object; - }, - - // Use native String.trim function wherever possible - trim: trim ? - function( text ) { - return text == null ? - "" : - trim.call( text ); - } : - - // Otherwise use our own trimming functionality - function( text ) { - return text == null ? - "" : - text.toString().replace( trimLeft, "" ).replace( trimRight, "" ); - }, - - // results is for internal usage only - makeArray: function( array, results ) { - var ret = results || []; - - if ( array != null ) { - // The window, strings (and functions) also have 'length' - // The extra typeof function check is to prevent crashes - // in Safari 2 (See: #3039) - // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930 - var type = jQuery.type( array ); - - if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) { - push.call( ret, array ); - } else { - jQuery.merge( ret, array ); - } - } - - return ret; - }, - - inArray: function( elem, array ) { - - if ( indexOf ) { - return indexOf.call( array, elem ); - } - - for ( var i = 0, length = array.length; i < length; i++ ) { - if ( array[ i ] === elem ) { - return i; - } - } - - return -1; - }, - - merge: function( first, second ) { - var i = first.length, - j = 0; - - if ( typeof second.length === "number" ) { - for ( var l = second.length; j < l; j++ ) { - first[ i++ ] = second[ j ]; - } - - } else { - while ( second[j] !== undefined ) { - first[ i++ ] = second[ j++ ]; - } - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, inv ) { - var ret = [], retVal; - inv = !!inv; - - // Go through the array, only saving the items - // that pass the validator function - for ( var i = 0, length = elems.length; i < length; i++ ) { - retVal = !!callback( elems[ i ], i ); - if ( inv !== retVal ) { - ret.push( elems[ i ] ); - } - } - - return ret; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var value, key, ret = [], - i = 0, - length = elems.length, - // jquery objects are treated as arrays - isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ; - - // Go through the array, translating each of the items to their - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret[ ret.length ] = value; - } - } - - // Go through every key on the object, - } else { - for ( key in elems ) { - value = callback( elems[ key ], key, arg ); - - if ( value != null ) { - ret[ ret.length ] = value; - } - } - } - - // Flatten any nested arrays - return ret.concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - if ( typeof context === "string" ) { - var tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - var args = slice.call( arguments, 2 ), - proxy = function() { - return fn.apply( context, args.concat( slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++; - - return proxy; - }, - - // Mutifunctional method to get and set values to a collection - // The value/s can be optionally by executed if its a function - access: function( elems, key, value, exec, fn, pass ) { - var length = elems.length; - - // Setting many attributes - if ( typeof key === "object" ) { - for ( var k in key ) { - jQuery.access( elems, k, key[k], exec, fn, value ); - } - return elems; - } - - // Setting one attribute - if ( value !== undefined ) { - // Optionally, function values get executed if exec is true - exec = !pass && exec && jQuery.isFunction(value); - - for ( var i = 0; i < length; i++ ) { - fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass ); - } - - return elems; - } - - // Getting an attribute - return length ? fn( elems[0], key ) : undefined; - }, - - now: function() { - return (new Date()).getTime(); - }, - - // Use of jQuery.browser is frowned upon. - // More details: http://docs.jquery.com/Utilities/jQuery.browser - uaMatch: function( ua ) { - ua = ua.toLowerCase(); - - var match = rwebkit.exec( ua ) || - ropera.exec( ua ) || - rmsie.exec( ua ) || - ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) || - []; - - return { browser: match[1] || "", version: match[2] || "0" }; - }, - - sub: function() { - function jQuerySub( selector, context ) { - return new jQuerySub.fn.init( selector, context ); - } - jQuery.extend( true, jQuerySub, this ); - jQuerySub.superclass = this; - jQuerySub.fn = jQuerySub.prototype = this(); - jQuerySub.fn.constructor = jQuerySub; - jQuerySub.sub = this.sub; - jQuerySub.fn.init = function init( selector, context ) { - if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) { - context = jQuerySub( context ); - } - - return jQuery.fn.init.call( this, selector, context, rootjQuerySub ); - }; - jQuerySub.fn.init.prototype = jQuerySub.fn; - var rootjQuerySub = jQuerySub(document); - return jQuerySub; - }, - - browser: {} -}); - -// Populate the class2type map -jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -}); - -browserMatch = jQuery.uaMatch( userAgent ); -if ( browserMatch.browser ) { - jQuery.browser[ browserMatch.browser ] = true; - jQuery.browser.version = browserMatch.version; -} - -// Deprecated, use jQuery.browser.webkit instead -if ( jQuery.browser.webkit ) { - jQuery.browser.safari = true; -} - -// IE doesn't match non-breaking spaces with \s -if ( rnotwhite.test( "\xA0" ) ) { - trimLeft = /^[\s\xA0]+/; - trimRight = /[\s\xA0]+$/; -} - -// All jQuery objects should point back to these -rootjQuery = jQuery(document); - -// Cleanup functions for the document ready method -if ( document.addEventListener ) { - DOMContentLoaded = function() { - document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false ); - jQuery.ready(); - }; - -} else if ( document.attachEvent ) { - DOMContentLoaded = function() { - // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). - if ( document.readyState === "complete" ) { - document.detachEvent( "onreadystatechange", DOMContentLoaded ); - jQuery.ready(); - } - }; -} - -// The DOM ready check for Internet Explorer -function doScrollCheck() { - if ( jQuery.isReady ) { - return; - } - - try { - // If IE is used, use the trick by Diego Perini - // http://javascript.nwbox.com/IEContentLoaded/ - document.documentElement.doScroll("left"); - } catch(e) { - setTimeout( doScrollCheck, 1 ); - return; - } - - // and execute any waiting functions - jQuery.ready(); -} - -// Expose jQuery to the global object -return jQuery; - -})(); - - -var // Promise methods - promiseMethods = "done fail isResolved isRejected promise then always pipe".split( " " ), - // Static reference to slice - sliceDeferred = [].slice; - -jQuery.extend({ - // Create a simple deferred (one callbacks list) - _Deferred: function() { - var // callbacks list - callbacks = [], - // stored [ context , args ] - fired, - // to avoid firing when already doing so - firing, - // flag to know if the deferred has been cancelled - cancelled, - // the deferred itself - deferred = { - - // done( f1, f2, ...) - done: function() { - if ( !cancelled ) { - var args = arguments, - i, - length, - elem, - type, - _fired; - if ( fired ) { - _fired = fired; - fired = 0; - } - for ( i = 0, length = args.length; i < length; i++ ) { - elem = args[ i ]; - type = jQuery.type( elem ); - if ( type === "array" ) { - deferred.done.apply( deferred, elem ); - } else if ( type === "function" ) { - callbacks.push( elem ); - } - } - if ( _fired ) { - deferred.resolveWith( _fired[ 0 ], _fired[ 1 ] ); - } - } - return this; - }, - - // resolve with given context and args - resolveWith: function( context, args ) { - if ( !cancelled && !fired && !firing ) { - // make sure args are available (#8421) - args = args || []; - firing = 1; - try { - while( callbacks[ 0 ] ) { - callbacks.shift().apply( context, args ); - } - } - finally { - fired = [ context, args ]; - firing = 0; - } - } - return this; - }, - - // resolve with this as context and given arguments - resolve: function() { - deferred.resolveWith( this, arguments ); - return this; - }, - - // Has this deferred been resolved? - isResolved: function() { - return !!( firing || fired ); - }, - - // Cancel - cancel: function() { - cancelled = 1; - callbacks = []; - return this; - } - }; - - return deferred; - }, - - // Full fledged deferred (two callbacks list) - Deferred: function( func ) { - var deferred = jQuery._Deferred(), - failDeferred = jQuery._Deferred(), - promise; - // Add errorDeferred methods, then and promise - jQuery.extend( deferred, { - then: function( doneCallbacks, failCallbacks ) { - deferred.done( doneCallbacks ).fail( failCallbacks ); - return this; - }, - always: function() { - return deferred.done.apply( deferred, arguments ).fail.apply( this, arguments ); - }, - fail: failDeferred.done, - rejectWith: failDeferred.resolveWith, - reject: failDeferred.resolve, - isRejected: failDeferred.isResolved, - pipe: function( fnDone, fnFail ) { - return jQuery.Deferred(function( newDefer ) { - jQuery.each( { - done: [ fnDone, "resolve" ], - fail: [ fnFail, "reject" ] - }, function( handler, data ) { - var fn = data[ 0 ], - action = data[ 1 ], - returned; - if ( jQuery.isFunction( fn ) ) { - deferred[ handler ](function() { - returned = fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise().then( newDefer.resolve, newDefer.reject ); - } else { - newDefer[ action ]( returned ); - } - }); - } else { - deferred[ handler ]( newDefer[ action ] ); - } - }); - }).promise(); - }, - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - if ( obj == null ) { - if ( promise ) { - return promise; - } - promise = obj = {}; - } - var i = promiseMethods.length; - while( i-- ) { - obj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ]; - } - return obj; - } - }); - // Make sure only one callback list will be used - deferred.done( failDeferred.cancel ).fail( deferred.cancel ); - // Unexpose cancel - delete deferred.cancel; - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - return deferred; - }, - - // Deferred helper - when: function( firstParam ) { - var args = arguments, - i = 0, - length = args.length, - count = length, - deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ? - firstParam : - jQuery.Deferred(); - function resolveFunc( i ) { - return function( value ) { - args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value; - if ( !( --count ) ) { - // Strange bug in FF4: - // Values changed onto the arguments object sometimes end up as undefined values - // outside the $.when method. Cloning the object into a fresh array solves the issue - deferred.resolveWith( deferred, sliceDeferred.call( args, 0 ) ); - } - }; - } - if ( length > 1 ) { - for( ; i < length; i++ ) { - if ( args[ i ] && jQuery.isFunction( args[ i ].promise ) ) { - args[ i ].promise().then( resolveFunc(i), deferred.reject ); - } else { - --count; - } - } - if ( !count ) { - deferred.resolveWith( deferred, args ); - } - } else if ( deferred !== firstParam ) { - deferred.resolveWith( deferred, length ? [ firstParam ] : [] ); - } - return deferred.promise(); - } -}); - - - -jQuery.support = (function() { - - var div = document.createElement( "div" ), - documentElement = document.documentElement, - all, - a, - select, - opt, - input, - marginDiv, - support, - fragment, - body, - bodyStyle, - tds, - events, - eventName, - i, - isSupported; - - // Preliminary tests - div.setAttribute("className", "t"); - div.innerHTML = "
    a"; - - all = div.getElementsByTagName( "*" ); - a = div.getElementsByTagName( "a" )[ 0 ]; - - // Can't get basic test support - if ( !all || !all.length || !a ) { - return {}; - } - - // First batch of supports tests - select = document.createElement( "select" ); - opt = select.appendChild( document.createElement("option") ); - input = div.getElementsByTagName( "input" )[ 0 ]; - - support = { - // IE strips leading whitespace when .innerHTML is used - leadingWhitespace: ( div.firstChild.nodeType === 3 ), - - // Make sure that tbody elements aren't automatically inserted - // IE will insert them into empty tables - tbody: !div.getElementsByTagName( "tbody" ).length, - - // Make sure that link elements get serialized correctly by innerHTML - // This requires a wrapper element in IE - htmlSerialize: !!div.getElementsByTagName( "link" ).length, - - // Get the style information from getAttribute - // (IE uses .cssText instead) - style: /top/.test( a.getAttribute("style") ), - - // Make sure that URLs aren't manipulated - // (IE normalizes it by default) - hrefNormalized: ( a.getAttribute( "href" ) === "/a" ), - - // Make sure that element opacity exists - // (IE uses filter instead) - // Use a regex to work around a WebKit issue. See #5145 - opacity: /^0.55$/.test( a.style.opacity ), - - // Verify style float existence - // (IE uses styleFloat instead of cssFloat) - cssFloat: !!a.style.cssFloat, - - // Make sure that if no value is specified for a checkbox - // that it defaults to "on". - // (WebKit defaults to "" instead) - checkOn: ( input.value === "on" ), - - // Make sure that a selected-by-default option has a working selected property. - // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) - optSelected: opt.selected, - - // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) - getSetAttribute: div.className !== "t", - - // Will be defined later - submitBubbles: true, - changeBubbles: true, - focusinBubbles: false, - deleteExpando: true, - noCloneEvent: true, - inlineBlockNeedsLayout: false, - shrinkWrapBlocks: false, - reliableMarginRight: true - }; - - // Make sure checked status is properly cloned - input.checked = true; - support.noCloneChecked = input.cloneNode( true ).checked; - - // Make sure that the options inside disabled selects aren't marked as disabled - // (WebKit marks them as disabled) - select.disabled = true; - support.optDisabled = !opt.disabled; - - // Test to see if it's possible to delete an expando from an element - // Fails in Internet Explorer - try { - delete div.test; - } catch( e ) { - support.deleteExpando = false; - } - - if ( !div.addEventListener && div.attachEvent && div.fireEvent ) { - div.attachEvent( "onclick", function click() { - // Cloning a node shouldn't copy over any - // bound event handlers (IE does this) - support.noCloneEvent = false; - div.detachEvent( "onclick", click ); - }); - div.cloneNode( true ).fireEvent( "onclick" ); - } - - // Check if a radio maintains it's value - // after being appended to the DOM - input = document.createElement("input"); - input.value = "t"; - input.setAttribute("type", "radio"); - support.radioValue = input.value === "t"; - - input.setAttribute("checked", "checked"); - div.appendChild( input ); - fragment = document.createDocumentFragment(); - fragment.appendChild( div.firstChild ); - - // WebKit doesn't clone checked state correctly in fragments - support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; - - div.innerHTML = ""; - - // Figure out if the W3C box model works as expected - div.style.width = div.style.paddingLeft = "1px"; - - // We use our own, invisible, body - body = document.createElement( "body" ); - bodyStyle = { - visibility: "hidden", - width: 0, - height: 0, - border: 0, - margin: 0, - // Set background to avoid IE crashes when removing (#9028) - background: "none" - }; - for ( i in bodyStyle ) { - body.style[ i ] = bodyStyle[ i ]; - } - body.appendChild( div ); - documentElement.insertBefore( body, documentElement.firstChild ); - - // Check if a disconnected checkbox will retain its checked - // value of true after appended to the DOM (IE6/7) - support.appendChecked = input.checked; - - support.boxModel = div.offsetWidth === 2; - - if ( "zoom" in div.style ) { - // Check if natively block-level elements act like inline-block - // elements when setting their display to 'inline' and giving - // them layout - // (IE < 8 does this) - div.style.display = "inline"; - div.style.zoom = 1; - support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 ); - - // Check if elements with layout shrink-wrap their children - // (IE 6 does this) - div.style.display = ""; - div.innerHTML = "
    "; - support.shrinkWrapBlocks = ( div.offsetWidth !== 2 ); - } - - div.innerHTML = "
    t
    "; - tds = div.getElementsByTagName( "td" ); - - // Check if table cells still have offsetWidth/Height when they are set - // to display:none and there are still other visible table cells in a - // table row; if so, offsetWidth/Height are not reliable for use when - // determining if an element has been hidden directly using - // display:none (it is still safe to use offsets if a parent element is - // hidden; don safety goggles and see bug #4512 for more information). - // (only IE 8 fails this test) - isSupported = ( tds[ 0 ].offsetHeight === 0 ); - - tds[ 0 ].style.display = ""; - tds[ 1 ].style.display = "none"; - - // Check if empty table cells still have offsetWidth/Height - // (IE < 8 fail this test) - support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); - div.innerHTML = ""; - - // Check if div with explicit width and no margin-right incorrectly - // gets computed margin-right based on width of container. For more - // info see bug #3333 - // Fails in WebKit before Feb 2011 nightlies - // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right - if ( document.defaultView && document.defaultView.getComputedStyle ) { - marginDiv = document.createElement( "div" ); - marginDiv.style.width = "0"; - marginDiv.style.marginRight = "0"; - div.appendChild( marginDiv ); - support.reliableMarginRight = - ( parseInt( ( document.defaultView.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0; - } - - // Remove the body element we added - body.innerHTML = ""; - documentElement.removeChild( body ); - - // Technique from Juriy Zaytsev - // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/ - // We only care about the case where non-standard event systems - // are used, namely in IE. Short-circuiting here helps us to - // avoid an eval call (in setAttribute) which can cause CSP - // to go haywire. See: https://developer.mozilla.org/en/Security/CSP - if ( div.attachEvent ) { - for( i in { - submit: 1, - change: 1, - focusin: 1 - } ) { - eventName = "on" + i; - isSupported = ( eventName in div ); - if ( !isSupported ) { - div.setAttribute( eventName, "return;" ); - isSupported = ( typeof div[ eventName ] === "function" ); - } - support[ i + "Bubbles" ] = isSupported; - } - } - - return support; -})(); - -// Keep track of boxModel -jQuery.boxModel = jQuery.support.boxModel; - - - - -var rbrace = /^(?:\{.*\}|\[.*\])$/, - rmultiDash = /([a-z])([A-Z])/g; - -jQuery.extend({ - cache: {}, - - // Please use with caution - uuid: 0, - - // Unique for each copy of jQuery on the page - // Non-digits removed to match rinlinejQuery - expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ), - - // The following elements throw uncatchable exceptions if you - // attempt to add expando properties to them. - noData: { - "embed": true, - // Ban all objects except for Flash (which handle expandos) - "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000", - "applet": true - }, - - hasData: function( elem ) { - elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; - - return !!elem && !isEmptyDataObject( elem ); - }, - - data: function( elem, name, data, pvt /* Internal Use Only */ ) { - if ( !jQuery.acceptData( elem ) ) { - return; - } - - var internalKey = jQuery.expando, getByName = typeof name === "string", thisCache, - - // We have to handle DOM nodes and JS objects differently because IE6-7 - // can't GC object references properly across the DOM-JS boundary - isNode = elem.nodeType, - - // Only DOM nodes need the global jQuery cache; JS object data is - // attached directly to the object so GC can occur automatically - cache = isNode ? jQuery.cache : elem, - - // Only defining an ID for JS objects if its cache already exists allows - // the code to shortcut on the same path as a DOM node with no cache - id = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando; - - // Avoid doing any more work than we need to when trying to get data on an - // object that has no data at all - if ( (!id || (pvt && id && !cache[ id ][ internalKey ])) && getByName && data === undefined ) { - return; - } - - if ( !id ) { - // Only DOM nodes need a new unique ID for each element since their data - // ends up in the global cache - if ( isNode ) { - elem[ jQuery.expando ] = id = ++jQuery.uuid; - } else { - id = jQuery.expando; - } - } - - if ( !cache[ id ] ) { - cache[ id ] = {}; - - // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery - // metadata on plain JS objects when the object is serialized using - // JSON.stringify - if ( !isNode ) { - cache[ id ].toJSON = jQuery.noop; - } - } - - // An object can be passed to jQuery.data instead of a key/value pair; this gets - // shallow copied over onto the existing cache - if ( typeof name === "object" || typeof name === "function" ) { - if ( pvt ) { - cache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name); - } else { - cache[ id ] = jQuery.extend(cache[ id ], name); - } - } - - thisCache = cache[ id ]; - - // Internal jQuery data is stored in a separate object inside the object's data - // cache in order to avoid key collisions between internal data and user-defined - // data - if ( pvt ) { - if ( !thisCache[ internalKey ] ) { - thisCache[ internalKey ] = {}; - } - - thisCache = thisCache[ internalKey ]; - } - - if ( data !== undefined ) { - thisCache[ jQuery.camelCase( name ) ] = data; - } - - // TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should - // not attempt to inspect the internal events object using jQuery.data, as this - // internal data object is undocumented and subject to change. - if ( name === "events" && !thisCache[name] ) { - return thisCache[ internalKey ] && thisCache[ internalKey ].events; - } - - return getByName ? thisCache[ jQuery.camelCase( name ) ] : thisCache; - }, - - removeData: function( elem, name, pvt /* Internal Use Only */ ) { - if ( !jQuery.acceptData( elem ) ) { - return; - } - - var internalKey = jQuery.expando, isNode = elem.nodeType, - - // See jQuery.data for more information - cache = isNode ? jQuery.cache : elem, - - // See jQuery.data for more information - id = isNode ? elem[ jQuery.expando ] : jQuery.expando; - - // If there is already no cache entry for this object, there is no - // purpose in continuing - if ( !cache[ id ] ) { - return; - } - - if ( name ) { - var thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ]; - - if ( thisCache ) { - delete thisCache[ name ]; - - // If there is no data left in the cache, we want to continue - // and let the cache object itself get destroyed - if ( !isEmptyDataObject(thisCache) ) { - return; - } - } - } - - // See jQuery.data for more information - if ( pvt ) { - delete cache[ id ][ internalKey ]; - - // Don't destroy the parent cache unless the internal data object - // had been the only thing left in it - if ( !isEmptyDataObject(cache[ id ]) ) { - return; - } - } - - var internalCache = cache[ id ][ internalKey ]; - - // Browsers that fail expando deletion also refuse to delete expandos on - // the window, but it will allow it on all other JS objects; other browsers - // don't care - if ( jQuery.support.deleteExpando || cache != window ) { - delete cache[ id ]; - } else { - cache[ id ] = null; - } - - // We destroyed the entire user cache at once because it's faster than - // iterating through each key, but we need to continue to persist internal - // data if it existed - if ( internalCache ) { - cache[ id ] = {}; - // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery - // metadata on plain JS objects when the object is serialized using - // JSON.stringify - if ( !isNode ) { - cache[ id ].toJSON = jQuery.noop; - } - - cache[ id ][ internalKey ] = internalCache; - - // Otherwise, we need to eliminate the expando on the node to avoid - // false lookups in the cache for entries that no longer exist - } else if ( isNode ) { - // IE does not allow us to delete expando properties from nodes, - // nor does it have a removeAttribute function on Document nodes; - // we must handle all of these cases - if ( jQuery.support.deleteExpando ) { - delete elem[ jQuery.expando ]; - } else if ( elem.removeAttribute ) { - elem.removeAttribute( jQuery.expando ); - } else { - elem[ jQuery.expando ] = null; - } - } - }, - - // For internal use only. - _data: function( elem, name, data ) { - return jQuery.data( elem, name, data, true ); - }, - - // A method for determining if a DOM node can handle the data expando - acceptData: function( elem ) { - if ( elem.nodeName ) { - var match = jQuery.noData[ elem.nodeName.toLowerCase() ]; - - if ( match ) { - return !(match === true || elem.getAttribute("classid") !== match); - } - } - - return true; - } -}); - -jQuery.fn.extend({ - data: function( key, value ) { - var data = null; - - if ( typeof key === "undefined" ) { - if ( this.length ) { - data = jQuery.data( this[0] ); - - if ( this[0].nodeType === 1 ) { - var attr = this[0].attributes, name; - for ( var i = 0, l = attr.length; i < l; i++ ) { - name = attr[i].name; - - if ( name.indexOf( "data-" ) === 0 ) { - name = jQuery.camelCase( name.substring(5) ); - - dataAttr( this[0], name, data[ name ] ); - } - } - } - } - - return data; - - } else if ( typeof key === "object" ) { - return this.each(function() { - jQuery.data( this, key ); - }); - } - - var parts = key.split("."); - parts[1] = parts[1] ? "." + parts[1] : ""; - - if ( value === undefined ) { - data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]); - - // Try to fetch any internally stored data first - if ( data === undefined && this.length ) { - data = jQuery.data( this[0], key ); - data = dataAttr( this[0], key, data ); - } - - return data === undefined && parts[1] ? - this.data( parts[0] ) : - data; - - } else { - return this.each(function() { - var $this = jQuery( this ), - args = [ parts[0], value ]; - - $this.triggerHandler( "setData" + parts[1] + "!", args ); - jQuery.data( this, key, value ); - $this.triggerHandler( "changeData" + parts[1] + "!", args ); - }); - } - }, - - removeData: function( key ) { - return this.each(function() { - jQuery.removeData( this, key ); - }); - } -}); - -function dataAttr( elem, key, data ) { - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - var name = "data-" + key.replace( rmultiDash, "$1-$2" ).toLowerCase(); - - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - !jQuery.isNaN( data ) ? parseFloat( data ) : - rbrace.test( data ) ? jQuery.parseJSON( data ) : - data; - } catch( e ) {} - - // Make sure we set the data so it isn't changed later - jQuery.data( elem, key, data ); - - } else { - data = undefined; - } - } - - return data; -} - -// TODO: This is a hack for 1.5 ONLY to allow objects with a single toJSON -// property to be considered empty objects; this property always exists in -// order to make sure JSON.stringify does not expose internal metadata -function isEmptyDataObject( obj ) { - for ( var name in obj ) { - if ( name !== "toJSON" ) { - return false; - } - } - - return true; -} - - - - -function handleQueueMarkDefer( elem, type, src ) { - var deferDataKey = type + "defer", - queueDataKey = type + "queue", - markDataKey = type + "mark", - defer = jQuery.data( elem, deferDataKey, undefined, true ); - if ( defer && - ( src === "queue" || !jQuery.data( elem, queueDataKey, undefined, true ) ) && - ( src === "mark" || !jQuery.data( elem, markDataKey, undefined, true ) ) ) { - // Give room for hard-coded callbacks to fire first - // and eventually mark/queue something else on the element - setTimeout( function() { - if ( !jQuery.data( elem, queueDataKey, undefined, true ) && - !jQuery.data( elem, markDataKey, undefined, true ) ) { - jQuery.removeData( elem, deferDataKey, true ); - defer.resolve(); - } - }, 0 ); - } -} - -jQuery.extend({ - - _mark: function( elem, type ) { - if ( elem ) { - type = (type || "fx") + "mark"; - jQuery.data( elem, type, (jQuery.data(elem,type,undefined,true) || 0) + 1, true ); - } - }, - - _unmark: function( force, elem, type ) { - if ( force !== true ) { - type = elem; - elem = force; - force = false; - } - if ( elem ) { - type = type || "fx"; - var key = type + "mark", - count = force ? 0 : ( (jQuery.data( elem, key, undefined, true) || 1 ) - 1 ); - if ( count ) { - jQuery.data( elem, key, count, true ); - } else { - jQuery.removeData( elem, key, true ); - handleQueueMarkDefer( elem, type, "mark" ); - } - } - }, - - queue: function( elem, type, data ) { - if ( elem ) { - type = (type || "fx") + "queue"; - var q = jQuery.data( elem, type, undefined, true ); - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !q || jQuery.isArray(data) ) { - q = jQuery.data( elem, type, jQuery.makeArray(data), true ); - } else { - q.push( data ); - } - } - return q || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - fn = queue.shift(), - defer; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - } - - if ( fn ) { - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift("inprogress"); - } - - fn.call(elem, function() { - jQuery.dequeue(elem, type); - }); - } - - if ( !queue.length ) { - jQuery.removeData( elem, type + "queue", true ); - handleQueueMarkDefer( elem, type, "queue" ); - } - } -}); - -jQuery.fn.extend({ - queue: function( type, data ) { - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - } - - if ( data === undefined ) { - return jQuery.queue( this[0], type ); - } - return this.each(function() { - var queue = jQuery.queue( this, type, data ); - - if ( type === "fx" && queue[0] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - }); - }, - dequeue: function( type ) { - return this.each(function() { - jQuery.dequeue( this, type ); - }); - }, - // Based off of the plugin by Clint Helfers, with permission. - // http://blindsignals.com/index.php/2009/07/jquery-delay/ - delay: function( time, type ) { - time = jQuery.fx ? jQuery.fx.speeds[time] || time : time; - type = type || "fx"; - - return this.queue( type, function() { - var elem = this; - setTimeout(function() { - jQuery.dequeue( elem, type ); - }, time ); - }); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, object ) { - if ( typeof type !== "string" ) { - object = type; - type = undefined; - } - type = type || "fx"; - var defer = jQuery.Deferred(), - elements = this, - i = elements.length, - count = 1, - deferDataKey = type + "defer", - queueDataKey = type + "queue", - markDataKey = type + "mark", - tmp; - function resolve() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - } - while( i-- ) { - if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) || - ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) || - jQuery.data( elements[ i ], markDataKey, undefined, true ) ) && - jQuery.data( elements[ i ], deferDataKey, jQuery._Deferred(), true ) )) { - count++; - tmp.done( resolve ); - } - } - resolve(); - return defer.promise(); - } -}); - - - - -var rclass = /[\n\t\r]/g, - rspace = /\s+/, - rreturn = /\r/g, - rtype = /^(?:button|input)$/i, - rfocusable = /^(?:button|input|object|select|textarea)$/i, - rclickable = /^a(?:rea)?$/i, - rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i, - rinvalidChar = /\:/, - formHook, boolHook; - -jQuery.fn.extend({ - attr: function( name, value ) { - return jQuery.access( this, name, value, true, jQuery.attr ); - }, - - removeAttr: function( name ) { - return this.each(function() { - jQuery.removeAttr( this, name ); - }); - }, - - prop: function( name, value ) { - return jQuery.access( this, name, value, true, jQuery.prop ); - }, - - removeProp: function( name ) { - name = jQuery.propFix[ name ] || name; - return this.each(function() { - // try/catch handles cases where IE balks (such as removing a property on window) - try { - this[ name ] = undefined; - delete this[ name ]; - } catch( e ) {} - }); - }, - - addClass: function( value ) { - if ( jQuery.isFunction( value ) ) { - return this.each(function(i) { - var self = jQuery(this); - self.addClass( value.call(this, i, self.attr("class") || "") ); - }); - } - - if ( value && typeof value === "string" ) { - var classNames = (value || "").split( rspace ); - - for ( var i = 0, l = this.length; i < l; i++ ) { - var elem = this[i]; - - if ( elem.nodeType === 1 ) { - if ( !elem.className ) { - elem.className = value; - - } else { - var className = " " + elem.className + " ", - setClass = elem.className; - - for ( var c = 0, cl = classNames.length; c < cl; c++ ) { - if ( className.indexOf( " " + classNames[c] + " " ) < 0 ) { - setClass += " " + classNames[c]; - } - } - elem.className = jQuery.trim( setClass ); - } - } - } - } - - return this; - }, - - removeClass: function( value ) { - if ( jQuery.isFunction(value) ) { - return this.each(function(i) { - var self = jQuery(this); - self.removeClass( value.call(this, i, self.attr("class")) ); - }); - } - - if ( (value && typeof value === "string") || value === undefined ) { - var classNames = (value || "").split( rspace ); - - for ( var i = 0, l = this.length; i < l; i++ ) { - var elem = this[i]; - - if ( elem.nodeType === 1 && elem.className ) { - if ( value ) { - var className = (" " + elem.className + " ").replace(rclass, " "); - for ( var c = 0, cl = classNames.length; c < cl; c++ ) { - className = className.replace(" " + classNames[c] + " ", " "); - } - elem.className = jQuery.trim( className ); - - } else { - elem.className = ""; - } - } - } - } - - return this; - }, - - toggleClass: function( value, stateVal ) { - var type = typeof value, - isBool = typeof stateVal === "boolean"; - - if ( jQuery.isFunction( value ) ) { - return this.each(function(i) { - var self = jQuery(this); - self.toggleClass( value.call(this, i, self.attr("class"), stateVal), stateVal ); - }); - } - - return this.each(function() { - if ( type === "string" ) { - // toggle individual class names - var className, - i = 0, - self = jQuery( this ), - state = stateVal, - classNames = value.split( rspace ); - - while ( (className = classNames[ i++ ]) ) { - // check each className given, space seperated list - state = isBool ? state : !self.hasClass( className ); - self[ state ? "addClass" : "removeClass" ]( className ); - } - - } else if ( type === "undefined" || type === "boolean" ) { - if ( this.className ) { - // store className if set - jQuery._data( this, "__className__", this.className ); - } - - // toggle whole className - this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; - } - }); - }, - - hasClass: function( selector ) { - var className = " " + selector + " "; - for ( var i = 0, l = this.length; i < l; i++ ) { - if ( (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) { - return true; - } - } - - return false; - }, - - val: function( value ) { - var hooks, ret, - elem = this[0]; - - if ( !arguments.length ) { - if ( elem ) { - hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ]; - - if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { - return ret; - } - - return (elem.value || "").replace(rreturn, ""); - } - - return undefined; - } - - var isFunction = jQuery.isFunction( value ); - - return this.each(function( i ) { - var self = jQuery(this), val; - - if ( this.nodeType !== 1 ) { - return; - } - - if ( isFunction ) { - val = value.call( this, i, self.val() ); - } else { - val = value; - } - - // Treat null/undefined as ""; convert numbers to string - if ( val == null ) { - val = ""; - } else if ( typeof val === "number" ) { - val += ""; - } else if ( jQuery.isArray( val ) ) { - val = jQuery.map(val, function ( value ) { - return value == null ? "" : value + ""; - }); - } - - hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ]; - - // If set returns undefined, fall back to normal setting - if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { - this.value = val; - } - }); - } -}); - -jQuery.extend({ - valHooks: { - option: { - get: function( elem ) { - // attributes.value is undefined in Blackberry 4.7 but - // uses .value. See #6932 - var val = elem.attributes.value; - return !val || val.specified ? elem.value : elem.text; - } - }, - select: { - get: function( elem ) { - var value, - index = elem.selectedIndex, - values = [], - options = elem.options, - one = elem.type === "select-one"; - - // Nothing was selected - if ( index < 0 ) { - return null; - } - - // Loop through all the selected options - for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) { - var option = options[ i ]; - - // Don't return options that are disabled or in a disabled optgroup - if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) && - (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) { - - // Get the specific value for the option - value = jQuery( option ).val(); - - // We don't need an array for one selects - if ( one ) { - return value; - } - - // Multi-Selects return an array - values.push( value ); - } - } - - // Fixes Bug #2551 -- select.val() broken in IE after form.reset() - if ( one && !values.length && options.length ) { - return jQuery( options[ index ] ).val(); - } - - return values; - }, - - set: function( elem, value ) { - var values = jQuery.makeArray( value ); - - jQuery(elem).find("option").each(function() { - this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0; - }); - - if ( !values.length ) { - elem.selectedIndex = -1; - } - return values; - } - } - }, - - attrFn: { - val: true, - css: true, - html: true, - text: true, - data: true, - width: true, - height: true, - offset: true - }, - - attrFix: { - // Always normalize to ensure hook usage - tabindex: "tabIndex" - }, - - attr: function( elem, name, value, pass ) { - var nType = elem.nodeType; - - // don't get/set attributes on text, comment and attribute nodes - if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { - return undefined; - } - - if ( pass && name in jQuery.attrFn ) { - return jQuery( elem )[ name ]( value ); - } - - // Fallback to prop when attributes are not supported - if ( !("getAttribute" in elem) ) { - return jQuery.prop( elem, name, value ); - } - - var ret, hooks, - notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); - - // Normalize the name if needed - name = notxml && jQuery.attrFix[ name ] || name; - - hooks = jQuery.attrHooks[ name ]; - - if ( !hooks ) { - // Use boolHook for boolean attributes - if ( rboolean.test( name ) && - (typeof value === "boolean" || value === undefined || value.toLowerCase() === name.toLowerCase()) ) { - - hooks = boolHook; - - // Use formHook for forms and if the name contains certain characters - } else if ( formHook && (jQuery.nodeName( elem, "form" ) || rinvalidChar.test( name )) ) { - hooks = formHook; - } - } - - if ( value !== undefined ) { - - if ( value === null ) { - jQuery.removeAttr( elem, name ); - return undefined; - - } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) { - return ret; - - } else { - elem.setAttribute( name, "" + value ); - return value; - } - - } else if ( hooks && "get" in hooks && notxml ) { - return hooks.get( elem, name ); - - } else { - - ret = elem.getAttribute( name ); - - // Non-existent attributes return null, we normalize to undefined - return ret === null ? - undefined : - ret; - } - }, - - removeAttr: function( elem, name ) { - var propName; - if ( elem.nodeType === 1 ) { - name = jQuery.attrFix[ name ] || name; - - if ( jQuery.support.getSetAttribute ) { - // Use removeAttribute in browsers that support it - elem.removeAttribute( name ); - } else { - jQuery.attr( elem, name, "" ); - elem.removeAttributeNode( elem.getAttributeNode( name ) ); - } - - // Set corresponding property to false for boolean attributes - if ( rboolean.test( name ) && (propName = jQuery.propFix[ name ] || name) in elem ) { - elem[ propName ] = false; - } - } - }, - - attrHooks: { - type: { - set: function( elem, value ) { - // We can't allow the type property to be changed (since it causes problems in IE) - if ( rtype.test( elem.nodeName ) && elem.parentNode ) { - jQuery.error( "type property can't be changed" ); - } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { - // Setting the type on a radio button after the value resets the value in IE6-9 - // Reset value to it's default in case type is set after value - // This is for element creation - var val = elem.value; - elem.setAttribute( "type", value ); - if ( val ) { - elem.value = val; - } - return value; - } - } - }, - tabIndex: { - get: function( elem ) { - // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set - // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ - var attributeNode = elem.getAttributeNode("tabIndex"); - - return attributeNode && attributeNode.specified ? - parseInt( attributeNode.value, 10 ) : - rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? - 0 : - undefined; - } - } - }, - - propFix: { - tabindex: "tabIndex", - readonly: "readOnly", - "for": "htmlFor", - "class": "className", - maxlength: "maxLength", - cellspacing: "cellSpacing", - cellpadding: "cellPadding", - rowspan: "rowSpan", - colspan: "colSpan", - usemap: "useMap", - frameborder: "frameBorder", - contenteditable: "contentEditable" - }, - - prop: function( elem, name, value ) { - var nType = elem.nodeType; - - // don't get/set properties on text, comment and attribute nodes - if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { - return undefined; - } - - var ret, hooks, - notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); - - // Try to normalize/fix the name - name = notxml && jQuery.propFix[ name ] || name; - - hooks = jQuery.propHooks[ name ]; - - if ( value !== undefined ) { - if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { - return ret; - - } else { - return (elem[ name ] = value); - } - - } else { - if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== undefined ) { - return ret; - - } else { - return elem[ name ]; - } - } - }, - - propHooks: {} -}); - -// Hook for boolean attributes -boolHook = { - get: function( elem, name ) { - // Align boolean attributes with corresponding properties - return elem[ jQuery.propFix[ name ] || name ] ? - name.toLowerCase() : - undefined; - }, - set: function( elem, value, name ) { - var propName; - if ( value === false ) { - // Remove boolean attributes when set to false - jQuery.removeAttr( elem, name ); - } else { - // value is true since we know at this point it's type boolean and not false - // Set boolean attributes to the same name and set the DOM property - propName = jQuery.propFix[ name ] || name; - if ( propName in elem ) { - // Only set the IDL specifically if it already exists on the element - elem[ propName ] = value; - } - - elem.setAttribute( name, name.toLowerCase() ); - } - return name; - } -}; - -// Use the value property for back compat -// Use the formHook for button elements in IE6/7 (#1954) -jQuery.attrHooks.value = { - get: function( elem, name ) { - if ( formHook && jQuery.nodeName( elem, "button" ) ) { - return formHook.get( elem, name ); - } - return elem.value; - }, - set: function( elem, value, name ) { - if ( formHook && jQuery.nodeName( elem, "button" ) ) { - return formHook.set( elem, value, name ); - } - // Does not return so that setAttribute is also used - elem.value = value; - } -}; - -// IE6/7 do not support getting/setting some attributes with get/setAttribute -if ( !jQuery.support.getSetAttribute ) { - - // propFix is more comprehensive and contains all fixes - jQuery.attrFix = jQuery.propFix; - - // Use this for any attribute on a form in IE6/7 - formHook = jQuery.attrHooks.name = jQuery.valHooks.button = { - get: function( elem, name ) { - var ret; - ret = elem.getAttributeNode( name ); - // Return undefined if nodeValue is empty string - return ret && ret.nodeValue !== "" ? - ret.nodeValue : - undefined; - }, - set: function( elem, value, name ) { - // Check form objects in IE (multiple bugs related) - // Only use nodeValue if the attribute node exists on the form - var ret = elem.getAttributeNode( name ); - if ( ret ) { - ret.nodeValue = value; - return value; - } - } - }; - - // Set width and height to auto instead of 0 on empty string( Bug #8150 ) - // This is for removals - jQuery.each([ "width", "height" ], function( i, name ) { - jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { - set: function( elem, value ) { - if ( value === "" ) { - elem.setAttribute( name, "auto" ); - return value; - } - } - }); - }); -} - - -// Some attributes require a special call on IE -if ( !jQuery.support.hrefNormalized ) { - jQuery.each([ "href", "src", "width", "height" ], function( i, name ) { - jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], { - get: function( elem ) { - var ret = elem.getAttribute( name, 2 ); - return ret === null ? undefined : ret; - } - }); - }); -} - -if ( !jQuery.support.style ) { - jQuery.attrHooks.style = { - get: function( elem ) { - // Return undefined in the case of empty string - // Normalize to lowercase since IE uppercases css property names - return elem.style.cssText.toLowerCase() || undefined; - }, - set: function( elem, value ) { - return (elem.style.cssText = "" + value); - } - }; -} - -// Safari mis-reports the default selected property of an option -// Accessing the parent's selectedIndex property fixes it -if ( !jQuery.support.optSelected ) { - jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, { - get: function( elem ) { - var parent = elem.parentNode; - - if ( parent ) { - parent.selectedIndex; - - // Make sure that it also works with optgroups, see #5701 - if ( parent.parentNode ) { - parent.parentNode.selectedIndex; - } - } - } - }); -} - -// Radios and checkboxes getter/setter -if ( !jQuery.support.checkOn ) { - jQuery.each([ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = { - get: function( elem ) { - // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified - return elem.getAttribute("value") === null ? "on" : elem.value; - } - }; - }); -} -jQuery.each([ "radio", "checkbox" ], function() { - jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], { - set: function( elem, value ) { - if ( jQuery.isArray( value ) ) { - return (elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0); - } - } - }); -}); - - - - -var hasOwn = Object.prototype.hasOwnProperty, - rnamespaces = /\.(.*)$/, - rformElems = /^(?:textarea|input|select)$/i, - rperiod = /\./g, - rspaces = / /g, - rescape = /[^\w\s.|`]/g, - fcleanup = function( nm ) { - return nm.replace(rescape, "\\$&"); - }; - -/* - * A number of helper functions used for managing events. - * Many of the ideas behind this code originated from - * Dean Edwards' addEvent library. - */ -jQuery.event = { - - // Bind an event to an element - // Original by Dean Edwards - add: function( elem, types, handler, data ) { - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - if ( handler === false ) { - handler = returnFalse; - } else if ( !handler ) { - // Fixes bug #7229. Fix recommended by jdalton - return; - } - - var handleObjIn, handleObj; - - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - } - - // Make sure that the function being executed has a unique ID - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure - var elemData = jQuery._data( elem ); - - // If no elemData is found then we must be trying to bind to one of the - // banned noData elements - if ( !elemData ) { - return; - } - - var events = elemData.events, - eventHandle = elemData.handle; - - if ( !events ) { - elemData.events = events = {}; - } - - if ( !eventHandle ) { - elemData.handle = eventHandle = function( e ) { - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ? - jQuery.event.handle.apply( eventHandle.elem, arguments ) : - undefined; - }; - } - - // Add elem as a property of the handle function - // This is to prevent a memory leak with non-native events in IE. - eventHandle.elem = elem; - - // Handle multiple events separated by a space - // jQuery(...).bind("mouseover mouseout", fn); - types = types.split(" "); - - var type, i = 0, namespaces; - - while ( (type = types[ i++ ]) ) { - handleObj = handleObjIn ? - jQuery.extend({}, handleObjIn) : - { handler: handler, data: data }; - - // Namespaced event handlers - if ( type.indexOf(".") > -1 ) { - namespaces = type.split("."); - type = namespaces.shift(); - handleObj.namespace = namespaces.slice(0).sort().join("."); - - } else { - namespaces = []; - handleObj.namespace = ""; - } - - handleObj.type = type; - if ( !handleObj.guid ) { - handleObj.guid = handler.guid; - } - - // Get the current list of functions bound to this event - var handlers = events[ type ], - special = jQuery.event.special[ type ] || {}; - - // Init the event handler queue - if ( !handlers ) { - handlers = events[ type ] = []; - - // Check for a special event handler - // Only use addEventListener/attachEvent if the special - // events handler returns false - if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - // Bind the global event handler to the element - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle, false ); - - } else if ( elem.attachEvent ) { - elem.attachEvent( "on" + type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add the function to the element's handler list - handlers.push( handleObj ); - - // Keep track of which events have been used, for event optimization - jQuery.event.global[ type ] = true; - } - - // Nullify elem to prevent memory leaks in IE - elem = null; - }, - - global: {}, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, pos ) { - // don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - if ( handler === false ) { - handler = returnFalse; - } - - var ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType, - elemData = jQuery.hasData( elem ) && jQuery._data( elem ), - events = elemData && elemData.events; - - if ( !elemData || !events ) { - return; - } - - // types is actually an event object here - if ( types && types.type ) { - handler = types.handler; - types = types.type; - } - - // Unbind all events for the element - if ( !types || typeof types === "string" && types.charAt(0) === "." ) { - types = types || ""; - - for ( type in events ) { - jQuery.event.remove( elem, type + types ); - } - - return; - } - - // Handle multiple events separated by a space - // jQuery(...).unbind("mouseover mouseout", fn); - types = types.split(" "); - - while ( (type = types[ i++ ]) ) { - origType = type; - handleObj = null; - all = type.indexOf(".") < 0; - namespaces = []; - - if ( !all ) { - // Namespaced event handlers - namespaces = type.split("."); - type = namespaces.shift(); - - namespace = new RegExp("(^|\\.)" + - jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)"); - } - - eventType = events[ type ]; - - if ( !eventType ) { - continue; - } - - if ( !handler ) { - for ( j = 0; j < eventType.length; j++ ) { - handleObj = eventType[ j ]; - - if ( all || namespace.test( handleObj.namespace ) ) { - jQuery.event.remove( elem, origType, handleObj.handler, j ); - eventType.splice( j--, 1 ); - } - } - - continue; - } - - special = jQuery.event.special[ type ] || {}; - - for ( j = pos || 0; j < eventType.length; j++ ) { - handleObj = eventType[ j ]; - - if ( handler.guid === handleObj.guid ) { - // remove the given handler for the given type - if ( all || namespace.test( handleObj.namespace ) ) { - if ( pos == null ) { - eventType.splice( j--, 1 ); - } - - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - - if ( pos != null ) { - break; - } - } - } - - // remove generic event handler if no more handlers exist - if ( eventType.length === 0 || pos != null && eventType.length === 1 ) { - if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) { - jQuery.removeEvent( elem, type, elemData.handle ); - } - - ret = null; - delete events[ type ]; - } - } - - // Remove the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - var handle = elemData.handle; - if ( handle ) { - handle.elem = null; - } - - delete elemData.events; - delete elemData.handle; - - if ( jQuery.isEmptyObject( elemData ) ) { - jQuery.removeData( elem, undefined, true ); - } - } - }, - - // Events that are safe to short-circuit if no handlers are attached. - // Native DOM events should not be added, they may have inline handlers. - customEvent: { - "getData": true, - "setData": true, - "changeData": true - }, - - trigger: function( event, data, elem, onlyHandlers ) { - // Event object or event type - var type = event.type || event, - namespaces = [], - exclusive; - - if ( type.indexOf("!") >= 0 ) { - // Exclusive events trigger only for the exact event (no namespaces) - type = type.slice(0, -1); - exclusive = true; - } - - if ( type.indexOf(".") >= 0 ) { - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split("."); - type = namespaces.shift(); - namespaces.sort(); - } - - if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) { - // No jQuery handlers for this event type, and it can't have inline handlers - return; - } - - // Caller can pass in an Event, Object, or just an event type string - event = typeof event === "object" ? - // jQuery.Event object - event[ jQuery.expando ] ? event : - // Object literal - new jQuery.Event( type, event ) : - // Just the event type (string) - new jQuery.Event( type ); - - event.type = type; - event.exclusive = exclusive; - event.namespace = namespaces.join("."); - event.namespace_re = new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)"); - - // triggerHandler() and global events don't bubble or run the default action - if ( onlyHandlers || !elem ) { - event.preventDefault(); - event.stopPropagation(); - } - - // Handle a global trigger - if ( !elem ) { - // TODO: Stop taunting the data cache; remove global events and always attach to document - jQuery.each( jQuery.cache, function() { - // internalKey variable is just used to make it easier to find - // and potentially change this stuff later; currently it just - // points to jQuery.expando - var internalKey = jQuery.expando, - internalCache = this[ internalKey ]; - if ( internalCache && internalCache.events && internalCache.events[ type ] ) { - jQuery.event.trigger( event, data, internalCache.handle.elem ); - } - }); - return; - } - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // Clean up the event in case it is being reused - event.result = undefined; - event.target = elem; - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data ? jQuery.makeArray( data ) : []; - data.unshift( event ); - - var cur = elem, - // IE doesn't like method names with a colon (#3533, #8272) - ontype = type.indexOf(":") < 0 ? "on" + type : ""; - - // Fire event on the current element, then bubble up the DOM tree - do { - var handle = jQuery._data( cur, "handle" ); - - event.currentTarget = cur; - if ( handle ) { - handle.apply( cur, data ); - } - - // Trigger an inline bound script - if ( ontype && jQuery.acceptData( cur ) && cur[ ontype ] && cur[ ontype ].apply( cur, data ) === false ) { - event.result = false; - event.preventDefault(); - } - - // Bubble up to document, then to window - cur = cur.parentNode || cur.ownerDocument || cur === event.target.ownerDocument && window; - } while ( cur && !event.isPropagationStopped() ); - - // If nobody prevented the default action, do it now - if ( !event.isDefaultPrevented() ) { - var old, - special = jQuery.event.special[ type ] || {}; - - if ( (!special._default || special._default.call( elem.ownerDocument, event ) === false) && - !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name name as the event. - // Can't use an .isFunction)() check here because IE6/7 fails that test. - // IE<9 dies on focus to hidden element (#1486), may want to revisit a try/catch. - try { - if ( ontype && elem[ type ] ) { - // Don't re-trigger an onFOO event when we call its FOO() method - old = elem[ ontype ]; - - if ( old ) { - elem[ ontype ] = null; - } - - jQuery.event.triggered = type; - elem[ type ](); - } - } catch ( ieError ) {} - - if ( old ) { - elem[ ontype ] = old; - } - - jQuery.event.triggered = undefined; - } - } - - return event.result; - }, - - handle: function( event ) { - event = jQuery.event.fix( event || window.event ); - // Snapshot the handlers list since a called handler may add/remove events. - var handlers = ((jQuery._data( this, "events" ) || {})[ event.type ] || []).slice(0), - run_all = !event.exclusive && !event.namespace, - args = Array.prototype.slice.call( arguments, 0 ); - - // Use the fix-ed Event rather than the (read-only) native event - args[0] = event; - event.currentTarget = this; - - for ( var j = 0, l = handlers.length; j < l; j++ ) { - var handleObj = handlers[ j ]; - - // Triggered event must 1) be non-exclusive and have no namespace, or - // 2) have namespace(s) a subset or equal to those in the bound event. - if ( run_all || event.namespace_re.test( handleObj.namespace ) ) { - // Pass in a reference to the handler function itself - // So that we can later remove it - event.handler = handleObj.handler; - event.data = handleObj.data; - event.handleObj = handleObj; - - var ret = handleObj.handler.apply( this, args ); - - if ( ret !== undefined ) { - event.result = ret; - if ( ret === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - - if ( event.isImmediatePropagationStopped() ) { - break; - } - } - } - return event.result; - }, - - props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "), - - fix: function( event ) { - if ( event[ jQuery.expando ] ) { - return event; - } - - // store a copy of the original event object - // and "clone" to set read-only properties - var originalEvent = event; - event = jQuery.Event( originalEvent ); - - for ( var i = this.props.length, prop; i; ) { - prop = this.props[ --i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Fix target property, if necessary - if ( !event.target ) { - // Fixes #1925 where srcElement might not be defined either - event.target = event.srcElement || document; - } - - // check if target is a textnode (safari) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - // Add relatedTarget, if necessary - if ( !event.relatedTarget && event.fromElement ) { - event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement; - } - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && event.clientX != null ) { - var eventDocument = event.target.ownerDocument || document, - doc = eventDocument.documentElement, - body = eventDocument.body; - - event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0); - event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0); - } - - // Add which for key events - if ( event.which == null && (event.charCode != null || event.keyCode != null) ) { - event.which = event.charCode != null ? event.charCode : event.keyCode; - } - - // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs) - if ( !event.metaKey && event.ctrlKey ) { - event.metaKey = event.ctrlKey; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && event.button !== undefined ) { - event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) )); - } - - return event; - }, - - // Deprecated, use jQuery.guid instead - guid: 1E8, - - // Deprecated, use jQuery.proxy instead - proxy: jQuery.proxy, - - special: { - ready: { - // Make sure the ready event is setup - setup: jQuery.bindReady, - teardown: jQuery.noop - }, - - live: { - add: function( handleObj ) { - jQuery.event.add( this, - liveConvert( handleObj.origType, handleObj.selector ), - jQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) ); - }, - - remove: function( handleObj ) { - jQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj ); - } - }, - - beforeunload: { - setup: function( data, namespaces, eventHandle ) { - // We only want to do this special case on windows - if ( jQuery.isWindow( this ) ) { - this.onbeforeunload = eventHandle; - } - }, - - teardown: function( namespaces, eventHandle ) { - if ( this.onbeforeunload === eventHandle ) { - this.onbeforeunload = null; - } - } - } - } -}; - -jQuery.removeEvent = document.removeEventListener ? - function( elem, type, handle ) { - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle, false ); - } - } : - function( elem, type, handle ) { - if ( elem.detachEvent ) { - elem.detachEvent( "on" + type, handle ); - } - }; - -jQuery.Event = function( src, props ) { - // Allow instantiation without the 'new' keyword - if ( !this.preventDefault ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false || - src.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // timeStamp is buggy for some events on Firefox(#3843) - // So we won't rely on the native value - this.timeStamp = jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -function returnFalse() { - return false; -} -function returnTrue() { - return true; -} - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - preventDefault: function() { - this.isDefaultPrevented = returnTrue; - - var e = this.originalEvent; - if ( !e ) { - return; - } - - // if preventDefault exists run it on the original event - if ( e.preventDefault ) { - e.preventDefault(); - - // otherwise set the returnValue property of the original event to false (IE) - } else { - e.returnValue = false; - } - }, - stopPropagation: function() { - this.isPropagationStopped = returnTrue; - - var e = this.originalEvent; - if ( !e ) { - return; - } - // if stopPropagation exists run it on the original event - if ( e.stopPropagation ) { - e.stopPropagation(); - } - // otherwise set the cancelBubble property of the original event to true (IE) - e.cancelBubble = true; - }, - stopImmediatePropagation: function() { - this.isImmediatePropagationStopped = returnTrue; - this.stopPropagation(); - }, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse -}; - -// Checks if an event happened on an element within another element -// Used in jQuery.event.special.mouseenter and mouseleave handlers -var withinElement = function( event ) { - // Check if mouse(over|out) are still within the same parent element - var parent = event.relatedTarget; - - // set the correct event type - event.type = event.data; - - // Firefox sometimes assigns relatedTarget a XUL element - // which we cannot access the parentNode property of - try { - - // Chrome does something similar, the parentNode property - // can be accessed but is null. - if ( parent && parent !== document && !parent.parentNode ) { - return; - } - - // Traverse up the tree - while ( parent && parent !== this ) { - parent = parent.parentNode; - } - - if ( parent !== this ) { - // handle event if we actually just moused on to a non sub-element - jQuery.event.handle.apply( this, arguments ); - } - - // assuming we've left the element since we most likely mousedover a xul element - } catch(e) { } -}, - -// In case of event delegation, we only need to rename the event.type, -// liveHandler will take care of the rest. -delegate = function( event ) { - event.type = event.data; - jQuery.event.handle.apply( this, arguments ); -}; - -// Create mouseenter and mouseleave events -jQuery.each({ - mouseenter: "mouseover", - mouseleave: "mouseout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - setup: function( data ) { - jQuery.event.add( this, fix, data && data.selector ? delegate : withinElement, orig ); - }, - teardown: function( data ) { - jQuery.event.remove( this, fix, data && data.selector ? delegate : withinElement ); - } - }; -}); - -// submit delegation -if ( !jQuery.support.submitBubbles ) { - - jQuery.event.special.submit = { - setup: function( data, namespaces ) { - if ( !jQuery.nodeName( this, "form" ) ) { - jQuery.event.add(this, "click.specialSubmit", function( e ) { - var elem = e.target, - type = elem.type; - - if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) { - trigger( "submit", this, arguments ); - } - }); - - jQuery.event.add(this, "keypress.specialSubmit", function( e ) { - var elem = e.target, - type = elem.type; - - if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) { - trigger( "submit", this, arguments ); - } - }); - - } else { - return false; - } - }, - - teardown: function( namespaces ) { - jQuery.event.remove( this, ".specialSubmit" ); - } - }; - -} - -// change delegation, happens here so we have bind. -if ( !jQuery.support.changeBubbles ) { - - var changeFilters, - - getVal = function( elem ) { - var type = elem.type, val = elem.value; - - if ( type === "radio" || type === "checkbox" ) { - val = elem.checked; - - } else if ( type === "select-multiple" ) { - val = elem.selectedIndex > -1 ? - jQuery.map( elem.options, function( elem ) { - return elem.selected; - }).join("-") : - ""; - - } else if ( jQuery.nodeName( elem, "select" ) ) { - val = elem.selectedIndex; - } - - return val; - }, - - testChange = function testChange( e ) { - var elem = e.target, data, val; - - if ( !rformElems.test( elem.nodeName ) || elem.readOnly ) { - return; - } - - data = jQuery._data( elem, "_change_data" ); - val = getVal(elem); - - // the current data will be also retrieved by beforeactivate - if ( e.type !== "focusout" || elem.type !== "radio" ) { - jQuery._data( elem, "_change_data", val ); - } - - if ( data === undefined || val === data ) { - return; - } - - if ( data != null || val ) { - e.type = "change"; - e.liveFired = undefined; - jQuery.event.trigger( e, arguments[1], elem ); - } - }; - - jQuery.event.special.change = { - filters: { - focusout: testChange, - - beforedeactivate: testChange, - - click: function( e ) { - var elem = e.target, type = jQuery.nodeName( elem, "input" ) ? elem.type : ""; - - if ( type === "radio" || type === "checkbox" || jQuery.nodeName( elem, "select" ) ) { - testChange.call( this, e ); - } - }, - - // Change has to be called before submit - // Keydown will be called before keypress, which is used in submit-event delegation - keydown: function( e ) { - var elem = e.target, type = jQuery.nodeName( elem, "input" ) ? elem.type : ""; - - if ( (e.keyCode === 13 && !jQuery.nodeName( elem, "textarea" ) ) || - (e.keyCode === 32 && (type === "checkbox" || type === "radio")) || - type === "select-multiple" ) { - testChange.call( this, e ); - } - }, - - // Beforeactivate happens also before the previous element is blurred - // with this event you can't trigger a change event, but you can store - // information - beforeactivate: function( e ) { - var elem = e.target; - jQuery._data( elem, "_change_data", getVal(elem) ); - } - }, - - setup: function( data, namespaces ) { - if ( this.type === "file" ) { - return false; - } - - for ( var type in changeFilters ) { - jQuery.event.add( this, type + ".specialChange", changeFilters[type] ); - } - - return rformElems.test( this.nodeName ); - }, - - teardown: function( namespaces ) { - jQuery.event.remove( this, ".specialChange" ); - - return rformElems.test( this.nodeName ); - } - }; - - changeFilters = jQuery.event.special.change.filters; - - // Handle when the input is .focus()'d - changeFilters.focus = changeFilters.beforeactivate; -} - -function trigger( type, elem, args ) { - // Piggyback on a donor event to simulate a different one. - // Fake originalEvent to avoid donor's stopPropagation, but if the - // simulated event prevents default then we do the same on the donor. - // Don't pass args or remember liveFired; they apply to the donor event. - var event = jQuery.extend( {}, args[ 0 ] ); - event.type = type; - event.originalEvent = {}; - event.liveFired = undefined; - jQuery.event.handle.call( elem, event ); - if ( event.isDefaultPrevented() ) { - args[ 0 ].preventDefault(); - } -} - -// Create "bubbling" focus and blur events -if ( !jQuery.support.focusinBubbles ) { - jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler while someone wants focusin/focusout - var attaches = 0; - - jQuery.event.special[ fix ] = { - setup: function() { - if ( attaches++ === 0 ) { - document.addEventListener( orig, handler, true ); - } - }, - teardown: function() { - if ( --attaches === 0 ) { - document.removeEventListener( orig, handler, true ); - } - } - }; - - function handler( donor ) { - // Donor event is always a native one; fix it and switch its type. - // Let focusin/out handler cancel the donor focus/blur event. - var e = jQuery.event.fix( donor ); - e.type = fix; - e.originalEvent = {}; - jQuery.event.trigger( e, null, e.target ); - if ( e.isDefaultPrevented() ) { - donor.preventDefault(); - } - } - }); -} - -jQuery.each(["bind", "one"], function( i, name ) { - jQuery.fn[ name ] = function( type, data, fn ) { - var handler; - - // Handle object literals - if ( typeof type === "object" ) { - for ( var key in type ) { - this[ name ](key, data, type[key], fn); - } - return this; - } - - if ( arguments.length === 2 || data === false ) { - fn = data; - data = undefined; - } - - if ( name === "one" ) { - handler = function( event ) { - jQuery( this ).unbind( event, handler ); - return fn.apply( this, arguments ); - }; - handler.guid = fn.guid || jQuery.guid++; - } else { - handler = fn; - } - - if ( type === "unload" && name !== "one" ) { - this.one( type, data, fn ); - - } else { - for ( var i = 0, l = this.length; i < l; i++ ) { - jQuery.event.add( this[i], type, handler, data ); - } - } - - return this; - }; -}); - -jQuery.fn.extend({ - unbind: function( type, fn ) { - // Handle object literals - if ( typeof type === "object" && !type.preventDefault ) { - for ( var key in type ) { - this.unbind(key, type[key]); - } - - } else { - for ( var i = 0, l = this.length; i < l; i++ ) { - jQuery.event.remove( this[i], type, fn ); - } - } - - return this; - }, - - delegate: function( selector, types, data, fn ) { - return this.live( types, data, fn, selector ); - }, - - undelegate: function( selector, types, fn ) { - if ( arguments.length === 0 ) { - return this.unbind( "live" ); - - } else { - return this.die( types, null, fn, selector ); - } - }, - - trigger: function( type, data ) { - return this.each(function() { - jQuery.event.trigger( type, data, this ); - }); - }, - - triggerHandler: function( type, data ) { - if ( this[0] ) { - return jQuery.event.trigger( type, data, this[0], true ); - } - }, - - toggle: function( fn ) { - // Save reference to arguments for access in closure - var args = arguments, - guid = fn.guid || jQuery.guid++, - i = 0, - toggler = function( event ) { - // Figure out which function to execute - var lastToggle = ( jQuery.data( this, "lastToggle" + fn.guid ) || 0 ) % i; - jQuery.data( this, "lastToggle" + fn.guid, lastToggle + 1 ); - - // Make sure that clicks stop - event.preventDefault(); - - // and execute the function - return args[ lastToggle ].apply( this, arguments ) || false; - }; - - // link all the functions, so any of them can unbind this click handler - toggler.guid = guid; - while ( i < args.length ) { - args[ i++ ].guid = guid; - } - - return this.click( toggler ); - }, - - hover: function( fnOver, fnOut ) { - return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); - } -}); - -var liveMap = { - focus: "focusin", - blur: "focusout", - mouseenter: "mouseover", - mouseleave: "mouseout" -}; - -jQuery.each(["live", "die"], function( i, name ) { - jQuery.fn[ name ] = function( types, data, fn, origSelector /* Internal Use Only */ ) { - var type, i = 0, match, namespaces, preType, - selector = origSelector || this.selector, - context = origSelector ? this : jQuery( this.context ); - - if ( typeof types === "object" && !types.preventDefault ) { - for ( var key in types ) { - context[ name ]( key, data, types[key], selector ); - } - - return this; - } - - if ( name === "die" && !types && - origSelector && origSelector.charAt(0) === "." ) { - - context.unbind( origSelector ); - - return this; - } - - if ( data === false || jQuery.isFunction( data ) ) { - fn = data || returnFalse; - data = undefined; - } - - types = (types || "").split(" "); - - while ( (type = types[ i++ ]) != null ) { - match = rnamespaces.exec( type ); - namespaces = ""; - - if ( match ) { - namespaces = match[0]; - type = type.replace( rnamespaces, "" ); - } - - if ( type === "hover" ) { - types.push( "mouseenter" + namespaces, "mouseleave" + namespaces ); - continue; - } - - preType = type; - - if ( liveMap[ type ] ) { - types.push( liveMap[ type ] + namespaces ); - type = type + namespaces; - - } else { - type = (liveMap[ type ] || type) + namespaces; - } - - if ( name === "live" ) { - // bind live handler - for ( var j = 0, l = context.length; j < l; j++ ) { - jQuery.event.add( context[j], "live." + liveConvert( type, selector ), - { data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } ); - } - - } else { - // unbind live handler - context.unbind( "live." + liveConvert( type, selector ), fn ); - } - } - - return this; - }; -}); - -function liveHandler( event ) { - var stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret, - elems = [], - selectors = [], - events = jQuery._data( this, "events" ); - - // Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled elements in IE (#6911) - if ( event.liveFired === this || !events || !events.live || event.target.disabled || event.button && event.type === "click" ) { - return; - } - - if ( event.namespace ) { - namespace = new RegExp("(^|\\.)" + event.namespace.split(".").join("\\.(?:.*\\.)?") + "(\\.|$)"); - } - - event.liveFired = this; - - var live = events.live.slice(0); - - for ( j = 0; j < live.length; j++ ) { - handleObj = live[j]; - - if ( handleObj.origType.replace( rnamespaces, "" ) === event.type ) { - selectors.push( handleObj.selector ); - - } else { - live.splice( j--, 1 ); - } - } - - match = jQuery( event.target ).closest( selectors, event.currentTarget ); - - for ( i = 0, l = match.length; i < l; i++ ) { - close = match[i]; - - for ( j = 0; j < live.length; j++ ) { - handleObj = live[j]; - - if ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) && !close.elem.disabled ) { - elem = close.elem; - related = null; - - // Those two events require additional checking - if ( handleObj.preType === "mouseenter" || handleObj.preType === "mouseleave" ) { - event.type = handleObj.preType; - related = jQuery( event.relatedTarget ).closest( handleObj.selector )[0]; - - // Make sure not to accidentally match a child element with the same selector - if ( related && jQuery.contains( elem, related ) ) { - related = elem; - } - } - - if ( !related || related !== elem ) { - elems.push({ elem: elem, handleObj: handleObj, level: close.level }); - } - } - } - } - - for ( i = 0, l = elems.length; i < l; i++ ) { - match = elems[i]; - - if ( maxLevel && match.level > maxLevel ) { - break; - } - - event.currentTarget = match.elem; - event.data = match.handleObj.data; - event.handleObj = match.handleObj; - - ret = match.handleObj.origHandler.apply( match.elem, arguments ); - - if ( ret === false || event.isPropagationStopped() ) { - maxLevel = match.level; - - if ( ret === false ) { - stop = false; - } - if ( event.isImmediatePropagationStopped() ) { - break; - } - } - } - - return stop; -} - -function liveConvert( type, selector ) { - return (type && type !== "*" ? type + "." : "") + selector.replace(rperiod, "`").replace(rspaces, "&"); -} - -jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " + - "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + - "change select submit keydown keypress keyup error").split(" "), function( i, name ) { - - // Handle event binding - jQuery.fn[ name ] = function( data, fn ) { - if ( fn == null ) { - fn = data; - data = null; - } - - return arguments.length > 0 ? - this.bind( name, data, fn ) : - this.trigger( name ); - }; - - if ( jQuery.attrFn ) { - jQuery.attrFn[ name ] = true; - } -}); - - - -/*! - * Sizzle CSS Selector Engine - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ -(function(){ - -var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, - done = 0, - toString = Object.prototype.toString, - hasDuplicate = false, - baseHasDuplicate = true, - rBackslash = /\\/g, - rNonWord = /\W/; - -// Here we check if the JavaScript engine is using some sort of -// optimization where it does not always call our comparision -// function. If that is the case, discard the hasDuplicate value. -// Thus far that includes Google Chrome. -[0, 0].sort(function() { - baseHasDuplicate = false; - return 0; -}); - -var Sizzle = function( selector, context, results, seed ) { - results = results || []; - context = context || document; - - var origContext = context; - - if ( context.nodeType !== 1 && context.nodeType !== 9 ) { - return []; - } - - if ( !selector || typeof selector !== "string" ) { - return results; - } - - var m, set, checkSet, extra, ret, cur, pop, i, - prune = true, - contextXML = Sizzle.isXML( context ), - parts = [], - soFar = selector; - - // Reset the position of the chunker regexp (start from head) - do { - chunker.exec( "" ); - m = chunker.exec( soFar ); - - if ( m ) { - soFar = m[3]; - - parts.push( m[1] ); - - if ( m[2] ) { - extra = m[3]; - break; - } - } - } while ( m ); - - if ( parts.length > 1 && origPOS.exec( selector ) ) { - - if ( parts.length === 2 && Expr.relative[ parts[0] ] ) { - set = posProcess( parts[0] + parts[1], context ); - - } else { - set = Expr.relative[ parts[0] ] ? - [ context ] : - Sizzle( parts.shift(), context ); - - while ( parts.length ) { - selector = parts.shift(); - - if ( Expr.relative[ selector ] ) { - selector += parts.shift(); - } - - set = posProcess( selector, set ); - } - } - - } else { - // Take a shortcut and set the context if the root selector is an ID - // (but not if it'll be faster if the inner selector is an ID) - if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML && - Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) { - - ret = Sizzle.find( parts.shift(), context, contextXML ); - context = ret.expr ? - Sizzle.filter( ret.expr, ret.set )[0] : - ret.set[0]; - } - - if ( context ) { - ret = seed ? - { expr: parts.pop(), set: makeArray(seed) } : - Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML ); - - set = ret.expr ? - Sizzle.filter( ret.expr, ret.set ) : - ret.set; - - if ( parts.length > 0 ) { - checkSet = makeArray( set ); - - } else { - prune = false; - } - - while ( parts.length ) { - cur = parts.pop(); - pop = cur; - - if ( !Expr.relative[ cur ] ) { - cur = ""; - } else { - pop = parts.pop(); - } - - if ( pop == null ) { - pop = context; - } - - Expr.relative[ cur ]( checkSet, pop, contextXML ); - } - - } else { - checkSet = parts = []; - } - } - - if ( !checkSet ) { - checkSet = set; - } - - if ( !checkSet ) { - Sizzle.error( cur || selector ); - } - - if ( toString.call(checkSet) === "[object Array]" ) { - if ( !prune ) { - results.push.apply( results, checkSet ); - - } else if ( context && context.nodeType === 1 ) { - for ( i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) { - results.push( set[i] ); - } - } - - } else { - for ( i = 0; checkSet[i] != null; i++ ) { - if ( checkSet[i] && checkSet[i].nodeType === 1 ) { - results.push( set[i] ); - } - } - } - - } else { - makeArray( checkSet, results ); - } - - if ( extra ) { - Sizzle( extra, origContext, results, seed ); - Sizzle.uniqueSort( results ); - } - - return results; -}; - -Sizzle.uniqueSort = function( results ) { - if ( sortOrder ) { - hasDuplicate = baseHasDuplicate; - results.sort( sortOrder ); - - if ( hasDuplicate ) { - for ( var i = 1; i < results.length; i++ ) { - if ( results[i] === results[ i - 1 ] ) { - results.splice( i--, 1 ); - } - } - } - } - - return results; -}; - -Sizzle.matches = function( expr, set ) { - return Sizzle( expr, null, null, set ); -}; - -Sizzle.matchesSelector = function( node, expr ) { - return Sizzle( expr, null, null, [node] ).length > 0; -}; - -Sizzle.find = function( expr, context, isXML ) { - var set; - - if ( !expr ) { - return []; - } - - for ( var i = 0, l = Expr.order.length; i < l; i++ ) { - var match, - type = Expr.order[i]; - - if ( (match = Expr.leftMatch[ type ].exec( expr )) ) { - var left = match[1]; - match.splice( 1, 1 ); - - if ( left.substr( left.length - 1 ) !== "\\" ) { - match[1] = (match[1] || "").replace( rBackslash, "" ); - set = Expr.find[ type ]( match, context, isXML ); - - if ( set != null ) { - expr = expr.replace( Expr.match[ type ], "" ); - break; - } - } - } - } - - if ( !set ) { - set = typeof context.getElementsByTagName !== "undefined" ? - context.getElementsByTagName( "*" ) : - []; - } - - return { set: set, expr: expr }; -}; - -Sizzle.filter = function( expr, set, inplace, not ) { - var match, anyFound, - old = expr, - result = [], - curLoop = set, - isXMLFilter = set && set[0] && Sizzle.isXML( set[0] ); - - while ( expr && set.length ) { - for ( var type in Expr.filter ) { - if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) { - var found, item, - filter = Expr.filter[ type ], - left = match[1]; - - anyFound = false; - - match.splice(1,1); - - if ( left.substr( left.length - 1 ) === "\\" ) { - continue; - } - - if ( curLoop === result ) { - result = []; - } - - if ( Expr.preFilter[ type ] ) { - match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter ); - - if ( !match ) { - anyFound = found = true; - - } else if ( match === true ) { - continue; - } - } - - if ( match ) { - for ( var i = 0; (item = curLoop[i]) != null; i++ ) { - if ( item ) { - found = filter( item, match, i, curLoop ); - var pass = not ^ !!found; - - if ( inplace && found != null ) { - if ( pass ) { - anyFound = true; - - } else { - curLoop[i] = false; - } - - } else if ( pass ) { - result.push( item ); - anyFound = true; - } - } - } - } - - if ( found !== undefined ) { - if ( !inplace ) { - curLoop = result; - } - - expr = expr.replace( Expr.match[ type ], "" ); - - if ( !anyFound ) { - return []; - } - - break; - } - } - } - - // Improper expression - if ( expr === old ) { - if ( anyFound == null ) { - Sizzle.error( expr ); - - } else { - break; - } - } - - old = expr; - } - - return curLoop; -}; - -Sizzle.error = function( msg ) { - throw "Syntax error, unrecognized expression: " + msg; -}; - -var Expr = Sizzle.selectors = { - order: [ "ID", "NAME", "TAG" ], - - match: { - ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, - CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/, - NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/, - ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/, - TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/, - CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/, - POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/, - PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/ - }, - - leftMatch: {}, - - attrMap: { - "class": "className", - "for": "htmlFor" - }, - - attrHandle: { - href: function( elem ) { - return elem.getAttribute( "href" ); - }, - type: function( elem ) { - return elem.getAttribute( "type" ); - } - }, - - relative: { - "+": function(checkSet, part){ - var isPartStr = typeof part === "string", - isTag = isPartStr && !rNonWord.test( part ), - isPartStrNotTag = isPartStr && !isTag; - - if ( isTag ) { - part = part.toLowerCase(); - } - - for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) { - if ( (elem = checkSet[i]) ) { - while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {} - - checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ? - elem || false : - elem === part; - } - } - - if ( isPartStrNotTag ) { - Sizzle.filter( part, checkSet, true ); - } - }, - - ">": function( checkSet, part ) { - var elem, - isPartStr = typeof part === "string", - i = 0, - l = checkSet.length; - - if ( isPartStr && !rNonWord.test( part ) ) { - part = part.toLowerCase(); - - for ( ; i < l; i++ ) { - elem = checkSet[i]; - - if ( elem ) { - var parent = elem.parentNode; - checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false; - } - } - - } else { - for ( ; i < l; i++ ) { - elem = checkSet[i]; - - if ( elem ) { - checkSet[i] = isPartStr ? - elem.parentNode : - elem.parentNode === part; - } - } - - if ( isPartStr ) { - Sizzle.filter( part, checkSet, true ); - } - } - }, - - "": function(checkSet, part, isXML){ - var nodeCheck, - doneName = done++, - checkFn = dirCheck; - - if ( typeof part === "string" && !rNonWord.test( part ) ) { - part = part.toLowerCase(); - nodeCheck = part; - checkFn = dirNodeCheck; - } - - checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML ); - }, - - "~": function( checkSet, part, isXML ) { - var nodeCheck, - doneName = done++, - checkFn = dirCheck; - - if ( typeof part === "string" && !rNonWord.test( part ) ) { - part = part.toLowerCase(); - nodeCheck = part; - checkFn = dirNodeCheck; - } - - checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML ); - } - }, - - find: { - ID: function( match, context, isXML ) { - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - return m && m.parentNode ? [m] : []; - } - }, - - NAME: function( match, context ) { - if ( typeof context.getElementsByName !== "undefined" ) { - var ret = [], - results = context.getElementsByName( match[1] ); - - for ( var i = 0, l = results.length; i < l; i++ ) { - if ( results[i].getAttribute("name") === match[1] ) { - ret.push( results[i] ); - } - } - - return ret.length === 0 ? null : ret; - } - }, - - TAG: function( match, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( match[1] ); - } - } - }, - preFilter: { - CLASS: function( match, curLoop, inplace, result, not, isXML ) { - match = " " + match[1].replace( rBackslash, "" ) + " "; - - if ( isXML ) { - return match; - } - - for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) { - if ( elem ) { - if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) { - if ( !inplace ) { - result.push( elem ); - } - - } else if ( inplace ) { - curLoop[i] = false; - } - } - } - - return false; - }, - - ID: function( match ) { - return match[1].replace( rBackslash, "" ); - }, - - TAG: function( match, curLoop ) { - return match[1].replace( rBackslash, "" ).toLowerCase(); - }, - - CHILD: function( match ) { - if ( match[1] === "nth" ) { - if ( !match[2] ) { - Sizzle.error( match[0] ); - } - - match[2] = match[2].replace(/^\+|\s*/g, ''); - - // parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6' - var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec( - match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" || - !/\D/.test( match[2] ) && "0n+" + match[2] || match[2]); - - // calculate the numbers (first)n+(last) including if they are negative - match[2] = (test[1] + (test[2] || 1)) - 0; - match[3] = test[3] - 0; - } - else if ( match[2] ) { - Sizzle.error( match[0] ); - } - - // TODO: Move to normal caching system - match[0] = done++; - - return match; - }, - - ATTR: function( match, curLoop, inplace, result, not, isXML ) { - var name = match[1] = match[1].replace( rBackslash, "" ); - - if ( !isXML && Expr.attrMap[name] ) { - match[1] = Expr.attrMap[name]; - } - - // Handle if an un-quoted value was used - match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" ); - - if ( match[2] === "~=" ) { - match[4] = " " + match[4] + " "; - } - - return match; - }, - - PSEUDO: function( match, curLoop, inplace, result, not ) { - if ( match[1] === "not" ) { - // If we're dealing with a complex expression, or a simple one - if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) { - match[3] = Sizzle(match[3], null, null, curLoop); - - } else { - var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not); - - if ( !inplace ) { - result.push.apply( result, ret ); - } - - return false; - } - - } else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) { - return true; - } - - return match; - }, - - POS: function( match ) { - match.unshift( true ); - - return match; - } - }, - - filters: { - enabled: function( elem ) { - return elem.disabled === false && elem.type !== "hidden"; - }, - - disabled: function( elem ) { - return elem.disabled === true; - }, - - checked: function( elem ) { - return elem.checked === true; - }, - - selected: function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - parent: function( elem ) { - return !!elem.firstChild; - }, - - empty: function( elem ) { - return !elem.firstChild; - }, - - has: function( elem, i, match ) { - return !!Sizzle( match[3], elem ).length; - }, - - header: function( elem ) { - return (/h\d/i).test( elem.nodeName ); - }, - - text: function( elem ) { - var attr = elem.getAttribute( "type" ), type = elem.type; - // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) - // use getAttribute instead to test this case - return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null ); - }, - - radio: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type; - }, - - checkbox: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type; - }, - - file: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "file" === elem.type; - }, - - password: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "password" === elem.type; - }, - - submit: function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && "submit" === elem.type; - }, - - image: function( elem ) { - return elem.nodeName.toLowerCase() === "input" && "image" === elem.type; - }, - - reset: function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && "reset" === elem.type; - }, - - button: function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && "button" === elem.type || name === "button"; - }, - - input: function( elem ) { - return (/input|select|textarea|button/i).test( elem.nodeName ); - }, - - focus: function( elem ) { - return elem === elem.ownerDocument.activeElement; - } - }, - setFilters: { - first: function( elem, i ) { - return i === 0; - }, - - last: function( elem, i, match, array ) { - return i === array.length - 1; - }, - - even: function( elem, i ) { - return i % 2 === 0; - }, - - odd: function( elem, i ) { - return i % 2 === 1; - }, - - lt: function( elem, i, match ) { - return i < match[3] - 0; - }, - - gt: function( elem, i, match ) { - return i > match[3] - 0; - }, - - nth: function( elem, i, match ) { - return match[3] - 0 === i; - }, - - eq: function( elem, i, match ) { - return match[3] - 0 === i; - } - }, - filter: { - PSEUDO: function( elem, match, i, array ) { - var name = match[1], - filter = Expr.filters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - - } else if ( name === "contains" ) { - return (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || "").indexOf(match[3]) >= 0; - - } else if ( name === "not" ) { - var not = match[3]; - - for ( var j = 0, l = not.length; j < l; j++ ) { - if ( not[j] === elem ) { - return false; - } - } - - return true; - - } else { - Sizzle.error( name ); - } - }, - - CHILD: function( elem, match ) { - var type = match[1], - node = elem; - - switch ( type ) { - case "only": - case "first": - while ( (node = node.previousSibling) ) { - if ( node.nodeType === 1 ) { - return false; - } - } - - if ( type === "first" ) { - return true; - } - - node = elem; - - case "last": - while ( (node = node.nextSibling) ) { - if ( node.nodeType === 1 ) { - return false; - } - } - - return true; - - case "nth": - var first = match[2], - last = match[3]; - - if ( first === 1 && last === 0 ) { - return true; - } - - var doneName = match[0], - parent = elem.parentNode; - - if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) { - var count = 0; - - for ( node = parent.firstChild; node; node = node.nextSibling ) { - if ( node.nodeType === 1 ) { - node.nodeIndex = ++count; - } - } - - parent.sizcache = doneName; - } - - var diff = elem.nodeIndex - last; - - if ( first === 0 ) { - return diff === 0; - - } else { - return ( diff % first === 0 && diff / first >= 0 ); - } - } - }, - - ID: function( elem, match ) { - return elem.nodeType === 1 && elem.getAttribute("id") === match; - }, - - TAG: function( elem, match ) { - return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match; - }, - - CLASS: function( elem, match ) { - return (" " + (elem.className || elem.getAttribute("class")) + " ") - .indexOf( match ) > -1; - }, - - ATTR: function( elem, match ) { - var name = match[1], - result = Expr.attrHandle[ name ] ? - Expr.attrHandle[ name ]( elem ) : - elem[ name ] != null ? - elem[ name ] : - elem.getAttribute( name ), - value = result + "", - type = match[2], - check = match[4]; - - return result == null ? - type === "!=" : - type === "=" ? - value === check : - type === "*=" ? - value.indexOf(check) >= 0 : - type === "~=" ? - (" " + value + " ").indexOf(check) >= 0 : - !check ? - value && result !== false : - type === "!=" ? - value !== check : - type === "^=" ? - value.indexOf(check) === 0 : - type === "$=" ? - value.substr(value.length - check.length) === check : - type === "|=" ? - value === check || value.substr(0, check.length + 1) === check + "-" : - false; - }, - - POS: function( elem, match, i, array ) { - var name = match[2], - filter = Expr.setFilters[ name ]; - - if ( filter ) { - return filter( elem, i, match, array ); - } - } - } -}; - -var origPOS = Expr.match.POS, - fescape = function(all, num){ - return "\\" + (num - 0 + 1); - }; - -for ( var type in Expr.match ) { - Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) ); - Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) ); -} - -var makeArray = function( array, results ) { - array = Array.prototype.slice.call( array, 0 ); - - if ( results ) { - results.push.apply( results, array ); - return results; - } - - return array; -}; - -// Perform a simple check to determine if the browser is capable of -// converting a NodeList to an array using builtin methods. -// Also verifies that the returned array holds DOM nodes -// (which is not the case in the Blackberry browser) -try { - Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType; - -// Provide a fallback method if it does not work -} catch( e ) { - makeArray = function( array, results ) { - var i = 0, - ret = results || []; - - if ( toString.call(array) === "[object Array]" ) { - Array.prototype.push.apply( ret, array ); - - } else { - if ( typeof array.length === "number" ) { - for ( var l = array.length; i < l; i++ ) { - ret.push( array[i] ); - } - - } else { - for ( ; array[i]; i++ ) { - ret.push( array[i] ); - } - } - } - - return ret; - }; -} - -var sortOrder, siblingCheck; - -if ( document.documentElement.compareDocumentPosition ) { - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) { - return a.compareDocumentPosition ? -1 : 1; - } - - return a.compareDocumentPosition(b) & 4 ? -1 : 1; - }; - -} else { - sortOrder = function( a, b ) { - // The nodes are identical, we can exit early - if ( a === b ) { - hasDuplicate = true; - return 0; - - // Fallback to using sourceIndex (in IE) if it's available on both nodes - } else if ( a.sourceIndex && b.sourceIndex ) { - return a.sourceIndex - b.sourceIndex; - } - - var al, bl, - ap = [], - bp = [], - aup = a.parentNode, - bup = b.parentNode, - cur = aup; - - // If the nodes are siblings (or identical) we can do a quick check - if ( aup === bup ) { - return siblingCheck( a, b ); - - // If no parents were found then the nodes are disconnected - } else if ( !aup ) { - return -1; - - } else if ( !bup ) { - return 1; - } - - // Otherwise they're somewhere else in the tree so we need - // to build up a full list of the parentNodes for comparison - while ( cur ) { - ap.unshift( cur ); - cur = cur.parentNode; - } - - cur = bup; - - while ( cur ) { - bp.unshift( cur ); - cur = cur.parentNode; - } - - al = ap.length; - bl = bp.length; - - // Start walking down the tree looking for a discrepancy - for ( var i = 0; i < al && i < bl; i++ ) { - if ( ap[i] !== bp[i] ) { - return siblingCheck( ap[i], bp[i] ); - } - } - - // We ended someplace up the tree so do a sibling check - return i === al ? - siblingCheck( a, bp[i], -1 ) : - siblingCheck( ap[i], b, 1 ); - }; - - siblingCheck = function( a, b, ret ) { - if ( a === b ) { - return ret; - } - - var cur = a.nextSibling; - - while ( cur ) { - if ( cur === b ) { - return -1; - } - - cur = cur.nextSibling; - } - - return 1; - }; -} - -// Utility function for retreiving the text value of an array of DOM nodes -Sizzle.getText = function( elems ) { - var ret = "", elem; - - for ( var i = 0; elems[i]; i++ ) { - elem = elems[i]; - - // Get the text from text nodes and CDATA nodes - if ( elem.nodeType === 3 || elem.nodeType === 4 ) { - ret += elem.nodeValue; - - // Traverse everything else, except comment nodes - } else if ( elem.nodeType !== 8 ) { - ret += Sizzle.getText( elem.childNodes ); - } - } - - return ret; -}; - -// Check to see if the browser returns elements by name when -// querying by getElementById (and provide a workaround) -(function(){ - // We're going to inject a fake input element with a specified name - var form = document.createElement("div"), - id = "script" + (new Date()).getTime(), - root = document.documentElement; - - form.innerHTML = ""; - - // Inject it into the root element, check its status, and remove it quickly - root.insertBefore( form, root.firstChild ); - - // The workaround has to do additional checks after a getElementById - // Which slows things down for other browsers (hence the branching) - if ( document.getElementById( id ) ) { - Expr.find.ID = function( match, context, isXML ) { - if ( typeof context.getElementById !== "undefined" && !isXML ) { - var m = context.getElementById(match[1]); - - return m ? - m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? - [m] : - undefined : - []; - } - }; - - Expr.filter.ID = function( elem, match ) { - var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); - - return elem.nodeType === 1 && node && node.nodeValue === match; - }; - } - - root.removeChild( form ); - - // release memory in IE - root = form = null; -})(); - -(function(){ - // Check to see if the browser returns only elements - // when doing getElementsByTagName("*") - - // Create a fake element - var div = document.createElement("div"); - div.appendChild( document.createComment("") ); - - // Make sure no comments are found - if ( div.getElementsByTagName("*").length > 0 ) { - Expr.find.TAG = function( match, context ) { - var results = context.getElementsByTagName( match[1] ); - - // Filter out possible comments - if ( match[1] === "*" ) { - var tmp = []; - - for ( var i = 0; results[i]; i++ ) { - if ( results[i].nodeType === 1 ) { - tmp.push( results[i] ); - } - } - - results = tmp; - } - - return results; - }; - } - - // Check to see if an attribute returns normalized href attributes - div.innerHTML = ""; - - if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" && - div.firstChild.getAttribute("href") !== "#" ) { - - Expr.attrHandle.href = function( elem ) { - return elem.getAttribute( "href", 2 ); - }; - } - - // release memory in IE - div = null; -})(); - -if ( document.querySelectorAll ) { - (function(){ - var oldSizzle = Sizzle, - div = document.createElement("div"), - id = "__sizzle__"; - - div.innerHTML = "

    "; - - // Safari can't handle uppercase or unicode characters when - // in quirks mode. - if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) { - return; - } - - Sizzle = function( query, context, extra, seed ) { - context = context || document; - - // Only use querySelectorAll on non-XML documents - // (ID selectors don't work in non-HTML documents) - if ( !seed && !Sizzle.isXML(context) ) { - // See if we find a selector to speed up - var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query ); - - if ( match && (context.nodeType === 1 || context.nodeType === 9) ) { - // Speed-up: Sizzle("TAG") - if ( match[1] ) { - return makeArray( context.getElementsByTagName( query ), extra ); - - // Speed-up: Sizzle(".CLASS") - } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) { - return makeArray( context.getElementsByClassName( match[2] ), extra ); - } - } - - if ( context.nodeType === 9 ) { - // Speed-up: Sizzle("body") - // The body element only exists once, optimize finding it - if ( query === "body" && context.body ) { - return makeArray( [ context.body ], extra ); - - // Speed-up: Sizzle("#ID") - } else if ( match && match[3] ) { - var elem = context.getElementById( match[3] ); - - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if ( elem && elem.parentNode ) { - // Handle the case where IE and Opera return items - // by name instead of ID - if ( elem.id === match[3] ) { - return makeArray( [ elem ], extra ); - } - - } else { - return makeArray( [], extra ); - } - } - - try { - return makeArray( context.querySelectorAll(query), extra ); - } catch(qsaError) {} - - // qSA works strangely on Element-rooted queries - // We can work around this by specifying an extra ID on the root - // and working up from there (Thanks to Andrew Dupont for the technique) - // IE 8 doesn't work on object elements - } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { - var oldContext = context, - old = context.getAttribute( "id" ), - nid = old || id, - hasParent = context.parentNode, - relativeHierarchySelector = /^\s*[+~]/.test( query ); - - if ( !old ) { - context.setAttribute( "id", nid ); - } else { - nid = nid.replace( /'/g, "\\$&" ); - } - if ( relativeHierarchySelector && hasParent ) { - context = context.parentNode; - } - - try { - if ( !relativeHierarchySelector || hasParent ) { - return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra ); - } - - } catch(pseudoError) { - } finally { - if ( !old ) { - oldContext.removeAttribute( "id" ); - } - } - } - } - - return oldSizzle(query, context, extra, seed); - }; - - for ( var prop in oldSizzle ) { - Sizzle[ prop ] = oldSizzle[ prop ]; - } - - // release memory in IE - div = null; - })(); -} - -(function(){ - var html = document.documentElement, - matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector; - - if ( matches ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9 fails this) - var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ), - pseudoWorks = false; - - try { - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( document.documentElement, "[test!='']:sizzle" ); - - } catch( pseudoError ) { - pseudoWorks = true; - } - - Sizzle.matchesSelector = function( node, expr ) { - // Make sure that attribute selectors are quoted - expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']"); - - if ( !Sizzle.isXML( node ) ) { - try { - if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) { - var ret = matches.call( node, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || !disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9, so check for that - node.document && node.document.nodeType !== 11 ) { - return ret; - } - } - } catch(e) {} - } - - return Sizzle(expr, null, null, [node]).length > 0; - }; - } -})(); - -(function(){ - var div = document.createElement("div"); - - div.innerHTML = "
    "; - - // Opera can't find a second classname (in 9.6) - // Also, make sure that getElementsByClassName actually exists - if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) { - return; - } - - // Safari caches class attributes, doesn't catch changes (in 3.2) - div.lastChild.className = "e"; - - if ( div.getElementsByClassName("e").length === 1 ) { - return; - } - - Expr.order.splice(1, 0, "CLASS"); - Expr.find.CLASS = function( match, context, isXML ) { - if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) { - return context.getElementsByClassName(match[1]); - } - }; - - // release memory in IE - div = null; -})(); - -function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - - if ( elem ) { - var match = false; - - elem = elem[dir]; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 && !isXML ){ - elem.sizcache = doneName; - elem.sizset = i; - } - - if ( elem.nodeName.toLowerCase() === cur ) { - match = elem; - break; - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) { - for ( var i = 0, l = checkSet.length; i < l; i++ ) { - var elem = checkSet[i]; - - if ( elem ) { - var match = false; - - elem = elem[dir]; - - while ( elem ) { - if ( elem.sizcache === doneName ) { - match = checkSet[elem.sizset]; - break; - } - - if ( elem.nodeType === 1 ) { - if ( !isXML ) { - elem.sizcache = doneName; - elem.sizset = i; - } - - if ( typeof cur !== "string" ) { - if ( elem === cur ) { - match = true; - break; - } - - } else if ( Sizzle.filter( cur, [elem] ).length > 0 ) { - match = elem; - break; - } - } - - elem = elem[dir]; - } - - checkSet[i] = match; - } - } -} - -if ( document.documentElement.contains ) { - Sizzle.contains = function( a, b ) { - return a !== b && (a.contains ? a.contains(b) : true); - }; - -} else if ( document.documentElement.compareDocumentPosition ) { - Sizzle.contains = function( a, b ) { - return !!(a.compareDocumentPosition(b) & 16); - }; - -} else { - Sizzle.contains = function() { - return false; - }; -} - -Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement; - - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -var posProcess = function( selector, context ) { - var match, - tmpSet = [], - later = "", - root = context.nodeType ? [context] : context; - - // Position selectors must be done after the filter - // And so must :not(positional) so we move all PSEUDOs to the end - while ( (match = Expr.match.PSEUDO.exec( selector )) ) { - later += match[0]; - selector = selector.replace( Expr.match.PSEUDO, "" ); - } - - selector = Expr.relative[selector] ? selector + "*" : selector; - - for ( var i = 0, l = root.length; i < l; i++ ) { - Sizzle( selector, root[i], tmpSet ); - } - - return Sizzle.filter( later, tmpSet ); -}; - -// EXPOSE -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[":"] = jQuery.expr.filters; -jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; - - -})(); - - -var runtil = /Until$/, - rparentsprev = /^(?:parents|prevUntil|prevAll)/, - // Note: This RegExp should be improved, or likely pulled from Sizzle - rmultiselector = /,/, - isSimple = /^.[^:#\[\.,]*$/, - slice = Array.prototype.slice, - POS = jQuery.expr.match.POS, - // methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.fn.extend({ - find: function( selector ) { - var self = this, - i, l; - - if ( typeof selector !== "string" ) { - return jQuery( selector ).filter(function() { - for ( i = 0, l = self.length; i < l; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - }); - } - - var ret = this.pushStack( "", "find", selector ), - length, n, r; - - for ( i = 0, l = this.length; i < l; i++ ) { - length = ret.length; - jQuery.find( selector, this[i], ret ); - - if ( i > 0 ) { - // Make sure that the results are unique - for ( n = length; n < ret.length; n++ ) { - for ( r = 0; r < length; r++ ) { - if ( ret[r] === ret[n] ) { - ret.splice(n--, 1); - break; - } - } - } - } - } - - return ret; - }, - - has: function( target ) { - var targets = jQuery( target ); - return this.filter(function() { - for ( var i = 0, l = targets.length; i < l; i++ ) { - if ( jQuery.contains( this, targets[i] ) ) { - return true; - } - } - }); - }, - - not: function( selector ) { - return this.pushStack( winnow(this, selector, false), "not", selector); - }, - - filter: function( selector ) { - return this.pushStack( winnow(this, selector, true), "filter", selector ); - }, - - is: function( selector ) { - return !!selector && ( typeof selector === "string" ? - jQuery.filter( selector, this ).length > 0 : - this.filter( selector ).length > 0 ); - }, - - closest: function( selectors, context ) { - var ret = [], i, l, cur = this[0]; - - // Array - if ( jQuery.isArray( selectors ) ) { - var match, selector, - matches = {}, - level = 1; - - if ( cur && selectors.length ) { - for ( i = 0, l = selectors.length; i < l; i++ ) { - selector = selectors[i]; - - if ( !matches[ selector ] ) { - matches[ selector ] = POS.test( selector ) ? - jQuery( selector, context || this.context ) : - selector; - } - } - - while ( cur && cur.ownerDocument && cur !== context ) { - for ( selector in matches ) { - match = matches[ selector ]; - - if ( match.jquery ? match.index( cur ) > -1 : jQuery( cur ).is( match ) ) { - ret.push({ selector: selector, elem: cur, level: level }); - } - } - - cur = cur.parentNode; - level++; - } - } - - return ret; - } - - // String - var pos = POS.test( selectors ) || typeof selectors !== "string" ? - jQuery( selectors, context || this.context ) : - 0; - - for ( i = 0, l = this.length; i < l; i++ ) { - cur = this[i]; - - while ( cur ) { - if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) { - ret.push( cur ); - break; - - } else { - cur = cur.parentNode; - if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) { - break; - } - } - } - } - - ret = ret.length > 1 ? jQuery.unique( ret ) : ret; - - return this.pushStack( ret, "closest", selectors ); - }, - - // Determine the position of an element within - // the matched set of elements - index: function( elem ) { - if ( !elem || typeof elem === "string" ) { - return jQuery.inArray( this[0], - // If it receives a string, the selector is used - // If it receives nothing, the siblings are used - elem ? jQuery( elem ) : this.parent().children() ); - } - // Locate the position of the desired element - return jQuery.inArray( - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[0] : elem, this ); - }, - - add: function( selector, context ) { - var set = typeof selector === "string" ? - jQuery( selector, context ) : - jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), - all = jQuery.merge( this.get(), set ); - - return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ? - all : - jQuery.unique( all ) ); - }, - - andSelf: function() { - return this.add( this.prevObject ); - } -}); - -// A painfully simple check to see if an element is disconnected -// from a document (should be improved, where feasible). -function isDisconnected( node ) { - return !node || !node.parentNode || node.parentNode.nodeType === 11; -} - -jQuery.each({ - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return jQuery.dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return jQuery.dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return jQuery.nth( elem, 2, "nextSibling" ); - }, - prev: function( elem ) { - return jQuery.nth( elem, 2, "previousSibling" ); - }, - nextAll: function( elem ) { - return jQuery.dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return jQuery.dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return jQuery.dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return jQuery.dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return jQuery.sibling( elem.parentNode.firstChild, elem ); - }, - children: function( elem ) { - return jQuery.sibling( elem.firstChild ); - }, - contents: function( elem ) { - return jQuery.nodeName( elem, "iframe" ) ? - elem.contentDocument || elem.contentWindow.document : - jQuery.makeArray( elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var ret = jQuery.map( this, fn, until ), - // The variable 'args' was introduced in - // https://github.com/jquery/jquery/commit/52a0238 - // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed. - // http://code.google.com/p/v8/issues/detail?id=1050 - args = slice.call(arguments); - - if ( !runtil.test( name ) ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - ret = jQuery.filter( selector, ret ); - } - - ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret; - - if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) { - ret = ret.reverse(); - } - - return this.pushStack( ret, name, args.join(",") ); - }; -}); - -jQuery.extend({ - filter: function( expr, elems, not ) { - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return elems.length === 1 ? - jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] : - jQuery.find.matches(expr, elems); - }, - - dir: function( elem, dir, until ) { - var matched = [], - cur = elem[ dir ]; - - while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { - if ( cur.nodeType === 1 ) { - matched.push( cur ); - } - cur = cur[dir]; - } - return matched; - }, - - nth: function( cur, result, dir, elem ) { - result = result || 1; - var num = 0; - - for ( ; cur; cur = cur[dir] ) { - if ( cur.nodeType === 1 && ++num === result ) { - break; - } - } - - return cur; - }, - - sibling: function( n, elem ) { - var r = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - r.push( n ); - } - } - - return r; - } -}); - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, keep ) { - - // Can't pass null or undefined to indexOf in Firefox 4 - // Set to 0 to skip string check - qualifier = qualifier || 0; - - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep(elements, function( elem, i ) { - var retVal = !!qualifier.call( elem, i, elem ); - return retVal === keep; - }); - - } else if ( qualifier.nodeType ) { - return jQuery.grep(elements, function( elem, i ) { - return (elem === qualifier) === keep; - }); - - } else if ( typeof qualifier === "string" ) { - var filtered = jQuery.grep(elements, function( elem ) { - return elem.nodeType === 1; - }); - - if ( isSimple.test( qualifier ) ) { - return jQuery.filter(qualifier, filtered, !keep); - } else { - qualifier = jQuery.filter( qualifier, filtered ); - } - } - - return jQuery.grep(elements, function( elem, i ) { - return (jQuery.inArray( elem, qualifier ) >= 0) === keep; - }); -} - - - - -var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g, - rleadingWhitespace = /^\s+/, - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig, - rtagName = /<([\w:]+)/, - rtbody = /", "" ], - legend: [ 1, "
    ", "
    " ], - thead: [ 1, "", "
    " ], - tr: [ 2, "", "
    " ], - td: [ 3, "", "
    " ], - col: [ 2, "", "
    " ], - area: [ 1, "", "" ], - _default: [ 0, "", "" ] - }; - -wrapMap.optgroup = wrapMap.option; -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - -// IE can't serialize and - - - + - - + } diff --git a/NzbDrone.Web/Views/Settings/Quality.cshtml b/NzbDrone.Web/Views/Settings/Quality.cshtml index 5897db8bd..56422b3bf 100644 --- a/NzbDrone.Web/Views/Settings/Quality.cshtml +++ b/NzbDrone.Web/Views/Settings/Quality.cshtml @@ -58,7 +58,7 @@ @section Scripts{ - + - - - - - - - + + + + + + + + + - @RenderSection("HeaderContent", required: false) @@ -60,6 +60,7 @@ background notification @(Html.Telerik().ScriptRegistrar().jQuery(false)) + @RenderSection("Scripts", required: false) From a1caa789fea92d5c9d02885b9c524f12c6199be9 Mon Sep 17 00:00:00 2001 From: "kay.one" Date: Sat, 2 Jul 2011 01:56:58 -0700 Subject: [PATCH 02/10] Instant progress notifications. Now use comet instead of pooling. --- .../Notification/ProgressNotification.cs | 2 +- .../Providers/Jobs/EpisodeSearchJob.cs | 2 + .../Providers/NotificationProvider.cs | 2 +- .../Controllers/NotificationController.cs | 37 +++++++++++-- NzbDrone.Web/Scripts/Notification.js | 53 +++++++------------ 5 files changed, 57 insertions(+), 39 deletions(-) diff --git a/NzbDrone.Core/Model/Notification/ProgressNotification.cs b/NzbDrone.Core/Model/Notification/ProgressNotification.cs index a95aa9610..80e8bc64a 100644 --- a/NzbDrone.Core/Model/Notification/ProgressNotification.cs +++ b/NzbDrone.Core/Model/Notification/ProgressNotification.cs @@ -27,7 +27,7 @@ namespace NzbDrone.Core.Model.Notification /// Gets or sets the title for this notification. /// /// The title. - public String Title { get; set; } + public String Title { get; private set; } /// /// Gets or sets the current status of this task. this field could be use to show the currently processing item in a long running task. diff --git a/NzbDrone.Core/Providers/Jobs/EpisodeSearchJob.cs b/NzbDrone.Core/Providers/Jobs/EpisodeSearchJob.cs index 45330756a..d011acc28 100644 --- a/NzbDrone.Core/Providers/Jobs/EpisodeSearchJob.cs +++ b/NzbDrone.Core/Providers/Jobs/EpisodeSearchJob.cs @@ -51,6 +51,8 @@ namespace NzbDrone.Core.Providers.Jobs Logger.Error("Unable to find an episode {0} in database", targetId); return; } + notification.CurrentMessage = "Searching for " + episode; + var series = episode.Series; diff --git a/NzbDrone.Core/Providers/NotificationProvider.cs b/NzbDrone.Core/Providers/NotificationProvider.cs index aebd6b114..00ee08ada 100644 --- a/NzbDrone.Core/Providers/NotificationProvider.cs +++ b/NzbDrone.Core/Providers/NotificationProvider.cs @@ -20,7 +20,7 @@ namespace NzbDrone.Core.Providers get { return new List(_basicNotifications.Values); } } - public virtual List GetProgressNotifications + public virtual List ProgressNotifications { get { diff --git a/NzbDrone.Web/Controllers/NotificationController.cs b/NzbDrone.Web/Controllers/NotificationController.cs index 25d9cac2a..186b34ee8 100644 --- a/NzbDrone.Web/Controllers/NotificationController.cs +++ b/NzbDrone.Web/Controllers/NotificationController.cs @@ -1,4 +1,7 @@ -using System.Web.Mvc; +using System; +using System.Diagnostics; +using System.Threading; +using System.Web.Mvc; using MvcMiniProfiler; using NzbDrone.Core.Providers; @@ -32,8 +35,8 @@ namespace NzbDrone.Web.Controllers else { - if (_notifications.GetProgressNotifications.Count != 0) - message = _notifications.GetProgressNotifications[0].CurrentMessage; + if (_notifications.ProgressNotifications.Count != 0) + message = _notifications.ProgressNotifications[0].CurrentMessage; } @@ -44,5 +47,33 @@ namespace NzbDrone.Web.Controllers return Json(message, JsonRequestBehavior.AllowGet); } + + + [HttpGet] + public JsonResult Comet(string message) + { + var requestTimer = Stopwatch.StartNew(); + + MiniProfiler.Stop(true); + + var currentMessage = GetCurrentMessage(); + + while (message == currentMessage && requestTimer.Elapsed.TotalSeconds < 10) + { + Thread.Sleep(250); + currentMessage = GetCurrentMessage(); + } + + return Json(currentMessage, JsonRequestBehavior.AllowGet); + } + + private string GetCurrentMessage() + { + if (_notifications.ProgressNotifications.Count != 0) + return _notifications.ProgressNotifications[0].CurrentMessage; + + + return string.Empty; + } } } \ No newline at end of file diff --git a/NzbDrone.Web/Scripts/Notification.js b/NzbDrone.Web/Scripts/Notification.js index 5d300500a..77c88262e 100644 --- a/NzbDrone.Web/Scripts/Notification.js +++ b/NzbDrone.Web/Scripts/Notification.js @@ -1,30 +1,27 @@ -/// - $(document).ready(function () - { - var speed = 0; +$(window).load(function () { + var speed = 700; var isShown = false; - refreshNotifications(); + var currentMessage = ""; + + $.doTimeout(200, refreshNotifications); + - var timer = window.setInterval(function () { - speed = 1000; - refreshNotifications(); - }, 2000); function refreshNotifications() { - $.ajax({ - url: '/Notification', - success: notificationCallback - }); + $.get('/notification/Comet', { message: currentMessage }, notificationCallback); } function notificationCallback(data) { + currentMessage = data; if (data === "") { - CloseMsg(); + closeMsg(); } else { - DisplayMsg(data); + displayMsg(data); } + + refreshNotifications(); } //SetupNotifications(); @@ -32,32 +29,20 @@ - function DisplayMsg(sMsg) { + function displayMsg(sMsg) { //set the message text - - - //$("#msgText").text(sMsg); - $("#msgText").showHtml(sMsg, 200); - + $("#msgText").showHtml(sMsg, 150); if (!isShown) { - isShown = true; - if (speed === 0) { - $('#msgBox').show(); - } - else { - $('#msgBox').show("slide", { direction: "right" }, speed); - } - + $('#msgBox').show("slide", { direction: "right" }, speed / 2); } + + isShown = true; } - function CloseMsg() { + function closeMsg() { //hide the message - if (isShown) { - $('#msgBox').hide("slide", { direction: "right" }, speed); - } - + $('#msgBox').hide("slide", { direction: "right" }, speed); isShown = false; } }); From 555e62fd177b02cabfdb7217dacfdd2355c089cd Mon Sep 17 00:00:00 2001 From: "kay.one" Date: Sat, 2 Jul 2011 10:41:10 -0700 Subject: [PATCH 03/10] fixed some notification issues --- .../Providers/NotificationProvider.cs | 30 +++++++++++++------ .../Controllers/NotificationController.cs | 4 +-- NzbDrone.Web/Scripts/Notification.js | 8 +++-- 3 files changed, 27 insertions(+), 15 deletions(-) diff --git a/NzbDrone.Core/Providers/NotificationProvider.cs b/NzbDrone.Core/Providers/NotificationProvider.cs index 00ee08ada..85b32f22d 100644 --- a/NzbDrone.Core/Providers/NotificationProvider.cs +++ b/NzbDrone.Core/Providers/NotificationProvider.cs @@ -24,28 +24,40 @@ namespace NzbDrone.Core.Providers { get { + lock (_lock) + { + var activeNotification = + _progressNotification.Values.Where(p => p.Status == ProgressNotificationStatus.InProgress). + ToList(); - var activeNotification = _progressNotification.Values.Where(p => p.Status == ProgressNotificationStatus.InProgress).ToList(); + if (activeNotification.Count == 0) + { + //Get notifications that were recently done + activeNotification = + _progressNotification.Values.Where(p => p.CompletedTime >= DateTime.Now.AddSeconds(-3)). + OrderByDescending(c => c.CompletedTime).ToList(); - if (activeNotification.Count == 0) - { - //Get notifications that were recently done - activeNotification = _progressNotification.Values.Where(p => p.CompletedTime >= DateTime.Now.AddSeconds(-3)).OrderByDescending(c => c.CompletedTime).ToList(); + } + return activeNotification.ToList(); } - - return activeNotification.ToList(); } } public virtual void Register(ProgressNotification notification) { - _progressNotification.Add(notification.Id, notification); + lock (_lock) + { + _progressNotification.Add(notification.Id, notification); + } } public virtual void Register(BasicNotification notification) { - _basicNotifications.Add(notification.Id, notification); + lock (_lock) + { + _basicNotifications.Add(notification.Id, notification); + } } public virtual void Dismiss(Guid notificationId) diff --git a/NzbDrone.Web/Controllers/NotificationController.cs b/NzbDrone.Web/Controllers/NotificationController.cs index 186b34ee8..c1796cac0 100644 --- a/NzbDrone.Web/Controllers/NotificationController.cs +++ b/NzbDrone.Web/Controllers/NotificationController.cs @@ -52,13 +52,11 @@ namespace NzbDrone.Web.Controllers [HttpGet] public JsonResult Comet(string message) { - var requestTimer = Stopwatch.StartNew(); - MiniProfiler.Stop(true); var currentMessage = GetCurrentMessage(); - while (message == currentMessage && requestTimer.Elapsed.TotalSeconds < 10) + while (message == currentMessage) { Thread.Sleep(250); currentMessage = GetCurrentMessage(); diff --git a/NzbDrone.Web/Scripts/Notification.js b/NzbDrone.Web/Scripts/Notification.js index 77c88262e..d564c1c4b 100644 --- a/NzbDrone.Web/Scripts/Notification.js +++ b/NzbDrone.Web/Scripts/Notification.js @@ -41,9 +41,11 @@ } function closeMsg() { - //hide the message - $('#msgBox').hide("slide", { direction: "right" }, speed); - isShown = false; + //hide the message + if (isShown) { + $('#msgBox').hide("slide", { direction: "right" }, speed); + isShown = false; + } } }); From cd96d546e8c7cb656501eaf5ab2cd0bb6898f920 Mon Sep 17 00:00:00 2001 From: "kay.one" Date: Sat, 2 Jul 2011 11:41:23 -0700 Subject: [PATCH 04/10] limited newzbin search to English only. --- NzbDrone.Core.Test/IndexerTests.cs | 27 ++++++++++++---------- NzbDrone.Core/Providers/Indexer/Newzbin.cs | 8 ++++--- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/NzbDrone.Core.Test/IndexerTests.cs b/NzbDrone.Core.Test/IndexerTests.cs index 30aea11b5..69670f5b2 100644 --- a/NzbDrone.Core.Test/IndexerTests.cs +++ b/NzbDrone.Core.Test/IndexerTests.cs @@ -21,7 +21,7 @@ namespace NzbDrone.Core.Test // ReSharper disable InconsistentNaming public class IndexerTests : TestBase { - + [TestCase("nzbsorg.xml", 0)] [TestCase("nzbsrus.xml", 6)] [TestCase("newzbin.xml", 1)] @@ -60,16 +60,20 @@ namespace NzbDrone.Core.Test public void newzbin_rss_fetch() { var mocker = new AutoMoqer(); - - mocker.GetMock() - .Setup(h => h.DownloadStream(It.IsAny(), It.IsAny())) - .Returns(File.OpenRead(".\\Files\\Rss\\newzbin.xml")); - + mocker.Resolve(); var fakeSettings = Builder.CreateNew().Build(); mocker.GetMock() .Setup(c => c.GetSettings(It.IsAny())) .Returns(fakeSettings); + mocker.GetMock() + .SetupGet(c => c.NewzbinUsername) + .Returns("nzbdrone"); + + mocker.GetMock() + .SetupGet(c => c.NewzbinPassword) + .Returns("smartar39865"); + var newzbinProvider = mocker.Resolve(); var parseResults = newzbinProvider.FetchRss(); @@ -84,11 +88,10 @@ namespace NzbDrone.Core.Test parseResults.Should().OnlyContain(s => s.Indexer == newzbinProvider.Name); parseResults.Should().OnlyContain(s => !String.IsNullOrEmpty(s.NzbTitle)); - - ExceptionVerification.ExcpectedWarns(1); + ExceptionVerification.IgnoreWarns(); } - + [TestCase("Adventure.Inc.S03E19.DVDRip.XviD-OSiTV", 3, 19, QualityTypes.DVD)] public void custome_parser_partial_success(string title, int season, int episode, QualityTypes quality) { @@ -179,8 +182,8 @@ namespace NzbDrone.Core.Test result.Should().OnlyContain(r => r.EpisodeNumbers.Contains(23)); } - [TestCase("simpsons",21,23)] - [TestCase("Hawaii Five-0", 1, 5)] + [TestCase("simpsons", 21, 23)] + [TestCase("Hawaii Five-0 2010", 1, 5)] public void newzbin_search_returns_valid_results(string title, int season, int episode) { var mocker = new AutoMoqer(); @@ -198,7 +201,7 @@ namespace NzbDrone.Core.Test var result = mocker.Resolve().FetchEpisode(title, season, episode); result.Should().NotBeEmpty(); - result.Should().OnlyContain(r => r.CleanTitle == title); + result.Should().OnlyContain(r => r.CleanTitle == Parser.NormalizeTitle(title)); result.Should().OnlyContain(r => r.SeasonNumber == season); result.Should().OnlyContain(r => r.EpisodeNumbers.Contains(episode)); } diff --git a/NzbDrone.Core/Providers/Indexer/Newzbin.cs b/NzbDrone.Core/Providers/Indexer/Newzbin.cs index 53075271b..51f539894 100644 --- a/NzbDrone.Core/Providers/Indexer/Newzbin.cs +++ b/NzbDrone.Core/Providers/Indexer/Newzbin.cs @@ -10,19 +10,21 @@ namespace NzbDrone.Core.Providers.Indexer { public class Newzbin : IndexerBase { - [Inject] + [Inject] public Newzbin(HttpProvider httpProvider, ConfigProvider configProvider) : base(httpProvider, configProvider) { } + private const string UrlParams = "feed=rss&hauth=1&ps_rb_language=4096"; + protected override string[] Urls { get { return new[] { - "http://www.newzbin.com/browse/category/p/tv?feed=rss&hauth=1" + "http://www.newzbin.com/browse/category/p/tv?" + UrlParams }; } } @@ -38,7 +40,7 @@ namespace NzbDrone.Core.Providers.Indexer protected override IList GetSearchUrls(string seriesTitle, int seasonNumber, int episodeNumber) { - return new List { String.Format(@"http://www.newzbin.com/search/query/?q={0}+{1}x{2:00}&fpn=p&searchaction=Go&category=8&feed=rss&hauth=1", GetQueryTitle(seriesTitle), seasonNumber, episodeNumber) }; + return new List { String.Format(@"http://www.newzbin.com/search/query/?q={0}+{1}x{2:00}&fpn=p&searchaction=Go&category=8&{3}", GetQueryTitle(seriesTitle), seasonNumber, episodeNumber, UrlParams) }; } public override string Name From 46c88fa844c4c94514c4004a8524c0408de066bb Mon Sep 17 00:00:00 2001 From: "kay.one" Date: Sat, 2 Jul 2011 12:22:17 -0700 Subject: [PATCH 05/10] Notification style fix. --- NzbDrone.Web/Scripts/Notification.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NzbDrone.Web/Scripts/Notification.js b/NzbDrone.Web/Scripts/Notification.js index d564c1c4b..c763271f2 100644 --- a/NzbDrone.Web/Scripts/Notification.js +++ b/NzbDrone.Web/Scripts/Notification.js @@ -67,7 +67,7 @@ // Preserve the original values of width and height - they'll need // to be modified during the animation, but can be restored once // the animation has completed. - var finish = { width: this.style.width, height: this.style.height }; + var finish = { width: 'auto', height: 'auto' }; // The original width and height represented as pixel values. // These will only be the same as `finish` if this element had its From b8b4e507b96a4ee228d1146facb387af40da1314 Mon Sep 17 00:00:00 2001 From: "kay.one" Date: Sat, 2 Jul 2011 15:18:19 -0700 Subject: [PATCH 06/10] Added more video extensions --- NzbDrone.Core/Providers/DiskScanProvider.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NzbDrone.Core/Providers/DiskScanProvider.cs b/NzbDrone.Core/Providers/DiskScanProvider.cs index ed0170f4b..7885a3ba0 100644 --- a/NzbDrone.Core/Providers/DiskScanProvider.cs +++ b/NzbDrone.Core/Providers/DiskScanProvider.cs @@ -13,7 +13,7 @@ namespace NzbDrone.Core.Providers public class DiskScanProvider { private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); - private static readonly string[] MediaExtentions = new[] { ".mkv", ".avi", ".wmv", ".mp4" }; + private static readonly string[] MediaExtentions = new[] { ".mkv", ".avi", ".wmv", ".mp4", ".mpg", ".mpeg", ".xvid", ".flv", ".mov", ".vob", ".ts", ".rm", ".rmvb", ".xvid", ".dvr-ms" }; private readonly DiskProvider _diskProvider; private readonly EpisodeProvider _episodeProvider; private readonly MediaFileProvider _mediaFileProvider; From fc7bbd092e6504840f7abe4121d733e06cc09336 Mon Sep 17 00:00:00 2001 From: "kay.one" Date: Sat, 2 Jul 2011 15:19:09 -0700 Subject: [PATCH 07/10] Content folder cleanup --- .../Content/{Site.css => NzbDrone.css} | 0 NzbDrone.Web/Content/ie.css | 12 - .../ui-bg_diagonals-thick_30_0b58a2_40x40.png | Bin 0 -> 385 bytes .../ui-bg_diagonals-thick_30_a32d00_40x40.png | Bin 0 -> 261 bytes .../images/ui-bg_flat_0_0b3e6f_40x100.png | Bin 0 -> 213 bytes .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 180 bytes .../images/ui-bg_flat_20_111111_40x100.png | Bin 0 -> 180 bytes .../images/ui-bg_flat_20_333333_40x100.png | Bin 0 -> 180 bytes .../images/ui-bg_flat_40_00498f_40x100.png | Bin 0 -> 180 bytes .../images/ui-icons_98d2fb_256x240.png | Bin 0 -> 5355 bytes .../images/ui-icons_9ccdfc_256x240.png | Bin 0 -> 5355 bytes .../images/ui-icons_ffffff_256x240.png | Bin 0 -> 4369 bytes .../jquery-ui-1.8.14.nzbdrone.css} | 122 +++--- .../Content/jquery-simpledropdown.css | 34 -- NzbDrone.Web/Content/jquery-ui.css | 405 ------------------ NzbDrone.Web/Content/jquery-ui.custom.css | 53 --- NzbDrone.Web/NzbDrone.Web.csproj | 18 +- NzbDrone.Web/Views/Shared/_Layout.cshtml | 9 +- 18 files changed, 76 insertions(+), 577 deletions(-) rename NzbDrone.Web/Content/{Site.css => NzbDrone.css} (100%) delete mode 100644 NzbDrone.Web/Content/ie.css create mode 100644 NzbDrone.Web/Content/jQueryUI/images/ui-bg_diagonals-thick_30_0b58a2_40x40.png create mode 100644 NzbDrone.Web/Content/jQueryUI/images/ui-bg_diagonals-thick_30_a32d00_40x40.png create mode 100644 NzbDrone.Web/Content/jQueryUI/images/ui-bg_flat_0_0b3e6f_40x100.png create mode 100644 NzbDrone.Web/Content/jQueryUI/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100644 NzbDrone.Web/Content/jQueryUI/images/ui-bg_flat_20_111111_40x100.png create mode 100644 NzbDrone.Web/Content/jQueryUI/images/ui-bg_flat_20_333333_40x100.png create mode 100644 NzbDrone.Web/Content/jQueryUI/images/ui-bg_flat_40_00498f_40x100.png create mode 100644 NzbDrone.Web/Content/jQueryUI/images/ui-icons_98d2fb_256x240.png create mode 100644 NzbDrone.Web/Content/jQueryUI/images/ui-icons_9ccdfc_256x240.png create mode 100644 NzbDrone.Web/Content/jQueryUI/images/ui-icons_ffffff_256x240.png rename NzbDrone.Web/Content/{jquery-ui-1.8.8.custom.css => jQueryUI/jquery-ui-1.8.14.nzbdrone.css} (81%) delete mode 100644 NzbDrone.Web/Content/jquery-simpledropdown.css delete mode 100644 NzbDrone.Web/Content/jquery-ui.css delete mode 100644 NzbDrone.Web/Content/jquery-ui.custom.css diff --git a/NzbDrone.Web/Content/Site.css b/NzbDrone.Web/Content/NzbDrone.css similarity index 100% rename from NzbDrone.Web/Content/Site.css rename to NzbDrone.Web/Content/NzbDrone.css diff --git a/NzbDrone.Web/Content/ie.css b/NzbDrone.Web/Content/ie.css deleted file mode 100644 index eb4b13d1d..000000000 --- a/NzbDrone.Web/Content/ie.css +++ /dev/null @@ -1,12 +0,0 @@ -/* -Name: jQuery Simple Drop Down Plugin Stylesheet -Author: Etienne Fardet -Version: 1.2 --- Fixes for IE -- -*/ - -¨* {zoom:1;} - -.drop ul, .drop ul li {width:134px;} -.drop ul li a, .drop ul li a:hover {padding:8px;} -.drop ul li a:hover {background-color:#06f;} diff --git a/NzbDrone.Web/Content/jQueryUI/images/ui-bg_diagonals-thick_30_0b58a2_40x40.png b/NzbDrone.Web/Content/jQueryUI/images/ui-bg_diagonals-thick_30_0b58a2_40x40.png new file mode 100644 index 0000000000000000000000000000000000000000..6b73385d7e4d149b28814cd00f359a66065bda03 GIT binary patch literal 385 zcmV-{0e=38P)c)nziBo|2K^1Ky@fmR^O^H!jX!&VTtv=xXQ z_J`7ZmeEd$!E$*{lca?K;(KEOV~18Sp0if4lS2y_1Fc{H&Y$d77(29r@jSDFogDT~ zse<)RX@{{xE7&ca!ZRh6tSJ&xD=&HzDFubH;$3bwwIGr;?{W{R1>LpLj|P9i80lp2 zmyD6T6-dgG7rk7Uf`EHAnrxC1kXEI*S)5>)S}=hDRUNPW zt9hH0<+gEJe70D_ls^BeT7elK&jKbsE(cMWA8H?cFNJ^W%%8M2b)To(=`}ypGBr;h zHTU$7l)0}Ged>Vu$%x48n#og6W&J$u`-!ba^;6;IUAkw0{$lWS^>bP0l+XkKL3wB| literal 0 HcmV?d00001 diff --git a/NzbDrone.Web/Content/jQueryUI/images/ui-bg_flat_0_0b3e6f_40x100.png b/NzbDrone.Web/Content/jQueryUI/images/ui-bg_flat_0_0b3e6f_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..ec0da7e934928740469aa6eb2bc5d20c4a1a3fef GIT binary patch literal 213 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!N$PA*qrS22FRJ?>EalY(fIbdAy>152*br0 z*Q_g5-^Z(#9&ws6->D{8?|xw!>(SJ^-_E~2@O#IH1xJrI{wb0M-wJ((qR03Hs0cV9x)l9I~hD({an^L HB{Ts5^N2)) literal 0 HcmV?d00001 diff --git a/NzbDrone.Web/Content/jQueryUI/images/ui-bg_flat_0_aaaaaa_40x100.png b/NzbDrone.Web/Content/jQueryUI/images/ui-bg_flat_0_aaaaaa_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..5b5dab2ab7b1c50dea9cfe73dc5a269a92d2d4b4 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FscKIb$B>N1x91EQ4=4yQ7#`R^ z$vje}bP0l+XkK DSH>_4 literal 0 HcmV?d00001 diff --git a/NzbDrone.Web/Content/jQueryUI/images/ui-bg_flat_20_111111_40x100.png b/NzbDrone.Web/Content/jQueryUI/images/ui-bg_flat_20_111111_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..2e9365e9bfc6ff3ad0063eedb1376df2bfb3beca GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FscKIb$B>N1x91EQ4=4yQ7#=wI zTRd8&bP0l+XkK DhyF0+ literal 0 HcmV?d00001 diff --git a/NzbDrone.Web/Content/jQueryUI/images/ui-bg_flat_20_333333_40x100.png b/NzbDrone.Web/Content/jQueryUI/images/ui-bg_flat_20_333333_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..2f2c7a45bbd7c61634394ede600d6bacc1c494a1 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FscKIb$B>N1x91EQ4=4yQ7#_Iv z`+As4$%zYm;;c7~Kd+Iuj%U9o62cnl7#bi-T}qs{k}2VRN1x91EQ4=6AkFle*B z;`?dBfs4(uolQ2$d+-0)SZQ6L6u}wRG&Mn$x>Rm^Ce!>B37;aMGZ;Kw{an^LB{Ts5 Dxeq!o literal 0 HcmV?d00001 diff --git a/NzbDrone.Web/Content/jQueryUI/images/ui-icons_98d2fb_256x240.png b/NzbDrone.Web/Content/jQueryUI/images/ui-icons_98d2fb_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..782df8f978f8a07d67c009d96970a01af5b7299e GIT binary patch literal 5355 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 X_Gc^EhHU=dFY}4IzFMt{L(KmGOd)>$ literal 0 HcmV?d00001 diff --git a/NzbDrone.Web/Content/jQueryUI/images/ui-icons_9ccdfc_256x240.png b/NzbDrone.Web/Content/jQueryUI/images/ui-icons_9ccdfc_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..1d8ac1ac950efda368f2360bb886673b43908a9d GIT binary patch literal 5355 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 X_Gc^EhHU=dFY}4IzFMt{L(KmG+%|p6 literal 0 HcmV?d00001 diff --git a/NzbDrone.Web/Content/jQueryUI/images/ui-icons_ffffff_256x240.png b/NzbDrone.Web/Content/jQueryUI/images/ui-icons_ffffff_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..42f8f992c727ddaa617da224a522e463df690387 GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/NzbDrone.Web/Content/jquery-ui-1.8.8.custom.css b/NzbDrone.Web/Content/jQueryUI/jquery-ui-1.8.14.nzbdrone.css similarity index 81% rename from NzbDrone.Web/Content/jquery-ui-1.8.8.custom.css rename to NzbDrone.Web/Content/jQueryUI/jquery-ui-1.8.14.nzbdrone.css index ef0d93dbc..6c9f2b7ab 100644 --- a/NzbDrone.Web/Content/jquery-ui-1.8.8.custom.css +++ b/NzbDrone.Web/Content/jQueryUI/jquery-ui-1.8.14.nzbdrone.css @@ -1,7 +1,7 @@ /* - * jQuery UI CSS Framework 1.8.8 + * jQuery UI CSS Framework 1.8.14 * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * @@ -42,43 +42,43 @@ /* - * jQuery UI CSS Framework 1.8.8 + * jQuery UI CSS Framework 1.8.14 * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Theming/API * - * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS,%20Tahoma,%20Verdana,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px + * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=&fwDefault=normal&fsDefault=&cornerRadius=0px&bgColorHeader=0b3e6f&bgTextureHeader=01_flat.png&bgImgOpacityHeader=0&borderColorHeader=0b3e6f&fcHeader=f6f6f6&iconColorHeader=98d2fb&bgColorContent=111111&bgTextureContent=01_flat.png&bgImgOpacityContent=20&borderColorContent=000000&fcContent=d9d9d9&iconColorContent=9ccdfc&bgColorDefault=333333&bgTextureDefault=01_flat.png&bgImgOpacityDefault=20&borderColorDefault=333333&fcDefault=ffffff&iconColorDefault=9ccdfc&bgColorHover=00498f&bgTextureHover=01_flat.png&bgImgOpacityHover=40&borderColorHover=222222&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=00498f&bgTextureActive=01_flat.png&bgImgOpacityActive=40&borderColorActive=222222&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=0b58a2&bgTextureHighlight=08_diagonals_thick.png&bgImgOpacityHighlight=30&borderColorHighlight=052f57&fcHighlight=ffffff&iconColorHighlight=ffffff&bgColorError=a32d00&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=30&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffffff&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px */ /* Component containers ----------------------------------*/ -.ui-widget { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1.1em; } +.ui-widget { font-family: ; font-size: ; } .ui-widget .ui-widget { font-size: 1em; } -.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1em; } -.ui-widget-content { border: 1px solid #dddddd; background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; } -.ui-widget-content a { color: #333333; } -.ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; } -.ui-widget-header a { color: #ffffff; } +.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: ; font-size: 1em; } +.ui-widget-content { border: 1px solid #000000; background: #111111 url(images/ui-bg_flat_20_111111_40x100.png) 50% 50% repeat-x; color: #d9d9d9; } +.ui-widget-content a { color: #d9d9d9; } +.ui-widget-header { border: 1px solid #0b3e6f; background: #0b3e6f url(images/ui-bg_flat_0_0b3e6f_40x100.png) 50% 50% repeat-x; color: #f6f6f6; font-weight: bold; } +.ui-widget-header a { color: #f6f6f6; } /* Interaction states ----------------------------------*/ -.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; } -.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; } -.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; } -.ui-state-hover a, .ui-state-hover a:hover { color: #c77405; text-decoration: none; } -.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; } -.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; text-decoration: none; } +.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #333333; background: #333333 url(images/ui-bg_flat_20_333333_40x100.png) 50% 50% repeat-x; font-weight: normal; color: #ffffff; } +.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #ffffff; text-decoration: none; } +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #222222; background: #00498f url(images/ui-bg_flat_40_00498f_40x100.png) 50% 50% repeat-x; font-weight: normal; color: #ffffff; } +.ui-state-hover a, .ui-state-hover a:hover { color: #ffffff; text-decoration: none; } +.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #222222; background: #00498f url(images/ui-bg_flat_40_00498f_40x100.png) 50% 50% repeat-x; font-weight: normal; color: #ffffff; } +.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #ffffff; text-decoration: none; } .ui-widget :active { outline: none; } /* Interaction Cues ----------------------------------*/ -.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fed22f; background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; } -.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; } -.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; } +.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #052f57; background: #0b58a2 url(images/ui-bg_diagonals-thick_30_0b58a2_40x40.png) 50% 50% repeat; color: #ffffff; } +.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #ffffff; } +.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #a32d00 url(images/ui-bg_diagonals-thick_30_a32d00_40x40.png) 50% 50% repeat; color: #ffffff; } .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; } .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; } .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } @@ -89,14 +89,14 @@ ----------------------------------*/ /* states and images */ -.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); } -.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } -.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } -.ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); } -.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); } -.ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); } -.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); } -.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); } +.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_9ccdfc_256x240.png); } +.ui-widget-content .ui-icon {background-image: url(images/ui-icons_9ccdfc_256x240.png); } +.ui-widget-header .ui-icon {background-image: url(images/ui-icons_98d2fb_256x240.png); } +.ui-state-default .ui-icon { background-image: url(images/ui-icons_9ccdfc_256x240.png); } +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } +.ui-state-active .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } +.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } /* positioning */ .ui-icon-carat-1-n { background-position: 0 0; } @@ -280,29 +280,24 @@ ----------------------------------*/ /* Corner radius */ -.ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; } -.ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; } -.ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; } -.ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } -.ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; } -.ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } -.ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } -.ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; } -.ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; } +.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 0px; -webkit-border-top-left-radius: 0px; -khtml-border-top-left-radius: 0px; border-top-left-radius: 0px; } +.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 0px; -webkit-border-top-right-radius: 0px; -khtml-border-top-right-radius: 0px; border-top-right-radius: 0px; } +.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 0px; -webkit-border-bottom-left-radius: 0px; -khtml-border-bottom-left-radius: 0px; border-bottom-left-radius: 0px; } +.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 0px; -webkit-border-bottom-right-radius: 0px; -khtml-border-bottom-right-radius: 0px; border-bottom-right-radius: 0px; } /* Overlays */ -.ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .50;filter:Alpha(Opacity=50); } -.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }/* - * jQuery UI Resizable 1.8.8 +.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); } +.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/* + * jQuery UI Resizable 1.8.14 * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * * http://docs.jquery.com/UI/Resizable#theming */ .ui-resizable { position: relative;} -.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;} +.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; } .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } @@ -312,9 +307,9 @@ .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* - * jQuery UI Selectable 1.8.8 + * jQuery UI Selectable 1.8.14 * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * @@ -322,9 +317,9 @@ */ .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; } /* - * jQuery UI Accordion 1.8.8 + * jQuery UI Accordion 1.8.14 * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * @@ -339,10 +334,11 @@ .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; } .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; } -.ui-accordion .ui-accordion-content-active { display: block; }/* - * jQuery UI Autocomplete 1.8.8 +.ui-accordion .ui-accordion-content-active { display: block; } +/* + * jQuery UI Autocomplete 1.8.14 * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * @@ -354,7 +350,7 @@ * html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ /* - * jQuery UI Menu 1.8.8 + * jQuery UI Menu 1.8.14 * * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -393,9 +389,9 @@ margin: -1px; } /* - * jQuery UI Button 1.8.8 + * jQuery UI Button 1.8.14 * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * @@ -431,9 +427,9 @@ input.ui-button { padding: .4em 1em; } /* workarounds */ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ /* - * jQuery UI Dialog 1.8.8 + * jQuery UI Dialog 1.8.14 * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * @@ -452,9 +448,9 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } .ui-draggable .ui-dialog-titlebar { cursor: move; } /* - * jQuery UI Slider 1.8.8 + * jQuery UI Slider 1.8.14 * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * @@ -475,9 +471,9 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } .ui-slider-vertical .ui-slider-range-min { bottom: 0; } .ui-slider-vertical .ui-slider-range-max { top: 0; }/* - * jQuery UI Tabs 1.8.8 + * jQuery UI Tabs 1.8.14 * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * @@ -493,9 +489,9 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } .ui-tabs .ui-tabs-hide { display: none !important; } /* - * jQuery UI Datepicker 1.8.8 + * jQuery UI Datepicker 1.8.14 * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * @@ -533,7 +529,7 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } -.ui-datepicker-row-break { clear:both; width:100%; } +.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; } /* RTL support */ .ui-datepicker-rtl { direction: rtl; } @@ -560,9 +556,9 @@ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra pad width: 200px; /*must have*/ height: 200px; /*must have*/ }/* - * jQuery UI Progressbar 1.8.8 + * jQuery UI Progressbar 1.8.14 * - * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about) + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license * diff --git a/NzbDrone.Web/Content/jquery-simpledropdown.css b/NzbDrone.Web/Content/jquery-simpledropdown.css deleted file mode 100644 index a55d488a8..000000000 --- a/NzbDrone.Web/Content/jquery-simpledropdown.css +++ /dev/null @@ -1,34 +0,0 @@ -/* -Name: jQuery Simple Drop Down Plugin Stylesheet -Author: Etienne Fardet -Version: 1.2 -*/ - -/* Demo common styles - Not needed to make the plugin work */ -/* -body {font-family:Verdana, Geneva, sans-serif; font-size:14px;width:40%;margin:0 auto;} -a {text-decoration:none;color:#039;} -h3 {clear:both;color: #039;} -pre {border:1px solid black; padding:8px;width:700px; margin:20px;} -strong {color: #093;} -.requirements {list-style:square;} -.author {color: #003;font-size: 12px;font-weight: bold;font-style: italic;} -*/ - -/* Demo divs - Lists need to be placed in a div with an assigned ID that will be called within the page as a parameter for the main plugin function */ -/* -#dropdown1 {position:relative;z-index:2;} -#dropdown2 {position:relative;z-index:1;} -#dropdown3 {position:relative;z-index:0;margin-left:170px;} -*/ - -/* Necessary Styles to make the demo work - Change background colors and colors to match your needs */ -.dropdown {background:url(./images/arrow.png) no-repeat 10px 8px #D9D6D5;color:#D9D6D5;-khtml-border-radius:8px;border-radius:8px;-moz-border-radius:8px;-webkit-border-radius:8px;cursor:pointer;margin:0;padding:0;position:absolute;} -.dropdown a {text-decoration:none; color:#000;} -.dropdown {list-style-type:none;margin:0;padding:0;width:120;margin:0 auto;} -.drop ul {list-style-type:none;margin:0;padding:0;} -.drop ul li:first-child {border-top:1px solid #D9D6D5;} -.drop ul li {display:none; -moz-border-radius:0;-webkit-border-radius:0;background-color:#D9D6D5;padding:0px; padding-left:4px; padding-right:4px} -.drop ul li:last-child {display:none;-khtml-border-radius:0 0 8px 8px;border-radius:0 0 8px 8px;-moz-border-radius:0 0 8px 8px;-webkit-border-radius:0 0 8px 8px;} -.selected {padding:4px;color:#000;} -.drop ul li:hover {background-color:#06f;} diff --git a/NzbDrone.Web/Content/jquery-ui.css b/NzbDrone.Web/Content/jquery-ui.css deleted file mode 100644 index ccbf186f0..000000000 --- a/NzbDrone.Web/Content/jquery-ui.css +++ /dev/null @@ -1,405 +0,0 @@ -/* -* jQuery UI CSS Framework -* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) -* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. -*/ - -/* Layout helpers -----------------------------------*/ -.ui-helper-hidden { display: none; } -.ui-helper-hidden-accessible { position: absolute; left: -99999999px; } -.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } -.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } -.ui-helper-clearfix { display: inline-block; } -/* required comment for clearfix to work in Opera \*/ -* html .ui-helper-clearfix { height:1%; } -.ui-helper-clearfix { display:block; } -/* end clearfix */ -.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } - - -/* Interaction Cues -----------------------------------*/ -.ui-state-disabled { cursor: default !important; } - - -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } - - -/* Misc visuals -----------------------------------*/ - -/* Overlays */ -.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } - -/* -* jQuery UI CSS Framework -* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) -* Dual licensed under the MIT (MIT-LICENSE.txt) and GPL (GPL-LICENSE.txt) licenses. -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande,%20Lucida%20Sans,%20Arial,%20sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=3px&bgColorHeader=e7eef3&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=100&borderColorHeader=b2c7d7&fcHeader=222222&iconColorHeader=72a7cf&bgColorContent=f9f9f9&bgTextureContent=04_highlight_hard.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=362b36&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=80&borderColorDefault=cccccc&fcDefault=444444&iconColorDefault=888888&bgColorHover=f0f0f0&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=b2c7d7&fcHover=0b5b98&iconColorHover=2694e8&bgColorActive=99c2ff&bgTextureActive=02_glass.png&bgImgOpacityActive=50&borderColorActive=2694e8&fcActive=000000&iconColorActive=ffffff&bgColorHighlight=fbf5d0&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=f9dd34&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=444444&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=15&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=07_diagonals_small.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=0px&offsetTopShadow=4px&offsetLeftShadow=4px&cornerRadiusShadow=4px -*/ - - -/* Component containers -----------------------------------*/ -.ui-widget { font-family: Lucida Grande, Lucida Sans, Arial, sans-serif; font-size: 1.1em; } -.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Lucida Grande, Lucida Sans, Arial, sans-serif; font-size: 1em; } -.ui-widget-content { border: 1px solid #dddddd; background: #f9f9f9 url(images/ui-bg_highlight-hard_100_f9f9f9_1x100.png) 50% top repeat-x; color: #362b36; } -.ui-widget-content a { color: #362b36; } -.ui-widget-header { border: 1px solid #b2c7d7; background: #e7eef3 url(images/ui-bg_highlight-soft_100_e7eef3_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; } -.ui-widget-header a { color: #222222; } - -/* Interaction states -----------------------------------*/ -.ui-state-default, .ui-widget-content .ui-state-default { border: 1px solid #cccccc; background: #e6e6e6 url(images/ui-bg_glass_80_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #444444; outline: none; } -.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #444444; text-decoration: none; outline: none; } -.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus { border: 1px solid #b2c7d7; background: #f0f0f0 url(images/ui-bg_glass_100_f0f0f0_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #0b5b98; outline: none; } -.ui-state-hover a, .ui-state-hover a:hover { color: #0b5b98; text-decoration: none; outline: none; } -.ui-state-active, .ui-widget-content .ui-state-active { border: 1px solid #2694e8; background: #99c2ff url(images/ui-bg_glass_50_99c2ff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #000000; outline: none; } -.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #000000; outline: none; text-decoration: none; } - -/* Interaction Cues -----------------------------------*/ -.ui-state-highlight, .ui-widget-content .ui-state-highlight {border: 1px solid #f9dd34; background: #fbf5d0 url(images/ui-bg_glass_55_fbf5d0_1x400.png) 50% 50% repeat-x; color: #363636; } -.ui-state-highlight a, .ui-widget-content .ui-state-highlight a { color: #363636; } -.ui-state-error, .ui-widget-content .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; } -.ui-state-error a, .ui-widget-content .ui-state-error a { color: #cd0a0a; } -.ui-state-error-text, .ui-widget-content .ui-state-error-text { color: #cd0a0a; } -.ui-state-disabled, .ui-widget-content .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } -.ui-priority-primary, .ui-widget-content .ui-priority-primary { font-weight: bold; } -.ui-priority-secondary, .ui-widget-content .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } - -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); } -.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } -.ui-widget-header .ui-icon {background-image: url(images/ui-icons_72a7cf_256x240.png); } -.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); } -.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_2694e8_256x240.png); } -.ui-state-active .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } -.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); } -.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); } - -/* positioning */ -.ui-icon-carat-1-n { background-position: 0 0; } -.ui-icon-carat-1-ne { background-position: -16px 0; } -.ui-icon-carat-1-e { background-position: -32px 0; } -.ui-icon-carat-1-se { background-position: -48px 0; } -.ui-icon-carat-1-s { background-position: -64px 0; } -.ui-icon-carat-1-sw { background-position: -80px 0; } -.ui-icon-carat-1-w { background-position: -96px 0; } -.ui-icon-carat-1-nw { background-position: -112px 0; } -.ui-icon-carat-2-n-s { background-position: -128px 0; } -.ui-icon-carat-2-e-w { background-position: -144px 0; } -.ui-icon-triangle-1-n { background-position: 0 -16px; } -.ui-icon-triangle-1-ne { background-position: -16px -16px; } -.ui-icon-triangle-1-e { background-position: -32px -16px; } -.ui-icon-triangle-1-se { background-position: -48px -16px; } -.ui-icon-triangle-1-s { background-position: -64px -16px; } -.ui-icon-triangle-1-sw { background-position: -80px -16px; } -.ui-icon-triangle-1-w { background-position: -96px -16px; } -.ui-icon-triangle-1-nw { background-position: -112px -16px; } -.ui-icon-triangle-2-n-s { background-position: -128px -16px; } -.ui-icon-triangle-2-e-w { background-position: -144px -16px; } -.ui-icon-arrow-1-n { background-position: 0 -32px; } -.ui-icon-arrow-1-ne { background-position: -16px -32px; } -.ui-icon-arrow-1-e { background-position: -32px -32px; } -.ui-icon-arrow-1-se { background-position: -48px -32px; } -.ui-icon-arrow-1-s { background-position: -64px -32px; } -.ui-icon-arrow-1-sw { background-position: -80px -32px; } -.ui-icon-arrow-1-w { background-position: -96px -32px; } -.ui-icon-arrow-1-nw { background-position: -112px -32px; } -.ui-icon-arrow-2-n-s { background-position: -128px -32px; } -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } -.ui-icon-arrow-2-e-w { background-position: -160px -32px; } -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } -.ui-icon-arrowstop-1-n { background-position: -192px -32px; } -.ui-icon-arrowstop-1-e { background-position: -208px -32px; } -.ui-icon-arrowstop-1-s { background-position: -224px -32px; } -.ui-icon-arrowstop-1-w { background-position: -240px -32px; } -.ui-icon-arrowthick-1-n { background-position: 0 -48px; } -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } -.ui-icon-arrowthick-1-e { background-position: -32px -48px; } -.ui-icon-arrowthick-1-se { background-position: -48px -48px; } -.ui-icon-arrowthick-1-s { background-position: -64px -48px; } -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } -.ui-icon-arrowthick-1-w { background-position: -96px -48px; } -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } -.ui-icon-arrow-4 { background-position: 0 -80px; } -.ui-icon-arrow-4-diag { background-position: -16px -80px; } -.ui-icon-extlink { background-position: -32px -80px; } -.ui-icon-newwin { background-position: -48px -80px; } -.ui-icon-refresh { background-position: -64px -80px; } -.ui-icon-shuffle { background-position: -80px -80px; } -.ui-icon-transfer-e-w { background-position: -96px -80px; } -.ui-icon-transferthick-e-w { background-position: -112px -80px; } -.ui-icon-folder-collapsed { background-position: 0 -96px; } -.ui-icon-folder-open { background-position: -16px -96px; } -.ui-icon-document { background-position: -32px -96px; } -.ui-icon-document-b { background-position: -48px -96px; } -.ui-icon-note { background-position: -64px -96px; } -.ui-icon-mail-closed { background-position: -80px -96px; } -.ui-icon-mail-open { background-position: -96px -96px; } -.ui-icon-suitcase { background-position: -112px -96px; } -.ui-icon-comment { background-position: -128px -96px; } -.ui-icon-person { background-position: -144px -96px; } -.ui-icon-print { background-position: -160px -96px; } -.ui-icon-trash { background-position: -176px -96px; } -.ui-icon-locked { background-position: -192px -96px; } -.ui-icon-unlocked { background-position: -208px -96px; } -.ui-icon-bookmark { background-position: -224px -96px; } -.ui-icon-tag { background-position: -240px -96px; } -.ui-icon-home { background-position: 0 -112px; } -.ui-icon-flag { background-position: -16px -112px; } -.ui-icon-calendar { background-position: -32px -112px; } -.ui-icon-cart { background-position: -48px -112px; } -.ui-icon-pencil { background-position: -64px -112px; } -.ui-icon-clock { background-position: -80px -112px; } -.ui-icon-disk { background-position: -96px -112px; } -.ui-icon-calculator { background-position: -112px -112px; } -.ui-icon-zoomin { background-position: -128px -112px; } -.ui-icon-zoomout { background-position: -144px -112px; } -.ui-icon-search { background-position: -160px -112px; } -.ui-icon-wrench { background-position: -176px -112px; } -.ui-icon-gear { background-position: -192px -112px; } -.ui-icon-heart { background-position: -208px -112px; } -.ui-icon-star { background-position: -224px -112px; } -.ui-icon-link { background-position: -240px -112px; } -.ui-icon-cancel { background-position: 0 -128px; } -.ui-icon-plus { background-position: -16px -128px; } -.ui-icon-plusthick { background-position: -32px -128px; } -.ui-icon-minus { background-position: -48px -128px; } -.ui-icon-minusthick { background-position: -64px -128px; } -.ui-icon-close { background-position: -80px -128px; } -.ui-icon-closethick { background-position: -96px -128px; } -.ui-icon-key { background-position: -112px -128px; } -.ui-icon-lightbulb { background-position: -128px -128px; } -.ui-icon-scissors { background-position: -144px -128px; } -.ui-icon-clipboard { background-position: -160px -128px; } -.ui-icon-copy { background-position: -176px -128px; } -.ui-icon-contact { background-position: -192px -128px; } -.ui-icon-image { background-position: -208px -128px; } -.ui-icon-video { background-position: -224px -128px; } -.ui-icon-script { background-position: -240px -128px; } -.ui-icon-alert { background-position: 0 -144px; } -.ui-icon-info { background-position: -16px -144px; } -.ui-icon-notice { background-position: -32px -144px; } -.ui-icon-help { background-position: -48px -144px; } -.ui-icon-check { background-position: -64px -144px; } -.ui-icon-bullet { background-position: -80px -144px; } -.ui-icon-radio-off { background-position: -96px -144px; } -.ui-icon-radio-on { background-position: -112px -144px; } -.ui-icon-pin-w { background-position: -128px -144px; } -.ui-icon-pin-s { background-position: -144px -144px; } -.ui-icon-play { background-position: 0 -160px; } -.ui-icon-pause { background-position: -16px -160px; } -.ui-icon-seek-next { background-position: -32px -160px; } -.ui-icon-seek-prev { background-position: -48px -160px; } -.ui-icon-seek-end { background-position: -64px -160px; } -.ui-icon-seek-first { background-position: -80px -160px; } -.ui-icon-stop { background-position: -96px -160px; } -.ui-icon-eject { background-position: -112px -160px; } -.ui-icon-volume-off { background-position: -128px -160px; } -.ui-icon-volume-on { background-position: -144px -160px; } -.ui-icon-power { background-position: 0 -176px; } -.ui-icon-signal-diag { background-position: -16px -176px; } -.ui-icon-signal { background-position: -32px -176px; } -.ui-icon-battery-0 { background-position: -48px -176px; } -.ui-icon-battery-1 { background-position: -64px -176px; } -.ui-icon-battery-2 { background-position: -80px -176px; } -.ui-icon-battery-3 { background-position: -96px -176px; } -.ui-icon-circle-plus { background-position: 0 -192px; } -.ui-icon-circle-minus { background-position: -16px -192px; } -.ui-icon-circle-close { background-position: -32px -192px; } -.ui-icon-circle-triangle-e { background-position: -48px -192px; } -.ui-icon-circle-triangle-s { background-position: -64px -192px; } -.ui-icon-circle-triangle-w { background-position: -80px -192px; } -.ui-icon-circle-triangle-n { background-position: -96px -192px; } -.ui-icon-circle-arrow-e { background-position: -112px -192px; } -.ui-icon-circle-arrow-s { background-position: -128px -192px; } -.ui-icon-circle-arrow-w { background-position: -144px -192px; } -.ui-icon-circle-arrow-n { background-position: -160px -192px; } -.ui-icon-circle-zoomin { background-position: -176px -192px; } -.ui-icon-circle-zoomout { background-position: -192px -192px; } -.ui-icon-circle-check { background-position: -208px -192px; } -.ui-icon-circlesmall-plus { background-position: 0 -208px; } -.ui-icon-circlesmall-minus { background-position: -16px -208px; } -.ui-icon-circlesmall-close { background-position: -32px -208px; } -.ui-icon-squaresmall-plus { background-position: -48px -208px; } -.ui-icon-squaresmall-minus { background-position: -64px -208px; } -.ui-icon-squaresmall-close { background-position: -80px -208px; } -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } -.ui-icon-grip-solid-vertical { background-position: -32px -224px; } -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } -.ui-icon-grip-diagonal-se { background-position: -80px -224px; } - - -/* Misc visuals -----------------------------------*/ - -/* Corner radius */ -.ui-corner-tl { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; } -.ui-corner-tr { -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; } -.ui-corner-bl { -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; } -.ui-corner-br { -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; } -.ui-corner-top { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; } -.ui-corner-bottom { -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; } -.ui-corner-right { -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; } -.ui-corner-left { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; } -.ui-corner-all { -moz-border-radius: 3px; -webkit-border-radius: 3px; } - -/* Overlays */ -.ui-widget-overlay { background: #444444 url(images/ui-bg_diagonals-thick_15_444444_40x40.png) 50% 50% repeat; opacity: .30;filter:Alpha(Opacity=30); } -.ui-widget-shadow { margin: 4px 0 0 4px; padding: 0px; background: #aaaaaa url(images/ui-bg_diagonals-small_0_aaaaaa_40x40.png) 50% 50% repeat; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 4px; -webkit-border-radius: 4px; }/* Resizable -----------------------------------*/ -.ui-resizable { position: relative;} -.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;} -.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } -.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0px; } -.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0px; } -.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0px; height: 100%; } -.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0px; height: 100%; } -.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } -.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } -.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } -.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/* Accordion -----------------------------------*/ -.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; } -.ui-accordion .ui-accordion-li-fix { display: inline; } -.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; } -.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em 2.2em; } -.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } -.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; } -.ui-accordion .ui-accordion-content-active { display: block; }/* Dialog -----------------------------------*/ -.ui-dialog { position: relative; padding: .2em; width: 300px; } -.ui-dialog .ui-dialog-titlebar { padding: .5em .3em .3em 1em; position: relative; } -.ui-dialog .ui-dialog-title { float: left; margin: .1em 0 .2em; } -.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } -.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } -.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } -.ui-dialog .ui-dialog-content { border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } -.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } -.ui-dialog .ui-dialog-buttonpane button { float: right; margin: .5em .4em .5em 0; cursor: pointer; padding: .2em .6em .3em .6em; line-height: 1.4em; width:auto; overflow:visible; } -.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } -.ui-draggable .ui-dialog-titlebar { cursor: move; } -/* Slider -----------------------------------*/ -.ui-slider { position: relative; text-align: left; } -.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } -.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; } - -.ui-slider-horizontal { height: .8em; } -.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } -.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } -.ui-slider-horizontal .ui-slider-range-min { left: 0; } -.ui-slider-horizontal .ui-slider-range-max { right: 0; } - -.ui-slider-vertical { width: .8em; height: 100px; } -.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } -.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } -.ui-slider-vertical .ui-slider-range-min { bottom: 0; } -.ui-slider-vertical .ui-slider-range-max { top: 0; }/* Tabs -----------------------------------*/ -.ui-tabs { padding: .2em; zoom: 1; } -.ui-tabs .ui-tabs-nav { list-style: none; position: relative; padding: .2em .2em 0; } -.ui-tabs .ui-tabs-nav li { position: relative; float: left; border-bottom-width: 0 !important; margin: 0 .2em -1px 0; padding: 0; } -.ui-tabs .ui-tabs-nav li a { float: left; text-decoration: none; padding: .5em 1em; } -.ui-tabs .ui-tabs-nav li.ui-tabs-selected { padding-bottom: 1px; border-bottom-width: 0; } -.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; } -.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ -.ui-tabs .ui-tabs-panel { padding: 1em 1.4em; display: block; border-width: 0; background: none; } -.ui-tabs .ui-tabs-hide { display: none !important; } -/* Datepicker -----------------------------------*/ -.ui-datepicker { width: 17em; padding: .2em .2em 0; } -.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } -.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } -.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } -.ui-datepicker .ui-datepicker-prev { left:2px; } -.ui-datepicker .ui-datepicker-next { right:2px; } -.ui-datepicker .ui-datepicker-prev-hover { left:1px; } -.ui-datepicker .ui-datepicker-next-hover { right:1px; } -.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } -.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } -.ui-datepicker .ui-datepicker-title select { float:left; font-size:1em; margin:1px 0; } -.ui-datepicker select.ui-datepicker-month-year {width: 100%;} -.ui-datepicker select.ui-datepicker-month, -.ui-datepicker select.ui-datepicker-year { width: 49%;} -.ui-datepicker .ui-datepicker-title select.ui-datepicker-year { float: right; } -.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } -.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } -.ui-datepicker td { border: 0; padding: 1px; } -.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } -.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } -.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } - -/* with multiple calendars */ -.ui-datepicker.ui-datepicker-multi { width:auto; } -.ui-datepicker-multi .ui-datepicker-group { float:left; } -.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } -.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } -.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } -.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } -.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } -.ui-datepicker-row-break { clear:both; width:100%; } - -/* RTL support */ -.ui-datepicker-rtl { direction: rtl; } -.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } -.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } -.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } -.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } -.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } -.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } -.ui-datepicker-rtl .ui-datepicker-group { float:right; } -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } - -/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ -.ui-datepicker-cover { - display: none; /*sorry for IE5*/ - display/**/: block; /*sorry for IE5*/ - position: absolute; /*must have*/ - z-index: -1; /*must have*/ - filter: mask(); /*must have*/ - top: -4px; /*must have*/ - left: -4px; /*must have*/ - width: 200px; /*must have*/ - height: 200px; /*must have*/ -}/* Progressbar -----------------------------------*/ -.ui-progressbar { height:2em; text-align: left; } -.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; } \ No newline at end of file diff --git a/NzbDrone.Web/Content/jquery-ui.custom.css b/NzbDrone.Web/Content/jquery-ui.custom.css deleted file mode 100644 index 6201a1cdd..000000000 --- a/NzbDrone.Web/Content/jquery-ui.custom.css +++ /dev/null @@ -1,53 +0,0 @@ -/* Customisation of jQuery-ui classes */ - -.ui-state-error -{ - padding: 3px; - padding-left : 10px; -} - -.ui-state-highlight { - padding: 3px; - padding-left : 10px; -} - -.ui-icon -{ - margin-top: 2px; -} - -.ui-autocomplete { position: absolute; cursor: default; } - -/* workarounds */ -* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ - -.ui-menu { - list-style:none; - padding: 2px; - margin: 0; - display:block; - float: left; -} -.ui-menu .ui-menu { - margin-top: -3px; -} -.ui-menu .ui-menu-item { - margin:0; - padding: 0; - zoom: 1; - float: left; - clear: left; - width: 100%; -} -.ui-menu .ui-menu-item a { - text-decoration:none; - display:block; - padding:.2em .4em; - line-height:1.5; - zoom:1; -} -.ui-menu .ui-menu-item a.ui-state-hover, -.ui-menu .ui-menu-item a.ui-state-active { - font-weight: normal; - margin: -1px; -} \ No newline at end of file diff --git a/NzbDrone.Web/NzbDrone.Web.csproj b/NzbDrone.Web/NzbDrone.Web.csproj index 272237079..cdc7f718a 100644 --- a/NzbDrone.Web/NzbDrone.Web.csproj +++ b/NzbDrone.Web/NzbDrone.Web.csproj @@ -183,10 +183,20 @@ + + + + + + + + + + + - @@ -230,14 +240,10 @@ - - - - - + diff --git a/NzbDrone.Web/Views/Shared/_Layout.cshtml b/NzbDrone.Web/Views/Shared/_Layout.cshtml index 5e0b211fb..9bb2f830f 100644 --- a/NzbDrone.Web/Views/Shared/_Layout.cshtml +++ b/NzbDrone.Web/Views/Shared/_Layout.cshtml @@ -5,16 +5,16 @@ NZBDrone - - - + + + - + @@ -24,6 +24,7 @@ + @MvcMiniProfiler.MiniProfiler.RenderIncludes() @RenderSection("HeaderContent", required: false) From 06eeea6a5c04d31fffd43b11b395cf01e64302f9 Mon Sep 17 00:00:00 2001 From: "kay.one" Date: Sat, 2 Jul 2011 15:19:23 -0700 Subject: [PATCH 08/10] more notification tweaks --- NzbDrone.Web/Scripts/Notification.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/NzbDrone.Web/Scripts/Notification.js b/NzbDrone.Web/Scripts/Notification.js index c763271f2..5230a3f3d 100644 --- a/NzbDrone.Web/Scripts/Notification.js +++ b/NzbDrone.Web/Scripts/Notification.js @@ -1,9 +1,9 @@ -$(window).load(function () { +$(document).ready(function () { var speed = 700; var isShown = false; var currentMessage = ""; - $.doTimeout(200, refreshNotifications); + $.doTimeout(500, refreshNotifications); From 5a4e8330b26be36140d39b718682b9c4a5a868fb Mon Sep 17 00:00:00 2001 From: "kay.one" Date: Sat, 2 Jul 2011 16:12:20 -0700 Subject: [PATCH 09/10] Updated petapoco to 4.0.3 --- NzbDrone.Core.Test/SeriesProviderTest.cs | 2 - NzbDrone.Core.Test/TvDbProviderTest.cs | 5 +- NzbDrone.Core/Datastore/CustomeMapper.cs | 16 +- NzbDrone.Core/Datastore/PetaPoco/PetaPoco.cs | 3630 +++++++++--------- NzbDrone.Core/Providers/TvDbProvider.cs | 5 +- 5 files changed, 1861 insertions(+), 1797 deletions(-) diff --git a/NzbDrone.Core.Test/SeriesProviderTest.cs b/NzbDrone.Core.Test/SeriesProviderTest.cs index f04eae442..2e553989a 100644 --- a/NzbDrone.Core.Test/SeriesProviderTest.cs +++ b/NzbDrone.Core.Test/SeriesProviderTest.cs @@ -10,8 +10,6 @@ using NzbDrone.Core.Providers.Core; using NzbDrone.Core.Repository; using NzbDrone.Core.Repository.Quality; using NzbDrone.Core.Test.Framework; -using PetaPoco; -using TvdbLib.Data; // ReSharper disable InconsistentNaming namespace NzbDrone.Core.Test diff --git a/NzbDrone.Core.Test/TvDbProviderTest.cs b/NzbDrone.Core.Test/TvDbProviderTest.cs index 8b35335c4..8d5374482 100644 --- a/NzbDrone.Core.Test/TvDbProviderTest.cs +++ b/NzbDrone.Core.Test/TvDbProviderTest.cs @@ -85,16 +85,17 @@ namespace NzbDrone.Core.Test } //assert - seasonsNumbers.Should().HaveCount(8); + seasonsNumbers.Should().HaveCount(7); seasons[1].Should().HaveCount(23); seasons[2].Should().HaveCount(19); seasons[3].Should().HaveCount(16); seasons[4].Should().HaveCount(20); seasons[5].Should().HaveCount(18); + seasons[6].Should().HaveCount(19); foreach (var season in seasons) { - season.Value.Should().OnlyHaveUniqueItems(); + season.Value.Should().OnlyHaveUniqueItems("Season {0}", season.Key); } //Make sure no episode number is skipped diff --git a/NzbDrone.Core/Datastore/CustomeMapper.cs b/NzbDrone.Core/Datastore/CustomeMapper.cs index e938aabdb..14979cbe4 100644 --- a/NzbDrone.Core/Datastore/CustomeMapper.cs +++ b/NzbDrone.Core/Datastore/CustomeMapper.cs @@ -1,17 +1,18 @@ using System; +using System.Reflection; using PetaPoco; namespace NzbDrone.Core.Datastore { public class CustomeMapper : DefaultMapper { - public override Func GetFromDbConverter(DestinationInfo destinationInfo, Type sourceType) + public override Func GetFromDbConverter(Type destinationType, Type sourceType) { - if ((sourceType == typeof(Int32) || sourceType == typeof(Int64)) && destinationInfo.Type.IsGenericType && destinationInfo.Type.GetGenericTypeDefinition() == typeof(Nullable<>)) + if ((sourceType == typeof(Int32) || sourceType == typeof(Int64)) && destinationType.IsGenericType && destinationType.GetGenericTypeDefinition() == typeof(Nullable<>)) { // If it is NULLABLE, then get the underlying type. eg if "Nullable" then this will return just "int" - Type genericArgument = destinationInfo.Type.GetGenericArguments()[0]; + Type genericArgument = destinationType.GetGenericArguments()[0]; if (genericArgument == typeof(DayOfWeek)) { return delegate(object s) @@ -30,7 +31,14 @@ namespace NzbDrone.Core.Datastore }; } - return base.GetFromDbConverter(destinationInfo, sourceType); + return base.GetFromDbConverter(destinationType, sourceType); + } + + public override Func GetFromDbConverter(PropertyInfo propertyInfo, Type sourceType) + { + return GetFromDbConverter(propertyInfo.PropertyType, sourceType); } } + + } \ No newline at end of file diff --git a/NzbDrone.Core/Datastore/PetaPoco/PetaPoco.cs b/NzbDrone.Core/Datastore/PetaPoco/PetaPoco.cs index e193fdff4..d03718ec8 100644 --- a/NzbDrone.Core/Datastore/PetaPoco/PetaPoco.cs +++ b/NzbDrone.Core/Datastore/PetaPoco/PetaPoco.cs @@ -1,4 +1,4 @@ -/* PetaPoco v4.0.2 - A Tiny ORMish thing for your POCO's. +/* PetaPoco v4.0.3 - A Tiny ORMish thing for your POCO's. * Copyright © 2011 Topten Software. All Rights Reserved. * * Apache License 2.0 - http://www.toptensoftware.com/petapoco/license @@ -13,135 +13,139 @@ using System; using System.Collections; using System.Collections.Generic; +using System.Linq; +using System.Text; using System.Configuration; -using System.Data; using System.Data.Common; -using System.Diagnostics; -using System.Linq; -using System.Linq.Expressions; +using System.Data; +using System.Text.RegularExpressions; using System.Reflection; using System.Reflection.Emit; -using System.Text; -using System.Text.RegularExpressions; -using System.Threading; -using MvcMiniProfiler; +using System.Linq.Expressions; + namespace PetaPoco { - // Poco's marked [Explicit] require all column properties to be marked - [AttributeUsage(AttributeTargets.Class)] - public class ExplicitColumnsAttribute : Attribute - { - } - // For non-explicit pocos, causes a property to be ignored - [AttributeUsage(AttributeTargets.Property)] - public class IgnoreAttribute : Attribute - { - } - - // For explicit pocos, marks property as a column - [AttributeUsage(AttributeTargets.Property)] - public class ColumnAttribute : Attribute - { - public ColumnAttribute() { } - public ColumnAttribute(string name) { Name = name; } - public string Name { get; set; } - } - - // For explicit pocos, marks property as a column - [AttributeUsage(AttributeTargets.Property)] - public class ResultColumnAttribute : ColumnAttribute - { - public ResultColumnAttribute() { } - public ResultColumnAttribute(string name) : base(name) { } - } - - // Specify the table name of a poco - [AttributeUsage(AttributeTargets.Class)] - public class TableNameAttribute : Attribute - { - public TableNameAttribute(string tableName) - { - Value = tableName; - } - public string Value { get; private set; } - } - - // Specific the primary key of a poco class (and optional sequence name for Oracle) - [AttributeUsage(AttributeTargets.Class)] - public class PrimaryKeyAttribute : Attribute - { - public PrimaryKeyAttribute(string primaryKey) - { - Value = primaryKey; - autoIncrement = true; - } - - public string Value { get; private set; } - public string sequenceName { get; set; } - public bool autoIncrement { get; set; } - } - - [AttributeUsage(AttributeTargets.Property)] - public class AutoJoinAttribute : Attribute - { - public AutoJoinAttribute() { } - } + // Poco's marked [Explicit] require all column properties to be marked + [AttributeUsage(AttributeTargets.Class)] + public class ExplicitColumnsAttribute : Attribute + { + } + // For non-explicit pocos, causes a property to be ignored + [AttributeUsage(AttributeTargets.Property)] + public class IgnoreAttribute : Attribute + { + } + + // For explicit pocos, marks property as a column + [AttributeUsage(AttributeTargets.Property)] + public class ColumnAttribute : Attribute + { + public ColumnAttribute() { } + public ColumnAttribute(string name) { Name = name; } + public string Name { get; set; } + } + + // For explicit pocos, marks property as a column + [AttributeUsage(AttributeTargets.Property)] + public class ResultColumnAttribute : ColumnAttribute + { + public ResultColumnAttribute() { } + public ResultColumnAttribute(string name) : base(name) { } + } + + // Specify the table name of a poco + [AttributeUsage(AttributeTargets.Class)] + public class TableNameAttribute : Attribute + { + public TableNameAttribute(string tableName) + { + Value = tableName; + } + public string Value { get; private set; } + } + + // Specific the primary key of a poco class (and optional sequence name for Oracle) + [AttributeUsage(AttributeTargets.Class)] + public class PrimaryKeyAttribute : Attribute + { + public PrimaryKeyAttribute(string primaryKey) + { + Value = primaryKey; + autoIncrement = true; + } + + public string Value { get; private set; } + public string sequenceName { get; set; } + public bool autoIncrement { get; set; } + } + + [AttributeUsage(AttributeTargets.Property)] + public class AutoJoinAttribute : Attribute + { + public AutoJoinAttribute() { } + } [AttributeUsage(AttributeTargets.Property)] public class VersionColumnAttribute : ColumnAttribute { - public VersionColumnAttribute() { } + public VersionColumnAttribute() {} public VersionColumnAttribute(string name) : base(name) { } } - // Results from paged request - public class Page - { - public long CurrentPage { get; set; } - public long TotalPages { get; set; } - public long TotalItems { get; set; } - public long ItemsPerPage { get; set; } - public List Items { get; set; } - public object Context { get; set; } - } - - // Pass as parameter value to force to DBType.AnsiString - public class AnsiString - { - public AnsiString(string str) - { - Value = str; - } - public string Value { get; private set; } - } - - // Used by IMapper to override table bindings for an object - public class TableInfo - { - public string TableName { get; set; } - public string PrimaryKey { get; set; } - public bool AutoIncrement { get; set; } - public string SequenceName { get; set; } - } - - // Optionally provide and implementation of this to Database.Mapper - public interface IMapper + // Results from paged request + public class Page + { + public long CurrentPage { get; set; } + public long TotalPages { get; set; } + public long TotalItems { get; set; } + public long ItemsPerPage { get; set; } + public List Items { get; set; } + public object Context { get; set; } + } + + // Pass as parameter value to force to DBType.AnsiString + public class AnsiString + { + public AnsiString(string str) + { + Value = str; + } + public string Value { get; private set; } + } + + // Used by IMapper to override table bindings for an object + public class TableInfo + { + public string TableName { get; set; } + public string PrimaryKey { get; set; } + public bool AutoIncrement { get; set; } + public string SequenceName { get; set; } + } + + // Optionally provide an implementation of this to Database.Mapper + public interface IMapper + { + void GetTableInfo(Type t, TableInfo ti); + bool MapPropertyToColumn(PropertyInfo pi, ref string columnName, ref bool resultColumn); + Func GetFromDbConverter(PropertyInfo pi, Type sourceType); + Func GetToDbConverter(Type SourceType); + } + + // This will be merged with IMapper in the next major version + public interface IMapper2 : IMapper { - void GetTableInfo(Type t, TableInfo ti); - bool MapPropertyToColumn(PropertyInfo pi, ref string columnName, ref bool resultColumn); - Func GetFromDbConverter(DestinationInfo destinationInfo, Type SourceType); - Func GetToDbConverter(Type SourceType); + Func GetFromDbConverter(Type DestType, Type SourceType); } - public class DefaultMapper : IMapper + public class DefaultMapper : IMapper2 { public virtual void GetTableInfo(Type t, TableInfo ti) { } public virtual bool MapPropertyToColumn(PropertyInfo pi, ref string columnName, ref bool resultColumn) { return true; } - public virtual Func GetFromDbConverter(DestinationInfo destinationInfo, Type SourceType) + public virtual Func GetFromDbConverter(PropertyInfo pi, Type sourceType) { return null; } @@ -149,24 +153,28 @@ namespace PetaPoco { return null; } - } - - public class DestinationInfo - { - public DestinationInfo(Type type) + public virtual Func GetFromDbConverter(Type DestType, Type SourceType) { - Type = type; + return null; } + } - public DestinationInfo(PropertyInfo propertyInfo) - { - PropertyInfo = propertyInfo; - Type = propertyInfo.PropertyType; - } + //public class DestinationInfo + //{ + // public DestinationInfo(Type type) + // { + // Type = type; + // } - public PropertyInfo PropertyInfo { get; private set; } - public Type Type { get; private set; } - } + // public DestinationInfo(PropertyInfo propertyInfo) + // { + // PropertyInfo = propertyInfo; + // Type = propertyInfo.PropertyType; + // } + + // public PropertyInfo PropertyInfo { get; private set; } + // public Type Type { get; private set; } + //} public interface IDatabaseQuery { @@ -240,6 +248,10 @@ namespace PetaPoco object Insert(object poco); int Update(string tableName, string primaryKeyName, object poco, object primaryKeyValue); int Update(string tableName, string primaryKeyName, object poco); + int Update(string tableName, string primaryKeyName, object poco, object primaryKeyValue, IEnumerable columns); + int Update(string tableName, string primaryKeyName, object poco, IEnumerable columns); + int Update(object poco, IEnumerable columns); + int Update(object poco, object primaryKeyValue, IEnumerable columns); int Update(object poco); int Update(object poco, object primaryKeyValue); int Update(string sql, params object[] args); @@ -262,224 +274,225 @@ namespace PetaPoco { public const string MsSqlClientProvider = "System.Data.SqlClient"; - public Database(IDbConnection connection) - { - _sharedConnection = connection; - _connectionString = connection.ConnectionString; - _sharedConnectionDepth = 2; // Prevent closing external connection - CommonConstruct(); - } - - public Database(string connectionString, string providerName) - { - _connectionString = connectionString; - _providerName = providerName; - CommonConstruct(); - } - - public Database(string connectionString, DbProviderFactory provider) - { - _connectionString = connectionString; - _factory = provider; - CommonConstruct(); - } - - public Database(string connectionStringName) - { - // Use first? - if (connectionStringName == "") - connectionStringName = ConfigurationManager.ConnectionStrings[0].Name; - - // Work out connection string and provider name - var providerName = "System.Data.SqlClient"; - if (ConfigurationManager.ConnectionStrings[connectionStringName] != null) - { - if (!string.IsNullOrEmpty(ConfigurationManager.ConnectionStrings[connectionStringName].ProviderName)) - providerName = ConfigurationManager.ConnectionStrings[connectionStringName].ProviderName; - } - else - { - throw new InvalidOperationException("Can't find a connection string with the name '" + connectionStringName + "'"); - } - - // Store factory and connection string - _connectionString = ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString; - _providerName = providerName; - CommonConstruct(); - } + public Database(IDbConnection connection) + { + _sharedConnection = connection; + _connectionString = connection.ConnectionString; + _sharedConnectionDepth = 2; // Prevent closing external connection + CommonConstruct(); + } + + public Database(string connectionString, string providerName) + { + _connectionString = connectionString; + _providerName = providerName; + CommonConstruct(); + } + + public Database(string connectionString, DbProviderFactory provider) + { + _connectionString = connectionString; + _factory = provider; + CommonConstruct(); + } + + public Database(string connectionStringName) + { + // Use first? + if (connectionStringName == "") + connectionStringName = ConfigurationManager.ConnectionStrings[0].Name; + + // Work out connection string and provider name + var providerName = "System.Data.SqlClient"; + if (ConfigurationManager.ConnectionStrings[connectionStringName] != null) + { + if (!string.IsNullOrEmpty(ConfigurationManager.ConnectionStrings[connectionStringName].ProviderName)) + providerName = ConfigurationManager.ConnectionStrings[connectionStringName].ProviderName; + } + else + { + throw new InvalidOperationException("Can't find a connection string with the name '" + connectionStringName + "'"); + } - enum DBType - { - SqlServer, - SqlServerCE, - MySql, - PostgreSQL, - Oracle, + // Store factory and connection string + _connectionString = ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString; + _providerName = providerName; + CommonConstruct(); + } + + enum DBType + { + SqlServer, + SqlServerCE, + MySql, + PostgreSQL, + Oracle, SQLite - } - DBType _dbType = DBType.SqlServerCE; + } + DBType _dbType = DBType.SqlServer; - // Common initialization - private void CommonConstruct() - { + // Common initialization + private void CommonConstruct() + { _transactionDepth = 0; ForceDateTimesToUtc = true; EnableAutoSelect = true; - if (_providerName != null) - _factory = DbProviderFactories.GetFactory(_providerName); + if (_providerName != null) + _factory = DbProviderFactories.GetFactory(_providerName); - string dbtype = (_factory == null ? _sharedConnection.GetType() : _factory.GetType()).Name; - if (dbtype.StartsWith("MySql")) _dbType = DBType.MySql; - else if (dbtype.StartsWith("SqlCe")) _dbType = DBType.SqlServerCE; - else if (dbtype.StartsWith("Npgsql")) _dbType = DBType.PostgreSQL; - else if (dbtype.StartsWith("Oracle")) _dbType = DBType.Oracle; + string dbtype = (_factory==null ? _sharedConnection.GetType() : _factory.GetType()).Name; + if (dbtype.StartsWith("MySql")) _dbType = DBType.MySql; + else if (dbtype.StartsWith("SqlCe")) _dbType = DBType.SqlServerCE; + else if (dbtype.StartsWith("Npgsql")) _dbType = DBType.PostgreSQL; + else if (dbtype.StartsWith("Oracle")) _dbType = DBType.Oracle; else if (dbtype.StartsWith("SQLite")) _dbType = DBType.SQLite; - if (_dbType == DBType.MySql && _connectionString != null && _connectionString.IndexOf("Allow User Variables=true") >= 0) - _paramPrefix = "?"; - if (_dbType == DBType.Oracle) - _paramPrefix = ":"; + if (_dbType == DBType.MySql && _connectionString != null && _connectionString.IndexOf("Allow User Variables=true") >= 0) + _paramPrefix = "?"; + if (_dbType == DBType.Oracle) + _paramPrefix = ":"; } - // Automatically close one open shared connection - public void Dispose() - { - // Automatically close one open connection reference - // (Works with KeepConnectionAlive and manually opening a shared connection) - CloseSharedConnection(); + // Automatically close one open shared connection + public void Dispose() + { + // Automatically close one open connection reference + // (Works with KeepConnectionAlive and manually opening a shared connection) + CloseSharedConnection(); } - // Set to true to keep the first opened connection alive until this object is disposed - public bool KeepConnectionAlive { get; set; } + // Set to true to keep the first opened connection alive until this object is disposed + public bool KeepConnectionAlive { get; set; } - // Open a connection (can be nested) + // Open a connection (can be nested) public void OpenSharedConnection() - { - using (MvcMiniProfiler.MiniProfiler.StepStatic("OpenSharedConnection")) - { - if (_sharedConnectionDepth == 0) - { - _sharedConnection = _factory.CreateConnection(); - _sharedConnection.ConnectionString = _connectionString; - _sharedConnection.Open(); + { + if (_sharedConnectionDepth == 0) + { + _sharedConnection = _factory.CreateConnection(); + _sharedConnection.ConnectionString = _connectionString; + _sharedConnection.Open(); - if (KeepConnectionAlive) - _sharedConnectionDepth++; // Make sure you call Dispose - } - _sharedConnectionDepth++; - } - } + _sharedConnection = OnConnectionOpened(_sharedConnection); - /// + if (KeepConnectionAlive) + _sharedConnectionDepth++; // Make sure you call Dispose + } + _sharedConnectionDepth++; + } + + /// /// Close a previously opened connection /// + // Close a previously opened connection public void CloseSharedConnection() - { - if (_sharedConnectionDepth > 0) - { - _sharedConnectionDepth--; - if (_sharedConnectionDepth == 0) - { - _sharedConnection.Dispose(); - _sharedConnection = null; - } - } - } - - // Access to our shared connection - public IDbConnection Connection - { - get { return _sharedConnection; } - } - - // Helper to create a transaction scope - public ITransaction GetTransaction() - { - return new Transaction(this); - } - - // Use by derived repo generated by T4 templates - public virtual void OnBeginTransaction() { } - public virtual void OnEndTransaction() { } - - // Start a new transaction, can be nested, every call must be - // matched by a call to AbortTransaction or CompleteTransaction - // Use `using (var scope=db.Transaction) { scope.Complete(); }` to ensure correct semantics - public void BeginTransaction() - { - _transactionDepth++; - - if (_transactionDepth == 1) - { - OpenSharedConnection(); - _transaction = _sharedConnection.BeginTransaction(); - _transactionCancelled = false; - OnBeginTransaction(); - } - - } + { + if (_sharedConnectionDepth > 0) + { + _sharedConnectionDepth--; + if (_sharedConnectionDepth == 0) + { + OnConnectionClosing(_sharedConnection); + _sharedConnection.Dispose(); + _sharedConnection = null; + } + } + } + + // Access to our shared connection + public IDbConnection Connection + { + get { return _sharedConnection; } + } + + // Helper to create a transaction scope + public ITransaction GetTransaction() + { + return new Transaction(this); + } + + // Use by derived repo generated by T4 templates + public virtual void OnBeginTransaction() { } + public virtual void OnEndTransaction() { } + + // Start a new transaction, can be nested, every call must be + // matched by a call to AbortTransaction or CompleteTransaction + // Use `using (var scope=db.Transaction) { scope.Complete(); }` to ensure correct semantics + public void BeginTransaction() + { + _transactionDepth++; + + if (_transactionDepth == 1) + { + OpenSharedConnection(); + _transaction = _sharedConnection.BeginTransaction(); + _transactionCancelled = false; + OnBeginTransaction(); + } - // Internal helper to cleanup transaction stuff - void CleanupTransaction() - { - OnEndTransaction(); + } - if (_transactionCancelled) - _transaction.Rollback(); - else - _transaction.Commit(); + // Internal helper to cleanup transaction stuff + void CleanupTransaction() + { + OnEndTransaction(); - _transaction.Dispose(); - _transaction = null; + if (_transactionCancelled) + _transaction.Rollback(); + else + _transaction.Commit(); - CloseSharedConnection(); - } + _transaction.Dispose(); + _transaction = null; - // Abort the entire outer most transaction scope - public void AbortTransaction() - { - _transactionCancelled = true; - if ((--_transactionDepth) == 0) - CleanupTransaction(); - } + CloseSharedConnection(); + } - // Complete the transaction - public void CompleteTransaction() - { - if ((--_transactionDepth) == 0) - CleanupTransaction(); - } + // Abort the entire outer most transaction scope + public void AbortTransaction() + { + _transactionCancelled = true; + if ((--_transactionDepth) == 0) + CleanupTransaction(); + } - // Helper to handle named parameters from object properties - static Regex rxParams = new Regex(@"(? args_dest) - { - return rxParams.Replace(_sql, m => - { - string param = m.Value.Substring(1); + // Complete the transaction + public void CompleteTransaction() + { + if ((--_transactionDepth) == 0) + CleanupTransaction(); + } + + // Helper to handle named parameters from object properties + static Regex rxParams = new Regex(@"(? args_dest) + { + return rxParams.Replace(_sql, m => + { + string param = m.Value.Substring(1); - object arg_val; + object arg_val; - int paramIndex; + int paramIndex; if (int.TryParse(param, out paramIndex)) { // Numbered parameter if (paramIndex < 0 || paramIndex >= args_src.Length) throw new ArgumentOutOfRangeException(string.Format("Parameter '@{0}' specified but only {1} parameters supplied (in `{2}`)", paramIndex, args_src.Length, _sql)); - arg_val = args_src[paramIndex]; + arg_val = args_src[paramIndex]; } else { // Look for a property on one of the arguments with this name bool found = false; - arg_val = null; + arg_val = null; foreach (var o in args_src) { var pi = o.GetType().GetProperty(param); if (pi != null) { - arg_val = pi.GetValue(o, null); + arg_val = pi.GetValue(o, null); found = true; break; } @@ -489,241 +502,252 @@ namespace PetaPoco throw new ArgumentException(string.Format("Parameter '@{0}' specified but none of the passed arguments have a property with this name (in '{1}')", param, _sql)); } - // Expand collections to parameter lists - if ((arg_val as IEnumerable) != null && - (arg_val as string) == null && - (arg_val as byte[]) == null) - { - var sb = new StringBuilder(); - foreach (var i in arg_val as IEnumerable) + // Expand collections to parameter lists + if ((arg_val as System.Collections.IEnumerable) != null && + (arg_val as string) == null && + (arg_val as byte[]) == null) + { + var sb = new StringBuilder(); + foreach (var i in arg_val as System.Collections.IEnumerable) { - sb.Append((sb.Length == 0 ? "@" : ",@") + args_dest.Count.ToString()); - args_dest.Add(i); + var indexOfExistingValue = args_dest.IndexOf(i); + if (indexOfExistingValue >= 0) + { + sb.Append((sb.Length == 0 ? "@" : ",@") + indexOfExistingValue); + } + else + { + sb.Append((sb.Length == 0 ? "@" : ",@") + args_dest.Count); + args_dest.Add(i); + } } - return sb.ToString(); - } - else - { - args_dest.Add(arg_val); - return "@" + (args_dest.Count - 1).ToString(); - } - } - ); - } - - // Add a parameter to a DB command - void AddParam(IDbCommand cmd, object item, string ParameterPrefix) - { - // Convert value to from poco type to db type - if (Mapper != null && item != null) - { - var fn = Mapper.GetToDbConverter(item.GetType()); - if (fn != null) - item = fn(item); - } + return sb.ToString(); + } + else + { + var indexOfExistingValue = args_dest.IndexOf(arg_val); + if (indexOfExistingValue >= 0) + return "@" + indexOfExistingValue; - // Support passed in parameters - var idbParam = item as IDbDataParameter; - if (idbParam != null) - { - idbParam.ParameterName = string.Format("{0}{1}", ParameterPrefix, cmd.Parameters.Count); - cmd.Parameters.Add(idbParam); - return; - } - var p = cmd.CreateParameter(); - p.ParameterName = string.Format("{0}{1}", ParameterPrefix, cmd.Parameters.Count); + args_dest.Add(arg_val); + return "@" + (args_dest.Count - 1).ToString(); + } + } + ); + } + + // Add a parameter to a DB command + void AddParam(IDbCommand cmd, object item, string ParameterPrefix) + { + // Convert value to from poco type to db type + if (Database.Mapper != null && item!=null) + { + var fn = Database.Mapper.GetToDbConverter(item.GetType()); + if (fn!=null) + item = fn(item); + } - if (item == null) - { - p.Value = DBNull.Value; - } - else - { - var t = item.GetType(); - if (t.IsEnum) // PostgreSQL .NET driver wont cast enum to int - { - p.Value = (int)item; - } - else if (t == typeof(Guid)) - { - p.Value = item.ToString(); - p.DbType = DbType.String; - p.Size = 40; - } - else if (t == typeof(string)) - { - p.Size = Math.Max((item as string).Length + 1, 4000); // Help query plan caching by using common size - p.Value = item; - } - else if (t == typeof(AnsiString)) - { - // Thanks @DataChomp for pointing out the SQL Server indexing performance hit of using wrong string type on varchar - p.Size = Math.Max((item as AnsiString).Value.Length + 1, 4000); - p.Value = (item as AnsiString).Value; - p.DbType = DbType.AnsiString; - } - else if (t == typeof(bool) && _dbType != DBType.PostgreSQL) - { - p.Value = ((bool)item) ? 1 : 0; - } - else if (item.GetType().Name == "SqlGeography") //SqlGeography is a CLR Type - { - p.GetType().GetProperty("UdtTypeName").SetValue(p, "geography", null); //geography is the equivalent SQL Server Type - p.Value = item; - } + // Support passed in parameters + var idbParam = item as IDbDataParameter; + if (idbParam != null) + { + idbParam.ParameterName = string.Format("{0}{1}", ParameterPrefix, cmd.Parameters.Count); + cmd.Parameters.Add(idbParam); + return; + } + var p = cmd.CreateParameter(); + p.ParameterName = string.Format("{0}{1}", ParameterPrefix, cmd.Parameters.Count); - else if (item.GetType().Name == "SqlGeometry") //SqlGeometry is a CLR Type - { - p.GetType().GetProperty("UdtTypeName").SetValue(p, "geometry", null); //geography is the equivalent SQL Server Type - p.Value = item; - } - else - { + if (item == null) + { + p.Value = DBNull.Value; + } + else + { + var t = item.GetType(); + if (t.IsEnum) // PostgreSQL .NET driver wont cast enum to int + { + p.Value = (int)item; + } + else if (t == typeof(Guid)) + { + p.Value = item.ToString(); + p.DbType = DbType.String; + p.Size = 40; + } + else if (t == typeof(string)) + { + p.Size = Math.Max((item as string).Length + 1, 4000); // Help query plan caching by using common size p.Value = item; - } - } + } + else if (t == typeof(AnsiString)) + { + // Thanks @DataChomp for pointing out the SQL Server indexing performance hit of using wrong string type on varchar + p.Size = Math.Max((item as AnsiString).Value.Length + 1, 4000); + p.Value = (item as AnsiString).Value; + p.DbType = DbType.AnsiString; + } + else if (t == typeof(bool) && _dbType != DBType.PostgreSQL) + { + p.Value = ((bool)item) ? 1 : 0; + } + else if (item.GetType().Name == "SqlGeography") //SqlGeography is a CLR Type + { + p.GetType().GetProperty("UdtTypeName").SetValue(p, "geography", null); //geography is the equivalent SQL Server Type + p.Value = item; + } - cmd.Parameters.Add(p); - } + else if (item.GetType().Name == "SqlGeometry") //SqlGeometry is a CLR Type + { + p.GetType().GetProperty("UdtTypeName").SetValue(p, "geometry", null); //geography is the equivalent SQL Server Type + p.Value = item; + } + else + { + p.Value = item; + } + } - // Create a command - static Regex rxParamsPrefix = new Regex(@"(? _paramPrefix + m.Value.Substring(1)); - sql = sql.Replace("@@", "@"); // <- double @@ escapes a single @ + // Create a command + static Regex rxParamsPrefix = new Regex(@"(? _paramPrefix + m.Value.Substring(1)); + sql = sql.Replace("@@", "@"); // <- double @@ escapes a single @ // Create the command and add parameters - IDbCommand cmd = _factory == null ? connection.CreateCommand() : _factory.CreateCommand(); - cmd.Connection = connection; + IDbCommand cmd = connection.CreateCommand(); + cmd.Connection = connection; cmd.CommandText = sql; - cmd.Transaction = _transaction; - - foreach (var item in args) - { - AddParam(cmd, item, _paramPrefix); - } - - if (_dbType == DBType.Oracle) - { - cmd.GetType().GetProperty("BindByName").SetValue(cmd, true, null); - } - - if (!String.IsNullOrEmpty(sql)) - DoPreExecute(cmd); - - return cmd; - } - - // Create a command - IDbCommand CreateCommand(IDbConnection connection, string sql, params object[] args) - { - var sqlStatement = new Sql(sql, args); - return CreateCommand(connection, sqlStatement); - } + cmd.Transaction = _transaction; - // Override this to log/capture exceptions - public virtual void OnException(Exception x) - { - Debug.WriteLine(x.ToString()); - Debug.WriteLine(LastCommand); - } + foreach (var item in args) + { + AddParam(cmd, item, _paramPrefix); + } - // Override this to log commands, or modify command before execution - public virtual void OnExecutingCommand(IDbCommand cmd) { } - public virtual void OnExecutedCommand(IDbCommand cmd) { } + if (_dbType == DBType.Oracle) + { + cmd.GetType().GetProperty("BindByName").SetValue(cmd, true, null); + } - // Execute a non-query command - public int Execute(string sql, params object[] args) - { + if (!String.IsNullOrEmpty(sql)) + DoPreExecute(cmd); + + return cmd; + } + + // Create a command + //IDbCommand CreateCommand(IDbConnection connection, string sql, params object[] args) + //{ + // var sqlStatement = new Sql(sql, args); + // return CreateCommand(connection, sqlStatement); + //} + + // Override this to log/capture exceptions + public virtual void OnException(Exception x) + { + System.Diagnostics.Debug.WriteLine(x.ToString()); + System.Diagnostics.Debug.WriteLine(LastCommand); + } + + // Override this to log commands, or modify command before execution + public virtual IDbConnection OnConnectionOpened(IDbConnection conn) { return conn; } + public virtual void OnConnectionClosing(IDbConnection conn) { } + public virtual void OnExecutingCommand(IDbCommand cmd) { } + public virtual void OnExecutedCommand(IDbCommand cmd) { } + + // Execute a non-query command + public int Execute(string sql, params object[] args) + { return Execute(new Sql(sql, args)); - } + } - public int Execute(Sql sql) - { - using (MiniProfiler.StepStatic("Peta Execute SQL")) + public int Execute(Sql Sql) + { + var sql = Sql.SQL; + var args = Sql.Arguments; + + try { + OpenSharedConnection(); try { - OpenSharedConnection(); - try - { - using (var cmd = CreateCommand(_sharedConnection, sql)) - { - var result = cmd.ExecuteNonQuery(); - OnExecutedCommand(cmd); - return result; - } - } - finally + using (var cmd = CreateCommand(_sharedConnection, sql, args)) { - CloseSharedConnection(); + var result = cmd.ExecuteNonQuery(); + OnExecutedCommand(cmd); + return result; } } - catch (Exception x) + finally { - OnException(x); - throw; + CloseSharedConnection(); } } - } + catch (Exception x) + { + OnException(x); + throw; + } + } - // Execute and cast a scalar property - public T ExecuteScalar(string sql, params object[] args) - { + // Execute and cast a scalar property + public T ExecuteScalar(string sql, params object[] args) + { return ExecuteScalar(new Sql(sql, args)); - } + } - public T ExecuteScalar(Sql sql) - { - using (MiniProfiler.StepStatic("Peta ExecuteScalar")) + public T ExecuteScalar(Sql Sql) + { + var sql = Sql.SQL; + var args = Sql.Arguments; + + try { + OpenSharedConnection(); try { - OpenSharedConnection(); - try - { - using (var cmd = CreateCommand(_sharedConnection, sql)) - { - object val = cmd.ExecuteScalar(); - OnExecutedCommand(cmd); - return (T)Convert.ChangeType(val, typeof(T)); - } - } - finally + using (var cmd = CreateCommand(_sharedConnection, sql, args)) { - CloseSharedConnection(); + object val = cmd.ExecuteScalar(); + OnExecutedCommand(cmd); + return (T)Convert.ChangeType(val, typeof(T)); } } - catch (Exception x) + finally { - OnException(x); - throw; + CloseSharedConnection(); } } - } - - Regex rxSelect = new Regex(@"\A\s*(SELECT|EXECUTE|CALL)\s", RegexOptions.Compiled | RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.Multiline); - Regex rxFrom = new Regex(@"\A\s*FROM\s", RegexOptions.Compiled | RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.Multiline); + catch (Exception x) + { + OnException(x); + throw; + } + } + + static Regex rxSelect = new Regex(@"\A\s*(SELECT|EXECUTE|CALL)\s", RegexOptions.Compiled | RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.Multiline); + static Regex rxFrom = new Regex(@"\A\s*FROM\s", RegexOptions.Compiled | RegexOptions.Singleline | RegexOptions.IgnoreCase | RegexOptions.Multiline); string AddSelectClause(string sql) { - if (sql.StartsWith(";")) - return sql.Substring(1); + if (sql.StartsWith(";")) + return sql.Substring(1); if (!rxSelect.IsMatch(sql)) { var pd = PocoData.ForType(typeof(T)); - var tableName = EscapeTableName(pd.TableInfo.TableName); - string cols = string.Join(", ", (from c in pd.QueryColumns select EscapeSqlIdentifier(c)).ToArray()); + var tableName = EscapeTableName(pd.TableInfo.TableName); + string cols = string.Join(", ", (from c in pd.QueryColumns select EscapeSqlIdentifier(c)).ToArray()); if (!rxFrom.IsMatch(sql)) - sql = string.Format("SELECT {0} FROM {1} {2}", cols, tableName, sql); + sql = string.Format("SELECT {0} FROM {1} {2}", cols, tableName, sql); else - sql = string.Format("SELECT {0} {1}", cols, sql); + sql = string.Format("SELECT {0} {1}", cols, sql); } return sql; } @@ -731,40 +755,26 @@ namespace PetaPoco public bool ForceDateTimesToUtc { get; set; } public bool EnableAutoSelect { get; set; } - // Return a typed list of pocos - public List Fetch(string sql, params object[] args) + // Return a typed list of pocos + public List Fetch(string sql, params object[] args) + { + return Fetch(new Sql(sql, args)); + } + + public List Fetch(Sql sql) { - if (EnableAutoSelect) - sql = AddSelectClause(sql); - - return Fetch(new Sql(sql, args)); - } - - public List Fetch(Sql sql) - { - return Query(sql).ToList(); - } - - public List Fetch(long page, long itemsPerPage, string sql, params object[] args) - { - string sqlCount, sqlPage; - BuildPageQueries(page, itemsPerPage, sql, ref args, out sqlCount, out sqlPage); - return Fetch(sqlPage, args); - } - - public List Fetch(long page, long itemsPerPage, Sql sql) - { - return Fetch(page, itemsPerPage, sql.SQL, sql.Arguments); - } + return Query(sql).ToList(); + } public List Fetch() { - return Fetch(AddSelectClause("")); + return Fetch(""); } - static Regex rxColumns = new Regex(@"\A\s*SELECT\s+((?:\((?>\((?)|\)(?<-depth>)|.?)*(?(depth)(?!))\)|.)*?)(?\((?)|\)(?<-depth>)|.?)*(?(depth)(?!))\)|[\w\(\)\.])+(?:\s+(?:ASC|DESC))?(?:\s*,\s*(?:\((?>\((?)|\)(?<-depth>)|.?)*(?(depth)(?!))\)|[\w\(\)\.])+(?:\s+(?:ASC|DESC))?)*", RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.Singleline | RegexOptions.Compiled); - public static bool SplitSqlForPaging(string sql, out string sqlCount, out string sqlSelectRemoved, out string sqlOrderBy) + static Regex rxColumns = new Regex(@"\A\s*SELECT\s+((?:\((?>\((?)|\)(?<-depth>)|.?)*(?(depth)(?!))\)|.)*?)(?\((?)|\)(?<-depth>)|.?)*(?(depth)(?!))\)|[\w\(\)\.])+(?:\s+(?:ASC|DESC))?(?:\s*,\s*(?:\((?>\((?)|\)(?<-depth>)|.?)*(?(depth)(?!))\)|[\w\(\)\.])+(?:\s+(?:ASC|DESC))?)*", RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.Singleline | RegexOptions.Compiled); + static Regex rxDistinct = new Regex(@"\ADISTINCT\s", RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.Singleline | RegexOptions.Compiled); + public static bool SplitSqlForPaging(string sql, out string sqlCount, out string sqlSelectRemoved, out string sqlOrderBy) { sqlSelectRemoved = null; sqlCount = null; @@ -777,490 +787,490 @@ namespace PetaPoco // Save column list and replace with COUNT(*) Group g = m.Groups[1]; - sqlCount = sql.Substring(0, g.Index) + "COUNT(*) " + sql.Substring(g.Index + g.Length); sqlSelectRemoved = sql.Substring(g.Index); - // Look for an "ORDER BY " clause or primarykey from pocodata - var data = PocoData.ForType(typeof(T)); - - m = rxOrderBy.Match(sqlCount); - if (!m.Success - && (string.IsNullOrEmpty(data.TableInfo.PrimaryKey) || - (!data.TableInfo.PrimaryKey.Split(',').All(x => data.Columns.Values.Any(y => y.ColumnName.Equals(x, StringComparison.OrdinalIgnoreCase)))))) - { - return false; - } - - g = m.Groups[0]; - sqlOrderBy = m.Success ? g.ToString() : "ORDER BY " + data.TableInfo.PrimaryKey; - sqlCount = sqlCount.Substring(0, g.Index) + sqlCount.Substring(g.Index + g.Length); + if (rxDistinct.IsMatch(sqlSelectRemoved)) + sqlCount = sql.Substring(0, g.Index) + "COUNT(" + m.Groups[1].ToString().Trim() + ") " + sql.Substring(g.Index + g.Length); + else + sqlCount = sql.Substring(0, g.Index) + "COUNT(*) " + sql.Substring(g.Index + g.Length); - return true; - } - private void BuildPageQueries(long skip, long take, string sql, ref object[] args, out string sqlCount, out string sqlPage) - { - // Add auto select clause - sql = AddSelectClause(sql); - - // Split the SQL into the bits we need - string sqlSelectRemoved, sqlOrderBy; - if (!SplitSqlForPaging(sql, out sqlCount, out sqlSelectRemoved, out sqlOrderBy)) - throw new Exception("Unable to parse SQL statement for paged query"); - if (_dbType == DBType.Oracle && sqlSelectRemoved.StartsWith("*")) + // Look for an "ORDER BY " clause + m = rxOrderBy.Match(sqlCount); + if (m.Success) + { + g = m.Groups[0]; + sqlOrderBy = g.ToString(); + sqlCount = sqlCount.Substring(0, g.Index) + sqlCount.Substring(g.Index + g.Length); + } + + return true; + } + + public void BuildPageQueries(long skip, long take, string sql, ref object[] args, out string sqlCount, out string sqlPage) + { + // Add auto select clause + sql=AddSelectClause(sql); + + // Split the SQL into the bits we need + string sqlSelectRemoved, sqlOrderBy; + if (!SplitSqlForPaging(sql, out sqlCount, out sqlSelectRemoved, out sqlOrderBy)) + throw new Exception("Unable to parse SQL statement for paged query"); + if (_dbType == DBType.Oracle && sqlSelectRemoved.StartsWith("*")) throw new Exception("Query must alias '*' when performing a paged query.\neg. select t.* from table t order by t.id"); - // Build the SQL for the actual final result + // Build the SQL for the actual final result if (_dbType == DBType.SqlServer || _dbType == DBType.Oracle) { - var fromIndex = sqlSelectRemoved.IndexOf("from", StringComparison.OrdinalIgnoreCase); sqlSelectRemoved = rxOrderBy.Replace(sqlSelectRemoved, ""); - sqlPage = string.Format("SELECT * FROM (SELECT {2}, ROW_NUMBER() OVER ({0}) peta_rn {1}) peta_paged WHERE peta_rn>@{3} AND peta_rn<=@{4}", - sqlOrderBy, sqlSelectRemoved.Substring(fromIndex), sqlSelectRemoved.Substring(0, fromIndex - 1), args.Length, args.Length + 1); - args = args.Concat(new object[] { skip, skip + take }).ToArray(); + if (rxDistinct.IsMatch(sqlSelectRemoved)) + { + sqlSelectRemoved = "peta_inner.* FROM (SELECT " + sqlSelectRemoved + ") peta_inner"; + } + sqlPage = string.Format("SELECT * FROM (SELECT ROW_NUMBER() OVER ({0}) peta_rn, {1}) peta_paged WHERE peta_rn>@{2} AND peta_rn<=@{3}", + sqlOrderBy==null ? "ORDER BY (SELECT NULL)" : sqlOrderBy, sqlSelectRemoved, args.Length, args.Length + 1); + args = args.Concat(new object[] { skip, skip+take }).ToArray(); } else if (_dbType == DBType.SqlServerCE) { sqlPage = string.Format("{0}\nOFFSET @{1} ROWS FETCH NEXT @{2} ROWS ONLY", sql, args.Length, args.Length + 1); - args = args.Concat(new object[] { skip, take }).ToArray(); + args = args.Concat(new object[] { skip, take }).ToArray(); } else { sqlPage = string.Format("{0}\nLIMIT @{1} OFFSET @{2}", sql, args.Length, args.Length + 1); - args = args.Concat(new object[] { take, skip }).ToArray(); + args = args.Concat(new object[] { take, skip }).ToArray(); } + + } - } - - // Fetch a page - public Page Page(long page, long itemsPerPage, string sql, params object[] args) - { - string sqlCount, sqlPage; + // Fetch a page + public Page Page(long page, long itemsPerPage, string sql, params object[] args) + { + string sqlCount, sqlPage; + BuildPageQueries((page-1)*itemsPerPage, itemsPerPage, sql, ref args, out sqlCount, out sqlPage); - long skip = (page - 1) * itemsPerPage; - long take = itemsPerPage; + // Save the one-time command time out and use it for both queries + int saveTimeout = OneTimeCommandTimeout; - BuildPageQueries(skip, take, sql, ref args, out sqlCount, out sqlPage); + // Setup the paged result + var result = new Page(); + result.CurrentPage = page; + result.ItemsPerPage = itemsPerPage; + result.TotalItems = ExecuteScalar(sqlCount, args); + result.TotalPages = result.TotalItems / itemsPerPage; + if ((result.TotalItems % itemsPerPage) != 0) + result.TotalPages++; - // Save the one-time command time out and use it for both queries - int saveTimeout = OneTimeCommandTimeout; + OneTimeCommandTimeout = saveTimeout; - // Setup the paged result - var result = new Page(); - result.CurrentPage = page; - result.ItemsPerPage = itemsPerPage; - result.TotalItems = ExecuteScalar(sqlCount, args); - result.TotalPages = result.TotalItems / itemsPerPage; - if ((result.TotalItems % itemsPerPage) != 0) - result.TotalPages++; + // Get the records + result.Items = Fetch(sqlPage, args); - OneTimeCommandTimeout = saveTimeout; + // Done + return result; + } - // Get the records - result.Items = Fetch(sqlPage, args); + public Page Page(long page, long itemsPerPage, Sql sql) + { + return Page(page, itemsPerPage, sql.SQL, sql.Arguments); + } - // Done - return result; + public List Fetch(long page, long itemsPerPage, string sql, params object[] args) + { + return SkipTake((page - 1) * itemsPerPage, itemsPerPage, sql, args); } - public Page Page(long page, long itemsPerPage, Sql sql) + public List Fetch(long page, long itemsPerPage, Sql sql) { - return Page(page, itemsPerPage, sql.SQL, sql.Arguments); + return SkipTake((page - 1) * itemsPerPage, itemsPerPage, sql.SQL, sql.Arguments); } - public List SkipTake(long skip, long take, string sql, params object[] args) - { + public List SkipTake(long skip, long take, string sql, params object[] args) + { string sqlCount, sqlPage; - - BuildPageQueries(skip, take, sql, ref args, out sqlCount, out sqlPage); - - var result = Fetch(sqlPage, args); - return result; + BuildPageQueries(skip, take, sql, ref args, out sqlCount, out sqlPage); + return Fetch(sqlPage, args); } - public List SkipTake(long skip, long take, Sql sql) + public List SkipTake(long skip, long take, Sql sql) { - return SkipTake(skip, take, sql.SQL, sql.Arguments); + return SkipTake(skip, take, sql.SQL, sql.Arguments); } // Return an enumerable collection of pocos public IEnumerable Query(string sql, params object[] args) { - if (EnableAutoSelect) - sql = AddSelectClause(sql); - return Query(new Sql(sql, args)); } - public IEnumerable Query(Sql sql) - { - using (MiniProfiler.StepStatic("Peta Query SQL")) - { - OpenSharedConnection(); - try - { - using (var cmd = CreateCommand(_sharedConnection, sql)) - { - IDataReader r; - var pd = PocoData.ForType(typeof(T)); - try - { - r = cmd.ExecuteReader(); - OnExecutedCommand(cmd); - } - catch (Exception x) - { - OnException(x); - throw; - } - - using (r) - { - var factory = - pd.GetFactory(cmd.CommandText, _sharedConnection.ConnectionString, ForceDateTimesToUtc, 0, r.FieldCount, r) - as Func; - while (true) - { - T poco; - try - { - if (!r.Read()) - yield break; - poco = factory(r); - } - catch (Exception x) - { - OnException(x); - throw; - } - - yield return poco; - } - } - } - } - finally - { - CloseSharedConnection(); - } - } - } - - // Multi Fetch - public List Fetch(Func cb, string sql, params object[] args) { return Query(cb, sql, args).ToList(); } - public List Fetch(Func cb, string sql, params object[] args) { return Query(cb, sql, args).ToList(); } - public List Fetch(Func cb, string sql, params object[] args) { return Query(cb, sql, args).ToList(); } - - // Multi Query - public IEnumerable Query(Func cb, string sql, params object[] args) { return Query(new Type[] { typeof(T1), typeof(T2) }, cb, sql, args); } - public IEnumerable Query(Func cb, string sql, params object[] args) { return Query(new Type[] { typeof(T1), typeof(T2), typeof(T3) }, cb, sql, args); } - public IEnumerable Query(Func cb, string sql, params object[] args) { return Query(new Type[] { typeof(T1), typeof(T2), typeof(T3), typeof(T4) }, cb, sql, args); } - - // Multi Fetch (SQL builder) - public List Fetch(Func cb, Sql sql) { return Query(cb, sql.SQL, sql.Arguments).ToList(); } - public List Fetch(Func cb, Sql sql) { return Query(cb, sql.SQL, sql.Arguments).ToList(); } - public List Fetch(Func cb, Sql sql) { return Query(cb, sql.SQL, sql.Arguments).ToList(); } - - // Multi Query (SQL builder) - public IEnumerable Query(Func cb, Sql sql) { return Query(new Type[] { typeof(T1), typeof(T2) }, cb, sql.SQL, sql.Arguments); } - public IEnumerable Query(Func cb, Sql sql) { return Query(new Type[] { typeof(T1), typeof(T2), typeof(T3) }, cb, sql.SQL, sql.Arguments); } - public IEnumerable Query(Func cb, Sql sql) { return Query(new Type[] { typeof(T1), typeof(T2), typeof(T3), typeof(T4) }, cb, sql.SQL, sql.Arguments); } - - // Multi Fetch (Simple) - public List Fetch(string sql, params object[] args) { return Query(sql, args).ToList(); } - public List Fetch(string sql, params object[] args) { return Query(sql, args).ToList(); } - public List Fetch(string sql, params object[] args) { return Query(sql, args).ToList(); } - - // Multi Query (Simple) - public IEnumerable Query(string sql, params object[] args) { return Query(new Type[] { typeof(T1), typeof(T2) }, null, sql, args); } - public IEnumerable Query(string sql, params object[] args) { return Query(new Type[] { typeof(T1), typeof(T2), typeof(T3) }, null, sql, args); } - public IEnumerable Query(string sql, params object[] args) { return Query(new Type[] { typeof(T1), typeof(T2), typeof(T3), typeof(T4) }, null, sql, args); } - - // Multi Fetch (Simple) (SQL builder) - public List Fetch(Sql sql) { return Query(sql.SQL, sql.Arguments).ToList(); } - public List Fetch(Sql sql) { return Query(sql.SQL, sql.Arguments).ToList(); } - public List Fetch(Sql sql) { return Query(sql.SQL, sql.Arguments).ToList(); } - - // Multi Query (Simple) (SQL builder) - public IEnumerable Query(Sql sql) { return Query(new Type[] { typeof(T1), typeof(T2) }, null, sql.SQL, sql.Arguments); } - public IEnumerable Query(Sql sql) { return Query(new Type[] { typeof(T1), typeof(T2), typeof(T3) }, null, sql.SQL, sql.Arguments); } - public IEnumerable Query(Sql sql) { return Query(new Type[] { typeof(T1), typeof(T2), typeof(T3), typeof(T4) }, null, sql.SQL, sql.Arguments); } - - // Automagically guess the property relationships between various POCOs and create a delegate that will set them up - object GetAutoMapper(Type[] types) - { - // Build a key - var kb = new StringBuilder(); - foreach (var t in types) - { - kb.Append(t.ToString()); - kb.Append(":"); - } - var key = kb.ToString(); + public IEnumerable Query(Sql Sql) + { + var sql = Sql.SQL; + var args = Sql.Arguments; - // Check cache - RWLock.EnterReadLock(); - try - { - object mapper; - if (AutoMappers.TryGetValue(key, out mapper)) - return mapper; - } - finally - { - RWLock.ExitReadLock(); - } + if (EnableAutoSelect) + sql = AddSelectClause(sql); - // Create it - RWLock.EnterWriteLock(); + OpenSharedConnection(); try { - // Try again - object mapper; - if (AutoMappers.TryGetValue(key, out mapper)) - return mapper; - - // Create a method - var m = new DynamicMethod("petapoco_automapper", types[0], types, true); - var il = m.GetILGenerator(); - - for (int i = 1; i < types.Length; i++) + using (var cmd = CreateCommand(_sharedConnection, sql, args)) { - bool handled = false; - for (int j = i - 1; j >= 0; j--) + IDataReader r; + var pd = PocoData.ForType(typeof(T)); + try { - // Find the property - var candidates = from p in types[j].GetProperties() where p.PropertyType == types[i] select p; - if (candidates.Count() == 0) - continue; - if (candidates.Count() > 1) - throw new InvalidOperationException(string.Format("Can't auto join {0} as {1} has more than one property of type {0}", types[i], types[j])); - - // Generate code - il.Emit(OpCodes.Ldarg_S, j); - il.Emit(OpCodes.Ldarg_S, i); - il.Emit(OpCodes.Callvirt, candidates.First().GetSetMethod(true)); - handled = true; + r = cmd.ExecuteReader(); + OnExecutedCommand(cmd); } + catch (Exception x) + { + OnException(x); + throw; + } + + using (r) + { + var factory = pd.GetFactory(cmd.CommandText, _sharedConnection.ConnectionString, ForceDateTimesToUtc, 0, r.FieldCount, r) as Func; + while (true) + { + T poco; + try + { + if (!r.Read()) + yield break; + poco = factory(r); + } + catch (Exception x) + { + OnException(x); + throw; + } - if (!handled) - throw new InvalidOperationException(string.Format("Can't auto join {0}", types[i])); + yield return poco; + } + } } - - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ret); - - // Cache it - var del = m.CreateDelegate(Expression.GetFuncType(types.Concat(types.Take(1)).ToArray())); - AutoMappers.Add(key, del); - return del; } finally { - RWLock.ExitWriteLock(); - } - } - - // Find the split point in a result set for two different pocos and return the poco factory for the first - Delegate FindSplitPoint(Type typeThis, Type typeNext, string sql, IDataReader r, ref int pos) - { - // Last? - if (typeNext == null) - return PocoData.ForType(typeThis).GetFactory(sql, _sharedConnection.ConnectionString, ForceDateTimesToUtc, pos, r.FieldCount - pos, r); - - // Get PocoData for the two types - PocoData pdThis = PocoData.ForType(typeThis); - PocoData pdNext = PocoData.ForType(typeNext); - - // Find split point - int firstColumn = pos; - var usedColumns = new Dictionary(); - for (; pos < r.FieldCount; pos++) - { - // Split if field name has already been used, or if the field doesn't exist in current poco but does in the next - string fieldName = r.GetName(pos); - if (usedColumns.ContainsKey(fieldName) || (!pdThis.Columns.ContainsKey(fieldName) && pdNext.Columns.ContainsKey(fieldName))) - { - return pdThis.GetFactory(sql, _sharedConnection.ConnectionString, ForceDateTimesToUtc, firstColumn, pos - firstColumn, r); - } - usedColumns.Add(fieldName, true); - } - - throw new InvalidOperationException(string.Format("Couldn't find split point between {0} and {1}", typeThis, typeNext)); - } + CloseSharedConnection(); + } + } + + // Multi Fetch + public List Fetch(Func cb, string sql, params object[] args) { return Query(cb, sql, args).ToList(); } + public List Fetch(Func cb, string sql, params object[] args) { return Query(cb, sql, args).ToList(); } + public List Fetch(Func cb, string sql, params object[] args) { return Query(cb, sql, args).ToList(); } + + // Multi Query + public IEnumerable Query(Func cb, string sql, params object[] args) { return Query(new Type[] { typeof(T1), typeof(T2) }, cb, sql, args); } + public IEnumerable Query(Func cb, string sql, params object[] args) { return Query(new Type[] { typeof(T1), typeof(T2), typeof(T3)}, cb, sql, args); } + public IEnumerable Query(Func cb, string sql, params object[] args) { return Query(new Type[] { typeof(T1), typeof(T2), typeof(T3), typeof(T4)}, cb, sql, args); } + + // Multi Fetch (SQL builder) + public List Fetch(Func cb, Sql sql) { return Query(cb, sql.SQL, sql.Arguments).ToList(); } + public List Fetch(Func cb, Sql sql) { return Query(cb, sql.SQL, sql.Arguments).ToList(); } + public List Fetch(Func cb, Sql sql) { return Query(cb, sql.SQL, sql.Arguments).ToList(); } + + // Multi Query (SQL builder) + public IEnumerable Query(Func cb, Sql sql) { return Query(new Type[] { typeof(T1), typeof(T2) }, cb, sql.SQL, sql.Arguments); } + public IEnumerable Query(Func cb, Sql sql) { return Query(new Type[] { typeof(T1), typeof(T2), typeof(T3) }, cb, sql.SQL, sql.Arguments); } + public IEnumerable Query(Func cb, Sql sql) { return Query(new Type[] { typeof(T1), typeof(T2), typeof(T3), typeof(T4) }, cb, sql.SQL, sql.Arguments); } + + // Multi Fetch (Simple) + public List Fetch(string sql, params object[] args) { return Query(sql, args).ToList(); } + public List Fetch(string sql, params object[] args) { return Query(sql, args).ToList(); } + public List Fetch(string sql, params object[] args) { return Query(sql, args).ToList(); } + + // Multi Query (Simple) + public IEnumerable Query(string sql, params object[] args) { return Query(new Type[] { typeof(T1), typeof(T2) }, null, sql, args); } + public IEnumerable Query(string sql, params object[] args) { return Query(new Type[] { typeof(T1), typeof(T2), typeof(T3) }, null, sql, args); } + public IEnumerable Query(string sql, params object[] args) { return Query(new Type[] { typeof(T1), typeof(T2), typeof(T3), typeof(T4) }, null, sql, args); } + + // Multi Fetch (Simple) (SQL builder) + public List Fetch(Sql sql) { return Query(sql.SQL, sql.Arguments).ToList(); } + public List Fetch(Sql sql) { return Query(sql.SQL, sql.Arguments).ToList(); } + public List Fetch(Sql sql) { return Query(sql.SQL, sql.Arguments).ToList(); } + + // Multi Query (Simple) (SQL builder) + public IEnumerable Query(Sql sql) { return Query(new Type[] { typeof(T1), typeof(T2) }, null, sql.SQL, sql.Arguments); } + public IEnumerable Query(Sql sql) { return Query(new Type[] { typeof(T1), typeof(T2), typeof(T3) }, null, sql.SQL, sql.Arguments); } + public IEnumerable Query(Sql sql) { return Query(new Type[] { typeof(T1), typeof(T2), typeof(T3), typeof(T4) }, null, sql.SQL, sql.Arguments); } + + // Automagically guess the property relationships between various POCOs and create a delegate that will set them up + object GetAutoMapper(Type[] types) + { + // Build a key + var kb = new StringBuilder(); + foreach (var t in types) + { + kb.Append(t.ToString()); + kb.Append(":"); + } + var key = kb.ToString(); - // Instance data used by the Multipoco factory delegate - essentially a list of the nested poco factories to call - class MultiPocoFactory - { - public List m_Delegates; - public Delegate GetItem(int index) { return m_Delegates[index]; } - } + // Check cache + RWLock.EnterReadLock(); + try + { + object mapper; + if (AutoMappers.TryGetValue(key, out mapper)) + return mapper; + } + finally + { + RWLock.ExitReadLock(); + } - // Create a multi-poco factory - Func CreateMultiPocoFactory(Type[] types, string sql, IDataReader r) - { - var m = new DynamicMethod("petapoco_multipoco_factory", typeof(TRet), new Type[] { typeof(MultiPocoFactory), typeof(IDataReader), typeof(object) }, typeof(MultiPocoFactory)); - var il = m.GetILGenerator(); + // Create it + RWLock.EnterWriteLock(); + try + { + // Try again + object mapper; + if (AutoMappers.TryGetValue(key, out mapper)) + return mapper; - // Load the callback - il.Emit(OpCodes.Ldarg_2); + // Create a method + var m = new DynamicMethod("petapoco_automapper", types[0], types, true); + var il = m.GetILGenerator(); - // Call each delegate - var dels = new List(); - int pos = 0; - for (int i = 0; i < types.Length; i++) - { - // Add to list of delegates to call - var del = FindSplitPoint(types[i], i + 1 < types.Length ? types[i + 1] : null, sql, r, ref pos); - dels.Add(del); - - // Get the delegate - il.Emit(OpCodes.Ldarg_0); // callback,this - il.Emit(OpCodes.Ldc_I4, i); // callback,this,Index - il.Emit(OpCodes.Callvirt, typeof(MultiPocoFactory).GetMethod("GetItem")); // callback,Delegate - il.Emit(OpCodes.Ldarg_1); // callback,delegate, datareader - - // Call Invoke - var tDelInvoke = del.GetType().GetMethod("Invoke"); - il.Emit(OpCodes.Callvirt, tDelInvoke); // Poco left on stack - } + for (int i = 1; i < types.Length; i++) + { + bool handled = false; + for (int j = i - 1; j >= 0; j--) + { + // Find the property + var candidates = from p in types[j].GetProperties() where p.PropertyType == types[i] select p; + if (candidates.Count() == 0) + continue; + if (candidates.Count() > 1) + throw new InvalidOperationException(string.Format("Can't auto join {0} as {1} has more than one property of type {0}", types[i], types[j])); + + // Generate code + il.Emit(OpCodes.Ldarg_S, j); + il.Emit(OpCodes.Ldarg_S, i); + il.Emit(OpCodes.Callvirt, candidates.First().GetSetMethod(true)); + handled = true; + } - // By now we should have the callback and the N pocos all on the stack. Call the callback and we're done - il.Emit(OpCodes.Callvirt, Expression.GetFuncType(types.Concat(new Type[] { typeof(TRet) }).ToArray()).GetMethod("Invoke")); - il.Emit(OpCodes.Ret); + if (!handled) + throw new InvalidOperationException(string.Format("Can't auto join {0}", types[i])); + } - // Finish up - return (Func)m.CreateDelegate(typeof(Func), new MultiPocoFactory() { m_Delegates = dels }); - } + il.Emit(OpCodes.Ldarg_0); + il.Emit(OpCodes.Ret); - // Various cached stuff - static Dictionary MultiPocoFactories = new Dictionary(); - static Dictionary AutoMappers = new Dictionary(); - static ReaderWriterLockSlim RWLock = new ReaderWriterLockSlim(); + // Cache it + var del = m.CreateDelegate(Expression.GetFuncType(types.Concat(types.Take(1)).ToArray())); + AutoMappers.Add(key, del); + return del; + } + finally + { + RWLock.ExitWriteLock(); + } + } + + // Find the split point in a result set for two different pocos and return the poco factory for the first + Delegate FindSplitPoint(Type typeThis, Type typeNext, string sql, IDataReader r, ref int pos) + { + // Last? + if (typeNext == null) + return PocoData.ForType(typeThis).GetFactory(sql, _sharedConnection.ConnectionString, ForceDateTimesToUtc, pos, r.FieldCount - pos, r); + + // Get PocoData for the two types + PocoData pdThis = PocoData.ForType(typeThis); + PocoData pdNext = PocoData.ForType(typeNext); + + // Find split point + int firstColumn = pos; + var usedColumns = new Dictionary(); + for (; pos < r.FieldCount; pos++) + { + // Split if field name has already been used, or if the field doesn't exist in current poco but does in the next + string fieldName = r.GetName(pos); + if (usedColumns.ContainsKey(fieldName) || (!pdThis.Columns.ContainsKey(fieldName) && pdNext.Columns.ContainsKey(fieldName))) + { + return pdThis.GetFactory(sql, _sharedConnection.ConnectionString, ForceDateTimesToUtc, firstColumn, pos - firstColumn, r); + } + usedColumns.Add(fieldName, true); + } - // Get (or create) the multi-poco factory for a query - Func GetMultiPocoFactory(Type[] types, string sql, IDataReader r) - { - // Build a key string (this is crap, should address this at some point) - var kb = new StringBuilder(); - kb.Append(typeof(TRet).ToString()); - kb.Append(":"); - foreach (var t in types) - { - kb.Append(":"); - kb.Append(t.ToString()); - } - kb.Append(":"); kb.Append(_sharedConnection.ConnectionString); - kb.Append(":"); kb.Append(ForceDateTimesToUtc); - kb.Append(":"); kb.Append(sql); - string key = kb.ToString(); + throw new InvalidOperationException(string.Format("Couldn't find split point between {0} and {1}", typeThis, typeNext)); + } + + // Instance data used by the Multipoco factory delegate - essentially a list of the nested poco factories to call + class MultiPocoFactory + { + public List m_Delegates; + public Delegate GetItem(int index) { return m_Delegates[index]; } + } + + // Create a multi-poco factory + Func CreateMultiPocoFactory(Type[] types, string sql, IDataReader r) + { + var m = new DynamicMethod("petapoco_multipoco_factory", typeof(TRet), new Type[] { typeof(MultiPocoFactory), typeof(IDataReader), typeof(object) }, typeof(MultiPocoFactory)); + var il = m.GetILGenerator(); + + // Load the callback + il.Emit(OpCodes.Ldarg_2); + + // Call each delegate + var dels = new List(); + int pos = 0; + for (int i=0; i)oFactory; - } - finally - { - RWLock.ExitReadLock(); - } + // By now we should have the callback and the N pocos all on the stack. Call the callback and we're done + il.Emit(OpCodes.Callvirt, Expression.GetFuncType(types.Concat(new Type[] { typeof(TRet) }).ToArray()).GetMethod("Invoke")); + il.Emit(OpCodes.Ret); + + // Finish up + return (Func)m.CreateDelegate(typeof(Func), new MultiPocoFactory() { m_Delegates = dels }); + } + + // Various cached stuff + static Dictionary MultiPocoFactories = new Dictionary(); + static Dictionary AutoMappers = new Dictionary(); + static System.Threading.ReaderWriterLockSlim RWLock = new System.Threading.ReaderWriterLockSlim(); + + // Get (or create) the multi-poco factory for a query + Func GetMultiPocoFactory(Type[] types, string sql, IDataReader r) + { + // Build a key string (this is crap, should address this at some point) + var kb = new StringBuilder(); + kb.Append(typeof(TRet).ToString()); + kb.Append(":"); + foreach (var t in types) + { + kb.Append(":"); + kb.Append(t.ToString()); + } + kb.Append(":"); kb.Append(_sharedConnection.ConnectionString); + kb.Append(":"); kb.Append(ForceDateTimesToUtc); + kb.Append(":"); kb.Append(sql); + string key = kb.ToString(); + + // Check cache + RWLock.EnterReadLock(); + try + { + object oFactory; + if (MultiPocoFactories.TryGetValue(key, out oFactory)) + return (Func)oFactory; + } + finally + { + RWLock.ExitReadLock(); + } - // Cache it - RWLock.EnterWriteLock(); - try - { - // Check again - object oFactory; - if (MultiPocoFactories.TryGetValue(key, out oFactory)) - return (Func)oFactory; + // Cache it + RWLock.EnterWriteLock(); + try + { + // Check again + object oFactory; + if (MultiPocoFactories.TryGetValue(key, out oFactory)) + return (Func)oFactory; - // Create the factory - var Factory = CreateMultiPocoFactory(types, sql, r); + // Create the factory + var Factory = CreateMultiPocoFactory(types, sql, r); - MultiPocoFactories.Add(key, Factory); - return Factory; - } - finally - { - RWLock.ExitWriteLock(); - } + MultiPocoFactories.Add(key, Factory); + return Factory; + } + finally + { + RWLock.ExitWriteLock(); + } - } + } - // Actual implementation of the multi-poco query - public IEnumerable Query(Type[] types, object cb, string sql, params object[] args) - { - using (MiniProfiler.StepStatic("Peta Query Type[]")) - { - OpenSharedConnection(); - try - { - using (var cmd = CreateCommand(_sharedConnection, sql, args)) - { - IDataReader r; - try - { - r = cmd.ExecuteReader(); - OnExecutedCommand(cmd); - } - catch (Exception x) - { - OnException(x); - throw; - } - var factory = GetMultiPocoFactory(types, sql, r); - if (cb == null) - cb = GetAutoMapper(types.ToArray()); - bool bNeedTerminator = false; - using (r) - { - while (true) - { - TRet poco; - try - { - if (!r.Read()) - break; - poco = factory(r, cb); - } - catch (Exception x) - { - OnException(x); - throw; - } + // Actual implementation of the multi-poco query + public IEnumerable Query(Type[] types, object cb, string sql, params object[] args) + { + OpenSharedConnection(); + try + { + using (var cmd = CreateCommand(_sharedConnection, sql, args)) + { + IDataReader r; + try + { + r = cmd.ExecuteReader(); + OnExecutedCommand(cmd); + } + catch (Exception x) + { + OnException(x); + throw; + } + var factory = GetMultiPocoFactory(types, sql, r); + if (cb == null) + cb = GetAutoMapper(types.ToArray()); + bool bNeedTerminator=false; + using (r) + { + while (true) + { + TRet poco; + try + { + if (!r.Read()) + break; + poco = factory(r, cb); + } + catch (Exception x) + { + OnException(x); + throw; + } - if (poco != null) - yield return poco; - else - bNeedTerminator = true; - } - if (bNeedTerminator) - { - var poco = (TRet)(cb as Delegate).DynamicInvoke(new object[types.Length]); - if (poco != null) - yield return poco; - else - yield break; - } - } - } - } - finally - { - CloseSharedConnection(); - } - } - } + if (poco != null) + yield return poco; + else + bNeedTerminator = true; + } + if (bNeedTerminator) + { + var poco = (TRet)(cb as Delegate).DynamicInvoke(new object[types.Length]); + if (poco != null) + yield return poco; + else + yield break; + } + } + } + } + finally + { + CloseSharedConnection(); + } + } - public bool Exists(object primaryKey) - { + public bool Exists(object primaryKey) + { var index = 0; var primaryKeyValuePairs = GetPrimaryKeyValues(PocoData.ForType(typeof(T)).TableInfo.PrimaryKey, primaryKey); return FirstOrDefault(string.Format("WHERE {0}", BuildPrimaryKeySql(primaryKeyValuePairs, ref index)), primaryKeyValuePairs.Select(x => x.Value).ToArray()) != null; - } + } public bool Exists(string sql, params object[] args) @@ -1293,143 +1303,145 @@ namespace PetaPoco return ExecuteScalar(string.Format(existsTemplate, poco.TableName, sql), args) != 0; } - public T Single(object primaryKey) - { + public T Single(object primaryKey) + { var index = 0; var primaryKeyValuePairs = GetPrimaryKeyValues(PocoData.ForType(typeof(T)).TableInfo.PrimaryKey, primaryKey); return Single(string.Format("WHERE {0}", BuildPrimaryKeySql(primaryKeyValuePairs, ref index)), primaryKeyValuePairs.Select(x => x.Value).ToArray()); - } - public T SingleOrDefault(object primaryKey) - { - var index = 0; + } + public T SingleOrDefault(object primaryKey) + { + var index = 0; var primaryKeyValuePairs = GetPrimaryKeyValues(PocoData.ForType(typeof(T)).TableInfo.PrimaryKey, primaryKey); return SingleOrDefault(string.Format("WHERE {0}", BuildPrimaryKeySql(primaryKeyValuePairs, ref index)), primaryKeyValuePairs.Select(x => x.Value).ToArray()); - } - public T Single(string sql, params object[] args) - { - return Query(sql, args).Single(); - } - public T SingleOrDefault(string sql, params object[] args) - { - return Query(sql, args).SingleOrDefault(); - } - public T First(string sql, params object[] args) - { - return Query(sql, args).First(); - } - public T FirstOrDefault(string sql, params object[] args) - { - return Query(sql, args).FirstOrDefault(); - } - public T Single(Sql sql) - { + } + public T Single(string sql, params object[] args) + { + return Query(sql, args).Single(); + } + public T SingleOrDefault(string sql, params object[] args) + { + return Query(sql, args).SingleOrDefault(); + } + public T First(string sql, params object[] args) + { + return Query(sql, args).First(); + } + public T FirstOrDefault(string sql, params object[] args) + { + return Query(sql, args).FirstOrDefault(); + } + public T Single(Sql sql) + { return Query(sql).Single(); - } - public T SingleOrDefault(Sql sql) - { - return Query(sql).SingleOrDefault(); - } - public T First(Sql sql) - { - return Query(sql).First(); - } - public T FirstOrDefault(Sql sql) - { - return Query(sql).FirstOrDefault(); - } - - public string EscapeTableName(string str) - { - // Assume table names with "dot", or opening sq is already escaped - return str.IndexOf('.') >= 0 ? str : EscapeSqlIdentifier(str); - } - - public string EscapeSqlIdentifier(string str) - { - switch (_dbType) - { - case DBType.MySql: - return string.Format("`{0}`", str); - - case DBType.PostgreSQL: - case DBType.Oracle: - return string.Format("\"{0}\"", str); + } + public T SingleOrDefault(Sql sql) + { + return Query(sql).SingleOrDefault(); + } + public T First(Sql sql) + { + return Query(sql).First(); + } + public T FirstOrDefault(Sql sql) + { + return Query(sql).FirstOrDefault(); + } + + public string EscapeTableName(string str) + { + // Assume table names with "dot" are already escaped + return str.IndexOf('.') >= 0 ? str : EscapeSqlIdentifier(str); + } + + public string EscapeSqlIdentifier(string str) + { + switch (_dbType) + { + case DBType.MySql: + return string.Format("`{0}`", str); - default: - return string.Format("[{0}]", str); - } - } + case DBType.PostgreSQL: + return string.Format("\"{0}\"", str); - public object Insert(string tableName, string primaryKeyName, object poco) - { - return Insert(tableName, primaryKeyName, true, poco); - } + case DBType.Oracle: + return string.Format("\"{0}\"", str.ToUpperInvariant()); - // Insert a poco into a table. If the poco has a property with the same name - // as the primary key the id of the new record is assigned to it. Either way, - // the new id is returned. - public object Insert(string tableName, string primaryKeyName, bool autoIncrement, object poco) - { - using (MiniProfiler.StepStatic("Peta Insert " + tableName)) - { + default: + return string.Format("[{0}]", str); + } + } + + public object Insert(string tableName, string primaryKeyName, object poco) + { + return Insert(tableName, primaryKeyName, true, poco); + } + + // Insert a poco into a table. If the poco has a property with the same name + // as the primary key the id of the new record is assigned to it. Either way, + // the new id is returned. + public object Insert(string tableName, string primaryKeyName, bool autoIncrement, object poco) + { + try + { + OpenSharedConnection(); try { - OpenSharedConnection(); - try - { - using (var cmd = CreateCommand(_sharedConnection, "")) - { - var pd = PocoData.ForObject(poco, primaryKeyName); - var names = new List(); - var values = new List(); - var index = 0; - var versionName = ""; - - foreach (var i in pd.Columns) - { - // Don't insert result columns - if (i.Value.ResultColumn) - continue; + using (var cmd = CreateCommand(_sharedConnection, "")) + { + var pd = PocoData.ForObject(poco, primaryKeyName); + var names = new List(); + var values = new List(); + var index = 0; + var versionName = ""; - // Don't insert the primary key (except under oracle where we need bring in the next sequence value) - if (autoIncrement && primaryKeyName != null && string.Compare(i.Key, primaryKeyName, true) == 0) - { - if (_dbType == DBType.Oracle && !string.IsNullOrEmpty(pd.TableInfo.SequenceName)) - { - names.Add(i.Key); - values.Add(string.Format("{0}.nextval", pd.TableInfo.SequenceName)); - } - continue; - } + foreach (var i in pd.Columns) + { + // Don't insert result columns + if (i.Value.ResultColumn) + continue; - names.Add(EscapeSqlIdentifier(i.Key)); - values.Add(string.Format("{0}{1}", _paramPrefix, index++)); + // Don't insert the primary key (except under oracle where we need bring in the next sequence value) + if (autoIncrement && primaryKeyName != null && string.Compare(i.Key, primaryKeyName, true)==0) + { + if (_dbType == DBType.Oracle && !string.IsNullOrEmpty(pd.TableInfo.SequenceName)) + { + names.Add(i.Key); + values.Add(string.Format("{0}.nextval", pd.TableInfo.SequenceName)); + } + continue; + } - object val = i.Value.GetValue(poco); - if (i.Value.VersionColumn) - { - val = 1; - versionName = i.Key; - } + names.Add(EscapeSqlIdentifier(i.Key)); + values.Add(string.Format("{0}{1}", _paramPrefix, index++)); - AddParam(cmd, val, _paramPrefix); + object val = i.Value.GetValue(poco); + if (i.Value.VersionColumn) + { + val = 1; + versionName = i.Key; } - cmd.CommandText = string.Format("INSERT INTO {0} ({1}) VALUES ({2})", - EscapeTableName(tableName), - string.Join(",", names.ToArray()), - string.Join(",", values.ToArray()) - ); + AddParam(cmd, val, _paramPrefix); + } - if (!autoIncrement) - { - DoPreExecute(cmd); - cmd.ExecuteNonQuery(); - OnExecutedCommand(cmd); - return true; - } + cmd.CommandText = string.Format("INSERT INTO {0} ({1}) VALUES ({2})", + EscapeTableName(tableName), + string.Join(",", names.ToArray()), + string.Join(",", values.ToArray()) + ); + + object id; - object id; + if (!autoIncrement) + { + DoPreExecute(cmd); + cmd.ExecuteNonQuery(); + OnExecutedCommand(cmd); + id = true; + } + else + { switch (_dbType) { @@ -1514,39 +1526,39 @@ namespace PetaPoco pc.SetValue(poco, pc.ChangeType(id)); } } + } - // Assign the Version column - if (!string.IsNullOrEmpty(versionName)) + // Assign the Version column + if (!string.IsNullOrEmpty(versionName)) + { + PocoColumn pc; + if (pd.Columns.TryGetValue(versionName, out pc)) { - PocoColumn pc; - if (pd.Columns.TryGetValue(versionName, out pc)) - { - pc.SetValue(poco, pc.ChangeType(1)); - } + pc.SetValue(poco, pc.ChangeType(1)); } - - return id; } - } - finally - { - CloseSharedConnection(); - } - } - catch (Exception x) + + return id; + } + } + finally { - OnException(x); - throw; + CloseSharedConnection(); } - } - } + } + catch (Exception x) + { + OnException(x); + throw; + } + } - // Insert an annotated poco object - public object Insert(object poco) - { - var pd = PocoData.ForType(poco.GetType()); - return Insert(pd.TableInfo.TableName, pd.TableInfo.PrimaryKey, pd.TableInfo.AutoIncrement, poco); - } + // Insert an annotated poco object + public object Insert(object poco) + { + var pd = PocoData.ForType(poco.GetType()); + return Insert(pd.TableInfo.TableName, pd.TableInfo.PrimaryKey, pd.TableInfo.AutoIncrement, poco); + } public void InsertMany(IEnumerable pocoList) { @@ -1561,106 +1573,108 @@ namespace PetaPoco } } - // Update a record with values from a poco. primary key value can be either supplied or read from the poco - public int Update(string tableName, string primaryKeyName, object poco, object primaryKeyValue) - { - using (MiniProfiler.StepStatic("Peta Update " + tableName)) - { + public int Update(string tableName, string primaryKeyName, object poco, object primaryKeyValue) + { + return Update(tableName, primaryKeyName, poco, primaryKeyValue, null); + } + + + // Update a record with values from a poco. primary key value can be either supplied or read from the poco + public int Update(string tableName, string primaryKeyName, object poco, object primaryKeyValue, IEnumerable columns) + { + try + { + OpenSharedConnection(); try { - OpenSharedConnection(); - try - { - using (var cmd = CreateCommand(_sharedConnection, "")) - { - var sb = new StringBuilder(); - var index = 0; - var pd = PocoData.ForObject(poco, primaryKeyName); - string versionName = null; - object versionValue = null; + using (var cmd = CreateCommand(_sharedConnection, "")) + { + var sb = new StringBuilder(); + var index = 0; + var pd = PocoData.ForObject(poco,primaryKeyName); + string versionName = null; + object versionValue = null; - var primaryKeyValuePairs = GetPrimaryKeyValues(primaryKeyName, primaryKeyValue); + var primaryKeyValuePairs = GetPrimaryKeyValues(primaryKeyName, primaryKeyValue); - foreach (var i in pd.Columns) + foreach (var i in pd.Columns) + { + // Don't update the primary key, but grab the value if we don't have it + if (primaryKeyValue == null && primaryKeyValuePairs.ContainsKey(i.Key)) { - // Don't update the primary key, but grab the value if we don't have it - if (primaryKeyValue == null && primaryKeyValuePairs.ContainsKey(i.Key)) - { - primaryKeyValuePairs[i.Key] = i.Value.PropertyInfo.GetValue(poco, null); - continue; - } + primaryKeyValuePairs[i.Key] = i.Value.PropertyInfo.GetValue(poco, null); + continue; + } - // Dont update result only columns - if (i.Value.ResultColumn) - continue; + // Dont update result only columns + if (i.Value.ResultColumn) + continue; - object value = i.Value.PropertyInfo.GetValue(poco, null); + if (!i.Value.VersionColumn && columns != null && !columns.Contains(i.Value.ColumnName, StringComparer.OrdinalIgnoreCase)) + continue; + + object value = i.Value.PropertyInfo.GetValue(poco, null); - if (i.Value.VersionColumn) - { - versionName = i.Key; - versionValue = value; - value = Convert.ToInt64(value) + 1; - } + if (i.Value.VersionColumn) + { + versionName = i.Key; + versionValue = value; + value = Convert.ToInt64(value) + 1; + } - // Build the sql - if (index > 0) - sb.Append(", "); - sb.AppendFormat("{0} = {1}{2}", EscapeSqlIdentifier(i.Key), _paramPrefix, index++); + // Build the sql + if (index > 0) + sb.Append(", "); + sb.AppendFormat("{0} = {1}{2}", EscapeSqlIdentifier(i.Key), _paramPrefix, index++); - // Store the parameter in the command - AddParam(cmd, value, _paramPrefix); - } + // Store the parameter in the command + AddParam(cmd, value, _paramPrefix); + } + - cmd.CommandText = string.Format("UPDATE {0} SET {1} WHERE {2}", - EscapeSqlIdentifier(tableName), sb.ToString(), - BuildPrimaryKeySql(primaryKeyValuePairs, ref index)); + cmd.CommandText = string.Format("UPDATE {0} SET {1} WHERE {2}", + EscapeTableName(tableName), sb.ToString(), BuildPrimaryKeySql(primaryKeyValuePairs, ref index)); - foreach (var keyValue in primaryKeyValuePairs) - { - AddParam(cmd, keyValue.Value, _paramPrefix); - } + foreach (var keyValue in primaryKeyValuePairs) + { + AddParam(cmd, keyValue.Value, _paramPrefix); + } - if (!string.IsNullOrEmpty(versionName)) - { - cmd.CommandText += string.Format(" AND {0} = {1}{2}", EscapeSqlIdentifier(versionName), _paramPrefix, - index++); - AddParam(cmd, versionValue, _paramPrefix); - } + if (!string.IsNullOrEmpty(versionName)) + { + cmd.CommandText += string.Format(" AND {0} = {1}{2}", EscapeSqlIdentifier(versionName), _paramPrefix, index++); + AddParam(cmd, versionValue, _paramPrefix); + } - DoPreExecute(cmd); + DoPreExecute(cmd); - // Do it - var result = cmd.ExecuteNonQuery(); - OnExecutedCommand(cmd); + // Do it + var result = cmd.ExecuteNonQuery(); + OnExecutedCommand(cmd); - // Set Version - if (!string.IsNullOrEmpty(versionName)) + // Set Version + if (!string.IsNullOrEmpty(versionName)) { + PocoColumn pc; + if (pd.Columns.TryGetValue(versionName, out pc)) { - PocoColumn pc; - if (pd.Columns.TryGetValue(versionName, out pc)) - { - pc.PropertyInfo.SetValue(poco, - Convert.ChangeType(Convert.ToInt64(versionValue) + 1, - pc.PropertyInfo.PropertyType), null); - } + pc.PropertyInfo.SetValue(poco, Convert.ChangeType(Convert.ToInt64(versionValue)+1, pc.PropertyInfo.PropertyType), null); } - - return result; } - } - finally - { - CloseSharedConnection(); - } - } - catch (Exception x) + + return result; + } + } + finally { - OnException(x); - throw; + CloseSharedConnection(); } - } - } + } + catch (Exception x) + { + OnException(x); + throw; + } + } private string BuildPrimaryKeySql(Dictionary primaryKeyValuePair, ref int index) { @@ -1669,7 +1683,7 @@ namespace PetaPoco return string.Join(" AND ", primaryKeyValuePair.Select((x, i) => string.Format("{0} = {1}{2}", EscapeSqlIdentifier(x.Key), _paramPrefix, tempIndex + i)).ToArray()); } - private Dictionary GetPrimaryKeyValues(string primaryKeyName, object primaryKeyValue) + private Dictionary GetPrimaryKeyValues(string primaryKeyName, object primaryKeyValue) { Dictionary primaryKeyValues; @@ -1692,56 +1706,70 @@ namespace PetaPoco } public int Update(string tableName, string primaryKeyName, object poco) - { - return Update(tableName, primaryKeyName, poco, null); - } - - public int Update(object poco) - { - return Update(poco, null); - } - - public int Update(object poco, object primaryKeyValue) - { - var pd = PocoData.ForType(poco.GetType()); - return Update(pd.TableInfo.TableName, pd.TableInfo.PrimaryKey, poco, primaryKeyValue); - } - - public int Update(string sql, params object[] args) - { - var pd = PocoData.ForType(typeof(T)); - return Execute(string.Format("UPDATE {0} {1}", EscapeTableName(pd.TableInfo.TableName), sql), args); - } - - public int Update(Sql sql) - { - var pd = PocoData.ForType(typeof(T)); - return Execute(new Sql(string.Format("UPDATE {0}", EscapeTableName(pd.TableInfo.TableName))).Append(sql)); - } + { + return Update(tableName, primaryKeyName, poco, null); + } + + public int Update(string tableName, string primaryKeyName, object poco, IEnumerable columns) + { + return Update(tableName, primaryKeyName, poco, null, columns); + } + + public int Update(object poco, IEnumerable columns) + { + return Update(poco, null, columns); + } + + public int Update(object poco) + { + return Update(poco, null, null); + } + + public int Update(object poco, object primaryKeyValue) + { + return Update(poco, primaryKeyValue, null); + } + public int Update(object poco, object primaryKeyValue, IEnumerable columns) + { + var pd = PocoData.ForType(poco.GetType()); + return Update(pd.TableInfo.TableName, pd.TableInfo.PrimaryKey, poco, primaryKeyValue, columns); + } + + public int Update(string sql, params object[] args) + { + var pd = PocoData.ForType(typeof(T)); + return Execute(string.Format("UPDATE {0} {1}", EscapeTableName(pd.TableInfo.TableName), sql), args); + } + + public int Update(Sql sql) + { + var pd = PocoData.ForType(typeof(T)); + return Execute(new Sql(string.Format("UPDATE {0}", EscapeTableName(pd.TableInfo.TableName))).Append(sql)); + } public void UpdateMany(IEnumerable pocoList) { - using (var tran = GetTransaction()) + using (var tran = GetTransaction()) { foreach (var poco in pocoList) { Update(poco); } - tran.Complete(); + tran.Complete(); } } public int Delete(string tableName, string primaryKeyName, object poco) - { - return Delete(tableName, primaryKeyName, poco, null); - } + { + return Delete(tableName, primaryKeyName, poco, null); + } - public int Delete(string tableName, string primaryKeyName, object poco, object primaryKeyValue) - { + public int Delete(string tableName, string primaryKeyName, object poco, object primaryKeyValue) + { var primaryKeyValuePairs = GetPrimaryKeyValues(primaryKeyName, primaryKeyValue); - // If primary key value not specified, pick it up from the object + // If primary key value not specified, pick it up from the object if (primaryKeyValue == null) { var pd = PocoData.ForObject(poco, primaryKeyName); @@ -1750,219 +1778,219 @@ namespace PetaPoco if (primaryKeyValuePairs.ContainsKey(i.Key)) { primaryKeyValuePairs[i.Key] = i.Value.PropertyInfo.GetValue(poco, null); - } - } - } - - // Do it - var index = 0; - var sql = string.Format("DELETE FROM {0} WHERE {1}", tableName, BuildPrimaryKeySql(primaryKeyValuePairs, ref index)); - return Execute(sql, primaryKeyValuePairs.Select(x => x.Value).ToArray()); - } - - public int Delete(object poco) - { - var pd = PocoData.ForType(poco.GetType()); - return Delete(pd.TableInfo.TableName, pd.TableInfo.PrimaryKey, poco); - } - - public int Delete(object pocoOrPrimaryKey) - { - if (pocoOrPrimaryKey.GetType() == typeof(T)) - return Delete(pocoOrPrimaryKey); - var pd = PocoData.ForType(typeof(T)); - return Delete(pd.TableInfo.TableName, pd.TableInfo.PrimaryKey, null, pocoOrPrimaryKey); - } - - public int Delete(string sql, params object[] args) - { - var pd = PocoData.ForType(typeof(T)); - return Execute(string.Format("DELETE FROM {0} {1}", EscapeTableName(pd.TableInfo.TableName), sql), args); - } - - public int Delete(Sql sql) - { - var pd = PocoData.ForType(typeof(T)); - return Execute(new Sql(string.Format("DELETE FROM {0}", EscapeTableName(pd.TableInfo.TableName))).Append(sql)); - } + } + } + } + + // Do it + var index = 0; + var sql = string.Format("DELETE FROM {0} WHERE {1}", tableName, BuildPrimaryKeySql(primaryKeyValuePairs, ref index)); + return Execute(sql, primaryKeyValuePairs.Select(x=>x.Value).ToArray()); + } + + public int Delete(object poco) + { + var pd = PocoData.ForType(poco.GetType()); + return Delete(pd.TableInfo.TableName, pd.TableInfo.PrimaryKey, poco); + } + + public int Delete(object pocoOrPrimaryKey) + { + if (pocoOrPrimaryKey.GetType() == typeof(T)) + return Delete(pocoOrPrimaryKey); + var pd = PocoData.ForType(typeof(T)); + return Delete(pd.TableInfo.TableName, pd.TableInfo.PrimaryKey, null, pocoOrPrimaryKey); + } + + public int Delete(string sql, params object[] args) + { + var pd = PocoData.ForType(typeof(T)); + return Execute(string.Format("DELETE FROM {0} {1}", EscapeTableName(pd.TableInfo.TableName), sql), args); + } + + public int Delete(Sql sql) + { + var pd = PocoData.ForType(typeof(T)); + return Execute(new Sql(string.Format("DELETE FROM {0}", EscapeTableName(pd.TableInfo.TableName))).Append(sql)); + } // Check if a poco represents a new record - public bool IsNew(string primaryKeyName, object poco) - { - var pd = PocoData.ForObject(poco, primaryKeyName); - object pk; - PocoColumn pc; - if (pd.Columns.TryGetValue(primaryKeyName, out pc)) - { - pk = pc.GetValue(poco); - } + public bool IsNew(string primaryKeyName, object poco) + { + var pd = PocoData.ForObject(poco, primaryKeyName); + object pk; + PocoColumn pc; + if (pd.Columns.TryGetValue(primaryKeyName, out pc)) + { + pk = pc.GetValue(poco); + } #if !PETAPOCO_NO_DYNAMIC else if (poco.GetType() == typeof(System.Dynamic.ExpandoObject)) { return true; } #endif - else - { - var pi = poco.GetType().GetProperty(primaryKeyName); - if (pi == null) - throw new ArgumentException(string.Format("The object doesn't have a property matching the primary key column name '{0}'", primaryKeyName)); - pk = pi.GetValue(poco, null); - } - - if (pk == null) - return true; - - var type = pk.GetType(); - - if (type.IsValueType) - { - // Common primary key types - if (type == typeof(long)) - return (long)pk == 0; - else if (type == typeof(ulong)) - return (ulong)pk == 0; - else if (type == typeof(int)) - return (int)pk == 0; - else if (type == typeof(uint)) - return (uint)pk == 0; - - // Create a default instance and compare - return pk == Activator.CreateInstance(pk.GetType()); - } - else - { - return pk == null; - } - } - - public bool IsNew(object poco) - { - var pd = PocoData.ForType(poco.GetType()); - if (!pd.TableInfo.AutoIncrement) - throw new InvalidOperationException("IsNew() and Save() are only supported on tables with auto-increment/identity primary key columns"); - return IsNew(pd.TableInfo.PrimaryKey, poco); - } - - // Insert new record or Update existing record - public void Save(string tableName, string primaryKeyName, object poco) - { - if (IsNew(primaryKeyName, poco)) - { - Insert(tableName, primaryKeyName, true, poco); - } - else - { - Update(tableName, primaryKeyName, poco); - } - } - - public void Save(object poco) - { - var pd = PocoData.ForType(poco.GetType()); - Save(pd.TableInfo.TableName, pd.TableInfo.PrimaryKey, poco); - } - - public void SaveMany(IEnumerable pocoList) - { - using (var tran = GetTransaction()) - { - foreach (var poco in pocoList) - { - Save(poco); - } - - tran.Complete(); - } - } - - public int CommandTimeout { get; set; } - public int OneTimeCommandTimeout { get; set; } - - void DoPreExecute(IDbCommand cmd) - { - // Setup command timeout - if (OneTimeCommandTimeout != 0) - { - cmd.CommandTimeout = OneTimeCommandTimeout; - OneTimeCommandTimeout = 0; - } - else if (CommandTimeout != 0) - { - cmd.CommandTimeout = CommandTimeout; - } + else + { + var pi = poco.GetType().GetProperty(primaryKeyName); + if (pi == null) + throw new ArgumentException(string.Format("The object doesn't have a property matching the primary key column name '{0}'", primaryKeyName)); + pk = pi.GetValue(poco, null); + } - // Call hook - OnExecutingCommand(cmd); + if (pk == null) + return true; - // Save it - _lastSql = cmd.CommandText; - _lastArgs = (from IDataParameter parameter in cmd.Parameters select parameter.Value).ToArray(); - } + var type = pk.GetType(); - public string LastSQL { get { return _lastSql; } } - public object[] LastArgs { get { return _lastArgs; } } - public string LastCommand - { - get { return FormatCommand(_lastSql, _lastArgs); } - } + if (type.IsValueType) + { + // Common primary key types + if (type == typeof(long)) + return (long)pk == 0; + else if (type == typeof(ulong)) + return (ulong)pk == 0; + else if (type == typeof(int)) + return (int)pk == 0; + else if (type == typeof(uint)) + return (uint)pk == 0; + + // Create a default instance and compare + return pk == Activator.CreateInstance(pk.GetType()); + } + else + { + return pk == null; + } + } + + public bool IsNew(object poco) + { + var pd = PocoData.ForType(poco.GetType()); + if (!pd.TableInfo.AutoIncrement) + throw new InvalidOperationException("IsNew() and Save() are only supported on tables with auto-increment/identity primary key columns"); + return IsNew(pd.TableInfo.PrimaryKey, poco); + } + + // Insert new record or Update existing record + public void Save(string tableName, string primaryKeyName, object poco) + { + if (IsNew(primaryKeyName, poco)) + { + Insert(tableName, primaryKeyName, true, poco); + } + else + { + Update(tableName, primaryKeyName, poco); + } + } - public string FormatCommand(IDbCommand cmd) - { - return FormatCommand(cmd.CommandText, (from IDataParameter parameter in cmd.Parameters select parameter.Value).ToArray()); - } + public void Save(object poco) + { + var pd = PocoData.ForType(poco.GetType()); + Save(pd.TableInfo.TableName, pd.TableInfo.PrimaryKey, poco); + } - public string FormatCommand(string sql, object[] args) + public void SaveMany(IEnumerable pocoList) { - var sb = new StringBuilder(); - if (sql == null) - return ""; - sb.Append(sql); - if (args != null && args.Length > 0) + using (var tran = GetTransaction()) { - sb.Append("\n"); - for (int i = 0; i < args.Length; i++) + foreach (var poco in pocoList) { - sb.AppendFormat("\t -> {0}{1} [{2}] = \"{3}\"\n", _paramPrefix, i, args[i].GetType().Name, args[i]); + Save(poco); } - sb.Remove(sb.Length - 1, 1); + + tran.Complete(); } - return sb.ToString(); } + public int CommandTimeout { get; set; } + public int OneTimeCommandTimeout { get; set; } - public static IMapper Mapper - { - get; - set; - } - - public class PocoColumn - { - public string ColumnName; - public PropertyInfo PropertyInfo; - public bool ResultColumn; - public bool VersionColumn; - public virtual void SetValue(object target, object val) { PropertyInfo.SetValue(target, val, null); } - public virtual object GetValue(object target) { return PropertyInfo.GetValue(target, null); } - public virtual object ChangeType(object val) { return Convert.ChangeType(val, PropertyInfo.PropertyType); } - } - internal class ExpandoColumn : PocoColumn - { - public override void SetValue(object target, object val) { (target as IDictionary)[ColumnName] = val; } - public override object GetValue(object target) - { - object val = null; - (target as IDictionary).TryGetValue(ColumnName, out val); - return val; - } - public override object ChangeType(object val) { return val; } - } - internal class PocoData + void DoPreExecute(IDbCommand cmd) + { + // Setup command timeout + if (OneTimeCommandTimeout != 0) + { + cmd.CommandTimeout = OneTimeCommandTimeout; + OneTimeCommandTimeout = 0; + } + else if (CommandTimeout!=0) + { + cmd.CommandTimeout = CommandTimeout; + } + + // Call hook + OnExecutingCommand(cmd); + + // Save it + _lastSql = cmd.CommandText; + _lastArgs = (from IDataParameter parameter in cmd.Parameters select parameter.Value).ToArray(); + } + + public string LastSQL { get { return _lastSql; } } + public object[] LastArgs { get { return _lastArgs; } } + public string LastCommand + { + get { return FormatCommand(_lastSql, _lastArgs); } + } + + public string FormatCommand(IDbCommand cmd) + { + return FormatCommand(cmd.CommandText, (from IDataParameter parameter in cmd.Parameters select parameter.Value).ToArray()); + } + + public string FormatCommand(string sql, object[] args) + { + var sb = new StringBuilder(); + if (sql == null) + return ""; + sb.Append(sql); + if (args != null && args.Length > 0) + { + sb.Append("\n"); + for (int i = 0; i < args.Length; i++) + { + sb.AppendFormat("\t -> {0}{1} [{2}] = \"{3}\"\n", _paramPrefix, i, args[i].GetType().Name, args[i]); + } + sb.Remove(sb.Length - 1, 1); + } + return sb.ToString(); + } + + + public static IMapper Mapper + { + get; + set; + } + + public class PocoColumn + { + public string ColumnName; + public PropertyInfo PropertyInfo; + public bool ResultColumn; + public bool VersionColumn; + public virtual void SetValue(object target, object val) { PropertyInfo.SetValue(target, val, null); } + public virtual object GetValue(object target) { return PropertyInfo.GetValue(target, null); } + public virtual object ChangeType(object val) { return Convert.ChangeType(val, PropertyInfo.PropertyType); } + } + public class ExpandoColumn : PocoColumn + { + public override void SetValue(object target, object val) { (target as IDictionary)[ColumnName]=val; } + public override object GetValue(object target) + { + object val=null; + (target as IDictionary).TryGetValue(ColumnName, out val); + return val; + } + public override object ChangeType(object val) { return val; } + } + public class PocoData { - public static PocoData ForObject(object o, string primaryKeyName) - { - var t = o.GetType(); + public static PocoData ForObject(object o, string primaryKeyName) + { + var t = o.GetType(); #if !PETAPOCO_NO_DYNAMIC if (t == typeof(System.Dynamic.ExpandoObject)) { @@ -1981,74 +2009,74 @@ namespace PetaPoco } else #endif - return ForType(t); - } - static ReaderWriterLockSlim RWLock = new ReaderWriterLockSlim(); + return ForType(t); + } + static System.Threading.ReaderWriterLockSlim RWLock = new System.Threading.ReaderWriterLockSlim(); public static PocoData ForType(Type t) { #if !PETAPOCO_NO_DYNAMIC if (t == typeof(System.Dynamic.ExpandoObject)) throw new InvalidOperationException("Can't use dynamic types with this method"); #endif - // Check cache - RWLock.EnterReadLock(); + // Check cache + RWLock.EnterReadLock(); PocoData pd; - try - { - if (m_PocoDatas.TryGetValue(t, out pd)) - return pd; - } - finally + try { - RWLock.ExitReadLock(); - } - + if (m_PocoDatas.TryGetValue(t, out pd)) + return pd; + } + finally + { + RWLock.ExitReadLock(); + } - // Cache it - RWLock.EnterWriteLock(); - try - { - // Check again - if (m_PocoDatas.TryGetValue(t, out pd)) - return pd; + + // Cache it + RWLock.EnterWriteLock(); + try + { + // Check again + if (m_PocoDatas.TryGetValue(t, out pd)) + return pd; - // Create it - pd = new PocoData(t); + // Create it + pd = new PocoData(t); m_PocoDatas.Add(t, pd); - } + } finally - { - RWLock.ExitWriteLock(); - } - - return pd; - } - - public PocoData() - { - } - - public PocoData(Type t) - { - type = t; - TableInfo = new TableInfo(); + { + RWLock.ExitWriteLock(); + } - // Get the table name - var a = t.GetCustomAttributes(typeof(TableNameAttribute), true); - TableInfo.TableName = a.Length == 0 ? t.Name : (a[0] as TableNameAttribute).Value; + return pd; + } - // Get the primary key - a = t.GetCustomAttributes(typeof(PrimaryKeyAttribute), true); - TableInfo.PrimaryKey = a.Length == 0 ? "ID" : (a[0] as PrimaryKeyAttribute).Value; - TableInfo.SequenceName = a.Length == 0 ? null : (a[0] as PrimaryKeyAttribute).sequenceName; - TableInfo.AutoIncrement = a.Length == 0 ? false : (a[0] as PrimaryKeyAttribute).autoIncrement; + public PocoData() + { + } + public PocoData(Type t) + { + type = t; + TableInfo=new TableInfo(); + + // Get the table name + var a = t.GetCustomAttributes(typeof(TableNameAttribute), true); + TableInfo.TableName = a.Length == 0 ? t.Name : (a[0] as TableNameAttribute).Value; + + // Get the primary key + a = t.GetCustomAttributes(typeof(PrimaryKeyAttribute), true); + TableInfo.PrimaryKey = a.Length == 0 ? "ID" : (a[0] as PrimaryKeyAttribute).Value; + TableInfo.SequenceName = a.Length == 0 ? null : (a[0] as PrimaryKeyAttribute).sequenceName; + TableInfo.AutoIncrement = a.Length == 0 ? false : (a[0] as PrimaryKeyAttribute).autoIncrement; + // Set autoincrement false if primary key has multiple columns TableInfo.AutoIncrement = TableInfo.AutoIncrement ? !TableInfo.PrimaryKey.Contains(',') : TableInfo.AutoIncrement; - // Call column mapper - if (Mapper != null) - Mapper.GetTableInfo(t, TableInfo); + // Call column mapper + if (Database.Mapper != null) + Database.Mapper.GetTableInfo(t, TableInfo); // Work out bound properties bool ExplicitColumns = t.GetCustomAttributes(typeof(ExplicitColumnsAttribute), true).Length > 0; @@ -2084,57 +2112,57 @@ namespace PetaPoco if (pc.ColumnName == null) { pc.ColumnName = pi.Name; - if (Mapper != null && !Mapper.MapPropertyToColumn(pi, ref pc.ColumnName, ref pc.ResultColumn)) + if (Database.Mapper != null && !Database.Mapper.MapPropertyToColumn(pi, ref pc.ColumnName, ref pc.ResultColumn)) continue; } - + // Store it Columns.Add(pc.ColumnName, pc); } // Build column list for automatic select - QueryColumns = (from c in Columns where !c.Value.ResultColumn select c.Key).ToArray(); + QueryColumns = (from c in Columns where !c.Value.ResultColumn select c.Key).ToArray(); } - static bool IsIntegralType(Type t) + static bool IsIntegralType(Type t) { - var tc = Type.GetTypeCode(t); + var tc = Type.GetTypeCode(t); return tc >= TypeCode.SByte && tc <= TypeCode.UInt64; } // Create factory function that can convert a IDataReader record into a POCO - public Delegate GetFactory(string sql, string connString, bool ForceDateTimesToUtc, int firstColumn, int countColumns, IDataReader r) + public Delegate GetFactory(string sql, string connString, bool ForceDateTimesToUtc, int firstColumn, int countColumns, IDataReader r) { - // Check cache - var key = string.Format("{0}:{1}:{2}:{3}:{4}", sql, connString, ForceDateTimesToUtc, firstColumn, countColumns); - RWLock.EnterReadLock(); - try + // Check cache + var key = string.Format("{0}:{1}:{2}:{3}:{4}", sql, connString, ForceDateTimesToUtc, firstColumn, countColumns); + RWLock.EnterReadLock(); + try { // Have we already created it? - Delegate factory; + Delegate factory; if (PocoFactories.TryGetValue(key, out factory)) - return factory; - } - finally - { - RWLock.ExitReadLock(); - } + return factory; + } + finally + { + RWLock.ExitReadLock(); + } - // Take the writer lock - RWLock.EnterWriteLock(); + // Take the writer lock + RWLock.EnterWriteLock(); - try + try { - // Check again, just in case - Delegate factory; - if (PocoFactories.TryGetValue(key, out factory)) - return factory; - + // Check again, just in case + Delegate factory; + if (PocoFactories.TryGetValue(key, out factory)) + return factory; + // Create the method var m = new DynamicMethod("petapoco_factory_" + PocoFactories.Count.ToString(), type, new Type[] { typeof(IDataReader) }, true); - var il = m.GetILGenerator(); + var il = m.GetILGenerator(); #if !PETAPOCO_NO_DYNAMIC if (type == typeof(object)) @@ -2160,7 +2188,7 @@ namespace PetaPoco converter = delegate(object src) { return new DateTime(((DateTime)src).Ticks, DateTimeKind.Utc); }; // Setup stack for call to converter - AddConverterToStack(il, converter); + AddConverterToStack(il, converter); // r[i] il.Emit(OpCodes.Ldarg_0); // obj, obj, fieldname, converter?, rdr @@ -2194,210 +2222,240 @@ namespace PetaPoco } else #endif - if (type.IsValueType || type == typeof(string) || type == typeof(byte[])) - { - // Do we need to install a converter? - var srcType = r.GetFieldType(0); - var converter = GetConverter(ForceDateTimesToUtc, null, srcType, type); - - // "if (!rdr.IsDBNull(i))" - il.Emit(OpCodes.Ldarg_0); // rdr - il.Emit(OpCodes.Ldc_I4_0); // rdr,0 - il.Emit(OpCodes.Callvirt, fnIsDBNull); // bool - var lblCont = il.DefineLabel(); - il.Emit(OpCodes.Brfalse_S, lblCont); - il.Emit(OpCodes.Ldnull); // null - var lblFin = il.DefineLabel(); - il.Emit(OpCodes.Br_S, lblFin); - - il.MarkLabel(lblCont); - - // Setup stack for call to converter - AddConverterToStack(il, converter); - - il.Emit(OpCodes.Ldarg_0); // rdr - il.Emit(OpCodes.Ldc_I4_0); // rdr,0 - il.Emit(OpCodes.Callvirt, fnGetValue); // value - - // Call the converter - if (converter != null) - il.Emit(OpCodes.Callvirt, fnInvoke); - - il.MarkLabel(lblFin); - il.Emit(OpCodes.Unbox_Any, type); // value converted - } - else - { - // var poco=new T() - il.Emit(OpCodes.Newobj, type.GetConstructor(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, new Type[0], null)); - - // Enumerate all fields generating a set assignment for the column - for (int i = firstColumn; i < firstColumn + countColumns; i++) - { - // Get the PocoColumn for this db column, ignore if not known - PocoColumn pc; - if (!Columns.TryGetValue(r.GetName(i), out pc)) - continue; - - // Get the source type for this column - var srcType = r.GetFieldType(i); - var dstType = pc.PropertyInfo.PropertyType; + if (type.IsValueType || type == typeof(string) || type == typeof(byte[])) + { + // Do we need to install a converter? + var srcType = r.GetFieldType(0); + var converter = GetConverter(ForceDateTimesToUtc, null, srcType, type); // "if (!rdr.IsDBNull(i))" - il.Emit(OpCodes.Ldarg_0); // poco,rdr - il.Emit(OpCodes.Ldc_I4, i); // poco,rdr,i - il.Emit(OpCodes.Callvirt, fnIsDBNull); // poco,bool - var lblNext = il.DefineLabel(); - il.Emit(OpCodes.Brtrue_S, lblNext); // poco + il.Emit(OpCodes.Ldarg_0); // rdr + il.Emit(OpCodes.Ldc_I4_0); // rdr,0 + il.Emit(OpCodes.Callvirt, fnIsDBNull); // bool + var lblCont = il.DefineLabel(); + il.Emit(OpCodes.Brfalse_S, lblCont); + il.Emit(OpCodes.Ldnull); // null + var lblFin = il.DefineLabel(); + il.Emit(OpCodes.Br_S, lblFin); + + il.MarkLabel(lblCont); + + // Setup stack for call to converter + AddConverterToStack(il, converter); + + il.Emit(OpCodes.Ldarg_0); // rdr + il.Emit(OpCodes.Ldc_I4_0); // rdr,0 + il.Emit(OpCodes.Callvirt, fnGetValue); // value + + // Call the converter + if (converter != null) + il.Emit(OpCodes.Callvirt, fnInvoke); + + il.MarkLabel(lblFin); + il.Emit(OpCodes.Unbox_Any, type); // value converted + } + else + { + // var poco=new T() + il.Emit(OpCodes.Newobj, type.GetConstructor(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, new Type[0], null)); - il.Emit(OpCodes.Dup); // poco,poco + // Enumerate all fields generating a set assignment for the column + for (int i = firstColumn; i < firstColumn + countColumns; i++) + { + // Get the PocoColumn for this db column, ignore if not known + PocoColumn pc; + if (!Columns.TryGetValue(r.GetName(i), out pc) && !Columns.TryGetValue(r.GetName(i).Replace("_", ""), out pc)) + { + continue; + } + + // Get the source type for this column + var srcType = r.GetFieldType(i); + var dstType = pc.PropertyInfo.PropertyType; - // Do we need to install a converter? - var converter = GetConverter(ForceDateTimesToUtc, pc, srcType, dstType); + // "if (!rdr.IsDBNull(i))" + il.Emit(OpCodes.Ldarg_0); // poco,rdr + il.Emit(OpCodes.Ldc_I4, i); // poco,rdr,i + il.Emit(OpCodes.Callvirt, fnIsDBNull); // poco,bool + var lblNext = il.DefineLabel(); + il.Emit(OpCodes.Brtrue_S, lblNext); // poco - // Fast - bool Handled = false; - if (converter == null) - { - var valuegetter = typeof(IDataRecord).GetMethod("Get" + srcType.Name, new Type[] { typeof(int) }); - if (valuegetter != null - && valuegetter.ReturnType == srcType - && (valuegetter.ReturnType == dstType || valuegetter.ReturnType == Nullable.GetUnderlyingType(dstType))) - { - il.Emit(OpCodes.Ldarg_0); // *,rdr - il.Emit(OpCodes.Ldc_I4, i); // *,rdr,i - il.Emit(OpCodes.Callvirt, valuegetter); // *,value + il.Emit(OpCodes.Dup); // poco,poco - // Convert to Nullable - if (Nullable.GetUnderlyingType(dstType) != null) - { - il.Emit(OpCodes.Newobj, dstType.GetConstructor(new Type[] { Nullable.GetUnderlyingType(dstType) })); - } + // Do we need to install a converter? + var converter = GetConverter(ForceDateTimesToUtc, pc, srcType, dstType); - il.Emit(OpCodes.Callvirt, pc.PropertyInfo.GetSetMethod(true)); // poco - Handled = true; - } - } + // Fast + bool Handled = false; + if (converter == null) + { + var valuegetter = typeof(IDataRecord).GetMethod("Get" + srcType.Name, new Type[] { typeof(int) }); + if (valuegetter != null + && valuegetter.ReturnType == srcType + && (valuegetter.ReturnType == dstType || valuegetter.ReturnType == Nullable.GetUnderlyingType(dstType))) + { + il.Emit(OpCodes.Ldarg_0); // *,rdr + il.Emit(OpCodes.Ldc_I4, i); // *,rdr,i + il.Emit(OpCodes.Callvirt, valuegetter); // *,value + + // Convert to Nullable + if (Nullable.GetUnderlyingType(dstType) != null) + { + il.Emit(OpCodes.Newobj, dstType.GetConstructor(new Type[] { Nullable.GetUnderlyingType(dstType) })); + } + + il.Emit(OpCodes.Callvirt, pc.PropertyInfo.GetSetMethod(true)); // poco + Handled = true; + } + } - // Not so fast - if (!Handled) - { - // Setup stack for call to converter - AddConverterToStack(il, converter); + // Not so fast + if (!Handled) + { + // Setup stack for call to converter + AddConverterToStack(il, converter); - // "value = rdr.GetValue(i)" - il.Emit(OpCodes.Ldarg_0); // *,rdr - il.Emit(OpCodes.Ldc_I4, i); // *,rdr,i - il.Emit(OpCodes.Callvirt, fnGetValue); // *,value + // "value = rdr.GetValue(i)" + il.Emit(OpCodes.Ldarg_0); // *,rdr + il.Emit(OpCodes.Ldc_I4, i); // *,rdr,i + il.Emit(OpCodes.Callvirt, fnGetValue); // *,value - // Call the converter - if (converter != null) - il.Emit(OpCodes.Callvirt, fnInvoke); + // Call the converter + if (converter != null) + il.Emit(OpCodes.Callvirt, fnInvoke); - // Assign it - il.Emit(OpCodes.Unbox_Any, pc.PropertyInfo.PropertyType); // poco,poco,value - il.Emit(OpCodes.Callvirt, pc.PropertyInfo.GetSetMethod(true)); // poco - } + // Assign it + il.Emit(OpCodes.Unbox_Any, pc.PropertyInfo.PropertyType); // poco,poco,value + il.Emit(OpCodes.Callvirt, pc.PropertyInfo.GetSetMethod(true)); // poco + } - il.MarkLabel(lblNext); - } - } + il.MarkLabel(lblNext); + } + + var fnOnLoaded = RecurseInheritedTypes(type, (x) => x.GetMethod("OnLoaded", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, new Type[0], null)); + if (fnOnLoaded != null) + { + il.Emit(OpCodes.Dup); + il.Emit(OpCodes.Callvirt, fnOnLoaded); + } + } - il.Emit(OpCodes.Ret); + il.Emit(OpCodes.Ret); - // Cache it, return it + // Cache it, return it var del = m.CreateDelegate(Expression.GetFuncType(typeof(IDataReader), type)); PocoFactories.Add(key, del); return del; } - finally - { - RWLock.ExitWriteLock(); + finally + { + RWLock.ExitWriteLock(); } } - private static void AddConverterToStack(ILGenerator il, Func converter) - { - if (converter != null) - { - // Add the converter - int converterIndex = m_Converters.Count; - m_Converters.Add(converter); - - // Generate IL to push the converter onto the stack - il.Emit(OpCodes.Ldsfld, fldConverters); - il.Emit(OpCodes.Ldc_I4, converterIndex); - il.Emit(OpCodes.Callvirt, fnListGetItem); // Converter - } - } + private static void AddConverterToStack(ILGenerator il, Func converter) + { + if (converter != null) + { + // Add the converter + int converterIndex = m_Converters.Count; + m_Converters.Add(converter); + + // Generate IL to push the converter onto the stack + il.Emit(OpCodes.Ldsfld, fldConverters); + il.Emit(OpCodes.Ldc_I4, converterIndex); + il.Emit(OpCodes.Callvirt, fnListGetItem); // Converter + } + } - private static Func GetConverter(bool forceDateTimesToUtc, PocoColumn pc, Type srcType, Type dstType) - { - Func converter = null; + private static Func GetConverter(bool forceDateTimesToUtc, PocoColumn pc, Type srcType, Type dstType) + { + Func converter = null; - // Get converter from the mapper - if (Mapper != null) - { - DestinationInfo destinationInfo = pc != null - ? new DestinationInfo(pc.PropertyInfo) - : new DestinationInfo(dstType); - converter = Mapper.GetFromDbConverter(destinationInfo, srcType); - } + // Get converter from the mapper + if (Database.Mapper != null) + { + if (pc != null) + { + converter = Database.Mapper.GetFromDbConverter(pc.PropertyInfo, srcType); + } + else + { + var m2 = Database.Mapper as IMapper2; + if (m2 != null) + { + converter = m2.GetFromDbConverter(dstType, srcType); + } + } + } - // Standard DateTime->Utc mapper - if (forceDateTimesToUtc && converter == null && srcType == typeof(DateTime) && (dstType == typeof(DateTime) || dstType == typeof(DateTime?))) - { - converter = delegate(object src) { return new DateTime(((DateTime)src).Ticks, DateTimeKind.Utc); }; - } + // Standard DateTime->Utc mapper + if (forceDateTimesToUtc && converter == null && srcType == typeof(DateTime) && (dstType == typeof(DateTime) || dstType == typeof(DateTime?))) + { + converter = delegate(object src) { return new DateTime(((DateTime)src).Ticks, DateTimeKind.Utc); }; + } - // Forced type conversion including integral types -> enum - if (converter == null) - { - if (dstType.IsEnum && IsIntegralType(srcType)) - { - if (srcType != typeof(int)) - { - converter = delegate(object src) { return Convert.ChangeType(src, typeof(int), null); }; - } - } - else if (!dstType.IsAssignableFrom(srcType)) - { - converter = delegate(object src) { return Convert.ChangeType(src, dstType, null); }; - } - } - return converter; - } + // Forced type conversion including integral types -> enum + if (converter == null) + { + if (dstType.IsEnum && IsIntegralType(srcType)) + { + if (srcType != typeof(int)) + { + converter = delegate(object src) { return Convert.ChangeType(src, typeof(int), null); }; + } + } + else if (!dstType.IsAssignableFrom(srcType)) + { + converter = delegate(object src) { return Convert.ChangeType(src, dstType, null); }; + } + } + return converter; + } - static Dictionary m_PocoDatas = new Dictionary(); - static List> m_Converters = new List>(); - static MethodInfo fnGetValue = typeof(IDataRecord).GetMethod("GetValue", new Type[] { typeof(int) }); - static MethodInfo fnIsDBNull = typeof(IDataRecord).GetMethod("IsDBNull"); - static FieldInfo fldConverters = typeof(PocoData).GetField("m_Converters", BindingFlags.Static | BindingFlags.GetField | BindingFlags.NonPublic); - static MethodInfo fnListGetItem = typeof(List>).GetProperty("Item").GetGetMethod(); - static MethodInfo fnInvoke = typeof(Func).GetMethod("Invoke"); - public Type type; - public string[] QueryColumns { get; private set; } - public TableInfo TableInfo { get; private set; } - public Dictionary Columns { get; private set; } - Dictionary PocoFactories = new Dictionary(); - } + static T RecurseInheritedTypes(Type t, Func cb) + { + while (t != null) + { + T info = cb(t); + if (info != null) + return info; + t = t.BaseType; + } + return default(T); + } - // Member variables - string _connectionString; - string _providerName; - DbProviderFactory _factory; - IDbConnection _sharedConnection; - IDbTransaction _transaction; - int _sharedConnectionDepth; - int _transactionDepth; - bool _transactionCancelled; - string _lastSql; - object[] _lastArgs; - string _paramPrefix = "@"; - } - // Transaction object helps maintain transaction depth counts + static Dictionary m_PocoDatas = new Dictionary(); + static List> m_Converters = new List>(); + static MethodInfo fnGetValue = typeof(IDataRecord).GetMethod("GetValue", new Type[] { typeof(int) }); + static MethodInfo fnIsDBNull = typeof(IDataRecord).GetMethod("IsDBNull"); + static FieldInfo fldConverters = typeof(PocoData).GetField("m_Converters", BindingFlags.Static | BindingFlags.GetField | BindingFlags.NonPublic); + static MethodInfo fnListGetItem = typeof(List>).GetProperty("Item").GetGetMethod(); + static MethodInfo fnInvoke = typeof(Func).GetMethod("Invoke"); + public Type type; + public string[] QueryColumns { get; private set; } + public TableInfo TableInfo { get; private set; } + public Dictionary Columns { get; private set; } + Dictionary PocoFactories = new Dictionary(); + } + + // Member variables + string _connectionString; + string _providerName; + DbProviderFactory _factory; + IDbConnection _sharedConnection; + IDbTransaction _transaction; + int _sharedConnectionDepth; + int _transactionDepth; + bool _transactionCancelled; + string _lastSql; + object[] _lastArgs; + string _paramPrefix = "@"; + } + + // Transaction object helps maintain transaction depth counts public interface ITransaction : IDisposable { void Complete(); @@ -2405,175 +2463,175 @@ namespace PetaPoco public class Transaction : ITransaction { - public Transaction(Database db) - { - _db = db; - _db.BeginTransaction(); - } - - public void Complete() - { - _db.CompleteTransaction(); - _db = null; - } - - public void Dispose() - { - if (_db != null) - _db.AbortTransaction(); - } - - Database _db; - } - - // Simple helper class for building SQL statments - public class Sql - { - public Sql() - { - } - - public Sql(string sql, params object[] args) - { - _sql = sql; - _args = args; - } - - public static Sql Builder - { - get { return new Sql(); } - } - - string _sql; - object[] _args; - Sql _rhs; - string _sqlFinal; - object[] _argsFinal; - - private void Build() - { - // already built? - if (_sqlFinal != null) - return; - - // Build it - var sb = new StringBuilder(); - var args = new List(); - Build(sb, args, null); - _sqlFinal = sb.ToString(); - _argsFinal = args.ToArray(); - } - - public string SQL - { - get - { - Build(); - return _sqlFinal; - } - } - - public object[] Arguments - { - get - { - Build(); - return _argsFinal; - } - } - - public Sql Append(Sql sql) - { - if (_rhs != null) - _rhs.Append(sql); - else - _rhs = sql; - - return this; - } - - public Sql Append(string sql, params object[] args) - { - return Append(new Sql(sql, args)); - } - - static bool Is(Sql sql, string sqltype) - { - return sql != null && sql._sql != null && sql._sql.StartsWith(sqltype, StringComparison.InvariantCultureIgnoreCase); - } - - private void Build(StringBuilder sb, List args, Sql lhs) - { - if (!String.IsNullOrEmpty(_sql)) - { - // Add SQL to the string - if (sb.Length > 0) - { - sb.Append("\n"); - } - - var sql = Database.ProcessParams(_sql, _args, args); - - if (Is(lhs, "WHERE ") && Is(this, "WHERE ")) - sql = "AND " + sql.Substring(6); - if (Is(lhs, "ORDER BY ") && Is(this, "ORDER BY ")) - sql = ", " + sql.Substring(9); - - sb.Append(sql); - } - - // Now do rhs - if (_rhs != null) - _rhs.Build(sb, args, this); - } - - public Sql Where(string sql, params object[] args) - { - return Append(new Sql("WHERE (" + sql + ")", args)); - } - - public Sql OrderBy(params object[] columns) - { - return Append(new Sql("ORDER BY " + String.Join(", ", (from x in columns select x.ToString()).ToArray()))); - } - - public Sql Select(params object[] columns) - { - return Append(new Sql("SELECT " + String.Join(", ", (from x in columns select x.ToString()).ToArray()))); - } - - public Sql From(params object[] tables) - { - return Append(new Sql("FROM " + String.Join(", ", (from x in tables select x.ToString()).ToArray()))); - } + public Transaction(Database db) + { + _db = db; + _db.BeginTransaction(); + } + + public virtual void Complete() + { + _db.CompleteTransaction(); + _db = null; + } + + public void Dispose() + { + if (_db != null) + _db.AbortTransaction(); + } + + Database _db; + } + + // Simple helper class for building SQL statments + public class Sql + { + public Sql() + { + } + + public Sql(string sql, params object[] args) + { + _sql = sql; + _args = args; + } + + public static Sql Builder + { + get { return new Sql(); } + } + + string _sql; + object[] _args; + Sql _rhs; + string _sqlFinal; + object[] _argsFinal; + + private void Build() + { + // already built? + if (_sqlFinal != null) + return; + + // Build it + var sb = new StringBuilder(); + var args = new List(); + Build(sb, args, null); + _sqlFinal = sb.ToString(); + _argsFinal = args.ToArray(); + } + + public string SQL + { + get + { + Build(); + return _sqlFinal; + } + } - public Sql GroupBy(params object[] columns) - { - return Append(new Sql("GROUP BY " + String.Join(", ", (from x in columns select x.ToString()).ToArray()))); - } + public object[] Arguments + { + get + { + Build(); + return _argsFinal; + } + } + + public Sql Append(Sql sql) + { + if (_rhs != null) + _rhs.Append(sql); + else + _rhs = sql; + + return this; + } + + public Sql Append(string sql, params object[] args) + { + return Append(new Sql(sql, args)); + } + + static bool Is(Sql sql, string sqltype) + { + return sql != null && sql._sql != null && sql._sql.StartsWith(sqltype, StringComparison.InvariantCultureIgnoreCase); + } + + private void Build(StringBuilder sb, List args, Sql lhs) + { + if (!String.IsNullOrEmpty(_sql)) + { + // Add SQL to the string + if (sb.Length > 0) + { + sb.Append("\n"); + } - private SqlJoinClause Join(string JoinType, string table) - { - return new SqlJoinClause(Append(new Sql(JoinType + table))); - } + var sql = Database.ProcessParams(_sql, _args, args); - public SqlJoinClause InnerJoin(string table) { return Join("INNER JOIN ", table); } - public SqlJoinClause LeftJoin(string table) { return Join("LEFT JOIN ", table); } + if (Is(lhs, "WHERE ") && Is(this, "WHERE ")) + sql = "AND " + sql.Substring(6); + if (Is(lhs, "ORDER BY ") && Is(this, "ORDER BY ")) + sql = ", " + sql.Substring(9); - public class SqlJoinClause - { - private readonly Sql _sql; + sb.Append(sql); + } - public SqlJoinClause(Sql sql) - { - _sql = sql; - } + // Now do rhs + if (_rhs != null) + _rhs.Build(sb, args, this); + } + + public Sql Where(string sql, params object[] args) + { + return Append(new Sql("WHERE (" + sql + ")", args)); + } + + public Sql OrderBy(params object[] columns) + { + return Append(new Sql("ORDER BY " + String.Join(", ", (from x in columns select x.ToString()).ToArray()))); + } + + public Sql Select(params object[] columns) + { + return Append(new Sql("SELECT " + String.Join(", ", (from x in columns select x.ToString()).ToArray()))); + } + + public Sql From(params object[] tables) + { + return Append(new Sql("FROM " + String.Join(", ", (from x in tables select x.ToString()).ToArray()))); + } + + public Sql GroupBy(params object[] columns) + { + return Append(new Sql("GROUP BY " + String.Join(", ", (from x in columns select x.ToString()).ToArray()))); + } + + private SqlJoinClause Join(string JoinType, string table) + { + return new SqlJoinClause(Append(new Sql(JoinType + table))); + } + + public SqlJoinClause InnerJoin(string table) { return Join("INNER JOIN ", table); } + public SqlJoinClause LeftJoin(string table) { return Join("LEFT JOIN ", table); } + + public class SqlJoinClause + { + private readonly Sql _sql; + + public SqlJoinClause(Sql sql) + { + _sql = sql; + } - public Sql On(string onClause, params object[] args) - { - return _sql.Append("ON " + onClause, args); - } - } - } + public Sql On(string onClause, params object[] args) + { + return _sql.Append("ON " + onClause, args); + } + } + } } \ No newline at end of file diff --git a/NzbDrone.Core/Providers/TvDbProvider.cs b/NzbDrone.Core/Providers/TvDbProvider.cs index 0b9d121df..b9c6e555f 100644 --- a/NzbDrone.Core/Providers/TvDbProvider.cs +++ b/NzbDrone.Core/Providers/TvDbProvider.cs @@ -14,9 +14,6 @@ namespace NzbDrone.Core.Providers private const string TVDB_APIKEY = "5D2D188E86E07F4F"; private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); - private static readonly Regex CleanUpRegex = new Regex(@"((\s|^)the(\s|$))|((\s|^)and(\s|$))|[^a-z]", - RegexOptions.IgnoreCase | RegexOptions.Compiled); - private readonly TvdbHandler _handler; public TvDbProvider() @@ -48,6 +45,8 @@ namespace NzbDrone.Core.Providers //Fix American Dad's scene gongshow if (result != null && result.Id == 73141) { + result.Episodes = result.Episodes.Where(e => e.SeasonNumber == 0 || e.EpisodeNumber > 0).ToList(); + var seasonOneEpisodeCount = result.Episodes.Where(e => e.SeasonNumber == 1).Count(); var seasonOneId = result.Episodes.Where(e => e.SeasonNumber == 1).First().SeasonId; From 861026f743506c764f0a2d93659c841303ce202a Mon Sep 17 00:00:00 2001 From: "kay.one" Date: Sat, 2 Jul 2011 16:45:29 -0700 Subject: [PATCH 10/10] Fixed some petapoco issue with insert. --- IISExpress/AppServer/applicationhost.config | 2 +- NzbDrone.Core.Test/RootDirProviderTest.cs | 29 ----------------- NzbDrone.Core/Datastore/PetaPoco/PetaPoco.cs | 2 +- NzbDrone.Core/Providers/RootDirProvider.cs | 7 ---- .../Controllers/SettingsController.cs | 32 +------------------ NzbDrone/app.config | 2 +- 6 files changed, 4 insertions(+), 70 deletions(-) diff --git a/IISExpress/AppServer/applicationhost.config b/IISExpress/AppServer/applicationhost.config index 617c6762a..458aeedbb 100644 --- a/IISExpress/AppServer/applicationhost.config +++ b/IISExpress/AppServer/applicationhost.config @@ -145,7 +145,7 @@ - + diff --git a/NzbDrone.Core.Test/RootDirProviderTest.cs b/NzbDrone.Core.Test/RootDirProviderTest.cs index b529b1fde..9d2efce7a 100644 --- a/NzbDrone.Core.Test/RootDirProviderTest.cs +++ b/NzbDrone.Core.Test/RootDirProviderTest.cs @@ -60,26 +60,6 @@ namespace NzbDrone.Core.Test } - [TestCase("D:\\TV Shows\\")] - [TestCase("//server//folder")] - public void UpdateRootDir(string newPath) - { - //Setup - var mocker = new AutoMoqer(); - mocker.SetConstant(MockLib.GetEmptyDatabase()); - - - //Act - var rootDirProvider = mocker.Resolve(); - rootDirProvider.Add(new RootDir { Path = @"C:\TV" }); - rootDirProvider.Update(new RootDir { Id = 1, Path = newPath }); - - //Assert - var rootDirs = rootDirProvider.GetAll(); - rootDirs.Should().HaveCount(1); - newPath.Should().Be(rootDirs.First().Path); - } - [Test] public void RemoveRootDir() { @@ -152,14 +132,5 @@ namespace NzbDrone.Core.Test mocker.Resolve().Add(new RootDir { Id = 0, Path = path }); } - [TestCase("")] - [TestCase(null)] - [TestCase("BAD PATH")] - [ExpectedException(typeof(ArgumentException))] - public void invalid_folder_path_throws_on_update(string path) - { - var mocker = new AutoMoqer(); - mocker.Resolve().Update(new RootDir { Id = 2, Path = path }); - } } } \ No newline at end of file diff --git a/NzbDrone.Core/Datastore/PetaPoco/PetaPoco.cs b/NzbDrone.Core/Datastore/PetaPoco/PetaPoco.cs index d03718ec8..0e00ac002 100644 --- a/NzbDrone.Core/Datastore/PetaPoco/PetaPoco.cs +++ b/NzbDrone.Core/Datastore/PetaPoco/PetaPoco.cs @@ -329,7 +329,7 @@ namespace PetaPoco Oracle, SQLite } - DBType _dbType = DBType.SqlServer; + DBType _dbType = DBType.SqlServerCE; // Common initialization private void CommonConstruct() diff --git a/NzbDrone.Core/Providers/RootDirProvider.cs b/NzbDrone.Core/Providers/RootDirProvider.cs index 408033174..fcd574f05 100644 --- a/NzbDrone.Core/Providers/RootDirProvider.cs +++ b/NzbDrone.Core/Providers/RootDirProvider.cs @@ -42,13 +42,6 @@ namespace NzbDrone.Core.Providers _database.Delete(rootDirId); } - public virtual void Update(RootDir rootDir) - { - ValidatePath(rootDir); - - _database.Update(rootDir); - } - private static void ValidatePath(RootDir rootDir) { if (String.IsNullOrWhiteSpace(rootDir.Path) || !Path.IsPathRooted(rootDir.Path)) diff --git a/NzbDrone.Web/Controllers/SettingsController.cs b/NzbDrone.Web/Controllers/SettingsController.cs index c5d627648..74a7a8d21 100644 --- a/NzbDrone.Web/Controllers/SettingsController.cs +++ b/NzbDrone.Web/Controllers/SettingsController.cs @@ -269,37 +269,7 @@ namespace NzbDrone.Web.Controllers } } - [HttpPost] - public ActionResult SaveGeneral(SettingsModel data) - { - var basicNotification = new BasicNotification(); - basicNotification.Type = BasicNotificationType.Info; - basicNotification.AutoDismiss = true; - - try - { - foreach (var dir in data.Directories) - { - _rootDirProvider.Update(dir); - } - } - catch (Exception ex) - { - Logger.Debug("Failed to save Root Dirs"); - Logger.DebugException(ex.Message, ex); - - basicNotification.Title = SETTINGS_FAILED; - _notificationProvider.Register(basicNotification); - return Content(SETTINGS_FAILED); - } - - - basicNotification.Title = SETTINGS_SAVED; - _notificationProvider.Register(basicNotification); - - return Content(SETTINGS_SAVED); - } - + [HttpPost] public ActionResult SaveIndexers(IndexerSettingsModel data) { diff --git a/NzbDrone/app.config b/NzbDrone/app.config index 19dd15844..81d395705 100644 --- a/NzbDrone/app.config +++ b/NzbDrone/app.config @@ -4,6 +4,6 @@ - + \ No newline at end of file