var objects
= new Array(); // associative new Array: DOMDocument.elementId -> object
function onlyDigits(s) {
for (i=0; i<s.length; i++) {
if (s.charCodeAt(i)<48 || s.charCodeAt(i)>57) {
return false;
}
}
return true;
}
/* OBSERVER */
function
Observer(notifiedObjects, id
) { this.notifiedObjects = notifiedObjects;
this.id = id;
this.value = 0;
}
Observer.
prototype.
notify = function
() { for (i in this.notifiedObjects) {
objects[this.notifiedObjects[i]].observe(this.value, this);
}
}
/* SUMMARIZER */
Summarizer.prototype.constructor = Summarizer;
Summarizer.
prototype.
parent = Observer.
prototype;
function Summarizer(notifiedObjects, id) {
this.parent.constructor.call(this, notifiedObjects, id);
this.
notifiers = new Array(); }
Summarizer.prototype.observe = function(newValue, notifier) {
if (newValue == '') newValue = 0;
this.notifiers[notifier.id] = newValue;
this.value = 0;
for (i in this.notifiers) {
this.value += parseInt(this.notifiers[i]);
}
this.notify();
}
/* COSTCOUNTER */
CostCounter.prototype.constructor = CostCounter;
CostCounter.
prototype.
parent = Observer.
prototype;
CostCounter.prototype.sqSum = function(n) {
return parseInt(n*(n+1)*((2*n)+1)/6);
}
CostCounter.prototype.calculate = function() {
if (this.stat<this.base) {
this.value = 0;
}
else {
this.value = this.sqSum(this.stat-this.base);
}
}
function CostCounter(notifiedObjects, id, base, stat) {
this.parent.constructor.call(this, notifiedObjects, id);
this.base = base;
this.stat = stat;
this.calculate();
this.notify();
}
CostCounter.prototype.observe = function(newValue, notifier) {
if (newValue=='') newValue='0';
eval('this.'+notifier.type+'='+newValue+';');
this.calculate();
this.notify();
}
/* GOALCOSTCOUNTER */
GoalCostCounter.prototype = new CostCounter();
GoalCostCounter.prototype.constructor = GoalCostCounter;
GoalCostCounter.prototype.parent = CostCounter.prototype;
GoalCostCounter.prototype.calculate = function() {
if ((this.stat<this.base) || (this.goal<this.stat)) {
this.value = 0;
}
else {
this.value = this.sqSum(this.goal-this.base)-this.sqSum(this.stat-this.base);
}
}
function GoalCostCounter(notifiedObjects, id, base, stat, goal) {
this.parent.parent.constructor.call(this, notifiedObjects, id);
this.base = base;
this.stat = stat;
this.goal = goal;
this.calculate();
this.notify();
}
/* STATINPUT */
StatInput.prototype.constructor = StatInput;
StatInput.
prototype.
parent = Observer.
prototype;
function StatInput(notifiedObjects, id, type) {
this.parent.constructor.call(this, notifiedObjects, id);
this.type = type;
this.value = document.getElementById(id).value;
this.isInput = true;
this.notify();
}
StatInput.prototype.restoreValue = function() {
document.getElementById(this.id).value = this.value;
}
StatInput.prototype.setValue = function(newValue) {
this.value = newValue;
document.getElementById(this.id).value = newValue;
this.notify();
}
StatInput.prototype.observe = function() {
newValue = document.getElementById(this.id).value;
if (!onlyDigits(newValue)) {
this.restoreValue();
}
else if (newValue=='') {
this.setValue(1);
}
else {
value = parseInt(newValue);
if (value<1) {
this.setValue(1);
}
else if (value>999) {
this.setValue(999);
}
else {
this.setValue(value);
}
}
}
/* SPAN */
Span.prototype.constructor = Span;
Span.
prototype.
parent = Observer.
prototype;
function Span(notifiedObjects, id) {
this.parent.constructor.call(this, notifiedObjects, id);
}
Span.prototype.observe = function(newValue, notifier) {
this.value = parseInt(newValue);
//alert (notifier.id);
document.getElementById(this.id).innerHTML = newValue;
this.notify();
}
/* HORSES */
var horses
= new Array();horses[1] = {name:"Osioł Poitou", cost:1000, defence:1, attack:1, stamina:1, level:5, premium:false};
horses[2] = {name:"Kuc Dartmoor", cost:2000, defence:2, attack:2, stamina:2, level:7, premium:false};
horses[3] = {name:"Welsh", cost:3000, defence:3, attack:3, stamina:3, level:8, premium:false};
horses[4] = {name:"Koń fiordzki", cost:4000, defence:3, attack:4, stamina:3, level:10, premium:false};
horses[5] = {name:"Koń holsztyński", cost:5000, defence:4, attack:5, stamina:3, level:15, premium:false};
horses[6] = {name:"Rottaler", cost:5000, defence:5, attack:5, stamina:5, level:15, premium:true};
horses[7] = {name:"Koń oldenburski", cost:10000, defence:6, attack:9, stamina:9, level:17, premium:true};
horses[8] = {name:"Koń berberyjski", cost:15000, defence:8, attack:13, stamina:10, level:20, premium:false};
horses[9] = {name:"Koń fryderyksborski", cost:15000, defence:9, attack:13, stamina:13, level:20, premium:true};
horses[10] = {name:"Koń czystej krwi arabskiej", cost:20000, defence:10, attack:15, stamina:15, level:23, premium:false};
horses[11] = {name:"Koń brabancki", cost:25000, defence:12, attack:17, stamina:17, level:25, premium:true};
horses[12] = {name:"Senner", cost:30000, defence:15, attack:20, stamina:20, level:30, premium:false};
horses[13] = {name:"Koń anglo-normański", cost:40000, defence:18, attack:25, stamina:25, level:33, premium:false};
horses[14] = {name:"Koń Shire", cost:45000, defence:20, attack:27, stamina:27, level:37, premium:false};
horses[15] = {name:"Koń pełnej krwi angielskiej", cost:50000, defence:22, attack:29, stamina:29, level:40, premium:false};
horses[16] = {name:"Koń pełnej krwi perskiej", cost:60000, defence:23, attack:30, stamina:30, level:45, premium:true};
horses[17] = {name:"Koń pełnej krwi arabskiej", cost:70000, defence:25, attack:32, stamina:32, level:47, premium:false};
horses[18] = {name:"Koń kabardyński", cost:80000, defence:28, attack:35, stamina:35, level:50, premium:true};
horses[19] = {name:"Perszeron", cost:100000, defence:30, attack:40, stamina:40, level:60, premium:false};
horses[20] = {name:"Koń jutlandzki", cost:150000, defence:35, attack:50, stamina:50, level:70, premium:true};
horses[21] = {name:"Koń ardeński", cost:200000, defence:40, attack:60, stamina:60, level:80, premium:false};
horses[22] = {name:"Koń szwarcwaldzki", cost:300000, defence:50, attack:80, stamina:80, level:100, premium:false};
horses[23] = {name:"Wierzchowiec rycerski", cost:400000, defence:53, attack:90, stamina:90, level:110, premium:true};
horses[24] = {name:"Koń turniejowy", cost:520000, defence:57, attack:100, stamina:98, level:120, premium:false};
horses[25] = {name:"Zgiełk bitwy", cost:640000, defence:62, attack:110, stamina:110, level:130, premium:true};
horses[26] = {name:"Wierzchowiec książęcy", cost:740000, defence:66, attack:120, stamina:115, level:140, premium:false};
horses[27] = {name:"Wierzchowiec bitewny", cost:880000, defence:72, attack:130, stamina:120, level:155, premium:false};
horses[28] = {name:"Wierzchowiec paladyna", cost:1200000, defence:80, attack:150, stamina:140, level:178, premium:true};
horses[29] = {name:"Błogosławiony koń turniejowy", cost:1500000, defence:100, attack:170, stamina:160, level:200, premium:true};
horses[30] = {name:"Świętej wojny krwi", cost:2000000, defence:130, attack:200, stamina:190, level:225, premium:true};
horses[31] = {name:"Wyświęcony wierzchowiec książęcy -", cost:2500000, defence:160, attack:230, stamina:220, level:250, premium:true};
IHZhciBvYmplY3RzID0gbmV3IEFycmF5KCk7IC8vIGFzc29jaWF0aXZlIG5ldyBBcnJheTogRE9NRG9jdW1lbnQuZWxlbWVudElkIC0+IG9iamVjdAoKZnVuY3Rpb24gb25seURpZ2l0cyhzKSB7CiAgZm9yIChpPTA7IGk8cy5sZW5ndGg7IGkrKykgewogICAgaWYgKHMuY2hhckNvZGVBdChpKTw0OCB8fCBzLmNoYXJDb2RlQXQoaSk+NTcpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogIH0KICByZXR1cm4gdHJ1ZTsKfQoKLyogT0JTRVJWRVIgKi8KCmZ1bmN0aW9uIE9ic2VydmVyKG5vdGlmaWVkT2JqZWN0cywgaWQpIHsKICB0aGlzLm5vdGlmaWVkT2JqZWN0cyA9IG5vdGlmaWVkT2JqZWN0czsKICB0aGlzLmlkID0gaWQ7CiAgdGhpcy52YWx1ZSA9IDA7Cn0KCk9ic2VydmVyLnByb3RvdHlwZS5ub3RpZnkgPSBmdW5jdGlvbigpIHsKICBmb3IgKGkgaW4gdGhpcy5ub3RpZmllZE9iamVjdHMpIHsKICAgIG9iamVjdHNbdGhpcy5ub3RpZmllZE9iamVjdHNbaV1dLm9ic2VydmUodGhpcy52YWx1ZSwgdGhpcyk7CiAgfQp9CgovKiBTVU1NQVJJWkVSICovCgpTdW1tYXJpemVyLnByb3RvdHlwZSA9IG5ldyBPYnNlcnZlcigpOwpTdW1tYXJpemVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFN1bW1hcml6ZXI7ClN1bW1hcml6ZXIucHJvdG90eXBlLnBhcmVudCA9IE9ic2VydmVyLnByb3RvdHlwZTsKCmZ1bmN0aW9uIFN1bW1hcml6ZXIobm90aWZpZWRPYmplY3RzLCBpZCkgewogIHRoaXMucGFyZW50LmNvbnN0cnVjdG9yLmNhbGwodGhpcywgbm90aWZpZWRPYmplY3RzLCBpZCk7CiAgdGhpcy5ub3RpZmllcnMgPSBuZXcgQXJyYXkoKTsKfQoKU3VtbWFyaXplci5wcm90b3R5cGUub2JzZXJ2ZSA9IGZ1bmN0aW9uKG5ld1ZhbHVlLCBub3RpZmllcikgewogIGlmIChuZXdWYWx1ZSA9PSAnJykgbmV3VmFsdWUgPSAwOwogIHRoaXMubm90aWZpZXJzW25vdGlmaWVyLmlkXSA9IG5ld1ZhbHVlOwogIHRoaXMudmFsdWUgPSAwOwogIGZvciAoaSBpbiB0aGlzLm5vdGlmaWVycykgewogICAgdGhpcy52YWx1ZSArPSBwYXJzZUludCh0aGlzLm5vdGlmaWVyc1tpXSk7CiAgfQogIHRoaXMubm90aWZ5KCk7Cn0KCi8qIENPU1RDT1VOVEVSICovCgpDb3N0Q291bnRlci5wcm90b3R5cGUgPSBuZXcgT2JzZXJ2ZXIoKTsKQ29zdENvdW50ZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ29zdENvdW50ZXI7CkNvc3RDb3VudGVyLnByb3RvdHlwZS5wYXJlbnQgPSBPYnNlcnZlci5wcm90b3R5cGU7CgpDb3N0Q291bnRlci5wcm90b3R5cGUuc3FTdW0gPSBmdW5jdGlvbihuKSB7CiAgcmV0dXJuIHBhcnNlSW50KG4qKG4rMSkqKCgyKm4pKzEpLzYpOwp9CgpDb3N0Q291bnRlci5wcm90b3R5cGUuY2FsY3VsYXRlID0gZnVuY3Rpb24oKSB7CiAgaWYgKHRoaXMuc3RhdDx0aGlzLmJhc2UpIHsKICAgIHRoaXMudmFsdWUgPSAwOwogIH0KICBlbHNlIHsKICAgIHRoaXMudmFsdWUgPSB0aGlzLnNxU3VtKHRoaXMuc3RhdC10aGlzLmJhc2UpOwogIH0KfQoKZnVuY3Rpb24gQ29zdENvdW50ZXIobm90aWZpZWRPYmplY3RzLCBpZCwgYmFzZSwgc3RhdCkgewogIHRoaXMucGFyZW50LmNvbnN0cnVjdG9yLmNhbGwodGhpcywgbm90aWZpZWRPYmplY3RzLCBpZCk7CiAgdGhpcy5iYXNlID0gYmFzZTsKICB0aGlzLnN0YXQgPSBzdGF0OwogIHRoaXMuY2FsY3VsYXRlKCk7CiAgdGhpcy5ub3RpZnkoKTsKfQoKQ29zdENvdW50ZXIucHJvdG90eXBlLm9ic2VydmUgPSBmdW5jdGlvbihuZXdWYWx1ZSwgbm90aWZpZXIpIHsKICBpZiAobmV3VmFsdWU9PScnKSBuZXdWYWx1ZT0nMCc7CiAgZXZhbCgndGhpcy4nK25vdGlmaWVyLnR5cGUrJz0nK25ld1ZhbHVlKyc7Jyk7CiAgdGhpcy5jYWxjdWxhdGUoKTsKICB0aGlzLm5vdGlmeSgpOwp9CgovKiBHT0FMQ09TVENPVU5URVIgKi8KCkdvYWxDb3N0Q291bnRlci5wcm90b3R5cGUgPSBuZXcgQ29zdENvdW50ZXIoKTsKR29hbENvc3RDb3VudGVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEdvYWxDb3N0Q291bnRlcjsKR29hbENvc3RDb3VudGVyLnByb3RvdHlwZS5wYXJlbnQgPSBDb3N0Q291bnRlci5wcm90b3R5cGU7CgpHb2FsQ29zdENvdW50ZXIucHJvdG90eXBlLmNhbGN1bGF0ZSA9IGZ1bmN0aW9uKCkgewogIGlmICgodGhpcy5zdGF0PHRoaXMuYmFzZSkgfHwgKHRoaXMuZ29hbDx0aGlzLnN0YXQpKSB7CiAgICB0aGlzLnZhbHVlID0gMDsKICB9CiAgZWxzZSB7CiAgICB0aGlzLnZhbHVlID0gdGhpcy5zcVN1bSh0aGlzLmdvYWwtdGhpcy5iYXNlKS10aGlzLnNxU3VtKHRoaXMuc3RhdC10aGlzLmJhc2UpOwogIH0KfQoKZnVuY3Rpb24gR29hbENvc3RDb3VudGVyKG5vdGlmaWVkT2JqZWN0cywgaWQsIGJhc2UsIHN0YXQsIGdvYWwpIHsKICB0aGlzLnBhcmVudC5wYXJlbnQuY29uc3RydWN0b3IuY2FsbCh0aGlzLCBub3RpZmllZE9iamVjdHMsIGlkKTsKICB0aGlzLmJhc2UgPSBiYXNlOwogIHRoaXMuc3RhdCA9IHN0YXQ7CiAgdGhpcy5nb2FsID0gZ29hbDsKICB0aGlzLmNhbGN1bGF0ZSgpOwogIHRoaXMubm90aWZ5KCk7Cn0KCi8qIFNUQVRJTlBVVCAqLwoKU3RhdElucHV0LnByb3RvdHlwZSA9IG5ldyBPYnNlcnZlcigpOwpTdGF0SW5wdXQucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gU3RhdElucHV0OwpTdGF0SW5wdXQucHJvdG90eXBlLnBhcmVudCA9IE9ic2VydmVyLnByb3RvdHlwZTsKCmZ1bmN0aW9uIFN0YXRJbnB1dChub3RpZmllZE9iamVjdHMsIGlkLCB0eXBlKSB7CiAgdGhpcy5wYXJlbnQuY29uc3RydWN0b3IuY2FsbCh0aGlzLCBub3RpZmllZE9iamVjdHMsIGlkKTsKICB0aGlzLnR5cGUgPSB0eXBlOwogIHRoaXMudmFsdWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCkudmFsdWU7CiAgdGhpcy5pc0lucHV0ID0gdHJ1ZTsKICB0aGlzLm5vdGlmeSgpOwp9CgpTdGF0SW5wdXQucHJvdG90eXBlLnJlc3RvcmVWYWx1ZSA9IGZ1bmN0aW9uKCkgewogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuaWQpLnZhbHVlID0gdGhpcy52YWx1ZTsKfQoKU3RhdElucHV0LnByb3RvdHlwZS5zZXRWYWx1ZSA9IGZ1bmN0aW9uKG5ld1ZhbHVlKSB7CiAgdGhpcy52YWx1ZSA9IG5ld1ZhbHVlOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuaWQpLnZhbHVlID0gbmV3VmFsdWU7CiAgdGhpcy5ub3RpZnkoKTsKfQoKU3RhdElucHV0LnByb3RvdHlwZS5vYnNlcnZlID0gZnVuY3Rpb24oKSB7CiAgbmV3VmFsdWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmlkKS52YWx1ZTsKICBpZiAoIW9ubHlEaWdpdHMobmV3VmFsdWUpKSB7CiAgICB0aGlzLnJlc3RvcmVWYWx1ZSgpOwogIH0KICBlbHNlIGlmIChuZXdWYWx1ZT09JycpIHsKICAgIHRoaXMuc2V0VmFsdWUoMSk7CiAgfQogIGVsc2UgewogICAgdmFsdWUgPSBwYXJzZUludChuZXdWYWx1ZSk7CiAgICBpZiAodmFsdWU8MSkgewogICAgICB0aGlzLnNldFZhbHVlKDEpOwogICAgfQogICAgZWxzZSBpZiAodmFsdWU+OTk5KSB7CiAgICAgIHRoaXMuc2V0VmFsdWUoOTk5KTsKICAgIH0KICAgIGVsc2UgewogICAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTsKICAgIH0KICB9Cn0KCi8qIFNQQU4gKi8KClNwYW4ucHJvdG90eXBlID0gbmV3IE9ic2VydmVyKCk7ClNwYW4ucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gU3BhbjsKU3Bhbi5wcm90b3R5cGUucGFyZW50ID0gT2JzZXJ2ZXIucHJvdG90eXBlOwoKZnVuY3Rpb24gU3Bhbihub3RpZmllZE9iamVjdHMsIGlkKSB7CiAgdGhpcy5wYXJlbnQuY29uc3RydWN0b3IuY2FsbCh0aGlzLCBub3RpZmllZE9iamVjdHMsIGlkKTsKfQoKU3Bhbi5wcm90b3R5cGUub2JzZXJ2ZSA9IGZ1bmN0aW9uKG5ld1ZhbHVlLCBub3RpZmllcikgewogIHRoaXMudmFsdWUgPSBwYXJzZUludChuZXdWYWx1ZSk7CiAgLy9hbGVydCAobm90aWZpZXIuaWQpOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuaWQpLmlubmVySFRNTCA9IG5ld1ZhbHVlOwogIHRoaXMubm90aWZ5KCk7Cn0KCi8qIEhPUlNFUyAqLwoKdmFyIGhvcnNlcyA9IG5ldyBBcnJheSgpOwpob3JzZXNbMV0gPSB7bmFtZToiT3Npb8WCIFBvaXRvdSIsIGNvc3Q6MTAwMCwgZGVmZW5jZToxLCBhdHRhY2s6MSwgc3RhbWluYToxLCBsZXZlbDo1LCBwcmVtaXVtOmZhbHNlfTsKaG9yc2VzWzJdID0ge25hbWU6Ikt1YyBEYXJ0bW9vciIsIGNvc3Q6MjAwMCwgZGVmZW5jZToyLCBhdHRhY2s6Miwgc3RhbWluYToyLCBsZXZlbDo3LCBwcmVtaXVtOmZhbHNlfTsKaG9yc2VzWzNdID0ge25hbWU6IldlbHNoIiwgY29zdDozMDAwLCBkZWZlbmNlOjMsIGF0dGFjazozLCBzdGFtaW5hOjMsIGxldmVsOjgsIHByZW1pdW06ZmFsc2V9Owpob3JzZXNbNF0gPSB7bmFtZToiS2/FhCBmaW9yZHpraSIsIGNvc3Q6NDAwMCwgZGVmZW5jZTozLCBhdHRhY2s6NCwgc3RhbWluYTozLCBsZXZlbDoxMCwgcHJlbWl1bTpmYWxzZX07CmhvcnNlc1s1XSA9IHtuYW1lOiJLb8WEIGhvbHN6dHnFhHNraSIsIGNvc3Q6NTAwMCwgZGVmZW5jZTo0LCBhdHRhY2s6NSwgc3RhbWluYTozLCBsZXZlbDoxNSwgcHJlbWl1bTpmYWxzZX07CmhvcnNlc1s2XSA9IHtuYW1lOiJSb3R0YWxlciIsIGNvc3Q6NTAwMCwgZGVmZW5jZTo1LCBhdHRhY2s6NSwgc3RhbWluYTo1LCBsZXZlbDoxNSwgcHJlbWl1bTp0cnVlfTsKaG9yc2VzWzddID0ge25hbWU6IktvxYQgb2xkZW5idXJza2kiLCBjb3N0OjEwMDAwLCBkZWZlbmNlOjYsIGF0dGFjazo5LCBzdGFtaW5hOjksIGxldmVsOjE3LCBwcmVtaXVtOnRydWV9Owpob3JzZXNbOF0gPSB7bmFtZToiS2/FhCBiZXJiZXJ5anNraSIsIGNvc3Q6MTUwMDAsIGRlZmVuY2U6OCwgYXR0YWNrOjEzLCBzdGFtaW5hOjEwLCBsZXZlbDoyMCwgcHJlbWl1bTpmYWxzZX07CmhvcnNlc1s5XSA9IHtuYW1lOiJLb8WEIGZyeWRlcnlrc2JvcnNraSIsIGNvc3Q6MTUwMDAsIGRlZmVuY2U6OSwgYXR0YWNrOjEzLCBzdGFtaW5hOjEzLCBsZXZlbDoyMCwgcHJlbWl1bTp0cnVlfTsKaG9yc2VzWzEwXSA9IHtuYW1lOiJLb8WEIGN6eXN0ZWoga3J3aSBhcmFic2tpZWoiLCBjb3N0OjIwMDAwLCBkZWZlbmNlOjEwLCBhdHRhY2s6MTUsIHN0YW1pbmE6MTUsIGxldmVsOjIzLCBwcmVtaXVtOmZhbHNlfTsKaG9yc2VzWzExXSA9IHtuYW1lOiJLb8WEIGJyYWJhbmNraSIsIGNvc3Q6MjUwMDAsIGRlZmVuY2U6MTIsIGF0dGFjazoxNywgc3RhbWluYToxNywgbGV2ZWw6MjUsIHByZW1pdW06dHJ1ZX07CmhvcnNlc1sxMl0gPSB7bmFtZToiU2VubmVyIiwgY29zdDozMDAwMCwgZGVmZW5jZToxNSwgYXR0YWNrOjIwLCBzdGFtaW5hOjIwLCBsZXZlbDozMCwgcHJlbWl1bTpmYWxzZX07CmhvcnNlc1sxM10gPSB7bmFtZToiS2/FhCBhbmdsby1ub3JtYcWEc2tpIiwgY29zdDo0MDAwMCwgZGVmZW5jZToxOCwgYXR0YWNrOjI1LCBzdGFtaW5hOjI1LCBsZXZlbDozMywgcHJlbWl1bTpmYWxzZX07CmhvcnNlc1sxNF0gPSB7bmFtZToiS2/FhCBTaGlyZSIsIGNvc3Q6NDUwMDAsIGRlZmVuY2U6MjAsIGF0dGFjazoyNywgc3RhbWluYToyNywgbGV2ZWw6MzcsIHByZW1pdW06ZmFsc2V9Owpob3JzZXNbMTVdID0ge25hbWU6IktvxYQgcGXFgm5laiBrcndpIGFuZ2llbHNraWVqIiwgY29zdDo1MDAwMCwgZGVmZW5jZToyMiwgYXR0YWNrOjI5LCBzdGFtaW5hOjI5LCBsZXZlbDo0MCwgcHJlbWl1bTpmYWxzZX07CmhvcnNlc1sxNl0gPSB7bmFtZToiS2/FhCBwZcWCbmVqIGtyd2kgcGVyc2tpZWoiLCBjb3N0OjYwMDAwLCBkZWZlbmNlOjIzLCBhdHRhY2s6MzAsIHN0YW1pbmE6MzAsIGxldmVsOjQ1LCBwcmVtaXVtOnRydWV9Owpob3JzZXNbMTddID0ge25hbWU6IktvxYQgcGXFgm5laiBrcndpIGFyYWJza2llaiIsIGNvc3Q6NzAwMDAsIGRlZmVuY2U6MjUsIGF0dGFjazozMiwgc3RhbWluYTozMiwgbGV2ZWw6NDcsIHByZW1pdW06ZmFsc2V9Owpob3JzZXNbMThdID0ge25hbWU6IktvxYQga2FiYXJkecWEc2tpIiwgY29zdDo4MDAwMCwgZGVmZW5jZToyOCwgYXR0YWNrOjM1LCBzdGFtaW5hOjM1LCBsZXZlbDo1MCwgcHJlbWl1bTp0cnVlfTsKaG9yc2VzWzE5XSA9IHtuYW1lOiJQZXJzemVyb24iLCBjb3N0OjEwMDAwMCwgZGVmZW5jZTozMCwgYXR0YWNrOjQwLCBzdGFtaW5hOjQwLCBsZXZlbDo2MCwgcHJlbWl1bTpmYWxzZX07CmhvcnNlc1syMF0gPSB7bmFtZToiS2/FhCBqdXRsYW5kemtpIiwgY29zdDoxNTAwMDAsIGRlZmVuY2U6MzUsIGF0dGFjazo1MCwgc3RhbWluYTo1MCwgbGV2ZWw6NzAsIHByZW1pdW06dHJ1ZX07CmhvcnNlc1syMV0gPSB7bmFtZToiS2/FhCBhcmRlxYRza2kiLCBjb3N0OjIwMDAwMCwgZGVmZW5jZTo0MCwgYXR0YWNrOjYwLCBzdGFtaW5hOjYwLCBsZXZlbDo4MCwgcHJlbWl1bTpmYWxzZX07CmhvcnNlc1syMl0gPSB7bmFtZToiS2/FhCBzendhcmN3YWxkemtpIiwgY29zdDozMDAwMDAsIGRlZmVuY2U6NTAsIGF0dGFjazo4MCwgc3RhbWluYTo4MCwgbGV2ZWw6MTAwLCBwcmVtaXVtOmZhbHNlfTsKaG9yc2VzWzIzXSA9IHtuYW1lOiJXaWVyemNob3dpZWMgcnljZXJza2kiLCBjb3N0OjQwMDAwMCwgZGVmZW5jZTo1MywgYXR0YWNrOjkwLCBzdGFtaW5hOjkwLCBsZXZlbDoxMTAsIHByZW1pdW06dHJ1ZX07CmhvcnNlc1syNF0gPSB7bmFtZToiS2/FhCB0dXJuaWVqb3d5IiwgY29zdDo1MjAwMDAsIGRlZmVuY2U6NTcsIGF0dGFjazoxMDAsIHN0YW1pbmE6OTgsIGxldmVsOjEyMCwgcHJlbWl1bTpmYWxzZX07CmhvcnNlc1syNV0gPSB7bmFtZToiWmdpZcWCayBiaXR3eSIsIGNvc3Q6NjQwMDAwLCBkZWZlbmNlOjYyLCBhdHRhY2s6MTEwLCBzdGFtaW5hOjExMCwgbGV2ZWw6MTMwLCBwcmVtaXVtOnRydWV9Owpob3JzZXNbMjZdID0ge25hbWU6IldpZXJ6Y2hvd2llYyBrc2nEhcW8xJljeSIsIGNvc3Q6NzQwMDAwLCBkZWZlbmNlOjY2LCBhdHRhY2s6MTIwLCBzdGFtaW5hOjExNSwgbGV2ZWw6MTQwLCBwcmVtaXVtOmZhbHNlfTsKaG9yc2VzWzI3XSA9IHtuYW1lOiJXaWVyemNob3dpZWMgYml0ZXdueSIsIGNvc3Q6ODgwMDAwLCBkZWZlbmNlOjcyLCBhdHRhY2s6MTMwLCBzdGFtaW5hOjEyMCwgbGV2ZWw6MTU1LCBwcmVtaXVtOmZhbHNlfTsKaG9yc2VzWzI4XSA9IHtuYW1lOiJXaWVyemNob3dpZWMgcGFsYWR5bmEiLCBjb3N0OjEyMDAwMDAsIGRlZmVuY2U6ODAsIGF0dGFjazoxNTAsIHN0YW1pbmE6MTQwLCBsZXZlbDoxNzgsIHByZW1pdW06dHJ1ZX07CmhvcnNlc1syOV0gPSB7bmFtZToiQsWCb2dvc8WCYXdpb255IGtvxYQgdHVybmllam93eSIsIGNvc3Q6MTUwMDAwMCwgZGVmZW5jZToxMDAsIGF0dGFjazoxNzAsIHN0YW1pbmE6MTYwLCBsZXZlbDoyMDAsIHByZW1pdW06dHJ1ZX07Cgpob3JzZXNbMzBdID0ge25hbWU6IsWad2nEmXRlaiB3b2pueSBrcndpIiwgY29zdDoyMDAwMDAwLCBkZWZlbmNlOjEzMCwgYXR0YWNrOjIwMCwgc3RhbWluYToxOTAsIGxldmVsOjIyNSwgcHJlbWl1bTp0cnVlfTsKCgpob3JzZXNbMzFdID0ge25hbWU6Ild5xZt3acSZY29ueSB3aWVyemNob3dpZWMga3NpxIXFvMSZY3kgLSIsIGNvc3Q6MjUwMDAwMCwgZGVmZW5jZToxNjAsIGF0dGFjazoyMzAsIHN0YW1pbmE6MjIwLCBsZXZlbDoyNTAsIHByZW1pdW06dHJ1ZX07IA==
Main.java:1: error: class, interface, or enum expected
var objects = new Array(); // associative new Array: DOMDocument.elementId -> object
^
Main.java:3: error: class, interface, or enum expected
function onlyDigits(s) {
^
Main.java:4: error: class, interface, or enum expected
for (i=0; i<s.length; i++) {
^
Main.java:4: error: class, interface, or enum expected
for (i=0; i<s.length; i++) {
^
Main.java:7: error: class, interface, or enum expected
}
^
Main.java:10: error: class, interface, or enum expected
}
^
Main.java:16: error: class, interface, or enum expected
this.id = id;
^
Main.java:17: error: class, interface, or enum expected
this.value = 0;
^
Main.java:18: error: class, interface, or enum expected
}
^
Main.java:23: error: class, interface, or enum expected
}
^
Main.java:29: error: class, interface, or enum expected
Summarizer.prototype.constructor = Summarizer;
^
Main.java:30: error: class, interface, or enum expected
Summarizer.prototype.parent = Observer.prototype;
^
Main.java:32: error: class, interface, or enum expected
function Summarizer(notifiedObjects, id) {
^
Main.java:34: error: class, interface, or enum expected
this.notifiers = new Array();
^
Main.java:35: error: class, interface, or enum expected
}
^
Main.java:38: error: empty character literal
if (newValue == '') newValue = 0;
^
Main.java:38: error: unclosed character literal
if (newValue == '') newValue = 0;
^
Main.java:39: error: class, interface, or enum expected
this.notifiers[notifier.id] = newValue;
^
Main.java:40: error: class, interface, or enum expected
this.value = 0;
^
Main.java:41: error: class, interface, or enum expected
for (i in this.notifiers) {
^
Main.java:43: error: class, interface, or enum expected
}
^
Main.java:45: error: class, interface, or enum expected
}
^
Main.java:50: error: class, interface, or enum expected
CostCounter.prototype.constructor = CostCounter;
^
Main.java:51: error: class, interface, or enum expected
CostCounter.prototype.parent = Observer.prototype;
^
Main.java:53: error: class, interface, or enum expected
CostCounter.prototype.sqSum = function(n) {
^
Main.java:55: error: class, interface, or enum expected
}
^
Main.java:60: error: class, interface, or enum expected
}
^
Main.java:63: error: class, interface, or enum expected
}
^
Main.java:68: error: class, interface, or enum expected
this.base = base;
^
Main.java:69: error: class, interface, or enum expected
this.stat = stat;
^
Main.java:70: error: class, interface, or enum expected
this.calculate();
^
Main.java:71: error: class, interface, or enum expected
this.notify();
^
Main.java:72: error: class, interface, or enum expected
}
^
Main.java:75: error: empty character literal
if (newValue=='') newValue='0';
^
Main.java:75: error: unclosed character literal
if (newValue=='') newValue='0';
^
Main.java:76: error: class, interface, or enum expected
eval('this.'+notifier.type+'='+newValue+';');
^
Main.java:76: error: unclosed character literal
eval('this.'+notifier.type+'='+newValue+';');
^
Main.java:76: error: unclosed character literal
eval('this.'+notifier.type+'='+newValue+';');
^
Main.java:77: error: class, interface, or enum expected
this.calculate();
^
Main.java:78: error: class, interface, or enum expected
this.notify();
^
Main.java:79: error: class, interface, or enum expected
}
^
Main.java:84: error: class, interface, or enum expected
GoalCostCounter.prototype.constructor = GoalCostCounter;
^
Main.java:85: error: class, interface, or enum expected
GoalCostCounter.prototype.parent = CostCounter.prototype;
^
Main.java:87: error: class, interface, or enum expected
GoalCostCounter.prototype.calculate = function() {
^
Main.java:90: error: class, interface, or enum expected
}
^
Main.java:93: error: class, interface, or enum expected
}
^
Main.java:98: error: class, interface, or enum expected
this.base = base;
^
Main.java:99: error: class, interface, or enum expected
this.stat = stat;
^
Main.java:100: error: class, interface, or enum expected
this.goal = goal;
^
Main.java:101: error: class, interface, or enum expected
this.calculate();
^
Main.java:102: error: class, interface, or enum expected
this.notify();
^
Main.java:103: error: class, interface, or enum expected
}
^
Main.java:108: error: class, interface, or enum expected
StatInput.prototype.constructor = StatInput;
^
Main.java:109: error: class, interface, or enum expected
StatInput.prototype.parent = Observer.prototype;
^
Main.java:111: error: class, interface, or enum expected
function StatInput(notifiedObjects, id, type) {
^
Main.java:113: error: class, interface, or enum expected
this.type = type;
^
Main.java:114: error: class, interface, or enum expected
this.value = document.getElementById(id).value;
^
Main.java:115: error: class, interface, or enum expected
this.isInput = true;
^
Main.java:116: error: class, interface, or enum expected
this.notify();
^
Main.java:117: error: class, interface, or enum expected
}
^
Main.java:121: error: class, interface, or enum expected
}
^
Main.java:125: error: class, interface, or enum expected
document.getElementById(this.id).value = newValue;
^
Main.java:126: error: class, interface, or enum expected
this.notify();
^
Main.java:127: error: class, interface, or enum expected
}
^
Main.java:131: error: class, interface, or enum expected
if (!onlyDigits(newValue)) {
^
Main.java:133: error: class, interface, or enum expected
}
^
Main.java:134: error: empty character literal
else if (newValue=='') {
^
Main.java:134: error: unclosed character literal
else if (newValue=='') {
^
Main.java:136: error: class, interface, or enum expected
}
^
Main.java:139: error: class, interface, or enum expected
if (value<1) {
^
Main.java:141: error: class, interface, or enum expected
}
^
Main.java:144: error: class, interface, or enum expected
}
^
Main.java:147: error: class, interface, or enum expected
}
^
Main.java:154: error: class, interface, or enum expected
Span.prototype.constructor = Span;
^
Main.java:155: error: class, interface, or enum expected
Span.prototype.parent = Observer.prototype;
^
Main.java:157: error: class, interface, or enum expected
function Span(notifiedObjects, id) {
^
Main.java:159: error: class, interface, or enum expected
}
^
Main.java:164: error: class, interface, or enum expected
document.getElementById(this.id).innerHTML = newValue;
^
Main.java:165: error: class, interface, or enum expected
this.notify();
^
Main.java:166: error: class, interface, or enum expected
}
^
Main.java:171: error: class, interface, or enum expected
horses[1] = {name:"Osio? Poitou", cost:1000, defence:1, attack:1, stamina:1, level:5, premium:false};
^
Main.java:172: error: class, interface, or enum expected
horses[2] = {name:"Kuc Dartmoor", cost:2000, defence:2, attack:2, stamina:2, level:7, premium:false};
^
Main.java:173: error: class, interface, or enum expected
horses[3] = {name:"Welsh", cost:3000, defence:3, attack:3, stamina:3, level:8, premium:false};
^
Main.java:174: error: class, interface, or enum expected
horses[4] = {name:"Ko? fiordzki", cost:4000, defence:3, attack:4, stamina:3, level:10, premium:false};
^
Main.java:175: error: class, interface, or enum expected
horses[5] = {name:"Ko? holszty?ski", cost:5000, defence:4, attack:5, stamina:3, level:15, premium:false};
^
Main.java:176: error: class, interface, or enum expected
horses[6] = {name:"Rottaler", cost:5000, defence:5, attack:5, stamina:5, level:15, premium:true};
^
Main.java:177: error: class, interface, or enum expected
horses[7] = {name:"Ko? oldenburski", cost:10000, defence:6, attack:9, stamina:9, level:17, premium:true};
^
Main.java:178: error: class, interface, or enum expected
horses[8] = {name:"Ko? berberyjski", cost:15000, defence:8, attack:13, stamina:10, level:20, premium:false};
^
Main.java:179: error: class, interface, or enum expected
horses[9] = {name:"Ko? fryderyksborski", cost:15000, defence:9, attack:13, stamina:13, level:20, premium:true};
^
Main.java:180: error: class, interface, or enum expected
horses[10] = {name:"Ko? czystej krwi arabskiej", cost:20000, defence:10, attack:15, stamina:15, level:23, premium:false};
^
Main.java:181: error: class, interface, or enum expected
horses[11] = {name:"Ko? brabancki", cost:25000, defence:12, attack:17, stamina:17, level:25, premium:true};
^
Main.java:182: error: class, interface, or enum expected
horses[12] = {name:"Senner", cost:30000, defence:15, attack:20, stamina:20, level:30, premium:false};
^
Main.java:183: error: class, interface, or enum expected
horses[13] = {name:"Ko? anglo-norma?ski", cost:40000, defence:18, attack:25, stamina:25, level:33, premium:false};
^
Main.java:184: error: class, interface, or enum expected
horses[14] = {name:"Ko? Shire", cost:45000, defence:20, attack:27, stamina:27, level:37, premium:false};
^
Main.java:185: error: class, interface, or enum expected
horses[15] = {name:"Ko? pe?nej krwi angielskiej", cost:50000, defence:22, attack:29, stamina:29, level:40, premium:false};
^
Main.java:186: error: class, interface, or enum expected
horses[16] = {name:"Ko? pe?nej krwi perskiej", cost:60000, defence:23, attack:30, stamina:30, level:45, premium:true};
^
Main.java:187: error: class, interface, or enum expected
horses[17] = {name:"Ko? pe?nej krwi arabskiej", cost:70000, defence:25, attack:32, stamina:32, level:47, premium:false};
^
Main.java:188: error: class, interface, or enum expected
horses[18] = {name:"Ko? kabardy?ski", cost:80000, defence:28, attack:35, stamina:35, level:50, premium:true};
^
Main.java:189: error: class, interface, or enum expected
horses[19] = {name:"Perszeron", cost:100000, defence:30, attack:40, stamina:40, level:60, premium:false};
^
Main.java:190: error: class, interface, or enum expected
horses[20] = {name:"Ko? jutlandzki", cost:150000, defence:35, attack:50, stamina:50, level:70, premium:true};
^
100 errors