//    HOTELDRUID
//    Copyright (C) 2001-2012 by Marco Maria Francesco De Santis (marco@digitaldruid.net)
//
//    This program is free software: you can redistribute it and/or modify
//    it under the terms of the GNU Affero General Public License as published by
//    the Free Software Foundation, either version 3 of the License, or
//    any later version accepted by Marco Maria Francesco De Santis, which
//    shall act as a proxy as defined in Section 14 of version 3 of the
//    license.
//
//    This program 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 Affero General Public License for more details.
//
//    You should have received a copy of the GNU Affero General Public License
//    along with this program.  If not, see <http://www.gnu.org/licenses/>.


function punti_in_num (num) {
var n = String(num);
var lung = n.length;
var lett;
var prima = '';
var dopo = '';
var pun = 0;
for (var n1 = 0 ; n1 < lung ; n1++) {
lett = ''+n.substr(n1,1);
if (lett == '.') pun = 1;
else {
if (pun) dopo += lett;
else prima += lett;
}
}
n = prima;
prima = '';
var n2 = 0;
for (n1 = (n.length - 1) ; n1 >= 0 ; n1--) {
lett = ''+n.substr(n1,1);
n2++;
if (n2 > 3) {
prima = punto+prima;
n2 = 0;
}
prima = lett+prima;
}
dopo = dopo.substr(0,2);
if (dopo.length == 0) dopo = '00';
if (dopo.length == 1) dopo += '0';
return prima+virgola+dopo;
}


function elimina_pos_vett (pos,vett) {
var n_vett = new Array();
var n1 = 0;
for (var n2 = 0 ; n2 < vett.length ; n2++) {
if (n2 != pos) {
n_vett[n1] = vett[n2];
n1++;
}
}
return n_vett
}


// punto_vendita.php functions

function aggiungi_linea_pv (id,nome,molt,val,calcolab,moltiplicab) {
ultimo_costo++;
calcolabile[ultimo_costo] = calcolab;
moltiplicabile[ultimo_costo] = moltiplicab;
id_costo[ultimo_costo] = id;
nome_costo[ultimo_costo] = nome;
molt_costo[ultimo_costo] = molt;
val_costo[ultimo_costo] = val;
var tab_costi = document.getElementById('tab_costi');
var riga = tab_costi.insertRow(-1);
riga.style.backgroundColor = colore_corr;
if (colore_corr == t2row1color) colore_corr = t2row2color;
else colore_corr = t2row1color;
var cell1 = riga.insertCell(-1);
var cell2 = riga.insertCell(-1);
var cell3 = riga.insertCell(-1);
cell1.width = '34px';
cell1.height = '34px';
cell1.innerHTML = '<button class=\"pos\" type=\"submit\" name=\"canc_costo\" value=\"'+ultimo_costo+'\" onclick=\"return canc_cos_pv('+ultimo_costo+');\" style=\"padding: 0;\"><img style=\"display: block; padding: 0; border: 0; margin: 0;\" src=\".\/img\/croce.gif\" alt=\"X\"><\/button>';
cell2.innerHTML = nome;
if (molt && molt != 1) cell2.innerHTML += ' <b>x'+molt+'<\/b>';
cell3.width = '40px';
cell3.style.textAlign = 'right';
cell3.innerHTML = punti_in_num(val);
totale = Number(totale) + Number(val);
var txt_tot = punti_in_num(totale);
if (tot_indef) {
if (totale > 0)  txt_tot += ' + ?';
else txt_tot = '?';
}
document.getElementById('tot_costi').innerHTML = txt_tot;
if (id_costi != '') id_costi += ',';
else document.getElementById('incassa').disabled = 0;
id_costi += ''+id;
if (molt && molt > 1) id_costi += 'x'+molt;
document.getElementById('id_costi').value = id_costi;
}


