function uncheck_all(elem){
	var frm = elem.form;
		for(i = 0; i < frm.elements.length; i++)
			if (frm.elements[i].className == "allCheckBox")
				frm.elements[i].checked = false;
}

function uncheck_producers(elem){
	var frm = elem.form;
	for(i = 0; i < frm.elements.length; i++)
		if (frm.elements[i].className == "producerCheckBox")
			frm.elements[i].checked = false;
}

function uncheck_purposes(elem){
	var frm = elem.form;
	for(i = 0; i < frm.elements.length; i++)
		if (frm.elements[i].className == "purposeCheckBox")
			frm.elements[i].checked = false;
}

function delivery_select(activePayments,inactivePayments){
	for(i = 0; i < activePayments.length; i++){
		document.getElementById('paymentrow_' + activePayments[i]).className = 'activePayment';
		elem = document.getElementById('payment_' + activePayments[i]);
		elem.disabled = false;
		if (i == 0)
			elem.checked = true;
	}
	for(i = 0; i < inactivePayments.length; i++){
		var pr = document.getElementById('paymentrow_' + inactivePayments[i]);
		if (pr){
			pr.className = 'inactivePayment';
			pr.disabled = true;
		}
	}
}
	
function switch_cd_form(){
	var elem = document.getElementById('companyDataContainer');
	if (document.getElementById('companyData').checked)
		elem.style.display = 'block';
	else
		elem.style.display = 'none';
}

function switch_sa_form(){
	var elem = document.getElementById('shippingAddressContainer');
	if (document.getElementById('shippingAddress').checked)
		elem.style.display = 'block';
	else
		elem.style.display = 'none';
}

/*validates form*/
/*input array format (keys):*/
/* 0...type of validation*/
/* 1...id of input element*/
/* 2...id of second input element (for password match)*/
/* 3...id of checkbox element. if it is checked, do the validation*/
/* 4...bad format message*/
/* 5...empty field message*/
/* 6...field importance (mandatory field if 1, voluntary if 0)*/
function validate(inputs,mainErrorMsg){
	var errorMsg = "";
	var focusInput = true;
	var doValidation = true;
	
	for(mKey = 0; mKey < inputs.length; mKey++){
		doValidation = true;
		/*if the field is conditional on checked checkbox with id = inputs[mKey][3]*/
		if (inputs[mKey][3] != ""){
			checkbox = document.getElementById(inputs[mKey][3]);
			doValidation = checkbox.checked;
		}
		/*if the element is TinyMCE editor*/
		if (inputs[mKey][0] == 12){
			elem = tinymce.EditorManager.get(inputs[mKey][1]);
			elem_value = elem.getContent();
		}
		else {
			elem = document.getElementById(inputs[mKey][1]);
			elem_value = elem.value;
		}
		/*if the field is conditional and must be in special format*/
		if (elem_value == ""){
			if ((inputs[mKey][3] == "") || ((inputs[mKey][3] != "") && (checkbox.checked)))
				if (inputs[mKey][6] > 0){
					errorMsg += "\n - " + inputs[mKey][5];
					doValidation = false;
				}
				else	
					doValidation = false;
		}
		/*if validate*/
		if (doValidation){
			switch(inputs[mKey][0]){
				/*string*/
				case 1:
					if (elem_value == "")
						errorMsg += "\n - " + inputs[mKey][4];
				break;
				/*int*/
				case 2:
					var regex = /^-?\d+$/;
					if (!regex.test(elem_value))
						errorMsg += "\n - " + inputs[mKey][4];
				break;
				/*positive int*/
				case 3:
					var regex = /^\d+$/;
					if (!regex.test(elem_value))
						errorMsg += "\n - " + inputs[mKey][4];
				break;
				/*float*/
				case 4:
					var regex = /(^-?\d\d*(\.|\,)\d*$)|(^-?\d\d*$)/;
					if (!regex.test(elem_value))
						errorMsg += "\n - " + inputs[mKey][4];
				break;
				/*positive float*/
				case 5:
					var regex = /(^\d\d*(\.|\,)\d*$)|(^\d\d*$)/;
					if (!regex.test(elem_value))
						errorMsg += "\n - " + inputs[mKey][4];
				break;
				/*email*/
				case 6:
					var regex = /^((\"[^\"\f\n\r\t\v\b]+\")|([\w\!\#\$\%\&'\*\+\-\~\/\^\`\|\{\}]+(\.[\w\!\#\$\%\&'\*\+\-\~\/\^\`\|\{\}]+)*))@((\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]+))$/;
					if (!regex.test(elem_value))
						errorMsg += "\n - " + inputs[mKey][4];
				break;
				/*url*/
				case 7:
					var regex = /^(http|https|ftp):\/\/([a-zA-Z0-9\.\-]+(:[a-zA-Z0-9\.&%\$\-]+)*@)?((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.[a-zA-Z]{2,4})(\:[0-9]+)?(\/[^\/][a-zA-Z0-9\.\,\?\/\'\\\+&%\$#\=~_\-@]*)*$/;
					if (!regex.test(elem_value))
						errorMsg += "\n - " + inputs[mKey][4];
				break;
				/*string with minimal length*/
				case 8:
					if ((elem_value == "") || (elem_value.length < inputs[mKey][2]))
						errorMsg += "\n - " + inputs[mKey][4];
				break;
				/*match of two fields, e.g. passwords*/
				case 9:
					var regex = /^[a-zA-Z0-9]+$/;
					elem2 = document.getElementById(inputs[mKey][1] + '_repeat');
					if ((elem2.value != elem_value) || !regex.test(elem_value) || (elem_value.length < inputs[mKey][2]))
						errorMsg += "\n - " + inputs[mKey][4];
				break;
				/*us date*/
				case 10:
					var regex = /^\d{4}-\d{1,2}-\d{1,2}$/;
					if (!regex.test(elem_value))
						errorMsg += "\n - " + inputs[mKey][4];
				break;
				/*smart url*/
				case 11:
					var regex = /^[a-zA-Z0-9]+((-{1}[a-zA-Z0-9]+)*)$/;
					if (!regex.test(elem_value))
						errorMsg += "\n - " + inputs[mKey][4];
				break;
				/*login name A-Z a-z 0-9*/
				case 12:
					var regex = /^[a-zA-Z0-9]+$/;
					if (!regex.test(elem_value) || (elem_value.length <= inputs[mKey][2]))
						errorMsg += "\n - " + inputs[mKey][4];
				break;
				/*phone number*/
				case 13:
					var regex = /^(\(?\+?[0-9]*\)?)?[0-9_\- \(\)]*$/;
					if (!regex.test(elem_value))
						errorMsg += "\n - " + inputs[mKey][4];
				break;
				/*hex color*/
				case 14:
					var regex = /^#[0-9a-fA-F]{6}$/;
					if (!regex.test(elem_value))
						errorMsg += "\n - " + inputs[mKey][4];
				break;
				/*eu date*/
				case 15:
					var regex = /^\d{1,2}\.\d{1,2}\.\d{4}$/;
					if (!regex.test(elem_value))
						errorMsg += "\n - " + inputs[mKey][4];
				break;
			}
		}
		if (focusInput && (errorMsg != "")){
			elem.focus();
			focusInput = false;
		}
	}
	
	if (errorMsg != "") {
		errorMsg = mainErrorMsg + errorMsg;
		alert(errorMsg);
		return false;
	}
	return true;
}

function add_amount(link,inputId){
	var amountInput = document.getElementById(inputId);
	link.href = link.href + '&amount=' + amountInput.value;
}