var daily = 2;
var tot_services = 0;
var lang = {};
var langid = 2;
var decimal = 2;

var submitted = false;
var need_equipment = true;

var equipment = new Array();
var eq = new Array();
var eqD = new Array();

var currency = "eur";

var simbol = {};
simbol['eur'] = "&#128;";
simbol['usd'] = "$";
simbol['chf'] = "Fr";
simbol['gbp'] = "&pound;";
simbol['jpy'] = "&yen;";

var nextIdx = 0;
var allServices={};
var services=null;
var curSer=null;
var daysSer=null;
var userSer = new Array();
var equipment_price = new Array();
var total1 = 0;
var total2 = 0;
var maxDigit = 3;
var firstCourse = 1000;

var serviceid = new Array();

var discount = {};
var discounts = {};

var discountD = {};
var discountsD = {};

var season = {};

var prodIdx=null;

var elemType = "div";
var mCalendar = document.all;
var mSpan = document.all;
var mDiv = document.all;
var mImg = document.all;
var mTr = document.all;
if(navigator.appName == "Netscape")
 {
  mSpan = document.getElementsByTagName(elemType);
  mDiv = document.getElementsByTagName("div");
  mImg = document.getElementsByTagName("img");
  mTr = document.getElementsByTagName("tr");
  mCalendar = document.getElementsByTagName("div");
 }

var parkCourses = '';

function openCoursesTable()
 {
  mDiv['coursesTable'].innerHTML = parkCourses;
  checkVisibleServices();
 }

function closeCoursesTable()
 {
  parkCourses = mDiv['coursesTable'].innerHTML;
  mDiv['coursesTable'].innerHTML = '<br /><br /><table width="100%" class="mdivingPackageTable"><tr style="color: #FFFFFF; font-weight: bold; background-color: #169DCC;"><td>&nbsp; &nbsp;<a href="#courses" onclick="javascript: openCoursesTable();" style="color: #FFFFFF;">'+ lang['TEXT38'] +'</a></td></tr></table>';
 }

function changeDate(field, value)
 {
  eval("document.diving."+field+".value='"+value+"';");
  if (field == 'startDate')
   {
    mTr['returnDate'].style.visibility='visible';
    document.diving.endDate.value='';
    for (var i=1;i<tot_services && i<firstCourse;i++)
     {
      var k=1;
      if (allServices[serviceid[i]].daily!=daily) k=3;
      for (var j=0;j<discount[serviceid[i]].length;j++)
       {
        if (typeof mDiv['serPrice'+j] != "undefined")
          mDiv['serPrice'+j].style.display='none';
        if (typeof mDiv['serPrice'+i+'_'+(discount[serviceid[i]][j]*k)+'_0'] != "undefined")
          mDiv['serPrice'+i+'_'+(discount[serviceid[i]][j]*k)+'_0'].style.display='none';
        if (typeof mDiv['serPrice'+i+'_'+(discount[serviceid[i]][j]*k)+'_1'] != "undefined")
          mDiv['serPrice'+i+'_'+(discount[serviceid[i]][j]*k)+'_1'].style.display='none';
        if (typeof mDiv['serPrice'+i+'_'+(discount[serviceid[i]][j]*k)+'_2'] != "undefined")
          mDiv['serPrice'+i+'_'+(discount[serviceid[i]][j]*k)+'_2'].style.display='none';
       }
     }
    mDiv['buy_botton'].style.visibility='hidden';
    mDiv['servicez'].style.visibility='hidden'; 
    mDiv['calendar'].style.visibility='hidden';
   }
  else
   {
    mDiv['buy_botton'].style.visibility='visible';
    mDiv['servicez'].style.visibility='visible'; 
    mDiv['calendar'].style.visibility='visible';
   }
  changeCalendar();
 }

function checkVisibleServices()
 {
  var drawid=0;
  if ((season[draw[drawid]] != -1) && (season[draw[drawid]] != 0) && (season[draw[drawid]] != 2))
     season[draw[drawid]] = 1;

  while (season[draw[drawid]]<0)
   {
    drawid++;
    if ((season[draw[drawid]] != -1) && (season[draw[drawid]] != 0) && (season[draw[drawid]] != 2))
       season[draw[drawid]] = 1;
   }
  for (var i=1;/*i<firstCourse && */i<tot_services;i++)
   {
    var j=0;
    var k=1;
    if (allServices[serviceid[i]].daily!=daily) k=3;
    for (;j<discount[serviceid[i]].length;j++)
     {
      if (typeof mDiv['serPrice'+j] != "undefined")
        mDiv['serPrice'+j].style.display='block';
      if (typeof mDiv['serPrice'+i+'_'+(discount[serviceid[i]][j]*k)+'_0'] != "undefined")
        mDiv['serPrice'+i+'_'+(discount[serviceid[i]][j]*k)+'_0'].style.display=
          (season[draw[drawid]]==0 && (discount[serviceid[i]][j]*k)<=(draw.length*daily))?'block':'none';
      if (typeof mDiv['serPrice'+i+'_'+(discount[serviceid[i]][j]*k)+'_1'] != "undefined")
        mDiv['serPrice'+i+'_'+(discount[serviceid[i]][j]*k)+'_1'].style.display=
          (season[draw[drawid]]==1 && (discount[serviceid[i]][j]*k)<=(draw.length*daily))?'block':'none';
      if (typeof mDiv['serPrice'+i+'_'+(discount[serviceid[i]][j]*k)+'_2'] != "undefined")
        mDiv['serPrice'+i+'_'+(discount[serviceid[i]][j]*k)+'_2'].style.display=
          (season[draw[drawid]]==2 && (discount[serviceid[i]][j]*k)<=(draw.length*daily))?'block':'none';
     }
   }
 }

