function workShoppingCart(cmd, productID, productName, quantity, productURL,xtra) {
	// if (productURL) alert("productURL: " + productURL);
	// alert("cmd: " + cmd)
	// 'shopping_card_scrolllayer': wird per Ajax als childNode von 'shopping_card_selector' geladen
	// report('cmd: '+cmd + ' productID: '+productID + ' quantity: '+quantity)
	
	// report(productURL)
	showShoppingcartlayer('keepOpenIfOpen')
	var callback = function(state, vals) {
		if (document.getElementById('shopping_card_selector')) document.getElementById('shopping_card_selector').innerHTML = vals;
		// var p = document.getElementById('shopping_card_scrolllayer').parentNode
		if (document.getElementById('shopping_card_scrolllayer')) {
			new scrollbarObj({barwidth:21, buttonheight:15, slideroverlap:1, scrollbarLeftoverlap:1, refEl: document.getElementById('shopping_card_scrolllayer')})
			// newPosShoplayer();
		}
	}
	
	var prodName 		= encodeURIComponent(productName)
	var prodURL 		= productURL
	var ajaxUrl 		= '/cms/codebase/ajax/shoppingcart.php?versionID=238&language=hu&cmd='+cmd+'&productID='+productID+'&productName='+prodName+'&quantity='+quantity +'&productURL='+prodURL;
	// if (productID) report("ajaxUrl: " + ajaxUrl)
	// report("ajaxUrl: " + ajaxUrl)
	var ajaxProcess 	= new ajax(ajaxUrl,callback,'post');
	if (cmd && xtra != 'fromPopupLayer') document.location.href = '#top'; // fuerht beim Aufruf aus dem PopupLayer zu komischen Ladeeffekten
}

function newPosShoplayer(){
	var shoplayer    	= document.getElementById('shopping_card_selector');
	var shoplayerPos 	= document.getElementById('shopcartpositionlayer')
	var shoplayerWidth 	= shoplayer.offsetWidth;
	
	shoppingcart_opener = document.getElementById('shoppingcart_opener')
	if (shoplayerWidth == 300){
		shoplayerPos.style.right = '-2px'; //-2
	} else {
		shoplayerPos.style.right = '18px';
	}
}



										
										
function changeRMPreviewData(rootID, selectedvalue) {
	var sq = ''
	// alert("varname: " + 'proIDObj_'+rootID + " selectedvalue: " + selectedvalue)
	var obj = window['proIDObj_'+rootID][selectedvalue]
	// alert(valObj);
	var rmID 		= selectedvalue
	var bestellNr 	= obj.bestellNr
	var availState 	= obj.availState
	var prevID		= obj.prevID
	// alert("prevID: " + prevID)
	document.getElementById('productID_' 			+ prevID).value = rmID
	document.getElementById('bestellNr_' 			+ prevID).innerHTML = bestellNr
	// alert(document.getElementById('availabilityState_' 	+ prevID).style.backgroundImage)
	if      (availState == 0) document.getElementById('availabilityState_' + prevID).style.backgroundImage = 'url(/cms/templates/karcher2008/images/shop_available_green.gif)';
	else if (availState == 1) document.getElementById('availabilityState_' + prevID).style.backgroundImage = 'url(/cms/templates/karcher2008/images/shop_available_orange.gif)';
	else if (availState == 2) document.getElementById('availabilityState_' + prevID).style.backgroundImage = 'url(/cms/templates/karcher2008/images/shop_available_red.gif)';
	if (sq) alert(	"change: " 		+ selectedvalue 	+ "\n" + 
					"prevID: " 		+ prevID 			+ "\n" + 
					"bestellNr: " 	+ bestellNr			+ "\n" + 
					"availState: " 	+ availState		+ "\n" + 
					"rmID: " 		+ rmID				+ "\n" + 
					""
	)
}

function checkAmountInput(el) {
	el.value = el.value.replace(/[^0-9]/,'')
	// report(el.value)
}






