altocompta/html/js/scripts.js
Dany De Bontridder b43f4c87b4 Merged revisions 2905-2938 via svnmerge from
svn+ssh://danydb@svn/svn/phpcompta/branches/rel500

........
  r2906 | danydb | 2010-01-27 15:16:08 +0100 (Wed, 27 Jan 2010) | 2 lines
  
  Cosmetic for html popup
........
  r2907 | danydb | 2010-01-27 15:28:03 +0100 (Wed, 27 Jan 2010) | 5 lines
  
  Fix typo translation
  
  Fix Bug  : cannot save extension in IE, probably because the same scripts are included several times
........
  r2908 | danydb | 2010-01-28 13:56:37 +0100 (Thu, 28 Jan 2010) | 5 lines
  
  Fix Bug In getNodeText when retrieving data for Internet Explorer, 
  it fails if the xmlNode.firstChild.nodeValue does not contains data. 
  It is directly set to undefined
........
  r2909 | danydb | 2010-01-29 12:20:24 +0100 (Fri, 29 Jan 2010) | 2 lines
  
  Generate invoice : update the comment of the entry only if there were no comment
........
  r2910 | danydb | 2010-01-29 19:39:11 +0100 (Fri, 29 Jan 2010) | 6 lines
  
  Improve User
  ============
  Status only plugin means that the user can use only the plugin and can't access to 
  anything else.
........
  r2911 | danydb | 2010-01-29 19:42:38 +0100 (Fri, 29 Jan 2010) | 1 line
  
  Bug import Dexia
........
  r2912 | danydb | 2010-01-31 16:24:22 +0100 (Sun, 31 Jan 2010) | 3 lines
  
  For insert_jrnx, the desc is now in the function, we don't need anymore to update after inserting
........
  r2913 | danydb | 2010-01-31 16:33:55 +0100 (Sun, 31 Jan 2010) | 4 lines
  
  Fix bug : cannot see operation in quick_writing 
     cause : the p_action must be set to ALL, it wasn't for quick_writing
........
  r2914 | danydb | 2010-02-02 14:52:37 +0100 (Tue, 02 Feb 2010) | 4 lines
  
  Code cleaning
  Bug : in ledger of sale, we have twice the possibility to add~ or generate document, and only for invoice (type 4)
  Solution : fix the function Acc_Ledger_Purchase::extra_info (type of document = 10), remove extra code
........
  r2915 | danydb | 2010-02-05 01:01:11 +0100 (Fri, 05 Feb 2010) | 4 lines
  
  Improve : search_card you can also find a card thanks is tva_num
  Documentation doxygen improved
........
  r2916 | danydb | 2010-02-05 11:18:36 +0100 (Fri, 05 Feb 2010) | 2 lines
  
  when inserting into ledger_sold the test to check the attach was wrong
........
  r2917 | danydb | 2010-02-05 14:45:33 +0100 (Fri, 05 Feb 2010) | 2 lines
  
  Extension : add the possibility to use ajax
........
  r2918 | danydb | 2010-02-06 14:25:22 +0100 (Sat, 06 Feb 2010) | 1 line
  
  rewrite the function encodeJSON, hide and show for doxygen
........
  r2919 | danydb | 2010-02-06 14:26:07 +0100 (Sat, 06 Feb 2010) | 1 line
  
  remove error where _SESSION is expired
........
  r2920 | danydb | 2010-02-06 14:26:49 +0100 (Sat, 06 Feb 2010) | 1 line
  
  In ITva_Select add the display
........
  r2921 | danydb | 2010-02-06 14:27:47 +0100 (Sat, 06 Feb 2010) | 1 line
  
  Cosmetic
........
  r2922 | danydb | 2010-02-06 14:27:49 +0100 (Sat, 06 Feb 2010) | 1 line
  
  IPopup add a new property drag to make the ipopup dragguable or not
........
  r2923 | danydb | 2010-02-06 14:35:28 +0100 (Sat, 06 Feb 2010) | 5 lines
  
  Middle of payment
  =================
  Feature : add or remove middle of payment
........
  r2924 | danydb | 2010-02-06 18:17:15 +0100 (Sat, 06 Feb 2010) | 7 lines
  
  Card
  ----
  A same card can now have 2 different sides (debit or credit)
  usefull to have only one card for a customer and a supplier
........
  r2925 | danydb | 2010-02-06 18:23:03 +0100 (Sat, 06 Feb 2010) | 1 line
  
  Add the sql script for the double accounting
........
  r2926 | danydb | 2010-02-06 19:29:29 +0100 (Sat, 06 Feb 2010) | 2 lines
  
  Update documentation
........
  r2927 | danydb | 2010-02-06 20:37:12 +0100 (Sat, 06 Feb 2010) | 4 lines
  
  Fiche_def
  ========
  Permit to have 2 accouting as class_base