function elimina_linea_pv (num_costo) {
document.getElementById('tab_costi').deleteRow(num_costo);
if (colore_corr == t2row1color) colore_corr = t2row2color;
else colore_corr = t2row1color;
totale = Number(totale) - Number(val_costo[num_costo]);
var txt_tot = punti_in_num(totale);
if (tot_indef) {
if (totale > 0)  txt_tot += ' + ?';
else txt_tot = '?';
}
document.getElementById('tot_costi').innerHTML = txt_tot;
var id_costi_vett = id_costi.split(',');
id_costi_vett = elimina_pos_vett(num_costo,id_costi_vett);
id_costi = id_costi_vett.join(',');
document.getElementById('id_costi').value = id_costi;
if (id_costi == '') document.getElementById('incassa').disabled = 1;
calcolabile = elimina_pos_vett(num_costo,calcolabile);
moltiplicabile = elimina_pos_vett(num_costo,moltiplicabile);
id_costo = elimina_pos_vett(num_costo,id_costo);
nome_costo = elimina_pos_vett(num_costo,nome_costo);
molt_costo = elimina_pos_vett(num_costo,molt_costo);
val_costo = elimina_pos_vett(num_costo,val_costo);
ultimo_costo--;
var col_lin = colore_corr;
for (var n1 = ultimo_costo ; n1 >= num_costo ; n1--) {
var linea = document.getElementById('tab_costi').rows[n1].firstChild.innerHTML;
linea = linea.replace('value=\"'+(n1 + 1)+'\"','value=\"'+n1+'\"');
linea = linea.replace('canc_cos_pv('+(n1 + 1)+')','canc_cos_pv('+n1+')');
document.getElementById('tab_costi').rows[n1].firstChild.innerHTML = linea;
if (col_lin == t2row1color) col_lin = t2row2color;
else col_lin = t2row1color;
document.getElementById('tab_costi').rows[n1].style.backgroundColor = col_lin;
}
}


function ins_cos_pv (id,nome,molt,val,calcolab,moltiplicab) {
aggiungi_linea_pv(id,nome,molt,val,calcolab,moltiplicab);
window.location.hash = 'finetab'; 
return false;
}


function canc_cos_pv (num) {
elimina_linea_pv(num);
return false;
}


function aggiungi_costi_pv (num_agg) {
if (calcolabile[ultimo_costo] != 1) return true;
var costo_corr = ultimo_costo;
if (moltiplicabile[costo_corr] != 1) {
for (var n1 = 0 ; n1 < num_agg ; n1++) {
aggiungi_linea_pv(id_costo[costo_corr],nome_costo[costo_corr],molt_costo[costo_corr],val_costo[costo_corr],calcolabile[costo_corr],moltiplicabile[costo_corr]);
}
}
else {
var id = id_costo[costo_corr];
var nome = nome_costo[costo_corr];
var val = Number(val_costo[costo_corr]);
var molt = molt_costo[costo_corr];
if (!molt) molt = 1;
molt = Number(molt);
var val_base = Math.round((val / molt) * 100) / 100;
molt += Number(num_agg);
val = val_base * molt;
var calcolab = calcolabile[costo_corr];
var moltiplicab = moltiplicabile[costo_corr];
elimina_linea_pv(ultimo_costo);
aggiungi_linea_pv(id,nome,molt,val,calcolab,moltiplicab);
}
window.location.hash = 'finetab'; 
return false;
}


function moltiplica_costi_pv (num_molt) {
if (calcolabile[ultimo_costo] != 1) return true;
if (moltiplicabile[ultimo_costo] != 1) aggiungi_costi_pv(num_molt - 1);
else {
var molt = molt_costo[ultimo_costo];
if (!molt) molt = 1;
molt = Number(molt);
var n_molt = Number(num_molt) * molt;
aggiungi_costi_pv(n_molt - molt);
}
return false;
}


function sottrai_costi_pv (num_sott) {
if (calcolabile[ultimo_costo] != 1) return true;
if (moltiplicabile[ultimo_costo] != 1) elimina_linea_pv(ultimo_costo);
else {
var id = id_costo[ultimo_costo];
var nome = nome_costo[ultimo_costo];
var val = Number(val_costo[ultimo_costo]);
var molt = molt_costo[ultimo_costo];
if (!molt) molt = 1;
molt = Number(molt);
var val_base = Math.round((val / molt) * 100) / 100;
molt = molt - Number(num_sott);
var calcolab = calcolabile[ultimo_costo];
var moltiplicab = moltiplicabile[ultimo_costo];
elimina_linea_pv(ultimo_costo);
if (molt > 0) {
val = val_base * molt;
aggiungi_linea_pv(id,nome,molt,val,calcolab,moltiplicab);
}
}
return false;
}


