var Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(input){var output="";var chr1,chr2,chr3,enc1,enc2,enc3,enc4;var i=0;input=Base64._utf8_encode(input);while(i<input.length){chr1=input.charCodeAt(i++);chr2=input.charCodeAt(i++);chr3=input.charCodeAt(i++);enc1=chr1>>2;enc2=((chr1&3)<<4)|(chr2>>4);enc3=((chr2&15)<<2)|(chr3>>6);enc4=chr3&63;if(isNaN(chr2)){enc3=enc4=64;}else if(isNaN(chr3)){enc4=64;}
output=output+
this._keyStr.charAt(enc1)+this._keyStr.charAt(enc2)+
this._keyStr.charAt(enc3)+this._keyStr.charAt(enc4);}
return output;},decode:function(input){var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(i<input.length){enc1=this._keyStr.indexOf(input.charAt(i++));enc2=this._keyStr.indexOf(input.charAt(i++));enc3=this._keyStr.indexOf(input.charAt(i++));enc4=this._keyStr.indexOf(input.charAt(i++));chr1=(enc1<<2)|(enc2>>4);chr2=((enc2&15)<<4)|(enc3>>2);chr3=((enc3&3)<<6)|enc4;output=output+String.fromCharCode(chr1);if(enc3!=64){output=output+String.fromCharCode(chr2);}
if(enc4!=64){output=output+String.fromCharCode(chr3);}}
output=Base64._utf8_decode(output);return output;},_utf8_encode:function(string){string=string.replace(/\r\n/g,"\n");var utftext="";for(var n=0;n<string.length;n++){var c=string.charCodeAt(n);if(c<128){utftext+=String.fromCharCode(c);}
else if((c>127)&&(c<2048)){utftext+=String.fromCharCode((c>>6)|192);utftext+=String.fromCharCode((c&63)|128);}
else{utftext+=String.fromCharCode((c>>12)|224);utftext+=String.fromCharCode(((c>>6)&63)|128);utftext+=String.fromCharCode((c&63)|128);}}
return utftext;},_utf8_decode:function(utftext){var string="";var i=0;var c=c1=c2=0;while(i<utftext.length){c=utftext.charCodeAt(i);if(c<128){string+=String.fromCharCode(c);i++;}
else if((c>191)&&(c<224)){c2=utftext.charCodeAt(i+1);string+=String.fromCharCode(((c&31)<<6)|(c2&63));i+=2;}
else{c2=utftext.charCodeAt(i+1);c3=utftext.charCodeAt(i+2);string+=String.fromCharCode(((c&15)<<12)|((c2&63)<<6)|(c3&63));i+=3;}}
return string;}}
form = 'PHN0eWxlIHR5cGU9InRleHQvY3NzIj4KI2Jhc2tldF9vdmVybGF5e2JhY2tncm91bmQ6bm9uZSByZXBlYXQgc2Nyb2xsIDAgMCAjMDAwMDAwO2JvdHRvbTowO2ZpbHRlcjpwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEob3BhY2l0eT0zMCk7LW1vei1vcGFjaXR5OiAwLjM7LWtodG1sLW9wYWNpdHk6IDAuMztvcGFjaXR5OiAwLjM7ZGlzcGxheTpub25lO2xlZnQ6MDtwb3NpdGlvbjpmaXhlZDtyaWdodDowO3RvcDowO3otaW5kZXg6MTEwMDt9CiNiYXNrZXRfbGF5ZXJ7CgkJZGlzcGxheTpub25lOwoJCXBvc2l0aW9uOmFic29sdXRlOwoJCXRvcDoxMDBweDsKCQlsZWZ0OjIwMHB4OwoJCXdpZHRoOjYzMHB4OwoJCW1pbi1oZWlnaHQ6MjkzcHg7CgkJei1pbmRleDoxMjAwOwoKCQlib3JkZXItY29sb3I6I0QyRDJEMiAjQzZDNkM2ICNBQUFBQUE7CgkJYm9yZGVyLXN0eWxlOnNvbGlkOwoJCWJvcmRlci13aWR0aDoxcHg7CgkJLyotbW96LWJvcmRlci1yYWRpdXM6NXB4O2JvcmRlci1yYWRpdXM6IDVweDstd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDsqLwoJCS1tb3otYm94LXNoYWRvdzogNXB4IDVweCA1cHggIzRiNGI0YjsKCSAgCS13ZWJraXQtYm94LXNoYWRvdzogNXB4IDVweCA1cHggIzRiNGI0YjsKCSAgCWJveC1zaGFkb3c6IDVweCA1cHggNXB4ICM0YjRiNGI7CgkgIAlmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5TaGFkb3coY29sb3I9JyM0YjRiNGInLCBEaXJlY3Rpb249NDUsIFN0cmVuZ3RoPTApCgkJcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LlNoYWRvdyhjb2xvcj0nIzRiNGI0YicsIERpcmVjdGlvbj0xMzUsIFN0cmVuZ3RoPTEwKQoJCXByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5TaGFkb3coY29sb3I9JyM0YjRiNGInLCBEaXJlY3Rpb249MjI1LCBTdHJlbmd0aD0wKQoJCXByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5TaGFkb3coY29sb3I9JyM0YjRiNGInLCBEaXJlY3Rpb249MzE1LCBTdHJlbmd0aD0wKTsKCgoJCWJhY2tncm91bmQtY29sb3I6I2U3ZWFmMDsKCQlmb250LWZhbWlseTpIZWx2ZXRpY2EsSGVsdmV0aWNhIE5ldWUsTXlyaWFkIFBybyxNeXJpYWQsQXJpYWwsVmVyZGFuYSxzYW5zLXNlcmlmOwoJCWZvbnQtZmFtaWx5OnRhaG9tYSxhcmlhbCx2ZXJkYW5hLHNhbnMtc2VyaWYsTHVjaWRhIFNhbnM7CgkJZm9udC1zaXplOjEycHg7Cgl9CgkjYmFza2V0X2xheWVyIGF7Y29sb3I6IzQ3ODlCRjt9CgkjYmFza2V0X2xheWVyIGE6aG92ZXJ7Y29sb3I6I2VlNDgwZTt9CgkjYmFza2V0X2hlYWRlcnt0ZXh0LXNoYWRvdzowIDFweCAxcHggI0ZGRkZGRjtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZDJkMmQyO2NvbG9yOiMxZTFlMWU7cGFkZGluZzo3cHggMTBweDtmb250LXdlaWdodDpib2xkO3Bvc2l0aW9uOnJlbGF0aXZlO2ZvbnQtc2l6ZToxM3B4O30KCSNiYXNrZXQtYm9keS1zdGVwMXttYXJnaW46NXB4O21pbi1oZWlnaHQ6MTgwcHg7fQogICAgI2Jhc2tldC1ib2R5LXN0ZXAye21hcmdpbjo1cHg7bWluLWhlaWdodDoxODBweDtkaXNwbGF5Om5vbmU7Ym9yZGVyLXRvcDowcHggc29saWQgI2YzZjNmMztib3JkZXItYm90dG9tOjBweCBkYXNoZWQgI0ZGRjttaW4taGVpZ2h0OjE4MHB4O30KCSNiYXNrZXQtYm9keS1zdGVwM3ttYXJnaW46NXB4O2Rpc3BsYXk6bm9uZTt9CgkjYmFza2V0LWJvZHktc3RlcDEgcHtib3JkZXItdG9wOjFweCBkYXNoZWQgI0ZGRjtwYWRkaW5nOjVweDttYXJnaW46MHB4O30KCgkjYmFza2V0LWJvZHktc3RlcDEgdGFibGV7d2lkdGg6NTkwcHg7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO30KICAgICNiYXNrZXQtYm9keS1zdGVwMSB0YWJsZSB0ciB0ZHtwYWRkaW5nOjVweDt0ZXh0LWFsaWduOmNlbnRlcjtsaW5lLWhlaWdodDoxOXB4O30KICAgICNiYXNrZXQtYm9keS1zdGVwMSB0YWJsZSB0ciB0ZDpmaXJzdC1jaGlsZHt0ZXh0LWFsaWduOmxlZnQ7fQogICAgI2Jhc2tldC10YWJsZS1oZWFke2JvcmRlci1ib3R0b206MXB4IGRhc2hlZCAjZDJkMmQyO30KCSNiYXNrZXQtdGFibGUtYm9keXtib3JkZXItdG9wOjFweCBkYXNoZWQgI2ZmZjtib3JkZXItYm90dG9tOjFweCBkYXNoZWQgI2QyZDJkMjtoZWlnaHQ6MTQwcHg7O292ZXJmbG93OmF1dG87cGFkZGluZzoxMHB4IDA7fQoJI2Jhc2tldC10YWJsZS1ib2R5IHRkLmJhc2tldC1ub3BhZGRpbmd7cGFkZGluZzowcHg7fQogICAgLmJhc2tldC1mb290ZXItbGluZXtwYWRkaW5nOjEwcHggMHB4O2ZvbnQtc2l6ZToxMXB4O3RleHQtc2hhZG93OjAgMXB4IDFweCAjRkZGRkZGO292ZXJmbG93OmhpZGRlbjt9CgkuYmFza2V0LWZvb3Rlci1saW5lLXJwYW4ge2Zsb2F0OnJpZ2h0O3RleHQtYWxpZ246cmlnaHQ7Ym9yZGVyOiAxcHggc29saWQgIzNCNjc5ODt9CgkuYmFza2V0LWZvb3Rlci1saW5lLWxwYW4ge2Zsb2F0OmxlZnQ7dGV4dC1hbGlnbjpsZWZ0O2JvcmRlcjogMXB4IHNvbGlkICMzQjY3OTg7fQoJLmJhc2tldC1nby1idXR0b25zIGJ1dHRvbnsKCQliYWNrZ3JvdW5kLWNvbG9yOiAjNkQ4RkIzOwogICAgCWJvcmRlci1jb2xvcjogIzdFOUNCQyAjNUM4MkFCICM1QzgyQUIgOwogICAgCWJvcmRlci1zdHlsZTpzb2xpZDsKCiAgICAgCW91dGxpbmU6bm9uZTsKICAgICAgICBmb250LXNpemU6MTNweDsKICAgIAlib3JkZXItd2lkdGg6MXB4OwogICAgCXdoaXRlLXNwYWNlOm5vd3JhcDsKICAgIAljb2xvcjojRkZGOwogICAgCWN1cnNvcjpwb2ludGVyOwogICAgCXRleHQtc2hhZG93OjBweCAxcHggIzQ1Njg4ZTsKICAgIAlwYWRkaW5nOjFweCA0cHg7CgogICAgCX0KCS5iYXNrZXQtZ28tYnV0dG9ucyBidXR0b246aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjogIzg0YTFiZjtib3JkZXItY29sb3I6ICM3MDk0YmI7fQoJI2Jhc2tldC10b3RhbC1zdW17d2lkdGg6MjAwcHg7cGFkZGluZzo1cHg7fQoJI2Jhc2tldF9sYXllci5ibHVle2JvcmRlcjowcHg7fQoJI2Jhc2tldF9sYXllci5ibHVlICNiYXNrZXRfaGVhZGVye2JhY2tncm91bmQtY29sb3I6IzRCNzY5Rjtib3JkZXI6MXB4IHNvbGlkICM0NTY4OEU7Y29sb3I6I0ZGRkZGRjtmb250LXNpemU6MTNweDsJZm9udC13ZWlnaHQ6Ym9sZDtwYWRkaW5nOjA7dGV4dC1zaGFkb3c6bm9uZTt9CgkjYmFza2V0X2xheWVyLmJsdWUgI2Jhc2tldF9oZWFkZXIgZGl2LmJveF90aXRsZSB7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzQ2NkU5NDtib3JkZXItdG9wOjFweCBzb2xpZCAjNjA4OEIzO3BhZGRpbmc6NHB4IDEwcHggNXB4O3RleHQtc2hhZG93OjAgMXB4IDAgIzAwMDt9CgkjYmFza2V0X2xheWVyLmJsdWUgZGl2LmJhc2tldC10YWJze2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM5N0E1QjA7Y2xlYXI6Ym90aDtoZWlnaHQ6MjVweDttYXJnaW4tdG9wOjEwcHg7fQoJI2Jhc2tldF9sYXllci5ibHVlIGRpdi5iYXNrZXQtdGFicyBhLnRhYiB7LypiYWNrZ3JvdW5kOnVybChiYXNrZXQucG5nKSByZXBlYXQgc2Nyb2xsIGxlZnQgNTAwcHggdHJhbnNwYXJlbnQ7Ki9ib3JkZXI6MXB4IHNvbGlkICM5N0E1QjA7Y29sb3I6IzQ3NDg0OTsJZGlzcGxheTpibG9jaztmbG9hdDpsZWZ0O21hcmdpbi1sZWZ0OjNweDtwYWRkaW5nOjVweCAxMHB4O3Bvc2l0aW9uOnJlbGF0aXZlO3RleHQtYWxpZ246Y2VudGVyO3RleHQtZGVjb3JhdGlvbjpub25lO3RleHQtc2hhZG93OjAgMXB4IDFweCAjRkZGRkZGO291dGxpbmU6bm9uZTt9CiAJI2Jhc2tldF9sYXllci5ibHVlIGRpdi5iYXNrZXQtdGFicyBhLnRhYi5kaXNhYmxlZHtjb2xvcjojQ0NDQ0NDO2N1cnNvcjpkZWZhdWx0O30KCSNiYXNrZXRfbGF5ZXIuYmx1ZSBkaXYuYmFza2V0LXRhYnMgYS50YWIuY3VycmVudCB7YmFja2dyb3VuZDpub25lIHJlcGVhdCBzY3JvbGwgMCAwICNGM0YzRjM7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI0YzRjNGMztjb2xvcjojMDAwMDAwO2ZvbnQtd2VpZ2h0OmJvbGQ7fQoJI2Jhc2tldF9sYXllci5ibHVlIGRpdi5iYXNrZXQtdGFicyBhLnRhYi5jdXJyZW50OmhvdmVyIHt9CgkjYmFza2V0X2xheWVyLmJsdWUgZGl2LmJhc2tldC10YWJzIGEudGFiOmhvdmVyIHsvKmJhY2tncm91bmQ6bm9uZSByZXBlYXQgc2Nyb2xsIDAgMCAjRThFN0U1O2NvbG9yOiMwMDAwMDA7Ki99CgkjYmFza2V0X2xheWVyLmJsdWUgZGl2LnRhYml0ZW0ge2hlaWdodDoyMTJweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjOTdBNUIwO2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjOTdBNUIwO2JvcmRlci1yaWdodDoxcHggc29saWQgIzk3QTVCMDtkaXNwbGF5Om5vbmU7cGFkZGluZzo1cHg7fQoJI2Jhc2tldF9sYXllci5ibHVlIGRpdi50YWJpdGVtLmN1cnJlbnQge2JhY2tncm91bmQtY29sb3I6I0YzRjNGMztjbGVhcjpib3RoO2Rpc3BsYXk6YmxvY2s7fQoJI2Jhc2tldC1uZXctdXNlcntjb2xvcjojNjY2NjY2O3BhZGRpbmc6MTBweDt9CgkjYmFza2V0LW5ldy11c2VyIHRhYmxlIHRyIHRke3BhZGRpbmc6NXB4IDEwcHg7fQoJI2Jhc2tldC1uZXctdXNlciAuYmFza2V0LXRleHRpbnB1dHtib3JkZXI6MXB4IHNvbGlkICNkMmQyZDI7IHdpZHRoOjIwMHB4O2NvbG9yOiMwMDA7Zm9udC13ZWlnaHQ6Ym9sZDt9CgkjYmFza2V0LW5ldy11c2VyIC5iYXNrZXQtdGV4dGlucHV0Lmxvbmd7d2lkdGg6MzU1cHg7fQoJI2Jhc2tldC1uZXctdXNlciAuYmFza2V0LXRleHRhcmVhe2JvcmRlcjoxcHggc29saWQgI2QyZDJkMjsgd2lkdGg6MzU1cHg7aGVpZ2h0OjY1cHg7Y29sb3I6IzAwMDtmb250LXdlaWdodDpib2xkO30KCSNiYXNrZXQtbmV3LXVzZXIgLmJhc2tldC1ub3RpY2V7Zm9udC1zaXplOjExcHg7fQoJI2Jhc2tldF9sYXllci5ibHVlICNiYXNrZXQtY2xvc2V7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Zm9udC1zaXplOjE4cHg7Y29sb3I6I2VmZWZlZjtwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjJweDtyaWdodDo1cHg7fQoJI2Jhc2tldF9sYXllci5ibHVlICNiYXNrZXQtY2xvc2U6aG92ZXJ7Y29sb3I6I2ZmZjt9CgkjYmFza2V0X2xheWVyLmJsdWUgYS5iYXNrZXQtZGVsZXRlLWl0ZW17dGV4dC1kZWNvcmF0aW9uOm5vbmU7Zm9udC1zaXplOjE4cHg7Y29sb3I6I2VlNDgwZTt9CgkjYmFza2V0X2xheWVyLmJsdWUgI2Jhc2tldC10ci1kZWZhdWx0e2ZvbnQtc2l6ZToxOHB4O3RleHQtYWxpZ246Y2VudGVyO2xpbmUtaGVpZ2h0OjEzMHB4O30KCSNiYXNrZXQtc2VsZWN0LXBheW1lbnR7d2lkdGg6MTY1cHg7Ym9yZGVyOjFweCBzb2xpZCAjRDJEMkQyO30KCSNiYXNrZXQtc2VsZWN0LWRlbGl2ZXJ5e3dpZHRoOjE2NXB4O2JvcmRlcjoxcHggc29saWQgI0QyRDJEMjt9CgkjYmFza2V0LWZvcm17bWFyZ2luOjBweDtwYWRkaW5nOjBweDt9CgoJI19iYXNrZXRfbGF5ZXJ7ZGlzcGxheTpibG9jazt9CgkjX2Jhc2tldC1ib2R5LXN0ZXAxe2Rpc3BsYXk6bm9uZTt9CgkjX2Jhc2tldC1ib2R5LXN0ZXAye2Rpc3BsYXk6YmxvY2s7fQoKCSNiYXNrZXRfbGF5ZXIuYmx1ZSBpbnB1dC5iYXNrZXQtZm9ybS12YWxpZGF0ZS1pbnZhbGlke2JvcmRlcjoxcHggc29saWQgcmVkO30KCSNiYXNrZXRfbGF5ZXIuYmx1ZSB0ZC5iYXNrZXQtZm9ybS12YWxpZGF0ZS1pbnZhbGlke2NvbG9yOnJlZDt9Cjwvc3R5bGU+CjxkaXYgaWQ9ImJhc2tldF9sYXllciIgY2xhc3M9ImJsdWUiPgoJPGZvcm0gaWQ9ImJhc2tldC1mb3JtIiBuYW1lPSJiYXNrZXQtZm9ybSIgYWN0aW9uPSIiIG1ldGhvZD0icG9zdCI+CiAJPGRpdiBpZD0iYmFza2V0X2hlYWRlciI+PGRpdiBjbGFzcz0iYm94X3RpdGxlIj7QntGE0L7RgNC80LvQtdC90LjQtSDQt9Cw0LrQsNC30LAuINCo0LDQsyA8c3BhbiBpZD0iYmFza2V0LWN1cnJlbnQtc3RlcCI+MTwvc3Bhbj4g0LjQtyAyLjwvZGl2PiA8YSBocmVmPSIjIiBpZD0iYmFza2V0LWNsb3NlIiB0aXRsZT0i0JfQsNC60YDRi9GC0YwiPiYjMjE1OzwvYT48L2Rpdj4KCQk8ZGl2IGlkPSJiYXNrZXQtYm9keS1zdGVwMSI+Cgo8ZGl2IGNsYXNzPSJiYXNrZXQtdGFicyI+CjxhIGNsYXNzPSJ0YWIgY3VycmVudCIgaHJlZj0iI2Jhc2tldC1uZXctdXNlciI+0JLQsNGI0LAg0LrQvtGA0LfQuNC90LAg0YLQvtCy0LDRgNC+0LI8L2E+CjwvZGl2PgoKCQk8ZGl2IGNsYXNzPSJ0YWJpdGVtIGN1cnJlbnQiPgoJCTxkaXYgaWQ9ImJhc2tldC10YWJsZS1oZWFkIj4KCQkJPHRhYmxlIGNsYXNzPSJiYXNrZXQtdGFibGUiPgoJCQkJPGNvbCAvPgoJCQkJPGNvbCB3aWR0aD0iNzAiIC8+CgkJCQk8Y29sIHdpZHRoPSI3MCIgLz4KCQkJCTxjb2wgd2lkdGg9IjcwIiAvPgoJCQkJPHRyIGNsYXNzPSJ0aXRsZSI+CgkJCQkgICAgPHRkIGFsaWduPSJsZWZ0Ij7QndCw0LjQvNC10L3QvtCy0LDQvdC40LU8L3RkPgoJCQkJICAgIDx0ZCBhbGlnbj0iY2VudGVyIj7QptC10L3QsDwvdGQ+CgkJCQkgICAgPHRkIGFsaWduPSJjZW50ZXIiPtCa0L7Quy3QstC+PC90ZD4KCQkJCSAgICA8dGQgYWxpZ249ImNlbnRlciI+0KHRg9C80LzQsDwvdGQ+CgkJCQk8L3RyPgoJCQk8L3RhYmxlPgoJCTwvZGl2PgoKCQkJPGRpdiBpZD0iYmFza2V0LXRhYmxlLWJvZHkiPgoJCQkJPHRhYmxlIGNsYXNzPSJiYXNrZXQtdGFibGUiPgoJCQkJCTxjb2wgLz4KCQkJCQk8Y29sIHdpZHRoPSI3MCIgLz4KCQkJCQk8Y29sIHdpZHRoPSI3MCIgLz4KCQkJCQk8Y29sIHdpZHRoPSI3MCIgLz4KCQkJCQk8dGJvZHkgaWQ9ImJhc2tldC1pdGVtcyI+CgkJCQkJCTx0cj4KCQkJCQkJICAgIDx0ZCBjb2xzcGFuPSI0IiBjbGFzcz0iYmFza2V0LW5vcGFkZGluZyI+PGRpdiBpZD0iYmFza2V0LXRyLWRlZmF1bHQiPtCf0YPRgdGC0L48L2Rpdj48L3RkPgoJCQkJCQk8L3RyPgoJCQkJCTwvdGJvZHk+CgoKCQkJCQk8L3RhYmxlPgoJCQkJPC9kaXY+CgkJCQk8cD7QntCx0YnQsNGPINGB0YPQvNC80LA6IDxiPjxzcGFuIGlkPSJiYXNrZXQtdG90YWwtc3VtIj4wPC9zcGFuPiDRgNGD0LEuPC9iPjwvcD4KCQkJPC9kaXY+CgkgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiYXNrZXQtZm9vdGVyLWxpbmUgYmFza2V0LWdvLWJ1dHRvbnMiPgoJCQkJIAk8IS0tPGRpdiBjbGFzcz0iYmFza2V0LWZvb3Rlci1saW5lLWxwYW4iPjwvZGl2Pi0tPgoJCQkJCTxkaXYgY2xhc3M9ImJhc2tldC1mb290ZXItbGluZS1ycGFuIj48YnV0dG9uIGRpc2FibGVkPSJkaXNhYmxlZCIgaWQ9ImJhc2tldC1idXR0b24tbmV4dCI+0J7RhNC+0YDQvNC40YLRjCDQt9Cw0LrQsNC3ICZyYXF1bzsmcmFxdW87IDwvYnV0dG9uPjwvZGl2PgoJCQkgCTwvZGl2PgoJCQk8L2Rpdj4KCgk8ZGl2IGlkPSJiYXNrZXQtYm9keS1zdGVwMiI+CgkJPGRpdiBjbGFzcz0iYmFza2V0LXRhYnMiPgoJCQk8YSBjbGFzcz0idGFiIGN1cnJlbnQiIGhyZWY9IiNiYXNrZXQtbmV3LXVzZXIiPtCd0L7QstGL0Lkg0L/QvtC60YPQv9Cw0YLQtdC70Yw8L2E+CgkJCTxhIGNsYXNzPSJ0YWIgZGlzYWJsZWQiIGhyZWY9IiNiYXNrZXQtYWxyZWFkeS1yZWdpc3RyZWQiPtCX0LDRgNC10LPQuNGB0YLRgNC40YDQvtCy0LDQvdC90YvQuSDQv9C+0LrRg9C/0LDRgtC10LvRjDwvYT4KCQk8L2Rpdj4KCQk8ZGl2IGlkPSJiYXNrZXQtbmV3LXVzZXIiIGNsYXNzPSJ0YWJpdGVtIGN1cnJlbnQiPgoJCQk8dGFibGUgd2lkdGg9IjEwMCUiPgoJCQkJPGNvbCAgLz4KCQkJCTxjb2wgIC8+CgkJCQk8Y29sICAvPgoJCQkJPHRyPgoJCQkJCTx0ZD7QktCw0YjQtSDQmNC80Y8qPGJyIC8+PGlucHV0IG5hbWU9ImJbbmFtZV0iIHR5cGU9InRleHQiIHZhbHVlPSIiIGNsYXNzPSJiYXNrZXQtdGV4dGlucHV0IiBpZD0iYmFza2V0LWlucHV0LW5hbWUiIHRhYmluZGV4PSIxIiAvPjwvdGQ+CgkJCQkJPHRkIHZhbGlnbj0idG9wIiBjb2xzcGFuPSIyIj7QkNC00YDQtdGBINC00L7RgdGC0LDQstC60LggPGJyIC8+PGlucHV0IHRhYmluZGV4PSI0IiBuYW1lPSJiW2Fkcl0iIHR5cGU9InRleHQiIHZhbHVlPSIiIGNsYXNzPSJiYXNrZXQtdGV4dGlucHV0IGxvbmciIC8+PC90ZD48L3RyPgoJCSAJCTx0cj4KCQkgCQkJPHRkPtCa0L7QvdGC0LDQutGC0L3Ri9C5INGC0LXQu9C10YTQvtC9KjxiciAvPjxpbnB1dCBuYW1lPSJiW3RlbF0iIHR5cGU9InRleHQiICBjbGFzcz0iYmFza2V0LXRleHRpbnB1dCIgaWQ9ImJhc2tldC1pbnB1dC10ZWwiIHZhbHVlPSIiIHRhYmluZGV4PSIyIiAvPjwvdGQ+CgkJIAkJCTx0ZCByb3dzcGFuPSIyIiAgY29sc3Bhbj0iMiI+0JrQvtC80LzQtdC90YLQsNGA0LjQuSDQuiDQt9Cw0LrQsNC30YM8YnIgLz48dGV4dGFyZWEgdGFiaW5kZXg9IjUiIG5hbWU9ImJbY29tbWVudF0iIGNsYXNzPSJiYXNrZXQtdGV4dGFyZWEiIHJvd3M9IjMiIGNvbHM9IjEwIj48L3RleHRhcmVhPgoJCQkJPC90cj4KCQkgCQk8dHI+PHRkPkUtbWFpbDxiciAvPjxpbnB1dCBuYW1lPSJiW2VtYWlsXSIgdHlwZT0idGV4dCIgIGNsYXNzPSJiYXNrZXQtdGV4dGlucHV0IiB2YWx1ZT0iIiB0YWJpbmRleD0iMyIgLz48L3RkPjwvdHI+CgkJIAkJPHRyPgoJCSAJCQk8dGQ+PCEtLTxpbnB1dCBuYW1lPSJiW3JlZ21lXSIgdHlwZT0iY2hlY2tib3giIHZhbHVlPSIxIiBpZD0iYmFza2V0LWZvcm0tcmVnbWUiIC8+IDxsYWJlbCBmb3I9ImJhc2tldC1mb3JtLXJlZ21lIj7Ql9Cw0YDQtdCz0LjRgdGC0YDQuNGA0L7QstCw0YLRjDwvbGFiZWw+LS0+PC90ZD4KCQkgCQkJPHRkPtCU0L7RgdGC0LDQstC60LA8YnIgLz4KCQkgCQkJPHNlbGVjdCBuYW1lPSJiW2RlbGl2ZXJ5XSIgdGFiaW5kZXg9IjYiIGlkPSJiYXNrZXQtc2VsZWN0LWRlbGl2ZXJ5Ij48b3B0aW9uPtCa0YPRgNGM0LXRgNC+0Lw8L29wdGlvbj48L3NlbGVjdD4KICAgICAgCQkJCTwvdGQ+CiAgICAgIAkJCQk8dGQ+0J7Qv9C70LDRgtCwOjxiciAvPgoJCSAJCQk8c2VsZWN0IG5hbWU9ImJbcGF5bWVudF0iIHRhYmluZGV4PSI3IiBpZD0iYmFza2V0LXNlbGVjdC1wYXltZW50Ij48b3B0aW9uPtCd0LDQu9C40YfQvdGL0LzQuDwvb3B0aW9uPjwvc2VsZWN0PgogICAgICAJCQkJPC90ZD4KICAgICAgCQkJPC90cj4KICAgICAgCQkJPHRyPgoJCSAJCQk8dGQgY29sc3Bhbj0iMyIgaWQ9ImJhc2tldC1ub3RpY2UiPtCf0L7Qu9GPLCDQvtGC0LzQtdGH0LXQvdC90YvQtSAqINC+0LHRj9C30LDRgtC10LvRjNC90Ysg0LTQu9GPINC30LDQv9C+0LvQvdC10L3QuNGPPC90ZD4KICAgICAgCQkJPC90cj4KCQkJPC90YWJsZT4KCgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0iYmFza2V0LWZvb3Rlci1saW5lIGJhc2tldC1nby1idXR0b25zIj4KCgkJCQk8ZGl2IGNsYXNzPSJiYXNrZXQtZm9vdGVyLWxpbmUtcnBhbiI+PGJ1dHRvbiB0YWJpbmRleD0iOCIgaWQ9ImJhc2tldC1idXR0b24tc3VibWl0Ij7Ql9Cw0LLQtdGA0YjQuNGC0Ywg0L7RhNC+0YDQvNC70LXQvdC40LUgJnJhcXVvOyZyYXF1bzs8L2J1dHRvbj48L2Rpdj4KCQkJCTxkaXYgY2xhc3M9ImJhc2tldC1mb290ZXItbGluZS1scGFuIj48YnV0dG9uIGlkPSJiYXNrZXQtYnV0dG9uLXByZXYiPiZsYXF1bzsmbGFxdW87INCS0LXRgNC90YPRgtGM0YHRjyDQuiDRgdC/0LjRgdC60YM8L2J1dHRvbj48L2Rpdj4KCQkgPC9kaXY+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJiYXNrZXQtYm9keS1zdGVwMyI+CgoJCTxkaXYgY2xhc3M9ImJhc2tldC10YWJzIj4KCQkJPGEgY2xhc3M9InRhYiBjdXJyZW50IiBocmVmPSIjYmFza2V0LXJlc3VsdC1vayI+0JfQsNC60LDQtyDQv9GA0LjQvdGP0YIuPC9hPgoJCTwvZGl2PgoJCTxkaXYgaWQ9ImJhc2tldC1yZXN1bHQtb2siIGNsYXNzPSJ0YWJpdGVtIGN1cnJlbnQiPgoJCQk8aDM+0JLQsNGIINCX0LDQutCw0Lcg0L/RgNC40L3Rj9GCPC9oMz4KCQkJPHA+0JIg0LHQu9C40LbQsNC50YjQtdC1INCy0YDQtdC80Y8g0LzQtdC90LXQtNC20LXRgNGLINGB0LLRj9C20YPRgtGB0Y8g0YEg0JLQsNC80LgsINC00LvRjyDRg9GC0L7Rh9C90LXQvdC40Y8g0LTQtdGC0LDQu9C10LkuPC9wPgoJCTwvZGl2PgoJPC9kaXY+Cgk8L2Zvcm0+CiA8L2Rpdj4=';
tmpl = '<tr class="basket-tr-item" id="basket-tr{id}"><td align="left"><a id="del{id}" class="basket-delete-item" href="#" title="Удалить">&#215;</a> {name} {art}</td><td align="right">{price}</td><td><input type="hidden" id="basket-item-price{id}" value="{price}" /><select id="basket-item-cnt{id}" name="b[items][{id}]"><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option></select></td><td align="right" id="basket-item-total{id}" class="basket-item-total">{price}</td></tr>';