........
  r2928 | danydb | 2010-02-06 20:56:00 +0100 (Sat, 06 Feb 2010) | 1 line
  
  Bug : FK from stock prevent the removal of a card
........
  r2929 | danydb | 2010-02-06 21:14:10 +0100 (Sat, 06 Feb 2010) | 1 line
  
  removeless useless test
........
  r2930 | danydb | 2010-02-07 00:55:03 +0100 (Sun, 07 Feb 2010) | 1 line
  
  Improve appearance extension
........
  r2931 | danydb | 2010-02-07 00:56:28 +0100 (Sun, 07 Feb 2010) | 2 lines
  
  remove debug
........
  r2932 | danydb | 2010-02-07 01:16:51 +0100 (Sun, 07 Feb 2010) | 1 line
  
  Improve appearance extension
........
  r2933 | danydb | 2010-02-07 01:19:08 +0100 (Sun, 07 Feb 2010) | 1 line
  
  Improve appearance extension
........
  r2934 | danydb | 2010-02-07 01:30:31 +0100 (Sun, 07 Feb 2010) | 1 line
  
  Improve appearance extension
........
  r2935 | danydb | 2010-02-07 02:36:25 +0100 (Sun, 07 Feb 2010) | 1 line
  
  Version PHP5.3 : split is obsolete and replace by explode
........
  r2936 | danydb | 2010-02-07 04:56:17 +0100 (Sun, 07 Feb 2010) | 1 line
  
  remove owner
........
  r2937 | danydb | 2010-02-08 22:34:07 +0100 (Mon, 08 Feb 2010) | 1 line
  
  typo
........
  r2938 | danydb | 2010-02-08 22:34:28 +0100 (Mon, 08 Feb 2010) | 1 line
  
  Start translation for Dutch
........
2010-02-10 18:38:16 +00:00

257 lines
7.6 KiB
JavaScript

