var form = {
	action : "http://www.formsmanager.co.uk/submission.php?form=133",
	submitButtonText : "envoyer",
	submissionFailure : null,
	requiredError : "is required",
    emailError : "is not an email address",
	fields : [
			               {
		          name : "__label",
				  type : "label",
				  dataType : "string",
				  required : false,
				  bold : false,
				  label : "",
				  id : "id5431",
				  possibleValues : [],
				  enforcedContent : null,
				  fieldValue : null
	           },                              {
		          name : "inscription_en_ligne__label",
				  type : "label",
				  dataType : "string",
				  required : false,
				  bold : true,
				  label : "Inscription en ligne",
				  id : "id5432",
				  possibleValues : [],
				  enforcedContent : null,
				  fieldValue : null
	           },                              {
		          name : "titre__dropdown",
				  type : "dropdown",
				  dataType : "string",
				  required : true,
				  bold : false,
				  label : "Titre",
				  id : "id5433",
				  possibleValues : ["Monsieur","Madame"],
				  enforcedContent : null,
				  fieldValue : null
	           },                              {
		          name : "prnom__textbox",
				  type : "textbox",
				  dataType : "string",
				  required : true,
				  bold : false,
				  label : "Prénom",
				  id : "id5434",
				  possibleValues : [],
				  enforcedContent : null,
				  fieldValue : null
	           },                              {
		          name : "nom__textbox",
				  type : "textbox",
				  dataType : "string",
				  required : true,
				  bold : false,
				  label : "Nom",
				  id : "id5435",
				  possibleValues : [],
				  enforcedContent : null,
				  fieldValue : null
	           },                              {
		          name : "fonction__textbox",
				  type : "textbox",
				  dataType : "string",
				  required : true,
				  bold : false,
				  label : "Fonction",
				  id : "id5436",
				  possibleValues : [],
				  enforcedContent : null,
				  fieldValue : null
	           },                              {
		          name : "entreprise__textbox",
				  type : "textbox",
				  dataType : "string",
				  required : true,
				  bold : false,
				  label : "Entreprise",
				  id : "id5437",
				  possibleValues : [],
				  enforcedContent : null,
				  fieldValue : null
	           },                              {
		          name : "localit__textbox",
				  type : "textbox",
				  dataType : "string",
				  required : true,
				  bold : false,
				  label : "Localité",
				  id : "id5438",
				  possibleValues : [],
				  enforcedContent : null,
				  fieldValue : null
	           },                              {
		          name : "tlphone__textbox",
				  type : "textbox",
				  dataType : "string",
				  required : true,
				  bold : false,
				  label : "Téléphone",
				  id : "id5439",
				  possibleValues : [],
				  enforcedContent : null,
				  fieldValue : null
	           },                              {
		          name : "fax__textbox",
				  type : "textbox",
				  dataType : "string",
				  required : false,
				  bold : false,
				  label : "Fax",
				  id : "id54310",
				  possibleValues : [],
				  enforcedContent : null,
				  fieldValue : null
	           },                              {
		          name : "email__emailaddress",
				  type : "emailaddress",
				  dataType : "email",
				  required : true,
				  bold : false,
				  label : "E-Mail",
				  id : "id54311",
				  possibleValues : [],
				  enforcedContent : null,
				  fieldValue : null
	           },                              {
		          name : "vnement__dropdown",
				  type : "dropdown",
				  dataType : "string",
				  required : true,
				  bold : false,
				  label : "Événement",
				  id : "id54312",
				  possibleValues : ["21 octobre 2010 à Paris, Marriott Champs Elysées"],
				  enforcedContent : null,
				  fieldValue : null
	           },                              {
		          name : "commentaire__textbox",
				  type : "textbox",
				  dataType : "string",
				  required : false,
				  bold : false,
				  label : "Commentaire",
				  id : "id54313",
				  possibleValues : [],
				  enforcedContent : null,
				  fieldValue : null
	           },                              {
		          name : "jai_lu_les_conditions_de_participation_et_protection_des_donnes__terms_and_conditions",
				  type : "terms_and_conditions",
				  dataType : "string",
				  required : true,
				  bold : false,
				  label : "J\'ai lu <a href=\"http://swf.integralis.com/privacypolicy.html\">les conditions de participation et protection des données</a>.",
				  id : "id54314",
				  possibleValues : [],
				  enforcedContent : null,
				  fieldValue : null
	           }               	         ]

};

var kamValidationErrors = null;