function changeCalendar()
 {
  if ((document.diving.startDate.value=='') || (document.diving.endDate.value==''))
    return;

  nextIdx = 0;
  draw = new Array();
  var start = document.diving.startDate.value.split("-");
  var end = document.diving.endDate.value.split("-");
  var s=new Date(start[2], start[1]-1, 1+(start[0]/1));
  var e=new Date(end[2], end[1]-1, end[0]-1);

  var monthname=new Array("JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG", "SEP","OCT","NOV","DEC");
  var months=new Array();
  months[0]=new Array();
  months[0][0]=monthname[s.getMonth()]+' '+s.getFullYear();
  months[0][1]=0;
  var park = 0;
  for (var i=0;(e-s)>=0;i++)
   {
    var drawText = s.getFullYear() +'-'+ ((s.getMonth()<9)?'0':'') + (s.getMonth()+1) +'-'+ ((s.getDate()<10)?'0':'') + s.getDate();
    if (season[drawText]!=-1)
     {
      draw[i] = drawText;
      if (months[park][0]!=(monthname[s.getMonth()]+' '+s.getFullYear()))
       {
        park++;
        months[park]=new Array();
        months[park][0]=monthname[s.getMonth()]+' '+s.getFullYear();
        months[park][1]=0;
       }
      months[park][1]++;
     }
    else i--;

    s.setFullYear(s.getFullYear(), s.getMonth(), s.getDate()+1);
   }

  checkVisibleServices();  

  park = '<table><tr><td class="mdivingNameTitle">'+lang['TEXT29']+'</td>';
  for(var i=0;i<months.length;i++)
    park += '<td class="mdivingDayTitle" style="width: '+(36*months[i][1]-4)+'px">'+months[i][0]+'</td>';
  park += '<td class="mdivingPriceWebTitle">'+lang['TEXT17']+'</td>';
  if (need_equipment)
    park += '<td class="mdivingPriceWebTitle">'+lang['TEXT32']+'</td>';
  park += '</tr></table>';

  mCalendar['calendar'].innerHTML = park;

  total1 = 0;
  total2 = 0;

  park = document.createElement(elemType);
  park.setAttribute('id','buy');
  park.className='mdivingNameFooter';
  park.innerHTML = '<a href="javascript: addCalendarRow();">'+lang['TEXT36']+'</a>';
  mCalendar['calendar'].appendChild(park);

  park = document.createElement(elemType);
  park.setAttribute('id','cart');
  park.className='mdivingCart';
  mCalendar['calendar'].appendChild(park);

  services=new Array();
  daysSer={};
  userSer = new Array();
  total1 = 0;
  total2 = 0;
  equipment_price = new Array();

  addCalendarRow();
 }

function activateName()
 {
  for (var j=0; j<nextIdx; j++)
   {
    var ne = false;
    for (var i=0;i<draw.length;i++)
     {
      var f = daysSer['day'+i+'_'+j];
      if (f.full!=null) ne = ne || f.full.need_equipment;
      else
       {
        if (f.half1!=null) ne = ne || f.half1.need_equipment;
        if (f.half2!=null) ne = ne || f.half2.need_equipment;
       }
     }

    for (var i=0; i<equipment.length; i++)
     {
      if (eval('typeof document.diving.eq'+j+'_'+i+' != "undefined"'))
        eval('document.diving.eq'+j+'_'+i+'.disabled='+((ne)?'false':'true')+';');
     }
   }

  mDiv['buy_botton'].style.visibility='hidden';
  mSpan['calendar'].style.visibility = "hidden";
  mSpan['naming'].style.visibility = "visible";
  document.diving.cognome0.focus();
 }

function closeName()
 {
  mSpan['naming'].style.visibility = "hidden";
  checkVisibleServices();  
  mSpan['calendar'].style.visibility = "visible";
  mDiv['buy_botton'].style.visibility='visible';
 }

function isEmpty(field,minimum)
 {
  if (minimum == null)
    minimum = 0;
  var counter = 0;
  if ((field.length == 0) || (field.length < minimum))
    return true;
  for (var i=0; i < field.length; i++)
   {
    if (field.charAt(i) != ' ')
      if (counter++ >= minimum)
        return false;
   }
  return (!(counter >= minimum));
 }

function deActivateName()
 {
  for (var id=0;id<nextIdx;id++)
   {
    var f = eval("document.diving.cognome"+id);
    if (typeof f != "undefined")
     {
      if (isEmpty(f.value,2))
       {
        alert(lang['TEXT48']);
        f.focus();
        return false;
       }
      f=eval("document.diving.nome"+id);
      if (isEmpty(f.value,2))
       {
        alert(lang['TEXT49']);
        f.focus();
        return false;
       }
     }
   }

  if (document.diving.hotel.value == '')
   {
    alert(lang['TEXT47']);
    document.diving.hotel.focus();
    return false;
   }
  mSpan['naming'].style.visibility = "hidden";
  refreshTotals();
  checkVisibleServices();  
  mDiv['buy_botton'].style.visibility='visible';
  mSpan['calendar'].style.visibility = "visible";
  return true;
 }

