


function getElementsByClassName( searchClass , context ) {
	var classElements = new Array();
	if ( context == null )
		context = document;
	var els = context.getElementsByTagName("*");
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

/************************************
*
*  returns all child elements of the given
*  element and type.
*  params: parentElement / searchedElements
*
************************************/
function getAllChildElementsByElement( parentEl, searchedElements )
{
	// get all chilren
	var allChildren = parentEl.childNodes;
	var result = new Array();
	// iterate over all chilren and return the elements of the given type
	for(i=0; i<allChildren.length; i++)
	{
		if( allChildren[i].nodeName==searchedElements )
		{
			result.push(allChildren[i]);
		}
	}
	return result;
}

function selectTab( tab )
{
	// get parent tabgroup from clicked tab
	var tabgroup = tab.parentNode.parentNode;
	// get the tabsContainer and the contentContainer
	var tabsAndContents = getAllChildElementsByElement(tabgroup, "DIV");
	// get all tabs
	var tabs = getAllChildElementsByElement(tabsAndContents[0], "DIV");
	// get all contents
	var contents = getAllChildElementsByElement(tabsAndContents[1], "DIV");
	// number of the selected tab
	var selTabNr;
	// save if the tab was selected
	var wasSelected = false;

	// check if the tab already was selected
	if( tab.className == "tab active" )
	{
		wasSelected = true;
	}

	// find the number of the selectedTab
	for(selTabNr=0; selTabNr<tabs.length; selTabNr++)
	{
		if( tabs[selTabNr] == tab )
		{
			break;
		}
	}

	// deactivate the maybe selected tabs
	for(var i=0; i<tabs.length; i++)
	{
		tabs[i].className = "tab";
	}

	// make all contents invisible
	for(var i=0; i<contents.length; i++)
	{
		contents[i].className = "content";
	}

	// set the tabs container passive
	getAllChildElementsByElement(tabgroup, "DIV")[0].className = "tabs";

	// if the tab was not selected before, select it now
	// otherwise close it
	if( !wasSelected )
	{
		// activate selected tab
		tabs[selTabNr].className = "tab active";

		// check if the content exists (nullpointersave)
		if( contents[selTabNr]!=null )
		{
			contents[selTabNr].className = "content active";
		}

		// set the tabs container active
		getAllChildElementsByElement(tabgroup, "DIV")[0].className = "tabs active";
	}
}

function selectTabProjectLists(tabname)
{
	$(tabname).parent("div").children("div.tab").toggleClass("active");
	$(tabname).parent("div").siblings("div.contents").children("div.content").toggleClass("active");
}



function saveActiveHeadTab(tabname)
{
    var id = tabname.id;
    SaveActiveHeadTab.saveActiveHeadTab(id);
}
function saveActiveQuickTab(tabname)
{
    var id = tabname.id;
    SaveActiveQuickTab.saveActiveQuickTab(id);
}

/**
 * function to handle tab shows in 
 * account search
 * TODO:check if needed
 * @return
 */
function accountTabChange()
{
	var result = document.getElementById("accountSearchResults");
	var head = document.getElementById("accountSearchHeader");
	result.parentNode.className = "content active";
	head.parentNode.className = "content";
}



function showSubNav(id)
{
    $("#"+id).parents("li").siblings("li").children("ul").hide();
    $("#"+id).parent("li").children("ul").show();
}

/**
 * shows/hides stacktrace on the exception page
 */
function showStackTrace()
{
    var stb = document.getElementById("stackTraceBox");
    if ( stb.style.display == 'none' ) stb.style.display = 'block';
    else stb.style.display = 'none';
}
    
function basketLayer()
{
	var layer = document.getElementById("updateBasketLayer");
	layer.style.display = "block";
}

function updateBasket()
{
    $("#updateButton").click();
}

function showMessageLayer()
{
	document.getElementById("MessageLayer").style.display = "block";
}

function hideMessageLayer()
{
	document.getElementById("MessageLayer").style.display = "none";
}

function shippingAccountChange()
{
	var element = document.getElementById("shippingAccount");
	if ( element.style.display == 'none' )
	{
		element.style.display = 'block';
	}
	else 
	{
		element.style.display = 'none';
	}
}


function openCustomerWishesLayer()
{
	document.getElementById("customerWishesLayer").style.display = "block";
}

function closeCustomerWishesLayer()
{
	document.getElementById("customerWishesLayer").style.display = "none";
}

function contactMeViaClose()
{
	document.getElementById("wishPhone").style.display = "none";
}

function contactMeViaOpen()
{
	document.getElementById("wishPhone").style.display = "";
}

function customerWishesChange(id)
{
	var element = document.getElementById(id);
	if ( element.style.display == 'none' ) element.style.display = '';
    else element.style.display = 'none';
}

function quickOrderRadioSelectionHelper(elem)
{
	var button = elem.getElementsByTagName("input")[0];
	var tabs = elem.parentNode;
	
	if(elem.className=="tab active")
	{
		quickOrderUnselectAllRadios(tabs);
	}
	else 
	{
		quickOrderUnselectAllRadios(tabs);
		button.checked = true;
	}
}

function quickOrderUnselectAllRadios(tabs) 
{
	var b1 = tabs.getElementsByTagName("div")[0].getElementsByTagName("input")[0];
	var b2 = tabs.getElementsByTagName("div")[1].getElementsByTagName("input")[0];
	var b3 = tabs.getElementsByTagName("div")[2].getElementsByTagName("input")[0];

	b1.checked = false;
	b2.checked = false;
	b3.checked = false;
}

function fileUploadInputValueChanger(elem)
{
	var fileUpload = elem.parentNode;
	var div = fileUpload.getElementsByTagName("div")[0];
	var input = div.getElementsByTagName("input")[0];
	input.value = elem.value;
}

function quickEntrySampleText(elem, x) 
{
	switch(x) {
	case 0: 
		var counter = document.getElementById("smplTextUpload");
		if(counter.value.indexOf("0")!=-1)
		{
			elem.value = ""; // ognl:copyPasteText
			elem.className = "textareas"
		}
		counter.value=1;
		break;
	case 1: 
		var counter = document.getElementById("smplTextTypeIt");
		if((counter.value.indexOf("0")!=-1)||(counter.value.indexOf("1")!=-1))
		{
			var nrOfDivs = elem.parentNode.parentNode.getElementsByTagName("div").length;
			for(var i=0; i<nrOfDivs; i++) {
			var inputQty = elem.parentNode.parentNode.getElementsByTagName("div")[i].getElementsByTagName("input")[0];
			var inputItem= elem.parentNode.parentNode.getElementsByTagName("div")[i].getElementsByTagName("input")[1];
			inputQty.value ="";
			inputItem.value="";
			inputQty.className ="colQuantity";
			inputItem.className ="colProduct";
			}
		}
		counter.value=2;
		break;
	default:break;
	}
}

function setSmplTextTypeIt() {
	var qty = document.getElementById("qty");
	var item = document.getElementById("number");
	var counter = document.getElementById("smplTextTypeIt");

	if(counter.value.indexOf("0")!=-1)
	{
		qty.value ="10";
		item.value="B207+LRX24-MFT";
		qty.className = "colQuantity first";
		item.className= "colProduct first";
		counter.value="1";
	}
}

function sideBarLeftTabUnclosable( tab ) {
	// get parent tabgroup from clicked tab
	var tabgroup = tab.parentNode.parentNode;
	// get the tabsContainer and the contentContainer
	var tabsAndContents = getAllChildElementsByElement(tabgroup, "DIV");
	// get all tabs
	var tabs = getAllChildElementsByElement(tabsAndContents[0], "DIV");
	// get all contents
	var contents = getAllChildElementsByElement(tabsAndContents[1], "DIV");
	
	var selTabNr;
	
	
	// find the number of the selectedTab
	for(selTabNr=0; selTabNr<tabs.length; selTabNr++)
	{
		if( tabs[selTabNr] == tab )
		{
			break;
		}
	}
	
	// activate selected tab
	tabs[selTabNr].className = "tab active";

	// check if the content exists (nullpointersave)
	if( contents[selTabNr]!=null )
	{
		contents[selTabNr].className = "content active";
	}

	// set the tabs container active
	getAllChildElementsByElement(tabgroup, "DIV")[0].className = "tabs active";
	
}

function doKlick(id)
{
	return document.getElementById(id).click();
}

function imposeMaxLength(Object, event, MaxLen)
{
	if(event.keyCode == '8' || event.keyCode == '46')
	{
		return true;
	}
  return (Object.value.length <= MaxLen);
}


/*
 * Used in BasketContent
 */
function addHeadersResizeEvent()
{
	addEvent(window, 'resize', function(){resizeWidth('basketTable')});
}

/*******************************************************************************
 * 
 * returns true if the actual browser is an ie
 * 
 ******************************************************************************/
function isBrowserIE() {
	if (navigator.appName.indexOf('Microsoft') != -1) {
		return true;
	}
	return false;
}

/*******************************************************************************
 * 
 * get parent element of a specific type params: actual element / the element
 * you're looking for
 * 
 ******************************************************************************/
function getParentElementByNodeName(actEl, searchedNodeName) {
	var element = actEl;
	while (element.nodeName != searchedNodeName.toUpperCase()) {
		element = element.parentNode;
	}
	return element;
}


function addEvent(obj, type, fn)
{
	if (obj.addEventListener)
	{
		obj.addEventListener(type,fn,false);
		return true;
	}
	else if (obj.attachEvent)
	{
		obj['e'+type+fn] = fn;
		obj[type+fn] = function() { obj['e'+type+fn]( window.event );}
		var r = obj.attachEvent('on'+type, obj[type+fn]);
		return r;
	}
	else
	{
		obj['on'+type] = fn;
		return true;
	}
}

var clicked = false;
function guardBasketLink(link)
{
	if(clicked)
	{
		link.href='#';
	}
	clicked = true;
	basketLayer();
	
}

triggerInputField = function()
{
    $("#fileUploadInput").click();
}