/*
* This file is part of PhpCompta.
*
* PhpCompta is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* PhpCompta is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PhpCompta; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/* $Revision$ */
// Copyright Author Dany De Bontridder ddebontridder@yahoo.fr
/*!\file
* \brief javascript script, always added to every page
*
*/
/*!\brief remove trailing and heading space
* \param the string to modify
* \return string without heading and trailing space
*/
function trim(s) {
return s.replace(/^\s+/, '').replace(/\s+$/, '');
}
/**
* @brief retrieve an element thanks its ID
* @param ID is a string
* @return the found object of undefined if not found
*/
function g(ID) {
if (document.getElementById) {
return document.getElementById(ID);
} else if (document.all) {
return document.all[ID];
} else {
return undefined;
}
}
/**
*@brief enable the type of periode
*/
function enable_type_periode() {
if ( g('type_periode').value == 1 ) {
g('from_periode').disabled=true;
g('to_periode').disabled=true;
g('from_date').disabled=false;
g('to_date').disabled=false;
g('p_step').disabled=true;
} else {
g('from_periode').disabled=false;
g('to_periode').disabled=false;
g('from_date').disabled=true;
g('to_date').disabled=true;
g('p_step').disabled=false;
}
}
/**
*@brief will reload the window but it is dangerous if we have submitted
* a form
*/
function refresh_window() {
window.location.reload();
}
/**
*@fn encodeJSON(obj)
*@brief we receive a json object as parameter and the function returns the string
* with the format variable=value&var2=val2...
*/
function encodeJSON(obj) {
if (typeof obj != 'object') {alert('encodeParameter obj n\'est pas un objet');}
try{
var str='';var e=0;
for (i in obj){
if (e != 0 ) {str+='&';} else {e=1;}
str+=i;
str+='='+encodeURI(obj[i]);
}
return str;
} catch(e){alert('encodeParameter '+e.message);}
}
function hide(p_param){
g(p_param).style.display='none';
}
function show(p_param){
g(p_param).style.display='block';
}
/**
*@brief set the focus on the selected field
*@param Field id of the control
*@param selectIt : the value selected in case of Field is a object select, numeric
*/
function SetFocus(Field,SelectIt) {
var elem = g(Field);
if (elem) {
elem.focus();
}
return true;
}
/**
* @brief set a DOM id with a value in the parent window (the caller),
@param p_ctl is the name of the control
@param p_value is the value to set in
@param p_add if we don't replace the current value but we add something
*/
function set_inparent(p_ctl,p_value,p_add) {
self.opener.set_value(p_ctl,p_value,p_add);
}
/**
* @brief set a DOM id with a value, it will consider if it the attribute
value or innerHTML has be used
@param p_ctl is the name of the control
@param p_value is the value to set in
@param p_add if we don't replace the current value but we add something
*/
function set_value(p_ctl,p_value,p_add) {
if ( g(p_ctl)) {
var g_ctrl=g(p_ctl);
if ( p_add != undefined && p_add==1 ) {
if ( g_ctrl.value ) {p_value=g_ctrl.value+','+p_value;}
}
if ( g_ctrl.tagName=='INPUT' ) {g(p_ctl).value=p_value;}
if ( g_ctrl.tagName=='SPAN' ) { g(p_ctl).innerHTML=p_value;}
if ( g_ctrl.tagName=='SELECT' ) { g(p_ctl).value=p_value;}
}
}
/**
*@brief format the number change comma to point
*@param HTML obj
*/
function format_number(obj) {
var value=obj.value;
value=value.replace(/,/,'.');
value=parseFloat(value);
if ( isNaN(value) ) { value=0; }
value=Math.round(value*100)/100;
$(obj).value=value;
}
/**
*@brief check if the object is hidden or show and perform the opposite,
* show the hidden obj or hide the shown one
*@param name of the object
*/
function toggleHideShow(p_obj,p_button) {
var stat=g(p_obj).style.display;
var str=g(p_button).value;
if ( stat == 'none' ) {
show(p_obj);str=str.replace(/Afficher/,'Cacher');g(p_button).value=str;}
else {hide(p_obj);str=str.replace(/Cacher/,'Afficher');g(p_button).value=str;}
}
/**
*@brief open popup with the search windows
*@param p_sessid,the PHPSESSID
*@param p_dossier the dossier where to search
*@param p_style style of the detail value are E for expert or S for simple
*/
function openRecherche(p_sessid,p_dossier,p_style) {
if ( p_style == 'E' ) { p_style="expert";}
var w=window.open("recherche.php?gDossier="+p_dossier+"&PHPSESSID="+p_sessid+'&'+p_style,'','statusbar=no,scrollbars=yes,toolbar=no');
w.focus();
}
/**
*@brief show the popup. The top property is adapted if you've scrolled the window
*@param name of the object PHP IPopup
*/
function showIPopup(p_name) {
var sx=0;
if ( window.scrollY) { sx=window.scrollY+40;}
else { sx=document.body.scrollTop+40;}
$(p_name+'_border').style.top=sx;
show(p_name+'_fond');
show(p_name+'_border');
show(p_name+'_content');
}
/**
*@brief hide the popup
*@param name of the object PHP IPopup
*/
function hideIPopup(p_name) {
hide(p_name+'_fond');
hide(p_name+'_border');
hide(p_name+'_content');
$(p_name+'_content').innerHTML='<image src="image/loading.gif" border="0" alt="Chargement...">';
}
/**
*@brief replace the special characters (><'") by their HTML representation
*@return a string without the offending char.
*/
function unescape_xml(code_html) {
code_html=code_html.replace(/\&lt;/,'<');
code_html=code_html.replace(/\&gt;/,'>');
code_html=code_html.replace(/\&quot;/,'"');
code_html=code_html.replace(/\&apos;/,"'");
code_html=code_html.replace(/\&amp;/,'&');
return code_html;
}
/**
*@brief Firefox splits the XML into 4K chunk, so to retrieve everything we need
* to get the different parts thanks textContent
*@param xmlNode a node (result of var data = =answer.getElementsByTagName('code'))
*@return all the content of the XML node
*/
function getNodeText(xmlNode)
{
if(!xmlNode) return '';
if(typeof(xmlNode.textContent) != "undefined") { return xmlNode.textContent; }
if ( xmlNode.firstChild && xmlNode.firstChild.nodeValue ) return xmlNode.firstChild.nodeValue;
return "";
}
/**
*@brief change the periode in the calendar of the dashboard
*@param object select
*/
function change_month(obj) {
var queryString="PHPSESSID="+obj.phpsessid+"&gDossier="+obj.gDossier+"&op=cal"+"&per="+obj.value;
var action = new Ajax.Request(
"ajax_misc.php" , { method:'get', parameters:queryString,onFailure:ajax_misc_failure,onSuccess:change_month_success}
);
}
function change_month_success(req) {
try{
var answer=req.responseXML;
var html=answer.getElementsByTagName('code');
if ( html.length == 0 ) { var rec=req.responseText;alert ('erreur :'+rec);}
var nodeXml=html[0];
var code_html=getNodeText(nodeXml);
code_html=unescape_xml(code_html);
$("user_cal").innerHTML=code_html;
}
catch (e) {
alert(e.message);}
try{
code_html.evalScripts();}
catch(e){
alert("Impossible executer script de la reponse\n"+e.message);}
}
function loading() { return '<image src="image/loading.gif" alt="chargement"></image>';}
function ajax_misc_failure() {
alert('Ajax Misc failed');
}