var doc_ready = false;
var el_step2_ring_price = false;
var el_step2_diamond_price = false;
var el_step2_vat_price = false;
var el_step2_full_price = false;

var el_diamonds_list = false;
var el_diamonds_dsr_count = false;
var el_diamonds_dsr_paging = false;

var el_step2_rings = false;
var el_step2_rings_priview = false;

var el_slider_4 = false; // carat
var el_slider_9 = false; // price

var is_skip_slide_4 = false;
var is_skip_slide_9 = false;

var txt_left_4 = '';
var txt_right_4 = '';

var txt_left_9 = '';
var txt_right_9 = '';

$(document).ready(function(){
   doc_ready = true;

   // init values
   el_step2_ring_price = $("#step2_ring_price");
   el_step2_diamond_price = $("#step2_diamond_price");
   el_step2_vat_price = $("#step2_vat_price");
   el_step2_full_price = $("#step2_full_price");

   el_diamonds_list = $("#step2_diamonds_list");
   el_diamonds_dsr_count = $("#step2_dsr_count");
   el_diamonds_dsr_paging = $("#step2_dsr_paging");

   el_step2_rings = $("div#step2_rings");
   el_step2_rings_priview = $("div#step2_rings_priview");

   el_slider_4 = $("#slider_4");
   el_slider_9 = $("#slider_9");


    $('ul.slider-icons li.hover_effect').hover(
        function() {$(this).addClass('ui-state-hover');},
        function() {$(this).removeClass('ui-state-hover');}
    ).click(function()  {
        var slider_4_step = slider4_params.stepv;// el_slider_4.slider( "option", "step" ) * 1;
        var slider_min_val = logslider_getvalue(el_slider_4.slider( "values",  0) * 1, slider4_params.minv, slider4_params.maxv, slider4_params.stepv);
        var slider_max_val = logslider_getvalue(el_slider_4.slider( "values",  1) * 1, slider4_params.minv, slider4_params.maxv, slider4_params.stepv);
        switch($(this).attr('id'))
        {
        case 'min_down':
            var new_val =  numberFormat(my_round(slider_min_val - slider_4_step, 2), 2);
            if (new_val > 0 && new_val >= slider4_params.minv * 1) {
              $("#slider_4_from").text(txt_left_4 + new_val + txt_right_4);
              propertyClick(4, new_val + '_' + slider_max_val,'2');
            }
          break;
        case 'min_up':
            var new_val =  numberFormat(my_round(slider_min_val + slider_4_step, 2), 2);
            if (new_val > 0 && new_val <slider4_params.maxv * 1) {
              $("#slider_4_from").text(txt_left_4 + new_val + txt_right_4);
              propertyClick(4, new_val + '_' + slider_max_val,'2');
            }
          break;
        case 'max_down':
            var new_val =  numberFormat(my_round(slider_max_val - slider_4_step, 2), 2);
            if (new_val > 0 && new_val > slider4_params.minv * 1) {
			  $("#slider_4_to").text(txt_left_4 + new_val + txt_right_4);
              propertyClick(4, slider_min_val + '_' + new_val,'2');
            }
          break;
        case 'max_up':
            var new_val =  numberFormat(my_round(slider_max_val + slider_4_step, 2), 2);
            if (new_val > 0 && new_val <= slider4_params.maxv * 1) {
              $("#slider_4_to").text(txt_left_4 + new_val + txt_right_4);
              propertyClick(4, slider_min_val + '_' + new_val,'2');
            }
          break;
        }
        
    });
   

   /**
   *  Step 1 (shape description)
   */
    
   $("#shape_step1 li").mouseenter(function(){
       $("div#"+$(this).attr("rel")).css('display', 'block');
   }).mouseleave(function(){
       $("div#"+$(this).attr("rel")).css('display', 'none');
   }); 
    
    
    show_loading_img = false;
     
   
    $.ajaxSetup({
         type: "POST",
         async: true, /* Blocks the browser while the requests is active */
         cache: false,
         dataType: 'json'
    });
    
    
    if (shape_init != false) {
        propertyClick(3, shape_init, '3');  
    }    

    $("#custForm").submit(function() {
        if ($("input[name='terms']").is(":checked") == true) {
           return true; 
        } else {
           alert('Please read and accept terms and conditions'); 
           return false;
        }    
    }); 
    
    
    $("a[rel^='lightbox']").prettyPhoto({theme:'light_square'});
    
//    $(document).ready(function(){
//        $(".gallery a[rel^='lightbox']").prettyPhoto({theme:'light_square'});
//    });         
    
});