// _______________________________________________________________________________________________________
function shoppingCartPreview(bt,productID,positionMode,refEl,delay) {
	bt.previewRegistered = 1
	// report("shoppingCartPreview")
	// report(bt.id)
	if (!delay) delay = 500
	bt.previewTimeout = window.setTimeout(function() {shoppingCartPreviewTimed(bt,productID,positionMode,refEl);},delay);
}

function shoppingCartPreviewStop(bt) {
	// report("shoppingCartPrevStop")
	bt.previewRegistered 	= null 			// Registrieung wieder entfernen
	bt.previewTimeout 		= null			// timeout entfaellt
}

function shoppingCartPreviewTimed(bt,productID,positionMode,refEl) {
	var useFade = 1;
	// report("shoppingCartPreviewTimed: " + bt.className + " previewRegistered: " + bt.previewRegistered)
	if (bt.previewRegistered) {
		// bestende Layer ausblenden
		if (window.shopCartPrevObj) {
			for (var i in shopCartPrevObj) {
				window.shopCartPrevObj[i].style.left = -100000 + 'px'
			}
		}
		// if (window.pv) window.pv.style.display = 'none' 
		pv = document.getElementById('shoppingCartPreview_'+productID)
		if (document.all) useFade = 0 // IE 6 hat Probleme mit dem Fade...
		if (useFade) {
			var l 			= absLeft(bt)
			var t 			= absTop(bt)
			if (positionMode == 'abs') {
				var l 			= parseInt(bt.offsetLeft)
				var t 			= parseInt(bt.offsetTop)
			}
			// t = t - document.body.scrollHeight
			// alert(document.body.scrollHeight)
			// report(bt.nodeName + ","+bt.className + 'l: ' + l + ' t:' + t);
			// alert('l: ' + l + ' t:' + t);
			pv.style.left = l - 280 + 'px'
			pv.style.top  = t - 100 + 'px'
			fader 		  = new faderObj({el:pv , properties:['opacity'], faderStep:4, autostart:1})
		} else {
			shoppingCartPreviewNoFade(bt,pv,positionMode);
		}
		if (!window.shopCartPrevObj) window.shopCartPrevObj = {}
		else 						 window.shopCartPrevObj[pv.id] = pv
	}
}

function shoppingCartPreviewNoFade(bt,pv,positionMode) {
	var l 			= absLeft(bt)
	var t 			= absTop(bt)
	// report("shoppingCartPreviewNoFade l/t " + l + '/' + t)
	// alert(pv.parentNode.nodeName);
	pv.style.left 		= l - 280 + 'px'
	pv.style.top  		= t - 100 + 'px'
	pv.style.display 	= 'block'
}
										
function shoppingCartPreviewHide(evt,el) {
	evt = evt ? evt : event;
	if (!el.contains(evt.relatedTarget || evt.toElement)) {
		el.style.display = "none"
	}
}






// ______________________________________________________________________________________________________
// Tool tip
function toolTipShow(bt,elementOrID) {
	if (typeof(elementOrID)=='string') 	el = document.getElementById(elementOrID)
	else 								el = elementOrID;
	el.style.display = 'block'
	var l 			= absLeft(bt)
	var t 			= absTop(bt)
	el.style.left = l - 89 + 'px'
	el.style.top  = t - 24 + 'px'
	
}
function toolTipHide(evt,el) {
	evt = evt ? evt : event;
	if (!el.contains(evt.relatedTarget || evt.toElement)) {
		el.style.display = "none"
	}
}









