
/**

  Webuddha wbTeamPro
  (c)2010 Webuddha.com, The Holodyn Corporation - All Rights Reserved

  CHANGELOG ************

  v106 - Updated for jQuery v1.4.4

**/

/********************************* jQuery */
  jQuery.fn.up = function( query ){
    var el = $(this[0]), i=0;
    do {
      var p = el.parent();
      if( !p.length )return p;
      var f = p.filter(query);
      if( f.length ) return f;
      el = $( p.get(0) );
      } while( i++ < 100 );
    };
  jQuery.fn.hasClasses = function(){
    var clist=arguments, result=true;
    for(i=(clist.length-1); i>=0 && result; i--)
      result = $(this).hasClass( clist[i] );
    return result;
  };

/********************************* Main Class */
  var _addon_wbteampro = {
    lang: {
      'tabProject': 'Project',
      'tabProjects': 'Projects',
      'tabTickets': 'Tickets',
      'loadMsg': 'Loading... Please Wait...',
      'noActiveLogs': 'No Active Timelogs',
      'deletePrompt': 'Type "DELETE" to confirm your action',
      'deleteAnswer': 'DELETE',
      'deleteCancelled': 'Delete Cancelled',
      'msgTimelogStopped': 'Timelog Stopped after [time]',
      'msgTimelogSaved': 'Timelog Saved for [time]',
      'btnStartTimer': 'Start Timer',
      'btnStopTimer': 'Stop Timer',
      'uiTimelogStart': 'Start',
      'uiTimelogSave': 'Save',
      'textLimitRemain': '[remain] of [limit] characters remain',
      'uiTimelogCancel': 'Cancel',
      'textLimitReached': 'maximum [limit] characters reached'
      },
    name: 'Webuddha Team Prospect Error',
    halt: function(m){alert(this.name+'\n'+m);return;},
    init: function() {
      /**** Client Select ****/
        $(document).find('input[type=text][name=userid],input[type=text][name=client],input[type=text][name=client_userid]').each(function(i,el){
          new _addon_wbteampro.ajaxSelector(el,'ajax.clientlist'); });
      /**** Project Select ****/
        $(document).find('input[type=text][name=project_id]').each(function(i,el){
          new _addon_wbteampro.ajaxSelector(el,'ajax.projectlist'); });
    },

    /*
      ---------------------------------------------------------
      Keep Session Alive
      ---------------------------------------------------------
    */
    keepAlive: function(timeout){
      var timeout = timeout>0 ? timeout : 30000;
      setTimeout( function(){
        $.post('wbteampro.php', {'keepalive':'1','timeout':timeout});
        _addon_wbteampro.keepAlive(timeout);
        }, timeout);
    },

    /*
      ---------------------------------------------------------
      AJAX Quick Selector for INPUT Fields
      ---------------------------------------------------------
    */
    ajaxSelector: function(el,task){
      this.task = task;
      this.fld = $(el);
      this.par = $(el).parent();
      this.btn = $(document.createElement('a'));
        this.btn[0]._wbcs = this;
      this.img = $(document.createElement('img'));
        this.img.attr('src','images/icons/search.png');
        this.img.css('border','none');
        this.btn.append(this.img);
      this.srch = $(document.createElement('input'));
        this.srch[0]._wbcs = this;
        this.srch.change(function(){ this._wbcs.query(); });
        this.srch.keypress(function(){ this._wbcs.query(); });
        this.srch.attr('maxlength', 24);
      this.list = $(document.createElement('ul'));
      this.wrap = $(document.createElement('div'));
        this.wrap.addClass('wrap');
        this.wrap.append(this.srch);
        this.wrap.append(this.list);
      this.ctl = $(document.createElement('div'));
        this.ctl.addClass('wbteampro_ajaxselector');
        this.ctl.append(this.btn);
        this.ctl.append(this.wrap);
      this.par.append(this.ctl);
      this.btn.click(function(ev){ this._wbcs.toggle(); this._wbcs.query(this._wbcs.fld.val()); });
      this.toggle = function(){ if(this.ctl.hasClass('active'))this.hide();else this.show(); };
      this.show = function(){ this.ctl.addClass('active'); this.srch[0].focus(); };
      this.hide = function(){ this.ctl.removeClass('active');  };
      this.update = function(val){ this.fld.val(val); this.hide(); this.fld.change(); }
      this.lastval = '';
      this.query = function(fVal){
        var self = this, delay=250;
        clearTimeout(self.timeout);
        self.timeout = setTimeout(function(){
          var sval = '';
          var fields = {
            'view': 'raw',
            'task': self.task,
            'value': fVal,
            'search': self.srch.val()
            };
          var params = self.fld.attr('params');
          try{
            if( params ){
              eval('params = '+params);
              var key;
              for(key in params) fields[key] = params[key];
            }
          } catch(e){};
          // if(this.lastval == fields.search)return;
          // this.lastval = fields.search;
          self.srch.addClass('lookup');
          $.getJSON("wbteampro.php", fields, function(data,stat,xhr){
            self.srch.removeClass('lookup');
            self.list.html('');
            if(data.records){
              var key;
              for(key in data.records){
                var row = $(document.createElement('li'));
                row.val(data.records[key].id);
                row.html('<a href="javascript:void(0);">'+data.records[key].val+'</a>');
                row.click(function(){ self.update(this.value); });
                self.list.append(row);
              }
            }
            });
          }, delay);
      }
    },

    /* --------------------------------------------------------- */
    promptDelete: function(onSuccess, onCancel){
      if( !this._promptDeleteUI )
        this._promptDeleteUI = $('#dialog_prompt_delete').dialog({
          autoOpen:true,
          resizable:false,
          modal:true,
          buttons:{
            'Confirm': function() {
              $(this).dialog('close');
              if( String( $(this).find('#ui_prompt_delete').val() ).toLowerCase() == 'delete' ) onSuccess();
                else onCancel();
              },
            'Cancel': function() {
              $(this).dialog('close');
              onCancel();
              }
            }
          });
      else
        this._promptDeleteUI.dialog('open');
    },

    /* --------------------------------------------------------- */
    pageTask: '',
    getPageTask: function(){
      if( this.pageTask=='' ) this.pageTask = String(document.location).replace(/^.*task=([a-z\.\-]+).*$/,'$1');
      return this.pageTask;
    },

    /* --------------------------------------------------------- */
    ajaxPost: function(call, vars, callback){
      if( vars.view != 'raw' ) this.showLoading();
      $.post(call, vars, callback);
    },
    showLoading: function(){
      $("#wbteampro").html('<div style="padding:10px;margin:10px;background:#FF9;">'+_addon_wbteampro.lang.loadMsg+'</div>');
    },

    /* --------------------------------------------------------- */
    toggleOpt: function(el){
      var n = $(el).attr('id');
      var c = $(el).attr('checked');
      if( c ) $('#'+n+'_opt').show();
        else $('#'+n+'_opt').hide();
      return c;
    },

    /* --------------------------------------------------------- */
    enableOpt: function(el,fc){
      var n = $(el).attr('id');
      var c = $(el).attr('checked');
      if( c ) $('#'+n+'_opt').removeClass('disabled');
        else $('#'+n+'_opt').addClass('disabled');
      $('#'+n+'_opt').find('input,textarea,select').each( function(i,el){
        $(el).attr('disabled',( c ? '' : 'disabled'));
        if(fc==i && c) $(el).focus();
        });
      return c;
    },

    /* --------------------------------------------------------- */
    getFormData: function(el){
      var fields = {};
      $(el).find('input,select,textarea').each(function(i,e){fields[ e.name ]=$(e).val();});
      return fields;
    },

    /* --------------------------------------------------------- */
    setFormAct: function( el, act ){
      $(el).up('form').find('input[name=act]').val(act);
    },

    /* --------------------------------------------------------- */
    updateForm: function( el, data, sbt ){
      var key, o, f = $(el).up('form');
      for(key in data){ o = f.find(key); if( o ) $(o).val(data[key]); }
      if( sbt ) f.submit();
    },

    /* --------------------------------------------------------- */
    postForm: function( el, act ){
      if( typeof(el)=='string' ) form=$('#'+el);
        else form = $(el).up('form');
      if( act ) form.find('input[name=act]').val(act);
      if( act == 'delete' && prompt(_addon_wbteampro.lang.deletePrompt,'') != _addon_wbteampro.lang.deleteAnswer )
        return false;
      form.submit();
    },

    /* --------------------------------------------------------- */
    resetForm: function( el ){
      if( typeof(el)=='string' ) form=$('#'+el);
        else form = $(el).up('form');
      $(form).find('input,select').each(function(i,e){
        if( e.tagName == 'INPUT' && e.type == 'text' ) $(e).val('');
        else if( e.tagName == 'SELECT' ) $(e).val('');
        });
      form.submit();
    },

    /* --------------------------------------------------------- */
    postSort: function( el, order ){
      if( typeof(el)=='string' ) form=$('#'+el);
        else form = $(el).up('form');
      if( order ) form.find('input[name=order]').val(order);
      form.submit(); return false;
    },

    /* --------------------------------------------------------- */
    postNav: function( el, dir ){
      if( typeof(el)=='string' ) form=$('#'+el);
        else form = $(el).up('form');
      if( !form ) return;
      var page = form.find('select[name=page]'); if( !page ) return;
      $(page).val( ($(page).val()*1) + dir ); form.submit();
    },

    /* --------------------------------------------------------- */
    doExport: function( el, data ){
      var form = $(el).up('form');
      var url = 'wbteampro.php?act=export&view=raw';
      $(form).find('input,select').each(function(i,e){
        url += '&'+e.name+'='+encodeURI($(e).val());
        });
      document.location=url;
    },

    /* --------------------------------------------------------- */
    inspect: function(o){
      var div = document.createElement('div');
      document.body.appendChild( div );
      var key, txt = div.innerHTML;
      for(key in o) txt = txt + key + ' = ' + typeof(o[key]) + "<br/>";
      div.innerHTML = txt;
    },

    /* --------------------------------------------------------- */
    limitChars: function(el, limit, infoid){
      var el = $(el);
      var text = el.val();
      var textlength = text.length;
      if(textlength > limit){
        $('#' + infoid).html(String(_addon_wbteampro.lang.textLimitReached).replace(/\[limit\]/, limit));
        el.val(text.substr(0,limit));
         return false;
      } else {
        $('#' + infoid).html(String(_addon_wbteampro.lang.textLimitRemain).replace(/\[limit\]/, limit).replace(/\[remain\]/, (limit - textlength)));
        return true;
      }
    },

    /* --------------------------------------------------------- */
    initDateTime: function( str ){
      var str = str ? str : '.datetime_picker';
      $(str).each(function(n,el){
        $(el).attr('maxlength','20');
        $(el).datetimepicker({
          showSecond: true,
          timeFormat: "hh:mm:ss",
          dateFormat: "yy-mm-dd",
          showOn: "button",
          buttonImage: "images/showcalendar.gif",
          buttonImageOnly: true,
          showButtonPanel: true
          });
      });
    },

    /* --------------------------------------------------------- */
    initTimeDialog: function( str ){
      var str = str ? str : '#dialog_timelog_note'; var btns = {};
      btns[ _addon_wbteampro.lang.uiTimelogStart ] = function() {
        $(this).dialog('close');
        var el = $(this).data('el');
        var aFlag = $(this).find('#ui_timelog_autoflag');
        var fields = $(this).data('fields');
        fields.timelog_note = $(this).find('#ui_timelog_note').val();
        if( aFlag.attr('checked') ){
          fields.act = 'manual';
          fields.set_duration = $(this).find('#ui_timelog_duration').val();
          fields.timelog_start = $(this).find('#ui_timelog_start').val();
          fields.owner_adminid = $(this).find('#ui_timelog_adminid').val();
          $(this).find('#ui_timelog_duration').val('');
          aFlag.click();
        }
        $(this).find('#ui_timelog_note').val('');
        _addon_wbteampro.actionTimelog.timelog_exec(el,fields);
        };
      btns[ _addon_wbteampro.lang.uiTimelogCancel ] = function() { $(this).dialog('close'); };
      return $(str).dialog({
        autoOpen:false,
        resizable:false,
        modal:true,
        width:600,
        buttons: btns
        });
    },

    /* --------------------------------------------------------- */
    uiTimelogAF: function(el){
      var btn = $(el).up('.ui-dialog').find('div.ui-dialog-buttonpane > button').get(0);
      if( this.enableOpt(el,1) ) $(btn).html(_addon_wbteampro.lang.uiTimelogSave);
        else $(btn).html(_addon_wbteampro.lang.uiTimelogStart);
    },

    /* --------------------------------------------------------- */
    initTicketDialog: function( str ){
      var str = str ? str : '#dialog_ticket_create';
      return $(str).dialog({
        autoOpen:true,
        resizable:false,
        modal:true,
        buttons:{
          'Create': function() {
            $(this).dialog('close');
            var el = $(this).data('el');
            var fields = $(this).data('fields');
            fields.title = $(this).find('#ui_ticket_title').val();
            fields.message = $(this).find('#ui_ticket_message').val();
            fields.task = 'ticket.create';
            fields.view = 'raw';
            alert( '123' );
            $.getJSON("wbteampro.php", fields, function(data,stat,xhr){
              alert('Complete');
              // console.log( data );
              });
            },
          'Cancel': function() {
            $(this).dialog('close');
            }
          }
        });
    }

  };

