home *** CD-ROM | disk | FTP | other *** search
/ PC go! 2014 August / PCgo_CD_2014-08.iso / interface / js / app.js next >
Encoding:
JavaScript  |  2014-06-16  |  9.9 KB  |  254 lines

  1. /**
  2.  * Das App Modul regelt das Event-Binding mit hilfe von jQuery und Instanziert die erfoderlichen Klassen
  3.  * @module app
  4.  */
  5. (function ( $, window, undefined ) {
  6.     
  7.     IM.Config.loadWinProp();
  8.     
  9.     var file = new IM.FileUtils(),
  10.     frame = new IM.ContentLoader();
  11.     
  12.     $(function () {
  13.         
  14.         frame.loadFrameContent( IM.Config.APP_CONTENT_FRAME, IM.Config.APP_BASE_PAGE_URL, IM.Config.APP_BASE_CSS_URL );
  15.         frame.getXML( IM.Config.APP_BASE_SITEMAP );
  16.         
  17.         var sIframe = document.getElementById( IM.Config.APP_CONTENT_FRAME );
  18.         sIframe.addEventListener('load', function (e) {
  19.             
  20.             setFileHandler( true, sIframe );
  21.  
  22.         }, false);
  23.         
  24.         setFileHandler();
  25.         window.rebindEvents();
  26.         
  27.         $( '.logo' ).on('click', function () {
  28.             $( '.submenu-wrapper, .external-wrapper' ).css({display: 'none'});
  29.             $('.navi li a:not( .menu-subitem )').css({display: 'block'});
  30.             
  31.             frame.loadFrameContent( IM.Config.APP_CONTENT_FRAME, IM.Config.APP_BASE_PAGE_URL, IM.Config.APP_BASE_CSS_URL );
  32.         
  33.             setSubPage();
  34.             window.rebindEvents();
  35.         });
  36.         
  37.         //$( '#ad_3', $('div.partner').get(0) ).on('click', function () {
  38.         $( '#ad_3, .abobanner' ).on('click', function () {
  39.             var adLink = $(this).attr('href');
  40.             frame.loadFrameContent( IM.Config.APP_CONTENT_FRAME, adLink, IM.Config.APP_BASE_CSS_URL );
  41.             return false;
  42.         }).css({ cursor: 'pointer' });
  43.         
  44.         setMenuTitle();
  45.     });
  46.     
  47.     var setFileHandler = function (inFrame, sIframe) {
  48.         
  49.         var inFrame = inFrame || false,
  50.         sIframe = sIframe || null;
  51.         
  52.         $( 'a.ui-open-file, a.ui-open-dir, a.ui-open-link', ( inFrame ) ? sIframe.contentDocument.body : '' ).off('click').on('click', function ( event ) {
  53.             var fileUrl = $( this ).attr( 'data-im-url' ),
  54.             fileType = $( this ).attr( 'data-im-type' );
  55.             
  56.             switch( fileType ) {
  57.                 case 'file':
  58.                     file.openFile( fileUrl );
  59.                     break;
  60.                 case 'dir':
  61.                     file.openFileDir( fileUrl );
  62.                     break;
  63.                 case 'link':
  64.                     file.openLink( fileUrl );
  65.                     break;
  66.                 default:
  67.                     IM.ErrorHandler.errorMsg( 'fileType is missing', 'type' );
  68.                     break;
  69.             }
  70.             
  71.             return false;
  72.         }).css({cursor: 'pointer'});
  73.             
  74.     };
  75.     
  76.     var setSubPage = function () {
  77.         if ( frame.isSubPage( 'menu-item' ) ) {
  78.             $( 'body' ).addClass( 'subPage' );
  79.         } else {
  80.             $( 'body' ).removeAttr( 'class' );
  81.         }  
  82.     };
  83.     
  84.     var setMenuTitle = function () {
  85.        $("p:contains('Service')").clone().prependTo('#overview_item3').addClass('normalCrumb');
  86.     };
  87.     
  88.     window.rebindEvents = function ( htmlContent ) {
  89.         $( '.navi .back-btn' ).off('click').on('click', function () {
  90.             window.setBackBtn( $(this) );
  91.         }).css({cursor: 'pointer'});
  92.         
  93.         $( '.navi li a' ).off('click').on('click', function ( event ) {
  94.             window.menuHandler( this );
  95.             return false;
  96.         });
  97.     };
  98.     
  99.     window.menuHandler = function ( element ) {
  100.         var elClass = $(element).attr('class'), 
  101.         parentId = $(element).parent('li').attr('id'),
  102.         elTarget = '',
  103.         targetId = '',
  104.         currentTargetId,
  105.         isPath = $(element).attr( 'href' ).indexOf('/'),
  106.         isStatic = false,
  107.         isMap = $(element).parent().parent('div').attr('id');
  108.                 
  109.         $( '.navi li' ).each(function (index, element) {
  110.             $(element).removeClass('active');
  111.         });
  112.         
  113.         if( isPath != -1 ) {
  114.             isStatic = ( $(element).attr( 'href' ).split('/')[0] ) === 'static' ? true : false;
  115.         }
  116.         
  117.         if( elClass != 'menu-subitem' ) {
  118.             
  119.             $('.navi li a:not( .menu-subitem )').css({display: 'none'});
  120.             $( '#wrapper_' + parentId + ', #ul_' + parentId ).css({display: 'block'});
  121.             
  122.             window.rebindEvents();
  123.             
  124.         } else if( ( isStatic || isMap ) ) {
  125.             
  126.             elTarget = $(element).attr( 'href' );
  127.             frame.loadFrameContent( IM.Config.APP_CONTENT_FRAME, elTarget, IM.Config.APP_BASE_CSS_URL );
  128.             
  129.             $(element).parent('li').addClass('active');
  130.             
  131.         } else {
  132.             
  133.             elTarget = $(element).attr('href');
  134.             parentId = $(element).parent().parent('ul').attr('id');
  135.             targetId = parentId.split( '_' )[1];
  136.             currentTargetId = window.currentTargetId = targetId;
  137.             
  138.             isPackage = ( elTarget.indexOf('menu_') != -1 ) ? true : false;
  139.                         
  140.             if( isPackage ) {
  141.                 $( '#external_wrapper_' + targetId ).attr('data-prev-menu', elTarget);
  142.             } else {
  143.                 $( '#external_wrapper_' + targetId ).removeAttr('data-prev-menu');
  144.             }
  145.             
  146.             $( '#external_wrapper_' + targetId + ' .overview' ).load( elTarget, function ( response, status, xhr ) {
  147.                 $( '.submenu-wrapper' ).css({display: 'none'});
  148.                 $( '#external_wrapper_' + targetId + '.external-wrapper' ).css({display: 'block'});
  149.                 
  150.                 window.subMenuHandler();
  151.                 
  152.                 $( '.navi .back-btn' ).off('click').one('click', function() {
  153.                     var parent = 'wrapper_' + targetId,
  154.                     element = $(this);
  155.                     
  156.                     window.setBackBtn( element, parent, true );
  157.                 }).css({cursor: 'pointer'});
  158.             } );
  159.         }
  160.         
  161.         setSubPage();
  162.         
  163.     };
  164.     
  165.     window.subMenuHandler = function ( hasSubFolder ) {
  166.         var hasSubFolder = hasSubFolder || false;
  167.         
  168.         $( '#external_wrapper_' + currentTargetId + '.external-wrapper a' ).off( 'click' ).on( 'click', function ( event ) {
  169.             var elCls = $(this).attr( 'class' );
  170.             elTarget = $(this).attr( 'href' );
  171.  
  172.             if( elCls == 'tools' && !hasSubFolder ) {
  173.                 
  174.                 $( '#external_wrapper_' + currentTargetId + ' .overview' ).load( elTarget, function () {
  175.                                         
  176.                     window.toolMenuHandler();
  177.                         
  178.                     $( '.navi .back-btn' ).off('click').one('click', function() {
  179.                         var elTarget = $( '#external_wrapper_' + currentTargetId ).attr( 'data-prev-menu' );
  180.                                                 
  181.                         $( '#external_wrapper_' + currentTargetId + ' .overview' ).load( elTarget, function () {
  182.                             
  183.                             $( '.navi .back-btn' ).off('click').one('click', function() {
  184.                                 var parent = 'wrapper_' + currentTargetId,
  185.                                 element = $(this);
  186.                                 
  187.                                 window.setBackBtn( element, parent, true );
  188.                             }).css({cursor: 'pointer'});
  189.                                                         
  190.                         });
  191.                         
  192.                     }).css({cursor: 'pointer'});
  193.                 } );
  194.                 
  195.             } else {
  196.                 frame.loadFrameContent( IM.Config.APP_CONTENT_FRAME, elTarget, IM.Config.APP_BASE_CSS_URL );
  197.                 
  198.                 $( '#external_wrapper_' + currentTargetId + '.external-wrapper li' ).each(function (index, element) {
  199.                     $(element).removeClass('active');
  200.                 });
  201.                 $(this).parent('li').addClass('active');
  202.             }
  203.             return false;
  204.         });
  205.         
  206.     };
  207.     
  208.     window.toolMenuHandler = function () {
  209.         if( $( '#external_wrapper_' + currentTargetId + '.external-wrapper .overview a' ).attr('data-parentmenu') ) {
  210.           var elSubTarget = $( '#external_wrapper_' + currentTargetId + '.external-wrapper .overview a' ).attr('data-parentmenu');
  211.           $( '#external_wrapper_' + currentTargetId ).attr('data-prev-menu', elSubTarget);
  212.         }
  213.     
  214.         $( '#external_wrapper_' + currentTargetId + '.external-wrapper .overview a' ).off('click').on('click', function () {
  215.             var elTarget = $(this).attr('href');
  216.             frame.loadFrameContent( IM.Config.APP_CONTENT_FRAME, elTarget, IM.Config.APP_BASE_CSS_URL );
  217.             
  218.             $( '#external_wrapper_' + currentTargetId + '.external-wrapper .overview li' ).each(function (index, element) {
  219.                 $(element).removeClass('active');
  220.             });
  221.             $(this).parent('li').addClass('active');
  222.             
  223.             return false;
  224.         });
  225.     };
  226.     
  227.     window.setBackBtn = function (element, parent, htmlContent) {
  228.         var element = element || null,
  229.         parentId = '', 
  230.         htmlContent = htmlContent || false,
  231.         targetElement = '';
  232.         
  233.         frame.loadFrameContent( IM.Config.APP_CONTENT_FRAME, IM.Config.APP_BASE_PAGE_URL, IM.Config.APP_BASE_CSS_URL );
  234.         
  235.         if( element != null ) {
  236.             parentId = parent || element.parent('div').attr('id');
  237.             targetElement = parentId.split( '_' )[1];
  238.             
  239.             if( htmlContent ) {
  240.                 $( '#wrapper_' + targetElement ).css( {display: 'block'} );
  241.                 $( '#external_wrapper_' + targetElement + '.external-wrapper' ).css( {display: 'none'} );
  242.         
  243.                 window.rebindEvents();
  244.             } else {
  245.                 $( '.navi li a:not( .menu-subitem )' ).css( {display: 'block'} );
  246.                 $( '#wrapper_' + targetElement ).css( {display: 'none'} );
  247.             }
  248.         }
  249.         
  250.         setSubPage();
  251.         
  252.     };
  253.     
  254. })( jQuery, window, undefined );