// _______________________________________________________________________________________________________
function startThemeTeaserDrag(ce_IDsql) {
	// report("startThemeTeaserDrag")
	poolArr = getElementsByClassNameM(document.body,'div','poolbox')
	var teaserMainFrame = document.getElementById('teaser_shoptheme_'+ce_IDsql);
	// report(showObject(poolArr,1))
	var dragElArr = new Array();
	var L = poolArr.length
	for (var i=0;i<L;i++) {
		var poolbox 		= poolArr[i]
		var poolboxHandle 	= document.getElementById(poolbox.id + '_handle')
		
		// report("poolboxHandle: " + poolboxHandle.id)
		// var inputfieldName = poolbox.id.replace('poolbox_','')
		// report("poolbox.id: " + poolbox.id)
		// report("inputfieldName: " + inputfieldName)
		// inputfield = document.edit[this.inputfieldName]
		
		dragElArr[i] = new dragObj({
			controlEl		: poolboxHandle,
			dragEl			: poolbox,
			refEl			: poolbox,
			constrainH		: 0, 
			constrainV		: 0,
			useGuides		: 1,
			guidesSnapDist  : 40,
			guidesObj		: {horizontal: {start:0, positions:[0, 240,480]}, vertical:{start:0, positions:[0,238,305,372,389,456,523,540,607,674,691,758,825,842,909,976,993,1060,1127,1144,1211,1278,1295,1362,1429,1446,1513,1580,1597,1664,1731,1748]}},
			call_startdrag	: function() {poolbox.style.MozUserSelect = 'none'},
			call_stopdrag	: function() {var inputfieldName = this.dragEl.id.replace('poolbox_',''); document.edit[inputfieldName].value = 'left:' + this.dragEl.offsetLeft + 'px;top:' + this.dragEl.offsetTop + 'px;'},
			call_drag		: function() {checkTeaserHeight(this.dragEl,teaserMainFrame)}
		})
		// report(dragElArr[i])
		// dragElArr[i].call_drag = function() {checkTeaserHeight(this)}
	}
}


function checkTeaserHeight(poolbox,teaserMainFrame) {
	// report("poolbox.style.top: " + poolbox.style.top)
	// report("teaserMainFrame: " + teaserMainFrame.offsetHeight)
	
	var base = (parseInt(poolbox.style.top) + poolbox.offsetHeight) + 18
	// report("base: " + base + " teaserMainFrame: " + teaserMainFrame.offsetHeight)
	if (base > teaserMainFrame.offsetHeight) {
		teaserMainFrame.style.height = base + 'px'
	}
}

function initThemeDrag(e, el, ce_IDsql, ce_ID, type) {
	// report("ce_IDsql: " + ce_IDsql)
	// report("type: " + type)
	sizesObj = {'1': {w:702,h:220}, // verfuegbare Groessen der typen 1-9
				'2': {w:460,h:130},
				'3': {w:220,h:431},
				'4': {w:220,h:133},
				'5': {w:460,h:133},
				'6': {w:460,h:133},
				'7': {w:460,h:284},
				'8': {w:200,h:284},
				'9': {w:702,h:200}
	}
	// report(sO(sizesObj,2))
	var matrix = getThemeMatrix(sizesObj)
	// report(sO(matrix,2))
	
	
	e = e ? e : event
	obj = new dragObj({
		dragEl						: el, 
		previewmode					: 'dummy',
		dropTargetClass 			: 'poolbox',
		refEl 						: el,
		// dropTargetMouseUpFunction: function() {workspace.style.backgroundColor = '#FFFFFF'},			
		e							: e,
		call_startdrag				: function() {
										var t = document.getElementById('teaser_shoptheme_' + ce_IDsql) 
										t.style.borderTop 		= '5px solid #FFEC00'
										t.style.borderBottom 	= '5px solid #FFEC00'	
										document.getElementById('teaser_shoptheme_info_' + ce_IDsql).style.display = 'block'
									},
		call_stopdrag				: function() {
										var t = document.getElementById('teaser_shoptheme_' + ce_IDsql); 
										t.style.border = '0' 					
										document.getElementById('teaser_shoptheme_info_' + ce_IDsql).style.display = 'none'
										dropThemeDragDummy(obj, ce_ID, type)
									}
	})
	// wird nach dem Erstellen des Objects angefuegt, damit man auf den dragdummy zugreifen kann
	
	// Vorschau mit beweglichen Layern, erstmal deaktiviert
	// obj.dropTargetMouseOverFunction  = function(P) {moveThemeDragDummy(P,el,sizesObj,type,ce_IDsql,matrix)}
	// obj.dropTargetMouseOutFunction   = function(P) {outThemeDragDummy( P,el,sizesObj,type,ce_IDsql,matrix)}
}

