addEvent(window, 'DOMContentLoaded', init);

function init()
{
	setHidden('hidden_info');
}

//--[STRING: trim white space from either end of a string.]---------------------|
function strtrim()
{
	return this.replace(/^\s+/,'').replace(/\s+$/,'');
}

String.prototype.trim = strtrim;

//--[SETUP: scan and amend document <a> tag link targets.]----------------------|
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"; 
		}
	}
}

//--[DISPLAY: by style element control. ]--------------------------------------|
function set_display( elementID, displayState )
{
	// set CSS display value.
	var displayType = (displayState == 1) ? "block" : "none";
	// Set the page element display mode value.
	document.getElementById(elementID).style.display = displayType;
	// Set cookie conditions.
	if (displayState) 
	{
		create_cookie(elementID,"1",1);
	} else {
		erase_cookie(elementID);
	}
	
	if (elementID == "link_creator")
	{
		var pageForm = document.forms['component_list'];
		if (document.all)
		{
			var capturedText = document.selection.createRange().text;
		} else {
			var capturedText = window.getSelection();
		}
		pageForm.elements['link_creator_text'].value = capturedText;
	}
}

function check4_display(elementID)
{
	var displayStatus = read_cookie(elementID);
	set_display(elementID, displayStatus);
}

//--[CREATE: XHTML code for a text hyperlink.]---------------------------------|
function create_link_code( formID, codeField, promptID )
{
	// Set document object ID for link creator form.
	var pageForm = document.forms[formID];
	
	// First clear HTML code box.
	pageForm.elements[codeField].value = "";
	
	// Read in values for link text, link url and link title.
	var linkText = pageForm.elements['link_creator_text'].value.trim();
	var linkURL = pageForm.elements['link_creator_url'].value.trim();
	var linkTitle = pageForm.elements['link_creator_hover'].value.trim();
	
	var linkReady = linkText != "";
	var urlReady = linkURL != "" && linkURL != "http://";
	var titleReady = linkTitle != "" && linkTitle != "To:";
	var formReady = linkReady && urlReady && titleReady;
	
	if (formReady)
	{
		// Set string value for link window option.
		if (pageForm.elements['link_creator_win'][1].checked)
		{
			var linkWindow = "rel='external'";
		} else {
			linkWindow = "";
		}

		// Compile XHTML code for link.
		var linkCode = "<a href='" + linkURL + "' title='" + linkTitle + "' " + linkWindow + ">" + linkText + "</a>";

		// Write new link code back to link creator form.
		pageForm.elements[codeField].value = linkCode;
		
		// Setup user message.
		var userMessage = "The hyperlink code has been created in the blue box below.  Just 'Copy &amp; Paste' the complete code into your paragraph copy.";
		
		// Highlight the new code.
		pageForm.elements[codeField].select();
		
	} else {
		var userMessage = "All options must be set before a link can be created.";
	}
	
		// Notify user.
		document.getElementById(promptID).innerHTML = userMessage;
}


function urlEncode(str){
    str=escape(str);
    str=str.replace(new RegExp('\+','g'),'%2B');
    return str.replace(new RegExp('%20','g'),'+');
}

//--[CONTROL: for uploading files. ]---------------------------------------------------|
function upload_control( formID, fieldName, promptID, pageState, nextPage )
{
	var pageForm = document.forms[formID];
	if (fieldName) var fileName = pageForm.elements[fieldName].value;

	if (fileName != "" && fieldName != "")
	{
		document.getElementById(promptID).innerHTML = "<p>Uploading new media. Please wait...</p>";
	};
	pageForm.elements['pageState'].value = pageState; // set component form page state value.
	
	if (nextPage)
	{
		var newPage = pageForm.elements['page'].value;
		switch (nextPage)
		{
			case 1 : newPage++;
				break;
			case -1 : newPage--;
				break;
		}
		pageForm.elements['page'].value = newPage;
	}
	
	pageForm.submit(); // submit component form.
};

//--[TIMEOUT: control for CMS. ]-------------------------------------------------------|
function set_timeout()
{
	reset_action_time();
	loginForm = document.forms['cms_login_logout'];
	check_timeout(loginForm);
}

//--[GLOBAL: not used.] 
var timeoutFlag = false;

//--[CHECK: inactivity timeout for website CMS.]---------------------------------------|
function check_timeout( loginForm )
{
	var currentTime = new Date().getTime(); // read current system time.
	var startTime = loginForm.elements['actionTime'].value; // get last activitiy time from CMS status form.
	 // if elapsed time since last activity is greater than timeout period.
	if (Math.round((currentTime - startTime ) / 1000) > (60 * 60)) // currently set to 60 minutes.
	{
		//var pageURL = window.location;
		//window.location = pageURL + "?timeout=true&save=true";
		componentForm = document.forms['component_list']; // set ID for component list form.
		loginForm = document.forms['cms_login_logout']; // set ID for CMS status form.
		loginForm.elements['timeout'].value = 1; // set timeout flag.
		
		if (componentForm.elements['pageState']) // if currently in edit mode.
		{
				componentForm.elements['pageState'].value = 2; // force a save and return state.
				componentForm.submit();
		}
		
		loginForm.submit(); // then submit CMS control form.
	} else {
		setTimeout("check_timeout(loginForm)", 60 * 1000); // Check every 1 minute.
	}
	//alert(document.forms['cms_login_logout'].elements['actionMode'].value);
}