/**
* Step 2
*/

function show_certificate_html(certUrl) {
    //$.prettyPhoto.open(certUrl+'&asFrame=1&iframe=true&width=800&height=750','','');
    window.open( certUrl, '_blank', 'left=100,top=100,width=800,height=850,scrollbars=yes');
}    

function show_certificate(certId) {
    $.prettyPhoto.open(imagesDir  + 'certs/' + certId,'','');
    //window.open( imagesDir  + 'certs/' + certId, '_blank', 'left=100,top=100,width=980,height=850,scrollbars=yes');
}    

selMImag = '';

function smImgPrev(img, type, width, height) {
  if (selMImag != img) { 
    if (type == 'swf') {
        $('#mainImage').html('<object width="'+width+'" height="'+height+'"><param name="movie" value="'+img+'"><embed src="'+img+'" width="'+width+'" height="'+height+'"></embed></object>');
    } else {
        $('#mainImage').html('<img src="'+img+'" width="'+width+'" height="'+height+'">');
    }
    
    if (height > 250) $("#mainImage").css('height', height+'px');
    
    selMImag = img;    
  }  
}    


function set_smImg_data() {
  
    $("a[rel^='lightbox']").prettyPhoto({theme:'light_square'});
    
    return true;
}    


function show_loading(type) {
    switch(type) {
        case '1':
            // update rings
            el_step2_rings.html('<div id="loadingR"><img src="images/loadingR.gif" /></div>');
            el_step2_rings_priview.html('<div id="loadingRP"><img src="images/loadingR.gif" /></div>');
        break;
        case '2':
            // update diamonds
            el_diamonds_list.html('<div id="loadingD"><img src="images/loading.gif" /></div>');
        break;
        case '3':
            // update both
            el_step2_rings.html('<div id="loadingR"><img src="images/loadingR.gif" /></div>');
            el_step2_rings_priview.html('<div id="loadingRP"><img src="images/loadingR.gif" /></div>');
            el_diamonds_list.html('<div id="loadingD"><img src="images/loading.gif" /></div>');
        break;        
        case '4':
            // update ring preview
            el_step2_rings_priview.html('<div id="loadingRP"><img src="images/loadingR.gif" /></div>');
        break;        
        default:
            
    }
}   

function hide_loading() {
    $("div[id^='loading']").hide;
}


function propertyClick(prop_id, val, loading_type) {
    if (doc_ready == true) {
//       alert(prop_id+"--"+val);
       show_loading(loading_type);

       $.ajax({
                cache: false,
                url: "ajax_customisation.php?action=proporties_up&"+sess_addon,
                data: {'property_id': prop_id, 'property_val': val},
                success: function(resData){
                    if (resData['result'] != undefined && resData['result'] == 'success') {
                        // up checked values
                        if (resData['propType'] == 7 || resData['propType'] == 8) {
                          // one  
                          // multi
                          $("a[id^=prop_"+prop_id+"]").each(function() {
                              if (resData['propValues'][$(this).text()] != undefined && resData['propValues'][$(this).text()] == true) {
                                $(this).addClass('active');
                              } else {
                                $(this).removeClass('active');
                              }   
                                  
                          });    
                        }    
                         
                        
                        // update selected property values;
                        if (resData['target'] == 'both') {
                            setRings();
                            set_smImg_data();
                            setDiamonds(1);
                        } else if (resData['target'] == 'rings') {
                            setRings();
                            set_smImg_data();
                        } else if (resData['target'] == 'diamonds') {
                            setDiamonds(1);
                        }

                         setTotals();
                        
                    } else if (resData['errors'] != undefined && resData['errors'] != '') {
                        // errors message list
                        el_diamonds_list.html(resData['errors']);
                    } else {
                        el_diamonds_list.html('There is an errors occurred !!!');
                    }    
                }
              });

    }
} 


