

$(document).ready( function(){
    
    apply_tooltips();    
});

function validate_cart_form(){

    var error = '';

    var f = document.cart_checkout_form;
  
    error += notEmpty(          f.cart_cc_owner_name_field, true );  
    error += checkEmail(        f.cart_cc_email_field );  
    error += mustSelect(        f.cart_cc_country_field );   
    error += notEmpty(          f.cart_cc_street_field, false );  
    error += notEmpty(          f.cart_cc_city_field, true );  
    error += checkPhone(        f.cart_cc_phone_field, true );  
    
    error += mustSelect(        f.cart_cc_type_field );   
    
    // cc expire fields custom error check:
    //------------------------------------------------------------
    var expire_error='';
    
    var error_month = mustSelect( f.cart_cc_month_field );   
    var error_year = mustSelect( f.cart_cc_year_field );  
    
    if( error_month ) expire_error = "Please select <i>Month</i>";
    if( error_year ) expire_error = "Please select </i>Year</i>";
    if( error_month && error_year ) expire_error = "Please select </i>Year</i> &amp; <i>Month</i>";
    
    error += expire_error;
    
    expire_msg = "<span class='form-err'>" + expire_error + "</span>";
    
    $( '#cart_cc_errors_msg' ).html( expire_msg ).show();
    
    // If has seperate INVOICE details? verify....
    //-------------------------------------------------------------
    if( $('#cart_invoice_different_field').val()=='1' )
    {
            error += notEmpty(          f.cart_invoice_name_field, true );  
            error += checkEmail(        f.cart_invoice_email_field );  
            error += mustSelect(        f.cart_invoice_country_field );   
            error += notEmpty(          f.cart_invoice_street_field, false );  
            error += notEmpty(          f.cart_invoice_city_field, true );  
            error += checkPhone(        f.cart_invoice_phone_field, true );  
    }
    
    // If has seperate SHIPPING details? verify....
    //-------------------------------------------------------------
    if( $('#cart_shipping_different_field').val()=='1' )
    {
            error += notEmpty(          f.cart_shipping_name_field, true );  
            error += checkEmail(        f.cart_shipping_email_field );  
            error += mustSelect(        f.cart_shipping_country_field );   
            error += notEmpty(          f.cart_shipping_street_field, false );  
            error += notEmpty(          f.cart_shipping_city_field, true );  
            error += checkPhone(        f.cart_shipping_phone_field, true );  
    }
    
    //console.log('total errors:  ' + error);
                                                    
    if( error=='' )                                                
        return true;
    else
        return false;

}

    

function list_matched_products( form_name, output_div, cart_session, open_for_transactions ){
  
  var load_div      = '';
  var params        = $('#'+form_name ).serialize()+
                     '&sid=' + cart_session+
                     '&open=' + open_for_transactions ;

  var error         = '';

  // quick select validations
  switch( form_name )
  {
        case 'store_wd_form'        :   error += notEmpty(        document.store_wd_form.wd_bus_field, false );
                                        error += notEmpty(        document.store_wd_form.wd_os_field, false );
                                        error += notEmpty(        document.store_wd_form.wd_platform_field, false );
                                        
                                        load_div = '#load-icon-wd';
                                        break;
        
        case 'store_analyzers_form' :   load_div = '#load-icon-analyzers';
                                        break;
  }  
  
  params += '&output_div=' + output_div;  // add the now-known target div...
  
  
  if( error!='' )
  {
    form_error_msg('#form-feedback'); 
    return;
  }
  
  output_div = '#'+output_div;  
  
  $('#form-feedback').hide();
  
  $( output_div ).show().html("Please wait...");
  
  $( load_div ).show();
  
  
  $( output_div ).load( '_list_matched_products.php?'+params, function(){
  
    $( load_div ).hide();
    apply_tooltips();
    
    JTracker('groups/store/triggered_wizard/'+form_name);
  
  } );
      
 return false;     
         

}


function apply_tooltips(){

      
      $('a.tip-for-license-1').cluetip({splitTitle: '|',width: '220px'});
      $('a.tip-for-license-2').cluetip({splitTitle: '|',width: '220px'});
      $('a.tip-for-license-3').cluetip({splitTitle: '|',width: '220px'});
      $('a.explain-support-outside').cluetip({splitTitle: '|',width: '220px'});
      $('a.explain-support-within').cluetip({splitTitle: '|',width: '220px'});

}


