﻿// JScript File

// Copyright 2001-2006 2night Entertainment Corp.
// The total or partial reproduction of its contents is prohibited

/*--------------------------------------------------------
 *  QuickPhoto.Order: Ajax style album management js Class 
 *  manage album, photos and individal photo
 */ 
Type.registerNamespace("QuickPhotoClient");

QuickPhotoClient.Cart = function(sumCtrl)
{
    this._cartPage = "Cart.aspx";
    this._order = null;
    this._curCtrl = null;
    this._sumCtrl = sumCtrl;
    QuickPhotoClient.Cart.initializeBase(this);
    this.Init();
}

QuickPhotoClient.Cart.prototype={ 
    set_Order:function(v)
    {
       this._order = v;
       this.Update();
    },
    get_Order:function(){
        return this._order;
    },
    
    get_CurCtrl:function(){return this._curCtrl;},
    
    set_CartPage:function(v){this._cartPage = v;},
    get_CartPage:function(){return this._cartPage;},
    Init:function(){
       this._order = new QuickPhotoEntity.Order();
       this._order.Orders = [];
    },
    
    Update:function(){     
      if(this._sumCtrl){
          $get(this._sumCtrl).innerHTML = this._order.TotalStr;
       }
    },
   
   UpdateUnitPrice:function(){
      for(i = 0; i < this._order.Orders.length; i++){
        var oi = this._order.Orders[i];
        $get("unit"+oi.OrderItemID).innerHTML =" ("+ oi.PriceStr+")"; 
      }
   },  
   
    Add : function(pd,aid,pid,qty, opt){
        if (typeof( this._order.Orders) == "undefined")
            this._order.Orders = [];
            
          var o = new QuickPhotoEntity.OrderItem();
          o.ProductID = pd;
          o.AlbumID = aid;
          o.PhotoID = pid;
          o.Quantity = qty;
          o.Option  = opt;
         Array.add(this._order.Orders,o);
    },
    
    Submit:function(){
        QuickPhotoWebSite.OrderService.AddToCarts(this._order,this.SubmitOnComplete,this.OnFailed,this);
    },

    SubmitOnComplete: function(result,a){
       window.location.href = a.get_CartPage();
    },    
    SubmitOrder:function(){
       var answer = confirm("Estás seguro que quieres seleccionar este marco?")
       if(answer){
         var os  = [];
          for(var i = 0; i< this._order.Orders.length; i++){
          var o = new QuickPhotoEntity.OrderItem();
          o.OrderItemID = this._order.Orders[i].OrderItemID;
          
          o.Quantity =this._order.Orders[i].Quantity;
           Array.add(os,o);
          }
        
          var s = QuickPhotoWebSite.OrderService;
          s.SubmitOrder(os,this.SubmitOrderOnComplete,this.OnFailed,this);
       }
    },
    
    SubmitOrderOnComplete:function(result,a){ window.location.href="checkout.aspx?from=print";},
    
    Remove:function(oid, orderCtrl){
         QuickPhotoWebSite.OrderService.Remove(oid,this.RemoveOnComplete,this.OnFailed,orderCtrl);
    },
    
    RemoveOnComplete:function(result, context){
        cart.set_Order(result); 
          if(context){
           var ctrl = $get(context);
           if(ctrl){
              ctrl.parentNode.removeChild(ctrl);
           }
        }
    },
    
    Decrease:function(oid,qtyCtrl){
     $get("cartLoading").style.display = "block";  
       for(var i = 0; i<this._order.Orders.length; i++){
          if(this._order.Orders[i].OrderItemID == oid){
            if( this._order.Orders[i].Quantity>0){
              this._order.Orders[i].Quantity --;
                var o = this._order.Orders[i];
                var srv = QuickPhotoWebSite.OrderService;
               srv.AdjustQuantity(o.OrderItemID, o.Quantity,this.AdjustOnComplete,this.OnFailed,this); 
              if(qtyCtrl){
                 var q =  $get(qtyCtrl);
                 if(q){
                    q.value = this._order.Orders[i].Quantity;
                  }
              }
            }
          }
       }
    },
    
    Increase:function(oid, qtyCtrl){
     $get("cartLoading").style.display = "block"; 
        for(var i = 0; i<this._order.Orders.length; i++){
          if(this._order.Orders[i].OrderItemID == oid){
              this._order.Orders[i].Quantity ++;
                var o = this._order.Orders[i];              
             var srv = QuickPhotoWebSite.OrderService;
              srv.AdjustQuantity(o.OrderItemID, o.Quantity,this.AdjustOnComplete,this.OnFailed,this); 
              if(qtyCtrl){
                 var q =  $get(qtyCtrl);
                 if(q){
                    q.value = this._order.Orders[i].Quantity;
                  }
              }
          }
       }
    },
   
     adjustQuantity:function(oid,qtyCtrl){
          for(var i = 0; i<this._order.Orders.length; i++){
             if(this._order.Orders[i].OrderItemID == oid){
                var o = this._order.Orders[i];
                if(o.Quantity == qtyCtrl.value) return; 
             }
          }
            $get("cartLoading").style.display = "block";
          var srv = QuickPhotoWebSite.OrderService;
          srv.AdjustQuantity(o.OrderItemID, qtyCtrl.value,this.AdjustOnComplete,this.OnFailed,this);  
   }, 
   
     captureInput:function(oid,evt,qtyCtrl){
            var key;

         if(window.event)
              key = window.event.keyCode;     //IE
         else
              key = evt.which;     //firefox
    
        if (key == 13)
        {
           evt.preventDefault(); 
           cart.adjustQuantity(oid,qtyCtrl); 
          return false; 
        }else
       {
            if(key == 127 || key == 8) return true;
          else if ((key < 48) || (key > 57)) {
                   evt.preventDefault(); 
                  return false; 
           } else 
          return true; 
       } 
   },  
    
    AdjustOnComplete:function(result,a){
          cart.set_Order(result);  
         $get("cartLoading").style.display = "none";
        cart.UpdateUnitPrice(); 
    },
    
    Clear:function(cartCtrl)
    {
      Sys.Debug.traceDump(cartCtrl); 
      this._order.Total = 0.00;
      var srv = QuickPhotoWebSite.OrderService
      srv.Clear(this.ClearOnComplete,this.OnFailed,cartCtrl);
    },
    
    ClearOnComplete:function(result, cartCtrl){
          if(cartCtrl){
           var ctrl = $get(cartCtrl);
           if(ctrl){
              ctrl.parentNode.removeChild(ctrl);
           }
        }
        cart.Update();
    },
    
    OnFailed: function(error){
      alert("Hubo un error agregando tus fotos a la carreta, por favor intenta más tarde o comunícate con nosotros.");
   },
   
   showPromotion:function(ctrl,title)
   { 
       if(this._order.PaymentWithPromotion>0){
          ctrl.style.display="block";
          title.style.display = "block"; 
          ctrl.innerHTML= this._order.Promotion;
       }
       else{
           ctrl.style.display="none";
          title.style.display = "none"; 
       }
   },
 
  stopCheckout:function(){
             if (typeof( this._order.Orders) == "undefined" || this._order.TotalItem < 1){
              if(typeof( lnkCheckout) != "undefined"){
                if($get(lnkCheckout)){
                    $addHandler($get(lnkCheckout),"click",function (e){
                        e.preventDefault();
                        alert("Para iniciar tu compra debes tener productos en tu carreta.");
                    });
                }
              } 
              }
    }, 
    dispose : function() {
    }
}

QuickPhotoClient.Cart.registerClass('QuickPhotoClient.Cart', Sys.Component);

if (typeof(Sys) !== "undefined") Sys.Application.notifyScriptLoaded();

var cart = false;

$addHandler(window, "load", function(){
         if($get("cartTotal")){
             cart = new QuickPhotoClient.Cart("cartTotal");
         }else  cart = new QuickPhotoClient.Cart();
         
        if(typeof(cartOrder) != "undefined") 
          cart.set_Order(Sys.Serialization.JavaScriptSerializer.deserialize(cartOrder));
            cart.stopCheckout();
           
          if($get("cartPromo1"))
          {
              cart.showPromotion($get("cartPromo1"),$get("cartPromo0"))
          }  
});