// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults

Smirp = Class.create();
Smirp.prototype = {
    initialize: function(){
        var forms = $$('form.fancy_form');
        for(i=0;i<forms.length;i++){
          //  alert("fancy form found");
         
            new Smirp.FancyForm(forms[i]);
         
        }
        if($('protoolbar')){
            var oMenuBar = new YAHOO.widget.MenuBar("protoolbar", {
                                                            autosubmenudisplay: true,
                                                            hidedelay: 250,
                                                            lazyload: true });
            oMenuBar.render();
        }

       // $('loading').hide();
       // $('content').show();


        var btns = $$('a.btn');
        for(i=0;i<btns.length;i++){
            var cEventHolder = btns[i].onclick;
            var cMyid = btns[i].id;
            //alert(cEventHolder);
            new YAHOO.widget.Button(btns[i].id);
            //alert(cMyid+'-button');
            if($(cMyid+'-button')){
                $(cMyid+'-button').onclick = cEventHolder;
            }

        }
        var tabber = $$('div.tabber');
        for(i=0;i<tabber.length;i++){
            new YAHOO.widget.TabView(tabber[i].id);
        }
        //var tabView = new YAHOO.widget.TabView('demo');


    }
}

Smirp.FancyForm = Class.create();
Smirp.FancyForm.prototype = {
    _form:null,
    initialize: function(myform){
        this._form = myform;
        this.createSubmitButton();
        this.createRadioButtons();
        this.createSimpleEditor();
        this.createDatePicker();
        
    },
    createRadioButtons: function(){
        var groups = $$('#'+this._form.id+' div.yui-buttongroup');
        for(i=0;i<groups.length;i++){
            new YAHOO.widget.ButtonGroup(groups[i].id);
        }
    },
    createSubmitButton: function(){
        var btns = $$('#'+this._form.id+' .btn');
        for(i=0;i<btns.length;i++){
            new YAHOO.widget.Button(btns[i].id);
        }
    },
    createSimpleEditor: function(){
        
        var textfields = $$('#'+this._form.id+' div.fancy textarea');
         var myConfig = {
            height: '200px',
            width: '100%',
            dompath: true,
            handleSubmit: true
        };
        for(i=0;i<textfields.length;i++){
            var myEditor = new YAHOO.widget.SimpleEditor(textfields[i].id, myConfig);
            myEditor.render();
            myEditor._defaultToolbar.titlebar = false;
            //myEditor._defaultToolbar.buttonType = "advanced";
        }
        
    },
    createDatePicker: function(){
        var dpickers = $$('#'+this._form.id+' .date-field');
        //alert(dpickers.length);
        for(p=0;p<dpickers.length;p++){
            new Smirp.CalendarForm(dpickers[p],"calendar"+i);
        }
    }
}
Smirp.DesignBox = Class.create();
Smirp.DesignBox.prototype = {
    _dialog:null,
    initialize: function(id){
        //alert('whatever');
        if($(id)){
            $(id).setStyle({ display: 'block'});
            var dialog = new YAHOO.widget.Dialog(id,
							{ width : "500px",
							  visible : false,
							  constraintoviewport : true
							});
            dialog.render();
            this._dialog = dialog;
        }

    },
    show: function(){
        this._dialog.show();
    }
}

Smirp.CalendarForm = Class.create();
Smirp.CalendarForm.prototype = {
    dfield:null,
    cid:null,
    cal:null,
    yearselect:null,
    monthselect:null,
    dayselect:null,
    initialize: function(datefield, calid){
        this.dfield = datefield;
        this.calid = calid;
        var selects = this.dfield.down("div.input").childElements();
        this.yearselect = selects[0];
        this.monthselect = selects[1];
        this.dayselect = selects[2];

        for(i=0;i<selects.length;i++){
            selects[i].setStyle({display:'none'});
        }


        this.dfield.insert({after:"<div class=\"calspacer\"><div id=\""+this.calid+"\"></div></div>"});
        var navConfig = {
                strings : {
                    month: "Choose Month",
                    year: "Enter Year",
                    submit: "OK",
                    cancel: "Cancel",
                    invalidYear: "Please enter a valid year"
                },
                monthFormat: YAHOO.widget.Calendar.SHORT,
                initialFocus: "year"
            }

        this.cal = new YAHOO.widget.Calendar(this.calid, {navigator:navConfig});
        this.cal.selectEvent.subscribe(this.selectHandler.bind(this), this.cal, true);
        var date = new Date(this.monthselect.value+"/"+this.dayselect.value+"/"+this.yearselect.value);
        this.cal.setMonth(date.getMonth());
        this.cal.setYear(date.getFullYear());
        this.cal.select(this.monthselect.value+"/"+this.dayselect.value+"/"+this.yearselect.value);
        this.cal.render();
    },
    selectHandler: function(type, args, obj){
        var dates = this.cal.getSelectedDates();
        var aDate = dates[0];
        this.dayselect.value = aDate.getDate();
        this.yearselect.value = aDate.getFullYear();
        this.monthselect.value = (aDate.getMonth()+1);
    }
}

Smirp.SelectableChecks = Class.create();
Smirp.SelectableChecks.prototype = {
    check_box_table:null,
    checkbox_array:null,
    most_recent:null,
    initialize: function(_table){
      this.setTable(_table);
    },
    getCommaSeperatedSelected: function(){
      var str = "";
      var checked=[];
      for(i=0;i<this.checkbox_array.length;i++){
          if(this.checkbox_array[i].checked){
            checked.push(this.checkbox_array[i].value);
          } 
      }
      return checked.join(",");
    },
    setCheckboxArray: function(){
        this.checkbox_array = this.check_box_table.select('[type="checkbox"]');
    },
    setTable: function(_table){
      this.check_box_table  = _table;
      this.setCheckboxArray();
      this.listenToCheckboxes();

    },
    listenToCheckboxes: function(){
      for(i=0;i<this.checkbox_array.length;i++){
          this.checkbox_array[i].observe('click', this.handleCheck.bind(this));
      }
    },
    handleCheck: function(e){
      if(e.shiftKey){
        var last = this.checkbox_array.indexOf(e.element());
        if(this.most_recent){
          var first = this.checkbox_array.indexOf(this.most_recent);
          if(first < last){
            for(i=first+1;i<last;i++){
              if(this.checkbox_array[i].checked){
              this.checkbox_array[i].checked=false;
              }else{
              this.checkbox_array[i].checked=true;
              }
            }
          }else{
            for(i=first-1;i>last;i--){
              if(this.checkbox_array[i].checked){
              this.checkbox_array[i].checked=false;
              }else{
              this.checkbox_array[i].checked=true;
              }
            }
          }
        }
      }else{
        this.most_recent = e.element();
      }
    }
}



Event.observe(window, 'load', function(){
    smirp = new Smirp();
    if($('urltable')){
      droptable= new Smirp.SelectableChecks($('urltable').down());
    } 
});
