﻿/**
 * initialise global variables
 */
var currentPage = "Home";
var parentMenuPage = "";
var currentEnvironment = location.host;
var fullPathNameArray = location.pathname.split(/[\/\\]/);

var maxWidth = 1440;
var minWidth = 1008;


/**
 * page onload functions
 */
function pageInitialisation(windowEvent) {
	var ckeditorAdjust = 0;
	getCurrentPage();
	hideEmptyContentBlocks();
//	simpleSearch();

/**
 * initialise any ckeditor areas present on page and adjust page height accordingly
 */
	if (parent == self) {
		var ckeditorTextareaArray = new Array();
		textareaArray = document.getElementsByTagName('textarea');
		for (i = 0, j=0; i < textareaArray.length; i++) {
			if (textareaArray[i].className == 'ckeditorTextarea') {
				ckeditorTextareaArray[j] = document.getElementById(textareaArray[i].id);
				j++;
			}
		}
		if (ckeditorTextareaArray.length > 0) {
			CKFinder.setupCKEditor( null, 'ckfinder/' );
			for (var i = 0; i < ckeditorTextareaArray.length; i++) {
/*
				if (ckeditorTextareaArray[i].id == 'short_description') {
					setTimeout(function(){CKEDITOR.replace( 'short_description',
					{
						customConfig : '../javascript/ckeditorConfigBasic.js',
					});},500);
				}
				else {
					CKEDITOR.replace( ckeditorTextareaArray[i].id,
					{
						customConfig : '../javascript/ckeditorConfig.js',
					});
				}
*/				
				CKEDITOR.replace( ckeditorTextareaArray[i].id,
					{
						customConfig : '../javascript/ckeditorConfig.js',
					});
			}
/**
 * suppress ckeditor inserting extra paragraphs, tabs and \r\n whitespace characters in an attempt format the html
 */			
			CKEDITOR.on('instanceReady', function(ev)
			{
				var dtd = CKEDITOR.dtd;
				for (var e in CKEDITOR.tools.extend({}, dtd.$nonBodyContent, dtd.$block, dtd.$listItem, dtd.$tableContent)) {
					ev.editor.dataProcessor.writer.setRules(e, {
						indent:           false,
						breakBeforeOpen:  false,
						breakAfterOpen:   false,
						breakBeforeClose: false,
						breakAfterClose:  false
					});
				}   
			});	
/**
 * adjust page height according to how many, if any, ckeditor instances there are on a page
 */			
			ckeditorAdjust = (i) * 275; // just works well enough for up to three instances in the major browsers
			updateItemLivePreview('', '');
		}
		if (windowEvent == 'onload') {
			setSideColumnHeight(ckeditorAdjust);
		}
		else if (windowEvent == 'onresize') {
			if (navigator.appName != "Microsoft Internet Explorer") {
				history.go(0);
			}
			else {
				setSideColumnHeight(ckeditorAdjust);
			}
			
		}
	}
}


/**
 * get current page info from passed parms - same info as server side uses
 */
function getCurrentPage() {
/**
 * set the font size relative to the resolution
 */
/*
	if (screen.height < 900) {
		screenRatio = (Math.round((screen.height / 900) * 100) / 100);
		document.getElementsByTagName('body')[0].style.fontSize = screenRatio + 'em';
	}
*/
	var fullPathNameArray = new Array();
	var srchArray = getSearchAsArray();
	var breadcrumbArray = new Array();
	if (srchArray['page']) {
		breadcrumbArray = srchArray['page'].split(/!/);
		parentMenuPage = breadcrumbArray[0];
		currentPage = breadcrumbArray[breadcrumbArray.length - 1];
	}


/**
 * set the parent Menu page to 'Active'
 */
	if (document.getElementById(parentMenuPage) && parentMenuPage != 'Admin') {
		document.getElementById(parentMenuPage).className += " " + document.getElementById(parentMenuPage).className + "_Active";
		document.getElementById(parentMenuPage).id = document.getElementById(parentMenuPage) + '_Active';
	}
}


