?
Solved

i have popup calendar working but id like it that any dates before the current date are unselectable

Posted on 2005-04-02
14
Medium Priority
?
394 Views
Last Modified: 2008-02-01
I have popup calendar that works. it enter a date into a field with the format 07-12-2005. (d-m-y). But the problem is the calendar allows people to select days before the current day. Id like people to be only be able to select from the current date on. code for calendar is as follows:



<script language="JavaScript">


var weekend = [0,6];
var weekendColor = "#e0e0e0";
var fontface = "Verdana";
var fontsize = 8;                  // in "pt" units; used with "font-size" style element

var gNow = new Date();
var ggWinContent;
var ggPosX = -1;
var ggPosY = -1;

Calendar.Months = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"];

// Non-Leap year Month days..
Calendar.DOMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
// Leap year Month days..
Calendar.lDOMonth = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

function Calendar(p_item, p_month, p_year, p_format) {
      if ((p_month == null) && (p_year == null))      return;

      if (p_month == null) {
            this.gMonthName = null;
            this.gMonth = null;
            this.gYearly = true;
      } else {
            this.gMonthName = Calendar.get_month(p_month);
            this.gMonth = new Number(p_month);
            this.gYearly = false;
      }

      this.gYear = p_year;
      this.gFormat = p_format;
      this.gBGColor = "white";
      this.gFGColor = "black";
      this.gTextColor = "black";
      this.gHeaderColor = "black";
      this.gReturnItem = p_item;
}

Calendar.get_month = Calendar_get_month;
Calendar.get_daysofmonth = Calendar_get_daysofmonth;
Calendar.calc_month_year = Calendar_calc_month_year;

function Calendar_get_month(monthNo) {
      return Calendar.Months[monthNo];
}

function Calendar_get_daysofmonth(monthNo, p_year) {
      /*
      Check for leap year ..
      1.Years evenly divisible by four are normally leap years, except for...
      2.Years also evenly divisible by 100 are not leap years, except for...
      3.Years also evenly divisible by 400 are leap years.
      */
      if ((p_year % 4) == 0) {
            if ((p_year % 100) == 0 && (p_year % 400) != 0)
                  return Calendar.DOMonth[monthNo];
      
            return Calendar.lDOMonth[monthNo];
      } else
            return Calendar.DOMonth[monthNo];
}

function Calendar_calc_month_year(p_Month, p_Year, incr) {
      /*
      Will return an 1-D array with 1st element being the calculated month
      and second being the calculated year
      after applying the month increment/decrement as specified by 'incr' parameter.
      'incr' will normally have 1/-1 to navigate thru the months.
      */
      var ret_arr = new Array();
      
      if (incr == -1) {
            // B A C K W A R D
            if (p_Month == 0) {
                  ret_arr[0] = 11;
                  ret_arr[1] = parseInt(p_Year) - 1;
            }
            else {
                  ret_arr[0] = parseInt(p_Month) - 1;
                  ret_arr[1] = parseInt(p_Year);
            }
      } else if (incr == 1) {
            // F O R W A R D
            if (p_Month == 11) {
                  ret_arr[0] = 0;
                  ret_arr[1] = parseInt(p_Year) + 1;
            }
            else {
                  ret_arr[0] = parseInt(p_Month) + 1;
                  ret_arr[1] = parseInt(p_Year);
            }
      }
      
      return ret_arr;
}

function Calendar_calc_month_year(p_Month, p_Year, incr) {
      /*
      Will return an 1-D array with 1st element being the calculated month
      and second being the calculated year
      after applying the month increment/decrement as specified by 'incr' parameter.
      'incr' will normally have 1/-1 to navigate thru the months.
      */
      var ret_arr = new Array();
      
      if (incr == -1) {
            // B A C K W A R D
            if (p_Month == 0) {
                  ret_arr[0] = 11;
                  ret_arr[1] = parseInt(p_Year) - 1;
            }
            else {
                  ret_arr[0] = parseInt(p_Month) - 1;
                  ret_arr[1] = parseInt(p_Year);
            }
      } else if (incr == 1) {
            // F O R W A R D
            if (p_Month == 11) {
                  ret_arr[0] = 0;
                  ret_arr[1] = parseInt(p_Year) + 1;
            }
            else {
                  ret_arr[0] = parseInt(p_Month) + 1;
                  ret_arr[1] = parseInt(p_Year);
            }
      }
      
      return ret_arr;
}

// This is for compatibility with Navigator 3, we have to create and discard one object before the prototype object exists.
new Calendar();

Calendar.prototype.getMonthlyCalendarCode = function() {
      var vCode = "";
      var vHeader_Code = "";
      var vData_Code = "";
      
      // Begin Table Drawing code here..
      vCode += ("<div align=center><TABLE BORDER=1 BGCOLOR=\"" + this.gBGColor + "\" style='font-size:" + fontsize + "pt;'>");
      
      vHeader_Code = this.cal_header();
      vData_Code = this.cal_data();
      vCode += (vHeader_Code + vData_Code);
      
      vCode += "</TABLE></div>";
      
      return vCode;
}

Calendar.prototype.show = function() {
      var vCode = "";

      // build content into global var ggWinContent
      ggWinContent += ("<FONT FACE='" + fontface + "' ><B>");
      ggWinContent += (this.gMonthName + " " + this.gYear);
      ggWinContent += "</B><BR>";
      
      // Show navigation buttons
      var prevMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, -1);
      var prevMM = prevMMYYYY[0];
      var prevYYYY = prevMMYYYY[1];

      var nextMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, 1);
      var nextMM = nextMMYYYY[0];
      var nextYYYY = nextMMYYYY[1];
      
      ggWinContent += ("<TABLE WIDTH='100%' BORDER=1 CELLSPACING=0 CELLPADDING=0 BGCOLOR='#e0e0e0' style='font-size:" + fontsize + "pt;'><TR><TD ALIGN=center>");
      ggWinContent += ("[<A HREF=\"javascript:void(0);\" " +
            "onMouseOver=\"window.status='Go back one year'; return true;\" " +
            "onMouseOut=\"window.status=''; return true;\" " +
            "onClick=\"Build(" +
            "'" + this.gReturnItem + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)-1) + "', '" + this.gFormat + "'" +
            ");" +
            "\">- Year<\/A>]</TD><TD ALIGN=center>");
      ggWinContent += ("[<A HREF=\"javascript:void(0);\" " +
            "onMouseOver=\"window.status='Go back one month'; return true;\" " +
            "onMouseOut=\"window.status=''; return true;\" " +
            "onClick=\"Build(" +
            "'" + this.gReturnItem + "', '" + prevMM + "', '" + prevYYYY + "', '" + this.gFormat + "'" +
            ");" +
            "\">- Month <\/A>]</TD><TD ALIGN=center>");
      ggWinContent += "       </TD><TD ALIGN=center>";
      ggWinContent += ("[<A HREF=\"javascript:void(0);\" " +
            "onMouseOver=\"window.status='Go forward one month'; return true;\" " +
            "onMouseOut=\"window.status=''; return true;\" " +
            "onClick=\"Build(" +
            "'" + this.gReturnItem + "', '" + nextMM + "', '" + nextYYYY + "', '" + this.gFormat + "'" +
            ");" +
            "\">+ Month<\/A>]</TD><TD ALIGN=center>");
      ggWinContent += ("[<A HREF=\"javascript:void(0);\" " +
            "onMouseOver=\"window.status='Go forward one year'; return true;\" " +
            "onMouseOut=\"window.status=''; return true;\" " +
            "onClick=\"Build(" +
            "'" + this.gReturnItem + "', '" + this.gMonth + "', '" + (parseInt(this.gYear)+1) + "', '" + this.gFormat + "'" +
            ");" +
            "\">+ Year<\/A>]</TD></TR></TABLE><BR>");

      // Get the complete calendar code for the month, and add it to the
      //      content var
      vCode = this.getMonthlyCalendarCode();
      ggWinContent += vCode;
}

Calendar.prototype.showY = function() {

      var vCode = "";
      var i;

      ggWinContent += "<FONT FACE='" + fontface + "' ><B>"
      ggWinContent += ("Year : " + this.gYear);
      ggWinContent += "</B><BR>";

      // Show navigation buttons
      var prevYYYY = parseInt(this.gYear) - 1;
      var nextYYYY = parseInt(this.gYear) + 1;
      
      ggWinContent += ("<TABLE WIDTH='100%' BORDER=1 CELLSPACING=0 CELLPADDING=0 BGCOLOR='#e0e0e0' style='font-size:" + fontsize + "pt;'><TR><TD ALIGN=center>");
      ggWinContent += ("[<A HREF=\"javascript:void(0);\" " +
            "onMouseOver=\"window.status='Go back one year'; return true;\" " +
            "onMouseOut=\"window.status=''; return true;\" " +
            "onClick=\"Build(" +
            "'" + this.gReturnItem + "', null, '" + prevYYYY + "', '" + this.gFormat + "'" +
            ");" +
            "\"><<Year<\/A>]</TD><TD ALIGN=center>");
      ggWinContent += "       </TD><TD ALIGN=center>";
      ggWinContent += ("[<A HREF=\"javascript:void(0);\" " +
            "onMouseOver=\"window.status='Go forward one year'; return true;\" " +
            "onMouseOut=\"window.status=''; return true;\" " +
            "onClick=\"Build(" +
            "'" + this.gReturnItem + "', null, '" + nextYYYY + "', '" + this.gFormat + "'" +
            ");" +
            "\">Year>><\/A>]</TD></TR></TABLE><BR>");

      // Get the complete calendar code for each month.
      // start a table and first row in the table
      ggWinContent += ("<TABLE WIDTH='100%' BORDER=0 CELLSPACING=0 CELLPADDING=5 style='font-size:" + fontsize + "pt;'><TR>");
      var j;
      for (i=0; i<12; i++) {
            // start the table cell
            ggWinContent += "<TD ALIGN='center' VALIGN='top'>";
            this.gMonth = i;
            this.gMonthName = Calendar.get_month(this.gMonth);
            vCode = this.getMonthlyCalendarCode();
            ggWinContent += (this.gMonthName + "/" + this.gYear + "<BR>");
            ggWinContent += vCode;
            ggWinContent += "</TD>";
            if (i == 3 || i == 7) {
                  ggWinContent += "</TR><TR>";
                  }

      }

      ggWinContent += "</TR></TABLE></font><BR>";
}

