/**
 * @author cashbit
 */

var showpricevat = true;

var mxkartws = 'index.php';
var mxkartistance = null;
var mxkartwin;
var MxKartItem;
var MxBookMarkItem;
var MxKartSessionData;
var mxkarthistory = new Array();
var MxKartRecIdKart = "";
var MxKartGroupHeight = new Array();

function set_mxkartcurrencyid(id)
{
	var request = {
			mxkartcurrencyid :id
		};
		new Ajax.Request(mxkartws, {
			method :'POST',
			parameters :js2php(request),
			onSuccess : function(transport) {
			MxKartDoSearch();
				//alert("zz");
			}
		});

}

function set_mxkartmeasureid(id)
{
	var request = {
			mxkartmeasureid :id
		};
		new Ajax.Request(mxkartws, {
			method :'POST',
			parameters :js2php(request),
			onSuccess : function(transport) {
			MxKartDoSearch();
				//alert("zz");
			}
		});

}

function MxKartGetMxKart() {
}

function MxKartCheckActiveRows() {
	var av = 0;
	this.MxKartSessionData.itemlist.each( function(item) {
		if (typeof (item.active) == 'undefined') {
			item.active = 1;
		}
		av += item.active;
	})

	if (av == 0) {
		return false
	} else {
		return true
	}
}

function MxKartShowKart() {
	if (!MxKartCheckActiveRows()) {
		Ext.Msg.alert(mxkartattention, mxkartisempty);
		return
	}
	var request = {
		action :'mxkartshow',
		sessiondata :this.MxKartSessionData
	};
	new Ajax.Request(mxkartws, {
		method :'POST',
		parameters :js2php(request),
		onSuccess : function(transport) {
			OnMxKartShowKart(transport.responseText);
		}
	});
}

function MxKartShipping() {

	if (!MxKartCheckActiveRows()) {
		Ext.Msg.alert(mxkartattention, mxkartisempty);
		return
	}

	if (!WorkFlowState.loggedin) {
		Ext.Msg.alert(mxkartattention, mxkartyouhavetologin);
		return
	}

	var request = {
		action :'mxkartshipping',
		sessiondata :this.MxKartSessionData
	};

	var lm = new Ext.LoadMask(Ext.getBody()) ;
	lm.show() ;
	new Ajax.Request(mxkartws, {
		method :'POST',
		parameters :js2php(request),
		onSuccess : function(transport) {
			OnMxKartShipping(transport.responseText);
			lm.hide() ;
		}
	});
}
/*
function MxKartShipping_Transport() {

	if (!MxKartCheckActiveRows()) {
		Ext.Msg.alert(mxkartattention, mxkartisempty);
		return
	}

	if (!WorkFlowState.loggedin) {
		Ext.Msg.alert(mxkartattention, mxkartyouhavetologin);
		return
	}

	var request = {
		action :'mxkartshipping_transport',
		sessiondata :this.MxKartSessionData
	};
	new Ajax.Request(mxkartws, {
		method :'POST',
		parameters :js2php(request),
		onSuccess : function(transport) {
			OnMxKartShipping_Transport(transport.responseText);
		}
	});
}
*/
function MxKartConfirmPayment() {

	if (!WorkFlowState.loggedin) {
		Ext.Msg.alert(mxkartattention, mxkartyouhavetologin);
		return
	}

	var MxKartPtype = Ext.get('MxKartPaymentType');
	var MxKartPayments = new Ext.util.MixedCollection();
	var MxKP = MxKartPtype.query('.MxKartPayment');
	MxKartPayments.addAll(MxKP);
	var MxKartPaymentSelected = '';
	MxKartPayments.each( function(item, i, l) {
		if (item.checked) {
			MxKartPaymentSelected = item.value;
		}
	});

	if (MxKartPaymentSelected == '') {
		Ext.Msg.alert('Payment', 'No payment selected');
		return;
	}

	// to do: inserire nel carrello le info in merito a tipo pagamento e tipo
	// trasporto
	var request = {
		action :'mxkartconfirmpayment',
		mxkartpaymentid :MxKartPaymentSelected,
		sessiondata :this.MxKartSessionData
	};
	var lm = new Ext.LoadMask(Ext.getBody()) ;
	lm.show() ;

	new Ajax.Request(mxkartws, {
		method :'POST',
		parameters :js2php(request),
		onSuccess : function(transport) {
			var resp = Ext.util.JSON.decode(transport.responseText);
			OnMxKartConfirmPayment(resp.MOASMESSAGE);
			if (resp.MOASRESULT) {
				MxEmptyKart(true);
			}
			lm.hide() ;

		}
	});
}