function validateFields(formElement)
{
	if(formElement!=null)
	{
		kamValidationErrors = new Array();
		var labels = formElement.getElementsByTagName("label");
		for (var i = 0; i < labels.length; i++)
		{
			if (labels[i].htmlFor != "")
			{
				var element = document.getElementById(labels[i].htmlFor);
				if (element != null)
				{
				    var controlType = "";
					var elementValue = "";

					//determine control type
					(element.tagName == "SELECT" || element.tagName == "TEXTAREA")? controlType = element.tagName.toLowerCase(): controlType = element.type.toLowerCase();

					// get the value
					( controlType == "select") ? elementValue=element.options[element.selectedIndex].value : elementValue=element.value;
					elementValue = elementValue.replace(/^\s+|\s+$/g, '');

					// check for required
					if (labels[i].className.indexOf("required")>-1)
					{
						var empty= false;
						if (controlType == "checkbox")
						{
							(!element.checked) ? empty = true : null;
						}
						else
						{
							(elementValue == "") ? empty = true : null;
						}
						(empty) ? kamGenerateFieldError(labels[i].htmlFor,kamRemoveTags(labels[i].innerHTML,"a"),form.requiredError) : null;
					}

					// check data types
					if (elementValue != "")
					{
						// check email type
						if (labels[i].className.indexOf("data_type_email")>-1)
						{
							(!kamIsEmailAddress(elementValue)) ? kamGenerateFieldError(labels[i].htmlFor,labels[i].innerHTML,form.emailError) : null ;
						}
					}
                }
				else
				{
					alert(labels[i].htmlFor + " not found in document");
				}
			}
			else{
				if (labels[i].className.indexOf("fieldTypecheckbox")>-1){
					// check for required
					if (labels[i].className.indexOf("required")>-1)
					{
						var empty = true;
						var checkboxes = labels[i].nextSibling.getElementsByTagName("input");
						for (var x = 0; x < checkboxes.length; x++){
							var input = checkboxes[x];
							if ( input.checked ){
								empty = false;
								break;
							}
						}
						
						if ( empty ){
							kamGenerateFieldError('',labels[i].innerHTML,form.requiredError);
						}
					}
				}
			}
		}

        // show the errors that have been generated
		if(kamValidationErrors.length)
		{
			var errorText = "There were the following errors:";
			for (var i = 0; i < kamValidationErrors.length; i++)
			{
               errorText += "\n- "+kamValidationErrors[i].message;
			}
			alert(errorText);
			kamValidationErrors.length = 0;
			return false;
		}
	}
	else
	{
		alert("Validation of form failed, form is null");
		return false;
	}
	return true;
}

/* data types */

function kamIsEmailAddress(value)
{
	var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
	return emailPattern.test(value);
}

/* end data types */

function kamRemoveTags(kamSourceString, kamTagName)
{ 
   var regexp= new RegExp ("<" + kamTagName + "[^.]*\/" + kamTagName + ">", "gi");
   return kamSourceString.replace(/<(?:.|\s)*?>/gi,"").replace("  "," ");
}

function kamGenerateFieldError(fieldId,labelText,error)
{
    labelText = kamRemoveTags(labelText.replace(":", "").replace("*", ""), "span");
	error = labelText.replace(/\n+\s+/,'')+" "+error;
	kamValidationErrors[kamValidationErrors.length] = { "id": fieldId, "message": error };
}