// funzioni per checkbox, radiobox, ecc.

function agg_ckbx (id_cb) {
var cb = document.getElementById(id_cb);
if (cb.checked) cb.checked = false;
else cb.checked = true;
if (cb.onchange) cb.onchange();
}


function agn_ckbx (n_cb) {
var cb = document.getElementsByName(n_cb);
if (cb[0].checked) cb[0].checked = false;
else cb[0].checked = true;
if (cb[0].onchange) cb[0].onchange();
}


function asso_rdbx (n_cb,id_rb,id_cond) {
var cb = document.getElementsByName(n_cb);
if (cb[0].checked) {
if (id_cond === undefined) document.getElementById(id_rb).checked = '1';
else if (document.getElementById(id_cond).checked) document.getElementById(id_rb).checked = '1';
}
}


// funzioni tabella mese
var colore_date_norm = '#daedff';
var colore_date_sel = '#ffffff';
var colore_drp1 = '#05e105';
var colore_drp2 = '#297929';


function colora_date (c_ini,c_fine,colore) {
var n1 = 0;
var n2 = 0;
var n3 = 0;
var caselle = '';
var righe = document.getElementsByTagName('tr');
for (n1 = 0 ; n1 < righe.length ; n1++) {
if (righe[n1].className == 'rd_r') {
caselle = righe[n1].getElementsByTagName('td');
for (n2 = 0 ; n2 < caselle.length ; n2++) {
if (caselle[n2].className == 'rd_'+c_ini) {
for (n3 = 0 ; n3 <= (c_fine - c_ini) ; n3++) {
caselle[(n2 + n3)].style.backgroundColor = colore;
} // for n3
break;
} // if
} // for n2
} // if
} // for n1
} // fine function colora_date


function attiva_colora_date (allinea_tab_mesi) {
var n0 = 0;
var n1 = 0;
var n2 = 0;
var caselle = '';
var tabelle = document.getElementsByTagName('table');
for (n0 = 0 ; n0 < tabelle.length ; n0++) {
if (tabelle[n0].className == 'm1') {
var righe = tabelle[n0].childNodes[0].childNodes;
for (n1 = 0 ; n1 < righe.length ; n1++) {
if (righe[n1].className != 'rd_r') {
caselle = righe[n1].childNodes;
c_fine = 0;
for (n2 = 1 ; n2 < (caselle.length - 1) ; n2++) {
c_ini = c_fine;
c_fine = (caselle[n2].colSpan / 2);
c_fine = c_ini + c_fine;
if (allinea_tab_mesi == 'SI') c_fine = c_fine - 1;
caselle[n2].onmouseover = new Function("colora_date("+c_ini+","+c_fine+",'"+colore_date_sel+"');");
caselle[n2].onmouseout = new Function("colora_date("+c_ini+","+c_fine+",'"+colore_date_norm+"');");
if (allinea_tab_mesi == 'SI') c_fine = c_fine + 1;
} // for n2
} // if
} // for n1
} // if
} // for n0
} // fine function attiva_colora_date


var entrato = 0;
var caselle_col = '';
var pren_ini = '';
var pren_fine = '';
var pren_drag = '';
var id_pren_drag = '';
var pren_start = '';
var pren_end = '';
var app_drag = '';
var colore_orig0 = '';
var colore_orig1 = '';
var colore_orig2 = '';
var ArInPr = new Array();
var ArFiPr = new Array();
var ArLiDa = new Array();
var ArObDa = new Array();


function drg (ev) {
ev.dataTransfer.setData('Text',ev.target.id);
id_pren_drag = ev.target.id;
pren_drag = ev.target.id.substr(3);
app_drag = ev.target.parentNode;
var first_ch = 0;
if (app_drag.firstChild == ev.target) first_ch = 1;
while (app_drag.id.substr(0,3) != 'app') {
if (app_drag.id.substr(0,3) == 'prn') {
if (first_ch) pren_start = app_drag.id.substr(3);
else pren_end = app_drag.id.substr(3);
id_pren_drag = app_drag.id;
}
app_drag = app_drag.parentNode;
}
app_drag = app_drag.id;
colore_orig0 = document.getElementById(id_pren_drag).style.backgroundColor;
document.getElementById(id_pren_drag).style.backgroundColor = colore_drp1;
if (pren_start || pren_end) {
ev.target.style.position = 'relative';
ev.target.style.zIndex = '100';
for (n2 = 1 ; n2 < (caselle_col.length - 1) ; n2++) {
document.getElementById(caselle_col[n2].className).style.width = caselle_col[n2].offsetWidth+'px';
}
pren_ini = ArInPr[id_pren_drag.substr(3)] + 1;
pren_fine = ArFiPr[id_pren_drag.substr(3)] + 1;
}
}


