wp/wp-content/plugins/codecanyon-3027163-content-timeline-responsive-wordpress-plugin/js/frontend/jquery.timeline.js
author ymh <ymh.work@gmail.com>
Tue, 15 Oct 2019 15:48:13 +0200
changeset 13 d255fe9cd479
parent 0 d970ebf37754
permissions -rwxr-xr-x
Upgrade wordpress again
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
/*
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
Content Timeline 3.1
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
Date organised content slider.
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
Copyright (c) 2012 Br0 (shindiristudio.com)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
Project site: http://codecanyon.net/
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
Project demo: http://shindiristudio.com/timeline
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
*/
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
(function($){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
	// EVENTS.timeline
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
	// init.timeline          : triggered when timeline is initialised
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
	// scrollStart.timeline   : triggered when item move animation starts
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
	// scrollEnd.timeline     : triggered when item move animation ends
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
	// itemOpen.timeline      : triggered on click to open item
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
	// itemClose.timeline     : triggered on click to close item
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
	// ---------------------------------------------------------
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
	// On KeyPress (left)     : trigger $.timeline('left')
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
	// On KeyPress (right)    : trigger $.timeline('right')
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
	// ---------------------------------------------------------
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
    
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
	// $.timeline(METHODS)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
	// $.timeline('init')     : initialises timeline
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
	// $.timeline('destroy')  : clears timeline data
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
	// $.timeline('left')     : moves one left by one element
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
	// $.timeline('right')    : moves right by one element
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
	// $.timeline('open', id) : opens element with 'data-id' = id
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
	// $.timeline('close', id): closes element with 'data-id' = id
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
	// $.timeline('goTo', id) : goes to element width 'data-id' = id
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
	var t_methods = {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
		init : function( options ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
			 // Default settings
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
   			var settings = $.extend( {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
				'itemClass'              : '.item',       // class used for timeline items
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
				'itemOpenClass'          : '.item_open',  // class used for item details
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
				'openTriggerClass'       : '.item',       // class of read more element (default uses whole item to trigger open event)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
				'closeText'              : 'Close',       // text of close button in open item
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
				'itemMargin'             : 10,            // spacing between items
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
				'scrollSpeed'            : 500,           // animation speed
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
				'startItem'              : 'last',        // timeline start item id, 'last' or 'first' can be used insted
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
				'easing'                 : 'easeOutSine', // jquery.easing function for animations,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
				'categories'             : ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], // categories shown above timeline (months are default)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
				'nuberOfSegments'        : [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], // number of elements per category (number of days)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
				'yearsOn'                : true,           // show years (can be any number you use in data-id (elementNumber/category/yearOrSomeOtherNumber))
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
				'swipeOn'                : true,           // turn on swipe moving function
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
				'hideTimeline'           : false,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
				'hideControles'          : false
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
   			}, options); // Setings
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
			// main queries
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
			var $this = this,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
				$body = $('body'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
				$items = $this.find(settings.itemClass),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
				$itemsOpen = $this.find(settings.itemOpenClass),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
				itemWidth = $items.first().width(),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
				itemOpenWidth = $itemsOpen.first().width();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
			// Trigger init event
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
			$this.trigger('init.Timeline');	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
			// If no index found
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
			var startIndex = $items.length-1;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
			// Find index of start element
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
			if(settings.startItem == 'first')
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
			{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
				startIndex = 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
			else if (settings.startItem == 'last')
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
			{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
				startIndex = $items.length-1;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
			else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
				$items.each(function(index){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
					if(settings.startItem == $(this).attr('data-id'))
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
					{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
					startIndex = index;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
					return true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
				});	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
			$items.each(function(index){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
				$(this).attr('data-count', index);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
				$(this).next(settings.itemOpenClass).attr('data-count', index);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
				if(!$(this).hasClass(settings.openTriggerClass)) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
					$(this).find(settings.openTriggerClass).attr('data-count', index);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
			// Create wrapper elements, and needed properties
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
			$this.append('<div style="clear:both"></div>');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
			$this.css({width: '100%', 'overflow' : 'hidden', marginLeft : 'auto', marginRight : 'auto','text-align': 'center', height:0});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
     		$this.wrapInner('<div class="timeline_items" />');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
			$this.find('.timeline_items').css('text-align','left');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
			if(!settings.hideControles) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
				$this.append('<div class="t_controles"><div class="t_left"></div><div class="t_right"></div></div>');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
			// ZoomOut placement fix
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
     		$this.wrapInner('<div class="timeline_items_holder" />');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
			$this.find('.timeline_items_holder').css({width: '300px', marginLeft : 'auto', marginRight : 'auto'});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   119
			$items.css({paddingLeft:0 , paddingRight:0, marginLeft: settings.itemMargin/2, marginRight: settings.itemMargin/2, float: 'left', position:'relative'});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   120
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
			$itemsOpen.each(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   122
				$(this).prepend('<div class="t_close" data-count="'+$(this).attr('data-count')+'" data-id="'+$(this).attr('data-id')+'">'+settings.closeText+'</div>');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   123
				$(this).wrapInner('<div class="'+settings.itemOpenClass.substr(1)+'_cwrapper"  />').find('div:first').css({position: 'relative'});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   124
				$(this).css({width: 0, padding:0 , margin: 0, float: 'left', display : 'none', position : 'relative', overflow : 'hidden'});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   125
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   126
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   127
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   128
			// Get new queries
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   129
			var	$iholder =  $this.find('.timeline_items:first'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   130
				$line = $this.find('.t_line_wrapper:first'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   131
				margin = 300/2 - (itemWidth + settings.itemMargin)*(1/2 + startIndex) ,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   132
				width = (itemWidth + settings.itemMargin)*$items.length + (itemOpenWidth + settings.itemMargin) + 660 ,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   133
				data = $this.data('timeline');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   134
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   135
			// Set margin so start element would place in midle of the screen	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   136
			$iholder.css({width: width, marginLeft: margin});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   137
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   138
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   139
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   140
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   141
			// If the plugin hasn't been initialized yet
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   142
			if (!data){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   143
     		$this.data('timeline', {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   144
					currentIndex  : startIndex,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   145
					itemCount     : $items.length,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   146
					margin        : margin,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   147
					itemWidth     : itemWidth,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   148
					itemOpenWidth : itemOpenWidth,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   149
					lineMargin    : 0,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   150
					lineViewCount : 0,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   151
					options       : settings,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   152
					items         : $items,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   153
					iholder       : $iholder,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   154
					open          : false,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   155
					noAnimation   : false,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   156
					marginResponse: false,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   157
					mousedown     : false,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   158
					mousestartpos : 0
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   159
				});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   160
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   161
			if(!settings.hideTimeline) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   162
				$this.timeline('createElements');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   163
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   164
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   165
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   166
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   167
			// Bind keyLeft and KeyRight functions
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   168
			$(document).keydown(function(e){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   169
				if (e.keyCode == 37) { 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   170
					$this.timeline('left');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   171
					return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   172
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   173
				if (e.keyCode == 39) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   174
					$this.timeline('right');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   175
					return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   176
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   177
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   178
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   179
			// Respond to window resizing
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   180
			$(window).resize(function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   181
				//var id = $this.find('.active:first').attr('href').substr(1);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   182
				var data = $this.data('timeline'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   183
					id = $items.eq(data.currentIndex).attr('data-id');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   184
					item_data_count = $items.eq(data.currentIndex).attr('data-count');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   185
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   186
				itemWidth = $items.first().width(),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   187
				itemOpenWidth = $itemsOpen.first().find('div:first').width();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   188
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   189
				data.margin += data.itemCount*(data.itemWidth-itemWidth);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   190
				data.itemWidth = itemWidth;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   191
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   192
				if(data.open) data.margin += (data.itemOpenWidth-itemOpenWidth)/2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   193
				data.itemOpenWidth = itemOpenWidth;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   194
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   195
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   196
				if($('body').width() < 767 && data.open && !data.marginResponse) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   197
					data.margin -= (itemWidth+settings.itemMargin)/2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   198
					data.marginResponse = true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   199
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   200
				else if($('body').width() >= 767 && data.marginResponse && data.open) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   201
					data.margin += (itemWidth+settings.itemMargin)/2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   202
					data.marginResponse = false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   203
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   204
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   205
				data.noAnimation = true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   206
				$this.timeline('goTo', id, item_data_count);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   207
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   208
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   209
			// Bind left on click
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   210
			$this.find('.t_left').click(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   211
				$this.timeline('left');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   212
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   213
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   214
			// Bind right on click
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   215
			$this.find('.t_right').click(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   216
				$this.timeline('right');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   217
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   218
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   219
			// SWIPE bind
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   220
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   221
			if(settings.swipeOn) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   222
				$items.find('*').each(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   223
					$(this).css({'-webkit-touch-callout': 'none',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   224
								'-webkit-user-select': 'none',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   225
								'-khtml-user-select': 'none',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   226
								'-moz-user-select': 'none',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   227
								'-ms-user-select': 'none',
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   228
								'user-select': 'none'});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   229
				});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   230
				$this.bind('touchstart',function(e){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   231
					$this.timeline('touchStart', e.originalEvent.touches[0].pageX);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   232
				});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   233
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   234
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   235
				$this.find(settings.itemClass).mousedown(function(e){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   236
					$this.timeline('mouseDown', e.pageX);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   237
				});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   238
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   239
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   240
				$(document).bind('touchend',function(e){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   241
					data = $this.data('timeline');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   242
					$this.timeline('touchEnd', data.touchpos);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   243
				});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   244
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   245
				$(document).mouseup(function(e){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   246
					var data = $this.data('timeline');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   247
					if(data.mousedown) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   248
						$this.timeline('mouseUp', e.pageX);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   249
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   250
				});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   251
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   252
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   253
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   254
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   255
			// Bind open on click
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   256
			$this.find(settings.openTriggerClass).click(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   257
				$this.timeline('goTo',$(this).attr('data-id'), $(this).attr('data-count'), true);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   258
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   259
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   260
			// Bind close on click
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   261
			$this.find('.t_close').click(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   262
				$this.timeline('close',$(this).attr('data-id'),$(this).attr('data-count'));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   263
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   264
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   265
			// Show when loaded
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   266
			$this.css({height: 'auto'}).show();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   267
			$this.prev('.timelineLoader').hide();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   268
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   269
			// Reposition nodes due to their width
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   270
			$this.find('.t_line_node').each(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   271
				if($(this).width() < 10) $(this).width(12);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   272
				$(this).css({marginLeft: -$(this).width()/2});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   273
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   274
			return $this;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   275
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   276
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   277
		// Clear data
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   278
		destroy : function( ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   279
			$(document).unbind('mouseup');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   280
			$(window).unbind('resize');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   281
			var $this = this,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   282
				data = $this.data('timeline');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   283
			$this.removeData('timeline');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   284
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   285
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   286
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   287
		touchStart : function(xpos) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   288
			var $this = this,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   289
				data = $this.data('timeline'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   290
				xmargin = 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   291
			data.mousedown = true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   292
			data.mousestartpos = xpos;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   293
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   294
			$this.bind('touchmove', function(e){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   295
				data.touchpos = e.originalEvent.touches[0].pageX;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   296
				xmargin = data.margin - xpos + e.originalEvent.touches[0].pageX;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   297
				data.iholder.css('marginLeft', xmargin + 'px');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   298
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   299
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   300
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   301
		mouseDown : function(xpos) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   302
			var $this = this,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   303
				data = $this.data('timeline'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   304
				xmargin = 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   305
			data.mousedown = true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   306
			data.mousestartpos = xpos;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   307
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   308
			$('body').css('cursor','move');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   309
			$(document).mousemove(function(e){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   310
				xmargin = data.margin - xpos + e.pageX;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   311
				data.iholder.css('marginLeft', xmargin + 'px');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   312
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   313
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   314
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   315
		touchEnd : function(xpos) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   316
			var $this = this,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   317
				data = $this.data('timeline'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   318
				itemWidth = data.itemWidth + data.options.itemMargin,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   319
				itemC = data.currentIndex,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   320
				mod = 0,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   321
				xmargin = xpos - data.mousestartpos;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   322
			data.mousedown = false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   323
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   324
			itemC -= parseInt(xmargin/itemWidth);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   325
			mod = xmargin%itemWidth;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   326
			if (xmargin < 0 && mod < -itemWidth/2) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   327
				itemC++;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   328
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   329
			if (xmargin > 0 && mod > itemWidth/2) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   330
				itemC--;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   331
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   332
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   333
			if(itemC < 0) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   334
				itemC = 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   335
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   336
			if(itemC >= data.itemCount) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   337
				itemC = data.itemCount-1;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   338
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   339
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   340
			$this.timeline('goTo', data.items.eq(itemC).attr('data-id'), data.items.eq(itemC).attr('data-count'));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   341
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   342
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   343
		mouseUp : function(xpos) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   344
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   345
			var $this = this,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   346
				data = $this.data('timeline'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   347
				itemWidth = data.itemWidth + data.options.itemMargin,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   348
				itemC = data.currentIndex,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   349
				mod = 0,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   350
				xmargin = xpos - data.mousestartpos;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   351
			data.mousedown = false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   352
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   353
			$(document).unbind('mousemove');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   354
			$('body').css('cursor','auto');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   355
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   356
			itemC -= parseInt(xmargin/itemWidth);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   357
			mod = xmargin%itemWidth;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   358
			if (xmargin < 0 && mod < -itemWidth/2) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   359
				itemC++;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   360
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   361
			if (xmargin > 0 && mod > itemWidth/2) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   362
				itemC--;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   363
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   364
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   365
			if(itemC < 0) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   366
				itemC = 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   367
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   368
			if(itemC >= data.itemCount) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   369
				itemC = data.itemCount-1;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   370
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   371
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   372
			$this.timeline('goTo', data.items.eq(itemC).attr('data-id'), data.items.eq(itemC).attr('data-count'));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   373
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   374
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   375
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   376
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   377
		open : function (id, data_count) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   378
			var $this = this,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   379
				data = $this.data('timeline'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   380
				$items = $this.find(data.options.itemOpenClass),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   381
				speed = data.options.scrollSpeed,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   382
				width =  data.itemOpenWidth,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   383
				easing = data.options.easin,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   384
				itemMargin = data.options.itemMargin;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   385
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   386
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   387
			$items.each(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   388
				if ($(this).attr('data-id') == id) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   389
					if (!data_count || data_count == $(this).attr('data-count')) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   390
						var $newThis = $(this);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   391
						// Trigger itemOpen event
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   392
						$this.trigger('itemOpen.Timeline');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   393
						data.open_count = data_count;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   394
						// Open content and move margin	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   395
						$(this).stop(true).show().animate({width: width, marginLeft: itemMargin/2, marginRight: itemMargin/2,}, speed, easing);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   396
						
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   397
						if (typeof $(this).attr('data-access') != 'undefined' && $(this).attr('data-access') != '') {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   398
							var action = $(this).attr('data-access');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   399
							$.post(action, function(data){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   400
								
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   401
								$('body').append('<div class="ajax_preloading_holder" style="display:none"></div>');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   402
								$('.ajax_preloading_holder').html(data);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   403
								if ($('.ajax_preloading_holder img').length > 0 ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   404
									$('.ajax_preloading_holder img').load(function() {  
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   405
										$newThis.find('.item_open_content').html(data);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   406
										$('.ajax_preloading_holder').remove();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   407
										$(this).attr('data-access', '');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   408
										$newThis.find('.scrollable-content').mCustomScrollbar();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   409
										$newThis.find("a[rel^='prettyPhoto']").prettyPhoto();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   410
										$newThis.find('.timeline_rollover_bottom').timelineRollover('bottom');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   411
									});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   412
								}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   413
								else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   414
									$newThis.find('.item_open_content').html(data);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   415
									$('.ajax_preloading_holder').remove();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   416
									$(this).attr('data-access', '');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   417
								}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   418
							});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   419
						}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   420
						
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   421
						if($('body').width() < 767) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   422
							data.margin -= (data.itemWidth+data.options.itemMargin)/2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   423
							data.marginResponse = true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   424
						}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   425
						else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   426
							data.marginResponse = false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   427
						}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   428
						data.margin -= (width + data.options.itemMargin + data.itemWidth)/2 - data.itemWidth/2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   429
						data.iholder.stop(true).animate({marginLeft : data.margin}, speed, easing);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   430
						data.open = id;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   431
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   432
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   433
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   434
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   435
			return $this;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   436
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   437
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   438
		close : function (id, idOpen, dataCountOpen) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   439
			var $this = this,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   440
				data = $this.data('timeline'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   441
				$items = $this.find(data.options.itemOpenClass),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   442
				speed = data.options.scrollSpeed,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   443
				width =  data.itemOpenWidth,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   444
				easing = data.options.easing;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   445
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   446
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   447
			$items.each(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   448
				if ($(this).attr('data-id') == id && $(this).attr('data-count') == data.open_count && $(this).is(":visible") ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   449
					// Trigger itemOpen event
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   450
					$this.trigger('itemClose.Timeline');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   451
					
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   452
					// Close content and move margin	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   453
					$(this).stop(true).animate({width: 0, margin:0}, speed, easing, function(){$(this).hide()});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   454
					if (data.marginResponse) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   455
						data.margin += (data.itemWidth+data.options.itemMargin)/2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   456
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   457
					data.margin += (width + data.options.itemMargin)/2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   458
					data.iholder.stop(true).animate({marginLeft : data.margin}, speed, easing);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   459
					data.open = false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   460
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   461
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   462
			if(idOpen) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   463
				$this.timeline('open', idOpen, dataCountOpen);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   464
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   465
			return $this;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   466
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   467
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   468
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   469
		// Move one step left
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   470
		right : function() { 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   471
			var $this = this,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   472
				data = $this.data('timeline'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   473
				speed = data.options.scrollSpeed,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   474
				easing = data.options.easing;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   475
			if (data.currentIndex < data.itemCount-1)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   476
			{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   477
				var dataId = data.items.eq(data.currentIndex+1).attr('data-id');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   478
				var dataCount = data.items.eq(data.currentIndex+1).attr('data-count');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   479
				$this.timeline('goTo', dataId, dataCount);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   480
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   481
			else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   482
			{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   483
				data.iholder.stop(true).animate({marginLeft : data.margin-50}, speed/2, easing).animate({marginLeft : data.margin}, speed/2, easing);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   484
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   485
			return $this
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   486
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   487
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   488
		// Move one step right
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   489
		left : function( ) { 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   490
			var $this = this,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   491
				data = $this.data('timeline'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   492
				speed = data.options.scrollSpeed,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   493
				easing = data.options.easing;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   494
			if (data.currentIndex > 0)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   495
			{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   496
				var dataId = data.items.eq(data.currentIndex-1).attr('data-id');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   497
				var dataCount = data.items.eq(data.currentIndex-1).attr('data-count');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   498
				$this.timeline('goTo', dataId, dataCount);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   499
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   500
			else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   501
			{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   502
				data.iholder.stop(true).animate({marginLeft : data.margin+50}, speed/2, easing).animate({marginLeft : data.margin}, speed/2, easing);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   503
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   504
			return $this;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   505
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   506
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   507
		// Go to item
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   508
		goTo : function (id, data_count, openElement) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   509
			var $this = this,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   510
				data = $this.data('timeline'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   511
				speed = data.options.scrollSpeed,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   512
				easing = data.options.easing,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   513
				$items = data.items,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   514
				timelineWidth = $this.find('.timeline_line').width(),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   515
				count = -1,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   516
				found = false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   517
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   518
			// Find item index
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   519
			$items.each(function(index){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   520
				if(id == $(this).attr('data-id'))
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   521
				{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   522
					if (!data_count || data_count == $(this).attr('data-count'))
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   523
					{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   524
						found = true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   525
						count = index;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   526
						return false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   527
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   528
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   529
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   530
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   531
			// Move if fount
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   532
			if(found)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   533
			{
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   534
				// Move lineView to current element
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   535
				var $nodes = $this.find('.t_line_node');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   536
				$nodes.removeClass('active');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   537
				var $goToNode = $nodes.parent().parent().find('[href="#'+id+'"]').addClass('active');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   538
				data.lineMargin = -parseInt($goToNode.parent().parent().attr('data-id'),10)*100;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   539
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   540
				// check if responsive width
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   541
				if($this.find('.t_line_view:first').width() > $this.find('.timeline_line').width()) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   542
					data.lineMargin *=2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   543
					if ($goToNode.parent().hasClass('right')) data.lineMargin -= 100;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   544
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   545
					
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   546
				if(data.noAnimation){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   547
					data.noAnimation = false;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   548
					$this.find('.t_line_wrapper').stop(true).css({marginLeft : data.lineMargin+'%'});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   549
				}	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   550
				else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   551
					$this.find('.t_line_wrapper').stop(true).animate({marginLeft : data.lineMargin+'%'}, speed, easing );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   552
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   553
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   554
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   555
				if(data.open) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   556
					$this.timeline('close', data.open, id, data_count);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   557
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   558
				else if (openElement) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   559
					$this.timeline('open', id, data_count);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   560
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   561
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   562
				// Trigger ScrollStart event
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   563
				$this.trigger('scrollStart.Timeline');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   564
					
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   565
				// Scroll
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   566
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   567
				data.margin += (data.itemWidth + data.options.itemMargin)*(data.currentIndex - count);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   568
				data.currentIndex = count;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   569
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   570
				var multiply = (parseInt(data.iholder.css('margin-left')) - data.margin)/data.itemWidth;				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   571
				data.iholder.stop(true).animate({marginLeft : data.margin}, speed+(speed/5)*(Math.abs(multiply)-1), easing, function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   572
					// Trigger ScrollStop event
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   573
					$this.trigger('scrollStop.Timeline');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   574
				});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   575
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   576
			return $this;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   577
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   578
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   579
		// move line to the left
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   580
		lineLeft : function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   581
			var $this = this,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   582
				data = $this.data('timeline'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   583
				speed = data.options.scrollSpeed,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   584
				easing = data.options.easing;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   585
			if (data.lineMargin != 0 && data.options.categories) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   586
				data.lineMargin += 100;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   587
				$this.find('.t_line_wrapper').stop(true).animate({marginLeft : data.lineMargin+'%'}, speed, easing);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   588
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   589
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   590
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   591
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   592
		// move line to the right
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   593
		lineRight : function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   594
			var $this = this,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   595
				data = $this.data('timeline'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   596
				speed = data.options.scrollSpeed,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   597
				easing = data.options.easing;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   598
			if ($this.find('.t_line_view:first').width() > $this.find('.timeline_line').width())
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   599
				var viewCount = data.lineViewCount*2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   600
			else
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   601
				var viewCount = data.lineViewCount;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   602
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   603
			if (data.lineMargin != -(viewCount-1)*100 && data.options.categories) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   604
				data.lineMargin -= 100;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   605
				$this.find('.t_line_wrapper').stop(true).animate({marginLeft : data.lineMargin+'%'}, speed, easing);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   606
			}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   607
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   608
		},
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   609
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   610
		// Create timeline elements and css dependent properties
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   611
		createElements : function() {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   612
			var $this = this,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   613
				data = $this.data('timeline'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   614
				$items = data.items;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   615
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   616
			var html = '\n' +
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   617
'    <div class="timeline_line" style="text-align: left; position:relative; margin-left:auto; margin-right:auto;">\n' +
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   618
'	 </div>\n';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   619
			$this.prepend(html);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   620
			var	timelineWidth = $this.find('.timeline_line').width(),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   621
				cnt = 0,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   622
				nodes = new Array(),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   623
				months = [''].concat(data.options.categories);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   624
				monthsDays = [0].concat(data.options.nuberOfSegments),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   625
				minM = months.length,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   626
				minY = 99999,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   627
				maxM = 0,
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   628
				maxY = 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   629
				if(!data.options.yearsOn) maxY = 99999;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   630
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   631
			// find timeline date range and make node elements	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   632
			$items.each(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   633
				var dataId = $(this).attr('data-id'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   634
					nodeName = $(this).attr('data-name'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   635
					dataDesc = $(this).attr('data-description'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   636
					dataArray = dataId.split('/'),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   637
					d = parseInt(dataArray[0],10),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   638
					m = ($.inArray(dataArray[1],months) != -1) ? $.inArray(dataArray[1],months) : parseInt(dataArray[1],10),
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   639
					y = parseInt(dataArray[2],10);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   640
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   641
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   642
				maxY = Math.max(maxY, y);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   643
				maxM = Math.max(maxM, m);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   644
				minY = Math.min(minY, y);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   645
				minM = Math.min(minM, m);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   646
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   647
						
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   648
				// Store node element
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   649
				nodes[dataId] = '<a href="#'+dataId+'" class="t_line_node'+(cnt == data.currentIndex ? ' active' : '')+'" style="left: '+(100/(data.options.categories ? monthsDays[m] : monthsDays[1]))*d+'%; position:absolute; text-align:center;">'+((typeof nodeName != 'undefined') ? nodeName : d);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   650
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   651
				if(typeof dataDesc != 'undefined') nodes[dataId]+= '<span class="t_node_desc" style="white-space:nowrap; position:absolute; z-index: 1;">'+dataDesc+'</span>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   652
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   653
				nodes[dataId]+='</a>\n';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   654
				cnt++;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   655
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   656
					
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   657
			// Make wrapper elements	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   658
			html = '\n' +
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   659
'		<div id="t_line_left" style="position: absolute;"></div><div id="t_line_right" style="position: absolute;"></div>\n' +
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   660
'		<div class="t_line_holder" style="position:relative; overflow: hidden; width:100%;">\n' + 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   661
'			<div class="t_line_wrapper" style="white-space:nowrap;">\n';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   662
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   663
			cnt=0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   664
			// Prepare for loop, every view has 2 months, we show both if first has nodes in it
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   665
			if(maxM > 0) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   666
				if (minM%2 == 0) minM--;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   667
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   668
				// Set max to be on first next view (the one that is going to stop the loop)
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   669
				if (maxM%2 == 0) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   670
					if (maxM == 12) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   671
						maxM = 1; maxY++;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   672
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   673
					else maxM++;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   674
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   675
				else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   676
					maxM +=2;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   677
					if (maxM == 13) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   678
						maxM = 1; maxY++;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   679
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   680
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   681
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   682
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   683
				if (!data.options.categories) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   684
					html += 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   685
					'<div class="t_line_view" data-id="'+cnt+'" style="position:relative; display:inline-block; width:100%;">\n'+
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   686
					'					<div class="t_line_m" style="width:100%; border:0; position:absolute; top:0;">\n';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   687
					for (var x in nodes) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   688
						html += nodes[x];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   689
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   690
					html += '</div>\n'+
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   691
					'</div>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   692
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   693
				else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   694
					var firstMonth = true;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   695
					// Generate months and place nodes
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   696
					while ((minY != maxY && !isNaN(minY) && !isNaN(maxY)) || minM != maxM) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   697
						var nodes1 = new Array();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   698
						var nodes1length = 0;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   699
						
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   700
						for (x in nodes) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   701
							var dataArray = x.split('/');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   702
							m = ($.inArray(dataArray[1],months) != -1) ? $.inArray(dataArray[1],months) : parseInt(dataArray[1],10);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   703
							if(!data.options.yearsOn) y = minY;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   704
							else y = parseInt(dataArray[2],10);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   705
							if (m == minM && (y == minY || !data.options.yearsOn)){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   706
								nodes1[x]= nodes[x];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   707
								nodes1length++;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   708
								nodes.splice(x,1);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   709
							}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   710
						
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   711
						}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   712
						if (nodes1length != 0) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   713
							if (firstMonth) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   714
								firstMonth = !firstMonth;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   715
								html += 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   716
							'<div class="t_line_view" data-id="'+cnt+'" style="position:relative; display:inline-block;">\n'+
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   717
			'					<div class="t_line_m" style="position:absolute; top:0;">\n'+
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   718
			'						<h4 class="t_line_month" style="position:abolute; width:100% top:0; text-align:center;">'+months[minM]+(data.options.yearsOn ? '<span class="t_line_month_year"> '+(minY < 0 ? (-minY)+' B.C.' : minY)+'</span>' : '' )+'</h4>\n';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   719
								
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   720
								// Fill with nodes	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   721
								for (x in nodes1) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   722
									if(typeof nodes1[x] == 'string') {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   723
										html+= nodes1[x];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   724
									}									
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   725
								}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   726
								html +=
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   727
			'					</div> <!-- KRAJ PRVOG -->\n';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   728
							}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   729
							else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   730
								firstMonth = !firstMonth;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   731
								html +=
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   732
			'					<div class="t_line_m right" style="position:absolute; top:0;">\n'+
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   733
			'						<h4 class="t_line_month" style="position:abolute; width:100% top:0; text-align:center;">'+(typeof months[minM] !== 'undefined' ? months[minM] : '')+(data.options.yearsOn ? '<span class="t_line_month_year"> '+minY+'</span>' : '' )+'</h4>\n';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   734
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   735
								// Fill with nodes	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   736
								for (x in nodes1) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   737
									if(typeof nodes1[x] == 'string') {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   738
										html+= nodes1[x];
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   739
									}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   740
								}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   741
								html +=
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   742
			'					</div><!-- KRAJ DRUGOG -->\n'+
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   743
			'					<div style="clear:both"></div>\n'+
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   744
			'				</div>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   745
								cnt++;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   746
								
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   747
							}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   748
		
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   749
								
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   750
						}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   751
							
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   752
						if (minM == months.length-1) { minM = 1; minY++;}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   753
						else { minM++; }
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   754
						
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   755
						
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   756
						if(minM == maxM && !data.options.yearsOn) break;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   757
							
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   758
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   759
						
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   760
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   761
					if (!firstMonth) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   762
						html +=
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   763
		'					<div class="t_line_m right" style="position:absolute; top:0;">\n'+
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   764
		'						<h4 class="t_line_month" style="position:abolute; width:100% top:0; text-align:center;">'+(typeof months[minM] !== 'undefined' ? months[minM] : '')+(data.options.yearsOn ? '<span class="t_line_month_year"> '+minY+'</span>' : '' )+'</h4>\n'+
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   765
		'					</div>\n'+
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   766
		'					<div style="clear:both"></div>\n'+
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   767
		'				</div>';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   768
						cnt++;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   769
					}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   770
					
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   771
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   772
			}	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   773
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   774
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   775
				html +=	'\n' +				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   776
'				<div style="clear:both"></div>\n'+
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   777
'			</div>\n'+
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   778
'		</div>\n';
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   779
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   780
			// Set number of View elements
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   781
			data.lineViewCount = cnt;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   782
			// Add generated html and set width & margin for dinamic timeline 
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   783
			$this.find('.timeline_line').html(html);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   784
			$this.find('.t_line_node').each(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   785
				var $thisNode = $(this);
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   786
				$(this).find('span').hide();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   787
				$(this).hover(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   788
					$items.each(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   789
						if($(this).attr('data-id') == $thisNode.attr('href').substr(1)) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   790
							$(this).addClass('item_node_hover');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   791
						}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   792
					});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   793
					$(this).find('span').show();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   794
				}, function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   795
					$(this).find('span').hide();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   796
					$('.item_node_hover').removeClass('item_node_hover');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   797
				});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   798
				
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   799
				//Position lineView to selected item
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   800
				if($(this).hasClass('active')) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   801
					data.lineMargin = -parseInt($(this).parent().parent('.t_line_view').attr('data-id'),10)*100;
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   802
					$this.find('.t_line_wrapper').css('margin-left', data.lineMargin+'%');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   803
				}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   804
				// Bind goTo function to click event
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   805
				$(this).click(function(e){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   806
					e.preventDefault();
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   807
					$this.find('.t_line_node').removeClass('active');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   808
					$(this).addClass('active');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   809
					$this.timeline('goTo', $(this).attr('href').substr(1));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   810
				});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   811
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   812
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   813
			$this.find('#t_line_left').click(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   814
				$this.timeline('lineLeft');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   815
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   816
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   817
			$this.find('#t_line_right').click(function(){
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   818
				$this.timeline('lineRight');
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   819
			});
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   820
			
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   821
		}
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   822
	};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   823
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   824
	// Initiate methods
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   825
	$.fn.timeline = function( method ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   826
    
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   827
		if ( t_methods[method] ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   828
			return t_methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   829
		} else if ( typeof method === 'object' || ! method ) {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   830
			return t_methods.init.apply( this, arguments );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   831
		} else {
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   832
			$.error( 'Method ' +  method + ' does not exist on jQuery.timeline' );
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   833
		}    
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   834
  
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   835
	};
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   836
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   837
	
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   838
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   839
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   840
d970ebf37754 first import
ymh <ymh.work@gmail.com>
parents:
diff changeset
   841
})(jQuery);