function addEvent(obj, evType, fn){
	if (obj.addEventListener){
		obj.addEventListener(evType, fn, false);
		return true;
	} else if (obj.attachEvent){
		var r = obj.attachEvent("on"+evType, fn);
		return r;
	} else {
		return false;
	}
}

function openSubWindow(url, name) {
	var subWindow = window.open(url, name, "toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes");
	subWindow.focus();
}

function getChildWindow(url, targetName) {
	window.open(url, targetName);
}

function markTest(frm, needAlert){
	var num = 1;
	if(frm.elements["answer"].length > 0){
		num = frm.elements["answer"].length;
	}
	var noCheck = false;
	for(i = 0 ; i < num ; i++){
		var opt = frm.elements["option[" + i + "]"];
		if(opt){
			var checkCnt = 0;
			for(j = 0 ; j < opt.length ; j++){
				if(opt[j].checked){
					checkCnt++;
					if(frm.answer.length > 0){
						frm.answer[i].value = opt[j].value;
					} else{
						frm.answer.value = opt[j].value;
					}
				}
			}
			if(checkCnt == 0) noCheck = true;
		}
		var chk = frm.elements["chkNoConfidence[" + i + "]"];
		if(chk){
			if(frm.noConfidence.length > 0){
				frm.noConfidence[i].value = chk.checked;
			} else{
				frm.noConfidence.value = chk.checked;
			}
		}
	}
	if(needAlert){
		if(noCheck) {
			if(!confirm("未解答の問題があります。採点を行ってもよろしいですか？")){
				return false;
			}
		} else {
			if(!confirm("採点を行います。よろしいですか？")){
				return false;
			}
		}
	}
	
	gotoAnswer(frm);
}

function gotoAnswer(frm){
	clearTimer();
	Event.stopObserving(window, 'beforeunload', exitTest);
 	PPrompt.loading('テスト採点中...', {image : 'img/uploading.gif'});
	frm.submit();
}

var outputId;
var limitMessage;
var limitTime = 0;
var frmObj;
var timerCnt = 0;
var timerHundle = 0;

function createTimer(timerId, limit, message, frm){
	outputId = timerId;
	limitTime = limit;
	limitMessage = message;
	frmObj = frm
	timerHundle = setInterval("showTimer()", 1000);
}

function showTimer(){
	timerCnt++;
		if(limitMessage != null){
		if(limitTime < timerCnt){
			clearTimer();
			alert(limitMessage);
			markTest(frmObj, false);
			return false;
		}
	}
	frmObj.testTime.value = timerCnt;
	document.getElementById(outputId).innerHTML = formatTimer(timerCnt);
}

function clearTimer(){
	clearInterval(timerHundle);
}	

function formatTimer(cnt){
	var hour = Math.floor(cnt / 3600);
	var minute = Math.floor((cnt - hour * 3600) / 60);
	var second = cnt % 60;
	return addZero(hour, 2) + ":" + addZero(minute, 2) + ":" + addZero(second, 2);
}

function addZero(value, len){
	var str = "" + value;
	while(str.length < len){
		str = "0" + str;
	}
	return str;
}

function preload(imgs){
 for(var i = 0; i < imgs.length; i++){
   var imgObj = new Image();
   imgObj.src = imgs[i];
 }
}

