// bpmLib.js

// copyright  bpm consult ag, CH-Birsfelden
// contact    webdev@bpm.ch
// license    restricted

// version history:
// 2.7.1-0  16.02.2010  sb  initial release
// 2.7.2-0  05.07.2010  sb  checkall fixed [BEE-4544]
// 2.7.2-1  07.07.2010  sb  alert message bos added [DRD-412]


// execute on domReady and on ajaxChanges
function bpminit(){
  
    // alert message box [DRD-412]
    if (Ext.get('alert').dom.innerHTML.replace(/^\s+|\s+$/g, '') != '') {
      new beeline.alert({
        content: Ext.get('alert').dom.innerHTML + '<p class="alertboxButton"><span class="button"><input class="alertboxClose" type="reset" name="close" value="OK"/></span></p>',
        shadeBg: false
      });
      Ext.get('alert').dom.innerHTML = '';
    }

    // tool tips
    Ext.select('.quicktip').each(function(e){
        beeline.web.createToolTip(e, 'quicktip', e.getAttribute('alt'), e.getAttribute('title'), new Array(10, -20));
    });
    
    // nummeric input fields
    Ext.select('input.int').each(function(e){
        e.on('keypress', function(k){
            var key = k.getKey();
            var keychar = String.fromCharCode(key);
            if ((key == null) || (key == 0) || (key == 8) || (key == 9) || (key == 13) || (key == 27) || (key == 116)) {
                return;
            }
            else 
                if ((" +0123456789").indexOf(keychar) > -1) {
                    return;
                }
            k.stopEvent();
        });
    });
    
    // notepad slider
    if (Ext.get('showNotepadSlider')) {
      try {
        if (Ext.get('showNotepadSlider').prev().first().first().hasClass('empty')) {
          Ext.get('showNotepadSlider').setStyle('display', 'none');
        }
        else {
          Ext.get('showNotepadSlider').on('click', function(ev, html, opt){
          
            var NotepadSlider = Ext.get(ev.target.id);
            
            var Quicknotepad = NotepadSlider.prev().first();
            var QuicknotepadInfo = Quicknotepad.first();
            var QuicknotepadSlider = Quicknotepad.last();
            
            if ((NotepadSlider.hasClass('exit') === false)) {
              NotepadSlider.addClass('exit');
              QuicknotepadInfo.setStyle('display', 'none');
              QuicknotepadSlider.setStyle('display', 'block');
              QuicknotepadSlider.slideIn('t', {
                useDisplay: true
              });
            }
            else {
              NotepadSlider.removeClass('exit');
              QuicknotepadInfo.setStyle('display', 'block');
              QuicknotepadSlider.setStyle('display', 'none');
              QuicknotepadSlider.slideOut('t', {
                useDisplay: true
              });
            }
          });
        }
      } catch(err){};
    }
    
    
    // show more text (detailContent)
    if (Ext.get('summary')) {
        Ext.get('summary').setStyle('display', 'none');
        Ext.get('showSummary').on('click', function(e){
            e.stopEvent();
            if (Ext.get('summary').getStyle('display') == 'none') {
                Ext.get('summary').slideIn();
            }
            else {
                Ext.get('summary').slideOut('t', {
                    useDisplay: true
                });
            }
        });
    }
    
    // staff selection
    if (Ext.get('abc')) {
        var abcSelect = Ext.get('abc').select('span');
        var abcStaff = Ext.get('staff').select('div');
        var char = 'A';
        abcStaff.each(function(e){
            if (e.select('p').item(0).dom.innerHTML[0] == char) {
                e.setStyle('display', 'block');
            }
        });
        abcSelect.each(function(e){
            e.on('click', function(event, target){
                char = target.innerHTML[0];
                abcSelect.each(function(staffChar){
                    staffChar.addClass('hidden');
                });
                Ext.get(target).removeClass('hidden'); //?
                Ext.get(target).addClass('current');
                abcStaff.each(function(dspStaffs){
                    if (dspStaffs.select('p').item(0).dom.innerHTML[0] == char) {
                        dspStaffs.setStyle('display', 'block');
                    }
                    else {
                        dspStaffs.setStyle('display', 'none');
                    }
                });
            });
        });
    }
    
    // limit comment textarea to 370 chars
    if (Ext.get('Comment2')) {
        var limitNum = 370;
        Ext.get('Comment2').on('keypress', function(k){
            var key = k.getKey();
            if ((key == null) || (key == 0) || (key == 8) || (key == 9) || (key == 13) || (key == 27) || (key == 116)) {
                return;
            }
            if (Ext.get('Comment2').dom.value.length > limitNum) {
                k.stopEvent();
            }
            else {
                Ext.get('counter').dom.value = limitNum - Ext.get('Comment2').dom.value.length;
            }
        })
    }
    

    if (Ext.get('searchresult')) {
        Ext.get('searchresult').select('p.list').each(function(e){
            e.on('mouseover', function(event, target){
                if ((Ext.get(target).hasClass('list')) && (Ext.get(target).hasClass('biginfo') == false)) {
                    Ext.get('searchresult').select('p.list').setStyle('display', 'block');
                    Ext.get('searchresult').select('p.biginfo').setStyle('display', 'none');
                    Ext.get(target).setStyle('display', 'none');
                    Ext.get(target).next().setStyle('display', 'block');
                }
            });
        });
    }
    
    // hide top section
    if (Ext.get('top')) {
        var imageshow = Ext.get('top').first('.imageshow');
        var topHeight = Ext.get('top').getHeight();
        function topExpand(){
            Ext.get('top').removeClass('topreduced');
            Ext.get('minusplus').removeClass('plus');
            Ext.get('minusplus').addClass('minus');
            if (imageshow) imageshow.setStyle('display', 'block');
        }
        function topReduce(){
            if (imageshow) imageshow.setStyle('display', 'none');
            Ext.get('minusplus').removeClass('minus');
            Ext.get('minusplus').addClass('plus');
            Ext.get('top').addClass('topreduced');
        }
        if (Ext.get('top').hasClass('topreduced')) {
            topReduce();
        }
        else {
            topExpand();
        }
        Ext.get('minusplus').on('click', function(){
            if (Ext.get('top').hasClass('topreduced')) {
                topExpand();
            }
            else {
                topReduce();
            }
        });
    }
    
    // reduce and expand
    Ext.select('.boxslide').each(function(e){
        e.on('click', function(event, target){
            target = Ext.get(target);
            if (target.hasClass('close')) {
                target.removeClass('close');
                target.addClass('open');
                target.parent().next().slideOut('t', {
                    useDisplay: true
                });
            }
            else {
                target.removeClass('open');
                target.addClass('close');
                target.parent().next().slideIn();
            }
        });
    });
    
    // overlay secure question (delete approval plan)
    Ext.select('.secure').each(function(e){
        e.on('click', function(event, target){
            event.stopEvent();
            var href = Ext.get(target).parent().getAttribute('href');
            var content = Ext.get('secure').dom.innerHTML.replace(/#/g, href);
            new beeline.alert({
                content: content,
                shadeBg: false
            });
        });
        e.on('keypress', function(event, target){
            event.stopEvent();
            var href = Ext.get(target).parent().getAttribute('href');
            var content = Ext.get('secure').dom.innerHTML.replace(/#/g, href);
            new beeline.alert({
                content: content,
                shadeBg: false
            });
        });
    });
    
    // limit textarea to 450 chars
    Ext.select('.max450').each(function(e){
        var limitNum = 449;
        e.on('keypress', function(k, t){
            var key = k.getKey();
            if ((key == null) || (key == 0) || (key == 8) || (key == 9) || (key == 13) || (key == 27) || (key == 116)) {
                return;
            }
            if (Ext.get(t).dom.value.length > limitNum) {
                k.stopEvent();
            }
            else {
                Ext.get(t).next('input.counter').dom.value = limitNum - Ext.get(t).dom.value.length;
            }
        });
    });
    
}

// clear advanced search
function clearAdvancedSearch(){
    var obj = document.forms[1];
    for (i = 0; i < obj.elements.length; i++) {
        if (obj.elements[i].type == 'text') obj.elements[i].value = '';
        if (obj.elements[i].type == 'select-one') obj.elements[i].selectedIndex = 0;
    }
}

// refresh opener page on client close
function closeWindow(){
    opener.document.location.reload();
}

// approval plan
function copyDefaults(id){
    var element, value, form = Ext.get('bpmlist').dom.elements;
    element = form.namedItem(id + '_Quantity');
    if (!element)         
        return;
    value = form.namedItem('Quantity').value;
    if (element && !element.value && value) {
        element.value = value;
        element.onchange();
    }
    element = form.namedItem(id + '_OrderReference');
    if (!element)         
        return;
    value = form.namedItem('OrderReference').value;
    if (element && !element.value && value) {
        element.value = value;
        element.onchange();
    }
    element = form.namedItem(id + '_Comment');
    if (!element)         
        return;
    value = form.namedItem('Comment').value;
    if (element && !element.value && value) {
        element.value = value;
        element.onchange();
    }
    element = form.namedItem(id + '_Comment1');
    if (!element)         
        return;
    value = form.namedItem('Comment1').value;
    if (element && !element.value && value) {
        element.value = value;
        element.onchange();
    }
    element = form.namedItem(id + '_Comment2');
    if (!element)         
        return;
    value = form.namedItem('Comment2').value;
    if (element && !element.value && value) {
        element.value = value;
        element.onchange();
    }
}
function checkallAP(val){
  list = Ext.get('bpmlist').dom.elements;
  for (var i = 0; i < list.length; i++) {
    var el = list[i];
    var name = el.name.split('_');
    if (name[1] == 'CHECK' && el.checked != val) {
      el.checked = val;
      el.onchange();
      copyDefaults(name[0]);
    }
  }
}
function checkall(val){
  list = Ext.get('bpmlist').dom.elements;
  for (var i = 0; i < list.length; i++) {
    var el = list[i];
    var name = el.name.split('_');
    if (name[1] == 'CHECK' && el.checked != val) {
      el.checked = val;
      el.onchange();
    }
  }
}