Calendar.prototype.cal_header = function() {
      var vCode = "";
      
      vCode = vCode + "<TR>";
      vCode = vCode + "<TD WIDTH='14%'><FONT FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Sun</B></FONT></TD>";
      vCode = vCode + "<TD WIDTH='14%'><FONT FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Mon</B></FONT></TD>";
      vCode = vCode + "<TD WIDTH='14%'><FONT FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Tue</B></FONT></TD>";
      vCode = vCode + "<TD WIDTH='14%'><FONT FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Wed</B></FONT></TD>";
      vCode = vCode + "<TD WIDTH='14%'><FONT FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Thu</B></FONT></TD>";
      vCode = vCode + "<TD WIDTH='14%'><FONT FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Fri</B></FONT></TD>";
      vCode = vCode + "<TD WIDTH='16%'><FONT FACE='" + fontface + "' COLOR='" + this.gHeaderColor + "'><B>Sat</B></FONT></TD>";
      vCode = vCode + "</TR>";
      
      return vCode;
}

Calendar.prototype.cal_data = function() {
      var vDate = new Date();
      vDate.setDate(1);
      vDate.setMonth(this.gMonth);
      vDate.setFullYear(this.gYear);

      var vFirstDay=vDate.getDay();
      var vDay=1;
      var vLastDay=Calendar.get_daysofmonth(this.gMonth, this.gYear);
      var vOnLastDay=0;
      var vCode = "";

      /*
      Get day for the 1st of the requested month/year..
      Place as many blank cells before the 1st day of the month as necessary.
      */
      vCode = vCode + "<TR>";
      for (i=0; i<vFirstDay; i++) {
            vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(i) + "><FONT FACE='" + fontface + "'> </FONT></TD>";
      }

      // Write rest of the 1st week
      for (j=vFirstDay; j<7; j++) {
            vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + "><FONT FACE='" + fontface + "'>" +
                  "<A HREF='javascript:void(0);' " +
                        "onMouseOver=\"window.status='set date to " + this.format_data(vDay) + "'; return true;\" " +
                        "onMouseOut=\"window.status=' '; return true;\" " +
                        "onClick=\"document." + this.gReturnItem + ".value='" +
                        this.format_data(vDay) +
                        "';ggPosX=-1;ggPosY=-1;nd();nd();\">" +
                        this.format_day(vDay) +
                  "</A>" +
                  "</FONT></TD>";
            vDay=vDay + 1;
      }
      vCode = vCode + "</TR>";

      // Write the rest of the weeks
      for (k=2; k<7; k++) {
            vCode = vCode + "<TR>";

            for (j=0; j<7; j++) {
                  vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j) + "><FONT FACE='" + fontface + "'>" +
                        "<A HREF='javascript:void(0);' " +
                              "onMouseOver=\"window.status='set date to " + this.format_data(vDay) + "'; return true;\" " +
                              "onMouseOut=\"window.status=' '; return true;\" " +
                              "onClick=\"document." + this.gReturnItem + ".value='" +
                              this.format_data(vDay) +
                              "';window.scroll(0,ggPosY);ggPosX=-1;ggPosY=-1;nd();nd();\">" +
                        this.format_day(vDay) +
                        "</A>" +
                        "</FONT></TD>";
                  vDay=vDay + 1;

                  if (vDay > vLastDay) {
                        vOnLastDay = 1;
                        break;
                  }
            }

            if (j == 6)
                  vCode = vCode + "</TR>";
            if (vOnLastDay == 1)
                  break;
      }
      
      // Fill up the rest of last week with proper blanks, so that we get proper square blocks
      for (m=1; m<(7-j); m++) {
            if (this.gYearly)
                  vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j+m) +
                  "><FONT FACE='" + fontface + "' COLOR='gray'> </FONT></TD>";
            else
                  vCode = vCode + "<TD WIDTH='14%'" + this.write_weekend_string(j+m) +
                  "><FONT FACE='" + fontface + "' COLOR='gray'>" + m + "</FONT></TD>";
      }
      
      return vCode;
}

Calendar.prototype.format_day = function(vday) {
      var vNowDay = gNow.getDate();
      var vNowMonth = gNow.getMonth();
      var vNowYear = gNow.getFullYear();

      if (vday == vNowDay && this.gMonth == vNowMonth && this.gYear == vNowYear)
            return ("<FONT COLOR=\"RED\"><B>" + vday + "</B></FONT>");
      else
            return (vday);
}

Calendar.prototype.write_weekend_string = function(vday) {
      var i;

      // Return special formatting for the weekend day.
      for (i=0; i<weekend.length; i++) {
            if (vday == weekend[i])
                  return (" BGCOLOR=\"" + weekendColor + "\"");
      }
      
      return "";
}

Calendar.prototype.format_data = function(p_day) {
      var vData;
      var vMonth = 1 + this.gMonth;
      vMonth = (vMonth.toString().length < 2) ? "0" + vMonth : vMonth;
      var vMon = Calendar.get_month(this.gMonth).substr(0,3).toUpperCase();
      var vFMon = Calendar.get_month(this.gMonth).toUpperCase();
      var vY4 = new String(this.gYear);
      var vY2 = new String(this.gYear.substr(2,2));
      var vDD = (p_day.toString().length < 2) ? "0" + p_day : p_day;

      switch (this.gFormat) {
            case "MM\/DD\/YYYY" :
                  vData = vMonth + "\/" + vDD + "\/" + vY4;
                  break;
            case "MM\/DD\/YY" :
                  vData = vMonth + "\/" + vDD + "\/" + vY2;
                  break;
            case "MM-DD-YYYY" :
                  vData = vMonth + "-" + vDD + "-" + vY4;
                  break;
            case "YYYY-MM-DD" :
                  vData = vY4 + "-" + vMonth + "-" + vDD;
                  break;
            case "MM-DD-YY" :
                  vData = vMonth + "-" + vDD + "-" + vY2;
                  break;
            case "DD\/MON\/YYYY" :
                  vData = vDD + "\/" + vMon + "\/" + vY4;
                  break;
            case "DD\/MON\/YY" :
                  vData = vDD + "\/" + vMon + "\/" + vY2;
                  break;
            case "DD-MON-YYYY" :
                  vData = vDD + "-" + vMon + "-" + vY4;
                  break;
            case "DD-MON-YY" :
                  vData = vDD + "-" + vMon + "-" + vY2;
                  break;
            case "DD\/MONTH\/YYYY" :
                  vData = vDD + "\/" + vFMon + "\/" + vY4;
                  break;
            case "DD\/MONTH\/YY" :
                  vData = vDD + "\/" + vFMon + "\/" + vY2;
                  break;
            case "DD-MONTH-YYYY" :
                  vData = vDD + "-" + vFMon + "-" + vY4;
                  break;
            case "DD-MONTH-YY" :
                  vData = vDD + "-" + vFMon + "-" + vY2;
                  break;
            case "DD\/MM\/YYYY" :
                  vData = vDD + "\/" + vMonth + "\/" + vY4;
                  break;
            case "DD\/MM\/YY" :
                  vData = vDD + "\/" + vMonth + "\/" + vY2;
                  break;
            case "DD-MM-YYYY" :
                  vData = vDD + "-" + vMonth + "-" + vY4;
                  break;
            case "DD-MM-YY" :
                  vData = vDD + "-" + vMonth + "-" + vY2;
                  break;
            default :
                  vData = vMonth + "\/" + vDD + "\/" + vY4;
      }

      return vData;
}