function MxKartChoosePayment() {

	if (!WorkFlowState.loggedin) {
		Ext.Msg.alert(mxkartattention, mxkartyouhavetologin);
		return
	}

	var request = {
		action :'mxkartchoosepayment',
		sessiondata :this.MxKartSessionData
	};
	var lm = new Ext.LoadMask(Ext.getBody()) ;
	lm.show() ;
	
	new Ajax.Request(mxkartws, {
		method :'POST',
		parameters :js2php(request),
		onSuccess : function(transport) {
			lm.hide() ;
			OnMxKartChoosePayment(transport.responseText);
		}
	});
}

Ext.onReady( function() {

	MxKartSessionData = {
		username :'',
		userpassword :'',
		moassid :'',
		itemlist :Array(),
		bookmarklist :Array(),
		baskettotal :0,
		lastmenuvoice :'',
		actualkartstatus :'entered',
		statushistory : [ 'entered' ],
		customerinfo : {
			CustomerId :'',
			FirstName :'',
			LastName :'',
			CompanyName :'',
			BillingAddress : {
				Address :'',
				City :'',
				StateProvince :'',
				ZIP :'',
				Country :''
			},
			BillingContact : {
				email :'',
				phone :'',
				fax :'',
				im :''
			},
			DeliveryAddress : {
				Address :'',
				City :'',
				StateProvince :'',
				ZIP :'',
				Country :''
			},
			DeliveryContact : {
				email :'',
				phone :'',
				fax :'',
				im :''
			},
			VatID :''
		}
	};

	this.MxKartRegister = function() {
		var request = {
			action :'mxkartregister',
			sessiondata :this.MxKartSessionData
		};
		new Ajax.Request(mxkartws, {
			method :'POST',
			parameters :js2php(request),
			onSuccess : function(transport) {
				OnMxKartRegister(transport.responseText);
			}
		});

	}

	this.MxKartLogin = function() {
		if (!WorkFlowState.loggedin) {
			var username = $('useridinput');
			var password = $('passwordinput');
			var request = {
				action :'mxkartlogin',
				userid :username.getValue(),
				secret :hex_md5(password.getValue()),
				actionbutton :'Login'
			};
		} else {
			var request = {
				action :'mxkartlogin',
				actionbutton :'Logout',
				sessiondata :this.MxKartSessionData
			};
		}

		new Ajax.Request(mxkartws, {
			method :'POST',
			parameters :js2php(request),
			onSuccess : function(transport) {
				var resp = Ext.util.JSON.decode(transport.responseText);
				if (resp.OK) {
					if (resp.loggedin) {
						if (!WorkFlowState.loggedin) {
							mxKartWorkFlow.GotoStep(login);
						}
					} else {
						if (mxKartWorkFlow.ActualStep.Name != 'shopping') {
							mxKartWorkFlow.GotoStep(shopping);
						}
					}
				} else {
					alert('Error from server:' + resp.MESSAGE);
				}
			}
		});

	}

	this.MxAddToBookMark = function(pinfo) {
		if ($('bk_' + pinfo.CONTENTRECID)) {
			return
		}
		var l = this.MxKartSessionData.bookmarklist.size();
		var b = {
			CONTENTRECID :pinfo.CONTENTRECID,
			CTITLE :pinfo.CTITLE
		}
		this.MxKartSessionData.bookmarklist[l] = b;
		this.MxRenderBookMark(b);
		this.MxKartSaveSession();
	}

	this.FindItem = function(RifArticolo) {
		var itemindex = -1;
		if (this.MxKartSessionData.itemlist) {
			this.MxKartSessionData.itemlist.each( function(item, i) {
				if (item.pinfo.RECID == RifArticolo) {
					itemindex = i;
					throw $break;
				}
			})
		}

		return itemindex;
	}

	this.MxKartSaveSession = function(callback) {
		/*
		 * Ext.state.Manager.set('MsKartSessionData',this.MxKartSessionData) ;
		 * return true ;
		 */

		var request = {
			action :'mxkartsavesession',
			sessiondata :this.MxKartSessionData
		};

		new Ajax.Request(mxkartws, {

			method :'POST',
			parameters :js2php(request),
			onSuccess : function(transport) {
				var resp = Ext.util.JSON.decode(transport.responseText);
				if (resp.OK) {
					if (this.MxKartSessionData.moassid == '')
						this.MxKartSessionData.moassid = resp.moassid;
					if (callback) callback(resp);
				} else {
					alert('Error from server:' + resp.lasterror);
				}
			}
		});
	}

	this.MxKartGetMenuVoice = function(pinfo) {
		var request = {
			action :'mxkartgetmenuvoice',
			moassid :this.MxKartSessionData.moassid,
			recid :pinfo.recid
		};
		/*
		 * var lmv = Ext.get('menuvoice_'+MxKartSessionData.lastmenuvoice) ; if
		 * (lmv){ lmv.setStyle('background-color','white') ; }
		 */

		var lmv = Ext.select("#menuvoice");
		lmv.setStyle('background-color', 'white');
		// Ext.get('menuvoice_'+pinfo.recid).setStyle('background-color','white')
		// ;
		MxKartSessionData.lastmenuvoice = pinfo.recid;
		new Ajax.Request(mxkartws, {

			method :'POST',
			parameters :js2php(request),
			onSuccess : function(transport) {
				var resp = Ext.util.JSON.decode(transport.responseText);
				if (resp.OK) {
					if (MxKartSessionData.moassid == '')
						MxKartSessionData.moassid = resp.moassid;
					if (resp.found) {
						if (OnMxGetMenuVoice != null)
						{
							OnMxUpdateSection(resp.cmsmenuvoice);


						}
						} else {
						var el = Ext.get("body");
						el.update('CONTENT NOT FOUND !');
					}

				} else {
					alert('Error from server:' + resp.lasterror);
				}
			}
		});
	}

	this.MxKartGetContent = function(pinfo) {
		
		var request = {
			action :'mxkartgetcontent',
			username :this.MxKartSessionData.username,
			userpassword :this.MxKartSessionData.userpassword,
			moassid :this.MxKartSessionData.moassid,
			recid :pinfo.recid
		};
		new Ajax.Request(mxkartws, {

			method :'POST',
			parameters :js2php(request),
			onSuccess : function(transport) {
				var resp = Ext.util.JSON.decode(transport.responseText);
				if (resp.OK) {
					if (MxKartSessionData.moassid == '')
						MxKartSessionData.moassid = resp.moassid;
					if (resp.cmscontent != false) {
						if (OnMxGetContent != null)
							OnMxGetContent(resp);
					} else {
						alert('Content not found');
					}

				} else {
					alert('Error from server:' + resp.lasterror);
				}
			}
		});
	}

	this.MxKartProductInfo = function(pinfo) {
		var request = {
			action :'mxkartproductinfo',
			username :this.MxKartSessionData.username,
			userpassword :this.MxKartSessionData.userpassword,
			moassid :this.MxKartSessionData.moassid,
			recid :pinfo.recid
		};
		new Ajax.Request(mxkartws, {

			method :'POST',
			parameters :js2php(request),
			onSuccess : function(transport) {
				var resp = Ext.util.JSON.decode(transport.responseText);
				if (resp.OK) {
					if (MxKartSessionData.moassid == '')
						MxKartSessionData.moassid = resp.moassid;
					if (resp.productinfo != false) {
						if (OnMxProductInfo != null)
							OnMxProductInfo(resp);
					} else {
						alert('Product not found');
					}

				} else {
					alert('Error from server:' + resp.lasterror);
				}
			}
		});
	}

	this.MxEmptyKart = function(noquestion) {

		function DoMxEmptyKart() {
			MxKartEmptyKartRender();
			this.MxKartSessionData.itemlist = Array();
			this.MxBasketTotal();
			if (this.OnMxEmptyKart != null)
				this.OnMxEmptyKart();
			this.MxKartSaveSession();
		}

		if (noquestion) {
			DoMxEmptyKart();
			return
		}

		Ext.Msg.show( {
			title :mxkartareyousure,
			msg :mxkartareyousureemptykart,
			buttons :Ext.Msg.YESNO,
			fn : function(b) {
				if (b == 'yes') {
					DoMxEmptyKart()
				}
			},
			animEl :'elId',
			icon :Ext.MessageBox.QUESTION
		});

	}

	this.MxAddToKart = function(KartItem) {
		var idx = FindItem(KartItem.RifArticolo);
		if (idx == -1) {
			// retrieval information about item
			var request = {
				action :'mxkartproductinfo',
				username :this.MxKartSessionData.username,
				userpassword :this.MxKartSessionData.userpassword,
				moassid :this.MxKartSessionData.moassid,
				recid :KartItem.RifArticolo
			};
			new Ajax.Request(mxkartws, {
				method :'POST',
				parameters :js2php(request),
				onSuccess : function(transport) {
					var resp = Ext.util.JSON.decode(transport.responseText);
					if (resp.OK) {
						if (MxKartSessionData.moassid == '')
							MxKartSessionData.moassid = resp.moassid;
						if (resp.productinfo != false) {
							// ok for inserting item in cart
				var NewKartItem = {
					pinfo :resp.productinfo[0],
					qty :KartItem.qty,
					active :1
				}

				this.MxKartSessionData.itemlist.push(NewKartItem);
				if (this.OnMxAddToKart != null)
					this.OnMxAddToKart(NewKartItem);
				this.MxBasketTotal();
			} else {
				alert('Product not found');
			}

		} else {
			alert('Error from server:' + resp.lasterror);
		}
	}
			});
		} else {
			this.MxKartSessionData.itemlist[idx].qty += (KartItem.qty*1);
			if (this.OnMxUpdToKart != null)
				this.OnMxUpdToKart(this.MxKartSessionData.itemlist[idx]);
			this.MxBasketTotal();
		}

	}

	this.MxBasketTotal = function() {
		var tot = 0;
		var totvat = 0;
		
		this.MxKartSessionData.itemlist.each( function(item) {
			if (typeof (item.active) == 'undefined') {
				item.active = 1;
			}
			tot += item.pinfo.PREZZO * item.qty * item.active;
			totvat += item.pinfo.PREZZOIVATO * item.qty * item.active;
		})
		this.MxKartSessionData.baskettotal = tot;
		this.MxKartSessionData.baskettotalvat = totvat;

		if (this.OnMxBasketTotal != null)
		{
			if (showpricevat==false)
				this.OnMxBasketTotal(tot);
			else
				this.OnMxBasketTotal(totvat);
				
		}
		this.MxKartSaveSession();
	}

	MxSendKart = function() {

		Ext.Msg.wait('Loading...');
		var request = {
			action :'mxsendkart',
			sessiondata :this.MxKartSessionData
		};

		new Ajax.Request(mxkartws, {

			method :'POST',
			parameters :js2php(request),
			onSuccess : function(transport) {
				var resp = Ext.util.JSON.decode(transport.responseText);
				if (resp.OK) {
					MxEmptyKart();
					if (this.moassid == '')
						this.moassid = resp.moassid;
					MxKartRecIdKart = resp.RecIdKart;
					return true;
				} else {
					alert('Error from server:' + resp.lasterror);
					return false;
				}
			}
		});
		Ext.Msg.hide();
	}

	// if (0)
		{
			// MxKartCreateSearchEngine()
			// OnMxKartInit();
		}
		var rid = new Ajax.Request(
				mxkartws,
				{
					method :'POST',
					parameters :js2php( {
						action :'mxkartloadsession'
					}),
					onSuccess : function(transport) {
						var resp = Ext.util.JSON.decode(transport.responseText);
						// alert(transport.responseText);
						if (resp.OK) {

							if (resp.loggedin) {
								if (!WorkFlowState.loggedin) {
									mxKartWorkFlow.GotoStep(login);
								}
							} else {
								if (mxKartWorkFlow.ActualStep != null) {
									if (mxKartWorkFlow.ActualStep.Name != 'shopping') {
										mxKartWorkFlow.GotoStep(shopping);
									}
								} else {
									mxKartWorkFlow.GotoStep(shopping);
								}

							}
							if (resp.sessiondata == '') {
								resp.sessiondata = null;
							}
							if (resp.sessiondata != null) {
								this.MxKartSessionData = resp.sessiondata;
								if (!this.MxKartSessionData.itemlist) {
									this.MxKartSessionData.itemlist = Array();
								}
								if (!this.MxKartSessionData.bookmarklist) {
									this.MxKartSessionData.bookmarklist = Array();
								}
								// listing basket content

								var basket = $('basketlist');
								basket.update();
								if (this.MxKartSessionData.itemlist) {
									this.MxKartSessionData.itemlist
											.each( function(item, i) {
												new Insertion.Bottom(
														basket,
														this
																.RenderKartItem(item));
											})
								}

								// listing bookmarks content
								var bookmarks = $('bookmarks');
								bookmarks.update();
								if (this.MxKartSessionData.bookmarklist) {
									this.MxKartSessionData.bookmarklist
											.each( function(item, i) {
												this.MxRenderBookMark(item);
											})
								}
							}

							this
									.RenderBasketTotal(this.MxKartSessionData.baskettotal);

							if (this.MxKartSessionData.moassid == '')
								this.MxKartSessionData.moassid = resp.moassid;
							// mxKartWorkFlow.GotoStep(shopping) ;

							Ext.get('langid_' + resp.langid).setStyle('border',
									'1px solid yellow');
							// Ext.get('langid_' +
							// resp.langid).setStyle('color','black') ;

							Ext.get('currid_' + resp.currency).setStyle(
									'border', '1px solid yellow');
							// Ext.get('currid_' +
							// resp.currency).setStyle('color','black') ;

							Ext.get('measid_' + resp.measure).setStyle(
									'border', '1px solid yellow');
							// Ext.get('measid_' +
							// resp.measure).setStyle('color','black') ;

						} else {
							alert('Error from server:' + resp.lasterror);
						}
					}
				});

		if (window.location.href.split("recid=")[1]!=undefined)
		{
			MxKartGetMenuVoice({recid:'CASH200809221240390737000007'});
			//MxKartCreateSearchEngine();
			OnMxKartInit();
			MxKartGetContent({recid:window.location.href.split("recid=")[1]});
		}

		
	});