function add_to_old_cart( product_id, product_group, old_code, new_code, is_bundle, license_type ){
// NOW ONLY links to OLD system....

    // manual overwrites for the OLD store
    //-------------------------------------------------------
    
    // basic bundle default:
    if( is_bundle=='1' ) product_group = 'DriverBundle'; 
    
    // support overwrite:
    if( license_type.substr(0,1) == 'S' ) product_group = 'Support';
    
    // exceptions for bundles who are save as product group of just 'winDriver'. stupid old store... :
    if( old_code=='N-W-USB-W3264' || old_code=='F-W-USB-W3264' || old_code=='3P-W-USB-W3264' 
        || old_code=='N-W-USB-64LIN' || old_code=='F-W-USB-64LIN' || old_code=='3P-W-USB-64LIN' || old_code=='N-W-SI-Sol'
        || old_code=='F-W-SI-Sol' || old_code=='3P-W-SI-Sol'
         )
     
        product_group = 'WinDriver';   

    //--------- and manualy fixes....

    
    if( old_code=='USB-EXPLORER' || old_code=='USBT-110-A' || old_code=='USBT-110-SDK' || old_code=='USBT-110-EXP' )
        product_group='USBTracker';
    
    if( old_code=='USB-CLASSDECODER' ) product_group='USBClassDecoder';
    
    if( old_code=='USB-TRIGGER' ) product_group='USBTrigger';
    
    if( old_code=='USB-TRIGGER' ) product_group='USBTrigger';
    
    if( old_code=='USB-EXPLORERPRO' ) product_group='USBExplorerPro';
    
    if( old_code=='USB-EXPLORERUPGRADE' ) product_group='USBExplorer200Upgrade';
    
    
    
    
    // *************** DEBUG *****************
    //console.log( 'translates to :: product=' + product_group + '&keywords='+ old_code );
    //return false;
    /* end debug ********************* */
    
    // TEMP! Block access to store:
    window.location.href = '../store_maintenance.php';
    
    //window.location.href = 'https://www.jungo.com/store/commerce.cgi?product=' + product_group + '&keywords='+ old_code;

}


function scroll_to_cart(){

    $.scrollTo('#cart-view',500);
}


function reset_cart_form_fields(){

    
    $("#cart_checkout_form .form1").each( function(){
    
        this.value = "";
    });
    
}


function modify_cart( cart_session, product_id, action ){

  var params = 'pid=' + product_id + '&' +
               'sid=' + cart_session + '&' +
               'ac='  + action; 
  
  
  $('#cart-view').show();
  $('#cart-processing').show(); 
  
  if(action=='clear') 
  { 
    $('#cart-form-box').hide();
    reset_cart_form_fields();
  }
  
  $('.cart-updated-icons').each( function(){
    
        $(this).effect("pulsate", { times: 3 }, 1500 );
        
  } );
  
  

  $('#cart-content').load('_cart_modify.php?'+params, function(){

      $('#cart-processing').hide();
      $('#cart-content').show();
      $('#cart-actions').show();
  
  });
  
  

}


function toggle_checkout_mode( state ){

    if(!state)
        $('#cart-form-box').toggle();
    else
    if(state=='on')
    {
        $('#cart-form-box').show();    
        $('#cart-btn-minimize').show();
        $('#cart-btn-checkout').hide();
    }
    else
    if(state=='off')
    {
        $('#cart-form-box').hide();    
        $('#cart-btn-minimize').hide();
        $('#cart-btn-checkout').show();
    }

        
        
}