function Build(p_item, p_month, p_year, p_format) {
      gCal = new Calendar(p_item, p_month, p_year, p_format);

      // Customize your Calendar here..
      gCal.gBGColor="white";
      gCal.gLinkColor="black";
      gCal.gTextColor="black";
      gCal.gHeaderColor="darkgreen";

      // initialize the content string
      ggWinContent = "";

      // Choose appropriate show function
      if (gCal.gYearly) {
            // and, since the yearly calendar is so large, override the positioning and fontsize
            // warning: in IE6, it appears that "select" fields on the form will still show
            //      through the "over" div; Note: you can set these variables as part of the onClick
            //      javascript code before you call the show_yearly_calendar function
            if (ggPosX == -1) ggPosX = 10;
            if (ggPosY == -1) ggPosY = 10;
            if (fontsize == 8) fontsize = 6;
            // generate the calendar
            gCal.showY();
            }
      else {
            gCal.show();
            }

      // if this is the first calendar popup, use autopositioning with an offset
      if (ggPosX == -1 && ggPosY == -1) {
            overlib(ggWinContent, AUTOSTATUSCAP, STICKY, CLOSECLICK, CSSSTYLE,
                  TEXTSIZEUNIT, "pt", TEXTSIZE, 8, CAPTIONSIZEUNIT, "pt", CAPTIONSIZE, 8, CLOSESIZEUNIT, "pt", CLOSESIZE, 8,
                  CAPTION, "Select a date", OFFSETX, 20, OFFSETY, -20);
            // save where the 'over' div ended up; we want to stay in the same place if the user
            //      clicks on one of the year or month navigation links
            if ( (ns4) || (ie4) ) {
                    ggPosX = parseInt(over.left);
                    ggPosY = parseInt(over.top);
                  } else if (ns6) {
                  ggPosX = parseInt(over.style.left);
                  ggPosY = parseInt(over.style.top);
                  }
            }
      else {
            // we have a saved X & Y position, so use those with the FIXX and FIXY options
            overlib(ggWinContent, AUTOSTATUSCAP, STICKY, CLOSECLICK, CSSSTYLE,
                  TEXTSIZEUNIT, "pt", TEXTSIZE, 8, CAPTIONSIZEUNIT, "pt", CAPTIONSIZE, 8, CLOSESIZEUNIT, "pt", CLOSESIZE, 8,
                  CAPTION, "Select a date", FIXX, ggPosX, FIXY, ggPosY);
            }
      window.scroll(ggPosX, ggPosY);
}

function show_calendar() {
      /*
            p_month : 0-11 for Jan-Dec; 12 for All Months.
            p_year      : 4-digit year
            p_format: Date format (mm/dd/yyyy, dd/mm/yy, ...)
            p_item      : Return Item.
      */

      p_item = arguments[0];
      if (arguments[1] == null)
            p_month = new String(gNow.getMonth());
      else
            p_month = arguments[1];
      if (arguments[2] == "" || arguments[2] == null)
            p_year = new String(gNow.getFullYear().toString());
      else
            p_year = arguments[2];
      if (arguments[3] == null)
            p_format = "DD-MM-YYYY";
      else
            p_format = arguments[3];

      Build(p_item, p_month, p_year, p_format);
}
/*
Yearly Calendar Code Starts here
*/
function show_yearly_calendar() {
      // Load the defaults..
      //if (p_year == null || p_year == "")
      //      p_year = new String(gNow.getFullYear().toString());
      //if (p_format == null || p_format == "")
      //      p_format = "DD-MM-YYYY";

      p_item = arguments[0];
      if (arguments[1] == "" || arguments[1] == null)
            p_year = new String(gNow.getFullYear().toString());
      else
            p_year = arguments[1];
      if (arguments[2] == null)
            p_format = "DD-MM-YYYY";
      else
            p_format = arguments[2];

      Build(p_item, null, p_year, p_format);
}
</script>
<script language="JavaScript" src="file:///C|/Documents%20and%20Settings/Shane/Desktop/overlib_mini.js"></script>

0
Comment
Question by:acslater
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 9
  • 5
14 Comments
 
LVL 25

Expert Comment

by:archrajan
ID: 13689994
we need to see the html too..
can you post what u have in ur view source in the browser
0
 
LVL 25

Expert Comment

by:archrajan
ID: 13690006
atleast let us know how do u iniitiate to show the calendar
0
 

Author Comment

by:acslater
ID: 13690204
The following is part of the html. hope you can help me because i dont think i will be able to figure it out

form name="OrderForm" method="post"  action="Displaycar.php">
                  <p>
                    <input name="username" type="hidden" id="username" disabled = "disabled" value="<? print $_SESSION['username']?>">
</p>
                  <p>
                    <select name="pickup">
                      <option selected>Pick Up Location</option>
                      <option value="Belfast Airport">Belfast Airport</option>
                      <option value="Belfast City">Belfast City</option>
                     
                              
                    </p>
              <p>
                      <select name="dropoff">
                        <option selected>Drop Off Location</option>
                      <option value="Belfast Airport">Belfast Airport</option>
                      <option value="Belfast City">Belfast City</option>
                     
                      </select>
                  </p>
                    <p>
                      <select name="transmission" id="transmission">
                        <option selected>Transmission Type</option>
                        <option value = "">Not a Preference</option>
                        <option value="Automatic">Automatic</option>
                        <option value="Manual">Manual</option>
                      </select>
                    </p>
                    <p>
        <div id="overDiv" style="position:absolute; visibility:hidden; z-index:1000;"></div>
        <input name="Pick_Up_Date" type="text" size="20" maxlength="10" id="Pick_Up_Date">
        <!-- ggPosX and ggPosY not set, so popup will autolocate to the right of the graphic -->
        <a href="javascript:show_calendar('OrderForm.Pick_Up_Date');" onMouseOver="window.status='Date Picker'; overlib('Click here to choose a collection date from the pop-up calendar.'); return true;" onMouseOut="window.status=''; nd(); return true;"><img src="images2/calendar.gif" width=15 height=17 border=0></a>
        <p>
          <input name="Drop_Off_Date" type="text" size="20" maxlength="10" id="Drop_Off_Date">
          <!-- ggPosX and ggPosY are set, so popup goes where you tell it -->
          <a href="javascript:show_calendar('OrderForm.Drop_Off_Date');" onMouseOver="window.status='Date Picker'; overlib('Click here to choose a Drop off date from the pop-up calendar.'); return true;" onMouseOut="window.status=''; nd(); return true;"><img src="images2/calendar.gif" width=15 height=17 border=0></a>
        </p>
                    <p>
                      <input name="Submit2" type="submit" id="Submit2" value="Check Availability">
0
Get real performance insights from real users

Key features:
- Total Pages Views and Load times
- Top Pages Viewed and Load Times
- Real Time Site Page Build Performance
- Users’ Browser and Platform Performance
- Geographic User Breakdown
- And more

 
LVL 25

Expert Comment

by:archrajan
ID: 13690241
i can help u with all i have but where is this overlib function...
can u give me a link to this calendar???
0
 

Author Comment

by:acslater
ID: 13690359
yes the link to where i got the calendar is as follows: http://javascript.internet.com/calendars/date-picker.html

it gives the code and html code. i changed it round to my format and form but everything is the same. the overlib function is on the site to where you can download it.

maybe you know of another popup calendar that works but doesnt allow users to select previous days of todays date, i wold try implement that but it would need to be in the format of 11-04-2005 days/months/year.

But if you think you could help me with this it would be great. either option would work.
0
 
LVL 25

Expert Comment

by:archrajan
ID: 13690403
There are more nice options available for you
http://www.softcomplex.com/products/tigra_calendar/demo1.html ->here you can specify the date range...

and a lot of options here
http://www.mattkruse.com/javascript/calendarpopup/
0
 
LVL 25

Expert Comment

by:archrajan
ID: 13690410
actually the ones here
http://www.mattkruse.com/javascript/calendarpopup/ are simple and nice..
and we can customize it easily i guess
0
 
LVL 25

Expert Comment

by:archrajan
ID: 13690413
What i wud suggest is.. choose something from the above and let me know..
and we can probably customize it so that
the dates beyond the current date will give them an alert and ask them to select again
0
 

Author Comment

by:acslater
ID: 13691526
i chose a calendar from http://www.mattkruse.com/javascript/calendarpopup/ link. it is the fifth 1 down, where dates are disabled up to the current date. dats exactly what i want. i just want to disable the dates in the past not ones in the future. I have downloaded the following  CalendarPopup.js   AnchorPosition.js   date.js   PopupWindow.js
But i am not sure where to put all these? also where do i put the following small bit of code: var now = new Date();
var cal17 = new CalendarPopup("testdiv1");
cal17.addDisabledDates(null,formatDate(now,"yyyy-MM-dd"));
cal17.addDisabledDates("12/25/2007");
cal17.addDisabledDates("Jan 1, 2008",null);

0
 
LVL 25

Expert Comment

by:archrajan
ID: 13691914
aww here for the soirce and usage
even i will give an example for u
0
 

Author Comment

by:acslater
ID: 13691985
i did not understand your last post
0
 
LVL 25

Expert Comment

by:archrajan
ID: 13692102
sorry dude
here is the link to the calendar source
http://www.mattkruse.com/javascript/calendarpopup/source.html
i will also give u an example
0
 
LVL 25

Accepted Solution

