Removed not used yet ajax stuff, added combo class binding and setFocus()
[fa-stable.git] / includes / ui / ui_view.inc
index 639aea0b9acdc661867b09e92dd9029d0e1432fc..6c893e0f7f12fa9f2bf98f2d6629061393203e30 100644 (file)
@@ -555,6 +555,12 @@ function get_js_open_window($width, $height)
 
 function get_js_form_entry($edit_name, $sel_name, $next_name)
 {
+    global $comp_path;
+    $fpath = $comp_path.'/'.user_company().'/js_cache/form_entry.js';
+
+    if (!file_exists($fpath)) {
+    
+
        $js = "\n<script type=\"text/javascript\">\n"
                . "<!--\n"
                . "function recalcAccounts()\n"
@@ -588,7 +594,11 @@ function get_js_form_entry($edit_name, $sel_name, $next_name)
                . "}\n"
                . "-->\n"
                . "</script>\n";
-       return $js;
+     cache_js_file($fpath, $js);
+    } 
+    add_js_ufile($fpath);
+
+       return '';
 }
 
 function get_js_set_focus($name)
@@ -633,18 +643,8 @@ function get_js_png_fix()
 
 function get_js_date_picker()
 {
-       global $dateseps, $date_system;
-
-       $how = user_date_format();                              // 0 = us/ca, 1 = eu, au, nz, 2 = jp, sw
-       $sep = $dateseps[user_date_sep()];              // date separator
-       $wstart = (($date_system == 1 || $date_system == 2) ? 6 : ($how == 0 ? 0 : 1));                 // weekstart (sun = 0, mon = 1)
-       $months = array(_("January"),_("February"),_("March"),_("April"),_("May"),_("June"),_("July"),_("August"),_("September"),_("October"),_("November"),_("December"));
-       $wdays = array(_("Su"),_("Mo"),_("Tu"),_("We"),_("Th"),_("Fr"),_("Sa"));
-       $back = _("Back");
-       if ($date_system == 1)
-               list($cyear, $cmon, $cday) = gregorian_to_jalali(date("Y"), date("n"), date("j"));
-       else if ($date_system == 2)
-               list($cyear, $cmon, $cday) = gregorian_to_islamic(date("Y"), date("n"), date("j"));
+    global $comp_path;
+    $fpath = $comp_path.'/'.user_company().'/js_cache/'.'date_picker.js';
 
        $js = "<style>
 #CCIFrame { display: none; left: 0px; position: absolute; top: 0px; height: 250px; width: 250px; z-index: 99;}
@@ -667,8 +667,25 @@ function get_js_date_picker()
 #CC .empty { background-color: #CCC; border: 1px solid #FFF;}
 </style>
 ";
-       $js .= "<script type=\"text/javascript\">
-<!--\n
+    add_js_source($js);
+    
+    if (!file_exists($fpath)) {
+    
+       global $dateseps, $date_system;
+
+       $how = user_date_format();                              // 0 = us/ca, 1 = eu, au, nz, 2 = jp, sw
+       $sep = $dateseps[user_date_sep()];              // date separator
+       $wstart = (($date_system == 1 || $date_system == 2) ? 6 : ($how == 0 ? 0 : 1));                 // weekstart (sun = 0, mon = 1)
+       $months = array(_("January"),_("February"),_("March"),_("April"),_("May"),_("June"),_("July"),_("August"),_("September"),_("October"),_("November"),_("December"));
+       $wdays = array(_("Su"),_("Mo"),_("Tu"),_("We"),_("Th"),_("Fr"),_("Sa"));
+       $back = _("Back");
+       if ($date_system == 1)
+               list($cyear, $cmon, $cday) = gregorian_to_jalali(date("Y"), date("n"), date("j"));
+       else if ($date_system == 2)
+               list($cyear, $cmon, $cday) = gregorian_to_islamic(date("Y"), date("n"), date("j"));
+
+
+       $js = "
 function positionInfo(object) {
   var p_elm = object;
   this.getElementLeft = getElementLeft;
@@ -1060,35 +1077,108 @@ function changeCCMonth(change) {
   cC.changeMonth(change);
 }
 document.write(\"<iframe id='CCIframe' src='javascript:false;' frameBorder='0' scrolling='no'></iframe>\");
-document.write(\"<div id='CC'></div>\");
--->
-</script>
-";
-       return $js;
+document.write(\"<div id='CC'></div>\");";
+
+     cache_js_file($fpath, $js);
+    } 
+    add_js_ufile($fpath);
+
+ return '';
+}
+
+//
+//     Javascript conversions to/from user numeric format.
+//
+function add_js_user_num() {
+
+    global $comp_path;
+    $fpath = $comp_path.'/'.user_company().'/js_cache/'.'user_num.js';
+
+    if (!file_exists($fpath)) {
+    
+       global $thoseps, $decseps;
+       $ts = $thoseps[user_tho_sep()];
+       $ds = $decseps[user_dec_sep()];
+
+       $js = "function price_format(post, num, dec, label) {
+       //num = num.toString().replace(/\\$|\\,/g,'');
+       if(isNaN(num))
+               num = \"0\";
+       sign = (num == (num = Math.abs(num)));
+       if(dec<0) dec = 2;
+       decsize = Math.pow(10, dec);
+       num = Math.floor(num*decsize+0.50000000001);
+       cents = num%decsize;
+       num = Math.floor(num/decsize).toString();
+       for( i=cents.toString().length; i<dec; i++){
+               cents = \"0\" + cents;
+       }
+       for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
+               num = num.substring(0,num.length-(4*i+3))+'".$ts."'+
+                       num.substring(num.length-(4*i+3));
+        num = ((sign)?'':'-') + num;
+        if(dec!=0) num = num + '".$ds."' + cents;
+       if(label)
+           document.getElementById(post).innerHTML = num;
+       else
+           document.getElementsByName(post)[0].value = num;
+       }
+       function get_amount(doc, label) {
+           if(label)
+               var val = document.getElementById(doc).innerHTML;
+           else
+               var val = document.getElementsByName(doc)[0].value;
+               val = val.replace(/\\".$ts."/g,'');
+               val = val.replace(/\\".$ds."/g,'.');
+               return 1*val;
+       }
+       ";
+
+     cache_js_file($fpath, $js);
+    } 
+    add_js_ufile($fpath);
 }
 
-function get_js_allocate() {
-       return "<script>function allocate_all(doc) {
-       var alloc = 1*document.getElementsByName('left_to_allocate')[0].value;
-       var amount = 1*document.getElementsByName('amount'+doc)[0].value;
-       var unallocated = 1*document.getElementsByName('un_allocated'+doc)[0].value;
+function add_js_allocate() {
+    global $comp_path;
+    $fpath = $comp_path.'/'.user_company().'/js_cache/'.'allocate.js';
+
+    if (!file_exists($fpath)) {
+    
+       $js =
+       "function allocate_all(doc) {
+       var amount = get_amount('amount'+doc);
+       var unallocated = get_amount('un_allocated'+doc);
+       var total = get_amount('total_allocated', 1);
+       var left = get_amount('left_to_allocate', 1);
+
        if(unallocated<amount) amount = unallocated;
-       if( (unallocated-amount)<=alloc){
-               alloc-=unallocated-amount;
-       amount=unallocated;
+       if((unallocated-amount)<=left){
+           left-=unallocated-amount;
+           total+=unallocated-amount;
+           amount=unallocated;
        }else{
-       amount=amount+alloc;
-       alloc=0;
+       total+=left;
+       amount+=left;
+       left=0;
        }
-       document.getElementsByName('amount'+doc)[0].value = amount;
-       document.getElementsByName('left_to_allocate')[0].value = alloc;
+       price_format('amount'+doc, amount, ".user_price_dec().");
+       price_format('left_to_allocate', left, ".user_price_dec().", 1);
+       price_format('total_allocated', total, ".user_price_dec().", 1);
        }
        function allocate_none(doc) {
-               amount = document.getElementsByName('amount'+doc)[0];
-       document.getElementsByName('left_to_allocate')[0].value +=
-                       amount.value;
-       amount.value=0;  }
-       </script>";
+       amount = get_amount('amount'+doc);
+       left = get_amount('left_to_allocate', 1);
+       total = get_amount('total_allocated', 1);
+       price_format('left_to_allocate',amount+left, ".user_price_dec().", 1);
+       price_format('amount'+doc, 0, ".user_price_dec().");
+       price_format('total_allocated', total-amount, ".user_price_dec().", 1);
+       }";
+
+     cache_js_file($fpath, $js);
+    } 
+    add_js_ufile($fpath);
+    add_js_user_num();
 }
 
 function alert($msg)