function capitalize(str)
 {
  var park=str.toLowerCase().split(" ");
  for(var i=0;i<park.length;i++)
  {
    var ch=park[i].charAt(0);
    park[i]=ch.toUpperCase().toString()+park[i].substr(1);
   }
  var res=park[0];
  for(var i=1;i<park.length;i++)
   {
    res+=" "+park[i];
   }
  return res;
 }

function addCalendarRow()
 {
  for (var i=0;i<nextIdx;i++)
   {
    if (services[i] != null)
      if (services[i]['price1'] == 0)
       {
        alert(lang['TEXT46']);
        return;
       }
   }
  if (nextIdx>0 && ((services[nextIdx-1] == null) || (services[nextIdx-1]['price1'] == 0)))
   {
    alert(lang['TEXT46']);
    return false;
   }

  equipment_price[nextIdx] = 0.00;
  services[nextIdx]={};
  services[nextIdx]['price1']=0.00;
  services[nextIdx]['price2']=0.00;
  userSer[nextIdx] = {};
  if (curSer != null)
   {
    userSer[nextIdx][curSer] = {};
    userSer[nextIdx][curSer][0] = 0;
    userSer[nextIdx][curSer][1] = 0;
    userSer[nextIdx][curSer][2] = 0;
   }

  var park = document.createElement('TD');
  park.setAttribute('align','center');
  park.className='mdivingColdx subDataTrHead'+nextIdx;
  park.innerHTML=lang['TEXT29']+' '+(nextIdx+1);
  var park1 = document.getElementById('subDataTrHead');
  park1.appendChild(park);

  park = document.createElement('TD');
  park.setAttribute('align','center');
  park.className='mdivingColdx subDataTrFamily'+nextIdx;
  park.innerHTML='<input type="Text" name="cognome'+nextIdx+'">';
  park1 = document.getElementById('subDataTrFamily');
  park1.appendChild(park);

  park = document.createElement('TD');
  park.setAttribute('align','center');
  park.className='mdivingColdx subDataTrName'+nextIdx;
  park.innerHTML='<input type="Text" name="nome'+nextIdx+'">';
  park1 = document.getElementById('subDataTrName');
  park1.appendChild(park);

  for (var i=0; i<equipment.length && need_equipment;i++)
   {
    park = document.createElement('TD');
    park.setAttribute('align','center');
    park.className='mdivingColdx subDataTrEquip'+nextIdx;
    park.innerHTML='<input type="Checkbox" name="eq'+nextIdx+'_'+i+'" value="'+equipment[i].name+'" disabled="" class="mdivingCheckbox">';
    park1 = document.getElementById('subDataTrEquip'+equipment[i].id);
    park1.appendChild(park);
   }

  park = document.createElement(elemType);
  park.setAttribute('id','name'+nextIdx);
  park.className='mdivingNameBox';
  park.innerHTML = '<a href="javascript: delCalendarRow('+nextIdx+')"><img alt="" src="/modules/diving/img/remove_user'+langid+'.gif" width="85" height="17" align="baseline">'+(nextIdx+1)+'</a>';
  mCalendar['calendar'].insertBefore(park,mSpan['buy']);
  for (var i=0;i<draw.length;i++)
   {
    park = document.createElement(elemType);
    park.setAttribute('id','day'+i+'_'+nextIdx);
    park.className='mdivingDayBox';
    park.innerHTML = '<img src="/modules/diving/img/vuota.gif" width="34" height="27" alt="">';
    mCalendar['calendar'].insertBefore(park,mSpan['buy']);
    daysSer['day'+i+'_'+nextIdx]={};
    daysSer['day'+i+'_'+nextIdx].full=null;
    daysSer['day'+i+'_'+nextIdx].half1=null;
    daysSer['day'+i+'_'+nextIdx].half2=null;
    var park = draw[i].split('-');
    daysSer['day'+i+'_'+nextIdx].day=park[2]+"-"+park[1]+"-"+park[0];
    eval("mSpan['day"+i+"_"+nextIdx+"'].onclick = function() { fillDay('Fullday','day"+i+"_"+nextIdx+"') }");

    park = document.createElement(elemType);
    park.setAttribute('id','Textday'+i+'_'+nextIdx);
    park.className='mdivingDayTextBox';
    park.innerHTML = ''+draw[i].substr(8);
    mSpan['day'+i+'_'+nextIdx].appendChild(park);

    park = document.createElement(elemType);
    park.setAttribute('id','Fullday'+i+'_'+nextIdx);
    park.className='mdivingDayFullBox';
    park.innerHTML = '<img src="/modules/diving/img/vuota.gif" width="15" height="27" alt="">';
    mSpan['day'+i+'_'+nextIdx].appendChild(park);

    if (daily == 2)
     {
      park = document.createElement(elemType);
      park.setAttribute('id','Half1day'+i+'_'+nextIdx);
      park.className='mdivingDayHalf1Box';
      park.innerHTML = '<img src="/modules/diving/img/vuota.gif" width="15" height="13" alt="">';
      mSpan['day'+i+'_'+nextIdx].appendChild(park);
      eval("mSpan['Half1day"+i+"_"+nextIdx+"'].onclick = function() { fillDay('Half1day','day"+i+"_"+nextIdx+"') }");

      park = document.createElement(elemType);
      park.setAttribute('id','Half2day'+i+'_'+nextIdx);
      park.className='mdivingDayHalf2Box';
      park.innerHTML = '<img src="/modules/diving/img/vuota.gif" width="15" height="13" alt="">';
      mSpan['day'+i+'_'+nextIdx].appendChild(park);
      eval("mSpan['Half2day"+i+"_"+nextIdx+"'].onclick = function() { fillDay('Half2day','day"+i+"_"+nextIdx+"') }");
     }
   }
/*
  park = document.createElement(elemType);
  park.setAttribute('id','price1_'+nextIdx);
  park.className='mdivingPriceBox';
  park.innerHTML = '<img src="/modules/diving/img/vuota.gif" width="1" height="20" align="absmiddle">'+simbol[currency]+'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+services[nextIdx]['price1'].toFixed(decimal);
  mCalendar['calendar'].insertBefore(park,mSpan['buy']);
*/
  park = document.createElement(elemType);
  park.setAttribute('id','price2_'+nextIdx);
  park.className='mdivingPriceWebBox';
  park.innerHTML = simbol[currency]+'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+services[nextIdx]['price2'].toFixed(decimal);
  mCalendar['calendar'].insertBefore(park,mSpan['buy']);
  if (need_equipment)
   {
    park = document.createElement(elemType);
    park.setAttribute('id','equip_'+nextIdx);
    park.className='mdivingPriceWebBox';
    park.innerHTML = simbol[currency]+'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.00';
    mCalendar['calendar'].insertBefore(park,mSpan['buy']);
   }
  park = document.createElement('div');
  park.setAttribute('id','break'+nextIdx);
  park.className='mdivingBreak';
  park.innerHTML = '<br />';
  mCalendar['calendar'].insertBefore(park,mSpan['buy']);

//  if (allServices[curSer].isCourse)
//    if (allServices[curSer].daily == 1) fillDay('Fullday','day0_'+nextIdx);
//    else fillDay('Half1day','day0_'+nextIdx);

  nextIdx++;

  refreshTotals();
 }

