Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/Sketchometry.activity/js/sketch.js
blob: bae9ed560e8fe5a289ad32bb92d9711b8eec8de4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var GUI = { release: true };

(function () {

    if (typeof console !== 'undefined') {
        console.$log = console.log;
    } else {
        window.console = {};
    }
    
    console.log = function () { };

    //JXG.debug = function () {};
})();(function(){if($.browser.msie){return}var e=window.applicationCache;if(typeof e=="undefined"){}e.on=e.addEventListener;var t=function(e){console.log("appCacheEvent: "+e.type+" -- "+(new Date).toISOString());if(!("progress"===e.type||"downloading"===e.type||"checking"===e.type||"noupdate"===e.type||"cached"===e.type)){if("updateready"==e.type){if(!GUI.release){GUI.alert("new version available, updating")}window.location.reload()}if("error"===e.type&&!GUI.release){if(navigator.onLine)GUI.alert("appcache error!");else console.log("appcache error!")}}};e.on("checking",t,false);e.on("error",t,false);e.on("noupdate",t,false);e.on("downloading",t,false);e.on("progress",t,false);e.on("updateready",t,false);e.on("cached",t,false)})();var ND={strokes:[{name:"bisector",nbr:1,data:new Array(new Array([231,231],[231,232],[231,233],[232,234],[233,235],[242,260],[243,263],[244,266],[244,268],[244,271],[246,273],[246,276],[248,278],[248,280],[249,282],[250,286],[250,289],[251,291],[251,294],[252,297],[254,302],[254,305],[255,308],[256,310],[257,313],[258,319],[258,320],[259,321],[260,323],[260,324],[261,326],[262,328],[262,329],[262,330],[262,332],[263,334],[263,335],[263,336],[263,337],[264,337],[264,338],[264,339],[265,339],[265,341],[265,342],[265,343],[265,344],[265,345],[266,345],[266,347],[266,350],[266,351],[267,351],[267,353],[267,354],[267,353],[267,352],[267,351],[268,350],[269,346],[273,336],[274,334],[275,331],[278,325],[280,323],[283,316],[284,314],[285,312],[286,310],[288,306],[290,301],[292,298],[293,297],[293,296],[293,295],[294,293],[295,291],[295,290],[296,289],[296,288],[298,284],[299,280],[300,279],[300,278],[300,277],[302,274],[302,273],[302,274],[304,277],[305,279],[309,287],[310,289],[313,296],[315,302],[317,307],[326,329],[328,335],[329,338],[331,340],[333,346],[335,351],[335,352],[335,353],[336,353],[336,354],[337,356],[337,356],[337,355],[337,352],[339,347],[339,343],[340,338],[340,335],[342,326],[343,317],[345,309],[345,304],[346,302],[346,299],[347,297],[348,290],[349,286],[349,281],[350,279],[351,274],[351,272],[352,268],[353,263],[353,261],[355,257],[357,252],[359,248],[360,245],[361,243],[361,242],[363,238],[363,237],[365,234],[365,233],[366,231],[368,227],[368,226],[369,225],[369,224],[370,224]))},{name:"bisector",nbr:1,data:new Array(new Array([501,375],[519,373],[522,373],[523,373],[525,373],[529,373],[533,373],[537,373],[539,373],[541,373],[546,373],[548,373],[551,373],[558,373],[561,373],[564,373],[566,373],[571,373],[575,373],[583,373],[586,373],[589,373],[596,373],[597,373],[599,373],[603,372],[605,372],[607,372],[609,371],[612,371],[617,371],[619,371],[621,371],[624,371],[626,371],[629,371],[632,371],[634,371],[636,371],[639,371],[642,371],[645,371],[652,371],[655,371],[658,371],[661,371],[663,371],[667,371],[668,371],[669,371],[670,371],[671,371],[673,371],[676,371],[678,371],[682,372],[685,372],[687,372],[687,373],[689,373],[695,374],[711,375],[710,375],[663,353],[591,306],[589,302],[587,300],[585,298],[582,296],[581,294],[579,292],[577,291],[575,289],[573,286],[572,285],[571,283],[570,282],[569,281],[566,280],[565,278],[564,276],[561,273],[561,271],[560,270],[559,269],[557,267],[556,266],[556,265],[555,265],[554,264],[554,263],[555,264],[557,265],[609,304],[610,305],[612,306],[613,307],[617,309],[619,311],[621,313],[623,314],[625,316],[629,319],[631,320],[633,321],[634,322],[636,324],[641,327],[643,329],[645,330],[647,331],[648,333],[653,335],[654,335],[655,336],[656,336],[658,336],[661,339],[663,341],[665,341],[666,343],[668,344],[672,347],[674,349],[677,350],[679,352],[681,354],[683,355],[685,356],[686,358],[690,361],[694,362],[697,363],[698,364],[702,366],[704,366],[706,367],[711,369],[715,370],[717,371],[718,372],[722,374],[724,374],[725,375],[726,375],[727,375],[727,374],[719,322],[718,319],[718,318],[718,316],[718,315],[718,313],[717,312],[717,309],[717,308],[716,304],[716,302],[715,298],[715,296],[715,295],[714,293],[714,291],[714,289],[713,286],[713,284],[712,281],[712,280],[712,279],[712,278],[712,276],[711,273],[711,271],[710,268],[710,265],[710,264],[709,262],[709,261],[709,258],[709,256],[709,252],[709,250],[709,249],[709,248],[709,247],[709,245],[709,243],[709,239],[709,236],[709,234],[709,230],[709,227],[709,224],[709,223],[709,220],[709,219],[709,218],[709,217],[709,216],[708,197]))},{name:"bisector",nbr:1,data:new Array(new Array([261,174],[261,175],[261,177],[261,180],[262,186],[263,191],[263,196],[265,204],[267,210],[270,224],[273,241],[275,249],[279,266],[282,274],[285,284],[285,293],[290,311],[293,318],[296,326],[299,341],[301,349],[306,357],[306,363],[310,374],[311,381],[314,384],[316,391],[317,392],[318,395],[318,396],[318,397],[319,399],[320,400],[320,401],[320,402],[320,403],[320,402],[322,399],[325,389],[327,383],[329,376],[331,370],[333,362],[336,357],[337,351],[341,342],[342,338],[342,336],[345,332],[345,330],[347,327],[347,326],[348,326],[349,324],[350,324],[350,325],[350,326],[350,327],[351,331],[351,334],[351,335],[351,338],[351,340],[351,341],[351,342],[350,342],[350,343],[350,344],[349,344],[349,345],[348,347],[348,348],[347,350],[347,351],[347,352],[346,355],[346,356],[346,357],[345,359],[345,361],[345,362],[345,363],[345,365],[344,368],[344,369],[344,370],[343,372],[343,373],[343,376],[342,378],[342,379],[342,380],[342,382],[342,383],[342,384],[342,385],[342,386],[342,388],[342,389],[341,389],[341,390],[341,391],[340,392],[340,392],[340,392],[340,393],[340,394],[340,393],[342,393],[351,385],[358,378],[389,352],[401,342],[433,312],[443,302],[458,285],[464,279],[469,271],[473,262],[480,254],[493,241],[497,240],[505,233],[508,231],[512,227],[515,226],[516,223],[527,217],[528,216],[529,216],[531,216],[532,216]))},{name:"bisector",nbr:1,data:new Array(new Array([143,233],[144,233],[144,235],[149,240],[153,244],[157,248],[163,251],[170,257],[177,262],[185,270],[192,276],[200,282],[223,300],[248,317],[271,328],[289,341],[297,348],[311,356],[324,365],[329,370],[336,373],[351,382],[356,383],[365,388],[373,392],[377,393],[381,396],[385,398],[393,401],[396,403],[397,403],[398,403],[399,404],[401,405],[402,405],[403,407],[404,408],[405,406],[405,404],[404,402],[404,392],[402,385],[402,379],[402,365],[402,359],[402,352],[402,345],[402,332],[402,326],[402,321],[402,316],[402,305],[402,302],[402,299],[402,296],[402,294],[402,293],[402,294],[402,295],[402,299],[402,302],[402,304],[402,305],[403,310],[403,312],[403,314],[403,317],[403,319],[403,321],[403,323],[403,326],[403,328],[403,332],[403,334],[403,337],[403,338],[403,340],[404,344],[404,346],[405,348],[405,349],[405,351],[405,353],[405,354],[405,355],[405,359],[405,360],[406,361],[406,363],[406,367],[406,368],[407,370],[407,372],[409,376],[410,377],[410,379],[411,381],[411,382],[413,386],[413,388],[414,389],[414,390],[414,391],[414,392],[414,392],[415,393],[414,394],[414,395],[414,396],[414,397],[416,399],[416,400],[417,402],[417,403],[418,403],[418,404],[420,405],[420,406],[420,407],[421,405],[423,403],[427,399],[429,387],[432,380],[438,370],[443,361],[450,352],[465,333],[473,321],[482,309],[492,297],[512,275],[520,265],[527,253],[535,245],[554,220],[560,214],[570,201],[573,195],[578,189],[582,185],[583,181],[586,178],[587,175],[588,174],[589,172],[591,171],[592,170],[594,166],[596,163],[597,162],[596,161],[597,160],[598,160],[599,159],[600,158],[601,157],[602,157]))},{name:"circle",nbr:1,data:new Array(new Array([399,167],[399,167],[398,165],[397,164],[395,162],[393,160],[391,159],[388,156],[385,155],[385,155],[383,154],[379,152],[375,152],[365,149],[362,149],[355,147],[350,147],[335,147],[324,147],[319,147],[312,146],[306,146],[294,147],[287,148],[274,150],[258,151],[250,153],[238,157],[230,157],[225,159],[216,163],[211,165],[207,170],[195,182],[190,187],[180,200],[175,207],[169,227],[166,232],[166,239],[168,271],[168,282],[172,293],[174,303],[175,314],[177,322],[185,340],[196,356],[202,363],[217,378],[223,384],[234,390],[245,397],[255,405],[280,417],[305,425],[317,427],[345,430],[354,430],[363,430],[381,430],[390,430],[414,428],[425,427],[435,422],[449,414],[456,407],[478,387],[485,377],[493,356],[495,343],[496,312],[496,301],[496,290],[496,281],[492,262],[490,253],[486,238],[484,232],[474,217],[469,212],[457,202],[450,196],[444,191],[431,182],[425,177],[422,173],[419,172],[418,172],[416,170],[415,170],[414,167],[412,167],[409,164],[408,163],[405,161],[404,161]))},{name:"circle",nbr:1,data:new Array(new Array([384,109],[382,108],[380,108],[379,107],[376,106],[370,104],[367,103],[359,103],[354,103],[346,103],[341,103],[333,103],[328,103],[316,103],[304,103],[300,105],[293,105],[286,108],[283,110],[280,112],[276,117],[271,122],[261,132],[250,143],[245,150],[234,162],[230,167],[229,178],[227,183],[225,196],[225,204],[225,212],[225,228],[225,237],[225,245],[230,262],[239,277],[244,284],[250,289],[257,299],[263,302],[266,304],[271,306],[282,309],[288,311],[311,314],[319,316],[335,316],[344,316],[359,316],[365,316],[372,316],[374,317],[375,317],[378,317],[382,317],[384,316],[388,313],[392,313],[395,312],[396,311],[400,307],[402,306],[405,305],[406,303],[408,302],[408,301],[408,300],[409,300],[409,299],[410,298],[412,297],[413,297],[414,297],[415,297],[415,295]))},{name:"circle",nbr:1,data:new Array(new Array([440,127],[440,126],[440,125],[439,124],[438,123],[434,122],[433,122],[429,119],[428,119],[425,117],[423,117],[419,116],[416,115],[411,114],[409,114],[404,112],[401,112],[395,111],[390,111],[387,111],[385,111],[382,111],[377,111],[375,111],[371,111],[369,111],[363,111],[361,111],[357,112],[355,113],[353,114],[345,117],[341,119],[327,122],[322,127],[314,133],[310,137],[308,137],[303,140],[299,143],[298,146],[296,147],[294,153],[293,156],[291,158],[289,163],[288,166],[286,170],[285,172],[285,175],[282,182],[282,187],[282,198],[282,204],[282,219],[282,228],[282,244],[285,257],[285,260],[287,263],[295,277],[299,282],[315,296],[320,300],[325,303],[330,307],[344,312],[349,314],[363,318],[368,322],[370,322],[376,323],[382,324],[448,323],[452,322],[462,318],[468,313],[471,310],[478,303],[480,300],[487,292],[490,288],[494,285],[496,282],[501,271],[503,267],[510,248],[510,245],[511,240],[511,235],[512,233],[512,223],[512,219],[512,217],[512,214],[512,212],[512,207],[511,204],[511,202],[510,200],[509,197],[509,197],[506,191],[505,189],[503,185],[501,183],[501,182],[496,177],[496,177],[494,175],[493,173],[490,170],[488,168],[479,157],[477,154],[475,152],[470,147],[469,144],[467,143],[465,142],[463,140],[460,137],[457,135],[456,134],[456,133],[455,132],[454,132],[453,131],[451,130],[450,129],[449,129]))},{name:"circle",nbr:1,data:new Array(new Array([445,106],[444,104],[443,103],[442,101],[440,99],[432,92],[427,88],[409,77],[393,70],[375,63],[365,62],[315,56],[306,56],[298,56],[278,56],[245,56],[235,56],[227,58],[213,67],[205,72],[198,77],[184,91],[176,97],[164,111],[158,118],[146,132],[140,142],[128,157],[122,164],[114,185],[112,197],[109,221],[109,237],[109,249],[109,262],[109,287],[113,308],[119,319],[125,328],[130,337],[145,356],[153,365],[160,374],[180,389],[191,393],[213,397],[227,399],[275,399],[290,399],[348,399],[400,392],[415,386],[427,380],[436,374],[455,354],[468,332],[474,322],[480,307],[485,297],[491,286],[493,264],[495,253],[495,232],[495,221],[493,199],[491,190],[489,181],[482,164],[480,155],[469,138],[463,131],[457,124],[446,109],[440,102],[431,92],[430,89],[423,82],[419,77],[405,62],[400,56],[393,51],[391,51]))},{name:"circle2points",nbr:1,data:new Array(new Array([364,211],[365,211],[366,211],[368,211],[376,211],[384,211],[395,212],[401,212],[409,212],[416,212],[422,212],[429,212],[434,212],[439,212],[445,212],[449,212],[454,212],[457,212],[462,212],[466,212],[470,212],[474,213],[479,213],[483,213],[489,213],[495,213],[503,213],[511,213],[518,213],[524,213],[532,213],[539,213],[545,213],[552,212],[561,211],[567,210],[573,209],[578,209],[584,208],[589,208],[592,207],[595,207],[598,207],[601,207],[603,207],[607,207],[609,207],[612,207],[613,207],[616,207],[617,206],[618,206],[611,234],[609,240],[607,243],[606,246],[605,249],[603,252],[602,255],[601,258],[599,260],[597,263],[595,266],[594,269],[591,274],[589,278],[587,281],[585,284],[583,287],[580,290],[578,292],[575,294],[573,296],[569,299],[567,301],[564,303],[561,305],[558,307],[554,309],[552,310],[549,311],[546,313],[543,313],[540,314],[537,316],[535,317],[531,319],[527,320],[524,321],[521,322],[518,323],[514,324],[511,325],[505,327],[499,328],[496,328],[493,329],[489,329],[485,330],[481,331],[476,332],[474,332],[469,333],[465,334],[461,335],[458,335],[455,335],[454,335]))},{name:"circle2points",nbr:1,data:new Array(new Array([658,224],[657,224],[656,224],[655,224],[644,223],[638,223],[631,223],[625,223],[618,223],[611,223],[605,223],[599,223],[592,223],[585,223],[578,223],[571,223],[563,223],[555,223],[546,222],[540,222],[531,221],[522,221],[516,221],[507,221],[499,221],[491,221],[485,221],[478,221],[471,221],[463,220],[457,220],[450,220],[444,220],[439,220],[435,220],[430,220],[425,220],[419,220],[414,220],[411,220],[408,220],[406,220],[404,220],[402,220],[402,219],[401,219],[399,219],[398,219],[397,219],[397,220],[397,223],[397,226],[397,228],[397,230],[397,231],[397,232],[397,233],[397,235],[397,236],[397,237],[397,238],[397,239],[397,240],[397,242],[397,243],[397,246],[397,248],[397,251],[397,254],[398,256],[399,259],[400,262],[401,264],[401,267],[402,269],[403,272],[404,275],[404,278],[405,280],[406,283],[407,285],[408,288],[410,291],[411,294],[413,298],[415,301],[417,305],[419,311],[422,315],[424,319],[427,322],[429,325],[432,328],[434,331],[437,334],[439,337],[442,340],[445,343],[448,345],[452,349],[455,351],[459,354],[462,357],[466,360],[469,362],[474,365],[478,368],[482,370],[488,373],[494,376],[499,379],[505,381],[511,383],[516,384],[519,385],[523,386],[526,388],[529,389],[533,390],[535,390],[539,391],[542,391],[543,391],[544,391],[545,391],[546,391],[548,391],[549,391],[552,391],[553,391],[555,391],[556,391]))},{name:"line",nbr:1,data:new Array(new Array([0,0],[100,0]))},{name:"line",nbr:1,data:new Array(new Array([12,347],[119,347]))},{name:"midpoint",nbr:1,data:new Array(new Array([88,230],[89,230],[90,230],[93,230],[93,230],[95,230],[98,230],[100,230],[102,230],[103,231],[105,231],[107,231],[108,231],[110,231],[111,231],[114,231],[117,231],[121,231],[123,231],[126,232],[129,232],[133,232],[136,232],[139,232],[145,232],[150,232],[156,232],[159,232],[161,233],[165,234],[168,234],[171,234],[174,234],[179,234],[184,234],[189,234],[194,234],[198,234],[201,234],[204,233],[210,233],[213,233],[219,232],[226,231],[232,231],[237,231],[245,231],[252,231],[256,231],[261,231],[265,231],[271,231],[276,231],[281,231],[285,231],[287,233],[291,236],[293,239],[295,243],[295,247],[296,250],[296,254],[295,257],[294,259],[291,261],[288,262],[282,262],[273,262],[256,255],[255,249],[253,244],[253,239],[257,233],[262,228],[270,225],[280,224],[289,224],[294,226],[300,230],[303,235],[303,240],[304,245],[304,247],[301,249],[295,252],[279,252],[270,252],[265,249],[261,245],[261,241],[261,237],[261,235],[264,231],[273,229],[282,229],[287,230],[290,231],[297,233],[304,235],[306,235],[309,236],[316,240],[321,241],[323,242],[325,243],[328,243],[333,246],[340,247],[346,247],[351,247],[360,248],[366,248],[372,248],[377,248],[387,248],[391,248],[395,247],[401,247],[407,247],[412,247],[416,247],[421,247],[426,246],[432,246],[435,246],[441,245],[449,245],[453,245],[456,245],[460,244],[463,244],[465,244],[465,244],[466,244],[467,244],[468,244],[470,244],[472,244],[474,244],[477,244],[482,244]))},{name:"midpoint",nbr:1,data:new Array(new Array([43,471],[57,474],[58,475],[78,482],[85,485],[95,487],[102,489],[111,490],[120,490],[129,492],[142,492],[153,492],[162,492],[173,492],[189,492],[205,494],[224,495],[243,497],[260,503],[270,511],[270,518],[265,524],[256,525],[249,525],[243,521],[239,512],[240,502],[243,496],[252,489],[261,484],[270,483],[280,485],[309,494],[319,496],[328,497],[335,496],[343,496],[350,497],[359,498],[377,499],[387,500],[395,500],[400,501],[405,500],[411,501],[416,501],[420,501],[425,502],[429,502],[432,502],[436,503],[440,504],[444,505],[447,506],[450,506],[453,507],[455,507],[456,507],[458,507],[459,508],[459,507],[462,509],[462,509],[463,509],[465,509],[467,509],[467,508],[469,507],[470,508],[472,507],[473,507],[474,505],[476,504],[477,503],[480,501],[482,500],[483,499],[486,497],[487,495],[489,495],[492,493],[492,492],[494,491]))},{name:"midpoint",nbr:1,data:new Array(new Array([147,121],[148,121],[149,121],[150,121],[161,121],[169,122],[175,122],[181,122],[186,123],[191,123],[196,124],[201,124],[207,124],[212,124],[217,124],[220,124],[224,124],[231,124],[236,124],[239,124],[245,123],[251,120],[255,117],[258,114],[261,110],[263,107],[265,104],[266,102],[266,98],[266,95],[264,91],[261,88],[258,88],[253,87],[247,87],[242,87],[238,87],[234,88],[233,90],[231,91],[230,92],[228,94],[226,96],[225,98],[223,100],[223,102],[222,105],[222,107],[222,109],[223,112],[224,115],[225,117],[227,118],[228,120],[229,120],[231,121],[233,122],[234,123],[237,123],[240,123],[242,124],[246,124],[250,124],[252,124],[257,124],[260,123],[262,123],[265,122],[267,122],[269,121],[271,121],[273,121],[276,120],[280,120],[282,120],[285,120],[286,120],[287,120],[289,120],[291,120],[292,121],[294,121],[295,121],[298,121],[300,121],[302,121],[305,121],[309,121],[312,121],[314,121],[315,121],[316,121],[319,121],[321,121],[322,121],[323,121],[326,121],[327,121],[328,122],[334,122],[337,123]))},{name:"normal",nbr:1,data:new Array(new Array([304,255],[304,256],[304,261],[304,264],[304,266],[304,287],[304,291],[304,294],[304,295],[304,297],[304,301],[303,302],[303,304],[303,306],[303,308],[303,315],[303,318],[303,323],[304,327],[304,328],[304,333],[304,334],[304,335],[304,338],[304,339],[304,342],[304,343],[304,344],[304,345],[304,346],[305,368],[305,370],[305,371],[305,373],[305,374],[305,375],[305,376],[305,377],[305,378],[305,379],[305,381],[306,381],[307,381],[309,380],[316,379],[330,378],[334,378],[338,378],[340,378],[341,378],[344,378],[371,378],[373,378],[376,378],[380,378],[392,378],[394,378],[395,378],[396,378]))},{name:"normal",nbr:1,data:new Array(new Array([300,35],[300,36],[300,38],[300,43],[300,45],[302,71],[302,77],[302,79],[302,81],[302,84],[304,95],[304,98],[304,100],[304,104],[304,105],[304,115],[304,118],[304,119],[304,121],[304,122],[304,127],[304,128],[305,129],[305,130],[305,132],[306,138],[306,140],[306,141],[306,142],[306,143],[306,148],[306,150],[306,153],[306,154],[306,155],[306,161],[306,162],[305,162],[303,162],[301,162],[294,163],[291,163],[288,163],[284,163],[282,163],[271,163],[269,163],[268,163],[266,163],[261,163],[251,165],[249,166],[248,166],[247,166],[244,166],[241,167],[240,167],[239,167],[237,167],[236,168],[234,168],[232,168],[227,168],[225,168],[225,167],[219,165],[216,165],[216,164],[213,163],[208,163]))},{name:"normal",nbr:1,data:new Array(new Array([247,60],[247,61],[247,62],[247,62],[246,65],[246,67],[246,69],[246,71],[247,73],[247,74],[247,87],[247,89],[247,90],[247,92],[247,94],[247,95],[247,96],[247,98],[247,100],[247,102],[247,105],[248,107],[245,107],[245,111],[245,114],[245,117],[245,119],[246,121],[246,123],[246,125],[246,127],[246,128],[246,130],[247,132],[247,134],[247,136],[247,139],[247,140],[247,143],[247,147],[247,150],[247,153],[247,158],[247,161],[247,162],[247,165],[247,168],[247,171],[246,173],[246,177],[246,181],[246,185],[246,190],[246,194],[246,200],[246,205],[246,210],[246,215],[246,219],[246,226],[247,232],[247,239],[250,246],[250,250],[250,254],[250,258],[250,260],[250,262],[250,263],[250,265],[250,271],[250,273],[250,276],[250,278],[250,280],[250,282],[250,283],[250,285],[251,288],[252,291],[252,292],[252,293],[252,294],[252,296],[252,298],[252,299],[251,301],[251,303],[251,304],[250,306],[250,308],[250,311],[250,313],[250,315],[250,318],[250,320],[249,323],[249,326],[249,329],[248,332],[248,335],[248,337],[248,341],[248,343],[248,346],[248,349],[248,351],[248,353],[248,357],[248,359],[248,361],[248,363],[247,366],[247,368],[247,370],[247,371],[246,373],[246,375],[246,377],[246,379],[246,380],[245,381],[245,382],[245,384],[244,384],[244,386],[244,387],[243,389],[243,391],[243,392],[243,394],[243,397],[242,407],[242,409],[242,411],[241,412],[241,413],[241,414],[241,417],[241,418],[241,420],[241,422],[241,425],[241,426],[241,428],[241,429],[241,431],[241,433],[241,435],[241,436],[241,436],[241,439],[241,441],[241,443],[241,446],[241,447],[241,449],[241,452],[242,454],[242,456],[242,458],[242,460],[242,462],[242,465],[242,468],[242,469],[242,471],[242,473],[242,475],[242,477],[242,478],[243,480],[243,480],[242,481],[242,483],[242,484],[242,485],[242,486],[242,487],[242,488],[242,490],[242,491],[241,491],[241,492],[241,493],[241,494],[241,495],[241,496],[241,497],[242,498],[243,499],[244,500],[245,500],[247,501],[249,501],[250,502],[252,502],[254,503],[256,503],[258,503],[260,504],[262,504],[263,504],[264,504],[265,504],[266,504],[267,504],[268,504],[269,505],[270,505],[271,505],[273,505],[274,505],[276,506],[277,506],[281,506],[283,506],[285,506],[288,506],[291,506],[294,506],[297,507],[300,507],[303,507],[306,507],[309,507],[311,507],[313,507],[316,507],[318,507],[320,507],[323,507],[326,507],[329,507],[338,507],[340,507],[344,507],[347,507],[351,507],[355,507],[360,507],[366,508],[369,508],[373,510],[376,510],[380,511],[384,511],[385,511],[388,511],[397,513],[398,513],[401,513],[403,513],[405,513],[407,514],[409,514],[411,514],[414,514],[416,515],[419,516],[421,516],[423,516],[425,516],[427,516],[428,516],[430,516],[432,516],[434,516],[435,516],[437,516],[438,516],[439,516],[441,516],[443,517],[445,517],[447,517],[450,517],[452,517],[455,517],[458,517],[460,517],[462,517],[465,517],[468,517],[471,517],[473,517],[475,517],[478,517],[481,517],[483,516],[485,516],[487,516],[489,516],[492,516],[493,516],[494,516],[496,516],[497,516],[499,516],[501,516],[503,516],[505,516],[508,516],[511,516],[514,516],[516,516],[518,516],[521,516],[523,516],[525,516],[527,516],[528,516],[530,516],[531,515],[533,515],[535,515],[537,515],[538,515],[540,515],[542,515],[545,515],[547,515],[549,515],[550,515],[553,515],[555,515],[557,515],[559,515],[561,515],[563,515],[564,515],[565,515],[567,515],[569,515],[570,515],[571,515],[573,515],[575,515],[576,515],[578,515],[579,515],[580,514],[582,514],[582,514],[583,513],[584,513],[585,513],[586,513],[587,513],[588,513]))},{name:"parallel",nbr:1,data:new Array(new Array([487,142],[559,142],[561,142],[564,142],[567,142],[570,142],[574,143],[579,143],[582,143],[585,143],[591,143],[597,143],[600,143],[602,143],[604,143],[606,143],[609,143],[611,143],[614,143],[620,143],[623,143],[625,143],[627,143],[629,143],[630,143],[631,142],[632,142],[632,143],[593,179],[588,183],[585,185],[583,187],[580,190],[577,192],[574,195],[571,197],[568,199],[565,202],[562,204],[559,207],[557,209],[555,211],[553,213],[551,215],[550,217],[548,219],[547,221],[546,224],[545,226],[544,229],[543,232],[541,234],[540,237],[538,239],[538,241],[537,243],[537,245],[536,247],[535,248],[535,250],[534,252],[533,254],[532,255],[532,257],[531,259],[530,261],[529,263],[527,265],[526,267],[525,270],[523,272],[521,274],[519,276],[517,278],[516,279],[515,279],[514,280],[513,281],[512,281],[512,282],[511,282],[511,283],[511,284],[511,285],[510,285],[509,286],[509,287],[507,289],[506,290],[507,290],[598,284],[601,283],[602,283],[603,283],[604,282],[605,282],[606,282],[607,282],[608,282],[610,282],[612,282],[614,282],[615,282],[616,282],[617,282],[632,284],[634,285],[635,285],[637,285],[640,286],[641,286],[643,286],[644,286],[644,287]))},{name:"parallel",nbr:1,data:new Array(new Array([450,377],[451,377],[452,377],[453,377],[456,376],[470,373],[481,372],[495,372],[503,372],[519,372],[529,372],[537,372],[545,372],[561,372],[569,372],[576,372],[589,372],[596,372],[608,372],[614,372],[620,372],[625,372],[628,372],[634,372],[637,372],[640,372],[642,371],[423,295],[421,295],[422,294],[649,286],[651,286],[652,286]))},{name:"parallel",nbr:1,data:new Array(new Array([286,103],[287,103],[288,103],[290,103],[292,103],[300,103],[310,105],[316,106],[328,108],[345,110],[358,112],[374,112],[391,112],[404,112],[416,112],[422,112],[424,112],[425,112],[426,112],[429,112],[430,112],[429,119],[428,126],[427,134],[426,143],[426,155],[426,164],[425,176],[425,185],[425,196],[425,206],[425,213],[425,216],[425,223],[425,227],[425,232],[425,241],[425,244],[425,246],[426,246],[432,246],[440,246],[461,246],[500,246],[524,246],[544,246],[566,246],[584,248],[602,248],[609,249],[610,249],[624,249],[634,249],[647,249],[659,249],[665,249],[666,249],[675,249],[680,249]))},{name:"parallel",nbr:1,data:new Array(new Array([664,213],[664,214],[667,216],[669,218],[672,221],[675,224],[677,227],[679,230],[682,232],[684,234],[687,236],[689,238],[690,241],[693,244],[695,246],[696,249],[698,250],[701,254],[702,255],[704,256],[705,257],[706,259],[707,260],[708,261],[709,262],[710,263],[711,264],[712,266],[712,267],[712,266],[863,99],[873,90],[878,86],[883,84],[885,82],[886,82],[1013,174],[1014,174],[1014,175]))},{name:"quadrilateral",nbr:1,data:new Array(new Array([457,274],[459,251],[459,243],[459,234],[455,157],[455,156],[693,147],[730,152],[734,261],[730,343],[729,343],[511,358],[503,359],[498,360],[495,361],[491,361],[485,362],[478,363],[474,364],[467,364],[463,364],[461,364],[456,315],[456,308],[456,303],[456,296],[456,291],[456,284],[456,278],[456,275]))},{name:"quadrilateral",nbr:1,data:new Array(new Array([387,189],[388,189],[389,189],[390,188],[398,184],[407,179],[415,176],[424,172],[432,168],[442,163],[451,160],[460,155],[472,150],[487,143],[498,137],[514,129],[527,123],[541,115],[560,105],[579,94],[599,86],[617,78],[633,70],[645,63],[653,60],[661,56],[665,55],[667,54],[668,54],[672,60],[678,70],[683,77],[690,87],[696,96],[705,108],[719,127],[732,145],[746,164],[759,179],[772,194],[783,206],[795,219],[805,227],[811,233],[816,236],[818,237],[819,238],[818,238],[810,241],[801,243],[791,247],[782,251],[771,255],[757,260],[741,265],[721,274],[700,283],[679,294],[652,307],[625,321],[596,332],[558,347],[519,363],[491,375],[464,388],[434,403],[411,415],[384,428],[356,440],[335,448],[311,457],[295,462],[280,467],[269,470],[247,471],[250,464],[257,449],[262,441],[265,434],[270,422],[275,413],[282,398],[287,382],[297,362],[303,348],[312,333],[320,322],[326,312],[329,304],[333,296],[336,288],[339,279],[343,270],[346,263],[349,258],[351,253],[352,250],[354,245],[356,241],[358,237],[360,234],[361,231],[363,226],[364,220],[365,214],[366,211],[367,209],[367,207],[368,206],[368,205],[371,200],[373,196],[375,194],[376,191],[377,190],[378,188],[379,187],[380,187],[381,186]))},{name:"quadrilateral",nbr:1,data:new Array(new Array([489,275],[489,274],[489,273],[491,271],[508,251],[524,233],[537,220],[554,202],[569,186],[586,170],[604,152],[622,134],[642,114],[654,102],[665,92],[672,86],[676,82],[678,79],[680,77],[681,76],[681,75],[681,73],[682,72],[682,69],[683,67],[683,66],[684,66],[685,66],[692,74],[701,82],[714,91],[729,101],[748,112],[773,125],[799,135],[837,148],[861,156],[903,165],[937,169],[969,172],[996,173],[1024,174],[1040,175],[1052,175],[1057,176],[1060,176],[1060,177],[1053,181],[1040,189],[1024,201],[1012,209],[998,219],[983,228],[965,241],[944,254],[921,270],[891,291],[861,313],[832,333],[803,354],[779,371],[756,387],[730,405],[712,417],[695,428],[683,436],[672,442],[665,446],[660,448],[658,450],[657,450],[657,451],[656,451],[655,451],[654,451],[653,451],[651,451],[649,451],[646,451],[640,447],[632,443],[623,438],[611,431],[597,422],[584,412],[571,404],[560,395],[549,385],[536,373],[522,363],[507,353],[491,344],[479,337],[467,330],[456,323],[447,318],[440,314],[436,313],[432,311],[429,310],[427,309],[426,309],[426,308]))},{name:"quadrilateral",nbr:1,data:new Array(new Array([479,269],[479,268],[479,267],[479,264],[479,252],[478,245],[477,232],[474,221],[470,203],[465,190],[461,176],[456,164],[453,153],[448,141],[446,133],[443,126],[441,120],[440,115],[438,111],[436,106],[435,102],[434,100],[434,98],[434,96],[434,95],[434,94],[434,93],[435,93],[437,94],[444,95],[454,96],[467,97],[487,97],[505,97],[534,97],[567,97],[598,97],[633,95],[679,90],[713,87],[753,85],[787,83],[812,82],[834,80],[844,80],[851,78],[854,78],[854,79],[854,92],[853,117],[853,151],[852,185],[852,212],[852,241],[852,262],[852,285],[854,297],[855,307],[856,312],[857,313],[856,313],[847,307],[837,304],[823,299],[803,295],[778,291],[751,288],[722,286],[690,285],[647,281],[612,277],[573,273],[547,272],[522,271],[497,270],[470,269],[451,268],[436,268],[423,267],[416,267],[413,266],[412,266]))},{name:"quadrilateral",nbr:1,data:new Array(new Array([436,331],[436,330],[434,330],[434,329],[429,328],[424,326],[420,324],[413,322],[408,321],[397,318],[387,315],[377,312],[366,309],[349,304],[334,300],[318,296],[305,291],[287,287],[273,283],[259,280],[251,277],[243,276],[234,275],[229,274],[223,273],[220,272],[217,272],[215,272],[214,272],[212,272],[211,272],[210,272],[209,272],[209,271],[214,268],[218,264],[222,262],[231,256],[241,249],[255,239],[267,230],[285,215],[311,194],[333,175],[358,147],[375,125],[389,106],[400,88],[411,70],[418,59],[423,52],[428,46],[432,41],[434,38],[435,36],[437,35],[437,34],[438,34],[442,34],[447,36],[455,41],[468,45],[481,50],[502,57],[533,66],[564,70],[611,71],[662,71],[720,68],[780,67],[816,66],[839,66],[850,66],[855,66],[854,66],[846,71],[827,83],[810,94],[791,105],[776,115],[755,128],[733,139],[713,151],[698,160],[679,170],[665,180],[647,192],[633,202],[616,214],[597,226],[585,234],[570,243],[558,249],[550,255],[540,261],[532,266],[527,269],[520,274],[513,278],[506,283],[500,286],[495,289],[491,292],[488,294],[484,296],[481,298],[477,300],[473,302],[469,305],[466,307],[464,309],[462,310],[460,312],[458,313],[456,315],[454,316],[452,318],[450,320],[448,321],[445,324],[443,325],[442,326],[442,327],[441,327],[440,328],[440,329],[439,329],[438,329],[437,331],[435,332],[433,333],[433,334]))},{name:"quadrilateral",nbr:1,data:new Array(new Array([82,200],[81,200],[81,203],[81,204],[82,209],[83,214],[84,216],[85,223],[85,228],[85,234],[85,242],[85,249],[85,261],[85,269],[87,275],[87,282],[87,296],[87,303],[87,315],[87,326],[87,331],[89,335],[89,338],[91,346],[91,349],[92,355],[92,356],[91,356],[91,357],[92,357],[94,357],[96,357],[102,357],[107,357],[110,357],[131,356],[137,356],[144,356],[151,356],[177,354],[186,354],[195,354],[204,354],[223,354],[232,354],[240,352],[259,351],[268,349],[286,349],[296,348],[306,348],[315,348],[334,348],[341,348],[351,348],[359,348],[374,348],[382,348],[389,348],[399,346],[408,344],[424,342],[431,342],[446,340],[453,340],[459,340],[471,340],[476,340],[482,340],[487,340],[497,340],[503,340],[507,342],[513,342],[523,344],[527,344],[540,344],[546,344],[554,344],[557,344],[562,344],[565,344],[567,344],[571,344],[571,344],[572,344],[573,344],[574,342],[575,341],[575,339],[576,337],[577,336],[578,333],[579,330],[580,328],[582,324],[582,321],[582,318],[582,316],[583,310],[583,308],[584,305],[584,301],[584,299],[585,296],[585,294],[585,289],[585,287],[585,280],[585,276],[585,272],[585,271],[585,268],[585,264],[585,261],[585,260],[585,257],[585,252],[585,249],[585,248],[585,241],[585,238],[584,236],[585,232],[586,228],[586,227],[587,225],[587,223],[587,222],[587,221],[588,218],[588,217],[588,215],[588,214],[588,213],[588,211],[588,210],[589,209],[589,207],[589,206],[589,205],[589,205],[589,204],[589,203],[589,202],[589,201],[589,200],[588,200],[585,200],[582,200],[580,200],[571,200],[565,200],[557,200],[539,201],[531,201],[522,201],[513,203],[495,205],[486,206],[477,207],[460,207],[452,207],[444,207],[421,207],[414,207],[398,207],[391,207],[384,207],[376,207],[362,209],[354,209],[347,209],[332,209],[325,209],[318,209],[310,209],[296,209],[279,209],[270,211],[263,211],[255,211],[248,211],[235,211],[230,213],[224,213],[213,213],[208,214],[205,214],[197,214],[194,214],[190,214],[184,214],[180,215],[175,215],[173,215],[170,215],[165,215],[163,215],[160,215],[158,215],[154,215],[153,215],[152,215],[150,215],[146,215],[145,215],[143,215],[142,215],[140,215],[138,215],[136,215],[132,215],[131,215],[130,215],[122,215],[120,215],[117,215],[116,215],[115,215],[114,215],[111,215],[109,215],[108,215],[107,215],[103,215],[101,215],[100,215],[98,215],[96,216]))},{name:"quadrilateral",nbr:1,data:new Array(new Array([215,148],[215,150],[215,151],[215,153],[215,160],[215,163],[213,168],[211,180],[211,187],[211,196],[211,203],[211,222],[211,232],[210,242],[211,258],[211,267],[213,276],[213,297],[213,304],[215,322],[215,327],[216,337],[216,341],[216,344],[217,352],[217,353],[216,353],[216,352],[216,352],[217,352],[218,352],[222,351],[225,351],[247,351],[270,351],[302,351],[318,351],[348,351],[360,351],[371,351],[382,351],[402,351],[406,350],[406,349],[406,347],[405,345],[405,344],[405,342],[405,337],[405,334],[405,324],[405,317],[405,289],[405,280],[405,250],[405,240],[403,212],[403,204],[401,187],[401,182],[403,169],[402,168],[402,167],[402,166],[402,163],[402,162],[402,159],[401,158],[401,157],[401,156],[400,155],[400,154],[400,153],[400,152],[398,152],[396,152],[391,153],[390,153],[384,153],[381,153],[378,153],[374,153],[355,154],[346,154],[318,154],[309,154],[282,154],[275,154],[257,154],[254,154],[249,154],[247,154],[245,154],[244,154],[240,154],[238,154],[234,154],[233,153],[228,153],[226,153]))},{name:"quadrilateral",nbr:1,data:new Array(new Array([277,141],[277,142],[277,142],[277,144],[277,150],[276,152],[276,157],[276,171],[275,187],[273,197],[275,328],[275,336],[275,343],[273,349],[273,354],[272,361],[272,364],[272,365],[272,366],[272,367],[272,367],[271,368],[271,372],[271,372],[271,373],[273,372],[275,372],[278,372],[287,372],[293,371],[300,371],[310,371],[334,369],[347,369],[365,369],[396,369],[412,369],[426,367],[464,367],[473,367],[497,367],[500,367],[501,367],[502,367],[503,367],[503,366],[503,364],[503,362],[503,359],[503,353],[503,350],[503,345],[503,337],[503,328],[503,307],[503,297],[503,261],[503,249],[501,215],[500,204],[498,175],[496,167],[496,152],[496,150],[496,145],[496,143],[496,140],[496,139],[496,137],[496,136],[497,134],[495,134],[494,134],[492,135],[491,136],[486,136],[485,137],[482,137],[472,137],[462,138],[450,138],[442,138],[435,138],[418,138],[408,138],[399,138],[378,138],[368,138],[357,138],[329,138],[320,138],[300,138],[293,138],[291,139],[290,139],[290,139],[285,139],[284,138],[281,138],[275,138],[273,138],[272,138],[270,138],[269,138]))},{name:"quadrilateral",nbr:1,data:new Array(new Array([298,110],[298,111],[295,112],[295,113],[286,119],[281,124],[275,129],[260,142],[242,157],[223,172],[212,179],[205,187],[191,198],[185,202],[182,203],[178,205],[177,205],[178,206],[179,207],[180,208],[192,218],[202,232],[215,244],[222,251],[238,268],[245,277],[252,286],[266,304],[274,312],[281,322],[289,329],[304,344],[311,352],[317,359],[329,371],[333,375],[336,379],[340,382],[341,382],[345,383],[345,384],[346,383],[348,382],[350,380],[355,378],[367,369],[375,364],[418,340],[430,331],[471,307],[482,301],[506,288],[514,288],[523,278],[523,277],[525,277],[525,276],[525,275],[525,274],[525,273],[525,272],[525,272],[525,271],[525,270],[525,268],[525,267],[524,265],[522,263],[520,261],[519,258],[515,252],[513,247],[510,242],[506,236],[500,223],[495,217],[490,209],[475,184],[469,176],[465,169],[457,154],[453,149],[450,142],[437,125],[434,121],[425,114],[424,112],[421,111],[421,110],[420,110],[417,108],[415,108],[415,107],[413,107],[412,107],[409,105],[405,102],[404,102],[403,101],[401,99],[401,98],[400,97],[399,97],[398,95],[397,93],[396,92],[395,92],[395,90],[395,89],[393,87],[390,85],[390,84],[390,84],[388,82],[388,82],[387,81],[387,80],[385,78],[385,77],[384,77],[383,77],[382,76],[382,75],[381,74],[380,74],[380,73],[380,73],[380,72],[380,72],[379,72],[379,71],[378,71],[376,69],[376,68],[376,67],[375,67],[375,67],[375,66],[375,65],[374,65],[373,65],[371,65],[369,66],[367,67],[365,67],[364,67],[360,67],[355,69],[353,71],[350,72],[346,73],[343,75],[342,77],[340,77],[340,77],[339,77],[339,78],[338,78],[337,79],[336,80],[335,80],[334,81],[334,82],[333,83],[332,83],[329,87],[327,88],[324,89],[323,90],[323,92],[322,92],[322,93],[321,94],[320,96],[320,96],[320,97],[319,98],[318,98],[318,99],[318,100],[316,101],[315,101],[314,101],[312,102],[311,102],[310,102],[310,102],[310,102],[309,103],[308,103]))},{name:"reflection",nbr:1,data:new Array(new Array([357,286],[390,266],[396,261],[397,260],[401,256],[404,254],[411,249],[416,245],[421,239],[474,187],[516,154],[522,150],[528,145],[534,141],[539,138],[543,135],[552,129],[560,124],[570,119],[576,117],[584,114],[589,112],[589,111],[540,111],[537,111],[536,111],[501,117],[501,118],[565,109],[566,109],[569,109],[572,109],[575,109],[578,109],[581,109],[583,109],[588,109],[593,109],[596,109],[596,110],[578,136],[578,138],[577,139],[576,139],[575,140],[575,141],[574,142],[574,143],[574,144],[574,145],[573,145],[573,146],[573,147],[573,148],[572,149],[572,150],[571,151],[571,152],[570,152],[570,153],[570,154],[570,155],[570,156],[570,157],[570,159],[566,169],[566,170],[565,172],[565,173],[564,174],[562,177]))},{name:"reflection",nbr:1,data:new Array(new Array([375,308],[409,284],[410,283],[411,282],[415,280],[419,276],[427,270],[434,266],[436,264],[440,261],[441,260],[446,257],[450,254],[451,253],[457,248],[461,245],[463,244],[467,241],[473,239],[477,238],[482,235],[488,232],[493,230],[498,227],[502,225],[509,222],[512,220],[514,219],[516,219],[520,217],[522,216],[528,213],[529,213],[532,212],[535,211],[540,210],[543,209],[543,208],[513,206],[507,206],[508,206],[533,204],[536,204],[542,203],[544,204],[540,223],[540,224],[540,225],[540,226],[540,230],[540,231],[540,233],[540,234],[535,235]))},{name:"reflection",nbr:1,data:new Array(new Array([372,160],[373,160],[374,160],[376,160],[382,160],[388,160],[390,160],[393,160],[400,160],[405,160],[408,160],[412,159],[415,159],[418,159],[421,158],[425,158],[428,158],[431,158],[434,158],[436,158],[438,158],[441,158],[443,158],[445,157],[447,157],[449,156],[452,156],[454,156],[455,156],[458,156],[459,156],[460,156],[462,156],[464,156],[467,156],[468,156],[470,156],[473,156],[475,156],[477,156],[480,155],[482,155],[484,155],[486,155],[488,155],[490,155],[492,154],[494,154],[496,154],[498,154],[500,154],[502,154],[504,154],[506,154],[508,154],[509,154],[511,154],[514,154],[515,154],[517,154],[519,154],[521,154],[522,154],[524,154],[525,154],[527,154],[529,154],[531,154],[532,154],[534,154],[535,154],[537,154],[538,154],[540,154],[542,154],[543,154],[545,154],[546,154],[547,154],[548,154],[549,154],[551,154],[552,154],[554,154],[555,154],[556,154],[558,154],[560,154],[562,154],[563,154],[565,154],[566,154],[568,154],[569,154],[571,154],[572,154],[573,154],[575,154],[576,154],[577,154],[579,154],[581,153],[583,153],[585,153],[586,153],[587,153],[588,153],[589,153],[590,153],[591,153],[592,153],[593,153],[594,153],[595,153],[597,153],[598,153],[599,153],[600,153],[601,153],[602,153],[601,153],[600,153],[599,152],[597,152],[595,151],[594,150],[591,149],[588,148],[586,148],[585,147],[583,147],[580,146],[578,145],[577,145],[574,144],[572,143],[571,143],[569,142],[568,142],[566,141],[565,141],[563,141],[562,141],[561,140],[560,139],[559,139],[558,138],[557,138],[555,138],[554,137],[553,137],[551,136],[550,136],[548,135],[547,135],[546,135],[544,134],[543,134],[542,134],[541,133],[540,132],[538,132],[537,132],[536,131],[535,131],[534,130],[533,129],[532,129],[531,129],[530,128],[529,128],[528,127],[527,127],[526,127],[525,126],[524,125],[523,125],[522,124],[521,124],[520,124],[519,123],[518,122],[513,120],[512,120],[511,119],[510,118],[509,118],[508,118],[507,118],[506,117],[505,117],[504,117],[504,116],[503,116],[502,115],[501,115],[500,115],[499,115],[499,114],[498,114],[497,114],[498,114],[501,116],[504,118],[507,119],[510,120],[513,121],[515,121],[517,122],[519,123],[522,124],[524,124],[526,125],[528,126],[531,127],[532,127],[534,128],[536,129],[537,129],[539,130],[540,131],[542,131],[543,132],[545,133],[546,133],[547,133],[548,134],[550,134],[551,135],[552,135],[553,136],[554,136],[556,137],[557,137],[559,138],[560,138],[561,139],[563,139],[564,140],[565,140],[566,141],[568,141],[568,142],[570,142],[571,143],[572,143],[573,144],[574,144],[575,144],[576,145],[577,146],[578,147],[580,147],[581,148],[582,148],[584,148],[584,149],[585,150],[586,150],[587,150],[588,150],[589,151],[590,151],[591,151],[592,151],[592,152],[593,152],[594,152],[595,152],[595,153],[596,153],[597,154],[599,154],[600,155],[602,155],[603,156],[604,156],[605,157],[603,157],[601,158],[600,158],[599,158],[597,158],[596,159],[594,159],[593,160],[592,161],[590,161],[587,162],[586,162],[583,163],[580,164],[577,165],[575,165],[573,166],[570,167],[567,168],[564,169],[562,169],[560,170],[558,171],[556,172],[553,172],[551,173],[548,173],[546,175],[544,175],[542,176],[540,177],[537,178],[535,179],[533,179],[530,181],[527,182],[524,183],[522,183],[520,185],[518,185],[517,186],[514,186],[512,187],[511,187],[510,188],[509,188],[508,189],[506,189],[506,190],[504,190],[502,191],[501,192],[500,192],[499,193],[498,193],[497,193],[496,194],[496,195],[495,195]))},{name:"reflection",nbr:1,data:new Array(new Array([289,356],[289,355],[289,354],[289,353],[289,352],[289,351],[289,349],[289,348],[289,347],[290,345],[289,340],[289,338],[289,333],[289,327],[289,324],[289,321],[289,318],[289,315],[289,314],[290,310],[290,307],[290,304],[290,298],[290,293],[290,288],[290,279],[290,273],[290,269],[292,259],[292,254],[292,250],[292,247],[292,238],[292,235],[292,230],[292,226],[292,221],[292,210],[292,205],[292,200],[292,195],[291,190],[292,189],[291,185],[291,184],[292,184],[292,182],[292,180],[292,179],[292,178],[292,174],[292,173],[293,172],[292,170],[293,164],[293,163],[293,162],[293,161],[294,161],[294,162],[294,164],[296,168],[296,171],[298,172],[299,175],[305,183],[307,184],[311,189],[313,191],[315,192],[315,194],[316,194],[317,195],[317,196],[318,196],[318,197],[318,195],[317,191],[317,189],[315,187],[315,186],[314,183],[313,180],[312,178],[310,174],[309,172],[307,171],[307,169],[306,167],[306,166],[304,166],[304,165],[303,165],[302,164],[301,164],[299,163],[298,162],[297,161],[296,161],[295,161],[295,160]))},{name:"tangent",nbr:1,data:new Array(new Array([352,253],[352,252],[352,251],[352,250],[354,244],[355,239],[356,236],[356,233],[356,229],[356,226],[356,221],[357,218],[357,215],[357,212],[357,208],[357,204],[357,199],[357,194],[356,192],[356,188],[356,184],[355,170],[355,164],[355,159],[355,154],[355,152],[355,150],[354,146],[354,143],[354,139],[354,137],[354,132],[354,130],[351,130],[345,128],[332,126],[318,124],[305,123],[300,123],[294,123],[287,123],[281,123],[277,123],[272,123],[269,123],[259,123],[257,124],[255,124],[254,124],[255,124],[258,124],[263,122],[271,122],[284,122],[292,122],[300,122],[312,122],[335,122],[344,122],[349,122],[356,122],[364,122],[369,122],[377,122],[382,122],[388,122],[395,122],[401,122],[410,122],[418,122],[424,122],[433,122],[443,122],[450,122],[457,122],[463,122],[470,122],[474,122]))},{name:"tangent",nbr:1,data:new Array(new Array([771,207],[771,206],[775,200],[780,193],[788,182],[794,174],[800,167],[806,158],[810,146],[813,134],[816,123],[817,120],[821,114],[823,110],[825,107],[825,106],[826,106],[827,104],[829,102],[832,98],[833,97],[834,95],[835,93],[836,93],[837,91],[840,86],[840,85],[836,83],[808,73],[753,57],[732,48],[727,45],[727,45],[734,47],[762,59],[792,70],[828,86],[883,107],[935,127],[981,145],[992,150],[1011,153],[1031,161],[1046,166]))},{name:"tangent",nbr:1,data:new Array(new Array([492,232],[493,233],[493,235],[494,237],[495,239],[495,241],[496,245],[497,248],[498,250],[498,252],[498,253],[498,254],[499,256],[499,258],[499,260],[499,262],[499,268],[499,273],[499,276],[499,279],[499,282],[499,285],[499,288],[499,290],[499,293],[499,295],[499,297],[499,301],[499,304],[499,307],[498,311],[498,314],[498,317],[498,320],[498,323],[498,325],[497,328],[497,332],[497,335],[497,339],[497,343],[496,346],[496,349],[496,354],[494,362],[494,365],[494,368],[494,371],[493,376],[493,378],[493,382],[493,384],[493,385],[493,387],[493,388],[493,390],[494,392],[494,393],[495,394],[495,396],[495,397],[495,400],[495,401],[495,402],[495,403],[491,403],[486,403],[467,403],[452,404],[413,404],[379,402],[364,402],[333,400],[322,398],[302,394],[294,392],[279,390],[272,390],[262,390],[260,390],[256,390],[250,392],[234,394],[210,398],[181,402],[152,406],[135,409],[134,409],[144,411],[159,414],[183,416],[196,416],[229,418],[262,418],[280,418],[297,418],[329,418],[344,418],[373,418],[395,418],[407,418],[420,420],[433,420],[445,420],[456,420],[467,420],[479,420],[490,420],[501,420],[512,420],[521,420],[528,420],[533,420],[540,420],[546,420],[551,420],[558,420],[565,420],[572,418],[581,416],[590,416],[599,416],[609,416],[627,414],[636,414],[656,414],[678,413],[688,413],[699,413],[725,411],[738,411],[759,411],[772,411],[800,411],[814,411],[842,411],[856,411],[881,409],[890,409],[904,409],[910,409],[916,409],[918,409],[922,409],[923,409],[926,409],[927,409],[928,409],[928,410]))},{name:"triangle",nbr:1,data:new Array(new Array([66,236],[66,235],[84,214],[87,210],[94,201],[106,183],[114,175],[119,168],[126,162],[130,156],[135,148],[138,145],[144,137],[150,129],[155,123],[161,117],[166,112],[172,103],[176,94],[183,88],[189,80],[195,74],[203,69],[207,62],[214,55],[217,48],[218,46],[218,45],[219,45],[220,45],[221,45],[225,47],[227,50],[231,57],[235,63],[239,68],[247,80],[250,87],[253,92],[257,99],[262,111],[267,120],[272,128],[282,141],[287,148],[293,160],[296,165],[302,174],[306,181],[311,191],[314,197],[320,209],[323,215],[328,223],[329,227],[335,236],[339,241],[347,255],[352,262],[356,271],[358,274],[359,275],[359,276],[360,276],[358,276],[355,276],[348,276],[332,273],[321,272],[317,272],[313,272],[311,271],[309,270],[301,269],[286,264],[279,263],[265,262],[246,261],[236,261],[222,261],[214,260],[207,259],[197,258],[193,258],[185,256],[175,255],[169,255],[159,254],[155,254],[148,254],[145,254],[139,253],[128,253],[116,253],[113,253],[109,253],[108,253],[107,253],[105,253],[100,252],[97,251],[93,251],[90,249],[85,248],[83,247],[79,245],[77,245],[76,245],[74,245],[60,242],[60,241],[60,240]))},{name:"triangle",nbr:1,data:new Array(new Array([107,39],[107,45],[100,87],[97,105],[97,109],[96,114],[95,122],[95,131],[95,137],[95,143],[94,147],[94,155],[93,164],[93,172],[91,178],[91,183],[91,184],[91,185],[92,185],[115,185],[120,185],[126,185],[130,185],[134,185],[140,185],[147,185],[161,185],[165,185],[168,185],[173,185],[180,187],[188,187],[193,187],[201,188],[205,189],[208,189],[213,191],[222,193],[225,193],[227,193],[233,193],[236,193],[241,193],[243,193],[248,193],[249,193],[250,193],[249,193],[248,192],[243,188],[240,186],[236,183],[229,176],[222,170],[210,158],[207,156],[206,156],[205,155],[202,152],[194,149],[181,139],[141,108],[135,98],[132,94],[131,92],[129,90],[127,88],[121,81],[119,78],[116,72],[115,69],[110,62],[109,61],[108,58],[106,57],[106,56],[106,55],[105,54],[104,54],[104,53],[104,52]))},{name:"triangle",nbr:1,data:new Array(new Array([335,111],[347,96],[357,86],[360,82],[362,79],[365,75],[368,72],[370,69],[371,67],[373,64],[375,61],[378,58],[378,57],[379,55],[380,53],[381,52],[383,51],[384,51],[385,51],[386,52],[388,53],[391,55],[394,58],[397,60],[400,64],[402,66],[405,70],[407,74],[411,79],[414,85],[416,89],[418,94],[419,98],[422,104],[423,109],[426,114],[428,121],[429,125],[431,131],[432,135],[433,138],[435,143],[436,147],[438,151],[439,156],[442,160],[442,166],[443,170],[444,174],[445,177],[446,180],[447,182],[448,184],[448,185],[449,187],[450,188],[450,190],[451,192],[452,193],[453,194],[452,194],[449,195],[447,194],[444,194],[442,194],[438,194],[432,193],[425,192],[419,192],[415,191],[408,191],[382,189],[373,189],[367,189],[363,188],[358,188],[355,188],[350,188],[347,188],[344,188],[341,188],[337,188],[335,188],[332,187],[328,187],[326,187],[322,187],[317,186],[315,186],[309,185],[304,185],[300,184],[296,183],[294,183],[294,182],[293,180],[294,179],[295,175],[297,172],[299,169],[302,164],[304,161],[306,158],[309,154],[310,152],[312,150],[313,150],[314,148],[316,146],[317,144],[319,143],[320,141],[322,139],[323,137],[325,135],[327,134],[328,132],[330,130],[331,129],[332,128],[332,126],[333,125],[335,123],[336,122],[338,120],[339,119],[341,118],[342,117],[343,114],[344,113],[345,113],[346,112],[346,110],[347,109],[348,108],[349,107],[350,106],[350,105],[351,104],[352,104],[352,103],[354,102],[355,101],[355,100],[355,99],[356,98],[357,98],[358,97],[359,96],[360,96]))},{name:"triangle",nbr:1,data:new Array(new Array([134,204],[135,204],[137,202],[138,201],[147,194],[151,190],[154,187],[160,182],[165,178],[169,174],[172,170],[177,165],[180,161],[185,156],[188,151],[190,147],[193,142],[196,139],[200,133],[202,131],[206,125],[209,121],[212,118],[215,114],[217,111],[219,108],[222,105],[224,102],[226,100],[229,97],[231,95],[233,92],[235,91],[238,87],[239,85],[241,82],[242,81],[244,78],[246,75],[248,74],[248,72],[250,71],[250,70],[251,69],[252,68],[252,67],[253,67],[254,67],[255,68],[256,70],[256,71],[258,73],[260,75],[261,77],[263,79],[264,81],[265,83],[267,85],[268,88],[271,90],[273,94],[275,97],[278,101],[280,105],[284,110],[287,116],[292,123],[296,130],[299,136],[304,144],[309,150],[315,161],[318,167],[324,179],[328,187],[333,198],[338,207],[342,220],[348,234],[354,248],[360,262],[365,276],[371,291],[377,308],[383,323],[390,343],[395,358],[400,371],[407,389],[411,400],[416,415],[420,425],[424,436],[427,447],[430,455],[433,463],[434,469],[436,476],[438,481],[440,487],[441,492],[442,495],[443,498],[443,500],[444,501],[444,502],[444,501],[444,500],[442,499],[441,497],[440,496],[438,494],[437,493],[434,491],[433,489],[430,487],[428,484],[425,483],[421,479],[417,475],[413,472],[409,469],[405,464],[401,461],[397,457],[391,452],[387,448],[380,442],[375,437],[370,432],[365,426],[357,419],[351,414],[342,404],[334,397],[326,390],[314,380],[306,373],[297,365],[290,359],[283,353],[276,347],[269,341],[261,334],[254,328],[248,323],[241,317],[235,312],[229,307],[223,301],[217,297],[212,292],[207,286],[203,283],[198,278],[192,273],[187,269],[184,264],[179,260],[175,256],[170,250],[166,246],[163,242],[159,238],[156,235],[153,231],[151,228],[147,225],[145,222],[142,218],[140,215],[137,213],[135,210],[134,208],[132,207],[131,205],[129,203],[128,201],[126,200],[125,198],[124,197],[124,196],[123,196]))},{name:"triangle",nbr:1,data:new Array(new Array([351,239],[352,239],[353,239],[354,239],[357,241],[367,247],[371,250],[377,253],[383,255],[388,258],[395,261],[398,263],[401,265],[405,267],[409,269],[414,270],[418,272],[422,273],[425,275],[429,278],[433,280],[437,283],[440,285],[444,287],[448,290],[454,292],[460,295],[465,297],[468,299],[473,301],[478,303],[482,305],[487,308],[491,309],[497,311],[500,313],[504,314],[508,316],[511,317],[515,319],[520,320],[525,322],[531,325],[536,326],[542,328],[548,330],[554,332],[559,334],[564,335],[568,337],[573,338],[578,339],[582,340],[587,340],[591,340],[594,340],[603,340],[604,340],[605,340],[611,339],[622,335],[635,330],[649,326],[664,322],[679,319],[694,316],[709,313],[726,310],[740,308],[753,305],[768,303],[781,301],[794,298],[809,297],[821,295],[833,294],[845,292],[855,291],[867,290],[879,289],[891,288],[905,286],[917,286],[930,285],[943,283],[955,283],[967,281],[976,281],[986,280],[1027,278],[1035,278],[1043,277],[1052,276],[1058,276],[1066,276],[1072,275],[1080,274],[1090,274],[1099,274],[1107,273],[1117,273],[1125,273],[1134,273],[1140,272],[1145,271],[1150,271],[1157,269],[1160,269],[1163,268],[1167,267],[1169,266],[1167,266],[1155,267],[1140,267],[1121,267],[1105,268],[1087,269],[1065,270],[1038,270],[1014,270],[995,270],[974,271],[956,272],[936,272],[913,272],[895,272],[875,272],[856,272],[833,272],[810,273],[788,273],[769,273],[752,273],[734,273],[719,272],[703,272],[689,272],[675,272],[664,272],[652,272],[638,271],[624,271],[611,270],[599,269],[583,268],[570,267],[558,266],[545,265],[535,265],[527,264],[517,264],[507,262],[498,262],[489,261],[480,261],[472,260],[466,259],[459,258],[449,257],[440,255],[432,252],[425,251],[419,249],[410,248],[404,247],[397,247],[388,247],[382,247],[377,247],[375,247],[370,247],[366,247],[364,247],[363,247]))},{name:"triangle",nbr:1,data:new Array(new Array([333,179],[334,179],[335,179],[336,179],[342,176],[345,175],[349,173],[353,171],[358,169],[364,165],[374,162],[384,157],[393,153],[400,150],[413,145],[430,136],[444,129],[462,121],[480,113],[498,105],[518,95],[536,86],[554,78],[575,67],[597,57],[611,50],[620,45],[626,42],[632,39],[633,38],[635,37],[636,37],[641,41],[644,47],[648,50],[655,58],[662,68],[671,80],[685,100],[701,124],[717,147],[729,166],[746,192],[768,226],[787,256],[806,285],[821,312],[836,336],[846,358],[853,371],[860,386],[863,395],[865,400],[866,402],[867,404],[868,404],[868,405],[867,405],[862,404],[855,402],[848,400],[839,397],[829,393],[813,389],[797,384],[781,379],[759,372],[741,366],[721,360],[696,352],[675,345],[647,336],[626,329],[605,322],[581,315],[563,310],[546,306],[528,301],[510,297],[498,293],[480,288],[467,284],[451,278],[438,274],[423,269],[410,264],[397,261],[387,258],[374,253],[364,250],[356,247],[347,244],[340,242],[333,240],[329,238],[325,237],[322,236],[318,235],[310,232],[304,230],[297,228],[292,226],[289,225],[285,224],[281,223],[278,223],[276,222],[274,221],[273,221],[271,221],[269,220],[267,219],[264,219],[263,217],[262,217],[261,217],[260,217],[259,216],[257,216],[256,216],[255,216],[256,215],[264,211],[272,208],[280,205],[287,203],[294,200],[301,197],[306,195],[314,191],[322,189],[328,185],[334,183],[339,180],[344,179],[348,177],[352,174],[355,173],[358,172],[362,170],[366,167],[369,166],[374,163],[377,161],[381,159],[384,157],[386,156],[387,155]))},{name:"triangle",nbr:1,data:new Array(new Array([184,219],[184,220],[185,220],[187,221],[194,225],[199,226],[202,226],[207,228],[211,229],[223,233],[229,235],[232,236],[235,237],[238,239],[241,240],[246,242],[249,242],[253,244],[256,245],[259,246],[262,247],[266,249],[268,250],[273,251],[276,253],[281,254],[286,256],[290,258],[294,259],[298,260],[302,262],[307,264],[312,266],[316,267],[323,271],[328,274],[334,277],[340,280],[349,283],[355,286],[364,290],[372,293],[380,296],[387,299],[393,302],[398,304],[403,306],[407,308],[414,310],[419,313],[426,316],[434,319],[440,321],[446,323],[453,327],[462,331],[469,335],[477,339],[487,343],[497,346],[506,350],[513,353],[519,357],[528,363],[540,369],[552,375],[564,381],[575,386],[587,393],[598,398],[608,403],[615,407],[620,410],[626,412],[632,415],[637,417],[642,420],[646,422],[651,424],[656,426],[660,427],[669,429],[671,430],[672,430],[673,430],[674,430],[676,431],[679,431],[683,433],[683,432],[676,426],[668,419],[658,411],[646,402],[633,393],[619,385],[604,376],[588,368],[572,362],[560,355],[550,349],[539,342],[528,335],[518,330],[509,324],[502,319],[495,313],[488,307],[479,300],[472,293],[465,286],[459,280],[453,275],[448,269],[444,264],[439,259],[434,255],[430,250],[425,245],[419,239],[413,233],[406,226],[401,221],[398,218],[396,216],[393,213],[392,211],[390,210],[389,208],[386,205],[385,202],[384,202],[383,202],[364,204],[344,207],[318,212],[290,216],[267,221],[251,223],[239,225],[228,228],[219,230],[211,232],[206,232],[204,232],[203,232],[201,233],[198,234],[196,234],[195,234]))}]};
JXG.extend(JXG,{Draw:{areEqual:function(e,t){if(JXG.isArray(e)){if(JXG.isArray(t))return JXG.Draw.areEqualArrays(e,t);else return false}if(JXG.isArray(t))return false;if(JXG.isObject(e)){if(JXG.isObject(t))return JXG.Draw.areEqualObjects(e,t);else return false}if(JXG.isObject(t))return false;return e===t},areEqualArrays:function(e,t){if(e.length!=t.length)return false;for(var o=0;o<e.length;o++)if(!JXG.Draw.areEqual(e[o],t[o]))return false;return true},areEqualObjects:function(e,t){for(var o in e)if(e.hasOwnProperty(o))if(!JXG.Draw.areEqual(e[o],t[o]))return false;for(var r in t)if(t.hasOwnProperty(r))if(!JXG.Draw.areEqual(t[r],e[r]))return false;return true},dist:function(e,t){var o=[],r=[];if(e.coords!=null){o.push(e.coords.usrCoords[1]);o.push(e.coords.usrCoords[2])}else if(e.usrCoords!=null){o.push(e.usrCoords[1]);o.push(e.usrCoords[2])}else console.log("inconsistency in dist");if(t.coords!=null){r.push(t.coords.usrCoords[1]);r.push(t.coords.usrCoords[2])}else if(t.usrCoords!=null){r.push(t.usrCoords[1]);r.push(t.usrCoords[2])}else console.log("inconsistency in dist");return(o[0]-r[0])*(o[0]-r[0])+(o[1]-r[1])*(o[1]-r[1])},findHittedObjs:function(e,t,o,r,s,i,n,a){var l,d=o.options.precision.hasPoint,c,u=[],G=[];if(typeof a=="undefined")a=false;o.options.precision.hasPoint=r;for(var f in o.objects){if(o.objects.hasOwnProperty(f)){l=o.objects[f];if(l.visProp.priv&&l.visProp.priv===true)continue;if(typeof i!="undefined"&&GUI.collectionContains(i,l.type))continue;if(l.hasPoint&&(l.visProp.visible||a)&&GUI.collectionContains(s,l.elementClass)){if(r===0||l.hasPoint(e,t)){u.push(l);if(typeof n!="undefined"&&n!=0&&n==u.length)break}}}}o.options.precision.hasPoint=d;for(c=0;c<u.length;c++){if(u[c].id.search("Label")!=-1)u[c]=GUI.board.objects[u[c].id.replace(/Label.*/,"")];if(JXG.exists(u[c])&&GUI.collectionContains(s,u[c].elementClass)&&!GUI.collectionContains(i,u[c].type))G.push(u[c])}u=JXG.uniqueArray(G);return u},findHittedObjsBySegment:function(e,t,o,r,s,i,n,a){var l,d,c,u=[];if(typeof a=="undefined")l=Infinity;else l=a;if(t>o){d=-1}else d=1;if(t>=e.length)t=e.length-1;if(o>=e.length)o=e.length-1;c=t;do{u=u.concat(JXG.Draw.findHittedObjs(e[c].scrCoords[1],e[c].scrCoords[2],r,s,i,n));c+=d}while(u.length<l&&d*c<d*o);return JXG.uniqueArray(u)},countContainedPoints:function(e,t,o,r){var s=0,i=r.options.precision.hasPoint;r.options.precision.hasPoint=o;if(t.hasPoint){for(var n=0;n<e.length;n++)if(t.hasPoint(e[n].scrCoords[1],e[n].scrCoords[2]))s++}r.options.precision.hasPoint=i;return s},findPointNextTo:function(e,t,o){var r,s,i,n,a=Infinity,l=null;if(JXG.exists(e.coords))s=e.coords;else s=e;for(r=0;r<t.length;r++){if(t[r].coords!=null)i=t[r].coords;else i=t[r];n=(s.scrCoords[1]-i.scrCoords[1])*(s.scrCoords[1]-i.scrCoords[1])+(s.scrCoords[2]-i.scrCoords[2])*(s.scrCoords[2]-i.scrCoords[2]);if(n<a&&(n<o||o===0)){a=n;l=t[r]}}return l},shortStraw:function(e,t,o){var r,s,i=e.slice(0),n=[],a=[],l=[],d=[],c=3,u=.95,G=1,f=false;if(typeof o!="undefined")f=o===true;var I=function(e){var t=e.length,o,r,s=Number.POSITIVE_INFINITY,i=[s,s,-s,-s],n,a,l;for(r=0;r<t;r++){e[r].catchIdx=r;o=e[r].scrCoords;if(o[1]<i[0]){i[0]=o[1]}if(o[1]>i[2]){i[2]=o[1]}if(o[2]<i[1]){i[1]=o[2]}if(o[2]>i[3]){i[3]=o[2]}}n=i[2]-i[0];a=i[3]-i[1];l=Math.sqrt(n*n+a*a);return l/40};var p=function(e,t,o){var r=0,s,i,a,l,d;if(f){for(s=0;s<e.length;s++){o.create("point",e[s].usrCoords,{fixed:true,withLabel:false,size:1,color:"blue"})}}n.push(e[0]);for(s=1;s<e.length;s++){i=e[s-1].distance(JXG.COORDS_BY_SCREEN,e[s]);if(r+i>=t){a=e[s-1].scrCoords[1]+(t-r)*(e[s].scrCoords[1]-e[s-1].scrCoords[1])/i;l=e[s-1].scrCoords[2]+(t-r)*(e[s].scrCoords[2]-e[s-1].scrCoords[2])/i;d=new JXG.Coords(JXG.COORDS_BY_SCREEN,[a,l],o);d.catchIdx=e[s].catchIdx;n.push(d);e.splice(s,0,d);r=0}else{r+=i}}n.push(e[e.length-1]);if(f){for(s=0;s<n.length;s++){o.create("point",n[s].usrCoords,{fixed:true,withLabel:false,size:1,color:"red"})}}};var g=function(e,t){var o=e.length,r,s,i,n;a.push(0);for(r=c;r<o-c;r++){d[r]=e[r-c].distance(JXG.COORDS_BY_SCREEN,e[r+c])}s=JXG.Math.Statistics.median(d)*u;for(r=c;r<o-c;r++){if(d[r]<s){i=Number.POSITIVE_INFINITY;n=r;while(r<o-c&&d[r]<s){if(d[r]<i){i=d[r];n=r}r++}a.push(n)}}a.push(o-1);U(e,t)};var U=function(e,t){var o,r,s,i,n,l=0,d=e.length,c,u;do{o=true;for(r=1;r<a.length;r++){s=a[r-1];i=a[r];if(!b(e,s,i,G)){n=h(s,i);if(n>s&&n<i){a.splice(r,0,n);o=false;if(f&&false){t.create("point",e[a[r]].usrCoords,{fixed:true,withLabel:false,size:4,color:"blue"})}}l++;if(l>=d){return}}}}while(!o);for(r=1;r<a.length-1;r++){s=a[r-1];i=a[r+1];if(b(e,s,i,G)){a.splice(r,1);r--}}c=a.length;if(c>2){u=e[a[0]].distance(JXG.COORDS_BY_SCREEN,e[a[c-1]]);if(u<30){a.pop()}}};var b=function(e,t,o,r){var s=e[t].distance(JXG.COORDS_BY_SCREEN,e[o]),i,n=0;for(i=t;i<o-1;i++){n+=e[i].distance(JXG.COORDS_BY_SCREEN,e[i+1])}return s>n*r};var h=function(e,t){var o=Math.floor((t-e)/4),r=Number.POSITIVE_INFINITY,s,i;for(i=e+o;i<t-o;i++){if(d[i]<r){r=d[i];s=i}}return s};r=I(i);p(i,r,t);g(n,t);for(s=0;s<a.length;s++){l.push(n[a[s]])}if(f){for(s=0;s<l.length;s++){t.create("point",l[s].usrCoords,{fixed:true,name:s,withLabel:true,size:6,label:{offsets:[-10,-10]},strokeColor:"blue",fillColor:"none"})}}return l},findCorners:function(e,t,o){return JXG.Draw.shortStraw(e,t,o)},bestRightAngleCorner:function(e,t,o){var r=Infinity,s=e.length,i,n,a,l=Math.PI;if(s<4){return 1}n=1;for(a=1;a<s-1;a++){i=JXG.Math.Geometry.rad(t.usrCoords.slice(1),e[a].usrCoords.slice(1),o.usrCoords.slice(1));i+=2*l-l*.5;i=Math.min(Math.abs(i%l),Math.abs(i%l-l));if(i<r){r=i;n=a}}return n},removeLine:function(e,t){for(var o in e.ancestors)if(e.ancestors.hasOwnProperty(o))t.removeObject(e.ancestors[o]);t.removeObject(e)},visualize:function(e,t){var o,r=t.length;if(t[0]!=t[r-1])e.create("line",[[t[r-1].usrCoords[1],t[r-1].usrCoords[2]],[t[0].usrCoords[1],t[0].usrCoords[2]]],{straightFirst:false,straightLast:false});for(o=0;o<r-1;o++)e.create("line",[[t[o].usrCoords[1],t[o].usrCoords[2]],[t[o+1].usrCoords[1],t[o+1].usrCoords[2]]],{straightFirst:false,straightLast:false})},pointAlreadyExists:function(e,t){var o,r,s;for(o in e.objects){if(e.objects.hasOwnProperty(o)){s=true;if(e.objects[o].elementClass==JXG.OBJECT_CLASS_POINT&&e.objects[o]!=t){for(r in e.objects[o].ancestors)if(e.objects[o].ancestors.hasOwnProperty(r)){if(!GUI.collectionContains(t.ancestors,e.objects[o].ancestors[r])){s=false;break}}if(s){for(r in t.ancestors)if(t.ancestors.hasOwnProperty(r)){if(!GUI.collectionContains(e.objects[o].ancestors,t.ancestors[r])){s=false;break}}}if(s&&e.objects[o].visProp.priv){s=false}if(s){s=Math.abs(t.coords.usrCoords[1]-e.objects[o].coords.usrCoords[1])+Math.abs(t.coords.usrCoords[2]-e.objects[o].coords.usrCoords[2])<.1}if(s){return e.objects[o]}}}}return null},sortXY:function(e){var t,o,r;for(o=0;o<e.length;o++){for(r=o+1;r<e.length;r++){if(e[r].usrCoords[1]<e[o].usrCoords[1]||e[r].usrCoords[1]==e[o].usrCoords[1]&&e[r].usrCoords[2]<e[o].usrCoords[2]){t=e[r];e[r]=e[o];e[o]=t}}}},convexHull:function(e,t,o){var r=function(e,t,o){return(t.usrCoords[1]-e.usrCoords[1])*(o.usrCoords[2]-e.usrCoords[2])-(t.usrCoords[2]-e.usrCoords[2])*(o.usrCoords[1]-e.usrCoords[1])};var s,i,n=0,a=[];JXG.Draw.sortXY(t);for(s=0;s<t.length;s++){while(n>=2&&r(a[n-2],a[n-1],t[s])<=0)n--;a[n++]=t[s]}for(s=t.length-2,i=n+1;s>=0;s--){while(n>=i&&r(a[n-2],a[n-1],t[s])<=0)n--;a[n++]=t[s]}a.length=n;if(typeof o!="undefined"&&o)JXG.Draw.visualize(e,a);return a},buildTupels:function(e,t,o){var r,s,i,n,a=[],l=[];if(t===0||e.length<t)return l;if(t==1){for(s=0;s<e.length;s++)l.push([e[s]]);return l}if(typeof o=="undefined")o=true;for(s=0;s<e.length;s++){n=[];if(o)r=s+1;else r=0;for(i=r;i<e.length;i++){if(i==s)continue;n.push(e[i])}a=JXG.Draw.buildTupels(n,t-1,o);for(i=0;i<a.length;i++){JXG.Draw.sortXY(a[i].push(e[s]));l.push(a[i]);if(l.length>2)return JXG.uniqueArray(l)}}return JXG.uniqueArray(l)},findMaxAreaPoints:function(e,t,o){var r,s,i,n,a=-1,l=-Infinity,d=t.length;var c=[],u=[],G=[],f;for(r=0;r<d;r++)if(typeof t[r].elementClass!="undefined")c.push(t[r]);else u.push(t[r]);while(c.length>o)c.pop();if(c.length==o)return{req:c,status:true};if(u.length<o-c.length){console.log("too few optional points!");console.log("k: "+o);console.log("n: "+d);console.log("optional: "+u.length);console.log("required: "+c.length);return{req:c,status:false}}if(u.length>o-c.length){console.log("too much optional points!");f=JXG.Draw.buildTupels(u,o-c.length,true);for(r=0;r<f.length;r++){G=[];for(s=0;s<f[r].length;s++)G[s]=e.create("point",[f[r][s].usrCoords[1],f[r][s].usrCoords[2]],{visible:false});G.push(G[0]);n=e.create("polygon",G,{visible:false});e.removeObject(n);for(s=0;s<G.length;s++)e.removeObject(G[s]);i=n.Area();if(i>=l){l=i;a=r}}if(a!=-1)for(r=0;r<f[a].length;r++)c.push(f[a][r]);else{console.log("Tupels: "+f.length);console.log("k: "+o);console.log("n: "+d);console.log("optional: "+u.length);console.log("required: "+c.length);console.log("max area error");return{req:[],status:false}}}else{for(r=0;r<u.length;r++)c.push(u[r])}return{req:c,status:true}},fitPoints:function(e,t){var o,r,s=[];if(t.length===0)return e;for(o=0;o<t.length;o++){r=JXG.Draw.findPointNextTo(t[o],e,0);if(r==null){console.log("inconsistency in fitPoints: data.len is smaller than ref.len");break}else{JXG.removeElementFromArray(e,r);s.push(t[o])}}for(o=0;o<e.length;o++)s.push(e[o]);return s},glideInterCombinedMigMove:function(e,t,o,r,s,i,n){var a,l,d,c,u,G,f={},I=[];if(JXG.Options.device=="tablet"||JXG.Options.device=="msie"){l=GUI.board.touches[0].targets[0].Xstart[0];d=GUI.board.touches[0].targets[0].Ystart[0];c=JXG.deepCopy(GUI.board.touches[0].obj.coords.usrCoords)}else{l=GUI.board.mouse.targets[0].Xstart[0];d=GUI.board.mouse.targets[0].Ystart[0];c=JXG.deepCopy(GUI.board.mouse.obj.coords.usrCoords)}GUI.board.mouse=GUI.board.touches=null;u={type:JXG.GENTYPE_MOVEMENT,src_ids:[o],dest_sub_ids:[],dest_id:0,args:{obj_type:JXG.OBJECT_TYPE_POINT,xstart:l,ystart:d,coords:[{usrCoords:c}]}};I.push(u);if(s){if(GUI.board.objects[r].type!=JXG.OBJECT_TYPE_GLIDER){f.type=JXG.GENTYPE_GLIDER;f.src_ids=[r];f.dest_sub_ids=[];f.args={undoIsEmpty:true,usrCoords:[1,e,t]};a=f.dest_id=JXG.SketchReader.id();I.push(f)}else a=r}else{f.type=JXG.GENTYPE_INTERSECTION;f.src_ids=[i[n[0][1][1]].id,i[n[0][1][2]].id];f.dest_id=n[0][1][0].id;f.args={choice:n[0][1][3],fillColor:"#ffffff",undoIsEmpty:true};a=f.dest_id;I.push(f);GUI.board.removeObject(GUI.board.objects[a])}G={type:JXG.GENTYPE_MIGRATE,args:{migrateToGlider:true,usrCoords:JXG.deepCopy(GUI.ctx_curr_coords.usrCoords),orig_name:GUI.board.objects[o].name,fillColor:JXG.Options.point.fillColor,strokeColor:JXG.Options.point.strokeColor},src_ids:u.src_ids,dest_sub_ids:[],dest_id:a};I.push(G);JXG.Draw.recordStepMeta({type:JXG.GENTYPE_COMBINED,src_ids:G.src_ids,dest_sub_ids:[],dest_id:G.dest_id,args:{steps:I}},true);return a},gliderDialog:function(e,t,o,r,s,i){GUI.createSelectDialogCtx(o,function(o){if(r){if(i){JXG.Draw.glideInterCombinedMigMove(e,t,s,o,true,[],[])}else{var n=JXG.Draw.drawGlider(o,e,t);JXG.Draw.recordStepMeta({type:JXG.GENTYPE_MIGRATE,src_ids:[s],dest_sub_ids:[],dest_id:n},true)}GUI.removeActionEvent(true)}else{JXG.Draw.drawGlider(o,e,t)}GUI.showPanel(false,0);GUI.selection=[];GUI.delight();GUI.removeToolEvents(true)},GUI.ctxPosProps);GUI.selection=[]},touchIssDialogHandler:function(e){var t,o;for(t=0;t<GUI.intersect_obj.length;t++){o="sel_"+GUI.intersect_obj[t][0]+GUI.intersect_obj[t][1]+ +GUI.intersect_obj[t][2];if(GUI.isTouchInElementsBounds(e,o)){if(t!=GUI.int_click){if(GUI.int_click!=-1){$("#sel_"+GUI.intersect_obj[GUI.int_click][0]+GUI.intersect_obj[GUI.int_click][1]+GUI.intersect_obj[GUI.int_click][2]).removeClass("proplight_active");GUI.iss_delight()}GUI.int_click=t;$("#sel_"+GUI.intersect_obj[t][0]+GUI.intersect_obj[t][1]+GUI.intersect_obj[t][2]).addClass("proplight_active");GUI.iss_highlight(GUI.intersect_obj[t][0],GUI.intersect_obj[t][1],GUI.intersect_obj[t][2])}break}else{$(o).removeClass("proplight_active")}}if(e&&e.preventDefault)e.preventDefault();else window.event.returnValue=false},intersectionDialog:function(e,t,o,r,s,i){var n,a,l,d,c;if(s){GUI.disableConstDragMode();c=GUI.Lang.std.ablateOnIntersection+"<br><br>"}else c=GUI.Lang.std.selectIntersection+"<br><br>";GUI.intersect_obj=[];for(n=0;n<r.length;n++){if(r[n][1][0].coords.usrCoords[0]!==0){a=o[r[n][1][1]];l=o[r[n][1][2]];d="sel_"+a.id+l.id+r[n][1][3];c+='<a href="#" tabindex="'+GUI.intersect_obj.length+'" id="'+d+'" class="block proplight">';c+=GUI.resolveObjectType(a);if(a.visProp.withlabel&&a.label.visProp.visible)c+=" "+a.name;c+=" &#8745; "+GUI.resolveObjectType(l);if(l.visProp.withlabel&&l.label.visProp.visible)c+=" "+l.name;c+="</a>";GUI.intersect_obj.push([a.id,l.id,r[n][1][3]])}GUI.board.removeObject(r[n][1][0])}GUI.showPanelHTML(c,GUI.ctxPosProps,false);GUI.int_click=-1;if(JXG.Options.device=="tablet"||JXG.Options.device=="msie"&&GUI.isRealMSTouchDevice()){$("#ctxPanel").bind(GUI.down_event,JXG.Draw.touchIssDialogHandler);$("#ctxPanel").bind(GUI.move_event,JXG.Draw.touchIssDialogHandler);$("#ctxPanel").bind(GUI.up_event,function(){GUI.contextUnbindHandlers();if(s)JXG.Draw.glideInterCombinedMigMove(e,t,i,0,false,o,r);else JXG.Draw.drawIntersection(GUI.intersect_obj[GUI.int_click][0],GUI.intersect_obj[GUI.int_click][1],GUI.intersect_obj[GUI.int_click][2]);GUI.iss_delight();GUI.removeActionEvent(true)})}else{for(n=0;n<GUI.intersect_obj.length;n++){d=$("#sel_"+GUI.intersect_obj[n][0]+GUI.intersect_obj[n][1]+GUI.intersect_obj[n][2]);d.bind(GUI.out_event,function(e){$("#"+e.currentTarget.id).removeClass("proplight_active");GUI.iss_delight()});d.bind(GUI.over_event,function(e){var t=$("#"+e.currentTarget.id).attr("tabindex");$("#"+e.currentTarget.id).addClass("proplight_active");GUI.iss_highlight(GUI.intersect_obj[t][0],GUI.intersect_obj[t][1],GUI.intersect_obj[t][2])});d.bind(GUI.click_event,function(n){var a=$("#"+n.currentTarget.id).attr("tabindex");if(s)JXG.Draw.glideInterCombinedMigMove(e,t,i,0,false,o,r);else JXG.Draw.drawIntersection(GUI.intersect_obj[a][0],GUI.intersect_obj[a][1],GUI.intersect_obj[a][2]);$("#"+n.currentTarget.id).removeClass("proplight_active");GUI.removeActionEvent(true);GUI.iss_delight()})}}},drawPoint:function(e,t,o,r,s){var i,n,a,l,d=[],c=[],u=[JXG.OBJECT_TYPE_TEXT,JXG.OBJECT_TYPE_POLYGON],G={src_ids:[],dest_sub_ids:[],dest_id:0,args:{}};if(o){l=o;for(i=0;i<l.length;i++)if(l[i].elementClass==JXG.OBJECT_CLASS_POINT)d.push(l[i]);if(d.length>0)l=d;if(l.length==1&&l[0].elementClass==JXG.OBJECT_CLASS_POINT)return l[0].id}else{if(typeof t[0]=="undefined"||typeof t[0].scrCoords=="undefined")return G.dest_id;l=JXG.Draw.findHittedObjs(t[0].scrCoords[1],t[0].scrCoords[2],e,JXG.Options.sensitive_area,[JXG.OBJECT_CLASS_LINE,JXG.OBJECT_CLASS_CIRCLE,JXG.OBJECT_CLASS_POINT,JXG.OBJECT_CLASS_CURVE,JXG.OBJECT_CLASS_AREA,JXG.OBJECT_CLASS_OTHER],u);for(i=0;i<l.length;i++){if(l[i].elementClass==JXG.OBJECT_CLASS_POINT){JXG.removeElementFromArray(l,l[i]);i--}}}if(l.length<=1){G.dest_id=JXG.SketchReader.id();G.args.usrCoords=JXG.deepCopy(t[0].usrCoords);if(l.length!==0){G.type=JXG.GENTYPE_GLIDER;G.src_ids=[l[0].id]}else G.type=JXG.GENTYPE_POINT;if(r)return G;else this.recordStepMeta(G,true)}else{var f,I,p,g,U=[],b=false,h=2*JXG.Options.sensitive_area/(e.unitX+e.unitY);if(JXG.Options.device=="tablet"||JXG.Options.device=="msie")h*=2;e.suspendUpdate();for(i=0;i<l.length;i++){for(n=i+1;n<l.length;n++){p=e.create("intersection",[l[i],l[n],0],{id:JXG.SketchReader.id(),fillColor:"#ffffff"});g=e.create("intersection",[l[i],l[n],1],{id:JXG.SketchReader.id(),fillColor:"#ffffff"});U.push([p,i,n,0]);if(p.coords.usrCoords[0]==g.coords.usrCoords[0]&&p.coords.usrCoords[1]==g.coords.usrCoords[1]&&p.coords.usrCoords[2]==g.coords.usrCoords[2])e.removeObject(g);else U.push([g,i,n,1])}}a=e.create("point",t[0].usrCoords);I=U[0][0].nameHTML;f=U[0][0].name;for(i=0;i<U.length;i++){if(a.Dist(U[i][0])<h&&JXG.Draw.pointAlreadyExists(e,U[i][0])==null){c.push([i,U[i]]);JXG.removeElementFromArray(U,U[i]);i--}}e.removeObject(a);for(i=0;i<U.length;i++)e.removeObject(U[i][0]);e.unsuspendUpdate();if(c.length===0||c.length>1){b=true}else{if(c[0][0]!==0){c[0][1][0].nameHTML=I;c[0][1][0].setAttribute({name:f});c[0][1][0].label.setText(f)}if(s){return JXG.Draw.glideInterCombinedMigMove(t[0].usrCoords[1],t[0].usrCoords[2],r,l[0].id,false,l,c)}else{G.type=JXG.GENTYPE_INTERSECTION;G.src_ids=[l[c[0][1][1]].id,l[c[0][1][2]].id];G.dest_id=c[0][1][0].id;G.args.choice=c[0][1][3];G.args.fillColor="#ffffff";this.recordStepMeta(G,false)}}if(GUI&&b){if(c.length>0)JXG.Draw.intersectionDialog(t[0].usrCoords[1],t[0].usrCoords[2],l,c,o,r);else JXG.Draw.gliderDialog(t[0].usrCoords[1],t[0].usrCoords[2],l,o,r,s);if(o)return-1}}return G.dest_id},drawGlider:function(e,t,o){var r={};r.type=JXG.GENTYPE_GLIDER;r.src_ids=[e];r.dest_sub_ids=[];r.dest_id=JXG.SketchReader.id();r.args={usrCoords:[1,t,o]};this.recordStepMeta(r,true);return r.dest_id},drawIntersection:function(e,t,o){var r={};r.type=JXG.GENTYPE_INTERSECTION;r.src_ids=[e,t];r.args={};r.args.choice=o;r.args.fillColor="#ffffff";r.dest_sub_ids=[];r.dest_id=JXG.SketchReader.id();this.recordStepMeta(r,true);return r.dest_id},drawMidPoint:function(e){if(e.length>=2){var t={type:JXG.GENTYPE_MID,args:{fillColor:"#ffffff"},src_ids:[e[0].id,e[e.length-1].id],dest_sub_ids:[],dest_id:JXG.SketchReader.id()};this.recordStepMeta(t,true);return t.dest_id}else return 0},drawReflection:function(e,t,o){var r,s,i,n=0,a=0,l,d,c,u,G={};u=JXG.Draw.findPointNextTo(t[0],o,0);c=JXG.Draw.findHittedObjsBySegment(t,t.length,t.length-t.length/3,e,JXG.Options.sensitive_area,[JXG.OBJECT_CLASS_LINE,JXG.OBJECT_CLASS_CIRCLE,JXG.OBJECT_CLASS_POINT,JXG.OBJECT_CLASS_CURVE,JXG.OBJECT_CLASS_AREA,JXG.OBJECT_CLASS_OTHER],[JXG.OBJECT_TYPE_TICKS,JXG.OBJECT_TYPE_TEXT]);for(r=0;r<c.length;r++){if(c[r].elementClass==JXG.OBJECT_CLASS_LINE){if((s=JXG.Draw.countContainedPoints(t,c[r],JXG.Options.sensitive_area,e))>n){if(c[r].hasPoint(u.coords.scrCoords[1],u.coords.scrCoords[2])){continue}n=s;l=r}}else if(c[r].elementClass==JXG.OBJECT_CLASS_POINT){if((i=JXG.Draw.countContainedPoints(t,c[r],JXG.Options.sensitive_area,e))>a){a=i;d=r}}}if(a===0){if(n===0){return}else r=l}else r=d;if(o.length===0||o.length==1&&c[r].elementClass==JXG.OBJECT_CLASS_POINT)return;G.args={};G.dest_sub_ids=[];G.src_ids=[u.id,c[r].id];G.dest_id=JXG.SketchReader.id();G.args.fillColor="#ffffff";if(c[r].elementClass==JXG.OBJECT_CLASS_LINE)G.type=JXG.GENTYPE_REFLECTION;else G.type=JXG.GENTYPE_MIRRORPOINT;this.recordStepMeta(G,true)},drawTangent:function(e,t){var o,r,s=JXG.Draw.findCorners(t,e),i,n,a,l,d,c,u;if(s.length<4){return}i=e.create("line",[[s[0].usrCoords[1],s[0].usrCoords[2]],[s[1].usrCoords[1],s[1].usrCoords[2]]]);n=e.create("line",[[s[s.length-2].usrCoords[1],s[s.length-2].usrCoords[2]],[s[s.length-1].usrCoords[1],s[s.length-1].usrCoords[2]]]);for(o in s){if(s.hasOwnProperty(o))e.removeObject(s[o])}a=e.create("intersection",[i,n,0]);l=a.coords.usrCoords[1];d=a.coords.usrCoords[2];JXG.Draw.removeLine(i,e);JXG.Draw.removeLine(n,e);e.removeObject(a);c=JXG.Draw.findHittedObjsBySegment(t,0,t.length,e,JXG.Options.sensitive_area,[JXG.OBJECT_CLASS_CIRCLE,JXG.OBJECT_CLASS_CURVE],[],1);var G={};G.type=JXG.GENTYPE_TANGENT;G.args={};G.src_ids=[];G.dest_sub_ids=[];if(c.length>0){G.src_ids=[c[0].id];u=JXG.Draw.findHittedObjsBySegment(t,0,t.length,e,JXG.Options.sensitive_area,[JXG.OBJECT_CLASS_POINT],[JXG.OBJECT_TYPE_POINT,JXG.OBJECT_TYPE_AXISPOINT,JXG.OBJECT_TYPE_CAS,JXG.OBJECT_TYPE_INTERSECTION]);if(u.length===0){a=e.create("point",[l,d]);a.setAttribute({fillColor:e.options.glider.fillColor});if(c[0].type==JXG.OBJECT_TYPE_CURVE)r=JXG.Math.Geometry.projectPointToCurve(a,c[0],e);else r=JXG.Math.Geometry.projectPointToCircle(a,c[0],e);e.removeObject(a);G.args.create_point=true;G.args.usrCoords=JXG.deepCopy(r.usrCoords);G.args.fillColor=e.options.glider.fillColor;var f=JXG.SketchReader.id();G.dest_sub_ids=[JXG.SketchReader.id(),JXG.SketchReader.id(),f]}else{G.args.create_point=false;var I,p=-1,g=Infinity;for(o=0;o<u.length;o++){if(c[0].type==JXG.OBJECT_TYPE_CURVE)r=JXG.Math.Geometry.projectPointToCurve(u[o],c[0],e);else r=JXG.Math.Geometry.projectPointToCircle(u[o],c[0],e);I=(r.usrCoords[1]-u[o].coords.usrCoords[1])*(r.usrCoords[1]-u[o].coords.usrCoords[1]);I+=(r.usrCoords[2]-u[o].coords.usrCoords[2])*(r.usrCoords[2]-u[o].coords.usrCoords[2]);if(I<g){p=o;g=I}}if(p>=0){G.src_ids=[u[p].id];G.dest_sub_ids=[JXG.SketchReader.id(),JXG.SketchReader.id()]}else return}G.dest_id=JXG.SketchReader.id();this.recordStepMeta(G,true)}},drawParallel:function(e,t){var o,r,s,i,n,a=[],l,d,c,u,G,f,I,p=0,g=0;var U={};U.args={};U.src_ids=[];U.dest_sub_ids=[];s=JXG.Draw.findHittedObjsBySegment(t,0,t.length/3,e,JXG.Options.sensitive_area,[JXG.OBJECT_CLASS_LINE,JXG.OBJECT_CLASS_CIRCLE,JXG.OBJECT_CLASS_POINT,JXG.OBJECT_CLASS_CURVE,JXG.OBJECT_CLASS_AREA,JXG.OBJECT_CLASS_OTHER],[]);i=JXG.Draw.findHittedObjsBySegment(t,t.length,t.length-t.length/3,e,JXG.Options.sensitive_area,[JXG.OBJECT_CLASS_LINE,JXG.OBJECT_CLASS_CIRCLE,JXG.OBJECT_CLASS_POINT,JXG.OBJECT_CLASS_CURVE,JXG.OBJECT_CLASS_AREA,JXG.OBJECT_CLASS_OTHER],[]);for(o=0;o<s.length;o++){if(s[o].elementClass==JXG.OBJECT_CLASS_LINE){if((u=JXG.Draw.countContainedPoints(t,s[o],JXG.Options.sensitive_area,e))>p){p=u;d=o}}}for(r=0;r<i.length;r++){if(i[r].elementClass==JXG.OBJECT_CLASS_LINE){if((u=JXG.Draw.countContainedPoints(t,i[r],JXG.Options.sensitive_area,e))>g){g=u;c=r}}}if(g>p){s=i;o=c;G=true}else if(p>0){o=d;G=false}else return;n=JXG.Draw.findHittedObjsBySegment(t,0,t.length,e,JXG.Options.sensitive_area,[JXG.OBJECT_CLASS_LINE,JXG.OBJECT_CLASS_CIRCLE,JXG.OBJECT_CLASS_POINT,JXG.OBJECT_CLASS_CURVE,JXG.OBJECT_CLASS_AREA,JXG.OBJECT_CLASS_OTHER],[]);for(r=0;r<n.length;r++)if(n[r].elementClass==JXG.OBJECT_CLASS_POINT)a.push(n[r]);if(a.length>0){if(G)I=a[0].id;else I=a[a.length-1].id;l=JXG.Math.Geometry.projectPointToLine(e.objects[I],s[o],e);if(Math.abs(l.usrCoords[1]-e.objects[I].coords.usrCoords[1])<JXG.Math.eps&&Math.abs(l.usrCoords[2]-e.objects[I].coords.usrCoords[2])<JXG.Math.eps)a=[]}U.type=JXG.GENTYPE_PARALLEL;if(a.length===0){if(G)f=t[0];else f=t[t.length-1];I=JXG.SketchReader.id();U.args.usrCoords=JXG.deepCopy(f.usrCoords);U.args.create_point=true;U.src_ids=[s[o].id];U.dest_sub_ids=[JXG.SketchReader.id(),I]}else{U.args.create_point=false;U.src_ids=[s[o].id,I];U.dest_sub_ids=[JXG.SketchReader.id()]}U.dest_id=JXG.SketchReader.id();this.recordStepMeta(U,true)},drawBisector:function(e,t,o){var r={};r.args={};r.args.create_point=false;if(o.length==3){r.type=JXG.GENTYPE_BISECTOR;r.src_ids=[o[0].id,o[2].id,o[1].id];r.dest_sub_ids=[JXG.SketchReader.id()];r.dest_id=JXG.SketchReader.id()}else{var s,i,n,a;var l,d,c,u,G,f=1e5;var I=JXG.Draw.findCorners(t,e);n=JXG.Draw.findHittedObjsBySegment(t,0,t.length/3,e,JXG.Options.sensitive_area,[JXG.OBJECT_CLASS_LINE],[JXG.OBJECT_TYPE_TEXT],1);a=JXG.Draw.findHittedObjsBySegment(t,t.length,t.length-t.length/3,e,JXG.Options.sensitive_area,[JXG.OBJECT_CLASS_LINE],[JXG.OBJECT_TYPE_TEXT],1);for(s=0;s<n.length;s++)if(n[s].elementClass==JXG.OBJECT_CLASS_LINE)break;for(i=0;i<a.length;i++)if(a[i].elementClass==JXG.OBJECT_CLASS_LINE)break;if(s<n.length&&i<a.length&&n[s]!=a[i]){if(I.length<4){return}r.type=JXG.GENTYPE_BISECTOR;r.args.create_point=true;r.args.fillColor=e.options.intersection.fillColor;c=e.create("intersection",[n[s],a[s]],{visible:false});u=I[2].usrCoords.slice(0);G=c.coords.usrCoords;u[0]=G[0];u[1]=f*(u[1]-G[1])+G[1];u[2]=f*(u[2]-G[2])+G[2];r.args.usrCoords=u.slice(0);l=this.pointAlreadyExists(e,c);e.removeObject(c);r.src_ids=[n[s].id,a[s].id];r.dest_sub_ids=[JXG.SketchReader.id(),JXG.SketchReader.id(),JXG.SketchReader.id()];if(l===null){r.args.create_intersection=true;r.dest_sub_ids[3]=JXG.SketchReader.id()}else{r.args.create_intersection=false;d=JXG.deepCopy(l.id);r.src_ids[2]=d}r.dest_id=JXG.SketchReader.id()}else return}this.recordStepMeta(r,true)},drawNormal:function(e,t,o){var r,s,i,n=0,a,l=[JXG.OBJECT_TYPE_POLYGON],d,c,u,G,f,I={};a=JXG.Draw.findHittedObjsBySegment(t,0,t.length,e,JXG.Options.sensitive_area,[JXG.OBJECT_CLASS_LINE,JXG.OBJECT_CLASS_CIRCLE,JXG.OBJECT_CLASS_POINT,JXG.OBJECT_CLASS_CURVE,JXG.OBJECT_CLASS_AREA,JXG.OBJECT_CLASS_OTHER],l);for(r=0;r<a.length;r++){if(a[r].elementClass==JXG.OBJECT_CLASS_LINE){if((i=JXG.Draw.countContainedPoints(t,a[r],JXG.Options.sensitive_area,e))>n){n=i;s=r}}}if(n===0)return;I.args={};I.dest_sub_ids=[];I.dest_id=0;I.type=JXG.GENTYPE_NORMAL;I.src_ids=[a[s].id];d=JXG.Draw.findCorners(t,e);if(d.length<3||t.length<5)return;u=null;for(r=0;r<o.length;r++){G=o[r].coords.scrCoords;if(!a[s].hasPoint(G[1],G[2])){u=o[r];break}}f=this.bestRightAngleCorner(d,t[0],t[t.length-1]);if(u===null){u=JXG.Draw.findPointNextTo(d[f],o,32*JXG.Options.sensitive_area)}if(u===null){I.args.create_point=true;I.args.usrCoords=JXG.deepCopy(d[f].usrCoords);c=JXG.SketchReader.id();I.dest_sub_ids=[JXG.SketchReader.id(),c]}else{I.args.create_point=false;if(u.coords.distance(JXG.COORDS_BY_SCREEN,t[0])<=30||u.coords.distance(JXG.COORDS_BY_SCREEN,t[t.length-1])<=30)I.type=JXG.GENTYPE_PERPSEGMENT;I.src_ids.push(u.id);I.dest_sub_ids=[JXG.SketchReader.id()]}I.dest_id=JXG.SketchReader.id();this.recordStepMeta(I,true)},drawLine:function(e,t){var o=null,r=null,s={};s.type=JXG.GENTYPE_LINE;s.args={};s.src_ids=[];s.dest_sub_ids=[];s.dest_id=0;s.args.create_point1=s.args.create_point2=false;s.args.first=s.args.last=true;if(t.length>0){o=JXG.Draw.findPointNextTo(e[0],t,GUI.rayFactor*JXG.Options.sensitive_area);if(o!=null){t=JXG.removeElementFromArray(t,o);s.args.first=false}r=JXG.Draw.findPointNextTo(e[e.length-1],t,GUI.rayFactor*JXG.Options.sensitive_area);if(r!=null){t=JXG.removeElementFromArray(t,r);s.args.last=false}if(o==null){if(t.length>0){o=t[0];t=JXG.removeElementFromArray(t,o)}else{o=e[0].usrCoords}}if(r==null){if(t.length>0){r=t[t.length-1]}else{r=e[e.length-1].usrCoords}}}else{o=e[0].usrCoords;r=e[e.length-1].usrCoords}s.src_ids=[];s.dest_sub_ids=[];if(!o.coords&&!r.coords){s.args.create_point1=s.args.create_point2=true;s.args.p1=[o[1]-1e5*(r[1]-o[1]),o[2]-1e5*(r[2]-o[2])];s.args.p2=[0,r[1]-o[1],r[2]-o[2]];s.dest_sub_ids=[JXG.SketchReader.id(),JXG.SketchReader.id()]}else{if(!o.coords){s.args.p1=[0,o[1]-r.coords.usrCoords[1],o[2]-r.coords.usrCoords[2]];s.args.create_point1=true;s.dest_sub_ids.push(JXG.SketchReader.id());s.args.p2=[r[1],r[2]];s.src_ids.push(r.id)}else{s.args.p1=[o[1],o[2]];s.src_ids.push(o.id);if(!r.coords){s.args.p2=[0,r[1]-o.coords.usrCoords[1],r[2]-o.coords.usrCoords[2]];s.args.create_point2=true;s.dest_sub_ids.push(JXG.SketchReader.id())}else{s.args.p2=[r[1],r[2]];s.src_ids.push(r.id)}}}s.dest_id=JXG.SketchReader.id();this.recordStepMeta(s,true)},drawPolygon:function(e){var t={type:JXG.GENTYPE_POLYGON,src_ids:[],args:{},dest_sub_ids:[],dest_id:JXG.SketchReader.id()};for(var o=0;o<e.length;o++){t.src_ids.push(e[o].id);t.dest_sub_ids.push(JXG.SketchReader.id())}this.recordStepMeta(t,true)},drawCircle2Points:function(e,t,o){var r,s=null,i=null;if(o.length>0){s=JXG.Draw.findPointNextTo(t[0],o,0)}r=JXG.Draw.findCorners(t,e);if(o.length==1&&s!=null&&JXG.Draw.dist(s,r[1])<JXG.Draw.dist(s,t[0])){s=null}if(s!=null){o=JXG.removeElementFromArray(o,s)}else{s=t[0].usrCoords}if(o.length>0){i=JXG.Draw.findPointNextTo(r[1],o,0)}if(i==null)i=t[t.length-1].usrCoords;var n={};n.args={};n.src_ids=[];n.dest_sub_ids=[];n.dest_id=0;n.type=JXG.GENTYPE_CIRCLE2POINTS;n.args.create_two_points=n.args.create_point=n.args.create_by_radius=false;if(!s.coords){if(i==null||!i.coords){n.args.create_two_points=true;n.args.x1=s[1];n.args.y1=s[2];n.args.x2=i[1];n.args.y2=i[2];n.dest_sub_ids=[JXG.SketchReader.id(),JXG.SketchReader.id()]}else{n.args.create_point=true;n.args.x=s[1];n.args.y=s[2];n.dest_sub_ids=[JXG.SketchReader.id()];n.src_ids.push(i.id)}}else{if(i==null||!i.coords){n.args.create_by_radius=true;n.args.r=(i[1]-s.coords.usrCoords[1])*(i[1]-s.coords.usrCoords[1]);n.args.r+=(i[2]-s.coords.usrCoords[2])*(i[2]-s.coords.usrCoords[2]);n.args.r=Math.sqrt(n.args.r);n.src_ids.push(s.id)}else{n.src_ids.push(s.id);n.src_ids.push(i.id)}}n.dest_id=JXG.SketchReader.id();this.recordStepMeta(n,true)},drawCircle:function(e,t){var o,r=[],s=[],i,n,a,l,d,c,u;var G={};G.type=JXG.GENTYPE_CIRCLE;G.src_ids=[];G.dest_sub_ids=[];G.dest_id=0;G.args={create_by_radius:false};G.dest_sub_ids=[JXG.SketchReader.id()];G.dest_id=JXG.SketchReader.id();if(t.length<=1){for(o=0;o<e.length;o++){r.push([e[o].usrCoords[1],e[o].usrCoords[2],1]);s.push(r[o][0]*r[o][0]+r[o][1]*r[o][1])}i=JXG.Math.transpose(r);n=JXG.Math.matMatMult(i,r);a=JXG.Math.matVecMult(i,s);l=JXG.Math.Numerics.Gauss(n,a);d=l[0]*.5;c=l[1]*.5;if(t.length===1){var f=[1,d,c];G.args.create_point=true;G.args.usrCoords=JXG.deepCopy(f);G.src_ids=[t[0].id]}else{u=Math.sqrt(l[2]+d*d+c*c);G.args.create_by_radius=true;G.args.x=d;G.args.y=c;G.args.r=u}}else if(t.length==2){G.args={};G.type=JXG.GENTYPE_CIRCLE2POINTS;G.src_ids=[t[0].id,t[1].id]}else if(t.length==3){JXG.Draw.drawOutcircle(t);return}else{JXG.Draw.drawPolygon(t);return}this.recordStepMeta(G,true)},drawOutcircle:function(e){var t={};t.type=JXG.GENTYPE_CIRCLE;t.args={};t.args.create_by_radius=false;t.dest_sub_ids=[JXG.SketchReader.id()];t.dest_id=JXG.SketchReader.id();t.src_ids=[e[0].id,e[1].id,e[2].id];this.recordStepMeta(t,true)},drawTriangle:function(e,t,o){var r,s,i,n,a,l,d,c=[],u=[];if(o.length>3){JXG.Draw.drawQuadrilateral(t,o);return}n=JXG.Draw.convexHull(e,JXG.Draw.findCorners(t,e),false);n.pop();d=JXG.uniqueArray(JXG.Draw.fitPoints(n,o));l=JXG.Draw.findMaxAreaPoints(e,d,3);if(!l.status)return;d=l.req;while(d.length>0){i=-1;for(r=0;r<d.length;r++){if(d[r].catchIdx<i||i==-1){i=d[r].catchIdx;s=r}else if(d[r].catchIdx==i&&d[r].elementClass==JXG.OBJECT_CLASS_POINT)s=r}c.push(d[s]);d.splice(s,1)}for(r=0;r<c.length;r++){if(c[r].elementClass==JXG.OBJECT_CLASS_POINT){u.push(c[r])}else{u.push(e.create("point",c[r].usrCoords,{id:JXG.SketchReader.id(),snaptogrid:JXG.Options.elements.snapToGrid,snaptopoints:JXG.Options.elements.snapToPoints}))}}a=e.create("polygon",[u[0],u[1],u[2]],{borders:{ids:[JXG.SketchReader.id(),JXG.SketchReader.id(),JXG.SketchReader.id()],name:""},id:JXG.SketchReader.id(),name:"",fillOpacity:JXG.Options.opacityLevel,hasInnerPoints:JXG.Options.polygon.hasInnerPoints,scalable:true,snaptogrid:JXG.Options.elements.snapToGrid,snaptopoints:JXG.Options.elements.snapToPoints});var G={};G.type=JXG.GENTYPE_TRIANGLE;G.args={};G.src_ids=[];G.dest_sub_ids=[];G.args.create_point=[false,false,false];G.args.coords=[];G.src_ids=[];G.dest_sub_ids=[];G.dest_id=a.id;for(r=0;r<a.vertices.length-1;r++){if(!GUI.collectionContains(c,a.vertices[r])){G.args.create_point[r]=true;G.args.coords.push({usrCoords:JXG.deepCopy(a.vertices[r].coords.usrCoords)});G.dest_sub_ids.push(a.vertices[r].id)}else{G.args.coords.push([]);G.dest_sub_ids.push(0);G.src_ids.push(a.vertices[r].id)}}for(r=0;r<a.borders.length;r++)G.dest_sub_ids.push(a.borders[r].id);this.recordStepMeta(G,false)},drawQuadrilateral:function(e,t,o){var r={};r.type=JXG.GENTYPE_QUADRILATERAL;r.args={};r.src_ids=[];r.dest_sub_ids=[];r.dest_id=0;if(o.length==4){r.args.create_point=[false,false,false,false];r.args.coords=[];r.src_ids=[];for(s=0;s<4;s++){r.args.coords.push([]);r.src_ids.push(o[s].id)}r.dest_sub_ids=[0,0,0,0,JXG.SketchReader.id(),JXG.SketchReader.id(),JXG.SketchReader.id(),JXG.SketchReader.id()];r.dest_id=JXG.SketchReader.id();this.recordStepMeta(r,true)}else if(o.length>4){JXG.Draw.drawPolygon(o)}else{var s,i,n,a,l,d,c,u=[],G=[];a=JXG.Draw.convexHull(e,JXG.Draw.findCorners(t,e));a.pop();c=JXG.uniqueArray(JXG.Draw.fitPoints(a,o));d=JXG.Draw.findMaxAreaPoints(e,c,4);if(!d.status)return;c=d.req;while(c.length>0){i=-1;for(s=0;s<c.length;s++){if(c[s].catchIdx<i||i==-1){i=c[s].catchIdx;n=s}else if(c[s].catchIdx==i&&c[s].elementClass==JXG.OBJECT_CLASS_POINT)n=s}u.push(c[n]);c.splice(n,1)}for(s=0;s<u.length;s++){if(u[s].elementClass==JXG.OBJECT_CLASS_POINT)G[s]=u[s];else G[s]=e.create("point",u[s].usrCoords,{id:JXG.SketchReader.id(),snaptogrid:JXG.Options.elements.snapToGrid,snaptopoints:JXG.Options.elements.snapToPoints})
}l=e.create("polygon",[G[0],G[1],G[2],G[3]],{borders:{ids:[JXG.SketchReader.id(),JXG.SketchReader.id(),JXG.SketchReader.id(),JXG.SketchReader.id()],name:""},id:JXG.SketchReader.id(),name:"",fillOpacity:JXG.Options.opacityLevel,hasInnerPoints:JXG.Options.polygon.hasInnerPoints,scalable:true,snaptogrid:JXG.Options.elements.snapToGrid,snaptopoints:JXG.Options.elements.snapToPoints});r.args.create_point=[false,false,false,false];r.args.coords=[];r.src_ids=[];r.dest_sub_ids=[];r.dest_id=l.id;for(s=0;s<l.vertices.length-1;s++){if(!GUI.collectionContains(u,l.vertices[s])){r.args.create_point[s]=true;r.args.coords.push({usrCoords:JXG.deepCopy(l.vertices[s].coords.usrCoords)});r.dest_sub_ids.push(l.vertices[s].id);r.src_ids.push(l.vertices[s].id)}else{r.args.coords.push([]);r.dest_sub_ids.push(0);r.src_ids.push(l.vertices[s].id)}}for(s=0;s<l.borders.length;s++)r.dest_sub_ids.push(l.borders[s].id);this.recordStepMeta(r,false)}},drawRuler:function(e,t){var o,r;o=new JXG.Coords(JXG.COORDS_BY_USER,[e[0],e[1]],GUI.board);o=new JXG.Coords(JXG.COORDS_BY_SCREEN,[o.scrCoords[1]+62,o.scrCoords[2]],GUI.board);r=[o.usrCoords[1],e[1]];this.recordStepMeta({type:JXG.GENTYPE_RULER,args:{p1:e,p2:r,label:t},src_ids:[],dest_sub_ids:[JXG.SketchReader.id(),JXG.SketchReader.id()],dest_id:JXG.SketchReader.id()},true)},drawRegularPolygon:function(e){var t,o={type:JXG.GENTYPE_REGULARPOLYGON,args:{corners:JXG.Options.lastRegPolCorners},dest_sub_ids:[],src_ids:[e[0].id,e[1].id]};for(t=0;t<JXG.Options.lastRegPolCorners;t++)o.dest_sub_ids.push(JXG.SketchReader.id());for(t=0;t<JXG.Options.lastRegPolCorners-2;t++)o.dest_sub_ids.push(JXG.SketchReader.id());o.dest_id=JXG.SketchReader.id();this.recordStepMeta(o,true)},drawCircleSector:function(e){this.recordStepMeta({type:JXG.GENTYPE_SECTOR,src_ids:e,dest_sub_ids:[],dest_id:JXG.SketchReader.id()},true)},drawAngleSector:function(e){var t=JXG.SketchReader.id(),o=JXG.SketchReader.id(),r=JXG.SketchReader.id(),s=JXG.SketchReader.id();this.recordStepMeta({type:JXG.GENTYPE_ANGLE,src_ids:e,dest_sub_ids:[t,o,r],dest_id:s},true)},drawSlider:function(e){this.recordStepMeta({type:JXG.GENTYPE_SLIDER,dest_sub_ids:[JXG.SketchReader.id(),JXG.SketchReader.id(),JXG.SketchReader.id(),JXG.SketchReader.id(),JXG.SketchReader.id()],dest_id:JXG.SketchReader.id(),args:{x1:e[0].usrCoords[1],y1:e[0].usrCoords[2],x2:e[0].usrCoords[1]+3,y2:e[0].usrCoords[2],start:JXG.Options.lastSliderStart,ini:JXG.Options.lastSliderIni,end:JXG.Options.lastSliderEnd}},true)},drawText:function(e,t,o){var r=JXG.SketchReader.id();if(typeof t=="undefined")t="'Text'";if(typeof o=="undefined")o=[];this.recordStepMeta({type:JXG.GENTYPE_TEXT,src_ids:o,dest_sub_ids:[],dest_id:r,args:{x:e.usrCoords[1],y:e.usrCoords[2],str:t}},true);return r}}});var GUI=GUI||{};JXG.extend(GUI,{Options:{finderEnabled:false,multiConstructEnabled:false},appId:"jsxgui",appName:"Sketchometry",version:"0.4.5",debug:false,langId:0,offline:false,ctxPosHide:126,ctxPosDelete:62,ctxPosProps:2,highlightSize:18,highlightColor:"#000000",plotColors:["black","red","blue","green","yellow","brown"],plotColor:0,zoomLevel:0,opacityHidden:.2,strokeHidden:2,incrementValue:10,rayFactor:128,context_time_limit:1800,finder_time_limit:2e3,init:{boundingbox:[-10,10,10,-10],keepaspectratio:false,zoom:{wheel:false},axis:false,grid:false,showNavigation:false,showCopyright:false,showInfobox:false,registerEvents:false},action:"standard",transition:"flip",axisVisible:false,gridVisible:false,snapToGrid:false,snapToPoints:false,didToolbarScroll:false,navZoomVisible:false,board:null,firstInit:true,firstResize:true,down_event:"",up_event:"",move_event:"",out_event:"",over_event:"",click_event:"",tap_event:"",toolType:[],toolFunc:{},transformation:{},navHandlersRegistered:false,showBlured:false,mouseDown:false,showHidden:false,mode:null,constModeSwitch:true,modeBeforeConstSwitch:null,modeBeforeToolSwitch:null,modeBeforeGallerySwitch:null,draftcurve:[],shadowCopyStep:"",intersect_obj:[],select_obj:[],highlightedObjs:[],highlightedObjsAblate:{},mirrorCenterId:0,rectSelect:[],selection:[],id_cnt:1,unredo:-1,intervalTimer:0,ctx_down_coords:null,ctx_curr_coords:null,ctx_timer:0,step_log:[],step_del_exclude:[],restore_state:[],dialog:{transform:null,pol:null,slider:null,sect:null,navzoom:null,confirm:null},lastFxInput:"",lastCopyPos:{},dialogLastPos:{navzoom:[600,105]},boardText:null,nd_recognizer:new NDollarRecognizer(false),nd_mstrokestr:"",id:function(){return"GUI"+GUI.id_cnt++ +""},recordStep:function(e,t,o,r){var s,i;if(GUI.unredo>=0&&JXG.Draw.areEqualObjects(GUI.step_log[GUI.unredo],e))return false;if(typeof r=="undefined")r=false;GUI.step_log.splice(GUI.unredo+1,GUI.step_log.length-(GUI.unredo+1));for(s=0;s<GUI.restore_state.length;s++)if(GUI.restore_state[s].step>GUI.unredo)break;GUI.restore_state.splice(s);GUI.unredo=GUI.step_log.length-1;if(e.type>50)i=GUI.generateJCode(e,GUI.board);else i=JXG.SketchReader.generateJCode(e,GUI.board,GUI.step_log);if(i[0]==""&&i[1]==""){return false}GUI.triggerEventHandlers(["step"],[e,i[0]]);if(t){if(e.type==JXG.GENTYPE_JCODE)GUI.executeJCode(i,false,r);else GUI.executeJCode(i,true,r)}else GUI.greenLog(i[0]);GUI.step_log.push(e);GUI.unredo++;if(e.type===JXG.GENTYPE_DELETE){for(s=0;s<e.args.steps.length;s++){GUI.step_del_exclude.push(e.args.steps[s])}}if(GUI.unredo>1&&GUI.step_log[GUI.unredo].type!==JXG.GENTYPE_JCODE){GUI.enableUndo(true)}else{GUI.enableUndo(false)}GUI.enableRedo(false);GUI.enableMakeSnapshot(false);GUI.enablePrevSnapshot(GUI.restore_state.length>0);GUI.enableNextSnapshot(false);GUI.contextUpdate();if(GUI.currentConstruction&&!o){GUI.saveConstruction(GUI.currentConstruction,true)}return true},initSketchBoard:function(e){GUI.board=JXG.JSXGraph.initBoard(e,GUI.init);if(GUI.Settings.get("cursor")){GUI.board.renderer.createTouchpoints(2);GUI.board.renderer.showTouchpoint(0)}if(GUI.firstInit){if(JXG.supportsPointerEvents()){GUI.down_event="MSPointerDown";GUI.up_event="MSPointerUp";GUI.move_event="MSPointerMove";GUI.out_event="MSPointerOut";GUI.over_event="MSPointerOver";GUI.click_event="MSPointerUp";GUI.tap_event="MSPointerDown";JXG.Options.device="msie"}else if(JXG.isTouchDevice()){GUI.down_event="touchstart";GUI.up_event="touchend";GUI.move_event="touchmove";GUI.out_event="touchleave";GUI.over_event="touchenter";GUI.click_event="touchend";GUI.tap_event="touchstart";JXG.Options.device="tablet"}else{GUI.down_event="mousedown";GUI.up_event="mouseup";GUI.move_event="mousemove";GUI.out_event="mouseout";GUI.over_event="mouseover";GUI.click_event="click";GUI.tap_event="click";JXG.Options.device="pc"}GUI.initControls();GUI.switchToolbarPos(GUI.Settings.get("layouttop"));GUI.enableConstDragMode();$("div").disableSelection();$("[id^=key-]").disableSelection();GUI.navZoomHtml=$("#property-navigation").html();$("#property-navigation").html("");if(JXG.Options.device!="tablet")$("#toolbar-overflow").css("height",200);if(JXG.Options.device=="pc"){GUI.getId("point-size-field").setAttribute("type","text");GUI.getId("color-field").setAttribute("type","text");GUI.getId("image-size-field").setAttribute("type","text")}else if(JXG.Options.device=="tablet")$("#inputWindow").addClass("not-displayed");else{JXG.addEvent(GUI.getId("mainWindow"),"selectstart",function(e){if(e&&e.preventDefault)e.preventDefault()},GUI);JXG.addEvent(GUI.getId("mainWindow"),"contextmenu",function(e){if(e&&e.preventDefault)e.preventDefault()},GUI);JXG.addEvent(GUI.getId("mainWindow"),"MSHoldVisual",function(e){if(e&&e.preventDefault)e.preventDefault()},GUI)}GUI.firstInit=false}JXG.Options.elements.snapToPoints=false;JXG.Options.elements.snapToGrid=false},freeBoard:function(){var e="";if(typeof GUI.board!="undefined"&&GUI.board!=null){e=GUI.board.containerObj.id;JXG.JSXGraph.freeBoard(GUI.board);GUI.board=null}return e},newBoard:function(e,t,o){var r;GUI.id_cnt=1;GUI.unredo=-1;GUI.step_log=[];GUI.step_del_exclude=[];GUI.selection=[];GUI.restore_state=[];GUI.transformation={};GUI.axisVisible=false;GUI.gridVisible=false;GUI.plotColor=0;GUI.showBlured=false;GUI.showHidden=false;GUI.mousedown=false;GUI.initSketchBoard(GUI.freeBoard());if($("#control-boardprop").hasClass("button-selected"))GUI.activateBoardControls();GUI.hideAllActions();GUI.deselectAllToolButtonsAndRemoveActions();if($("#control-tools-box").hasClass("button-selected"))GUI.activateToolControls();$(".info").remove();GUI.removeActionEvent(true);$("#board-axis-visible").removeClass("button-selected");$("#board-axis-visible-box").removeClass("button-selected");GUI.init.boundingbox=GUI.board.getBoundingBox();$("#axis-scale-x").val(1);$("#axis-scale-y").val(1);$("#axis-scale-x").keyup(function(){GUI.scaleAxis()});$("#axis-scale-y").keyup(function(){GUI.scaleAxis()});$("#grid-scale-x").val(1);$("#grid-scale-y").val(1);$("#grid-scale-x").keyup(function(){GUI.scaleGrid(false)});$("#grid-scale-y").keyup(function(){GUI.scaleGrid(true)});GUI.board.options.grid.snapToGrid=false;GUI.board.options.grid.snapToPoints=false;GUI.board.options.point.snapToPoints=false;GUI.board.options.point.attractorDistance=.5;$("#grid-visible").removeClass("button-selected");$("#grid-visible-box").removeClass("button-selected");$("#grid-snap-to-grid").removeClass("button-selected");$("#grid-snap-to-grid-box").removeClass("button-selected");$("#grid-snap-to-point").removeClass("button-selected");$("#grid-snap-to-point-box").removeClass("button-selected");GUI.zoomLevel=0;if(localStorage&&(r=localStorage.getItem("jsxgui:meta:dialogLastPos"))!=null)GUI.dialogLastPos=JSON.parse(r);$("#board-navzoom-box").removeClass("button-selected");$("#board-navzoom").removeClass("button-selected");if(GUI.mode==null){if(GUI.modeBeforeGallerySwitch!=null){GUI.switchMode(GUI.modeBeforeGallerySwitch,true);GUI.modeBeforeGallerySwitch=null}else if(GUI.modeBeforeToolSwitch!=null){GUI.switchMode(GUI.modeBeforeToolSwitch,true);GUI.modeBeforeToolSwitch=null}else GUI.switchMode("CD",true)}GUI.enableConstDragMode();GUI.resizeBoard();GUI.resizeToolbar();GUI.switchHandling(GUI.Settings.get("leftright"));GUI.setLanguage(GUI.Settings.get("language"));GUI.addTooltips();if(e){GUI.recordStep({type:JXG.GENTYPE_AXIS,src_ids:[],dest_sub_ids:["GUIOO","GUIE1","GUIE2","GUIx","GUIy"],args:{visible:false,coords:[{usrCoords:[1,0,0]},{usrCoords:[1,1,0]},{usrCoords:[1,0,1]}],name:["OO","E1","E2","x","y"],priv:[true,true,true,false,false]}},true,o);GUI.recordStep({type:JXG.GENTYPE_TRUNCATE},true,o)}GUI.enableUndo(false);GUI.enableRedo(false);GUI.enableMakeSnapshot(false);GUI.enablePrevSnapshot(false);GUI.enableNextSnapshot(false);GUI.showBoard(t)},clearBoard:function(){GUI.confirm(GUI.Lang.std.clear_reassure,false,function(){GUI.newBoard(true,false,false)})},resetBoard:function(e){if(typeof e!="undefined")GUI.board.mode=e;else if(GUI.mode=="CD"||GUI.mode=="D")GUI.board.mode=GUI.board.BOARD_MODE_DRAG;else GUI.board.mode=GUI.board.BOARD_MODE_NONE;GUI.board.touches=[];GUI.board.downObjects=[];GUI.board.mouse=[]},indicateScroll:function(e){var t,o;t=parseInt($("#toolbar-overflow").css("width"));o=parseInt($("#toolbar-panel").css("width"));if(o>t){if(e==0)$(".triangle-left").addClass("hidden");else $(".triangle-left").removeClass("hidden");console.log("to "+e);console.log("tp "+(o-t));if(e==o+1-t||e==o-t)$(".triangle-right").addClass("hidden");else $(".triangle-right").removeClass("hidden")}},resizeToolbar:function(){var e,t,o,r,s,i;o=$("#control-unredo-group").outerWidth();r=$("#control-gallery-group").outerWidth();s=window.innerWidth-(o+r);$("#toolbar-overflow").css("width",s+"px");r=0;e=508;t=872;if(s<=e&&$("#caption-tools").hasClass("not-displayed")){$("#control-actions-group").removeClass("fright")}else if(s>e&&$("#caption-tools").hasClass("not-displayed")||s>t&&!$("#caption-tools").hasClass("not-displayed")){r=Math.max(r,parseInt($("#toolbar-panel").css("min-width"))-s);$("#control-actions-group").addClass("fright")}else $("#control-actions-group").addClass("fright");if($("#caption-tools").hasClass("not-displayed")){o=parseInt($("#toolbar-panel").css("min-width"));i=Math.max(o-r,e)}else{i=t+4}$("#toolbar-panel").css("min-width",i+"px");$("#status-box").css("left",parseInt(($("#mainWindow").width()-$("#status").width())/2));if(i>s){$(".triangle-right").removeClass("hidden");$(".triangle-left").removeClass("hidden")}else{$(".triangle-right").addClass("hidden");$(".triangle-left").addClass("hidden")}},resizeBoard:function(){var e,t,o,r,s,i,n,a,l,d;if(GUI.board==null||typeof GUI.board=="undefined"){return}s=parseInt($("#content").css("padding-left"))+parseInt($("#content").css("padding-right"))+parseInt($("#content").css("border-left-width"))+parseInt($("#content").css("border-right-width"));i=$("#content").outerHeight()-$("#content").height();i+=$("#toolbar").outerHeight();t=window.innerWidth-s;o=window.innerHeight-i;GUI.board.resizeContainer(t,o);n=GUI.board.getBoundingBox();for(e=0;e<n.length;e++){if(isNaN(n[e])){GUI.firstResize=true;break}}if(GUI.firstResize){a=GUI.init.boundingbox[0];l=GUI.init.boundingbox[2]}else{a=n[0];l=n[2];d=n[1]}r=(l-a)*o/t;if(GUI.firstResize){GUI.board.setBoundingBox([a,r/2,l,-r/2],true);GUI.firstResize=false}else{GUI.board.setBoundingBox([a,d,l,d-r],true)}},switchToolbarPos:function(e){if(e=="top"){$("#content").css("top",$("#toolbar").outerHeight());$("#toolbar").css("bottom","");$("#toolbar").css("top","0px");$("#ctxPanel").css("bottom","");$("#ctxPanel").css("top",$("#toolbar").outerHeight());$("#keyboardPanel").css("bottom","");$("#keyboardPanel").css("top",$("#toolbar").outerHeight()+5);$("#status-box").css("bottom","");$("#status-box").css("top",parseInt(($("#toolbar").height()-$("#status").outerHeight())/2))}else{$("#content").css("top","0px");$("#toolbar").css("top","");$("#toolbar").css("bottom","0px");GUI.contextPanelReposition();$("#keyboardPanel").css("top","");$("#keyboardPanel").css("bottom",$("#toolbar").outerHeight()+5);$("#status-box").css("top","");$("#status-box").css("bottom",parseInt(($("#toolbar").height()-$("#status").outerHeight())/2))}},switchHandling:function(e){var t;if(!$("#ctxPanel").hasClass("not-displayed"))t=$("#ctxPanel").outerWidth();else t=0;$("#content").css("margin-left","");$("#content").css("margin-right","");$("#ctxPanel").css("left","");$("#ctxPanel").css("right","");$("#keyboardPanel").css("left","");$("#keyboardPanel").css("right","");if(e=="left"){$("#content").css("margin-left",t);$("#kb-input-panel").removeClass("fright");$("#kb-input-panel").addClass("fleft");$("#keyboardPanel").css("right","10px");$("#control-undo-box").addClass("hmirrored");$("#control-redo-box").addClass("hmirrored");$("#control-drag-box").addClass("hmirrored");$("#control-construct-box").addClass("hmirrored");$("#control-actions-function-box").addClass("hmirrored");$("#control-tools-box").addClass("hmirrored");$("#caption-tools > .tools").addClass("hmirrored");$("#control-actions-hide-box").addClass("hmirrored");$("#control-actions-del-box").addClass("hmirrored");$("#control-boardprop-box").addClass("hmirrored");$("#control-gallery-box").addClass("hmirrored");$("#tool-exe").addClass("hmirrored");$("#toolbar").addClass("hmirrored")}else if(e=="right"){$("#content").css("margin-right",t);$("#kb-input-panel").removeClass("fleft");$("#kb-input-panel").addClass("fright");$("#keyboardPanel").css("left","10px");$("#control-undo-box").removeClass("hmirrored");$("#control-redo-box").removeClass("hmirrored");$("#control-drag-box").removeClass("hmirrored");$("#control-construct-box").removeClass("hmirrored");$("#control-actions-function-box").removeClass("hmirrored");$("#control-tools-box").removeClass("hmirrored");$("#caption-tools > .tools").removeClass("hmirrored");$("#control-actions-hide-box").removeClass("hmirrored");$("#control-actions-del-box").removeClass("hmirrored");$("#control-boardprop-box").removeClass("hmirrored");$("#control-gallery-box").removeClass("hmirrored");$("#tool-exe").removeClass("hmirrored");$("#toolbar").removeClass("hmirrored")}},switchMode:function(e,t){var o,r,s,i,n=GUI.mode;if(GUI.mode=="C"){GUI.removeNavHandlers();GUI.removeConstructEvents()}else if(GUI.mode=="CD"){GUI.removeConstructHooks();GUI.removeBoardHandlers()}else if(GUI.mode=="D"){GUI.removeBoardHandlers()}o=$("#control-construct");s=$("#control-construct-box");r=$("#control-drag");i=$("#control-drag-box");if(e==null){if(GUI.board){GUI.board.mode=GUI.board.BOARD_MODE_NONE;GUI.deleteDraftcurves()}}if(e===-1){if(o.hasClass("button-selected")&&r.hasClass("button-selected")){GUI.mode="CD"}else if(o.hasClass("button-selected")){GUI.mode="C"}else if(r.hasClass("button-selected")){GUI.mode="D"}else GUI.mode=null}else GUI.mode=e;if(e!=-1&&t){o.removeClass("button-selected");s.removeClass("button-selected");r.removeClass("button-selected");i.removeClass("button-selected")}if(GUI.mode=="D"){GUI.addBoardHandlers();if(e!=-1&&t){r.addClass("button-selected");i.addClass("button-selected")}}else if(GUI.mode=="C"){GUI.addConstructEvents();GUI.addNavHandlers();if(e!=-1&&t){o.addClass("button-selected");s.addClass("button-selected")}}else if(GUI.mode=="CD"){GUI.addBoardHandlers();GUI.addConstructHooks();if(e!=-1&&t){o.addClass("button-selected");s.addClass("button-selected");r.addClass("button-selected");i.addClass("button-selected")}}console.log("old mode: "+n+", new mode: "+GUI.mode)},showHiddenUnRedoUpdate:function(e){var t,o,r;if(GUI.showHidden){if(e.type==JXG.GENTYPE_DELETE){for(o=0;o<e.args.steps.length;o++){r=GUI.step_log[e.args.steps[o]];for(t=0;t<r.src_ids.length;t++)if(GUI.board.objects[r.src_ids[t]])GUI.showHiddenObject(GUI.board.objects[r.src_ids[t]])}}else if(e.type==JXG.GENTYPE_CTX_VISIBILITY){for(t=0;t<e.src_ids.length;t++)if(GUI.board.objects[e.src_ids[t]])GUI.showHiddenObject(GUI.board.objects[e.src_ids[t]])}}},undo:function(){var e,t,o;while(GUI.unredo>1&&GUI.step_log[GUI.unredo].type!=JXG.GENTYPE_JCODE){t=GUI.step_log[GUI.unredo];while(t.type==0&&GUI.unredo>=1){GUI.unredo--;t=GUI.step_log[GUI.unredo]}if(GUI.unredo<1)break;if(t.type==JXG.GENTYPE_DELETE){for(e=0;e<t.args.steps.length;e++)JXG.removeElementFromArray(GUI.step_del_exclude,t.args.steps[e])}if(t.type>50)o=GUI.generateJCode(t,GUI.board);else o=JXG.SketchReader.generateJCode(t,GUI.board,GUI.step_log);if(o[2]!==""){try{GUI.revertJCode(o,true)}catch(r){console.log(r);console.log("error executing revert for step "+GUI.unredo)}GUI.contextUpdate();GUI.enableRedo(true);GUI.unredo--}else{var s,i,n,a;s=GUI.id_cnt;a=GUI.step_log;n=GUI.restore_state;i=GUI.unredo;GUI.newBoard(false,false,true);GUI.id_cnt=s;GUI.step_log=a;GUI.restore_state=n;GUI.unredo=1;if(GUI.step_log[GUI.unredo].type>50)o=GUI.generateJCode(GUI.step_log[GUI.unredo],GUI.board);else o=JXG.SketchReader.generateJCode(GUI.step_log[GUI.unredo],GUI.board,GUI.step_log);try{GUI.executeJCode(o,true)}catch(r){console.log(r);console.log("error executing step "+GUI.unredo+"(general undo)")}while(GUI.unredo!=i-1)GUI.redo()}break}GUI.showHiddenUnRedoUpdate(t);if(GUI.unredo<=1||GUI.step_log[GUI.unredo].type==JXG.GENTYPE_JCODE)GUI.enableUndo(false);GUI.updateSnapshotControls();GUI.board.update()},redo:function(){var e,t,o;while(!(GUI.unredo==GUI.step_log.length-1)){GUI.unredo++;t=GUI.step_log[GUI.unredo];while(t.type==0&&!(GUI.unredo==GUI.step_log.length-1)){GUI.unredo++;t=GUI.step_log[GUI.unredo]}if(t.type==JXG.GENTYPE_DELETE){for(e=0;e<t.dest_sub_ids.length;e++){if(GUI.contextShowsProps()==t.dest_sub_ids[e]){GUI.contextEdit(0);break}}for(e=0;e<t.args.steps.length;e++)GUI.step_del_exclude.push(t.args.steps[e])}if(t.type!=0){if(t.type>50)o=GUI.generateJCode(t,GUI.board);else o=JXG.SketchReader.generateJCode(t,GUI.board,GUI.step_log);try{GUI.executeJCode(o,true)}catch(r){console.log(r);console.log("error executing step "+GUI.unredo+"(redo)")}GUI.contextUpdate()}GUI.showHiddenUnRedoUpdate(t);if(GUI.unredo>1&&GUI.step_log[GUI.unredo].type!=JXG.SketchReader.GENTYPE_JCODE)GUI.enableUndo(true);else GUI.enableUndo(false);break}if(GUI.unredo==GUI.step_log.length-1)GUI.enableRedo(false);GUI.updateSnapshotControls();GUI.board.update()},enableUndo:function(e){if(e){$("#control-undo-box").removeClass("button-disabled")}else{$("#control-undo-box").addClass("button-disabled")}},enableRedo:function(e){if(e){$("#control-redo-box").removeClass("button-disabled")}else{$("#control-redo-box").addClass("button-disabled")}},enableMakeSnapshot:function(e){if(e){$("#btn_togglemark").css("border-top","solid 1px yellow");$("#btn_togglemark").css("border-bottom","solid 1px yellow")}else{$("#btn_togglemark").css("border-top","solid 1px black");$("#btn_togglemark").css("border-bottom","solid 1px black")}},enablePrevSnapshot:function(e){if(e){$("#btn_prevmark").css("border-top","solid 1px yellow");$("#btn_prevmark").css("border-bottom","solid 1px yellow")}else{$("#btn_prevmark").css("border-top","solid 1px black");$("#btn_prevmark").css("border-bottom","solid 1px black")}},enableNextSnapshot:function(e){if(e){$("#btn_nextmark").css("border-top","solid 1px yellow");$("#btn_nextmark").css("border-bottom","solid 1px yellow")}else{$("#btn_nextmark").css("border-top","solid 1px black");$("#btn_nextmark").css("border-bottom","solid 1px black")}},showBoard:function(e){GUI.board.moveOrigin(GUI.board.canvasWidth/2,GUI.board.canvasHeight/2);if(typeof e=="undefined"||!e)$("div#mainWindow").removeClass("hidden")},showStatusPanel:function(e,t,o){GUI.boardText='<div id="statusTextBox" class="center inline">'+e+"</div>";$("#menu").addClass("not-displayed");$("#tool-exe").html(GUI.boardText);$("#tool-stage").removeClass("not-displayed");if(typeof o=="function"){$("#tool-exe").bind(GUI.click_event,function(){GUI.hideStatusPanel(o)})}$("#statusTextBox").unbind();$("#statusTextBox").bind(GUI.click_event,function(e){e.preventDefault();e.stopPropagation()});if(t)window.setTimeout(GUI.hideStatusPanel,t)},hideToolStage:function(e){if(typeof e=="function")e();$("#tool-stage").addClass("not-displayed");$("#menu").removeClass("not-displayed");if(document.activeElement&&document.activeElement.blur&&document.activeElement.tagName.toString().toLowerCase()!="body"){document.activeElement.blur()}GUI.resizeToolbar()},hideStatusPanel:function(e){if(GUI.boardText!=null){$("#tool-exe").children().unbind();$("#tool-exe").unbind();GUI.boardText=null;if(JXG.Options.device=="msie")window.setTimeout(function(){GUI.hideToolStage(e)},100);else GUI.hideToolStage(e)}},showPanel:function(e,t){var o=GUI.Settings.get("leftright").toLowerCase();if(e){$("#ctxPanel").css(o,t+"px");$("#ctxPanel").removeClass("not-displayed")}else{$("#ctxProps").addClass("not-displayed");$("#ctxObjects").addClass("not-displayed");$("#ctxObjectsExtra").addClass("not-displayed");$("#ctxPanel").addClass("not-displayed");GUI.Kbd.hideKeyboardPanel();if(JXG.Options.device!="msie")document.activeElement.blur()}$("#control-boardprop").removeClass("button-selected");$("#control-boardprop-box").removeClass("button-selected")},showPropertyPanel:function(e,t){if(e=="board"){$("#ctxProps").addClass("not-displayed");$("#ctxBoard").removeClass("not-displayed");$("#ctxObjectsExtra").addClass("not-displayed");$("#ctxObjects").addClass("not-displayed")}else if(e=="props"){$("#ctxProps").removeClass("not-displayed");$("#ctxBoard").addClass("not-displayed");$("#ctxObjectsExtra").addClass("not-displayed");$("#ctxObjects").addClass("not-displayed")}else{$("#ctxProps").addClass("not-displayed");$("#ctxBoard").addClass("not-displayed");if(t)$("#ctxObjectsExtra").removeClass("not-displayed");else $("#ctxObjectsExtra").addClass("not-displayed");$("#ctxObjects").removeClass("not-displayed")}},showObjectsBlured:function(e){var t,o=GUI.board.objects;if(!GUI.showBlured){if(!e)return;GUI.board.suspendUpdate();for(t in o)if(o.hasOwnProperty(t)){if(!GUI.isStandardObj(o[t]))continue;if(typeof o[t].guiVisProp=="undefined")o[t].guiVisProp={};o[t].guiVisProp.fillOpacity=o[t].getAttribute("fillOpacity");o[t].guiVisProp.strokeOpacity=o[t].getAttribute("strokeOpacity");if(!o[t].guiVisProp.visible){o[t].setAttribute({fillOpacity:o[t].guiVisProp.fillOpacity/4});o[t].setAttribute({strokeOpacity:o[t].guiVisProp.strokeOpacity/4})}}}else{if(e)return;GUI.board.suspendUpdate();for(t in o){if(o.hasOwnProperty(t)){if(!GUI.isStandardObj(o[t]))continue;if(o[t].guiVisProp){o[t].setAttribute({fillOpacity:o[t].guiVisProp.fillOpacity});o[t].setAttribute({strokeOpacity:o[t].guiVisProp.strokeOpacity})}}}}GUI.board.unsuspendUpdate();GUI.showBlured=!GUI.showBlured},showHiddenObject:function(e){if(!GUI.isStandardObj(e)||e.type==JXG.OBJECT_TYPE_AXIS||e.type==JXG.OBJECT_TYPE_GRID)return;if(!e.guiVisProp){e.guiVisProp={};e.guiVisProp.fillOpacity=e.getAttribute("fillOpacity");e.guiVisProp.strokeOpacity=e.getAttribute("strokeOpacity");e.guiVisProp.strokewidth=e.getAttribute("strokewidth")}e.guiVisProp.visible=e.getAttribute("visible");if(!GUI.isStandardObj(e)||e.type==JXG.OBJECT_TYPE_AXIS||e.type==JXG.OBJECT_TYPE_GRID)return;if(!e.guiVisProp.visible){e.setAttribute({visible:true});e.setAttribute({fillOpacity:GUI.opacityHidden});e.setAttribute({strokeOpacity:GUI.opacityHidden})}else{e.setAttribute({fillOpacity:e.guiVisProp.fillOpacity});e.setAttribute({strokeOpacity:e.guiVisProp.strokeOpacity})}if(e.guiVisProp.strokewidth==0)e.setAttribute({strokewidth:GUI.strokeHidden});if(e.type==JXG.OBJECT_TYPE_POLYGON)e.visProp.hasinnerpoints=true},showHiddenObjects:function(){var e,t=GUI.board.objects;GUI.board.suspendUpdate();if(!GUI.showHidden){for(e in t)if(t.hasOwnProperty(e))GUI.showHiddenObject(t[e])}else{for(e in t){if(t.hasOwnProperty(e)){if(!GUI.isStandardObj(t[e])||t[e].type==JXG.OBJECT_TYPE_AXIS||t[e].type==JXG.OBJECT_TYPE_GRID)continue;if(t[e].guiVisProp){t[e].setAttribute({visible:t[e].guiVisProp.visible});t[e].setAttribute({fillOpacity:t[e].guiVisProp.fillOpacity});t[e].setAttribute({strokeOpacity:t[e].guiVisProp.strokeOpacity});t[e].setAttribute({strokewidth:t[e].guiVisProp.strokewidth});delete t[e].guiVisProp}if(t[e].type==JXG.OBJECT_TYPE_POLYGON)t[e].visProp.hasinnerpoints=false}}}GUI.board.unsuspendUpdate();GUI.showHidden=!GUI.showHidden},toggleConstruct:function(){if($("#control-construct").hasClass("button-selected")){$("#control-construct").removeClass("button-selected");$("#control-construct-box").removeClass("button-selected")}else{$("#control-construct").addClass("button-selected");$("#control-construct-box").addClass("button-selected")}console.log("-- const toggled --");GUI.switchMode(-1,true)},toggleDrag:function(){if($("#control-drag").hasClass("button-selected")){$("#control-drag").removeClass("button-selected");$("#control-drag-box").removeClass("button-selected")}else{$("#control-drag").addClass("button-selected");$("#control-drag-box").addClass("button-selected")}console.log("-- drag toggled --");GUI.switchMode(-1,true)},scaleAxis:function(){GUI.firstResize=true;GUI.resizeBoard();var e=GUI.board.getBoundingBox();e[0]*=Math.max(GUI.getId("axis-scale-x").value,JXG.Options.precision.epsilon);e[1]*=Math.max(GUI.getId("axis-scale-y").value,JXG.Options.precision.epsilon);e[2]*=Math.max(GUI.getId("axis-scale-x").value,JXG.Options.precision.epsilon);e[3]*=Math.max(GUI.getId("axis-scale-y").value,JXG.Options.precision.epsilon);GUI.board.setBoundingBox(e);GUI.firstResize=false},scaleGrid:function(e){var t,o;if(e){t=GUI.getId("grid-scale-y").value;o=Math.max(1,t);if(t!=o)$("#grid-scale-y").val(o);GUI.board.objects["GUIy"].defaultTicks.setAttribute({scale:o})}else{t=GUI.getId("grid-scale-x").value;o=Math.max(1,t);if(t!=o)$("#grid-scale-x").val(o);GUI.board.objects["GUIx"].defaultTicks.setAttribute({scale:o})}},toggleAxis:function(){if(GUI.axisVisible){GUI.board.objects["GUIx"].setAttribute({visible:false});GUI.board.objects["GUIy"].setAttribute({visible:false});GUI.getId("axis-scale-x").disabled="disabled";GUI.getId("axis-scale-y").disabled="disabled";$("#board-axis-visible").removeClass("button-selected");$("#board-axis-visible-box").removeClass("button-selected");if(GUI.gridVisible){GUI.gridVisible=false;GUI.toggleGrid()}}else{GUI.board.objects["GUIx"].setAttribute({visible:true});GUI.board.objects["GUIx"].defaultTicks.setAttribute({drawLabels:true,withlabel:true});GUI.board.objects["GUIy"].setAttribute({visible:true});GUI.board.objects["GUIy"].defaultTicks.setAttribute({drawLabels:true,withlabel:true});GUI.getId("axis-scale-x").removeAttribute("disabled");GUI.getId("axis-scale-y").removeAttribute("disabled");$("#board-axis-visible").addClass("button-selected");$("#board-axis-visible-box").addClass("button-selected")}GUI.axisVisible=!GUI.axisVisible},toggleGrid:function(){if(GUI.gridVisible){if(GUI.board.objects["GUIx"].visProp.visible)GUI.board.objects["GUIx"].defaultTicks.setAttribute({minorHeight:0,majorHeight:10,insertTicks:true});else GUI.board.objects["GUIx"].defaultTicks.setAttribute({minorHeight:0,majorHeight:1,insertTicks:true});if(GUI.board.objects["GUIy"].visProp.visible)GUI.board.objects["GUIy"].defaultTicks.setAttribute({minorHeight:0,majorHeight:10,insertTicks:true});else GUI.board.objects["GUIy"].defaultTicks.setAttribute({minorHeight:0,majorHeight:1,insertTicks:true});GUI.getId("grid-scale-x").disabled="disabled";GUI.getId("grid-scale-y").disabled="disabled";$("#grid-visible").removeClass("button-selected");$("#grid-visible-box").removeClass("button-selected")}else{GUI.board.objects["GUIx"].defaultTicks.setAttribute({ticksDistance:1,insertTicks:false,majorHeight:-1,minorHeight:0,scale:1,visible:true,drawLabels:GUI.board.objects["GUIx"].visProp.visible});GUI.board.objects["GUIy"].defaultTicks.setAttribute({ticksDistance:1,insertTicks:false,majorHeight:-1,minorHeight:0,scale:1,visible:true,drawLabels:GUI.board.objects["GUIy"].visProp.visible});GUI.getId("grid-scale-x").removeAttribute("disabled");GUI.getId("grid-scale-y").removeAttribute("disabled");$("#grid-visible").addClass("button-selected");$("#grid-visible-box").addClass("button-selected")}GUI.gridVisible=!GUI.gridVisible},toggleSnapToGrid:function(){var e,t=JXG.Options.elements.snapToGrid;for(e in GUI.board.objects)if(GUI.board.objects[e].visProp.priv==false&&GUI.board.objects[e].type!=JXG.OBJECT_TYPE_GLIDER)GUI.board.objects[e].visProp.snaptogrid=!t;if(t){$("#grid-snap-to-grid").removeClass("button-selected");$("#grid-snap-to-grid-box").removeClass("button-selected")}else{$("#grid-snap-to-grid").addClass("button-selected");$("#grid-snap-to-grid-box").addClass("button-selected")}JXG.Options.elements.snapToGrid=!JXG.Options.elements.snapToGrid},toggleSnapToPoint:function(){var e,t=JXG.Options.elements.snapToPoints;for(e in GUI.board.objects){if(GUI.board.objects[e].visProp.priv==false&&GUI.board.objects[e].elementClass==JXG.OBJECT_CLASS_POINT)GUI.board.objects[e].visProp.snaptopoints=!t}if(t){$("#grid-snap-to-point").removeClass("button-selected");$("#grid-snap-to-point-box").removeClass("button-selected")}else{$("#grid-snap-to-point").addClass("button-selected");$("#grid-snap-to-point-box").addClass("button-selected")}JXG.Options.elements.snapToPoints=!JXG.Options.elements.snapToPoints},updateNdollarStr:function(e){GUI.nd_mstrokestr="";GUI.nd_mstrokestr+="{ name: 'XYZ', nbr: 1, data: new Array(\n	new Array(";for(var t=0;t<e.length;t++){GUI.nd_mstrokestr+="["+e[t].scrCoords[1]+","+e[t].scrCoords[2]+"]";if(t<e.length-1)GUI.nd_mstrokestr+=","}GUI.nd_mstrokestr+=")\n) };"},updateSnapshotControls:function(){GUI.enableMakeSnapshot(false);GUI.enablePrevSnapshot(false);GUI.enableNextSnapshot(false);for(var e=0;e<GUI.restore_state.length;e++){if(GUI.unredo==GUI.restore_state[e].step)GUI.enableMakeSnapshot(true);if(GUI.unredo>GUI.restore_state[e].step)GUI.enablePrevSnapshot(true);if(GUI.unredo<GUI.restore_state[e].step)GUI.enableNextSnapshot(true)}},watchGallery:function(){if(typeof GUI.currentConstruction==="undefined")GUI.currentConstruction=GUI.Gallery.createStorageItem(GUI.Lang.std.untitled+"-"+(GUI.fileCounter+1));GUI.saveConstruction(GUI.currentConstruction,false);$("div#mainWindow").addClass("hidden");var e=GUI.navZoomVisible;for(var t in GUI.dialog)if(GUI.dialog.hasOwnProperty(t))if(GUI.dialog[t]!=null)GUI.dialog[t].removeDialog();GUI.navZoomVisible=e;GUI.modeBeforeGallerySwitch=GUI.mode;GUI.switchMode(null,true);GUI.Gallery.switchGallery()},deactivatePropToolAction:function(){if($("#control-boardprop").hasClass("button-selected"))GUI.activateBoardControls();
GUI.deselectAllToolButtonsAndRemoveActions();if(GUI.action!="standard")GUI[GUI.action+"Action"]()},activateToolControls:function(){if(!$("#control-tools").hasClass("button-selected")){if(GUI.action!="standard")GUI[GUI.action+"Action"]();$("#control-tools").addClass("button-selected");$("#control-tools-box").addClass("button-selected");$("#caption-tools").removeClass("not-displayed")}else{$("#control-tools").removeClass("button-selected");$("#control-tools-box").removeClass("button-selected");$("#caption-tools").addClass("not-displayed");if(!$("#keyboardPanel").hasClass("not-displayed")){$("#keyboardPanel").addClass("not-displayed")}GUI.deselectAllToolButtonsAndRemoveActions()}GUI.resizeToolbar()},activateActionControls:function(){if(!$("#control-actions").hasClass("button-selected")){$("#control-actions").addClass("button-selected");$("#caption-actions").removeClass("not-displayed")}else{$("#control-actions").removeClass("button-selected");$("#caption-actions").addClass("not-displayed");if(GUI.dialog["transform"]!=null)GUI.dialog["transform"].removeDialog();GUI.removeActionEvent(true)}},activateBoardControls:function(){if(!$("#control-boardprop").hasClass("button-selected")){if(GUI.action!="standard")GUI.removeActionEvent(true);GUI.deselectAllToolButtonsAndRemoveActions();GUI.showPropertyPanel("board",false);GUI.showPanel(true,GUI.ctxPosProps);$("#control-boardprop").addClass("button-selected");$("#control-boardprop-box").addClass("button-selected");GUI.showStatusPanel(GUI.Lang.std.prop_instruct,0,function(){GUI.deselectAllToolButtonsAndRemoveActions();GUI.showPanel(false,0)});GUI.addToolEvent(GUI.down_event,GUI.callOnClick,GUI.contextMenu)}else{$("#control-boardprop").removeClass("button-selected");$("#control-boardprop-box").removeClass("button-selected");GUI.removeActionEvent(true)}},activateConstDragMode:function(){if(!$("#control-mode").hasClass("button-selected")){GUI.deactivatePropToolAction()}},addTooltips:function(){$("#actions-mirror").attr("title",GUI.Lang.std.mirror_objects);$("#actions-copy").attr("title",GUI.Lang.std.copy_objects);$("#actions-ablate").attr("title",GUI.Lang.std.ablate_objects);$("#actions-transform").attr("title",GUI.Lang.std.transform_objects);$("#angle-button-rightangle-box").attr("title",GUI.Lang.std.right_angle);$("#angle-radius-label").attr("title",GUI.Lang.std.radius);$("#angle-radius-field").attr("title",GUI.Lang.std.radius);$("#angle-related-measure-box").attr("title",GUI.Lang.std.measure);$("#board-axis-visible").attr("title",GUI.Lang.std.axis_visibility);$("#board-clear-all").attr("title",GUI.Lang.std.board_clear_all);$("#board-clear-traces").attr("title",GUI.Lang.std.clear_traces);$("#circle-radius-label").attr("title",GUI.Lang.std.radius);$("#circle-radius").attr("title",GUI.Lang.std.radius);$("#color-field-minus").attr("title",GUI.Lang.std.minus);$("#color-field-plus").attr("title",GUI.Lang.std.plus);$("#image-size-minus").attr("title",GUI.Lang.std.minus);$("#image-size-plus").attr("title",GUI.Lang.std.plus);$("#color-field-label").attr("title",GUI.Lang.std.stroke_width+" / "+GUI.Lang.std.element_opacity+" / "+GUI.Lang.std.text_size);$("#color-field").attr("title",GUI.Lang.std.stroke_width+" / "+GUI.Lang.std.element_opacity+" / "+GUI.Lang.std.text_size);$("#color-box").attr("title",GUI.Lang.std.colors);$("#color-tab-stroke").attr("title",GUI.Lang.std.stroke_settings);$("#color-tab-fill").attr("title",GUI.Lang.std.fill_settings);$("#color-tab-label").attr("title",GUI.Lang.std.label_settings);$("#control-undo-box").attr("title",GUI.Lang.std.control_undo);$("#control-redo-box").attr("title",GUI.Lang.std.control_redo);$("#control-drag-box").attr("title",GUI.Lang.std.drag_mode);$("#control-construct-box").attr("title",GUI.Lang.std.construct_mode);$("#control-tools-box").attr("title",GUI.Lang.std.tools);$("#control-actions-box").attr("title",GUI.Lang.std.actions);$("#control-actions-hide-box").attr("title",GUI.Lang.std.hide_objects);$("#control-actions-del-box").attr("title",GUI.Lang.std.del_objects);$("#control-boardprop-box").attr("title",GUI.Lang.std.navtoolprop);$("#control-gallery-box").attr("title",GUI.Lang.std.gallery);$("#grid-snap-to-grid").attr("title",GUI.Lang.std.snap_to_grid);$("#grid-snap-to-point").attr("title",GUI.Lang.std.snap_to_point);$("#grid-visible-box").attr("title",GUI.Lang.std.grid_visible);$("#textInput").attr("title",GUI.Lang.std.identifier);$("#label-visible").attr("title",GUI.Lang.std.label_visible);$("#line-button-first").attr("title",GUI.Lang.std.line_segment);$("#line-button-last").attr("title",GUI.Lang.std.line_segment);$("#line-button-arrow-first").attr("title",GUI.Lang.std.arrow);$("#line-button-arrow-last").attr("title",GUI.Lang.std.arrow);$("#line-related-measure-box").attr("title",GUI.Lang.std.measure);$("#line-related-midpoint").attr("title",GUI.Lang.std.midpoint);$("#measure-box").attr("title",GUI.Lang.std.measure);$("#nav-up").attr("title",GUI.Lang.std.move_up);$("#nav-down").attr("title",GUI.Lang.std.move_down);$("#nav-left").attr("title",GUI.Lang.std.move_left);$("#nav-right").attr("title",GUI.Lang.std.move_right);$("#nav-center").attr("title",GUI.Lang.std.center);$("#nav-zoom-in").attr("title",GUI.Lang.std.zoom_in);$("#nav-zoom-out").attr("title",GUI.Lang.std.zoom_out);$("#nav-zoom-100").attr("title",GUI.Lang.std.zoom_100);$("#key-curve").attr("title",GUI.Lang.std.graphlist);$("#key-hwr").attr("title",GUI.Lang.std.hwr);$("#key-slide").attr("title",GUI.Lang.std.slidelist);$("#key-left").attr("title",GUI.Lang.std.left);$("#key-shift").attr("title",GUI.Lang.std.shift);$("#key-right").attr("title",GUI.Lang.std.right);$("#key-go").attr("title",GUI.Lang.std.ok_return);$("#key-backspace").attr("title",GUI.Lang.std.backspace);$("#key-clear").attr("title",GUI.Lang.std.delete_all);$("#btn-hwr-recognize").attr("title",GUI.Lang.std.recognize);$("#btn-hwr-clear").attr("title",GUI.Lang.std.clear);$("#point-coord").attr("title",GUI.Lang.std.coords);$("#point-glider-button-glider").attr("title",GUI.Lang.std.glider);$("#point-glider-button-free").attr("title",GUI.Lang.std.freePoint);$("#point-size").attr("title",GUI.Lang.std.element_size);$("#point-size-plus").attr("title",GUI.Lang.std.plus);$("#point-size-minus").attr("title",GUI.Lang.std.minus);$("#point-style").attr("title",GUI.Lang.std.point_face);$("#status-fix-box").attr("title",GUI.Lang.std.status_fix);$("#status-trace-box").attr("title",GUI.Lang.std.trace);$("#sector-related-measure-box").attr("title",GUI.Lang.std.measure);$("#tools-slider").attr("title",GUI.Lang.std.slide);$("#tools-anglesector").attr("title",GUI.Lang.std.angle_sector);$("#tools-circlesector").attr("title",GUI.Lang.std.circle_sector);$("#control-actions-function").attr("title",GUI.Lang.std.function_plot);$("#tools-polygon").attr("title",GUI.Lang.std.poly);$("#tools-regpolygon").attr("title",GUI.Lang.std.regular+" "+GUI.Lang.std.poly);$("#tools-text").attr("title",GUI.Lang.std.text_element);$("#angle-button-right-angle-label").html(GUI.Lang.std.right_angle);$("#angle-radius-field-label").html(GUI.Lang.std.radius);$("#angle-related-measure-label").html(GUI.Lang.std.measure);$("#axis-scale-group-label").html(GUI.Lang.std.axis_scale);$("#grid-scale-group-label").html(GUI.Lang.std.axis_scale);$("#board-axis-visible-label").html(GUI.Lang.std.axis_visibility);$("#board-clear-all-label").html(GUI.Lang.std.board_clear_all);$("#board-clear-traces-label").html(GUI.Lang.std.clear_traces);$("#board-navzoom-label").html(GUI.Lang.std.nav);$("#label-sticky-label").html(GUI.Lang.std.stickyLabel);$("#circle-radius-field-label").html(GUI.Lang.std.radius);$("#control-actions-hide-label").html(GUI.Lang.std.hide);$("#control-actions-measure-label").html(GUI.Lang.std.measure);$("#control-actions-del-label").html(GUI.Lang.std.del);$("#control-boardprop-label").html(GUI.Lang.std.control_boardprop);$("#control-construct-label").html(GUI.Lang.std.control_construct);$("#control-drag-label").html(GUI.Lang.std.control_drag);$("#control-gallery-label").html(GUI.Lang.std.gallery);$("#control-redo-label").html(GUI.Lang.std.control_redo);$("#control-tools-label").html(GUI.Lang.std.control_tools);$("#control-undo-label").html(GUI.Lang.std.control_undo);$("#grid-snap-to-grid-label").html(GUI.Lang.std.grid_snap_to_grid);$("#grid-snap-to-point-label").html(GUI.Lang.std.grid_snap_to_point);$("#grid-visible-label").html(GUI.Lang.std.grid_visible);$("#textInput-label").html(GUI.Lang.identifier);$("#line-button-label").html(GUI.Lang.std.line_button);$("#line-button-arrow-label").html(GUI.Lang.std.arrow);$("#line-related-measure-label").html(GUI.Lang.std.measure);$("#measure-label").html(GUI.Lang.std.measure);$("#btn-hwr-recognize").html(GUI.Lang.std.recognize);$("#btn-hwr-clear").html(GUI.Lang.std.clear);$("#point-coord-label").html(GUI.Lang.std.point_coord);$("#point-size-field-label").html(GUI.Lang.std.element_size);$("#point-style-label").html(GUI.Lang.std.point_style);$("#recognition_line").html(GUI.Lang.std.line);$("#recognition_segment").html(GUI.Lang.std.line_segment);$("#recognition_ray").html(GUI.Lang.std.ray);$("#recognition_midpoint").html(GUI.Lang.std.midpoint);$("#recognition_circle").html(GUI.Lang.std.circle);$("#recognition_circle2points").html(GUI.Lang.std.circle2points);$("#recognition_triangle").html(GUI.Lang.std.triangle);$("#recognition_normal").html(GUI.Lang.std.normal);$("#recognition_reflection").html(GUI.Lang.std.reflect);$("#recognition_tangent").html(GUI.Lang.std.tangent);$("#recognition_parallel").html(GUI.Lang.std.parallel);$("#recognition_polygon").html(GUI.Lang.std.poly);$("#recognition_sector").html(GUI.Lang.std.sect);$("#recognition_bisector").html(GUI.Lang.std.bisector);$("#recognition_quadrilateral").html(GUI.Lang.std.quadrilateral);$("#recognition_perpendicularBisector").html(GUI.Lang.std.perpendicularBisector);$("#sector-related-measure-label").html(GUI.Lang.std.measure);$("#slider-interval-label").html(GUI.Lang.std.valueRange);$("#sliderpoints-label").html(GUI.Lang.std.startEnd);$("#status-fix-label").html(GUI.Lang.std.status_fix);$("#status-trace-label").html(GUI.Lang.std.trace);$("#tools-slider-label").html(GUI.Lang.std.slide);$("#tools-anglesector-label").html(GUI.Lang.std.angle_element);$("#tools-circlesector-label").html(GUI.Lang.std.sect);$("#control-actions-function-label").html(GUI.Lang.std.tools_function);$("#tools-ruler-label").html(GUI.Lang.std.ruler);$("#tools-regpolygon-label").html(GUI.Lang.std.tools_regpolygon);$("#tools-text-label").html(GUI.Lang.std.text_element)},disableConstDragMode:function(){$("#control-mode").addClass("button-disabled");$("#control-drag-box").unbind();$("#control-construct-box").unbind();$("#control-mode").bind(GUI.click_event,function(){if(!GUI.didToolbarScroll)GUI.activateConstDragMode()})},enableConstDragMode:function(){$("#control-mode").removeClass("button-disabled");$("#control-drag-box").bind(GUI.click_event,function(e){if(e&&!e.handled){e.handled=true;if(!GUI.didToolbarScroll)GUI.toggleDrag()}});$("#control-construct-box").bind(GUI.click_event,function(e){if(e&&!e.handled){e.handled=true;if(!GUI.didToolbarScroll)GUI.toggleConstruct()}});$("#control-mode").unbind()},zoom100:function(){while(GUI.zoomLevel<0)$("#nav-zoom-in").trigger(GUI.tap_event);while(GUI.zoomLevel>0)$("#nav-zoom-out").trigger(GUI.tap_event)},zoomIn:function(){if(GUI.zoomLevel>=11)return;GUI.zoomLevel++;GUI.board.zoomIn()},zoomOut:function(){if(GUI.zoomLevel<=-11)return;GUI.zoomLevel--;GUI.board.zoomOut()},initControls:function(){$(document).on("keydown",GUI.keyHandler);JXG.addEvent(document,GUI.up_event,GUI.timerHandler,GUI);JXG.addEvent(GUI.board.containerObj,GUI.move_event,GUI.magMove,GUI);JXG.addEvent(GUI.board.containerObj,GUI.up_event,function(e){window.setTimeout(function(){GUI.magMove(e)},300)},GUI);JXG.addEvent(GUI.getId("toolbar-overflow"),"mousewheel",function(e){var t=GUI.getId("toolbar-overflow");t.scrollLeft-=e.wheelDelta*5;GUI.indicateScroll(t.scrollLeft)},GUI);JXG.addEvent(GUI.getId("toolbar-overflow"),"DOMMouseScroll",function(e){var t=GUI.getId("toolbar-overflow");t.scrollLeft-=e.detail*5;GUI.indicateScroll(t.scrollLeft)},GUI);JXG.addEvent(GUI.getId("toolbar-overflow"),"scroll",function(){GUI.indicateScroll(GUI.getId("toolbar-overflow").scrollLeft)},GUI);if(JXG.Options.device=="tablet"){$("#toolbar").bind(GUI.move_event,function(){GUI.didToolbarScroll=true});$("#toolbar").bind(GUI.up_event,function(){GUI.didToolbarScroll=false})}$("#control-undo-box").bind(GUI.tap_event,GUI.undo);$("#control-redo-box").bind(GUI.tap_event,GUI.redo);$("#control-actions-function-box").bind(GUI.click_event,function(){if(!GUI.didToolbarScroll)GUI.plotAction()});$("#control-tools-box").bind(GUI.click_event,function(){if(!GUI.didToolbarScroll)GUI.activateToolControls()});$("#control-actions-box").bind(GUI.click_event,function(){if(!GUI.didToolbarScroll)GUI.activateActionControls()});$("#actions-ablate").bind(GUI.click_event,function(){if(!GUI.didToolbarScroll)GUI.ablateAction()});$("#actions-transform").bind(GUI.click_event,function(){if(!GUI.didToolbarScroll)GUI.transfAction()});$("#tools-slider-box").bind(GUI.click_event,function(){if(!GUI.didToolbarScroll)GUI.slider()});$("#tools-regpolygon-box").bind(GUI.click_event,function(){if(!GUI.didToolbarScroll)GUI.polygon()});$("#tools-anglesector-box").bind(GUI.click_event,function(){if(!GUI.didToolbarScroll)GUI.sector("angle")});$("#tools-circlesector-box").bind(GUI.click_event,function(){if(!GUI.didToolbarScroll)GUI.sector("circle")});$("#tools-ruler-box").bind(GUI.click_event,function(){if(!GUI.didToolbarScroll)GUI.ruler()});$("#tools-text-box").bind(GUI.click_event,function(){if(!GUI.didToolbarScroll)GUI.text()});$("#control-actions-hide-box").bind(GUI.click_event,function(){if(!GUI.didToolbarScroll)GUI.hideAction()});$("#control-actions-del-box").bind(GUI.click_event,function(){if(!GUI.didToolbarScroll)GUI.delAction()});$("#control-actions-measure-box").bind(GUI.click_event,function(){if(!GUI.didToolbarScroll)GUI.measureAction()});$("#control-boardprop-box").bind(GUI.click_event,function(){if(!GUI.didToolbarScroll)GUI.activateBoardControls()});$("#control-gallery-box").bind(GUI.tap_event,function(){GUI.watchGallery()});$("#grid-visible-box").bind(GUI.tap_event,function(){GUI.toggleGrid()});$("#grid-snap-to-grid-box").bind(GUI.tap_event,function(){GUI.toggleSnapToGrid()});$("#grid-snap-to-point-box").bind(GUI.tap_event,function(){GUI.toggleSnapToPoint()});$("#board-axis-visible-box").on(GUI.tap_event,function(){GUI.toggleAxis()});$("#board-clear-all-box").on(GUI.tap_event,function(){GUI.clearBoard()});$("#board-clear-traces-box").on(GUI.tap_event,function(){GUI.board.clearTraces()});$("#board-navzoom-box").on(GUI.tap_event,function(){if(GUI.dialog["navzoom"]!=null)GUI.dialog["navzoom"].removeDialog();else{new GUI.Dialog("navzoom",GUI.navZoomHtml,"",[0,0],[0,0],0,function(){$("#board-navzoom-box").removeClass("button-selected");$("#board-navzoom").removeClass("button-selected");GUI.navZoomVisible=false});$("#nav-left").bind(GUI.tap_event,function(){GUI.board.clickLeftArrow()});$("#nav-right").bind(GUI.tap_event,function(){GUI.board.clickRightArrow()});$("#nav-up").bind(GUI.tap_event,function(){GUI.board.clickDownArrow()});$("#nav-down").bind(GUI.tap_event,function(){GUI.board.clickUpArrow()});$("#nav-zoom-100").bind(GUI.tap_event,function(){GUI.zoom100()});$("#nav-zoom-in").bind(GUI.tap_event,function(){GUI.zoomIn()});$("#nav-zoom-out").bind(GUI.tap_event,function(){GUI.zoomOut()});$("#nav-center").bind(GUI.tap_event,function(){GUI.board.moveOrigin(GUI.board.canvasWidth/2,GUI.board.canvasHeight/2)});$("#board-navzoom-box").addClass("button-selected");$("#board-navzoom").addClass("button-selected");GUI.navZoomVisible=true}});$("#files").bind("change",function(e){GUI.imageUploadHandler(e)});$("#key-left").bind(GUI.click_event,function(){GUI.Kbd.left()});$("#key-shift").bind(GUI.click_event,function(){GUI.Kbd.shift()});$("#key-right").bind(GUI.click_event,function(){GUI.Kbd.right()});$("#key-backspace").bind(GUI.click_event,function(){GUI.Kbd.deleteLast()});$("#key-clear").bind(GUI.click_event,function(){GUI.Kbd.deleteLast(true)});$("#keyc-a").bind(GUI.click_event,function(){GUI.Kbd.insertString(GUI.Kbd.shiftCase("a"))});$("#keyc-b").bind(GUI.click_event,function(){GUI.Kbd.insertString(GUI.Kbd.shiftCase("b"))});$("#keyc-c").bind(GUI.click_event,function(){GUI.Kbd.insertString(GUI.Kbd.shiftCase("c"))});$("#keyc-d").bind(GUI.click_event,function(){GUI.Kbd.insertString(GUI.Kbd.shiftCase("d"))});$("#keyc-e").bind(GUI.click_event,function(){GUI.Kbd.insertString(GUI.Kbd.shiftCase("e"))});$("#keyc-f").bind(GUI.click_event,function(){GUI.Kbd.insertString(GUI.Kbd.shiftCase("f"))});$("#keyc-g").bind(GUI.click_event,function(){GUI.Kbd.insertString(GUI.Kbd.shiftCase("g"))});$("#keyc-h").bind(GUI.click_event,function(){GUI.Kbd.insertString(GUI.Kbd.shiftCase("h"))});$("#keyc-i").bind(GUI.click_event,function(){GUI.Kbd.insertString(GUI.Kbd.shiftCase("i"))});$("#keyc-j").bind(GUI.click_event,function(){GUI.Kbd.insertString(GUI.Kbd.shiftCase("j"))});$("#keyc-k").bind(GUI.click_event,function(){GUI.Kbd.insertString(GUI.Kbd.shiftCase("k"))});$("#keyc-l").bind(GUI.click_event,function(){GUI.Kbd.insertString(GUI.Kbd.shiftCase("l"))});$("#keyc-m").bind(GUI.click_event,function(){GUI.Kbd.insertString(GUI.Kbd.shiftCase("m"))});$("#keyc-n").bind(GUI.click_event,function(){GUI.Kbd.insertString(GUI.Kbd.shiftCase("n"))});$("#keyc-o").bind(GUI.click_event,function(){GUI.Kbd.insertString(GUI.Kbd.shiftCase("o"))});$("#keyc-p").bind(GUI.click_event,function(){GUI.Kbd.insertString(GUI.Kbd.shiftCase("p"))});$("#keyc-q").bind(GUI.click_event,function(){GUI.Kbd.insertString(GUI.Kbd.shiftCase("q"))});$("#keyc-r").bind(GUI.click_event,function(){GUI.Kbd.insertString(GUI.Kbd.shiftCase("r"))});$("#keyc-s").bind(GUI.click_event,function(){GUI.Kbd.insertString(GUI.Kbd.shiftCase("s"))});$("#keyc-t").bind(GUI.click_event,function(){GUI.Kbd.insertString(GUI.Kbd.shiftCase("t"))});$("#keyc-u").bind(GUI.click_event,function(){GUI.Kbd.insertString(GUI.Kbd.shiftCase("u"))});$("#keyc-v").bind(GUI.click_event,function(){GUI.Kbd.insertString(GUI.Kbd.shiftCase("v"))});$("#keyc-w").bind(GUI.click_event,function(){GUI.Kbd.insertString(GUI.Kbd.shiftCase("w"))});$("#keyc-x").bind(GUI.click_event,function(){GUI.Kbd.insertString(GUI.Kbd.shiftCase("x"))});$("#keyc-y").bind(GUI.click_event,function(){GUI.Kbd.insertString(GUI.Kbd.shiftCase("y"))});$("#keyc-z").bind(GUI.click_event,function(){GUI.Kbd.insertString(GUI.Kbd.shiftCase("z"))});$("#key-squote").bind(GUI.click_event,function(){GUI.Kbd.insertString("'")});$("#key-sin").bind(GUI.click_event,function(){GUI.Kbd.insertString("sin(x)")});$("#key-cos").bind(GUI.click_event,function(){GUI.Kbd.insertString("cos(x)")});$("#key-tan").bind(GUI.click_event,function(){GUI.Kbd.insertString("tan(x)")});$("#key-exp").bind(GUI.click_event,function(){GUI.Kbd.insertString("exp(x)")});$("#key-log").bind(GUI.click_event,function(){GUI.Kbd.insertString("log(x)")});$("#key-pow").bind(GUI.click_event,function(){GUI.Kbd.insertString("pow(2,x)")});$("#key-abs").bind(GUI.click_event,function(){GUI.Kbd.insertString("abs(x)")});$("#key-sqrt").bind(GUI.click_event,function(){GUI.Kbd.insertString("sqrt(x)")});$("#key-X").bind(GUI.click_event,function(){GUI.Kbd.insertString("X()")});$("#key-Y").bind(GUI.click_event,function(){GUI.Kbd.insertString("Y()")});$("#key-0").bind(GUI.click_event,function(){GUI.Kbd.insertString("0")});$("#key-1").bind(GUI.click_event,function(){GUI.Kbd.insertString("1")});$("#key-2").bind(GUI.click_event,function(){GUI.Kbd.insertString("2")});$("#key-3").bind(GUI.click_event,function(){GUI.Kbd.insertString("3")});$("#key-4").bind(GUI.click_event,function(){GUI.Kbd.insertString("4")});$("#key-5").bind(GUI.click_event,function(){GUI.Kbd.insertString("5")});$("#key-6").bind(GUI.click_event,function(){GUI.Kbd.insertString("6")});$("#key-7").bind(GUI.click_event,function(){GUI.Kbd.insertString("7")});$("#key-8").bind(GUI.click_event,function(){GUI.Kbd.insertString("8")});$("#key-9").bind(GUI.click_event,function(){GUI.Kbd.insertString("9")});$("#key-inf").bind(GUI.click_event,function(){GUI.Kbd.insertString("INFINITY")});$("#key-pi").bind(GUI.click_event,function(){GUI.Kbd.insertString("PI")});$("#key-eu").bind(GUI.click_event,function(){GUI.Kbd.insertString("EULER")});$("#key-dot").bind(GUI.click_event,function(){GUI.Kbd.insertString(".")});$("#key-comma").bind(GUI.click_event,function(){GUI.Kbd.insertString(",")});$("#key-space").bind(GUI.click_event,function(){GUI.Kbd.insertString(" ")});$("#key-argx").bind(GUI.click_event,function(){GUI.Kbd.insertString("x")});$("#key-div").bind(GUI.click_event,function(){GUI.Kbd.insertString("/")});$("#key-mult").bind(GUI.click_event,function(){GUI.Kbd.insertString("*")});$("#key-circ").bind(GUI.click_event,function(){GUI.Kbd.insertString("^")});$("#key-plus").bind(GUI.click_event,function(){GUI.Kbd.insertString("+")});$("#key-minus").bind(GUI.click_event,function(){GUI.Kbd.insertString("-")});$("#key-percent").bind(GUI.click_event,function(){GUI.Kbd.insertString("%")});$("#key-left-bracket").bind(GUI.click_event,function(){GUI.Kbd.insertString("(")});$("#key-right-bracket").bind(GUI.click_event,function(){GUI.Kbd.insertString(")")});$("#key-left-tbracket").bind(GUI.click_event,function(){GUI.Kbd.insertString("[")});$("#key-right-tbracket").bind(GUI.click_event,function(){GUI.Kbd.insertString("]")});$("#key-left-cbracket").bind(GUI.click_event,function(){GUI.Kbd.insertString("{")});$("#key-right-cbracket").bind(GUI.click_event,function(){GUI.Kbd.insertString("}")});$("#key-int").bind(GUI.click_event,function(){GUI.Kbd.insertString("integrate()")});$("#key-diff").bind(GUI.click_event,function(){GUI.Kbd.insertString("differentiate()")});$("#key-dist").bind(GUI.click_event,function(){GUI.Kbd.insertString("dist()")});$("#key-go").bind(GUI.click_event,function(){GUI.Kbd.close()});$("#key-slide").bind(GUI.click_event,function(){GUI.Kbd.sliderPanel()});$("#key-curve").bind(GUI.click_event,function(){GUI.Kbd.curvePanel()});$("#key-hwr").bind(GUI.click_event,function(){GUI.Kbd.hwrPanel()});$("#btn-hwr-clear").bind(GUI.click_event,function(){GUI.clearStrokes()});$("#btn-hwr-recognize").bind(GUI.click_event,function(){GUI.recognizeHwr();GUI.clearStrokes()});var e=GUI.getId("hwrCanvas"),t=GUI.getId("kb-textbox");JXG.addEvent(e,GUI.down_event,JXGHWR.downEvent,JXGHWR);JXG.addEvent(e,GUI.move_event,JXGHWR.moveEvent,JXGHWR);JXG.addEvent(document,GUI.up_event,JXGHWR.upEvent,JXGHWR);JXGHWR.init(e,t);JXGHWR.loadStrokes();GUI.switchHandling(GUI.Settings.get("leftright"))}});function init_jsx_gui(e){console.log("init_jsx_gui called");if(GUI.firstInit){console.log("first Init");$("body").css("overflow-y","auto");$("#content").css("position","absolute");$("#content").css("top",$("#toolbar").outerHeight());$("#content").css("padding","0px");$("[id^=key-]").css("cursor","default");window.onresize=function(){GUI.resizeToolbar();GUI.resizeBoard()};GUI.detectDefaultLanguage();GUI.Settings.load();GUI.Settings.set("language",GUI.Settings.get("language"));GUI.Settings.set("magnify",GUI.Settings.get("magnify"));GUI.insertStrokes(GUI.nd_recognizer.Multistrokes);GUI.initSketchBoard(e)}GUI.resizeToolbar()}(function(){JXG.SketchReader.generateJCodeMeta=function(){return GUI.generateJCode.apply(GUI,arguments)};JXG.SketchReader.id=function(){return GUI.id()};JXG.Draw.recordStepMeta=function(){return GUI.recordStep.apply(GUI,arguments)};JXG.EventEmitter.eventify(GUI)})();GUI.Lang={};GUI.Lang.Map=[["de","en","fr","es","pt"],["Deutsch","English","Français","Español","Português"]];GUI.Lang.de=0;GUI.Lang.en=1;GUI.Lang.fr=2;GUI.Lang.es=3;GUI.Lang.pt=4;GUI.Lang.strings={ablateOnIntersection:["Abtragen auf","Copy on:","Copier vers","Copiar en","Copiar em"],ablate_objects:["Objekte abtragen","Copy objects","Copier les objets","Copiar objetos","Copiar objetos"],ablation_instruct:["Klicke auf das Objekt (Kreis / Strecke), das abgetragen werden soll.","Click on the object (circle / line segment) you want to copy.","Cliquer sur l&#39objet à copier(cercle/droite/segment).","Clic en objeto (círculo, línea, segmento) que desea copiar","Clique no objeto (círculo / reta /segmento) que você deseja copiar."],actions:["Aktions-Menü","Actions menu","Menu des actions","Menú de acciones","Menu de ações"],anglesector_selection:["Markiere: Punkt - Scheitel - Punkt","Mark: Point - Vertex - Point","Marquer les 3 points qui définissent le secteur angulaire","Marcar tres puntos para definir sector angular","Marque três pontos para definir o setor angular."],angle_button_rightangle:["Rechter Winkel","Right angle","Angle droit","Ángulo recto","Ângulo reto"],angle_element:["Winkel","Angle","Angle","Ángulo","Ângulo"],angle_measure:["Winkel messen","Measure angle","Mesurer angle","Medir ángulo","Medida de ângulo"],angle_sector:["Winkelsektor","Angle sector","Secteur angulaire","Sector angular","Setor angular"],arrow:["Pfeilspitzen","Arrow heads","Flèches","Cabeza de flechas","Tipos de setas"],axis:["Achse","Axis","Axe","Eje","Eixo"],axispoint:["Achsenpunkt","Axis point","Point de l&#39axe","Punto en eje","Ponto do eixo"],axis_scale:["Skalierung","Scale","Échelle","Escala","Escala"],axis_visibility:["Achsen","Axes","Axes","Ejes","Eixos"],back:["Zurück","Back","Retour","Volver","Voltar"],backspace:["Backspace","Backspace","","",""],bisector:["Winkelhalbierende","Angular bisector","Bissectrice","Bisectriz","Bissetriz"],board_clear_all:["Alles löschen","Remove all","Tout effacer","Eliminar todo","Remover tudo"],bottom:["Unten","Bottom","Bas","Abajo","Embaixo"],cancel:["Abbrechen","Cancel","Annule","Cancelar","Cancelar"],cantoverwrite:["Datei kann nicht überschrieben werden!","File already exists and can not be overwritten!","Le fichier existe déjà et ne peut pas être écraser !","Archivo existente y no puede volver a grabarse","O arquivo já existe e não pode ser sobrescrito."],cas:["Punkt","Point","Point","Punto","Ponto"],center:["Zentrieren","Center","Centrer","Centro","Centro"],chooseformat:["Sie müssen mindestens ein Dateiformat auswählen.","You have to choose at least one file format.","Vous devez choisir au moins un format de fichier","Escoger al menos un formato de archivo","Você deve escolher pelo menos um formato de arquivo"],choosesector:["Art des Sektors","Choose the sector type","Choisir le type de secteur","Escoger el tipo de sector","Escolha o tipo de setor"],circle:["Kreis","Circle","Cercle","Círculo","Círculo"],circle2points:["Kreis (Mittelpunkt - Punkt)","Circle (2P)","Cercle (2P)","Círculo (2 puntos)","Círculo (2P)"],circlesector_selection:["Markiere: Punkt - Mittelpunkt - Punkt","Mark: Point - Midpoint- Point","Marquer les trois points qui définissent le secteur circulaire.","Marcar tres puntos para definir sector circular","Marque os três pontos para definir o setor circular."],circle_sector:["Kreissektor","Circle sector","Secteur circulaire","Sector circular","Setor circular"],clear:["Lösche Schriftzug","Delete Stroke","","",""],clear_reassure:["Wirklich alle Objekte löschen?","Do you really want to delete all objects on the board?","Voulez-vous vraiment supprimer tous les objets ?","¿Realmente desea eliminar todos los objetos del plano? ","Você deseja realmente apagar todos os objetos?"],clear_traces:["Spuren löschen","Clear traces","Effacer traces","Borrar trazas","Limpar traços"],clicktoconnect:["Verbindung herstellen mit","Connect with","Connecter avec","Conectar con","Conectar com"],clone:["Klonen","Clone","Cloner","Clonar","Clonar"],colors:["Farben","Colors","Couleurs","Colores","Cores"],confirmoverwrite:["Datei existiert bereits, überschreiben?","File already exists. Overwrite?","Le fichier existe déjà, écraser ?","Archivo existente, ¿grabar otra vez?","O arquivo já existe. Sobrescrever?"],confirmreset:["Bist du sicher? Es werden alle Einstellungen und Konstruktionen gelöscht!","Are you sure? All settings and constructions will be deleted!","Êtes-vous sûr ? Tous les paramètres et les constructions seront effacés.","¿Está seguro? Todas las configuraciones y objetos serán eliminados","Você tem certeza? Todas as configurações e construção serão apagadas!"],conic:["Kegelschnitt","Conic","Conique","Cónica","Cônica"],connecting:["Verbinde mit Cloud-Speicher.","Connecting to storage provider","Connexion au service de stockage en ligne","Conectando con el proveedor de almacenamiento","Conectando-se com o servidor"],construct_mode:["Konstruktionsmodus aktivieren","Activate Construct-Mode","Activer le mode construction","Activar modo construcción","Ativar Modo-de-Construção"],"continue":["Weiter","Continue","Continuer","Terminar autenticación","Terminar autenticação."],control_boardprop:["Eigensch.","Prop.","Prop.","Propiedades","Prop."],control_construct:["Konstr.","Constr.","Constr.","Construir","Construir"],control_drag:["Ziehen","Drag","Draguer","Arrastrar","Arrastar"],control_redo:["Vor","Redo","Refaire","Rehacer","Refazer"],control_tools:["Mehr","More","Plus","Más","Mais"],control_undo:["Zurück","Undo","Défaire","Deshacer","Desfazer"],coords:["Koordinaten","Coordinates","Coordonnées","Coordenadas","Coordenadas"],copy_instruct:["Klicke auf das Objekt, das kopiert werden soll.","Click on the object you want to copy.","Cliquer sur un objet à copier.","Clic en el objeto a copiar","Clique no objeto que você deseja copiar."],copy_objects:["Objekt kopieren","Copy objects","Copier les objets","Copiar objetos","Copiar objetos"],corners:["Eckenanzahl (>=3 und <=35)","Number of corners (>2 and <36)","Nombre de sommets (>=3 et <=35)","Número de vértices (mayot que 2 y menor que 36)","Número de vértices (> 2 e < 36)"],corner_amount:["Eckenzahl: mindestens 3, höchstens 35","The number of corners should be >= 3 and <= 35","Le nombre de sommets doit être >=3 et <=35","El número de vértices debería ser mayor o igual a 3 y menor o igual a 35","O número de vértices deve ser >= 3 e <= 35"],cursor:["Fadenkreuz","Crosshair","Réticule (pointeur croix)","Cruz","Cruz"],curve:["Kurve","Curve","Courbe","Curva","Curva"],del:["Löschen","Delete","Effacer","Eliminar","Apagar"],delete_all:["Alles löschen","Delete All","","",""],delete_reassure:["Diese Konstruktion wirklich löschen?","Do you really want to delete this construction?","Voulez-vous vraiment supprimer cette construction ?","¿Realmente desea eliminar esta construcción?","Você deseja realmente apagar esta construção?"],del_instruct:["Klicke auf das Objekt, das gelöscht werden soll.","Click on the object you want to delete.","Cliquer sur l&#39objet à supprimer","Clic en el objeto a eliminar","Clique no objeto que você deseja apagar."],del_objects:["Objekte löschen","Delete objects","Supprimer les objets","Eliminar objetos",""],drag_file:["Ziehe eine GEONExT- oder sketchometry-Konstruktion in dieses Feld um sie Ihrer Galerie hinzuzufügen.","Drop a GEONExT or sketchometry file here to import it.","Lâcher ici un fichier GEONEXT ou sketchometry pour l&#39importer dans votre galerie.","Dejar aquí un archivo GEONExT o Sketchometry para importarlo","Arraste um arquivo GEONExT ou Sketchometry aqui para importá-lo."],drag_mode:["Zugmodus aktivieren","Activate Drag-Mode","Activer le mode draguer","Activar modo arrastrar","Ativar Modo-de-Arraste"],drawGlider:["Platziere Gleiter auf","Place glider on:","Placer un glisseur","Colocar punto sobre:","Colocar marca em:"],element_opacity:["Fülltransparenz","Fill opacity","Opacité","Transparencia","Transparência"],element_size:["Größe","Size","Taille","Tamaño","Tamanho"],emptyfolder:["Leerer Ordner","Empty folder","Dossier vide","Carpeta vacía","Arquivo vazio"],english:["Englisch","English","Anglais","Inglés","Inglês"],exp:["Export","Export","Exporter","Exportar","Exportar"],expo:["Exportieren in die Cloud","Export to the cloud","Exporter vers le stockage en ligne","Exportar a la nube","Exportar para a nuvem"],fill_settings:["Fülloptionen","Fill settings","Remplissage","Completar los ajustes","Definir configurações"],finishauth:["Beende Authentifizierung","Finish authentication.","Finir l&#39authentification","Terminar autenticación","Terminar autenticação."],fixed_glider:["Fixer Gleiter","Fixed glider","Glisseur fixe","Deslizador fijo","Marca fixa"],fixed_point:["Fixer Punkt","Fixed point","Point fixe","Punto fijo","Ponto fixo"],free:["Frei","Free","Libre","Libre","Livre"],freeGlider:["Gleiter → Freier Punkt ...","Glider → Free point ...","Glisseur → point libre","Punto en objeto → Punto libre...","Marca → Ponto livre ..."],freePoint:["Freier Punkt","Free point","Point libre","Punto libre","Ponto livre"],function_plot:["Funktionsgraph","Function plot","Graphe d&#39une fonction","Graficar función","Gráfico de função"],gallery:["Galerie","Gallery","Galerie","Galería","Galeria"],german:["Deutsch","German","Allemand","Alemán","Alemão"],glider:["Gleiter","Glider","Glisseur","Punto en objeto","Marca"],glider_instruct:["Objekt an gewünschten Ort ziehen.","Release your finger / the mouse button on the object, where you want to place the glider.","Relâcher le doigt/la souris sur l&#39objet où sera placé le glisseur.","Toque con su dedo (presione el botón del mouse) sobre el lugar del objeto onde quiere colocar la marca","Pressione o seu dedo / botão do mouse sobre o lugar do objeto onde você quer colocar a marca"],graphlist:["Funktions-Liste","Function list","","",""],grid_snap_to_grid:["Einrast. Gitter","Snap grid","Capture grille","Fijar a la cuadrícula","Capturar malha"],grid_snap_to_point:["Einrast. Pkt.","Snap points","Capture points","Fijar puntos","Capturar pontos"],grid_visible:["Zeige Gitter","Show grid","Voir grille","Exhibir cuadrícula","Exibir malha"],help:["Hilfe","Help","Aide","Ayuda","Ajuda"],hide:["Versteck.","Hide","Cacher","Ocultar","Esconder"],hide_instruct:["Klicke auf das Objekt, das angezeigt / versteckt werden soll.","Click on the object you want to (un-)hide.","Cliquer sur l&#39objet à cacher/montrer.","Clic en objeto a (des)ocultar","Clique no objeto que você quer esconder / exibir."],hide_objects:["Objekte verstecken","Hide objects","Cacher des objets","Objetos ocultos","Esconder objetos"],hwr:["Handschrift-Erkennung","Hand-Writing-Recognition","","",""],identifier:["Bezeichner","Identifier","Identifier","Identificar","Identificar"],img:["Bild","Image","Image","Imagen","Imagem"],imp:["Import","Import","Importer","Importar","Importar"],impo:["Importieren aus der Cloud","Import from the cloud","Importer depuis le stockage en ligne","Importar desde la nube","Importar da nuvem"],intersect:["Schnittpunkt","Intersection point","Point intersection","Intersección punto","Interseção pontos"],label_settings:["Texteigenschaften","Label settings","Paramètres des étiquettes","Ajustes de la etiqueta","Configurações de rótulos"],label_visible:["Zeige Text","Show label","Montrer létiquette","Exhibir rótulos","Exibir rótulo"],language:["Sprache","Language","Langage","Lenguaje","Idioma"],left:["Links","Left","Gauche","Izquierda","Esquerda"],leftrightmode:["Links- / Rechtshändermodus","Left/Right hand mode","Mode main gauche/droite","Modo mano izquierda (derecha)","Modo mão esquerda/direita"],len:["Länge","Length","Longueur","Largo","Comprimento"],length_measure:["Längenmessung","Measure length","Mesurer une longueur","Medir longitud","Medida de comprimento"],line:["Gerade","Line","Droite","Recta","Reta"],line_button:["Streckenenden","Line endings","Segment extrémités","Marcación de rectas","Marcação de retas"],line_segment:["Strecke","Segment","Segment","Segmento","Segmento"],loggedinas:["Eingeloggt als","Logged in as","Connecté en tant que","Inició sesión como ","Registrado como"],login:["Beginne Authentifizierung (öffnet neues Fenster).","Start authentication process (opens new window).","Début du processus d&#39authentification (ouvre une nouvelle fenêtre).","Comenzar proceso de autenticación (abrirá una nueva ventana)","Iniciar processo de autenticação (uma nova janela será aberta)"],logout:["Logout","Logout","Déconnecté","Cerrar sesión","Sair"],magnify:["Lupe","Magnifier","Loupe","Lupa","Lente de aumento"],mark_glider_object:["Markiere den Ort für den Gleiter.","Mark the object on which you want to place the glider.","Marquer lobjet sur lequel place un glisseur.","Marcar el objeto al que pertenecerá el punto","Marque o objeto no qual você deseja colocar a marca."],measure:["Messung","Measure","Mesurer","Medir","Medir"],measure_angle:["Markiere einen angezeigten Winkel oder drei Punkte zum Messen des Winkels.","Select either an angle object or three points to measure the corresponding angle value.","Sélectionner soit un angle, soit trois points pour obtenir la mesure de cet angle.","Seleccionar tres puntos para obtener la correspondiente medida angular","Selecione ou um ângulo ou três pontos para medir o ângulo correspondente."],measure_dist:["Markiere zwei Punkte oder ein Geradenstück zum Messen des Abstands oder der Länge.","Select either 2 points for measuring the distance between them or a line segment to measure its length.","Sélectionner soit 2 points pour obtenir leur distance, soit un segment pour obtenir sa longueur.","Seleccionar dos puntos para medir la distancia entre ellos ó el segmento que los une para medir su longitud","Selecione dois pontos para medir a distância entre eles ou segmento de reta para medir o seu comprimento."],measure_instruct:["Wählen Sie das/die zu messende/n Objekt/e aus ...","Choose the object(s) to be measured ...","","",""],measure_instruction:["Markiere einen Winkel-, Kreissektor oder ein Geradenstück, um dessen Länge zu messen.","Mark an angle, arc or segment to measure its length.","Marquer un angle, un arc ou un segment pour le mesurer.","",""],measure_sector:["Markiere einen Kreissektor, um dessen Bogenlänge zu messen.","Select a circle sector to measure the length of its arc.","Sélectionner un secteur circulaire pour mesurer la longueur de son arc. ","Seleccionar un sector circular para medir la longitud de su arco","Selecione um setor circular para medir o comprimento de seu arco."],measure_slider:["Wähle einen Schieberegler, um dessen Wert zu verwenden.","Select a slider to measure its value.","Sélectionner un curseur pour mesurer sa valeur.","Seleccionar un deslizador para obtener su valor","Selecione um controle deslizante para obter o seu valor."],midpoint:["Mittelpunkt","Midpoint","Milieu","Punto medio","Ponto médio"],minus:["Verringern","Decrease","Diminuer","Decrementa","Diminuir"],mir1_instruct:["Markiere eine Spiegelachse.","Click on the object which should act as mirror.","Cliquer sur l&#39objet qui sera axe de la symétrie (réflexion).","Clic en el objeto que será eleje de reflexión","Clique no objeto que será o centro da reflexão."],mir2_instruct:["Markiere das Objekt, das gespiegelt werden soll.","Click on the object you want to mirror.","Cliquer sur l&#39objet dont le symétrique est à construire.","Clic en el objeto que desea reflejar","Clique no objeto que você deseja refletir."],mirror_objects:["Objekte spiegeln","Mirror objects","Objets symétriques","Objeto reflejado","Refletir objetos"],move_down:["Nach unten bewegen","Move down","Vers le bas","Mover hacia abajo","Mover para baixo"],move_left:["Nach links bewegen","Move left","Vers la gauche","Mover a la izquierda","Mover para a esquerda"],move_right:["Nach rechts bewegen","Move right","Vers à droite","Mover a la derecha","Mover para a direito"],move_up:["Nach oben bewegen","Move up","Vers le haut","Mover hacia arriba","Mover para cima"],nav:["Zeige Zoom-Steuerung / Navigation","Show Zoom / Navigation controls","Montrer navigation","Exhibir navegación","Exibir navegação"],navtoolprop:["Zeichenfläche- / Objekt-Eigenschaften","Board / Object Properties","Propriété zone dessin / objets","Propiedades del plano ó de un objeto","Propriedades da Janela de Visualização / Objeto"],neu:["Neu","New","Nouveau","Nuevo","Novo"],newConst:["Neue Konstruktion anlegen","Create new construction","Créer une nouvelle construction","Crear una nueva construcción","Criar uma nova contrução"],newfoldername:["Name des neuen Ordners","Name of the new folder","Nom du nouveau dossier","Nombre de la nueva carpeta","Dê um nome para o novo diretório"],nextmark:["Nächste Marke","Next mark","Marque suivante","Siguiente marca","Próxima marca"],none:["Keiner","None","Aucun","Ninguno",""],normal:["Senkrechte","Perpendicular","Perpendiculaire","Perpendicular","Perpendicular"],of:["von","of","de","de","de"],ok_return:["Ok + Return","Ok + Return","","",""],parallel:["Parallele","Parallel","Parallèle","Paralelo(a)","Paralelo"],paste_ablation_instruct:["Ziehe das Objekt zum Abtragen an den gewünschten Ort.","Release your finger / the mouse button, to paste the copy.","Relâcher le doigt ou le bouton souris pour coller la copie.","Levante su dedo (suelte el botón del mouse) para pegar","Levante o seu dedo / botão do mouse para colar."],paste_instruct:["Markiere den gewünschten Ort für die Kopie.","Click on the board to paste the copy.","Cliquer sur la zone de dessin pour coller la copie.","Clic en el plano para pegar la copia","Clique na janela de visualização para colar."],perpendicularBisector:["Mittelsenkrechte","Perpendicular Bisector","Médiatrice","Mediatriz","Mediatriz"],plus:["Erhöhen","Increase","Augmenter","Incrementa","Aumentar"],point_coord:["X- / Y-Koordinaten","X / Y coordinates","Coordonnées x/y","Coordenadas X/Y","Coordenadas X / Y"],point_face:["Symbol","Face","Rendu","Cara","Tipo"],point_style:["Punktform","Point style","Style de point","Estilo de punto","Tipo do ponto"],poly:["Polygon","Polygon","Polygone","Polígono","Polígono"],polygon_selection:["Markiere nacheinander alle Eckpunkte und zum Abschluss wieder den Anfangspunkt.","Select the points which should span the polygon. Finalize the selection by clicking another time on the first point.","Sélectionner les points qui forment le polygone. Finir la sélection en cliquant à nouveau sur le 1er point.","Seleccione los vértices que conformarán ","Selecione os pontos que gerarão o polígono. Finalize a seleção clicando uma outra vez no primeiro ponto."],precision:["Dezimalstellen","Decimal places","Décimales","Decimales",""],prevmark:["Vorherige Marke","Previous mark","Marque précédente","Marca anterior","Marca anterior"],prop_instruct:["Klicke auf das Objekt, das bearbeitet werden soll.","Click on the object you want to modify.","Cliquer sur l&#39objet à modifier.","Clic en el objeto que desea modificar","Clique no objeto que você deseja modificar."],quadrilateral:["Viereck","Quadrilateral","Quadrilatère","Cuadrilátero","Quadrilátero"],radius:["Radius","Radius","Rayon","Radio","Raio"],ray:["Halbgerade","Ray","Demi-droite","Rayo","Semirreta"],recognize:["Starte Erkennung","Start Recognition","","",""],reflect:["Spiegelung","Reflection","Réflexion","Reflexión","Reflexão"],reflectedPoint:["Gespiegelter Punkt","Reflected Point","","",""],regular:["Regelmäßiges","Regular","Régulier","Regular","Regular"],reg_polygon_selection:["Markiere zwei Punkte zum Festlegen einer Polygonseite.","Select two board points, which will act as anchors<br>for the regular polygon being created.","Sélectionner 2 points qui serviront d&#39ancres pour créer un polygone régulier","Seleccione dos puntos que serán los vértices iniciales del polígono regular","Selecione dois pontos que servirão como vértices para o polígono regular."],remove:["Löschen","Delete","Effacer","Eliminar","Apagar"],reset:["Zurücksetzen","Reset","Réinitialiser","Reiniciar","Reiniciar"],right:["Rechts","Right","Droite","Derecha","Direita"],right_angle:["Zeige 90° Punkt","Show 90° dot","Montre 90° point","Exhibir 90° punto","Exibir 90° ponto"],ruler:["Lineal","Ruler","Règle","La regla",""],ruler_selection:["Markiere eine Stelle auf der Zeichenfläche, um den Anfangspunkt des Lineals zu platzieren.","Mark a position on the board to place the starting point of the ruler.","Cliquer à 2 endroits de la zone de dessin pour placer les points de début et de fin de la règle.","",""],sect:["Sektor","Sector","Secteur","Sector","Setor"],sectordot:["Punkt","Dot","Point","Punto",""],sector_measure:["Bogenlänge messen","Measure arc","Mesurer un arc","Medir arco","Medir arco"],sector_related_measure:["Bogenlänge","Arc length","Longueur de larc","Longitud de arco","Comprimento de arco"],selectIntersection:["Markiere Schnittpunkt","Select an intersection:","Sélectionner une intersection:","Seleccionar una intersección","Selecionar uma interseção:"],select_transform:["Transformation auswählen","Select a transformation","Sélectionner une transformation","Seleccionar una transformación","Selecionar uma transformação:"],settings:["Optionen","Settings","Paramètres","Ajustes","Configurações"],shift:["Shift","Shift","","",""],show_tooltips:["Zeige Tooltips","Show tooltips","Montrer les infobulles","Mostrar sugerencias","Exibir dicas"],slide:["Regler","Slider","Curseur","Deslizdor","Controle deslizante"],slidelist:["Slider-Liste","Slider list","","",""],slider_initialization:["Regler-Initialisierung","Slider initialization:","Initiale du curseur","Definir valores inicial y final del deslizador","Definir as extremidades e o valor inicial do controle deslizante."],slider_placement:["Markiere zur Platzierung des Reglers eine Stelle auf der Zeichenfläche.","Click on one place on the board to place the slider.","Cliquer à un endroit de la zone de dessin pour placer le curseur.","Clic en dos lugares del plano para ubicar eldeslizador","Clique em dois lugares para colocar o controle deslizante."],slider_value:["Wert des Schiebereglers","Slider value","Valeur du curseur","Valor del deslizador","Valor do controle deslizante"],slopetriangle:["Steigungsdreieck","Slopetriangle","","",""],snap_to_grid:["Einrasten auf Gitter","Snap to grid","Capturer à la grille","Fijar cuadrícula","Ajustar à malha"],snap_to_point:["Einrasten auf Punkt","Snap to point","Capturer au point","Fijar punto","Ajustar ao ponto"],sound:["Audio","Sound","Son","Sonido","Som"],square:["Quadrat","Square","Carré","Cuadrado",""],startEnd:["Start- / Endpunkt","Start / end point","","",""],status_fix:["Fixieren","Fix","Fixer","Fijar","Fixar"],stickyLabel:["Angeheftetes Label","Sticky Label","","",""],store_matrix:["Matrix speichern","Store matrix","Enregistrer la matrice","Matriz de almacenmiento","Matriz"],stroke_settings:["Stricheigenschaften","Stroke settings","Paramètres des traits","Ajustes de trazo","Configurações"],stroke_width:["Strichstärke","Stroke width","Epaisseur","Ajustes de ancho","Espessura"],tangent:["Tangente","Tangent","Tangente","Tangente","Tangente"],text_element:["Text","Text","Texte","Texto","Texto"],text_placement:["Markiere eine Stelle auf der Zeichenfläche <br>zum Platzieren des Textes.","Click on the board to place your text.","Cliquer sur la zone de dessin pour place le texte","Clic en el plano para colocar su texto","Clique na janela de visualização para colocar o seu texto."],text_size:["Textgröße","Label size","Taille étiquette","Tamaño del rótulo","Tamanho do rótulo"],ticks:["Ticks","Ticks","Point dintervalle","Marcas","Marcas"],to:["zu","to","vers","para","para"],togglemark:["Setze / Entferne Marke","(Un-)Set mark","(Dé)Faire une marque","Fijar(soltar) marcas","Definir / remover marca"],toolbarposition:["Toolbar Position","Toolbar position","Position de la barre d&#39outils","Posición de la barra de herramientas","Posição da barra de ferramentas"],tools:["Werkzeug-Menü","Tools menu","Menu des outils","Menú herramientas","Menu de ferramentas"],tools_function:["Plot","Plot","Tracer","Graficar","Gráfico"],tools_regpolygon:["Reg. Pol.","Reg. pol.","Pol. rég.","Pol. reg.","Pol. Reg."],top:["Oben","Top","Haut","Arriba","Em cima"],trace:["Spur","Trace","Trace","Traza","Traço"],transform_apply:["Markiere den Punkt, der transformiert werden soll.","Click on a point on which the transformation should be applied","Cliquer sur le point à transformer","Clic en objeto donde la transformación será aplicada","Clique no ponto que será transformado"],transform_objects:["Objekte transformieren","Transform objects","Transformer des objets","Transformar objetos","Transformar objetos"],triangle:["Dreieck","Triangle","Triangle","Triángulo","Triângulo"],turtle:["Turtle","Turtle","Tortue","Tortuga","Tartaruga"],unknown:["Unbekannt","Unknown","Inconnu","Desconocido",""],unsupported_file_format:["Dateiformat wird nicht unterstützt!","Unsupported file format","Format de fichier non supporté","formato de archivo no soportado","Formato de arquivo não suportado"],untitled:["Unbenannt","Untitled","Sans titre","Sin título","Sem título"],upload:["Hochladen","Upload","Téléverser","Subir","Transferir"],uploadsuccess:["Export erfolgreich","Upload successful.","Téléversé avec succès.","Subida exitosa","Transferência realizada com êxito"],valueRange:["Wertebereich","Value range","","",""],vect:["Vektor","Vector","Vecteur","Vector","Vetor"],vibration:["Vibration","Vibration","Vibration","Vibración","Vibração"],volume:["Lautstärke","Volume","Volume","Volumen","Volume"],zoomLevel:["Zoom-Stufe","Zoom level","","",""],zoom_100:["Standard-Zoom","Default Zoom","Zoom par défaut","Vista estándar","Zoom Padrão"],zoom_in:["Zoom In","Zoom In","Agrandir","Acercar","Ampliar"],zoom_out:["Zoom Out","Zoom Out","Réduire","Alejar","Reduzir"]};
GUI.Settings={definition:[{id:"language",label:"language",type:"list",values:GUI.Lang.Map[1],value:GUI.Lang.Map[1][1],action:function(e){GUI.setLanguage(e);GUI.Gallery.setCaptions()},enabled:true},{id:"layouttop",label:"toolbarposition",type:"list",values:["top","bottom"],value:"top",action:function(e){GUI.switchToolbarPos(e)},enabled:true},{id:"leftright",label:"leftrightmode",type:"list",values:["left","right"],value:"right",action:function(e){GUI.switchHandling(e)},enabled:true},{id:"rightangle",label:"angle_button_rightangle",type:"list",values:["sectordot","square","none"],value:"sectordot",action:function(e){if(e=="none")e="sector";JXG.Options.angle.orthotype=e},enabled:true},{id:"magnify",label:"magnify",type:"bool",value:false,action:function(e){if(JXG.Options.device=="pc"){if(e){$("#magnifier").removeClass("not-displayed")}else{$("#magnifier").addClass("not-displayed")}}},enabled:true},{id:"sound",label:"sound",type:"bool",value:true,enabled:false},{id:"volume",label:"volume",type:"volume",value:1,enabled:true},{id:"precision",label:"precision",type:"list",values:["0","2","4","8","16"],value:"2",action:function(e){JXG.Options.trunclen=parseInt(e)},enabled:true},{id:"vibrate",label:"vibration",type:"bool",value:false,enabled:true},{id:"cursor",label:"cursor",type:"bool",value:false,enabled:true},{id:"captions",label:"buttoncaptions",type:"bool",value:true,action:function(e){if(e){$(".sui-button-box* > .buttonLabel").removeClass("not-displayed");$("#toolbar").removeClass("tbHeight-small");$("#toolbar").addClass("tbHeight-big");GUI.switchToolbarPos(GUI.Settings.get("layouttop"))}else{$(".sui-button-box* > .buttonLabel").addClass("not-displayed");$("#toolbar").removeClass("tbHeight-big");$("#toolbar").addClass("tbHeight-small");GUI.switchToolbarPos(GUI.Settings.get("layouttop"))}GUI.Gallery.setCaptions()},enabled:false},{id:"reset",label:"reset",type:"action",action:function(){GUI.confirm(GUI.Lang.std.confirmreset,false,function(){if(JXG.Options.device=="msie"){for(var e in localStorage)localStorage.removeItem(e)}else localStorage.clear();window.location.reload()})},enabled:true}],setaction:function(){},setlist:function(e,t){var o;for(o=0;o<this.definition[e].values.length;o++){if(this.definition[e].values[o]===t){this.definition[e].value=t}}},setbool:function(e,t){this.definition[e].value=!!t},setvolume:function(e,t){this.definition[e].value=t},get:function(e){var t,o;for(t=0;t<this.definition.length;t++){if(this.definition[t].id===e){o=this.definition[t].value}}return o},set:function(e,t){var o;for(o=0;o<this.definition.length;o++){if(this.definition[o].id===e){this["set"+this.definition[o].type](o,t);if(JXG.exists(this.definition[o].action)){this.definition[o].action(this.definition[o].value)}}}this.save()},load:function(){var e=GUI.Storage.getItem(GUI.appId+":meta:settings"),t,o;if(JXG.exists(e)){t=JSON.parse(e);for(o=0;o<this.definition.length;o++){if(JXG.exists(t[this.definition[o].id])){this.definition[o].value=t[this.definition[o].id];if(this.definition[o].action){this.definition[o].action(this.definition[o].value)}}}}},save:function(){var e=GUI.Storage.getItem(GUI.appId+":meta:settings"),t,o;if(JXG.exists(e)){t=JSON.parse(e)}else{t={}}for(o=0;o<this.definition.length;o++){t[this.definition[o].id]=this.definition[o].value}GUI.Storage.setItem(GUI.appId+":meta:settings",JSON.stringify(t))}};JXG.extend(GUI,{deselectToolButton:function(e){$("#"+e).removeClass("button-selected");$("#"+e+"-box").removeClass("button-selected");GUI.removeToolEvents(true);GUI.delight()},deselectAllToolButtonsAndRemoveActions:function(){GUI.deselectToolButton("tools-text");GUI.deselectToolButton("tools-ruler");GUI.deselectToolButton("tools-regpolygon");GUI.deselectToolButton("tools-circlesector");GUI.deselectToolButton("tools-anglesector");GUI.deselectToolButton("tools-slider");GUI.removeActionEvent(true)},selectToolButton:function(e){if($("#"+e).hasClass("button-selected")){GUI.deselectToolButton(e);return false}GUI.deselectAllToolButtonsAndRemoveActions();$("#"+e).addClass("button-selected");$("#"+e+"-box").addClass("button-selected");return true},ruler:function(){GUI.showStatusPanel(GUI.Lang.std.ruler_selection,0,function(){GUI.deselectAllToolButtonsAndRemoveActions();GUI.showPanel(false,0)});GUI.selection=[];GUI.addToolEvent(GUI.down_event,GUI.addRulerEvt)},addRulerEvt:function(e){var t=function(){if(GUI.selection.length==1){JXG.Draw.drawRuler(GUI.selection[0],GUI.Lang.std.ruler);GUI.deselectToolButton("tools-ruler")}};GUI.select(e,"place",false,null,t)},text:function(){GUI.showStatusPanel(GUI.Lang.std.text_placement,0,function(){GUI.deselectAllToolButtonsAndRemoveActions();GUI.showPanel(false,0)});GUI.addToolEvent(GUI.down_event,function(e){var t=JXG.Draw.drawText(GUI.getCoords(e));GUI.deselectToolButton("tools-text");$("#control-boardprop").trigger(GUI.tap_event);GUI.contextEdit(t);$("#textInput").trigger(GUI.click_event)},0,true)},polygon:function(){var e=GUI.Lang.std.reg_polygon_selection+"<br>";e+='<label for="polygonCorners">'+GUI.Lang.std.corners+":</label> ";e+='<input id="polygonCorners" name="polygonCorners" type="text" size="2" value="';e+=JXG.Options.lastRegPolCorners+'" readonly="readonly" />';GUI.showStatusPanel(e,0,function(){GUI.deselectAllToolButtonsAndRemoveActions();GUI.showPanel(false,0)});$("#polygonCorners").unbind();$("#polygonCorners").bind(GUI.click_event,function(){GUI.Kbd.showKeyboardPanel(this.id,JXG.Options.lastRegPolCorners,this.id,true)});GUI.selection=[];GUI.addToolEvent(GUI.down_event,GUI.addRegPolygonEvt)},addRegPolygonEvt:function(e){if(GUI.getId("polygonCorners").value<3||GUI.getId("polygonCorners").value>33){GUI.alert(GUI.Lang.std.corner_amount);return}var t=function(){if(GUI.selection.length==2){JXG.Options.lastRegPolCorners=GUI.getId("polygonCorners").value;JXG.Draw.drawRegularPolygon(GUI.selection);GUI.deselectToolButton("tools-regpolygon");if(GUI.dialog["pol"]!=null)GUI.dialog["pol"].removeDialog()}};GUI.select(e,"point",false,null,t)},sector:function(e){var t,o;if(e=="circle"){if(!GUI.selectToolButton("tools-circlesector"))return;t=GUI.Lang.std.circlesector_selection;o=GUI.addCircleSectorEvt}else{if(!GUI.selectToolButton("tools-anglesector"))return;t=GUI.Lang.std.anglesector_selection;o=GUI.addAngleSectorEvt}GUI.showStatusPanel(t,0,function(){GUI.deselectAllToolButtonsAndRemoveActions();GUI.showPanel(false,0)});GUI.selection=[];GUI.addToolEvent(GUI.down_event,o,e)},addAngleSectorEvt:function(e){var t=function(){if(GUI.selection.length==3){JXG.Draw.drawAngleSector([GUI.selection[0].id,GUI.selection[1].id,GUI.selection[2].id]);GUI.deselectToolButton("tools-anglesector")}};GUI.select(e,"point",false,null,t)},addCircleSectorEvt:function(e){var t=function(){if(GUI.selection.length==3){JXG.Draw.drawCircleSector([GUI.selection[1].id,GUI.selection[0].id,GUI.selection[2].id]);GUI.deselectToolButton("tools-circlesector")}};GUI.select(e,"point",false,null,t)},slider:function(){var e="";e+='<label for="sliderStart">Minimalwert:</label> <input id="sliderStart" name="sliderStart" size="2" type="text" value="';e+=JXG.Options.lastSliderStart+'" readonly="readonly" />';e+=' <label for="sliderEnd">Maximalwert:</label> <input id="sliderEnd" name="sliderEnd" size="2" type="text" value="';e+=JXG.Options.lastSliderEnd+'" readonly="readonly" />';e+=' <label for="sliderIni">Startwert:</label> <input id="sliderIni" name="sliderIni" size="2" type="text" value="';e+=JXG.Options.lastSliderIni+'" readonly="readonly" />';GUI.showStatusPanel(e,0,function(){GUI.deselectAllToolButtonsAndRemoveActions();GUI.showPanel(false,0)});$("#sliderStart").unbind();$("#sliderStart").bind(GUI.click_event,function(){GUI.Kbd.showKeyboardPanel(this.id,JXG.Options.lastSliderStart,this.id,true)});$("#sliderEnd").unbind();$("#sliderEnd").bind(GUI.click_event,function(){GUI.Kbd.showKeyboardPanel(this.id,JXG.Options.lastSliderEnd,this.id,true)});$("#sliderIni").unbind();$("#sliderIni").bind(GUI.click_event,function(){GUI.Kbd.showKeyboardPanel(this.id,JXG.Options.lastSliderIni,this.id,true)});GUI.selection=[];GUI.addToolEvent(GUI.down_event,GUI.addSliderEvt)},addSliderEvt:function(e){GUI.selection.push(GUI.getCoords(e));if(GUI.selection.length==1){JXG.Options.lastSliderStart=$("input#sliderStart").attr("value");JXG.Options.lastSliderEnd=$("input#sliderEnd").attr("value");JXG.Options.lastSliderIni=$("input#sliderIni").attr("value");JXG.Draw.drawSlider(GUI.selection);GUI.deselectToolButton("tools-slider");GUI.hideStatusPanel()}}});JXG.extend(GUI,{actionTimer:function(e){if(GUI.ctx_timer!==0){clearTimeout(GUI.ctx_timer);GUI.ctx_timer=0}if(GUI.ctx_down_coords==null)return;if(JXG.Draw.findHittedObjs(GUI.ctx_down_coords.scrCoords[1],GUI.ctx_down_coords.scrCoords[2],GUI.board,JXG.Options.sensitive_area,[JXG.OBJECT_CLASS_LINE,JXG.OBJECT_CLASS_CIRCLE,JXG.OBJECT_CLASS_POINT,JXG.OBJECT_CLASS_CURVE,JXG.OBJECT_CLASS_AREA,JXG.OBJECT_CLASS_OTHER],[JXG.OBJECT_TYPE_CAS,JXG.OBJECT_TYPE_INTERSECTION,JXG.OBJECT_TYPE_TEXT]).length==0)return;GUI.action="ablation";GUI.addToolEvent(GUI.move_event,function(){});GUI.addAblateEvt(e,GUI.ctx_curr_coords)},hideAllActions:function(){if($("#actions-mirror").hasClass("button-selected"))$("#actions-mirror").trigger(GUI.click_event);if($("#control-actions").hasClass("button-selected"))GUI.activateActionControls()},Plot:{plot:function(e,t){var o,r;r="function(x) { return "+GUI.Kbd.getVal()+"; }";o=GUI.plotColors[GUI.plotColor++];if(GUI.plotColor>=GUI.plotColors.length)GUI.plotColor=0;GUI.recordStep({type:JXG.GENTYPE_PLOT,dest_id:GUI.id(),args:{plot_type:"plot",a:e,b:t,isPolar:false,isUpdate:false,func:r,color:o}},true,false)},checkAndPlot:function(){var e,t,o,r,s;e=parseInt(GUI.getId("ival-a").value);t=parseInt(GUI.getId("ival-b").value);s=GUI.Kbd.getVal().sanitize().replace(/ /g,"");for(o=0;o<s.length;o++){if(s[o]=="x"){if(o>0&&s[o-1]!="("&&(s[o-1]==parseInt(s[o-1])||s[o-1]=="x")){r=s;s=s.slice(0,o);r=r.slice(o);s+="*"+r}}if(s[o]=="x"&&o<s.length-1&&s[o+1]!=")"&&s[o+1]!="%"&&s[o+1]!="+"&&s[o+1]!="-"&&s[o+1]!="*"&&s[o+1]!="/"&&(s[o+1]!="p"||o-1>=0&&s[o-1]!="e")&&s[o+1]!="^"){r=s;s=s.slice(0,o+1);r=r.slice(o+1);s+="*"+r}if(s[o]==")"&&o<s.length-1&&s[o+1]!=")"&&s[o+1]!="%"&&s[o+1]!="+"&&s[o+1]!="-"&&s[o+1]!="*"&&s[o+1]!="/"&&s[o+1]!="^"){r=s;s=s.slice(0,o+1);r=r.slice(o+1);s+="*"+r}}GUI.Kbd.setVal(s);try{GUI.board.jc.snippet(s,true);GUI.Plot.plot(e,t);GUI.lastFxInput=s;GUI.Kbd.setVal("");if(GUI.Kbd.activeListId!=""){var i="#"+GUI.Kbd.activeListId;$(i).trigger(GUI.click_event);$(i).trigger(GUI.click_event)}GUI.removeActionEvent(true);GUI.showPanel(false,0)}catch(n){console.log(n);console.log("Erroneous term/expression")}},calculate:function(){var cl=GUI.getId("plot-calc-result"),fx=false,res;try{fx=GUI.Kbd.getVal();res=eval(fx);if(typeof res!="undefined")cl.innerHTML=res;else cl.innerHTML="0"}catch(err){if(fx&&fx.indexOf("x")!=-1){cl.value=""}}}},plotAction:function(){var e,t,o,r,s="";e=GUI.board.getBoundingBox();t=parseInt(Math.floor(e[0]));o=parseInt(Math.ceil(e[2]));s+='x &#8712; [ <input id="ival-a" type="text" size="4" readonly="readonly" value="'+t+'" />, ';s+='<input id="ival-b" type="text" size="4" readonly="readonly" value="'+o+'" /> ] &#8213; ';s+='<label for="fx-input">f(x) = </label><input id="fx-input" name="fx-input" type="text" size="19" readonly="readonly" />';s+=' &#8213; <label>Result:</label> <label id="plot-calc-result" name="plot-calc-result" ></label>';GUI.deactivatePropToolAction();GUI.action="plot";r=GUI.axisVisible;if(!r)GUI.toggleAxis();GUI.showStatusPanel(s,0,function(){GUI.lastFxInput=GUI.Kbd.getVal();$("#fx-input").unbind();$("#ival-a").unbind();$("#ival-b").unbind();if(GUI.axisVisible!=r)GUI.toggleAxis();GUI.deselectAllToolButtonsAndRemoveActions();GUI.showPanel(false,0)});$("#fx-input").bind(GUI.click_event,function(e){GUI.Kbd.showKeyboardPanel(this.id,"",this.id,false,GUI.Plot.calculate,function(){GUI.Plot.checkAndPlot();if(GUI.axisVisible!=r)GUI.toggleAxis()},true)});$("#ival-a").bind(GUI.click_event,function(){GUI.Kbd.showKeyboardPanel(this.id,t,this.id,true)});$("#ival-b").bind(GUI.click_event,function(){GUI.Kbd.showKeyboardPanel(this.id,o,this.id,true)});if(GUI.Kbd.activeListId!=""&&GUI.Kbd.activeListId!="key-hwr"){var i="#"+GUI.Kbd.activeListId;$(i).trigger(GUI.click_event);$(i).trigger(GUI.click_event)}GUI.Plot.calculate();GUI.addActionEvent(GUI.down_event,function(){})},hideAction:function(){GUI.deactivatePropToolAction();GUI.action="hide";GUI.showHiddenObjects();GUI.showStatusPanel(GUI.Lang.std.hide_instruct,0,function(){GUI.deselectAllToolButtonsAndRemoveActions();GUI.showPanel(false,0)});GUI.addActionEvent(GUI.down_event,function(e){GUI.addHideEvt(GUI.getScreenCoordsXY(e))})},delAction:function(){GUI.deactivatePropToolAction();GUI.action="del";GUI.showHiddenObjects();GUI.showStatusPanel(GUI.Lang.std.del_instruct,0,function(){GUI.deselectAllToolButtonsAndRemoveActions();GUI.showPanel(false,0)});GUI.addActionEvent(GUI.down_event,function(e){GUI.addDelEvt(GUI.getScreenCoordsXY(e))})},measureAction:function(){GUI.deactivatePropToolAction();GUI.action="measure";GUI.showHiddenObjects();GUI.showStatusPanel(GUI.Lang.std.measure_instruct,0,function(){GUI.deselectAllToolButtonsAndRemoveActions();GUI.showPanel(false,0)});GUI.selection=[];GUI.addActionEvent(GUI.down_event,function(e){GUI.addMeasureEvt(e,true)})},ablateAction:function(){GUI.deactivatePropToolAction();if(GUI.action!="standard")GUI[GUI.action+"Action"]();GUI.action="ablation";GUI.showStatusPanel(GUI.Lang.std.ablation_instruct,0,function(){GUI.deselectAllToolButtonsAndRemoveActions();GUI.showPanel(false,0)});GUI.addActionEvent(GUI.down_event,function(e){GUI.addAblateEvt(e)},false,false)},transfAction:function(){GUI.deactivatePropToolAction();if(GUI.action!="standard")GUI[GUI.action+"Action"]();GUI.action="transf";var e=$("#transform-select"),t=$("#transform-input");if(GUI.countElements(GUI.transformation)==0){e.addClass("not-displayed");t.removeClass("sui-spacer")}else{e.removeClass("not-displayed");t.addClass("sui-spacer")}$("#caption-transform").removeClass("not-displayed");GUI.addActionEvent(GUI.down_event,function(){},false,false)},fixAblation:function(e,t){if(typeof t!="undefined")GUI.lastCopyPos=t;else GUI.lastCopyPos=GUI.getCoords(e);GUI.placeShadowCopy(GUI.selection,GUI.lastCopyPos);GUI.showStatusPanel(GUI.Lang.std.paste_ablation_instruct,0,function(){GUI.deselectAllToolButtonsAndRemoveActions();GUI.showPanel(false,0)});GUI.addToolEvent(GUI.up_event,function(e,t){GUI.pasteAblation(e,t);if($("#control-actions").hasClass("button-selected"))GUI.ablateAction()},GUI.selection,true)},pasteAblation:function(e,t){var o,r,s=[],i,n,a=true;var l=GUI.shadowCopyStep,d=GUI.placeShadowCopy(t,GUI.lastCopyPos);GUI.showObjectsBlured(false);GUI.pasteAblationDehighlight();if(l.type>50)n=GUI.generateJCode(l,GUI.board);else n=JXG.SketchReader.generateJCode(l,GUI.board,GUI.step_log);GUI.parse(n[2],false);if(GUI.shadowCopyStep.type>50)n=GUI.generateJCode(GUI.shadowCopyStep,GUI.board);else n=JXG.SketchReader.generateJCode(GUI.shadowCopyStep,GUI.board,GUI.step_log);GUI.parse(n[2],false);GUI.shadowCopyStep="";i=new JXG.Coords(JXG.COORDS_BY_USER,[GUI.board.objects[l.src_ids[0]].coords.usrCoords[1]-d[0],GUI.board.objects[l.src_ids[0]].coords.usrCoords[2]-d[1]],GUI.board);r=JXG.Draw.findHittedObjs(i.scrCoords[1],i.scrCoords[2],GUI.board,JXG.Options.sensitive_area,[JXG.OBJECT_CLASS_POINT,JXG.OBJECT_CLASS_CIRCLE,JXG.OBJECT_CLASS_LINE],[]);l.args.x=d[0];l.args.y=d[1];if(r.length>0){l.args.migrate=-1;for(o=0;o<r.length;o++){if(r[o].elementClass==JXG.OBJECT_CLASS_POINT){if(r[o].type!=JXG.OBJECT_TYPE_INTERSECTION||r[o].type!=JXG.OBJECT_TYPE_GLIDER)s.push(r[o]);r[o]=r[r.length-1];r.length--;if(o>0)o--}}if(r.length==0&&s.length==1)l.args.migrate=s[0].id;else{if(s.length>=1){if(s.length==1&&$("#ctxObjects").hasClass("not-displayed"))l.args.migrate=s[0].id;else{GUI.createSelectDialogCtx(s,function(e){JXG.Draw.recordStepMeta({type:JXG.GENTYPE_MIGRATE,src_ids:[l.dest_sub_ids[0]],dest_sub_ids:[],dest_id:e},true);GUI.removeActionEvent(true);GUI.selection=[];GUI.delight();GUI.removeToolEvents(true)},GUI.ctxPosProps,true);GUI.selection=[]}}else if(r.length>0){var c,u=JXG.Draw.drawPoint(GUI.board,[i],r,l.dest_sub_ids[0]);l.args.migrate=u.dest_id;c={type:JXG.GENTYPE_COMBINED,args:{steps:[JXG.deepCopy(u),JXG.deepCopy(l)]}};l=c}}}else l.args.migrate=0;if(l.args.migrate==-1){GUI.ctx_curr_coords=null;a=false}GUI.recordStep(l,true,false);GUI.removeToolEvent(GUI.move_event);GUI.removeActionEvent(a);GUI.resetBoard(GUI.board.BOARD_MODE_NONE)},createSelectDialogCtx:function(e,t,o,r,s){var i=GUI.createSelectHTML(e,"block");if(s)GUI.addToolEvent(GUI.down_event,console.log);GUI.showPanel(false,0);GUI.showPanelHTML(i,o,r);GUI.registerSelectHandlers(e,function(e){t(e)})},createSelectDialogKbd:function(e,t,o){var r;if(typeof o=="undefined")o="inline";r=GUI.createSelectHTML(e,o);$("#kb-dyn-panel").html(r);GUI.registerSelectHandlers(e,function(e){t(e)});$("#kb-char-panel").addClass("not-displayed");$("#kb-dyn-panel").removeClass("not-displayed")},createSelectHTML:function(e,t){var o=0,r,s="proplight",i="",n;if(t)s+=" "+t;for(r in e){if(e.hasOwnProperty(r)){i+='<a href="#" tabindex="'+o+'" id="sel_'+e[r].id+'" class="'+s+'">';i+=GUI.resolveObjectType(e[r]);if(e[r].visProp.withlabel&&e[r].label.visProp.visible){i+=" "+e[r].name}else{if(e[r].name)n=e[r].name;else n=e[r].id;i+=" "+n}i+="</a>";o++}}return i},touchDialogHandler:function(e){var t;for(t=0;t<GUI.select_obj.length;t++){if(GUI.isTouchInElementsBounds(e,"sel_"+GUI.select_obj[t])){if(GUI.select_obj[t]!=GUI.int_click){if(GUI.int_click!=-1){$("#sel_"+GUI.int_click).removeClass("proplight_active");GUI.delight(GUI.int_click)}GUI.int_click=GUI.select_obj[t];$("#sel_"+GUI.int_click).addClass("proplight_active");GUI.highlight(GUI.int_click,false)}break}else{$("#sel_"+GUI.select_obj[t]).removeClass("proplight_active")}}if(e&&e.preventDefault)e.preventDefault();else window.event.returnValue=false},registerSelectHandlers:function(e,t){var o,r;GUI.int_click=-1;GUI.select_obj=[];for(o=0;o<e.length;o++)GUI.select_obj.push(e[o].id);if(JXG.Options.device=="tablet"||JXG.Options.device=="msie"&&GUI.isRealMSTouchDevice()){$("#ctxPanel").bind(GUI.down_event,GUI.touchDialogHandler);$("#kb-dyn-panel").bind(GUI.down_event,GUI.touchDialogHandler);$("#ctxPanel").bind(GUI.move_event,GUI.touchDialogHandler);$("#kb-dyn-panel").bind(GUI.move_event,GUI.touchDialogHandler);$("#ctxPanel").bind(GUI.up_event,function(){GUI.contextUnbindHandlers();t(GUI.int_click)});$("#kb-dyn-panel").bind(GUI.up_event,function(){GUI.contextUnbindHandlers();t(GUI.int_click)})}else{for(o=0;o<GUI.select_obj.length;o++){r=$("#sel_"+GUI.select_obj[o]);r.bind(GUI.out_event,function(){if(GUI.int_click!=-1){$("#sel_"+GUI.int_click).removeClass("proplight_active");GUI.delight(GUI.int_click);GUI.int_click=-1}});r.bind(GUI.over_event,function(e){GUI.int_click=GUI.select_obj[$("#"+e.currentTarget.id).attr("tabindex")];$("#sel_"+GUI.int_click).addClass("proplight_active");GUI.highlight(GUI.int_click,false)});r.bind(GUI.click_event,function(e){var o=GUI.select_obj[$("#"+e.currentTarget.id).attr("tabindex")];for(var r=0;r<GUI.select_obj.length;r++)$("#sel_"+GUI.select_obj[r]).unbind();$("#sel_"+o).removeClass("proplight_active");t(o)})}}},addHideEvt:function(e){GUI.showPanel(false,0);GUI.selection=[];GUI.select("","actionObject",false,{scrCoords:[1,e[0],e[1]]});if(GUI.selection.length==1)GUI.hideObjId(GUI.selection[0].id,false);else if(GUI.selection.length>=2){GUI.createSelectDialogCtx(GUI.selection,function(e){GUI.hideObjId(e);GUI.delight();GUI.showPanel(false,0)},GUI.ctxPosHide)}GUI.selection=[]},addMeasureEvt:function(e,t){var o,r,s,i=[];if(GUI.select(e,"angleOrPoints",false,null)){r=GUI.selection[0].getParents();s=GUI.selection[0].id+".getName() + "+"' = ' "+"+ trunc(deg("+GUI.board.objects[r[0]].id+", "+GUI.board.objects[r[1]].id+", "+GUI.board.objects[r[2]].id+"), trunclen) + '&deg;'";i=[GUI.selection[0].id,GUI.board.objects[r[0]].id,GUI.board.objects[r[1]].id,GUI.board.objects[r[2]].id]}else if(GUI.select(e,"sector",false,null)){r=GUI.selection[0].getParents();s="'|&#x2312;| "+GUI.Lang.std.of+" ' + "+GUI.selection[0].name+".getName() + ' = ' + trunc(dist("+GUI.board.objects[r[1]].id+", "+GUI.board.objects[r[0]].id+") * rad("+GUI.board.objects[r[1]].id+", "+GUI.board.objects[r[0]].id+", "+GUI.board.objects[r[2]].id+"), trunclen)";i=[GUI.selection[0].id,GUI.board.objects[r[0]].id,GUI.board.objects[r[1]].id,GUI.board.objects[r[2]].id]}else if(GUI.select(e,"line",false,null)){s="'|' + "+GUI.selection[0].point1.name+".getName() + "+GUI.selection[0].point2.name+".getName()"+" + '| = ' + trunc(dist("+GUI.selection[0].point1.id+", "+GUI.selection[0].point2.name+"), trunclen)";i=[GUI.selection[0].id,GUI.selection[0].point1.id,GUI.selection[0].point2.id]}else if(GUI.select(e,"polygon",false,null)){if(GUI.selection[0].name!="")o=GUI.selection[0].name;else o=GUI.selection[0].id;s="'A("+o+") = ' + trunc("+GUI.selection[0].id+".Area(), trunclen) + ' cm^2'";i=[GUI.selection[0].id];r=GUI.selection[0].borders;for(o=0;o<r.length;o++)i.push(r[o].id)}else if(GUI.selection.length==3){s="'&#x2220;' + "+GUI.selection[0].name+".getName() + "+GUI.selection[1].name+".getName() + "+GUI.selection[2].name+".getName() + "+"' = ' + trunc(deg("+GUI.selection[0].id+", "+GUI.selection[1].id+", "+GUI.selection[2].id+"), trunclen) + '&deg;'";i=[GUI.selection[0].id,GUI.selection[1].id,GUI.selection[2].id]}else return;if(t){JXG.Draw.drawText(GUI.getCoords(e),"function() { return "+s+"; }",i);GUI.delight()}else{$("#textInput").val(s);GUI.ctx_set_text($("#id").val(),i,false);GUI.removeMeasureEvt()}GUI.selection=[]},removeMeasureEvt:function(){$("[class*=measure]").removeClass("button-selected");$("#measure-box").removeClass("button-selected");GUI.deselectAllToolButtonsAndRemoveActions();$("#control-boardprop").trigger(GUI.tap_event);GUI.contextEdit($("#id").val())},addDelEvt:function(e){GUI.showPanel(false,0);GUI.selection=[];GUI.select("","actionObject",true,{scrCoords:[1,e[0],e[1]]});if(GUI.selection.length==1)GUI.removeObjId(GUI.selection[0].id);else if(GUI.selection.length>=2){GUI.createSelectDialogCtx(GUI.selection,function(e){GUI.removeObjId(e);GUI.delight();GUI.showPanel(false,0)},GUI.ctxPosDelete)}GUI.selection=[];if(GUI.getLastConstructedObject()==0){GUI.removeActionEvent(true);$("#control-actions").removeClass("button-selected")}},addAblateEvt:function(e,t){GUI.selection=[];GUI.select(e,"ablatePoint",false,t);if(GUI.selection.length>0){var o=GUI.selection[0];GUI.selection=[];if(o.type==JXG.OBJECT_TYPE_GLIDER){o.visProp.snaptogrid=JXG.Options.elements.snapToGrid;GUI.ctx_set_type(o.id,JXG.OBJECT_TYPE_POINT);GUI.ctx_down_coords=null;GUI.removeActionEvent(true);GUI.showStatusPanel(GUI.Lang.std.freeGlider,1500);if(JXG.Options.device=="msie"){GUI.board.pointerDownListener(e,GUI.board.objects[o.id])}else if(JXG.Options.device=="tablet"){GUI.board.touchStartListener(e,GUI.board.objects[o.id])}else GUI.board.mouseDownListener(e,GUI.board.objects[o.id])}else if(o.type==JXG.OBJECT_TYPE_POINT){o.visProp.snaptogrid=false;GUI.ctx_set_type(o.id,JXG.OBJECT_TYPE_GLIDER);GUI.ctx_down_coords=null}}else{GUI.select(e,"circleOrLine",false,t);if(GUI.selection.length>0){o=GUI.selection[0];if(o.elementClass==JXG.OBJECT_CLASS_CIRCLE){if(o.point2!=null)GUI.selection=[o.midpoint,o.point2];else GUI.selection=[o.midpoint];GUI.selection.push(o.id)}else if(o.elementClass==JXG.OBJECT_CLASS_LINE){if(o.point1.visProp.visible&&o.point2.visProp.visible){GUI.selection=[o.point1,o.point2];GUI.selection.push(o.id)}else{var r,s,i=[];if(o.point1.visProp.visible)i.push(o.point1);if(o.point2.visProp.visible)i.push(o.point2);for(s in o.descendants){r=o.descendants[s];if(r.elementClass==JXG.OBJECT_CLASS_POINT&&r.visProp.visible)i.push(r)}if(i.length>=2){GUI.selection=[i[0],i[1]];GUI.selection.push(o.id)}else GUI.selection=[]}}else GUI.selection=[];if(GUI.selection.length===0){GUI.delight();GUI.removeActionEvent(true);GUI.board.downObjects=[o];GUI.board.mode=GUI.board.BOARD_MODE_DRAG;o.highlight(true)}else{GUI.fixAblation(e,t)}}}},addGlideInterEvt:function(e,t){var o,r,s,i=[],n={};GUI.removeToolEvent(GUI.up_event);s=JXG.Draw.findHittedObjs(GUI.board.objects[t].coords.scrCoords[1],GUI.board.objects[t].coords.scrCoords[2],GUI.board,JXG.Options.sensitive_area,[JXG.OBJECT_CLASS_POINT,JXG.OBJECT_CLASS_LINE,JXG.OBJECT_CLASS_CIRCLE,JXG.OBJECT_CLASS_CURVE],[JXG.OBJECT_TYPE_POINT]);for(o=0;o<s.length;o++){if(!GUI.collectionContains(GUI.board.objects[t].descendants,s[o])&&s[o].id!=t){i.push(s[o])}}s=i;$("#ctxObjects").addClass("not-displayed");$("#ctxObjectsExtra").addClass("not-displayed");if(s.length===0){GUI.removeGlideInterEvt(t);return}if(s.length>1){GUI.removeToolEvent(GUI.move_event);r=JXG.Draw.drawPoint(GUI.board,[GUI.board.objects[t].coords],s,t,true);if(r!=-1){if(GUI.board.objects[r].type==JXG.OBJECT_TYPE_GLIDER){n={type:JXG.GENTYPE_MIGRATE,args:{migrateToGlider:true,usrCoords:JXG.deepCopy(GUI.ctx_curr_coords.usrCoords),orig_name:GUI.board.objects[t].name,fillColor:JXG.Options.glider.fillColor,strokeColor:JXG.Options.glider.strokeColor},src_ids:[t],dest_sub_ids:[],dest_id:r};JXG.Draw.recordStepMeta(n,true)}else if(GUI.board.objects[r].elementClass==JXG.OBJECT_CLASS_POINT){}GUI.removeActionEvent(true)}}else{GUI.selection.push(s[0]);GUI.removeGlideInterEvt(t)}GUI.deleteDraftcurves()},removeGlideInterEvt:function(e){if(GUI.selection.length!==0){var t=GUI.selection[0];GUI.removeActionEvent(true);if(!GUI.collectionContains(GUI.board.objects[e].descendants,t)&&e!=t.id){GUI.ctx_set_type(e,JXG.OBJECT_TYPE_GLIDER,t.id);if(GUI.contextShowsProps()!=0){GUI.addToolEvent(GUI.down_event,GUI.callOnClick,GUI.contextMenu);GUI.contextEdit(e)}}}else{GUI.removeActionEvent(true);GUI.resetBoard()}},removeActionEvent:function(e){var t;GUI.removeToolEvents(e);$("#control-tools-box").removeClass("hidden");$("#caption-actions").addClass("not-displayed");$("#caption-transform").addClass("not-displayed");$('[id^="control-actions-"]').removeClass("button-selected");GUI.mirrorCenterId=0;if(GUI.showHidden)GUI.showHiddenObjects();GUI.delight();if(GUI.shadowCopyStep!==""){if(GUI.shadowCopyStep.type>50)t=GUI.generateJCode(GUI.shadowCopyStep,GUI.board);else t=JXG.SketchReader.generateJCode(GUI.shadowCopyStep,GUI.board,GUI.step_log);GUI.parse(t[2],false);GUI.shadowCopyStep=""}GUI.selection=[];$("#control-actions").css("background-position","-221px -62px");if(e)GUI.action="standard"}});GUI.ContextSave={color:{}};JXG.extend(GUI,{contextPanelColor:function(e,t,o){var r=$("#color-field");if(e.length>7)e=JXG.rgba2rgbo(e)[0];if(!$("#color-tab-"+o).hasClass("button-disabled")){r.css("color",GUI.getBestSwContrast(e));r.css("background-color",e);if(o=="fill")r.val(t.toFixed(0))}},contextPanelReposition:function(){var e=$("#toolbar").outerHeight();$("#ctxPanel").css("bottom",e+"px");$("#ctxPanel").css("top","auto")},contextUnbindHandlers:function(){$("#ctxProps").find("*").unbind();$("#ctxObjectsExtra").children().unbind();$("#ctxObjects").children().unbind();$("#ctxPanel").unbind();$("#kb-dyn-panel").unbind("*");$("#kb-dyn-panel").unbind()},contextBindHandlers:function(e){var t,o,r,s,i,n;n=GUI.getId("id").value;GUI.contextUnbindHandlers();if(e.type==JXG.OBJECT_TYPE_CURVE){$("#plot-fx-input").bind(GUI.click_event,function(){GUI.Kbd.showKeyboardPanel(this.id,e.Y.toString().cleanTerm(),this.id,false,function(){},function(){GUI.ctx_set_plot(n,true)})});$("#plot-fx-input").val(e.Y.toString().cleanTerm())}$("#textInput").bind(GUI.click_event,function(){if(e.type==JXG.OBJECT_TYPE_TEXT){GUI.Kbd.showKeyboardPanel(this.id,GUI.ContextSave.text,this.id,false,function(){r=GUI.Kbd.getVal();if(GUI.ctx_set_text(n,[],true))GUI.ContextSave.text=r})}else{GUI.Kbd.showKeyboardPanel(this.id,GUI.ContextSave.labelName,this.id,false,function(){r=GUI.Kbd.getVal();GUI.ctx_set_label(n,[],true);GUI.ContextSave.labelName=r})}});$("#circle-radius-field").bind(GUI.click_event,function(){GUI.Kbd.showKeyboardPanel(this.id,GUI.ContextSave.radius,this.id,false,function(){r=GUI.Kbd.getVal();GUI.ctx_set_radius(n,true);GUI.ContextSave.radius=r})});$("#angle-radius-field").bind(GUI.click_event,function(){GUI.Kbd.showKeyboardPanel(this.id,GUI.ContextSave.angleRadius,this.id,false,function(){r=GUI.Kbd.getVal();GUI.ctx_set_angleradius(n,true);GUI.ContextSave.angleRadius=r})});if($("#point-coord-x-field").disabled!="disabled"){$("#point-coord-x-field").bind(GUI.click_event,function(){GUI.Kbd.showKeyboardPanel(this.id,GUI.ContextSave.Xjc,this.id,false,function(){r=GUI.Kbd.getVal();GUI.ctx_set_xcoord(n,true);GUI.delight();GUI.highlight(n);GUI.ContextSave.Xjc=r})})}if($("#point-coord-y-field").disabled!="disabled"){$("#point-coord-y-field").bind(GUI.click_event,function(){GUI.Kbd.showKeyboardPanel(this.id,GUI.ContextSave.Yjc,this.id,false,function(){r=GUI.Kbd.getVal();GUI.ctx_set_ycoord(n,true);GUI.delight();GUI.highlight(n);GUI.ContextSave.Yjc=r})})}if(e.elType=="slider"){$("#sliderpoint1-coord-x-field").bind(GUI.click_event,function(){GUI.Kbd.showKeyboardPanel(this.id,GUI.ContextSave.p1x,this.id,false,function(){r=GUI.Kbd.getVal();GUI.ctx_set_point1(n,1,true);GUI.delight();GUI.highlight(n);GUI.ContextSave.p1x=r})});$("#sliderpoint1-coord-y-field").bind(GUI.click_event,function(){GUI.Kbd.showKeyboardPanel(this.id,GUI.ContextSave.p1y,this.id,false,function(){r=GUI.Kbd.getVal();GUI.ctx_set_point1(n,2,true);GUI.delight();GUI.highlight(n);GUI.ContextSave.p1y=r})});$("#sliderpoint2-coord-x-field").bind(GUI.click_event,function(){GUI.Kbd.showKeyboardPanel(this.id,GUI.ContextSave.p2x,this.id,false,function(){r=GUI.Kbd.getVal();GUI.ctx_set_point2(n,1,true);GUI.delight();GUI.highlight(n);GUI.ContextSave.p2x=r})});$("#sliderpoint2-coord-y-field").bind(GUI.click_event,function(){GUI.Kbd.showKeyboardPanel(this.id,GUI.ContextSave.p2y,this.id,false,function(){r=GUI.Kbd.getVal();GUI.ctx_set_point2(n,2,true);GUI.delight();GUI.highlight(n);GUI.ContextSave.p2y=r})});$("#slider-interval-a-field").bind("keyup",function(){r=$(this).val();GUI.ctx_set_interval(n,true,true);GUI.ContextSave.start=r});$("#slider-interval-b-field").bind("keyup",function(){r=$(this).val();GUI.ctx_set_interval(n,false,true);GUI.ContextSave.end=r})}$("#color-field").bind("keyup",function(){r=$(this).val();if(!$("#color-tab-stroke").hasClass("button-disabled")){GUI.ctx_set_strokeWidth(n);GUI.ContextSave.strokeWidth=r}else if(!$("#color-tab-fill").hasClass("button-disabled")){GUI.ctx_set_fillOpacity(n);GUI.ContextSave.fillOpacity=r/100}else{GUI.ctx_set_labelSize(n+"Label")}});$("#point-size-field").bind("keyup",function(){r=$(this).val();GUI.ctx_set_size(n);GUI.ContextSave.size=r});$("#image-size-field").bind("keyup",function(){r=$(this).val();GUI.ctx_set_scale(n);GUI.ContextSave.size=r});if(e.type==JXG.OBJECT_TYPE_TEXT){$("#measure-box").bind(GUI.click_event,function(){GUI.ctx_measure()})}$("#label-visible").bind(GUI.click_event,function(){if(e.type==JXG.OBJECT_TYPE_TEXT){GUI.ctx_set_visibility(n)}else{if(GUI.board.objects[n].visProp.visible===false)return;GUI.ctx_set_withLabel(n)}});$("#label-sticky").bind(GUI.click_event,function(){GUI.ctx_set_labelsticky(n)});$('[id^="color-tab"]').bind(GUI.click_event,function(){var e="";$('[id^="color-tab"]').addClass("button-disabled");$('[id^="color-tab"]').removeClass("button-selected");$(this).removeClass("button-disabled");$(this).addClass("button-selected");if($(this).attr("id").indexOf("fill")!=-1){$("#color-field-label").css("background-position","-362px -404px");t=JXG.rgba2rgbo(GUI.ContextSave.color["fill"]);r=100*GUI.ContextSave.fillOpacity;e="fill"}else{if($(this).attr("id").indexOf("label")!=-1){$("#color-field-label").css("background-position","-442px -404px");t=JXG.rgba2rgbo(GUI.ContextSave.color["labelstroke"]);r=GUI.ContextSave.labelSize;e="label"}else if($(this).attr("id").indexOf("stroke")!=-1){$("#color-field-label").css("background-position","-280px -482px");t=JXG.rgba2rgbo(GUI.ContextSave.color["stroke"]);r=GUI.ContextSave.strokeWidth;e="stroke"}}if(e!=="")GUI.contextPanelColor(JXG.hex2rgb(t[0]),t[1],e);o=GUI.getId("color-field");
$("#"+o.id).trigger(GUI.click_event);if(!r.toFixed)return;if(GUI.Kbd.input==o)GUI.Kbd.setVal(r.toFixed(0),true);else o.value=r.toFixed(0)});$("#color-tab-stroke").trigger(GUI.click_event);$('[class*="color-palette-c"]').bind(GUI.click_event,function(){if($(this).attr("id")=="color-palette-none")s="transparent";else{s=$(this).css("background-color");if(s.length>7)s=JXG.rgba2rgbo(s)[0]}$("#color-field").css("background-color",s);GUI.ctx_set_color(n)});$('[id^="status-"]').bind(GUI.click_event,function(){if($(this).attr("id").indexOf("box")==-1)return;if($(this).attr("id").indexOf("fix")!=-1){if(e.elementClass!=JXG.OBJECT_CLASS_POINT&&e.type!=JXG.OBJECT_TYPE_CURVE&&e.type!=JXG.OBJECT_TYPE_ANGLE&&e.type!=JXG.OBJECT_TYPE_SECTOR||e.type==JXG.OBJECT_TYPE_POINT||e.type==JXG.OBJECT_TYPE_GLIDER)GUI.ctx_set_fixed(n)}else if($(this).attr("id").indexOf("trace")!=-1){if(e.type!=JXG.OBJECT_TYPE_CURVE&&e.type!=JXG.OBJECT_TYPE_TEXT)GUI.ctx_set_trace(n)}});var a=function(e,t,r){o=GUI.getId(t);if(GUI.Kbd.input==o)i=GUI.Kbd.getVal();else i=o.value;i=parseInt(i);if(e)i=i+GUI.incrementValue;else i++;if(GUI.Kbd.input==o)GUI.Kbd.setVal(i.toFixed(0),true);else o.value=i.toFixed(0);r(n)};var l=function(e,t,r){o=GUI.getId(t);if(GUI.Kbd.input==o)i=GUI.Kbd.getVal();else i=o.value;i=parseInt(i);if(e)i=i-GUI.incrementValue;else i--;if(GUI.Kbd.input==o)GUI.Kbd.setVal(i.toFixed(0),true);else o.value=i.toFixed(0);r(n)};$("#color-field-plus").on(GUI.down_event,function(){r="color-field";GUI.Kbd.close();GUI.incrementValue=10;a(false,r,function(){if(!$("#color-tab-stroke").hasClass("button-disabled")){if(e.type==JXG.OBJECT_TYPE_TEXT)GUI.ctx_set_labelSize(n+"Label");else GUI.ctx_set_strokeWidth(n)}else if(!$("#color-tab-fill").hasClass("button-disabled")){GUI.ctx_set_fillOpacity(n)}else{GUI.ctx_set_labelSize(n+"Label")}});GUI.intervalTimer=window.setInterval(function(){a(true,r,function(){if(!$("#color-tab-stroke").hasClass("button-disabled")){if(e.type==JXG.OBJECT_TYPE_TEXT)GUI.ctx_set_labelSize(n+"Label");else GUI.ctx_set_strokeWidth(n)}else if(!$("#color-tab-fill").hasClass("button-disabled")){GUI.ctx_set_fillOpacity(n)}else{GUI.ctx_set_labelSize(n+"Label")}})},500)});$("#color-field-plus").on(GUI.up_event,function(){window.clearInterval(GUI.intervalTimer)});$("#color-field-minus").on(GUI.down_event,function(){r="color-field";GUI.Kbd.close();GUI.incrementValue=10;l(false,r,function(){if(!$("#color-tab-stroke").hasClass("button-disabled")){if(e.type==JXG.OBJECT_TYPE_TEXT)GUI.ctx_set_labelSize(n+"Label");else GUI.ctx_set_strokeWidth(n)}else if(!$("#color-tab-fill").hasClass("button-disabled")){GUI.ctx_set_fillOpacity(n)}else{GUI.ctx_set_labelSize(n+"Label")}});GUI.intervalTimer=window.setInterval(function(){l(true,r,function(){if(!$("#color-tab-stroke").hasClass("button-disabled")){if(e.type==JXG.OBJECT_TYPE_TEXT)GUI.ctx_set_labelSize(n+"Label");else GUI.ctx_set_strokeWidth(n)}else if(!$("#color-tab-fill").hasClass("button-disabled")){GUI.ctx_set_fillOpacity(n)}else{GUI.ctx_set_labelSize(n+"Label")}})},500)});$("#color-field-minus").on(GUI.up_event,function(){window.clearInterval(GUI.intervalTimer)});$("#point-size-minus").on(GUI.down_event,function(){r="point-size-field";GUI.Kbd.close();GUI.incrementValue=10;l(false,r,GUI.ctx_set_size);GUI.intervalTimer=window.setInterval(function(){l(true,r,GUI.ctx_set_size)},500)});$("#point-size-minus").on(GUI.up_event,function(){window.clearInterval(GUI.intervalTimer)});$("#point-size-plus").on(GUI.down_event,function(){r="point-size-field";GUI.Kbd.close();GUI.incrementValue=10;a(false,r,GUI.ctx_set_size);GUI.intervalTimer=window.setInterval(function(){a(true,r,GUI.ctx_set_size)},500)});$("#point-size-plus").on(GUI.up_event,function(){window.clearInterval(GUI.intervalTimer)});$("#image-size-minus").on(GUI.down_event,function(){r="image-size-field";GUI.Kbd.close();GUI.incrementValue=10;l(false,r,GUI.ctx_set_scale);GUI.intervalTimer=window.setInterval(function(){l(true,r,GUI.ctx_set_scale)},500)});$("#image-size-minus").on(GUI.up_event,function(){window.clearInterval(GUI.intervalTimer)});$("#image-size-plus").on(GUI.down_event,function(){r="image-size-field";GUI.Kbd.close();GUI.incrementValue=10;a(false,r,GUI.ctx_set_scale);GUI.intervalTimer=window.setInterval(function(){a(true,r,GUI.ctx_set_scale)},500)});$("#image-size-plus").on(GUI.up_event,function(){window.clearInterval(GUI.intervalTimer)});$("#point-style-button-circle").bind(GUI.click_event,function(){$("#point-style-button-circle").addClass("button-selected");$("#point-style-button-square").removeClass("button-selected");$("#point-style-button-cross").removeClass("button-selected");$("#point-style-button-plus").removeClass("button-selected");GUI.ctx_set_face(n)});$("#point-style-button-square").bind(GUI.click_event,function(){$("#point-style-button-circle").removeClass("button-selected");$("#point-style-button-square").addClass("button-selected");$("#point-style-button-cross").removeClass("button-selected");$("#point-style-button-plus").removeClass("button-selected");GUI.ctx_set_face(n)});$("#point-style-button-cross").bind(GUI.click_event,function(){$("#point-style-button-circle").removeClass("button-selected");$("#point-style-button-square").removeClass("button-selected");$("#point-style-button-cross").addClass("button-selected");$("#point-style-button-plus").removeClass("button-selected");GUI.ctx_set_face(n)});$("#point-style-button-plus").bind(GUI.click_event,function(){$("#point-style-button-circle").removeClass("button-selected");$("#point-style-button-square").removeClass("button-selected");$("#point-style-button-cross").removeClass("button-selected");$("#point-style-button-plus").addClass("button-selected");GUI.ctx_set_face(n)});if(e.elementClass==JXG.OBJECT_CLASS_LINE){if(e.point1)if(GUI.showHidden&&e.point1.guiVisProp&&e.point1.guiVisProp.visible||!GUI.showHidden&&e.point1.getAttribute("visible")){$("#line-button-first").bind(GUI.click_event,function(){if($("#line-button-first").hasClass("button-selected"))$("#line-button-first").removeClass("button-selected");else $("#line-button-first").addClass("button-selected");GUI.ctx_set_straightfirst(n)});$("#line-button-arrow-first").bind(GUI.click_event,function(){if($("#line-button-arrow-first").hasClass("button-selected"))$("#line-button-arrow-first").removeClass("button-selected");else $("#line-button-arrow-first").addClass("button-selected");GUI.ctx_set_arrowfirst(n)})}if(e.point2)if(GUI.showHidden&&e.point2.guiVisProp&&e.point2.guiVisProp.visible||!GUI.showHidden&&e.point2.getAttribute("visible")){$("#line-button-last").bind(GUI.click_event,function(){if($("#line-button-last").hasClass("button-selected"))$("#line-button-last").removeClass("button-selected");else $("#line-button-last").addClass("button-selected");GUI.ctx_set_straightlast(n)});$("#line-button-arrow-last").bind(GUI.click_event,function(){if($("#line-button-arrow-last").hasClass("button-selected"))$("#line-button-arrow-last").removeClass("button-selected");else $("#line-button-arrow-last").addClass("button-selected");GUI.ctx_set_arrowlast(n)})}if(e.point1&&e.point2){$("#line-related-measure-box").bind(GUI.click_event,function(){GUI.ctx_measureDistance(n)})}}else if(e.type==JXG.OBJECT_TYPE_ANGLE){$("#angle-related-measure-box").bind(GUI.click_event,function(){GUI.ctx_measureAngle(n)});$("#angle-button-rightangle-box").bind(GUI.click_event,function(){GUI.ctx_set_dotvisibility(n)})}else if(e.type==JXG.OBJECT_TYPE_SECTOR){$("#sector-related-measure-box").bind(GUI.click_event,function(){GUI.ctx_measureSector(n)})}},contextEdit:function(e){var t,o,r,s,i;GUI.deleteDraftcurves();if(e===0){GUI.showPanelHTML("sketchometry.com",GUI.ctxPosProps,false);return}if(GUI.board.objects[e].id.toString().search(/Label$/)!=-1)e=GUI.board.objects[e].id.replace(/Label/,"");$("#id").val(e);if(GUI.Settings.get("layouttop")=="Bottom")GUI.contextPanelReposition();i=GUI.board.objects[e];GUI.highlight(e);GUI.ContextSave.type=i.type;GUI.ContextSave.size=i.getAttribute("size");GUI.ContextSave.face=i.getAttribute("face");GUI.ContextSave.withLabel=i.getAttribute("withLabel");GUI.ContextSave.fillOpacity=i.getAttribute("fillOpacity");GUI.ContextSave.radius=GUI.ContextSave.Xjc=GUI.ContextSave.Yjc=0;if(i.slideObject)GUI.ContextSave.slideObjectId=i.slideObject.id;if(GUI.showHidden){if(i.elementClass==JXG.OBJECT_CLASS_CIRCLE)GUI.ContextSave.ccvisible=i.midpoint.guiVisProp.visible;if(!i.guiVisProp)i.guiVisProp={visible:i.getAttribute("visible")};GUI.ContextSave.visible=i.guiVisProp.visible;if(!i.guiVisProp)i.guiVisProp={strokewidth:i.getAttribute("strokewidth")};GUI.ContextSave.strokewidth=i.guiVisProp.strokewidth}else{if(i.elementClass==JXG.OBJECT_CLASS_CIRCLE)GUI.ContextSave.ccvisible=i.midpoint.getAttribute("visible");GUI.ContextSave.visible=i.getAttribute("visible")}if(i.elementClass!=JXG.OBJECT_CLASS_LINE&&i.elementClass!=JXG.OBJECT_CLASS_OTHER)$("#fillObjects").removeClass("not-displayed");else $("#fillObjects").addClass("not-displayed");if(GUI.ContextSave.withLabel){$("#labeledObjects").removeClass("not-displayed");$("#label-sticky").removeAttr("disabled")}else{$("#labeledObjects").addClass("not-displayed");$("#label-sticky").attr("disabled","disabled")}if(i.type==JXG.OBJECT_TYPE_POINT||i.type==JXG.OBJECT_TYPE_GLIDER)$("#point-glider").removeClass("not-displayed");else $("#point-glider").addClass("not-displayed");if(i.elementClass==JXG.OBJECT_CLASS_POINT){$("#property-point").removeClass("not-displayed")}else $("#property-point").addClass("not-displayed");if(i.type==JXG.OBJECT_TYPE_POINT||i.type==JXG.OBJECT_TYPE_GLIDER||i.elementClass!=JXG.OBJECT_CLASS_POINT&&i.type!=JXG.OBJECT_TYPE_CURVE&&i.type!=JXG.OBJECT_TYPE_ANGLE&&i.type!=JXG.OBJECT_TYPE_SECTOR){$("#status-fix-box").removeClass("button-disabled")}else{$("#status-fix-box").addClass("button-disabled")}if(i.type!=JXG.OBJECT_TYPE_CURVE&&i.type!=JXG.OBJECT_TYPE_TEXT){$("#status-trace-box").removeClass("button-disabled")}else{$("#status-trace-box").addClass("button-disabled")}if(i.elementClass==JXG.OBJECT_CLASS_LINE){$("#property-line").removeClass("not-displayed");if(i.point1.getAttribute("visible")&&i.point2.getAttribute("visible"))$("#line-related").removeClass("not-displayed");else $("#line-related").addClass("not-displayed")}else $("#property-line").addClass("not-displayed");if(i.elementClass==JXG.OBJECT_CLASS_CIRCLE){$("#property-circle").removeClass("not-displayed")}else $("#property-circle").addClass("not-displayed");if(i.type==JXG.OBJECT_TYPE_ANGLE||i.type==JXG.OBJECT_TYPE_SECTOR){$("#property-angle").removeClass("not-displayed");$("#angle-related").removeClass("not-displayed");if(i.type==JXG.OBJECT_TYPE_SECTOR){$("#sector-related-measure-box").removeClass("not-displayed");$("#measure-specific").removeClass("not-displayed");$("#angle-related-measure-box").addClass("not-displayed");$("#line-related-measure-box").addClass("not-displayed");$("#angle-specific").addClass("not-displayed")}else{$("#angle-related-measure-box").removeClass("not-displayed");$("#measure-specific").removeClass("not-displayed");$("#sector-related-measure-box").addClass("not-displayed");$("#line-related-measure-box").addClass("not-displayed");$("#angle-specific").removeClass("not-displayed");GUI.ContextSave.angleRadius=i.getAttribute("radius")}}else{$("#property-angle").addClass("not-displayed")}if(i.type!=JXG.OBJECT_TYPE_ANGLE)$("#angle-specfic").addClass("not-displayed");if(i.type==JXG.OBJECT_TYPE_TEXT){if(i.X&&typeof i.X.origin=="function"){GUI.ContextSave.Xjc=i.X.toString().sanitize()}else{GUI.ContextSave.Xjc=i.coords.usrCoords[1].toFixed(JXG.Options.trunclen).trimTrailZeroes()}if(i.Y&&typeof i.Y.origin=="function"){GUI.ContextSave.Yjc=i.Y.toString().sanitize()}else{GUI.ContextSave.Yjc=i.coords.usrCoords[2].toFixed(JXG.Options.trunclen).trimTrailZeroes()}}else if(i.elementClass==JXG.OBJECT_CLASS_POINT){if(i.XEval&&typeof i.XEval.origin=="function"){GUI.ContextSave.Xjc=i.XEval.toString().sanitize()}else{GUI.ContextSave.Xjc=i.coords.usrCoords[1].toFixed(JXG.Options.trunclen).trimTrailZeroes()}if(i.YEval&&typeof i.YEval.origin=="function"){GUI.ContextSave.Yjc=i.YEval.toString().sanitize()}else{GUI.ContextSave.Yjc=i.coords.usrCoords[2].toFixed(JXG.Options.trunclen).trimTrailZeroes()}}else if(i.type==JXG.OBJECT_TYPE_CIRCLE){if(JXG.exists(i.point2)){GUI.ContextSave.point2={usrCoords:i.point2.coords.usrCoords};$("#circle-radius").addClass("not-displayed")}else{$("#circle-radius").removeClass("not-displayed");if(i.updateRadius&&i.updateRadius.toString().sanitize()!="function () { return term; }"){GUI.ContextSave.radius=i.updateRadius.toString().sanitize();GUI.getId("circle-radius-field").disabled="disabled"}else{GUI.ContextSave.radius=i.radius;GUI.getId("circle-radius-field").disabled=""}}}GUI.ContextSave.radius=GUI.ContextSave.radius.toString().cleanTerm();GUI.ContextSave.Xjc=GUI.ContextSave.Xjc.toString().cleanTerm();GUI.ContextSave.Yjc=GUI.ContextSave.Yjc.toString().cleanTerm();$("#point-coord-x-field").val(GUI.ContextSave.Xjc);$("#point-coord-y-field").val(GUI.ContextSave.Yjc);$("#point-size-field").val(GUI.ContextSave.size);if(GUI.ContextSave.radius==parseFloat(GUI.ContextSave.radius))$("#circle-radius-field").val(parseFloat(GUI.ContextSave.radius).toFixed(JXG.Options.trunclen).trimTrailZeroes());else $("#circle-radius-field").val(GUI.ContextSave.radius);$("#point-style-button-circle").removeClass("button-selected");$("#point-style-button-square").removeClass("button-selected");$("#point-style-button-cross").removeClass("button-selected");$("#point-style-button-plus").removeClass("button-selected");if(i.elementClass==JXG.OBJECT_CLASS_POINT){var n=JXG.normalizePointFace(GUI.ContextSave.face);if(n=="o")$("#point-style-button-circle").addClass("button-selected");else if(n=="[]")$("#point-style-button-square").addClass("button-selected");else if(n=="x")$("#point-style-button-cross").addClass("button-selected");else if(n=="+")$("#point-style-button-plus").addClass("button-selected");else alert("no such face!");if(i.type==JXG.OBJECT_TYPE_INTERSECTION||i.elType=="slider"){GUI.getId("point-coord-x-field").disabled="disabled";$("#point-coord-x-field").addClass("button-disabled");GUI.getId("point-coord-y-field").disabled="disabled";$("#point-coord-y-field").addClass("button-disabled")}else{GUI.getId("point-coord-x-field").disabled="";$("#point-coord-x-field").removeClass("button-disabled");GUI.getId("point-coord-y-field").disabled="";$("#point-coord-y-field").removeClass("button-disabled")}}if(i.type==JXG.OBJECT_TYPE_POINT)$("#point-glider-button-free").addClass("button-selected");if(i.type==JXG.OBJECT_TYPE_GLIDER)$("#point-glider-button-glider").addClass("button-selected");if(GUI.ContextSave.visible){if(i.type==JXG.OBJECT_TYPE_TEXT){$("#textInput").removeClass("button-disabled");$("#label-visible").addClass("button-selected")}}else{if(i.type==JXG.OBJECT_TYPE_TEXT){$("#textInput").addClass("button-disabled");$("#label-visible").removeClass("button-selected")}}if(GUI.ContextSave.withLabel){if(i.type!=JXG.OBJECT_TYPE_TEXT){$("#textInput").removeClass("button-disabled");$("#label-visible").addClass("button-selected")}}else{if(i.type!=JXG.OBJECT_TYPE_TEXT){$("#label-visible").removeClass("button-selected");$("#textInput").addClass("button-disabled")}}if(GUI.ContextSave.angleRadius==parseFloat(GUI.ContextSave.angleRadius))$("#angle-radius-field").val(parseFloat(GUI.ContextSave.angleRadius).toFixed(JXG.Options.trunclen));else $("#angle-radius-field").val(GUI.ContextSave.angleRadius);$("#line-related-measure-box").addClass("not-displayed");$("#angle-related-measure-box").addClass("not-displayed");$("#sector-related-measure-box").addClass("not-displayed");if(i.type==JXG.OBJECT_TYPE_IMAGE){$("#color-group").addClass("not-displayed");$("#property-image").removeClass("not-displayed");$("#image-size-field").val(GUI.ContextSave.scale=i.usrSize[0])}else{$("#color-group").removeClass("not-displayed");$("#property-image").addClass("not-displayed")}if(i.elType=="slider"){$("#property-slider").removeClass("not-displayed");$("#status-group").addClass("not-displayed");$("#point-coord").addClass("not-displayed");GUI.getId("slider-interval-a-field").value=GUI.ContextSave.start=i._smin;GUI.getId("slider-interval-b-field").value=GUI.ContextSave.end=i._smax;GUI.getId("sliderpoint1-coord-x-field").value=GUI.ContextSave.p1x=i.point1.coords.usrCoords[1];GUI.getId("sliderpoint1-coord-y-field").value=GUI.ContextSave.p1y=i.point1.coords.usrCoords[2];GUI.getId("sliderpoint2-coord-x-field").value=GUI.ContextSave.p2x=i.point2.coords.usrCoords[1];GUI.getId("sliderpoint2-coord-y-field").value=GUI.ContextSave.p2y=i.point2.coords.usrCoords[2]}else{$("#property-slider").addClass("not-displayed");$("#status-group").removeClass("not-displayed");$("#point-coord").removeClass("not-displayed")}if(i.type==JXG.OBJECT_TYPE_TEXT){$("#label-sticky-box").addClass("not-displayed");GUI.ContextSave.strokeWidth=parseInt($("#"+i.rendNode.id).css("font-size"));if(i.visProp.castext&&i.htmlStr!=i.visProp.castext)GUI.ContextSave.text=i.visProp.castext.toString().sanitize();else GUI.ContextSave.text=i.htmlStr;GUI.ContextSave.text=GUI.ContextSave.text.toString().cleanTerm();$("#textInput").val(GUI.ContextSave.text);$("#measure-box").removeClass("not-displayed");$("#measure-specific").removeClass("not-displayed")}else{$("#label-sticky-box").removeClass("not-displayed");GUI.ContextSave.strokeWidth=i.getAttribute("strokeWidth");GUI.ContextSave.labelName=i.name;$("#textInput").val(GUI.ContextSave.labelName);$("#measure-box").addClass("not-displayed");$("#measure-specific").addClass("not-displayed");$("#angle-related-measure-box").addClass("not-displayed");$("#sector-related-measure-box").addClass("not-displayed");$("#line-related-measure-box").addClass("not-displayed")}$("#color-field").val(GUI.ContextSave.strokeWidth);if(i.getAttribute("fixed")){$("#status-fix").addClass("button-selected");$("#status-fix-box").addClass("button-selected")}else{$("#status-fix").removeClass("button-selected");$("#status-fix-box").removeClass("button-selected")}if(i.getAttribute("trace")){$("#status-trace").addClass("button-selected");$("#status-trace-box").addClass("button-selected")}else{$("#status-trace").removeClass("button-selected");$("#status-trace-box").removeClass("button-selected")}if(i.label&&i.label.rendNode){GUI.ContextSave.labelSize=parseInt($("#"+i.label.rendNode.id).css("font-size"));GUI.ContextSave.color["labelstroke"]=JXG.rgbo2rgba(i.label.getAttribute("strokeColor"),i.label.getAttribute("strokeOpacity")).toLowerCase()}else{GUI.ContextSave.labelSize=12;GUI.ContextSave.color["labelstroke"]=GUI.board.options.text.strokeColor}if(GUI.ContextSave.color["labelstroke"]=="none")GUI.ContextSave.color["labelstroke"]="transparent";else{t=JXG.rgba2rgbo(GUI.ContextSave.color["labelstroke"]);o=GUI.bestColorDivIndex(t[0]);r=$('[class*="color-palette"]').eq(o).css("background-color");GUI.ContextSave.color["labelstroke"]=JXG.rgbo2rgba(t[0]=JXG.rgb2hex(r),t[1])}GUI.ContextSave.color["fill"]=JXG.rgbo2rgba(i.getAttribute("fillColor"),GUI.ContextSave.fillOpacity);if(GUI.ContextSave.color["fill"]=="none")GUI.ContextSave.color["fill"]="transparent";else{t=JXG.rgba2rgbo(GUI.ContextSave.color["fill"]);o=GUI.bestColorDivIndex(t[0]);r=$('[class*="color-palette"]').eq(o).css("background-color");GUI.ContextSave.color["fill"]=JXG.rgbo2rgba(JXG.rgb2hex(r),t[1])}GUI.ContextSave.color["highlightstroke"]=JXG.rgbo2rgba(i.getAttribute("highlightstrokeColor"),i.getAttribute("highlightstrokeOpacity")).toLowerCase();if(GUI.ContextSave.color["highlightstroke"]=="none")GUI.ContextSave.color["highlightstroke"]="transparent";else{t=JXG.rgba2rgbo(GUI.ContextSave.color["highlightstroke"]);o=GUI.bestColorDivIndex(t[0]);r=$('[class*="color-palette"]').eq(o).css("background-color");GUI.ContextSave.color["highlightstroke"]=JXG.rgbo2rgba(JXG.rgb2hex(r),t[1])}GUI.ContextSave.color["highlightfill"]=JXG.rgbo2rgba(i.getAttribute("highlightfillColor"),i.getAttribute("highlightfillOpacity")).toLowerCase();if(GUI.ContextSave.color["highlightfill"]=="none")GUI.ContextSave.color["highlightfill"]="transparent";else{t=JXG.rgba2rgbo(GUI.ContextSave.color["highlightfill"]);o=GUI.bestColorDivIndex(t[0]);r=$('[class*="color-palette"]').eq(o).css("background-color");GUI.ContextSave.color["highlightfill"]=JXG.rgbo2rgba(JXG.rgb2hex(r),t[1])}GUI.ContextSave.color["stroke"]=JXG.rgbo2rgba(i.getAttribute("strokeColor"),i.getAttribute("strokeOpacity")).toLowerCase();if(GUI.ContextSave.color["stroke"]=="none")GUI.ContextSave.color["stroke"]="transparent";else{t=JXG.rgba2rgbo(GUI.ContextSave.color["stroke"]);o=GUI.bestColorDivIndex(t[0]);r=$('[class*="color-palette"]').eq(o).css("background-color");GUI.ContextSave.color["stroke"]=JXG.rgbo2rgba(JXG.rgb2hex(r),t[1])}if(i.elementClass==JXG.OBJECT_CLASS_LINE){$("#line-related-measure-box").removeClass("not-displayed");if(GUI.ContextSave.straightfirst=i.getAttribute("straightfirst"))$("#line-button-first").addClass("button-selected");else $("#line-button-first").removeClass("button-selected");if(GUI.ContextSave.straightlast=i.getAttribute("straightlast"))$("#line-button-last").addClass("button-selected");else $("#line-button-last").removeClass("button-selected");if(GUI.ContextSave.arrowfirst=i.getAttribute("firstarrow"))$("#line-button-arrow-first").addClass("button-selected");else $("#line-button-arrow-first").removeClass("button-selected");if(GUI.ContextSave.arrowlast=i.getAttribute("lastarrow"))$("#line-button-arrow-last").addClass("button-selected");else $("#line-button-arrow-last").removeClass("button-selected");if(i.point1.visProp.priv){$("#line-button-first").addClass("button-disabled");$("#line-button-arrow-first").addClass("button-disabled")}else{$("#line-button-first").removeClass("button-disabled");$("#line-button-arrow-first").removeClass("button-disabled")}if(i.point2.visProp.priv){$("#line-button-last").addClass("button-disabled");$("#line-button-arrow-last").addClass("button-disabled")}else{$("#line-button-last").removeClass("button-disabled");$("#line-button-arrow-last").removeClass("button-disabled")}if(i.point1.visProp.priv||i.point2.visProp.priv)$("#measure-specific").addClass("not-displayed");else $("#measure-specific").removeClass("not-displayed")}if(i.type==JXG.OBJECT_TYPE_CURVE)$("#plot-specific").removeClass("not-displayed");else $("#plot-specific").addClass("not-displayed");GUI.addTooltips();GUI.contextBindHandlers(i);GUI.showPropertyPanel("props",false);GUI.Kbd.close()},contextShowsProps:function(){if($("#control-boardprop").hasClass("button-selected")){if($("#id")&&typeof $("#id").val()!="undefined")return $("#id").val();return-1}else return 0},contextUpdate:function(){if(GUI.ctx_curr_coords!=null&&$("#control-boardprop").hasClass("button-selected")&&!$("#ctxObjects").hasClass("not-displayed")){GUI.contextMenu(GUI.ctx_curr_coords)}},showPanelHTML:function(e,t,o){if(typeof o=="undefined")o=false;GUI.contextUnbindHandlers();if(o){$("#ctxObjectsExtra").html(e+"<br>")}else{$("#ctxObjects").html(e)}GUI.showPropertyPanel("objects",o);GUI.showPanel(true,t);if(t==GUI.ctxPosProps){$("#control-boardprop").addClass("button-selected");$("#control-boardprop-box").addClass("button-selected")}return true},contextMenu:function(e){var t,o,r=[];GUI.showPanel(false,0);o=JXG.Draw.findHittedObjs(e.scrCoords[1],e.scrCoords[2],GUI.board,JXG.Options.sensitive_area,[JXG.OBJECT_CLASS_LINE,JXG.OBJECT_CLASS_CIRCLE,JXG.OBJECT_CLASS_POINT,JXG.OBJECT_CLASS_CURVE,JXG.OBJECT_CLASS_AREA,JXG.OBJECT_CLASS_OTHER],[],false,0);for(t=0;t<o.length;t++)if(o[t].elementClass==JXG.OBJECT_CLASS_POINT||o[t].type==JXG.OBJECT_TYPE_ANGLE||o[t].type==JXG.OBJECT_TYPE_SECTOR)r.push(o[t]);if(r.length>0)o=r;if(o.length!==0){if(o.length==1){GUI.contextEdit(o[0].id)}else{r=[];for(t=0;t<o.length;t++)if(GUI.isStandardObj(o[t]))r.push(o[t]);if(r.length>0){if(r.length==1){GUI.contextEdit(o[0].id)}else{GUI.delight();GUI.createSelectDialogCtx(r,function(e){GUI.contextEdit(e)},GUI.ctxPosProps,false)}}}}else{GUI.delight();GUI.showPropertyPanel("board",false)}GUI.showPanel(true,GUI.ctxPosProps);$("#control-boardprop").addClass("button-selected");$("#control-boardprop-box").addClass("button-selected");return false}});GUI.Dialog=function(e,t,o,r,s,i,n){var a,l,d,c,u=false,G=document.createElement("div");if(GUI.dialog[e]!=null)GUI.dialog[e].removeDialog();for(var f in GUI.dialog)if(GUI.dialog.hasOwnProperty(f))if(GUI.dialog[f]!=null)GUI.dialog[f].removeDialog();this.id=e;G.setAttribute("id",e);G.setAttribute("class","dialog");G.setAttribute("data-role","none");a='<div id="dlg-header" class="center">';a+='   <div id="dlg-header-left" class="fleft"></div>';a+='   <div id="dlg-header-right" class="fright"></div>';a+='   <div id="dlg-header-middle" class="nobr"><nobr>'+o+"</nobr></div>";a+="</div>";a+='<div id="dlg-content">';if(typeof t!="undefined")a+=t;a+="</div>";G.innerHTML=a;document.body.appendChild(G);GUI.dialog[e]=this;JXG.addEvent(document,GUI.move_event,function(t){if(GUI.dialog[e]==null)JXG.removeEvent(document,GUI.move_event,arguments.callee,GUI);else GUI.dialog[e].move(t)},GUI);JXG.addEvent(document,GUI.up_event,function(t){if(GUI.dialog[e]==null)JXG.removeEvent(document,GUI.up_event,arguments.callee,GUI);else GUI.dialog[e].up()},GUI);l=$("#"+e+" div#dlg-header-right");l.bind(GUI.click_event,function(){if(GUI.dialog[e]==null)l.unbind(GUI.down_event,arguments.callee);else GUI.dialog[e].removeDialog()});l=$("#"+e+" div#dlg-header-middle");l.bind(GUI.down_event,function(t){if(GUI.dialog[e]==null)l.unbind(GUI.down_event,arguments.callee);else GUI.dialog[e].down(t)});$("#"+e).css("min-width",90+parseInt(l.css("width"))+"px");this.fitContent();d=c="";if(typeof r!="undefined"){if(r.scrCoords){r=r.scrCoords;r.splice(0,1)}if(r[0]!==0||r[1]!==0){if(r[0]!==0)c+="left:"+(r[0]+35)+"px; ";if(r[1]!==0)c+="top:"+r[1]+"px; "}else u=true;if(typeof s!="undefined"){if(s[0]!==0)d+="width:"+s[0]+"px; ";if(s[1]!==0)d+="height:"+s[1]+"px; ";if(typeof i!="undefined"){this.callback_param=i;this.callback=n}}}else u=true;if(d!=="")G.setAttribute("style",d);if(u){if(typeof GUI.dialogLastPos[e]!="undefined"&&typeof GUI.dialogLastPos[e][1]!="undefined")c="left:"+GUI.dialogLastPos[e][0]+"px; top:"+GUI.dialogLastPos[e][1]+"px;";else{var I,p;I=window.innerWidth-$("#"+e).outerWidth();I=parseInt(I/2);p=window.innerHeight-$("#"+e).outerHeight();p=parseInt(p/2);c="left:"+I+"px; top:"+p+"px;"}}d+=c;if(d!=="")G.setAttribute("style",d)};JXG.extend(GUI.Dialog.prototype,{id:null,callback_param:null,callback:null,down_state:false,offsetX:0,offsetY:0,fitContent:function(){var e=parseInt(window.screen.height);if($("#gallery").css("display")!="none")e=parseInt(document.body.offsetHeight);$("#"+this.id+" #dialog_content").css("max-height",e-(parseInt($("#"+this.id).css("top"))+$("#dlg-header").outerHeight())-60+"px")},removeDialog:function(e){if(this.id==null)return;var t=$("#"+this.id);GUI.dialogLastPos[this.id]=new Array(parseInt(t.css("left")),parseInt(t.css("top")));if((typeof e=="undefined"||e===false)&&GUI.dialog[this.id].callback_param!=null)GUI.dialog[this.id].callback(GUI.dialog[this.id].callback_param);$("#"+this.id).find("*").unbind();if(this.id=="confirm")$("#gui").unbind();if(this.id!=null){document.body.removeChild(GUI.getId(this.id));GUI.dialog[this.id]=null;this.id=null}$("#modalWindow").addClass("not-displayed")},down:function(e){if(this.id==null)return;var t=$("#"+this.id),o=GUI.getCoords(e);GUI.dialog[this.id].down_state=true;GUI.dialog[this.id].offsetX=parseInt(t.css("left"))-o.scrCoords[1];GUI.dialog[this.id].offsetY=parseInt(t.css("top"))-o.scrCoords[2];if(e&&e.preventDefault){e.preventDefault()}else{window.event.returnValue=false}},up:function(){if(this.id==null)return;GUI.dialog[this.id].down_state=false;GUI.dialog[this.id].offsetX=0;GUI.dialog[this.id].offsetY=0},move:function(e){if(this.id==null)return;var t=$("#"+this.id);if(this.down_state){var o,r,s,i,n=GUI.getCoords(e);o=n.scrCoords[1];r=n.scrCoords[2];if(JXG.Options.device=="pc"){o+=this.offsetX;r+=this.offsetY}if(o<0)o=0;if(r<0)r=0;if($("#gallery").css("display")=="none"){s=parseInt(GUI.board.canvasWidth);i=parseInt(GUI.board.canvasHeight)}else{s=parseInt(document.body.offsetWidth);i=parseInt(document.body.offsetHeight)}if(o>s)o=s;if(r>i-90)r=i-90;t.css("left",o);t.css("top",r);GUI.dialogLastPos[this.id]=new Array(o,r);this.fitContent()}}});JXG.extend(GUI,{confirm:function(e,t,o){var r="",s='<div class="center">'+e+"</div>";if(t)s+=' &nbsp; <input id="confirmInput" size="30">';s+='<div class="tspacer center"><button id="confirmOk">Ok</button>';if(typeof o!="undefined")s+=' &nbsp; <button id="confirmCancel">Cancel</button>';s+="</div>";$("#confirm #confirmInput").unbind();$("#confirm #confirmOk").unbind();$("#confirm #confirmCancel").unbind();$("#modalWindow").removeClass("not-displayed");new GUI.Dialog("confirm",s,r,[0,0],[280,0],0,function(e){});$("#confirm #confirmOk").addClass("button-selected");$("#confirm #confirmCancel").addClass("button-selected");$("#confirm #confirmCancel").bind(GUI.click_event,function(e){GUI.dialog["confirm"].removeDialog();e.preventDefault()});$("#confirm #confirmOk").bind(GUI.click_event,function(e){if(typeof o=="function")o();GUI.dialog["confirm"].removeDialog();e.preventDefault()});$("#gui").unbind();$("#gui").bind("keyup",function(e){var t;e=e||window.event;t=e.keyCode||e.code;if(t==13){if(typeof o=="function")o()}GUI.dialog["confirm"].removeDialog();e.preventDefault()})},alert:function(e){GUI.confirm(e,false)}});JXG.extend(GUI,{select:function(e,t,o,r,s){var i,n,a,l;if(typeof o=="undefined")o=false;if(typeof r!="undefined"&&r!=null)n=r;else n=GUI.getCoords(e);switch(t){case"place":GUI.selection.push(n.usrCoords.slice(1));if(s)s();break;case"point":i=JXG.Draw.findHittedObjs(n.scrCoords[1],n.scrCoords[2],GUI.board,JXG.Options.sensitive_area,[JXG.OBJECT_CLASS_POINT],[]);if(i.length==1){GUI.Audio.play("plastic");GUI.selection.push(i[0]);GUI.highlight(i[0].id,false);if(s)s()}else if(i.length>1){GUI.createSelectDialogCtx(i,function(e){GUI.selection.push(GUI.board.objects[e]);GUI.showPanel(false,0);if(s)s();GUI.removeToolEvents(true)},GUI.ctxPosProps)}break;case"line":i=JXG.Draw.findHittedObjs(n.scrCoords[1],n.scrCoords[2],GUI.board,JXG.Options.sensitive_area,[JXG.OBJECT_CLASS_LINE,JXG.OBJECT_CLASS_POINT],[]);for(a=0;a<i.length;a++){if((i[a].type==JXG.OBJECT_TYPE_LINE||i[a].type==JXG.OBJECT_TYPE_AXIS)&&i[a].point1.visProp.priv==false&&i[a].point2.visProp.priv==false){GUI.selection=[i[a]];GUI.highlight(i[a].id,false);return true}}break;case"polygon":i=JXG.Draw.findHittedObjs(n.scrCoords[1],n.scrCoords[2],GUI.board,JXG.Options.sensitive_area,[JXG.OBJECT_CLASS_AREA],[]);for(a=0;a<i.length;a++){if(i[a].type==JXG.OBJECT_TYPE_POLYGON){GUI.selection=[i[a]];GUI.highlight(i[a].id,false);return true}}break;case"sector":i=JXG.Draw.findHittedObjs(n.scrCoords[1],n.scrCoords[2],GUI.board,JXG.Options.sensitive_area,[JXG.OBJECT_CLASS_CURVE],[]);for(a=0;a<i.length;a++){if(i[a].type==JXG.OBJECT_TYPE_SECTOR){GUI.selection=[i[a]];GUI.highlight(i[a].id,false);return true}}break;case"slider":i=JXG.Draw.findHittedObjs(n.scrCoords[1],n.scrCoords[2],GUI.board,JXG.Options.sensitive_area,[JXG.OBJECT_CLASS_POINT],[]);for(a=0;a<i.length;a++){if(i[a].type==JXG.OBJECT_TYPE_GLIDER){for(l in i[a].childElements){if(i[a].childElements.hasOwnProperty(l)){if(i[a].childElements[l].elType=="segment"){GUI.selection.push(i[a]);GUI.highlight(i[a].id,false);return true}}}}}break;case"ablatePoint":i=JXG.Draw.findHittedObjs(n.scrCoords[1],n.scrCoords[2],GUI.board,JXG.Options.sensitive_area,[JXG.OBJECT_CLASS_POINT],[JXG.OBJECT_TYPE_CAS,JXG.OBJECT_TYPE_INTERSECTION]);if(i.length==1){GUI.Audio.play("plastic");GUI.selection.push(i[0]);GUI.highlight(i[0].id,false)}else if(i.length>1){GUI.alert("select dialog needed")}break;case"actionObject":i=JXG.Draw.findHittedObjs(n.scrCoords[1],n.scrCoords[2],GUI.board,JXG.Options.sensitive_area,[JXG.OBJECT_CLASS_POINT,JXG.OBJECT_CLASS_CURVE,JXG.OBJECT_CLASS_LINE,JXG.OBJECT_CLASS_CIRCLE,JXG.OBJECT_CLASS_OTHER,JXG.OBJECT_CLASS_AREA],[JXG.OBJECT_TYPE_ARROW,JXG.OBJECT_TYPE_AXIS,JXG.OBJECT_TYPE_AXISPOINT,JXG.OBJECT_TYPE_TICKS,JXG.OBJECT_TYPE_GRID]);
if(i.length>0){if(i.length>1)o=true;for(a=0;a<i.length;a++){if(!i[a].visProp.islabel&&!i[a].visProp.priv){GUI.selection.push(i[a]);if(!o)GUI.highlight(i[a].id,true)}}}break;case"circleOrLine":i=JXG.Draw.findHittedObjs(n.scrCoords[1],n.scrCoords[2],GUI.board,JXG.Options.sensitive_area,[JXG.OBJECT_CLASS_LINE,JXG.OBJECT_CLASS_CIRCLE],[]);for(a=0;a<i.length;a++){if(i[a].type==JXG.OBJECT_TYPE_LINE){GUI.selection.push(i[a]);GUI.highlight(i[a].id,true);return false}if(i[a].type==JXG.OBJECT_TYPE_CIRCLE){GUI.selection.push(i[a]);GUI.highlight(i[a].id,true);return true}}break;case"angleOrPoints":i=JXG.Draw.findHittedObjs(n.scrCoords[1],n.scrCoords[2],GUI.board,JXG.Options.sensitive_area,[JXG.OBJECT_CLASS_POINT,JXG.OBJECT_CLASS_CURVE],[]);for(a=0;a<i.length;a++){if(i[a].type==JXG.OBJECT_TYPE_ANGLE){GUI.selection=[i[a]];GUI.highlight(i[a].id,true);return true}if(i[a].elementClass==JXG.OBJECT_CLASS_POINT){GUI.selection.push(i[a]);GUI.highlight(i[a].id,false);return false}}break;default:console.log("select call error!")}return false},generateHighlightCode:function(e){var t,o,r,s=GUI.id();r=GUI.board.objects[e];if(r.elementClass==JXG.OBJECT_CLASS_POINT){t=function(){GUI.board.create("point",[r.coords.usrCoords[1],r.coords.usrCoords[2]],{fillOpacity:GUI.opacityHidden,layer:1,id:s,name:"",priv:true,snaptogrid:false,withLabel:false,strokewidth:0,strokeColor:GUI.highlightColor,size:GUI.highlightSize})}}else if(r.elementClass==JXG.OBJECT_CLASS_CIRCLE){t=function(){GUI.board.create("circle",[r.midpoint.id,r],{strokeOpacity:GUI.opacityHidden,fillOpacity:GUI.opacityHidden,id:s,name:"",priv:true,withLabel:false,strokeWidth:GUI.highlightSize,strokeColor:GUI.highlightColor})}}else if(r.elementClass==JXG.OBJECT_CLASS_LINE){t=function(){GUI.board.create("line",[r.point1,r.point2.id],{strokeOpacity:GUI.opacityHidden,id:s,name:"",priv:true,withLabel:false,strokeWidth:GUI.highlightSize,strokeColor:GUI.highlightColor,straightFirst:r.visProp.straightfirst,straightLast:r.visProp.straightlast})}}else if(r.elementClass==JXG.OBJECT_CLASS_CURVE){t=function(){GUI.board.create("curve",JXG.coordsArrayToMatrix(r.points,true),{strokeOpacity:GUI.opacityHidden,id:s,name:"",priv:true,withLabel:false,strokeWidth:GUI.highlightSize,strokeColor:GUI.highlightColor})}}else{t=function(){}}o=function(){GUI.board.removeObject(s)};t();return o},highlight:function(e,t,o){var r,s=GUI.board.objects[e];if(s.visProp.priv===true)return;if(s.type==JXG.OBJECT_TYPE_POLYGON){for(r=0;r<s.borders.length;r++)GUI.highlight(s.borders[r].id,t,o)}else{for(r=0;r<GUI.highlightedObjs.length;r++)if(GUI.highlightedObjs[r].id===e)return;if(typeof t=="undefined"||t==true)GUI.delight();if(typeof o=="undefined")o=0;GUI.highlightedObjs.push({id:e,code:GUI.generateHighlightCode(e),cid:o})}},delight:function(e,t){var o,r,s=true;if(typeof e!="undefined"&&e!=0){var i=GUI.board.objects[e];if(i.type==JXG.OBJECT_TYPE_POLYGON){for(o=0;o<i.borders.length;o++)GUI.delight(i.borders[o].id,t)}else{for(r in GUI.highlightedObjs){if(GUI.highlightedObjs.hasOwnProperty(r)&&GUI.highlightedObjs[r].id==e){GUI.highlightedObjs[r].code();GUI.highlightedObjs[r]=GUI.highlightedObjs[GUI.highlightedObjs.length-1];GUI.highlightedObjs.length-=1;break}}}}else{s=false;if(typeof t=="undefined")t=-1;for(r in GUI.highlightedObjs){if(GUI.highlightedObjs.hasOwnProperty(r)&&(t==-1||GUI.highlightedObjs[r].cid==t)){s=true;GUI.highlightedObjs[r].code()}}GUI.highlightedObjs=[]}if(s){GUI.board.dehighlightAll();GUI.board.update()}},iss_highlight:function(e,t,o){GUI.board.create("intersection",[e,t,o],{id:"ISS",name:""});GUI.highlight(e,false);GUI.highlight(t,false);GUI.highlight("ISS",false)},iss_delight:function(){GUI.delight();if(GUI.board.objects["ISS"])GUI.board.removeObject(GUI.board.objects["ISS"])},highlightAndCollectPointsOnCurve:function(e,t,o){var r,s,i=o.options.precision.hasPoint,n;o.options.precision.hasPoint=t;for(var a in o.objects){if(o.objects.hasOwnProperty(a)){r=o.objects[a];n=false;if(r.elementClass==JXG.OBJECT_CLASS_POINT&&r.visProp.priv===false&&r.visProp.visible===true){if(e.lastLength<=0&&e.GUIpoints.length>0){s=e.GUIpoints[0].scrCoords;n=r.hasPoint(s[1],s[2])}if(!n){n=e.hasPoint(r.coords.scrCoords[1],r.coords.scrCoords[2],Math.max(0,e.lastLength))}if(n){if(!r.catchIdx||r.catchIdx==-1){r.catchIdx=e.GUIpoints.length-1}if(!JXG.exists(e.lastPointId)||e.lastPointId!=r.id){e.hittedPoints.push(r);GUI.Audio.play("bubble");GUI.Audio.vibrate(100);e.lastPointId=r.id}}}}}o.options.precision.hasPoint=i;e.hittedPoints=JXG.uniqueArray(e.hittedPoints).sort(function(e,t){return e.catchIdx>=t.catchIdx});e.lastLength=e.GUIpoints.length-1;for(var l=0;l<e.hittedPoints.length;l++)GUI.highlight(e.hittedPoints[l].id,false,e.uuid)},magnify:function(e){var t,o,r,s,i,n=GUI.board.renderer.svgRoot;n.setAttribute("xmlns","http://www.w3.org/2000/svg");n.setAttribute("width",GUI.board.canvasWidth);n.setAttribute("height",GUI.board.canvasHeight);r=(new XMLSerializer).serializeToString(n);o=GUI.getId("magnifier").getContext("2d");t=new Image(100,100);t.onload=function(){o.clearRect(0,0,300,300);s=GUI.board.getMousePosition(e);o.drawImage(t,Math.max(s[0]-50,0),Math.max(s[1]-50,0),100,100,0,0,300,150)};if($.browser.mozilla){i=JXG.Util.Base64.encode(r);t.src="data:image/svg+xml;base64,"+i}else{t.src="data:image/svg+xml,"+r}},getFuncDeps:function(e){var t,o;var r=[];for(o in{XEval:1,YEval:1,X:1,Y:1}){if(e.hasOwnProperty(o)&&e[o].origin){for(t in e[o].origin.deps){if(e[o].origin.deps.hasOwnProperty(t)){r.push(t)}}}}return JXG.uniqueArray(r)},getAllFuncDependencies:function(e){var t,o,r,s,i,n;while(1){r=JXG.uniqueArray(e);for(t in GUI.board.objects){s=[];if(GUI.board.objects.hasOwnProperty(t)){i=GUI.getFuncDeps(GUI.board.objects[t]);for(o=0;o<e.length;o++){if(GUI.collectionContains(i,e[o]))s.push(GUI.board.objects[t].id)}}for(o=0;o<s.length;o++)e.unshift(s[o])}e=JXG.uniqueArray(e);if(r.length==e.length)break}n=JXG.uniqueArray(e);return n},getAllDependencies:function(e){var t,o=[];if(JXG.keys(e.descendants,true).length===0)return o;for(t in e.descendants){if(e.descendants.hasOwnProperty(t)){o=o.concat(GUI.getAllDependencies(e.descendants[t]));if(e.descendants[t].id.search(/Label/)==-1)o.push(e.descendants[t].id)}}return JXG.uniqueArray(o)},getAllAncestors:function(e){var t=[];if(e&&e.ancestors){for(var o in e.ancestors)if(e.ancestors.hasOwnProperty(o))t=t.concat(GUI.getAllAncestors(e.ancestors[o]));t.push(e)}return JXG.uniqueArray(t)},getSelectionConstructSteps:function(){var e,t,o,r,s,i=[];while(1){r=JXG.uniqueArray(GUI.selection);for(t=0;t<r.length;t++){for(e=0;e<=GUI.unredo;e++){if(JXG.isInArray(GUI.step_del_exclude,e))continue;if(GUI.step_log[e].type==JXG.GENTYPE_DELETE){for(o=0;o<GUI.step_log[e].dest_sub_ids.length;o++)JXG.removeElementFromArray(GUI.selection,GUI.step_log[e].dest_sub_ids[o])}else if(GUI.step_log[e].dest_id==r[t]||GUI.collectionContains(GUI.step_log[e].src_ids,r[t])||GUI.collectionContains(GUI.step_log[e].dest_sub_ids,r[t])){if(GUI.step_log[e].type==JXG.GENTYPE_CTX_TYPE_G&&GUI.step_log[e].src_ids[1]==r[t]||GUI.step_log[e].type==JXG.GENTYPE_CTX_TYPE_P&&GUI.step_log[e].src_ids[1]==r[t]||GUI.step_log[e].type==JXG.GENTYPE_GLIDER&&GUI.step_log[e].src_ids[0]==r[t]){if(GUI.step_log[e].type==JXG.GENTYPE_GLIDER)s=GUI.step_log[e].dest_id;else s=GUI.step_log[e].src_ids[0];if(!GUI.board.objects[s].slideObject)continue}if(GUI.step_log[e].dest_sub_ids&&GUI.step_log[e].dest_sub_ids.length>0){for(o=0;o<GUI.step_log[e].dest_sub_ids.length;o++)if(GUI.step_log[e].dest_sub_ids[o]!==""&&GUI.step_log[e].dest_sub_ids[o]!==0)GUI.selection.push(GUI.step_log[e].dest_sub_ids[o])}if(GUI.step_log[e].dest_id!==0&&GUI.step_log[e].dest_id!=="")GUI.selection.push(GUI.step_log[e].dest_id);i.push(e)}}}GUI.selection=JXG.uniqueArray(GUI.selection);if(r.length==GUI.selection.length)break}return JXG.uniqueArray(i).sort(function(e,t){return e-t})},hideObjId:function(e){var t,o=GUI.board.objects[e];o.visProp.visible=o.guiVisProp.visible;if(o.type==JXG.OBJECT_TYPE_POLYGON){for(t=0;t<o.vertices.length-1;t++)GUI.hideObjId(o.vertices[t].id);for(t=0;t<o.borders.length;t++)GUI.hideObjId(o.borders[t].id)}GUI.ctx_set_visibility(o.id);if(o.visProp.visible){o.guiVisProp.visible=true;if(o.guiVisProp.fillOpacity)o.setAttribute({fillOpacity:o.guiVisProp.fillOpacity});if(o.guiVisProp.strokeOpacity)o.setAttribute({strokeOpacity:o.guiVisProp.strokeOpacity});if(o.guiVisProp.strokewidth)o.setAttribute({strokewidth:o.guiVisProp.strokewidth})}else{o.guiVisProp.visible=false;o.guiVisProp.strokewidth=o.getAttribute("strokewidth");o.guiVisProp.strokeOpacity=o.getAttribute("strokeOpacity");o.guiVisProp.fillOpacity=o.getAttribute("fillOpacity");if(o.guiVisProp.strokewidth==0)o.setAttribute({strokewidth:GUI.strokeHidden});o.setAttribute({strokeOpacity:GUI.opacityHidden});o.setAttribute({fillOpacity:GUI.opacityHidden});o.setAttribute({visible:true})}},removeObjId:function(e){var t,o=[];if(GUI.board.objects[e].type==JXG.OBJECT_TYPE_POLYGON)for(t in GUI.board.objects[e].borders)if(GUI.board.objects[e].borders.hasOwnProperty(t))o.push(GUI.board.objects[e].borders[t]);o.push(GUI.board.objects[e]);GUI.remove(o)},remove:function(e){var t,o,r,s=[],i=[];for(t in e){if(e.hasOwnProperty(t)){s.push(e[t].id)}}console.log("- Deletion -");GUI.selection=GUI.getAllFuncDependencies(s);r=GUI.getSelectionConstructSteps(false).sort(function(e,t){return e>t});console.log("Involved steps: "+r);for(o=0;o<r.length;o++){if(GUI.step_log[r[o]].dest_sub_ids)i=i.concat(GUI.step_log[r[o]].dest_sub_ids);if(GUI.step_log[r[o]].dest_id)i.push(GUI.step_log[r[o]].dest_id)}GUI.recordStep({type:JXG.GENTYPE_DELETE,args:{steps:JXG.deepCopy(r)},src_ids:[],dest_sub_ids:i,dest_id:0},true,false)},genPasteParams:function(e,t){var o,r=[],s=[];if(GUI.action=="copy"){var i,n,a,l=[],d=[];a=GUI.getSelectionConstructSteps();for(i in e){if(e.hasOwnProperty(i)){if(e[i]!=""){if(t)n={orig:e[i]};else n={orig:e[i],copy:GUI.id()};r.push(n)}}}for(o=0;o<r.length;o++)if(GUI.board.objects[r[o].orig].type==JXG.OBJECT_TYPE_POINT)l.push(r[o]);if(t)return{id_map:r,free_points:l};else{for(o=0;o<a.length;o++){s=s.concat(GUI.step_log[a[o]].src_ids);d=d.concat(GUI.step_log[a[o]].dest_sub_ids);if(GUI.step_log[a[o]].dest_id!==0)d.push(GUI.step_log[a[o]].dest_id)}for(o=0;o<l.length;o++)d.push(l[o].copy);s=JXG.uniqueArray(s);d=JXG.uniqueArray(d);return{steps:a,id_map:r,free_points:l,src_ids:s,dest_sub_ids:d}}}else if(GUI.action=="ablation"){var c;if(e.length==2){c=[e[1]]}else if(e.length==3){c=[e[0].id,e[1].id]}else console.log("such an ablation is not implemented!");for(o=0;o<e.length-1;o++)s.push(e[o].id);if(t){r.push({orig:s[0]});return{id_map:r,free_points:[]}}else{r.push({orig:s[0],copy:GUI.id()});return{id_map:r,free_points:[],src_ids:s,dest_sub_ids:[r[0].copy,GUI.id()],fids:c}}}else return{}},makeShadowCopy:function(e,t,o){var r,s;if(GUI.action=="standard")return"";s=GUI.genPasteParams(e,false);if(GUI.action=="copy"){GUI.shadowCopyStep=JXG.SketchReader.replaceStepDestIds({type:JXG.GENTYPE_COPY,src_ids:JXG.deepCopy(s.src_ids),dest_sub_ids:JXG.deepCopy(s.dest_sub_ids),dest_id:0,args:{steps:JXG.deepCopy(s.steps),map:JXG.deepCopy(s.id_map),free_points:JXG.deepCopy(s.free_points),x:t,y:o,dep_copy:false}},s.id_map)}else if(GUI.action=="ablation"){GUI.shadowCopyStep={type:JXG.GENTYPE_ABLATION,args:{x:t,y:o,fids:s.fids,migrate:0},src_ids:JXG.deepCopy(s.src_ids),dest_sub_ids:JXG.deepCopy(s.dest_sub_ids),dest_id:0}}if(GUI.shadowCopyStep.type>50)r=GUI.generateJCode(GUI.shadowCopyStep,GUI.board);else r=JXG.SketchReader.generateJCode(GUI.shadowCopyStep,GUI.board,GUI.step_log);GUI.parse(r[0],false);GUI.board.prepareUpdate().updateRenderer();GUI.addToolEvent(GUI.move_event,GUI.moveShadowCopy,s,true);return r[2]},placeShadowCopy:function(e,t){var o,r,s=null,i=0,n=0,a;a=GUI.genPasteParams(e,true);r=GUI.board.create("point",[t.usrCoords[1],t.usrCoords[2]]);if(a.free_points.length===0){for(o=0;o<a.id_map.length;o++){if(GUI.board.objects[a.id_map[o].orig].elementClass==JXG.OBJECT_CLASS_POINT){s=GUI.board.objects[a.id_map[o].orig];break}}}else s=GUI.board.objects[a.free_points[0].orig];if(s!=null){i=s.coords.usrCoords[1]-r.coords.usrCoords[1];n=s.coords.usrCoords[2]-r.coords.usrCoords[2]}GUI.board.removeObject(r);if(GUI.action=="copy"||GUI.action=="ablation")GUI.showObjectsBlured(true);GUI.makeShadowCopy(e,i,n);return new Array(i,n)},moveShadowCopy:function(e,t){var o,r,s=null,i,n,a,l,d;r=GUI.getCoords(e);if(GUI.Settings.get("cursor"))GUI.board.renderer.updateTouchpoint(0,r.scrCoords.slice(1));if(t.free_points.length===0){for(o=0;o<t.id_map.length;o++){if(GUI.board.objects[t.id_map[o].orig].elementClass==JXG.OBJECT_CLASS_POINT){s=GUI.board.objects[t.id_map[o].orig];break}}if(s==null)return}else s=GUI.board.objects[t.free_points[0].orig];i=r.usrCoords[1]-s.coords.usrCoords[1];n=r.usrCoords[2]-s.coords.usrCoords[2];d=new JXG.Coords(JXG.COORDS_BY_USER,[i,n],GUI.board);i=d.usrCoords[1];n=d.usrCoords[2];for(o=0;o<t.id_map.length;o++){if(GUI.board.objects[t.id_map[o].orig].elementClass==JXG.OBJECT_CLASS_POINT){GUI.board.objects[t.id_map[o].copy].moveTo([GUI.board.objects[t.id_map[o].orig].X()+i,GUI.board.objects[t.id_map[o].orig].Y()+n])}}for(o=0;o<t.free_points.length;o++){a=parseFloat(GUI.board.objects[t.free_points[o].orig].coords.usrCoords[1]+i);l=parseFloat(GUI.board.objects[t.free_points[o].orig].coords.usrCoords[2]+n);GUI.board.objects[t.free_points[o].copy].moveTo([a,l])}GUI.ctx_curr_coords=GUI.lastCopyPos=r;if(e.preventDefault){e.preventDefault()}else{window.event.returnValue=false}if(GUI.action=="ablation")GUI.pasteAblationHighlight(e)},movePoint:function(e,t){var o=GUI.getCoords(e);GUI.board.objects[t].moveTo([o.usrCoords[1],o.usrCoords[2]]);if(GUI.Settings.get("cursor")){GUI.board.renderer.updateTouchpoint(0,o.scrCoords.slice(1))}},pasteAblationHighlight:function(e){var t,o,r,s=GUI.getScreenCoordsXY(e);GUI.pasteAblationDehighlight(e);GUI.board.suspendUpdate();for(o in GUI.board.objects){if(GUI.board.objects.hasOwnProperty(o)){t=GUI.board.objects[o];if(t.elementClass===JXG.OBJECT_CLASS_POINT&&!t.visProp.priv&&t.visProp.visible&&!t.highlighted&&t.id!==GUI.shadowCopyStep.dest_sub_ids[0]&&t.hasPoint(s[0],s[1])){t.highlighted=true;r=GUI.board.create("point",[t.X(),t.Y()],{size:GUI.highlightSize,strokeWidth:0,withLabel:false,name:"",fillOpacity:GUI.opacityHidden});r.highlighted=t;GUI.highlightedObjsAblate[r.id]=r;GUI.Audio.play("click")}}}GUI.board.unsuspendUpdate()},pasteAblationDehighlight:function(e){var t,o,r=[0,0];if(e)r=GUI.getCoords(e);GUI.board.suspendUpdate();for(t in GUI.highlightedObjsAblate){if(GUI.highlightedObjsAblate.hasOwnProperty(t)){if(!e||GUI.highlightedObjsAblate[t]&&GUI.highlightedObjsAblate[t].hasPoint&&!GUI.highlightedObjsAblate[t].hasPoint(r[0],r[1])){o=GUI.highlightedObjsAblate[t].highlighted;o.highlighted=false;GUI.board.removeObject(GUI.highlightedObjsAblate[t]);delete GUI.highlightedObjsAblate[t]}}}GUI.board.unsuspendUpdate()}});JXG.extend(GUI,{addBoardHandlers:function(){if(JXG.Options.device=="msie")GUI.board.addPointerEventHandlers();else if(JXG.Options.device=="pc")GUI.board.addMouseEventHandlers();else GUI.board.addTouchEventHandlers();GUI.board.on(GUI.up_event,GUI.objectMoveHook,GUI.board);console.log("board handlers added")},removeBoardHandlers:function(){if(JXG.Options.device=="msie")GUI.board.removePointerEventHandlers();else if(JXG.Options.device=="pc")GUI.board.removeMouseEventHandlers();else GUI.board.removeTouchEventHandlers();GUI.board.off(GUI.up_event,GUI.objectMoveHook);console.log("board handlers removed")},addNavHandlers:function(){if(!GUI.navHandlersRegistered){if(JXG.Options.device=="msie"){console.log("my_msienav_srt")}else if(JXG.Options.device=="pc"){JXG.addEvent(GUI.board.containerObj,GUI.down_event,GUI.mms,GUI.board);JXG.addEvent(GUI.board.containerObj,GUI.move_event,GUI.mom,GUI.board);JXG.addEvent(GUI.board.containerObj,"mousewheel",GUI.mwl,GUI.board);JXG.addEvent(GUI.board.containerObj,"DOMMouseScroll",GUI.mwl,GUI.board)}else{JXG.addEvent(GUI.board.containerObj,GUI.down_event,GUI.tms,GUI.board);JXG.addEvent(GUI.board.containerObj,GUI.move_event,GUI.tom,GUI.board);JXG.addEvent(GUI.board.containerObj,"gesturestart",GUI.gsl,GUI.board);JXG.addEvent(GUI.board.containerObj,"gesturechange",GUI.gcl,GUI.board)}JXG.addEvent(document,GUI.up_event,GUI.ome,GUI.board);GUI.navHandlersRegistered=true}console.log("nav handlers added")},removeNavHandlers:function(){if(GUI.navHandlersRegistered){JXG.removeEvent(document,GUI.up_event,GUI.ome,GUI.board);if(JXG.Options.device=="msie"){console.log("my_msienav_end")}else if(JXG.Options.device=="pc"){JXG.removeEvent(GUI.board.containerObj,"DOMMouseScroll",GUI.mwl,GUI.board);JXG.removeEvent(GUI.board.containerObj,"mousewheel",GUI.mwl,GUI.board);JXG.removeEvent(GUI.board.containerObj,GUI.move_event,GUI.mom,GUI.board);JXG.removeEvent(GUI.board.containerObj,GUI.down_event,GUI.mms,GUI.board)}else{JXG.removeEvent(GUI.board.containerObj,"gesturechange",GUI.gcl,GUI.board);JXG.removeEvent(GUI.board.containerObj,"gesturestart",GUI.gsl,GUI.board);JXG.removeEvent(GUI.board.containerObj,GUI.move_event,GUI.tom,GUI.board);JXG.removeEvent(GUI.board.containerObj,GUI.down_event,GUI.tms,GUI.board)}GUI.navHandlersRegistered=false}console.log("nav handlers removed")},addConstructHooks:function(){GUI.board.on(GUI.down_event,GUI.downHandler,GUI);GUI.board.on(GUI.move_event,GUI.moveHandler,GUI);GUI.board.on(GUI.up_event,GUI.upHandler,GUI);console.log("const hooks added")},removeConstructHooks:function(){GUI.board.off(GUI.down_event,GUI.downHandler,GUI);GUI.board.off(GUI.move_event,GUI.moveHandler,GUI);GUI.board.off(GUI.up_event,GUI.upHandler,GUI);console.log("const hooks removed")},addConstructEvents:function(){JXG.addEvent(GUI.board.containerObj,GUI.down_event,GUI.downHandler,GUI);JXG.addEvent(GUI.board.containerObj,GUI.move_event,GUI.moveHandler,GUI);JXG.addEvent(document,GUI.up_event,GUI.upHandler,GUI);console.log("const events added")},removeConstructEvents:function(){JXG.removeEvent(document,GUI.up_event,GUI.upHandler,GUI);JXG.removeEvent(GUI.board.containerObj,GUI.move_event,GUI.moveHandler,GUI);JXG.removeEvent(GUI.board.containerObj,GUI.down_event,GUI.downHandler,GUI);console.log("const events removed")},magMove:function(e){if(GUI.Settings.get("magnify"))GUI.magnify(e)},ome:function(e){GUI.board.originMoveEnd(e)},mms:function(e){if(GUI.board.mouseOriginMoveStart)GUI.board.mouseOriginMoveStart(e)},mom:function(e){if(GUI.board.mouseOriginMove)GUI.board.mouseOriginMove(e)},mwl:function(e){if(GUI.board.mouseWheelListener)GUI.board.mouseWheelListener(e)},tms:function(e){if(GUI.board.touchOriginMoveStart)GUI.board.touchOriginMoveStart(e)},tom:function(e){if(GUI.board.touchOriginMove)GUI.board.touchOriginMove(e)},gsl:function(e){if(GUI.board.gestureStartListener)GUI.board.gestureStartListener(e)},gcl:function(e){if(GUI.board.gestureChangeListener)GUI.board.gestureChangeListener(e)},addActionEvent:function(e,t){GUI.addToolEvent(e,t);$("#caption-actions").addClass("not-displayed");$("#control-actions").removeClass("hidden")},addToolEvent:function(e,t,o,r){if(GUI.mode!=null){GUI.modeBeforeToolSwitch=GUI.mode;GUI.switchMode(null,true);$("#control-actions").addClass("hidden")}GUI.disableConstDragMode();if(GUI.collectionContains(GUI.toolType,e))GUI.removeToolEvent(e);if(typeof r=="undefined")r=false;if(!r)GUI.addNavHandlers();GUI.toolType.push(e);GUI.toolFunc[e]=function(e){t(e,o)};JXG.addEvent(GUI.board.containerObj,e,GUI.toolFunc[e],GUI);console.log("added tool evt for: "+e)},removeToolEvent:function(e){JXG.removeEvent(GUI.board.containerObj,e,GUI.toolFunc[e],GUI);JXG.removeElementFromArray(GUI.toolType,e);delete GUI.toolFunc[e];console.log("removed tool evt for type: "+e);if(GUI.toolType.length==0){GUI.hideStatusPanel();GUI.removeNavHandlers()}},removeToolEvents:function(e){$('[id*="-related-"]').removeClass("button-selected");for(var t=0;t<GUI.toolType.length;t++)GUI.removeToolEvent(GUI.toolType[t]);GUI.toolType=[];GUI.toolFunc={};if(e){if(GUI.modeBeforeToolSwitch!=null){GUI.switchMode(GUI.modeBeforeToolSwitch,true);GUI.modeBeforeToolSwitch=null;$("#control-actions").removeClass("hidden")}GUI.enableConstDragMode();GUI.showPanel(false,0)}GUI.delight()},checkRecognition:function(e){var t,o=[],r=50,s=false,i=e.hittedPoints.length;if(i>3&&e.recognized!="line"&&e.recognized!="midpoint"){e.recognized="polygon"}else{for(t=0;t<i;t++)if(e.hittedPoints[t].catchIdx<r){s=true;break}if(!s)o=["midpoint","reflection"];e.recognized=GUI.nd_recognizer.Recognize(new Array(e.GUIpoints),false,false,true,true,o).Name;if(i>0&&e.recognized=="line"){var n,a=false,l=false;n=JXG.Draw.findPointNextTo(e.GUIpoints[0],[e.hittedPoints[0]],GUI.rayFactor*JXG.Options.sensitive_area);if(n!=null)a=true;n=JXG.Draw.findPointNextTo(e.GUIpoints[e.GUIpoints.length-1],[e.hittedPoints[e.hittedPoints.length-1]],GUI.rayFactor*JXG.Options.sensitive_area);if(n!=null)l=true;if(a&&l)e.recognized="segment";else if(a||l)e.recognized="ray"}else if(e.recognized=="circle2points"&&i==3){e.recognized="sector"}else if(e.recognized=="bisector"&&i==2){}else if(e.recognized=="tangent"&&i==2)e.recognized="midpoint"}},drawSector:function(e){var t=GUI.Lang.std.choosesector,o="";o+='<a class="highlight" id="circleSector">'+GUI.Lang.std.circle_sector+"</a>";o+='<a class="highlight" id="angleSector">'+GUI.Lang.std.angle_sector+"</a>";new GUI.Dialog("sect",o,t);$("#dlg-header-left").css("background-position","-679px -165px");$("#circleSector").bind(GUI.click_event,function(){JXG.Draw.drawCircleSector([e[0].id,e[1].id,e[2].id]);GUI.dialog["sect"].removeDialog()});$("#angleSector").bind(GUI.click_event,function(){JXG.Draw.drawAngleSector([e[1].id,e[0].id,e[2].id]);GUI.dialog["sect"].removeDialog()})},analyzeNdollarResult:function(e,t){var o,r;if(GUI.action!="standard")return;o=GUI.draftcurve[e];r=o.GUIpoints;if(r.length<=8){if(!t){JXG.Draw.drawPoint(GUI.board,r);GUI.deleteDraftcurve(e)}return}if(t)GUI.highlightAndCollectPointsOnCurve(o,JXG.Options.sensitive_area,GUI.board);if((GUI.Options.finderEnabled===false||$("#finder"+o.uuid).hasClass("not-displayed"))&&r.length>0&&GUI.board.mode!=GUI.board.BOARD_MODE_DRAG){if(o.recognized!="polygon")GUI.checkRecognition(o);if(!t||t&&o.oldrecognized!==o.recognized){if(o.recognized!="blank"){if(o.recognized=="line"||o.recognized=="ray"||o.recognized=="segment"){if(t);else JXG.Draw.drawLine(r,o.hittedPoints)}else if(o.recognized=="polygon"){if(t);else JXG.Draw.drawQuadrilateral(GUI.board,r,o.hittedPoints)}else if(o.recognized=="circle"){if(t);else JXG.Draw.drawCircle(r,o.hittedPoints)}else if(o.recognized=="normal"){if(t);else JXG.Draw.drawNormal(GUI.board,r,o.hittedPoints)}else if(o.recognized=="parallel"){if(t);else JXG.Draw.drawParallel(GUI.board,r)}else if(o.recognized=="midpoint"){if(t);else JXG.Draw.drawMidPoint(o.hittedPoints)}else if(o.recognized=="bisector"){if(t);else JXG.Draw.drawBisector(GUI.board,r,o.hittedPoints)}else if(o.recognized=="tangent"){if(t);else JXG.Draw.drawTangent(GUI.board,r)}else if(o.recognized=="circle2points"){if(t);else JXG.Draw.drawCircle2Points(GUI.board,r,o.hittedPoints)}else if(o.recognized=="triangle"){if(t);else JXG.Draw.drawTriangle(GUI.board,r,o.hittedPoints)}else if(o.recognized=="quadrilateral"){if(t);else JXG.Draw.drawQuadrilateral(GUI.board,r,o.hittedPoints)}else if(o.recognized=="perpendicularBisector"){if(t);else JXG.Draw.drawBisector(GUI.board,r,o.hittedPoints)}else if(o.recognized=="reflection"){if(t);else JXG.Draw.drawReflection(GUI.board,r,o.hittedPoints)}else{if(t);else GUI.drawSector(o.hittedPoints)}if(t){$("#recognition_"+o.oldrecognized).addClass("not-displayed");$("#recognition_"+o.recognized).removeClass("not-displayed");if(o.oldrecognized!=="blank"){$("#status-box").removeClass("not-displayed")}o.oldrecognized=o.recognized}else GUI.updateNdollarStr(r)}else{$("#status-box").addClass("not-displayed");$("#recognition_"+o.oldrecognized).addClass("not-displayed")}}}if(!t)GUI.deleteDraftcurve(e)},createDraftcurve:function(e){var t,o,r,s=false;for(r=0;r<GUI.draftcurve.length;r++){if(!GUI.draftcurve[r].visProp.visible){t=GUI.draftcurve[r];s=true;break}}if(!s){t=GUI.board.create("curve",[[],[]],{curveType:"plot",strokeWidth:.75*JXG.Options.sensitive_area,opacity:.65,priv:true,id:"draft_"+GUI.draftcurve.length});t.highlight=function(){};t.noHighlight=function(){};GUI.draftcurve.push(t);t.updateDataArray=function(){for(var e=this.dataX.length;e<this.GUIpoints.length;e++){this.dataX[e]=this.GUIpoints[e].usrCoords[1];this.dataY[e]=this.GUIpoints[e].usrCoords[2]}}}t.GUIpoints=[];t.GUIpoints.push(e);t.hittedPoints=[];t.hittedLines=[];t.lastLength=0;t.uuid=JXG.Util.genUUID();t.name="DRAFTCURVE"+t.uuid;t.dontapply=false;t.finder_object=null;if(GUI.Options.finderEnabled)t.finder_timer=window.setTimeout(function(){GUI.finderTimer(t)},GUI.finder_time_limit);t.recognized="";t.setAttribute({strokeColor:"grey",visible:true});if(GUI.Options.finderEnabled){o=document.createElement("div");o.setAttribute("id","finder"+t.uuid);o.setAttribute("class","info not-displayed");GUI.getId("mainWindow").appendChild(o)}return r},deleteDraftcurve:function(e){var t,o,r;if(typeof e=="number")t=GUI.draftcurve[e];else t=e;if(t.dataX.length===0||!t.visProp.visible){return}if(GUI.Options.finderEnabled){if(t.finder_timer!==0){window.clearTimeout(t.finder_timer);t.finder_timer=0}GUI.removeFinderObject(t);o=GUI.getId("finder"+t.uuid);if(o!=null)GUI.getId("mainWindow").removeChild(o)}$("#status-box").addClass("not-displayed");$("#toolbar").removeClass("not-displayed");$('[id^="recognition_"]').addClass("not-displayed");t.setProperty({visible:false});t.GUIpoints=[];t.dataX=[];t.dataY=[];t.recognized="";for(r=0;r<t.hittedPoints.length;r++)t.hittedPoints[r].catchIdx=-1;GUI.delight(0,t.uuid)},deleteDraftcurves:function(){for(var e=0;e<GUI.draftcurve.length;e++)GUI.deleteDraftcurve(e);if(GUI.board.mode!==GUI.board.BOARD_MODE_MOVE_ORIGIN){GUI.board.update()}},affectedDraftcurve:function(e,t){var o,r,s,i,n,a,l=0,d=-1;if(GUI.draftcurve.length===0)return-1;for(o=0;o<GUI.draftcurve.length;o++){i=GUI.draftcurve[o];if(!i.visProp.visible)continue;n=i.GUIpoints;r=e.scrCoords[1]-n[n.length-1].scrCoords[1];s=e.scrCoords[2]-n[n.length-1].scrCoords[2];a=r*r+s*s;if(d==-1||a<l){l=a;d=o}}if(t&&GUI.multiConstructEnabled&&l>JXG.Options.sensitive_area*100)return-1;return d},mapCoordsToDraftcurve:function(e,t){var o;if(typeof t=="undefined")o=GUI.affectedDraftcurve(e,false);else o=t;if(o<0)return-1;GUI.draftcurve[o].GUIpoints.push(e);GUI.draftcurve[o].prepareUpdate().update().updateRenderer();GUI.analyzeNdollarResult(o,true);return o},isConstructive:function(e,t){if(t===false&&GUI.board.mode==GUI.board.BOARD_MODE_DRAG)return false;if(e.which&&e.which===2||e.button&&e.button===2){GUI.activateBoardControls();GUI.contextMenu(GUI.getMouseCoords(e));return false}if(e.shiftKey||GUI.board.mode==GUI.board.BOARD_MODE_MOVE_ORIGIN||GUI.board.mode==GUI.board.BOARD_MODE_ZOOM){GUI.deleteDraftcurves();return false}if(GUI.multiConstructEnabled==false&&e[JXG.touchProperty]&&e[JXG.touchProperty].length>=2){GUI.deleteDraftcurves();return false}return true},visibleDraftcurveExists:function(){for(var e=0;e<GUI.draftcurve.length;e++)if(GUI.draftcurve[e].visProp.visible)return true;return false},downHandler:function(e){GUI.ctx_down_coords=GUI.ctx_curr_coords=GUI.getCoords(e);if(GUI.Settings.get("cursor")){if(JXG.Options.device=="tablet"||JXG.Options.device=="msie")GUI.board.renderer.showTouchpoint(0);GUI.board.renderer.updateTouchpoint(0,GUI.ctx_curr_coords.scrCoords.slice(1))}if(JXG.Options.device=="tablet"||JXG.Options.device=="msie"){if(GUI.Settings.get("magnify"))$("#magnifier").removeClass("not-displayed")}if(e[JXG.touchProperty]&&e[JXG.touchProperty].length>=2){if(GUI.ctx_timer!==0){clearTimeout(GUI.ctx_timer);GUI.ctx_timer=0}}else{if(e[JXG.touchProperty]||e.which&&e.which===1||e.button&&e.button===1)GUI.ctx_timer=window.setTimeout(function(){GUI.actionTimer(e)},GUI.context_time_limit)}if(GUI.isConstructive(e,false)){if(e[JXG.touchProperty]){var t,o,r,s=[];for(t=0;t<e[JXG.touchProperty].length;t++){r=GUI.getTouchCoords(e,t);if((o=GUI.affectedDraftcurve(r,e.changedTouches.length>0))==-1){o=GUI.createDraftcurve(r)}s.push(GUI.draftcurve[o])}GUI.draftcurve=s.slice(0)}else{GUI.createDraftcurve(GUI.getMouseCoords(e));GUI.mouseDown=true}if(e&&e.preventDefault)e.preventDefault();else window.event.returnValue=false}},moveHandler:function(e){GUI.ctx_curr_coords=GUI.getCoords(e);if(GUI.Settings.get("cursor"))GUI.board.renderer.updateTouchpoint(0,GUI.ctx_curr_coords.scrCoords.slice(1));if(e[JXG.touchProperty]&&e[JXG.touchProperty].length>=2){if(GUI.ctx_timer!==0){clearTimeout(GUI.ctx_timer);GUI.ctx_timer=0}}if(GUI.ctx_down_coords&&GUI.ctx_curr_coords&&GUI.ctx_curr_coords.scrCoords&&GUI.ctx_down_coords.scrCoords&&GUI.ctx_curr_coords.distance(JXG.COORDS_BY_SCREEN,GUI.ctx_down_coords)>10){if(GUI.ctx_timer!==0){clearTimeout(GUI.ctx_timer);GUI.ctx_timer=0}}if(GUI.isConstructive(e,false)){if(e[JXG.touchProperty]){var t,o;for(t=0;t<e[JXG.touchProperty].length;t++){o=GUI.mapCoordsToDraftcurve(GUI.getTouchCoords(e,t));if(o<0)return;GUI.draftcurve[o].dontapply=false;if(GUI.Options.finderEnabled){GUI.removeFinderObject(GUI.draftcurve[o]);GUI.checkFinderShootOff(o)}}}else if(GUI.mouseDown){o=GUI.mapCoordsToDraftcurve(GUI.getMouseCoords(e));if(o<0)return;GUI.draftcurve[o].dontapply=false;if(GUI.Options.finderEnabled){GUI.removeFinderObject(GUI.draftcurve[o]);GUI.checkFinderShootOff(o)}}for(t=0;t<GUI.draftcurve.length;t++){if(GUI.draftcurve[t].recognized!==""){break}}if(e&&e.preventDefault)e.preventDefault();else window.event.returnValue=false}},upHandler:function(e){GUI.mouseDown=false;if(GUI.ctx_timer!==0){clearTimeout(GUI.ctx_timer);GUI.ctx_timer=0}if(JXG.Options.device=="tablet"||JXG.Options.device=="msie"){if(GUI.Settings.get("cursor")){GUI.board.renderer.hideTouchpoint(0)}if(GUI.Settings.get("magnify")){$("#magnifier").addClass("not-displayed")}}if(GUI.isConstructive(e,true)){if(GUI.mode=="CD"&&GUI.visibleDraftcurveExists()==false){if(GUI.ctx_down_coords&&GUI.ctx_curr_coords&&GUI.ctx_curr_coords.scrCoords&&GUI.ctx_down_coords.scrCoords&&GUI.ctx_curr_coords.distance(JXG.COORDS_BY_SCREEN,GUI.ctx_down_coords)<10){GUI.createDraftcurve(GUI.ctx_curr_coords)}}GUI.ctx_down_coords=GUI.ctx_curr_coords=null;if(GUI.visibleDraftcurveExists()){if(e[JXG.touchProperty]){var t,o,r;var s=[],i=[];for(t=0;t<GUI.draftcurve.length;t++)s.push(false);for(t=0;t<e[JXG.touchProperty].length;t++){r=GUI.getTouchCoords(e,t);o=GUI.affectedDraftcurve(r,false);i.push(GUI.draftcurve[o]);s[o]=true}for(t=0;t<s.length;t++)if(!s[t]&&!GUI.draftcurve[t].dontapply&&(GUI.Options.finderEnabled===false||$("#finder"+GUI.draftcurve[t].uuid).hasClass("not-displayed"))){if(GUI.Options.finderEnabled){if(GUI.draftcurve[t].finder_timer!==0){window.clearTimeout(GUI.draftcurve[t].finder_timer);GUI.draftcurve[t].finder_timer=0}}GUI.analyzeNdollarResult(t,false)}GUI.draftcurve=i.slice(0)}else{if(!GUI.draftcurve[0].dontapply&&(GUI.Options.finderEnabled===false||$("#finder"+GUI.draftcurve[0].uuid).hasClass("not-displayed"))){if(GUI.Options.finderEnabled){if(GUI.draftcurve[0].finder_timer!==0){window.clearTimeout(GUI.draftcurve[0].finder_timer);GUI.draftcurve[0].finder_timer=0}}GUI.analyzeNdollarResult(0,false)}GUI.draftcurve=[]}}if(GUI.visibleDraftcurveExists()==false){if(GUI.constModeSwitch&&GUI.modeBeforeConstSwitch!=null){GUI.switchMode(GUI.modeBeforeConstSwitch,false);GUI.modeBeforeConstSwitch=null}$("#control-actions").removeClass("hidden")}}},objectMoveHook:function(){if(GUI.board.mouse==null&&typeof GUI.board.touches==null)return;if(JXG.Options.device=="pc"&&GUI.board.mouse&&GUI.board.mouse.targets){GUI.logObjectMove(GUI.board.mouse.obj,GUI.board.mouse.targets[0].Xstart,GUI.board.mouse.targets[0].Ystart,GUI.board.mouse.targets[0].Zstart)}else if((JXG.Options.device=="tablet"||JXG.Options.device=="msie")&&GUI.board.touches){for(var e in GUI.board.touches){if(GUI.board.touches.hasOwnProperty(e))if(GUI.board.touches[e].obj&&GUI.board.touches[e].targets[0])GUI.logObjectMove(GUI.board.touches[e].obj,GUI.board.touches[e].targets[0].Xstart,GUI.board.touches[e].targets[0].Ystart,GUI.board.touches[e].targets[0].Zstart)
}}},logObjectMove:function(e,t,o,r){var s,i,n,a,l;var d={};d.src_ids=[];d.dest_sub_ids=[];d.dest_id=0;d.type=JXG.GENTYPE_MOVEMENT;d.args={obj_type:e.type,coords:[]};if(e.type==JXG.OBJECT_TYPE_CAS||e.type==JXG.OBJECT_TYPE_INTERSECTION||e.type==JXG.OBJECT_TYPE_AXIS)return;else if(e.type==JXG.OBJECT_TYPE_LINE){if(e.point1.coords.usrCoords[1]==t[0]&&e.point1.coords.usrCoords[2]==o[0]&&e.point1.coords.usrCoords[0]==r[0]&&e.point2.coords.usrCoords[1]==t[1]&&e.point2.coords.usrCoords[2]==o[1]&&e.point2.coords.usrCoords[0]==r[1])return;d.src_ids.push(e.point1.id);d.src_ids.push(e.point2.id);d.args.coords.push({usrCoords:JXG.deepCopy(e.point1.coords.usrCoords)});d.args.coords.push({usrCoords:JXG.deepCopy(e.point2.coords.usrCoords)});d.args.xstart=t;d.args.ystart=o;d.args.zstart=r}else if(e.type==JXG.OBJECT_TYPE_CIRCLE){i=e.midpoint.coords.usrCoords[1]-t[0];n=e.midpoint.coords.usrCoords[2]-o[0];if(e.midpoint.coords.usrCoords[1]==t[0]&&e.midpoint.coords.usrCoords[2]==o[0]&&e.point2==null)return;d.src_ids.push(e.midpoint.id);d.args.coords.push({usrCoords:JXG.deepCopy(e.midpoint.coords.usrCoords)});d.args.xstart=t[0];d.args.ystart=o[0];if(d.args.has_point2=e.point2!=null){a=e.point2.coords.usrCoords[1]-i;l=e.point2.coords.usrCoords[2]-n;if(e.midpoint.coords.usrCoords[1]==t[0]&&e.midpoint.coords.usrCoords[2]==o[0]&&e.point2.coords.usrCoords[1]==a&&e.point2.coords.usrCoords[2]==l)return;d.src_ids.push(e.point2.id);d.args.coords.push({usrCoords:JXG.deepCopy(e.point2.coords.usrCoords)});d.args.old_p2x=a;d.args.old_p2y=l}}else if(e.type==JXG.OBJECT_TYPE_POLYGON){var c=false;for(s=0;s<e.vertices.length-1;s++){if(e.vertices[s].coords.usrCoords[1]!=t[s]||e.vertices[s].coords.usrCoords[2]!=o[s])c=true;d.src_ids.push(e.vertices[s].id);d.args.coords.push({usrCoords:JXG.deepCopy(e.vertices[s].coords.usrCoords)})}if(!c)return;d.args.xstart=t;d.args.ystart=o;d.args.zstart=r}else{if(!e.coords)return;if(e.coords.usrCoords[1]==t[0]&&e.coords.usrCoords[2]==o[0])return;d.src_ids.push(e.id);d.args.coords.push({usrCoords:JXG.deepCopy(e.coords.usrCoords)});d.args.xstart=t[0];d.args.ystart=o[0]}GUI.recordStep(d,false,false)},keyHandler:function(e){var t;if(e.target.nodeName.toLowerCase()==="input"||e.target.nodeName.toLowerCase()==="textarea"){return}t=e.key||e.keyCode;switch(t){case 37:GUI.board.clickLeftArrow();break;case 39:GUI.board.clickRightArrow();break;case 38:GUI.board.clickDownArrow();break;case 40:GUI.board.clickUpArrow();break;case 90:if(e.ctrlKey){GUI.undo()}break;case 89:if(e.ctrlKey){GUI.redo()}break}},timerHandler:function(){if(GUI.intervalTimer){clearInterval(GUI.intervalTimer);GUI.intervalTimer=0}}});JXG.Finder={gatherElements:function(e){var t,o,r=[],s=[],i=[];for(t in e.objects){if(e.objects.hasOwnProperty(t)){o=e.objects[t];if(o.visProp.visible===false){continue}if(JXG.isPoint(o)){r.push(o)}else if(o.elementClass===JXG.OBJECT_CLASS_LINE){s.push(o)}else if(o.elementClass===JXG.OBJECT_CLASS_CIRCLE){i.push(o)}}}return{points:r,lines:s,circles:i}},isMidpoint:function(e,t,o){var r=[(t.coords.usrCoords[1]+o.coords.usrCoords[1])/2,(t.coords.usrCoords[2]+o.coords.usrCoords[2])/2];if(JXG.Math.Geometry.distance(r,e.coords.usrCoords.slice(1))/t.Dist(o)<.07){return new JXG.Finder.Fact("midpoint",e,[t,o])}return null},isReflection:function(e,t,o){var r=JXG.Math.Geometry.reflection(o,t,e.board);if(JXG.Math.Geometry.distance(r.usrCoords.slice(1),e.coords.usrCoords.slice(1))<1){return new JXG.Finder.Fact("reflection",e,[t,o])}return null},isParallel:function(e,t){var o=e.getSlope(),r=t.getSlope();if(Math.abs(o-r)<.07||Math.abs(o)>1e10&&Math.abs(r)>1e10){return new JXG.Finder.Fact("parallel",e,[t])}return null},isNormal:function(e,t){var o=JXG.Math.Geometry.meetLineLine(e.stdform,t.stdform,0,e.board),r=JXG.Math.Geometry.rad(e.point1,o.usrCoords.slice(1),t.point1);if(Math.abs(Math.abs(r-Math.PI)-Math.PI/2)<.25){return new JXG.Finder.Fact("normal",e,[t])}return null},isBisector:function(e,t,o){var r=JXG.Math.Geometry.meetLineLine(t.stdform,o.stdform,0,e.board),s=JXG.Math.Geometry.meetLineLine(e.stdform,t.stdform,0,e.board),i=t.point1.coords.distance(JXG.COORDS_BY_USER,r)<.2?"point2":"point1",n=o.point1.coords.distance(JXG.COORDS_BY_USER,r)<.2?"point2":"point1",a=JXG.Math.Geometry.rad(t[i],r.usrCoords.slice(1),e.point1),l=JXG.Math.Geometry.rad(e.point1,r.usrCoords.slice(1),o[n]);if(r.distance(JXG.COORDS_BY_USER,s)<.5&&(Math.abs(a-l)<.2||Math.abs(Math.abs(a-l)-Math.PI)<.2)){return new JXG.Finder.Fact("bisector",e,[t,o])}return null},check:function(e){var t=e.board,o=this.gatherElements(t),r=JXG.isPoint(e),s=e.elementClass===JXG.OBJECT_CLASS_LINE,i,n,a,l=[];for(i=0;i<o.points.length;i++){if(o.points[i].id===e.id){continue}for(n=i;n<o.points.length;n++){if(o.points[n].id===e.id||o.points[i].id===o.points[n].id){continue}if(r){a=this.isMidpoint(e,o.points[i],o.points[n]);if(a&&a.what){l.push(a)}}}for(n=0;n<o.lines.length;n++){if(o.lines[n].id===e.id){continue}if(r){a=this.isReflection(e,o.points[i],o.lines[n]);if(a&&a.what){l.push(a)}a=this.isMirrorpoint(e,o.points[i],o.lines[n]);if(a&&a.what){l.push(a)}}}}for(i=0;i<o.lines.length;i++){if(o.lines[i].id===e.id){continue}if(s){a=this.isParallel(e,o.lines[i]);if(a&&a.what){l.push(a)}a=this.isNormal(e,o.lines[i]);if(a&&a.what){l.push(a)}}for(n=i;n<o.lines.length;n++){if(o.lines[n].id===e.id||o.lines[i].id===o.lines[n].id){continue}if(s){a=this.isBisector(e,o.lines[i],o.lines[n]);if(a&&a.what){l.push(a)}}}}return l}};JXG.Finder.Fact=function(e,t,o){var r;this.what=e;this.element=t;this.parents=o;this.parentnames=[];for(r=0;r<o.length;r++){this.parentnames.push(o[r].name)}};JXG.extend(GUI,{finderConstruct:function(e,t,o){o.updateDataArray=function(){};var r,s,i;GUI.highlightAndCollectPointsOnCurve(o,JXG.Options.sensitive_area,GUI.board);i=o.hittedPoints;switch(e.what){case"line":JXG.Draw.drawLine(t,i);break;case"normal":s=GUI.id();if(i.length>0)r=[e.parents[0].id,i[0].id];else r=[e.parents[0].id];GUI.recordStep({type:JXG.GENTYPE_NORMAL,src_ids:JXG.deepCopy(r),args:{create_point:!(i.length>0),usrCoords:JXG.deepCopy(t[0].usrCoords)},dest_sub_ids:[s],dest_id:GUI.id()},true,false);break;case"parallel":s=GUI.id();if(i.length>0)r=[e.parents[0].id,i[0].id];else r=[e.parents[0].id];GUI.recordStep({type:JXG.GENTYPE_PARALLEL,src_ids:JXG.deepCopy(r),args:{create_point:!(i.length>0),usrCoords:JXG.deepCopy(t[0].usrCoords)},dest_sub_ids:[GUI.id(),s],dest_id:GUI.id()},true,false);break;case"bisector":GUI.recordStep({type:JXG.GENTYPE_BISECTORLINES,src_ids:[e.parents[0].id,e.parents[1].id],dest_sub_ids:[GUI.id(),GUI.id(),GUI.id(),GUI.id(),GUI.id(),GUI.id()],dest_id:0},true,false);break;case"reflection":GUI.recordStep({type:JXG.GENTYPE_REFLECTION,src_ids:[e.parents[0].id,e.parents[1].id],args:{fillColor:"#ffffff"},dest_sub_ids:[],dest_id:GUI.id()},true);break;case"point":JXG.Draw.drawPoint(t);break;case"midpoint":JXG.Draw.drawMidPoint(e.parents);break;default:}GUI.deleteDraftcurve(o);GUI.contextUpdate()},finderTimer:function(e){if(GUI.board.mode==GUI.board.BOARD_MODE_DRAG)return;var t,o,r=[],s=$("#finder"+e.uuid),i,n,a,l=0,d=function(t,o,r){var i=JXG.Util.genUUID();s.append('<a href="#" class="finder_link" id="'+i+'">'+r+"</a>");l++;$("#"+i).bind(GUI.click_event,function(){GUI.finderConstruct(t,o,e);GUI.delight()})};s.html("");e.dontapply=true;n=e.GUIpoints.length-1;if(e.GUIpoints.length<3){e.finder_object=GUI.board.create("point",e.GUIpoints[0].usrCoords,{withLabel:false,name:"",visible:false});r=JXG.Finder.check(e.finder_object);d({what:"point"},e.GUIpoints,GUI.Lang.std.point);for(t=0;t<r.length;t++){d(r[t],e.GUIpoints,GUI.Lang.std[r[t].what]+" "+GUI.Lang.std.of+" "+r[t].parentnames.join(", "))}}else{o=GUI.nd_recognizer.Recognize(new Array(e.GUIpoints),false,false,false,true);if(o.Name==="line"){e.finder_object=GUI.board.create("line",[e.GUIpoints[0].usrCoords.slice(1),e.GUIpoints[n].usrCoords.slice(1)],{withLabel:false,name:"",visible:false});r=JXG.Finder.check(e.finder_object);d({what:"line"},e.GUIpoints,GUI.Lang.std.line);for(t=0;t<r.length;t++){d(r[t],e.GUIpoints,GUI.Lang.std[r[t].what]+" "+GUI.Lang.std.to+" "+r[t].parentnames.join(", "))}}}if(l===0){e.dontapply=false;s.addClass("not-displayed");s.find("*").unbind()}else{d({what:"cancel"},e.GUIpoints,GUI.Lang.std.cancel);s.css("top",e.GUIpoints[n].scrCoords[2]-parseInt(s.css("height"))-20+"px");if(GUI.Settings.get("leftright")=="Left"){s.css("left",e.GUIpoints[n].scrCoords[1]-parseInt(s.css("width"))-20+"px")}else{s.css("left",e.GUIpoints[n].scrCoords[1]+20+"px")}s.removeClass("not-displayed");for(i=0;i<GUI.draftcurve.length;i++)if(GUI.draftcurve[i]===e)break;GUI.contextUpdate()}},checkFinderShootOff:function(e){if(GUI.draftcurve[e].GUIpoints[GUI.draftcurve[e].GUIpoints.length-1].distance(JXG.COORDS_BY_SCREEN,GUI.draftcurve[e].GUIpoints[GUI.draftcurve[e].GUIpoints.length-2])>JXG.Options.sensitive_area/3){if(GUI.draftcurve[e].finder_timer!==0){window.clearTimeout(GUI.draftcurve[e].finder_timer);GUI.draftcurve[e].finder_timer=0}GUI.draftcurve[e].finder_timer=window.setTimeout(function(){GUI.finderTimer(GUI.draftcurve[e])},GUI.finder_time_limit);$("#finder"+GUI.draftcurve[e].uuid).addClass("not-displayed");$("#finder"+GUI.draftcurve[e].uuid).find("*").unbind();return false}else return true},removeFinderObject:function(e){if(e.finder_object!=null){for(var t in e.finder_object.ancestors){if(e.finder_object.ancestors.hasOwnProperty(t)){GUI.board.removeObject(e.finder_object.ancestors[t])}}GUI.board.removeObject(e.finder_object)}}});JXG.extend(GUI,{getId:function(e){return document.getElementById(e)},countElements:function(e){var t=0;for(var o in e)if(e.hasOwnProperty(o))++t;return t},collectionContains:function(e,t){if(JXG.isArray(e)){return JXG.isInArray(e,t)}if(JXG.isObject(e)){return JXG.isInObject(e,t)}return e===t},getMouseCoords:function(e){var t,o=JXG.getPosition(e),r,s;if(GUI.board){t=GUI.board.getCoordsTopLeftCorner();r=o[0]-t[0];s=o[1]-t[1];return new JXG.Coords(JXG.COORDS_BY_SCREEN,[r,s],GUI.board)}else{return new JXG.Coords(JXG.COORDS_BY_SCREEN,[o[0],o[1]],GUI.board)}},getTouchCoords:function(e,t){var o,r=JXG.getPosition(e,t),s,i;if(GUI.board){o=GUI.board.getCoordsTopLeftCorner();s=r[0]-o[0];i=r[1]-o[1];return new JXG.Coords(JXG.COORDS_BY_SCREEN,[s,i],GUI.board)}else{return new JXG.Coords(JXG.COORDS_BY_SCREEN,[r[0],r[1]],GUI.board)}},getCoords:function(e){if(e[JXG.touchProperty])return GUI.getTouchCoords(e,-1);else return GUI.getMouseCoords(e)},getScreenCoordsXY:function(e){var t;if(e[JXG.touchProperty])t=GUI.getTouchCoords(e,-1);else t=GUI.getMouseCoords(e);return[t.scrCoords[1],t.scrCoords[2]]},getLastConstructedObject:function(){var e,t;for(e=GUI.id_cnt-1;e>0;e--){t="GUI"+e;if(GUI.board.objects[t]&&GUI.board.objects[t].visProp.visible&&!GUI.board.objects[t].visProp.priv)break}if(e===0)t=0;return t},isStandardObj:function(e){return e.visProp.priv===false&&e.type!=JXG.OBJECT_TYPE_TICKS&&e.name.search(/DRAFTCURVE.+/)==-1&&e.id.toString().search(/ticks.+/)==-1&&e.id.toString().search(/infobox$/)==-1},callOnClick:function(e,t){t(GUI.getCoords(e))},cutHex:function(e){return e.charAt(0)=="#"?e.substring(1,7):e},hexToR:function(e){return parseInt(GUI.cutHex(e).substring(0,2),16)},hexToG:function(e){return parseInt(GUI.cutHex(e).substring(2,4),16)},hexToB:function(e){return parseInt(GUI.cutHex(e).substring(4,6),16)},brightness:function(e,t,o){return.98*e+.87*t+.76*o},colorDistance:function(e,t){var o,r,s,i,n,a;o=GUI.hexToR(e);s=GUI.hexToG(e);n=GUI.hexToB(e);r=GUI.hexToR(t);i=GUI.hexToG(t);a=GUI.hexToB(t);return Math.abs(o-r)+Math.abs(s-i)+Math.abs(n-a)},bestColorDivIndex:function(e){var t=+Infinity,o=0,r={dist:t,idx:o};$('[class*="color-palette"]').each(function(t){if($(this).attr("id")=="color-palette-none")return;var o,s=$(this).css("background-color"),i=s.split(",");i[0]=parseInt(i[0].slice(4));i[1]=parseInt(i[1]);i[2]=parseInt(i[2]);o=GUI.colorDistance(JXG.rgb2hex(i[0],i[1],i[2]),e);if(o<r.dist){r.dist=o;r.idx=t}});return r.idx},getBestSwContrast:function(e){var t,o,r,s;t=e.split(",");o=parseInt(t[0].slice(4));r=parseInt(t[1]);s=parseInt(t[2]);return GUI.brightness(o,r,s)>200?"#000000":"#ffffff"},insertStrokes:function(e){var t,o,r;var s=[],i=[];e.length=0;for(t=0;t<ND.strokes.length;t++){s=[];for(o=0;o<ND.strokes[t].nbr;o++){i=[];for(r=0;r<ND.strokes[t].data[o].length;r++)i.push(new Point(ND.strokes[t].data[o][r][0],ND.strokes[t].data[o][r][1]));s.push(i)}e.push(new Multistroke(ND.strokes[t].name,false,s))}},detectDefaultLanguage:function(){if(localStorage&&localStorage.getItem("jsxgui:meta:settings")==null){var e,t;if(window.navigator.userLanguage)t=window.navigator.userLanguage;else if(window.navigator.language)t=window.navigator.language;t=t.replace(/-.*/,"");for(e=0;e<GUI.Lang.Map[0].length;e++)if(GUI.Lang.Map[0][e]==t)break;if(e<GUI.Lang.Map[0].length)GUI.Settings.set("language",GUI.Lang.Map[1][e])}},setLanguage:function(e){if(GUI.Lang){GUI.Lang.std=JXG.deepCopy(GUI.Lang.strings);if(e=="Deutsch")GUI.langId=GUI.Lang.de;else if(e=="English")GUI.langId=GUI.Lang.en;else if(e=="Français")GUI.langId=GUI.Lang.fr;else if(e=="Español")GUI.langId=GUI.Lang.es;else if(e=="Português")GUI.langId=GUI.Lang.pt;for(var t in GUI.Lang.std){if(GUI.Lang.strings[t][GUI.langId]!="")GUI.Lang.std[t]=GUI.Lang.strings[t][GUI.langId];else GUI.Lang.std[t]=GUI.Lang.strings[t][GUI.Lang.en]}}},resolveObjectType:function(e){switch(e.type){case JXG.OBJECT_TYPE_ARROW:return GUI.Lang.std.arrow;case JXG.OBJECT_TYPE_AXIS:return GUI.Lang.std.axis;case JXG.OBJECT_TYPE_AXISPOINT:return GUI.Lang.std.axispoint;case JXG.OBJECT_TYPE_TICKS:return GUI.Lang.std.ticks;case JXG.OBJECT_TYPE_CIRCLE:return GUI.Lang.std.circle;case JXG.OBJECT_TYPE_CONIC:return GUI.Lang.std.conic;case JXG.OBJECT_TYPE_CURVE:return GUI.Lang.std.curve;case JXG.OBJECT_TYPE_GLIDER:if(e.elType=="slider")return GUI.Lang.std.slide;else if(e.getAttribute("fixed"))return GUI.Lang.std.fixed_glider;else return GUI.Lang.std.glider;case JXG.OBJECT_TYPE_IMAGE:return GUI.Lang.std.img;case JXG.OBJECT_TYPE_LINE:return GUI.Lang.std.line;case JXG.OBJECT_TYPE_POINT:if(e.elType=="reflection"){return GUI.Lang.std.reflectedPoint}else if(e.getAttribute("fixed"))return GUI.Lang.std.fixed_point;else return GUI.Lang.std.freePoint;case JXG.OBJECT_TYPE_SLIDER:return GUI.Lang.std.slide;case JXG.OBJECT_TYPE_CAS:return GUI.Lang.std.cas;case JXG.OBJECT_TYPE_POLYGON:return GUI.Lang.std.poly;case JXG.OBJECT_TYPE_SECTOR:return GUI.Lang.std.sect;case JXG.OBJECT_TYPE_TEXT:return GUI.Lang.std.text_element;case JXG.OBJECT_TYPE_ANGLE:return GUI.Lang.std.angle_element;case JXG.OBJECT_TYPE_INTERSECTION:return GUI.Lang.std.intersect;case JXG.OBJECT_TYPE_TURTLE:return GUI.Lang.std.turtle;case JXG.OBJECT_TYPE_VECTOR:return GUI.Lang.std.vect;default:return GUI.Lang.std.unknown}},unpack:function(e,t){var o=new JXG.Util.Unzip(JXG.Util.Base64.decodeAsArray(e)).unzip();if(typeof t=="undefined")t=0;if(JXG.exists(o[0]))return JXG.Util.UTF8.decode(o[t][0]);else return""},greenLog:function(e){if(JXG.Options.device=="pc"&&navigator.userAgent.search("Apple")==-1)console.log("%c[L] "+e,"color:green;");else console.log("[L] "+e)},parse:function(e,t){if(JXG.Options.device=="pc"&&navigator.userAgent.search("Apple")==-1){try{GUI.board.jc.parse(e);if(t)console.log("%c[E+L] "+e,"color:#3820a7;")}catch(o){console.log("Exception: "+o);console.log("%c[ERR] Error parsing: "+e,"color:red;");return false}}else{try{GUI.board.jc.parse(e);if(t)console.log("[E+L] "+e)}catch(o){console.log("Exception: "+o);console.log("[ERR] Error parsing: "+e);return false}}return true},executeJCode:function(e,t,o){var r=GUI.parse(e[0],t);if(!o){if(JXG.isArray(e[1])){for(var s=0;s<e[1].length;s++)e[1][s]()}else if(JXG.isFunction(e[1])){e[1]()}}return r},revertJCode:function(e,t){var o=GUI.parse(e[2],t);if(JXG.isArray(e[3])){for(var r=0;r<e[3].length;r++)e[3][r]()}else if(JXG.isFunction(e[3])){e[3]()}return o},isTouchInElementsBounds:function(e,t){var o,r,s,i;if(JXG.Options.device=="pc"){alert("isTouchInElementsBounds does not support PCs!");return false}o=e.originalEvent.changedTouches[0]||e.changedTouches[0];s=$("#"+t).outerHeight();i=$("#"+t).outerWidth();r=$("#"+t).offset();if(!r)r={left:0,top:0};return o.pageX>r.left&&o.pageX<r.left+i&&o.pageY>r.top&&o.pageY<r.top+s},isRealMSTouchDevice:function(){return"createTouch"in document},clearStrokes:function(){JXGHWR.points.length=0;JXGHWR.pointsRaw.length=0;JXGHWR.strokeID=0;JXGHWR.strokes.length=0;JXGHWR.g.clearRect(0,0,JXGHWR.canvas.width,JXGHWR.canvas.height);JXGHWR.needsClear=false},recognizeHwr:function(){var e=JXGHWR.recognize();GUI.Kbd.insertString(e.str);JXGHWR.needsClear=true}});var GUI=GUI||{};GUI.Kbd={caretChar:"¦",handle:0,input:0,focus:0,activeListId:"",position:0,preText:"",pastText:"",shiftStatus:false,visible:false,inputCallback:0,closeCallback:0,extractPrePastText:function(){GUI.Kbd.position=GUI.Kbd.input.value.indexOf(GUI.Kbd.caretChar);GUI.Kbd.preText=GUI.Kbd.input.value.substring(0,GUI.Kbd.position);GUI.Kbd.pastText=GUI.Kbd.input.value.substring(GUI.Kbd.position+1,GUI.Kbd.input.value.length)},startBlinker:function(e){if(GUI.Kbd.handle!=0)GUI.Kbd.stopBlinker();GUI.Kbd.input=e;GUI.Kbd.visible=true;GUI.Kbd.extractPrePastText();return GUI.Kbd.handle=window.setInterval(function(){if(GUI.Kbd.visible)GUI.Kbd.input.value=GUI.Kbd.preText+GUI.Kbd.pastText;else GUI.Kbd.input.value=GUI.Kbd.preText+GUI.Kbd.caretChar+GUI.Kbd.pastText;GUI.Kbd.visible=!GUI.Kbd.visible},600)},stopBlinker:function(e){if(GUI.Kbd.handle){window.clearInterval(GUI.Kbd.handle);GUI.Kbd.handle=0}if(!GUI.Kbd.visible){var t=GUI.Kbd.caretChar;if(e){GUI.Kbd.visible=false;t=""}else GUI.Kbd.visible=true;GUI.Kbd.input.value=GUI.Kbd.preText+t+GUI.Kbd.pastText}else if(e){GUI.Kbd.visible=false;GUI.Kbd.input.value=GUI.Kbd.preText+GUI.Kbd.pastText}},setVal:function(e,t){GUI.Kbd.stopBlinker();GUI.Kbd.input.value=e+GUI.Kbd.caretChar;GUI.Kbd.position=e.length;$("#kb-textbox").html(GUI.Kbd.input.value);if(!t&&typeof GUI.Kbd.inputCallback=="function")GUI.Kbd.inputCallback();GUI.Kbd.startBlinker(GUI.Kbd.input)},getVal:function(){if(GUI.Kbd.input)return GUI.Kbd.input.value.replace(GUI.Kbd.caretChar,"");else return""},shift:function(){var e,t=$('[id^="keyc"]');GUI.Kbd.shiftStatus=!GUI.Kbd.shiftStatus;if(GUI.Kbd.shiftStatus){for(e=0;e<t.length;e++)$("#"+t[e].id).html($("#"+t[e].id).html().toUpperCase());$("#key-shift").addClass("button-selected")}else{for(e=0;e<t.length;e++)$("#"+t[e].id).html($("#"+t[e].id).html().toLowerCase());$("#key-shift").removeClass("button-selected")}},shiftCase:function(e){if(GUI.Kbd.shiftStatus)return e.toUpperCase();return e},insertString:function(e){GUI.Kbd.stopBlinker();GUI.Kbd.input.value=GUI.Kbd.preText+e+GUI.Kbd.caretChar+GUI.Kbd.pastText;$("#kb-textbox").html(GUI.Kbd.input.value);if(typeof GUI.Kbd.inputCallback=="function")GUI.Kbd.inputCallback();GUI.Kbd.startBlinker(GUI.Kbd.input)},backwardDel:function(){GUI.Kbd.stopBlinker();GUI.Kbd.input.value=GUI.Kbd.preText.substring(0,GUI.Kbd.preText.length-1)+GUI.Kbd.caretChar+GUI.Kbd.pastText;GUI.Kbd.startBlinker(GUI.Kbd.input)},forwardDel:function(){GUI.Kbd.stopBlinker();GUI.Kbd.input.value=GUI.Kbd.preText+GUI.Kbd.caretChar+GUI.Kbd.pastText.substring(1,GUI.Kbd.pastText.length);GUI.Kbd.startBlinker(GUI.Kbd.input)},left:function(){GUI.Kbd.stopBlinker();GUI.Kbd.input.value=GUI.Kbd.preText.substring(0,GUI.Kbd.preText.length-1)+GUI.Kbd.caretChar+GUI.Kbd.preText.substring(GUI.Kbd.preText.length-1,GUI.Kbd.preText.length)+GUI.Kbd.pastText;$("#kb-textbox").html(GUI.Kbd.input.value);GUI.Kbd.startBlinker(GUI.Kbd.input)},right:function(){GUI.Kbd.stopBlinker();GUI.Kbd.input.value=GUI.Kbd.preText+GUI.Kbd.pastText.substring(0,1)+GUI.Kbd.caretChar+GUI.Kbd.pastText.substring(1,GUI.Kbd.pastText.length);$("#kb-textbox").html(GUI.Kbd.input.value);GUI.Kbd.startBlinker(GUI.Kbd.input)},deleteLast:function(e){if(e){GUI.Kbd.stopBlinker();GUI.Kbd.input.value="";GUI.Kbd.startBlinker(GUI.Kbd.input)}else GUI.Kbd.backwardDel();$("#kb-textbox").html(GUI.Kbd.input.value);if(typeof GUI.Kbd.inputCallback=="function")GUI.Kbd.inputCallback()},close:function(){if(!$("#keyboardPanel").hasClass("not-displayed")){if(typeof GUI.Kbd.closeCallback=="function")GUI.Kbd.closeCallback();if(GUI.Kbd.omitKbdClose)return;GUI.Kbd.stopBlinker(true);$("#keyboardPanel").addClass("not-displayed")}if(!GUI.Kbd.omitKbdClose)document.activeElement.blur()},sliderPanel:function(){var e,t,o,r,s;t=$("#key-slide");if(GUI.Kbd.activeListId!=""){if(GUI.Kbd.activeListId==t.attr("id")){GUI.Kbd.activeListId="";t.removeClass("button-selected");$("#kb-dyn-panel").addClass("not-displayed");$("#kb-char-panel").removeClass("not-displayed");GUI.contextUnbindHandlers();return}else{console.log("close "+GUI.Kbd.activeListId);$("#"+GUI.Kbd.activeListId).trigger(GUI.click_event)}}r=GUI.board.objects;o=[];for(e in r)if(r[e].elType=="slider"&&r[e].visProp.priv==false)o.push(r[e]);if(!o.length)return;GUI.Kbd.activeListId=t.attr("id");t.addClass("button-selected");GUI.createSelectDialogKbd(o,function(e){if(GUI.board.objects[e].name)s=GUI.board.objects[e].name;else s=e;GUI.Kbd.insertString(s);GUI.delight();GUI.Kbd.sliderPanel();GUI.Kbd.sliderPanel()},"")},curvePanel:function(){var e,t,o,r;o=$("#key-curve");if(GUI.Kbd.activeListId!=""){if(GUI.Kbd.activeListId==o.attr("id")){GUI.Kbd.activeListId="";o.removeClass("button-selected");$("#kb-dyn-panel").addClass("not-displayed");$("#kb-char-panel").removeClass("not-displayed");GUI.contextUnbindHandlers();return}else $("#"+GUI.Kbd.activeListId).trigger(GUI.click_event)}r=GUI.board.objects;e=[];for(t in r)if(r[t].elementClass==4&&r[t].visProp.priv==false)e.push(r[t]);if(!e.length)return;GUI.Kbd.activeListId=o.attr("id");o.addClass("button-selected");GUI.createSelectDialogKbd(e,function(e){GUI.Kbd.insertString(GUI.board.objects[e].Y.toString().cleanTerm());GUI.delight();GUI.Kbd.curvePanel();GUI.Kbd.curvePanel()},"")},hwrInit:function(){var e;JXGHWR.canvas.width=parseInt($("#"+JXGHWR.canvas.id).outerWidth());JXGHWR.canvas.height=parseInt($("#"+JXGHWR.canvas.id).css("height"));e=$("#"+JXGHWR.canvas.id).offset();JXGHWR.offsetX=e.left;JXGHWR.offsetY=e.top;JXGHWR.g=JXGHWR.canvas.getContext("2d");JXGHWR.g.lineWidth=3;JXGHWR.g.font="14px Arial"},hwrPanel:function(){var e=$("#key-hwr");if(GUI.Kbd.activeListId!=""){if(GUI.Kbd.activeListId==e.attr("id")){GUI.Kbd.activeListId="";e.removeClass("button-selected");$("#kb-hwr-panel").addClass("not-displayed");$("#kb-btns").removeClass("not-displayed");return}else $("#"+GUI.Kbd.activeListId).trigger(GUI.click_event)}GUI.Kbd.activeListId=e.attr("id");e.addClass("button-selected");$("#kb-hwr-panel").removeClass("not-displayed");$("#kb-btns").addClass("not-displayed");GUI.Kbd.hwrInit()},setCaretAtTouchClick:function(e){var t=GUI.Kbd.getSelectionStart(e);while(GUI.Kbd.position>0)GUI.Kbd.left();while(t>0){GUI.Kbd.right();t--}return true},getSelectionStart:function(e){if(e.createTextRange){var t=document.selection.createRange().duplicate();t.moveEnd("character",e.value.length);if(t.text=="")return e.value.length;return e.value.lastIndexOf(t.text)}else return e.selectionStart},showKeyboardPanel:function(e,t,o,r,s,i,n){var a=GUI.getId(e);if(typeof n=="undefined")n=false;GUI.Kbd.omitKbdClose=n;$("#"+e).unbind("focus");$("#"+e).bind("focus",function(){this.blur();$("#hiddenInput").focus()});if(e!=o){$("#"+o).unbind();$("#"+o).bind(GUI.click_event,function(e){$("#hiddenInput").focus();e.stopPropagation();e.preventDefault()})}$("#keyboardPanel").unbind();$("#keyboardPanel").bind(GUI.click_event,function(){$("#hiddenInput").focus()});$("#hiddenInput").val(t);GUI.Kbd.stopBlinker();if(GUI.Kbd.input!=0)GUI.Kbd.input.value=GUI.Kbd.input.value.replace(GUI.Kbd.caretChar,"");a.value=t+GUI.Kbd.caretChar;GUI.Kbd.startBlinker(a);GUI.Kbd.inputCallback=s;GUI.Kbd.closeCallback=i;GUI.Kbd.focus=GUI.getId(o);$("#kb-textbox").html(GUI.Kbd.input.value);$("#kb-textbox").unbind(GUI.click_event);$("#kb-textbox").bind(GUI.click_event,function(){GUI.Kbd.setCaretAtTouchClick(this)});$("#hiddenInput").unbind();$("#hiddenInput").bind("keydown",function(e){var t;e=e||window.event;t=e.keyCode||e.code;switch(t){case 13:GUI.Kbd.close();return;case 35:while(GUI.Kbd.position<GUI.Kbd.input.value.length-1)GUI.Kbd.right();return;case 36:while(GUI.Kbd.position>0)GUI.Kbd.left();return;case 37:GUI.Kbd.left();return;case 39:GUI.Kbd.right();return;case 8:GUI.Kbd.backwardDel();GUI.Kbd.stopBlinker();$("#kb-textbox").html(GUI.Kbd.input.value);if(typeof GUI.Kbd.inputCallback=="function")GUI.Kbd.inputCallback();GUI.Kbd.startBlinker(GUI.Kbd.input);return;case 46:GUI.Kbd.forwardDel();GUI.Kbd.stopBlinker();$("#kb-textbox").html(GUI.Kbd.input.value);if(typeof GUI.Kbd.inputCallback=="function")GUI.Kbd.inputCallback();GUI.Kbd.startBlinker(GUI.Kbd.input);return;case 222:GUI.Kbd.stopBlinker();GUI.Kbd.input.value=GUI.Kbd.input.value.replace(GUI.Kbd.caretChar,String.fromCharCode(39)+GUI.Kbd.caretChar);$("#kb-textbox").html(GUI.Kbd.input.value);if(typeof GUI.Kbd.inputCallback=="function")GUI.Kbd.inputCallback();GUI.Kbd.startBlinker(GUI.Kbd.input);return}});$("#hiddenInput").bind("keypress",function(e){var t;e=e||window.event;t=e.keyCode||e.code;switch(t){case 8:return;case 13:return;case 35:return;case 36:return;case 37:return;case 39:return}if(JXG.isMozilla())t=e.charCode;GUI.Kbd.stopBlinker();GUI.Kbd.input.value=GUI.Kbd.input.value.replace(GUI.Kbd.caretChar,String.fromCharCode(t)+GUI.Kbd.caretChar);$("#kb-textbox").html(GUI.Kbd.input.value);if(typeof GUI.Kbd.inputCallback=="function")GUI.Kbd.inputCallback();GUI.Kbd.startBlinker(GUI.Kbd.input);e.preventDefault()});$("#hiddenInput").bind("webkitspeechchange",GUI.Kbd.speechParse);if(r){$("#kb-char-panel").addClass("not-displayed");$("#kb-function-panel").addClass("not-displayed");$(".kb-jc-panel").addClass("not-displayed")}else{$("#kb-char-panel").removeClass("not-displayed");$("#kb-function-panel").removeClass("not-displayed");$(".kb-jc-panel").removeClass("not-displayed")}$("#keyboardPanel").removeClass("not-displayed");window.setTimeout(function(){GUI.getId("hiddenInput").focus()},1)},hideKeyboardPanel:function(){$("#hiddenInput").unbind();$("#keyboardPanel").unbind();if(GUI.Kbd.input){GUI.Kbd.extractPrePastText();GUI.Kbd.stopBlinker();$("#"+GUI.Kbd.input.id).val($("#"+GUI.Kbd.input.id).val().replace(GUI.Kbd.caretChar,""));$("#"+GUI.Kbd.input.id).unbind();$("#"+GUI.Kbd.focus.id).unbind();GUI.Kbd.input=0;GUI.Kbd.focus=0;GUI.Kbd.inputCallback=0;GUI.Kbd.closeCallback=0}$("#keyboardPanel").addClass("not-displayed")},texts:{durch:"",zum:"",mal:"*",geteilt:"/",dividiert:"/",plus:"+",und:"+",minus:"-",hoch:"^",quadrat:"^2",sinus:"sin",cosinus:"cos",tangens:"tan",betrag:"abs",wurzel:"sqrt",klammer:"",auf:"(",zu:")",x:"x"},levDist:function(e,t){if(!e.length)return t.length;if(!t.length)return e.length;return Math.min(this.levDist(e.substr(1),t)+1,this.levDist(t.substr(1),e)+1,this.levDist(e.substr(1),t.substr(1))+(e[0]!==t[0]?1:0))},speechParse:function(){var e=GUI.Kbd.getVal(),t=e.split(" "),o,r,s,i,n,a=t.length,l="",d,c;for(o=0;o<a;o++){d=t[o].toLowerCase();if(d.match(/[0-9]+/)!=null){l+=d;continue}i=1e6;for(r in this.texts){n=this.levDist(d,r)/d.length;if(n<i){i=n;s=this.texts[r];console.log(d,r,n,s)}if(i==0){break}}if(i<.25){c=s}else{c=d}l+=c}GUI.Kbd.setVal(l)}};JXG.extend(GUI,{ctx_measure:function(){if($("#measure-box").hasClass("button-selected")){GUI.removeMeasureEvt();return}GUI.removeToolEvents(false);$("[class*=measure]").addClass("button-selected");$("#measure-box").addClass("button-selected");GUI.showStatusPanel(GUI.Lang.std.measure_instruction,0,function(){GUI.deselectAllToolButtonsAndRemoveActions();GUI.showPanel(false,0)});GUI.selection=[];GUI.addToolEvent(GUI.down_event,function(e){GUI.addMeasureEvt(e,false)})},ctx_measureAngle:function(e){var t,o,r=0,s=0,i=GUI.board.objects[e],n=i.point1,a=i.point2,l=i.point3,d=a.coords.usrCoords,c=n.coords.usrCoords,u=l.coords.usrCoords,G=[(d[1]+u[1])*.5-c[1],(d[2]+u[2])*.5-c[2]],f=Math.sqrt(G[0]*G[0]+G[1]*G[1]);o="function () { return "+i.id+".getName() + ' = ' + trunc(deg("+a.id+", "+n.id+", "+l.id+"), trunclen) + '°'; }";if(Math.abs(f)>JXG.Math.eps){r=-G[0]/f*30/GUI.board.unitX;s=-G[1]/f*30/GUI.board.unitY}t={type:JXG.GENTYPE_TEXT,src_ids:[i.id,n.id,a.id,l.id],dest_sub_ids:[],dest_id:GUI.id(),args:{x:r,y:s,str:o,anchor:n.id+".getName()"}};GUI.recordStep(t,true,false)},ctx_measureDistance:function(e){var t,o,r,s,i=GUI.board.objects[e];o="function () { return '|' + "+i.point1.name+".getName() + "+i.point2.name+".getName() + '| = ' + trunc(dist("+i.point1.id+", "+i.point2.id+"), trunclen); }";r=(i.point1.coords.usrCoords[1]+i.point2.coords.usrCoords[1])/2;s=(i.point1.coords.usrCoords[2]+i.point2.coords.usrCoords[2])/2-i.point1.Dist(i.point2)/5;t={type:JXG.GENTYPE_TEXT,src_ids:[i.id,i.point1.id,i.point2.id],dest_sub_ids:[],dest_id:GUI.id(),args:{x:r,y:s,str:o}};GUI.recordStep(t,true,false)},ctx_measureSector:function(e){var t,o,r,s,i=GUI.board.objects[e];o="function () { return '|&#x2312;| "+GUI.Lang.std.of+" ' + "+i.name+".getName() + '= ' + trunc(dist("+i.point2.id+", "+i.point1.id+") * rad("+i.point2.id+", "+i.point1.id+", "+i.point3.id+"), trunclen); }";r=(i.point1.coords.usrCoords[1]+i.point2.coords.usrCoords[1])/2;s=(i.point1.coords.usrCoords[2]+i.point2.coords.usrCoords[2])/2-i.point1.Dist(i.point2)/5;t={type:JXG.GENTYPE_TEXT,src_ids:[i.id,i.point1.id,i.point2.id,i.point3.id],dest_sub_ids:[],dest_id:GUI.id(),args:{x:r,y:s,str:o}};GUI.recordStep(t,true,false)},ctx_set_boardimg:function(e,t,o){var r={type:JXG.GENTYPE_BOARDIMG,src_ids:[],dest_sub_ids:[],dest_id:GUI.id(),args:{s:e,anchor:t,scale:o}};GUI.recordStep(r,true,false)},ctx_set_type:function(e,t,o){var r,s,i;if(typeof t=="undefined"){if($("#point-glider-button-free").hasClass("button-selected"))t=JXG.OBJECT_TYPE_POINT;else t=JXG.OBJECT_TYPE_GLIDER;if(t==GUI.ContextSave.type)return}r=GUI.ContextSave.color["fill"];s=GUI.ContextSave.color["stroke"];if(t==JXG.OBJECT_TYPE_GLIDER){if(typeof o=="undefined"){if(GUI.getId("slideObject"))o=GUI.getId("slideObject").value;else o=""}if(o===""){var n,a=JXG.Draw.findHittedObjs(GUI.board.objects[e].coords.scrCoords[1],GUI.board.objects[e].coords.scrCoords[2],GUI.board,JXG.Options.sensitive_area,[JXG.OBJECT_CLASS_POINT,JXG.OBJECT_CLASS_LINE,JXG.OBJECT_CLASS_CIRCLE,JXG.OBJECT_CLASS_CURVE],[]),l=[];for(n=0;n<a.length;n++)if(!GUI.collectionContains(GUI.board.objects[e].descendants,a[n])&&a[n].id!=e)l.push(a[n]);a=l;if(a.length==1)o=a[0].id}if(!r)r=JXG.Options.point.fillColor;if(!s)s=JXG.Options.point.strokeColor;if(o!==""){var d,c,u,G,f;if(GUI.board.objects[e].elementClass==JXG.OBJECT_CLASS_POINT&&GUI.board.objects[o].elementClass==JXG.OBJECT_CLASS_POINT){return}i={type:JXG.GENTYPE_CTX_TYPE_G,src_ids:[e,o],dest_sub_ids:[],dest_id:0,args:{fill:r,stroke:s,Xjc:GUI.board.objects[e].coords.usrCoords[1],Yjc:GUI.board.objects[e].coords.usrCoords[2]}};if(JXG.Options.device=="tablet"||JXG.Options.device=="msie"){d=GUI.board.touches[0].targets[0].Xstart[0];c=GUI.board.touches[0].targets[0].Ystart[0];u=JXG.deepCopy(GUI.board.touches[0].obj.coords.usrCoords)}else{d=GUI.board.mouse.targets[0].Xstart[0];c=GUI.board.mouse.targets[0].Ystart[0];u=JXG.deepCopy(GUI.board.mouse.obj.coords.usrCoords)}G={type:JXG.GENTYPE_MOVEMENT,src_ids:i.src_ids,dest_sub_ids:[],dest_id:0,args:{obj_type:JXG.OBJECT_TYPE_POINT,xstart:d,ystart:c,coords:[{usrCoords:u}]}};f={type:JXG.GENTYPE_COMBINED,src_ids:i.src_ids,dest_sub_ids:[],dest_id:0,args:{steps:[G,i]}};GUI.recordStep(f,true,false);GUI.board.update();GUI.removeGlideInterEvt()}else{GUI.removeToolEvents(false);if(GUI.action=="ablation")GUI.showStatusPanel(GUI.Lang.std.glider_instruct);else GUI.showStatusPanel(GUI.Lang.std.mark_glider_object);GUI.addToolEvent(GUI.move_event,GUI.movePoint,e,true);GUI.addToolEvent(GUI.up_event,GUI.addGlideInterEvt,e,false)}}else{var I=GUI.ContextSave.slideObjectId;if(!r)r=JXG.Options.glider.fillColor;if(!s)s=JXG.Options.glider.strokeColor;if(!I)I=GUI.board.objects[e].slideObject.id;i={type:JXG.GENTYPE_CTX_TYPE_P,src_ids:[e,I],dest_sub_ids:[],dest_id:0,args:{fill:r,stroke:s,Xjc:GUI.board.objects[e].coords.usrCoords[1],Yjc:GUI.board.objects[e].coords.usrCoords[2]}};
GUI.recordStep(i,true,false)}},ctx_set_fixed:function(e){var t=GUI.board.objects[e].getAttribute("fixed"),o;o={type:JXG.GENTYPE_CTX_FIXED,src_ids:[e],dest_sub_ids:[],dest_id:0,args:{s:!t}};GUI.recordStep(o,true,false)},ctx_set_trace:function(e){var t=GUI.board.objects[e].getAttribute("trace"),o;o={type:JXG.GENTYPE_CTX_TRACE,src_ids:[e],dest_sub_ids:[],dest_id:0,args:{s:!t}};GUI.recordStep(o,true,false)},ctx_set_labelsticky:function(e){var t=GUI.board.objects[e].label.getAttribute("fixed"),o;o={type:JXG.GENTYPE_CTX_LABELSTICKY,src_ids:[GUI.board.objects[e].label.id],dest_sub_ids:[],dest_id:0,args:{s:!t}};GUI.recordStep(o,true,false)},ctx_set_withLabel:function(e){var t=GUI.board.objects[e].getAttribute("withLabel"),o;o={type:JXG.GENTYPE_CTX_WITHLABEL,src_ids:[e],dest_sub_ids:[],dest_id:0,args:{s:!t}};GUI.recordStep(o,true,false);if(t)$("#label-sticky").attr("disabled","disabled");else $("#label-sticky").removeAttr("disabled")},ctx_set_visibility:function(e){var t=GUI.board.objects[e].getAttribute("visible"),o;o={type:JXG.GENTYPE_CTX_VISIBILITY,src_ids:[e],dest_sub_ids:[],dest_id:0,args:{s:!t}};GUI.recordStep(o,true,false)},ctx_set_dotvisibility:function(e){var t=GUI.board.objects,o,r;if(GUI.showHidden)o=t[t[e].dot.id].guiVisProp.visible;else o=t[t[e].dot.id].getAttribute("visible");r={type:JXG.GENTYPE_CTX_DOTVISIBILITY,src_ids:[e],dest_sub_ids:[],dest_id:0,args:{s:!o}};GUI.recordStep(r,true,false)},ctx_set_field:function(e,t){var o,r,s,i,n,a;if(t==1){t=JXG.GENTYPE_CTX_STROKEWIDTH;r="color-field";s=GUI.ContextSave.strokeWidth}else if(t==2){t=JXG.GENTYPE_CTX_FILLOPACITY;r="color-field";s=GUI.ContextSave.fillOpacity}else if(t==3){t=JXG.GENTYPE_CTX_LABELSIZE;r="color-field";s=GUI.ContextSave.labelSize}else if(t==4){t=JXG.GENTYPE_CTX_SIZE;r="point-size-field";s=GUI.ContextSave.size}else return;i=GUI.getId(r).value;o=false;n=parseInt(i);if(i!=n)o=true;i=n;if(i<1){o=true;i=100}if(i>100||isNaN(i)){o=true;i=1}if(o)GUI.getId(r).value=i.toFixed(0);a={type:t,src_ids:[e],dest_sub_ids:[],dest_id:0,args:{s:i,old:s}};GUI.recordStep(a,true,false)},ctx_set_strokeWidth:function(e){return GUI.ctx_set_field(e,1)},ctx_set_fillOpacity:function(e){return GUI.ctx_set_field(e,2)},ctx_set_labelSize:function(e){return GUI.ctx_set_field(e,3)},ctx_set_size:function(e){return GUI.ctx_set_field(e,4)},ctx_set_text:function(e,t,o){var r,s;r=$("#textInput").val().sanitize().replace(GUI.Kbd.caretChar,"");s={type:JXG.GENTYPE_CTX_TEXT,src_ids:[e].concat(t),dest_sub_ids:[],dest_id:0,args:{s:r,old:GUI.ContextSave.text}};return GUI.recordStep(s,true,false,o)},ctx_set_label:function(e,t,o){var r,s;r=GUI.getId("textInput").value.sanitize().replace(/\\/g,"").replace(/'/g,"\\'").replace(GUI.Kbd.caretChar,"");s={type:JXG.GENTYPE_CTX_LABEL,src_ids:[e].concat(t),dest_sub_ids:[],dest_id:0,args:{s:r,old:GUI.ContextSave.labelName}};return GUI.recordStep(s,true,false,o)},ctx_set_interval:function(e,t,o){var r,s,i,n,a;s=parseInt(GUI.getId("slider-interval-a-field").value);i=parseInt(GUI.getId("slider-interval-b-field").value);if(t){r=s;n=GUI.ContextSave.start}else{r=i;n=GUI.ContextSave.end}if(typeof s!="number"||typeof i!="number"||isNaN(s)||isNaN(i)||s>=i)return;a={type:JXG.GENTYPE_CTX_INTVAL,src_ids:[e],dest_sub_ids:[],dest_id:0,args:{s:r,old:n,which:t}};GUI.recordStep(a,true,false,o)},ctx_set_point1:function(e,t,o){var r,s,i,n,a;if(t==1){s="sliderpoint1-coord-x-field";i=GUI.ContextSave.p1x}else if(t==2){s="sliderpoint1-coord-y-field";i=GUI.ContextSave.p1y}else return;r=GUI.getId(s);if(GUI.Kbd.input==r)n=GUI.Kbd.getVal();else n=r.value;r=GUI.board.objects[e].point1.coords.usrCoords[3-t];a={type:JXG.GENTYPE_CTX_POINT1,src_ids:[GUI.board.objects[e].point1.id],dest_sub_ids:[],dest_id:0,args:{s:n.sanitize(),old:i,which:t,other:r}};GUI.recordStep(a,true,false,o)},ctx_set_point2:function(e,t,o){var r,s,i,n,a;if(t==1){s="sliderpoint2-coord-x-field";i=GUI.ContextSave.p2x}else if(t==2){s="sliderpoint2-coord-y-field";i=GUI.ContextSave.p2y}else return;r=GUI.getId(s);if(GUI.Kbd.input==r)n=GUI.Kbd.getVal();else n=r.value;r=GUI.board.objects[e].point2.coords.usrCoords[3-t];a={type:JXG.GENTYPE_CTX_POINT2,src_ids:[GUI.board.objects[e].point2.id],dest_sub_ids:[],dest_id:0,args:{s:n.sanitize(),old:i,which:t,other:r}};GUI.recordStep(a,true,false,o)},ctx_set_coord:function(e,t,o){var r,s,i,n,a;if(t==1){s="point-coord-x-field";i=GUI.ContextSave.Xjc}else if(t==2){s="point-coord-y-field";i=GUI.ContextSave.Yjc}else return;r=GUI.getId(s);if(GUI.Kbd.input==r)n=GUI.Kbd.getVal();else n=r.value;a={type:JXG.GENTYPE_CTX_COORDS,src_ids:[e],dest_sub_ids:[],dest_id:0,args:{s:n.sanitize(),old:i,which:t}};GUI.recordStep(a,true,false,o)},ctx_set_xcoord:function(e,t){return GUI.ctx_set_coord(e,1,t)},ctx_set_ycoord:function(e,t){return GUI.ctx_set_coord(e,2,t)},ctx_set_radius:function(e,t){var o,r,s;o=GUI.getId("circle-radius-field");if(GUI.Kbd.input==o)r=GUI.Kbd.getVal();else r=o.value;if(r==""||isNaN(r)||r==null)return;s={type:JXG.GENTYPE_CTX_RADIUS,src_ids:[e],dest_sub_ids:[],dest_id:0,args:{s:r,old:GUI.ContextSave.radius}};GUI.recordStep(s,true,false,t)},ctx_set_angleradius:function(e,t){var o,r,s;o=GUI.getId("angle-radius-field");if(GUI.Kbd.input==o)r=GUI.Kbd.getVal();else r=o.value;if(r==""||isNaN(r)||r==null)return;s={type:JXG.GENTYPE_CTX_ANGLERADIUS,src_ids:[e],dest_sub_ids:[],dest_id:0,args:{s:r,old:GUI.ContextSave.angleRadius}};GUI.recordStep(s,true,false,t)},ctx_set_face:function(e){var t,o;if($("#point-style-button-circle").hasClass("button-selected"))t="circle";else if($("#point-style-button-square").hasClass("button-selected"))t="square";else if($("#point-style-button-cross").hasClass("button-selected"))t="cross";else t="plus";o={type:JXG.GENTYPE_CTX_FACE,src_ids:[e],dest_sub_ids:[],dest_id:0,args:{s:t,old:GUI.ContextSave.face}};GUI.recordStep(o,true,false)},ctx_set_straightfirst:function(e){var t=$("#line-button-first").hasClass("button-selected"),o;o={type:JXG.GENTYPE_CTX_STRAIGHT,src_ids:[e],dest_sub_ids:[],dest_id:0,args:{s:t,which:"first"}};GUI.recordStep(o,true,false)},ctx_set_straightlast:function(e){var t=$("#line-button-last").hasClass("button-selected"),o;o={type:JXG.GENTYPE_CTX_STRAIGHT,src_ids:[e],dest_sub_ids:[],dest_id:0,args:{s:t,which:"last"}};GUI.recordStep(o,true,false)},ctx_set_arrowfirst:function(e){var t=$("#line-button-arrow-first").hasClass("button-selected"),o;o={type:JXG.GENTYPE_CTX_ARROW,src_ids:[e],dest_sub_ids:[],dest_id:0,args:{s:t,which:"first"}};GUI.recordStep(o,true,false)},ctx_set_arrowlast:function(e){var t=$("#line-button-arrow-last").hasClass("button-selected"),o;o={type:JXG.GENTYPE_CTX_ARROW,src_ids:[e],dest_sub_ids:[],dest_id:0,args:{s:t,which:"last"}};GUI.recordStep(o,true,false)},ctx_set_color:function(e){var t,o,r,s,i;if(!$("#color-tab-label").hasClass("button-disabled")){t="labelstroke"}else if(!$("#color-tab-stroke").hasClass("button-disabled")){t="stroke"}else if(!$("#color-tab-fill").hasClass("button-disabled"))t="fill";else return;i=$("#color-field");if(i.css("background-color")!=="transparent"&&i.css("background-color")!=="rgba(0, 0, 0, 0)"){if(t=="fill")r=i.val()/100;else r=1;o=JXG.rgbo2rgba(JXG.rgb2hex(i.css("background-color")),r)}else o="transparent";s={type:JXG.GENTYPE_CTX_COLOR,src_ids:[e],dest_sub_ids:[],dest_id:0,args:{s:o,old:GUI.ContextSave.color[t],which:t,hasLabel:GUI.board.objects[e].label}};GUI.recordStep(s,true,false)},ctx_set_plot:function(e){var t={type:JXG.GENTYPE_CTX_PLOT,src_ids:[e],dest_sub_ids:[],dest_id:0,args:{s:"function(x) { return "+GUI.Kbd.getVal()+"; }",old:GUI.board.objects[e].Y.toString()}};GUI.recordStep(t,true,false)},ctx_set_scale:function(e){var t,o="image-size-field";if(GUI.Kbd.input==GUI.getId(o))t=GUI.Kbd.getVal();else t=GUI.getId(o).value;GUI.recordStep({type:JXG.GENTYPE_CTX_SCALE,src_ids:[e],dest_sub_ids:[],dest_id:0,args:{s:t,old:GUI.ContextSave.scale}},true,false)},ctx_visible:function(e){return!$("div#ctxPanel").hasClass("not-displayed")&&$("input#id").attr("value")==e},ctx_input_toggle:function(e,t,o){o=JXG.def(o,"button-selected");$(e)[t+"Class"](o);$(e+"-box")[t+"Class"](o)},generateJCode:function(e,t){var o,r,s,i,n,a,l,d,c,u,G,f,I="",p="",g="",U="";s=t.objects;var b=function(e){return function(){if(GUI.ctx_visible(e)){$("#point-glider-button-glider").addClass("button-selected");$("#point-glider-button-free").removeClass("button-selected");$("#point-coord").addClass("not-displayed");t.update()}}};var h=function(e){return function(){if(GUI.ctx_visible(e)){$("#point-glider-button-free").addClass("button-selected");$("#point-glider-button-glider").removeClass("button-selected");$("#point-coord").removeClass("not-displayed")}}};switch(e.type){case JXG.GENTYPE_CTX_TYPE_G:I=e.src_ids[0]+".glide("+e.src_ids[1]+"); ";if(s[e.src_ids[1]].elementClass==JXG.OBJECT_CLASS_POINT)I+=e.src_ids[0]+".visible = false; ";else{I+=e.src_ids[0]+".fillColor = '"+JXG.Options.glider.fillColor+"'; ";I+=e.src_ids[0]+".strokeColor = '"+JXG.Options.point.strokeColor+"'; "}p=e.src_ids[0]+".free(); ";if(s[e.src_ids[1]].elementClass==JXG.OBJECT_CLASS_POINT)p+=e.src_ids[0]+".visible = true; ";else{if(e.args.fill&&e.args.stroke){p+=e.src_ids[0]+".fillColor = '"+e.args.fill+"'; ";p+=e.src_ids[0]+".strokeColor = '"+e.args.stroke+"'; "}}p+=e.src_ids[0]+".move(["+e.args.Xjc+", "+e.args.Yjc+"], 0); ";g=b(e.src_ids[0]);U=h(e.src_ids[0]);break;case JXG.GENTYPE_CTX_TYPE_P:I=e.src_ids[0]+".free(); "+e.src_ids[0]+".fillColor = '";I+=JXG.Options.point.fillColor+"'; ";I+=e.src_ids[0]+".strokeColor = '"+JXG.Options.point.strokeColor+"'; ";p=e.src_ids[0]+".fillColor = '"+e.args.fill+"'; ";p+=e.src_ids[0]+".strokeColor = '"+e.args.stroke+"'; ";p+=e.src_ids[0]+".glide("+e.src_ids[1]+"); ";g=h(e.src_ids[0]);U=b(e.src_ids[0]);break;case JXG.GENTYPE_CTX_WITHLABEL:var v=function(e,t){return function(){if(GUI.ctx_visible(t)){$("#textInput").removeClass("button-disabled");$("#label-visible").addClass("button-selected");$("#color-tab-label").removeClass("not-displayed");GUI.ContextSave.withLabel=e}}};var _=function(e,t){return function(){if(GUI.ctx_visible(t)){$("#textInput").addClass("button-disabled");$("#label-visible").removeClass("button-selected");$("#color-tab-label").addClass("not-displayed");$("#color-tab-stroke").trigger(GUI.click_event);GUI.ContextSave.withLabel=e}}};if(typeof e.args.s=="undefined")e.args.s=e.args.l;if(e.args.s){I=e.src_ids[0]+".withLabel = true; ";p=e.src_ids[0]+".withLabel = false; ";g=v(true,e.src_ids[0]);U=_(false,e.src_ids[0])}else{I=e.src_ids[0]+".withLabel = false; ";p=e.src_ids[0]+".withLabel = true; ";g=_(false,e.src_ids[0]);U=v(true,e.src_ids[0])}break;case JXG.GENTYPE_CTX_VISIBILITY:if(typeof e.args.s=="undefined")e.args.s=e.args.v;I+=e.src_ids[0]+".visible = "+e.args.s+"; ";p+=e.src_ids[0]+".visible = "+!e.args.s+"; ";var m=function(e,t,o){return function(){if(GUI.ctx_visible(t)){var r,s="add",i="remove";if(!e){r=i;i=s;s=r}GUI.ctx_input_toggle("#textInput",i,"button-disabled");if(o.type==JXG.OBJECT_TYPE_TEXT)GUI.ctx_input_toggle("#label-visible",s);GUI.ContextSave.visible=e}if(!o)o=GUI.board.objects[t]}};r=s[e.src_ids[0]];if(e.args.s){g=m(true,e.src_ids[0],r);U=m(false,e.src_ids[0],r)}else{g=m(false,e.src_ids[0],r);U=m(true,e.src_ids[0],r)}break;case JXG.GENTYPE_CTX_DOTVISIBILITY:if(typeof e.args.s=="undefined")e.args.s=e.args.v;I=e.src_ids[0]+".orthotype = "+(e.args.s?"'sectordot'":"'sector'")+"; ";p=e.src_ids[0]+".orthotype = "+(e.args.s?"'sector'":"'sectordot'")+"; ";var C=function(e,t){return function(){if(GUI.ctx_visible(t)){GUI.ctx_input_toggle("#angle-button-rightangle",e)}}};if(e.args.s){g=C("add",e.src_ids[0]);U=C("remove",e.src_ids[0])}else{g=C("remove",e.src_ids[0]);U=C("add",e.src_ids[0])}break;case JXG.GENTYPE_CTX_MPVISIBILITY:if(e.args.s=="undefined")e.args.s=e.args.v;I=e.src_ids[1]+".visible = "+e.args.s+"; ";p=e.src_ids[1]+".visible = "+!e.args.s+"; ";var y=function(e,t,o,r){return function(){if(GUI.ctx_visible(o)){GUI.ctx_input_toggle("#line-related-midpoint",t)}r.guiVisProp=r.guiVisProp||{};r.guiVisProp.visible=e}};r=s[e.src_ids[1]];if(e.args.s){g=y(true,"add",e.src_ids[0],r);U=y(false,"remove",e.src_ids[0],r)}else{g=y(false,"remove",e.src_ids[0],r);U=y(true,"add",e.src_ids[0],r)}break;case JXG.GENTYPE_CTX_FIXED:if(typeof e.args.s=="undefined")e.args.s=e.args.f;I=e.src_ids[0]+".fixed = "+e.args.s+"; ";p=e.src_ids[0]+".fixed = "+!e.args.s+"; ";var x=function(e,t){return function(){if(GUI.ctx_visible(t)){GUI.ctx_input_toggle("#status-fix",e);$("#point-coord")[e+"Class"]("not-displayed")}}};if(e.args.s){g=x("add",e.src_ids[0]);U=x("remove",e.src_ids[0])}else{g=x("remove",e.src_ids[0]);U=x("add",e.src_ids[0])}break;case JXG.GENTYPE_CTX_TRACE:if(typeof e.args.s=="undefined")e.args.s=e.args.t;I=e.src_ids[0]+".trace = "+e.args.s+"; ";p=e.src_ids[0]+".trace = "+!e.args.s+"; ";var E=function(e,t){return function(){if(GUI.ctx_visible(t)){GUI.ctx_input_toggle("#status-trace",e)}}};if(e.args.s){g=E("add",e.src_ids[0]);U=E("remove",e.src_ids[0])}else{g=E("remove",e.src_ids[0]);U=E("add",e.src_ids[0])}break;case JXG.GENTYPE_CTX_TEXT:if(typeof e.args.s=="undefined")e.args.s=e.args.t;if(e.args.s.search(/'/)==-1)I=e.src_ids[0]+".setText('"+e.args.s+"'); ";else{try{GUI.board.jc.snippet(e.args.s,true);I=e.src_ids[0]+".setText(function () { return "+e.args.s+"; }); "}catch(S){break}}if(e.args.old.search(/'/)==-1&&e.args.old.search(/function/)==-1)p=e.src_ids[0]+".setText('"+e.args.old+"'); ";else p=e.src_ids[0]+".setText(function () { return "+e.args.old+"; }); ";var J=function(e,t){return function(){if(GUI.ctx_visible(t)){$("#textInput").val(e);GUI.ContextSave.text=e}}};g=J(e.args.s,e.src_ids[0]);U=J(e.args.old,e.src_ids[0]);break;case JXG.GENTYPE_CTX_LABEL:if(typeof e.args.s=="undefined")e.args.s=e.args.l;I=e.src_ids[0]+".name = '"+e.args.s+"'; ";I+=e.src_ids[0]+".label.setText('"+e.args.s+"'); ";e.args.old=e.args.old.sanitize().replace(/\\/g,"").replace(/'/g,"\\'");p=e.src_ids[0]+".name = '"+e.args.old+"'; ";p+=e.src_ids[0]+".label.setText('"+e.args.old+"'); ";var T=function(e,t){return function(){if(GUI.ctx_visible(t)){$("#textInput").attr("value",e);GUI.ContextSave.labelName=e}}};g=T(e.args.s,e.src_ids[0]);U=T(e.args.old,e.src_ids[0]);break;case JXG.GENTYPE_CTX_LABELSTICKY:if(typeof e.args.s=="undefined")e.args.s=e.args.f;I=e.src_ids[0]+".fixed = "+e.args.s+"; ";p=e.src_ids[0]+".fixed = "+!e.args.s+"; ";var w=function(e,t){return function(){if(GUI.ctx_visible(t)){if(e)$("#label-sticky").attr("checked","checked");else $("#label-sticky").removeAttr("checked")}}};if(e.args.s){g=w(true,e.src_ids[0]);U=w(false,e.src_ids[0])}else{g=w(false,e.src_ids[0]);U=w(true,e.src_ids[0])}break;case JXG.GENTYPE_CTX_STROKEWIDTH:if(e.args.s=="undefined")e.args.s=e.args.w;I=e.src_ids[0]+".strokeWidth = "+e.args.s+"; ";p=e.src_ids[0]+".strokeWidth = "+e.args.old+"; ";r=s[e.src_ids[0]];if(r.type==JXG.OBJECT_TYPE_POLYGON){for(o in r.borders){if(r.borders.hasOwnProperty(o)){I=r.borders[o].id+".strokeWidth = "+e.args.s+"; "+I;p=p+r.borders[o].id+".strokeWidth = "+e.args.old+"; "}}}var k=function(e,t){return function(){if(GUI.ctx_visible(t)){if(!$("#color-tab-stroke").hasClass("button-disabled"))$("#color-field").val(e);GUI.ContextSave.strokeWidth=e}}};g=k(e.args.s,e.src_ids[0]);U=k(e.args.old,e.src_ids[0]);break;case JXG.GENTYPE_CTX_LABELSIZE:I=e.src_ids[0]+".fontSize = "+e.args.s+"; ";p=e.src_ids[0]+".fontSize = "+e.args.old+"; ";var X=function(e,t){return function(){if(GUI.ctx_visible(t)){if(!$("#color-tab-label").hasClass("button-disabled"))$("#color-field").val(e);GUI.ContextSave.labelSize=e}}};g=X(e.args.s,e.src_ids[0].replace(/Label/,""));U=X(e.args.old,e.src_ids[0].replace(/Label/,""));break;case JXG.GENTYPE_CTX_SIZE:I=e.src_ids[0]+".size = "+e.args.s+"; ";p=e.src_ids[0]+".size = "+e.args.old+"; ";var O=function(e,t){return function(){if(GUI.ctx_visible(t)){$("#point-size-field").val(e);GUI.ContextSave.size=e}}};g=O(e.args.s,e.src_ids[0]);U=O(e.args.old,e.src_ids[0]);break;case JXG.GENTYPE_CTX_SCALE:I=e.src_ids[0]+".scale = "+e.args.s+"; ";p=e.src_ids[0]+".scale = "+e.args.old+"; ";var P=function(e,t){return function(){if(GUI.ctx_visible(t)){$("#image-size-field").val(e);GUI.ContextSave.scale=e}}};g=P(e.args.s,e.src_ids[0]);U=P(e.args.old,e.src_ids[0]);break;case JXG.GENTYPE_CTX_INTVAL:if(e.args.which){I=e.src_ids[0]+".smin = "+e.args.s+"; ";p=e.src_ids[0]+".smin = "+e.args.old+"; "}else{I=e.src_ids[0]+".smax = "+e.args.s+"; ";p=e.src_ids[0]+".smax = "+e.args.old+"; "}var L=function(t,o){return function(){if(GUI.ctx_visible(o)){if(e.args.which){$("#slider-interval-a-field").val(t);GUI.ContextSave.start=t}else{$("#slider-interval-b-field").val(t);GUI.ContextSave.end=t}}}};g=L(e.args.s,e.src_ids[0]);U=L(e.args.old,e.src_ids[0]);break;case JXG.GENTYPE_CTX_FILLOPACITY:if(typeof e.args.s=="undefined")e.args.s=e.args.o;I=e.src_ids[0]+".fillOpacity = "+e.args.s/100+"; ";p=e.src_ids[0]+".fillOpacity = "+e.args.old+"; ";var A=function(e,t,o){return function(){if(GUI.ctx_visible(t)){if(e>1)e/=100;if(!$("#color-tab-fill").hasClass("button-disabled"))$("#color-field").val(e*100);GUI.ContextSave.fillOpacity=e;GUI.ContextSave.color["fill"]=JXG.rgbo2rgba(o.getAttribute("fillColor"),e)}}};r=s[e.src_ids[0]];g=A(e.args.s,e.src_ids[0],r);U=A(e.args.old,e.src_ids[0],r);break;case JXG.GENTYPE_CTX_FACE:if(typeof e.args.s=="undefined")e.args.s=e.args.f;I=e.src_ids[0]+".face = '"+e.args.s+"'; ";p=e.src_ids[0]+".face = '"+e.args.old+"'; ";var j=function(e,t){return function(){if(GUI.ctx_visible(t)){$("#point-style-button-circle").removeClass("button-selected");$("#point-style-button-square").removeClass("button-selected");$("#point-style-button-cross").removeClass("button-selected");$("#point-style-button-plus").removeClass("button-selected");$("#point-style-button-"+e).addClass("button-selected");GUI.ContextSave.face=e}}};g=j(e.args.s,e.src_ids[0]);U=j(e.args.old,e.src_ids[0]);break;case JXG.GENTYPE_CTX_STRAIGHT:I=p=e.src_ids[0]+".straight"+e.args.which+" = ";I+=e.args.s+"; ";p+=!e.args.s+"; ";var R=function(t,o){return function(){if(GUI.ctx_visible(o)){i=$("#line-button-"+e.args.which);if(t)i.addClass("button-selected");else i.removeClass("button-selected")}}};g=R(e.args.s,e.src_ids[0]);U=R(!e.args.s,e.src_ids[0]);break;case JXG.GENTYPE_CTX_ARROW:if(typeof e.args.s=="undefined")e.args.s=e.args.a;I=p=e.src_ids[0]+"."+e.args.which+"arrow = ";I+=e.args.s+"; ";p+=!e.args.s+"; ";var B=function(t,o){return function(){if(GUI.ctx_visible(o)){i=$("#line-button-arrow-"+e.args.which);if(t)i.addClass("button-selected");else i.removeClass("button-selected")}}};g=B(e.args.s,e.src_ids[0]);U=B(!e.args.s,e.src_ids[0]);break;case JXG.GENTYPE_CTX_ANGLERADIUS:if(typeof e.args.s=="undefined")e.args.s=e.args.r;I=e.src_ids[0]+".radius = "+e.args.s+"; ";p=e.src_ids[0]+".radius = "+e.args.old+"; ";var D=function(e,t){return function(){if(GUI.ctx_visible(t)){$("#angle-radius-field").val(e);GUI.ContextSave.angleRadius=e}}};g=D(e.args.s,e.src_ids[0]);U=D(e.args.old,e.src_ids[0]);break;case JXG.GENTYPE_CTX_RADIUS:if(typeof e.args.s=="undefined")e.args.s=e.args.r;I=e.src_ids[0]+".setRadius(function () { return "+e.args.s+"; }); ";p=e.src_ids[0]+".setRadius(function () { return "+e.args.old+"; }); ";var N=function(e,t){return function(){if(GUI.ctx_visible(t)){$("#circle-radius-field").val(e);GUI.ContextSave.radius=e}}};g=N(e.args.s,e.src_ids[0]);U=N(e.args.old,e.src_ids[0]);break;case JXG.GENTYPE_CTX_COORDS:if(typeof e.args.s=="undefined"){if(typeof e.args.y=="undefined")e.args.s=e.args.x;else e.args.s=e.args.y}if(e.args.which==1){l=e.args.s;d=e.args.old;a="X"}else{l=e.args.s;d=e.args.old;a="Y"}I=e.src_ids[0]+"."+a+" = function() { return "+l+"; }; ";if(parseFloat(l)==l)I+=e.src_ids[0]+".free(); ";p=e.src_ids[0]+"."+a+" = function() { return "+d+"; }; ";if(d.toString().search("function")==-1)p+=e.src_ids[0]+".free(); ";var K=function(e,t,o){return function(){if(GUI.ctx_visible(o)){$("#point-coord-"+e.toLowerCase()+"-field").val(t);GUI.ContextSave[e+"jc"]=t}}};g=K(a,l,e.src_ids[0]);U=K(a,d,e.src_ids[0]);break;case JXG.GENTYPE_CTX_POINT1:if(typeof e.args.s=="undefined"){if(typeof e.args.y=="undefined")e.args.s=e.args.x;else e.args.s=e.args.y}if(e.args.which==1){l=c=e.args.s;d=G=e.args.old;a="X";u=f=e.args.other}else{l=u=e.args.s;d=f=e.args.old;a="Y";c=G=e.args.other}I=e.src_ids[0]+".moveTo(["+c+", "+u+"]); $board.fullUpdate(); ";p=e.src_ids[0]+".moveTo(["+G+", "+f+"]); $board.fullUpdate(); ";var M=function(e,t,o){return function(){if(GUI.ctx_visible(o)){$("#sliderpoint1-coord-"+e.toLowerCase()+"-field").val(t);GUI.ContextSave["p1"+e.toLowerCase()]=t}}};g=M(a,l,e.src_ids[0]);U=M(a,d,e.src_ids[0]);break;case JXG.GENTYPE_CTX_POINT2:if(typeof e.args.s=="undefined"){if(typeof e.args.y=="undefined")e.args.s=e.args.x;else e.args.s=e.args.y}if(e.args.which==1){l=c=e.args.s;d=G=e.args.old;a="X";u=f=e.args.other}else{l=u=e.args.s;d=f=e.args.old;a="Y";c=G=e.args.other}I=e.src_ids[0]+".moveTo(["+c+", "+u+"]); $board.fullUpdate(); ";p=e.src_ids[0]+".moveTo(["+G+", "+f+"]); $board.fullUpdate(); ";var Y=function(e,t,o){return function(){if(GUI.ctx_visible(o)){$("#sliderpoint2-coord-"+e.toLowerCase()+"-field").val(t);GUI.ContextSave["p2"+e.toLowerCase()]=t}}};g=Y(a,l,e.src_ids[0]);U=Y(a,d,e.src_ids[0]);break;case JXG.GENTYPE_CTX_COLOR:if(typeof e.args.which=="undefined")e.args.which=e.args.element;if(e.args.which.substr(0,5)=="label")n=".label.";else n=".";if(typeof e.args.s=="undefined")e.args.s=e.args.c;I=e.src_ids[0]+n+e.args.which.replace("label","")+"Color = '";I+=e.args.s+"'; ";p=e.src_ids[0]+n+e.args.which.replace("label","")+"Color = '";p+=e.args.old+"'; ";r=s[e.src_ids[0]];if(e.args.which=="stroke"&&r.type==JXG.OBJECT_TYPE_POLYGON){for(o in r.borders){if(r.borders.hasOwnProperty(o)){I=r.borders[o].id+n+e.args.which.replace("label","")+"Color = '"+e.args.s+"'; "+I;p=p+r.borders[o].id+n+e.args.which.replace("label","");p+="Color ='"+e.args.old+"'; "}}}if(e.args.which.substr(0,9)=="highlight"&&e.args.hasLabel){I+=e.src_ids[0]+".label."+e.args.which+"Color = '"+e.args.s+"'; ";p=e.src_ids[0]+".label."+e.args.which+"Color = '"+e.args.old+"'; "}var z=function(t,o){return function(){var r=JXG.rgba2rgbo(t),s={labelstroke:"label",stroke:"stroke",fill:"fill"};if(GUI.ctx_visible(o)){i=$("#color-field");if(!$("#color-tab-"+s[e.args.which]).hasClass("button-disabled")){i.css("background-color",r[0]);i.css("color",GUI.getBestSwContrast(JXG.hex2rgb(r[0])))}GUI.ContextSave.color[e.args.which]=t}}};g=z(e.args.s,e.src_ids[0]);U=z(e.args.old,e.src_ids[0]);break;case JXG.GENTYPE_CTX_PLOT:I=e.src_ids[0]+".generateTerm('x', 'x', '"+e.args.s.cleanTerm()+"'); $board.update();";p=e.src_ids[0]+".generateTerm('x', 'x', '"+e.args.old.cleanTerm()+"'); $board.update();";break;default:return[]}return[I,g,p,U]}});GUI.tpl=function(){var e={};return{load:function(t){e[t]=e[t]||this.trim(document.getElementById(t).innerHTML);return e[t]},trim:function(e){e=e.replace(/^\s+/,"");e=e.replace(/\s+$/,"");return e},render:function(e,t){var o,r;o=this.load(e)||"Template not found";r=/%L-(.*?)%/;while(r.test(o)){o=o.replace(r,GUI.Lang.std[RegExp.$1]||"#!$"+RegExp.$1+"#!$")}r=/%(.*?)%/;while(r.test(o)){o=o.replace(r,typeof t[RegExp.$1]!=="undefined"&&t[RegExp.$1]!==null?t[RegExp.$1]:"#!$"+RegExp.$1+"#!$")}r=/#!\$/g;o=o.replace(r,"%");return o}}}();var Flow=function(e,t){var o=this;this.id=e;this.hid="#"+e;this.speed=100;this.root=$(this.hid);this.itemlist=$(this.hid+" .itemlist");this.width=parseInt(this.root.css("width"));this.height=t.previewHeight||502;this.previewWidth=t.previewWidth||502;this.itemSpace=t.itemSpace||50;this.itemPreview=(this.width-this.previewWidth-2*this.itemSpace)/2;this.scrollWidth=this.itemSpace+this.previewWidth;this.items=[];this.eventHandlers={};this.currentItem=0;this.handleKbd=false;this.eventCapture=t.eventCapture||e;if(!JXG.isArray(this.eventCapture)){this.eventCapture=[this.eventCapture]}$.each($(this.hid+" .itemlist .item"),function(e,t){t.id=null;o.items.push(t)});this.initMarkers();this.addEventListener()};Flow.prototype.initMarkers=function(){this.spacerStart=$(document.createElement("div"));this.spacerStart.css("width",this.itemPreview+"px");this.spacerStart.css("height",this.height+"px");this.spacerStart.addClass("carousel-marker yzBackgroundColorM");this.spacerStart.attr("id",this.id+"startmarker");this.itemlist.prepend(this.spacerStart);this.spacerEnd=$(document.createElement("div"));this.spacerEnd.css("width",this.itemPreview+this.itemSpace+"px");this.spacerEnd.css("height",this.height+"px");this.spacerEnd.addClass("carousel-marker yzBackgroundColorM");this.spacerEnd.attr("id",this.id+"endmarker");this.itemlist.append(this.spacerEnd)};Flow.prototype.indexById=function(e){var t;for(t=0;t<this.items.length;t++){if(this.items[t].id===e){return t}}return-1};Flow.prototype.append=function(e,t){var o=$(e);o.id=t;this.items.push(o);o.insertBefore(this.hid+"endmarker");this.update()};Flow.prototype.prepend=function(e,t){var o=$(e);o.id=t;this.items.splice(0,0,o);o.insertAfter(this.hid+"startmarker");this.update()};Flow.prototype.insertBefore=function(e,t,o){var r,s=this.indexById(e);if(s>-1){r=$(t);r.id=o;r.insertBefore(this.items[s]);this.items.splice(s,0,r)}else{this.prepend(t,o)}this.update()};Flow.prototype.insertAfter=function(e,t,o){var r,s=this.indexById(e);if(s>-1){r=$(t);r.id=o;r.insertAfter(this.items[s]);this.items.splice(s+1,0,r)}else{this.append(t,o)}this.update()};Flow.prototype.remove=function(e){var t=this.indexById(e);if(t>-1){this.items[t].remove();this.items.splice(t,1)}};Flow.prototype.update=function(){this.itemlist.css("width",(this.previewWidth+this.itemSpace)*this.items.length+this.itemSpace+2*this.itemPreview+"px")};Flow.prototype.on=function(e,t){if(!this.eventHandlers[e]){this.eventHandlers[e]=[]}this.eventHandlers[e].push(t)};Flow.prototype.triggerEventHandlers=function(e){var t;if(!this.eventHandlers[e]){return}if(!this.items[this.currentItem])return;for(t=0;t<this.eventHandlers[e].length;t++){this.eventHandlers[e][t](this.items[this.currentItem].id)}};Flow.prototype.doScroll=function(e){this.root.animate({scrollLeft:this.currentItem*this.scrollWidth},e);this.triggerEventHandlers("scroll")};Flow.prototype.moveTo=function(e,t){if(e>=0&&e<this.items.length){this.currentItem=e;this.doScroll(t)}};Flow.prototype.moveToId=function(e,t){var o=this.indexById(e);if(o>-1){this.currentItem=o;this.doScroll(t)}};Flow.prototype.moveRight=function(e){if(this.currentItem<this.items.length-1){this.currentItem+=1;this.doScroll(e)}};Flow.prototype.moveLeft=function(e){if(this.currentItem>0){this.currentItem-=1;this.doScroll(e)}};Flow.prototype.addEventListener=function(){var e=this,t,o,r,s=false,i,n,a=document.getElementById("gallery");if(!this.down){this.down=function(t){t.preventDefault();t.stopPropagation();e.triggerEventHandlers("down");if(t.targetTouches){o=[t.targetTouches[0].screenX,t.targetTouches[0].screenY]}else{o=[t.clientX,t.clientY]}r=e.root.scrollLeft();s=true;return false};this.up=function(r){if(!JXG.exists(o)){return}r.preventDefault();r.stopPropagation();if(t>0){e.moveLeft(e.speed)}else if(t<0){e.moveRight(e.speed)}else{o=o[0];if(o<(e.width-e.previewWidth)/2+e.itemSpace){e.moveLeft(e.speed)}else if(o>(e.width+e.previewWidth)/2+3*e.itemSpace){e.moveRight(e.speed)}else{e.triggerEventHandlers("click")}}o=null;t=0;s=false};this.move=function(i){var n,a;if(s){if(i.targetTouches){a=i.targetTouches[0].screenX-o[0]}else{a=i.clientX-o[0]}t=a>0?1:-1;t=Math.abs(a)<20?0:t;n=a/e.width;e.root.scrollLeft(r-n*e.scrollWidth)}};this.keyup=function(t){var o;o=t.key||t.keyCode;switch(o){case 37:e.moveLeft(e.speed);break;case 39:e.moveRight(e.speed);break;case 38:e.triggerEventHandlers("edit");break;case 40:GUI.Gallery.newConstruction(t);break;case 35:e.moveTo(e.items.length-1);break;case 36:e.moveTo(0);break;case 13:case 14:break;case 79:e.triggerEventHandlers("click");break;default:}}}$(document).on("keyup",this.keyup);this.handleKbd=true;$(a).on("mouseup",this.up);$(a).on("mousemove",this.move);JXG.addEvent(a,"touchend",this.up,this);JXG.addEvent(a,"touchmove",this.move,this);for(n=0;n<this.eventCapture.length;n++){i=document.getElementById(this.eventCapture[n]);$(i).on("mousedown",this.down);JXG.addEvent(i,"touchstart",this.down,this)}};Flow.prototype.removeEventListener=function(){var e,t,o=document.getElementById("gallery");$(o).off("mouseup");$(o).off("mousemove");JXG.removeEvent(o,"touchend",this.up,this);JXG.removeEvent(o,"touchmove",this.move,this);for(t=0;t<this.eventCapture.length;t++){e=document.getElementById(this.eventCapture[t]);JXG.removeEvent(e,"touchstart",this.down,this);$(e).off("mousedown")}$(document).off("keyup")};Flow.prototype.suspendKeyboardListener=function(){$(document).off("keyup");this.handleKbd=false};Flow.prototype.resumeKeyboardListener=function(){if(!this.handleKbd){$(document).on("keyup",this.keyup);this.handleKbd=true}};Flow.prototype.cleanup=function(){this.removeEventListener();this.itemlist.html("")};Flow.prototype.resize=function(e,t){this.height=t;this.width=parseInt(this.root.css("width"));this.scrollWidth=this.itemSpace+this.previewWidth;this.itemPreview=(this.width-this.previewWidth-2*this.itemSpace)/2;this.spacerStart.css("width",this.itemPreview+"px");this.spacerStart.css("height",this.height+"px");this.spacerEnd.css("width",this.itemPreview+this.itemSpace+"px");this.spacerEnd.css("height",this.height+"px");this.update()};GUI.scroll=function(e){"use strict";var t=JXG.Util.genUUID(),o=$("#gallery"),r=$(e),s,i,n,a,l,d,c,u,G=false,f,I,p,g,U,b,h;o.append('<div id="'+t+'" class="scrollbar"></div>');if($.browser.mozilla||$.browser.opera){r.css("overflow-y","hidden")}r.css("-ms-overflow-style","none");d=$("#"+t);s=function(){i=r.offset();a=i.top;n=r.height();l=n/r.prop("scrollHeight");c=n*(1-l);h=0;d.css("top",a);d.css("left",i.left+r.width()+2);d.css("height",n*l)};s();U=function(e){h=r.scrollTop()*l;d.css("top",a+h)};r.on("scroll",U);g=function(e){var t=e.detail?e.detail*-10:e.wheelDelta/4;h=Math.max(0,Math.min(h-t,c));r.scrollTop(h/l);d.css("top",a+h)};if($.browser.opera){JXG.addEvent(r[0],"mousewheel",g,r[0])}JXG.addEvent(r[0],"DOMMouseScroll",g,r[0]);I=function(e){u=e.touches?e.touches[0].pageY:e.pageY;b=h;G=true;$(document).on("mousemove",f);$(document).on("mouseup",p);return false};d.on("mousedown",I);f=function(e){var t=e.touches?e.touches[0].pageY:e.pageY,o=e.touches?1:-1;if(G){h=Math.max(0,Math.min(b+(t+o*u),c));d.css("top",a+h);r.scrollTop(h/l)}return false};p=function(e){G=false;$(document).off("mouseup",p);$(document).off("mousemove",f);return false};return{hide:function(){d.hide()},show:function(){d.show()},resize:function(){s()},free:function(){r.off("mousedown",I);r.off("scroll",U);if($.browser.opera){JXG.removeEvent(r[0],"mousewheel",g,r[0])}JXG.removeEvent(r[0],"DOMMouseScroll",g,r[0]);d.remove()}}};GUI.Gallery={flow:null,files:[],currentItem:0,currentSort:"name",useImages:true,padding:8,previewHeight:270,previewWidth:360,editHeight:38,buttonWidth:64,toolbarSpacing:32,boxPrefix:"item-preview-",itemPrefix:"item-",editPrefix:"item-edit-name-",itemButtonHandlers:[],waitAnimShow:false,waitAnimHide:false,indexByKey:function(e){var t;for(t=0;t<this.files.length;t++){if(this.files[t].fullid===e||this.files[t].id===e){return t}}return-1},selectionChanged:function(e){var t,o;this.currentItem=this.indexByKey(e);GUI.Storage.setItem(GUI.appId+":meta:current",this.currentItem);while(t=this.itemButtonHandlers.pop()){$("#item-export-"+t+"-group").off();$("#item-clone-"+t+"-group").off();$("#item-delete-"+t+"-group").off()}$("#item-export-"+e+"-group").on("click",GUI.Gallery.exportClick);$("#item-clone-"+e+"-group").on("click",GUI.Gallery.cloneClick);$("#item-delete-"+e+"-group").on("click",GUI.Gallery.deleteClick);this.itemButtonHandlers.push(e);$(".item").removeClass("bg-selected");$("#item-"+e).addClass("bg-selected");$(".item-edit").removeClass("bg-selected");$("#item-edit-name-"+e).addClass("bg-selected");$(".item-export").removeClass("item-button-selected");$("#item-export-"+e).addClass("item-button-selected");$(".item-clone").removeClass("item-button-selected");$("#item-clone-"+e).addClass("item-button-selected");$(".item-delete").removeClass("item-button-selected");
$("#item-delete-"+e).addClass("item-button-selected");$(".item-edit").removeClass("item-edit-selected");$("#item-edit-name-"+e).addClass("item-edit-selected");$(".item-edit").attr("disabled","disabled");$("#item-edit-name-"+e).removeAttr("disabled");$(".item-caption").removeClass("item-caption-selected");$("#item-export-"+e+"-caption").addClass("item-caption-selected");$("#item-clone-"+e+"-caption").addClass("item-caption-selected");$("#item-delete-"+e+"-caption").addClass("item-caption-selected")},attachEditEvents:function(e){e=this.files[e].id;$("#item-edit-name-"+e).on("focus",this.editFocus);$("#item-edit-name-"+e).on("blur",this.editBlur);$("#item-edit-name-"+e).on("keyup",this.editKeyUp);GUI.Gallery.setCaptions()},editFocus:function(){GUI.Gallery.flow.suspendKeyboardListener()},editBlur:function(){GUI.Gallery.rename();GUI.Gallery.flow.resumeKeyboardListener()},editKeyUp:function(e){var t=e.key||e.keyCode,o=GUI.Gallery.files[GUI.Gallery.currentItem],r=$("#item-edit-name-"+o.id);switch(t){case 13:case 14:GUI.Gallery.rename();r.blur();break;case 27:r.val(GUI.Gallery.files[GUI.Gallery.currentItem].data.name);r.blur();break}},addBoard:function(e){var t,o,r;r=this;try{t=this.files[e].data;if(GUI.Gallery.useImages&&t.image&&t.image.length>0&&JXG.exists(t.code)){$("#"+this.boxPrefix+this.files[e].id).html('<canvas id="'+this.boxPrefix+this.files[e].id+'-canvas" width="'+this.previewWidth+'" height="'+this.previewHeight+'"><'+"/canvas>");this.files[e].canvas=true;o=new Image;o.onload=function(){var t,s;t=document.getElementById(r.boxPrefix+r.files[e].id+"-canvas");s=t.getContext("2d");s.drawImage(o,0,0)};o.src=t.image}else{if(t.content.length>0){this.files[e].board=this.createBoard(this.boxPrefix+this.files[e].id,t);t.image=this.files[e].board.renderer.canvasRoot.toDataURL();GUI.Storage.setItem(this.files[e].fullid,JSON.stringify(t));$("#"+this.boxPrefix+this.files[e].id+"-wait").remove()}}}catch(s){JXG.debug("gallery: "+s+s.stack)}this.files[e].done=true},createBoard:function(e,t){var o,r,s,i,n,a,l,d,c,u;l=JXG.Options.renderer;d=JXG.Options.text.visible;c=JXG.Options.point.withLabel;t.code="";n=JSON.parse(GUI.unpack(t.content));i=n.pop();JXG.Options.renderer="canvas";JXG.Options.text.visible=false;JXG.Options.point.withLabel=false;o=JXG.JSXGraph.initBoard(e,{axis:false,boundingbox:i.boundingBox,showNavigation:false,showCopyright:false,keepaspectratio:true});o.suspendUpdate();if(typeof i.unredo==="undefined"){s=n.length-1}else{s=i.unredo}for(r=0;r<=s;r++){if(n[r].type>50)a=GUI.generateJCode(n[r],o);else a=JXG.SketchReader.generateJCode(n[r],o,n);if(JXG.isArray(a)&&a.length>0){try{t.code+=a[0]+"\n";o.jc.parse(a[0])}catch(G){JXG.debug("Error parsing: '"+a[0]+"'; "+G)}}}if(i.axisVisible){o.objects.GUIx.setAttribute({visible:true});o.objects.GUIx.defaultTicks.setAttribute({drawLabels:false});o.objects.GUIy.setAttribute({visible:true});o.objects.GUIy.defaultTicks.setAttribute({drawLabels:false})}else{o.objects.GUIx.defaultTicks.setAttribute({majorHeight:0,minorHeight:0,visible:false,drawZero:false,drawLabels:false});o.objects.GUIy.defaultTicks.setAttribute({majorHeight:0,minorHeight:0,visible:false,drawZero:false,drawLabels:false})}JXG.Options.renderer=l;if(JXG.exists(d)){JXG.Options.text.visible=d}else{delete JXG.Options.text.visible}JXG.Options.point.withLabel=c;o.removeEventHandlers();o.unsuspendUpdate();o.fullUpdate();o.suspendUpdate();return o},updateFilelist:function(){var e,t,o=this;if(GUI.Gallery.files.length===0&&GUI.Gallery.flow.items.length>0&&GUI.Gallery.flow.items[0].id==="INITIALADDHINT"){GUI.Gallery.flow.remove("INITIALADDHINT")}for(e in GUI.Storage){if((!GUI.Storage.hasOwnProperty||GUI.Storage.hasOwnProperty(e))&&e.indexOf(GUI.appId+":file:")>-1&&this.indexByKey(e)===-1){t=JSON.parse(GUI.Storage.getItem(e));this.files.push({fullid:e,id:e.substr(GUI.appId.length+6),data:t,done:false,idx:t.index})}}if(this.files.length<=0){return}else{if($("#gallery-tooltip-start").length!==0){$("#gallery-tooltip-start").remove()}}if(this.currentItem>-1&&this.files[this.currentItem].done){if(this.files[this.currentItem].board){JXG.JSXGraph.freeBoard(this.files[this.currentItem].board);this.files[this.currentItem].board=false}else if(this.files[this.currentItem].canvas){$("#"+this.boxPrefix+this.files[this.currentItem].id+"-canvas").remove();this.files[this.currentItem].canvas=false}this.files[this.currentItem].data=JSON.parse(GUI.Storage.getItem(this.files[this.currentItem].fullid));$("#"+this.boxPrefix+this.files[this.currentItem].id).html('<img id="'+this.boxPrefix+this.files[this.currentItem].id+'-wait" src="pics/wait-animation-big.gif" class="gallery-wait-animation-big" />');window.setTimeout(function(){o.addBoard(o.currentItem)},500)}this.sort(this.files,"idx")},load:function(e,t){var o,r=true;if(JXG.exists(e)&&JXG.exists(t)){if(e>=0&&!this.files[e].done){this.flow.insertBefore(this.files[e+1].id,GUI.tpl.render("gallery-item-template",{id:this.files[e].id,name:this.files[e].data.name}),this.files[e].id);this.addBoard(e);this.flow.moveRight(0);this.attachEditEvents(e)}if(t<this.files.length&&!this.files[t].done){this.flow.insertAfter(this.files[t-1].id,GUI.tpl.render("gallery-item-template",{id:this.files[t].id,name:this.files[t].data.name}),this.files[t].id);this.addBoard(t);this.attachEditEvents(t)}}else if(JXG.exists(e)){if(!this.files[e].done){this.flow.append(GUI.tpl.render("gallery-item-template",{id:this.files[e].id,name:this.files[e].data.name}),this.files[e].id);this.addBoard(e);this.attachEditEvents(e)}this.flow.moveToId(this.files[e].id,0);t=e}else{r=false;this.resize();o=parseInt(GUI.Storage.getItem(GUI.appId+":meta:current"),10);if(o>-1&&o<this.files.length){this.load(o)}else if(this.files.length>0){this.load(0)}}if(r&&(e>=0||t<this.files.length)&&GUI.activePage==="gallery"){window.setTimeout(function(){GUI.Gallery.load(e-1,t+1)},10)}},resize:function(){var e=$("#gallerycontent").outerWidth()-$("#gallerycontent").width(),t=$("#gallerycontent").outerHeight()-$("#gallerycontent").height(),o=parseInt($("#gallery-css-indicator").width(),10),r,s,i,n;s=window.innerWidth-e;i=window.innerHeight-t;if(o===50){this.padding=4;this.previewHeight=162;this.previewWidth=216;this.editHeight=16;this.buttonWidth=40}else{this.padding=8;this.previewHeight=270;this.previewWidth=360;this.editHeight=38;this.buttonWidth=64}$("#gallery").height(i);this.toolbarSpacing=parseInt($("#toolbar-container").css("margin-top"),10);this.headerHeight=(i-this.previewHeight-this.editHeight-13*this.padding)/2;r=this.headerHeight*5.3125;if(r>s){this.headerHeight*=s/r}$("#gallery-header").css("height",this.headerHeight);$("#gallery-header-watermark").css("margin-top",.15*this.headerHeight);n=s/2-this.previewWidth/2-2*this.padding;$("#carousel-eventcapture-left").css("width",n);$("#carousel-eventcapture-right").css("width",n);if($("#gallery-tooltip-start").length!==0){$("#gallery-tooltip-start").css("top",this.headerHeight+this.previewHeight+6*this.padding+this.editHeight+this.toolbarSpacing-200)}if(this.flow){this.flow.previewWidth=this.previewWidth+2*this.padding;this.flow.height=this.previewHeight+3*this.padding+this.editHeight;this.flow.itemSpace=this.padding;this.flow.resize(s,i);if(GUI.Gallery.files.length>0&&GUI.Gallery.currentItem<GUI.Gallery.files.length&&GUI.Gallery.currentItem>-1){this.flow.moveToId(GUI.Gallery.files[GUI.Gallery.currentItem].id,0)}}return[s,i]},rename:function(){var e,t=this.files[this.currentItem].fullid,o=GUI.Storage.getItem(t);e=JSON.parse(o);e.name=$("#item-edit-name-"+this.files[this.currentItem].id).val();this.files[this.currentItem].data.name=e.name;GUI.Storage.setItem(t,JSON.stringify(e))},createStorageItem:function(e,t){var o={};GUI.fileCounter+=1;GUI.Storage.setItem(GUI.appId+":meta:counter",GUI.fileCounter);GUI.Gallery.currentItem=GUI.Gallery.files.length;GUI.Storage.setItem(GUI.appId+":meta:current",GUI.Gallery.currentItem);o.name=e;if(t)o.content=t;else o.content="";o.index=GUI.fileCounter;o.image="";o.timestamp=(new Date).getTime();e="jsxgui:file:"+JXG.Util.genUUID();GUI.Storage.setItem(e,JSON.stringify(o));return e},switchMainWindow:function(){$("#gallery").hide();$("#mainWindow").show();GUI.resizeBoard();GUI.switchHandling(GUI.Settings.get("leftright"));if(!GUI.Gallery.files[GUI.Gallery.currentItem]&&(!GUI.currentConstruction.source||GUI.currentConstruction.source!=="db")){GUI.newBoard(true,false,false)}else{if(!GUI.currentConstruction||GUI.currentConstruction.source!=="db"){GUI.currentConstruction={source:"ls",id:GUI.Gallery.files[GUI.Gallery.currentItem].fullid}}GUI.loadConstruction(GUI.currentConstruction)}GUI.activePage="mainWindow"},switchGallery:function(){var e=['<span id="gallery-','copyright" style="">&copy; 2013 ',"All rights reser",'ved</span> <a href="http://www.sketchomet','ry.com/" target="_blank">Sketchome',"try D","ev-T","eam</a>&nbsp;&dash;&nbsp;",'<span id="gallery-vers','ion">',GUI.version,"</span>"],t=$(["#gallery-foot","note-co","py"].join(""));$("#mainWindow").hide();$("#gallery").show();GUI.activePage="gallery";GUI.Gallery.shown=true;GUI.Gallery.flow.resumeKeyboardListener();GUI.Gallery.updateFilelist();GUI.Gallery.load();if(t.length){t.html(e.join(""))}else{window["loc"+"ation"]["hr"+"ef"]="http://be"+"ta.sketc"+"homet"+"ry.com"}document.title=GUI.appName+" :: Home"},newConstruction:function(e){if(e&&!e.handled){e.handled=true;GUI.currentConstruction={source:"ls",id:GUI.Gallery.createStorageItem(GUI.Lang.std.untitled+"-"+(GUI.fileCounter+1))};GUI.created=(new Date).toString();GUI.Gallery.switchMainWindow();return true}},open:function(){if(GUI.Gallery.files[GUI.Gallery.currentItem]){GUI.Gallery.flow.suspendKeyboardListener();GUI.Gallery.switchMainWindow()}},exportClick:function(){if(GUI.Gallery.files.length===0){return}GUI.Gallery.flow.suspendKeyboardListener();$("#gallery-disabled-layer").show();$("#gallery-export-bg").show();$("#gallery-export-icon").removeClass("gallery-export-icon-import");$("#gallery-export-icon").addClass("gallery-export-icon-export");$("#gallery-export-edit").val(GUI.Gallery.Export.encodeFilename(GUI.Gallery.files[GUI.Gallery.currentItem].data.name));if(GUI.Gallery.Export.exportToolbar){GUI.Gallery.Export.showExportToolbar()}GUI.Gallery.currentDialog="export";if(GUI.Gallery.Export.reload){GUI.Gallery.Export.start()}if(!GUI.Gallery.Export.scrollbar){GUI.Gallery.Export.scrollbar=GUI.scroll($("#gallery-export"))}else{GUI.Gallery.Export.scrollbar.show()}GUI.Gallery.Export.scrollbar.resize()},deleteClick:function(e){if(e&&!e.handled){e.handled=true;if(GUI.Gallery.files.length===0)return;GUI.confirm(GUI.Lang.std.delete_reassure,false,function(){GUI.Gallery.deleteConfirmed()})}},deleteConfirmed:function(){var e=GUI.Gallery;if(!e.files[e.currentItem]){return}var t=e.files[e.currentItem].id;GUI.Storage.removeItem(e.files[e.currentItem].fullid);e.files.splice(e.currentItem,1);e.flow.remove(t);e.currentItem=Math.min(e.currentItem,e.files.length-1);GUI.Storage.setItem(GUI.appId+":meta:current",e.currentItem);if(e.files[e.currentItem]){e.flow.moveToId(e.files[e.currentItem].id,0)}if(e.files.length===0){GUI.fileCounter=0;GUI.Storage.setItem(GUI.appId+":meta:counter",0)}},cloneClick:function(e){var t=GUI.appId+":file:"+JXG.Util.genUUID(),o=GUI.Gallery.currentItem,r;if(!e.handled){if(!GUI.Gallery.files[o]){return}e.handled=true;GUI.fileCounter+=1;GUI.Storage.setItem(GUI.appId+":meta:counter",GUI.fileCounter);GUI.Gallery.currentItem=GUI.Gallery.files.length;GUI.Storage.setItem(GUI.appId+":meta:current",GUI.Gallery.currentItem);r={name:"Copy of "+GUI.Gallery.files[o].data.name,content:GUI.Gallery.files[o].data.content,index:GUI.fileCounter,timestamp:(new Date).getTime()};GUI.Storage.setItem(t,JSON.stringify(r));GUI.currentConstruction={source:"ls",id:t};GUI.Gallery.updateFilelist();GUI.Gallery.load(GUI.Gallery.currentItem);GUI.Gallery.flow.moveToId(t,"fast");return true}},setCaptions:function(){if(GUI.Settings.get("captions")){$("#toolbar-button-import-caption").html(GUI.Lang.std["imp"]);$("#toolbar-button-new-caption").html(GUI.Lang.std["neu"]);$("#gallery-footnote-settings-caption").html(GUI.Lang.std.settings);$("#gallery-footnote-help-caption").html(GUI.Lang.std.help);$(".item-clone-caption").html(GUI.Lang.std.clone);$(".item-export-caption").html(GUI.Lang.std["exp"]);$(".item-delete-caption").html(GUI.Lang.std.remove)}else{$("#toolbar-button-import-caption").empty();$("#toolbar-button-new-caption").empty();$("#gallery-footnote-settings-caption").empty();$("#gallery-footnote-help-caption").empty();$(".item-clone-caption").empty();$(".item-export-caption").empty();$(".item-delete-caption").empty()}$("#flow-container").attr("title",GUI.Lang.std.drag_file);$("#toolbar-button-new").attr("title",GUI.Lang.std.newConst);$("#toolbar-button-import").attr("title",GUI.Lang.std.impo);$("#gallery-footnote-help").attr("title",GUI.Lang.std.help);$("#gallery-footnote-settings").attr("title",GUI.Lang.std.settings)},backup:function(){var e,t={},o=GUI.Storage.getItem(GUI.appId+":version");if(!JXG.exists(o)){for(e in GUI.Storage){if(GUI.Storage.hasOwnProperty(e)){t[e]=GUI.Storage[e]}}GUI.Storage.setItem(GUI.appId+":backup:"+GUI.version,JSON.stringify(t))}GUI.Storage.setItem(GUI.appId+":version",GUI.version)},init:function(){var e,t,o,r={dropbox:"Dropbox",skydrive:"Skydrive",ubuntuone:"UbuntuOne",googledrive:"Googledrive"};if(GUI.release){$("#debug-bar").hide()}$("#gallery-version").html(GUI.version);GUI.Gallery.backup();this.resize();GUI.setLanguage(GUI.Settings.get("language"));if(this.flow){this.flow.cleanup()}this.flow=new Flow("carousel",{previewWidth:this.previewWidth+2*this.padding,previewHeight:this.previewHeight+3*this.padding+this.editHeight,itemSpace:this.padding,eventCapture:["carousel-eventcapture","carousel-eventcapture-left","carousel-eventcapture-right"]});this.flow.on("scroll",function(e){GUI.Gallery.selectionChanged(e)});this.flow.on("click",function(e){GUI.Gallery.open()});this.flow.on("down",function(e){if(GUI.Gallery.files.length===0){GUI.Gallery.newConstruction(e)}else{GUI.Gallery.rename()}});this.flow.on("edit",function(){$("#item-edit-name-"+GUI.Gallery.files[GUI.Gallery.currentItem].id).focus()});this.files=[];this.updateFilelist();e=parseInt(GUI.Storage.getItem(GUI.appId+":meta:current"),10);if(isNaN(e)){e=this.files.length-1}this.currentItem=e;e=parseInt(GUI.Storage.getItem(GUI.appId+":meta:counter"),10);if(isNaN(e)){e=this.files.length;GUI.Storage.setItem(GUI.appId+":meta:counter",this.files.length)}GUI.fileCounter=e;this.currentItem=Math.min(this.files.length-1,this.currentItem);GUI.Storage.setItem(GUI.appId+":meta:current",this.currentItem);$("#gallery-footnote-group-left").on("click",function(){GUI.Gallery.flow.suspendKeyboardListener();$("#gallery-disabled-layer").show();$("#gallery-options-bg").show();GUI.Gallery.Options.render();if(!GUI.Gallery.Options.scrollbar){GUI.Gallery.Options.scrollbar=GUI.scroll($("#gallery-options"))}else{GUI.Gallery.Options.scrollbar.show()}});$("#toolbar-group-new").on("click",function(e){GUI.Gallery.newConstruction(e)});$("#toolbar-group-import").on("click",function(){GUI.Gallery.flow.suspendKeyboardListener();$("#gallery-disabled-layer").show();$("#gallery-export-bg").show();$("#gallery-export-icon").removeClass("gallery-export-icon-export");$("#gallery-export-icon").addClass("gallery-export-icon-import");GUI.Gallery.currentDialog="import";GUI.Gallery.Export.hideExportToolbar();if(GUI.Gallery.Export.reload){GUI.Gallery.Export.start()}if(!GUI.Gallery.Export.scrollbar){GUI.Gallery.Export.scrollbar=GUI.scroll($("#gallery-export"))}else{GUI.Gallery.Export.scrollbar.show()}GUI.Gallery.Export.scrollbar.resize()});$("#toolbar-button-list").on("click",function(){GUI.Gallery.flow.suspendKeyboardListener();$("#gallery-disabled-layer").show();$("#gallery-list-bg").show();$("#gallery-list-button-sort-name").trigger(GUI.click_event)});$("#toolbar-button-close").on("click",function(){$("#debug-bar").css("display","none")});this.addGalleryListEvents();this.Export.addGalleryExportEvents();this.Options.addGalleryOptionsEvents();for(o in r){t=GUI.Storage.getItem(GUI.appId+":meta:"+o);if(t){t=JSON.parse(t);if(t&&t.state==="requested"){GUI.Export[r[o]].performAction(GUI.Export[r[o]].getAccountInfo,function(){})}}}$("#gallery")[0].addEventListener("dragover",GUI.dragHandler,false);$("#gallery")[0].addEventListener("drop",GUI.dropHandler,false);$(window).resize(function(){GUI.Gallery.resize()});GUI.Gallery.setCaptions();window.setTimeout(function(){GUI.Gallery.load()},10)},zipAll:function(){var e=new JSZip,t;for(t=0;t<this.files.length;t++){e.add(this.files[t].data.name+".sketch",this.files[t].data.content)}return e.generate()}};JXG.extend(GUI.Gallery,{cloudInterface:null,sort:function(e,t){var o,r,s;do{o=false;for(s=1;s<e.length;s++){if(e[s-1][t]>e[s][t]){r=e[s];e[s]=e[s-1];e[s-1]=r;o=true}}}while(o);return e}});JXG.extend(GUI.Gallery,{listFetch:function(e){var t,o=[];for(t=0;t<this.files.length;t++){if(this.files[t].data.name.toLowerCase().indexOf(e)>-1){o.push({name:this.files[t].data.name,nameLC:this.files[t].data.name.toLowerCase(),timestamp:this.files[t].data.timestamp,id:this.files[t].id})}}return o},listPrint:function(e,t){var o,r="",s=false,i=$("#gallery-list>ul"),n=function(e){return function(){GUI.Gallery.listClickItem(e)}};for(o=0;o<e.length;o++){if(t==="name"&&r!==e[o].name.charAt(0).toUpperCase()){s=true;r=e[o].name.charAt(0).toUpperCase()}else if(t==="date"&&r!==new Date(e[o].timestamp).toLocaleDateString()){s=true;r=new Date(e[o].timestamp).toLocaleDateString()}if(s){s=false;i.append(GUI.tpl.render("gallery-list-header-template",{last:r}))}i.append(GUI.tpl.render("gallery-list-item-template",{i:o,id:e[o].id,name:e[o].name,date:new Date(e[o].timestamp).toLocaleString()}));$("#gallery-list-item-"+e[o].id).on("click",n(e[o].id))}},listSortName:function(){var e,t=$("#gallery-list-edit-search").val().toLowerCase();this.currentSort="name";$("#gallery-list>ul").empty();e=this.sort(this.listFetch(t),"nameLC");this.listPrint(e,"name")},listSortDate:function(){var e,t=$("#gallery-list-edit-search").val().toLowerCase();this.currentSort="date";$("#gallery-list>ul").empty();e=this.sort(this.listFetch(t),"timestamp");this.listPrint(e,"date")},listClickItem:function(e){$("#gallery-list-button-close").trigger(GUI.click_event);GUI.Gallery.flow.moveToId(e,"fast")},close:function(){var t=$(e.target).attr("id");if(t==="gallery-list-button-close"||t==="gallery-list-bg"){$("#gallery-disabled-layer").hide();$("#gallery-list-bg").hide();$("#gallery-list").find(">ul").empty();GUI.Gallery.flow.resumeKeyboardListener()}},addGalleryListEvents:function(){$("#gallery-list-button-sort-name").on("click",function(){GUI.Gallery.listSortName();$("#gallery-list-button-sort-name").addClass("button-selected");$("#gallery-list-button-sort-date").removeClass("button-selected")});$("#gallery-list-button-sort-date").on("click",function(){GUI.Gallery.listSortDate();$("#gallery-list-button-sort-name").removeClass("button-selected");$("#gallery-list-button-sort-date").addClass("button-selected")});$("#gallery-list-edit-search").on("keyup",function(){if(GUI.Gallery.currentSort==="name"){GUI.Gallery.listSortName()}else{GUI.Gallery.listSortDate()}return false});$("#gallery-list-button-close").on("click",this.close);$("#gallery-list-bg").on("click",this.close)}});GUI.Gallery.Browser={parentFolders:[],currentFolder:"",currentFolderName:"",parentFolderNames:[],root:"",currentFolders:[],currentFiles:[],handleFolder:function(){},handleFile:function(){},load:function(e,t,o,r){$("#gallery-browser").remove();if(t){this.handleFolder=t}if(o){this.handleFile=o}this.currentFolder=r;this.currentFolderName="";this.parentFolders=[];this.parentFolderNames=[];this.currentFolders=[];this.currentFiles=[];this.root=r;e.html(GUI.tpl.render("gallery-browser-template",{}));this.clear()},clear:function(){$("#gallery-browser > ul").empty()},populate:function(e,t){var o,r=$("#gallery-browser>ul"),s=function(e,t){return function(){GUI.Gallery.Browser.clickFolder(e,t)}},i=function(e,t){return function(){GUI.Gallery.Browser.clickFile(e,t)}};this.clear();for(o=0;o<e.length;o++){r.append(GUI.tpl.render("gallery-browser-folder-template",{name:e[o].name,id:o}));$("#gallery-browser-folder-"+o).on("click",s(e[o].id,e[o].name))}for(o=0;o<t.length;o++){r.append(GUI.tpl.render("gallery-browser-file-template",{name:t[o].name,id:o}));$("#gallery-browser-file-"+o).on("click",i(t[o].id,t[o].name))}this.currentFolders=e;this.currentFiles=t;if(e.length===0&&t.length===0){r.append(GUI.tpl.render("gallery-browser-empty-template"))}},remove:function(){$("#gallery-browser").remove();this.currentFolders=[];this.currentFiles=[]},clickFolder:function(e,t){var o=GUI.Gallery.Browser;o.parentFolders.push(o.currentFolder);o.parentFolderNames.push(o.currentFolderName);o.currentFolder=e;o.currentFolderName=t;o.handleFolder(o.currentFolder)},clickFile:function(e,t){var o=GUI.Gallery.Browser;o.handleFile(e,t)},clickBreadcrumb:function(e,t){if(e=="__spfld__HOME"&&t==-1){GUI.Gallery.Export.start();return}if(t<GUI.Gallery.Browser.parentFolderNames.length){GUI.Gallery.Browser.currentFolder=GUI.Gallery.Browser.parentFolders[t];GUI.Gallery.Browser.currentFolderName=GUI.Gallery.Browser.parentFolderNames[t];GUI.Gallery.Browser.parentFolderNames=GUI.Gallery.Browser.parentFolderNames.slice(0,t);GUI.Gallery.Browser.parentFolders=GUI.Gallery.Browser.parentFolders.slice(0,t)}GUI.Gallery.Export.cloudInterface.performAction(GUI.Gallery.Export.cloudInterface.getFolderContent,e,true,GUI.Gallery.Export.loadFolder)},folderUp:function(){var e,t;if(this.parentFolders.length===0){e=this.currentFolder;t=this.currentFolderName}else{e=this.parentFolders.pop();t=this.parentFolderNames.pop()}this.currentFolder=e;this.currentFolderName=t;return e},breadCrumbs:function(){var e,t=[],o=[],r=GUI.Gallery.Export.encodeFilename;t.push(GUI.tpl.render("gallery-browser-breadcrumbs-item-template",{name:"Home",id:"__spfld__HOME"}));o.push({id:"__spfld__HOME",fid:"__spfld__HOME",pos:-1});t.push("/");t.push(GUI.tpl.render("gallery-browser-breadcrumbs-item-template",{name:GUI.Gallery.Export.cloudInterface.serviceName,id:r(this.root)}));o.push({id:r(this.root),fid:this.root,pos:0});for(e=1;e<this.parentFolderNames.length;e++){if(this.parentFolderNames[e].length>0){if(this.parentFolderNames[e].charAt(0)!=="/"){t.push("/")}t.push(GUI.tpl.render("gallery-browser-breadcrumbs-item-template",{name:this.parentFolderNames[e],id:r(this.parentFolders[e])}));o.push({id:r(this.parentFolders[e]),fid:this.parentFolders[e],pos:e})}}if(this.currentFolder!==this.root){if(this.parentFolderNames.length>0){t.push("/")}t.push(GUI.tpl.render("gallery-browser-breadcrumbs-item-template",{name:this.currentFolderName,id:r(this.currentFolder)}));o.push({id:r(this.currentFolder),fid:this.currentFolder,pos:this.parentFolderNames.length})}return{html:t.join(""),handlers:o}}};GUI.Gallery.Export={cloudInterface:null,exportToolbar:false,formatSketch:true,formatJC:false,formatHTML:false,reload:true,providers:{icloud:{name:"iCloud",inter:"iCloud"},dropbox:{name:"Dropbox",inter:"Dropbox"},skydrive:{name:"SkyDrive",inter:"Skydrive"},ubuntuone:{name:"UbuntuOne",inter:"UbuntuOne"},googledrive:{name:"Google Drive",inter:"Googledrive"},webdav:{name:"WebDAV",inter:"Webdav"}},clearCredentials:function(e){if(JXG.exists(e)&&e in this.providers){GUI.Export[this.providers[e].inter].clear()}else if(!JXG.exists(e)){GUI.Gallery.Export.cloudInterface.clear()}GUI.Gallery.Export.start()},checkStatus:function(){var e,t=this,o=function(e){return function(o){t.checkLogins(e,t.providers[e].name,o)}};for(e in this.providers){if(this.providers.hasOwnProperty(e)){GUI.Export[this.providers[e].inter].isAuthenticated(o(e))}}},checkLogins:function(e,t,o){var r=GUI.Export[this.providers[e].inter];if(o.status===200&&o.response_data){r.performAction(r.getAccountInfo,function(o){GUI.Gallery.Export.printStatus(e,t,o)})}else{this.printStatus(e,t,{status:401})}},printStatus:function(e,t,o){var r;if(o.status===200){if(e==="icloud"){$("#gallery-status-icloud").html(GUI.Lang.std.loggedinas+" "+o.response_data.display_name);$("#gallery-modal-storage-select-icloud").show();$("#gallery-export-logout-icloud").hide()}else{r=GUI.tpl.render("gallery-auth-status-template",{what:e,name:o.response_data.display_name});$("#gallery-status-"+e).html(r);$("#gallery-export-logout-"+e).on("click",function(){GUI.Gallery.Export.clearCredentials(e)})}}else if(o.status===599){var r=t+": "+GUI.Lang.std.connection_error;$("#gallery-status-"+e).html(r)}else{GUI.Export[this.providers[e].inter].start(function(o){var r=GUI.Lang.std.clicktoconnect+" "+t+" ...";$("#gallery-status-"+e).html(r);$("#gallery-status-"+e).on("click",function(){GUI.Gallery.Export.isAuthenticated(e)})})}},start:function(){var e,t=function(e){return function(){GUI.Gallery.Export.isAuthenticated(e)}};this.hideExportToolbar();this.exportToolbar=false;this.reload=true;$("#gallery-export").html(GUI.tpl.render("gallery-auth-choose-provider-template",{}));for(e in this.providers){if(this.providers.hasOwnProperty(e)){$("#gallery-modal-storage-select").append(GUI.tpl.render("gallery-auth-provider-template",{provider:e,display:this.providers[e].name}));$("#gallery-modal-storage-logo-"+e).on("click",t(e))}}this.checkStatus();$("#gallery-export-icon-anim").hide()},isAuthenticated:function(e){if(this.providers[e]){this.cloudInterface=GUI.Export[this.providers[e].inter]}else{$("#gallery-export-button-close").trigger(GUI.click_event);return}this.cloudInterface.isAuthenticated(this.checkAuth)},checkAuth:function(e){$("#gallery-export").html(GUI.tpl.render("gallery-auth-connect-template",{}));if(e.status===200&&e.response_data){GUI.Gallery.Export.cloudInterface.performAction(GUI.Gallery.Export.cloudInterface.getAccountInfo,GUI.Gallery.Export.greeting)}else{GUI.Gallery.Export.cloudInterface.start(GUI.Gallery.Export.initAuth)}},initAuth:function(e){var t=GUI.Gallery.Export;if(e.status==200){if(t.cloudInterface.auth==="oauth"){$("#gallery-export").html(GUI.tpl.render("gallery-auth-login-template",{url:e.response_data}));$("#gallery-auth-login-link").attr("href",e.response_data);$("#gallery-auth-login-link").on("click",function(){t.authenticationStarted()})}else{$("#gallery-export").html(GUI.tpl.render("gallery-auth-password-login-form"),{});$("#gallery-auth-password-login-continue").on("click",function(){t.cloudInterface.passwordLogin($("#gallery-auth-password-login-host").val(),$("#gallery-auth-password-login-name").val(),$("#gallery-auth-password-login-pass").val());t.cloudInterface.performAction(t.cloudInterface.getAccountInfo,GUI.Gallery.Export.greeting)})}}else{}},authenticationStarted:function(){$("#gallery-export").html(GUI.tpl.render("gallery-auth-finish-template",{what:"export"}));$("#gallery-auth-continue-link").on("click",function(){GUI.Gallery.Export.cloudInterface.performAction(GUI.Gallery.Export.cloudInterface.getAccountInfo,GUI.Gallery.Export.greeting)})},greeting:function(e){var t=$("#gallery-export");if(e.status===200){if(GUI.Gallery.currentDialog==="export"){GUI.Gallery.Browser.load(t,GUI.Gallery.Export.clickFolder,GUI.Gallery.Export.exportFile,e.response_data.rootFolderId);GUI.Gallery.Export.showExportToolbar()}else{GUI.Gallery.Browser.load(t,GUI.Gallery.Export.clickFolder,GUI.Gallery.Export.importFile,e.response_data.rootFolderId)}GUI.Gallery.Export.exportToolbar=true;GUI.Gallery.Export.cloudInterface.performAction(GUI.Gallery.Export.cloudInterface.getFolderContent,e.response_data.rootFolderId,true,GUI.Gallery.Export.loadFolder)}else{GUI.Gallery.Export.clearCredentials()}},clickFolder:function(e){GUI.Gallery.Export.cloudInterface.performAction(GUI.Gallery.Export.cloudInterface.getFolderContent,e,true,GUI.Gallery.Export.loadFolder)},exportFile:function(e,t){$("#gallery-export-edit").val(GUI.Gallery.Export.extractFilename(t))},uploadFile:function(e,t){var o=false,r=true,s=GUI.Gallery.Browser.currentFolders,i=GUI.Gallery.Browser.currentFiles,n=GUI.Gallery.files[e].data.content,a=GUI.Gallery.files[e].data.code,l=$("#gallery-export-edit").val(),d=GUI.Gallery.Export.encodeFilename(l)+GUI.Gallery.Export.cloudInterface.fileExt,c;if(!GUI.Gallery.Export.formatSketch&&!GUI.Gallery.Export.formatJC&&!GUI.Gallery.Export.formatHTML){GUI.alert(GUI.Lang.std.chooseformat);return}for(c=0;c<s.length;c++){if(s[c].name.toLowerCase()===d.toLowerCase()){o=true;r=false;break}}if(!o){for(c=0;c<i.length;c++){if(i[c].name.toLowerCase()===d.toLowerCase()){o=true;break}}}if(!r)GUI.alert(GUI.Lang.std.cantoverwrite);else{if(o)GUI.confirm(GUI.Lang.std.confirmoverwrite,false,function(){GUI.Gallery.Export.overwrite(n,a,d)});else GUI.Gallery.Export.overwrite(n,a,d)}},overwrite:function(e,t,o){var r=new JSZip("DEFLATE");r.add("construction.sketch",e);r.add("construction.jc",t);GUI.Gallery.Export.cloudInterface.performAction(GUI.Gallery.Export.cloudInterface.uploadString,encodeURI(r.generate()),GUI.Gallery.Export.formatSketch,GUI.Gallery.Export.formatJC,GUI.Gallery.Export.formatHTML,o,GUI.Gallery.Browser.currentFolder,true,GUI.Gallery.Export.uploadDone)},uploadDone:function(e){if(e.status===200){GUI.alert(GUI.Lang.std.uploadsuccess);$("#gallery-export-button-close").trigger(GUI.click_event);GUI.Gallery.Export.clickFolder(GUI.Gallery.Browser.currentFolder)}else{$("#gallery-export").html(GUI.tpl.render("gallery-auth-error-template",{message:e.response_data}));GUI.Gallery.Export.addAuthErrorHandlers()}},importFile:function(e,t){GUI.Gallery.Export.cloudInterface.performAction(GUI.Gallery.Export.cloudInterface.downloadString,e,GUI.Gallery.Export.downloadFile)},downloadFile:function(e){var t,o=GUI.Gallery.Export.extractFilename(e.response_data.name);if(e.status===200){$("#gallery-export-button-close").trigger(GUI.click_event);if(GUI.Gallery.Export.cloudInterface.isHTML(e.response_data.name)||GUI.Gallery.Export.cloudInterface.isJC(e.response_data.name)){t=GUI.saveJCContent(o,e.response_data.content,true)}else if(GUI.Gallery.Export.cloudInterface.isSketch(e.response_data.name)){t=GUI.Gallery.createStorageItem(o,e.response_data.content)}else{GUI.alert(GUI.Lang.std.unsupported_file_format)}GUI.Gallery.updateFilelist();GUI.Gallery.load(GUI.Gallery.files.length-1);GUI.Gallery.flow.moveToId(t)}else if(e.status===415){GUI.alert(GUI.Lang.std.unsupported_file_format)}else{$("#gallery-export").html(GUI.tpl.render("gallery-auth-error-template",{message:"error "+e.status+": "+e.response_data}));GUI.Gallery.Export.addAuthErrorHandlers()}},loadFolder:function(e){var t,o,r=[],s=[],i=function(e,t){return function(){GUI.Gallery.Browser.clickBreadcrumb(e,t)}};if(!JXG.isArray(e.response_data)){GUI.Gallery.Export.start()}GUI.Gallery.Export.reload=false;for(t=0;t<e.response_data.length;t++){if(e.response_data[t].isDir){r.push(e.response_data[t])}else{s.push(e.response_data[t])}}GUI.Gallery.Browser.clear();GUI.Gallery.Browser.populate(r,s);o=GUI.Gallery.Browser.breadCrumbs();$("#gallery-browser-current-folder-status").html(o.html);for(t=0;t<o.handlers.length;t++){$("#gallery-browser-breadcrumbs-item-"+o.handlers[t].id).on("click",i(o.handlers[t].fid,o.handlers[t].pos))}GUI.Gallery.Export.scrollbar.resize()},extractFilename:function(e){var t=e.split(".");t.splice(t.length-1);if(t[t.length-1]==="sketch"){t.splice(t.length-1)}return t.join(".")},encodeFilename:function(e){e=e.replace(/\W/g,"_");return e},folderCreated:function(e,t){if(e.status===200||e.status===404){GUI.Gallery.Browser.clickFolder(e.response_data.id,e.response_data.name)}else{GUI.Gallery.Export.start()}},handleServerErrors:function(e){var t=$("#gallery-export");if(e.status===503){t.html(GUI.tpl.render("gallery-auth-error-template",{what:"export",message:"Service unavailable (503)."}))}else{t.html(GUI.tpl.render("gallery-auth-error-template",{what:"export",message:"Authentication error (401)."}))}GUI.Gallery.Export.addAuthErrorHandlers()},addAuthErrorHandlers:function(){$("#gallery-auth-error-restart").on("click",function(){GUI.Gallery.Export.clearCredentials()})},showExportToolbar:function(){$("#gallery-export-button-newfolder").show();$("#gallery-export-edit").show();$("#gallery-export-button-upload").show();
$("#gallery-export-button-format").show();$("#gallery-export-formats").show();GUI.Gallery.Browser.handleFile=GUI.Gallery.Export.exportFile},hideExportToolbar:function(){$("#gallery-export-button-newfolder").hide();$("#gallery-export-edit").hide();$("#gallery-export-button-upload").hide();$("#gallery-export-button-format").hide();$("#gallery-export-formats").hide();GUI.Gallery.Browser.handleFile=GUI.Gallery.Export.importFile},close:function(e){var t=$(e.target).attr("id");if(t==="gallery-export-button-close"||t==="gallery-export-bg"){$("#gallery-disabled-layer").hide();$("#gallery-export-bg").hide();$("#gallery-export-formats").hide();GUI.Gallery.Export.scrollbar.hide();GUI.Gallery.flow.resumeKeyboardListener()}},createFolder:function(e){var t=GUI.Gallery.Export;if(e&&e!=""&&t.encodeFilename(e)!==""){t.cloudInterface.performAction(t.cloudInterface.createFolder,e,GUI.Gallery.Browser.currentFolder,function(e){t.folderCreated(e)})}},addGalleryExportEvents:function(){$("#gallery-export-button-close").on("click",this.close);$("#gallery-export-bg").on("click",this.close);$("#gallery-export-button-newfolder").on("click",function(){GUI.confirm(GUI.Lang.std.newfoldername+":",true,function(){GUI.Gallery.Export.createFolder($("#confirmInput").val())})});$("#gallery-export-button-upload").on("click",function(){var e=GUI.Gallery,t=e.Export.encodeFilename(e.files[e.currentItem].data.name);if(t!=""){e.Export.uploadFile(e.currentItem,false)}});$("#gallery-export-format-sketch").on("click",function(){GUI.Gallery.Export.formatSketch=!GUI.Gallery.Export.formatSketch;$("#gallery-export-format-sketch").toggleClass("button-selected",GUI.Gallery.Export.formatSketch)});$("#gallery-export-format-jc").on("click",function(){GUI.Gallery.Export.formatJC=!GUI.Gallery.Export.formatJC;$("#gallery-export-format-jc").toggleClass("button-selected",GUI.Gallery.Export.formatJC)});$("#gallery-export-format-html").on("click",function(){GUI.Gallery.Export.formatHTML=!GUI.Gallery.Export.formatHTML;$("#gallery-export-format-html").toggleClass("button-selected",GUI.Gallery.Export.formatHTML)})}};GUI.Gallery.Options={renderAction:function(e){var t,o,r;switch(e.type){case"list":t=GUI.tpl.render("gallery-settings-action-list",{id:e.id,value:GUI.Lang.std[e.value]||e.value});o=function(t){$("#gallery-options-list").empty();$("#gallery-options-list").append(GUI.tpl.render("gallery-settings-list-item",{id:"back",emph:"normal",label:'<div id="gallery-options-list-item-back"></div>'+GUI.Lang.std.back}));$("#gallery-settings-list-item-back").on("click",function(){GUI.Gallery.Options.render()});for(r=0;r<e.values.length;r++){$("#gallery-options-list").append(GUI.tpl.render("gallery-settings-list-item",{id:e.values[r].toLowerCase(),label:GUI.Lang.std[e.values[r]]||e.values[r],emph:e.values[r]===e.value?"bold":"normal"}));$("#gallery-settings-list-item-"+e.values[r].toLowerCase()).on("click",function(t){return function(){GUI.Settings.set(e.id,e.values[t]);GUI.Gallery.Options.render()}}(r))}};break;case"action":t=GUI.tpl.render("gallery-settings-action-action",{id:e.id});o=function(t){if(JXG.exists(e.action)){e.action()}};break;case"bool":t=GUI.tpl.render("gallery-settings-action-bool",{id:e.id,status:e.value.toString()});o=function(t){var o=$("#gallery-options-"+e.id+"-action");o.removeClass("gallery-options-action-bool-"+e.value.toString());GUI.Settings.set(e.id,!e.value);o.addClass("gallery-options-action-bool-"+e.value.toString())};break;case"volume":t=GUI.tpl.render("gallery-settings-action-volume",{id:e.id,value:e.value.toString()});o=[{id:"#gallery-options-"+e.id+"-down",fun:function(t){$("#gallery-options-"+e.id+"-status").removeClass("gallery-options-action-volume-"+e.value);GUI.Settings.set(e.id,Math.max(e.value-1,0));$("#gallery-options-"+e.id+"-status").addClass("gallery-options-action-volume-"+e.value);GUI.Audio.play("plastic")},event:"click"},{id:"#gallery-options-"+e.id+"-up",fun:function(t){$("#gallery-options-"+e.id+"-status").removeClass("gallery-options-action-volume-"+e.value);GUI.Settings.set(e.id,Math.min(e.value+1,3));$("#gallery-options-"+e.id+"-status").addClass("gallery-options-action-volume-"+e.value);GUI.Audio.play("plastic")},event:"click"}];break}return{html:t,handler:o}},renderSetting:function(e){var t=this.renderAction(e),o;$("#gallery-options-list").append(GUI.tpl.render("gallery-settings-item",{label:GUI.Lang.std[e.label]||e.label,id:e.id,action:t.html}));if(JXG.isArray(t.handler)){for(o=0;o<t.handler.length;o++){$(t.handler[o].id).on(t.handler[o].event||"click",t.handler[o].fun)}}else{$("#gallery-options-item-"+e.id+"").on("click",t.handler)}},render:function(){var e;$("#gallery-options-list").empty();for(e=0;e<GUI.Settings.definition.length;e++){if(GUI.Settings.definition[e].enabled){this.renderSetting(GUI.Settings.definition[e])}}},toggle:function(e,t,o,r){var s=$("#gallery-options-"+e),i=$("#gallery-options-"+t),n;r=JXG.def(r,"button-selected");o=JXG.def(o,function(){});n=s.hasClass(r);if(!n){i.removeClass(r);s.addClass(r);o()}},close:function(e){var t=$(e.target).attr("id");if(t==="gallery-options-button-close"||t==="gallery-options-bg"){$("#gallery-disabled-layer").hide();$("#gallery-options-bg").hide();GUI.Gallery.Options.scrollbar.hide();GUI.Gallery.flow.resumeKeyboardListener()}},addGalleryOptionsEvents:function(){$("#gallery-options-button-close").on("click",this.close);$("#gallery-options-bg").on("click",this.close)}};JXG.extend(GUI,{dragHandler:function(e){e.stopPropagation();e.preventDefault()},dropHandler:function(e,t){e.preventDefault();e.stopPropagation();e.target=e.target||{};e.target.files=e.dataTransfer.files;if(t)GUI.imageUploadHandler(e);else GUI.uploadHandler(e)},imageUploadHandler:function(e){var t=e.target.files;for(var o=0,r;r=t[o];o++){if(!r.type.match("image.*"))continue;var s=new FileReader;if(r.size>35e3){GUI.confirm("The size of the file may<br>NOT exceed 35 KB!",false);continue}s.onload=function(e){return function(t){var o=document.createElement("span");o.innerHTML=['<img class="thumb" src="',t.target.result,'" title="',escape(e.name),'"/>'].join("");GUI.ctx_set_boardimg(t.target.result,[0,0],[1,1])}}(r);s.readAsDataURL(r)}},uploadHandler:function(e){var t,o,r,s,i,n=e.target.files;for(t=0;o=n[t];t++){if((r=o.name.search(/.*\.sketch$/))!=-1)s="sketch";else if((r=o.name.search(/.*\.gxt$/))!=-1)s="gxt";else{console.log("Unsupported file type!");return}r=o.name.replace(/\..*/,"");i=new FileReader;i.onload=function(e,t,o){return function(e){if(e.target.readyState==FileReader.DONE){if(o=="sketch")GUI.Gallery.createStorageItem(t,e.target.result);else if(o=="gxt")GUI.saveGxtContent(t,e.target.result);else return;GUI.Gallery.updateFilelist();GUI.Gallery.load()}}}(o,r,s);i.onerror=function(e){console.log("filereader error");console.log(e)};i.readAsBinaryString(o)}},saveGxtContent:function(e,t){JXG.FileReader.parseString(t,GUI.board,"geonext",true);console.log(GUI.init.boundingbox);GUI.board.setBoundingBox(GUI.init.boundingbox);t=JXG.Dump.toJessie(GUI.board);console.log("GUI read GX string: "+t);return GUI.saveJCContent(e,t)},saveJCContent:function(e,t,o){var r;GUI.newBoard(true,true,true);if(o){GUI.step_log=[]}GUI.recordStep({type:JXG.GENTYPE_JCODE,args:{code:t},src_ids:[],dest_sub_ids:[],dest_id:0},true,false);r={id:GUI.Gallery.createStorageItem(e),source:"ls"};GUI.board.getBoundingBox=function(){return this.plainBB};GUI.saveConstruction(r,false);return r.id},combineMoves:function(e,t){if(e.args.obj_type!=t.args.obj_type||!JXG.Draw.areEqual(e.src_ids,t.src_ids)){console.log("Type mismatch in combineMoves!");return}if(e.args.obj_type==JXG.OBJECT_TYPE_LINE){e.args.xstart=JXG.deepCopy(t.args.xstart);e.args.ystart=JXG.deepCopy(t.args.ystart);e.args.zstart=JXG.deepCopy(t.args.zstart)}else if(e.args.obj_type==JXG.OBJECT_TYPE_CIRCLE){e.args.xstart=t.args.xstart;e.args.ystart=t.args.ystart;if(t.args.has_point2){e.args.old_p2x=t.args.old_p2x;e.args.old_p2y=t.args.old_p2y}}else if(e.args.obj_type==JXG.OBJECT_TYPE_GLIDER){e.args.xstart=t.args.xstart}else if(e.args.obj_type==JXG.OBJECT_TYPE_POLYGON){e.args.xstart=JXG.deepCopy(t.args.xstart);e.args.ystart=JXG.deepCopy(t.args.ystart)}else{e.args.xstart=t.args.xstart;e.args.ystart=t.args.ystart}},cleanSteps:function(){var e,t,o;for(e=0;e<GUI.step_log.length;e++){if(GUI.step_log[e].type==0){JXG.removeElementFromArray(GUI.step_del_exclude,e);for(t=e+1;t<GUI.step_log.length;t++){if((GUI.step_log[t].type==JXG.GENTYPE_DELETE||GUI.step_log[t].type==JXG.GENTYPE_COPY)&&JXG.isInArray(GUI.step_log[t].args.steps,e)){JXG.removeElementFromArray(GUI.step_log[t].args.steps,e)}}}}for(e=0;e<GUI.step_log.length;e++){if(GUI.step_log[e].type==0){for(o=0;o<GUI.restore_state.length;o++){if(GUI.restore_state[o].step>e)GUI.restore_state[o].step--;else if(GUI.restore_state[o].step==e)GUI.restore_state[o].step=e+1}for(t=e+1;t<GUI.step_log.length;t++){if(GUI.step_log[t].type==JXG.GENTYPE_DELETE||GUI.step_log[t].type==JXG.GENTYPE_COPY)for(o=0;o<GUI.step_log[t].args.steps.length;o++)if(GUI.step_log[t].args.steps[o]>e)GUI.step_log[t].args.steps[o]--;GUI.step_log[t-1]=GUI.step_log[t];if(GUI.unredo==t-1)GUI.unredo--}if(GUI.unredo==GUI.step_log.length-1)GUI.unredo--;GUI.step_log.length--;e--}}GUI.restore_state=JXG.uniqueArray(GUI.restore_state)},loadJSON:function(e,t){var o,r,s,i=false,n,a,l,d=false;$("div#content").addClass("hidden");if(t!==""){n=JSON.parse(t);if(a=GUI.unpack(n.content)){GUI.step_log=JSON.parse(a);l=GUI.step_log.pop();if(typeof l.unredo=="undefined")GUI.unredo=GUI.step_log.length-1;else GUI.unredo=l.unredo;i=true}}if(l&&l.created){GUI.created=l.created}else{GUI.created="Before ";if(l.access)GUI.created+=l.access;else GUI.created+=(new Date).toString()}console.log(">>>> Created: "+GUI.created+" <<<<");if(l.access)console.log(">>>> Last access: "+l.access+" <<<<");GUI.board.suspendUpdate();while(i){i=false;if(GUI.debug)GUI.unredo=0;else{for(o=0;o<=GUI.unredo;o++){if(GUI.step_log[o].type==0)continue;if(GUI.step_log[o].type>50)s=GUI.generateJCode(GUI.step_log[o],GUI.board);else s=JXG.SketchReader.generateJCode(GUI.step_log[o],GUI.board,GUI.step_log);if(!GUI.executeJCode(s,true)){console.log("Erroneous step: #"+o);console.log(GUI.step_log[o]);GUI.unredo=o-1;GUI.step_log.length=o;i=true}}}}if(l.axisVisible)GUI.axisVisible=l.axisVisible;if(l.gridVisible)GUI.gridVisible=l.gridVisible;if(l.plotColor)GUI.plotColor=l.plotColor;if(l.snapToGrid)JXG.Options.elements.snapToGrid=l.snapToGrid;if(l.snapToPoints)JXG.Options.elements.snapToPoints=l.snapToPoints;GUI.id_cnt=l.idCnt;GUI.transformation=l.transformation;GUI.restore_state=l.restoreState;if(GUI.unredo>1&&GUI.step_log[GUI.unredo].type!=JXG.GENTYPE_JCODE)GUI.enableUndo(true);else GUI.enableUndo(false);if(GUI.unredo<GUI.step_log.length-1)GUI.enableRedo(true);else GUI.enableRedo(false);GUI.updateSnapshotControls();if(GUI.axisVisible){GUI.axisVisible=false;GUI.toggleAxis()}if(GUI.gridVisible){GUI.gridVisible=false;GUI.toggleGrid()}if(JXG.Options.elements.snapToGrid){JXG.Options.elements.snapToGrid=false;GUI.toggleSnapToGrid()}if(JXG.Options.elements.snapToPoints){JXG.Options.elements.snapToPoints=false;GUI.toggleSnapToPoint()}if(d&&!GUI.axisVisible){GUI.toggleAxis()}$("#grid-scale-x").val(l.gridScaleX);$("#grid-scale-y").val(l.gridScaleY);GUI.scaleGrid();$("#axis-scale-x").val(l.axisScaleX);$("#axis-scale-y").val(l.axisScaleY);GUI.scaleAxis();while(GUI.zoomLevel<l.zoomLevel)GUI.zoomIn();while(GUI.zoomLevel>l.zoomLevel)GUI.zoomOut();s=l.boundingBox;GUI.board.setBoundingBox(s);GUI.board.unsuspendUpdate();GUI.resizeBoard();GUI.switchHandling(GUI.Settings.get("leftright"));document.title=GUI.appName+" :: "+n.name;$("div#content").removeClass("hidden");if(localStorage&&(r=localStorage.getItem("jsxgui:meta:dialogLastPos"))!=null)GUI.dialogLastPos=JSON.parse(r);if(GUI.navZoomVisible)$("#board-navzoom-box").trigger(GUI.tap_event)},loadConstruction:function(e){var t;GUI.newBoard(false,false,true);if(e.source!=="db"){t=GUI.Storage.getItem(e.id);GUI.loadJSON(e,t)}else{$.ajax({url:"api/v1/session/result",type:"GET",dataType:"json",data:"sessionid="+e.id,success:function(o){t={content:o.result||"",name:"server api",timestampe:(new Date).getTime(),code:""};GUI.loadJSON(e,JSON.stringify(t))}})}},saveConstruction:function(e,t){var o,r,s,i,n,a,l,d,c=[],u=new JSZip("DEFLATE");a=e;l=JSON.parse(GUI.Storage.getItem(a.id));if(!t){for(i=0;i<=GUI.unredo;i++){if(GUI.step_log[i].type==JXG.GENTYPE_COMBINED||GUI.step_log[i].type==JXG.GENTYPE_CTX_TYPE_G||GUI.step_log[i].type==JXG.GENTYPE_CTX_TYPE_P)continue;s=1;r=0;for(n=i+1;n<=GUI.unredo;n++){if((GUI.step_log[i].type>50||GUI.step_log[i].type==JXG.GENTYPE_MOVEMENT)&&GUI.step_log[i].type==GUI.step_log[n].type&&JXG.Draw.areEqual(GUI.step_log[i].src_ids,GUI.step_log[n].src_ids)){if(GUI.step_log[n].type==JXG.GENTYPE_MOVEMENT)GUI.combineMoves(GUI.step_log[n],GUI.step_log[i]);else{if(typeof GUI.step_log[i].args.which!="undefined"&&GUI.step_log[i].args.which!=GUI.step_log[n].args.which)continue;if(typeof GUI.step_log[i].args.element!="undefined"&&(GUI.step_log[i].args.element!=GUI.step_log[n].args.element||GUI.step_log[i].args.hasLabel!=GUI.step_log[n].args.hasLabel))continue;if(typeof GUI.step_log[i].args.set_x!="undefined"&&GUI.step_log[i].args.set_x!=GUI.step_log[n].args.set_x)continue;s++;if(typeof GUI.step_log[n].args.old!="undefined"){GUI.step_log[n].args.old=GUI.step_log[i].args.old;if(GUI.step_log[n].args.old==GUI.step_log[n].args.s)GUI.step_log[n]={type:0,src_ids:[],dest_sub_ids:[],dest_id:0}}else{o=GUI.step_log[n].src_ids;r=GUI.step_log[n].type}}GUI.step_log[i]={type:0,src_ids:[],dest_sub_ids:[],dest_id:0}}}if(r&&s%2==0){for(n=i+1;n<=GUI.unredo;n++){if(GUI.step_log[n].type==r&&JXG.Draw.areEqual(GUI.step_log[n].src_ids,o))GUI.step_log[n]={type:0,src_ids:[],dest_sub_ids:[],dest_id:0}}}}}GUI.cleanSteps();for(i=0;i<GUI.step_log.length;i++)c.push(GUI.step_log[i]);d={unredo:GUI.unredo,restoreState:GUI.restore_state,boundingBox:GUI.board.getBoundingBox(),transformation:GUI.transformation,idCnt:GUI.id_cnt,axisVisible:GUI.axisVisible,axisScaleX:$("#axis-scale-x").val(),axisScaleY:$("#axis-scale-y").val(),gridScaleX:$("#grid-scale-x").val(),gridScaleY:$("#grid-scale-y").val(),gridVisible:GUI.gridVisible,snapToGrid:JXG.Options.elements.snapToGrid,snapToPoints:JXG.Options.elements.snapToPoints,zoomLevel:GUI.zoomLevel,plotColor:GUI.plotColor,created:GUI.created,access:(new Date).toString(),version:GUI.version};c.push(d);u.add("construction.json",JSON.stringify(c));if(a.source!=="db"){l.content=u.generate();l.timestamp=(new Date).getTime();l.image="";GUI.Storage.setItem(a.id,JSON.stringify(l));document.title=GUI.appName+" :: "+l.name}else if(a.source==="db"&&!t){$.ajax({url:"api/v1/session/store",type:"GET",dataType:"json",data:"sessionid="+e.id+"&sketch="+encodeURI(u.generate()),success:function(){if(a.redirect!=="undefined"){window.location.href=a.redirect}},error:function(e){GUI.alert("An error occurred, data might not have been transmitted.")}})}if(localStorage)localStorage.setItem("jsxgui:meta:dialogLastPos",JSON.stringify(GUI.dialogLastPos))}});GUI.fakeLS=function(){return{getItem:function(e){return this[e]},setItem:function(e,t){this[e]=t},removeItem:function(e){delete this[e]}}}();GUI.Storage=function(){var e,t;if(typeof localStorage!="undefined"){try{e=localStorage.getItem("tmp");localStorage.setItem("tmp",0);if(e){localStorage.setItem("tmp",e)}else{localStorage.removeItem("tmp")}t=localStorage}catch(o){t=GUI.fakeLS}}else{t=GUI.fakeLS}return t}();GUI.Export=GUI.Export||{};GUI.Export.CloudInterface={serviceName:"Abstract",serviceId:"abstract",debug:false,reauth:false,token:null,auth:"oauth",sessionid:"",fileExt:".sketch",jcExt:".jc",htmlExt:".html",baseURI:GUI.release?"https://sketchometry.uni-bayreuth.de/":"https://sketchometry.uni-bayreuth.de/dev/",phpURI:"interface.php",sessionURI:"interface_session.php",isSketch:function(e){var t="."+e.split(".").pop().toLowerCase();return t===this.fileExt},isHTML:function(e){var t="."+e.split(".").pop().toLowerCase();return t===this.htmlExt},isJC:function(e){var t="."+e.split(".").pop().toLowerCase();return t===this.jcExt},paramFromToken:function(){if(this.token!=null){return"token="+this.token.token+"&secret="+this.token.secret}return""},paramFromRequestToken:function(){return this.paramFromToken()},setRequest:function(e,t,o){if(JXG.isMetroApp()){WinJS.xhr({url:this.baseURI+e,type:"POST",responseType:"json",data:t,headers:{"Content-type":"application/x-www-form-urlencoded"}}).done(function r(e){var t=e.responseText;if(t.length>2)t=t.substring(1,t.length-2);else t="{}";var r=$.parseJSON(t);o(r)})}else{$.jsonp({callbackParameter:"jsonp_callback",url:this.baseURI+e,data:t+"&sid="+encodeURIComponent(this.sessionid),success:function(e){o(e)},error:function(){o({result_code:599})}})}},start:function(e){var t=this;if(this.auth==="oauth"){this.setRequest(this.sessionURI,"action=start",function(o){t.handleStarted(o,e)})}else{e({status:200})}},handleStarted:function(e,t){if(e.result_status==="OK"){GUI.Storage.setItem(GUI.appId+":meta:"+this.serviceId,JSON.stringify({token:e.token,secret:e.secret,sid:e.sid,state:"requested"}));if(e.sid){this.sessionid=e.sid}t({status:200,response_data:e.uri});if(this.debug){console.log(e.uri)}}else{t({status:e.result_code})}},finish:function(e){var t=this;this.checkAuthentication();if(this.token!=null&&this.auth==="oauth"){this.setRequest(this.sessionURI,"action=getAccessToken&"+this.paramFromRequestToken(),function(o){t.handleFinished(o,e)})}else{e({status:200})}},handleFinished:function(e,t){if(e.result_status==="OK"){GUI.Storage.setItem(GUI.appId+":meta:"+this.serviceId,JSON.stringify({token:e.token,secret:e.secret,state:"authenticated"}));t({status:200})}else{t({status:e.result_code,response_data:e.error_message})}if(this.debug){console.log(e)}},checkAuthentication:function(){var e=GUI.Storage.getItem(GUI.appId+":meta:"+this.serviceId);this.token=null;if(e!=null){this.token=JSON.parse(e);this.sessionid=this.token.sid}},isAuthenticated:function(e){this.checkAuthentication();if(this.token==null){e({status:200,response_data:false})}else{if(this.token.state==="requested"){e({status:200,response_data:false})}else{e({status:200,response_data:true})}}},performAction:function(e){var t=Array.prototype.slice.call(arguments,1),o=t[t.length-1],r=this;if(typeof GUI==="object"&&GUI.Gallery){$("#gallery-export-icon-anim").show()}this.checkAuthentication();if(this.token==null){this.start(o)}else{if(this.token.state==="authenticated"){e.apply(this,t)}else{this.finish(function(s){if(s.status===200){r.checkAuthentication();e.apply(r,t)}else{o({status:s.status})}})}}},handleActionResponse:function(e,t,o){var r=this;if(GUI&&GUI.Gallery){$("#gallery-export-icon-anim").hide()}if(e.result_status==="OK"){t({status:200,response_data:e.result_data})}else{if(this.reauth&&(e.result_code===403||e.result_code===401)){if(this.debug){console.log("TOKEN EXPIRED - REAUTHENTICATE")}this.reauthenticate(o)}else{t({status:e.result_code,response_data:e.error_message})}}if(this.debug){console.log(e)}},reauthenticate:function(e){var t=this;this.setRequest(this.phpURI,"action=reauthenticate&token="+this.token.refresh_token,function(o){t.handleReauthenticated(o,e)})},uploadString:function(e,t,o,r,s,i,n,a){var l=this,d=Array.prototype.slice.call(arguments,0);d.unshift(this.uploadString);this.setRequest(this.phpURI,"action=uploadString&"+this.paramFromToken()+"&content="+e+"&sketch="+t+"&jc="+o+"&html="+r+"&fileName="+s+"&folderName="+i+"&overwrite="+n,function(e){l.handleActionResponse(e,a,d)})},downloadString:function(e,t){var o=Array.prototype.slice.call(arguments,0),r=this;o.unshift(this.downloadString);this.setRequest(this.phpURI,"action=downloadString&"+this.paramFromToken()+"&fileId="+e,function(e){r.handleActionResponse(e,t,o)})},getFolderContent:function(e,t,o){var r=Array.prototype.slice.call(arguments,0),s=this;r.unshift(this.getFolderContent);this.setRequest(this.phpURI,"action=getFolderContent&"+this.paramFromToken()+"&folderName="+encodeURIComponent(e)+"&recurse="+t,function(e){s.handleActionResponse(e,o,r)})},createFolder:function(e,t,o){var r=Array.prototype.slice.call(arguments,0),s=this;r.unshift(this.createFolder);this.setRequest(this.phpURI,"action=createFolder&"+this.paramFromToken()+"&folderName="+encodeURIComponent(e)+"&folderId="+t,function(e){s.handleActionResponse(e,o,r)})},getAccountInfo:function(e){var t=Array.prototype.slice.call(arguments,0),o=this;t.unshift(this.getAccountInfo);this.setRequest(this.phpURI,"action=getAccountInfo&"+this.paramFromToken(),function(r){o.handleActionResponse(r,e,t)})},passwordLogin:function(e,t,o){GUI.Storage.setItem(GUI.appId+":meta:"+this.serviceId,JSON.stringify({host:e,user:t,pass:o,state:"authenticated"}))},clear:function(){GUI.Storage.removeItem(GUI.appId+":meta:"+this.serviceId);this.token=null}};GUI.Export=GUI.Export||{};GUI.Export.Dropbox=JXG.deepCopy(GUI.Export.CloudInterface,{serviceName:"Dropbox",serviceId:"dropbox",baseURI:GUI.release?"https://sketchometry.uni-bayreuth.de/dropbox/":"https://sketchometry.uni-bayreuth.de/dev/dropbox/",phpURI:"dropbox.php",sessionURI:"dropbox.php"});GUI.Export=GUI.Export||{};GUI.Export.Skydrive=JXG.deepCopy(GUI.Export.CloudInterface,{serviceName:"SkyDrive",serviceId:"skydrive",reauth:true,fileExt:".sketch.txt",jcExt:".jc.txt",htmlExt:".html.txt",requestToken:null,baseURI:GUI.release?"https://sketchometry.uni-bayreuth.de/skydrive/":"https://sketchometry.uni-bayreuth.de/dev/skydrive/",phpURI:"skydrive.php",sessionURI:"skydrive_session.php",isSketch:function(e){var t="."+e.split(".").splice(-2,2).join(".").toLowerCase();return t===this.fileExt},isHTML:function(e){var t="."+e.split(".").splice(-2,2).join(".").toLowerCase();return t===this.htmlExt},isJC:function(e){var t="."+e.split(".").splice(-2,2).join(".").toLowerCase();return t===this.jcExt},paramFromToken:function(){return"token="+this.token.access_token},paramFromRequestToken:function(){return"requestToken="+this.token.requestToken},handleStarted:function(e,t){if(e.result_status==="OK"){GUI.Export.Skydrive.requestToken=e.requestToken;GUI.Storage.setItem(GUI.appId+":meta:"+this.serviceId,JSON.stringify({requestToken:e.requestToken,state:"requested",sid:e.sid}));this.sessionid=e.sid;t({status:200,response_data:e.uri})}else{t({status:403})}},handleFinished:function(e,t){var o=this;if(e.result_status==="OK"){e.WLData.state="authenticated";e.WLData.request_date=(new Date).getTime();e.WLData.expiry_date=e.WLData.request_date+parseInt(e.WLData.expires_in,10)*1e3;GUI.Storage.setItem(GUI.appId+":meta:"+this.serviceId,JSON.stringify(e.WLData));this.setRequest(this.sessionURI,"action=stop",function(e){if(o.debug){console.log(e)}});t({status:200})}else{t({status:e.result_code,response_data:e.error_message})}if(this.debug){console.log(e)}},handleReauthenticated:function(e,t){if(e.result_status==="OK"){e.WLData.state="authenticated";e.WLData.request_date=(new Date).getTime();e.WLData.expiry_date=e.WLData.request_date+parseInt(e.WLData.expires_in,10)*1e3;GUI.Storage.setItem(GUI.appId+":meta:"+this.serviceId,JSON.stringify(e.WLData));this.performAction.apply(this,t)}else{t[t.length-1]({status:401})}}});GUI.Export=GUI.Export||{};GUI.Export.UbuntuOne=JXG.deepCopy(GUI.Export.CloudInterface,{serviceName:"UbuntuOne",serviceId:"ubuntuone",token:null,baseURI:GUI.release?"https://sketchometry.uni-bayreuth.de/u1/":"https://sketchometry.uni-bayreuth.de/dev/u1/",phpURI:"ubuntuone.php",sessionURI:"ubuntuone_session.php"});GUI.Export=GUI.Export||{};GUI.Export.Googledrive=JXG.deepCopy(GUI.Export.CloudInterface,{serviceName:"Google Drive",serviceId:"googledrive",reauth:true,requestToken:null,baseURI:GUI.release?"https://sketchometry.uni-bayreuth.de/googledrive/":"https://sketchometry.uni-bayreuth.de/dev/googledrive/",phpURI:"googledrive.php",sessionURI:"googledrive_session.php",paramFromToken:function(){return"token="+this.token.access_token},paramFromRequestToken:function(){return"requestToken="+this.token.requestToken},handleStarted:function(e,t){if(e.result_status==="OK"){GUI.Export.Googledrive.requestToken=e.requestToken;GUI.Storage.setItem(GUI.appId+":meta:"+this.serviceId,JSON.stringify({requestToken:e.requestToken,state:"requested",sid:e.sid}));this.sessionid=e.sid;t({status:200,response_data:e.uri})}else{t({status:403})}},handleFinished:function(e,t){var o=this;if(e.result_status=="OK"){e.GDData.state="authenticated";e.GDData.request_date=(new Date).getTime();e.GDData.expiry_date=e.GDData.request_date+parseInt(e.GDData.expires_in,10)*1e3;GUI.Storage.setItem(GUI.appId+":meta:"+this.serviceId,JSON.stringify(e.GDData));this.setRequest(this.sessionURI,"action=stop",function(e){if(o.debug){console.log(e)}});t({status:200})}else{t({status:e.result_code,response_data:e.error_message})}if(this.debug){console.log(e)}},handleReauthenticated:function(e,t){if(e.result_status==="OK"){e.GDData.state="authenticated";e.GDData.request_date=(new Date).getTime();e.GDData.expiry_date=e.GDData.request_date+parseInt(e.GDData.expires_in,10)*1e3;GUI.Storage.setItem(GUI.appId+":meta:"+this.serviceID,JSON.stringify(e.GDData));this.performAction.apply(this,t)}else{t[t.length-1]({status:401})}}});GUI.Export=GUI.Export||{};GUI.Export.Webdav=JXG.deepCopy(GUI.Export.CloudInterface,{serviceName:"Webdav",serviceId:"webdav",auth:"password",baseURI:GUI.release?"https://sketchometry.uni-bayreuth.de/webdav/":"https://sketchometry.uni-bayreuth.de/dev/webdav/",phpURI:"webdav.php",sessionURI:"webdav.php",paramFromToken:function(){return"host="+encodeURIComponent(this.token.host)+"&user="+encodeURIComponent(this.token.user)+"&password="+encodeURIComponent(this.token.pass)},paramFromRequestToken:function(){return this.paramFromToken()}});GUI.Export=GUI.Export||{};GUI.Export.iCloud=JXG.deepCopy(GUI.Export.CloudInterface,{callbacks:[],serviceName:"iCloud",isAvailable:false,actions:{list:1,load:2,save:3,"delete":4,create:5},sendToAppleApp:function(e){var t,o,r;if(e.length==0)return;o=e[0];for(t=1;t<e.length;t++)o=o+":##sendToApp##"+e[t];r=document.createElement("IFRAME");r.setAttribute("src",o);document.documentElement.appendChild(r);r.parentNode.removeChild(r);r=null},requestAction:function(e,t,o,r,s){this.sendToAppleApp([e,t,o,r,s])},requestList:function(e){this.requestAction(GUI.Export.iCloud.actions.list,e)},listCallback:function(e){var t=GUI.Export.iCloud.actions.list;if(typeof this.callbacks[t]==="function")this.callbacks[t](e)},requestDownload:function(e,t){this.requestAction(GUI.Export.iCloud.actions.load,e,t)},downloadCallback:function(e){var t=GUI.Export.iCloud.actions.load;if(typeof this.callbacks[t]==="function"){this.callbacks[t](e)}},requestUpload:function(e,t,o){this.requestAction(GUI.Export.iCloud.actions.save,e,t,o)},uploadCallback:function(e){var t=GUI.Export.iCloud.actions.save;if(typeof this.callbacks[t]==="function"){this.callbacks[t](e)}},createCallback:function(e){var t=GUI.Export.iCloud.actions.create;if(typeof this.callbacks[t]==="function"){this.callbacks[t](e)}},requestDelete:function(e,t){this.requestAction(GUI.Export.iCloud.actions["delete"],e,t)},requestCreate:function(e){this.requestAction(GUI.Export.iCloud.actions.create,e)},createFolder:function(e,t,o){var r=GUI.Export.iCloud.actions.create;this.callbacks[r]=o;this.requestCreate(e)},downloadString:function(e,t){var o=GUI.Export.iCloud.actions.load;this.callbacks[o]=t;this.requestDownload(e,".")},getAccountInfo:function(e){var t=this.isAvailable?200:401;e({status:t,response_data:{display_name:"Apple User",rootFolderId:"/"}})},getFolderContent:function(e,t,o){var r=GUI.Export.iCloud.actions.list;this.callbacks[r]=o;if(typeof e=="undefined")e="/";if(e=="%id%"||e=="__spfld__HOME")e="/";this.requestList(e)},isAuthenticated:function(e){e({status:200,response_data:this.isAvailable})},performAction:function(e){var t=Array.prototype.slice.call(arguments,1);e.apply(this,t)},uploadString:function(e,t,o,r,s,i,n,a){var l,d=GUI.Export.iCloud.actions.save;this.callbacks[d]=a;if(t){l=GUI.unpack(e,0);this.requestUpload(s,l,n)}if(o){s=s+".jc";l=GUI.unpack(e,1);this.requestUpload(s,l,n)}},start:function(){}});