// ### REFACTORING begin ###

function showSendpageWin()
{
	new Ajax.Request( myWebRoot + "myinterfaces/" + myLanguagePath + "/sendpage", {
		method: "get",
		onComplete: showSendpageWinOnComplete
	});
	return false;
}

function showSendpageWinOnComplete( originalRequest )
{
	var response = originalRequest.responseText;
	if( Object.isUndefined( Sky.Window.instances[0] ) )
	{
		newRieggerWindow ( response );
	}
	else
	{
		Sky.Window.instances[0].swapContent( { contentCode: response } );
	}
}

function postSendpageData()
{
	new Ajax.Request( myWebRoot + myLanguagePath + "/sendpage-step2-js.html", {
		method: "post",
		parameters: Form.serialize( "sendpageform" ),
		onComplete: postSendpageDataOnComplete
	});
	return false;
}

function postSendpageDataOnComplete( originalRequest )
{
	var response = originalRequest.responseText;
	Sky.Window.instances[0].swapContent( { contentCode: response } );
}

function doLogout ()
{
	new Ajax.Request( myWebRoot + 'myinterfaces/' + myLanguagePath + '/shop/logout', 
	{
		method: 'put',
		onSuccess: doLogoutOnSuccess		
	} );
	return false;
}

function doLogoutOnSuccess ( originalRequest )
{
	$( "serviceNaviBox4" ).update( btnLogin );
	orderTab.hide();
}

function addBookmark ( title, location )
{
	window.sidebar.addPanel ( title, location, '' );
	return false;
}

function emptySearchString()
{
	$('searchtext').value = '';
}

function doCheckout ()
{
	jsonUtil.doRequest ( 'get', myWebRoot + 'myinterfaces/' + myLanguagePath + '/shop/form/checkout', '', { 'window': My.Window.instances.last () } );
	return false;
}

function doPrepareorder ()
{
	jsonUtil.doRequest ( 'get', myWebRoot + 'myinterfaces/' + myLanguagePath + '/shop/form/prepareorder', '', { 'window': My.Window.instances.last () } );
	return false;
}

function updateItemQuantity ( itemkey, oldquantity, newquantity )
{
	if ( oldquantity !== newquantity )
	{
		jsonUtil.doRequest ( 'post', myWebRoot + "myinterfaces/" + myLanguagePath + "/shop/session/basket/items/" + itemkey + "/" + newquantity );
	}
	return false;
}

function updateAccessoryQuantity ( accessorykey, quantity )
{
	jsonUtil.doRequest ( 'post', myWebRoot + "myinterfaces/" + myLanguagePath + "/shop/session/basket/accessories/" + accessorykey + "/" + quantity );
	return false;
}

function removeItem( itemkey )
{
	jsonUtil.doRequest ( 'delete', myWebRoot + "myinterfaces/" + myLanguagePath + "/shop/session/basket/items/" + itemkey );
	return false;
}

function removeAccessory( accessorykey )
{
	jsonUtil.doRequest ( 'delete', myWebRoot + "myinterfaces/" + myLanguagePath + "/shop/session/basket/accessories/" + accessorykey );
	return false;
}

function addAccessoryToBasket( accessorykey, postData, options )
{
	jsonUtil.doRequest ( 'put', myWebRoot + "myinterfaces/" + myLanguagePath + "/shop/session/basket/accessories/" + accessorykey, postData, options );
	return false;
}

function modifyAccessoryInBasket( accessorykey, postData, options )
{
	jsonUtil.doRequest ( 'post', myWebRoot + "myinterfaces/" + myLanguagePath + "/shop/session/basket/accessories/" + accessorykey, postData, options );
	return false;
}

function showAccessoryDialog( accessorykey )
{
	jsonUtil.doRequest ( 'get', myWebRoot + "myinterfaces/" + myLanguagePath + "/shop/dialog/accessory/" + accessorykey );
	return false;
}

function modifyAccessory ( accessorykey )
{
	jsonUtil.doRequest ( 'get', myWebRoot + "myinterfaces/" + myLanguagePath + "/shop/dialog/accessory/" + accessorykey );
	return false;
}

