var getDiscount = AspectScript.i13n.varWrite("getDiscount",AspectScript.i13n.wrap(function(){return (function getDiscount(id){ {var getDiscount = arguments.callee = arguments.callee.wrapper;return AspectScript.i13n.call2(AspectScript.i13n.propRead(AspectScript.globalObject,"Math"),"floor",[AspectScript.i13n.call2(AspectScript.i13n.propRead(AspectScript.globalObject,"Math"),"random",[],this) * 100],this) / 100; }})}),undefined); var getDiscountMax3 = AspectScript.i13n.varWrite("getDiscountMax3",AspectScript.i13n.wrap(function(){return (function getDiscountMax3(list,discounts){ {var getDiscountMax3 = arguments.callee = arguments.callee.wrapper;var indexsMax = (AspectScript.i13n.varWrite("indexsMax", AspectScript.i13n.creation4([0, 0, 0]), undefined)); AspectScript.i13n.call2((AspectScript.i13n.varRead("list",list)),"map",[AspectScript.i13n.wrap(function(){return (function (product,index){ {arguments.callee = arguments.callee.wrapper;var max1 = (AspectScript.i13n.varWrite("max1", AspectScript.i13n.propRead((AspectScript.i13n.varRead("list",list)),AspectScript.i13n.propRead((AspectScript.i13n.varRead("indexsMax",indexsMax)),0)), undefined)); var max2 = (AspectScript.i13n.varWrite("max2", AspectScript.i13n.propRead((AspectScript.i13n.varRead("list",list)),AspectScript.i13n.propRead((AspectScript.i13n.varRead("indexsMax",indexsMax)),1)), undefined)); var max3 = (AspectScript.i13n.varWrite("max3", AspectScript.i13n.propRead((AspectScript.i13n.varRead("list",list)),AspectScript.i13n.propRead((AspectScript.i13n.varRead("indexsMax",indexsMax)),2)), undefined)); if(AspectScript.i13n.call2((AspectScript.i13n.varRead("product",product)),"getPrice",[],this) * AspectScript.i13n.propRead((AspectScript.i13n.varRead("discounts",discounts)),AspectScript.i13n.call2((AspectScript.i13n.varRead("product",product)),"getId",[],this)) > AspectScript.i13n.call2((AspectScript.i13n.varRead("max1",max1)),"getPrice",[],this) * AspectScript.i13n.propRead((AspectScript.i13n.varRead("discounts",discounts)),AspectScript.i13n.call2((AspectScript.i13n.varRead("max1",max1)),"getId",[],this))){ AspectScript.i13n.propWrite((AspectScript.i13n.varRead("indexsMax",indexsMax)),2,AspectScript.i13n.propRead((AspectScript.i13n.varRead("indexsMax",indexsMax)),1)); AspectScript.i13n.propWrite((AspectScript.i13n.varRead("indexsMax",indexsMax)),1,AspectScript.i13n.propRead((AspectScript.i13n.varRead("indexsMax",indexsMax)),0)); AspectScript.i13n.propWrite((AspectScript.i13n.varRead("indexsMax",indexsMax)),0,(AspectScript.i13n.varRead("index",index))); } else { if(AspectScript.i13n.call2((AspectScript.i13n.varRead("product",product)),"getPrice",[],this) * AspectScript.i13n.propRead((AspectScript.i13n.varRead("discounts",discounts)),AspectScript.i13n.call2((AspectScript.i13n.varRead("product",product)),"getId",[],this)) > AspectScript.i13n.call2((AspectScript.i13n.varRead("max2",max2)),"getPrice",[],this) * AspectScript.i13n.propRead((AspectScript.i13n.varRead("discounts",discounts)),AspectScript.i13n.call2((AspectScript.i13n.varRead("max2",max2)),"getId",[],this))){ AspectScript.i13n.propWrite((AspectScript.i13n.varRead("indexsMax",indexsMax)),2,AspectScript.i13n.propRead((AspectScript.i13n.varRead("indexsMax",indexsMax)),1)); AspectScript.i13n.propWrite((AspectScript.i13n.varRead("indexsMax",indexsMax)),1,(AspectScript.i13n.varRead("index",index))); } else { if(AspectScript.i13n.call2((AspectScript.i13n.varRead("product",product)),"getPrice",[],this) * AspectScript.i13n.propRead((AspectScript.i13n.varRead("discounts",discounts)),AspectScript.i13n.call2((AspectScript.i13n.varRead("product",product)),"getId",[],this)) > AspectScript.i13n.call2((AspectScript.i13n.varRead("max3",max3)),"getPrice",[],this) * AspectScript.i13n.propRead((AspectScript.i13n.varRead("discounts",discounts)),AspectScript.i13n.call2((AspectScript.i13n.varRead("max3",max3)),"getId",[],this))){ AspectScript.i13n.propWrite((AspectScript.i13n.varRead("indexsMax",indexsMax)),2,(AspectScript.i13n.varRead("index",index))); } } } }})})],this); return (AspectScript.i13n.varRead("indexsMax",indexsMax)); }})}),undefined); var applyDiscount = AspectScript.i13n.varWrite("applyDiscount",AspectScript.i13n.wrap(function(){return (function applyDiscount(indexsMax3,products,discounts){ {var applyDiscount = arguments.callee = arguments.callee.wrapper;AspectScript.i13n.call2((AspectScript.i13n.varRead("products",products)),"map",[AspectScript.i13n.wrap(function(){return (function (product,index){ {arguments.callee = arguments.callee.wrapper;for(var i = (AspectScript.i13n.varWrite("i", 0, undefined));(AspectScript.i13n.varRead("i",i)) < AspectScript.i13n.propRead((AspectScript.i13n.varRead("indexsMax3",indexsMax3)),"length");(i = AspectScript.i13n.varWrite("i",i+1))){ if((AspectScript.i13n.varRead("index",index)) == AspectScript.i13n.propRead((AspectScript.i13n.varRead("indexsMax3",indexsMax3)),(AspectScript.i13n.varRead("i",i)))){ AspectScript.i13n.call2((AspectScript.i13n.varRead("product",product)),"setPrice",[AspectScript.i13n.call2((AspectScript.i13n.varRead("product",product)),"getPrice",[],this) * (1 - AspectScript.i13n.propRead((AspectScript.i13n.varRead("discounts",discounts)),AspectScript.i13n.call2((AspectScript.i13n.varRead("product",product)),"getId",[],this)))],this); } } }})})],this); return (AspectScript.i13n.varRead("products",products)); }})}),undefined); var showDiscounts = AspectScript.i13n.varWrite("showDiscounts",AspectScript.i13n.wrap(function(){return (function showDiscounts(indexsMax3,products,discounts){ {var showDiscounts = arguments.callee = arguments.callee.wrapper;var text = (AspectScript.i13n.varWrite("text", "The followings discounts were applied:\n", undefined)); AspectScript.i13n.call2((AspectScript.i13n.varRead("indexsMax3",indexsMax3)),"map",[AspectScript.i13n.wrap(function(){return (function (index){ {arguments.callee = arguments.callee.wrapper;text = AspectScript.i13n.varWrite("text", text + "- " + AspectScript.i13n.propRead((AspectScript.i13n.varRead("products",products)),(AspectScript.i13n.varRead("index",index))) + " , " + AspectScript.i13n.propRead((AspectScript.i13n.varRead("discounts",discounts)),(AspectScript.i13n.varRead("index",index))) + "\n", text); }})})],this); AspectScript.i13n.call(AspectScript.globalObject,AspectScript.i13n.propRead(AspectScript.globalObject,"alert"),[(AspectScript.i13n.varRead("text",text))],this); }})}),undefined); var except = AspectScript.i13n.propWrite(AspectScript.globalObject, "except", AspectScript.i13n.propRead(AspectScript.i13n.propRead(AspectScript.i13n.propRead(AspectScript.i13n.propRead(AspectScript.globalObject,"OTM"),"StatefulAspect"),"lc"),"EXCEPT")); var single = AspectScript.i13n.propWrite(AspectScript.globalObject, "single", AspectScript.i13n.propRead(AspectScript.i13n.propRead(AspectScript.i13n.propRead(AspectScript.i13n.propRead(AspectScript.globalObject,"OTM"),"StatefulAspect"),"mm"),"SINGLE")); var SEs = AspectScript.i13n.propWrite(AspectScript.globalObject, "SEs", AspectScript.i13n.propRead(AspectScript.i13n.propRead(AspectScript.globalObject,"OTM"),"Sequences")); var cd = AspectScript.i13n.propWrite(AspectScript.globalObject, "cd", AspectScript.i13n.wrap(function(){return (function (event,env){ {arguments.callee = arguments.callee.wrapper;return ((AspectScript.i13n.call2((AspectScript.i13n.creation(3,AspectScript.i13n.propRead(AspectScript.globalObject,"Date"),[2010, 10, 25])),"getTime",[],this) < AspectScript.i13n.call2((AspectScript.i13n.creation(0,AspectScript.i13n.propRead(AspectScript.globalObject,"Date"),[])),"getTime",[],this))?((AspectScript.i13n.varRead("env",env))):(false)); }})})); var ap = AspectScript.i13n.propWrite(AspectScript.globalObject, "ap", AspectScript.i13n.wrap(function(){return (function (event,env){ {arguments.callee = arguments.callee.wrapper;if(AspectScript.i13n.call2((AspectScript.i13n.varRead("event",event)),"isExec",[],this) && AspectScript.i13n.propRead((AspectScript.i13n.varRead("event",event)),"fun") == AspectScript.i13n.propRead(AspectScript.i13n.propRead(AspectScript.globalObject,"cart"),"addProduct")){ var p = (AspectScript.i13n.varWrite("p", AspectScript.i13n.propRead(AspectScript.i13n.propRead((AspectScript.i13n.varRead("event",event)),"args"),0), undefined)); var d = (AspectScript.i13n.varWrite("d", AspectScript.i13n.call(AspectScript.globalObject,AspectScript.i13n.propRead(AspectScript.globalObject,"getDiscount"),[AspectScript.i13n.call2((AspectScript.i13n.varRead("p",p)),"getId",[],this)],this), undefined)); return AspectScript.i13n.call2(AspectScript.i13n.call2((AspectScript.i13n.varRead("env",env)),"bind",["product", (AspectScript.i13n.varRead("p",p))],this),"bind",["discount", (AspectScript.i13n.varRead("d",d))],this); } return false; }})})); var co = AspectScript.i13n.propWrite(AspectScript.globalObject, "co", AspectScript.i13n.call2(AspectScript.i13n.propRead(AspectScript.globalObject,"SEs"),"call",[AspectScript.i13n.propRead(AspectScript.globalObject,"checkout")],this)); var advice = AspectScript.i13n.propWrite(AspectScript.globalObject, "advice", AspectScript.i13n.wrap(function(){return (function (event,env){ {arguments.callee = arguments.callee.wrapper;var products = (AspectScript.i13n.varWrite("products", AspectScript.i13n.propRead((AspectScript.i13n.varRead("env",env)),"product"), undefined)); var discounts = (AspectScript.i13n.varWrite("discounts", AspectScript.i13n.propRead((AspectScript.i13n.varRead("env",env)),"discount"), undefined)); var indexMax3 = (AspectScript.i13n.varWrite("indexMax3", AspectScript.i13n.call(AspectScript.globalObject,AspectScript.i13n.propRead(AspectScript.globalObject,"getDiscountMax3"),[(AspectScript.i13n.varRead("products",products)), (AspectScript.i13n.varRead("discounts",discounts))],this), undefined)); AspectScript.i13n.call(AspectScript.globalObject,AspectScript.i13n.propRead(AspectScript.globalObject,"showDiscounts"),[(AspectScript.i13n.varRead("indexMax3",indexMax3)), (AspectScript.i13n.varRead("products",products)), (AspectScript.i13n.varRead("discounts",discounts))],this); return AspectScript.i13n.call2((AspectScript.i13n.varRead("event",event)),"proceed",[AspectScript.i13n.call(AspectScript.globalObject,AspectScript.i13n.propRead(AspectScript.globalObject,"applyDiscount"),[(AspectScript.i13n.varRead("indexMax3",indexMax3)), (AspectScript.i13n.varRead("products",products)), (AspectScript.i13n.varRead("discounts",discounts))],this)],this); }})})); var rd = AspectScript.i13n.propWrite(AspectScript.globalObject, "rd", AspectScript.i13n.creation(3,AspectScript.i13n.propRead(AspectScript.i13n.propRead(AspectScript.globalObject,"OTM"),"StatefulAspect"),[AspectScript.i13n.call2(AspectScript.i13n.propRead(AspectScript.globalObject,"SEs"),"repeatUntil",[AspectScript.i13n.propRead(AspectScript.globalObject,"ap"), AspectScript.i13n.propRead(AspectScript.globalObject,"co")],this), AspectScript.i13n.call(AspectScript.globalObject,AspectScript.i13n.propRead(AspectScript.globalObject,"except"),[AspectScript.i13n.creation(1,AspectScript.i13n.propRead(AspectScript.i13n.propRead(AspectScript.globalObject,"OTM"),"StatefulAspect"),[AspectScript.i13n.propRead(AspectScript.globalObject,"cd")])],this), AspectScript.i13n.propRead(AspectScript.globalObject,"single")])); AspectScript.i13n.call2(AspectScript.i13n.propRead(AspectScript.globalObject,"OTM"),"deploy",[AspectScript.i13n.propRead(AspectScript.i13n.propRead(AspectScript.globalObject,"OTM"),"AROUND"), AspectScript.i13n.propRead(AspectScript.globalObject,"rd"), AspectScript.i13n.propRead(AspectScript.globalObject,"advice")],this);