jQuery(document).ready(function(){
    jQuery('<div class="overlay"></div>').insertBefore(".content-wrapper");
});

function setImg(input,id) {
    if (input.files && input.files[0]) {
        var reader = new FileReader();

        reader.onload = function (e) {
            $('#'+id).attr('src', e.target.result);
        };
        reader.readAsDataURL(input.files[0]);
    }
}
function initPickUp() {
 var options = {componentRestrictions: {country: country_flag}};
 var input = document.getElementById('pickup_location');
 var autocomplete = new google.maps.places.Autocomplete(input, options);
}
google.maps.event.addDomListener(window, 'load', initPickUp);
function initDestination() {
	var options = {componentRestrictions: {country: country_flag}};
	var input = document.getElementById('drop_location');
	var autocomplete = new google.maps.places.Autocomplete(input, options);
}
google.maps.event.addDomListener(window, 'load', initDestination);

jQuery('[name="offer_type"]').click(function(){
    var offer = jQuery(this).val();
    if(offer == 2){
        jQuery('[id="input_discount"]').html(jQuery('[id="discount_input_html"]').html());
    } else {
        jQuery('[id="input_discount"]').html('');
    }
});

function checkChild(thisObj){
    var table = thisObj.attr('table');
    if(thisObj.prop("checked") == true){
        jQuery('[id^="table_'+table+'_"]').prop("checked", true);
    } else {
        jQuery('[id^="table_'+table+'_"]').prop("checked", false);
    }
    jQuery('[name^="TDLS.transport_id"],[name^="TDLS.medical_no"],[name^="TDLS.patient_name"],[name^="TDLS.age"],[name^="TDLS.phone"],[name^="APRES.reason"],[name^="TDLS.appointment_time"]').prop("checked", true).parent().closest('div').addClass('disable-block');
}

jQuery('[name="fieldType"]').click(function(){
    var action = jQuery(this).attr('action');
    if(action == 'show'){
        jQuery('[id="customFields"]').removeClass('hide');
    } else {
        jQuery('[id="customFields"]').addClass('hide');
    }
});

jQuery('[id="rGenerate"]').click(function(){
    event.preventDefault();
    var fields = '',
    action = jQuery(this).attr('action'),
    thisObj = jQuery(this);
    fieldType = jQuery('input[name="fieldType"]:checked').val(),
    where_cond = jQuery('[id="where_cond"]').serialize();

    if(thisObj.attr('dmclick') == 1){
        return false;
    }

    thisObj.attr('dmclick','1');
    if(fieldType == 'custom'){
        jQuery.each(jQuery('[id="field_list"]').serialize().split('&'), function (key,field) {
            var field_arr = field.split('=');
            fields += field_arr[1]+',';
        });
    }else{
        fields = jQuery('[id="all_fields"]').attr('all_fields');
    }
    jQuery.ajax({
        url  : base_url+"Report/rGenerate", 
        type : 'POST',
        data : {'action':action,'fields':fields,'where_cond':where_cond},
        success: function(resp){
            if(resp == '' || resp == undefined || resp == 'undefined' || resp == null || resp == 'null'){
                thisObj.attr('dmclick','0');
                return false;
            }
            var resp_data = jQuery.parseJSON(resp);
            if(resp_data['status'] == '2'){
                thisObj.attr('dmclick','0');
                setErrModal('Report status','No Data Found..!');
                return false;
            }
            if(resp_data['status'] == 0 || (action == 'view' && (resp_data['report_data'] == '' || resp_data['report_data'] == undefined || resp_data['report_data'] == 'undefined' || resp_data['report_data'] == null || resp_data['report_data'] == 'null'))){
                thisObj.attr('dmclick','0');
                setErrModal('Report status','Something Went Wrong, Please Try Again..!');
                return false;
            }
            if(action == 'view'){
                var table = jQuery('[id="report_table"]').DataTable();
                table.clear().draw();

                jQuery.each(resp_data['report_data'], function(key, data) {
                    report_data[key] = data;
                    var vBtn = '<a class="btn btn-sm btn-primary" id="report_view_pop_'+key+'" key="'+key+'"><i class="fa fa-fw fa-edit"></i>View</a>';
                    table.row.add([data['Order_ID'],data['Medical_Number'],data['Patient_Name'],
                     data['Patient_Age'],data['Patient_Phone'],data['Appointment_Reason'],
                     data['Appointment_Time'],vBtn]).draw();
                });
                jQuery('[id="report_table_html"]').removeClass('hide');
                slideTo('report_table_html');
                thisObj.attr('dmclick','0');
            }
            if(action == 'export'){
                thisObj.attr('dmclick','0');
                window.location.replace(base_url+'Report/downloadCSV');
            }
        }
    });
});