function doLogin ( login, password )
{
	jsonUtil.doRequest ( 'get', myWebRoot + "myinterfaces/" + myLanguagePath + "/shop/action/login?username=" + escape( login ) + "&password=" + escape ( password), {}, { onSuccessOnce: doLoginSuccess } );
	return false;
}

function doLoginSuccess ( data )
{
	if ( data.userLoggedIn )
	{
		$('serviceNaviBox4').update( '<a href="ssl-shop-customer-logout.html" onclick="return doLogout();">' + txtLogout + '</a>' );
		if ( !data.userIsAGuest )
		{
			updateOrderTab();
		}
	}
}

function updateOrderTab()
{
	new Ajax.Request( myWebRoot + "myinterfaces/" + myLanguagePath + "/prj/orders", { method: "PUT", onComplete: updateOrderTabOnComplete } );
}

function updateOrderTabOnComplete( originalRequest )
{
	var data = originalRequest.responseText.evalJSON ();
	var updatetext = '<a href="ssl-shop-customer-orders.html"><b>' + txtOrders + '</b><br/>' + txtRecentOrders + ' (' + data.nrofexecutedorders + ')<br/>' + txtStoredOrders +  ' (' + data.nrofstoredorders + ')</a>';

	orderTab.update( updatetext );
}

function showPasswordRecovery ()
{
	jsonUtil.doRequest ( 'get', myWebRoot + "myinterfaces/" + myLanguagePath + "/common/form/passwordrecovery" );
	return false;
}

function showPasswordRecoveryStep2 ( emailorusername )
{
	jsonUtil.doRequest ( 'get', myWebRoot + "myinterfaces/" + myLanguagePath + "/common/action/passwordrecovery?emailorusername=" + escape ( emailorusername ), {}, { 'skipMessages' : true, 'overrideDataOkWithTrue' : true } );
	return false;
}

function showRegisterAddress ( standalone )
{
	if ( standalone )
	{
		jsonUtil.doRequest ( 'get', myWebRoot + "myinterfaces/" + myLanguagePath + "/shop/form/register", {}, { 'targetDialog': My.Window.instances.last () } );
	}
	else
	{
		jsonUtil.doRequest ( 'get', myWebRoot + "myinterfaces/" + myLanguagePath + "/shop/form/register" );
	}
	return false;
}

function showOnetimeLogin ( event )
{
	if ( !Object.isUndefined( event ) )
	{
		Event.stop( event );
	}
	jsonUtil.doRequest ( 'get', myWebRoot + "myinterfaces/" + myLanguagePath + "/common/form/onetimelogin", {}, { 'window': My.Window.instances.last () } );
	return false;
}

function doOnetimeLogin ( username, password )
{
	jsonUtil.doRequest ( 'get', myWebRoot + "myinterfaces/" + myLanguagePath + "/common/action/onetimelogin?username=" + escape ( username ) + "&password="+ escape ( password ), {}, { 'window': My.Window.instances.last () } );
	return false;
}

function doOnetimeLoginStep2 ( newpassword, retypenewpassword )
{
	jsonUtil.doRequest ( 'get', myWebRoot + "myinterfaces/" + myLanguagePath + "/common/action/onetimeloginstep2?newpassword=" + escape ( newpassword ) + "&retypenewpassword=" + escape ( retypenewpassword ), {}, { 'skipMessages' : false, 'onSuccessOnce': doOnetimeLoginStep2OnSuccessOnce } );
	return false;
}

function doOnetimeLoginStep2OnSuccessOnce ( data )
{
	if ( data && data.ok && data.ok === true )
	{
		My.Window.instances.last ().hide ();
	}
}

function doCreateaccountOrGuest ( formId )
{
	if ( My.Window.instances.length >= 2 )
	{
		jsonUtil.doRequest ( 'put', myWebRoot + "myinterfaces/" + myLanguagePath + "/shop/action/createaccountorguest", $(formId).serialize( true ), { 'closeWindowOnSuccess' : true } );
	}
	else
	{
		jsonUtil.doRequest ( 'put', myWebRoot + "myinterfaces/" + myLanguagePath + "/shop/action/standalonecreateaccountorguest", $(formId).serialize( true ), { 'closeWindowOnSuccess' : true } );
	}
	return false;
}

