/**
 * class pageDisplay
 * @description 页面延时播放类
 * @require ae.js
 */
if(!AE.run.minisite){AE.namespace('AE.run.minisite');}
AE.namespace('AE.run.minisite.pageDisplay');
AE.run.minisite.pageDisplay = function(){
	var _self = this, timer, timeSelector, btnStart, btnPause;
	var defConfig = {
			// 播放延时选择器ID
			timeSelectorId : '',
			// 播放按钮ID
			btnStartId     : '',
			// 暂停按钮ID
			btnPauseId     : '',
			// 下一页地址
			nextURL        : ''
	};

	/**
	 * @method init
	 * @param {object} userConfig 用户配置数据
	 * @return void
	 */
	_self.init = function(userConfig){
		defConfig = YL.merge(defConfig,userConfig);

		timeSelector = get(defConfig.timeSelectorId);
		btnStart     = get(defConfig.btnStartId);
		btnPause     = get(defConfig.btnPauseId);
		
		YUE.on(btnStart,'click',_self.start);
		YUE.on(btnPause,'click',_self.stop);

		if(getQueryStringParam('autoplay') == '1'){
			var queryTimeSpan = parseInt(getQueryStringParam('timespan')); 
			if(YL.isNumber(queryTimeSpan)){
				timeSelector.value = queryTimeSpan;
			}
			_self.start();
		}
	};
	
	_self.start = function(){
		var timeSpan = timeSelector.value * 1000;
		if(defConfig.nextURL == ''){playBtnControl('stop');return;}
		timer = setTimeout(function(){window.location = rebuildURL(defConfig.nextURL,timeSelector);}, timeSpan);
		playBtnControl('play');
	};
	
	_self.stop = function(){
		clearTimeout(timer);
		playBtnControl('pause');
	};
	

	/**
	 * @method getQueryStringParam 取得URL query string 变量值
	 * @param {String} paramName query stirng 变量名
	 * @param {String} URL地址,可选,若为空则使用window.location.href
	 * @return {String} query string 变量值
	 */
	var getQueryStringParam = function (paramName, url) {
		var i, len, idx, queryString, params, tokens;
		url = url || top.location.href;
		idx = url.indexOf("?");
		queryString = (idx >= 0) ? url.substr(idx + 1) : url;
		idx = queryString.lastIndexOf("#");
		queryString = (idx >= 0) ? queryString.substr(0, idx) : queryString;
		params = queryString.split("&");
		for (i = 0, len = params.length; i < len; i++) {
			tokens = params[i].split("=");
			if (tokens.length >= 2) {
				if (tokens[0] === paramName) {
					return unescape(tokens[1]);
				}
			}
		}
		return null;
	};
	
	/**
	 * @method rebuildURL 重新组合URL地址加入autoplay、timespan 两个querystring 变量
	 * @param {String} nextUrl URL地址
	 * @param {HTMLElement} selector 延时选择器DOM
	 * @return {String} 新URL地址
	 */
	var rebuildURL = function(nextUrl,selector){
		var query       = window.location.search,
				timeSpan    = selector.value,
				namedAnchor = '';
		// 处理query string
		query = query.replace('\?','').replace(/autoplay\=1[\&]?/ig,'').replace(/timespan\=\d+[\&]?/ig,'');
		if(query == ''){
			query = 'autoplay=1&timespan=' + timeSpan;
		} else {
			query = 'autoplay=1&timespan=' + timeSpan + '\&' + query;
		}
		// 处理HASH
		if(nextUrl.indexOf('\#') != -1){
			nextUrl = nextUrl.split('\#');
			namedAnchor = '\#' + nextUrl[1];
			nextUrl     = nextUrl[0];
		}
		nextUrl = nextUrl + '?' + query + namedAnchor;
		return nextUrl;
	};
	
	/**
	 * @method playBtnControl 按钮状态控制
	 * @param {String} _action 按钮状态
	 * @return void
	 */
	var playBtnControl = function(_action){
		if(_action == 'play'){
			YUD.setStyle(btnStart,'display','none');
			YUD.setStyle(btnPause,'display','');				
		} else if(_action == 'pause') {
			YUD.setStyle(btnStart,'display','');
			YUD.setStyle(btnPause,'display','none');				
		} else {
			YUD.setStyle(btnStart,'display','none');
			YUD.setStyle(btnPause,'display','none');		
		}
	};
};