<!--

// Scrabble.js - by Kate Spanos
// September 2006
// Updated January 2008 (clear solution div when the word is erased from input field)
// Updated December 2008 (added features, updated UI and design)
// thekatespanos.com

var lang = 'en';
var lettervalues = new Array();

Array.prototype.indexOf = function(value){
  var i = 0;
  while(i < this.length){
    if(this[i] == value) return i;
    i++;
  }
  return -1;
}

function setNth(v) {
if (v == 1) { $('#nth').html(' <sup>st</sup> letter'); }
else if (v == 2) { $('#nth').html(' <sup>nd</sup> letter'); }
else if (v == 3) { $('#nth').html(' <sup>rd</sup> letter'); }
else { $('#nth').html(' <sup>th</sup> letter'); }
}

Array.prototype.inArray = function (value)
{
var i;
for (i=0; i < this.length; i++) {
	if (this[i] == value) {	return true; }
}
return false;
}

function toggleDouble(val) {
	if (lettervalues[val] == 2) { lettervalues[val] = 1; }
	else { lettervalues[val] = 2; }
}
function toggleTriple(val) {
	if (lettervalues[val] == 3) { lettervalues[val] = 1; }
	else { lettervalues[val] = 3; }
}

function scrabblify() {
	if ($('#lang').val()) { lang = $('#lang').val(); }
	else { lang = 'en'; }

	var tiles = eval(lang+'_tiles');
	var values = eval(lang+'_values');

	var word = $('#word').val();
	word = word.toUpperCase();
	var w = new Array();
	w = word.split(''); //have to convert string to an array to use [] indexing in IE
	//var cardinal = $('#cardinal').val()-1; //this was used for old cardinal lettervalue

	var calculated = 0;

	if (lang == 'es') {
		var tiled_word = new Array();
		var m = -1; //use this variable to track where we are in the new tiled_word array (while n tracks where we are in the original word w array)
		for (var n = 0; n < w.length; n++) {
			var letter = w[n];
			m++;
			if (m > 0) { prev_letter = tiled_word[m-1]; }
			if ( (m > 0) && ( letter == 'R' || letter == 'L') ) {
				if (letter == prev_letter) { 
					letter = prev_letter+letter;
					tiled_word.pop();
					tiled_word.push(letter);
					m--;
				}
				else { tiled_word.push(letter); }
			}
			else { tiled_word.push(letter); }
			
		}
		w = tiled_word;
	}
	var msg = "<p>";
	for (var t = 0; t < w.length; t++) {
		var val1,ind1;
		if (!tiles.inArray(w[t])) { w[t] = '&empty;'; val1 = '';}
		else {
			ind1 = tiles.indexOf(w[t]);
			val1 = values[ind1];
		}
		
		if (lettervalues[t] == 2) {
			msg += '<div style="display:block;float:left;height:80px;"><span class="tile doubleLetterTile">';
		}
		else if (lettervalues[t] == 3) {
			msg += '<div style="display:block;float:left;height:80px;"><span class="tile tripleLetterTile">';
		}
		else {
			msg += '<div style="display:block;float:left;height:80px;"><span class="tile">';
		}
		msg += w[t] + '<sub>' + val1 + '</sub></span><br /><span style="text-align:center;clear:both;margin-left:13px;">';
		msg += '<span class="doubleLetter" title="double letter score" onclick="toggleDouble('+t+');scrabblify();">x2</span>';		
		msg += '<span class="tripleLetter" title="triple letter score" onclick="toggleTriple('+t+');scrabblify();">x3</span></span></div> ';
		extra = ' ';
	}
	msg += "</p><p style='clear:both;'><br />= "; 

	var len = w.length;
	var valid_len = len;
	var sum = 0;

	for (var i = 0; i < len; i++) {
		var letter = w[i];
		if (!tiles.inArray(letter)) { letter = ' '; }
		if ( (letter == ' ') ) { valid_len-=1; }
		
		var ind = tiles.indexOf(letter);
		var val = values[ind];
		
		/*if (cardinal == i) { //this was used for old cardinal lettervalue
			var lettervalue = $('#lettervalue').val();
			val *= lettervalue;
		}*/
		if (!lettervalues[i]) { lettervalues[i] = 1; }
		val *= lettervalues[i];
		
		if ( (i+1) == len) { msg += val + "<br />"; }
		else { msg += val + " + "; }
		sum += val;
		calculated = 1; //calculated at least one letter
	}

	msg += " = ";

	var doub = document.forms['scrabbleform'].elements['double'].checked;
	var trip = document.forms['scrabbleform'].elements['triple'].checked;
	if (doub) {
		var xdoub = $('#x-double').val();
		var orig_sum = sum;
		for (i=0;i<xdoub;i++) {
			sum *= 2;
		}
		if (xdoub == 1) {  msg += orig_sum + " x 2 (double word score applied once)<br />= "; }
		else { msg += orig_sum + " x 2<sup>" + xdoub + "</sup> (double word score applied " + (xdoub) + " times)<br />= "; }
	}
	else if (trip) {
		var xtrip = $('#x-triple').val();
		var orig_sum = sum;
		for (i=0;i<xtrip;i++) {
			sum *= 3;
		}
		if (xtrip == 1) { msg += orig_sum + " x 3 (triple word score applied once)<br />= "; }
		else { msg += orig_sum + " x 3<sup>" + xtrip + "</sup> (triple word score applied " + (xtrip) + " times)<br />= "; }
	}

	var bonus = document.forms['scrabbleform'].elements['bonus'].checked;
	if (bonus && (valid_len > 6)) { msg += sum + " + 50  point bonus<br />= "; sum += 50; }

	msg += "<span class='solution'>" + sum + "</span></p>";


	if (calculated) { $('#solution').html(msg); }
	else { $('#solution').html(''); }

}

function clearForm(formIdent) 
{ 
  var form, elements, i, elm; 
  form = document.getElementById 
    ? document.getElementById(formIdent) 
    : document.forms[formIdent]; 

	if (document.getElementsByTagName)
	{
		elements = document.getElementsByTagName('input');
		for( i=0, elm; elm=elements.item(i++); )
		{
			if (elm.getAttribute('type') == "text")
			{
				elm.value = '';
			}
		}
	}

	// Actually looking through more elements here
	// but the result is the same.
	else
	{
		elements = form.elements;
		for( i=0, elm; elm=elements[i++]; )
		{
			if (elm.type == "text")
			{
				elm.value ='';
			}
		}
	}

	//$('#lettervalue').val(2); //this was used for old cardinal lettervalue
	lettervalues = [];
	document.forms['scrabbleform'].elements['double'].checked = false;
	document.forms['scrabbleform'].elements['triple'].checked = false;
	$('#x-double').val(1);
	$('#x-triple').val(1);
	$('#x-double-txt').hide();
	$('#x-triple-txt').hide();
	$('#solution').html('');

	$('#word').focus();
}

function show(div) {
	document.getElementById(div).style.display = 'block';
	$('#word').focus();
}
function hide(div) {
	document.getElementById(div).style.display = 'none';
	$('#word').focus();
}
function toggle(div) {
	if ( $(div).style.display == 'block' ) hide(div);
	else show(div);
	$('#word').focus();
}
-->