function drag_over_tr (id) {
if (pren_drag) {
var cas1 = document.getElementById(id).firstChild;
var cas2 = document.getElementById(id).lastChild;
if (!entrato) {
colore_orig1 = cas1.style.backgroundColor;
colore_orig2 = cas2.style.backgroundColor;
}
entrato = 1;
if (app_drag != id && priv_mod_aa != 'n') {
if (ApAs[pren_drag] == 'v' || ApAs[pren_drag].search(','+arr_app[id.substr(3)]+',') >= 0) {
cas1.style.backgroundColor = colore_drp1;
cas2.style.backgroundColor = colore_drp1;
}
else if (priv_mod_aa == 's') {
cas1.style.backgroundColor = colore_drp2;
cas2.style.backgroundColor = colore_drp2;
}
}
}
}


function drag_out_tr (id) {
if (pren_drag) {
document.getElementById(id).firstChild.style.backgroundColor = colore_orig1;
document.getElementById(id).lastChild.style.backgroundColor = colore_orig2;
entrato = 0;
}
}


function drag_over_td (ncol) {
if (pren_start || pren_end) {
if (!entrato) {
for (n1 = 0 ; n1 < ArObDa.length ; n1++) {
var caselle = ArObDa[n1].childNodes;
for (n2 = 1 ; n2 < (caselle.length - 1) ; n2++) {
var colore = colore_date_norm;
if (pren_start && ((n2 <= pren_fine && n2 >= ncol) || n2 == (pren_fine - 1) || n2 == pren_fine)) colore = colore_drp1;
if (pren_end && ((n2 >= pren_ini && n2 <= ncol) || n2 == pren_ini || n2 == (pren_ini + 1))) colore = colore_drp1;
if (colore == colore_drp1 && (n2 < pren_ini || n2 > pren_fine)) colore = colore_drp2;
if (colore == colore_date_norm && n2 >= pren_ini && n2 <= pren_fine) colore = colore_date_sel;
caselle[n2].style.backgroundColor = colore;
}
} // for n1
}
entrato = 1;
}
}


function drag_out_td (ncol) {
if (pren_start || pren_end) {
for (n1 = 0 ; n1 < ArObDa.length ; n1++) {
var caselle = ArObDa[n1].childNodes;
for (n2 = 1 ; n2 < (caselle.length - 1) ; n2++) caselle[n2].style.backgroundColor = colore_date_norm;
} // for n1
entrato = 0;
}
}

function drp_out () {
document.getElementById(id_pren_drag).style.backgroundColor = colore_orig0;
if (pren_start || pren_end) {
for (n1 = 1 ; n1 < (caselle_col.length - 1) ; n1++) {
document.getElementById(caselle_col[n1].className).style.width = '0';
}
for (n1 = 0 ; n1 < ArObDa.length ; n1++) {
var caselle = ArObDa[n1].childNodes;
for (n2 = 1 ; n2 < (caselle.length - 1) ; n2++) caselle[n2].style.backgroundColor = colore_date_norm;
} // for n1
}
pren_drag = '';
pren_start = '';
pren_end = '';
}


