0001307: Insufficent quantities "marker" use wrong date in Sales Order
[fa-stable.git] / js / inserts.js
index d8f033ea7821fe1cb455d14cd52f6b791b66b05a..e15da1efe2ee42485a6dab5d67ce153f9501c6cd 100644 (file)
@@ -18,6 +18,14 @@ var _hotkeys = {
 function validate(e) {
        if (e.name && (typeof _validate[e.name] == 'function'))
                return _validate[e.name](e);
+       else {
+               var n = e.name.indexOf('[');
+               if(n!=-1) {
+                       var key = e.name.substring(n+1, e.name.length-1);
+                       if (key.length>1 && _validate[e.name.substring(0,n)])
+                               return _validate[e.name.substring(0,n)][key](e);
+               }
+       }
        return true;
 }
 
@@ -150,7 +158,11 @@ function _set_combo_select(e) {
                    event = event||window.event;
                    key = event.keyCode||event.which;
                    var box = document.getElementsByName(this.getAttribute('rel'))[0];
-                   if (box && key == 32 && this.className == 'combo2') {
+                       if(key == 8 || (key==37 && event.altKey)) {
+                               event.returnValue = false;
+                               return false;
+                       }
+                   if (box && (key == 32) && (this.className == 'combo2')) {
                            this.style.display = 'none';
                            box.style.display = 'inline';
                                box.value='';
@@ -233,9 +245,24 @@ var inserts = {
            // this shows divs for js enabled browsers only
            e.style.display = 'block';
        },
-
        'button': function(e) {
-               e.onclick = function(){ return validate(e); }
+               e.onclick = function(){
+                       if (validate(e)) {
+                               setTimeout(function() { var asp = e.getAttribute('aspect');
+                                       set_mark((asp && (asp.indexOf('process') !== -1)) ? 'progressbar.gif' : 'ajax-loader.gif');
+                               }, 100);
+                               return true;
+                       }
+               },
+               e.onkeydown = function(ev) {    // block unintentional page escape with 'history back' key pressed on buttons
+                       ev = ev||window.event;
+                       key = ev.keyCode||ev.which;
+                       if(key == 8 || (key==37 && ev.altKey)) {
+                               ev.returnValue = false;
+                               return false;
+                       }
+               }
+
        },
 //     '.ajaxsubmit,.editbutton,.navibutton': // much slower on IE7
        'button.ajaxsubmit,input.ajaxsubmit,input.editbutton,button.editbutton,button.navibutton': 
@@ -244,7 +271,7 @@ var inserts = {
                                if (validate(e)) {
                                        save_focus(e);
                                        var asp = e.getAttribute('aspect')
-                                       if (asp && asp.indexOf('process') !== -1)
+                                       if (asp && (asp.indexOf('process') !== -1))
                                                JsHttpRequest.request(this, null, 600000); // ten minutes for backup
                                        else
                                                JsHttpRequest.request(this);
@@ -298,9 +325,19 @@ var inserts = {
                        e.onfocus = function() {
                            save_focus(this);
                        };
-                 var c = e.className;
-                 if (c == 'combo' || c == 'combo2' || c == 'combo3')
+               }
+               var c = e.className;
+               if (c == 'combo' || c == 'combo2' || c == 'combo3')
                        _set_combo_select(e);
+               else {
+                       e.onkeydown = function(ev) {    // block unintentional page escape with 'history back' key pressed on buttons
+                               ev = ev||window.event;
+                               key = ev.keyCode||ev.which;
+                               if(key == 8 || (key=37 && ev.altKey)) {
+                                       ev.returnValue = false;
+                                       return false;
+                               }
+                       }
                }
        },
        'a.printlink':  function(l) {
@@ -358,8 +395,14 @@ var inserts = {
                    }
                }
 //         }
+       },
+       'textarea': function(e) {
+               if(e.onfocus==undefined) {
+                       e.onfocus = function() {
+                           save_focus(this);
+                       };
+               }
        }
-
 /*     'tr.editrow': function(e) {
                        e.onkeydown = function(ev) { 
                        ev = ev||window.event;
@@ -441,7 +484,6 @@ function setHotKeys() {
                                for (var i=0; i<form.elements.length; i++){
                                        var el = form.elements[i];
                                        var asp = el.getAttribute('aspect');
-                                       
 
                                        if (el.className!='editbutton' && (asp && asp.indexOf('selector') !== -1) && (key==13 || key==27)) {
                                                passBack(key==13 ? el.getAttribute('rel') : false);
@@ -450,6 +492,9 @@ function setHotKeys() {
                                        }
                                        if (((asp && asp.indexOf('default') !== -1) && key==13)||((asp && asp.indexOf('cancel') !== -1) && key==27)) {
                                                if (validate(el)) {
+                                                       if (asp.indexOf('nonajax') !== -1)
+                                                               el.click();
+                                                       else
                                                        if (asp.indexOf('process') !== -1)
                                                                JsHttpRequest.request(el, null, 600000);
                                                        else