//--[RESET: inactivity timeout for CMS, actioned from onload, mouse and key events.]---|
function reset_action_time() 
{
	var currentTime = new Date().getTime(); //  read system time.
	var loginForm = document.forms['cms_login_logout']; // set CMS status form ID.
	loginForm.elements['actionTime'].value = currentTime; // set activity start time value in CMS status form.
}

//--[SETUP: email address from passed index value. ]-----------------------------------|
function mail_setup( indexValue, subjectText ) {

	var mailCode ="109,97,105,108,116,111,58,"; // setup code for address.
	var mailSubj = "?subject=" + subjectText; // setup subject for address as string.
	var mailBody = "&body=";
	
	mailCode += mail_contact(indexValue); // get required email code.
	var mailSource = ""; // setup source variable as string.
	var decode = mailCode.split(","); // setup array from encoded address.
	for (var e = 0; e < decode.length; e++)
	{
		mailSource += String.fromCharCode(decode[e]); // decode address as string.
	}
	document.location = mailSource + mailSubj + mailBody; // Write email call.

} // end: mail_setup()


//--[SET: page style sheet from passed style sheet title. ]----------------------------|
var styleState = true; // set default for global style flag.

function toggleStyle() {
   var i, linkTag;
   
   // for every link tag in the document...
   for(i=0; linkTag = document.getElementsByTagName("link")[i]; i++) {
     	
     	if (linkTag.getAttribute("type") == "text/css") { // if a css link...
     	
     		linkTag.disabled = true; // set all external style links to disabled.
    	
    		// reset 'simple' style link to enabled as required.
    		if (linkTag.getAttribute("title").indexOf("simple style") != -1 && styleState == true) { linkTag.disabled = false; }
    		
    		// reset standard style link to enabled as required.
    		if (linkTag.getAttribute("title").indexOf("standard style") != -1 && styleState == false) { linkTag.disabled = false; }
   		}
   	}   	
    styleState = ! styleState; // toggle global style flag.
} // end function toggleStyle()


//--[OPEN: new window with passed item. ]----------------------------------------------|
function new_window( htmlSource, content ) {
	//alert(htmlSource + " " + content);

	var addQ = (content) ? "?content=" + content : "";
	window.open(htmlSource + addQ, "", "status=yes, scrollbars=yes, toolbar=yes, resizable=yes, width=500, height=500");
}


//--[CLOSE: window called from hyperlink. ]--------------------------------------------|
function close_window() {
	window.close();
}	//end function closeWindow()


//--[BUTTON CONTROL: enable / disable button on command. ]-----------------------------|
function set_button_state( formID, buttonID, buttonIndex, buttonState )
{
	var pageForm = document.forms[formID];
	var buttonChecked = pageForm.elements[buttonID][buttonIndex].checked;

	if (buttonChecked && buttonState != 0)
	{
		pageForm.elements[buttonID][buttonIndex].checked = false;
		pageForm.elements[buttonID][buttonIndex - 1].checked = true;
	}
	
	pageForm.elements[buttonID][buttonIndex].disabled = buttonState;

}

//--[COOKIES ]-------------------------------------------------------------------------|

function create_cookie( name, value, days)
{
	if (days)
	{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	} else {
		var expires = "";
	}
	document.cookie = name+"="+value+expires+"; path=/";
	//document.cookie = ck;
}

function read_cookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function erase_cookie(name)
{
	create_cookie(name,"",-1);
}

//------------------------------------------------[ set: DISPLAY OF (element, state) ]
var unhiddenElement;
function setDisplayOf(elementID, state)
{
	if (state && unhiddenElement)
	{
		unhiddenElement.hide();
	}
	
	if ($(elementID))
	{
		var element = $(elementID);
		if (state)
		{ 
			element.show();
			element.scrollTo();
		} else {
			new Effect.BlindUp(element, { duration: 1, afterFinish: function(){ window.location.hash = 'top'; } });
		}
		unhiddenElement = element;
	}
}

function setHidden(className)
{
	var hiddenA = $$('a.hidden_a');
	hiddenA.each( function(elementA)
	{
		var parent = elementA.up('.' + className);
		parent.id = elementA.name;
	});
	var hidden = $$('div.' + className).invoke('hide');
}