function moveThemeDragDummy(P, el, sizesObj, type, ce_IDsql, matrix) {
	// report("in " + P.el.id)
	// return;
	p  		= document.getElementById('teaser_shoptheme_positioner_'+ce_IDsql)
	pN 		= document.getElementById('teaser_shoptheme_'+ce_IDsql)
	poolArr = getElementsByClassNameM(document.body,'div','poolbox')
	tW 		= sizesObj[type].w
	tH 		= sizesObj[type].h
	p.style.display = 'block'
	
	var overEl 		= P.el
	var mL 			= matrix.length
	var on 			= 0;
	var L  			= pN.childNodes.length
	for (var i=0;i<L;i++) {
		var child = pN.childNodes[i]
		if (hasClassName(child,'poolbox') && on == 1 && !child.oldtop) {
			child.oldtop = child.style.top
			dragHeight = sizesObj[type].h + 18
			// report("dragHeight: " + dragHeight)
			// report("child.id: " + child.id + " child.oldtop: " + child.oldtop + " overEl.offsetHeight: " + dragHeight)
			var top 		= (parseInt(child.style.top) + overEl.offsetHeight + 25)
			child.style.top = top + 'px'
			
			
		}
		if (child == overEl) {
			p.style.width  	= tW + 'px'
			p.style.height 	= tH + 'px'
			p.style.left 	= 0
			p.style.top 	= parseInt(overEl.style.top) + overEl.offsetHeight + 18 + 'px'
			on = 1
		}
	}
}

function outThemeDragDummy(P, el, sizesObj, type, ce_IDsql) {
	// report("out "+P.el)
	// return
	// report("dropTargetMouseUpFunction");
	// return
	p  	    = document.getElementById('teaser_shoptheme_positioner_'+ce_IDsql)
	pN 		= document.getElementById('teaser_shoptheme_'+ce_IDsql)
	poolArr = getElementsByClassNameM(document.body,'div','poolbox')
	var L   = pN.childNodes.length
	for (var i=0; i<L; i++) {
		var child = pN.childNodes[i]
		
		if (hasClassName(child,'poolbox') && child.oldtop) {
			// report("id: " + child.id + "className: " + child.className + " child.oldtop: " + child.oldtop)
			// report("setback: " + child.id)
			child.style.top    = child.oldtop
			child.oldtop = ''
		}
	}
}


function getThemeMatrix(sizesObj) {
	var matrix = []
	poolArr = getElementsByClassNameM(document.body,'div','poolbox')
	var L 	= poolArr.length
	for (var i=0;i<L;i++) {
		var pB = poolArr[i]
		type  = pB.className.split(' ')[0].split('_')[1];
		var size 		= sizesObj[type]
		var l 			= parseInt(pB.style.left)
		var t 			= parseInt(pB.style.top)
		var sObj 	= {l:l, t:t, r:(l+size.w), b:(t+size.h)}
		if (type) matrix.push(sObj)
	}
	return matrix
}

function dropThemeDragDummy(obj,ce_ID,type) {
	// return;
	// report(ce_ID + " " + type)
	document.edit['createTeaser_' + ce_ID].value = ce_ID + ';' +type;
	document.edit.submit();
}

