function setErrModal(header_msg,body_msg){
    jQuery('[id="modal_body_msg"]').html(body_msg);
    jQuery('[id="modal_header_msg"]').html(header_msg);
    jQuery('[id="errModal"]').modal('show');
}

function slideTo(id){
    jQuery('html, body').animate({
        scrollTop: jQuery('[id="'+id+'"]').offset().top
    }, 800);
}

jQuery('#report_table tbody').on('click','a',function() {
    var thisObj = jQuery(this),
    key = thisObj.attr('key');
    viewOrderDetails(key);
});

jQuery('[id="viewRideDetails"]').click(function(){
    console.log('sdrfg');
    var thisObj = jQuery(this),
    key = thisObj.attr('key');
    viewOrderDetails(key);
});

function viewOrderDetails(key){
    var body_html = rowHtml = '';

    var colCount = 1;
    body_html = '<div class="col-xs-12">';
    jQuery.each(report_data[key], function(field,value) {
        value = (value == null || value == 'null' || value == undefined || value == 'undefined')?'--':value;
        rowHtml += '<div class="col-xs-6"><div class="col-xs-12">'+
        '<div class="col-xs-6">'+field.replace(/_/g,' ')+'</div>'+
        '<div class="col-xs-1">:</div>'+
        '<div class="col-xs-5">'+value+'</div>'+
        '</div></div>';
        if(colCount == 2){
            body_html += rowHtml;
            rowHtml = '';
            colCount = 1;
        }else{
            colCount++;
        }
    });
    body_html += (rowHtml != '')?rowHtml+'</div>':'</div>';
    modalTrigger('Ride Details',body_html);
}

function getRideData(){
    jQuery('[id="getRideDataForm"]').submit();
}

function getCmpyPayDetls(){
    jQuery('[id="cmpyPayDetlsForm"]').submit();
}

function modalTrigger(header,body_html){
    jQuery('[id="modal_content"]').html(body_html);
    jQuery('[id="modal_header"]').html(header);

    jQuery('[id="popup_modal"]').modal('show');
}

function modalHide(){
    jQuery('[id="popup_modal"]').modal('hide');
}

function addModalLoader(){
    jQuery("[id='modal_content']").addClass('relative height_200');
    jQuery("[id='modal_content']").prepend("<div id='modal_loader_body' class='loader'></div>");
}

function remModalLoader(){
    jQuery("[id='modal_loader_body']").remove();
    jQuery("[id='modal_content']").removeClass('relative height_200');
}

function getBrokers(allBrokerFlag,phoneBookingFlag){
    var company_id = jQuery('[id="searchCompanyDrop"] option:selected').val();
    if(company_id == '' || company_id == undefined || company_id == 'undefined' || company_id == null || company_id == 'null'){
        jQuery('[id="searchBrokerBlock"]').addClass('disable-div');
    }

    jQuery.ajax({
        url  : base_url+"Broker/getBrokers", 
        type : 'POST',
        data : {'company_id':company_id},
        success: function(resp){
            if(resp == '' || resp == undefined || resp == null || resp == 'null' || resp == 'undefined'){
                return false;
            }
            var optionHtml = (allBrokerFlag == 1)?'<option selected value="">All Brokers</option>':'';
            resp = jQuery.parseJSON(resp);
            if(resp['status'] == 0){
                return false;
            }
            if(resp['status'] == 1){
                jQuery.each(resp['data'], function(index,value) {
                    optionHtml += '<option value="'+value['broker_id']+'">'+value['broker_name']+'</option>';
                });
            }
            optionHtml += (phoneBookingFlag == 1)?'<option value="0">Phone Bookings</option>':'';
            if(optionHtml == ''){
                jQuery('[id="searchBrokerDrop"]').addClass('prevent-click');
                optionHtml = '<option selected disabled>No Data Found</option>';
            }
            jQuery('[id="searchBrokerDrop"]').html(optionHtml);
            jQuery('[id="searchBrokerBlock"]').removeClass('disable-div');
        }
    });
}