by:
archrajan earned 2000 total points
ID: 13692134
SEE EXAMPLE


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<STYLE>
      .TESTcpYearNavigation,
      .TESTcpMonthNavigation
                  {
                  background-color:#6677DD;
                  text-align:center;
                  vertical-align:center;
                  text-decoration:none;
                  color:#FFFFFF;
                  font-weight:bold;
                  }
      .TESTcpDayColumnHeader,
      .TESTcpYearNavigation,
      .TESTcpMonthNavigation,
      .TESTcpCurrentMonthDate,
      .TESTcpCurrentMonthDateDisabled,
      .TESTcpOtherMonthDate,
      .TESTcpOtherMonthDateDisabled,
      .TESTcpCurrentDate,
      .TESTcpCurrentDateDisabled,
      .TESTcpTodayText,
      .TESTcpTodayTextDisabled,
      .TESTcpText
                  {
                  font-family:arial;
                  font-size:8pt;
                  }
      TD.TESTcpDayColumnHeader
                  {
                  text-align:right;
                  border:solid thin #6677DD;
                  border-width:0 0 1 0;
                  }
      .TESTcpCurrentMonthDate,
      .TESTcpOtherMonthDate,
      .TESTcpCurrentDate
                  {
                  text-align:right;
                  text-decoration:none;
                  }
      .TESTcpCurrentMonthDateDisabled,
      .TESTcpOtherMonthDateDisabled,
      .TESTcpCurrentDateDisabled
                  {
                  color:#D0D0D0;
                  text-align:right;
                  text-decoration:line-through;
                  }
      .TESTcpCurrentMonthDate
                  {
                  color:#6677DD;
                  font-weight:bold;
                  }
      .TESTcpCurrentDate
                  {
                  color: #FFFFFF;
                  font-weight:bold;
                  }
      .TESTcpOtherMonthDate
                  {
                  color:#808080;
                  }
      TD.TESTcpCurrentDate
                  {
                  color:#FFFFFF;
                  background-color: #6677DD;
                  border-width:1;
                  border:solid thin #000000;
                  }
      TD.TESTcpCurrentDateDisabled
                  {
                  border-width:1;
                  border:solid thin #FFAAAA;
                  }
      TD.TESTcpTodayText,
      TD.TESTcpTodayTextDisabled
                  {
                  border:solid thin #6677DD;
                  border-width:1 0 0 0;
                  }
      A.TESTcpTodayText,
      SPAN.TESTcpTodayTextDisabled
                  {
                  height:20px;
                  }
      A.TESTcpTodayText
                  {
                  color:#6677DD;
                  font-weight:bold;
                  }
      SPAN.TESTcpTodayTextDisabled
                  {
                  color:#D0D0D0;
                  }
      .TESTcpBorder
                  {
                  border:solid thin #6677DD;
                  }
</STYLE>
</HEAD>

<BODY>
<script>
// ===================================================================
// Author: Matt Kruse <matt@mattkruse.com>
// WWW: http://www.mattkruse.com/
//
// NOTICE: You may use this code for any purpose, commercial or
// private, without any further permission from the author. You may
// remove this notice from your final code if you wish, however it is
// appreciated by the author if at least my web site address is kept.
//
// You may *NOT* re-distribute this code in any way except through its
// use. That means, you can include it in your product, or your web
// site, or any other form where the code is actually being used. You
// may not put the plain javascript up on your site for download or
// include it in your javascript libraries for download.
// If you wish to share this code with others, please just point them
// to the URL instead.
// Please DO NOT link directly to my .js files from your site. Copy
// the files to your server and use them there. Thank you.
// ===================================================================

/* SOURCE FILE: AnchorPosition.js */
function getAnchorPosition(anchorname){var useWindow=false;var coordinates=new Object();var x=0,y=0;var use_gebi=false, use_css=false, use_layers=false;if(document.getElementById){use_gebi=true;}else if(document.all){use_css=true;}else if(document.layers){use_layers=true;}if(use_gebi && document.all){x=AnchorPosition_getPageOffsetLeft(document.all[anchorname]);y=AnchorPosition_getPageOffsetTop(document.all[anchorname]);}else if(use_gebi){var o=document.getElementById(anchorname);x=AnchorPosition_getPageOffsetLeft(o);y=AnchorPosition_getPageOffsetTop(o);}else if(use_css){x=AnchorPosition_getPageOffsetLeft(document.all[anchorname]);y=AnchorPosition_getPageOffsetTop(document.all[anchorname]);}else if(use_layers){var found=0;for(var i=0;i<document.anchors.length;i++){if(document.anchors[i].name==anchorname){found=1;break;}}if(found==0){coordinates.x=0;coordinates.y=0;return coordinates;}x=document.anchors[i].x;y=document.anchors[i].y;}else{coordinates.x=0;coordinates.y=0;return coordinates;}coordinates.x=x;coordinates.y=y;return coordinates;}
function getAnchorWindowPosition(anchorname){var coordinates=getAnchorPosition(anchorname);var x=0;var y=0;if(document.getElementById){if(isNaN(window.screenX)){x=coordinates.x-document.body.scrollLeft+window.screenLeft;y=coordinates.y-document.body.scrollTop+window.screenTop;}else{x=coordinates.x+window.screenX+(window.outerWidth-window.innerWidth)-window.pageXOffset;y=coordinates.y+window.screenY+(window.outerHeight-24-window.innerHeight)-window.pageYOffset;}}else if(document.all){x=coordinates.x-document.body.scrollLeft+window.screenLeft;y=coordinates.y-document.body.scrollTop+window.screenTop;}else if(document.layers){x=coordinates.x+window.screenX+(window.outerWidth-window.innerWidth)-window.pageXOffset;y=coordinates.y+window.screenY+(window.outerHeight-24-window.innerHeight)-window.pageYOffset;}coordinates.x=x;coordinates.y=y;return coordinates;}
function AnchorPosition_getPageOffsetLeft(el){var ol=el.offsetLeft;while((el=el.offsetParent) != null){ol += el.offsetLeft;}return ol;}
function AnchorPosition_getWindowOffsetLeft(el){return AnchorPosition_getPageOffsetLeft(el)-document.body.scrollLeft;}
function AnchorPosition_getPageOffsetTop(el){var ot=el.offsetTop;while((el=el.offsetParent) != null){ot += el.offsetTop;}return ot;}
function AnchorPosition_getWindowOffsetTop(el){return AnchorPosition_getPageOffsetTop(el)-document.body.scrollTop;}

/* SOURCE FILE: date.js */
var MONTH_NAMES=new Array('January','February','March','April','May','June','July','August','September','October','November','December','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');var DAY_NAMES=new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sun','Mon','Tue','Wed','Thu','Fri','Sat');
function LZ(x){return(x<0||x>9?"":"0")+x}
function isDate(val,format){var date=getDateFromFormat(val,format);if(date==0){return false;}return true;}
function compareDates(date1,dateformat1,date2,dateformat2){var d1=getDateFromFormat(date1,dateformat1);var d2=getDateFromFormat(date2,dateformat2);if(d1==0 || d2==0){return -1;}else if(d1 > d2){return 1;}return 0;}
function formatDate(date,format){format=format+"";var result="";var i_format=0;var c="";var token="";var y=date.getYear()+"";var M=date.getMonth()+1;var d=date.getDate();var E=date.getDay();var H=date.getHours();var m=date.getMinutes();var s=date.getSeconds();var yyyy,yy,MMM,MM,dd,hh,h,mm,ss,ampm,HH,H,KK,K,kk,k;var value=new Object();if(y.length < 4){y=""+(y-0+1900);}value["y"]=""+y;value["yyyy"]=y;value["yy"]=y.substring(2,4);value["M"]=M;value["MM"]=LZ(M);value["MMM"]=MONTH_NAMES[M-1];value["NNN"]=MONTH_NAMES[M+11];value["d"]=d;value["dd"]=LZ(d);value["E"]=DAY_NAMES[E+7];value["EE"]=DAY_NAMES[E];value["H"]=H;value["HH"]=LZ(H);if(H==0){value["h"]=12;}else if(H>12){value["h"]=H-12;}else{value["h"]=H;}value["hh"]=LZ(value["h"]);if(H>11){value["K"]=H-12;}else{value["K"]=H;}value["k"]=H+1;value["KK"]=LZ(value["K"]);value["kk"]=LZ(value["k"]);if(H > 11){value["a"]="PM";}else{value["a"]="AM";}value["m"]=m;value["mm"]=LZ(m);value["s"]=s;value["ss"]=LZ(s);while(i_format < format.length){c=format.charAt(i_format);token="";while((format.charAt(i_format)==c) &&(i_format < format.length)){token += format.charAt(i_format++);}if(value[token] != null){result=result + value[token];}else{result=result + token;}}return result;}
function _isInteger(val){var digits="1234567890";for(var i=0;i < val.length;i++){if(digits.indexOf(val.charAt(i))==-1){return false;}}return true;}
function _getInt(str,i,minlength,maxlength){for(var x=maxlength;x>=minlength;x--){var token=str.substring(i,i+x);if(token.length < minlength){return null;}if(_isInteger(token)){return token;}}return null;}
function getDateFromFormat(val,format){val=val+"";format=format+"";var i_val=0;var i_format=0;var c="";var token="";var token2="";var x,y;var now=new Date();var year=now.getYear();var month=now.getMonth()+1;var date=1;var hh=now.getHours();var mm=now.getMinutes();var ss=now.getSeconds();var ampm="";while(i_format < format.length){c=format.charAt(i_format);token="";while((format.charAt(i_format)==c) &&(i_format < format.length)){token += format.charAt(i_format++);}if(token=="yyyy" || token=="yy" || token=="y"){if(token=="yyyy"){x=4;y=4;}if(token=="yy"){x=2;y=2;}if(token=="y"){x=2;y=4;}year=_getInt(val,i_val,x,y);if(year==null){return 0;}i_val += year.length;if(year.length==2){if(year > 70){year=1900+(year-0);}else{year=2000+(year-0);}}}else if(token=="MMM"||token=="NNN"){month=0;for(var i=0;i<MONTH_NAMES.length;i++){var month_name=MONTH_NAMES[i];if(val.substring(i_val,i_val+month_name.length).toLowerCase()==month_name.toLowerCase()){if(token=="MMM"||(token=="NNN"&&i>11)){month=i+1;if(month>12){month -= 12;}i_val += month_name.length;break;}}}if((month < 1)||(month>12)){return 0;}}else if(token=="EE"||token=="E"){for(var i=0;i<DAY_NAMES.length;i++){var day_name=DAY_NAMES[i];if(val.substring(i_val,i_val+day_name.length).toLowerCase()==day_name.toLowerCase()){i_val += day_name.length;break;}}}else if(token=="MM"||token=="M"){month=_getInt(val,i_val,token.length,2);if(month==null||(month<1)||(month>12)){return 0;}i_val+=month.length;}else if(token=="dd"||token=="d"){date=_getInt(val,i_val,token.length,2);if(date==null||(date<1)||(date>31)){return 0;}i_val+=date.length;}else if(token=="hh"||token=="h"){hh=_getInt(val,i_val,token.length,2);if(hh==null||(hh<1)||(hh>12)){return 0;}i_val+=hh.length;}else if(token=="HH"||token=="H"){hh=_getInt(val,i_val,token.length,2);if(hh==null||(hh<0)||(hh>23)){return 0;}i_val+=hh.length;}else if(token=="KK"||token=="K"){hh=_getInt(val,i_val,token.length,2);if(hh==null||(hh<0)||(hh>11)){return 0;}i_val+=hh.length;}else if(token=="kk"||token=="k"){hh=_getInt(val,i_val,token.length,2);if(hh==null||(hh<1)||(hh>24)){return 0;}i_val+=hh.length;hh--;}else if(token=="mm"||token=="m"){mm=_getInt(val,i_val,token.length,2);if(mm==null||(mm<0)||(mm>59)){return 0;}i_val+=mm.length;}else if(token=="ss"||token=="s"){ss=_getInt(val,i_val,token.length,2);if(ss==null||(ss<0)||(ss>59)){return 0;}i_val+=ss.length;}else if(token=="a"){if(val.substring(i_val,i_val+2).toLowerCase()=="am"){ampm="AM";}else if(val.substring(i_val,i_val+2).toLowerCase()=="pm"){ampm="PM";}else{return 0;}i_val+=2;}else{if(val.substring(i_val,i_val+token.length)!=token){return 0;}else{i_val+=token.length;}}}if(i_val != val.length){return 0;}if(month==2){if( ((year%4==0)&&(year%100 != 0) ) ||(year%400==0) ){if(date > 29){return 0;}}else{if(date > 28){return 0;}}}if((month==4)||(month==6)||(month==9)||(month==11)){if(date > 30){return 0;}}if(hh<12 && ampm=="PM"){hh=hh-0+12;}else if(hh>11 && ampm=="AM"){hh-=12;}var newdate=new Date(year,month-1,date,hh,mm,ss);return newdate.getTime();}
function parseDate(val){var preferEuro=(arguments.length==2)?arguments[1]:false;generalFormats=new Array('y-M-d','MMM d, y','MMM d,y','y-MMM-d','d-MMM-y','MMM d');monthFirst=new Array('M/d/y','M-d-y','M.d.y','MMM-d','M/d','M-d');dateFirst =new Array('d/M/y','d-M-y','d.M.y','d-MMM','d/M','d-M');var checkList=new Array('generalFormats',preferEuro?'dateFirst':'monthFirst',preferEuro?'monthFirst':'dateFirst');var d=null;for(var i=0;i<checkList.length;i++){var l=window[checkList[i]];for(var j=0;j<l.length;j++){d=getDateFromFormat(val,l[j]);if(d!=0){return new Date(d);}}}return null;}