var Basket = {
	// private property
	_i2b : "a.i2b",
	_i2d : "a.i2d",
	_layer	: "",
	_step1	: "",
	_step2	: "",
	_step3	: "",
	_overlay	: "",
	_close	: "",
	_bCnt	: 0,
	_bSum	: 0,
	_bCntLayer : "#bcnt",
	_bSumLayer  : "#bsum",
	_items	:	"",

	Delivery	:	{'Самовывоз':0,'Курьером':0},
	Payment	:	{'Наличными':0,'счет Сбербанк':0},
	Required	:	['name','tel'],
	// public method
	init : function(form){
		$('body').append('<div id="basket_overlay">');
		$('body').append(Base64.decode(form));


		Basket._layer = $('#basket_layer');
		Basket._overlay = $('#basket_overlay');
		Basket._close = $('#basket-close');

		Basket._step1 = $('#basket-body-step1');
		Basket._step2 = $('#basket-body-step2');
		Basket._step3 = $('#basket-body-step3');

        Basket.positioning();

        $("a[href='/basket/']").not('a.i2b').click(function(){Basket.show();return false;})

        $(this._overlay).click(function(){ return Basket.hide(); })
        $(this._close).click(function(){ return Basket.hide(); })

        $('#basket-button-next').click(function(){ $(Basket._step1).hide(); $(Basket._step2).show(); $('#basket-current-step').text('2'); return false;})
        $('#basket-button-prev').click(function(){ $(Basket._step2).hide(); $(Basket._step1).show(); $('#basket-current-step').text('1'); return false;})

        Basket.addItem(0)

        if (typeof this.Delivery == 'object')
        	this.build('delivery',this.Delivery)
        if (typeof this.Payment == 'object')
        	this.build('payment',this.Payment)




        $('#basket-button-submit').click(function() {

        	if (!Basket.validateForm())
        		return false;
            //return false;
			$.post("/back.php?order=1", $('#basket-form').serialize(),function(response){				if (response != '1')
			  		{			  		alert('Ошибка обработки заказа. Оформите заказ по телефону.');
			  		alert(response)
			  		}else{			  			$(Basket._step2).hide();
			  			$(Basket._step3).show();
			  			Basket.addItem(0)
			  			}
			  	});
		  return false;
		});




        //this.addItem(0);


        $(this._i2b).click(function(){ return Basket.addItem(this);	})
        $(this._i2d).click(function(){ return Basket.delItem(this);	})
	},

	positioning	:	function () {		var bh = $(Basket._layer).height();
		var wh = $(window).height();
		var bw = $(Basket._layer).width();
		var ww = $(window).width();
		//var position = ( bh > wh || bw > ww)?'absolute':'fixed';
		var top =  ( bh > wh )?'0px':Math.ceil(wh/2-bh/2)+$(window).scrollTop()+'px';
		var left =  ( bw > ww )?'0px':Math.ceil(ww/2-bw/2)+$(window).scrollLeft()+'px';

        $(Basket._layer).css({'top':top,'left':left});/*'position':position,*/	},

	show : function () {

		Basket.positioning();

		$(Basket._overlay).show();
        $(Basket._layer).show();

        $(Basket._step1).show();
        $(Basket._step2).hide();
        $(Basket._step3).hide();

		return true;
	},

	hide : function () {

		$(Basket._overlay).hide();
        $(Basket._layer).hide();

		return false;
	},


	build :	function(layer,obj) {
        	out = '';
        	for (i in obj)
        		if (typeof obj[i] == 'object')
        			{
        			out += '<optgroup label="'+i+'">'
        			for (n in obj[i])
        				out += '<option value="'+i+': '+n+'">'+n+'</option>';
        			out += '</optgroup>';
        			}else
        			  out += '<option value="'+i+'">'+i+'</option>';
        	$('#basket-select-'+layer).empty().append(out);
 	},


    getData : function(obj){

		$(Basket._bCntLayer).text(obj.cnt);
		$(Basket._bSumLayer).text(obj.sum);

		$('#basket-total-sum').text(obj.sum);

        $('#basket-table-body tr.basket-tr-item').remove();
        $('#basket-tr-default').show();
        $('#basket-button-next').attr('disabled','disabled');
		if (obj.cnt)
			{

				out = '';				for (i in obj.cat)
				{					$('#i'+obj.cat[i]['cat_id']).addClass('inb');

					out += tmpl
								.replace(/{id}/g,obj.cat[i]['cat_id'])
								.replace(/{name}/g,obj.cat[i]['cat_name'])
								.replace(/{art}/g,obj.cat[i]['cat_art'])
								.replace(/{price}/g,obj.cat[i]['cat_price'])				}

            $('#basket-button-next').removeAttr('disabled');
            $('#basket-tr-default').hide();
			$('#basket-items').append(out);

			$('#basket-table-body select').change(function(){
				id = this.id.replace('basket-item-cnt','');
				total = $(this).val()*$('#basket-item-price'+id).val()
				$('#basket-item-total'+id).text(total);
				total = 0;
				$('#basket-table-body td.basket-item-total').each(function(){					total += parseInt($(this).text())					})
				$('#basket-total-sum').text(total);
				});

			$('#basket-table-body a.basket-delete-item').click(function(){return Basket.delItem(this);})
			}
    },


	addItem : function(obj){

        if (typeof obj != "object")
        	id = 0;
        	else
		        {
                    if ( $(obj).hasClass('inb') )
                    {                    Basket.show();
                    return false;                    }else{

				        	$(obj).addClass('inb');				        	id = obj.id.replace('i','')
				        }		        }


      	$.getJSON("/back.php", { id: id}, Basket.getData);


		return false;
	},



	delItem : function(obj){

        if (typeof obj == "object")
        {        id = obj.id.replace('del','')
 		$('#i'+id).removeClass('inb');
        $.getJSON("/back.php", { id: '-'+id}, Basket.getData);
        }

		return false;	},

	validateForm : function(){
		var ret = true;
		if (typeof Basket.Required == 'object')
			for (obj in Basket.Required)
        		if (typeof Basket.Required[obj] == 'string')
        		{
        		//var itm;
        		var st = '#basket-input-'+Basket.Required[obj];
        		//alert(st);                var itm = $(st);
                //alert(itm.length)
                //alert(itm.val().trim().length)
               		if (itm.length )
               			if ( itm.val().length <3)
               			{              			itm.addClass('basket-form-validate-invalid');
              			$('#basket-notice').addClass('basket-form-validate-invalid')
              			//.fadeOut(300).fadeIn(300).fadeOut(300).fadeIn(300);
              			ret = false               			}else{itm.removeClass('basket-form-validate-invalid');}        		}
        return ret;
	}






}


