var voucher_type = 'e-voucher';
var voucher_form_id = 1;
var voucher_form_count = 0;
var vouchers = new Array();

function addVoucherForm(type) {
	if (voucher_form_id > 20) {
		alert('Cannot add another voucher form. You have reached maximum quantity of gift voucher forms.');
		return;
	}
	var forms = document.getElementById('voucher_forms');
	var form = document.createElement('div');
	form.setAttribute('id', 'voucher_form_div_' + voucher_form_id);
	var maxnr = 3;
	if (type == 'e_voucher') {
		maxnr = 6;
	}
	var inner = '';
	inner += '<form action="' + voucher_type + '.php" method="post" id="voucher_form_' + voucher_form_id + '"> \
			<input type="hidden" name="id" id="id" value="' + voucher_form_id + '" /> \
			<a name="voucher_pos_' + voucher_form_id + '"></a> \
			<div class="addvoucher_left"> \
				<img border="0" alt="" src="images/gift_vouchers_image.gif"/> \
			</div> \
			<div class="addvoucher_right"> \
            <table cellpadding="0" cellspacing="0" class="voucher_form"> \
                <tr name="error' + voucher_form_id + '" id="error' + voucher_form_id + '" style="display: none;"> \
                	<td colspan="2" name="errortext' + voucher_form_id + '" id="errortext' + voucher_form_id + '"><div name="errordiv' + voucher_form_id + '" id="errordiv' + voucher_form_id + '" class="error">&nbsp;</div></td> \
                </tr> \
                <tr> \
                	<td>1. Voucher value (&pound;): <b>*</b></td> \
                    <td><input name="value' + voucher_form_id + '" id="value' + voucher_form_id + '" type="text" maxlength="6" onchange="changeVoucherCost();" /></td> \
                </tr> \
                <tr> \
                	<td>2. Personal message:</td> \
                    <td>&nbsp;</td> \
                </tr> \
                <tr> \
                	<td class="right">To:</td> \
                    <td><input name="msgto' + voucher_form_id + '" id="msgto' + voucher_form_id + '" type="text" /></td> \
                </tr> \
                <tr> \
                	<td class="right">From:</td> \
                    <td><input name="msgfrom' + voucher_form_id + '" id="msgfrom' + voucher_form_id + '" type="text" /></td> \
                </tr> \
                <tr> \
                	<td class="right">Message:</td> \
                    <td><textarea name="message' + voucher_form_id + '" id="message' + voucher_form_id + '" cols="" rows=""></textarea></td> \
                </tr>';
	if (type == 'e_voucher') {
		inner += '<tr> \
                	<td>3. Send to: <b>*</b></td> \
                    <td><input name="email' + voucher_form_id + '" id="email' + voucher_form_id + '" type="text" /></td> \
                </tr> \
                <tr> \
                	<td>4. Confirm email: <b>*</b></td> \
                    <td><input name="email_confirm' + voucher_form_id + '" id="email_confirm' + voucher_form_id + '" type="text" /></td> \
                </tr> \
                <tr> \
                	<td>5. Delivery date: <b>*</b></td> \
                    <td><input name="date' + voucher_form_id + '" id="date' + voucher_form_id + '" type="text" onclick="displayCalendar(document.getElementById(\'date' + voucher_form_id + '\'), \'dd/mm/yyyy\', this);" /></td> \
                </tr> \
                <tr> \
                	<td>&nbsp;</td> \
                    <td>Format: dd/mm/yyyy</td> \
                </tr>';
	}
	inner += '<tr colspan="2"> \
                	<td>&nbsp;</td> \
                </tr> \
                <tr> \
                	<td>' + maxnr + '. <a href="#voucher_pos_' + voucher_form_id + '" onclick="addVoucherForm(\'' + type + '\');">Create another voucher</a> or</td> \
                	<td><input name="button_signin" id="button_signin" type="button" value="" onclick="return addVoucherToBasket(\'' + voucher_form_id + '\', \'' + voucher_type + '\')" class="btn addtobasket" /></td> \
                </tr> \
            </table> \
            </div> \
	        <div class="clr"></div> \
            </form>';
	form.innerHTML = inner;
	forms.appendChild(form);
	vouchers[voucher_form_id] = true;
	voucher_form_id++;
	voucher_form_count++;
	changeVoucherCost();
}

