home *** CD-ROM | disk | FTP | other *** search
/ PC go! 2013 September / PCgo_CD_13_09.iso / interface / js / app.js next >
Encoding:
JavaScript  |  2013-06-12  |  9.4 KB  |  247 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.         $( '#ad_1, #ad_3', $('div.partner').get(0) ).off('click').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.     
  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.     var 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.             menuHandler( this );
  95.             return false;
  96.         });
  97.     };
  98.     
  99.     var 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.             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_');
  139.             
  140.             if( isPackage != -1 ) {
  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 () {
  166.         $( '#external_wrapper_' + currentTargetId + '.external-wrapper a' ).off( 'click' ).on( 'click', function ( event ) {
  167.             var elCls = $(this).attr( 'class' );
  168.             elTarget = $(this).attr( 'href' );
  169.  
  170.             if( elCls == 'tools' ) {
  171.                 
  172.                 $( '#external_wrapper_' + currentTargetId + ' .overview' ).load( elTarget, function () {
  173.                                         
  174.                     window.toolMenuHandler();
  175.                         
  176.                     $( '.navi .back-btn' ).off('click').one('click', function() {
  177.                         var elTarget = $( '#external_wrapper_' + currentTargetId ).attr( 'data-prev-menu' );
  178.                         
  179.                         $( '#external_wrapper_' + currentTargetId + ' .overview' ).load( elTarget, function () {
  180.                             
  181.                             $( '.navi .back-btn' ).off('click').one('click', function() {
  182.                                 var parent = 'wrapper_' + currentTargetId,
  183.                                 element = $(this);
  184.                                 
  185.                                 window.setBackBtn( element, parent, true );
  186.                             }).css({cursor: 'pointer'});
  187.                                                         
  188.                         });
  189.                         
  190.                     }).css({cursor: 'pointer'});
  191.                 } );
  192.                 
  193.             } else {
  194.                 frame.loadFrameContent( IM.Config.APP_CONTENT_FRAME, elTarget, IM.Config.APP_BASE_CSS_URL );
  195.                 
  196.                 $( '#external_wrapper_' + currentTargetId + '.external-wrapper li' ).each(function (index, element) {
  197.                     $(element).removeClass('active');
  198.                 });
  199.                 $(this).parent('li').addClass('active');
  200.             }
  201.             return false;
  202.         });
  203.         
  204.     };
  205.     
  206.     window.toolMenuHandler = function () {
  207.         $( '#external_wrapper_' + currentTargetId + '.external-wrapper .overview a' ).off('click').on('click', function () {
  208.             var elTarget = $(this).attr('href');
  209.             frame.loadFrameContent( IM.Config.APP_CONTENT_FRAME, elTarget, IM.Config.APP_BASE_CSS_URL );
  210.             
  211.             $( '#external_wrapper_' + currentTargetId + '.external-wrapper .overview li' ).each(function (index, element) {
  212.                 $(element).removeClass('active');
  213.             });
  214.             $(this).parent('li').addClass('active');
  215.             
  216.             return false;
  217.         });
  218.     };
  219.     
  220.     window.setBackBtn = function (element, parent, htmlContent) {
  221.         var element = element || null,
  222.         parentId = '', 
  223.         htmlContent = htmlContent || false,
  224.         targetElement = '';
  225.         
  226.         frame.loadFrameContent( IM.Config.APP_CONTENT_FRAME, IM.Config.APP_BASE_PAGE_URL, IM.Config.APP_BASE_CSS_URL );
  227.         
  228.         if( element != null ) {
  229.             parentId = parent || element.parent('div').attr('id');
  230.             targetElement = parentId.split( '_' )[1];
  231.             
  232.             if( htmlContent ) {
  233.                 $( '#wrapper_' + targetElement ).css( {display: 'block'} );
  234.                 $( '#external_wrapper_' + targetElement + '.external-wrapper' ).css( {display: 'none'} );
  235.         
  236.                 rebindEvents();
  237.             } else {
  238.                 $( '.navi li a:not( .menu-subitem )' ).css( {display: 'block'} );
  239.                 $( '#wrapper_' + targetElement ).css( {display: 'none'} );
  240.             }
  241.         }
  242.         
  243.         setSubPage();
  244.         
  245.     };
  246.     
  247. })( jQuery, window, undefined );