﻿// English

// Change an element's visibility
function switchVisibility(hideLayerName, showLayerName) {	
	document.getElementById(hideLayerName).style.visibility = "hidden";
	document.getElementById(hideLayerName).style.display = "none";

	document.getElementById(showLayerName).style.visibility = "visible";
	document.getElementById(showLayerName).style.display = "block";
}




function toggleVisibility(layerName, textBox) {	
	var layer = document.getElementById(layerName);
	
	if (layer.style.visibility == "hidden") {
		layer.style.visibility = "visible";
		layer.style.display = "block";
		layer.style.height = '';

		alterScoreTextBoxStyle(textBox);
    } else {
		layer.style.visibility = "hidden";
		layer.style.display == "none";
		layer.style.height = 0;
    }

}




function validateLength ( source, args) {
	args.IsValid = args.Value.length >= 4 && args.Value.length <= 25;
}




function externalLinks() {
	if (!document.getElementsByTagName) return;
	var anchors = document.getElementsByTagName("a");

	for (var i=0; i<anchors.length; i++) {
		var anchor = anchors[i];
		if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external") {
			anchor.target = "_blank";
			anchor.className += " External";
		}
	}
}




if (window.addEventListener) {
	window.addEventListener('load', externalLinks, false);
}
else { 
	window.attachEvent("onload", externalLinks);
}




function alterScoreTextBoxStyle(textBox) {
	var val = parseInt(textBox.value);
	if (val == NaN)
		val = 0;

	var cssClass = "Text TextScore ";
	
	if (val <= ScoreVeryBad)
		cssClass += "RVeryLow";
	else if (val <= ScoreBad)
		cssClass += "RLow";
	else if (val <= ScoreMediocre)
		cssClass += "RMedium";
	else if (val <= ScoreGood)
		cssClass += "RHigh";
	else if (val <= ScoreVeryGood)
		cssClass += "RVeryHigh";
	else 
		cssClass += "RTop";
		
		textBox.className = cssClass;
}


function doHoverAlt(item, activate, altName) {
	var object = document.getElementById(item);

	if (activate) {
		object.className = "Sorter" + altName + "Hover";
	} else {
		object.className = "Sorter" + altName;
	}
}


function doHover(item, activate) {
	doHoverAlt(item, activate, "");
}



function ComputeSimilarity(s, t) {

    s = s.toUpperCase();
    t = t.toUpperCase();

    var largestLength = s.length > t.length ? s.length : t.length;
    var n = s.length;
    var m = t.length;
    var d = new Array(n + 1);

    for (i = 0; i < d.length; ++i)
        d[i] = new Array(m + 1);


    // Step 1
    if (n == 0)
        return 0;

    if (m == 0)
        return 0;

    // Step 2
    for (var i = 0; i <= n; d[i][0] = i++) { }
    for (var j = 0; j <= m; d[0][j] = j++) { }

    // Step 3
    for (var i = 1; i <= n; i++) {
        //Step 4
        for (var j = 1; j <= m; j++) {
            // Step 5
            var cost = (t[j - 1] == s[i - 1]) ? 0 : 1;

            // Step 6
            d[i][j] = Math.min(
				Math.min(d[i - 1][j] + 1, d[i][j - 1] + 1),
				d[i - 1][j - 1] + cost);
        }
    }

    // Step 7
    return 1 - parseFloat(d[n][m] / largestLength);
}
