function sonyStretchFrontpageColumns() {
	
	// Get all elements that we want to stretch
	var stretchableElements = getElementsByClassName('stretchable', 'div');
	
	// Make sure that the function returned an array
	if(stretchableElements[0]) {
		
		var stretchableElementsLength = stretchableElements.length;
		
		// Start with height of first element
		var maxHeight = element(stretchableElements[0].id).getH();
		
		// Loop the array, start at 
		for(var i = 1; i < stretchableElementsLength; i++) {
			
			loopedElementsHeight = element(stretchableElements[i].id).getH();
			
			// If the current elements height is larger than the currently highsest value
			if(loopedElementsHeight > maxHeight) {
				
				// Set the new ,axheight to the height of the current element
				maxHeight = loopedElementsHeight;
				
			}
			
		}
		
		// Done checking the element so lets loop them again
		// Well include the highest element in this since keeping track of it in js
		// will require more than setting its height
		for(var i = 0; i < stretchableElementsLength; i++) {
			
			// Set the heights of the element to the max height
			element(stretchableElements[i].id).setH(maxHeight + 'px');
			
		}
	}
	
}

/**
*
*/
function sonyStretchSubMenuItems() {

	// Get items with content
	var topMenuItemsWithContent = getElementsByClassName('itemWithContent', 'LI', document.getElementById('topMenu'));
	var topMenuItemsWithContentLength = topMenuItemsWithContent.length;
	
	
	// Loop the items
	for(var topMenuItemsWithContentIndex = 0; topMenuItemsWithContentIndex < topMenuItemsWithContentLength; topMenuItemsWithContentIndex++) {
	
		var lis = topMenuItemsWithContent[topMenuItemsWithContentIndex].getElementsByTagName('li');
		var nrOfLis = lis.length;
		var nrOfItemsPerRow = 5;
		var maxHeight = 0;
		
		// Loop the items in the item
		for(var i = 0; i < nrOfLis; i++) {
			
			// Get height of current item
			elementHeight = element(lis[i].id).getH();
			
			// If the new height is larger than current max height
			if(elementHeight > maxHeight) {
				maxHeight = elementHeight;
			}
			
		}
		
		// Loop the elements again
		for(var i = 0; i < nrOfLis; i++) {
	
			// Set the height of each element to max height
			element(lis[i].id).setH(maxHeight + 'px');	
			
		}
	
	}
	
}

// To keep track of what sub menu is open
var openSubMenuNr = false;

/**
* We have to change the height of the surrounding element instead of toggle the display value.
*/
function sonyToggleSubMenu(e, menuItemNr) {

	sonyCloseSubMenuIfOpen(e);
	
	/*
	// Assume that we will open the menu
	var newDisplayVal = 'block';
	var newDisplayValForActiveArrowIndicator = 'none';
	// Add 10px for the div under the menu
	var newHeight = (element('subMenu_' + menuItemNr).getH() + 10) + 'px';
	// We will change padding here because if it is 5 from the start, it will prevent the element from completely closing
	var newPaddingTop = '3px';
	var newSubUlMarginTop = '0px';
	openSubMenuNr = menuItemNr;
	*/
	
	// If menu is open, lets close it
	if(document.getElementById('topMenuLevel2ArrowWrapper_' + menuItemNr).style.display == 'block') {
	
		// Close the menu
		sonyCloseSubMenu(menuItemNr);

		// Change values to closed values
		/*
		newDisplayVal = 'none';
		newDisplayValForActiveArrowIndicator = 'block';
		newPaddingTop = 0;
		openSubMenuNr = false;
		newHeight = '1px';
		newSubUlMarginTop = '1px';
		*/

	} else {
	
		sonyOpenSubMenu(menuItemNr);
	
	}
	
	/*
	// Change css values
	if(document.getElementById('activeIndicatorWrapper')) {
		document.getElementById('activeIndicatorWrapper').style.display = newDisplayValForActiveArrowIndicator;
	}
	document.getElementById('subMenu_' + menuItemNr).style.marginTop = newSubUlMarginTop;
	document.getElementById('topMenuLevel2Wrapper_' + menuItemNr).style.paddingTop = newPaddingTop;
	document.getElementById('topMenuLevel2Wrapper_' + menuItemNr).style.height = newHeight;
	document.getElementById('topMenuLevel2ArrowWrapper_' + menuItemNr).style.display = newDisplayVal;
	*/
	
}

/**
*
*/
function sonyCloseSubMenu(menuItemNr) {

	// Change css values
	if(document.getElementById('activeIndicatorWrapper')) {
		document.getElementById('activeIndicatorWrapper').style.display = 'block';
	}
	document.getElementById('subMenu_' + menuItemNr).style.marginTop = '1px';
	document.getElementById('topMenuLevel2Wrapper_' + menuItemNr).style.paddingTop = 0;
	document.getElementById('topMenuLevel2Wrapper_' + menuItemNr).style.height = '1px';
	document.getElementById('topMenuLevel2ArrowWrapper_' + menuItemNr).style.display = 'none';

}

/**
*
*/
function sonyOpenSubMenu(menuItemNr) {

	openSubMenuNr = menuItemNr;

	// Change css values
	if(document.getElementById('activeIndicatorWrapper')) {
		document.getElementById('activeIndicatorWrapper').style.display = 'none';
	}
	document.getElementById('subMenu_' + menuItemNr).style.marginTop = '0px';
	document.getElementById('topMenuLevel2Wrapper_' + menuItemNr).style.paddingTop = '3px';
	document.getElementById('topMenuLevel2Wrapper_' + menuItemNr).style.height = (element('subMenu_' + menuItemNr).getH() + 10) + 'px';
	document.getElementById('topMenuLevel2ArrowWrapper_' + menuItemNr).style.display = 'block';

}

/**
*
*/
function sonyCloseSubMenuIfOpen(e) {
	
	// If a submenu is open
	if(openSubMenuNr != false) {
	
		var event = e || window.event;
		var target = event.target || event.srcElement;
		
		var openSubMenuId = 'subMenu_' + openSubMenuNr;
		
		// If the element that fired the event does not belong to the currently open menu
		if(target.id != 'topMenuItem_' + openSubMenuNr &&
			target.id != openSubMenuId &&
			(!target.parentNode || target.parentNode.id != openSubMenuId) &&
			((!target.parentNode.parentNode || !target.parentNode.parentNode.parentNode) || target.parentNode.parentNode.parentNode.id != openSubMenuId)) {
		
			sonyCloseSubMenu(openSubMenuNr);
		
		}

	}	
	
}

/**
* Cred: http://www.robertnyman.com/2005/11/07/the-ultimate-getelementsbyclassname/
*/
function getElementsByClassName(className, tag, elm){
	var testClass = new RegExp("(^|\\\\s)" + className + "(\\\\s|$)");
	var tag = tag || "*";
	var elm = elm || document;
	var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
	var returnElements = [];
	var current;
	var length = elements.length;
	for(var i=0; i<length; i++){
		current = elements[i];
		if(testClass.test(current.className)){
			returnElements.push(current);
		}
	}
	return returnElements;
}

