Moda.Measure = {
        
    loadedMeasure:null,
    activeUnit:'',
    mode:null,
    missing:null,
    _value:[],
                
    Init:function(unit){
                
        Moda.Analytics.Track("measurement/init/"+unit);
                
        this.Unit(unit);

        $j(".measurement-loader").fadeIn(0);
        $j(".intro").fadeOut(50);
        $j(".measurementWindows").fadeIn(50);
                
        first = $j(".linkMeasure").first().attr("measure");
            
        this.Open(first,1);
    },
        
    finish:function(){
            
        Moda.Analytics.Track("measurement/finished");
            
        switch(Moda.Measure.mode){
            case "m":
                if(Moda.Measure.updateMissing()){
                    this.gotoCheckout();
                }else{
                    $j(".textStatus").css("color","red");
                    setTimeout(function(){
                        $j(".textStatus").css("color","");
                    },3000);
                }
                break;
            case "o":
                //Redirect to checktou
                this.gotoCheckout();
                break;
                
            default:
                //Close Window
                $j("iframe.modaVideo").attr("src","");
                jQuery(document).trigger('close.facebox')
                break;
                
        }
            
        return;
    },
    
    gotoCheckout:function(){
        document.location.href = '/checkout/onepage/';
    },
    
    createMeasureProfil:function(){
        field1 = $j("input[name=choix1]:checked").val();
        field2 = $j("input[name=choix2]:checked").val();
        field3 = $j("input[name=choix3]:checked").val();
        field4 = $j("input[name=choix4]:checked").val();
        
        if(field1 == undefined || field2 == undefined || field3 == undefined){
            
            if(field1 == undefined){
                $j(".required.req1").css("color","red");
                setTimeout(function(){
                    $j(".required").css("color","");
                },3000); 
            }
            if(field2 == undefined){
                $j(".required.req2").css("color","red");
                setTimeout(function(){
                    $j(".required").css("color","");
                },3000); 
            }
            if(field3 == undefined){
                $j(".required.req3").css("color","red");
                setTimeout(function(){
                    $j(".required").css("color","");
                },3000); 
            }
            
            return false;
        }
        
        //AJAX CALL
        //Show loading message
        //OnComplet => reload Window
        $j.ajax({
            context:this,
            type:"POST",
            data:{
                field1:field1,
                field2:field2,
                field3:field3,
                field4:field4
            },
            dataType:"json",
            success:function(data,status){
                for(i in data.data){
                    Moda.Measure._value[i] = (data.data[i] / 10);
                    $j("a[measure="+i+"]").addClass("complete");
                }
                
                //$j("#measureCreate_step1").slideUp(100,function(){
                //    $j("#measureCreate_step2").slideDown(100);
                //});
                
                Moda.Measure.Init('in');
                
            },
            url:"/measure/ajax/createprofil/"
        });
        
        return true;
    },
        
    updateMissing:function(){
        var allOk = true;
                    
        for ( i in Moda.Measure.missing ) {
            if(i >= 0){
                if(typeof(Moda.Measure._value[Moda.Measure.missing[i]]) != "undefined"){
                    val = Moda.Measure._value[Moda.Measure.missing[i]];
                }else{
                    val = 0;
                }
                
                
                value = $j.parseJSON($j("li."+Moda.Measure.missing[i]+" .value").html());
                if(Moda.Measure.activeUnit == "cm"){
                    oldVal = value.cm.val;
                }else{
                    oldVal = value.inch.val;
                }
                
                if(val > 0 && val != oldVal){
                //nothing
                }else{
                    allOk = false;
                }
            }
        }
            
        if(allOk){
            $j(".cta2_button").show(0);
            $j(".textStatus").hide(0);
        }else{
            $j(".cta2_button").hide(0);
            $j(".textStatus").show(0);
        }
            
        return allOk;
    },
        
    Open:function(data, isNew){   
           
        if(typeof(isNew) == "undefined"){
            this.Save();
        }   
           
        if(typeof(data) == "undefined"){
            
            data = $j(".linkMeasure." + Moda.Measure.loadedMeasure).attr("nextMeasure"); 
               
            if(typeof(data) == "undefined" || data.length == 0){
                Moda.Measure.finish();
                return;
            }
        }
        
                
        Moda.Analytics.Track("measurement/view/"+data);
        Moda.Measure.loadedMeasure = data;
            
        $j("a.linkMeasure").removeClass("active");
        $j("a.linkMeasure."+data).addClass("active");
            
            
                
        $j(".measurement-loader").fadeOut(300,function(){
                
            $j("span.modaTitle").text($j("li."+data+" .title").text());
            $j("span.modaText").text($j("li."+data+" .text").text());
            $j("span.modaLabel").text($j("li."+data+" .label").text());
            
            slider = Moda.Measure.getMeasurementValue();
            
            $j( "#selectPlaceholder" ).slider("destroy");
            $j( "#selectPlaceholder" ).slider({
                value:slider.val,
                min: slider.min,
                max: slider.max,
                step: slider.inc,
                slide: function( event, ui ) {
                    $j(".amount").text(ui.value + " " + Moda.Measure.activeUnit );
                }
            });
            $j( ".amount" ).text($j( "#selectPlaceholder" ).slider( "value" )  + " " + Moda.Measure.activeUnit  );
              
            $j("iframe.modaVideo").attr("src","");
                
            $j(".measurement-loader").fadeIn(300, function(){
                Moda.Measure.loadedMeasure = data;
                $j("iframe.modaVideo").attr("src",$j("li."+data+" .video").text());
            });
        });
            
    },
    
    getMeasurementValue:function(measure){
        
        measure = typeof(measure) == "undefined" ? Moda.Measure.loadedMeasure : measure;
        
        
        value = $j.parseJSON($j("li."+measure+" .value").html());

        if(Moda.Measure.activeUnit == "cm"){
            
            if(typeof(Moda.Measure._value[measure]) == "undefined"){
                Moda.Measure._value[measure] = value.cm.val;
            }
            
            value.cm.val = Moda.Measure._value[measure];
            
            return value.cm;
        }else{
            
            if(typeof(Moda.Measure._value[measure]) == "undefined"){
                Moda.Measure._value[measure] = value.inch.val;
            }
            
            value.inch.val = Moda.Measure._value[measure];
            
            return value.inch;
        }
    },
        
    Save:function(){
      
        slider = this.getMeasurementValue();
        val = $j( "#selectPlaceholder" ).slider( "value" );
            
        if(slider.val != val){
                
            if(val > 0 && val != null){
                $j("a.linkMeasure."+Moda.Measure.loadedMeasure).addClass("complete");
                
                $j.ajax({
                    context:this,
                    dataType:"json",
                    success:function(data,status){
                        if(Moda.Measure.mode == "m"){
                            Moda.Measure.updateMissing();
                        }
                    },
                    url:"/measure/ajax/updatemeasurement/?m="+Moda.Measure.loadedMeasure+"&u="+Moda.Measure.activeUnit+"&v="+val
                });
            
                //Enregistrer le data en local
                Moda.Measure._value[Moda.Measure.loadedMeasure] = val;
            
            }
        }
    },
        
    Unit:function(unit){
        if(unit == "in"){
            //$j("#inputName").val(ModaMath.MMtoIN(ModaMath.CMtoMM(val)));
            $j(".my-measurements").removeClass("cm");
            $j(".my-measurements").addClass("in");
            this.activeUnit = unit;
        }else{
            //$j("#inputName").val(ModaMath.MMtoCM(ModaMath.INtoMM(val)));
            $j(".my-measurements").removeClass("in");
            $j(".my-measurements").addClass("cm");
            this.activeUnit = unit;                        
        }   
    },
        
    showCTACheckout:function(){
        $j(".cta_checkout").show(0);
    },
    showCTA2Checkout:function(){
        $j(".cta2_checkout").show(0);
    },
    showCTA2Go:function(){
            
    }
};
    
var ModaMath = {
        
    MMtoIN:function(mm){
        return this.roundTo25(mm / 10 / 2.54, 2);
    },
        
    MMtoCM:function(mm){
        return this.roundToHalf(mm / 10, 1);
    },
        
    INtoMM:function(inches){
        return this.round(inches * 2.54 * 10, 6);
    },
        
    CMtoMM:function(cm){
        return cm * 10;
    },
        
    round:function(inte,decimal){
        decimal = decimal*1;
        factor = Math.pow(10,decimal);
        return Math.round(inte * factor) / factor;
    },
                
    roundToHalf:function(value) { 
                
        var converted = parseFloat(value); // Make sure we have a number 
        var decimal = (converted - parseInt(converted, 10)); 
        decimal = Math.round(decimal * 10); 
        if (decimal == 5) {
            return (parseInt(converted, 10)+0.5);
        } 
        if ( (decimal < 3) || (decimal > 7) ) { 
            return Math.round(converted); 
        } else {
            return (parseInt(converted, 10)+0.5); 
        } 
    },
    roundTo25:function(number){
        return (Math.round(number * 4) / 4).toFixed(2);
    }
        
};
