/**
 * @author hooriza (ajaxUI team)
 */

(function(className) {

	SPS[className] = $Class({

		_o : null,
		_url : '',
		_vocabID : '',
		_cancel_OK : false,

		_getSelectedList : function() {

			var o = this._o;
			var aRet = [];

			$A(o.checkboxes).forEach(function(oCheckbox) {
				if (oCheckbox == o.selectall) return;

				if (oCheckbox.checked)
					aRet.push(oCheckbox.value);
			});

			return aRet;

		},

		_checkSelected : function(sKey) {
			var bSelected = this._getSelectedList().length > 0;
			if (!bSelected) alert(SPS.text(sKey));

			return bSelected;
		},

		$init : function(sEl) {

			var o = this._o = {};

			var oEl = $(sEl);

			o.selectall = $$('#selectall', oEl)[0];
			o.checkboxes = $$('input[name=vocabEntryID]', oEl);

			o.sort = $$('.option.u', oEl)[0];

			o.layerListen = $$('.layer_p.ulisten', oEl)[0];
			o.layerGrab = $$('.layer_p.ugrab', oEl)[0];
			o.layerSort = $$('.layer_p.usort', oEl)[0];

			$Element(o.layerListen).hide();
			$Element(o.layerGrab).hide();
			$Element(o.layerSort).hide();

			//SPS.selectbox.touchAll('select_d', oEl);

			this._repositionLayers();
			this._bindEvents();

		},

		_grab : function(srcVocabID) {

			var o = this._o;
			var aSelected = this._getSelectedList();
			var oTarget = $$('[name=target]', o.layerGrab)[0];
			var sTargetVocabID = null;

			//	关于【收藏整个单词本】
//			var maxTime = 1000;
//			var self = arguments.callee;
//			var that = this;
//			var grab_ok_Btn = $('OK');


			// NGDN-2121【登录后进入我的单词本调用cm.js中的“_setSelect()”; 其他则调用“cm_hmenu_list.js”】
			if(typeof oTarget != 'undefined'){
				sTargetVocabID = SPS.getFormValue(oTarget);
			}else{
				var selectValue = o.layerGrab.getElementsByTagName('p')[0];

				sTargetVocabID = selectValue.getAttribute('value');
			}

			if (sTargetVocabID === null) {
				alert(SPS.text('SELECT_FOLDER'));
				oTarget.focus();
				return;
			}

			var oData = [];

			$A(aSelected).forEach(function(nID) {
				oData.push({ 'vocabEntryID' : nID });
			});

			var sUrl = this._url;

			//	取消其再次请求的执行
			if(this._cancel_OK) return;
			this._cancel_OK = true;			

			var oAjax = $Ajax(sUrl, {

				onload : function(res) {
					var sRes = res.text();
					if (sRes == 'success') {
						location.reload();
						return;
					}else if(sRes=='max'){
						alert(SPS.text('MAX_SAVE_LIMIT'));
						SPS.layer.hide();
					}else{
					//location.reload();
					}
					//location.reload();
				}

			});

			oAjax.request({
				'targetVocabID' : sTargetVocabID,
				'srcVocabID' : this._vocabID,
				'vocabEntryIDs' : $Json(oData).toString()
			});
			
			//	关于【收藏整个单词本】，超出最大时间限制后，停止请求
//			setTimeout(function(){
//				oAjax.abort();
//				SPS.layer.hide();
//			
//				if (grab_ok_Btn) {
//					grab_ok_Btn.onclick = function(){
//						self.apply(that, [sTargetVocabID])
//					}
//				}
//			}, maxTime);
		},

		_repositionLayers : function() {

			var o = this._o;

			document.body.insertBefore(o.layerListen, document.body.firstChild);
			document.body.insertBefore(o.layerGrab, document.body.firstChild);
			document.body.insertBefore(o.layerSort, document.body.firstChild);

		},

		_showListen : function(oEl, bTop) {

			var o = this._o;
			if (!this._checkSelected('SELECT_LISTEN_ITEM')) return;

			SPS.layer.show(o.layerListen);
			SPS.autoPosition(oEl, o.layerListen, [ 0, 5 ], bTop);

			// NGDN-1219 【在未登录状态，进入其他人的单词本】
			var top = $Element(o.layerListen).offset().top,
					listenBtn = $Element(oEl).height();

			if($Element(oEl).hasClass('tListen')){
				$Element(o.layerListen).css('top',(top-$Element(o.layerListen).height()-listenBtn-10)+'px');
			}else if($Element(oEl).hasClass('bListen')){
				$Element(o.layerListen).css('top',(top+$Element(o.layerListen).height()+listenBtn+10)+'px');
			}
		},

		_doListen : function() {

			var o = this._o;
			var aSwf = [];

			$A(o.checkboxes).forEach(function(oCheckbox) {
				if (oCheckbox == o.selectall) return;

				if (oCheckbox.checked) {
					var sSwfFile = oCheckbox.className.match(/swf\(([^)]*)\)/);
					sSwfFile = sSwfFile && sSwfFile[1];
					if (sSwfFile) aSwf.push(sSwfFile);
				}
			});

			var oValues = SPS.data.getValue('.listen_', o.layerListen, [ 'loop', 'interval', 'type' ]);

			try {
				StudyNotesPlayer(aSwf.join('|'), oValues.loop, oValues.interval, oValues.type);
			} catch(e) { }
		},

		_showGrab : function(oEl, bTop, url, vocabID,all) {

			var o = this._o;
			
			//	允许再次请求的执行
			this._cancel_OK = false;
		
			if(all){
				if (!this._checkSelected('SELECT_GRAB_ITEM')) return;
			}

			this._url = url;
			this._vocabID = vocabID;
			SPS.layer.show(o.layerGrab);
			SPS.autoPosition(oEl, o.layerGrab, [ 0, 5 ], bTop);

		},

		_bindEvents : function() {

			var self = this;
			var o = this._o;

			// selectAll 클릭했을때
			$Fn(function(oEvent) {

				var bFlag = this.checked;

				$A(o.checkboxes).forEach(function(oCheckbox) {
					if (oCheckbox == o.selectall) return;
					oCheckbox.checked = bFlag;
				});

			}).owner(o.selectall).attach(o.selectall, 'click');

			// Sort Options 클릭했을때
			$Fn(function(oEvent) {

				SPS.layer.show(o.layerSort);
				SPS.autoPosition(o.sort, o.layerSort, [ -o.layerSort.offsetWidth - 5, -o.sort.offsetHeight ]);

				oEvent.stop();

			}).attach(o.sort, 'click');

		}

	});

})('ct_58_02');