/**
 * gets the search/GET parm and returns as array
 */
function getSearchAsArray() {
	var results = new Array();
	var input = unescape(location.search.substr(1));
	if (input) {
		var srchArray = input.split('&');
		var tempArray = new Array();
		for (var i = 0; i < srchArray.length; i++) {
			tempArray = srchArray[i].split('=');
			results[tempArray[0]] = tempArray[1];
		}
	}
	return results;
}


/**
 * determines and set the height of the side columns to cope with the shading
 */
function setSideColumnHeight(ckeditorAdjust) {
//	if (navigator.appName == "Microsoft Internet Explorer") {
		if (navigator.appVersion.indexOf("MSIE 6.0") != -1) {
			alert("Please upgrade your browser\nTo ANYTHING other than IE6.");
			return;
		}
//	}

	var subjectMenuColumnHeight = getElementYCoord(document.getElementById('subjectMenuColumnEnd')) - getElementYCoord(document.getElementById('subjectMenuColumn'));
	if (window.getComputedStyle) {
		var subjectMenuColumnPaddingAdjust = parseInt(window.getComputedStyle(document.getElementById('subjectMenuColumn'), null).paddingTop);
		var subjectMenuColumnPositionAdjust = parseInt(window.getComputedStyle(document.getElementById('subjectMenuColumn'), null).top);
	}
	else {
		var subjectMenuColumnPaddingAdjust = parseInt(document.getElementById('subjectMenuColumn').currentStyle.paddingTop);
		var subjectMenuColumnPositionAdjust = parseInt(document.getElementById('subjectMenuColumn').currentStyle.top);
	}
	subjectMenuColumnHeight = subjectMenuColumnHeight + subjectMenuColumnPaddingAdjust + subjectMenuColumnPositionAdjust;

	var shoppingCartColumnHeight = getElementYCoord(document.getElementById('shoppingCartColumnEnd'));
	if (window.getComputedStyle) {
		var shoppingCartColumnPaddingAdjust = parseInt(window.getComputedStyle(document.getElementById('shoppingCartColumn'), null).paddingTop);
		var shoppingCartColumnPositionAdjust = parseInt(window.getComputedStyle(document.getElementById('shoppingCartColumn'), null).top);
	}
	else {
		var shoppingCartColumnPaddingAdjust = parseInt(document.getElementById('shoppingCartColumn').currentStyle.paddingTop);
		var shoppingCartColumnPositionAdjust = parseInt(document.getElementById('shoppingCartColumn').currentStyle.top);
	}
	shoppingCartColumnHeight = shoppingCartColumnHeight + shoppingCartColumnPaddingAdjust;


	if (subjectMenuColumnHeight > shoppingCartColumnHeight) {
		minHeight = subjectMenuColumnHeight;
	}
	else {
		minHeight = shoppingCartColumnHeight;
	}

	if (navigator.appName == "Microsoft Internet Explorer") {
		var documentBodyWidth = document.body.clientWidth;
	}
	else {
		document.body.style.overflow = "hidden";
		var documentBodyWidth = document.body.clientWidth;
		document.body.style.overflow = "auto";	
	}
	var scrollbarWidth = documentBodyWidth - document.body.clientWidth;

	if (scrollbarWidth == 0) {
		scrollbarWidth = 16;
	}

	maxWidth = maxWidth - scrollbarWidth;
	minWidth = minWidth - scrollbarWidth;

	if (documentBodyWidth > maxWidth) {
		documentBodyWidth = maxWidth;
	}

	var mainContentHeight = document.getElementById('body').offsetHeight + ckeditorAdjust;
	if (mainContentHeight < minHeight) {
		mainContentHeight = minHeight;
	}

	document.getElementById('subjectMenuColumn').style.height = mainContentHeight - 16 + 'px';
	document.getElementById('shoppingCartColumn').style.height = mainContentHeight - 16 + 'px';

	var mainContentHeightAdjusted = document.getElementById('body').offsetHeight;

	if (document.getElementById('mainContentFooterBordered')) {
		document.getElementById('mainContentFooterBordered').style.position = 'relative';
		document.getElementById('mainContentFooterBordered').style.bottom = (mainContentHeightAdjusted - mainContentHeight) + 'px';
	}
	else if (document.getElementById('mainContentFooterBorderless')) {
		document.getElementById('mainContentFooterBorderless').style.position = 'relative';
		document.getElementById('mainContentFooterBorderless').style.bottom = (mainContentHeightAdjusted - mainContentHeight) + 'px';
	}

	document.getElementById('mainContent').style.height = (mainContentHeight - 42) + 'px';
	var footerPosition = getElementYCoord(document.getElementById('footer'));
	var subjectMenuColumnPosition = getElementYCoord(document.getElementById('subjectMenuColumn'));
	var shoppingCartColumnPosition = getElementYCoord(document.getElementById('shoppingCartColumn'));
	document.getElementById('footer').style.position = 'relative';

	document.getElementById('footer').style.bottom = (footerPosition - (subjectMenuColumnPosition + mainContentHeight - 20)) + 'px';
}


