<?php
 
include('src/classes/class.html5form.php');
 
 
if (isset($_POST['save'])) {
 
    $ret = html5form::checkFormData($_POST);
 
    if (is_array($ret)) {
 
        echo '<pre>Errors = ' . print_r($ret, true) . '</pre>';
 
    }
 
}
 
 
$oForm = new html5form('.');
 
$oForm->addCode('<div class="left halfWidth">');
 
$oForm->addNameField('Name *', 'name', $_POST['name'], null, null, true, 'full name, at least 2 words', array(array('function' => 'str_word_count', 'operator' => '>=', 'compare' => 2)));
 
$oForm->addCode('</div><div class="right halfWidth">');
 
$oForm->addTelField('Phone number *', 'phone', $_POST['phone'], null, null, true);
 
$oForm->addCode('</div><div class="clear"></div><div class="left halfWidth">');
 
$oForm->addEmailField('Email address *', 'email', $_POST['email'], true);
 
$oForm->addCode('</div><div class="right halfWidth">');
 
$oForm->addRadioGroup('Gender *', 'gender', array(array('male', 'Male', ($_POST['gender'] == 'male')), array('female', 'Female', ($_POST['gender'] == 'female'))), true, LabelPositions::before, 'description');
 
$oForm->addCode('</div><div class="clear"></div>');
 
$oForm->addTextarea('Request *', 'request', $_POST['request'], null, null, true, 'at least 10 words', array(array('function' => 'str_word_count', 'operator' => '>=', 'compare' => 10)), LabelPositions::before, 'high');
 
$oForm->addCode('<h3 style="margin: 8px 0 4px 0">Location</h3>');
 
$oForm->addCode('<div class="left halfWidth">');
 
$oForm->addNumericField('Latitude', 'lat', NumericFieldTypes::float, $_POST['lat']);
 
$oForm->addCode('</div><div class="right halfWidth">');
 
$oForm->addNumericField('Longitude', 'lon', NumericFieldTypes::float, $_POST['lon']);
 
$oForm->addCode('</div>');
 
$oForm->addCode('<script>
 
    function position(pos) {
 
        document.getElementsByName("lat")[0].value = pos.coords.latitude;
 
        document.getElementsByName("lon")[0].value = pos.coords.longitude;
 
    }
 
    function positionError(error) {
 
        switch (error.code) {
 
            case error.PERMISSION_DENIED:
 
                // alert("Permission denied");
 
                break;
 
            case error.POSITION_UNAVAILABLE:
 
                // alert("Position unavailable");
 
                break;
 
            case error.TIMEOUT:
 
                // alert("Timeout");
 
                break;
 
            case error.UNKNOWN_ERROR:
 
                // alert("Unknown error");
 
                break;
 
        }
 
        getIpLocation();
 
    }
 
    function getIpLocation() {
 
        $.ajax({
 
            url: "http://ip-api.com/json/",
 
            method: "get",
 
            cache: false,
 
            contentType: "json",
 
            processData: false,
 
            success: function(data) {
 
                var geo = $.parseJSON(data);
 
                document.getElementsByName("lat")[0].value = pos.coords.latitude;
 
                document.getElementsByName("lon")[0].value = pos.coords.longitude;
 
            },
 
            error: function() {
 
                alert("Dein aktueller Standort konnte nicht ermittelt werden. Bitte gib ihn selbst so genau wie möglich ein.");
 
            }
 
        });
 
    }
 
    if (navigator.geolocation) {
 
        navigator.geolocation.getCurrentPosition(position, positionError, {
 
            enableHighAccuracy: true,
 
            timeout: 5000,
 
            maximumAge: 10
 
        });
 
    } else {
 
        getIpLocation();
 
    }
 
</script>');
 
$oForm->addCode('<h3 style="margin: 8px 0 4px 0">Legal</h3>');
 
$oForm->addCheckbox('Privacy *', 'privacy', '1', false, true, LabelPositions::before, 'I know my data won\'t be used or saved, it will only be validated and returned to me', 'description');
 
$oForm->addButton('Send', ButtonTypes::submit, 'save', 'Save', '', '', ' ', 'desktop');
 
$oForm->addButton('Reset', ButtonTypes::reset, '', 'Cancel');
 
$oForm->display();
 
?>
 
 
 |