/* SOURCE FILE: PopupWindow.js */
function PopupWindow_getXYPosition(anchorname){var coordinates;if(this.type == "WINDOW"){coordinates = getAnchorWindowPosition(anchorname);}else{coordinates = getAnchorPosition(anchorname);}this.x = coordinates.x;this.y = coordinates.y;}
function PopupWindow_setSize(width,height){this.width = width;this.height = height;}
function PopupWindow_populate(contents){this.contents = contents;this.populated = false;}
function PopupWindow_setUrl(url){this.url = url;}
function PopupWindow_setWindowProperties(props){this.windowProperties = props;}
function PopupWindow_refresh(){if(this.divName != null){if(this.use_gebi){document.getElementById(this.divName).innerHTML = this.contents;}else if(this.use_css){document.all[this.divName].innerHTML = this.contents;}else if(this.use_layers){var d = document.layers[this.divName];d.document.open();d.document.writeln(this.contents);d.document.close();}}else{if(this.popupWindow != null && !this.popupWindow.closed){if(this.url!=""){this.popupWindow.location.href=this.url;}else{this.popupWindow.document.open();this.popupWindow.document.writeln(this.contents);this.popupWindow.document.close();}this.popupWindow.focus();}}}
function PopupWindow_showPopup(anchorname){this.getXYPosition(anchorname);this.x += this.offsetX;this.y += this.offsetY;if(!this.populated &&(this.contents != "")){this.populated = true;this.refresh();}if(this.divName != null){if(this.use_gebi){document.getElementById(this.divName).style.left = this.x + "px";document.getElementById(this.divName).style.top = this.y + "px";document.getElementById(this.divName).style.visibility = "visible";}else if(this.use_css){document.all[this.divName].style.left = this.x;document.all[this.divName].style.top = this.y;document.all[this.divName].style.visibility = "visible";}else if(this.use_layers){document.layers[this.divName].left = this.x;document.layers[this.divName].top = this.y;document.layers[this.divName].visibility = "visible";}}else{if(this.popupWindow == null || this.popupWindow.closed){if(this.x<0){this.x=0;}if(this.y<0){this.y=0;}if(screen && screen.availHeight){if((this.y + this.height) > screen.availHeight){this.y = screen.availHeight - this.height;}}if(screen && screen.availWidth){if((this.x + this.width) > screen.availWidth){this.x = screen.availWidth - this.width;}}var avoidAboutBlank = window.opera ||( document.layers && !navigator.mimeTypes['*']) || navigator.vendor == 'KDE' ||( document.childNodes && !document.all && !navigator.taintEnabled);this.popupWindow = window.open(avoidAboutBlank?"":"about:blank","window_"+anchorname,this.windowProperties+",width="+this.width+",height="+this.height+",screenX="+this.x+",left="+this.x+",screenY="+this.y+",top="+this.y+"");}this.refresh();}}
function PopupWindow_hidePopup(){if(this.divName != null){if(this.use_gebi){document.getElementById(this.divName).style.visibility = "hidden";}else if(this.use_css){document.all[this.divName].style.visibility = "hidden";}else if(this.use_layers){document.layers[this.divName].visibility = "hidden";}}else{if(this.popupWindow && !this.popupWindow.closed){this.popupWindow.close();this.popupWindow = null;}}}
function PopupWindow_isClicked(e){if(this.divName != null){if(this.use_layers){var clickX = e.pageX;var clickY = e.pageY;var t = document.layers[this.divName];if((clickX > t.left) &&(clickX < t.left+t.clip.width) &&(clickY > t.top) &&(clickY < t.top+t.clip.height)){return true;}else{return false;}}else if(document.all){var t = window.event.srcElement;while(t.parentElement != null){if(t.id==this.divName){return true;}t = t.parentElement;}return false;}else if(this.use_gebi && e){var t = e.originalTarget;while(t.parentNode != null){if(t.id==this.divName){return true;}t = t.parentNode;}return false;}return false;}return false;}
function PopupWindow_hideIfNotClicked(e){if(this.autoHideEnabled && !this.isClicked(e)){this.hidePopup();}}
function PopupWindow_autoHide(){this.autoHideEnabled = true;}
function PopupWindow_hidePopupWindows(e){for(var i=0;i<popupWindowObjects.length;i++){if(popupWindowObjects[i] != null){var p = popupWindowObjects[i];p.hideIfNotClicked(e);}}}
function PopupWindow_attachListener(){if(document.layers){document.captureEvents(Event.MOUSEUP);}window.popupWindowOldEventListener = document.onmouseup;if(window.popupWindowOldEventListener != null){document.onmouseup = new Function("window.popupWindowOldEventListener();PopupWindow_hidePopupWindows();");}else{document.onmouseup = PopupWindow_hidePopupWindows;}}
function PopupWindow(){if(!window.popupWindowIndex){window.popupWindowIndex = 0;}if(!window.popupWindowObjects){window.popupWindowObjects = new Array();}if(!window.listenerAttached){window.listenerAttached = true;PopupWindow_attachListener();}this.index = popupWindowIndex++;popupWindowObjects[this.index] = this;this.divName = null;this.popupWindow = null;this.width=0;this.height=0;this.populated = false;this.visible = false;this.autoHideEnabled = false;this.contents = "";this.url="";this.windowProperties="toolbar=no,location=no,status=no,menubar=no,scrollbars=auto,resizable,alwaysRaised,dependent,titlebar=no";if(arguments.length>0){this.type="DIV";this.divName = arguments[0];}else{this.type="WINDOW";}this.use_gebi = false;this.use_css = false;this.use_layers = false;if(document.getElementById){this.use_gebi = true;}else if(document.all){this.use_css = true;}else if(document.layers){this.use_layers = true;}else{this.type = "WINDOW";}this.offsetX = 0;this.offsetY = 0;this.getXYPosition = PopupWindow_getXYPosition;this.populate = PopupWindow_populate;this.setUrl = PopupWindow_setUrl;this.setWindowProperties = PopupWindow_setWindowProperties;this.refresh = PopupWindow_refresh;this.showPopup = PopupWindow_showPopup;this.hidePopup = PopupWindow_hidePopup;this.setSize = PopupWindow_setSize;this.isClicked = PopupWindow_isClicked;this.autoHide = PopupWindow_autoHide;this.hideIfNotClicked = PopupWindow_hideIfNotClicked;}


