$(function() {
	// 检查 jQuery 是否可用
	if (typeof $ === 'undefined' || typeof $.fn === 'undefined') {
		console.warn('jQuery not loaded properly');
		return;
	}
	
	// 检查 owlCarousel 插件是否存在
	if (typeof $.fn.owlCarousel === 'undefined') {
		console.warn('owlCarousel plugin not loaded');
		return;
	}
	
	// 检查 #owl-demo 元素是否存在
	var $owlDemo = $('#owl-demo');
	if ($owlDemo.length === 0) {
		console.warn('#owl-demo element not found');
		return;
	}
	
	var time = 4; //进度条时间，以秒为单位，越小越快
	var $progressBar, $bar, $elem, isPause, tick, percentTime;
	
	// 初始化轮播
	$owlDemo.owlCarousel({
		navigation: true,
		navigationText: ['', ''],
		slideSpeed: 500,
		paginationSpeed: 500,
		singleItem: true,
		afterInit: progressBar,
		afterMove: moved,
		startDragging: pauseOnDragging
	});

	function progressBar(elem) {
		// 检查传入的元素是否存在
		if (!elem || typeof elem === 'undefined') {
			console.warn('progressBar: elem is undefined');
			return;
		}
		
		$elem = elem;
		
		// 检查是否有子元素可以插入进度条
		var firstChild = $elem.children().eq(0);
		if (firstChild.length === 0) {
			console.warn('progressBar: no child element found');
			return;
		}
		
		buildProgressBar(firstChild);
		start();
	}

	function buildProgressBar($target) {
		// 检查是否已经存在进度条
		if ($('#progressBar').length > 0) {
			return;
		}
		
		try {
			$progressBar = $('<div>', {
				id: 'progressBar'
			});
			$bar = $('<div>', {
				id: 'bar'
			});
			$progressBar.append($bar);
			
			// 检查目标元素是否存在
			if ($target && $target.length > 0) {
				$progressBar.insertAfter($target);
			} else {
				console.warn('buildProgressBar: target element not found');
			}
		} catch(e) {
			console.warn('buildProgressBar error:', e.message);
		}
	}

	function start() {
		// 如果已经存在定时器，先清除
		if (tick) {
			clearInterval(tick);
		}
		
		percentTime = 0;
		isPause = false;
		tick = setInterval(interval, 10);
	}

	function interval() {
		// 检查进度条元素是否存在
		if (!$bar || $bar.length === 0) {
			if (tick) {
				clearInterval(tick);
			}
			return;
		}
		
		if(isPause === false) {
			percentTime += 1 / time;
			
			// 限制百分比不超过100
			var percent = Math.min(percentTime, 100);
			$bar.css({
				width: percent + '%'
			});
			
			if(percentTime >= 100) {
				// 检查 $elem 是否存在
				if ($elem && $elem.trigger) {
					$elem.trigger('owl.next');
				} else {
					// 如果无法触发，重置进度
					clearInterval(tick);
					start();
				}
			}
		}
	}

	function pauseOnDragging() {
		isPause = true;
	}

	function moved() {
		// 清除现有定时器
		if (tick) {
			clearTimeout(tick);
		}
		start();
	}
	
	// 检查 $elem 是否存在再绑定事件
	if ($elem && $elem.on) {
		$elem.on('mouseover', function() {
			isPause = true;
		});
		
		$elem.on('mouseout', function() {
			isPause = false;
		});
	} else {
		// 如果 $elem 不存在，尝试使用 $owlDemo
		if ($owlDemo && $owlDemo.on) {
			$owlDemo.on('mouseover', function() {
				if (typeof isPause !== 'undefined') isPause = true;
			});
			
			$owlDemo.on('mouseout', function() {
				if (typeof isPause !== 'undefined') isPause = false;
			});
		}
	}
});