/**
 * gets the vertical offset of an element
 */
function getElementYCoord(element) {
	var y = 0;
	for (var e = element; e; e = e.offsetParent) {
		y += e.offsetTop;
	}

	for (e = element.parentNode; e && e != document.body; e = e.parentNode) {
		if (e.scrollTop) {
			y -= e.scrollTop;
		}
	}

	return y;
}


/**
 * gets the horizontal offset of an element
 */
function getElementXCoord(element) {
	var x = 0;
	for (var e = element; e; e = e.offsetParent) {
		x += e.offsetLeft;
	}

	for (e = element.parentNode; e && e != document.body; e = e.parentNode) {
		if (e.scrollTop) {
			x -= e.scrollTop;
		}
	}

	return x;
}


/**
 * hides any empty blocks which were created
 */
function hideEmptyContentBlocks() {
	if (document.getElementById('mainContentSingleColumnBordered') && document.getElementById('mainContentSingleColumnBordered').innerHTML.search(/\S/) == -1) {
		document.getElementById('mainContentSingleColumnBordered').style.display = "none";
	}
	if (document.getElementById('mainContentSingleColumnBorderless') && document.getElementById('mainContentSingleColumnBorderless').innerHTML.search(/\S/) == -1) {
		document.getElementById('mainContentSingleColumnBorderless').style.display = "none";
	}
	if (document.getElementById('mainContentLeftColumnBordered') && document.getElementById('mainContentLeftColumnBordered').innerHTML.search(/\S/) == -1) {
		document.getElementById('mainContentLeftColumnBordered').style.display = "none";
	}
	if (document.getElementById('mainContentLeftColumnBorderless') && document.getElementById('mainContentLeftColumnBorderless').innerHTML.search(/\S/) == -1) {
		document.getElementById('mainContentLeftColumnBorderless').style.display = "none";
	}
	if (document.getElementById('mainContentRightColumnBordered') && document.getElementById('mainContentRightColumnBordered').innerHTML.search(/\S/) == -1) {
		document.getElementById('mainContentRightColumnBordered').style.display = "none";
	}
	if (document.getElementById('mainContentRightColumnBorderless') && document.getElementById('mainContentRightColumnBorderless').innerHTML.search(/\S/) == -1) {
		document.getElementById('mainContentRightColumnBorderless').style.display = "none";
	}
	if (document.getElementById('mainContentFooterBordered') && document.getElementById('mainContentFooterBordered').innerHTML.search(/\S/) == -1) {
		document.getElementById('mainContentFooterBordered').style.display = "none";
	}
	if (document.getElementById('mainContentFooterBorderless') && document.getElementById('mainContentFooterBorderless').innerHTML.search(/\S/) == -1) {
		document.getElementById('mainContentFooterBorderless').style.display = "none";
	}
}