function hideDI() {
  $("#diamInfo").hide();
}    

function showDI(text) {
  $("#diamInfo").html(text);
    
  if ($("#diamInfo").is(':hidden')) $("#diamInfo").show();  
}    


function setTotals() {

   $.get("ajax_customisation.php?action=load_totals_list&" + sess_addon, function(data) {
      if (data['result'] != undefined && data['result'] == 'success') {

        // update totals

        el_step2_ring_price.text(data['totals_ring_price']);
        el_step2_diamond_price.text(data['totals_diamond_price']);
        el_step2_vat_price.text(data['totals_tax']);
        el_step2_full_price.text(data['totals_total']);
        
        return true;
        
      }
   });

   return false;
}


function setRings() {

    $.get("ajax_customisation.php?action=load_rings_list&" + sess_addon, function(data) {
      if (data['result'] != undefined && data['result'] == 'success') {

           el_step2_rings.html(data['ring_list']);
           el_step2_rings_priview.empty().html(data['activeRingInfo']);

           var elRingList =  $("a.ringList");

           var tmp_height = 0;
           elRingList.each(function() {
              if ($(this).height()>tmp_height) tmp_height = $(this).height();
           });

           if ($.browser.msie) {
             tmp_height = tmp_height + 12;
           }

           elRingList.height(tmp_height);

           $("#RingCarousel").jcarousel();
         
           return true;
      }
    });

    return false;
}    


function setDiamonds(selPage) {

    $.get("ajax_customisation.php?action=load_diamonds_list&selPage=" + selPage + "&" + sess_addon, function(data) {
        if (data['result'] != undefined && data['result'] == 'success') {


              el_diamonds_dsr_count.html(data['diamonds_dsr_count']);
              el_diamonds_list.html(data['diamonds_list']);
              if (data['diamonds_dsr_paging'] != '') {
                  el_diamonds_dsr_paging.html(data['diamonds_dsr_paging']);
                  el_diamonds_dsr_paging.show();
              } else {
                  el_diamonds_dsr_paging.text('');
                  el_diamonds_dsr_paging.hide();
              }

              is_skip_slide_4 = true;
			  slider4_params = logslider_get_params(data['sliders'][4]['from'], data['sliders'][4]['to'], data['sliders'][4]['step']);

              el_slider_4.slider("option", {animate: false, range: true, step: slider4_params.step,  min: slider4_params.min, max: slider4_params.max,  values: [logslider_setvalue(data['sliders'][4]['selected_from'], slider4_params.minv, slider4_params.maxv,slider4_params.stepv), logslider_setvalue(data['sliders'][4]['selected_to'], slider4_params.minv, slider4_params.maxv,slider4_params.stepv)]});
              $("#slider_4_from").text(txt_left_4 + numberFormat(data['sliders'][4]['selected_from'], 2) + txt_right_4);
              $("#slider_4_to").text(txt_left_4 + numberFormat(data['sliders'][4]['selected_to'],2) + txt_right_4);
			  
			  slider9_params = logslider_get_params(data['sliders'][9]['from'], data['sliders'][9]['to'], data['sliders'][9]['step']);

              el_slider_9.slider("option", {animate: false, range: true, step: slider9_params.step,  min: slider9_params.min, max: slider9_params.max,  values: [logslider_setvalue(data['sliders'][9]['selected_from'], slider9_params.minv, slider9_params.maxv,slider9_params.stepv), logslider_setvalue(data['sliders'][9]['selected_to'], slider9_params.minv, slider9_params.maxv,slider9_params.stepv)]});
              $("#slider_9_from").text(txt_left_9 + numberFormat(data['sliders'][9]['selected_from']) + txt_right_9);
              $("#slider_9_to").text(txt_left_9 + numberFormat(data['sliders'][9]['selected_to']) + txt_right_9);

              is_skip_slide_4 = false;

              return true;
        }
    });
    
    return false;
}   
 

function changeDiamondListPage(selPage) {
       
       show_loading('2');

       setDiamonds(selPage);
       setTotals();

       return true;        
}    


