-  function check_right_date_format(input_name) {
-    var decnumbers = input_name.value.split(decpoint);
-    if(thpoint) {
-      var thnumbers = input_name.value.split(thpoint);
-      if(thnumbers[thnumbers.length-1].match(/.+decpoint$/g)) {
-        thnumbers[thnumbers.length-1] = thnumbers[thnumbers.length-1].substring(thnumbers[thnumbers.length-1].length-1);
-      }
-      if(thnumbers[thnumbers.length-1].match(/.+decpoint\d$/g)) {
-        thnumbers[thnumbers.length-1] = thnumbers[thnumbers.length-1].substring(thnumbers[thnumbers.length-1].length-2);
-      }  
-      if(thnumbers[thnumbers.length-1].match(/.+decpoint\d\d$/g)) {
-        thnumbers[thnumbers.length-1] = thnumbers[thnumbers.length-1].substring(thnumbers[thnumbers.length-1].length-3);
-      }  
-      for(var i = 1; i < thnumbers.length; i++) {
-        if(!thnumbers[i].match(/\d\d\d/g)) {
-          return show_alert_and_focus(input_name);
-        }
-        if(thnumbers[i].match(/.*decpoint.*|.*thpoint.*/g)) {
-          return show_alert_and_focus(input_name);
-        }
-      }
-      if(decnumbers.length > 2 || (decnumbers.length > 1 ? (decnumbers[1].length > 2) : false)) {
-        return show_alert_and_focus(input_name);
+$(function () {
+  $('input').focus(function(){
+    if (focussable(this)) window.focused_element = this;
+  });
+
+  // setting focus inside a tabbed area fails if this is encountered before the tabbing is complete
+  // in that case the elements count as hidden and jquery aborts .focus()
+  setTimeout(function(){
+    // Lowest priority: first focussable element in form.
+    set_cursor_to_first_element();
+
+    // Medium priority: class set in template
+    var initial_focus = $(".initial_focus").filter(':visible')[0];
+    if (initial_focus)
+      $(initial_focus).focus();
+
+    // special: honour focus_position
+    // if no higher priority applies set focus to the appropriate element
+    if ($("#display_row")[0] && kivi.myconfig.focus_position) {
+      switch(kivi.myconfig.focus_position) {
+        case 'last_partnumber'  : $('#display_row tr.row:gt(-3):lt(-1) input[name*="partnumber"]').focus(); break;
+        case 'last_description' : $('#display_row tr.row:gt(-3):lt(-1) input[name*="description"]').focus(); break;
+        case 'last_qty'         : $('#display_row tr.row:gt(-3):lt(-1) input[name*="qty"]').focus(); break;
+        case 'new_partnumber'   : $('#display_row tr:gt(1) input[name*="partnumber"]').focus(); break;
+        case 'new_description'  : $('#display_row tr:gt(1) input[name*="description"]').focus(); break;
+        case 'new_qty'          : $('#display_row tr:gt(1) input[name*="qty"]').focus(); break;