function showUpdateAddress ( shopAddressKey )
{
	jsonUtil.doRequest( 'get', myWebRoot + "myinterfaces/" + myLanguagePath + "/customer/form/updateaddress?shop_addressKey=" + escape( shopAddressKey ) );
	return false;
}

function showAddAddress ()
{
	jsonUtil.doRequest( 'get', myWebRoot + "myinterfaces/" + myLanguagePath + "/customer/form/addaddress" );
	return false;
}

function updateAddress ( customerId, customerAddressKey, formId )
{
	var targetwindowid = My.Window.instances.length - 2;
	if ( My.Window.instances.length === 3 )
	{
		jsonUtil.doRequest( 'post', myWebRoot + "myinterfaces/" + myLanguagePath + "/customer/" + customerId + "/addresses/" + customerAddressKey, $(formId).serialize( true ), { 'window' : My.Window.instances[targetwindowid], 'closeWindowOnSuccess': true, 'onSuccessOnce': function ( data ) { updateAddressManager (); } } );
	}
	else
	{
		jsonUtil.doRequest( 'post', myWebRoot + "myinterfaces/" + myLanguagePath + "/customer/" + customerId + "/addresses/" + customerAddressKey, $(formId).serialize( true ), { 'window' : My.Window.instances[targetwindowid], 'closeWindowOnSuccess' : true} );
	}
	return false;
}

function submitDeliveryOrBillignForm( form, selectvalue, confirmMessage )
{
	if ( selectvalue == '-2' )
	{
		jsonUtil.doRequest( 'get', myWebRoot + "myinterfaces/" + myLanguagePath + "/customer/form/addaddress" );
	}
	else if ( selectvalue != '-1' )
	{
		alert( form + " / " + selectvalue + " / " + confirmMessage );
	}
	
	return false;
}

function addAddress ( customerId, formId )
{
	var targetwindowid = My.Window.instances.length - 2;
	if ( My.Window.instances.length === 3 )
	{
		jsonUtil.doRequest( 'put', myWebRoot + "myinterfaces/" + myLanguagePath + "/customer/" + customerId + "/addresses", $(formId).serialize( true ), { 'window' : My.Window.instances[targetwindowid], 'closeWindowOnSuccess': true, 'onSuccessOnce': function ( data ) { updateAddressManager (); } } );
	}
	else
	{
		jsonUtil.doRequest( 'put', myWebRoot + "myinterfaces/" + myLanguagePath + "/customer/" + customerId + "/addresses", $(formId).serialize( true ), { 'window' : My.Window.instances[targetwindowid], 'closeWindowOnSuccess': true } );
	}
	return false;
}

function showAddressManager ()
{
	jsonUtil.doRequest( 'get', myWebRoot + "myinterfaces/" + myLanguagePath + "/customer/form/addressmanager" );
	return false;
}

function updateAddressManager ()
{
	jsonUtil.doRequest( 'get', myWebRoot + "myinterfaces/" + myLanguagePath + "/customer/form/addressmanager", {}, { 'targetDialog': My.Window.instances[1] } );
	return false;
}

function deleteAddress ( customerId, addressKey )
{
	if ( My.Window.instances.length === 2 )
	{
		jsonUtil.doRequest( 'delete', myWebRoot + "myinterfaces/" + myLanguagePath + "/customer/" + escape ( customerId ) + '/addresses/' + escape ( addressKey ), {}, { 'onSuccessOnce': function ( data ) { updateAddressManager (); } } );
	}
	else
	{
		jsonUtil.doRequest( 'delete', myWebRoot + 'myinterfaces/' + myLanguagePath + '/customer/' + escape ( customerId ) + '/addresses/' + escape ( addressKey ) );
	}
	return false;
}

function doRegistration ( formId )
{
	jsonUtil.doRequest( 'put', myWebRoot + "myinterfaces/" + myLanguagePath + "/shop/customers", $(formId).serialize( true ), { 'onSuccessOnce': doRegistrationSuccess } );
	return false;
}