function disabledToggle(elementToDisable, elementToEnable) {
	document.getElementById(elementToDisable).disabled = true;
	document.getElementById(elementToDisable).value = '';
	elementToDisableType = elementToDisable.split('_');
	document.getElementById(elementToDisableType[0] + '_url_alt_text').value = '';
	document.getElementById(elementToDisableType[0] + '_format').value = '';
	document.getElementById(elementToDisableType[0] + '_size').value = '';	
	document.getElementById(elementToDisableType[0] + '_size_unit').value = '';	
	document.getElementById(elementToEnable).disabled = false;
	document.getElementById(elementToEnable).style.visibility = 'visible';
	document.getElementById(elementToDisable).style.visibility = 'hidden';		
}
	
function simpleSearch() {
	var srchArray = getSearchAsArray();
	if (srchArray['searchTerm']) {
		alert("You searched for '" + srchArray['searchTerm'] + "'");
	}
}

function advancedSearch() {
	alert("Display advanced search options");
}

function shoppingCart() {
	alert("Open Shopping Cart");
}

function updateItemLivePreview(fieldId, fieldValue) {
	if (document.getElementById("itemLiveView")) {
		var pageContent = document.getElementById("itemLiveView").contentDocument;
		switch (fieldId) {
			case "title":
				pageContent.getElementById("headerTabText").innerHTML = fieldValue;
				break;
			case "subtitle":
				pageContent.getElementById("headerTabSubText").innerHTML = fieldValue;
				break;
			default:
				break;
		}
	} else {
		var pageContent = document;
	}
	

	var subjectMenuColumnHeight = getElementYCoord(pageContent.getElementById('subjectMenuColumnEnd')) - getElementYCoord(pageContent.getElementById('subjectMenuColumn'));
	if (window.getComputedStyle) {
		var subjectMenuColumnPaddingAdjust = parseInt(window.getComputedStyle(pageContent.getElementById('subjectMenuColumn'), null).paddingTop);
		var subjectMenuColumnPositionAdjust = parseInt(window.getComputedStyle(pageContent.getElementById('subjectMenuColumn'), null).top);
	}
	else {
		var subjectMenuColumnPaddingAdjust = parseInt(pageContent.getElementById('subjectMenuColumn').currentStyle.paddingTop);
		var subjectMenuColumnPositionAdjust = parseInt(pageContent.getElementById('subjectMenuColumn').currentStyle.top);
	}
	subjectMenuColumnHeight = subjectMenuColumnHeight + subjectMenuColumnPaddingAdjust + subjectMenuColumnPositionAdjust;

	var shoppingCartColumnHeight = getElementYCoord(pageContent.getElementById('shoppingCartColumnEnd'));
	if (window.getComputedStyle) {
		var shoppingCartColumnPaddingAdjust = parseInt(window.getComputedStyle(pageContent.getElementById('shoppingCartColumn'), null).paddingTop);
		var shoppingCartColumnPositionAdjust = parseInt(window.getComputedStyle(pageContent.getElementById('shoppingCartColumn'), null).top);
	}
	else {
		var shoppingCartColumnPaddingAdjust = parseInt(pageContent.getElementById('shoppingCartColumn').currentStyle.paddingTop);
		var shoppingCartColumnPositionAdjust = parseInt(pageContent.getElementById('shoppingCartColumn').currentStyle.top);
	}
	shoppingCartColumnHeight = shoppingCartColumnHeight + shoppingCartColumnPaddingAdjust;


	if (subjectMenuColumnHeight > shoppingCartColumnHeight) {
		minHeight = subjectMenuColumnHeight;
	}
	else {
		minHeight = shoppingCartColumnHeight;
	}

	pageContent.body.style.overflow = "hidden";
	var documentBodyWidth = pageContent.body.clientWidth;
	pageContent.body.style.overflow = "auto";
	var scrollbarWidth = documentBodyWidth - pageContent.body.clientWidth;

	if (scrollbarWidth == 0) {
		scrollbarWidth = 16;
	}

	maxWidth = maxWidth - scrollbarWidth;
	minWidth = minWidth - scrollbarWidth;

	if (documentBodyWidth > maxWidth) {
		documentBodyWidth = maxWidth;
	}

	var mainContentHeight = pageContent.getElementById('body').offsetHeight;
	if (mainContentHeight < minHeight) {
		mainContentHeight = minHeight;
	}

	pageContent.getElementById('subjectMenuColumn').style.height = mainContentHeight - 16 + 'px';
	pageContent.getElementById('shoppingCartColumn').style.height = mainContentHeight - 16 + 'px';

	var mainContentHeightAdjusted = pageContent.getElementById('body').offsetHeight;

	if (pageContent.getElementById('mainContentFooterBordered')) {
		pageContent.getElementById('mainContentFooterBordered').style.position = 'relative';
		pageContent.getElementById('mainContentFooterBordered').style.bottom = (mainContentHeightAdjusted - mainContentHeight) + 'px';
	}
	else if (pageContent.getElementById('mainContentFooterBorderless')) {
		pageContent.getElementById('mainContentFooterBorderless').style.position = 'relative';
		pageContent.getElementById('mainContentFooterBorderless').style.bottom = (mainContentHeightAdjusted - mainContentHeight) + 'px';
	}

	pageContent.getElementById('mainContent').style.height = (mainContentHeight - 42) + 'px';
	var footerPosition = getElementYCoord(pageContent.getElementById('footer'));
	var subjectMenuColumnPosition = getElementYCoord(pageContent.getElementById('subjectMenuColumn'));
	var shoppingCartColumnPosition = getElementYCoord(pageContent.getElementById('shoppingCartColumn'));
	pageContent.getElementById('footer').style.position = 'relative';

	pageContent.getElementById('footer').style.bottom = (footerPosition - (subjectMenuColumnPosition + mainContentHeight - 20)) + 'px';	
	
}