/********************************* list expander */
  _addon_wbteampro.expander = {
    'isOn': true,
    'enable': function(){ this.isOn = true; },
    'disable': function(){ this.isOn = false; },
    'listclick': function(el,mode){
      if( !this.isOn ) return;
      var tb = $(el).up('table').get(0); if( !tb ) return;
      var bd = $(tb).find('tbody').get(0); if( !bd ) return;
      $(bd).find('tr a.expand').each(function(i,e){
        if( $(e).hasClass('isopen') != mode )
          $(e).click();
        });
    },
    'click': function(el){
      if( !this.isOn ) return;
      var tr = $(el).up('tr').get(0);
      var isOpen = $(el).hasClass('isopen');
      var getLevel = function(el){
        var cs, css = String(el.className).split(' ');
        for(cs in css) if( /level\d+/.test(css[cs]) ) return (String(css[cs]).replace(/level/,''))*1;
        return null;
        };
      var sib = tr, sibl, trl = getLevel(tr), spec = 0, exp;

      /* Store in Cookie for Reload */
      var cid = String('expander_'+_addon_wbteampro.getPageTask()).replace(RegExp('\\.','gi'),'_');
      var eck = wbSession.get(cid);
      if( isOpen ) eck += ','+tr.id; else eck = String(eck).replace(RegExp(tr.id,'gi'),'');
      eck = String(eck).replace(/null/,','); eck = String(eck).replace(/\,+/,',');
      wbSession.set(cid,eck);

      do {
        sib = $(sib).next().get(0);
        if( sib && sib.tagName == 'TR' ){
          sibl = getLevel(sib);
          if(sibl > trl) {
            if( sibl == spec ) spec = 0;
            if( !spec || sibl <= spec ){
              if( !isOpen ) exp = $(sib).find('a[class*=expand]').get(0);
              if( exp && !$(exp).hasClass('isopen') ) spec = sibl;
              sib.style.display = isOpen ? 'none' : 'table-row';
            }
          }
        } else break;
      } while(sibl > trl);
      if( isOpen ){
        $(el).removeClass('isopen');
      } else {
        $(el).addClass('isopen');
      }
    }
  }