function removeVoucherForm(id) {
	var div = document.getElementById('voucher_form_div_' + id);
	if ((div != null) && (typeof div != 'undefined')) {
		div.style.display = 'none';
		vouchers[id] = false;
		voucher_form_count--;
	}
}

function validateVoucher(id, type) {
	var form = document.getElementById('voucher_form_' + id);
	var elemError = form.getElementById('error' + id);
	var elemErrorText = form.getElementById('errortext' + id);
	var elemErrorDiv = form.getElementById('errordiv' + id);
	var elemValue = form.getElementById('value' + id);
	var elemMsgTo = form.getElementById('msgto' + id);
	var elemMsgFrom = form.getElementById('msgfrom' + id);
	var elemMessage = form.getElementById('message' + id);
	if (type == 'e_voucher') {
		var elemEmail = form.getElementById('email' + id);
		var elemEmailConfirm = form.getElementById('email_confirm' + id);
		var elemDate = form.getElementById('date' + id);
	}

	/* Default to no error */	
	var error = false;
	var strError = "";

	elemValue.style.background = origBackground;
	elemMsgTo.style.background = origBackground;
	elemMsgFrom.style.background = origBackground;
	elemMessage.style.background = origBackground;
	if (type == 'e_voucher') {
		elemEmail.style.background = origBackground;
		elemEmailConfirm.style.background = origBackground;
		elemDate.style.background = origBackground;
	}

	var strErrorInfo = 'Please provide missing information in the fields highlighted below.<br />';

	/* Validate */
	if(elemValue.value.length < 1) {	
		//strError += "Please fill in a value<br/>";		
		strError = strErrorInfo;
		elemValue.style.background = errorBackground;
		error = true;
	}
	if(elemMsgTo.value.length < 1) {	
		//strError += "Please fill in a message to<br/>";		
		strError = strErrorInfo;
		elemMsgTo.style.background = errorBackground;
		error = true;
	}
	if(elemMsgFrom.value.length < 1) {	
		//strError += "Please fill in a message from<br/>";		
		strError = strErrorInfo;
		elemMsgFrom.style.background = errorBackground;
		error = true;
	}
	if(elemMessage.value.length < 1) {	
		//strError += "Please fill in a message<br/>";		
		strError = strErrorInfo;
		elemMessage.style.background = errorBackground;
		error = true;
	}
	if (type == 'e_voucher') {
		if(elemEmail.value.length < 1) {	
			//strError += "Please fill in a send to email<br/>";		
			strError = strErrorInfo;
			elemEmail.style.background = errorBackground;
			error = true;
		}
		if(elemEmailConfirm.value.length < 1) {	
			//strError += "Please fill in an email confirmation<br/>";		
			strError = strErrorInfo;
			elemEmailConfirm.style.background = errorBackground;
			error = true;
		}
		if(elemDate.value.length < 1) {	
			//strError += "Please fill in a date<br/>";		
			strError = strErrorInfo;
			elemDate.style.background = errorBackground;
			error = true;
		}
		if(elemEmail.value.length > 0 && !checkEmail(elemEmail.value)) {
			strError += "Please check you have entered the recipient's email address correctly<br />";
			elemEmail.style.background = errorBackground;
			error = true;
		} 
		if(elemEmail.value != elemEmailConfirm.value) {
			strError += "Please enter the same email in confirmation field<br/>";		
			elemEmail.style.background = errorBackground;
			elemEmailConfirm.style.background = errorBackground;
			error = true;
		}
		if(elemDate.value.length >= 1) {	
			var newdate = elemDate.value;
			newdate.toString();
			var split = newdate.split("/");
			newdate = '';
			if (split.length == 3) {
				newdate = split[1] + "/" + split[0] + "/" + split[2];
				var date = new Date(newdate);
				if (date == "Invalid Date") {
					strError += "Please enter correct date<br/>";		
					elemDate.style.background = errorBackground;
					error = true;
				}
			} else {
				strError += "Please enter correct date<br/>";		
				elemDate.style.background = errorBackground;
				error = true;
			}
		}
	}
	if(isNaN(elemValue.value)) {	
		strError += "Voucher value must be numerical<br/>";		
		elemValue.style.background = errorBackground;
		error = true;
	}
	if(error) {
		elemError.style.display = "";
		elemErrorDiv.innerHTML = "<p>" + strError + "</p>";
		return false;
	}
	elemError.style.display = "none";
	return true;
}

