1<?xml version="1.0" encoding="UTF-8" ?>
2
3<Module>
4
5  <ModulePrefs
6    title="Chess Puzzler"
7    directory_title="Chess Puzzler"
8    title_url="http://pgn4web.casaschi.net/"
9    description="chess puzzler of the day from the pgn4web project at http://pgn4web.casaschi.net"
10    author="Paolo Casaschi"
11    author_email="pgn4web@casaschi.net"
12    height="270"
13    width="240">
14    <Require feature="dynamic-height"/>
15  </ModulePrefs>
16
17  <UserPref name="squareSize"
18     display_name="size"
19     datatype="enum"
20     default_value="0">
21    <EnumValue value="0" display_value="auto resize"/>
22    <EnumValue value="20" display_value="tiny"/>
23    <EnumValue value="24" display_value="small"/>
24    <EnumValue value="30" display_value="medium"/>
25    <EnumValue value="40" display_value="large"/>
26    <EnumValue value="60" display_value="big"/>
27    <EnumValue value="80" display_value="huge"/>
28    <EnumValue value="110" display_value="giant"/>
29    <EnumValue value="150" display_value="colossal"/>
30  </UserPref>
31  <UserPref name="colorScheme"
32     display_name="color"
33     datatype="enum"
34     default_value="0">
35    <EnumValue value="7" display_value="black"/>
36    <EnumValue value="0" display_value="blue"/>
37    <EnumValue value="1" display_value="braun"/>
38    <EnumValue value="8" display_value="cyan"/>
39    <EnumValue value="2" display_value="gray"/>
40    <EnumValue value="3" display_value="green"/>
41    <EnumValue value="4" display_value="pink"/>
42    <EnumValue value="5" display_value="white"/>
43    <EnumValue value="6" display_value="wood"/>
44  </UserPref>
45  <UserPref name="showBorder"
46     display_name="border"
47     datatype="bool"
48     default_value="false"/>
49  <UserPref name="advancedParameters"
50     display_name="advanced"
51     datatype="string"
52     default_value=""/>
53
54  <Content type="html">
55    <![CDATA[
56
57      <body onLoad="myOnResize();" onResize="myOnResize();">
58
59        <center>
60        <iframe id='mainframe' frameborder='0' scrolling='no' marginheight='0' marginwidth='0'>
61        iframe support required to display the chess puzzler
62        </iframe>
63        </center>
64
65        <script type="text/javascript">
66        <!--
67
68        /*
69         *  pgn4web javascript chessboard
70         *  copyright (C) 2009-2015 Paolo Casaschi
71         *  see README file and http://pgn4web.casaschi.net
72         *  for credits, license and more details
73         */
74
75          "use strict";
76
77          function myOnResize() {
78
79            function getWidth() {
80              if (self.innerHeight) { return self.innerWidth; }
81                else if (document.documentElement && document.documentElement.clientHeight) {
82                return document.documentElement.clientWidth;
83              } else if (document.body) { return document.body.clientWidth; }
84              return 0;
85            }
86
87            var prefs = new _IG_Prefs();
88            var lightColorHex =
89                new Array("E8E8E8","F2D798","F4F4F4","EFF4EC","EDE8D5","FFFFFF","FFCC99","999999", "F4F4FF");
90            var darkColorHex =
91                new Array("C2C9D1","C9AD6F","E0E0E0","C6CEC3","CFCBB3","E4E4E4","CC9966","888888", "D4E6FC");
92            var controlBackgroundColorHex =
93                new Array("E8E8E8","F2D798","F4F4F4","EFF4EC","EDE8D5","FFFFFF","FFCC99","888888", "D4E6FC");
94            var controlTextColorHex =
95                new Array("585B5E","54110C","888888","888888","615F54","888888","705438","000000", "87AFDA");
96            var frameBorderColorHex =
97                new Array("C2C9D1","C9AD6F","E0E0E0","C6CEC3","CFCBB3","E4E4E4","CC9966","888888", "D4E6FC");
98            var colorScheme = prefs.getInt("colorScheme");
99
100            var squareSize = prefs.getInt("squareSize");
101            var showBorder = prefs.getBool("showBorder");
102            var borderSize = showBorder ? Math.ceil(squareSize / 50) : 0;
103            var frameBorderColorHexValue = showBorder ? frameBorderColorHex[colorScheme] : "none";
104            if (squareSize == 0) {
105              var containerWidth = getWidth();
106              squareSize = Math.floor(containerWidth / 8);
107              if (squareSize == 0) { squareSize = 30; }
108              if (showBorder) {
109                borderSize = Math.ceil(squareSize / 50);
110                if (squareSize * 8 + borderSize * 2 > containerWidth) {
111                   squareSize = squareSize - Math.ceil(squareSize / (50 * 8 / 2));
112                   borderSize = Math.ceil(squareSize / 50);
113                }
114              }
115            }
116
117            var advancedParameters = prefs.getString("advancedParameters");
118            if (advancedParameters && (advancedParameters.charAt(0) != "&")) {
119               advancedParameters = "&" + advancedParameters;
120            }
121
122            var matches, frameHeight, frameWidth;
123            if (matches = advancedParameters.match(/frameHeight=([^&]*)/)) { frameHeight = matches[1]; }
124            else if (matches = advancedParameters.match(/fh=([^&]*)/)) { frameHeight = matches[1]; }
125            else { frameHeight = squareSize * 9 + borderSize * 2; }
126            advancedParameters = advancedParameters.replace(/(frameHeight|fh)=([^&]*)/, "");
127            if (matches = advancedParameters.match(/frameWidth=([^&]*)/)) { frameWidth = matches[1]; }
128            else if (matches = advancedParameters.match(/fw=([^&]*)/)) { frameWidth = matches[1]; }
129            else { frameWidth = squareSize * 8 + borderSize * 2; }
130            advancedParameters = advancedParameters.replace(/(frameWidth|fw)=([^&]*)/, "");
131
132            var theObj = document.getElementById('mainframe');
133            if (theObj) {
134              theObj.height = frameHeight;
135              theObj.style.height = frameHeight + "px";
136              theObj.width = frameWidth;
137              theObj.style.width = frameWidth + "px";
138              theObj.src = "http://pgn4web.casaschi.net/puzzler.php?" +
139                "pf=hash" +
140                "&ss=" + squareSize +
141                "&lch=" + lightColorHex[colorScheme] +
142                "&dch=" + darkColorHex[colorScheme] +
143                "&cbch=" + controlBackgroundColorHex[colorScheme] +
144                "&ctch=" + controlTextColorHex[colorScheme] +
145                "&fbch=" + frameBorderColorHexValue +
146                advancedParameters;
147            }
148
149            gadgets.window.adjustHeight();
150
151      }
152      // -->
153      </script>
154    ]]>
155  </Content>
156
157</Module>
158