jQuery('[id="selectAllDriver"]').click(function(){
    var thisObj = jQuery(this);
    if(thisObj.prop("checked") == true){
        jQuery('[id^="avlDriver_"]').prop("checked", true);
    } else {
        jQuery('[id^="avlDriver_"]').prop("checked", false);
    }
});

jQuery('[id="scheduleAll"]').click(function(){
    if(ride_ids==undefined || ride_ids=='undefined' || ride_ids==null || ride_ids=='null' || ride_ids==''){
        return false;
    }
    markAsScheduled(ride_ids,'0');
});

jQuery('[id^="markSchedule_"]').click(function(){
    var thisObj = jQuery(this),
    is_scheduled = thisObj.attr('is_scheduled'),
    transport_id = thisObj.attr('transport_id');

    if(transport_id == undefined || transport_id == 'undefined' || transport_id == null || transport_id == 'null' || transport_id == '' || 
     is_scheduled == undefined || is_scheduled == 'undefined' || is_scheduled == null || is_scheduled == 'null' || is_scheduled == ''){
        return false;
}

if(is_scheduled == 1){
    flag = confirm("Are you sure to continue with this action...?");
    if(flag != true) return false;
}
markAsScheduled(transport_id,is_scheduled);
});

function markAsScheduled(transport_id,is_scheduled){
    var drivers = [], no_driver = jQuery('[id="checkNoDriver"]:checked').val();
    jQuery.each(jQuery("input[name^='avlDrivers[]']:checked"), function() {
      drivers.push(jQuery(this).val());
    });
    no_driver = (no_driver == undefined || no_driver == 'undefined' || no_driver == null || no_driver == 'null' || no_driver == '')?'0':'1';
    
    if(is_scheduled == undefined || is_scheduled == 'undefined' || is_scheduled == null || is_scheduled == 'null' || is_scheduled == '' || 
       transport_id == undefined || transport_id == 'undefined' || transport_id == null || transport_id == 'null' || transport_id == ''){
        return false;
    }

    if(is_scheduled == 0 && (drivers == undefined || drivers == 'undefined' || drivers == null || drivers == 'null' || drivers == '')){
        slideTo('selectDriverBlock');
            jQuery('[id="driverRequired"]').fadeIn(500);
        setTimeout(function(){ 
            jQuery('[id="driverRequired"]').fadeOut(1000);
        }, 5000);
        return false;
    }
 
    showFullScreenLoader();
    jQuery.ajax({
        url  : base_url+"Ride/changeSchuduleStatus", 
        type : 'POST',
        data : {'transport_id':transport_id,'is_scheduled':is_scheduled,'no_driver':no_driver,'drivers':drivers},
        success: function(resp){
            if(resp == '' || resp == undefined || resp == null || resp == 'null' || resp == 'undefined'){
                remFullScreenLoader();
                return false;
            }
            resp = jQuery.parseJSON(resp);
            if(resp['status'] == 1){
                var color = '';
                if(is_scheduled == 1){
                    color = 'red'
                    is_scheduled = 0;
                } else {
                    color = 'green'
                    is_scheduled = 1;
                }
                jQuery.each(resp['succArr'], function(index,value) {
                    jQuery('[id="markSchedule_'+value+'"]').attr('is_scheduled',is_scheduled);
                    jQuery(jQuery('[id="markSchedule_'+value+'"]')).children().css( "color", color );
                });
                remFullScreenLoader();
            } else {
                remFullScreenLoader();
                setErrModal('Error Scheduling Rides','Something went wrong, please try again..!');
            }
        },
        error: function (jqXHR, exception) {
            remFullScreenLoader();
        }
    });
}

