<!--
/*------ start: check start date ------*/

function checkStartDate(n) {
	// start date : Full payment must be received at least 48 hours prior to rehearsal.
	var regempty    = /^\s*$/;

	var dis_date = 'Slot ' + n + ' : Desired Rehearsal Day&Date';
	var dt = document.getElementById('fdt'+n); // Rehearsal Date
	var todayDate = new Date();
	var today_m = todayDate.getMonth()+1, today_d = todayDate.getDate();
	var afterTom = new Date(todayDate.getUTCFullYear(), todayDate.getMonth(), (todayDate.getDate()+2));
	var aftertomorrow = afterTom.getUTCFullYear() + '-' + (afterTom.getMonth()+1) +  '-' + afterTom.getDate();

	if ( regempty.test(dt.value) ) {
		alert(dis_date + ' field is required!');
		dt.value = aftertomorrow;
		dt.focus();
		return false;
	}
	var d;
	d = dt.value.split("-");
	d[0] = parseInt(d[0], 10);
	d[1] = parseInt(d[1], 10);
	d[2] = parseInt(d[2], 10);
	if (isNaN(d[0]) || isNaN(d[1]) || isNaN(d[2]) || d[0]<1970 || d[0]>9999 || d[1]<1 || d[1]>12 || d[2]<1 || d[2]>31) {
		alert(dis_date + ' field is invalid!');
		dt.value = aftertomorrow;
		dt.focus();
		return false;
	}


	var date1 = new Date(d[0], d[1]-1, d[2]);
	var diff = (date1-todayDate)/86400000;
	if (diff < 2) {
		alert(dis_date + ' must be sooner; Full payment must be received at least 48 hours prior to rehearsal.');
		dt.value = aftertomorrow;
		dt.focus();
		return false;
	}

	return true;
}
/*------ end: check start date ------*/

/*
Full payment must be received at least 48 hours prior to rehearsal.
RATE: $30 for a full slot (eg, Mon 8:30-12) or $50 for 2 slots within 7 days

setAmount() : 先判断是星期几，并记录这个星期的星期一的时间
*/
function setAmount() {
	var p, q, len, total_price, total_num;
	var weekArr = new Array();

	for (p = 1; p < 11; p++) {
		if (document.getElementById('valid_item'+p).value == 1) {
			var dt = document.getElementById('fdt'+p);
			d = dt.value.split("-");
			d[0] = parseInt(d[0], 10);
			d[1] = parseInt(d[1], 10);
			d[2] = parseInt(d[2], 10);


			if (!isNaN(d[0]) && !isNaN(d[1]) && !isNaN(d[2]) && d[0]>1969 && d[0]<10000 && d[1]>0 && d[1]<13 && d[2]>0 && d[2]<32) {
				var weekDate = new Date(d[0], d[1]-1, d[2]);
      			var weeknum = weekDate.getDay();
      			var weektime = weekDate.getTime();
      			if (weeknum > 1 && weeknum < 7) {
      				weektime = weektime - (weeknum - 1)*24*60*60*1000;
      			} else if (weeknum == 0) {
      				weektime = weektime - 6*24*60*60*1000;
      			}
      			weekArr.push(weektime);
      			//alert(d[0]+'-'+d[1]+'-'+d[2] + '  weeknum=' + weeknum + ' weektime='+weektime);
      			//alert(arrweek.length + ' = ' + arrweek[arrweek.length-1]);
			}
		}
	}

	len = weekArr.length;
	if (len > 1) {
		var tempArr = weekArr.distinct();
		var temp_len = tempArr.length;
		total_price = (len - temp_len) * 20 + temp_len * 30;
		//alert('len='+len+'  temp_len='+temp_len);
	} else {
		total_price = 30;
	}
	document.getElementById('amount').value = total_price;
	document.getElementById('total-charge').innerHTML = total_price;
}

/* function: 去掉数组中的重复值
resultArr ：去掉重复值后的数组
returnArr ：重复值组成的数组
*/
Array.prototype.distinct = function() {
   var ret = [],
   resultArr = [],
   returnArr = [];
   var a = {};
   for(var i=0; i<this.length; i++) {
    if(typeof a[this[i]] == "undefined") {
       a[this[i]] = false;
    }
    else{
       a[this[i]] = true;
    }
   }
   for(var i in a) {
      resultArr[resultArr.length] = i;
      if (a[i]) {
        returnArr[returnArr.length] = i;
    }
   }
   ret[0] = resultArr;
   ret[1] = returnArr;
   return ret[0];
}