function delCalendarRow(occ)
 {
    var active=0;
    for (var i=0;i<nextIdx;i++)
    {
        if (services[i] != null) active++;
    }
    if (active < 2)
    {
        alert(lang['TEXT41']);
        return;
    }
    mCalendar['calendar'].removeChild(document.getElementById('name'+occ));
    for (var i=0;i<draw.length;i++)
    {
        mSpan['day'+i+'_'+occ].removeChild(document.getElementById('Textday'+i+'_'+occ));
        mSpan['day'+i+'_'+occ].removeChild(document.getElementById('Fullday'+i+'_'+occ));
        if (daily == 2)
         {
          mSpan['day'+i+'_'+occ].removeChild(document.getElementById('Half1day'+i+'_'+occ));
          mSpan['day'+i+'_'+occ].removeChild(document.getElementById('Half2day'+i+'_'+occ));
         }
        mCalendar['calendar'].removeChild(document.getElementById('day'+i+'_'+occ));
    }
//    mCalendar['calendar'].removeChild(document.getElementById('price1_'+occ));
    mCalendar['calendar'].removeChild(document.getElementById('price2_'+occ));
    if (need_equipment) mCalendar['calendar'].removeChild(document.getElementById('equip_'+occ));
    mCalendar['calendar'].removeChild(document.getElementById('break'+occ));
    
    total1-=services[occ]['price1'];
    total2-=services[occ]['price2'];
    services[occ]=null;
    userSer[occ] = null;
    equipment_price[occ]=null;

    var tds = document.getElementsByTagName('TD');
    for (var i=tds.length-1; i>0; i--)
     {
      if ((tds[i]!=null) && (tds[i].className!=null) && (
          (tds[i].className.indexOf('subDataTrHead'+occ)>-1) || 
          (tds[i].className.indexOf('subDataTrFamily'+occ)>-1) || 
          (tds[i].className.indexOf('subDataTrName'+occ)>-1) || 
          (tds[i].className.indexOf('subDataTrEquip'+occ)>-1)
         ))
       {
        for (var j=tds[i].childNodes.length-1; j>=0; j--) tds[i].removeChild(tds[i].childNodes[j]);
        tds[i].parentNode.removeChild(tds[i]);
       }
     }

    refreshTotals();
    
    if (nextIdx == (occ+1)) nextIdx--;
}

// -------------------------------------------------------------------------------------

function setCurSer(serviceid)
{
    if (curSer != null) 
    {
        if (curSer==serviceid) return;
        mImg['service'+curSer].className='mdivingService';
    }
    curSer=parseInt(serviceid);
    
    for (var i=0;i<nextIdx;i++)
     {
      if ((typeof userSer[i] != "undefined") && (userSer[i] != null))
        if (typeof userSer[i][curSer] == "undefined")
         {
          userSer[i][curSer] = {};
          userSer[i][curSer][0] = 0;
          userSer[i][curSer][1] = 0;
          userSer[i][curSer][2] = 0;
         }
     }

    mImg['service'+serviceid].className='mdivingServiceSel';
}