function moveFooter() {
	// +++ Achtung: nach Anniversary-Umbau wird document.body.scrollHeight falsch ausgelesen!, verwende "document.getElementById('firstTable').offsetHeight"
	var sq = 0
	var f 			= document.getElementById('footer')
	var mCT			= document.getElementById('mainContentTable')
	var fH 			= f.offsetHeight
	var ftHeight 	= document.getElementById('firstTable').offsetHeight
	var mCTHeight 	= mCT.offsetHeight + absTop(mCT)
	// report("fH: " 			+ fH)
	// report("ftHeight: " 	+ ftHeight)
	// report("mCTHeight: " 	+ mCTHeight)
	// report("mCT.offsetTop: " 		+ mCT.offsetTop)
	// report("mCT.offsetHeight: " 	+ mCT.offsetHeight)
	
	res = ftHeight - fH - 10
	// report("res: " + res)
	if (res < mCTHeight) res = mCTHeight + 10
	// report("res: " + res)
	f.style.top = res + 'px'
	// report("f.style.top: " + f.style.top)
	f.style.visibility = 'visible'
}

function showFooter() {
return;
	var f = document.getElementById('footer')
	f.style.visibility = 'visible'
	f.style.top = parseInt(f.style.top) + 60 + 'px' // wird sonst durch irgenwas abgedeckt
}



function hideLanguageSelectionPulldown(evt,el) {
	evt = evt ? evt : event;
	selPull = document.getElementById('language_selector')
	if (!el.contains(evt.relatedTarget || evt.toElement)) {
		selPull.style.display = "none"
	}
}

function showLanguageSelectionPulldown() {
	document.getElementById('language_selector').style.display='block'; 
}
function showShoppingcartlayer(keepOpenIfOpen) {
	hideMyKaercherlayer()
	if (window.hideCompareDisplayBox) hideCompareDisplayBox()
	sL = document.getElementById('shopping_card_layer')
	if (sL) {
		if (!keepOpenIfOpen && sL.style.display == 'block') {
			hideShoppingcartlayer()
			return
		} 
		sL.style.display = 'block'
		if (is_ie6) 	{sL.style.right = '-4px'}
		else 			{sL.style.right = '-4px'}
		sL.style.left = 'auto'
		sL.style.top  = -6 + 'px'
		
		if (is_ie6) {
			document.getElementById('shoppingcart_opener').style.lineHeight = '17px'
			document.getElementById('shoppingcart_opener').style.marginTop = '-5px'
			document.getElementById('shoppingcart_opener').style.backgroundPosition = '5px right'
			document.getElementById('utilities_after_myk').style.borderRight = '1px solid #C5C5C5'
		} else {
			if (document.getElementById('utilities_after_myk')) document.getElementById('utilities_after_myk').className = 'comparisonactive'
		}
	}
}
function hideShoppingcartlayer() {
	if (document.getElementById('utilities_after_myk')) document.getElementById('utilities_after_myk').className = ''
	if (document.getElementById('shopping_card_layer')) document.getElementById('shopping_card_layer').style.display = 'none';
	if (is_ie6) {
		if (document.getElementById('utilities_after_myk')) {
			document.getElementById('utilities_after_myk').style.borderRight = ''
			document.getElementById('shoppingcart_opener').style.lineHeight = ''
			document.getElementById('shoppingcart_opener').style.backgroundPosition = 'top right'
			document.getElementById('shoppingcart_opener').style.marginTop = ''
		}
	}
}






function mykaercherlogin(cmd) {
	// 'shopping_card_scrolllayer': wird per Ajax als childNode von 'shopping_card_selector' geladen
	// report('cmd: '+cmd + ' productID:'+productID)
	var callback = function(state, vals) {
		if (document.getElementById('mykaercher_selector')) {
			document.getElementById('mykaercher_selector').innerHTML = vals;
		}
	}
	if (cmd == "") {
		var ajaxUrl 		= '/cms/codebase/ajax/mykaercher.php?versionID=238&language=hu';
	} 
	if (cmd == "login") {
		var ajaxUrl 		= '/cms/codebase/ajax/mykaercher.php?versionID=238&language=hu&cmd='+cmd+'&user='+document.getElementById('mykaerchername').value +'&password='+document.getElementById('mykaercherpassword').value;
	}
	if (cmd == "logoff") {
		var ajaxUrl 		= '/cms/codebase/ajax/mykaercher.php?versionID=238&language=hu&cmd='+cmd;
	}
	var ajaxProcess 	= new ajax(ajaxUrl,callback,'post');
	// report("ajaxUrl: " + ajaxUrl)
}


