// bpmLib.js

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

// version history:
// 2.7.0-0  01.09.2009  sb  initial release
// 3.0.0-0  05.11.2010  sb  beeline 3 compatibillity added

function bpminit(){

  function createWindow(EventObj, content, src){
    EventObj.stopEvent();
    var OverlayContent = Ext.select('.overlayContent',true).item(0);
    if (Ext.isObject(OverlayContent)) {
      var id = Ext.id(OverlayContent);
      OverlayContent.dom.innerHTML = '';
      beeline.web.loadsrc(content, id, src);
      new beeline.web.alert({
        title: OverlayContent.parent().select('.overlayTitle').item(0).dom.innerHTML,
        content: OverlayContent.dom.innerHTML + '<p class="alertboxButton"><span class="button"><input class="alertboxClose" type="reset" name="close" value="OK"/></span></p>'
      });
    }
    return false;
  }

  // detail: show widget in window
  Ext.select('.showWidget').each(function(ShowWidget){
    var src = ShowWidget.dom.href;
    ShowWidget.on('click', function(EventObj){
      return createWindow(EventObj,'iframe',src);
    });
  });
	
    // 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();
      });
    });

    // display imageshow after load
    Ext.select('.imageshow').each(function(e){
        e.setStyle('display', 'block');
    });
    
    // 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;
            }
        }
    }
    
    // expand
    if (Ext.get('expand')) {
        Ext.get('expand').on('click', function(){
            Ext.get('expand').setStyle('display', 'none');
            Ext.get('reduce').setStyle('display', 'block');
        });
        Ext.get('reduce').select('span').item(0).on('click', function(){
            Ext.get('reduce').setStyle('display', 'none');
            Ext.get('expand').setStyle('display', 'block');
        });
    }
    
    // big cover box
    if (Ext.get('showcover')) {
        Ext.get('showcover').on('click', function(){
            new beeline.web.alert({
                title: Ext.get('bigcover').select('.overlayTitle').item(0).dom.innerHTML,
                content: Ext.get('bigcover').select('.overlayImage').item(0).dom.innerHTML + '<p class="alertboxButton"><input class="alertboxClose" type="reset" name="close" value="' + Ext.get('bigcover').select('.overlayButton').item(0).dom.innerHTML + '"/></p>'
            });
        });
    }
    
    // bibliomaker export box
    if (Ext.get('showbiblio')) {
        Ext.get('showbiblio').on('click', function(){
            var oInfo = Ext.get('bibliomaker').select('.overlayInfo').item(0).dom.innerHTML;
            var oMessage = Ext.get('bibliomaker').select('.overlayMessage').item(0).dom.innerHTML;
            new beeline.web.alert({
                title: Ext.get('bibliomaker').select('.overlayTitle').item(0).dom.innerHTML,
                content: '<p>' + oInfo + '</p><p>' + oMessage + '</p><p class="alertboxButton"><input class="alertboxClose" type="reset" name="close" value="' + Ext.get('bibliomaker').select('.overlayButton').item(0).dom.innerHTML + '"/></p>'
            });
            Ext.select('.overlayMessageText').item(1).dom.focus();
            Ext.select('.overlayMessageText').item(1).dom.select();
        });
    }
    
    // pick box
    if (Ext.get('showpick')) {
        Ext.get('showpick').on('click', function(){
            var oMessage = Ext.get('pick').select('.overlayMessage').item(0).dom.innerHTML;
            new beeline.web.alert({
                title: Ext.get('pick').select('.overlayTitle').item(0).dom.innerHTML,
                content: '<div class="overlayBox">' + oMessage + '</div><p class="alertboxButton"><input class="alertboxClose" type="reset" name="close" value="' + Ext.get('pick').select('.overlayButton').item(0).dom.innerHTML + '"/></p>'
            });
            if (Ext.select('.overlayMessageText').item(1)) {
                Ext.select('.overlayMessageText').item(1).dom.focus();
                Ext.select('.overlayMessageText').item(1).dom.select();
            }
        });
    }

    // add basket comment
    if (Ext.get('showBasketComment')) {
        var showComment = Ext.get('showBasketComment');
        var editComment = Ext.select('.basketComment').item(0);
        if (editComment.select('textarea').item(0).dom.innerHTML == "") {
            editComment.setStyle('display', 'none');
        }
        showComment.on('click', function(){
            if (showComment.select('.plus').item(0).getStyle('visibility') == 'hidden') {
                showComment.select('.plus').item(0).setStyle('visibility', 'visible');
                showComment.select('.minus').item(0).setStyle('visibility', 'hidden');
                editComment.slideOut('t', {
                    useDisplay: true
                });
            }
            else {
                showComment.select('.plus').item(0).setStyle('visibility', 'hidden');
                showComment.select('.minus').item(0).setStyle('visibility', 'visible');
                editComment.slideIn();
            }
        });
        Ext.get('hideBasketComment').on('click', function(){
            showComment.select('.plus').item(0).setStyle('visibility', 'visible');
            showComment.select('.minus').item(0).setStyle('visibility', 'hidden');
            editComment.slideOut('t', {
                useDisplay: true
            });
        });
    }

    // save notepad
    if (Ext.get('showNotepadSave')) {
        var showNS = Ext.get('showNotepadSave');
        var editNS = Ext.select('.notepadPopulate').item(0);
        showNS.on('click', function(){
            if (showNS.select('.plus').item(0).getStyle('visibility') == 'hidden') {
                showNS.select('.plus').item(0).setStyle('visibility', 'visible');
                showNS.select('.minus').item(0).setStyle('visibility', 'hidden');
                editNS.slideOut('t', {
                    useDisplay: true
                });
            }
            else {
                showNS.select('.plus').item(0).setStyle('visibility', 'hidden');
                showNS.select('.minus').item(0).setStyle('visibility', 'visible');
                editNS.slideIn();
            }
        });
        Ext.get('hideNotepadSave').on('click', function(){
            showNS.select('.plus').item(0).setStyle('visibility', 'visible');
            showNS.select('.minus').item(0).setStyle('visibility', 'hidden');
            editNS.slideOut('t', {
                useDisplay: true
            });
        });
    }

    // recommend article
    if (Ext.get('showRecommendArticle')) {
        var showRA = Ext.get('showRecommendArticle');
        var editRA = Ext.get('recommendArticle');
        if (editRA.select('.warning').item(0)){
            if (editRA.select('.warning').item(0).dom.innerHTML.replace(/^\s+|\s+$/g, '') != '') {
                editRA.setStyle('display', 'block');
            }
        }
        showRA.removeAllListeners();
        showRA.on('click', function(){
            if (editRA.getStyle('display') == 'block') {
                editRA.slideOut('t', {
                    useDisplay: true
                });
                showRA.removeClass('tabMailShow');
            }
            else {
                editRA.slideIn();
                showRA.addClass('tabMailShow');
            }
        });
        Ext.get('hideRecommendArticle').on('click', function(){
            editRA.slideOut('t', {
                useDisplay: true
            });
            showRA.removeClass('tabMailShow');
        });
    }

    // tool tips
    Ext.select('.quicktip').each(function(e){
        beeline.web.createToolTip(e, 'quicktip', e.getAttribute('alt'), e.getAttribute('title'), new Array(10, -20));
    });
    Ext.select('.bigtip').each(function(e){
        beeline.web.createToolTip(e, 'bigtip', e.getAttribute('alt'), Ext.fly(e).next().dom.innerHTML, new Array(15, 95));
    });
    
    // set focus
    if (Ext.select('.focus').item(0)) {
        var lastFocusElement = Ext.select('.focus').getCount() - 1;
        Ext.select('.focus').item(lastFocusElement).focus();
    }
    
    // preview box for basket and notepad
    Ext.select('.previewTitle').each(function(el){
        // hide it if empty
        if (el.next().first() == null) {
            el.select('.plus').item(0).setStyle('visibility', 'visible');
            el.select('.minus').item(0).setStyle('visibility', 'hidden');
            el.next().setStyle('display', 'none');
            el.parent().last().setStyle('display', 'none');
        }
        var lastClick = 0;
 
        // silde in and out
        el.on('click', function(eventObj, targetObj){
            var time = new Date().getTime();
            if (time - lastClick < 500) {
                lastClick = 0;
                // todo handle dbclick
                console.log('Achtung DAU benutzt dbclick !!!')
            }
            else {
                lastClick = time;
                var previewTitleEl = Ext.get(targetObj).parent('p');
                
                if (previewTitleEl.select('.plus').item(0).getStyle('visibility') == 'hidden') {
                    previewTitleEl.select('.plus').item(0).setStyle('visibility', 'visible');
                    previewTitleEl.select('.minus').item(0).setStyle('visibility', 'hidden');
                    previewTitleEl.next('.previewContent').slideOut('t', {
                        useDisplay: true
                    });
                    previewTitleEl.parent().last().slideOut('t', {
                        useDisplay: true
                    });
                }
                else {
                    previewTitleEl.select('.plus').item(0).setStyle('visibility', 'hidden');
                    previewTitleEl.select('.minus').item(0).setStyle('visibility', 'visible');
                    previewTitleEl.next('.previewContent').slideIn();
                    previewTitleEl.parent().last().slideIn();
                }
            }
        });
    });
    
    // order confirmation
    Ext.select('.confirmation').each(function(confirmation){
        var confirmationElements = confirmation.select('div');
        confirmationElements.each(function(e){
            if (e.hasClass('confirmationActions') == false) {
                e.setStyle('display', 'none');
            }
        });
        var expandButton = confirmationElements.item(0).select('.link').item(0);
        expandButton.on('click', function(){
            if (expandButton.select('.plus').item(0).getStyle('visibility') == 'hidden') {
                expandButton.select('.plus').item(0).setStyle('visibility', 'visible');
                expandButton.select('.minus').item(0).setStyle('visibility', 'hidden');
                confirmationElements.each(function(e){
                    if (e.hasClass('confirmationActions') == false) {
                        e.setStyle('display', 'none');
                    }
                });
            }
            else {
                expandButton.select('.plus').item(0).setStyle('visibility', 'hidden');
                expandButton.select('.minus').item(0).setStyle('visibility', 'visible');
                confirmationElements.each(function(e){
                    e.setStyle('display', 'block');
                });
            }
        });
    });

    // business private switch
    if(Ext.get('business')){
      function setBusiness(){
        Ext.get('business').addClass('active');
        Ext.get('private').removeClass('active');
        Ext.get('FirstName').dom.value = '';
        Ext.select('.business').each(function(e){
          e.setStyle('display', 'block');
          if(e.parent().is('td')) e.parent().setStyle('paddingTop', '10px');
        });
        Ext.select('.private').each(function(e){
          e.setStyle('display', 'none');
          if(e.parent().is('td')) e.parent().setStyle('paddingTop', '0');
        });
      }
      function setPrivate(){
        Ext.get('private').addClass('active');
        Ext.get('business').removeClass('active');
        if(Ext.get('FirstName').getValue() == ''){
          Ext.get('FirstName').dom.value = ' ';
        }
        Ext.select('.private').each(function(e){
          e.setStyle('display', 'block');
          if(e.parent().is('td')) e.parent().setStyle('paddingTop', '10px');
        });
        Ext.select('.business').each(function(e){
          e.setStyle('display', 'none');
          if(e.parent().is('td')) e.parent().setStyle('paddingTop', '0');
        });
      }
      if(Ext.get('FirstName').getValue() == ''){
        setBusiness();
      }else{
        setPrivate();
        if(Ext.get('FirstName').getValue() == ' '){
          Ext.get('FirstName').on('focus', function(){ Ext.get('FirstName').dom.value = '' });
        }
      }
      Ext.get('business').on('click', setBusiness);
      Ext.get('private').on('click', setPrivate);
    }
    if(Ext.get('business2')){
      function setBusiness2(){
        Ext.get('business2').addClass('active');
        Ext.get('private2').removeClass('active');
        Ext.get('FirstName-2').dom.value = '';
        Ext.select('.business2').each(function(e){
          e.setStyle('display', 'block');
          if(e.parent().is('td')) e.parent().setStyle('paddingTop', '10px');
        });
        Ext.select('.private2').each(function(e){
          e.setStyle('display', 'none');
          if(e.parent().is('td')) e.parent().setStyle('paddingTop', '0');
        });
      }
      function setPrivate2(){
        Ext.get('private2').addClass('active');
        Ext.get('business2').removeClass('active');
        if(Ext.get('FirstName-2').getValue() == ''){
          Ext.get('FirstName-2').dom.value = ' ';
        }
        Ext.select('.private2').each(function(e){
          e.setStyle('display', 'block');
          if(e.parent().is('td')) e.parent().setStyle('paddingTop', '10px');
        });
        Ext.select('.business2').each(function(e){
          e.setStyle('display', 'none');
          if(e.parent().is('td')) e.parent().setStyle('paddingTop', '0');
        });
      }
      if(Ext.get('FirstName-2').getValue() == ''){
        setBusiness2();
      }else{
        setPrivate2();
        if(Ext.get('FirstName-2').getValue() == ' '){
          Ext.get('FirstName-2').on('focus', function(){ Ext.get('FirstName-2').dom.value = '' });
        }
      }
      Ext.get('business2').on('click', setBusiness2);
      Ext.get('private2').on('click', setPrivate2);
    }

    // flash
    if(Ext.get('flash')){
      var flashdir = '/csp/shop/sjmweb/css/default/flash/';
      var playervars = {
        video: flashdir + Ext.get('flash').first('.textFlash').dom.innerHTML,
        preview: Ext.get('flash').first('img').getAttribute('src')
      };
      var params = { scale: 'noscale', allowfullscreen: 'true', salign: 'tl', bgcolor: '#ffffff'};
      var attributes = { base: '.' };
      swfobject.embedSWF(flashdir + 'flvplayer.swf', 'flash', '500', '400', '10.0.0', flashdir + 'expressInstall.swf', playervars, params, attributes);
    }

    // carousel
    Ext.select('.carouselConfig').each(function(e){
      var config = e.dom.innerHTML.split('/');
      carousel(config[0], config[1], config[2]);
    });

    // refine search
    if(Ext.get('searchRefine')){
      Ext.get('searchRefine').on('change', function(){
        var form = Ext.select('.searchRefine').item(0);
	if(form.getAttribute('name') == 'quicksearch'){
          form.select('input').each(function(e){
            form.set({
              name: '',
              action: bpmPrefixURL + Ext.get('searchPath').getAttribute('value')
            });
            if(e.getAttribute('name') == 'bpmparm'){
              e.set({ name: 'bpmact', value: 'cmsrefine' });
            }
            if(e.getAttribute('name') == 'bpmunused'){
              e.set({ name: 'bpmactid' });
            }
            if(e.getAttribute('name') == 'bpmquery'){
              e.set({ name: 'refine_QuickSearch' });
            }
          });
        }else{
          var pathPrefix = Ext.get('searchPath').getAttribute('value').split('/')[1];
          form.select('input').each(function(e){
            form.set({
              name: 'quicksearch',
              action: bpmPrefixURL + '/' + pathPrefix + '/advancedSearch'
            });
            if(e.getAttribute('name') == 'bpmact'){
              e.set({
                name: 'bpmparm',
                value: '/' + pathPrefix + '/result,/' + pathPrefix + '/detail'
              });
            }
            if(e.getAttribute('name') == 'bpmactid'){
              e.set({ name: 'bpmunused' });
            }
            if(e.getAttribute('name') == 'refine_QuickSearch'){
              e.set({ name: 'bpmquery' });
            }
          });
        }
      });
    }

    // DMR
    /*
    if(Ext.get('DMRWidget')){
      if(Ext.get('dmr')){
        Ext.get('DMRWidget').appendTo(Ext.get('dmr'));
        Ext.get('dmr').setStyle('height', Ext.get('DMRWidget').getStyle('height'));
      }
    }
    */

}

function clearSearch(formId){
  var Form = Ext.get(formId).dom;
  for (i = 0; i < Form.elements.length; i++) {
		switch (Form.elements[i].type) {
			case "text":
				Form.elements[i].value = '';
				break;
				
			case "select-one":
				Form.elements[i].selectedIndex = 0;
				break;
		}
		
  }
  return true;
}