function checkDay(dayid)
{
    if (daysSer[dayid].full!=null) return false;
    if (daysSer[dayid].half1!=null && daysSer[dayid].half2!=null) return false;
    return true;
}

function checkOccurrence(cell,dayid)
 {
  if (allServices[curSer].daily == 1)
   {
    if (daysSer[dayid].full!=null)
      if (daysSer[dayid].full.serviceid==curSer) return daysSer[dayid].full.occurrence;
   }
  else
    if (cell == "Half1day")
     {
      if (daysSer[dayid].half1!=null)
        if (daysSer[dayid].half1.serviceid==curSer) return daysSer[dayid].half1.occurrence;
     }
    else
      if (daysSer[dayid].half2!=null)
        if (daysSer[dayid].half2.serviceid==curSer) return daysSer[dayid].half2.occurrence;

  return -1;
}

function checkDayInFillService(dayid,morning)
 {
  if (allServices[curSer].daily == 1) return (daysSer[dayid].full==null && daysSer[dayid].half1==null &&daysSer[dayid].half2==null);
  else
    if (morning) return (daysSer[dayid].full==null && daysSer[dayid].half1==null);
    else return (daysSer[dayid].full==null && daysSer[dayid].half2==null);
}

function fillService(days)
 {
  if (allServices[curSer].daily == 1) dayType='Fullday';
  else dayType='Half1day';

  if (!allServices[curSer].isCourse) allServices[curSer].days=days;
  var i=0;
  var messo=false;
  for (;i<draw.length && !messo;i++)
    if (checkDayInFillService('day'+i+'_'+(nextIdx-1),true))
     {
      fillDay(dayType,'day'+i+'_'+(nextIdx-1),(allServices[curSer].daily != 1), false);
      messo=true;
     }
  if (!messo && (allServices[curSer].daily > 1))
    for (i=0;i<draw.length && !messo;i++)
      if (checkDayInFillService('day'+i+'_'+(nextIdx-1),false))
       {
        fillDay('Half2day','day'+i+'_'+(nextIdx-1), true, false);
        messo=true;
       }
  if (!allServices[curSer].isCourse) allServices[curSer].days=1;
  if (!messo) alert(lang['TEXT45']);
 }

function hasOccurrence(dayid,occ)
{
    if (allServices[curSer].daily == 1)
    {
        if (daysSer[dayid].full!=null)
            if ((daysSer[dayid].full.serviceid==curSer) && (daysSer[dayid].full.occurrence==occ)) return true;
    }
    else
    {
        if (daysSer[dayid].half1!=null)
            if ((daysSer[dayid].half1.serviceid==curSer) && (daysSer[dayid].half1.occurrence==occ)) return true;
        if (daysSer[dayid].half2!=null)
            if ((daysSer[dayid].half2.serviceid==curSer) && (daysSer[dayid].half2.occurrence==occ)) return true;
    }
    return false;
}

function fillDay(cell,dayid,recurse, handly)
 {
  if (allServices[curSer].daily==2 && cell=='Fullday') return;
  if (allServices[curSer].daily==1 && (cell=='Half1day' || cell=='Half2day')) return;
  if (typeof recurse == "undefined") var recurse=false;
  if (typeof handly == "undefined") var handly=true;
  if (curSer == null)
   {
    alert(lang['TEXT42']);
    return;
   }

  var park = dayid.split('_');
  park[0] = park[0].substr(3);

  var occ = checkOccurrence(cell,dayid);
  if (occ >= 0)
   {
    for(var i=0;i<draw.length;i++)
      if (hasOccurrence('day'+i+'_'+park[1], occ)) unSetDay('day'+i+'_'+park[1],occ);

    return;
   }

  if ((allServices[curSer].multi == 0) && (typeof services[parseInt(park[1])][curSer] != 'undefined') && (services[parseInt(park[1])][curSer] != null) && (services[parseInt(park[1])][curSer].length != 0))
   {
    alert(lang['TEXT43']);
    return;
   }
    
  if (!recurse && !checkDay(dayid))
   {
    alert(lang['TEXT44']);
    return;
   }
  
  if (services[parseInt(park[1])][curSer] == null)
    services[parseInt(park[1])][curSer] = new Array();

  var j=0;
  var i=parseInt(park[0]);
  for(;((i<draw.length) && (j<allServices[curSer].days));i++)
    if (checkDayInFillService('day'+i+'_'+park[1],true)) j++;

  if (j<allServices[curSer].days)
    for(var i=0;((i<draw.length) && (j<allServices[curSer].days));i++)
      if (checkDayInFillService('day'+i+'_'+park[1],false)) j++;
  
  if (j!=allServices[curSer].days)
   {
    alert(lang['TEXT45']);
    return;
   }

  i=parseInt(park[0]);
  var amount=allServices[curSer].days;
  if (!allServices[curSer].isCourse) allServices[curSer].days=1;
  for(j=1;((i<draw.length) && (j<=amount) && (cell!='Half2day'));i++)
    if (checkDayInFillService('day'+i+'_'+park[1],true))
     {
      setDay(cell,'day'+i+'_'+park[1],((allServices[curSer].isCourse)?j:1));
      j++;
     }

  if (j<=amount)
    for(i=(handly?park[0]:0);((i<draw.length) && (j<=amount));i++)
      if (checkDayInFillService('day'+i+'_'+park[1],false))
       {
        setDay('Half2day','day'+i+'_'+park[1],((allServices[curSer].isCourse)?j:1));
        j++;
       }
 }

