(function e(t, n, r) {
function s(o, u) {
if (!n[o]) {
if (!t[o]) {
var a = typeof require == "function" && require;
if (!u && a) return a(o, !0);
if (i) return i(o, !0);
throw new Error("Cannot find module '" + o + "'")
}
var f = n[o] = {exports: {}};
t[o][0].call(f.exports, function (e) {
var n = t[o][1][e];
return s(n ? n : e)
}, f, f.exports, e, t, n, r)
}
return n[o].exports
}
var i = typeof require == "function" && require;
for (var o = 0; o < r.length; o++) s(r[o]);
return s
})({
1: [function (require, module, exports) {
(function (global) {
(function () {
var ALPHABET, Cell, DIRECTIONS, LetterGrid, NUM_COLORS, angular, defaultWordlist, wordFromPath, _,
__indexOf = [].indexOf || function (item) {
for (var i = 0, l = this.length; i < l; i++) {
if (i in this && this[i] === item) return i;
}
return -1;
};
angular = (typeof window !== "undefined" ? window['angular'] : typeof global !== "undefined" ? global['angular'] : null);
_ = (typeof window !== "undefined" ? window['_'] : typeof global !== "undefined" ? global['_'] : null);
defaultWordlist = require('./wordlist');
NUM_COLORS = 5;
var whaws_alphabet_option = jQuery('#whaws_alphabet_option').val();
var whaws_rightwards_arrow = jQuery('#whaws_rightwards_arrow').val();
var whaws_downwards_arrow = jQuery('#whaws_downwards_arrow').val();
var whaws_leftwards_arrow = jQuery('#whaws_leftwards_arrow').val();
var whaws_upwards_arrow = jQuery('#whaws_upwards_arrow').val();
var whaws_south_east_arrow = jQuery('#whaws_south_east_arrow').val();
var whaws_north_east_arrow = jQuery('#whaws_north_east_arrow').val();
var whaws_south_west_arrow = jQuery('#whaws_south_west_arrow').val();
var whaws_north_west_arrow = jQuery('#whaws_north_west_arrow').val();
var level_difficulty_val = optional_wordsearch_vars.whaws_level_difficulty;
var use_global_options = optional_wordsearch_vars.whaws_use_global_options;
var direction = [];
if (whaws_rightwards_arrow == 'on') {
direction.push([1, 0]);
}
if (whaws_downwards_arrow == 'on') {
direction.push([0, 1]);
}
if (whaws_leftwards_arrow == 'on') {
direction.push([-1, 0]);
}
if (whaws_upwards_arrow == 'on') {
direction.push([0, -1]);
}
if (whaws_south_east_arrow == 'on') {
direction.push([1, 1]);
}
if (whaws_north_east_arrow == 'on') {
direction.push([1, -1]);
}
if (whaws_south_west_arrow == 'on') {
direction.push([-1, 1]);
}
if (whaws_north_west_arrow == 'on') {
direction.push([-1, -1]);
}
ALPHABET = 'AABBCCDDEEFFGGHHIIJKLLMMNNOOPPQRSSTTUUVWXYZ';
if (jQuery('#whaws_alphabet_option').length > 0) {
if (whaws_alphabet_option.trim().length != 0) {
ALPHABET = whaws_alphabet_option.trim();
}
}
if (direction.length > 0) {
DIRECTIONS = _.shuffle(direction);
}
else {
DIRECTIONS = _.shuffle([[1, 0], [0, 1], [-1, 0], [0, -1], [1, 1], [1, -1], [-1, 1], [-1, -1]]);
}
wordFromPath = function (path) {
var cell, word, _i, _len;
word = '';
if (path != null) {
for (_i = 0, _len = path.length; _i < _len; _i++) {
cell = path[_i];
word += cell.letter;
}
}
return word
};
Cell = (function () {
function Cell(x, y) {
this.x = x;
this.y = y;
this.solvedColorClasses = [];
this.isSelected = false;
this.onPath = false;
this.onCorrectPath = false;
}
Cell.prototype.willFitLetter = function (letter) {
return (this.letter == null) || this.letter === letter;
};
Cell.prototype.randomFill = function () {
if (this.letter == null) {
return this.letter = _.sample(ALPHABET);
}
};
return Cell;
})();
LetterGrid = (function () {
function LetterGrid(width, height, maxWords, wordlist) {
var cell, i, row, word, x, y, _i, _j, _k, _l, _len, _len1, _len2, _ref;
this.width = width != null ? width : 8;
this.height = height != null ? height : 8;
if (maxWords == null) {
maxWords = 20;
}
if (wordlist == null) {
wordlist = defaultWordlist;
}
this.cells = (function () {
var _i, _ref, _results;
_results = [];
for (y = _i = 0, _ref = this.height - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; y = 0 <= _ref ? ++_i : --_i) {
_results.push((function () {
var _j, _ref1, _results1;
_results1 = [];
for (x = _j = 0, _ref1 = this.width - 1; 0 <= _ref1 ? _j <= _ref1 : _j >= _ref1; x = 0 <= _ref1 ? ++_j : --_j) {
_results1.push(new Cell(x, y));
}
return _results1;
}).call(this));
}
return _results;
}).call(this);
this.words = [];
wordlist = _.sortBy(_.shuffle(wordlist), function (word) {
return -1 * word.length;
});
for (i = _i = 1; 1 <= maxWords ? _i <= maxWords : _i >= maxWords; i = 1 <= maxWords ? ++_i : --_i) {
for (_j = 0, _len = wordlist.length; _j < _len; _j++) {
// word = wordlist[_j].replace(/\s/g, '');
word = wordlist[_j].replace(/([\s-'])/g, ''); // letter grid settings
if (__indexOf.call(this.words, word) < 0) {
if (this._tryPutWord(word)) {
break;
}
}
}
}
_ref = this.cells;
for (_k = 0, _len1 = _ref.length; _k < _len1; _k++) {
row = _ref[_k];
for (_l = 0, _len2 = row.length; _l < _len2; _l++) {
cell = row[_l];
cell.randomFill();
}
}
this.words = _.sortBy(this.words, function (word) {
return -1 * word.length;
});
}
LetterGrid.prototype._tryPutWord = function (word) {
var cell, dirX, dirY, endX, endY, i, path, startX, startY, _i, _j, _len, _len1, _ref;
_ref = DIRECTIONS[this.words.length % DIRECTIONS.length], dirX = _ref[0], dirY = _ref[1];
if (dirX !== 0 && word.length > this.width || dirY !== 0 && word.length > this.height) {
return false;
}
startX = _.random((dirX === -1 ? word.length - 1 : 0), (dirX === 1 ? this.width - word.length : this.width - 1));
startY = _.random((dirY === -1 ? word.length - 1 : 0), (dirY === 1 ? this.height - word.length : this.height - 1));
endX = startX + dirX * (word.length - 1);
endY = startY + dirY * (word.length - 1);
path = this._getPath([startX, startY], [endX, endY]);
for (i = _i = 0, _len = path.length; _i < _len; i = ++_i) {
cell = path[i];
if (!cell.willFitLetter(word[i])) {
return false;
}
}
for (i = _j = 0, _len1 = path.length; _j < _len1; i = ++_j) {
cell = path[i];
cell.letter = word[i];
}
this.words.push(word);
return true;
};
LetterGrid.prototype._getPath = function (start, end) {
var cellList, diffX, diffY, endX, endY, stepX, stepY, x, y;
x = start[0], y = start[1];
endX = end[0], endY = end[1];
diffX = endX - x;
diffY = endY - y;
stepX = diffX === 0 ? 0 : diffX / Math.abs(diffX);
stepY = diffY === 0 ? 0 : diffY / Math.abs(diffY);
cellList = [];
while (x >= 0 && y >= 0 && x < this.width && y < this.height) {
cellList.push(this.cells[y][x]);
if (x === endX && y === endY) {
return cellList;
}
x += stepX;
y += stepY;
}
return null;
};
LetterGrid.prototype.getPathFromCells = function (start, end) {
return this._getPath([start.x, start.y], [end.x, end.y]);
};
return LetterGrid;
})();
angular.module('wordsearchApp', []).controller('WordsearchCtrl', [
'$scope', function ($scope) {
if (use_global_options == "yes") {
$scope.levels = [
{
width: 8,
height: 8
}, {
width: 9,
height: 9
}, {
width: 10,
height: 10
}, {
width: 11,
height: 11
}, {
width: 12,
height: 12
}, {
width: 13,
height: 13
}, {
width: 14,
height: 14
}, {
width: 15,
height: 15
}, {
width: 16,
height: 16
}, {
width: 17,
height: 17
}, {
width: 18,
height: 18
}, {
width: 19,
height: 19
}, {
width: 20,
height: 20
}
];
} else if (level_difficulty_val != "" || level_difficulty_val != null) { // set the difficulty level
$scope.levels = [
{
width: level_difficulty_val,
height: level_difficulty_val
}
];
}
$scope.loadLevel = function (level) {
$scope.currentLevel = level;
$scope.grid = new LetterGrid(level.width, level.height);
$scope.words = $scope.grid.words;
$scope.testwords = defaultWordlist;
$scope.foundWords = [];
$scope.enableInput = true;
$scope.colorIndex = 1;
return $scope.colorClass = 'wha-color1';
};
$scope.loadLevel($scope.levels[0]);
$scope.cellClicked = function (cell) {
var path;
if (!$scope.enableInput) {
return;
}
if ($scope.selectedCell == null) {
cell.isSelected = true;
return $scope.selectedCell = cell;
} else {
path = $scope.grid.getPathFromCells($scope.selectedCell, cell);
$scope.selectedCell.isSelected = false;
$scope.selectedCell = null;
$scope._submitPath(path);
return $scope.clearPath();
}
};
$scope.updatePath = function (cell) {
var path, _i, _len, _ref, _ref2, _results;
if ($scope.selectedCell != null) {
path = $scope.grid.getPathFromCells($scope.selectedCell, cell);
if (path != null) {
_results = [];
for (_i = 0, _len = path.length; _i < _len; _i++) {
cell = path[_i];
cell.onPath = true;
_ref = wordFromPath(path);
_ref2 = wordFromPath(path).split("").reverse().join("");
if (__indexOf.call($scope.words, _ref) >= 0 || __indexOf.call($scope.words, _ref2) >= 0) {
_results.push(cell.onCorrectPath = true);
} else {
_results.push(void 0);
}
}
return _results;
}
}
};
$scope.clearPath = function () {
var cell, row, _i, _len, _ref, _results;
_ref = $scope.grid.cells;
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
row = _ref[_i];
_results.push((function () {
var _j, _len1, _results1;
_results1 = [];
for (_j = 0, _len1 = row.length; _j < _len1; _j++) {
cell = row[_j];
cell.onPath = false;
_results1.push(cell.onCorrectPath = false);
}
return _results1;
})());
}
return _results;
};
$scope._submitPath = function (path) {
var alertCongrats, cell, foundWord, foundWord2, mywords, _i, _len;
foundWord = wordFromPath(path);
foundWord2 = wordFromPath(path);
mywords = defaultWordlist;
if (__indexOf.call($scope.words, foundWord) >= 0 || __indexOf.call($scope.words, foundWord2.split("").reverse().join("")) >= 0) {
if (__indexOf.call($scope.words, foundWord2.split("").reverse().join("")) >= 0) {
foundWord = foundWord.split("").reverse().join("")
}
$scope.words.splice($scope.words.indexOf(foundWord), 1);
// $scope.foundWords.unshift({
//
// word: qq[0],
//
// colorClass: $scope.colorClass
//
// });
// ([\s-'])
for (var j = 0; j < mywords.length; j++) {
if (mywords[j].replace(/([\s-'])/g, '') == foundWord) {
jQuery(".wha-word-list button").each(function () {
var button_text = jQuery(this).text().replace(/([\s-'])/g, '');
if (foundWord == button_text) {
jQuery(this).addClass('wha-solved ' + $scope.colorClass + '');
}
});
}
}
for (_i = 0, _len = path.length; _i < _len; _i++) {
cell = path[_i];
cell.solvedColorClasses.push($scope.colorClass);
}
$scope.nextColor();
if ($scope.words.length === 0) {
$scope.enableInput = false;
alertCongrats = function () {
var event = new CustomEvent("wordsearch-finish", { "detail": $scope.foundWords.length });
document.dispatchEvent(event);
jQuery('.wha-wordsearch-app .wha-modal-wordsearch .wha-scope-foundWords').text($scope.foundWords.length);
jQuery('.wha-wordsearch-app .wha-modal-wordsearch').first().addClass('opened');
};
return setTimeout(alertCongrats, 400);
}
}
};
/* hide words if they don't fit in to grid */
var gridwords = $scope.words
jQuery(document).ready(function ($) {
jQuery(".wha-word-list button").hide();
for (var j = 0; j < gridwords.length; j++) {
jQuery(".wha-word-list button").each(function () {
var word_item = jQuery(this).text().replace(/([\s-'])/g, '');
if (word_item == gridwords[j]) {
if (jQuery(this).text().replace(/([\s-'])/g, '').match(word_item)) {
jQuery(this).show();
}
}
});
}
jQuery("#wha-level-select-dropdown li").click(function () {
jQuery(".wha-word-list button").hide();
var gridwords = $scope.words;
for (var j = 0; j < gridwords.length; j++) {
jQuery(".wha-word-list button").each(function () {
var word_item = jQuery(this).text().replace(/([\s-'])/g, '');
if (word_item == gridwords[j]) {
if (jQuery(this).text().replace(/([\s-'])/g, '').match(word_item)) {
jQuery(this).show();
}
}
});
}
jQuery('.wha-word-list button').removeClass('wha-solved');
});
});
return $scope.nextColor = function () {
$scope.colorIndex = $scope.colorIndex % NUM_COLORS + 1;
return $scope.colorClass = "wha-color" + $scope.colorIndex;
};
}
]);
}).call(this);
}).call(this, typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
}, {"./wordlist": 2}], 2: [function (require, module, exports) {
(function () {
var words = [];
jQuery.each(jQuery('.wha-wordsearch-word'), function (i, val) {
words.push(jQuery(this).val());
});
if (jQuery('#whaws_alphabet_option').length > 0) {
var whaws_alphabet_option = jQuery('#whaws_alphabet_option').val();
if (whaws_alphabet_option.trim().length == 0 && words.length == 0) {
module.exports = ['ARCHAEOPTERYX', 'CARBONIFEROUS', 'TYRANNOSAURUS', 'BRACHIOSAURUS', 'ICHTHYOSAURUS', 'BRONTOSAURUS', 'PLESIOSAURUS', 'ANKYLOSAURUS', 'STEGOSAURUS', 'PLEISTOCENE', 'PTERODACTYL', 'ECHINODERM', 'EXTINCTION', 'CRETACEOUS', 'ALLOSAURUS', 'BAROSAURUS', 'ALLOSAURUS', 'PALAEOCENE', 'CEPHALOPOD', 'CRUSTACEAN', 'BELEMNITE', 'CROCODILE', 'OLIGOCENE', 'TRILOBITE', 'VERTEBRAE', 'CARNIVORE', 'IGUANODON', 'DINOSAUR', 'GASTONIA', 'DRACONYX', 'AMMONITE', 'TENTACLE', 'JURASSIC', 'TRIASSIC', 'DEINODON', 'CIONODON', 'CERATOPS', 'ASTEROID', 'BARYONYX', 'MOLLUSCS', 'MESOZOIC', 'RAPTOREX', 'HOLOCENE', 'OZRAPTOR', 'STARFISH', 'KILESKUS', 'ASTRODON', 'NAUTILUS', 'SAUROPOD', 'ECHINOID', 'FLIPPER', 'REPTILE', 'PERMIAN', 'MIOCENE', 'CALCITE', 'AETONYX', 'CRINOID', 'CRYSTAL', 'EXTINCT', 'SPECIES', 'BIVALVE', 'PACIFIC', 'CHISEL', 'FOSSIL', 'PERIOD', 'HAMMER', 'ISLAND', 'MAMMAL', 'EOCENE', 'INSECT', 'LIZARD', 'PEBBLE', 'PLANT', 'CORAL', 'STONE', 'AMBER', 'TOOTH', 'CLIFF', 'SHELL', 'OCEAN', 'SQUID', 'COAST', 'SHARK', 'SKULL', 'SPINE', 'CLAW', 'CAVE', 'TIDE', 'BIRD', 'LEAF', 'FISH', 'BONE', 'ROCK', 'PREY', 'COAL', 'FERN', 'LEAF', 'TAIL'];
}
else {
module.exports = words;
}
}
}).call(this);
}, {}]
}, {}, [1]);
jQuery(document).ready(function ($) {
// ul li dopdown (select level)
function DropDown(el) {
this.dd = el;
this.placeholder = this.dd.children('span');
this.opts = this.dd.find('ul.wha-drop li');
this.val = '';
this.index = -1;
this.initEvents();
}
DropDown.prototype = {
initEvents: function () {
var obj = this;
obj.dd.on('click', function (e) {
e.preventDefault();
e.stopPropagation();
$(this).toggleClass('active');
});
obj.opts.on('click', function () {
var opt = $(this);
obj.val = opt.text();
obj.index = opt.index();
obj.placeholder.text(obj.val);
opt.siblings().removeClass('selected');
opt.filter(':contains("' + obj.val + '")').addClass('selected');
}).change();
},
getValue: function () {
return this.val;
},
getIndex: function () {
return this.index;
}
};
$(function () {
// create new variable for each menu
var dd1 = new DropDown($('#noble-gases'));
$(document).click(function () {
// close menu on document click
$('.wha-wrap-drop').removeClass('active');
});
});
// refresh game field after close window 'Congratulation'
$('.wha-closemodale').click(function (e) {
e.preventDefault();
$('.wha-modale').removeClass('opened');
if (jQuery("#wha-level-select-dropdown li").hasClass('selected')) {
setTimeout(function () {
$("#wha-level-select-dropdown li.selected a").trigger("click");
$(".wha-wrap-drop").removeClass("active");
}, 100);
} else {
setTimeout(function () {
$("#wha-level-select-dropdown li:first-child a").trigger("click");
$(".wha-wrap-drop").removeClass("active");
}, 100);
}
jQuery('.wha-word-list button').removeClass('wha-solved wha-color')
});
//disable search on page (Ctrl+F)
window.addEventListener("keydown", function (e) {
if (e.keyCode === 114 || (e.ctrlKey && e.keyCode === 70)) {
e.preventDefault();
}
})
var difficulty = optional_wordsearch_vars.whaws_level_difficulty;
var global_diff = jQuery('#wha-level-select-dropdown li:first-child a').val().replace(/x([0-9])/g, '');
jQuery(".wha-word-list button").each(function () {
var button_text = jQuery(this).text().replace(/\s/g, '').length;
if (button_text > difficulty || button_text > global_diff) {
jQuery(this).hide();
}
});
var grid_height = jQuery('.wha-ws-grid').height();
jQuery('.wha-word-list').css('max-height', grid_height + 80);
jQuery("#wha-level-select-dropdown li").click(function () {
var grid_height = jQuery('.wha-ws-grid').height();
jQuery('.wha-word-list').css('max-height', grid_height + 80);
})
var wha_ws_grid_width = jQuery('.wha-ws-grid').width();
jQuery('.wha-dir-bottom .wha-word-list').css('max-width', wha_ws_grid_width+'px');
jQuery('.wha-dir-top .wha-word-list').css('max-width', wha_ws_grid_width+'px');
//jQuery('.wha-wordsearch-row').removeClass('wha-hidden');
});