/*

  ppSD2
  Copyright (c) 2010, Ascad Networks - All Rights Reserved.
  Online:
  http://www.ascadnetworks.com/
  http://www.ppsd2.com/
  
*/

var dow = ['S','M','T','W','T','F','S'];

function valButton(btn) {
  var cnt = -1;
  for (var i=btn.length-1; i > -1; i--) {
    if (btn[i].checked) {
      cnt = i; i = -1;
    }
  }
  if (cnt > -1) return btn[cnt].value;
  else return null;
}

function monthLength(month,year) {
  var dd = new Date(year, month, 0);
  return dd.getDate();
}

function setCell(f,day,col,year,month,field) {
  var ptmonth = month;
  ptmonth++;
  var c = [];
  var t = '<td';
  if (f==0) c.push('previous');
  if (col==0 || col==6) c.push('weekend');
  if (f==9) c.push('next');
  if (c.length>0) t += ' class="' + c.join(' ') + '"' ;
  t += '><span class="date">';
  if (f == 0) { t += ''; }
  else if (f == 9) { t += ''; }
  else {
    t += "<span class=\"calDayClick\" OnClick=\"javascript:populateCalFields(" + year + "," + ptmonth + "," + day + ",'" + field + "');return false;\">" + day + "</span>";
  }
  t += '<\/span><div class="day"><\/div><\/td>\n';
  return t;
}


function setCal(fm,field,positionElement) {
  putYNameA = "ppsd2_cal_year_" + field;
  putMNameA = "ppsd2_cal_month_" + field;
  putYName = document.getElementById(putYNameA);
  putMName = document.getElementById(putMNameA);
  var m = parseInt(putMName.value,10);
  var y = parseInt(putYName.value,10);
  if (y < 1901 || y > 2100) {
    alert('year must be after 1900 and before 2101');
    return false;
  }
  var c = new Date();
  c.setDate(1);
  c.setMonth(m);
  c.setFullYear(y);
  var x = parseInt(valButton(fm.day),10);
  var s = (c.getDay()-x)%7; if (s<0) s+=7;
  var dm = monthLength(m,y);
  var h = '<table id="month">\n<thead>\n<tr>\n';
  for (var i=0;i<7;i++) {
    h+= '<th';
    if ((i+x)%7==0 || (i+x)%7==6) h+= ' class="weekend"';
    h+= '>'+dow[(i+x)%7]+'<\/th>\n';
  }
  h += '<\/tr>\n<\/thead>\n<tbody>\n<tr>\n';
  for (var i=s;i>0;i--) {
    h += setCell(0,dm-i+1,(s-i+x)%7,putYName.value,putMName.value,field);
  }
  dm = monthLength(m+1,y);
  for(var i=1; i <= dm; i++) {
    if((s%7)==0) {h += '<\/tr><tr>\n'; s = 0;}
    h += setCell(1,i,(s+x)%7,putYName.value,putMName.value,field);
    s++;
  }
  var j=1;
  for (var i=s;i<7;i++) {
    h += setCell(9,j,(i+x)%7,putYName.value,putMName.value,field);
    j++;
  }
  h += '<\/tr>\n<\/tbody>\n<\/table>';
  elementFinal = "ppsd2_month_holder_" + field;
  element1Final = "ppsd2_cal_sample_" + field;
  if (positionElement) {
    var splitScroll = locatedCursor(positionElement);
    splitScroll[0] += 20;
    splitScroll[1] += 0;
    document.getElementById(elementFinal).style.top = splitScroll[1] + "px";
    document.getElementById(elementFinal).style.left = splitScroll[0] + "px";
  }
  document.getElementById(elementFinal).style.display = "block";
  document.getElementById(element1Final).innerHTML = h;
}

function closeCal(id) {
  document.getElementById(id).style.display = "none";
}

function populateCalFields(year,month,day,field) {
  if (month < 10) {
    month += 0;
    month = "0" + month;
  }
  if (day < 10) {
    day += 0;
    day = "0" + day;
  }
  var yearField = field + "_yy";
  var monthField = field + "_mm";
  var dayField = field + "_dd";
  elementFinal = "ppsd2_month_holder_" + field;
  element1Final = "ppsd2_cal_sample_" + field;
  document.getElementById(yearField).value = year;
  document.getElementById(monthField).value = month;
  document.getElementById(dayField).value = day;
  document.getElementById(elementFinal).style.display = "none";
  document.getElementById(element1Final).innerHTML = "";
}


// ------------------------------------------------------------------------------------------------------------------------------------------
//    The following function is present on general_functions.js

function locatedCursor(obj) {
  var curleft = curtop = 0;
  if (obj.offsetParent) {
    curleft = obj.offsetLeft
    curtop = obj.offsetTop
    while (obj = obj.offsetParent) {
      curleft += obj.offsetLeft
      curtop += obj.offsetTop
    }
  }
  return [curleft,curtop];
}