function doRegistrationSuccess ( data )
{
	if ( data.userLoggedIn )
	{
		doLoginSuccess( data );
		if ( My.Window.instances.length >= 2 )
		{
			new My.JSONUtil( { dialogOptions: defaultOptsMyWindow } ).doRequest( 'get', myWebRoot + "myinterfaces/" + myLanguagePath + "/customer/form/addresses", {}, { 'window' : My.Window.instances[0] } );
		}
	}
}

function authorizePayment ( formId )
{
	jsonUtil.doRequest( 'get', myWebRoot + "myinterfaces/" + myLanguagePath + "/payment/form/authorize?" + $(formId).serialize() );
	return false;
}

function returnToBasket ()
{
	jsonUtil.doRequest( 'get', myWebRoot + "myinterfaces/" + myLanguagePath + "/shop/session/basket" );
	return false;
}

function showAGB ()
{
	jsonUtil.doRequest( 'get', myWebRoot + "myinterfaces/" + myLanguagePath + "/shop/agb" );
	return false;
}

function finishOrder ( formId )
{
	jsonUtil.doRequest( 'put', myWebRoot + "myinterfaces/" + myLanguagePath + "/shop/session/order", $(formId).serialize(true), {'onSuccessOnce': hideBasketTab } );
	return false;
}

function hideBasketTab()
{
	basketTab.hide();
}

function updateToShopCustomer ( formId )
{
	jsonUtil.doRequest( 'put', myWebRoot + "myinterfaces/" + myLanguagePath + "/shop/action/updatetoshopcustomer", $(formId).serialize(true) );
	return false;
}

function changeBillingAddress ( addresskey )
{
	if ( addresskey == '-2' )
	{
		showAddAddress();
	}
	else
	{
		jsonUtil.doRequest( 'post', myWebRoot + "myinterfaces/" + myLanguagePath + "/shop/session/order/billingaddress", { 'shop_addressKey': addresskey, 'shop_addressKeyType': 1 } );
	}
	return false;
}

function changeDeliveryAddress ( addresskey )
{
	if ( addresskey == '-2' )
	{
		showAddAddress();
	}
	else
	{
		jsonUtil.doRequest( 'post', myWebRoot + "myinterfaces/" + myLanguagePath + "/shop/session/order/deliveryaddress", { 'shop_addressKey': addresskey, 'shop_addressKeyType': 2 } );
	}
	return false;
}

function checkPaymentState ()
{
	var getParam = window.location.search;
	if ( getParam.indexOf( "paymentstate" ) >= 0 )
	{
		getParam = getParam.replace( '?', '' );
		var params = getParam.split("&");
		for ( i = 0; i < params.length; i++ )
		{
			var temp = params[i].split("=");
			if ( temp[0] == "paymentstate" )
			{
				switch ( temp[1] )
				{
					case 'success':
						jsonUtil.doRequest( 'get', myWebRoot + "myinterfaces/" + myLanguagePath + "/shop/form/orderoverview", {}, { 'showFormInDialog': true } );
						break;
					case 'cancel':
					case 'error':
						jsonUtil.doRequest ( 'get', myWebRoot + 'myinterfaces/' + myLanguagePath + '/shop/form/prepareorder', '', { 'showFormInDialog': true } );
						break;
				}
				break;
			}
		}
	}
}

Event.observe( window, 'load', checkPaymentState );

function checkOnetimelogin ()
{
	var getParam = window.location.search;
	if ( getParam.indexOf( "onetimelogin" ) >= 0 )
	{
		getParam = getParam.replace( '?', '' );
		var params = getParam.split("&");
		for ( i = 0; i < params.length; i++ )
		{
			var temp = params[i].split("=");
			if ( temp[0] == "onetimelogin" )
			{
				switch ( temp[1] )
				{
					case 'true':
						showOnetimeLoginDialog();
						break;
				}
				break;
			}
		}
	}
}

Event.observe( window, 'load', checkOnetimelogin );

