1/**
2 *  We handle several device classes based on browser width.
3 *
4 *  - desktop:   > __tablet_width__ (as set in style.ini)
5 *  - mobile:
6 *    - tablet   <= __tablet_width__
7 *    - phone    <= __phone_width__
8 */
9var device_class = ''; // not yet known
10var device_classes = 'desktop mobile tablet phone';
11var abstand = 0;
12function tpl_dokuwiki_mobile(){
13
14    // the z-index in mobile.css is (mis-)used purely for detecting the screen mode here
15    var screen_mode = jQuery('#screen__mode').css('z-index') + '';
16
17    // determine our device pattern
18    // TODO: consider moving into dokuwiki core
19    switch (screen_mode) {
20        case '1':
21            if (device_class.match(/tablet/)) return;
22            device_class = 'mobile tablet';
23            break;
24        case '2':
25            if (device_class.match(/phone/)) return;
26            device_class = 'mobile phone';
27            break;
28        default:
29            if (device_class == 'desktop') return;
30            device_class = 'desktop';
31    }
32
33    jQuery('html').removeClass(device_classes).addClass(device_class);
34
35    // handle some layout changes based on change in device
36    var $handle = jQuery('#dokuwiki__aside h3.toggle');
37    var $toc = jQuery('#dw__toc h3');
38
39    if (device_class == 'desktop') {
40        // reset for desktop mode
41
42		if($handle.length) {
43            $handle[0].setState(1);
44            $handle.hide();
45        }
46        if($toc.length) {
47            $toc[0].setState(1);
48        }
49
50		//Seitenleiste wollen wir zeigen
51		$handle.show();
52		if(jQuery('#dokuwiki__aside').length){
53			if(jQuery.cookie("sidebar_close")==1){ //cookie gesetzt?
54				//wenn Seitenleiste geschlossen
55				$handle.removeClass('open');
56				$handle.addClass('closed');
57				$handle[0].setState(-1);
58				jQuery('#dokuwiki__aside div.content').hide();
59				jQuery('#dokuwiki__top').removeClass('showSidebar');
60				jQuery('#dokuwiki__aside').css('position','absolute');
61				jQuery('#dokuwiki__aside').css('top','');
62				jQuery('#dokuwiki__aside').css('margin-top','-23px');
63
64
65			}else { //Seitenleiste offen
66				jQuery('#dokuwiki__top').addClass('showSidebar');
67				jQuery('#dokuwiki__aside').css('position','fixed');
68				jQuery('#dokuwiki__aside').css('top',abstand-jQuery(window).scrollTop());
69
70			}
71		}
72
73    }
74    if (device_class.match(/mobile/)){
75        // toc and sidebar hiding
76        if($handle.length) {
77            $handle.show();
78            $handle[0].setState(-1);
79        }
80        if($toc.length) {
81            $toc[0].setState(-1);
82        }
83
84		//Normalwerte wiederherstellen
85		jQuery('#dokuwiki__top').addClass('showSidebar');
86		jQuery('#dokuwiki__aside').css('position','relative');
87		jQuery('#dokuwiki__aside').css('top','');
88		jQuery('#dokuwiki__aside').css('margin-top','');
89    }
90}
91
92jQuery(function(){
93    var resizeTimer;
94	var $sidebar = jQuery('#dokuwiki__aside');
95
96	if($sidebar.length)
97		abstand = $sidebar.offset().top; //Abstand der Seitenleiste nach oben
98
99	dw_page.makeToggle('#dokuwiki__aside h3.toggle','#dokuwiki__aside div.content');
100
101    tpl_dokuwiki_mobile();
102    jQuery(window).bind('resize',
103        function(){
104            if (resizeTimer) clearTimeout(resizeTimer);
105            resizeTimer = setTimeout(tpl_dokuwiki_mobile,200);
106        }
107    );
108
109	//Seitenleiste mitscrollen lassen wenn im Desktop Mode
110	jQuery(window).scroll(function() {
111		if($handle.hasClass('open')&&jQuery('#screen__mode').css('z-index') + '' != '1'
112			&& $handle.hasClass('open')&&jQuery('#screen__mode').css('z-index') + '' != '2'){
113				if(jQuery(this).scrollTop() > abstand) {
114					jQuery('#dokuwiki__aside').css('top',0); //Seitbar nach oben
115				}else {
116					jQuery('#dokuwiki__aside').css('top',abstand-jQuery(this).scrollTop());
117
118				}
119			}
120	});
121
122	//wenn Seitbar ausgeblended werden soll
123	var $handle = jQuery('#dokuwiki__aside h3.toggle');
124	jQuery($handle).bind('click',
125		function(){
126			if(jQuery('#screen__mode').css('z-index') + '' == '0') {
127				if($handle.hasClass('closed')){
128
129					jQuery('#dokuwiki__aside').css('position','absolute');
130					jQuery('#dokuwiki__aside').css('top','');
131					jQuery('#dokuwiki__aside').css('margin-top','-23px');
132					jQuery.cookie("sidebar_close",1);
133					setTimeout("jQuery('#dokuwiki__top').removeClass('showSidebar')",100);
134				} else {
135					jQuery('#dokuwiki__top').addClass('showSidebar');
136					jQuery('#dokuwiki__aside').css('position','fixed');
137					//alert(jQuery(this).scrollTop());
138					jQuery('#dokuwiki__aside').css('top',abstand-jQuery(window).scrollTop());
139					jQuery('#dokuwiki__aside').css('margin-top','');
140					jQuery.cookie("sidebar_close",0);
141
142				}
143			}
144		}
145	);
146
147
148
149    // increase sidebar length to match content (desktop mode only)
150    var $sidebar = jQuery('.desktop #dokuwiki__aside');
151    if($sidebar.length) {
152        var $content = jQuery('#dokuwiki__content div.page');
153        $content.css('min-height', $sidebar.height());
154    }
155});
156