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