function addVoucher(id, type) {
	var form = document.getElementById('voucher_form_' + id);
	var elemError = form.getElementById('error' + id);
	var elemErrorText = form.getElementById('errortext' + id);
	var elemErrorDiv = form.getElementById('errordiv' + id);
	var elemValue = form.getElementById('value' + id);
	var elemMsgTo = form.getElementById('msgto' + id);
	var elemMsgFrom = form.getElementById('msgfrom' + id);
	var elemMessage = form.getElementById('message' + id);
	if (type == 'e_voucher') {
		var elemEmail = form.getElementById('email' + id);
		var elemEmailConfirm = form.getElementById('email_confirm' + id);
		var elemDate = form.getElementById('date' + id);
	}

	var email = '';
	var date = '';
	if (type == 'e_voucher') {
		email = URLEncode(elemEmail.value);
		var newdate = elemDate.value;
		newdate.toString();
		var split = newdate.split("/");
		newdate = '';
		newdate = split[1] + "/" + split[0] + "/" + split[2];
		var date = new Date(newdate);
		var st = date.getFullYear() + "-" + (date.getMonth()+1) + "-" + date.getDate();
		date = URLEncode(st);
	}

	var fragment = "basket.php?voucher_form_type=" + type +
		"&value=" + URLEncode(elemValue.value) +
		"&msgto=" + URLEncode(elemMsgTo.value) +
		"&msgfrom=" + URLEncode(elemMsgFrom.value) +
		"&message=" + URLEncode(elemMessage.value) +
		"&email=" + email +
		"&voucher_date=" + date +
		"&voucher_form_id=" + id +
		"&basket=addvoucher" +
		"&source=" + type + ".php" +
		"&date=" + Date();
	loadFragment(fragment, onAddVoucherToBasket);
	return true;
}

function addVoucherToBasket(id, type) {
	var validate = true;
	for (var z=1; z<vouchers.length; z++) {
		if (vouchers[z] == true) {
			if (!validateVoucher(z, type)) {
				validate = false;
			}
		}
	}
	if (!validate) {
		return false;
	}
	for (var z=1; z<vouchers.length; z++) {
		if (vouchers[z] == true) {
			addVoucher(z, type);
		}
	}
}

function onAddVoucherToBasket(namevaluepairs) {
	var oQuery = validateCallBackData(namevaluepairs);
	if (!oQuery) return;
	if (voucher_form_count > 1) {
		removeVoucherForm(oQuery['voucher_form_id']);
	} else {
		voucher_form_count--;
	}
	changeVoucherCost();
	if (voucher_form_count < 1) {
		window.location.href = 'basket.php';
	}
}

function changeVoucherCost() {
	var sum = document.getElementById('voucher_sum');
	var value;
	if (voucher_form_count > 1) {
		var total = 0.00;
		for (var z=1; z<vouchers.length; z++) {
			if (vouchers[z] == true) {
				value = document.getElementById('value' + z).value;
				if (value.length > 0) {
					if (!isNaN(value)) {
						value = parseFloat(value);
						total = total+value;
					}
				}
			}
		}
		sum.innerHTML = "<b>Total voucher spend: &pound; " + total.toFixed(2) + "</b>";
	} else {
		sum.innerHTML = "&nbsp;";
	}
}
