// +----------------------------------------------------------------------+
// | This file is part of the SiteMate package.                           |
// +----------------------------------------------------------------------+
// | Common Jabbascripts
// +----------------------------------------------------------------------+
//

// Toggles the visiblity of an element
// usage: <a href="#" onclick="toggleElement('example');">toggle</a><p id="example">Kon'nichi wa!</p>
function toggleElement(elementId) {
    if (document.getElementById(elementId).style.display == 'none') {
        document.getElementById(elementId).style.display = 'inline';
    } else {
        document.getElementById(elementId).style.display = 'none'
    }
}

// Shows an element only if it is hidden
// usage: <a href="#" onclick="showElement('example');">show</a><p id="example" style="display:none;">Kon'nichi wa!</p>
function showElement(elementId) {
	if (document.getElementById(elementId).style.display == 'none') {
		document.getElementById(elementId).style.display = 'block';
	}
}

// Hides an element only if it is visible
// usage: <a href="#" onclick="hideElement('example');">hide</a><p id="example">Kon'nichi wa!</p>
function hideElement(elementId) {
	if (document.getElementById(elementId).style.display == 'block') {
		document.getElementById(elementId).style.display = 'none';
	}
}

// Disables any element that can be disabled
// usage: <a href="#" onclick="disableElement('example');">show</a><input type="text" id="example" value="Kon'nichi wa!" />
function disableElement(elementID) {
	document.getElementById(elementID).disabled = true;
}

// Lifted from Basecamp, by 37Signals <http://37signals.com>
function getSpansByStyleClass(className) {
   var all = document.all ? document.all : document.getElementsByTagName('SPAN');
   var elements = new Array();

   for (var i = 0; i < all.length; i++) {
   	if (all[i].className == className) {
      	elements[elements.length] = all[i];
			}
	}
   return elements;
}
function getDivsByStyleClass(className) {
   var all = document.all ? document.all : document.getElementsByTagName('DIV');
   var elements = new Array();

   for (var i = 0; i < all.length; i++) {
   	if (all[i].className == className) {
      	elements[elements.length] = all[i];
			}
	}
   return elements;
} 
function toggleMovementControls() {
    controls = getSpansByStyleClass('movement_control');
    for (i = 0; i < controls.length; i++) {
        if (controls[i].style.display == 'none') {
            controls[i].style.display = 'inline';
        } else {
            controls[i].style.display = 'none';
        }
    }
}

// Toggles elements with a class of inline_help
function toggleInlineHelp() {
    controls = getDivsByStyleClass('inline_help');
    for (i = 0; i < controls.length; i++) {
        if (controls[i].style.display == 'none') {
            controls[i].style.display = 'block';
        } else {
            controls[i].style.display = 'none';
        }
    }
}

// Opens external links in a new window
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";
 }
}
window.onload = externalLinks;


