function getDistanceFromLatLonInKm(lat1,lon1,lat2,lon2) { var R = 6371; // Radius of the earth in km var dLat = deg2rad(lat2-lat1); // deg2rad below var dLon = deg2rad(lon2-lon1); var a = Math.sin(dLat/2) * Math.sin(dLat/2) + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.sin(dLon/2) * Math.sin(dLon/2) ; var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); var d = R * c; // Distance in km return d; } function deg2rad(deg) { return deg * (Math.PI/180) } function getByTag( tags, is_active ){ $('.orderlist-div').toggleClass('hide',false); if( tags[0] == undefined ){ $('.orderlist-div').toggleClass('d-none',false); var tag=''; var subtag=''; } else { if( is_active ) return; $('.orderlist-div').toggleClass('hide',true); setTimeout(function(){ $('.orderlist-div').toggleClass('d-none',true); // manage tags $('.li-tags').toggleClass('active', false ); $('.li-subtags').toggleClass('active', false ).toggleClass('d-none',true); var tag_class=''; tags.forEach( function(v,i){ if( v == null || v == '' ) return; tag_class+='.tag-'+v; $('.li-tag-'+v).toggleClass('active',true); $('.li-subtag-of-'+v).toggleClass('d-none', false); } ); $(tag_class).toggleClass('d-none',false); var tag=tags[0]; var subtag=tags[1]; // manage url params var p=['tag','subtag','lat','long']; var lat=undefined; var long=undefined; var param=[]; p.forEach( function(v){ if( eval(v) != undefined ){ var pp=eval(v); } else { var pp=getQueryVariable(v); } if( pp != undefined ){ if( pp != '' ){ param.push(v + '='+pp); } } } ); ChangeUrl( '', (( param != '' ) ? '?' : '' )+param.join('&') ); setTimeout(function(){ $('.orderlist-div.hide').toggleClass('hide',false); },100 ); },500 ); } } function getDistancesTags(){ var url_string = window.location.href; var url = new URL(url_string); var lat = url.searchParams.get('lat'); var long = url.searchParams.get('long'); var tag = url.searchParams.get('tag'); var subtag = url.searchParams.get('subtag'); getByTag([ tag, subtag ], false ); if( lat == null || long == null ){ lat=-100; } var calc_distance=false; if( lat >= -90 && lat <= 90 && long >=-180 && long <= 180 ){ calc_distance=true; } $.each( $('.distance'), function(i,v){ var geo=$( $(v).context.previousElementSibling ).text(); var llat=geo.split(/,/g)[0]; var llong=geo.split(/,/g)[1]; var lcountry=geo.split(/,/g)[2]; $(v).html('<span class="feather-icon icon-map-pin"></span> ' + lcountry + ' ' + (( calc_distance ) ? '( ' + Math.round( getDistanceFromLatLonInKm (lat, long, llat, llong ) )+'km ) ' : '' ) ); } ); } function formInput(obj){ if( $(obj).hasClass('form-decimals') ){ $(obj).toggleClass('is-invalid', ! $.isNumeric( $(obj).val() ) ); } } function createYml(){ var yml=''; $.each( $('.order-form'), function(i,v){ if( v.id == 'price-reference' || v.id == 'tags' ){ yml+=v.id + ': [ ' + $(v).val().replace(/(?:\r\n|\r|\n)/g, '<br>') + ' ]\n'; } else { yml+=v.id + ': ' + $(v).val().replace(/(?:\r\n|\r|\n)/g, '<br>') + '\n'; } } ); $('#order-yml').val(yml); } function importYml(){ var yml=$('#order-yml').val(); var error=''; $('#order-yml').toggleClass('is-invalid',false); var lastf=''; yml.split('\n').forEach( function(v,i){ if( v == '' ) return; if( v.split(/-/g)[0].trim() == '' || v.split(/-/g)[0].trim() == '\t' ){ $('#'+lastf).val( v.split(/-/g)[1].replace(/\[|\]| /g,'').trim() ); return; } var p=v.split(':')[0].trim(); var v=v.split(':').slice(1).join(':').trim(); if( $('#'+p).length == 1 ){ if( $('#'+p)[0].localName == 'select' ){ if( p == 'price-reference' ){ lastf=p; return; } else if( $('#'+p).val(v).val() != v ){ error+='#'+p+' value ['+v+'] not exists in the list!'; } } } else { error+='#'+p+' not found in form!'; } if( error != ''){ alert( 'error: \n'+error ); error=''; $('#order-yml').toggleClass('is-invalid',true); } else { $('#'+p).val(v.replace(/\<br\>/ig,'\n')); } } ); } function getQueryVariable(variable) { var query = window.location.search.substring(1); var vars = query.split("&"); for (var i=0;i<vars.length;i++) { var pair = vars[i].split("="); if(pair[0] == variable){return pair[1];} } } function ChangeUrl(page, query ) { if( query == '' ){ query=window.location.pathname; } if (typeof (history.replaceState) != "undefined") { var obj = { Page: page, Url: query }; history.replaceState(obj, obj.Page, obj.Url); } else { alert("Browser does not support HTML5."); } } function GetValues(){ $.each( $('.order-form'), function(i,v){ if( getQueryVariable(v.id) != undefined ){ $(v).val( decodeURI( getQueryVariable(v.id) ) ); } } ); }