
YAHOO.namespace("fonroots.calendar");

function campCal() {

  //Start Date Calendar
  var sCalMinDate = YAHOO.widget.DateMath.add(new Date(), YAHOO.widget.DateMath.DAY, 0);
  var sCal = new YAHOO.widget.Calendar("startCal", {navigator:true, 
                                                    title:"Choose Start Date",
                                                    mindate: sCalMinDate,
                                                    close:true});
  sCal.cfg.setProperty("start_weekday", "1");
  sCal.render();
  
  sCal.hide();
  
  var showStartCal = function() {
    sCal.show();
  } 
  
  YAHOO.util.Event.addListener("sCalIco", "click", showStartCal);

     var startDate = function(type, args) {
       var sdates = args[0];
       var sdate = sdates[0];
       var stheYear = sdate[0];
       var stheMonth = sdate[1];
       var stheDay = sdate[2];

       var stheDate = stheMonth + "/" + stheDay + "/" + stheYear;

       var startfield = YAHOO.util.Dom.get("startField");

       startfield.value = stheDate;

       sCal.hide();
     }
     sCal.selectEvent.subscribe(startDate);
 
  //End Date Calendar
  var startdatefield = YAHOO.util.Dom.get("startField");
  var eCalMinDate = startdatefield.value;
  var eCal = new YAHOO.widget.Calendar("endCal", {navigator:true, 
                                                  title:"Choose End Date",
                                                  mindate: eCalMinDate,
                                                  close:true});
  eCal.cfg.setProperty("start_weekday", "1");
  eCal.render();
  
  eCal.hide();
  
  var showEndCal = function() {
    eCal.show();
  }

  YAHOO.util.Event.addListener("eCalIco", "click", showEndCal);
    
      var endDate = function(type, args) {
        var edates = args[0];
        var edate = edates[0];
        var etheYear = edate[0];
        var etheMonth = edate[1];
        var etheDay = edate[2];
        
        var etheDate = etheMonth + "/" + etheDay + "/" + etheYear;
        
        var endField = YAHOO.util.Dom.get("endField");
        
        endField.value = etheDate;
        
        eCal.hide();
      }
      eCal.selectEvent.subscribe(endDate);
} 

function broadcastCal() {
  
  //Broadcast Calendar
    var broadcastCalMinDate = YAHOO.widget.DateMath.add(new Date(), YAHOO.widget.DateMath.DAY, 0);
    var broadcastCal = new YAHOO.widget.Calendar("broadcastCal", {navigator:true, 
                                                                  title:"Choose Send Date",
                                                                  mindate: broadcastCalMinDate,
                                                                  close:true});

    broadcastCal.cfg.setProperty("start_weekday", "1");
    broadcastCal.render();

    broadcastCal.hide();

    var showBroadcastCal = function() {
      broadcastCal.show();
    }

    YAHOO.util.Event.addListener("broadcastCalIco", "click", showBroadcastCal);

      var broadcastDate = function(type, args) {
        var bdates = args[0];
        var bdate = bdates[0];
        var btheYear = bdate[0];
        var btheMonth = bdate[1];
        var btheDay = bdate[2];

        var btheDate = btheMonth + "/" + btheDay + "/" + btheYear;
        var broadcastDateField = YAHOO.util.Dom.get("broadcastField");

        broadcastDateField.value = btheDate;

        broadcastCal.hide();
      }
      broadcastCal.selectEvent.subscribe(broadcastDate);
}    

function contestCal() {
  
  //Winner Date Calendar
  var winCalMinDate = YAHOO.widget.DateMath.add(new Date(), YAHOO.widget.DateMath.DAY, 0);
  var winCal = new YAHOO.widget.Calendar("winCal", {navigator:true, 
                                                    title:"Winner Select Date",
                                                    mindate: winCalMinDate,
                                                    close:true});
  winCal.cfg.setProperty("start_weekday", "1");
  winCal.render();
  
  winCal.hide();
  
  var showWinCal = function() {
    winCal.show();
  }

    YAHOO.util.Event.addListener("winCalIco", "click", showWinCal);

        var winDate = function(type, args) {
          var windates = args[0];
          var windate = windates[0];
          var wintheYear = windate[0];
          var wintheMonth = windate[1];
          var wintheDay = windate[2];

          var winTheDate = wintheMonth + "/" + wintheDay + "/" + wintheYear;

          var winField = YAHOO.util.Dom.get("winField");

          winField.value = winTheDate;

          winCal.hide();
        }
        winCal.selectEvent.subscribe(winDate);
}

function existingBroadcastCal() {
  
  //Existing Broadcast Date Calendar
  var exBroadCalMinDate = YAHOO.widget.DateMath.add(new Date(), YAHOO.widget.DateMath.DAY, 0);
  var exBroadCal = new YAHOO.widget.Calendar("exBroadCal", {navigator:true, 
                                                    title:"Select Delivery Date",
                                                    mindate: exBroadCalMinDate,
                                                    close:true});
  exBroadCal.cfg.setProperty("start_weekday", "1");
  exBroadCal.render();
  
  exBroadCal.hide();
  
  var showexBroadCal = function() {
    exBroadCal.show();
  }

    YAHOO.util.Event.addListener("exBroadCalIco", "click", showexBroadCal);

        var exBroadDate = function(type, args) {
          var exBroaddates = args[0];
          var exBroaddate = exBroaddates[0];
          var exBroadtheYear = exBroaddate[0];
          var exBroadtheMonth = exBroaddate[1];
          var exBroadtheDay = exBroaddate[2];

          var exBroadTheDate = exBroadtheMonth + "/" + exBroadtheDay + "/" + exBroadtheYear;

          var exBroadField = YAHOO.util.Dom.get("existing_broadcast_date");

          exBroadField.value = exBroadTheDate;

          exBroadCal.hide();
        }
        exBroadCal.selectEvent.subscribe(exBroadDate);
}