function switchAndReposLayer ( layerId, linkObj, closeLayerId, nrCloseLayers, addX, addY, reposX, reposY, layerGroup )
{
    myHideLayerBugControls();
    myReposLayerByLink( layerId, linkObj, addX, addY, reposX, reposY );
    mySwitchLayer( layerId, closeLayerId, nrCloseLayers, layerGroup );
}

var tt;
function showTooltip( text, options )
{
	if( Object.isUndefined( tt ) )
	{
		tt = new My.Tooltip( options );
	}
	tt.show( text );
}

function hideTooltip()
{
	if( !Object.isUndefined( tt ) )
	{
		tt.hide();
	}
}

function addToShopBasket( productkey, quantity, boxIdToFlyAway )
{
	new Ajax.Request( myWebRoot + "myinterfaces/" + myLanguagePath + "/shop/session/basket/items/" + productkey + "/" + quantity, { method: "put", onComplete: showBasketTabOnComplete } );
	if( boxIdToFlyAway != null )
	{
		flyAway( boxIdToFlyAway ); 
	}
}

function addOrderToShopBasket( orderid, boxIdToFlyAway )
{
	new Ajax.Request( myWebRoot + "myinterfaces/" + myLanguagePath + "/shop/session/basket/orders/" + orderid , { method: "put", onComplete: showBasketTabOnComplete } );
	if( boxIdToFlyAway != null )
	{
		flyAway( boxIdToFlyAway ); 
	}
}

function doStoreOrder()
{
	var tmpJSONUtil = jsonUtil;
	if ( forStoreorder )
	{
		tmpJSONUtil = getRieggerJSONUtil();
	}
	tmpJSONUtil.doRequest( 'put', myWebRoot + "myinterfaces/" + myLanguagePath + "/shop/orders", {}, {'onSuccessOnce': goToOrders } );
	return false;
}

function doDeleteOrder( orderid )
{
	jsonUtil.doRequest( 'delete', myWebRoot + "myinterfaces/" + myLanguagePath + "/shop/orders/" + orderid, {}, {'onSuccessOnce': goToOrders } );
	return false;
}

function goToOrders()
{
	location.href = 'ssl-shop-customer-orders---0--0--0--1.html';
}

function showBasketWinOnComplete( originalRequest )
{
	var response = originalRequest.responseText.evalJSON();
	newRieggerWindow ( response.html );
}

function newRieggerWindow ( contentCode )
{
	var opts = Object.clone( defaultOptsMyWindow );
	opts.contentCode = contentCode;
	return new My.Window( opts );
}

function showBasketWin()
{
	if ( !redirectToHTTPS( 'showBasketWin' ) )
	{
	    if( Prototype.Browser.IE )
	    {
	        var agt=navigator.userAgent.toLowerCase();
	    	if (agt.indexOf("msie 8.") !=-1)
	    	{
	            scroll(0,0);
	    	}
	    }
		new Ajax.Request( myWebRoot + "myinterfaces/" + myLanguagePath + "/shop/form/basket", { method: "get", onComplete: showBasketWinOnComplete } );
	}
	return false;
}

var showBasketTabOnCompleteOriRequest = null;
function showBasketTabOnComplete ( originalRequest )
{
	if( Object.isUndefined( basketTab ) )
	{
		if( !Object.isUndefined( originalRequest ) )
		{
			if ( showBasketTabOnCompleteOriRequest == null )
			{
				showBasketTabOnCompleteOriRequest = originalRequest;
				setTimeout( "showBasketTabOnComplete();", 1000 );
			}
			else
			{
				var response1 = showBasketTabOnCompleteOriRequest.responseText.evalJSON();
				var response2 = originalRequest.responseText.evalJSON();
				if ( response2.timeStamp > response1.timeStamp )
				{
					showBasketTabOnCompleteOriRequest = originalRequest;
				}
			}
		}
		else
		{
			setTimeout( "showBasketTabOnComplete();", 1000 );
		}
	}
	else
	{
		if ( showBasketTabOnCompleteOriRequest != null )
		{
			originalRequest = showBasketTabOnCompleteOriRequest;
			showBasketTabOnCompleteOriRequest = null;
		}
		
		if( !Object.isUndefined( originalRequest ) )
		{
			var response = originalRequest.responseText.evalJSON();
			if( !Object.isUndefined( response.basket.items ) )
			{
				basketTab.update( getHtmlCodeForBasketTab( response ) );
			}
			else
			{
				basketTab.hide();
			}
		}
	}
}