/* Michael's AJAX Functions*/
function GetXmlHttpObject() {
    var xmlhttp=null;
    try {
        // Firefox, Opera 8.0+, Safari
        xmlhttp=new XMLHttpRequest();
    }
    catch (e) {
        // Internet Explorer
        try {
            xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e) {
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
    }
    return xmlhttp;
}

function ucfirst (str) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Onno Marsman
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // *     example 1: ucfirst('kevin van zonneveld');
    // *     returns 1: 'Kevin van zonneveld'

    str += '';
    var f = str.charAt(0).toUpperCase();
    return f + str.substr(1);
}

/**
 * AJAX Logout function - may no longer be needed.
 * @param {Object} cartType
 * @param {Object} item_id
 */
function Logout(cartType,item_id) {
	var xmlhttp=GetXmlHttpObject();
	if (xmlhttp==null) {
		alert ("Your browser does not support AJAX!");
		return;
	}
	var url="/www/javascript/ajax_serverside/AJAX_accessManagement.php";
	var param="function=logout";
	xmlhttp.onreadystatechange=function() {
		if (xmlhttp.readyState==4 || xmlhttp.readyState=="complete") {
			var res=xmlhttp.responseText;
			document.getElementById('AccessBlock').innerHTML=res;
			if(document.getElementById('nextLink')){
				document.getElementById('nextLink').innerHTML=res;
			}
		}
	}
	xmlhttp.open("POST",url,true);
	xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlhttp.setRequestHeader("Content-length", param.length);
	xmlhttp.setRequestHeader("Connection", "close");
	xmlhttp.send(param);
}

