var form_fields = new Array();
var content = '';
var form_id = null;
var form_title = '';
var form_desc = '';
var haystackText = '';

function replaceForm(needle, replacement) {

	 if (haystackText.length == 0) {
		  haystackText = $('#contentDiv').html();
	 }
	 var match = new RegExp(needle, "ig");     
	 var replaced = "";
	 if (replacement.length > 0) {
		  replaced = haystackText.replace(match, replacement);
	 }
	 
	 $('#contentDiv').html(replaced);
}

function generate_form(formID, formData, formTitle, formDesc)
{
	form_id = formID;
	form_title = formTitle;
	form_desc = formDesc;
	
	var parsedData = JSON.parse(formData);

	$.extend(form_fields, parsedData);

	build_form();
	
	replaceForm('{FORM_'+formID+'}', content);
}

function check_required(form) {
	
	var error = false;
	var error_msg = '';
	
	$.each(form_fields, function(i, item) {
		
		if(item[1][3] == true)
		{
			theValue = null;
			theValue1 = null;
			theValue2 = null;
			theValue3 = null;
			theValue4 = null;
			doCheck = false;
			doCheckName = false;
			doCheckAddress = false;
			doCheckCheckbox = false;
			
			switch(item[0])
			{
				case 'text':
				case 'textarea':
				case 'attachment':
				case 'website':
					theValue = $('#form_field_'+i).val().trim();
					doCheck = true;
					break;
				
				case 'name':
				case 'price':
					theValue1 = $('#form_field_'+i+'_1').val().trim();
					theValue2 = $('#form_field_'+i+'_2').val().trim();
					doCheckName = true;
					break;
				
				case 'address':
					theValue1 = $('#form_field_'+i+'_1').val().trim();
					theValue2 = $('#form_field_'+i+'_2').val().trim();
					theValue3 = $('#form_field_'+i+'_3').val().trim();
					theValue4 = $('#form_field_'+i+'_4').val().trim();
					doCheckAddress = true;
					break;
				
				case 'checkbox':
				
					var checkboxes = $('#checkboxes_'+i+' label');
					var checkboxes_count = 0;
					checkboxes.children().each(function() {
						
						var child = $(this);
						if(child.is(':checked'))
							checkboxes_count++;
						
					});
					
					doCheckCheckbox = true;
					break;
			}
			
			if(doCheck && !theValue)
			{
				error = true;
				error_msg += '- '+item[1][0]+'\n';
			}
			if(doCheckName && (!theValue1 || !theValue2))
			{
				error = true;
				error_msg += '- '+item[1][0]+'\n';
			}
			if(doCheckAddress && (!theValue1 || !theValue2 || !theValue3 || !theValue4))
			{
				error = true;
				error_msg += '- '+item[1][0]+'\n';
			}
			if(doCheckCheckbox && checkboxes_count == 0)
			{
				error = true;
				error_msg += '- '+item[1][0]+'\n';
			}
		}
	
	});
	
	if(error)
	{
		alert('De volgende velden zijn niet ingevuld, maar zijn wel verplicht;\n\n'+error_msg);
	}
	
	if(error)
		return false;
	else
		return true;
}