function buildForm(formVar)
{
	document.write('<form action="'+formVar.action+'" method="post" onsubmit="return validateFields(this)">')
	document.write('<fieldset>');
    document.write('<legend>&nbsp;</legend>');

	for( var index in formVar.fields )
	{
		//get a ref to the field
		var field = formVar.fields[index];
		
		if ( field.enforcedContent == null )
		{
      		//write the label
      		if( field.type!="label" && field.type!="seperator" )
      		{
      		   document.write('<label class="data_type_'+field.dataType.toLowerCase()+' ');
      		   document.write('fieldType'+field.type+' ');
      		   if ( field.required==1 ){ document.write('required"'); }
      		   document.write('"');
      		   if (field.type!="checkbox" && field.type!="radio" && field.type!="emailformat"){
      		    document.write(' for="'+field.id+'"')
      		   }
      		   field.bold ? document.write(' style="font-weight:bold;"') : null;
      		   document.write('>');
                 field.required==1 ? document.write(field.label+' *</label>') : document.write(field.label+'</label>');
      		}
      
      		//write the control
      		if(field.type=="seperator")
      		{
      			document.write('<div class="separator">&nbsp;</div>');
      		}
      		else if(field.type=="label")
      		{
      			document.write('<div');
      		    field.bold ? document.write(' style="font-weight:bold;"') : null;
      			document.write('>'+field.label+'</div>');
      		}
      		else if(field.type=="textbox" || field.type=="title" || field.type=="firstname" || field.type=="lastname" || field.type=="emailaddress" )
      		{
      			var fieldValue = "";
      			if ( field.fieldValue != null ){ fieldValue = 'value="'+field.fieldValue+'"'; }
      			document.write('<input type="text" name="'+field.name+'" id="'+field.id+'" '+fieldValue+' />');
      			
      		}
      		else if(field.type=="textarea")
      		{
      			var fieldValue = "";
      			if ( field.fieldValue != null ){ fieldValue = field.fieldValue; }
                document.write('<textarea name="'+field.name+'" id="'+field.id+'">'+fieldValue+'</textarea>');
      		}
      		else if(field.type=="dropdown")
      		{
                  document.write('<select name="'+field.name+'" id="'+field.id+'">');
      			for(var i=0; i<field.possibleValues.length; i++ )
      			{
      				var fieldSelected = "";
      				if ( field.fieldValue != null )
      				{ 
      					if ( field.possibleValues[i] == field.fieldValue ){ fieldSelected = 'selected="true"'; }
      				}
      			
                     document.write('<option '+fieldSelected+' value="'+field.possibleValues[i]+'">'+field.possibleValues[i]+'</option>');
      			}
      			document.write('</select>');
      		}
      		else if(field.type=="radio" || field.type=="emailformat")
      		{
      			document.write('<div style="float:left;width:380px;">');
      			for(var i=0; i<field.possibleValues.length; i++ )
      			{
                     var checked = null;
                     if ( field.fieldValue != null )
                     { 
                       if ( field.possibleValues[i] == field.fieldValue ){ checked = 'checked="checked"'; }
                     }
                     else
                     {
      			   		i==0 ? checked=' checked="checked"' : checked='' ;
      			   	  }
      			   document.write('<label class="radio" style="display:inline;width:auto;"><input type="radio" name="'+field.name+'" value="'+field.possibleValues[i]+'"'+checked+' style="display:inline;width:auto;margin-top:0;" />'+field.possibleValues[i]+'</label>');
      			}
      			document.write('</div>');
      		}
      		else if(field.type=="checkbox")
      		{
      			document.write('<div style="float:left;width:380px;">');
      			for(var i=0; i<field.possibleValues.length; i++ )
      			{
      			   var checked = "";
   				   if ( field.fieldValue != null )
   				   { 
   					 if ( field.possibleValues[i] == field.fieldValue ){ checked = 'checked="checked"'; }
   				   }
      			
      			   document.write('<label class="checkbox" style="display:inline;width:auto;"><input type="checkbox" name="'+field.name+'[]" value="'+field.possibleValues[i]+'"'+checked+' style="display:inline;width:auto;margin-top:0;" />'+field.possibleValues[i]+'</label><div class="clear">&nbsp;</div>');
      			}
      			document.write('</div>');
      		}
      		else if(field.type=="terms_and_conditions")
      		{
      			document.write('<div style="float:left;width:380px;">');
                  document.write('<label class="checkbox" style="display:inline;width:auto;"><input type="checkbox" name="'+field.name+'" value="yes"'+checked+' style="display:inline;width:auto;margin-top:0;" id="'+field.id+'"  /></label><div class="clear">&nbsp;</div>');
      			document.write('</div>');
      		}
      		else if(field.type=="label")
      		{
      			document.write('<label>'+field.label+'</label>');
      		}
      		else if(field.type=="alternative_email")
            {
               document.write('<div style="float:left;width:380px;">');
                  document.write('<label class="checkbox" style="display:inline;width:auto;"><input type="checkbox" name="'+field.name+'" value="yes" style="display:inline;width:auto;margin-top:0;" id="'+field.id+'"  /></label><div class="clear">&nbsp;</div>');
               document.write('</div>');
            }
            
      		
      		document.write('<div class="clear">&nbsp;</div>');
		}
		else
		{
			document.write(field.enforcedContent);
		}
	}
	
	var submitButtonText = form.submitButtonText;
	if ( submitButtonText ){ submitButtonText = 'value="'+submitButtonText+'"'; } 
	
    document.write('<label class="submit">Submit</label><input type="submit" name="submitButton" class="submit" '+submitButtonText+' />');
	document.write('</fieldset>');
	document.write('</form>')
	
	if ( formVar.submissionFailure != null ) { alert( formVar.submissionFailure ); }
}

function showRecaptcha(element) {
  Recaptcha.create("6LdbsQQAAAAAAByzVKwPvZuaxlk0ViwCv7_Galnr", element, {
        theme: "clean",
        tabindex: 0
  });
}

buildForm(form);


