   var allDays;
   var todayDate=new Date()
   var thisMonth=todayDate.getMonth()+1    // get current month (1-12)
   var curMonth=todayDate.getMonth()+1     // get current month (1-12)
   var thisYear=todayDate.getFullYear()       // get current year
   var currYear=todayDate.getFullYear()       // get current year
   var satO;
   var iNum;

function buildCal(m, y, cM, cH, cDW, cD, brdr, satOnly) {
   var satO = checkSaturday();
   var mn=['January','February','March','April','May','June','July','August','September','October','November','December'];
   var dim=[31,28,31,30,31,30,31,31,30,31,30,31];
   var oD = new Date(y, m-1, 1);
   oD.od=oD.getDay()+1;
   var todayDate=new Date()
   var scanForToday=(y==todayDate.getFullYear() && m==todayDate.getMonth()+1)? todayDate.getDate() : 0
   dim[1]=(((oD.getFullYear()%100!=0)&&(oD.getFullYear()%4==0))||(oD.getFullYear()%400==0))?29:28;
//   var t='<div id="div1" onmousedown="handleMouseDown(event)"><table class="'+cM+'" cols="7" cellpadding="0" border="'+brdr+'" cellspacing="0"><tr align="center">';
   var t='<table  class="'+cM+'" cols="7" cellpadding="0" border="'+brdr+'" cellspacing="0"><tr align="center">';
   t+='<td align="left" class="'+cH+'"><strong><span class="nextPrev" onclick="prevMonth()">&nbsp;<</span></strong></td><td colspan="5" align="center" class="'+cH+'">'+mn[m-1]+' - '+y+'</td><td align="right" class="'+cH+'"><strong><span class="nextPrev" onclick="nextMonth()">>&nbsp;</span></strong></td></tr><tr align="center">';
   for(s=0;s<7;s++)t+='<td class="'+cDW+'">'+"SMTWTFS".substr(s,1)+'</td>';
   t+='</tr><tr align="center">';
//alert('allDays='+allDays);
   for(var i=1;i<=42;i++){
      var x=((i-oD.od>=0)&&(i-oD.od<dim[m-1]))? i-oD.od+1 : '&nbsp;';
      var yy=((i-oD.od>=0)&&(i-oD.od<dim[m-1]))? i-oD.od+1 : 0;
      var goodDay = checkForBadDay(x,m,y);
      if (x==scanForToday) {
         x='<span id="today">'+x+'</span>'
      } else {
         if (((i==3|i==4|i==5|i==10|i==11|i==12|i==17|i==18|i==19|i==24|i==25|i==26|i==31|i==32|i==33|i==38|i==39|i==40&&x>=scanForToday+1&&x!='&nbsp;')&&satO==1)&&goodDay=='yes') x='<span class=dDays onclick="selectDate('+x+')">'+x+'</span>'
         if (((i==7|i==14|i==21|i==28|i==35&&x>scanForToday+1&&x!='&nbsp;')&&satO==0)&&goodDay=='yes') x='<span class=dDays onclick="selectDate('+x+')">'+x+'</span>'
         if (x>scanForToday&&allDays=='yes') x='<span class=dDays onclick="selectDate('+x+')">'+x+'</span>'
      }
      t+='<td class="'+cD+'">'+x+'</td>';
      if(((i)%7==0)&&(i<36))t+='</tr><tr align="center">';
   }
   return t+='</tr></table>';
//   return t+='</tr></table></div>';
}

function updateCal(themonth,num) {
   iNum = num;
   var noCals = document.getElementById('total_split').value;
   var calx;
   for (var i=1;i<=noCals;i++) {
      if (iNum!='') calx = "calendarspace00"+i;
      if (iNum=='') calx = "calendarspace";
      if (document.getElementById) {
         document.getElementById(calx).style.display='none';
      }
   }
   var calendarstr=buildCal(themonth, currYear, "main", "month", "daysofweek", "days", 0, satO);
   calx = "calendarspace"+iNum;
   if (document.getElementById) {
      document.getElementById(calx).innerHTML=calendarstr;
      document.getElementById(calx).style.display='block';
   }
}

function prevMonth() {
//alert('prevMonth');
   if (curMonth>thisMonth|thisYear<currYear) {
      --curMonth;
      if (curMonth==0) {
         curMonth = 12;
         --currYear;
      }
      updateCal(curMonth,iNum);
   }
}

function nextMonth() {
//alert('nextMonth');
   ++curMonth;
   if (curMonth==13) {
      curMonth = 1;
      ++currYear;
   }
   updateCal(curMonth,iNum);
}

function thisMonth() {
//alert('thisMonth');
   updateCal(curMonth,iNum);
}

function checkSaturday_original() {
   var oRad = document.getElementById("satOnly");
   return oRad.value;
}

function checkSaturday() {
   var oRad = document.getElementById("carrierSel"+iNum);
   var val = oRad.value;
   var x = val.search(/Sat=YES/i);
   var res = 1;
   if (x>0) res = 0;
   return res;
}

function clearDate(dd,iNum) {
   var oRad = document.getElementById(dd);
   oRad.value = 'dd/mm/yyyy';
   doTotals(iNum);
}

function selectDate(day) {
   var oD = document.getElementById("dDate"+iNum);
   oD.value = day+'/'+curMonth+'/'+currYear;
   var calx = "calendarspace"+iNum;
//alert('selectDate - '+calx);
   document.getElementById(calx).innerHTML='';
   document.getElementById(calx).style.display='none';
   thisMonth=todayDate.getMonth()+1    // get current month (1-12)
   curMonth=todayDate.getMonth()+1     // get current month (1-12)
   thisYear=todayDate.getFullYear()       // get current year
   currYear=todayDate.getFullYear()       // get current year
}

function doTotals(iNum) {
   var oC = document.getElementById("js_carriage"+iNum);
   var oT = document.getElementById("js_total"+iNum);
   var oX = document.getElementById("total_split");
   var oXv = oX.value;
   var oN = "document.carrier.carrierSel"+iNum;
   var oM = eval(oN);
   var i = oM.selectedIndex;
   var v = oM.options[i].value;
   var l = v.length;
   var x = v.search(/val=/i);
   var s = v.substr(x+4,l-x-4);
   var fT = parseFloat(oT.value);
   var fS =parseFloat(s);
   fT = fT+fS;
   fT = doDecimals(fT,2);
   document.getElementById('carr'+iNum).innerHTML = doDecimals(fS,2);
   document.getElementById('tot'+iNum).innerHTML = fT;
   oC.value = doDecimals(oC.value,2);
   var oTT = document.getElementById('js_carriage'+iNum);
   oTT.value = fS;
   var gT = 0;
   for (var j=1; j<=oXv; j++) {
      oTT = document.getElementById('js_true_total00'+j.toString());
      gT = gT+parseFloat(oTT.value);
      oTT = document.getElementById('js_carriage00'+j.toString());
      gT = gT+parseFloat(oTT.value);
   }
   document.getElementById('grandTotal').innerHTML = doDecimals(gT,2);
}

function checkForBadDay(d,m,y) {
   d = right2(d);
   m = right2(m);
   var dat = d+'/'+m+'/'+y
   var bd = badDate.join('|');
   var answer = 'no';
   var i = bd.indexOf(dat);
   if (i<0) answer = 'yes';
   return answer;
}

function right2(x) {
   x = '00'+x;
   var xl = x.length;
   return x.substr(xl-2,2)
}
   