/* SOURCE FILE: CalendarPopup.js */

function CalendarPopup(){var c;if(arguments.length>0){c = new PopupWindow(arguments[0]);}else{c = new PopupWindow();c.setSize(150,175);}c.offsetX = -152;c.offsetY = 25;c.autoHide();c.monthNames = new Array("January","February","March","April","May","June","July","August","September","October","November","December");c.monthAbbreviations = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");c.dayHeaders = new Array("S","M","T","W","T","F","S");c.returnFunction = "CP_tmpReturnFunction";c.returnMonthFunction = "CP_tmpReturnMonthFunction";c.returnQuarterFunction = "CP_tmpReturnQuarterFunction";c.returnYearFunction = "CP_tmpReturnYearFunction";c.weekStartDay = 0;c.isShowYearNavigation = false;c.displayType = "date";c.disabledWeekDays = new Object();c.disabledDatesExpression = "";c.yearSelectStartOffset = 2;c.currentDate = null;c.todayText="Today";c.cssPrefix="";c.isShowNavigationDropdowns=false;c.isShowYearNavigationInput=false;window.CP_calendarObject = null;window.CP_targetInput = null;window.CP_dateFormat = "MM/dd/yyyy";c.copyMonthNamesToWindow = CP_copyMonthNamesToWindow;c.setReturnFunction = CP_setReturnFunction;c.setReturnMonthFunction = CP_setReturnMonthFunction;c.setReturnQuarterFunction = CP_setReturnQuarterFunction;c.setReturnYearFunction = CP_setReturnYearFunction;c.setMonthNames = CP_setMonthNames;c.setMonthAbbreviations = CP_setMonthAbbreviations;c.setDayHeaders = CP_setDayHeaders;c.setWeekStartDay = CP_setWeekStartDay;c.setDisplayType = CP_setDisplayType;c.setDisabledWeekDays = CP_setDisabledWeekDays;c.addDisabledDates = CP_addDisabledDates;c.setYearSelectStartOffset = CP_setYearSelectStartOffset;c.setTodayText = CP_setTodayText;c.showYearNavigation = CP_showYearNavigation;c.showCalendar = CP_showCalendar;c.hideCalendar = CP_hideCalendar;c.getStyles = getCalendarStyles;c.refreshCalendar = CP_refreshCalendar;c.getCalendar = CP_getCalendar;c.select = CP_select;c.setCssPrefix = CP_setCssPrefix;c.showNavigationDropdowns = CP_showNavigationDropdowns;c.showYearNavigationInput = CP_showYearNavigationInput;c.copyMonthNamesToWindow();return c;}
function CP_copyMonthNamesToWindow(){if(typeof(window.MONTH_NAMES)!="undefined" && window.MONTH_NAMES!=null){window.MONTH_NAMES = new Array();for(var i=0;i<this.monthNames.length;i++){window.MONTH_NAMES[window.MONTH_NAMES.length] = this.monthNames[i];}for(var i=0;i<this.monthAbbreviations.length;i++){window.MONTH_NAMES[window.MONTH_NAMES.length] = this.monthAbbreviations[i];}}}
function CP_tmpReturnFunction(y,m,d){if(window.CP_targetInput!=null){var dt = new Date(y,m-1,d,0,0,0);if(window.CP_calendarObject!=null){window.CP_calendarObject.copyMonthNamesToWindow();}window.CP_targetInput.value = formatDate(dt,window.CP_dateFormat);}else{alert('Use setReturnFunction() to define which function will get the clicked results!');}}
function CP_tmpReturnMonthFunction(y,m){alert('Use setReturnMonthFunction() to define which function will get the clicked results!\nYou clicked: year='+y+' , month='+m);}
function CP_tmpReturnQuarterFunction(y,q){alert('Use setReturnQuarterFunction() to define which function will get the clicked results!\nYou clicked: year='+y+' , quarter='+q);}
function CP_tmpReturnYearFunction(y){alert('Use setReturnYearFunction() to define which function will get the clicked results!\nYou clicked: year='+y);}
function CP_setReturnFunction(name){this.returnFunction = name;}
function CP_setReturnMonthFunction(name){this.returnMonthFunction = name;}
function CP_setReturnQuarterFunction(name){this.returnQuarterFunction = name;}
function CP_setReturnYearFunction(name){this.returnYearFunction = name;}
function CP_setMonthNames(){for(var i=0;i<arguments.length;i++){this.monthNames[i] = arguments[i];}this.copyMonthNamesToWindow();}
function CP_setMonthAbbreviations(){for(var i=0;i<arguments.length;i++){this.monthAbbreviations[i] = arguments[i];}this.copyMonthNamesToWindow();}
function CP_setDayHeaders(){for(var i=0;i<arguments.length;i++){this.dayHeaders[i] = arguments[i];}}
function CP_setWeekStartDay(day){this.weekStartDay = day;}
function CP_showYearNavigation(){this.isShowYearNavigation =(arguments.length>0)?arguments[0]:true;}
function CP_setDisplayType(type){if(type!="date"&&type!="week-end"&&type!="month"&&type!="quarter"&&type!="year"){alert("Invalid display type! Must be one of: date,week-end,month,quarter,year");return false;}this.displayType=type;}
function CP_setYearSelectStartOffset(num){this.yearSelectStartOffset=num;}
function CP_setDisabledWeekDays(){this.disabledWeekDays = new Object();for(var i=0;i<arguments.length;i++){this.disabledWeekDays[arguments[i]] = true;}}
function CP_addDisabledDates(start, end){if(arguments.length==1){end=start;}if(start==null && end==null){return;}if(this.disabledDatesExpression!=""){this.disabledDatesExpression+= "||";}if(start!=null){start = parseDate(start);start=""+start.getFullYear()+LZ(start.getMonth()+1)+LZ(start.getDate());}if(end!=null){end=parseDate(end);end=""+end.getFullYear()+LZ(end.getMonth()+1)+LZ(end.getDate());}if(start==null){this.disabledDatesExpression+="(ds<="+end+")";}else if(end  ==null){this.disabledDatesExpression+="(ds>="+start+")";}else{this.disabledDatesExpression+="(ds>="+start+"&&ds<="+end+")";}}
function CP_setTodayText(text){this.todayText = text;}
function CP_setCssPrefix(val){this.cssPrefix = val;}
function CP_showNavigationDropdowns(){this.isShowNavigationDropdowns =(arguments.length>0)?arguments[0]:true;}
function CP_showYearNavigationInput(){this.isShowYearNavigationInput =(arguments.length>0)?arguments[0]:true;}
function CP_hideCalendar(){if(arguments.length > 0){window.popupWindowObjects[arguments[0]].hidePopup();}else{this.hidePopup();}}
function CP_refreshCalendar(index){var calObject = window.popupWindowObjects[index];if(arguments.length>1){calObject.populate(calObject.getCalendar(arguments[1],arguments[2],arguments[3],arguments[4],arguments[5]));}else{calObject.populate(calObject.getCalendar());}calObject.refresh();}
function CP_showCalendar(anchorname){if(arguments.length>1){if(arguments[1]==null||arguments[1]==""){this.currentDate=new Date();}else{this.currentDate=new Date(parseDate(arguments[1]));}}this.populate(this.getCalendar());this.showPopup(anchorname);}
function CP_select(inputobj, linkname, format){var selectedDate=(arguments.length>3)?arguments[3]:null;if(!window.getDateFromFormat){alert("calendar.select: To use this method you must also include 'date.js' for date formatting");return;}if(this.displayType!="date"&&this.displayType!="week-end"){alert("calendar.select: This function can only be used with displayType 'date' or 'week-end'");return;}if(inputobj.type!="text" && inputobj.type!="hidden" && inputobj.type!="textarea"){alert("calendar.select: Input object passed is not a valid form input object");window.CP_targetInput=null;return;}if(inputobj.disabled){return;}window.CP_targetInput = inputobj;window.CP_calendarObject = this;this.currentDate=null;var time=0;if(selectedDate!=null){time = getDateFromFormat(selectedDate,format)}else if(inputobj.value!=""){time = getDateFromFormat(inputobj.value,format);}if(selectedDate!=null || inputobj.value!=""){if(time==0){this.currentDate=null;}else{this.currentDate=new Date(time);}}window.CP_dateFormat = format;this.showCalendar(linkname);}
function getCalendarStyles(){var result = "";var p = "";if(this!=null && typeof(this.cssPrefix)!="undefined" && this.cssPrefix!=null && this.cssPrefix!=""){p=this.cssPrefix;}result += "<STYLE>\n";result += "."+p+"cpYearNavigation,."+p+"cpMonthNavigation{background-color:#C0C0C0;text-align:center;vertical-align:center;text-decoration:none;color:#000000;font-weight:bold;}\n";result += "."+p+"cpDayColumnHeader, ."+p+"cpYearNavigation,."+p+"cpMonthNavigation,."+p+"cpCurrentMonthDate,."+p+"cpCurrentMonthDateDisabled,."+p+"cpOtherMonthDate,."+p+"cpOtherMonthDateDisabled,."+p+"cpCurrentDate,."+p+"cpCurrentDateDisabled,."+p+"cpTodayText,."+p+"cpTodayTextDisabled,."+p+"cpText{font-family:arial;font-size:8pt;}\n";result += "TD."+p+"cpDayColumnHeader{text-align:right;border:solid thin #C0C0C0;border-width:0px 0px 1px 0px;}\n";result += "."+p+"cpCurrentMonthDate, ."+p+"cpOtherMonthDate, ."+p+"cpCurrentDate{text-align:right;text-decoration:none;}\n";result += "."+p+"cpCurrentMonthDateDisabled, ."+p+"cpOtherMonthDateDisabled, ."+p+"cpCurrentDateDisabled{color:#D0D0D0;text-align:right;text-decoration:line-through;}\n";result += "."+p+"cpCurrentMonthDate, .cpCurrentDate{color:#000000;}\n";result += "."+p+"cpOtherMonthDate{color:#808080;}\n";result += "TD."+p+"cpCurrentDate{color:white;background-color: #C0C0C0;border-width:1px;border:solid thin #800000;}\n";result += "TD."+p+"cpCurrentDateDisabled{border-width:1px;border:solid thin #FFAAAA;}\n";result += "TD."+p+"cpTodayText, TD."+p+"cpTodayTextDisabled{border:solid thin #C0C0C0;border-width:1px 0px 0px 0px;}\n";result += "A."+p+"cpTodayText, SPAN."+p+"cpTodayTextDisabled{height:20px;}\n";result += "A."+p+"cpTodayText{color:black;}\n";result += "."+p+"cpTodayTextDisabled{color:#D0D0D0;}\n";result += "."+p+"cpBorder{border:solid thin #808080;}\n";result += "</STYLE>\n";return result;}
function CP_getCalendar(){var now = new Date();if(this.type == "WINDOW"){var windowref = "window.opener.";}else{var windowref = "";}var result = "";if(this.type == "WINDOW"){result += "<HTML><HEAD><TITLE>Calendar</TITLE>"+this.getStyles()+"</HEAD><BODY MARGINWIDTH=0 MARGINHEIGHT=0 TOPMARGIN=0 RIGHTMARGIN=0 LEFTMARGIN=0>\n";result += '<CENTER><TABLE WIDTH=100% BORDER=0 BORDERWIDTH=0 CELLSPACING=0 CELLPADDING=0>\n';}else{result += '<TABLE CLASS="'+this.cssPrefix+'cpBorder" WIDTH=144 BORDER=1 BORDERWIDTH=1 CELLSPACING=0 CELLPADDING=1>\n';result += '<TR><TD ALIGN=CENTER>\n';result += '<CENTER>\n';}if(this.displayType=="date" || this.displayType=="week-end"){if(this.currentDate==null){this.currentDate = now;}if(arguments.length > 0){var month = arguments[0];}else{var month = this.currentDate.getMonth()+1;}if(arguments.length > 1 && arguments[1]>0 && arguments[1]-0==arguments[1]){var year = arguments[1];}else{var year = this.currentDate.getFullYear();}var daysinmonth= new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);if( ((year%4 == 0)&&(year%100 != 0) ) ||(year%400 == 0) ){daysinmonth[2] = 29;}var current_month = new Date(year,month-1,1);var display_year = year;var display_month = month;var display_date = 1;var weekday= current_month.getDay();var offset = 0;offset =(weekday >= this.weekStartDay) ? weekday-this.weekStartDay : 7-this.weekStartDay+weekday ;if(offset > 0){display_month--;if(display_month < 1){display_month = 12;display_year--;}display_date = daysinmonth[display_month]-offset+1;}var next_month = month+1;var next_month_year = year;if(next_month > 12){next_month=1;next_month_year++;}var last_month = month-1;var last_month_year = year;if(last_month < 1){last_month=12;last_month_year--;}var date_class;if(this.type!="WINDOW"){result += "<TABLE WIDTH=144 BORDER=0 BORDERWIDTH=0 CELLSPACING=0 CELLPADDING=0>";}result += '<TR>\n';var refresh = windowref+'CP_refreshCalendar';var refreshLink = 'javascript:' + refresh;if(this.isShowNavigationDropdowns){result += '<TD CLASS="'+this.cssPrefix+'cpMonthNavigation" WIDTH="78" COLSPAN="3"><select CLASS="'+this.cssPrefix+'cpMonthNavigation" name="cpMonth" onChange="'+refresh+'('+this.index+',this.options[this.selectedIndex].value-0,'+(year-0)+');">';for( var monthCounter=1;monthCounter<=12;monthCounter++){var selected =(monthCounter==month) ? 'SELECTED' : '';result += '<option value="'+monthCounter+'" '+selected+'>'+this.monthNames[monthCounter-1]+'</option>';}result += '</select></TD>';result += '<TD CLASS="'+this.cssPrefix+'cpMonthNavigation" WIDTH="10">&nbsp;</TD>';result += '<TD CLASS="'+this.cssPrefix+'cpYearNavigation" WIDTH="56" COLSPAN="3"><select CLASS="'+this.cssPrefix+'cpYearNavigation" name="cpYear" onChange="'+refresh+'('+this.index+','+month+',this.options[this.selectedIndex].value-0);">';for( var yearCounter=year-this.yearSelectStartOffset;yearCounter<=year+this.yearSelectStartOffset;yearCounter++){var selected =(yearCounter==year) ? 'SELECTED' : '';result += '<option value="'+yearCounter+'" '+selected+'>'+yearCounter+'</option>';}result += '</select></TD>';}else{if(this.isShowYearNavigation){result += '<TD CLASS="'+this.cssPrefix+'cpMonthNavigation" WIDTH="10"><A CLASS="'+this.cssPrefix+'cpMonthNavigation" HREF="'+refreshLink+'('+this.index+','+last_month+','+last_month_year+');">&lt;</A></TD>';result += '<TD CLASS="'+this.cssPrefix+'cpMonthNavigation" WIDTH="58"><SPAN CLASS="'+this.cssPrefix+'cpMonthNavigation">'+this.monthNames[month-1]+'</SPAN></TD>';result += '<TD CLASS="'+this.cssPrefix+'cpMonthNavigation" WIDTH="10"><A CLASS="'+this.cssPrefix+'cpMonthNavigation" HREF="'+refreshLink+'('+this.index+','+next_month+','+next_month_year+');">&gt;</A></TD>';result += '<TD CLASS="'+this.cssPrefix+'cpMonthNavigation" WIDTH="10">&nbsp;</TD>';result += '<TD CLASS="'+this.cssPrefix+'cpYearNavigation" WIDTH="10"><A CLASS="'+this.cssPrefix+'cpYearNavigation" HREF="'+refreshLink+'('+this.index+','+month+','+(year-1)+');">&lt;</A></TD>';if(this.isShowYearNavigationInput){result += '<TD CLASS="'+this.cssPrefix+'cpYearNavigation" WIDTH="36"><INPUT NAME="cpYear" CLASS="'+this.cssPrefix+'cpYearNavigation" SIZE="4" MAXLENGTH="4" VALUE="'+year+'" onBlur="'+refresh+'('+this.index+','+month+',this.value-0);"></TD>';}else{result += '<TD CLASS="'+this.cssPrefix+'cpYearNavigation" WIDTH="36"><SPAN CLASS="'+this.cssPrefix+'cpYearNavigation">'+year+'</SPAN></TD>';}result += '<TD CLASS="'+this.cssPrefix+'cpYearNavigation" WIDTH="10"><A CLASS="'+this.cssPrefix+'cpYearNavigation" HREF="'+refreshLink+'('+this.index+','+month+','+(year+1)+');">&gt;</A></TD>';}else{result += '<TD CLASS="'+this.cssPrefix+'cpMonthNavigation" WIDTH="22"><A CLASS="'+this.cssPrefix+'cpMonthNavigation" HREF="'+refreshLink+'('+this.index+','+last_month+','+last_month_year+');">&lt;&lt;</A></TD>\n';result += '<TD CLASS="'+this.cssPrefix+'cpMonthNavigation" WIDTH="100"><SPAN CLASS="'+this.cssPrefix+'cpMonthNavigation">'+this.monthNames[month-1]+' '+year+'</SPAN></TD>\n';result += '<TD CLASS="'+this.cssPrefix+'cpMonthNavigation" WIDTH="22"><A CLASS="'+this.cssPrefix+'cpMonthNavigation" HREF="'+refreshLink+'('+this.index+','+next_month+','+next_month_year+');">&gt;&gt;</A></TD>\n';}}result += '</TR></TABLE>\n';result += '<TABLE WIDTH=120 BORDER=0 CELLSPACING=0 CELLPADDING=1 ALIGN=CENTER>\n';result += '<TR>\n';for(var j=0;j<7;j++){result += '<TD CLASS="'+this.cssPrefix+'cpDayColumnHeader" WIDTH="14%"><SPAN CLASS="'+this.cssPrefix+'cpDayColumnHeader">'+this.dayHeaders[(this.weekStartDay+j)%7]+'</TD>\n';}result += '</TR>\n';for(var row=1;row<=6;row++){result += '<TR>\n';for(var col=1;col<=7;col++){var disabled=false;if(this.disabledDatesExpression!=""){var ds=""+display_year+LZ(display_month)+LZ(display_date);eval("disabled=("+this.disabledDatesExpression+")");}var dateClass = "";if((display_month == this.currentDate.getMonth()+1) &&(display_date==this.currentDate.getDate()) &&(display_year==this.currentDate.getFullYear())){dateClass = "cpCurrentDate";}else if(display_month == month){dateClass = "cpCurrentMonthDate";}else{dateClass = "cpOtherMonthDate";}if(disabled || this.disabledWeekDays[col-1]){result += '      <TD CLASS="'+this.cssPrefix+dateClass+'"><SPAN CLASS="'+this.cssPrefix+dateClass+'Disabled">'+display_date+'</SPAN></TD>\n';}else{var selected_date = display_date;var selected_month = display_month;var selected_year = display_year;if(this.displayType=="week-end"){var d = new Date(selected_year,selected_month-1,selected_date,0,0,0,0);d.setDate(d.getDate() +(7-col));selected_year = d.getYear();if(selected_year < 1000){selected_year += 1900;}selected_month = d.getMonth()+1;selected_date = d.getDate();}result += '      <TD CLASS="'+this.cssPrefix+dateClass+'"><A HREF="javascript:'+windowref+this.returnFunction+'('+selected_year+','+selected_month+','+selected_date+');'+windowref+'CP_hideCalendar(\''+this.index+'\');" CLASS="'+this.cssPrefix+dateClass+'">'+display_date+'</A></TD>\n';}display_date++;if(display_date > daysinmonth[display_month]){display_date=1;display_month++;}if(display_month > 12){display_month=1;display_year++;}}result += '</TR>';}var current_weekday = now.getDay() - this.weekStartDay;if(current_weekday < 0){current_weekday += 7;}result += '<TR>\n';result += '      <TD COLSPAN=7 ALIGN=CENTER CLASS="'+this.cssPrefix+'cpTodayText">\n';if(this.disabledDatesExpression!=""){var ds=""+now.getFullYear()+LZ(now.getMonth()+1)+LZ(now.getDate());eval("disabled=("+this.disabledDatesExpression+")");}if(disabled || this.disabledWeekDays[current_weekday+1]){result += '            <SPAN CLASS="'+this.cssPrefix+'cpTodayTextDisabled">'+this.todayText+'</SPAN>\n';}else{result += '            <A CLASS="'+this.cssPrefix+'cpTodayText" HREF="javascript:'+windowref+this.returnFunction+'(\''+now.getFullYear()+'\',\''+(now.getMonth()+1)+'\',\''+now.getDate()+'\');'+windowref+'CP_hideCalendar(\''+this.index+'\');">'+this.todayText+'</A>\n';}result += '            <BR>\n';result += '      </TD></TR></TABLE></CENTER></TD></TR></TABLE>\n';}if(this.displayType=="month" || this.displayType=="quarter" || this.displayType=="year"){if(arguments.length > 0){var year = arguments[0];}else{if(this.displayType=="year"){var year = now.getFullYear()-this.yearSelectStartOffset;}else{var year = now.getFullYear();}}if(this.displayType!="year" && this.isShowYearNavigation){result += "<TABLE WIDTH=144 BORDER=0 BORDERWIDTH=0 CELLSPACING=0 CELLPADDING=0>";result += '<TR>\n';result += '      <TD CLASS="'+this.cssPrefix+'cpYearNavigation" WIDTH="22"><A CLASS="'+this.cssPrefix+'cpYearNavigation" HREF="javascript:'+windowref+'CP_refreshCalendar('+this.index+','+(year-1)+');">&lt;&lt;</A></TD>\n';result += '      <TD CLASS="'+this.cssPrefix+'cpYearNavigation" WIDTH="100">'+year+'</TD>\n';result += '      <TD CLASS="'+this.cssPrefix+'cpYearNavigation" WIDTH="22"><A CLASS="'+this.cssPrefix+'cpYearNavigation" HREF="javascript:'+windowref+'CP_refreshCalendar('+this.index+','+(year+1)+');">&gt;&gt;</A></TD>\n';result += '</TR></TABLE>\n';}}if(this.displayType=="month"){result += '<TABLE WIDTH=120 BORDER=0 CELLSPACING=1 CELLPADDING=0 ALIGN=CENTER>\n';for(var i=0;i<4;i++){result += '<TR>';for(var j=0;j<3;j++){var monthindex =((i*3)+j);result += '<TD WIDTH=33% ALIGN=CENTER><A CLASS="'+this.cssPrefix+'cpText" HREF="javascript:'+windowref+this.returnMonthFunction+'('+year+','+(monthindex+1)+');'+windowref+'CP_hideCalendar(\''+this.index+'\');" CLASS="'+date_class+'">'+this.monthAbbreviations[monthindex]+'</A></TD>';}result += '</TR>';}result += '</TABLE></CENTER></TD></TR></TABLE>\n';}if(this.displayType=="quarter"){result += '<BR><TABLE WIDTH=120 BORDER=1 CELLSPACING=0 CELLPADDING=0 ALIGN=CENTER>\n';for(var i=0;i<2;i++){result += '<TR>';for(var j=0;j<2;j++){var quarter =((i*2)+j+1);result += '<TD WIDTH=50% ALIGN=CENTER><BR><A CLASS="'+this.cssPrefix+'cpText" HREF="javascript:'+windowref+this.returnQuarterFunction+'('+year+','+quarter+');'+windowref+'CP_hideCalendar(\''+this.index+'\');" CLASS="'+date_class+'">Q'+quarter+'</A><BR><BR></TD>';}result += '</TR>';}result += '</TABLE></CENTER></TD></TR></TABLE>\n';}if(this.displayType=="year"){var yearColumnSize = 4;result += "<TABLE WIDTH=144 BORDER=0 BORDERWIDTH=0 CELLSPACING=0 CELLPADDING=0>";result += '<TR>\n';result += '      <TD CLASS="'+this.cssPrefix+'cpYearNavigation" WIDTH="50%"><A CLASS="'+this.cssPrefix+'cpYearNavigation" HREF="javascript:'+windowref+'CP_refreshCalendar('+this.index+','+(year-(yearColumnSize*2))+');">&lt;&lt;</A></TD>\n';result += '      <TD CLASS="'+this.cssPrefix+'cpYearNavigation" WIDTH="50%"><A CLASS="'+this.cssPrefix+'cpYearNavigation" HREF="javascript:'+windowref+'CP_refreshCalendar('+this.index+','+(year+(yearColumnSize*2))+');">&gt;&gt;</A></TD>\n';result += '</TR></TABLE>\n';result += '<TABLE WIDTH=120 BORDER=0 CELLSPACING=1 CELLPADDING=0 ALIGN=CENTER>\n';for(var i=0;i<yearColumnSize;i++){for(var j=0;j<2;j++){var currentyear = year+(j*yearColumnSize)+i;result += '<TD WIDTH=50% ALIGN=CENTER><A CLASS="'+this.cssPrefix+'cpText" HREF="javascript:'+windowref+this.returnYearFunction+'('+currentyear+');'+windowref+'CP_hideCalendar(\''+this.index+'\');" CLASS="'+date_class+'">'+currentyear+'</A></TD>';}result += '</TR>';}result += '</TABLE></CENTER></TD></TR></TABLE>\n';}if(this.type == "WINDOW"){result += "</BODY></HTML>\n";}return result;}