function filterMemberStartCal() {
  
  var filterMemberStartCal = new YAHOO.widget.Calendar("filterMemberStartCal", {navigator:true, 
                                                    title:"Filter Start Date",
                                                    close:true});
  filterMemberStartCal.cfg.setProperty("start_weekday", "1");
  filterMemberStartCal.render();
  
  filterMemberStartCal.hide();
  
  var showfilterMemberStartCal = function() {
    filterMemberStartCal.show();
  }

    YAHOO.util.Event.addListener("filterMemberStartCalIco", "click", showfilterMemberStartCal);

        var filterStartDate = function(type, args) {
          var filterStartdates = args[0];
          var filterStartdate = filterStartdates[0];
          var filterStarttheYear = filterStartdate[0];
          var filterStarttheMonth = filterStartdate[1];
          var filterStarttheDay = filterStartdate[2];

          var filterStartTheDate = filterStarttheMonth + "/" + filterStarttheDay + "/" + filterStarttheYear;

          var filterStartField = YAHOO.util.Dom.get("filter_date_start");

          filterStartField.value = filterStartTheDate;

          filterMemberStartCal.hide();
        }
        filterMemberStartCal.selectEvent.subscribe(filterStartDate);
}

function filterMemberEndCal() {
  
  var filterMemberEndCal = new YAHOO.widget.Calendar("filterMemberEndCal", {navigator:true, 
                                                    title:"Filter End Date",
                                                    close:true});
  filterMemberEndCal.cfg.setProperty("start_weekday", "1");
  filterMemberEndCal.render();
  
  filterMemberEndCal.hide();
  
  var showfilterMemberEndCal = function() {
    filterMemberEndCal.show();
  }

    YAHOO.util.Event.addListener("filterMemberEndCalIco", "click", showfilterMemberEndCal);

        var filterEndDate = function(type, args) {
          var filterEnddates = args[0];
          var filterEnddate = filterEnddates[0];
          var filterEndtheYear = filterEnddate[0];
          var filterEndtheMonth = filterEnddate[1];
          var filterEndtheDay = filterEnddate[2];

          var filterEndTheDate = filterEndtheMonth + "/" + filterEndtheDay + "/" + filterEndtheYear;

          var filterEndField = YAHOO.util.Dom.get("filter_date_end");

          filterEndField.value = filterEndTheDate;

          filterMemberEndCal.hide();
        }
        filterMemberEndCal.selectEvent.subscribe(filterEndDate);
}


function initCounterSlider()
{
    // THIS IS THE RANDOM COUNTER SLIDER
    var Event = YAHOO.util.Event;
    var Dom   = YAHOO.util.Dom;
    var lang  = YAHOO.lang;
    var rightConstraint = 190;
    var leftConstraint = 0;
    var slider;
    var bg = "slider-bg";
    var thumb = "slider-thumb";
    var textfield = "slider-converted-value";

    var slider = YAHOO.widget.Slider.getHorizSlider("slider-bg", "slider-thumb", leftConstraint, rightConstraint, 0, 0);
        slider.animate = true;
        slider.setValue(0);

        slider.getRealValue = function() {
          var total_members = Dom.get("total_members");
          var total_member_int = parseInt(total_members.innerHTML);
          var scaleFactor = (rightConstraint / total_member_int);
          var slider_val = this.getValue();
          var current_count = Math.round(slider_val / scaleFactor);
          return current_count;
        }

        slider.subscribe("change", function() {
              var fld = Dom.get(textfield);
              // use the scale factor to calculate the slider width against the total number of members
              // value
              var actualValue = slider.getRealValue();

              // update the text box with the actual value
              fld.value = actualValue;

              // Update the title attribute on the background.  This helps assistive
              // technology to communicate the state change
              Dom.get(bg).title = "slider value = " + actualValue;

          });

        Event.on(textfield, "keydown", function(e) {
          // set the value when the 'return' key is detected
            if (Event.getCharCode(e) === 13) {
                var v = parseFloat(this.value, 10);
                v = (lang.isNumber(v)) ? v : 0;

                // convert the real value into a pixel offset
                slider.setValue(Math.round(v/scaleFactor));
            }
          });
}

function initYUIElements()
{
    YAHOO.util.Event.onAvailable("startCal", campCal);
    YAHOO.util.Event.onAvailable("broadcastCal", broadcastCal);
    YAHOO.util.Event.onAvailable("winCal", contestCal);
    YAHOO.util.Event.onAvailable("exBroadCal", existingBroadcastCal);
    YAHOO.util.Event.onAvailable("filterMemberStartCal", filterMemberStartCal);
    YAHOO.util.Event.onAvailable("filterMemberEndCal", filterMemberEndCal);

    YAHOO.util.Event.onContentReady("slider-bg", initCounterSlider);
}

YAHOO.util.Event.onDOMReady(initYUIElements);
