/* Show photo */
var formPreview;
function showPreview(file)
{
	if(file != null  &&  file != ""){
		if(formPreview == null || formPreview.closed){
			formPreview = open("file:///"+file, "Preview", "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes");
		}else{
			formPreview.location.href = "file:///"+file;
		}
		formPreview.focus();
	}
}

var formPhoto;
function showPhoto(url)
{
	if(formPhoto == null || formPhoto.closed){
		formPhoto = open(url, "Photo", "location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes");
	}else{
		formPhoto.location.href = url;
	}
	formPhoto.focus();
}

/* Input to form */
function enWord(elm, val){
	elm.value = elm.value + val;
	elm.focus();
}

function enWordWithDel(elm, val, del){
	if(elm.value != ""){
		elm.value = elm.value + del;
	}
	elm.value = elm.value + val;
	elm.focus();
}

/* Value Check */
function isGoodChars(value, goodchars){
	var i;
	for(i=0; i<value.length; i++){
		if(goodchars.indexOf(value.charAt(i)) < 0)
			return false;
	}
	return true;
}

function isNumberChars(value, goodchars){
	goodchars += "0123456789";
	return isGoodChars(value, goodchars);
}

function isNumber(value){
	return isNumberChars(value, "");
}

function isEmail(value){
	return  value.indexOf("@")>=0  &&  value.indexOf(".")>=0;
}

function isAscii(value){
	var i;
	for(i=0; i<value.length; i++){
		var ch = value.charCodeAt(i);
		if(!(0x20 <= ch && ch <= 0x7e)){
			return false;
		}
	}
	return true;
}

function hasFileExtension(file){
	var pos = file.lastIndexOf(".", file.length);
	if(pos == -1)  return false;

	pos++;
	while(pos < file.length){
		var ch = file.charAt(pos);
		if(!(('a'<=ch && ch<='z') || ('A'<=ch && ch<='Z') || ('0'<=ch && ch<='9'))){
			return false;
		}
		pos++;
	}

	return true;
}

/* Form Status */
function isFilled(elm){
	if(elm.value == "")  return false;
	if(elm.value == null){
		if(elm.options == null)  return false;
		if(elm.options[elm.selectedIndex].value == "")  return false;
	}
	return true;
}

function isSelected(elm){
	return isFilled(elm);
}

function isChecked(elm){
	return elm.checked;
}


/* Check form input */
function showErrorMessage(elm, com){
	alert(com);
	elm.focus();
}

function checkFilled(elm, com){
	if(! elm){ alert("No Element => "+com); return false; }
	if(! isFilled(elm)){
		showErrorMessage(elm, com);
		return false;
	}
	return true;
}

function checkSelected(elm, com){
	if(! elm){ alert("No Element => "+com); return false; }
	if(! isSelected(elm)){
		showErrorMessage(elm, com);
		return false;
	}
	return true;
}

function checkRadioSelected(elm, com){
	for(i=0; i<elm.length; ++i){
		if(elm[i].checked){
			return true;
		}
	}
	showErrorMessage(elm[0], com);
	return false;
}

function checkNumber(elm, com){
	if(! elm){ alert("No Element => "+com); return false; }
	if(isFilled(elm)  &&  ! isNumber(elm.value)){
		showErrorMessage(elm, com);
		return false;
	}
	return true;
}
function checkNumberHyphen(elm, com){
	if(! elm){ alert("No Element => "+com); return false; }
	if(isFilled(elm)  &&  ! isNumberChars(elm.value, "-")){
		showErrorMessage(elm, com);
		return false;
	}
	return true;
}
function checkNumberComma(elm, com){
	if(! elm){ alert("No Element => "+com); return false; }
	if(isFilled(elm)  &&  ! isNumberChars(elm.value, ",.")){
		showErrorMessage(elm, com);
		return false;
	}
	return true;
}
function checkNumberDot(elm, com){
	if(! elm){ alert("No Element => "+com); return false; }
	if(isFilled(elm)  &&  ! isNumberChars(elm.value, ".")){
		showErrorMessage(elm, com);
		return false;
	}
	return true;
}
function checkPrice(elm, com){
	return checkNumberDot(elm, com);
}

function checkNumberChars(elm, goodchars, com){
	if(! elm){ alert("No Element => "+com); return false; }
	if(isFilled(elm)  &&  ! isNumberChars(elm.value, goodchars)){
		showErrorMessage(elm, com);
		return false;
	}
	return true;
}