</script>
<SCRIPT LANGUAGE="JavaScript" ID="js17">
var now = new Date();
var cal17 = new CalendarPopup("testdiv1");
cal17.addDisabledDates(null,formatDate(now,"yyyy-MM-dd"));
cal17.addDisabledDates("12/25/2007");
cal17.addDisabledDates("Jan 1, 2008",null);
</SCRIPT>

<INPUT TYPE="text" NAME="date17" VALUE="" SIZE=25 id = "date17">
<A HREF="#" onClick="cal17.select(document.getElementById('date17'),'anchor17','MM/dd/yyyy'); return false;" TITLE="cal17.select(document.forms[0].date17,'anchor17','MM/dd/yyyy'); return false;" NAME="anchor17" ID="anchor17">select</A>
<div id = "testdiv1" STYLE="position:absolute;visibility:hidden;background-color:white;layer-background-color:white;"></div>
</BODY>
</HTML>
0
 

Author Comment

by:acslater
ID: 13692579
archrajan ur a legend. it worked. I have just bit of problem more with it though but i defo accept your solution and will post another problem related to this. Id say u shpuld
definatly be able to help me

thank you

 ill post this other problem now in minute (its just how to validate that doppoffdate cannot be earlier than pickupdate
0

Featured Post

Get 15 Days FREE Full-Featured Trial

Benefit from a mission critical IT monitoring with Monitis Premium or get it FREE for your entry level monitoring needs.
-Over 200,000 users
-More than 300,000 websites monitored
-Used in 197 countries
-Recommended by 98% of users

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article discusses how to create an extensible mechanism for linked drop downs.
In this blog, we’ll look at how improvements to Percona XtraDB Cluster improved IST performance.
The viewer will learn the basics of jQuery, including how to invoke it on a web page. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery.: (CODE)
The viewer will learn the basics of jQuery including how to code hide show and toggles. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery…
Suggested Courses

771 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question