function build_form()
{
	content += '<div style="margin: 25px 0 15px 0; padding: 0 0 10px 0; border-bottom: 1px dotted #dcdcdc;">';
	content += '<h1 style="padding: 5px 0 0 0; margin: 0 0 0 0;">'+form_title+'</h1>';
	content += form_desc+'<br />';
	content += '</div>';
	
	content += '<form action="'+BASE_URL+'nl/forms/send" method="post" enctype="multipart/form-data" onsubmit="return check_required(this)" class="form">';
	
	$.each(form_fields, function(i, item) {
		
		switch(item[0])
		{
			case 'text':
				content += '<div><strong>'+form_fields[i][1][0]+'</strong><br /><input type="text" id="form_field_'+i+'" name="'+form_fields[i][1][0]+'" value="'+form_fields[i][1][1]+'" style="width: 360px;" /></div>';
				break;
			
			case 'textarea':
				content += '<div><strong>'+form_fields[i][1][0]+'</strong><br /><textarea id="form_field_'+i+'" name="'+form_fields[i][1][0]+'" style="width: 360px;"></textarea></div>';
				break;
			
			case 'radio':
			
				content += '<div><strong>'+form_fields[i][1][0]+'</strong><br />';
				
				options = form_fields[i][1][2].toString();
				options = options.split(';');
				$.each(options, function(option_i, option_item) {
					
					if(option_i == 0)
						checked = ' checked="checked"';
					else
						checked = '';
				
					content += '<label><input type="radio" name="'+form_fields[i][1][0]+'" value="'+option_item+'"'+checked+'>'+option_item+'</label><br />';
				
				});
				
				content += '</div>';
				
				break;
			
			case 'checkbox':
				
				content += '<div><strong>'+form_fields[i][1][0]+'</strong><br />';
				content += '<div id="checkboxes_'+i+'">';

				options = form_fields[i][1][2].toString();
				options = options.split(';');
				$.each(options, function(option_i, option_item) {

					content += '<label><input type="checkbox" id="form_field_'+i+'[]" name="'+form_fields[i][1][0]+'[]" value="'+option_item+'">'+option_item+'</label><br />';

				});
				
				content += '</div>';
				content += '</div>';
				
				break;
			
			case 'select':
			
				content += '<div><strong>'+form_fields[i][1][0]+'</strong><br />';
				content += '<select name="'+form_fields[i][1][0]+'" style="width: 200px;">';

				options = form_fields[i][1][2].toString();
				options = options.split(';');
				$.each(options, function(option_i, option_item) {

					content += '<option value="'+option_item+'">'+option_item+'</option>';

				});
				
				content += '</select>';
				content += '</div>';
				
				break;
			
			case 'name':
				content += '<div><strong>'+form_fields[i][1][0]+'</strong><br />';
				content += '<table cellpadding="0" cellspacing="0">';
				content += '<tr>';
				content += '<td style="padding: 0 5px 0 0;"><input type="text" id="form_field_'+i+'_1" name="'+form_fields[i][1][0]+' (voornaam)" style="width: 150px;" /></td>';
				content += '<td style="padding: 0 5px 0 0;"><input type="text" id="form_field_'+i+'_2" name="'+form_fields[i][1][0]+' (achternaam)" style="width: 200px;" /></td>';
				content += '</tr>';
				content += '<tr>';
				content += '<td class="field_title" style="color: #444444;">Voornaam</td>';
				content += '<td class="field_title">Achternaam</td>';
				content += '</tr>';
				content += '</table>';
				content += '</div>';
				break;
			
			case 'address':
				content += '<div><strong>'+form_fields[i][1][0]+'</strong><br />';
				content += '<table cellpadding="0" cellspacing="0">';
				content += '<tr>';
				content += '<td style="padding: 0 5px 0 0;">';
				
				content += '<table cellpadding="0" cellspacing="0">';
				content += '<tr>';
				content += '<td style="padding: 0 5px 0 0;"><input type="text" id="form_field_'+i+'_1" name="'+form_fields[i][1][0]+' (straat)" style="width: 250px;" /></td>';
				content += '<td style="padding: 0 5px 0 0;"><input type="text" id="form_field_'+i+'_2" name="'+form_fields[i][1][0]+' (huisnummer)" style="width: 100px;" /></td>';
				content += '</tr>';
				content += '<tr>';
				content += '<td class="field_title"">Straat</td>';
				content += '<td class="field_title">Huisnummer</td>';
				content += '</tr>';
				content += '</table>';
				
				content += '</td>';
				content += '</tr>';
				content += '<tr>';
				content += '<td style="padding: 0 5px 0 0;">';
				
				content += '<table cellpadding="0" cellspacing="0">';
				content += '<tr>';
				content += '<td style="padding: 0 5px 0 0;"><input type="text" id="form_field_'+i+'_3" name="'+form_fields[i][1][0]+' (postcode)" style="width: 75px;" /></td>';
				content += '<td style="padding: 0 5px 0 0;"><input type="text" id="form_field_'+i+'_4" name="'+form_fields[i][1][0]+' (woonplaats)" style="width: 275px;" /></td>';
				content += '</tr>';
				content += '<tr>';
				content += '<td class="field_title"">Postcode</td>';
				content += '<td class="field_title">Woonplaats</td>';
				content += '</tr>';
				content += '</table>';
				
				content += '</td>';
				content += '</tr>';
				content += '</table>';
				content += '</div>';
				break;
			
			case 'email':
				content += '<div><strong>'+form_fields[i][1][0]+'</strong><br /><input type="text" name="'+form_fields[i][1][0]+'" style="width: 360px;" /></div>';
				break;
			
			case 'price':
				content += '<div><strong>'+form_fields[i][1][0]+'</strong><br />';
				content += '<table cellpadding="0" cellspacing="0">';
				content += '<tr>';
				content += '<td style="padding: 0 5px 0 0;"><input type="text" id="form_field_'+i+'_1" name="'+form_fields[i][1][0]+' (euro)" style="width: 40px; text-align: right;" /></td>';
				content += '<td style="padding: 0 5px 0 0;"><input type="text" id="form_field_'+i+'_2" name="'+form_fields[i][1][0]+' (cent)" maxlength="2" style="width: 30px;" /></td>';
				content += '</tr>';
				content += '<tr>';
				content += '<td class="field_title" style="color: #444444;">Euro</td>';
				content += '<td class="field_title">Cent</td>';
				content += '</tr>';
				content += '</table>';
				content += '</div>';
				break;
			
			case 'attachment':
				content += '<div><strong>'+form_fields[i][1][0]+'</strong><br /><input type="file" id="form_field_'+i+'" name="bijlage'+i+'" size="42" /></div>';
				break;
			
			case 'website':
				content += '<div>';
				content += '<strong>'+form_fields[i][1][0]+'</strong><br />';
				content += '<table cellpadding="0" cellspacing="0">';
				content += '<tr>';
				content += '<td style="padding: 0 5px 0 0; color: #444444;">http://</td><td><input type="text" id="form_field_'+i+'" name="'+form_fields[i][1][0]+'" style="width: 325px;" /></td>';
				content += '</tr>';
				content += '</table>';
				content += '</div>';
				break;
			
			case 'section':
				content += '<div><h1 style="border-top: 1px dotted #dcdcdc; padding: 5px 0 0 0; margin: 0 0 0 0;">'+form_fields[i][1][0]+'</h1><p style="margin: 0;">'+form_fields[i][1][1]+'</p></div>';
				break;
		}
		
	});
	
	
	content += '<div style="text-align: right;"><input type="submit" value="Formulier versturen" style="padding: 5px;" />';
	content += '<input type="hidden" name="form_id" value="'+form_id+'" />';
	content += '</form><br /><br />';
}