function showFullScreenLoader(){
    var thisObj = jQuery('.overlay');
    thisObj.css("display",'block');

    thisObj.addClass('relative');
    thisObj.prepend("<div id='fullScreenLoaderBody' class='loader'></div>");
}

function remFullScreenLoader(){
    var thisObj = jQuery('.overlay');
    thisObj.css("display",'none');

    jQuery('[id="fullScreenLoaderBody"]').remove();
    thisObj.removeClass('relative');
}

function allowDropElement(ev) {
    if(ev.target.getAttribute('type') != 'parent' && ev.target.firstChild != null){
        return false;
    }
    ev.preventDefault();
}

function dragElement(ev) {
    ev.dataTransfer.setData("tmporderid", ev.target.getAttribute('id'));
}

function dropElement(ev) {
    ev.preventDefault();
    jQuery(event.target).css('border-color','#A8A8A8');
    var tmporderid = ev.dataTransfer.getData("tmporderid");
    ev.target.appendChild(document.getElementById(tmporderid));
}

jQuery('[id="upload_excell"]').click(function(){
    var thisObj = jQuery(this), childThisObj = '', headerOrder = [], fileType = jQuery('[name="fileType"]').val(),
        broker_id = jQuery('[name="broker_id"]').val(), company_id = jQuery('[name="company_id"]').val(),
        import_file = jQuery('[name="import_file"]').val(), childHead = '', errMsg = '', error = '0';
    
    if(thisObj.attr('dmclick') != 0){
        return false;
    }

    if(fileType == '' || fileType == undefined || fileType == null || fileType == 'null' || fileType == 'undefined' ||
       broker_id == '' || broker_id == undefined || broker_id == null || broker_id == 'null' || broker_id == 'undefined' ||
       company_id == '' || company_id == undefined || company_id == null || company_id == 'null' || company_id == 'undefined' ||
       import_file == '' || import_file == undefined || import_file == null || import_file == 'null' || import_file == 'undefined'){
        setErrModal('Error Uploading Excell','Please Map All the Fields to the corrospinding header..!');
        return false;
    }

    showFullScreenLoader();
    thisObj.attr('dmclick',1);

    jQuery('[id="mappedHeaders"] [required="yes"]').each(function(){
        childThisObj = jQuery(this);
        if (childThisObj.children().length <= 0) {
            remFullScreenLoader();
            thisObj.attr('dmclick',0);
            childThisObj.css('border-color','red');
            setErrModal('Error Uploading Excell','Map all required fields..!');
            error = '1';
        }
        childHead = childThisObj.children();
        headerOrder[childThisObj.attr('headOrder')] = childHead.attr('tmporder');
    });
    if(error == '1'){
        return false;
    }
    jQuery.ajax({
        url  : base_url+"Ride/import", 
        type : 'POST',
        data : {'broker_id':broker_id,'company_id':company_id,'header_order':headerOrder,'file_type':fileType,'import_file':import_file},
        success: function(resp){
            if(resp == '' || resp == undefined || resp == null || resp == 'null' || resp == 'undefined'){
                remFullScreenLoader();
                thisObj.attr('dmclick',0);
                setErrModal('Error Uploading Excell','Something went wrong, please try again..!');
                return false;
            }
            resp = jQuery.parseJSON(resp);
            if(resp['status'] == 1){
                window.location.replace(base_url+'Ride/view_rides');
            } else {
                if (resp['status'] == 0) {
                    errMsg = 'Something went wrong, please try again..!';
                } else if (resp['status'] == 2) {
                    errMsg = 'Invalid File given, please try again later..!';
                } else if (resp['status'] == 3) {
                    errMsg = 'No data found, please try again later..!';
                } else if (resp['status'] == 4) {
                    errMsg = 'Invalid header given, please try again later..!';
                } 
                remFullScreenLoader();
                thisObj.attr('dmclick',0);
                setErrModal('Error Uploading Excell',errMsg);
            }
            return false;
        },
        error: function (jqXHR, exception) {
            remFullScreenLoader();
            thisObj.attr('dmclick',0);
            setErrModal('Error Uploading Excell','Something went wrong, please try again..!');
            return false;
        }
    });
});