/********************************* project.topic.list */
  _addon_wbteampro.projectTopicList = {
    'formWrapID': '_wbteampro_topic_edit',
    'edit': function(el,topic_id,act){
      if( act == 'delete' ){
        if( prompt(_addon_wbteampro.lang.deletePrompt,'') == _addon_wbteampro.lang.deleteAnswer ){
          document.location = 'wbteampro.php?task=project.topic.view&act=delete&topic_id='+topic_id;
        } else {
          alert(_addon_wbteampro.lang.deleteCancelled);
        }
        return;
      }
      var url = 'wbteampro.php?task=project.topic.view'
              + ( act ? '&act='+act : '')
              + ( act == 'new' ? '' : (topic_id ? '&topic_id'+topic_id : ''))
              + '&project_id=' + $('#activerecordinfo').find('input[name=project_id]').val()
              ;
      document.location = url;
    },
    'close': function(el){
      var form = $(el).up('form');
      var topic_id = $(form).find('input[name=thread_topic_id]').val();
      var url = 'wbteampro.php?task='
              + ( topic_id ? 'project.topic.view&topic_id=' + topic_id : 'project.topic.list' )
              + '&project_id=' + $(form).find('input[name=project_id]').val()
              ;
      document.location = url;
    },
    'expand': function(el,size){ $(el).css('height',size); },
    'showDetail': function(el,wrapid){
      if( !el._detailWrap ){
        if(wrapid)el._detailWrap=wrapid;
          else el._detailWrap='wrap_topic_detail';
      }
      $('#'+el._detailWrap).css('display','table-row');
      // $('#'+el._detailWrap).css('display','none');
    }
  };