function changePrice(userid, add, occ)
 {
  var drawid=0;
  if ((season[draw[drawid]] != -1) && (season[draw[drawid]] != 0) && (season[draw[drawid]] != 2))
     season[draw[drawid]] = 1;

  while (season[draw[drawid]]<0)
   {
    drawid++;
    if ((season[draw[drawid]] != -1) && (season[draw[drawid]] != 0) && (season[draw[drawid]] != 2))
       season[draw[drawid]] = 1;
   }

  if (add)
   {
    services[userid][curSer][services[userid][curSer].length]=1;
    userSer[userid][curSer][season[draw[drawid]]]++;
   }
  else
   {
    services[userid][curSer][occ]=0;
    userSer[userid][curSer][season[draw[drawid]]]--;
        
    var invalid=true;
    for(var z=0;z<services[userid][curSer].length;z++)
     {
      if (services[userid][curSer][z]>0) invalid=false;
     }
    if (invalid) services[userid][curSer] = new Array;
   }
    
  refreshTotals();
 }

function refreshTotals()
 {
  var park='';
  total1=0;
  total2=0;
  for (var j=0;j<services.length;j++)
   {
    if (services[j] == null) continue;

    price1=0;
    price2=0;
    equipment_price[j] = 0.00;

    for (var i=0;i<draw.length && curSer != null;i++)
     {
      var f = daysSer['day'+i+'_'+j];
      if (f.full!=null || f.half1!=null || f.half2!=null)
        for (var k=0;need_equipment && k<equipment.length;k++)
          if (eval('document.diving.eq'+j+'_'+k+'.checked'))
           {
            if (f.full!=null)
             {
              if (f.full.need_equipment)
               {
                price1 += eqD[k];
                equipment_price[j] += eq[k];
               }
             }
            else
             {
              if (f.half1 != null && f.half1.need_equipment)
               {
                price1 += eqD[k];
                equipment_price[j] += eq[k];
               }
              if (f.half2 != null && f.half2.need_equipment)
               {
                price1 += eqD[k];
                equipment_price[j] += eq[k];
               }
             }
           }
     }

    for (var idx in userSer[j])
     {
      var disc = new Array();
      disc[0] = 0;
      disc[1] = 0;
      disc[2] = 0;
      var discD = new Array();
      discD[0] = 0;
      discD[1] = 0;
      discD[2] = 0;
      for (var l=0;l<3;l++)
       {
        for (var i=0;i<discount[idx].length;i++)
         {
          if (discount[idx][i] > userSer[j][idx][l]) break;
          disc[l]=discount[idx][i];
         }
        for (var i=0;i<discountD[idx].length;i++)
         {
          if (discountD[idx][i] > userSer[j][idx][l]) break;
          discD[l]=discountD[idx][i];
         }
       }
      for (var i=0;i<3;i++)
       {
        price1 += userSer[j][idx][i] * allServices[idx].price1[i] * ((100.0-discountsD[idx][discD[i]][i])/100.0);
        if (typeof disc[i] != 'undefined')
          price2 += userSer[j][idx][i] * allServices[idx].price2[i] * ((100.0-discounts[idx][disc[i]][i])/100.0);
       }
     }
    services[j]['price1']=price1;
    services[j]['price2']=price2;
    total1+=price1;
    total2+=price2+equipment_price[j];

/*
      park='';
      for (var i=maxDigit;i>0;i--)
       {
        if (Math.floor(services[j]['price1']/Math.pow(10,i)) > 0) break;
        park+='&nbsp;';
       }
      mSpan['price1_'+j].innerHTML='<img src="/modules/diving/img/vuota.gif" width="1" height="20" align="absmiddle">'+simbol[currency]+'&nbsp;'+park+price1.toFixed(decimal);
*/
    park='';
    for (var i=maxDigit;i>0;i--)
     {
      if (Math.floor(price2/Math.pow(10,i)) > 0) break;
      park+='&nbsp;&nbsp;';
     }
    mSpan['price2_'+j].innerHTML=simbol[currency]+'&nbsp;'+park+price2.toFixed(decimal);

    if (need_equipment)
     {
      park='';
      for (var i=maxDigit;i>0;i--)
       {
        if (Math.floor(equipment_price[j]/Math.pow(10,i)) > 0) break;
        park+='&nbsp;&nbsp;';
       }
      mSpan['equip_'+j].innerHTML=simbol[currency]+'&nbsp;'+park+equipment_price[j].toFixed(decimal);
     }
   }
  park='';
  for (var i=maxDigit;i>0;i--)
   {
    if (Math.floor(total1/Math.pow(10,i)) > 0) break;
    park+='&nbsp;';
   }
  mSpan['total1'].innerHTML=lang['TEXT11']+'&nbsp;'+simbol[currency]+'&nbsp;'+park+total1.toFixed(decimal);
  park='';
  for (var i=maxDigit;i>0;i--)
   {
    if (Math.floor(total2/Math.pow(10,i)) > 0) break;
    park+='&nbsp;';
   }
  mSpan['total2'].innerHTML=lang['TEXT12']+'&nbsp;'+simbol[currency]+'&nbsp;'+park+total2.toFixed(decimal);
 }

