var Xto5 = (function(){
	var selected = [];
	var filters = {};
	function setDisplay(nums){
		document.getElementById('display').value += nums.join("\n") + "\n";
	}
	
	function filter(nums){
		if(filters[1] && parseInt(nums[0], 10) < 13){
			return false;
		}
		if(filters[2]){
			sum = parseInt(nums[0], 10) + 
			      parseInt(nums[1], 10) + 
			      parseInt(nums[2], 10) + 
			      parseInt(nums[3], 10) + 
			      parseInt(nums[4], 10);
			if(sum < document.getElementById('s').value && document.getElementById('s').value != ""){
				return false;
			}
			if(sum > document.getElementById('e').value && document.getElementById('e').value != ""){
				return false;
			}
		}
		return true;
	}
	
	return {
		checkStatus: function(){
			$btn = document.getElementById('sbutton');
			var j = 0;
			for(i=0;i<31;i++){
				if(document.forms[0].elements[i].checked){
					j++;
				}
			}
			if(j < 6){
				$btn.disabled = true;
			}else{
				$btn.disabled = false;
			}
		},
		selectNums: function(){
			document.getElementById('display').select();
		},
		preExecute: function(){
			filters = {};
			for(i = 1; i <= 2; i++){
				filters[i] = document.getElementById('limit' + i).checked;
			}
			
			if(filters[2]){
				if(document.getElementById('s').value == '' && document.getElementById('s').value == ''){
					alert('合計数の範囲のどちらかまたは両方を入力してください。');
					return false;
				}
				if(document.getElementById('e').value != '' && parseInt(document.getElementById('s').value, 10) > parseInt(document.getElementById('e').value, 10)){
					alert('入力された合計数の範囲が間違っています。');
					return false;
				}
			}
			selected = [];
			for(i = 0; i < 31; i++){
				if(document.forms[0].elements[i].checked){
					j = i + 1;
					if (j < 10) {
						j = "0" + j;
					}
					selected.push(j);
				}
			}
			return true;
		},
		proc: function(){
			if (!Xto5.preExecute()) {
				return false;
			}
			var length = selected.length;
			if (length < 6) {
				alert("6個以上の数字を選択してください。");
			}
			if (length < 6) {
				stop();
			}
			length--;
			var id = a = 0;
			var b, c, d, e, tmp;
			var i = 1;
			var nums = [];
			document.getElementById('display').value = "";
			document.getElementById('message').innerHTML = "組合せ生成中…";

			while(a <= length - 4){
				b = a + 1;
				while(b <= length - 3){
					c = b + 1;
					while(c <= length - 2){
						d = c + 1;
						while(d <= length - 1){
							e = d + 1;
							while(e <= length){
								tmp = [selected[a], selected[b], selected[c], selected[d], selected[e]];
								
								if (!filter(tmp)) {
									e++;
									continue;
								}
								nums.push(tmp.join(' '));
								id++;
								e++;
							}
							d++;
						}
						c++;
					}
					b++;
				}
				a++;
			}
			
			setDisplay(nums);
			document.getElementById('message').innerHTML = "全"+id+"通りの組合せ生成終了";
		},
		unload: function(){
			//document.getElementById('message').innerHTML = '';
			//delete(Xto5);
		}
	}
})();
