/********************************************
* Date Functions                            *
*********************************************/
Date.prototype.mm_dd_yyyy = function() {
  var yyyy = this.getFullYear().toString();
  var mm = (this.getMonth()+1).toString(); // getMonth() is zero-based
  var dd = this.getDate().toString();
  return((mm[1]?mm:"0"+mm[0]) + "-" + (dd[1]?dd:"0"+dd[0]) + "-" + yyyy); // padding
};

Date.prototype.from_mm_dd_yyyy = function(dateStr) {
  var year = parseInt(dateStr.substring(6));
  var month = parseInt(dateStr.substring(0,2))-1;
  var day = parseInt(dateStr.substring(3,5));
  this.setFullYear(year, month, day);
}

/*
// Date back to the most current DM date
function addDays(myDate, days) {
  // Calculate the difference in milliseconds
  return new Date(myDate.getTime() - days*24*60*60*1000);
}

// decide how many days between Tuesday (the date to publish DM) and today within a week
function decideDate(dateSel, iDaysFromTue) {
  var dateToday = new Date();
  
  if (iDaysFromTue >= 3) {
    return addDays(dateSel, iDaysFromTue);
  }
 if (iDaysFromTue == -2) {
    return addDays(dateSel, 5);
  }
  if(iDaysFromTue == 0 && (dateToday-dateSel >= 7*24*60*60*1000)) {
    return dateSel;
  }
  else {
    return addDays(dateSel, (iDaysFromTue+7));
  }
}
*/

function substractDays(dateSel, iDays) {
  return new Date(dateSel.getTime() - iDays*24*60*60*1000);
}

function getLatestDMDate() {
  var dateToday = new Date();
  var dateWeekAgo = substractDays(dateToday, 7);
  var iWeekDay = dateWeekAgo.getDay();
  var iDaysFromTue = iWeekDay - 2;
  return substractDays(dateWeekAgo, iDaysFromTue);
}

Date.prototype.dmDate = function() {
  var iWeekDay = this.getDay();
  var iDaysFromTue = iWeekDay - 2;
  if(iDaysFromTue < 0) {
    return substractDays(this, iDaysFromTue+7);
  }
  else {
    return substractDays(this, iDaysFromTue);
  }
}

Date.prototype.dmLyrSuffix = function() {
  var dateDM = this.dmDate();
  var yy = dateDM.getFullYear().toString().slice(2);
  var mm = (dateDM.getMonth()+1).toString();
  var dd = dateDM.getDate().toString();
  return(yy + (mm[1]?mm:"0"+mm[0]) + (dd[1]?dd:"0"+dd[0])); // padding
};

function JSONtoShortDateString(jsonDate) {
  if(jsonDate !== null) {
    var aDate = new Date(parseInt(jsonDate.substr(6)));
    return aDate.mm_dd_yyyy();
  }
  else {
    return "";
  }
}

/********************************************
* Icon Functions                            *
*********************************************/
function positiveIcon() {
  return "<img src=\"images/positive.jpg\" title=\"Positive\">";
}

function statewideIcon() {
  return "<img src=\"images/statewide.jpg\" title=\"Statewide\">";
}

function photoIcon() {
    return "<img src=\"images/photo.jpg\" title=\"Photo Available\">";
}

function categoryIcon(iCtgryID) {
  sCtgryID = iCtgryID + "";
  //sCtgryID = sCtgryID[1]?sCtgryID:"0"+sCtgryID[0];
  sCtgryID = sCtgryID.length==2 ? sCtgryID : "0" + sCtgryID[0];
  return ("<img src=\"images/cat" + sCtgryID + ".jpg\" title=\"" + getCategoryName(iCtgryID)  + "\">");
}

function reportTypeIcon(iRprtTypeID) {
  sRprtTypeID = iRprtTypeID + "";
  //sRprtTypeID = sRprtTypeID[1]?sRprtTypeID:"0"+sRprtTypeID[0];
  sRprtTypeID = sRprtTypeID.length==2 ? sRprtTypeID : "0" + sRprtTypeID[0];
  return ("<img src=\"images/rep" + sRprtTypeID + ".jpg\" title=\"" + getReportTypeName(iRprtTypeID)  + "\">");
}

/********************************************
* Anchor Functions                            *
*********************************************/
function createAnchor(sURL) {
  return "<a href=\"" + sURL +"\" target=\"_blank\">" + sURL + "</a>"
}

/********************************************
* Other UI Control Functions                *
*********************************************/
function showLoader(ifToShow) {
  if(ifToShow) {
    $("#loader").show();
  }
  else {
    $("#loader").hide();
  }
}

function showRefreshWarning(ifToShow) {
  if(ifToShow) {
    $("#tblRefreshWarning").show();
  }
  else {
    $("#tblRefreshWarning").hide();
  }
}

/********************************************
* Object Functions                          *
*********************************************/
function cloneObject(obj) {
  return jQuery.extend(true, {}, obj);
}