function checkGoodChars(elm, goodchars, com){
	if(! elm){ alert("No Element => "+com); return false; }
	if(isFilled(elm)  &&  ! isGoodChars(elm.value, goodchars)){
		showErrorMessage(elm, com);
		return false;
	}
	return true;
}

function checkEmail(elm, com){
	if(! elm){ alert("No Element => "+com); return false; }
	if(isFilled(elm)){
		if(! isEmail(elm.value)  ||  ! isAscii(elm.value)){
			showErrorMessage(elm, com);
			return false;
		}
	}
	return true;
}

function checkAscii(elm, com){
	if(! elm){ alert("No Element => "+com); return false; }
	if(isFilled(elm)  &&  ! isAscii(elm.value)){
		showErrorMessage(elm, com);
		return false;
	}
	return true;
}

function checkImageFile(elm, com){
	if(! elm){ alert("No Element => "+com); return false; }
	if(isFilled(elm)  &&  ! hasFileExtension(elm.value)){
		showErrorMessage(elm, com);
		return false;
	}
	return true;
}

function checkHttp(elm, com){
	if(! elm){ alert("No Element => "+com); return false; }
	if(isFilled(elm)  &&  elm.value.substring(0, 7) != "http://"){
		showErrorMessage(elm, com);
		return false;
	}
	return true;
}

function checkBothFilled(elm1, com1, elm2, com2){
	if(! elm1){ alert("No Element => "+com1); return false; }
	if(! elm2){ alert("No Element => "+com2); return false; }

	if(! isFilled(elm1)  &&  isFilled(elm2)){
		showErrorMessage(elm1, com1);
		return false;
	}
	if(! isFilled(elm2)  &&  isFilled(elm1)){
		showErrorMessage(elm2, com2);
		return false;
	}
	return true;
}

function checkDisplayTerm(form, com)
{
	var sa = new Array(form.term_start_year, form.term_start_month, form.term_start_day, form.term_start_hour, form.term_start_minute);
	var ea = new Array(form.term_end_year,   form.term_end_month,   form.term_end_day,   form.term_end_hour,   form.term_end_minute);
	return checkDisplayTermArray(sa, ea, com);
}

function checkDisplayTermArray(start_array, end_array, com)
{
	var start_year   = start_array[0];
	var start_month  = start_array[1];
	var start_day    = start_array[2];
	var start_hour   = start_array[3];
	var start_minute = start_array[4];

	var end_year   = end_array[0];
	var end_month  = end_array[1];
	var end_day    = end_array[2];
	var end_hour   = end_array[3];
	var end_minute = end_array[4];

	var start;
	var end;

	if("" == start_year.value)  return true;
	if("" == start_month.value) return true;
	if("" == start_day.value)   return true;

	if("" == end_year.value)  return true;
	if("" == end_month.value) return true;
	if("" == end_day.value)   return true;

	start = parseInt(start_year.value, 10);
	end   = parseInt(end_year.value, 10);
	if(start > end){
		alert(com); start_year.focus();
		return false;
	}else if(start < end){
		return true;
	}

	start = parseInt(start_month.value, 10);
	end   = parseInt(end_month.value, 10);
	if(start > end){
		alert(com); start_month.focus();
		return false;
	}else if(start < end){
		return true;
	}

	start = parseInt(start_day.value, 10);
	end   = parseInt(end_day.value, 10);
	if(start > end){
		alert(com); start_day.focus();
		return false;
	}else if(start < end){
		return true;
	}

	if(null == start_hour) return true;
	if(""   == start_hour.value) return true;

	if(null == end_hour) return true;
	if(""   == end_hour.value) return true;

	start = parseInt(start_hour.value, 10);
	end = parseInt(end_hour.value, 10);
	if(start > end){
		alert(com); start_hour.focus();
		return false;
	}else if(start < end){
		return true;
	}

	if(null == start_minute) return true;
	if(""   == start_minute.value) return true;

	if(null == end_minute) return true;
	if(""   == end_minute.value) return true;

	start = parseInt(start_minute.value, 10);
	end = parseInt(end_minute.value, 10);
	if(start > end){
		alert(com); start_minute.focus();
		return false;
	}else if(start < end){
		return true;
	}

	return true;
}