function showMyKaercherlayer() {
	// alert('showMyKaercherlayer');
	hideShoppingcartlayer()
	if (window.hideCompareDisplayBox) hideCompareDisplayBox()
	mykaercherlogin('');
	sL = document.getElementById('mykaercher_layer')
	if (sL) {
		if (sL.style.display == 'block') {
			hideMyKaercherlayer()
			return
		}
	 	sL.style.display = 'block';
		if (is_ie6) 		{sL.style.right = '-4px'}
		else 				{sL.style.right = '-4px'}
		sL.style.left = 'auto'
		sL.style.top  = -6 + 'px'
		if (is_ie6) 		{sL.style.width = '0px'}
	}
	
	document.getElementById('utilities_after_myk').style.borderLeft   = 'none'
	document.getElementById('utilities_after_comp').style.borderRight = '1px solid #C5C5C5'
	// document.getElementById('utilities_after_comp').className = 'comparisonactive'
	
	if (is_ie6) {
		document.getElementById('mykaercher_opener').style.lineHeight = '18px'
		document.getElementById('mykaercher_opener').style.marginTop = '-6px'
		document.getElementById('mykaercher_opener').style.backgroundPosition = '6px right'
	} else {
		document.getElementById('utilities_after_comp').className = 'comparisonactive'
	}
	
}

function hideMyKaercherlayer() {
	if (document.getElementById('utilities_after_comp')) 	{
		document.getElementById('utilities_after_comp').className = ''
		document.getElementById('utilities_after_comp').style.borderRight = ''
		document.getElementById('mykaercher_opener').style.lineHeight = ''
		document.getElementById('mykaercher_opener').style.marginTop = ''
		document.getElementById('mykaercher_opener').style.backgroundPosition = 'top right'
	}
	
	if (document.getElementById('utilities_after_myk')) 	document.getElementById('utilities_after_myk').style.borderLeft = '1px solid #C5C5C5';
	if (document.getElementById('mykaercher_layer')) 		document.getElementById('mykaercher_layer').style.display = 'none';
}
function showShoppinCard() {
	document.getElementById('shopping_card_layer').style.display='block'; 
}




// P R O D U K T A L T E R N A T I V E N
prodAltholderPos 	= 0; 
anzVon 				= 1;
anzBis 				= 5;
function moveProdAlt(direction,Anz) { 
	/*
	5 Elemente pro Reihe
	*/
	maxpos = Anz-5;
	buttonL = document.getElementById('prodAltButtonLeft')
	buttonR = document.getElementById('prodAltButtonRight')
	
	holder 	= document.getElementById('prodAltPush')
	divArr 	= getElementsByClassNameM(holder,'','pro_altern_img');
	divWidthArr = new Array()
	for(i=0; i<divArr.length;i++) {
		divWidthArr[i] = divArr[i].offsetLeft;
	}
	if (direction=="right") {
		if (prodAltholderPos < maxpos) {
			prodAltholderPos++
			holder.style.marginLeft = -divWidthArr[prodAltholderPos]+'px'
			anzVon++
			anzBis++
		}
	}
	if (direction=="left") {
		if (prodAltholderPos > 0) {
			prodAltholderPos--
			holder.style.marginLeft = -divWidthArr[prodAltholderPos]+'px'
			anzBis--
			anzVon--
		}
	}
	buttonL.className = "pro_altern_left"
	buttonR.className = "pro_altern_right"
	if (prodAltholderPos==0) 		buttonL.className = "pro_altern_left_grey";
	if (prodAltholderPos==maxpos) 	buttonR.className = "pro_altern_right_grey";
	//report(prodAltholderPos + ' ' + holder.style.marginLeft ,0)
	
	document.getElementById('anzVon').innerHTML = anzVon;
	document.getElementById('anzBis').innerHTML = anzBis;
}
// end P R O D U K T A L T E R N A T I V E N