function setDay(cell,dayid,idx)
{
    var park = dayid.split('_');
    var userid = parseInt(park[1]);
    if (allServices[curSer].daily == 1)
    {
        daysSer[dayid].full={};
        daysSer[dayid].full.serviceid=curSer;
        daysSer[dayid].full.name=allServices[curSer].name;
        daysSer[dayid].full.need_equipment=allServices[curSer].need_equipment;
        daysSer[dayid].full.days=idx;
        daysSer[dayid].full.daily=allServices[curSer].daily;
        daysSer[dayid].full.multi=allServices[curSer].multi;
        daysSer[dayid].full.occurrence=services[userid][curSer].length;

        mSpan['Full'+dayid].innerHTML='<img src="'+mImg['service'+curSer].src+'" alt="'+allServices[curSer].name+'" width="'+mImg['service'+curSer].width+'" height="'+mImg['service'+curSer].height+'" />';
    }
    else
    {
        if ((daysSer[dayid].half1==null)&&(cell!='Half2day' || idx>1))
         {
          daysSer[dayid].half1={};
          daysSer[dayid].half1.serviceid=curSer;
          daysSer[dayid].half1.name=allServices[curSer].name;
          daysSer[dayid].half1.need_equipment=allServices[curSer].need_equipment;
          daysSer[dayid].half1.days=idx;
          daysSer[dayid].half1.daily=allServices[curSer].daily;
          daysSer[dayid].half1.multi=allServices[curSer].multi;
          daysSer[dayid].half1.occurrence=services[userid][curSer].length;

          mSpan['Half1'+dayid].innerHTML='<img src="'+mImg['service'+curSer].src+'" width="'+(mImg['service'+curSer].width/2)+'" height="'+(mImg['service'+curSer].height/2)+'" alt="'+allServices[curSer].name+'" />';
         }
        else
          if (cell!='Half1day' || idx>1)
          {
            daysSer[dayid].half2={};
            daysSer[dayid].half2.serviceid=curSer;
            daysSer[dayid].half2.name=allServices[curSer].name;
            daysSer[dayid].half2.need_equipment=allServices[curSer].need_equipment;
            daysSer[dayid].half2.days=idx;
            daysSer[dayid].half2.daily=allServices[curSer].daily;
            daysSer[dayid].half2.multi=allServices[curSer].multi;
            daysSer[dayid].half2.occurrence=services[userid][curSer].length;

            mSpan['Half2'+dayid].innerHTML='<img src="'+mImg['service'+curSer].src+'" width="'+(mImg['service'+curSer].width/2)+'" height="'+(mImg['service'+curSer].height/2)+'" alt="'+allServices[curSer].name+'" />';
          }
    }

    if (idx == allServices[curSer].days) changePrice(userid, true);
}

function unSetDay(dayid,occ)
{
    var park = dayid.split('_');
    var userid = parseInt(park[1]);
    
    var chPrice = false;

    if (allServices[curSer].daily == 1)
    {
        if ((daysSer[dayid].full!=null) && 
            (daysSer[dayid].full.serviceid==curSer) && 
            (daysSer[dayid].full.occurrence==occ))
        {
            chPrice = (daysSer[dayid].full.days==1);
            daysSer[dayid].full=null;
            mSpan['Full'+dayid].innerHTML='<img src="/modules/diving/img/vuota.gif" width="20" height="27" alt="">';
        }
    }
    else
    {
        if ((daysSer[dayid].half1!=null) && 
            (daysSer[dayid].half1.serviceid==curSer) && 
            (daysSer[dayid].half1.occurrence==occ))
        {
            chPrice = (daysSer[dayid].half1.days==1);
            daysSer[dayid].half1=null;
            mSpan['Half1'+dayid].innerHTML='<img src="/modules/diving/img/vuota.gif" width="20" height="27" alt="">';
        }
        if ((daysSer[dayid].half2!=null) && 
            (daysSer[dayid].half2.serviceid==curSer) && 
            (daysSer[dayid].half2.occurrence==occ))
        {
            chPrice = (daysSer[dayid].half2.days==1);
            daysSer[dayid].half2=null;
            mSpan['Half2'+dayid].innerHTML='<img src="/modules/diving/img/vuota.gif" width="20" height="27" alt="">';
        }
    }
    if (chPrice) changePrice(userid, false, occ);
}

function createCartNote(f)
 {
  if (f.days == 1)
   {
    var trovato=false;
    for (var i=0;i<prodIdx.length;i++)
     {
      if (prodIdx[i] == f.serviceid) trovato=true;
     }
    if (!trovato) prodIdx[prodIdx.length]=f.serviceid;
   }
  return "    " + f.name + " (day " + f.days + ")\n";
 }