function request_transaction_approval( cart_session ){


  // TODO: call API for payment request... >>>>>>>>>>>>>>>>>>        
  
  var formvars          = $('form#cart_checkout_form').serialize();
  var cart_total        = $('#cart-total-sum').html();
  var cart_table_list   = $('#cart-content-table').html();
  
  
  JTracker('groups/store/paymentRequest');
  
  //$('#cart-form-box').hide('fast'); // hide details form
  
  $.scrollTo('#prx-feedback', 500);
  
  $('#prx-feedback').addClass('feedbacks yellow1').html('Please wait while we process your order...').show();
        
  
  $.post('_run_payment_request.php', { formdata : formvars, cid : cart_session, ct : cart_total, cl : cart_table_list  }, function(response){
  
       switch( response ){
       
            case 'SUCCESS'       :          $('#cart-view').addClass('feedbacks green1').html(
                                            
                                            "<b>Order Complete!</b>"
                                            +"<br />You will soon recieve a confirmation email, with details on the product license "
                                            +"<br />and shipping (if applies)."
                                            +"<br />"
                                            +"<br />If you do not recieve the email, or have any questions, please contact us at <a href='mailto:sales@jungo.com'>sales@jungo.com</a>."
                                            +"<br />"
                                            +"<br /><i>Thank you for choosing Jungo's solutions!</i>"
                                            
                                            );  // overwrite cart info div with succes msg..
                                            
                                            //$('#prx-feedback').addClass('feedbacks yellow1').show().html("Order Complete!");
                                            
                                            break;
                                            
            case 'FAILED'        :          $('#prx-feedback').addClass('feedbacks red1').removeClass('yellow1 green1').show().html(
                                            
                                            "We're sorry, but the transaction attempt failed. <br />Please contact <a href='mailto:sales@jungo.com'>sales@jungo.com</a> and provide this store id: <b>"+cart_session+"</b>");

                                            break;
                                            
                                            

            
       
       }
       
       
  
  
  } );
  
  
  // SUCCESS:
  // ===============
  /*
  $('#cart-inputs-feedback').show().removeClass('red1').removeClass('green1').addClass('yellow');
  $('#cart-inputs-feedback').html(  '<b>Purchase request successfully completed!</b>' 
                                    +'br /><br />You will receive an email soon with details regarding your license and products.'
                                    +'br /><br />If you have any questions, please feel free to contact us at' );
  */
}



function process_completed_transaction(){


}



//------------------------------------------------------------------------
function submit_checkout( cart_session ){
//------------------------------------------------------------------------
// either first attempt, or returned from request_transaction_approval()...

    var form_valid              = validate_cart_form();
    var transaction_approved    = false;
    
    // use default error, unless called from a failed payment processing, will pickup a custom_error
    var show_error = "Please note the error messages below...";
    
    
    $('#prx-feedback').hide(); // remove old transaction feedbacks, if exists...
    
    
    
    if( form_valid === true )
    {
        $('#products-listings').hide('fast');
        
        $('#cart-inputs-feedback').show().removeClass('red1').addClass('green1').html('Processing order. Please wait...');
        
        transaction_approved = request_transaction_approval( cart_session );
        
    }
    else
    {
        $('#cart-inputs-feedback').show().removeClass('green1').addClass('red1').html( show_error );
        $.scrollTo('#cart-inputs-feedback',500);
        
        // if failed before: make sure all form options are back in place:
        $('#products-listings').show();
        $('#cart-form-box').show();
        
        return false;
        
    }
    

}

function send_order_to_email( cart_session, email ){

var params = 'em=' + email + '&' +
             'sid=' + cart_session; 
  
  
  $('#suspend-order-processing').show();
  


  $('#feedback-suspend-order').load( '_cart_to_email.php?'+params, function(){
  
    $('#suspend-order-processing').hide();
    $('#suspend-cart-panel').hide();
    $('#feedback-suspend-order').show();
  
  });
  
 

}




function show_store_contact_details(){

    //TODO: nice popup
    
    //alert('Please contact us for pricing information regarding this product....');
    redirect_to_contact('general','USBAnalyzer_Request_Price_Quote');
    

}


function flash_offline_status(){
    
    $.scrollTo('#offline-store-note', 500 );
    $('#status-offline-msg').effect("pulsate", { times: 2 }, 800 );

}


function toggle_details_for_invoice()
{
    $('#details-for-invoice').toggle();
    
    if( $('#cart_invoice_different_field').val() == '0' )
        $('#cart_invoice_different_field').val('1');
    else
        $('#cart_invoice_different_field').val('0');
}


function toggle_details_for_shipping()
{
    $('#details-for-shipping').toggle();
    
    if( $('#cart_shipping_different_field').val() == '0' )
        $('#cart_shipping_different_field').val('1');
    else
        $('#cart_shipping_different_field').val('0');
}