jQuery('[name="vehicle_id"]').on('change',function() {
    var vechileTypId = jQuery(this).find(":selected").val(); 
    if(vechileTypId == '' || vechileTypId == null || vechileTypId == 'null' || 
       vechileTypId == undefined || vechileTypId == 'undefined'){
        setErrModal('Vechile Type Error','Choose a valid vechile type..!');
        return false;
    }
    jQuery.ajax({
        url  : base_url+"Vehicle/getVehicleData", 
        type : 'POST',
        data : {'vehicle_type':vechileTypId},
        success: function(resp){
            if(resp == '' || resp == undefined || resp == null || resp == 'null' || resp == 'undefined'){
                remFullScreenLoader();
                return false;
            }
            resp = jQuery.parseJSON(resp);
            if(resp['status'] == 1){
              if(resp['data'] == undefined || resp['data'] == 'undefined' || 
                 resp['data'] == null || resp['data'] == 'null' || resp['data'] == ''){

                jQuery('[name="vehicle"]').html('<option selected disabled>'+
                                                  'Select Vehicle Model'+
                                                '</option>');
                setErrModal('Vechile Type Error','Choose a valid vechile type..!');
                return false;
              }
              var optHtml = '';
              jQuery.each(resp['data'], function(index,vehicleData){
                optHtml += '<option value="'+vehicleData['vehicle_id']+'" newOpt="1">'+
                              vehicleData['vehicle_model']+' - '+vehicleData['vehicle_reg_no']
                           '</option>'
              });
              jQuery('[name="vehicle"]').html(optHtml);
              jQuery('[id="vehicleModelCont"]').removeClass('hide');
            } else {
              setErrModal('Error','Something went wrong, please try again..!');
              return false;
            }
        },
        error: function (jqXHR, exception) {
          setErrModal('Server Error','Something went wrong, please try again..!');
          return false;
        }
    });
});

jQuery('[id^="updateBrkPayDate_"]').on('click',function() {
    var thisObj = jQuery(this), 
        broker_id = thisObj.attr('broker_id'),
        last_paid_date = jQuery('[name="payment_date_'+broker_id+'"]').datepicker({dateFormat:'yy-mm-dd'}).val();

    if(last_paid_date==''||last_paid_date==undefined||last_paid_date=='undefined'||last_paid_date==null||last_paid_date=='null'){
        setErrModal('Date Not Found','Choose a valid date and continue..!');
        return false;
    }

    if(broker_id==''||broker_id==undefined||broker_id=='undefined'||broker_id==null||broker_id=='null'){
        setErrModal('Error, Payment Date Update','Something went wrong, please try again..!');
        return false;
    }

    jQuery.ajax({
        url  : base_url+"Payment/updatePaymentDate", 
        type : 'POST',
        data : {'broker_id':broker_id,'last_paid_date':last_paid_date},
        success: function(resp){
            if(resp == '' || resp == undefined || resp == null || resp == 'null' || resp == 'undefined'){
                setErrModal('Issue Updating Date','Something went wrong, please try again..!');
                return false;
            }
            resp = jQuery.parseJSON(resp);
            if(resp['status'] == 1 && resp['data'] != '' && resp['data'] != undefined && resp['data'] != null && resp['data'] != 'null' && resp['data'] != 'undefined'){
                var data = resp['data'];

                jQuery('[id="all_trans_count_'+broker_id+'"]').html(data['all_trans_count']);
                jQuery('[id="pro_trans_count_'+broker_id+'"]').html(data['pro_trans_count']);
                jQuery('[id="tot_paid_booking_'+broker_id+'"]').html(data['pro_trans_count'] - data['pending_trans_count']);
                jQuery('[id="pending_trans_count_'+broker_id+'"]').html(data['pending_trans_count']);
                jQuery('[id="brkPayDate_'+broker_id+'"]').html(data['last_paid_date']);
            } else {
                setErrModal('Error','Something went wrong, please try again..!');
            }
            return false;
        },
        error: function (jqXHR, exception) {
            setErrModal('Server Error','Something went wrong, please try again..!');
            return false;
        }
    });
});