function createCart(groupid)
 {
  if (submitted) return false;
  for (var i=0;i<nextIdx;i++)
    if (services[i] != null)
      if (eval("document.diving.cognome"+i+".value") == '')
       {
        activateName();
//        alert(lang['TEXT40']);
        return false;
       }
  for (var i=0;i<nextIdx;i++)
   {
    if (services[i] != null)
      if (services[i]['price1'] == 0)
       {
        alert(lang['TEXT46']);
        return false;
       }
   }

  var note=lang['TEXT06'] + document.diving.startDate.value + "\n"+
           lang['TEXT08'] + document.diving.endDate.value + "\n"+
           lang['TEXT05'] + document.diving.divingcenter.value + "\n"+
           lang['TEXT28'] + document.diving.hotel.value;

  prodIdx=new Array();
  var equip = new Array();
  for (var k=0;k<equipment.length;k++) equip[k]=0;

  for (var i=0;i<nextIdx;i++)
    if (services[i] != null)
     {
      note += "\n\n"+lang['TEXT19']+" " + eval("document.diving.cognome"+i+".value") + "\n";
      note += lang['TEXT20']+" " + eval("document.diving.nome"+i+".value") + "\n";

      if (need_equipment) note += lang['TEXT30']+"\n";
      for (var k=0;need_equipment && k<equipment.length;k++)
        if (eval('document.diving.eq'+i+'_'+k+'.checked'))
          note += " - " + eval('document.diving.eq'+i+'_'+k+'.value') + "\n";

      note += "\n"+lang['TEXT27']+"\n";

      for(var j=0;j<draw.length;j++)
       {
        var f = daysSer['day'+j+'_'+i];
        if ((f.full != null) || (f.half1 != null) || (f.half2 != null))
         {
          note += " Day: " + f.day + "\n";
          if (f.full != null)
            note += createCartNote(f.full);
          if (f.half1 != null)
            note += createCartNote(f.half1);
          if (f.half2 != null)
            note += createCartNote(f.half2);
          for (var k=0;need_equipment && k<equipment.length;k++)
            if (f.full!=null)
             {
              if (f.full.need_equipment)
                if (eval('document.diving.eq'+i+'_'+k+'.checked')) equip[k]++;
             }
            else
             {
              if (f.half1 != null && f.half1.need_equipment)
                if (eval('document.diving.eq'+i+'_'+k+'.checked')) equip[k]++;
              if (f.half2 != null && f.half2.need_equipment)
                if (eval('document.diving.eq'+i+'_'+k+'.checked')) equip[k]++;
             }
         }
       }
      note += "Subtotal: " + simbol[currency] + " " + services[i]['price2'].toFixed(decimal);
      if (need_equipment) note += "\nEquipment: " + simbol[currency] + " " + equipment_price[i].toFixed(decimal);
     }

    note += "\nTotal: " + simbol[currency] + " " + total2.toFixed(decimal);

    var notes='';
    var idx = 0;
    for(var i=0;i<userSer.length;i++)
      if ((typeof userSer[i] != "undefined") && (userSer[i] != null))
        for(var k=0;k<prodIdx.length;k++)
          if (typeof userSer[i][prodIdx[k]] != "undefined")
            for(var j=0;j<=2;j++)
              if (userSer[i][prodIdx[k]][j] > 0)
               {
                // Crea il form per inserire i prodotti nel carrello
/*
                park += '<input type="hidden" name="cod'+(++idx)+'" value="'+prodIdx[k]+'">';
                park += '<input type="hidden" name="qta'+idx+'" value="'+userSer[i][prodIdx[k]][j]+'">';
                park += '<input type="hidden" name="var'+idx+'" value="'+allServices[prodIdx[k]].vars[j]+'">';
                park += '<input type="hidden" name="shp'+idx+'" value="'+groupid+'">';
*/
                notes += ' n. '+userSer[i][prodIdx[k]][j]+' x '+allServices[prodIdx[k]].name+"\n";
               }

    var found=false;
    for (var k=0;k<equipment.length;k++)
     {
      if (equip[k] > 0)
       {
    	// Crea il form per inserire i prodotti nel carrello
/*
        park += '<input type="hidden" name="cod'+(++idx)+'" value="'+equipment[k].id+'">';
        park += '<input type="hidden" name="qta'+idx+'" value="'+equip[k]+'">';
        park += '<input type="hidden" name="var'+idx+'" value="0">';
        park += '<input type="hidden" name="shp'+idx+'" value="4">';
*/
//        if (!found) notes += "\n"+lang['TEXT78']+"\n";
        notes += ' n. '+equip[k]+' x '+equipment[k].name+"\n";
        found=true;
       }
     }

    var park='';
//    park += '<input type="hidden" name="totale_prodotti" value="'+idx+'">';

    park += '<textarea name="order_notes" style="display: none;">'+note+'</textarea>';
    park += '<textarea name="product_notes" style="display: none;">'+notes+'</textarea>';
    park += '<input type="hidden" name="internal_notes" value="'+ document.diving.divingcenter.value +'" />';

    park += '<input type="hidden" name="q" value="1" />';
    park += '<input type="hidden" name="price" value="'+ total2.toFixed(decimal) +'" />';
    park += '<input type="hidden" name="curr" value="'+ currency +'" />';
    park += '<input type="hidden" name="weight" value="0" />';
    park += '<input type="hidden" name="wunit" value="KG" />';
    park += '<input type="hidden" name="name" value="Booking for '+ document.diving.divingcenter.value +'" />';
    park += '<input type="hidden" name="qm" value="1" />';
    park += '<input type="hidden" name="qlock" value="1" />';

    mSpan['cart'].innerHTML=park;
    submitted = true;
    mDiv['buy_botton'].style.visibility='hidden';
}

// -------------------------------------------------------------------------------------

