﻿
//--------------------------
/*
整个option控制的控件
*/

var ProductOption = Class.create();

ProductOption.prototype = 
{   
    initialize: function(containerId) 
    {     
        this.container = $(containerId);
        this.container.className = 'productoptioncontainer';
        this.options = new Array();
    },
    
    initOptions: function(productId)
    {     
        Product.GetProduct(productId, ProductOption._callback_initOptions, this);
    },
    
    createStruct : function()
    {   
        this.options.length = 0;
        for ( var i = 0 ; i < this.ProductData.Options.length ; i ++ )
        {
            this.options[i] = AbstractOption.OptionSelector(i+1,this.ProductData.Options[i],this);
            this.options[i].productOption = this;
            this.options[i].onselecteditem = function()
            {
                if ( !$ISEMPTY(this.productOption.onBoxOptionSelected) )
                    this.productOption.onBoxOptionSelected();
                
                if ( !$ISEMPTY(this.onselecteditemvalue ) )
                    this.onselecteditemvalue(); 
                
            }
            
            //父Option
            if ( i != 0 )
                this.options[i].parent = this.options[i-1];
            else
                this.options[i].parent = null;                            
        }
        
        for ( var i = 0 ; i < this.ProductData.Options.length ; i ++ )
        {
            //子Option
            if ( i + 1 < this.ProductData.Options.length )
                this.options[i].child = this.options[i+1];
        }
        
        for ( var i = 0 ; i < this.ProductData.Options.length ; i ++ )
        {            
            if ( !$ISEMPTY(this.options[i].createOptionItems))
                this.options[i].createOptionItems();
        }        
        
        this.setDefault();
    },
    
    setDefault : function()
    {
        //set default 
        for ( var i = 0 ; i < this.ProductData.Options.length ; i ++ )
        {   
            for ( var j = 0 ; j < this.options[i].OptionItems.length ; j ++ )
                if ( !$ISEMPTY(this.options[i].OptionItems[j]) )
                    if ( this.options[i].OptionItems[j].dataObject.IsDefault )
                        this.options[i].OptionItems[j].PutDown();
        }
        //Modify:load button [Add to cart] after productoption loaded. 
        if(!$ISEMPTY(document.getElementById('btnAddtocart_top')))
        {
            document.getElementById('btnAddtocart_top').style.display='block';
        }
        if(!$ISEMPTY(document.getElementById('btnAddtocart_bottom')))
        {
            document.getElementById('btnAddtocart_bottom').style.display='block';
        }
    },
    /*
    判断当前选择的选项是否为下载产品
    */
    IsDownloadProduct : function()
    {
        var s = false;
        for ( var j = 0 ; j < this.options.length ; j ++ )
        {
            if ( !$ISEMPTY(this.options[j].SelectedValue) )
                if ( !$ISEMPTY(this.options[j].SelectedValue.IsDownload) )
                    if ( this.options[j].SelectedValue.IsDownload == 1)
                        return true;
        }
        return s;
    },
    /*
    得到optionvalue
    */
    GetOptionValue: function()
    {
        var s = ''; 
        for ( var j = 0 ; j < this.options.length ; j ++ )
        {
            if ( !$ISEMPTY(this.options[j].SelectedValue))
                if ( !$ISEMPTY(this.options[j].SelectedValue.ItemValue) )
                {
                    if(this.options[j].SelectedValue.ItemValue!='')
                    {            
                    s += this.options[j].OptionData.Code + ": " + this.options[j].SelectedValue.ItemValue + ",";
                    }
                }
                else
                {
                    s += this.options[j].OptionData.Code + ": " + this.options[j].SelectedValue + ",";
                }
        }
        if ( s != '')
        {
            s = s.substring(0,s.length -1 );
            //Mofify：if s include designsize,then replace of this word instead of design. Time:08/06/09 By:Liujunqing
            s=s.replace('designsize:','design:');
        }     
        return s;
    },
    /*
    得到所有选择的文本内容
    */
    GetSelectedItemText: function()
    {
        var s = '';
        for ( var j = 0 ; j < this.options.length ; j ++ )
        {
            if ( !$ISEMPTY(this.options[j].SelectedValue) && !$ISEMPTY(this.options[j].SelectedValue.ItemCode) && this.options[j].SelectedValue.ItemCode.indexOf('cert-') == -1 )
                if ( !$ISEMPTY(this.options[j].SelectedValue.ShortDescription) )
                    s += this.options[j].SelectedValue.ShortDescription + ", ";
        }
        if ( s != '')
            s = s.substring(0,s.length -1 );
        return s;
    },
    /*
    得到合计钱数
    */
    GetSelectedItemsPrice: function()
    {
        var s = 0;
        for ( var j = 0 ; j < this.options.length ; j ++ )
        {
            if ( !$ISEMPTY(this.options[j].SelectedValue) )
                if ( !$ISEMPTY(this.options[j].SelectedValue.Price) )
                    s += this.options[j].SelectedValue.Price;
        }
        return s;
    },
    /*
    得到描述
    */
    GetDescription: function()
    {
        var s = '';
      //  s +=  "<Strong>"+this.ProductData.ProductName + "</Strong><br />";
        for ( var j = 0 ; j < this.options.length ; j ++ )
        {
            if ( !$ISEMPTY(this.options[j].SelectedValue))
                if ( !$ISEMPTY(this.options[j].SelectedValue.LongDescription) )
                 {    
                   if(this.options[j].SelectedValue.LongDescription!='')     
                     s += this.options[j].OptionData.Code + ": " + this.options[j].SelectedValue.LongDescription + "<br>";
                 } 
                else
                 {  
                     var temp =''; 
                     if(this.options[j].SelectedValue!='')
                     {
                       if(this.options[j].OptionData.Code=='EmailItem')
                       {
                       
                           temp=this.options[j].SelectedValue;                           
                           var str ='';
                           var all = temp.split('|');
                           for(i=0;i<all.length;i++)
                                {
                                      if(i==0)
                                      {
                                            if(all[i].toLowerCase()!='from')
                                            {
                                                str+="from: "+all[i]+"<br>";
                                            }
                                            else
                                            {
                                                str+="from: <br>";
                                            }
                                      }
                                      else if(i==1)
                                      {
                                            if(all[i].toLowerCase()!='to')
                                            {                                      
                                                 str+="to: "+all[i]+"<br>";
                                            }
                                            else
                                            {
                                                str+="to: <br>";
                                            }
                                      }
                                      else if(i==2)
                                      {
                                            if(all[i].toLowerCase()!='message')
                                            {   
                                                str+="message: " +all[i]+"<br>"; 
                                            }
                                            else
                                            {
                                                str+="message: <br>"; 
                                            }                                 
                                      }
                                }
                           temp=str;                           
                       }
                       else
                       {
                           temp=this.options[j].OptionData.Code + ": " + this.options[j].SelectedValue + "<br>";
                       }
                     }
                    s+=temp;
                 }
        }
        return s;
        
    },
    /*
    得到ItemCode
    */
    GetForldName: function()
    {
        var s = 0;
        for ( var j = 0 ; j < this.options.length ; j ++ )
        {
            if ( !$ISEMPTY(this.options[j].SelectedValue))
                if ( !$ISEMPTY(this.options[j].SelectedValue.ItemCode) )
                 {  
                    if(this.options[j].SelectedValue.JsDisplay=='picture')       
                         s = this.options[j].OptionData.FolderName;
                 }
         }
        return s;        
    },
        /*
    得到OptionItemId
    */
    GetOptionItemId: function()
    {
        var s = 0;
        for ( var j = 0 ; j < this.options.length ; j ++ )
        {
            if ( !$ISEMPTY(this.options[j].SelectedValue))
                if ( !$ISEMPTY(this.options[j].SelectedValue.ItemCode) )
                 {  
                    if(this.options[j].SelectedValue.JsDisplay=='picture')       
                         s = this.options[j].SelectedValue.OptionItemId;
                 }
         }
        return s;        
    },
            /*
    得到代金券email发送信息
    */
    GetGiftInfo: function()
    {
    
        var s = '';
        for ( var j = 0 ; j < this.options.length ; j ++ )
        {
             if ( !$ISEMPTY(this.options[j].SelectedValue))
                if ( $ISEMPTY(this.options[j].SelectedValue.LongDescription) )
                {
                    if(j ==this.options.length-1){
                        s+=this.options[j].SelectedValue;
                    }
                    else{
                        s+=this.options[j].SelectedValue+"|";
                    }
                }
        }
        return s;
    }
    
};

ProductOption._callback_initOptions = function(res)
{
//    if ( !res.value )
//    {
//        alert('data not loaded!');
//    }
    if(res.value)
    {
        res.context.ProductData = res.value;
        
        res.context.createStruct();
    }
}






//---------------------------------