function upSelDiamond(dID) {
      
      $.ajax({
                url: "ajax_customisation.php?action=set_diamond&"+sess_addon,
                data: {'dID': dID},
                success: function(resData){
                      if (resData['result'] != undefined && resData['result'] == 'success') {
                         // set active diamond line
                         $("tr[id^='diam_']").removeClass('active');
                         $("tr#diam_"+dID).addClass('active');
                         $("img[rel='diamListImg']").remove();
                         $("tr#diam_"+dID+" > td:first").append('<img rel="diamListImg" src="images/table_h_arrow_selection.gif" />');

                         setTotals();

                      } else if (resData['errors'] != undefined && resData['errors'] != '') {
                         // errors message list
                         el_diamonds_list.html(resData['errors']);
                      } else {
                         el_diamonds_list.html('There is an errors occurred !!!');
                      }      
                }
       });             

} 


function upSelRing(rID) {
      
      show_loading('4');
     
      $.ajax({
                url: "ajax_customisation.php?action=set_ring&"+sess_addon,
                data: {'rID': rID},
                success: function(resData){
                      if (resData['result'] != undefined && resData['result'] == 'success') {
                         // set active diamond line
                         $("a.ringList").removeClass('active');
                         $("a#ring_"+rID).addClass("active");
                         el_step2_rings_priview.html(resData['activeRingInfo']);
                         set_smImg_data();

                         setTotals();

                      } else if (resData['errors'] != undefined && resData['errors'] != '') {
                         // errors message list
                         el_diamonds_list.html(resData['errors']);
                      } else {
                         el_diamonds_list.html('There is an errors occurred !!!');
                      }      
                }
       });       

} 
  
  
function numberFormat(nStr){
//add thousand separator - ',' decimals is optional 2nd parameter
  if (arguments.length>1) {
    decimals = arguments[1];
  } else {
    decimals = 0;
  }
  nStr += '';
  x = nStr.split('.');
  x1 = x[0];
  x2 = x.length > 1 ? '.' + x[1] : (decimals>0?'.':'');
  //alert(arguments[0] + " " +arguments[1] + " " +arguments[2] + " " + decimals + " " + x2.length);
  if (decimals>0 && x2.length<=decimals) {
	for (i=0;i<(decimals-x2.length+2);i++) {
	  x2 = x2 + '0';
//	  alert(x2 );
	}
  }
  if (decimals>0 && x2.length > decimals) {
    x2 = x2.substr(0,decimals+1);
  }
  var rgx = /(\d+)(\d{3})/;
  while (rgx.test(x1))
    x1 = x1.replace(rgx, '$1' + ',' + '$2');
  return x1 + x2;
}
function my_round (val, places) {
 nm = Math.pow(10, places)
 return Math.round(val*nm)/nm;
}

function logslider_getvalue(value, minv, maxv, step) {
  var opts = logslider_get_params(minv, maxv, step);
  var tmp = Math.round(Math.exp(opts.minvl + opts.scale*(value-opts.min))/step)*step;
  if (tmp>opts.maxv) {
    tmp = opts.maxv;
  }
  if (tmp<opts.minv) {
    tmp = opts.minv;
  }
  return tmp;
}

function logslider_setvalue(value, minv, maxv, step) {
  var opts = logslider_get_params(minv, maxv, step);
  var tmp1 = Math.round((Math.log(value) - opts.minvl)/opts.scale + opts.min);
  if (tmp1>opts.max) {
    tmp1 = opts.max;
  }
  if (tmp1<opts.min) {
    tmp1 = opts.min;
  }
  return tmp1;
}

function logslider_get_params(minv, maxv, step) {
//todo - min, max according step
//  var o = new Object(minv, maxv, step, min:0, max:1000, scale:(maxv-minv) / (1000-0));
  var o = new Object();
  o.min = 0;
  o.max = 1000;
  o.step = 1; 
  o.minv = minv;
  o.maxv = maxv;
  o.stepv = step; 
  o.minvl = Math.log(minv);
  o.maxvl = Math.log(maxv);
  o.scale = (o.maxvl-o.minvl) / (o.max-o.min);
  return o;
}
