/**
 *
 */
YAHOO.Coke.ACluster.bucketmgmt = {
  datePickerSelopSt: null,
  datePickerSelopEnd: null,
  Y: null,

  init  : function () { 
   var myDataSource = new YAHOO.util.DataSource(YAHOO.util.Dom.get("buckettable")); 
   myDataSource.responseType = YAHOO.util.DataSource.TYPE_HTMLTABLE; 
   myDataSource.responseSchema = { 
    fields: [
              {key:""},
              {key:"Bucket Name"}, 
              {key:"Parent Bucket"}, 
              {key:"Start Date"},
              {key:"Traffic Size"},
              {key:"Learning Buckets"},
              {key:"Control Buckets"},
    ] 
   };   
   var myDataSource1 = new YAHOO.util.DataSource(YAHOO.util.Dom.get("notestable")); 
   myDataSource1.responseType = YAHOO.util.DataSource.TYPE_HTMLTABLE; 
   myDataSource1.responseSchema = { 
    fields: [
              "Note Description", "Bucket Name", "Author",  "Created Date",              
    ] 
   };   

   // custom sort
   var multiSort = function(a, b, desc) {
     // Deal with empty values
     if(!YAHOO.lang.isValue(a)) {
       return (!YAHOO.lang.isValue(b)) ? 0 : 1;
     } else if(!YAHOO.lang.isValue(b)) {
       return -1;
     }

     // First compare by Bucket Name
     var comp = YAHOO.util.Sort.compare;
     var compBName = comp(a.getData("Bucket Name"), b.getData("Bucket Name"), desc);
     if (compBName!== 0) return compBName;

     // Then compare by Parent Name
     var compPName = comp(a.getData("Parent Bucket"), b.getData("Parent Bucket"), desc);
     if (compPName !== 0) return compPName;

     var compsDate = comp(a.getData("Start Date"), b.getData("Start Date"), desc);
     if (compsDate !== 0) return compsDate;

     // finally just return 0
     return 0;
   };

   var myColumnDefs = [ 
    {key:""},
    {key:"Bucket Name", sortable:true, sortOptions:{sortFunction:multiSort}}, 
    {key:"Parent Bucket", sortable:true},     
    {key:"Start Date", sortable:true}, 
    {key:"Traffic Size", sortable:true}, 
    {key:"Learning Buckets", sortable:true}, 
    {key:"Control Buckets", sortable:true}, 
   ]; 

   var myDataTable = new YAHOO.widget.ScrollingDataTable("bucketcontainer", myColumnDefs, myDataSource);

   var myColumnDefs1 = [ 
    {key:"Note Description", sortable:true, sortOptions:{sortFunction:multiSort}}, 
    {key:"Bucket Name", sortable:true},    
    {key:"Author", sortable:true},     
    {key:"Created Date", sortable:true}, 
   ]; 

    this.myDataTable1= new YAHOO.widget.ScrollingDataTable("notecontainer", myColumnDefs1, myDataSource1, {
        height: "200px"
    });

    // attach events for submit
    var addButton = document.getElementById('addbucket');
    if (addButton) {
      YAHOO.util.Event.addListener(addButton , "click", this.addBucketPopUp,this,true);
    }
    
    // attach events for search buckets
    var searchBucks = document.getElementById('searchbuckets');
    if (searchBucks) {   
      YAHOO.util.Event.addListener(searchBucks , "click", this.searchBuckets,this,true);
    }   
    
    // attach events for add notes for buckets
    var addNotes = document.getElementById('addnotes');
    if (addNotes) {   
      YAHOO.util.Event.addListener(addNotes , "click", this.addNotes,this,true);
    }   
   
  /*  var updatebucket = document.getElementById('updatebucket');
    if(updatebucket)
        this.checkworks();
    */
   
  //  var mydate = new Date("July 13, 2011");
  //  alert(mydate.getTime()/1000);
    
   
    var st = YAHOO.Coke.ACluster.bucketmgmt.StartDay;
    var end = YAHOO.Coke.ACluster.bucketmgmt.EndDay;
    /*
    var frm = document.getElementById('frmMain');
    if(st != null){
        for(var i=0;i<3;i++) {
             var input= document.createElement('input');
             input.type = 'hidden';
             input.id='st';
             input.value=st[i];
             frm.appendChild(input);      
        }
    }
    */
    this.setYUIdate();      
    
    
     
  },
  /*
checkworks: function(){
   
  //   alert('checked');
  },*/
addBucketPopUp: function(e){
   YAHOO.util.Event.preventDefault(e);
 
    if ( ! this.popupPane) {
      var popupPaneWidth = 1000;
      var popupPaneHeight = 700;
      this.popupPane = new YAHOO.widget.Panel("popupPane", {
          iframe : false,
          draggable : true,
          close : true,
          x :  (YAHOO.util.Dom.getViewportWidth() - (popupPaneWidth))/2.5,
          y :  (YAHOO.util.Dom.getDocumentHeight() - popupPaneHeight/1.1)
      });
   //   this.dtSortedCol = "term";
    }  
   
    
    //var data = getpopupData();     
    var data = 
       
            "<table width='100%' id='bucketadd'>"+
            "<tr><td><h6><label for='ref_name'>Name</label></h6></td>"+
            "<td><input type='text' id='ref_name' name='ref_name' size='10' value=''></td></tr>"+
            "<tr><td><label for='ref_parent'>Parent</label></td>"+
            "<td><input class='text' id='ref_parent' name='ref_parent' type='text' size='10' value=''></td></tr>"+            
            
            /* YUI3 */
            "<tr><td colspan=2><div id='cal_st'><table width='100%'>"+
            "<tr><td><h6><label for='stmonthselect'>Start Date</label></h6></td>"+
            "<td><select class='yui3-datepicker-month' name='stmonthselect' id='stmonthselect'></select></td>"+ 
            "<td><select class='yui3-datepicker-day' name='stdayselect' id='stdayselect'></select></td>"+
            "<td><select class='yui3-datepicker-year' name='styearselect' id='styearselect'></select></td></tr></table></div></td></tr>"+
            
            /*
            "<tr><td colspan=2><div id='cal_end'><table width='100%'>"+
            "<tr><td><h6><label for='endmonthselect'>End Date</label></h6></td>"+
            "<td><select class='yui3-datepicker-month' name='endmonthselect' id='endmonthselect'></select>"+ 
            "<td><select class='yui3-datepicker-day' name='enddayselect' id='enddayselect'></select></td>"+
            "<td><select class='yui3-datepicker-year' name='endyearselect' id='endyearselect'></select></td></tr></table></div></td></tr>"+
            
            "<tr><td><h6><label for='stmonthselect'>Start Date</label></h6></td><td><div id='cal_st'><table width='100%'>"+            
            "<tr><td><select  name='stmonthselect' id='stmonthselect'>"+
            "<option value='0'>January</option><option value='1'>February</option><option value='2'>March</option>"+
            "<option value='3'>April</option><option value='4'>May</option><option value='5'>June</option>"+
            "<option value='6'>July</option><option value='7'>August</option><option value='8'>September</option>"+
            "<option value='9'>October</option><option value='10'>November</option><option value='11'>December</option>"+
            "</select></td>"+ 
            "<td>Day :<input class='text' type='text' name='stdayselect' id='stdayselect' size='2' maxlength='2' value=''></td>"+
            "<td>Year :<input class='text' type='text' name='styearselect' id='styearselect' size='4' maxlength='4' value=''></td></tr></table></div></td></tr>"+
            */

            /*
            "<tr><td><h6><label for='endmonthselect'>End Date</label></h6></td><td><div id='cal_end'><table width='100%'>"+
            "<td><select name='endmonthselect' id='endmonthselect'>"+ 
            "<option value='0'>January</option><option value='1'>February</option><option value='2'>March</option>"+
            "<option value='3'>April</option><option value='4'>May</option><option value='5'>June</option>"+
            "<option value='6'>July</option><option value='7'>August</option><option value='8'>September</option>"+
            "<option value='9'>October</option><option value='10'>November</option><option value='11'>December</option>"+
            "</select></td>"+ 
            "<td>Day :<input class='text' type='text' name='enddayselect' id='enddayselect' size='2' value=''></td>"+
            "<td>Year :<input class='text' type='text' name='endyearselect' id='endyearselect' size='4' value=''></td></tr></table></div></td></tr>"+
            */
        
            "<tr><td><h6><label for='ref_trafficSize'>Traffic Size</label></h6></td>"+
            "<td><input class='text' id='ref_trafficSize' name='ref_trafficSize' type='text' size='5' value=''>%</td></tr>"+
            "<tr><td><label for='ref_Lbuckets'>Learning Buckets</label></td>"+
            "<td><input class='text' id='ref_Lbuckets' name='ref_Lbuckets' type='text' size='10' value=''></td></tr>"+
            "<tr><td><label for='ref_Cbuckets'>Control Buckets</label></td>"+
            "<td><input class='text' id='ref_Cbuckets' name='ref_Cbuckets' type='text' size='10' value=''></td></tr>"+
            "<tr><td><h6><label for='ref_splitType'>Split Type</label></h6></td>"+
            "<td><select class='text' name='day' id='ref_splitType'>"+
            "<option>view</option><option>b-cookie</option></select></td></tr>"+
            
            
            "<tr><td><label for='ref_brule'>Business Rule</label></td>"+
            "<td><textarea row='3' cols='10' id='ref_brule' name='ref_brule' value='' ></textarea></td></tr>"+
            "<tr><td><label for='ref_func'>Objective Function</label></td>"+
            "<td><textarea row='3' cols='10' id='ref_func' name='ref_func' value='' >ctr</textarea></td></tr>"+
            "<tr><td><label for='ref_goal'>Goal</label></td>"+
            "<td><textarea row='3' cols='10' id='ref_goal' name='ref_goal' value='' ></textarea></td></tr>"+
            "<tr><td><label for='ref_ctype'>Content Pool Type</label></td>"+
            "<td><textarea row='3' cols='10' id='ref_ctype' name='ref_ctype' value='' ></textarea></td></tr>"+
            "<tr><td><label for='ref_csize'>Content Pool Size</label></td>"+
            "<td><input class='text' id='ref_csize' name='ref_csize' type='text' size='10' value=''></td></tr>"+
            "<tr><td><label for='ref_ccode'>C Code</label></td>"+
            "<td><input class='text' id='ref_ccode' name='ref_ccode' type='text' size='25' value=''></td></tr>"+  
            "<tr><td><label for='ref_durl'>Dashboard URL</label></td>"+
            "<td><input class='text' id='ref_durl' name='ref_durl' type='text' size='25' value=''></td></tr>"+  
            "<tr><td><input class='submit' type='submit' name='add' id='add' value='Add'></td></tr>"+
            "</table></body>"          
             ;         
    
    
    var body=data;
    this.popupPane.setHeader("Add New Bucket");
    this.popupPane.setBody(body);
    this.popupPane.render(document.body);
    this.popupPane.show();
    var add = document.getElementById('add'); 
    
    //alert(document.getElementById('stdaysel');
    this.setPopUpYUIdate();
    YAHOO.util.Event.addListener(add,'click', this.callAddBucket);   
   
},

callAddBucket : function(){   
      
      //Validation
  //  var stdate = new Date();
    // SUBMIT ACTION
    var frm = document.getElementById('frmMain');

    var myargs = new Array("ref_name","ref_parent","stmonthselect","stdayselect","styearselect",
                "ref_trafficSize","ref_Lbuckets","ref_Cbuckets",
                "ref_splitType","ref_brule","ref_func","ref_goal","ref_ctype","ref_csize","ref_ccode","ref_durl");
    for(cnt=1;cnt<=myargs.length;cnt++){
        eval("var input"+cnt+"= document.createElement('input');");
        eval("input"+cnt+".type = 'hidden';");
        eval("input"+cnt+".name ='"+myargs[cnt-1]+"';");   
        eval("var temp= document.getElementById('"+myargs[cnt-1]+"').value;");
        eval("input"+cnt+".value ='"+temp+"';");            
        eval("frm.appendChild(input"+cnt+")");
    }     
    var input= document.createElement('input');
    input.type = 'hidden';
    input.name='insertbucket';
    input.value='insertbucket';
    frm.appendChild(input);       

    frm.onsubmit();
    frm.submit();

},
 
handleOnSelChange : function(e) {
    var elem = YAHOO.util.Event.getTarget(e);
    if (elem) {
      switch (elem.id) {
        case "context":
          this.handleContextChange(e, elem);
      }
    }
  },
  
  handleContextChange : function(e, elem) {
    var selIntl     = document.getElementById('intl');
    var context     = elem.options[elem.selectedIndex].value;
    var intlOptions = YAHOO.Coke.ACluster.bucketmgmt.ContextMap.contexts[context];
    
    selIntl.options.length = 0;
    for (var i=0; i < intlOptions.length; i++) { 
      var intl = intlOptions[i];
      selIntl.options[selIntl.options.length] = new Option(intl, intl);
    }
  },

  searchBuckets : function(){
     var frm = document.getElementById('frmMain');
     var input= document.createElement('input');
     input.type = 'hidden';
     input.name='searchbuckets';
     input.value='searchbuckets';
     frm.appendChild(input);        
     frm.onsubmit();
     frm.submit();
  },
  
  
  
  addNotes : function(e){ 
    YAHOO.util.Event.preventDefault(e);
    var frm = document.getElementById('frmMain');
    var user = document.getElementById('userid').value;
    var notes = document.getElementById('notes').value;
    var j=1;
    var currentTime = new Date();
    var m = currentTime.getMonth() + 1;
    var month = (m<10)? '0'+m :m;
    var d = currentTime.getDate();
    var day = (d<10)? '0'+d :d;
    var yy = currentTime.getFullYear();
    var year = (yy<1000)? yy+1900 :yy;
    var curdate = (month + "-" + day + "-" + year);      
    var data,record;
  
    var found = false;
    var url = '/acluster_ws/rest/v1/BucketMgmt.addNotes?';
    for(var i=0;i<frm.elements.length;i++){
        var elem=frm.elements[i];
        if((elem.type=='checkbox') && (elem.checked)){            
            if(found)
                url += '&cb='+elem.value;
            else
                url += 'cb='+elem.value;
            found=true;
            data = {"Note Description":notes,"Bucket Name":elem.value, "Author":user,"Created Date":curdate};                                  
            record = YAHOO.widget.DataTable._cloneObject(data); 
            record.row = j++; 
            this.myDataTable1.addRow(record); 
            elem.checked=false;
        } 
        else if((elem.type=='radio') && (elem.checked)){
            if(elem.value=='Best Performance' && j>2){
                alert('Only one Bucket can be chosen as Best Performing.');
                found= false;
            }
            if(found)
                url += '&rb='+elem.value;
            else
                url += 'rb='+elem.value;
            elem.checked=false;
        }
    }
    if(found){
        url += '&notes='+notes;
        url += '&userid='+user;
        var callback = {
          success: function(o) {    
              
          },
          failure: function(o) {alert('Problem occured while adding a note.');}
        };
        YAHOO.util.Connect.asyncRequest('GET', url, callback);
    }
    else if(j<2){
        alert('Select Atleast one Bucket for adding Notes.');
    }
   
  },
  
   
  
setYUIdate : function(){

    var self = this;
     YUI({
        // All of this configuration information can be cut-and-pasted from the Gallery entry for
        // this modsule: http://yuilibrary.com/gallery/show/aui-calendar-datepicker-select
        gallery: 'gallery-2010.06.07-17-52',
        modules: {
            'gallery-aui-skin-base': {                                                                                                                                                        
                fullpath: 'http://yui.yahooapis.com/gallery-2010.06.07-17-52/build/gallery-aui-skin-base/css/gallery-aui-skin-base-min.css',
                type: 'css'
            },
            'gallery-aui-skin-classic': {
                fullpath: 'http://yui.yahooapis.com/gallery-2010.06.07-17-52/build/gallery-aui-skin-classic/css/gallery-aui-skin-classic-min.css',
                type: 'css',
                requires: ['gallery-aui-skin-base']
            }
        }
    }).use('gallery-aui-calendar-datepicker-select', function(Y) {
             /*   var start = Y.all("#st");
                if(start){
                    start.each(function (node){
                        alert(start.get('value'));
                    });    
                }*/

                //Want to store the Y so YUI can be used in other parts of the codebase.
                self.Y = Y;
                var datePickerSelopSt = new Y.DatePickerSelect({
                        displayBoundingBox: '#selcalst',
                        dateFormat: '%m/%d/%y',
                        yearRange: [ 2009, 2014 ],
                        dayField: Y.one("#stdaysel"),
                        dayFieldName: "stdaysel",
                        monthField: Y.one("#stmonthsel"),
                        monthFieldName: "stmonthsel",
                        yearField: Y.one("#styearsel"),
                        yearFieldName: "styearsel",
                        currentDay: 1,
                        populateDay : true,
                        setValue:false
                        
                }).render();
                var datePickerSelopEnd = new Y.DatePickerSelect({
                        displayBoundingBox: '#selcalend',
                        dateFormat: '%m/%d/%y',
                        yearRange: [ 2009, 2014 ],
                        dayField: Y.one("#enddaysel"),
                        dayFieldName: "enddaysel",
                        monthField: Y.one("#endmonthsel"),
                        monthFieldName: "endmonthsel",
                        yearField: Y.one("#endyearsel"),
                        yearFieldName: "endyearsel",
                        populateDay : true,
                        currentDay: 2
                }).render();
             
            // Setting thursday as end date
            var date = new Date();
            var nextYear = date.getFullYear() + 1;

            while(date.getDay() != 4)
            {
                date.setDate(date.getDate() + 1)    
            }
            var dayNode = Y.one("#enddaysel") ; 
            dayNode.set('value',date.getDate());            
      
    }); 
},


setPopUpYUIdate : function() {
      var self = this, // making sure I'm in the correct scope.

      //This method will run after YUI is on the page due to YUI being retrieved in setYUIDate()
      //So we can get the stored Y back and work with that even if we aren't inside the callback
      Y = self.Y;

      //Important to instantiate here because the nodes have not been created in setYUIDate()
      this.datePickerSelSt = new Y.DatePickerSelect({
            displayBoundingBox: '#cal_st',
            dateFormat: '%m/%d/%y',
            yearRange: [ 2009, 2014 ],
            dayField: Y.one("#stdayselect"),
            dayFieldName: "stdayselect",
            monthField: Y.one("#stmonthselect"),
            monthFieldName: "stmonthselect",
            yearField: Y.one("#styearselect"),
            yearFieldName: "styearselect"
    });
    this.datePickerSelSt.render();
  }

}
