jQuery(document).ready(function() { /** * @Login Ajax Call on submit * Displaying Client List after login * set userid session * * @since 0.0.2 */ jQuery(".lf_submit").click( function() { var username = jQuery('.lf_username').val(); var password = jQuery('.lf_password').val(); var keycode = jQuery('.keycode').val(); var form_data = {'keycode': keycode, 'login_id': username, 'password': password }; jQuery.ajax({ url: ajax_object_lawPro.ajax_url, type: 'POST', dataType: 'json', data: { 'data': form_data, 'action' : "login_ajax_process_request" }, success: function (response) { console.info(response); if(response.Action === "Y"){ jQuery('#reset_link').val(response.NextURL); jQuery('#resetPassModal').modal('show'); }else{ var userid = response.UserId; Cookies.set('session_userid', userid); var in30Minutes = 1/48; Cookies.set('session_login', 'yes', { expires: in30Minutes }); var data = response.Data; var len = data.length; if (response.Action === "ClientList" ) { var th = Object.keys(data[0]); console.info(th); var th_len = th.length; var key = ""; var key2 = ""; var downval =""; var txt ='
\n' + '\n' + '\n' + '
'; txt += ''; if(data[0]['DownloadsConfig']){ for (var a = 0; a < th_len-3; a++) { txt += ''; } txt += ""; }else { for (var a = 0; a < th_len-1; a++) { txt += ''; } } txt += ''; for (var i = 0; i < len; i++) { if(data[0]['DownloadsConfig']){ txt += ''; key2 = key = data[i][th[th_len-3]]; key2=key2.split("'").join("\\'"); txt += ""; for (var j = 1; j < th_len-3; j++) { txt += ""; } txt +=''; txt += ''; } else { txt += ''; key2 = key = data[i][th[th_len - 1]]; key2 = key2.split("'").join("\\'"); txt += ""; for (var j = 1; j < th_len-1; j++) { txt += ""; } txt += ''; } } jQuery("#formContent").addClass('hidden'); jQuery(".error-msg").addClass('hidden'); } if(response.Action === "ClientList" && len < 1){ jQuery("#formContent").addClass('hidden'); jQuery(".error-msg").addClass('hidden'); txt = '

There is no data to display

'; } if (response.Action === "Failed" || response.Action === "Fail" && len < 1) { jQuery('.error-msg').html('

' + response.Message + '

'); jQuery(".error-msg").removeClass('hidden'); } if(response.Action === "ClientList" || response.Action === "Failed" || response.Action === "Fail") { if (txt !== "") { jQuery(".clientlisttable").append(txt); jQuery("#clientlist").DataTable({ "order": [], "autoWidth": false, "responsive": true }); jQuery("#clientlist").after("").removeClass("hidden"); jQuery(".signout").removeClass('hidden'); jQuery("a.home").removeClass('hidden').append(response.Title); } } if(response.Action === "MatterList" && len >= 1){ var th = Object.keys(data[0]); var th_len = th.length; var key = ""; Cookies.set('session_matterlist', 'yes'); if(len >= 1) { var txt = ''; for (var a = 0; a < th_len - 1; a++) { txt += ''; } txt += ''; for (var i = 0; i < len; i++) { txt += ''; key = data[i][th[th_len - 1]]; txt += ""; for (var j = 1; j < th_len - 1; j++) { txt += ""; } txt += ''; } txt += ''; }else{ txt = '

There is no data to display

'; } if (txt !== "") { jQuery(".matterlisttable").append(txt); jQuery("#matterlist").after("").removeClass("hidden").DataTable({ "order": [], "autoWidth" : false, "responsive": true }); jQuery("#formContent").addClass('hidden'); // jQuery("#clientlist_wrapper").addClass('hidden'); jQuery(".signout").removeClass('hidden'); jQuery(".breadcrums").append(''+response.Title +''); } } } }, error: function(jqXHR, textStatus, errorThrown){ console.log('error: ' + textStatus + ': ' + errorThrown); } }); return false; }); jQuery(".reset-pass").click( function() { var username = jQuery('.lf_username').val(); var keycode = jQuery('.keycode').val(); var reset_link = jQuery('#reset_link').val(); var form_data = {'keycode': keycode, 'login_id': username, 'reset_link': reset_link }; jQuery.post(reset_ajax_process_request, form_data, function(response) { jQuery('.resetForm').submit(); jQuery('.modal-body').text(response.Message); jQuery('.modal-title').text('Email Sent!'); jQuery('.reset-pass').css('display', 'none'); }); /*jQuery.ajax({ url: ajax_object_lawPro.ajax_url, type: 'POST', dataType: 'json', data: { 'data': form_data, 'action' : "reset_ajax_process_request" }, success: function (response) { jQuery('.resetForm').submit(); jQuery('.modal-body').text(response.Message); jQuery('.modal-title').text('Email Sent!'); jQuery('.reset-pass').css('display', 'none'); } })*/ }); jQuery(document).ajaxStart(function() { jQuery(".ajax-loader").show(); }).ajaxStop(function() { jQuery(".ajax-loader").fadeOut(500); }); /** * @Login Ajax Call on Enter * ClientList display on enter * * @since 0.1.0 */ jQuery(".lf_password").keypress(function(e) { var key = e.which; if (key === 13) { jQuery(".lf_submit").click(); return false; } }); /** * @ResetPassword * Email sent via Ajax Call on submit * * @since 0.0.9 */ jQuery(".lf_rs-btn").click( function() { var email = jQuery('.lf_email').val(); var keycode = jQuery('.keycode').val(); var valid = validateEmail(email); if(valid){ var validEmail = email; }else { alert('please enter valid email'); } // var formdata = { 'email': validEmail, 'keycode': keycode }; jQuery.ajax({ // url: ajax_object_lawPro.ajax_url, url: "https://streamlineportal.streamline-corp.com/middleware/api/webservice/resetPasswordEmail", type: 'POST', dataType: 'json', data: { 'email': validEmail, 'keycode': keycode // 'data': formdata // 'action': 'resetPasswordEmail_process_request' }, success: function (response) { console.info(response); if(response.Action === 'Failed' || response.Action === 'Fail'){ // if(response.Action === 'Failed'){ jQuery('.error-msg').removeClass('hidden').html('

'+response.Message+'

'); jQuery('.success-msg').addClass('hidden'); } if(response.Action === 'Success'){ jQuery('.success-msg').removeClass('hidden').html('

'+response.Message+'

'); jQuery('.error-msg').addClass('hidden'); } }, error: function (jqXHR, textStatus, errorThrown) { console.log('error: ' + textStatus + ': ' + errorThrown); } }); return false; }); /** * @SendEmail on Enter Press * Form display on enter * * @since 0.1.0 */ jQuery(".lf_email").keypress(function(e) { var key = e.which; if (key === 13) { jQuery(".lf_rs-btn").click(); return false; } }); var session_login = Cookies.get('session_login'); if(session_login !== 'yes'){ Cookies.remove('session_userid'); Cookies.remove('session_clientkey'); Cookies.remove('session_login'); jQuery("#formContent").removeClass('hidden'); } /** * @session_userid session * We will use this session to stay logged * when user reload page * * @since 0.9.0 */ var userid_val = Cookies.get('session_userid'); var client_key = Cookies.get('session_clientkey'); var matterlist_session = Cookies.get('session_matterlist'); if(matterlist_session ==='yes'){ jQuery("#formContent").addClass('hidden'); jQuery(".prolaw .wrapper").css('visibility', 'hidden'); showMatterListSC(userid_val); } setTimeout(function(){ jQuery('.ajax-loader').addClass('hidden'); }, 4000); /** * @session_clientkey session * We will use this session on matterlist breadcrum click * * @since 0.1.1 */ if(client_key && userid_val) { jQuery("#formContent").addClass('hidden'); jQuery("#clientlist_wrapper").addClass('hidden'); showMatterList(client_key, userid_val); } else if(userid_val) { jQuery("#formContent").addClass('hidden'); jQuery(".prolaw .wrapper").css('visibility', 'hidden'); getClientList(userid_val); } /** * @prolaw body class * We will add class on specific our short code generated page * @since 0.1.0 */ jQuery('body') .addClass('prolaw'); }); /** * @validateEmail Callback * Check email if it valid then will let us submit * @since 0.0.8 */ function validateEmail(elementValue){ var emailPattern = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/; return emailPattern.test(elementValue); } /** * @SignOut Callback * It will signed us out and destroy all sessions * * @since 0.0.8 */ function signout() { Cookies.remove('session_userid'); Cookies.remove('session_clientkey'); Cookies.remove('session_matterlist'); location.reload(true); } /** * @ResetEmail Callback * It will show the reset email form * * @since 0.1.0 */ function resetEmail() { jQuery('.rs-form-wrapper').removeClass('hidden'); jQuery('.lg-form-wrapper').addClass('hidden'); } /** * @showMatterListSC callback * Get Matter lists for single client * * @since 0.1.0 */ function showMatterListSC(userid) { var _keycode = jQuery('.keycode').val(); var formdata = { 'keycode': _keycode, 'userid': userid }; jQuery.ajax({ url: ajax_object_lawPro.ajax_url, type: 'POST', dataType: 'json', data: { 'data': formdata, 'action': 'client_list_process_request' }, success: function (response) { // console.info(response); var data = response.Data; var len = data.length; var th = Object.keys(data[0]); var th_len = th.length; var key = ""; if (len >= 1) { var txt = ''; for (var a = 0; a < th_len - 1; a++) { txt += ''; } txt += ''; for (var i = 0; i < len; i++) { txt += ''; key = data[i][th[th_len - 1]]; txt += ""; for (var j = 1; j < th_len - 1; j++) { txt += ""; } txt += ''; } txt += ''; } else { txt = '

There is no data to display

'; } if (txt !== "") { jQuery(".matterlisttable").append(txt); jQuery("#matterlist").after("").removeClass("hidden").DataTable({ "order": [], "autoWidth": false, "responsive": true }); jQuery("#clientlist_wrapper").addClass('hidden'); jQuery(".signout").removeClass('hidden'); jQuery(".breadcrums").append('' + response.Title + ''); } }, error: function (jqXHR, textStatus, errorThrown) { console.log('error: ' + textStatus + ': ' + errorThrown); } }); return false; } /** * @ClientList callback * Get client lists and will show on reload * * @since 0.1.0 */ function getClientList(userid) { var _keycode = jQuery('.keycode').val(); var formdata = { 'keycode': _keycode, 'userid': userid }; jQuery.ajax({ url: ajax_object_lawPro.ajax_url, type: 'POST', dataType: 'json', data: { 'data': formdata, 'action': 'client_list_process_request' }, success: function (response) { console.info(response); var data = response.Data; var len = data.length; if (response.Action === "ClientList") { var th = Object.keys(data[0]); console.info(th); var th_len = th.length; var key = ""; var key2 = ""; var downval =""; var txt ='
\n' + '\n' + '\n' + '
'; txt += ''; if(data[0]['DownloadsConfig']){ for (var a = 0; a < th_len-3; a++) { txt += ''; } txt += ""; }else { for (var a = 0; a < th_len-1; a++) { txt += ''; } } txt += ''; for (var i = 0; i < len; i++) { if(data[0]['DownloadsConfig']){ txt += ''; key2 = key = data[i][th[th_len-3]]; key2=key2.split("'").join("\\'"); console.info(key2); txt += ""; for (var j = 1; j < th_len-3; j++) { txt += ""; } txt +=''; txt += ''; } else { txt += ''; key2 = key = data[i][th[th_len - 1]]; key2 = key2.split("'").join("\\'"); txt += ""; for (var j = 1; j < th_len-1; j++) { txt += ""; } txt += ''; } } if(len < 1){ txt = '

There is no data to display

'; } } if ( response.Action === "Failed" || response.Action === "Fail") { jQuery('.error-msg').html('

' + response.Message + '

'); jQuery(".error-msg").removeClass('hidden'); } if(response.Action === "ClientList" || response.Action === "Failed" || response.Action === "Fail") { if (txt !== "") { jQuery(".clientlisttable").append(txt); jQuery("#clientlist").DataTable({ "order": [], "autoWidth": false, "responsive": true }); jQuery("#clientlist").after("").removeClass("hidden"); jQuery(".signout").removeClass('hidden'); jQuery("a.home").removeClass('hidden').append(response.Title); jQuery(".error-msg").addClass('hidden'); } } }, error: function(jqXHR, textStatus, errorThrown){ console.log('error: ' + textStatus + ': ' + errorThrown); } }); return false; } /** * @MatterList callback * Get Matter lists of specific client * * @since 0.1.0 */ function getMatterList(key) { Cookies.set('session_clientkey', key); //key=key.replace("\\'", "'"); key=key.split("\\'").join("'"); var _keycode = jQuery('.keycode').val(); var userid = jQuery('.userid').val(); var formdata = { 'keycode': _keycode, 'userid': userid, 'client_key' : key }; jQuery.ajax({ url: ajax_object_lawPro.ajax_url, type: 'POST', dataType: 'json', data: { 'data': formdata, 'action': 'matter_list_process_request' }, success: function (response) { // console.info(response); var data = response.Data; var len = data.length; var th = Object.keys(data[0]); var th_len = th.length; var key = ""; if(len >= 1) { var downval =""; var txt ='\n' + '\n' + '\n' + ''; txt += ''; if(data[0]['DownloadsConfig']){ for (var a = 0; a < th_len-2; a++) { txt += ''; } txt += ""; }else { for (var a = 0; a < th_len - 1; a++) { txt += ''; } } txt += ''; for (var i = 0; i < len; i++) { if(data[0]['DownloadsConfig']){ txt += ''; key2 = key = data[i][th[th_len-3]]; key2=key2.split("'").join("\\'"); console.info(key2); txt += ""; for (var j = 1; j < th_len-1; j++) { txt += ""; } txt +=''; txt += ''; } else { txt += ''; key = data[i][th[th_len - 1]]; txt += ""; for (var j = 1; j < th_len - 1; j++) { txt += ""; } txt += ''; } } txt += ''; }else{ txt = '

There is no data to display

'; } if (txt !== "") { jQuery(".matterlisttable").append(txt); jQuery("#matterlist").after("").removeClass("hidden").DataTable({ "order": [], "autoWidth" : false, "responsive": true }); jQuery("#clientlist_wrapper").addClass('hidden'); jQuery(".breadcrums").append('> '+response.Title +''); } }, error: function(jqXHR, textStatus, errorThrown){ console.log('error: ' + textStatus + ': ' + errorThrown); } }); return false; } /** * @ShowMatterList callback * Get Matter lists of specific client on * click matterlist breadcrums * * @since 0.1.0 */ function showMatterList(key, userid) { //key=key.replace("\\'", "'"); key=key.split("\\'").join("'"); Cookies.set('session_clientkey', key); var _keycode = jQuery('.keycode').val(); var formdata = { 'keycode': _keycode, 'userid': userid, 'client_key' : key }; jQuery.ajax({ url: ajax_object_lawPro.ajax_url, type: 'POST', dataType: 'json', data: { 'data': formdata, 'action':'matter_list_process_request' }, success: function (response) { // console.info(response); var data = response.Data; var len = data.length; var th = Object.keys(data[0]); var th_len = th.length; var key = ""; if(len >= 1) { var txt = ''; for (var a = 0; a < th_len - 1; a++) { txt += ''; } txt += ''; for (var i = 0; i < len; i++) { txt += ''; key = data[i][th[th_len - 1]]; txt += ""; for (var j = 1; j < th_len - 1; j++) { txt += ""; } txt += ''; } txt += ''; }else{ txt = '

There is no data to display

'; } if (txt !== "") { jQuery(".matterlisttable").append(txt); jQuery("#matterlist").after("").removeClass("hidden").DataTable({ "order": [], "autoWidth" : false, "responsive": true }); jQuery("#clientlist_wrapper").addClass('hidden'); jQuery(".signout").removeClass('hidden'); jQuery(".breadcrums").append('Client List > '+response.Title +''); } }, error: function(jqXHR, textStatus, errorThrown){ console.log('error: ' + textStatus + ': ' + errorThrown); } }); return false; } /** * @MatterDetail callback * Get Matter Detail of specific matterlist * * @since 0.1.0 */ function getMatterDetail(key) { var _keycode = jQuery('.keycode').val(); var userid = jQuery('.userid').val(); var formdata = { 'keycode': _keycode, 'userid': userid, 'matter_key' : key }; jQuery.ajax({ url: ajax_object_lawPro.ajax_url, type: 'POST', dataType: 'json', data: { 'data': formdata, 'action': 'matter_detail_process_request' }, success: function (response) { console.info(response); var data = response.Data; var len = data.length; var txt = ""; var downval =""; txt +='
\n' + '\n' + '\n' + '
'; if(len >=1) { for (var b = 0; b < len; b++) { if (data[b][0]['Dataset Type'] === 'HTML') // txt += ''; txt += data[b][0]['Content']; } txt += '
'; for (var c = 1; c < len; c++) { txt += '
'; txt += ''; if(data[c][0]['DownloadsConfig']){ var th = Object.keys(data[c][0]); for (var a = 2; a < th.length-2; a++) { txt += "" } txt += ""; }else { var th = Object.keys(data[c][0]); for (var a = 2; a < th.length; a++) { txt += "" } } txt += ''; for (var g = 0; g < data[c].length; g++) { if(data[c][g]['DownloadsConfig']){ txt += ''; for (var h = 2; h < th.length-2; h++) { txt += ""; } txt +=''; txt += ''; }else { txt += ''; for (var h = 2; h < th.length; h++) { txt += ""; } txt += ''; } } txt += '
" + th[a] + "Downloads" + th[a] + "
" + data[c][g][th[h]] + "'; downval = data[c][g]['DownloadsConfig']; // console.info(downval); var downvalres = downval.substring(1, downval.length-1); console.info(downvalres); txt += "Download"; txt += '
" + data[c][g][th[h]] + "
'; } txt += '
'; }else if(response === null ){ txt = '

There is no data to display

'; } else { txt = '

There is no data to display

'; } if (txt !== "") { jQuery("#matterlistdetail").append(txt); for (var j = 1; j < len; j++) { jQuery('#matterdetailtab'+j+'').DataTable({ "order": [], "autoWidth" : false, "responsive": true }); } jQuery("#matterlist_wrapper").addClass('hidden'); jQuery(".mdetail-wrapper ul li:first-child a").addClass('active'); jQuery(".mdetail-wrapper .tab-content .tab-pane:first-child").addClass('active').addClass('show'); jQuery(".breadcrums").append(' > '+ response.Title +' '); } }, error: function(jqXHR, textStatus, errorThrown){ console.log('error: ' + textStatus + ': ' + errorThrown); } }); return false; } /** * @ShowClientList on breadcrum * Show Client List When client on breadcrum * * @since 0.1.3 */ function clientlist_bcm(){ Cookies.remove('session_clientkey'); location.reload(true); } /** * @LoaderShow untill complete page is not loading * Show Client List When client on breadcrum * * @since 0.1.5 */ jQuery(window).load(function () { jQuery(".ajax-loader").fadeOut(2500); }); /** * @resizeIfram on load * Dynamic height of iframe will addedwith html * * @since 0.2.0 */ function resizeIframe(obj) { obj.style.height = obj.contentWindow.document.documentElement.scrollHeight + 'px'; } var userid_val = Cookies.get('session_userid'); if(userid_val) { jQuery("#formContent").addClass('hidden'); jQuery(".prolaw .wrapper").css('visibility', 'hidden'); } function getdownloadFile(string) { jQuery('#param').val(string); jQuery("#start_download").submit(); // jQuery("#start_download").ajaxSubmit({url: 'https://streamlineportal.streamline-corp.com/middleware/FileServer/getfile', type: 'post'}) } function getdownloadFileClient(string) { jQuery('#paramClient').val(string); jQuery("#start_downloadClient").submit(); // jQuery("#start_download").ajaxSubmit({url: 'https://streamlineportal.streamline-corp.com/middleware/FileServer/getfile', type: 'post'}) } function getdownloadFileMatter(string) { jQuery('#paramMatter').val(string); jQuery("#start_downloadMatter").submit(); // jQuery("#start_download").ajaxSubmit({url: 'https://streamlineportal.streamline-corp.com/middleware/FileServer/getfile', type: 'post'}) } Home – Creative Dynamic Skip to content
1-866-877-7353 info@creativedynamicinc.com

Custom software development

Canned software not good enough? We walk you through the steps to create software that is powerful enough to solve your immediate problems, and flexible enough to solve your future ones, too

Mobile Application Development

Need to reach a mobile workforce or connect with your customers in a more personal way, have us build a mobile app for you.

Web Development

From simple brochure-style websites to ones with complex ROI calculators, communities or portals for your customers to use, we do it all.

Small Projects

Need to integrate two applications, report on existing data or fix a custom application? Our technicians are standing by ready to dig into your issues.

Your software should give you a competitive advantage.

Great companies codify their core principles and processes, but remain flexible, too. Documented policies and procedures make it easy to train new employees, and to make sure that everyone is working towards the same goals. At the same time, flexibility ensures that those same team members can adjust to meet new challenges. This is not an easy balance to master.

Great software should do the same. Software should be opinionated about the right set of things. It should gently suggest the best approach to a situation, but not break if an employee needs to do something a little differently.

If its flexible but structured, employees will find it intuitive and easy to work with. It will speed your business along, allowing you to do things you never thought were possible.

Your managers will start managing people and processes, not directing traffic.

Executives will be able to dream and plan instead of doing management’s job. They’ll have the data they need to make the best use of the system. Good software lets them do that.

Designed by the right team, custom software can meet this challenging goal.

These customer results could be yours.

A law firm increased their efficiency by 33%, saving millions of dollars in the process

An oil and gas pipeline contractor reduced their project administration costs by 80%

An ivy-league university can now manage their collaboration with research institutions worldwide centrally instead of relying on email and phone calls.

An automotive electronics company can see what their nationwide sales force is up to without having to spend a fortune on CRM software.

Take the first (baby) step.

Filling out a form like this is a bit of a leap into the unknown.

Will this be a good use of my time? What if they spam me non-stop? How do I know if they will do good work?

While we can’t guarantee that we’re a great match for your company, we can promise that you’ll come away from your conversation with us with fresh insight about your project.

We’ve worked in a wide variety of industries, and have seen it all when it comes to software.  We also understand business in a way few development companies do.

So, tell us a little about your project, let us know a good time to call, and we’ll chat.  You’ll gain a fresh perspective on your project.

You’ll also have a great conversation with a software nerd that knows business and talks in plain English.  (We’re a rare breed.  Rarely seen in the wild.  Once in a lifetime opportunity. You don’t want to miss this…)

    Back To Top