/********************************* project.action.list */
  _addon_wbteampro.projectActionList = {
    'listMode': 'list',
    'formWrapID': '_wbteampro_action_edit',
    'init': function( tbl, listMode ){
      /* Table Indicator */
      this.listMode = listMode ? listMode : 'list';
      var tbl = tbl ? tbl : '.datatable';
      /* THEAD Links */
      $(tbl).find('thead a').each(function(n,el){
        if( $(el).hasClasses('sbtn','listexpand') ){
          $(el).attr('href','javascript:void(0);');
          $(el).click(function(){
            var ex = $(this).hasClass('expand');
            if( ex ) $(this).removeClass('expand');
              else $(this).addClass('expand');
            _addon_wbteampro.expander.listclick(this,ex);
            });
        }
        });
      /* TBODY Links */
      $(tbl).find('tbody tr').each(function(n,el){
        var action_id = $(el).attr('action_id');
        if( action_id ){
          $(el).find('a').each(function(n,el){
            $(el).attr('action_id', action_id);
            if( $(el).hasClass('expand') ){ /* EXPANDER */
              $(el).attr('href','javascript:void(0);');
              $(el).click(function(){ _addon_wbteampro.expander.click(this); });
            }
            else if( $(el).hasClasses('sbtn','edit') || $(el).hasClasses('sbtn','view') || $(el).hasClasses('icon','edit') ){ /* EDIT */
              $(el).attr('href','javascript:void(0);');
              $(el).click(function(){ _addon_wbteampro.projectActionList.edit(this,$(this).attr('action_id')); });
            }
            else if( $(el).hasClass('viewlog') ){ /* VIEW TIME LOG */
              $(el).attr('href','javascript:void(0);');
              $(el).click(function(){
                var project_id = $('#activerecordinfo').find('input[name=project_id]').val();
                document.location='wbteampro.php?task=project.timelog.list&project_id=' + project_id;
                });
            }
            else if( $(el).attr('href') == '#' ){ /* DISABLE REMAINING */
              $(el).attr('href','javascript:void(0);');
            }
            });
        }
        });
      /* Open Active Action */
      var action_id = String( document.location ).replace(/^.*\#action(\d+).*?$/,'$1') * 1;
      if( action_id ) {
        var el = $(tbl).find('a[name=action'+action_id+']');
        _addon_wbteampro.projectActionList.edit(el,action_id);
      }
    },
    'reload': function( action_id ){
      var list_mode = $('#wbteampro_control').find('input[name=list_mode]').val();
      var project_id = $('#activerecordinfo').find('input[name=project_id]').val();
      var url = 'wbteampro.php?task=project.action.list'
              + (project_id ? '&project_id=' + project_id : '')
              + (list_mode ? '&list_mode=' + list_mode : '')
              ;
      document.location = url;
    },
    'close': function(el,action_id,act){
      $('#'+_addon_wbteampro.projectActionList.formWrapID).slideUp('fast',function(){
        $(this).up('tr').remove();
        if( el ) _addon_wbteampro.projectActionList.edit(el,action_id,act);
        _addon_wbteampro.projectActionList.enableList();
        });
    },
    'save': function(el){
      var fields = {
        'view': 'raw',
        'task': 'project.action.edit',
        'act': 'apply'
        };
      $(el).find('input,select,textarea').each(function(i,e){fields[ e.name ]=$(e).val();});
      $.getJSON("wbteampro.php", fields, function(data,stat,xhr){ _addon_wbteampro.projectActionList.onSaveReturn(el,fields,data,stat,xhr); });
    },
    'onSaveReturn': function(el,fields,data,stat,xhr){
      if( data && data.error )
        return alert( data.error );
      var key, rkey, list_mode = _addon_wbteampro.projectActionList.listMode;
      if( fields.action_id == '' )
        return _addon_wbteampro.projectActionList.reload( 0 );
      if( data && data.record ){
        for(key in data.record)
          $(el).find('input[name='+key+']').val( data.record[key] );
      }
      if( data && data.records ){
        var tbl = $(el).up('table')[0];
        if( tbl.tagName == 'TABLE' ){
          var row, td, sp, ac, tv;
          for(key in data.records){
            row = $(tbl).find('tr#'+key)[0];
            if( row && row.tagName == 'TR' ){
              for(rkey in data.records[key]){
                td = $(row).find('td.'+rkey);
                if( rkey == 'access' ){
                  tv = data.records[key][rkey];
                  ac = td.find('a');
                  ac.removeClass('hidden').removeClass('view').removeClass('modify').removeClass('inherit');
                  if( /^i/.test(tv) ){ tv=String(tv).replace(/^i/,''); ac.addClass('inherit'); }
                  ac.addClass((tv=='1'?'view':(tv=='2'?'modify':'hidden')));
                } else {
                  sp = td.find('span');
                  if( sp.length )
                    sp.html( data.records[key][rkey] );
                  else
                    td.html( data.records[key][rkey] );
                }
              }
            }
          }
        }
      }
      if( fields.act == 'save' ) _addon_wbteampro.projectActionList.close();
    },
    'access': function(el,action_id){
      var visible = String($(el).attr('class')).split(' ').pop();
      if( $(el).hasClass('inherit') )
        visible = 'hidden';
      else
        visible = (visible=='hidden'?'view':(visible=='view'?'modify':($(el).hasClass('root')?'hidden':'inherit')));
      var fields = {
        'view': 'raw',
        'task': 'project.action.edit',
        'act': 'apply',
        'action_id': action_id,
        'client_visible': visible
        };
      $.getJSON("wbteampro.php", fields, function(data,stat,xhr){ _addon_wbteampro.projectActionList.onSaveReturn(el,fields,data,stat,xhr); });
    },
    'edit': function(el,action_id,act){
      var div = $('#'+_addon_wbteampro.projectActionList.formWrapID).get(0);
      if( div ){
        if( $(div).hasClass(act+'-action'+action_id) )
          return _addon_wbteampro.projectActionList.close();
        return _addon_wbteampro.projectActionList.close(el,action_id,act);
      }
      var row = document.createElement('tr');
          row.className = 'editAction';
      var col = document.createElement('td');
          col.setAttribute('colSpan','14');
      var div = document.createElement('div');
          div.id = _addon_wbteampro.projectActionList.formWrapID;
          div.className = String(act+'-action'+action_id+' tabItemEdit');
          col.appendChild( div );
      row.appendChild( col );
      var top = $(el).up('tr')[0];
          row.refEl = top;
      top.parentNode.insertBefore( row, top.nextSibling );
      $(div).html('<div align=center><img src="AddOns/_wbteampro_/inc/img/ajax-loading.gif" /></div>');
      $.post("wbteampro.php", {
        'view': 'raw',
        'task': 'project.action.edit',
        'act': (act ? act : 'edit'),
        'project_id': $('#activerecordinfo').find('input[name=project_id]').val(),
        'action_id': (act=='new' ? 0 : action_id),
        'parent_action_id': (act=='new' ? action_id : 0)
        }, function(data){
          $(div).html( data );
          $(div).slideDown('fast',function(){});
          _addon_wbteampro.projectActionList.disableList();
          $(".datepick-new").datepicker({
            dateFormat: "yy-mm-dd",
            showOn: "button",
            buttonImage: "AddOns/_wbteampro_/inc/img/showcalendar.gif",
            buttonImageOnly: true,
            showButtonPanel: true
          });
        });
    },
    'enableList': function(){
      if( _addon_wbteampro.projectActionList.sortObj ){
        _addon_wbteampro.projectActionList.sortObj.enable();
        _addon_wbteampro.expander.enable();
      }
    },
    'disableList': function(){
      if( _addon_wbteampro.projectActionList.sortObj ){
        _addon_wbteampro.projectActionList.sortObj.disable();
        _addon_wbteampro.expander.disable();
      }
    }
  };

/********************************* project.file.list */
  _addon_wbteampro.projectFileList = {
    'edit': function(el,file_id,act){
      if( act == 'delete' ){
        if( prompt(_addon_wbteampro.lang.deletePrompt,'') == _addon_wbteampro.lang.deleteAnswer ){
          document.location = 'wbteampro.php?task=project.file.view&act=delete&file_id='+file_id;
        } else {
          alert(_addon_wbteampro.lang.deleteCancelled);
        }
        return;
      }
      var url = 'wbteampro.php?task=project.file.view'
              + ( act ? '&act='+act : '')
              + ( act == 'new' ? '' : (file_id ? '&file_id='+file_id : ''))
              + '&project_id=' + $('#activerecordinfo').find('input[name=project_id]').val()
              ;
      document.location = url;
    },
    'close': function(el){
      var form = $(el).up('form');
      var file_id = $(form).find('input[name=thread_file_id]').val();
      var url = 'wbteampro.php?task='
              + ( file_id ? 'project.file.view&file_id=' + file_id : 'project.file.list' )
              + '&project_id=' + $(form).find('input[name=project_id]').val()
              ;
      document.location = url;
    },
    'download': function(el){
      var form = $(el).up('form');
      var file_id = $(form).find('input[name=file_id]').val();
      if( file_id ){
        var url = 'wbteampro.php?task=project.file.view&act=download&view=raw&file_id='+file_id;
        document.location = url;
      } else
        alert('Error Locating File ID');
    },
    'showDetail': function(el,wrapid){
      if( !el._detailWrap ){
        if(wrapid)el._detailWrap=wrapid;
          else el._detailWrap='wrap_file_detail';
      }
      $('#'+el._detailWrap).css('display','table-row');
      // $('#'+el._detailWrap).css('display','none');
    }
  };

/********************************* profile.xxx */
  _addon_wbteampro.supportTicket = {
    'create': function(fields){ window.open('submitticket.php'); }
  }

/********************************* Initialize */
  $(document).ready(function(){
    wbSession.start();
    _addon_wbteampro.init();
    _addon_wbteampro.initDateTime();
    _addon_wbteampro.initTimeDialog();
    });