/**
 * 
 * @param node
 * @return
 */
function execJS(node) 
{

	var strExec="";
	var bSaf = (navigator.userAgent.indexOf('Safari') != -1);
	var bOpera = (navigator.userAgent.indexOf('Opera') != -1);
	var bMoz = (navigator.appName == 'Netscape');
  	// il nodo non esiste piu
  	if (node == undefined || !node.getElementsByTagName('script'))
  		return;
  	var st = node.getElementsByTagName('script');
 
  	for(var i=0;i<st.length; i++) 
  	{
    	if (bSaf) 
    	{
    		strExec = st[i].innerHTML;
    	}
    	else
    		if (bOpera) 
    		{
      			strExec = st[i].text;
    		}
    		else 
    			if (bMoz) 
    			{
     				 strExec = st[i].textContent;
    			}
    			else 
    			{
					strExec = st[i].text;
    			}
    	try 
    	{
    		eval(strExec)
			//setTimeout('eval(strExec)', 0);
    	}
    	catch(e) 
    	{
			alert(strExec+" "+e);
    	}
	}
}
/**
 * 
 * 
 * 
 * @return
 */
function ForgotPassword()
{
	if (!WorkFlowState.loggedin) {
		
		var username = $('useridinput');
		name=username.getValue()
		if (name=="" || name== undefined)
		{
			alert("Per recuperare la password insirisci prima l' e-mail e clicca su 'Password dimenticata'")
			return;
		}	
		var request = {
			action :'sendpassword',
			email :username.getValue(),
			actionbutton :'Login'
		};
		new Ajax.Request(mxkartws, {
			method :'POST',
			parameters :js2php(request),
			onSuccess : function(transport) {
			var el = Ext.get("mxkartmenuvoicecontents");
			el.update(transport.responseText);
		
		}
	   });
	}
}

function ChangePassword() {
	var request = {
		action :'changepassword',
		sessiondata :this.MxKartSessionData
	};
	new Ajax.Request(mxkartws, {
		method :'POST',
		parameters :js2php(request),
		onSuccess : function(transport) {
		if (transport.responseText=="")
				return;
			var el = Ext.get("mxkartmenuvoicecontents");
			el.update(transport.responseText);
		}
	});
}

