var clid = 0;//現在情報表示中リストID
var slider;
var kimode = 0;
var kinong = 0;
var noki = 0;
var kimax = 100;
var kimin = 0;
var kimax2 = 100;
var kimin2 = 0;
var kiset = 0;
var slidone = 0;
var frontb = 0;
var lastans = "";
var fans = "";
var wval = "";
var flipboth = 0;
var tpoi = 0;
var mmr = 2;
var nong = {'ok':0,'oks':0,'okr':0,'okd':0};
var fmode = 0;
var flipval = 0;
var pointer = 0;
var skeys = "";
var mlist = 0;
var wselect = 0;
var listexp = '';
var changed = 1;
var gettingl = 0;
var noitems = 0;
var wordOrder = 0;
var init = 0;
var tView;
var logsave = 1;
var nohistory = 0;
var gettingl = 0;
var noitems = 0;
var fposition;
var keysetter = Array('','（Ins）','','（Del）','（→）','（←）','（Ent）','（↑）','（↓）');
var keysets1 = Array('←','↑','→','↓','Enter','Delete','Insert','Home','End','Page Up','Page Down','Pause');
var keysets2 = Array('←','↑','→','↓','Ent','Del','Ins','Home','End','PgUp','PgDn','Pause');
var keysets3 = Array(37,39,38,40,13,46,45,36,35,33,34,19);
var commands = Array('割り当てない','カード切り替え（全・O・X）','対象切り替え（スペル・訳）','表示切替（片・両・タイプ）','裏返す','前へ','次へ・タイピング判別','O答','X答');
var assignC = Array(5,7,4,8,6,3,1,0,0,0,0,0);
function processEnterKey(){
	jip();
	$('body').keydown(function(e,ui){
		//e = e || window.event;
		var target = e.target || e.srcElement;
		if(target){
			if(((target.type && target.type == 'text') || (target.type && target.type == 'password')) && target.id != "fdic"){
				if(e.keyCode == 13) {
					if (e.preventDefault) {
						e.preventDefault(); 
						e.stopPropagation(); 
					}else{
						e.returnValue = false;
						e.cancelBubble = true;
					}
					/*if(target.id == "ct-searchkey"){
						changeTarget('searchkey');
					}*/
					return false;
				}
			}else if(mmr != 2){
				var stopy = 0;
				switch(e.keyCode){
					case 37:strokeKey(assignC[0]);break;
					case 38:strokeKey(assignC[1]);break;
					case 39:strokeKey(assignC[2]);break;
					case 40:strokeKey(assignC[3]);break;
					case 13:strokeKey(assignC[4]);break;
					case 46:strokeKey(assignC[5]);break;
					case 45:strokeKey(assignC[6]);break;
					case 36:strokeKey(assignC[7]);break;
					case 35:strokeKey(assignC[8]);break;
					case 33:strokeKey(assignC[9]);break;
					case 34:strokeKey(assignC[10]);break;
					case 19:strokeKey(assignC[11]);break;
					case 0:switch(e.charCode){
							default:stopy = 1;
						}break;
					default:stopy = 1;
				}
				if(stopy == 0){
					if (e.preventDefault) {
						e.preventDefault(); 
						e.stopPropagation(); 
					}else{
						e.returnValue = false;
						e.cancelBubble = true;
					}
				}
				
			}
		}
	});
	jip2();
}
function hideFcard(LID){
	jip('green',['fcardon','fcardon2']);
	$('#fcarea').hide("slide");
	if(FWORDS.length != 0){
		$('#playpause').unbind('click');
		$('#playpause').click(function(e){loadFcard(LID);});
		$('#playpause').attr('src','http://jipanglish.com/img/v-play.png');
	}
	jip2();
	/*if(pdis == false){
		$('#playpause').attr('src','http://jipanglish.com/img/v-play.png');
	}*/
}
function loadFcard(LID){
	jip('yellow',['fcardon']);
	$('#playpause').unbind('click');
	$('#playpause').attr('src','http://jipanglish.com/img/v-pause.png');
	$('#playpause').click(function(e){hideFcard(LID);});
	fcardon = true;
	if(fposition == undefined){
		$('#fcarea').css({'visibility' : 'visible','top': (600 / 2 - 100)+'px','left' : (945 / 2 - 200)+'px'});
	}
	$('#fcarea').show("slide");
	if(LID == 'm'){
		var RMW = FWORDS;
		var MR = 1;
		mmr = 1;
	}else{
		var RMW = FWORDS;
		var MR = 0;
		mmr =0;
	}
	pointer = 0;
	frontb = 0;
	noki = 0;
	kimode = 0;
	kiset = 0;
	lastans = "";
	//oMenuBar.show();
	showFword(MR);
	jip2();
}
function showDialog(mess){
	jip();
	$("#dialog").html(mess);
	$('#dialog').css({'visibility' : 'visible','top': $("#fcarea").css("top"),'left' : $("#fcarea").css("left")});
	$("#dialog").show("normal");
	setTimeout("hideDialog()",1500);
	jip2();
}
function hideDialog(){
	jip();
	$("#dialog").hide("slow");	
	jip2();
};
function showFword(MR,nofocus){
	//alert(loadFcard.caller.toString());
	jip();
	var tpointer,tpointer2,nobox,nooks = 0;
	if(MR == 1){
		var RMW = FWORDS;
	}else{
		var RMW = FWORDS;
	}
	if(kimode == 0){
		if(fmode == 0){
			tpointer = pointer;
		}else if(fmode == 2){
			if(nong[OK()] == 0){
				showDialog(l.m["f-nowrong"]);
				modeCard(MR,0,0)
				return;
			}else{
				for(var tpo = 0;tpo<RMW.length;tpo++){
					if(v[RMW[tpo]][OK()] == 1){
						if(nooks == pointer){
							tpointer = tpo;
							break;
						}
						nooks++;
					}
				}
			}
		}else{
			if(RMW.length - nong[OK()] == 0){
				showDialog(l.m["f-noright"]);
				modeCard(MR,0,0)
				return;
			}else{
				for(var tpo = 0;tpo<RMW.length;tpo++){
					if(v[RMW[tpo]][OK()] == 0){
						if(nooks == pointer){
							tpointer = tpo;
							break;
						}
						nooks++;
					}
				}
			}
		}
		tpoi = tpointer;
		var nofok = RMW.length - nong[OK()];
		if(fmode == 0){
			var ltarg = '<span class="red strong">'+l.m["f-all"]+' '+(tpointer+1)+'/'+RMW.length+'</span>　<a class="ajax" onclick="modeCard('+MR+',1,0)">O '+nofok+'</a>　<a class="ajax" onclick="modeCard('+MR+',2,0)">X '+nong[OK()]+'</a>';
		}else if(fmode == 2){
			var ltarg = '<a class="ajax" onclick="modeCard('+MR+',0,0)">'+l.m["f-all"]+' '+RMW.length+'</a>　<a class="ajax" onclick="modeCard('+MR+',1,0)">O '+nofok+'</a>　<span class="red strong">X '+(nooks+1)+'/'+nong[OK()]+'</span>';
		}else{
			var ltarg = '<a class="ajax" onclick="modeCard('+MR+',0,0)">'+l.m["f-all"]+' '+RMW.length+'</a>　<span class="red strong">O: '+(nooks+1)+'/'+nofok+'</span>　<a class="ajax" onclick="modeCard('+MR+',2,0)">X'+nong[OK()]+'</a>';
		}
		var kiltarg = "";
		if(kiset == 1){
			kiltarg = '<div class="size11">定着度（'+kimin2+'%-'+kimax2+'%）: <a class="ajax" onclick="modeCard('+MR+',0,1)">'+l.m["f-all"]+' '+noki+'</a>　<a class="ajax" onclick="modeCard('+MR+',1,1)">O '+(noki-kinong)+'</a>　<a class="ajax" onclick="modeCard('+MR+',2,1)">X'+kinong+'</a></div>';
		}
	}else if(kimode == 1){
		if(fmode == 0){
			if(noki == 0){
				showDialog('定着度設定カードはありません。');
				modeCard(MR,0,0)
				return;
			}else{
				for(var tpo = 0;tpo<RMW.length;tpo++){
					if(v[RMW[tpo]]['ki'] == 1){
						if(nooks == pointer){
							tpointer = tpo;
							tpointer2 = nooks;
							break;
						}
						nooks++;
					}
				}
			}
		}else if(fmode == 2){
			if(kinong == 0){
				showDialog(l.m["f-nowrong"]);
				modeCard(MR,0,1)
				return;
			}else{
				for(var tpo = 0;tpo<RMW.length;tpo++){
					if(v[RMW[tpo]][OK()] == 1 && v[RMW[tpo]]['ki'] == 1){
						if(nooks == pointer){
							tpointer = tpo;
							tpointer2 = nooks;
							break;
						}
						nooks++;
					}
				}
			}
		}else{
			if(noki - kinong == 0){
				showDialog(l.m["f-noright"]);
				modeCard(MR,0,1)
				return;
			}else{
				for(var tpo = 0;tpo<RMW.length;tpo++){
					if(v[RMW[tpo]][OK()] == 0 && v[RMW[tpo]]['ki'] == 1){
						if(nooks == pointer){
							tpointer = tpo;
							tpointer2 = nooks;
							break;
						}
						nooks++;
					}
				}
			}
		}
		tpoi = tpointer;
		var nofok = noki - kinong;
		if(fmode == 0){
			var kiltarg = '<span class="red strong">'+l.m["f-all"]+' '+(tpointer2+1)+'/'+noki+'</span>　<a class="ajax" onclick="modeCard('+MR+',1,1)">O '+nofok+'</a>　<a class="ajax" onclick="modeCard('+MR+',2,1)">X '+kinong+'</a>';
		}else if(fmode == 2){
			var kiltarg = '<a class="ajax" onclick="modeCard('+MR+',0,1)">'+l.m["f-all"]+' '+noki+'</a>　<a class="ajax" onclick="modeCard('+MR+',1,1)">O '+nofok+'</a>　<span class="red strong">X '+(nooks+1)+'/'+kinong+'</span>';
		}else{
			var kiltarg = '<a class="ajax" onclick="modeCard('+MR+',0,1)">'+l.m["f-all"]+' '+noki+'</a>　<span class="red strong">O '+(nooks+1)+'/'+nofok+'</span>　<a class="ajax" onclick="modeCard('+MR+',2,1)">X'+kinong+'</a>';
		}
		kiltarg = '<div class="size11">定着度（'+kimin2+'%-'+kimax2+'%）: '+kiltarg+'</div>';
		ltarg = '<a class="ajax" onclick="modeCard('+MR+',0,0)">'+l.m["f-all"]+' '+RMW.length+'</a>　<a class="ajax" onclick="modeCard('+MR+',1,0)">O '+(RMW.length-nong[OK()])+'</a>　<a class="ajax" onclick="modeCard('+MR+',2,0)">X'+nong[OK()]+'</a>';
	}
	if(frontb == 1){
		wval = v[RMW[tpointer]]['word'];
		fans = v[RMW[tpointer]]['mean'];
	}else if(frontb == 0){
		wval = v[RMW[tpointer]]['mean'];
		fans = v[RMW[tpointer]]['word'];
	}
	if((flipval == 1 && frontb == 0) || (flipval == 0 && frontb == 1)){
		var wval2 = v[RMW[tpointer]]['word'];
		var fans2 = v[RMW[tpointer]]['mean'];
	}else{
		var wval2 = v[RMW[tpointer]]['mean'];
		var fans2 = v[RMW[tpointer]]['word'];
	}
	if(v[RMW[tpointer]][OK()] == 0){
		nobox = 5;
	}else{
		nobox = 6;
	}
	if(flipboth == 2){
		var ltarg2 = '<span class="red strong">'+l.m["f-spell"]+'</span>';
	}else if(frontb == 0){
		var ltarg2 = '<span class="red strong">'+l.m["f-spell"]+'</span>　<a class="ajax" onclick="frontCard('+MR+',1)">'+l.m["f-trans"]+'</a>';
	}else{
		var ltarg2 = '<a class="ajax" onclick="frontCard('+MR+',0)">'+l.m["f-spell"]+'</a>　<span class="red strong">'+l.m["f-trans"]+'</span>';
	}
	if(flipboth == 1){
		$('#fcarea').html('<br /><div class="sbox'+nobox+'_top"><div class="sbox'+nobox+'_bottom"><div class="sbox'+nobox+'"><div class="profpad2"><div class="size11">'+l.m["f-card"]+''+keysetter[1]+' ： '+ltarg+'<br />'+l.m["f-target"]+''+keysetter[2]+' ： '+ltarg2+'</div>'+kiltarg+'<div class="size25 strong padt padb line2" align="center">'+v[RMW[tpointer]]['word']+'<hr />'+v[RMW[tpointer]]['mean']+'</div><div align="center" class="size10"><a class="ajax" onclick="bothCard('+MR+')">'+l.m["f-view"]+''+keysetter[3]+'</a>　<a class="ajax" onclick="preFword('+MR+')">'+l.m["f-pre"]+''+keysetter[5]+'</a>　<a class="ajax" onclick="nextFword('+MR+')">'+l.m["f-next"]+''+keysetter[6]+'</a>　<a class="ajax" onclick="ngFword('+tpointer+',0,'+MR+')">O'+keysetter[7]+'</a>　<a class="ajax" onclick="ngFword('+tpointer+',1,'+MR+')">X'+keysetter[8]+'</a></div><div class="padt size14 strong">'+lastans+'</div></div></div>');
	}else if(flipboth == 2){
		$('#fcarea').html('<br /><div class="sbox'+nobox+'_top"><div class="sbox'+nobox+'_bottom"><div class="sbox'+nobox+'"><div class="profpad2"><div class="size11">'+l.m["f-card"]+''+keysetter[1]+' ： '+ltarg+'<br />'+l.m["f-target"]+''+keysetter[2]+' ： '+ltarg2+'</div>'+kiltarg+'<div class="size25 strong padt padb line2" align="center">'+wval2+'<hr /><input type="text" id="fdic" size="20" /></div><div align="center" class="size10"><a class="ajax" onclick="bothCard('+MR+')">'+l.m["f-view"]+''+keysetter[3]+'</a>　<a class="ajax" onclick="flipCard('+MR+')">'+l.m["f-flip"]+''+keysetter[4]+'</a>　<a class="ajax" onclick="preFword('+MR+')">'+l.m["f-pre"]+''+keysetter[5]+'</a>　<a class="ajax" onclick="nextFword('+MR+')">'+l.m["f-judge"]+''+keysetter[6]+'</a></div><div class="padt size14 strong">'+lastans+'</div></div></div>');
		if(nofocus != 1){
			$("#fdic").focus();
		}
	}else{
		$('#fcarea').html('<br /><div class="sbox'+nobox+'_top"><div class="sbox'+nobox+'_bottom"><div class="sbox'+nobox+'"><div class="profpad2"><div class="size11">'+l.m["f-card"]+''+keysetter[1]+' ： '+ltarg+'<br />'+l.m["f-target"]+''+keysetter[2]+' ： '+ltarg2+'</div>'+kiltarg+'<div class="size25 strong padt padb line2" align="center">'+wval2+'</div><div align="center" class="size10"><a class="ajax" onclick="bothCard('+MR+')">'+l.m["f-view"]+''+keysetter[3]+'</a>　<a class="ajax" onclick="flipCard('+MR+')">'+l.m["f-flip"]+''+keysetter[4]+'</a>　<a class="ajax" onclick="preFword('+MR+')">'+l.m["f-pre"]+''+keysetter[5]+'</a>　<a class="ajax" onclick="nextFword('+MR+')">'+l.m["f-next"]+''+keysetter[6]+'</a>　<a class="ajax" onclick="ngFword('+tpointer+',0,'+MR+')">O'+keysetter[7]+'</a>　<a class="ajax" onclick="ngFword('+tpointer+',1,'+MR+')">X'+keysetter[8]+'</a></div><div class="padt size14 strong">'+lastans+'</div></div></div>');
	}
	jip2();
}
function ngFword(tpointer,okg,MR,dcdone){
	jip();
	if(MR == 1){
		var RMW = FWORDS;
	}else{
		var RMW = FWORDS;
	}
	if(okg == 1 && v[RMW[tpointer]][OK()] == 0){
		if(v[RMW[tpointer]]['ki'] == 1){
			kinong++;
		}
		nong[OK()]++;
	}else if(okg == 0 && v[RMW[tpointer]][OK()] == 1){
		if(v[RMW[tpointer]]['ki'] == 1){
			kinong--;
		}
		nong[OK()]--;
	}
	v[RMW[tpointer]][OK()] = okg;
	saveRequire();
	//RMW[tpointer][OK()] = okg;
	//MWORDS[mkv[RMW[tpointer]['id']]][OK()] = okg;
	if($('#'+OK()+'-'+v[RMW[tpointer]]['id'])){
		if(okg == 1){
			$('#'+OK()+'-'+v[RMW[tpointer]]['id']).attr('checked','checked');
		}else{
			$('#'+OK()+'-'+v[RMW[tpointer]]['id']).attr('checked','');
		}
		$('#ok-'+v[RMW[tpointer]]['id']).attr('checked','checked');
	}
	if((okg == 0 && fmode == 2) || (okg == 1 && fmode == 1)){
		pointer--;	
	}
	if(dcdone != 1){
		lastans = wval+" ⇒ "+fans;
	}
	nextFword(MR);
	jip2();
}
function modeCard(MR,MRNO,KI){
	jip();
	if(KI != undefined){
		kimode = KI;
	}
	if(MRNO != undefined){
		fmode = MRNO;
	}else{
		if(fmode == 2){
			fmode = 0
		}else{
			if(kimode == 0){
				if((nong[OK()] == 0 && fmode == 1) || (FWORDS.length - nong[OK()] == 0 && fmode == 0)){
					fmode++;
					modeCard(MR,MRNO,0);
					return;
				}else{
					fmode++;
				}
			}else{
				if((kinong == 0 && fmode == 1) || (noki - kinong == 0 && fmode == 0)){
					fmode++;
					modeCard(MR,MRNO,1);
					return;
				}else{
					fmode++;
				}
			}
		}
	}
	pointer = 0;
	showFword(MR);
	jip2();
}
function frontCard(MR,MRNO){
	jip();
	if(MRNO != undefined){
		frontb = MRNO;
	}else{
		if(frontb == 0){
			frontb = 1;
		}else{
			frontb = 0;
		}
	}
	flipval = 0;
	showFword(MR);
	jip2();
}
function dicCheck(MR){
	jip();
	if($('#fdic').length != 0){
		if($('#fdic').val() == fans){
			lastans = '<span class="red size18">O</span> '+$('#fdic').val();
			ngFword(tpoi,0,MR,1);
		}else{
			lastans = '<span class="blue size18">X</span> '+$('#fdic').val()+" ⇒ "+fans;
			ngFword(tpoi,1,MR,1);
		}
	}else{
		lastans = wval+" ⇒ "+fans;
		nextFword(MR);
	}
	jip2();
}
function nextFword(MR){
	jip();
	if(MR == 1){
		var RMW = FWORDS;
	}else{
		var RMW = FWORDS;
	}
	if(kimode == 0){
		if((fmode == 0 && pointer == RMW.length - 1) || (fmode == 2 && pointer == nong[OK()] - 1)|| (fmode == 1 && pointer == RMW.length - nong[OK()] - 1)){
			showDialog(l.m["f-totop"]);
			pointer = 0;
		}else{
			pointer++;
		}
	}else{
		if((fmode == 0 && pointer == noki - 1) || (fmode == 2 && pointer == kinong - 1)|| (fmode == 1 && pointer == noki - kinong - 1)){
			showDialog(l.m["f-totop"]);
			pointer = 0;
		}else{
			pointer++;
		}

	}
	flipval = 0;
	showFword(MR);
	jip2();
}
function preFword(MR){
	jip();
	if(MR == 1){
		var RMW = FWORDS;
	}else{
		var RMW = FWORDS;
	}
	if(kimode == 0){
		if(pointer == 0){
			if(fmode == 2){
				pointer = nong[OK()] - 1;
			}else if(fmode == 1){
				pointer = RMW.length - nong[OK()] - 1;
			}else{
				pointer = RMW.length - 1;
			}
			showDialog(l.m["f-tolast"]);
		}else{
			pointer--;
		}
	}else{
		if(pointer == 0){
			if(fmode == 2){
				pointer = kinong - 1;
			}else if(fmode == 1){
				pointer = noki - kinong - 1;
			}else{
				pointer = noki - 1;
			}
			showDialog(l.m["f-tolast"]);
		}else{
			pointer--;
		}	
	}
	lastans = "";
	flipval = 0;
	showFword(MR);
	jip2();
}
function flipCard(MR){
	jip();
	if(flipval == 0){
		flipval = 1;
	}else{
		flipval = 0;
	}
	showFword(MR);
	jip2();
}
function OK(){
	var rtext = 'ok';
	if(frontb == 1){
		rtext = 'okr';
	}else if(flipboth == 2){
		rtext = 'okd';
	}else{
		rtext = 'oks';	
	}
	return rtext;
}
function bothCard(MR){
	jip();
	if(flipboth == 1 && frontb == 1){
		flipboth = 0;
	}else if(flipboth == 2){
		flipboth = 0;
	}else{
		flipboth++;
	}
	showFword(MR);
	jip2();
}
function resetCard(){
	jip();
	if(mmr == 1){
		var RMW = FWORDS;
	}else{
		var RMW = FWORDS;
	}
	fmode = 0;
	nong[OK()] = 0;
	frontb = 0;
	pointer = 0;
	kinong = 0;
	lastans = "";
	for(var i=0;i<RMW.length;i++){
		w[i][OK()] = 0;
		saveRequire();
		//RMW[i][OK()] = 0;
		//MWORDS[mkv[RMW[i]['id']]][OK()] = 0;
	}
	showFword(mmr);
	if(mmr == 0){
		renderWordList();
	}else{
		myItemList();
	}
	jip2();
}
function randomizeCard(){
	jip();
	if(mmr == 1){
		var RMW = FWORDS;
	}else{
		var RMW = FWORDS;
	}
	pointer = 0;
	lastans = "";
	RMW = RMW.shuffle();
	showFword(mmr);
	if(mmr == 0){
		renderWordList();
	}else{
		myItemList();
	}
	jip2();
}
function filterByMemory(){
	jip();
	YAHOO.popup.container.panel2.setFooter('<table width="220"><tr><td><div class="size14" align="right"><a class="ajax" onclick="kiokuSet()"><img src="http://jipanglish.com/img/chart_bar_link.png" height="14" /> 記憶セット</a></div></td></tr></table>');
	YAHOO.popup.container.panel2.setHeader('<img src="http://jipanglish.com/img/status_unknown.png" height="12"/> SELFlash! 記憶定着度フィルター');
	if(slidone == 0){
		YAHOO.popup.container.panel2.setBody('<table width="220"><tr><td><div id="demo_bg" class="yui-h-slider" title="Range slider"><div id="demo_min_thumb" class="yui-slider-thumb"><img src="../yui/slider/assets/left-thumb.png"></div><div id="demo_max_thumb" class="yui-slider-thumb"><img src="../yui/slider/assets/right-thumb.png"></div></div><div id="demo_info" class="size12"></div></td></tr></table>');
		sRender();
		slidone = 1;
	}
	if(kiset == 1){
		var cf = 100/(200 - 20);
		var kmax = kimax2/cf+20;
		var kmin = kimin2/cf;
		slider.setMaxValue(kmax);
		slider.setMinValue(kmin);
	}
	YAHOO.popup.container.panel2.show();
	jip2();
}
function kiokuSet(){
	jip();
	noki = 0;
	kinong = 0;
	kimax2 = kimax;
	kimin2 = kimin;
	kiset = 1;
	kimode = 1;
	if(mmr == 1){
		var RMW = FWORDS;
	}else{
		var RMW = FWORDS;
	}
	for(var i= 0;i<RMW.length;i++){
		if(Math.round(RMW[i]['progress']) <= Math.round(kimax2) && Math.round(v[RMW[i]]['progress']) >= Math.round(kimin2)){
			v[RMW[i]]['ki'] = 1;
			noki++;
			if(v[RMW[i]][OK()] == 1){
				kinong++;
			}
		}else{
			v[RMW[i]]['ki'] = 0;
		}
	}
	showFword(mmr);
	jip2();
}
function sRender(){
	jip();
    var Dom = YAHOO.util.Dom;
    var range = 200;
    var tickSize = 2;
    var minThumbDistance = 0;
    var initValues = [0,200];
    var cf = 100/(range - 20);
    var convert = function (val) {
        return Math.round(val * cf);
    };
    YAHOO.util.Event.onDOMReady(function () {
        var demo_bg = Dom.get("demo_bg"),
            info    = Dom.get("demo_info");
        slider = YAHOO.widget.Slider.getHorizDualSlider(demo_bg,
            "demo_min_thumb", "demo_max_thumb",
            range, tickSize, initValues);
        slider.minRange = minThumbDistance;
        var updateUI = function () {
            var min = convert(slider.minVal),
                max = convert(slider.maxVal - 20);

            info.innerHTML = '定着度 <span class="red strong">' + min + '</div>％ ～ <span class="red strong">' + max + '</span>％ のアイテムを学習';
			kimax = max;
			kimin = min;
        };
        slider.subscribe('ready', updateUI);
        slider.subscribe('change', updateUI);
        YAHOO.example.slider = slider;
    });
	jip2();
	
}
function keySettings(){
	jip();
	var ksop = "";
	for(var i=0;i<keysets1.length;i++){
			ksop +='<tr><td><div class="size10 red" align="center">'+keysets1[i]+'</div></td><td width="10"></td><td><select id="ks-'+i+'">';
		for(var j=0;j<commands.length;j++){
			if(assignC[i] == j){
				ksop +='<option value="'+j+'" selected>'+commands[j]+'</option>';
			}else{
				ksop +='<option value="'+j+'">'+commands[j]+'</option>';
			}
		}
		ksop += '</select></td></tr>';
	}
	YAHOO.popup.container.panel1.setFooter('<table width="300"><tr><td><div class="size14" align="right"><a class="ajax" onclick="keySettings2(1)"><img src="http://jipanglish.com/img/shoki.png" height="14" /> 初期設定に戻す</a>　<a class="ajax" onclick="keySettings2()"><img src="http://jipanglish.com/img/settings.gif" height="14" /> キーセット</a></div></td></tr></table>');
	YAHOO.popup.container.panel1.setHeader('<img src="http;//jipanglish.com/img/status_unknown.png" height="12"/> SELFlash! キーボードショートカット設定');
		YAHOO.popup.container.panel1.setBody('<table width="300"><tr><td><table>'+ksop+'</table></td></tr></table>');
	YAHOO.popup.container.panel1.show();
	jip2();
}
function keySettings2(shoki){
	jip();
	if(shoki == 1){
		assignC = Array(5,7,4,8,6,3,1,0,0,0,0,0);;
	}else{
		for(var i=0;i<keysets1.length;i++){
			assignC[i] = $('#ks-'+i).val()*1;	
		}
	}
	YAHOO.popup.container.panel1.hide();
	var tdate = new Date();
	var ttstamp = tdate.getTime() + 60*60*24*365*1000;
	var edate = new Date(ttstamp);
	YAHOO.util.Cookie.set("flashkey", assignC.join('&'), { expires: edate });
	ksetter(1);
	jip2();
}
function strokeKey(Knum){
	jip();
	var cfuncs = Array(0,modeCard,frontCard,bothCard,flipCard,preFword,dicCheck,ngFword,ngFword);
	switch(Knum){
		case 1:
		case 2:
		case 3:
		case 4:
		case 5:
		case 6:cfuncs[Knum](mmr);break;
		case 7:cfuncs[Knum](tpoi,0,mmr);break;
		case 8:cfuncs[Knum](tpoi,1,mmr);break;
	}
	jip2();
}
function saveFlash(){
	jip();
	if($('#iusername').val() == ""){
		showDialog('データをセーブするにはsmart.fmにログインする必要があります。');
	}else if(clid == 0){
		alert('申し訳ありませんが、現在マイアイテムのSELFlash!データセーブには対応しておりません。ご了承ください。');
	}else{
		var parameter = $H({username : $('#iusername').val()}).toQueryString();
		new Ajax.Request(
			'php/saveFlash.php',
			{
				method : 'post',
				parameters : parameter,
				onFailure : function(roj){
					alert(roj.responseText);
				},
				onComplete : function(roj){
					var slist = roj.responseText;
					YAHOO.popup.container.panel3.setFooter('<table width="300"><tr><td><div class="size14" align="right"><a class="ajax" onclick="saveFlash2()"><img src="http://jipanglish.com/img/disc.png" height="14" /> セーブ</a></div></td></tr></table>');
					YAHOO.popup.container.panel3.setHeader('<img src="http://jipanglish.com/img/status_unknown.png" height="12"/> SELFlash! データセーブ');
					YAHOO.popup.container.panel3.setBody('<table width="300"><tr><td><table>'+slist+'</table></td></tr></table>');
					YAHOO.popup.container.panel3.show();
				}
			}
		);
	}
	jip2();
}
function saveFlash2(){
	jip();
	if($('#fname').val().match(/^\s*$/)){
		alert('ファイル名を入力してください。');
	}else if($('#fname').val().length > 20){
		alert('ファイル名は２０文字以内で入力してください。');
	}else{
		var savefval;
		for(var y=0;y<=3;y++){
			if($('#savefile-'+y)){
				if($('#savefile-'+y).attr('checked') == 'checked'){
					savefval = $('#savefile-'+y).val();
				}
			}
		}
		if(savefval == undefined){
			alert('上書きするファイルを選んでください。');
		}else{
			if(mmr == 1){
				var RMW = FWORDS;
			}else{
				var RMW = FWORDS;
			}
			var svid="",svword="",svmean="",svtype="",svsound="",svlang="",svrlang="",svlevel="",svprogress="",svok="",svki="";
			for(var i=0;i<RMW.length;i++){
				svid+= '=#'+v[RMW[i]]['id'];
				svword+= '=#'+v[RMW[i]]['word'];
				svmean+= '=#'+v[RMW[i]]['mean'];
				svtype+= '=#'+v[RMW[i]]['type'];
				svsound+= '=#'+v[RMW[i]]['sound'];
				svlang+= '=#'+v[RMW[i]]['lang'];
				svrlang+= '=#'+v[RMW[i]]['rlang'];
				svlevel+= '=#'+v[RMW[i]]['wlevel'];
				svprogress+= '=#'+v[RMW[i]]['progress'];
				svok+= '=#'+v[RMW[i]][OK()];
				svki+= '=#'+v[RMW[i]]['ki'];
			}
			var svzero = '=#'+kimode+'=#'+kinong+'=#'+noki+'=#'+kimax2+'=#'+kimin2+'=#'+frontb+'=#'+lastans+'=#'+fans+'=#'+wval+'=#'+flipboth+'=#'+tpoi+'=#'+mmr+'=#'+nong[OK()]+'=#'+fmode+'=#'+flipval+'=#'+pointer+"=#"+ kiset;
			var savedata = svzero +"&amp;"+ svid +"&amp;"+  svword +"&amp;"+  svmean +"&amp;"+  svtype +"&amp;"+  svsound +"&amp;"+  svlang +"&amp;"+  svrlang +"&amp;"+  svlevel +"&amp;"+  svprogress +"&amp;"+  svok +"&amp;"+  svki　;
			var parameter = $H({username : $('#iusername').val(), savedata : savedata, stitle : $('#fname').val(),lno : clid,savefile :savefval}).toQueryString();
			YAHOO.popup.container.panel3.setBody('<table width="300"><tr><td><div align="center"><span class="red strong">データをセーブ中です...</span><br /><img src="http://jipanglish.com/img/loading.gif" /></div></table></td></tr></table>');
			new Ajax.Request(
				'php/saveFlash2.php',
				{
					method : 'post',
					parameters : parameter,
					onFailure : function(roj){
						alert(roj.responseText);
					},
					onComplete : function(roj){
						YAHOO.popup.container.panel3.hide();
						showDialog('データのセーブが完了しました！');
					}
				}
			);
		}
	}
	jip2();
}
function loadFlash(){
	jip();
	if($('#iusername').val() == ""){
		showDialog('データをロードするにはsmart.fmにログインする必要があります。');
	}else{
		var parameter = $H({username : $('#iusername').val()}).toQueryString();
		new Ajax.Request(
			'php/loadFlash.php',
			{
				method : 'post',
				parameters : parameter,
				onFailure : function(roj){
					alert(roj.responseText);
				},
				onComplete : function(roj){
					var slist = roj.responseText;
					YAHOO.popup.container.panel3.setFooter('<table width="300"><tr><td><div class="size11" align="right">ロードするデータ名をクリックしてください</div></td></tr></table>');
					YAHOO.popup.container.panel3.setHeader('<img src="http://jipanglish.com/img/status_unknown.png" height="12"/> SELFlash! データロード');
					YAHOO.popup.container.panel3.setBody('<table width="300"><tr><td><table>'+slist+'</table></td></tr></table>');
					YAHOO.popup.container.panel3.show();
				}
			}
		);
	}
	jip2();
}
function loadFlash2(LNO){
	if($('#iusername').val() == ""){
		showDialog('データをロードするにはsmart.fmにログインする必要があります。');
	}else{
		YAHOO.popup.container.panel3.setBody('<table width="300"><tr><td><div align="center"><span class="red strong">データをロード中です...</span><br /><img src="http://jipanglish.com/img/loading.gif" /></div></table></td></tr></table>');
		var parameter = $H({username : $('#iusername').val(),sno : LNO}).toQueryString();
		new Ajax.Request(
			'php/loadFlash2.php',
			{
				method : 'post',
				parameters : parameter,
				onFailure : function(roj){
					alert(roj.responseText);
				},
				onComplete : function(roj){
					var ROJ = roj.responseText.split('&amp;');
					clid = ROJ[0]*1;
					if(ROJ[0] != 0){
						showListInfo(ROJ[0],1);
						ROJ.shift();
						var IDS = Array();
						FWORDS = Array();
						for(var i=0;i<ROJ.length;i++){
							IDS[i] = ROJ[i].split("=#");
							IDS[i].shift();
							for(var j=0;j<IDS[i].length;j++){
								if(i == 1){
									FWORDS[j] = Array();
								}
								switch(i){
									case 1:FWORDS[j]['id'] = IDS[i][j];break;
									case 2:FWORDS[j]['word'] = IDS[i][j];break;
									case 3:FWORDS[j]['mean'] = IDS[i][j];break;
									case 4:FWORDS[j]['type'] = IDS[i][j];break;
									case 5:FWORDS[j]['sound'] = IDS[i][j];break;
									case 6:FWORDS[j]['lang'] = IDS[i][j];break;
									case 7:FWORDS[j]['rlang'] = IDS[i][j];break;
									case 8:FWORDS[j]['wlevel'] = IDS[i][j];break;
									case 9:FWORDS[j]['progress'] = IDS[i][j];break;
									case 10:markBoth(FWORDS[j]['id'],'ok',IDS[i][j]);break
									//FWORDS[j][OK()] = IDS[i][j];MWORDS[mkv[RMW[j]['id']]][OK()] = IDS[i][j];break;
									case 11:FWORDS[j]['ki'] = IDS[i][j];break;
									case 0:switch(j){
											case 0:kimode = IDS[i][j];break;
											case 1:kinong = IDS[i][j];break;
											case 2:noki = IDS[i][j];break;
											case 3:kimax2 = IDS[i][j];break;
											case 4:kimin2 = IDS[i][j];break;
											case 5:frontb = IDS[i][j];break;
											case 6:lastans = IDS[i][j];break;
											case 7:fans = IDS[i][j];break;
											case 8:wval = IDS[i][j];break;
											case 9:flipboth = IDS[i][j];break;
											case 10:tpoi = IDS[i][j];break;
											case 11:mmr = IDS[i][j];break;
											case 12:nong[OK()] = IDS[i][j];break;
											case 13:fmode = IDS[i][j];break;
											case 14:flipval = IDS[i][j];break;
											case 15:pointer = IDS[i][j];break;
											case 16:kiset = IDS[i][j];break;
										}
								}
							}
						};
						NRW = FWORDS.length;
						renderWordList();
					}else{
						$('#listInfoArea').innerHTML = '<div align="right" class="padboth strong size12 padt">単語フィルター <input type="text" id="wsearch" size="15" onkeyup="myFilter()" /></div>';
					}
					YAHOO.popup.container.panel3.hide();
					showDialog('データのロードが完了しました！');
					oMenuBar.show();
					showFword(mmr);
				}
			}
		);
	}
}
