
AuctionManagerAPI=WL.Class(Object,function()
{this.apiid=new WL.Objects.Guid("AFC02E2D-6B31-4e29-A66B-F3FF722BB770");},function(type)
{var errorHandler=WL.Utils.requestErrorHandler;type.apiRequest=WL.Utils.webRequest;type.queryAuctionsByMask=function(maskObject,returner)
{var request=new WL.ServerAPI.Request(this.apiid,"QueryAuctionsByMask");request.body.writeObject("maskObject",maskObject);var result={error:true};return this.apiRequest(returner,request,function(reader)
{result.error=false;result.list=reader.readObjectArray("auctions/a",Auction);result.users=reader.readObjectArray("users/u",User);return result;},errorHandler,result);}
type.queryProductsByMask=function(maskObject,returner)
{var request=new WL.ServerAPI.Request(this.apiid,"QueryProductsByMask");request.body.writeObject("maskObject",maskObject);var result={error:true};return this.apiRequest(returner,request,function(reader)
{result.error=false;var products=reader.readObjectArray("products/p",ProductDesc);var auctions=reader.readObjectArray("auctions/a",Auction);for(var i=0;i<products.length;++i)
{products[i].auctions=[];for(var j=0;j<auctions.length;++j)
if(products[i].id==auctions[j].productID)
products[i].auctions.push(auctions[j]);}
result.list=products;return result;},errorHandler,result);}
type.closeAuction=function(auctionID,winner,winningBid,returner)
{var request=new WL.ServerAPI.Request(this.apiid,"CloseAuction");request.body.writeElementString("auctionID",auctionID);request.body.writeElementString("winner",winner);request.body.writeElementString("winningBid",winningBid);return this.apiRequest(returner,request,function(){return{error:false};},errorHandler,{error:true});}
type.removeAuction=function(auctionID,returner)
{var request=new WL.ServerAPI.Request(this.apiid,"RemoveAuction");request.body.writeElementString("auctionID",auctionID);return this.apiRequest(returner,request,function(){return{error:false};},errorHandler,{error:true});}
type.startAuction=function(productID,useCustomSettings,duration,startPrice,upPeriod,returner)
{var request=new WL.ServerAPI.Request(this.apiid,"StartAuction");request.body.writeElementString("productID",productID);request.body.writeBoolean("useCustom",useCustomSettings);request.body.writeTime("duration",duration);request.body.writeElementString("startPrice",startPrice);request.body.writeTime("upPeriod",upPeriod);var result={error:true};return this.apiRequest(returner,request,function(reader)
{result.auction=reader.readObject2("auction",Auction);result.error=result.auction.id==0;return result;},errorHandler,result);}
type.emailOutbid=function(auctionID,bSet,returner)
{var request=new WL.ServerAPI.Request(this.apiid,"EmailOutbid");request.body.writeElementString("auctionID",auctionID);request.body.writeElementString("bSet",bSet);var result={error:true};return this.apiRequest(returner,request,function(reader)
{result.error=false;return result;},errorHandler,result);}
type.makeBid=function(auctionID,bid,returner)
{var request=new WL.ServerAPI.Request(this.apiid,"MakeBid");request.body.writeElementString("auctionID",auctionID);request.body.writeElementString("bid",bid);var result={error:true};return this.apiRequest(returner,request,function(reader)
{result.error=false;result.info=reader.readObject2("auctionInfo",AuctionInfo);return result;},errorHandler,result);}
type.addToWatchlist=function(auctionID,returner)
{var request=new WL.ServerAPI.Request(this.apiid,"AddToWatchlist");request.body.writeElementString("auctionID",auctionID);var result={error:true};return this.apiRequest(returner,request,function(reader)
{result.error=false;result.info=reader.readObject2("auctionInfo",AuctionInfo);return result;},errorHandler,result);}
type.getAuctionInfo=function(auctionIDs,returner,hidden)
{var request=new WL.ServerAPI.Request(this.apiid,"GetAuctionInfo");request.body.writeArray("auctionIDs","id",auctionIDs);var result={error:true};return this.apiRequest(returner,request,function(reader)
{result.error=false;result.list=reader.readObjectArray("auctionsInfo/i",AuctionInfo);return result;},errorHandler,result,hidden);}
type.setAutoBid=function(auctionID,maxBidValue,returner)
{var request=new WL.ServerAPI.Request(this.apiid,"SetAutoBid");request.body.writeElementString("auctionID",auctionID);request.body.writeElementString("bid",maxBidValue);var result={error:true};return this.apiRequest(returner,request,function(reader)
{result.error=false;result.info=reader.readObject2("auctionInfo",AuctionInfo);return result;},errorHandler,result);}
type.queryBidHistory=function(auctionID,returner)
{var request=new WL.ServerAPI.Request(this.apiid,"QueryBidHistory");request.body.writeElementString("auctionID",auctionID);var result={error:true};return this.apiRequest(returner,request,function(reader)
{result.error=false;result.list=reader.readObjectArray("bids/b",Bid);result.users=reader.readObjectArray("users/u",User);return result;},errorHandler,result);}
type.sendSuggestion=function(auctionID,text,returner)
{var request=new WL.ServerAPI.Request(this.apiid,"SendSuggestion");request.body.writeElementString("auctionID",auctionID);request.body.writeElementString("text",text);return this.apiRequest(returner,request,function(){return{error:false};},errorHandler,{error:true});}});window.auctionManagerAPI=new AuctionManagerAPI();AuctionMaskObject=WL.Class(Object,function()
{this.maskProduct=false;this.productIDs=[];this.maskCategory=false;this.categoryIDs=[];this.maskState=false;this.states=[];this.maskRange=false;this.from=0;this.to=0;this.dateStopSort=0;},function(type)
{type.equals=function(maskObject)
{if(this.maskProduct!=maskObject.maskProduct||(this.maskProduct&&!this.productIDs.equals(maskObject.productIDs)))return false;if(this.maskCategory!=maskObject.maskCategory||(this.maskCategory&&!this.categoryIDs.equals(maskObject.categoryIDs)))return false;if(this.maskState!=maskObject.maskState||(this.maskState&&!this.states.equals(maskObject.states)))return false;if(this.maskRange!=maskObject.maskRange||(this.maskRange&&!(this.from==maskObject.from&&this.to==maskObject.to)))return false;if(this.dateStopSort!=maskObject.dateStopSort)return false;return true;}
type.write=function(writer)
{writer.writeBoolean("maskProduct",this.maskProduct);writer.writeArray("productIDs","id",this.productIDs);writer.writeBoolean("maskCategory",this.maskCategory);writer.writeArray("categoryIDs","id",this.categoryIDs);writer.writeBoolean("maskState",this.maskState);writer.writeArray("states","s",this.states);writer.writeBoolean("maskRange",this.maskRange);writer.writeElementString("from",this.from);writer.writeElementString("to",this.to);writer.writeElementString("dateStopSort",this.dateStopSort);}});