function checkPost(obj) {
	with(obj) {

		var regempty    = /^\s*$/;

	    if ( regempty.test(firstname.value) ) {
	    	alert ('First Name'+' field is required!');
	    	firstname.focus();
	    	return false;
	    }
	    if ( regempty.test(lastname.value) ) {
	    	alert ('Last Name'+' field is required!');
	    	lastname.focus();
	    	return false;
	    }

		// check cell phone
		var temp_pattern = /^[0-9]{10,16}$/;
	    if (regempty.test(phone.value)) {
	    	alert ('Cell Phone'+' field is required!');
	    	phone.focus();
	    	return false;
	    }
	    if (!temp_pattern.test(phone.value)) {
	    	alert ('Cell Phone field must be numeric (length: 10 - 16).');
	    	phone.focus();
	    	return false;
	    }
		if (emailWrong(email)) {
			return false;
		}

	    // check slot_days, start time and end time
	    var p, slot, slot_num = 'Slot ' + p + ' : ';
	    for (p = 1; p < 11; p++) {
	    	if (document.getElementById('valid_item'+p).value == 1) {

			    if (!checkStartDate(p)) {
			    	return false;
			    }

	    		if (!checkTime(p)) {
	    			return false;
	    		}
	    	}
	    }

		setAmount();
		document.getElementById('submitppp').style.display = 'none';
		document.getElementById('progess').style.display = 'block';

		return true;
	}
}


// check start time and end time
function checkTime(n) {
	if (isNaN(n) || n == null || n==0) {
		alert('Parameter error');
		return false;
	}

	var regempty    = /^\s*$/;

	var dis_slot    = 'Slot ' + n + ' : ';
	var dis_start_time = 'Start Time ';
	var dis_end_time   = 'End Time ';
	var st = document.getElementById('start_time'+n); // Rehearsal start time
	var ed = document.getElementById('end_time'+n); // Rehearsal end time

	if ( regempty.test(st.value) ) {
		alert(dis_slot + dis_start_time + ' field is required!');
		st.focus();
		return false;
	}
	if ( regempty.test(ed.value) ) {
		alert(dis_slot + dis_end_time + ' field is required!');
		ed.focus();
		return false;
	}

	// following check start time and end time
	var start, end;
	start = st.value.split(":");
	start[0] = parseInt(start[0], 10);
	start[1] = parseInt(start[1], 10);
	if (isNaN(start[0]) || isNaN(start[1]) || (start[1]!=0 && start[1]!=30)) {
		alert(dis_slot + dis_start_time + ' field is invalid!');
		st.focus();
		return false;
	}
	end = ed.value.split(":");
	end[0] = parseInt(end[0], 10);
	end[1] = parseInt(end[1], 10);
	if (isNaN(end[0]) || isNaN(end[1]) || (end[1]!=0 && end[1]!=30)) {
		alert(dis_slot + dis_end_time + ' field is invalid!');
		ed.focus();
		return false;
	}
	diff = (end[0] - start[0])*60 + end[1] - start[1];
	if (diff <= 0) {
		alert (dis_slot + dis_end_time + 'must be later than ' + dis_start_time);
		ed.focus();
		return false;
	} else if (diff < 30) { // 30 minuters
		alert (dis_slot + 'time duration must be no less than half an hour.');
		ed.focus();
		return false;
	}
	return true;
} // end checktime(n)

function setAddStatus() {
	// 设置 add more slot 显示状态
	var i;
	for (i = 10; i > 0; i--) {
		if (document.getElementById('mul_slot'+i).style.display == 'block') {
			document.getElementById('add_slot'+i).style.display = 'block';
			break;
		}
	}
}

// more booking dates
function createSlot(n) {
	var i;
 	/* 第一个日期是必须的 (这里不能用 双斜杠 注释，要么会出错)*/
	for (i = 2; i < 11; i++) {
		if (document.getElementById('mul_slot'+i).style.display == '' || document.getElementById('mul_slot'+i).style.display == 'none') {
			document.getElementById('mul_slot'+i).style.display = 'block';
			document.getElementById('valid_item'+i).value = '1';
			break;
		}
	}

	if (n > 0 && n < 10) { // 针对 1 - 9 slot 自身的 add slot link
		document.getElementById('add_slot' + n).style.display = 'none';
	}

	setAddStatus(); // 设置 add more slot 显示状态

	// 判断有多少个slot,若有10个（最大数），则不再显示 添加的链接
	var d, tag;
	tag = 1;
	for (i = 2; i < 11; i++) { // 第一个slot是必须的
		d = document.getElementById('mul_slot'+i).style.display;
		if (d == 'block') {
			tag = tag + 1;
		}
	}
	if (tag == 10) {
		document.getElementById('add_slot10').style.display = 'none';
	}

}

// cancel one item of booking dates

function cancelSlot(n) {
	if (!isNaN(n) && n > 1 && n < 11) {
		document.getElementById('mul_slot'+n).style.display = 'none';
		document.getElementById('valid_item'+n).value = '0';
	}

	// 设置 add more slot 显示状态
	var i;
	for (i = 10; i > 0; i--) {
		if (document.getElementById('mul_slot'+i).style.display == 'block') {
			document.getElementById('add_slot'+i).style.display = 'block';
			break;
		}
	}
}
-->