/**-- Functions to provide Ajax-BasketButton --**/
function ICAjaxAddToBasket(locale,getRes,resContainerID,hookFunctionName,showBusyHover,empty) {
	var AjaxLineItemCount = '';
	var self = this;
	//this.WebServerScriptUrlSSL = window.location.protocol+'//'+window.location.host+'/epages/Store.sf/';
	this.WebServerScriptUrlSSL = epages.vars.BaseUrl;
	
	var _initICAjaxAddToBasket = function() {
		dojo.query('.CustomButton.AddToBasketButton input, .CustomButton.AddToBasketButton button').onclick( function(e) {
			//reload page if it is the first product to get epages token
			if((empty != null) && (empty != true)) {
				e.preventDefault();
				//send url with ChangeAction
				_ICAjaxAddToBasket(e);
			}
			else {
				_ICShowBasketHover('show');
			}
		});
	}
	
	var _ICAjaxAddToBasket = function(event) {
		var basketForm     = event.target.form;
		var ChangeObjectID = -1;
		var ChangeAction   = ''; 
		var ViewAction     = 'ICViewAjaxBasketLineItemCount';
		var ViewObjectID   = 0;
		
		COInputObj    = basketForm.ChangeObjectID;
		CAInputObj    = basketForm.ChangeAction;
		ViewActionObj = basketForm.ViewAction;
		ViewObjectObj = basketForm.ViewObjectID;
	
		if((ViewActionObj != null) && (ViewActionObj != null)) {
			ViewActionObj.value = 'ICViewAjaxBasketLineItemCount';
		}

		if((ViewObjectObj != null) && (ViewObjectObj != null)) {
			ViewObjectID = ViewObjectObj.value;
		}

		if((COInputObj != null) && (CAInputObj != null)) {
			ChangeObjectID = COInputObj.value;
			ChangeAction   = CAInputObj.value;
		}

		var resContainerObj = dojo.byId(resContainerID);
		if((ChangeObjectID != -1) && (ChangeAction != '')) {
			if((getRes != null) && (getRes == 1)) {
				if((showBusyHover != null) && (showBusyHover == 1)) {
					_ICShowBasketHover('show');
				}
				dojo.xhrPost({
					url: self.WebServerScriptUrlSSL+'?ViewAction=ICViewAjaxBasketLineItemCount&ViewObjectID='+ChangeObjectID,
					form: basketForm,
					load: function(data) {
						data = data.replace(/<\!--(.*)-->/g, '');				  	
						data = data.replace(/\t/g, '');
						data = data.replace(/\n/g, '');
						data = dojo.trim(data);
						AjaxLineItemCount = data;
						//get full result
						dojo.xhrGet({
							url: self.WebServerScriptUrlSSL+'?ChangeAction=BlockMonitor&ViewAction=ICViewAjaxBasketResult&ViewObjectID='+ViewObjectID,
							handleAs: 'text',
							preventCache: true,
							load: function (data) {
							  data = data.replace(/<\!--(.*)-->/g, '');				  	
							  data = data.replace(/\t/g, '');
							  data = data.replace(/\n/g, '');
							  data = dojo.trim(data);
								resContainerObj.innerHTML = data;
								
								//enhance object with get-function only when result is ready
								self.getAjaxLineItemCount = function() {
									return AjaxLineItemCount;
								}
								
								//eval hook-function
								if((hookFunctionName != null) && (hookFunctionName != '')) {
									eval(hookFunctionName);
								}
								
								//refresh the baseURL
								//_ICRefreshBaseURL();
								
								//hide the hover to show the basket ist busy
								if((showBusyHover != null) && (showBusyHover == 1)) {
									_ICShowBasketHover('hide');
								}
							},
							error: function(data) {
								console.log(data);
							}
						});
					},
					error: function(data) {
						console.log(data);
					}
				});
			}
			else {
				dojo.xhrPost({
					url: self.WebServerScriptUrlSSL+'?ChangeObjectID='+ChangeObjectID+'&ChangeAction='+ChangeAction,
					load: function() {
						//hide the hover to show the basket ist busy
						if((showBusyHover != null) && (showBusyHover == 1)) {
							_ICShowBasketHover('hide');
						}
					}
				});
			}
		}
	}
	
	var _ICShowBasketHover = function(state) {
		var HTMLPattern = '';
		
		if((state != null) && (state === 'show')) {
			HTMLPattern += '<div class="BasketHoverWrapper">';
			HTMLPattern += '<div class="BasketHoverHeader">';
			HTMLPattern += BasketHoverHeaderText;
			HTMLPattern += '</div>';
			HTMLPattern += '<div class="BasketHoverBody">';
			HTMLPattern += BasketHoverBodyText;
			HTMLPattern += '</div>';
			HTMLPattern += '</div>';
			
			var BasketHoverAnchor = dojo.create("div",{
												id:'BasketHoverAnchorID',
												className:'BasketHoverAnchor'
											},dojo.body());
			
			BasketHoverAnchor.innerHTML = HTMLPattern;
			
			var vp        = dijit.getViewport();
			var BHAWidth  = dojo.style(BasketHoverAnchor,'width');
			var BHAHeight = dojo.style(BasketHoverAnchor,'height');
			
			var xPosition = vp.w/2 - (BHAWidth/2)  + vp.l;
			var yPosition = vp.h/2 - (BHAHeight/2) + vp.t;
			
			dojo.marginBox(BasketHoverAnchor, {l:xPosition , t:yPosition });
		}
		else {
			var BasketHoverAnchor = dojo.byId('BasketHoverAnchorID');
			if(BasketHoverAnchor != null) {
				dojo.destroy(BasketHoverAnchor);
			}
		}
	}
	
	var _ICRefreshBaseURL = function() {
		var SessionBoxObj = dojo.byId('MiniBasketSessionBoxID');
		if ((SessionBoxObj != null) && (SessionBoxObj != '')) {
			var SessionData = SessionBoxObj.innerHTML.split('_');
			var SecTok = 'sec'+SessionData[0];
			var SessID = SessionData[1];
			
			var base = dojo.query('base')[0];
			if ((base != null) && (base != '')) {
				var href = base.href;
				href = href.split(locale)[0];
				console.log(href);
				base.href = href+SecTok+'&SessionID='+SessID;
			}
		}
	}
	
	_initICAjaxAddToBasket();
}

