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