function drp (id) {
var invia = 1;
if (pren_drag) {
var app = arr_app[id.substr(3)];
if (priv_mod_aa == 'n') invia = 0;
else if (priv_mod_aa != 's' && ApAs[pren_drag] != 'v' && ApAs[pren_drag].search(','+app+',') < 0) invia = 0;
if (!pren_drag || app_drag == id) invia = 0;
if (invia) {
if (ApAs[pren_drag] == 'v' || ApAs[pren_drag].search(','+app+',') >= 0) document.getElementById('s_appart').value = app;
else document.getElementById('n_appart').value = app;
document.getElementById('id_pren').value = pren_drag;
document.getElementById('d_data_ins').value = DaIn[pren_drag];
document.getElementById('orig').value = 'tab_mese_drop#'+ArLiDa[app_drag]+'#'+ArLiDa[id];
document.getElementById('mod_pren').submit();
}
}
if (pren_start || pren_end) {
if (pren_start && id >= pren_fine) id = pren_fine - 1;
if (pren_end && id <= pren_ini) id = pren_ini + 1;
if (pren_start && id == pren_ini) invia = 0;
if (pren_end && id == pren_fine) invia = 0;
if (invia) {
var pren = '';
if (pren_start) {
pren = pren_start;
document.getElementById('n_ini_per').value = ArDaCo[id];
}
if (pren_end) {
pren = pren_end;
if (allinea_tab_mesi == 'SI') id = id + 1;
document.getElementById('n_fin_per').value = ArDaCo[id];
}
document.getElementById('id_pren').value = pren;
document.getElementById('d_data_ins').value = DaIn[pren];
document.getElementById('orig').value = 'tab_mese_drop#'+ArLiDa[app_drag]+'#'+ArLiDa[app_drag];
document.getElementById('mod_pren').submit();
}
}
if (!invia) {
drag_out_tr(id);
drp_out();
}
}


function attiva_drag_drop () {
var n0 = 0;
var n1 = 0;
var n2 = 0;
var nlin_date = 0;
var prenota = '';
var caselle = '';
var caselle_prn = '';
var tabelle = document.getElementsByTagName('TABLE');
for (n0 = 0 ; n0 < tabelle.length ; n0++) {
if (tabelle[n0].className == 'm1') {
var righe = tabelle[n0].childNodes[0].childNodes;
for (n1 = 0 ; n1 < righe.length ; n1++) {
  
if (righe[n1].className != 'rd_r') {
righe[n1].ondragover = new Function("drag_over_tr('"+righe[n1].id+"');");
righe[n1].ondragleave = new Function("drag_out_tr('"+righe[n1].id+"');");
righe[n1].ondrop = new Function("drp('"+righe[n1].id+"');");
ArLiDa[righe[n1].id] = nlin_date;
caselle = righe[n1].childNodes;
var c_fine = 0;
for (n2 = 1 ; n2 < (caselle.length - 1) ; n2++) {
var c_ini = c_fine;
c_fine = (caselle[n2].colSpan / 2);
c_fine = c_ini + c_fine;
if (allinea_tab_mesi == 'SI') c_fine = c_fine - 1;
prenota = caselle[n2].getElementsByTagName('table');
for (n3 = 0 ; n3 < prenota.length ; n3++) {
if (prenota[n3].id.substr(0,3) == 'prn') {
prenota[n3].draggable = true;
if (prenota[n3].draggable) prenota[n3].style.cursor = 'move';
prenota[n3].getElementsByTagName('a')[0].draggable = false;
if (priv_mod_da == 's') {
caselle_prn = prenota[n3].getElementsByTagName('td');
caselle_prn[0].draggable = true;
caselle_prn[0].style.cursor = 'e-resize';
var ult = (caselle_prn.length - 1);
caselle_prn[ult].draggable = true;
caselle_prn[ult].style.cursor = 'w-resize';
}
ArInPr[prenota[n3].id.substr(3)] = c_ini;
ArFiPr[prenota[n3].id.substr(3)] = c_fine;
}
} // for n3
if (allinea_tab_mesi == 'SI') c_fine = c_fine + 1;
}
} // if

else {
ArObDa[nlin_date] = righe[n1];
if (!nlin_date) {
caselle_col = righe[n1].childNodes;
for (n2 = 1 ; n2 < (caselle_col.length - 1) ; n2++) {
caselle_col[n2].innerHTML = '<div id="'+caselle_col[n2].className+'" style="position: absolute; top: 0; height: '+tabelle[n0].offsetHeight+'px;"></div>'+caselle_col[n2].innerHTML;
var col_drop = document.getElementById(caselle_col[n2].className);
col_drop.ondragover = new Function("drag_over_td("+n2+")");
col_drop.ondragleave = new Function("drag_out_td("+n2+")");
col_drop.ondrop = new Function("drp("+n2+")");
}
}
nlin_date++;
} // else
} // for n1
} // if
} // for n0
} // fine function attiva_drag_drop