function getHtmlCodeForBasketTab( data )
{
	return '<a href="shop-basket.html" onclick="return showBasketWin()"><b>' + myTxtYourShopbasket + '</b><br/>' + data.basket.totalitems + ' ' + ( data.basket.totalitems == 1 ? myTxtBasketProduct : myTxtBasketProducts ) + '<br />' + myTxtBasketPrice + ': ' + data.basket.finaltotaltext + '</a>';
}

function flyAway ( id )
{
	new Prj.FlyAway( id );
	return false;
}

function showAddressesDialog()
{
	jsonUtil.doRequest( 'get', myWebRoot + "myinterfaces/" + myLanguagePath + "/customer/form/addresses", {}, { showFormInDialog : true } );
	return false;
}

function showStandaloneLogin()
{
	if ( !redirectToHTTPS( 'showStandaloneDialog' ) )
	{
		jsonUtil.doRequest( 'get', myWebRoot + "myinterfaces/" + myLanguagePath + "/shop/form/standalonelogin" );
	}
	return false;
}

var forStoreorder = false;
function showStandaloneDialog()
{
	if ( !redirectToHTTPS( 'showStandaloneDialog' ) )
	{
		jsonUtil.doRequest( 'get', myWebRoot + "myinterfaces/" + myLanguagePath + "/shop/form/standalonelogin", {}, { showFormInDialog : true } );
	}
	return false;
}

function showStandaloneDialogForStoreOrders()
{
	forStoreorder = true;
	jsonUtil.doRequest( 'get', myWebRoot + "myinterfaces/" + myLanguagePath + "/shop/form/standalonelogin" );
	return false;
}

function doStandaloneLogin ( login, password )
{
	jsonUtil.doRequest ( 'get', myWebRoot + "myinterfaces/" + myLanguagePath + "/shop/action/standalonelogin?username=" + escape( login ) + "&password=" + escape ( password), {}, { onSuccessOnce: doStandaloneLoginSuccess } );
	return false;
}

function doStandaloneLoginSuccess ( data )
{
	if ( data.userLoggedIn )
	{
		$('serviceNaviBox4').update( '<a href="ssl-shop-customer-logout.html" onclick="return doLogout();">' + txtLogout + '</a>' );
		if ( !data.userIsAGuest )
		{
			updateOrderTab();
			if ( forStoreorder )
			{
				doStoreOrder();
			}
		}
	}
	forStoreorder = false;
}

function showOnetimeLoginDialog ( )
{
	jsonUtil.doRequest ( 'get', myWebRoot + "myinterfaces/" + myLanguagePath + "/common/form/onetimelogin", {}, { showFormInDialog : true } );
	return false;
}

function showOrderOverview()
{
	jsonUtil.doRequest( 'get', myWebRoot + "myinterfaces/" + myLanguagePath + "/shop/form/orderoverview" );
	return false;
}

function switchAndReposLayer ( layerName, linkObj )
{
    mySwitchAndReposLayer(layerName,linkObj,'closelayer', 2, 0, 0, true,false);
}

function redirectToHTTPS ( functionName )
{
	var returnValue = false;
	
	if( document.location.href.indexOf( 'http://' ) >= 0 )
	{
		returnValue = true;
		
		var path = document.location.pathname;
		if ( path.indexOf( '?' ) === -1 )
		{
			path += '?';
		}
		path += '&jsfunction=' + functionName + '()';

		if ( httpHostWithoutProtocol.indexOf( 'www.' ) < 0 )
		{
			httpHostWithoutProtocol = 'www.' + httpHostWithoutProtocol;
		}

		document.location.href = myWebRoot + "mytools/cms-sessionsend.html?targeturl=" + escape( path ) + "&targetdomain=" + "https://" + httpHostWithoutProtocol;
	}
	return returnValue;
}
// ### REFACTORING end ###
