From 9bacd4c2f71057d9ba1ac2f39fc132daad061bd5 Mon Sep 17 00:00:00 2001 From: david Date: Thu, 17 Mar 2011 22:34:38 +0000 Subject: [PATCH] =?UTF-8?q?Adaptaci=C3=B3n=20de=20los=20formularios=20a=20?= =?UTF-8?q?iOS=20(iPhone=20/=20iPod)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://192.168.0.254/svn/Proyectos.Incam_FormulariosCalidad/trunk@12 e2c41b2c-0c6f-0149-8b81-50b1a9191bb3 --- edit_form.php | 2 +- includes/language.php | 87 +- includes/mobile-view-functions.php | 2597 ++++++++++++++++ includes/standard-view-functions.php | 2502 ++++++++++++++++ includes/view-functions.php | 2605 +---------------- mobile/apple/css/developer-style.css | 1138 +++++++ mobile/apple/css/forms.css | 72 + mobile/apple/css/style.css | 1 + mobile/apple/images/0stars.png | Bin 0 -> 314 bytes mobile/apple/images/0starsborder.png | Bin 0 -> 363 bytes mobile/apple/images/1stars.png | Bin 0 -> 456 bytes mobile/apple/images/1starsborder.png | Bin 0 -> 482 bytes mobile/apple/images/2stars.png | Bin 0 -> 467 bytes mobile/apple/images/2starsborder.png | Bin 0 -> 501 bytes mobile/apple/images/3stars.png | Bin 0 -> 470 bytes mobile/apple/images/3starsborder.png | Bin 0 -> 506 bytes mobile/apple/images/4stars.png | Bin 0 -> 455 bytes mobile/apple/images/4starsborder.png | Bin 0 -> 503 bytes mobile/apple/images/5stars.png | Bin 0 -> 393 bytes mobile/apple/images/arrow.png | Bin 0 -> 361 bytes mobile/apple/images/checkbox.png | Bin 0 -> 3300 bytes mobile/apple/images/home.png | Bin 0 -> 361 bytes mobile/apple/images/navbutton.png | Bin 0 -> 571 bytes mobile/apple/images/navbuttonblack.png | Bin 0 -> 493 bytes mobile/apple/images/navbuttonblue.png | Bin 0 -> 664 bytes mobile/apple/images/navleft.png | Bin 0 -> 826 bytes mobile/apple/images/navleftblack.png | Bin 0 -> 810 bytes mobile/apple/images/navlinkleft.png | Bin 0 -> 786 bytes mobile/apple/images/navlinkleftblack.png | Bin 0 -> 737 bytes mobile/apple/images/navlinkright.png | Bin 0 -> 804 bytes mobile/apple/images/navlinkrightblack.png | Bin 0 -> 738 bytes mobile/apple/images/navright.png | Bin 0 -> 845 bytes mobile/apple/images/navrightblack.png | Bin 0 -> 861 bytes mobile/apple/images/play.gif | Bin 0 -> 103 bytes mobile/apple/images/radiobutton.png | Bin 0 -> 373 bytes mobile/apple/images/searchfield.png | Bin 0 -> 1548 bytes mobile/apple/images/tributton.png | Bin 0 -> 476 bytes .../apple/javascript/developer-functions.js | 29 + mobile/apple/javascript/functions.js | 1 + mobile/apple/php/rss.php | 82 + mobile/apple/thumbs/accessibility.png | Bin 0 -> 1282 bytes mobile/apple/thumbs/appstore.png | Bin 0 -> 1660 bytes mobile/apple/thumbs/basics.png | Bin 0 -> 1332 bytes mobile/apple/thumbs/calculator.png | Bin 0 -> 1239 bytes mobile/apple/thumbs/calendar.png | Bin 0 -> 1103 bytes mobile/apple/thumbs/calendar2.png | Bin 0 -> 536 bytes mobile/apple/thumbs/camera.png | Bin 0 -> 1507 bytes mobile/apple/thumbs/clock.png | Bin 0 -> 1014 bytes mobile/apple/thumbs/compass.png | Bin 0 -> 2035 bytes mobile/apple/thumbs/contacts.png | Bin 0 -> 1505 bytes mobile/apple/thumbs/help.png | Bin 0 -> 1426 bytes mobile/apple/thumbs/ipod.png | Bin 0 -> 1030 bytes mobile/apple/thumbs/itunes.png | Bin 0 -> 1638 bytes mobile/apple/thumbs/iwebkit.png | Bin 0 -> 839 bytes mobile/apple/thumbs/mail.png | Bin 0 -> 1491 bytes mobile/apple/thumbs/maps.png | Bin 0 -> 1662 bytes mobile/apple/thumbs/messages.png | Bin 0 -> 1412 bytes mobile/apple/thumbs/music.png | Bin 0 -> 1424 bytes mobile/apple/thumbs/nike+.png | Bin 0 -> 1106 bytes mobile/apple/thumbs/notepad.png | Bin 0 -> 1266 bytes mobile/apple/thumbs/other.png | Bin 0 -> 1566 bytes mobile/apple/thumbs/otherapps.png | Bin 0 -> 1661 bytes mobile/apple/thumbs/photos.png | Bin 0 -> 1639 bytes mobile/apple/thumbs/plugin.png | Bin 0 -> 1690 bytes mobile/apple/thumbs/safari.png | Bin 0 -> 1636 bytes mobile/apple/thumbs/settings.png | Bin 0 -> 1340 bytes mobile/apple/thumbs/sketches.png | Bin 0 -> 1601 bytes mobile/apple/thumbs/sms.png | Bin 0 -> 1264 bytes mobile/apple/thumbs/start.png | Bin 0 -> 1162 bytes mobile/apple/thumbs/stocks.png | Bin 0 -> 1523 bytes mobile/apple/thumbs/telephone.png | Bin 0 -> 1087 bytes mobile/apple/thumbs/video.png | Bin 0 -> 1649 bytes mobile/apple/thumbs/voice.png | Bin 0 -> 1932 bytes mobile/apple/thumbs/weather.png | Bin 0 -> 1523 bytes mobile/apple/thumbs/wordpress.png | Bin 0 -> 1388 bytes mobile/apple/thumbs/youtube.png | Bin 0 -> 1418 bytes save.php | 4 +- 77 files changed, 6564 insertions(+), 2556 deletions(-) create mode 100644 includes/mobile-view-functions.php create mode 100644 includes/standard-view-functions.php create mode 100644 mobile/apple/css/developer-style.css create mode 100644 mobile/apple/css/forms.css create mode 100644 mobile/apple/css/style.css create mode 100644 mobile/apple/images/0stars.png create mode 100644 mobile/apple/images/0starsborder.png create mode 100644 mobile/apple/images/1stars.png create mode 100644 mobile/apple/images/1starsborder.png create mode 100644 mobile/apple/images/2stars.png create mode 100644 mobile/apple/images/2starsborder.png create mode 100644 mobile/apple/images/3stars.png create mode 100644 mobile/apple/images/3starsborder.png create mode 100644 mobile/apple/images/4stars.png create mode 100644 mobile/apple/images/4starsborder.png create mode 100644 mobile/apple/images/5stars.png create mode 100644 mobile/apple/images/arrow.png create mode 100644 mobile/apple/images/checkbox.png create mode 100644 mobile/apple/images/home.png create mode 100644 mobile/apple/images/navbutton.png create mode 100644 mobile/apple/images/navbuttonblack.png create mode 100644 mobile/apple/images/navbuttonblue.png create mode 100644 mobile/apple/images/navleft.png create mode 100644 mobile/apple/images/navleftblack.png create mode 100644 mobile/apple/images/navlinkleft.png create mode 100644 mobile/apple/images/navlinkleftblack.png create mode 100644 mobile/apple/images/navlinkright.png create mode 100644 mobile/apple/images/navlinkrightblack.png create mode 100644 mobile/apple/images/navright.png create mode 100644 mobile/apple/images/navrightblack.png create mode 100644 mobile/apple/images/play.gif create mode 100644 mobile/apple/images/radiobutton.png create mode 100644 mobile/apple/images/searchfield.png create mode 100644 mobile/apple/images/tributton.png create mode 100644 mobile/apple/javascript/developer-functions.js create mode 100644 mobile/apple/javascript/functions.js create mode 100644 mobile/apple/php/rss.php create mode 100644 mobile/apple/thumbs/accessibility.png create mode 100644 mobile/apple/thumbs/appstore.png create mode 100644 mobile/apple/thumbs/basics.png create mode 100644 mobile/apple/thumbs/calculator.png create mode 100644 mobile/apple/thumbs/calendar.png create mode 100644 mobile/apple/thumbs/calendar2.png create mode 100644 mobile/apple/thumbs/camera.png create mode 100644 mobile/apple/thumbs/clock.png create mode 100644 mobile/apple/thumbs/compass.png create mode 100644 mobile/apple/thumbs/contacts.png create mode 100644 mobile/apple/thumbs/help.png create mode 100644 mobile/apple/thumbs/ipod.png create mode 100644 mobile/apple/thumbs/itunes.png create mode 100644 mobile/apple/thumbs/iwebkit.png create mode 100644 mobile/apple/thumbs/mail.png create mode 100644 mobile/apple/thumbs/maps.png create mode 100644 mobile/apple/thumbs/messages.png create mode 100644 mobile/apple/thumbs/music.png create mode 100644 mobile/apple/thumbs/nike+.png create mode 100644 mobile/apple/thumbs/notepad.png create mode 100644 mobile/apple/thumbs/other.png create mode 100644 mobile/apple/thumbs/otherapps.png create mode 100644 mobile/apple/thumbs/photos.png create mode 100644 mobile/apple/thumbs/plugin.png create mode 100644 mobile/apple/thumbs/safari.png create mode 100644 mobile/apple/thumbs/settings.png create mode 100644 mobile/apple/thumbs/sketches.png create mode 100644 mobile/apple/thumbs/sms.png create mode 100644 mobile/apple/thumbs/start.png create mode 100644 mobile/apple/thumbs/stocks.png create mode 100644 mobile/apple/thumbs/telephone.png create mode 100644 mobile/apple/thumbs/video.png create mode 100644 mobile/apple/thumbs/voice.png create mode 100644 mobile/apple/thumbs/weather.png create mode 100644 mobile/apple/thumbs/wordpress.png create mode 100644 mobile/apple/thumbs/youtube.png diff --git a/edit_form.php b/edit_form.php index 39a1c38..48c6310 100644 --- a/edit_form.php +++ b/edit_form.php @@ -691,7 +691,7 @@ Instrucciones para los usuarios
-(?) +(?)
diff --git a/includes/language.php b/includes/language.php index 49b5de0..a8b38ff 100644 --- a/includes/language.php +++ b/includes/language.php @@ -1,96 +1,97 @@ resaltados abajo.'; - + $lang['error_desc'] = 'Los errores están resaltados abajo.'; + //form buttons $lang['submit_button'] = 'Enviar'; $lang['continue_button'] = 'Continuar'; - $lang['back_button'] = 'Atrás'; - + $lang['back_button'] = 'Atrás'; + //form status - $lang['form_inactive'] = 'Este formulario está actualmente desactivado.'; - + $lang['form_inactive'] = 'Este formulario está actualmente desactivado.'; + //form password - $lang['form_pass_title'] = 'El acceso a este formulario está protegido por contraseña.'; - $lang['form_pass_desc'] = 'Por favor, introduzca la contraseña.'; - $lang['form_pass_invalid'] = '¡La contraseña no es correcta!'; - + $lang['form_pass_title'] = 'El acceso a este formulario está protegido por contraseña.'; + $lang['form_pass_desc'] = 'Por favor, introduzca la contraseña.'; + $lang['form_pass_invalid'] = '¡La contraseña no es correcta!'; + $lang['form_pass_word'] = 'Contraseña'; + //form review $lang['review_title'] = 'Revise sus datos'; - $lang['review_message'] = 'Por favor, revise los datos que ha introducido. Cuando esté conforme, pulse el botón Enviar para terminar.'; - - //validation message + $lang['review_message'] = 'Por favor, revise los datos que ha introducido. Cuando esté conforme, pulse el botón Enviar para terminar.'; + + //validation message $lang['val_required'] = 'Este campo es obligatorio. Por favor, introduzca un valor.'; $lang['val_required_file'] = 'Este campo es obligatorio. Por favor, indique un fichero.'; - $lang['val_unique'] = 'Este campo requiere un valor único y este valor ya ha sido usado.'; + $lang['val_unique'] = 'Este campo requiere un valor único y este valor ya ha sido usado.'; $lang['val_integer'] = 'El valor introducido tiene que ser un valor entero.'; $lang['val_float'] = 'El valor introducido tiene que ser un valor flotante.'; - $lang['val_numeric'] = 'El valor introducido tiene que ser un número.'; + $lang['val_numeric'] = 'El valor introducido tiene que ser un número.'; $lang['val_min'] = 'El valor de este campo no puede ser menor de %s caracteres.'; $lang['val_max'] = 'El valor de este campo no puede ser mayor de %s caracteres.'; - $lang['val_range'] = 'El valor de este campo no está dentro del rango de %s a %s caracteres.'; - $lang['val_email'] = 'Este campo no tiene una dirección de correo electrónico válida.'; - $lang['val_website'] = 'Este campo no tiene una dirección web válida.'; - $lang['val_username'] = 'Los caracteres de este campo sólo pueden contener letras (a-z), números (0-9) y guiones bajos.'; + $lang['val_range'] = 'El valor de este campo no está dentro del rango de %s a %s caracteres.'; + $lang['val_email'] = 'Este campo no tiene una dirección de correo electrónico válida.'; + $lang['val_website'] = 'Este campo no tiene una dirección web válida.'; + $lang['val_username'] = 'Los caracteres de este campo sólo pueden contener letras (a-z), números (0-9) y guiones bajos.'; $lang['val_equal'] = '%s debe coincidir.'; $lang['val_date'] = 'Este campo no tiene una fecha correcta.'; $lang['val_time'] = 'Este campo no tiene una hora correcta.'; - $lang['val_phone'] = 'Por favor, introduzca un número de teléfono válido.'; + $lang['val_phone'] = 'Por favor, introduzca un número de teléfono válido.'; $lang['val_filetype'] = 'The filetype you are attempting to upload is not allowed.'; - + //fields on excel/csv $lang['export_num'] = 'Num.'; - $lang['date_created'] = 'Fecha de creación'; - $lang['date_updated'] = 'Fecha de actualización'; - $lang['ip_address'] = 'Dirección IP'; + $lang['date_created'] = 'Fecha de creación'; + $lang['date_updated'] = 'Fecha de actualización'; + $lang['ip_address'] = 'Dirección IP'; ?> \ No newline at end of file diff --git a/includes/mobile-view-functions.php b/includes/mobile-view-functions.php new file mode 100644 index 0000000..bb681e0 --- /dev/null +++ b/includes/mobile-view-functions.php @@ -0,0 +1,2597 @@ +is_error)){ + $error_message = "

{$element->error_message}

"; + } + + //check for required + if($element->is_required){ + $span_required = "id}\" class=\"required\">*"; + } + + //check for guidelines + if(!empty($element->guidelines)){ + $guidelines = "

id}\">{$element->guidelines}

"; + } + + //check for populated value, if exist, use it instead default_value + if(isset($element->populated_value['element_'.$element->id]['default_value'])){ + $element->default_value = $element->populated_value['element_'.$element->id]['default_value']; + } + + +$element_markup = <<{$element->title} {$span_required} + {$error_message} + {$guidelines} +
    +
  • + +
  • +
+EOT; + + /*
  • + +
    + +
    {$guidelines} {$error_message} +
  • */ + + return $element_markup; + } + + + + //Paragraph Text + function display_textarea($element){ + //check for error + $error_message = ''; + $span_required = ''; + $guidelines = ''; + + if(!empty($element->is_error)){ + $error_message = "

    {$element->error_message}

    "; + } + + //check for required + if($element->is_required){ + $span_required = "id}\" class=\"required\">*"; + } + + //check for guidelines + if(!empty($element->guidelines)){ + $guidelines = "

    id}\">{$element->guidelines}

    "; + } + + //check for guidelines + if(!empty($element->guidelines)){ + $guidelines = "

    id}\">{$element->guidelines}

    "; + } + + //check for populated value, if exist, use it instead default_value + if(isset($element->populated_value['element_'.$element->id]['default_value'])){ + $element->default_value = $element->populated_value['element_'.$element->id]['default_value']; + } + +$element_markup = <<{$element->title} {$span_required} + {$error_message} + {$guidelines} +
      +
    • + +
    • +
    +EOT; + + /*
  • + +
    + +
    {$guidelines} {$error_message} +
  • */ + + + return $element_markup; + } + + + //File Upload + function display_file($element){ + //check for error + $error_class = ''; + $error_message = ''; + $span_required = ''; + $guidelines = ''; + + if(!empty($element->is_error)){ + $error_class = 'class="error"'; + $error_message = "

    {$element->error_message}

    "; + } + + //check for required + if($element->is_required){ + $span_required = "id}\" class=\"required\">*"; + } + + //check for guidelines + if(!empty($element->guidelines)){ + $guidelines = "

    id}\">{$element->guidelines}

    "; + } + + //check for populated value (this is being used for edit_entry.php only) + if(!empty($element->populated_value)){ + $file_option = $element->populated_value['element_'.$element->id]['default_value']; //this should be contain html markup to download or delete current file + } + +$element_markup = << + +
    + +
    {$file_option} {$guidelines} {$error_message} + +EOT; + + return $element_markup; + } + + //Website + function display_url($element){ + //check for error + $error_class = ''; + $error_message = ''; + $span_required = ''; + $guidelines = ''; + + if(!empty($element->is_error)){ + $error_class = 'class="error"'; + $error_message = "

    {$element->error_message}

    "; + } + + //check for required + if($element->is_required){ + $span_required = "id}\" class=\"required\">*"; + } + + //check for guidelines + if(!empty($element->guidelines)){ + $guidelines = "

    id}\">{$element->guidelines}

    "; + } + + //check for default value + if(empty($element->default_value)){ + $element->default_value = 'http://'; + } + + //check for populated value, if exist, use it instead default_value + if(!empty($element->populated_value['element_'.$element->id]['default_value'])){ + $element->default_value = $element->populated_value['element_'.$element->id]['default_value']; + } + +$element_markup = << + +
    + +
    {$guidelines} {$error_message} + +EOT; + + return $element_markup; + } + + //Email + function display_email($element){ + //check for error + $error_class = ''; + $error_message = ''; + $span_required = ''; + $guidelines = ''; + + if(!empty($element->is_error)){ + $error_class = 'class="error"'; + $error_message = "

    {$element->error_message}

    "; + } + + //check for required + if($element->is_required){ + $span_required = "id}\" class=\"required\">*"; + } + + //check for guidelines + if(!empty($element->guidelines)){ + $guidelines = "

    id}\">{$element->guidelines}

    "; + } + + //check for populated value, if exist, use it instead default_value + if(!empty($element->populated_value['element_'.$element->id]['default_value'])){ + $element->default_value = $element->populated_value['element_'.$element->id]['default_value']; + } + +$element_markup = << + +
    + +
    {$guidelines} {$error_message} + +EOT; + + return $element_markup; + } + + + //Phone - Extended + function display_phone($element){ + //check for error + $error_class = ''; + $error_message = ''; + $span_required = ''; + $guidelines = ''; + + if(!empty($element->is_error)){ + $error_class = 'class="error"'; + $error_message = "

    {$element->error_message}

    "; + } + + //check for required + if($element->is_required){ + $span_required = "id}\" class=\"required\">*"; + } + + //check for guidelines + if(!empty($element->guidelines)){ + $guidelines = "

    id}\">{$element->guidelines}

    "; + } + + //check default value + if(!empty($element->default_value)){ + //split into (xxx) xxx - xxxx + $default_value_1 = substr($element->default_value,0,3); + $default_value_2 = substr($element->default_value,3,3); + $default_value_3 = substr($element->default_value,6,4); + } + + if(!empty($element->populated_value['element_'.$element->id.'_1']['default_value']) || + !empty($element->populated_value['element_'.$element->id.'_2']['default_value']) || + !empty($element->populated_value['element_'.$element->id.'_3']['default_value']) + ){ + $default_value_1 = ''; + $default_value_2 = ''; + $default_value_3 = ''; + $default_value_1 = $element->populated_value['element_'.$element->id.'_1']['default_value']; + $default_value_2 = $element->populated_value['element_'.$element->id.'_2']['default_value']; + $default_value_3 = $element->populated_value['element_'.$element->id.'_3']['default_value']; + } + + +$element_markup = << + + + - + + + + - + + + + + + + {$guidelines} {$error_message} + +EOT; + + + return $element_markup; + } + + //Phone - Simple + function display_simple_phone($element){ + //check for error + $error_class = ''; + $error_message = ''; + $span_required = ''; + $guidelines = ''; + + if(!empty($element->is_error)){ + $error_class = 'class="error"'; + $error_message = "

    {$element->error_message}

    "; + } + + //check for required + if($element->is_required){ + $span_required = "id}\" class=\"required\">*"; + } + + //check for guidelines + if(!empty($element->guidelines)){ + $guidelines = "

    id}\">{$element->guidelines}

    "; + } + + //check for populated value + if(!empty($element->populated_value['element_'.$element->id]['default_value'])){ + $element->default_value = $element->populated_value['element_'.$element->id]['default_value']; + } + +$element_markup = << + +
    + +
    {$guidelines} {$error_message} + +EOT; + + return $element_markup; + } + + + + //Date - Normal + function display_date($element){ + //check for error + $error_class = ''; + $error_message = ''; + $span_required = ''; + $guidelines = ''; + global $lang; + + if(!empty($element->is_error)){ + $error_class = 'class="error"'; + $error_message = "

    {$element->error_message}

    "; + } + + //check for required + if($element->is_required){ + $span_required = "id}\" class=\"required\">*"; + } + + //check for guidelines + if(!empty($element->guidelines)){ + $guidelines = "

    id}\">{$element->guidelines}

    "; + } + + $machform_path = ''; + if(!empty($element->machform_path)){ + $machform_path = $element->machform_path; + } + + +$element_markup = << + + + / + + + + / + + + + + + + + + Pick a date. + + + {$guidelines} {$error_message} + +EOT; + + return $element_markup; + } + + //Date - Normal + function display_europe_date($element){ + //check for error + $error_class = ''; + $error_message = ''; + $span_required = ''; + $guidelines = ''; + global $lang; + + if(!empty($element->is_error)){ + $error_class = 'class="error"'; + $error_message = "

    {$element->error_message}

    "; + } + + //check for required + if($element->is_required){ + $span_required = "id}\" class=\"required\">*"; + } + + //check for guidelines + if(!empty($element->guidelines)){ + $guidelines = "

    id}\">{$element->guidelines}

    "; + } + + $machform_path = ''; + if(!empty($element->machform_path)){ + $machform_path = $element->machform_path; + } + +$element_markup = << + + + / + + + + / + + + + + + + + + Pick a date. + + + {$guidelines} {$error_message} + +EOT; + + return $element_markup; + } + + + //Multiple Choice + function display_radio($element){ + //check for error + $error_class = ''; + $error_message = ''; + $span_required = ''; + $guidelines = ''; + + if(!empty($element->is_error)){ + $error_class = 'class="error"'; + $error_message = "

    {$element->error_message}

    "; + } + + //check for required + if($element->is_required){ + $span_required = "id}\" class=\"required\">*"; + } + + //check for guidelines + if(!empty($element->guidelines)){ + $guidelines = "

    id}\">{$element->guidelines}

    "; + } + + $option_markup = ''; + + if($element->constraint == 'random'){ + $temp = $element->options; + shuffle($temp); + $element->options = $temp; + } + + foreach ($element->options as $option){ + + if($option->is_default){ + $checked = 'checked="checked"'; + }else{ + $checked = ''; + } + + //check for populated values + if(!empty($element->populated_value['element_'.$element->id]['default_value'])){ + $checked = ''; + if($element->populated_value['element_'.$element->id]['default_value'] == $option->id){ + $checked = 'checked="checked"'; + } + } + + $option_markup .= "id}_{$option->id}\" name=\"element_{$element->id}\" class=\"element radio\" type=\"radio\" value=\"{$option->id}\" {$checked} />\n"; + $option_markup .= "\n"; + } + +$element_markup = << + + + {$option_markup} + {$guidelines} {$error_message} + +EOT; + + return $element_markup; + } + + //Checkboxes + function display_checkbox($element){ + //check for error + $error_class = ''; + $error_message = ''; + $span_required = ''; + $guidelines = ''; + + if(!empty($element->is_error)){ + $error_class = 'class="error"'; + $error_message = "

    {$element->error_message}

    "; + } + + //check for required + if($element->is_required){ + $span_required = "id}\" class=\"required\">*"; + } + + //check for guidelines + if(!empty($element->guidelines)){ + $guidelines = "

    id}\">{$element->guidelines}

    "; + } + + //check for populated value first, if any exist, unselect all default value + $is_populated = false; + foreach ($element->options as $option){ + + if(!empty($element->populated_value['element_'.$element->id.'_'.$option->id]['default_value'])){ + $is_populated = true; + break; + } + } + + $option_markup = ''; + + foreach ($element->options as $option){ + if(!$is_populated){ + if($option->is_default){ + $checked = 'checked="checked"'; + }else{ + $checked = ''; + } + }else{ + + if(!empty($element->populated_value['element_'.$element->id.'_'.$option->id]['default_value'])){ + $checked = 'checked="checked"'; + }else{ + $checked = ''; + } + } + + + //$option_markup .= "id}_{$option->id}\" name=\"element_{$element->id}_{$option->id}\" class=\"element checkbox\" type=\"checkbox\" value=\"1\" {$checked} />\n"; + //$option_markup .= "\n"; + $option_markup .= "
  • \n"; + $option_markup .= "{$option->option}\n"; + $option_markup .= "id}_{$option->id}\" name=\"element_{$element->id}_{$option->id}\" class=\"element checkbox\" />\n"; + $option_markup .= "
  • \n"; + } + +$element_markup = <<{$element->title} {$span_required} + {$guidelines} {$error_message} +
      + {$option_markup} +
    +EOT; + +/*
  • + + + {$option_markup} + {$guidelines} {$error_message} +
  • +*/ + + return $element_markup; + } + + + //Dropdown + function display_select($element){ + //check for error + $error_class = ''; + $error_message = ''; + $span_required = ''; + $guidelines = ''; + + if(!empty($element->is_error)){ + $error_class = 'class="error"'; + $error_message = "

    {$element->error_message}

    "; + } + + //check for required + if($element->is_required){ + $span_required = "id}\" class=\"required\">*"; + } + + //check for guidelines + if(!empty($element->guidelines)){ + $guidelines = "

    id}\">{$element->guidelines}

    "; + } + + $option_markup = ''; + + $has_default = false; + foreach ($element->options as $option){ + + if($option->is_default){ + $selected = 'selected="selected"'; + $has_default = true; + }else{ + $selected = ''; + } + + if(!empty($element->populated_value['element_'.$element->id]['default_value'])){ + $selected = ''; + if($element->populated_value['element_'.$element->id]['default_value'] == $option->id){ + $selected = 'selected="selected"'; + } + } + + $option_markup .= "\n"; + } + + if(!$has_default){ + if(!empty($element->populated_value['element_'.$element->id]['default_value'])){ + $option_markup = ''."\n".$option_markup; + }else{ + $option_markup = ''."\n".$option_markup; + } + } + +$element_markup = << + +
    + +
    {$guidelines} {$error_message} + +EOT; + + return $element_markup; + } + + + //Name - Simple + function display_simple_name($element){ + //check for error + $error_class = ''; + $error_message = ''; + $span_required = ''; + $guidelines = ''; + global $lang; + + if(!empty($element->is_error)){ + $error_class = 'class="error"'; + $error_message = "

    {$element->error_message}

    "; + } + + //check for required + if($element->is_required){ + $span_required = "id}\" class=\"required\">*"; + } + + //check for guidelines + if(!empty($element->guidelines)){ + $guidelines = "

    id}\">{$element->guidelines}

    "; + } + +$element_markup = << + + + + + + + + + {$guidelines} {$error_message} + +EOT; + + return $element_markup; + } + + //Name + function display_name($element){ + //check for error + $error_class = ''; + $error_message = ''; + $span_required = ''; + $guidelines = ''; + global $lang; + + if(!empty($element->is_error)){ + $error_class = 'class="error"'; + $error_message = "

    {$element->error_message}

    "; + } + + //check for required + if($element->is_required){ + $span_required = "id}\" class=\"required\">*"; + } + + //check for guidelines + if(!empty($element->guidelines)){ + $guidelines = "

    id}\">{$element->guidelines}

    "; + } + +$element_markup = << + + + + + + + + + + + + + + + + + {$guidelines} {$error_message} + +EOT; + + return $element_markup; + } + + //Time + function display_time($element){ + //check for error + $error_class = ''; + $error_message = ''; + $span_required = ''; + $guidelines = ''; + global $lang; + + if(!empty($element->is_error)){ + $error_class = 'class="error"'; + $error_message = "

    {$element->error_message}

    "; + } + + //check for required + if($element->is_required){ + $span_required = "id}\" class=\"required\">*"; + } + + //check for guidelines + if(!empty($element->guidelines)){ + $guidelines = "

    id}\">{$element->guidelines}

    "; + } + + if(!empty($element->populated_value['element_'.$element->id.'_4']['default_value'])){ + if($element->populated_value['element_'.$element->id.'_4']['default_value'] == 'AM'){ + $selected_am = 'selected'; + }else{ + $selected_pm = 'selected'; + } + } + + if($element->constraint == 'show_seconds'){ + $seconds_markup =<< + + + +EOT; + $seconds_separator = ':'; + }else{ + $seconds_markup = ''; + $seconds_separator = ''; + } + +$element_markup = << + + + : + + + + {$seconds_separator} + + + {$seconds_markup} + + + + {$guidelines} {$error_message} + +EOT; + + return $element_markup; + } + + + //Price + function display_money($element){ + //check for error + $error_class = ''; + $error_message = ''; + $span_required = ''; + $guidelines = ''; + global $lang; + + if(!empty($element->is_error)){ + $error_class = 'class="error"'; + $error_message = "

    {$element->error_message}

    "; + } + + //check for required + if($element->is_required){ + $span_required = "id}\" class=\"required\">*"; + } + + //check for guidelines + if(!empty($element->guidelines)){ + $guidelines = "

    id}\">{$element->guidelines}

    "; + } + + if($element->constraint != 'yen'){ //for dollar, pound and euro + if($element->constraint == 'pound'){ + $main_cur = $lang['price_pound_main']; + $child_cur = $lang['price_pound_sub']; + $cur_symbol = '£'; + }elseif ($element->constraint == 'euro'){ + $main_cur = $lang['price_euro_main']; + $child_cur = $lang['price_euro_sub']; + $cur_symbol = '€'; + }else{ //dollar + $main_cur = $lang['price_dollar_main']; + $child_cur = $lang['price_dollar_sub']; + $cur_symbol = '$'; + } + +$element_markup = << + + {$cur_symbol} + + . + + + + + + + {$guidelines} {$error_message} + +EOT; + + }else{ //for yen, only display one textfield + $main_cur = $lang['price_yen']; + $cur_symbol = '¥'; + +$element_markup = << + + {$cur_symbol} + + + + + {$guidelines} {$error_message} + +EOT; + + } + + + + return $element_markup; + } + + //Section Break + function display_section($element){ + $element->guidelines = nl2br($element->guidelines); +$element_markup = << +

    {$element->title}

    +

    {$element->guidelines}

    + +EOT; + + return $element_markup; + } + + + + //Number + function display_number($element){ + //check for error + $error_message = ''; + $span_required = ''; + $guidelines = ''; + + if(!empty($element->is_error)){ + $error_message = "

    {$element->error_message}

    "; + } + + //check for required + if($element->is_required){ + $span_required = "id}\" class=\"required\">*"; + } + + //check for guidelines + if(!empty($element->guidelines)){ + $guidelines = "

    id}\">{$element->guidelines}

    "; + } + + //check for populated value, if exist, use it instead default_value + if(isset($element->populated_value['element_'.$element->id]['default_value'])){ + $element->default_value = $element->populated_value['element_'.$element->id]['default_value']; + } + +$element_markup = <<{$element->title} {$span_required} + {$error_message} + {$guidelines} +
      +
    • + +
    • +
    +EOT; + /*
  • + +
    + +
    {$guidelines} {$error_message} +
  • */ + + return $element_markup; + } + + + + //Address + function display_address($element){ + + $country[0]['label'] = "Afghanistan"; + $country[1]['label'] = "Albania"; + $country[2]['label'] = "Algeria"; + $country[3]['label'] = "Andorra"; + $country[4]['label'] = "Antigua and Barbuda"; + $country[5]['label'] = "Argentina"; + $country[6]['label'] = "Armenia"; + $country[7]['label'] = "Australia"; + $country[8]['label'] = "Austria"; + $country[9]['label'] = "Azerbaijan"; + $country[10]['label'] = "Bahamas"; + $country[11]['label'] = "Bahrain"; + $country[12]['label'] = "Bangladesh"; + $country[13]['label'] = "Barbados"; + $country[14]['label'] = "Belarus"; + $country[15]['label'] = "Belgium"; + $country[16]['label'] = "Belize"; + $country[17]['label'] = "Benin"; + $country[18]['label'] = "Bhutan"; + $country[19]['label'] = "Bolivia"; + $country[20]['label'] = "Bosnia and Herzegovina"; + $country[21]['label'] = "Botswana"; + $country[22]['label'] = "Brazil"; + $country[23]['label'] = "Brunei"; + $country[24]['label'] = "Bulgaria"; + $country[25]['label'] = "Burkina Faso"; + $country[26]['label'] = "Burundi"; + $country[27]['label'] = "Cambodia"; + $country[28]['label'] = "Cameroon"; + $country[29]['label'] = "Canada"; + $country[30]['label'] = "Cape Verde"; + $country[31]['label'] = "Central African Republic"; + $country[32]['label'] = "Chad"; + $country[33]['label'] = "Chile"; + $country[34]['label'] = "China"; + $country[35]['label'] = "Colombia"; + $country[36]['label'] = "Comoros"; + $country[37]['label'] = "Congo"; + $country[38]['label'] = "Costa Rica"; + $country[39]['label'] = "Côte d'Ivoire"; + $country[40]['label'] = "Croatia"; + $country[41]['label'] = "Cuba"; + $country[42]['label'] = "Cyprus"; + $country[43]['label'] = "Czech Republic"; + $country[44]['label'] = "Denmark"; + $country[45]['label'] = "Djibouti"; + $country[46]['label'] = "Dominica"; + $country[47]['label'] = "Dominican Republic"; + $country[48]['label'] = "East Timor"; + $country[49]['label'] = "Ecuador"; + $country[50]['label'] = "Egypt"; + $country[51]['label'] = "El Salvador"; + $country[52]['label'] = "Equatorial Guinea"; + $country[53]['label'] = "Eritrea"; + $country[54]['label'] = "Estonia"; + $country[55]['label'] = "Ethiopia"; + $country[56]['label'] = "Fiji"; + $country[57]['label'] = "Finland"; + $country[58]['label'] = "France"; + $country[59]['label'] = "Gabon"; + $country[60]['label'] = "Gambia"; + $country[61]['label'] = "Georgia"; + $country[62]['label'] = "Germany"; + $country[63]['label'] = "Ghana"; + $country[64]['label'] = "Greece"; + $country[65]['label'] = "Grenada"; + $country[66]['label'] = "Guatemala"; + $country[67]['label'] = "Guinea"; + $country[68]['label'] = "Guinea-Bissau"; + $country[69]['label'] = "Guyana"; + $country[70]['label'] = "Haiti"; + $country[71]['label'] = "Honduras"; + $country[72]['label'] = "Hong Kong"; + $country[73]['label'] = "Hungary"; + $country[74]['label'] = "Iceland"; + $country[75]['label'] = "India"; + $country[76]['label'] = "Indonesia"; + $country[77]['label'] = "Iran"; + $country[78]['label'] = "Iraq"; + $country[79]['label'] = "Ireland"; + $country[80]['label'] = "Israel"; + $country[81]['label'] = "Italy"; + $country[82]['label'] = "Jamaica"; + $country[83]['label'] = "Japan"; + $country[84]['label'] = "Jordan"; + $country[85]['label'] = "Kazakhstan"; + $country[86]['label'] = "Kenya"; + $country[87]['label'] = "Kiribati"; + $country[88]['label'] = "North Korea"; + $country[89]['label'] = "South Korea"; + $country[90]['label'] = "Kuwait"; + $country[91]['label'] = "Kyrgyzstan"; + $country[92]['label'] = "Laos"; + $country[93]['label'] = "Latvia"; + $country[94]['label'] = "Lebanon"; + $country[95]['label'] = "Lesotho"; + $country[96]['label'] = "Liberia"; + $country[97]['label'] = "Libya"; + $country[98]['label'] = "Liechtenstein"; + $country[99]['label'] = "Lithuania"; + $country[100]['label'] = "Luxembourg"; + $country[101]['label'] = "Macedonia"; + $country[102]['label'] = "Madagascar"; + $country[103]['label'] = "Malawi"; + $country[104]['label'] = "Malaysia"; + $country[105]['label'] = "Maldives"; + $country[106]['label'] = "Mali"; + $country[107]['label'] = "Malta"; + $country[108]['label'] = "Marshall Islands"; + $country[109]['label'] = "Mauritania"; + $country[110]['label'] = "Mauritius"; + $country[111]['label'] = "Mexico"; + $country[112]['label'] = "Micronesia"; + $country[113]['label'] = "Moldova"; + $country[114]['label'] = "Monaco"; + $country[115]['label'] = "Mongolia"; + $country[116]['label'] = "Montenegro"; + $country[117]['label'] = "Morocco"; + $country[118]['label'] = "Mozambique"; + $country[119]['label'] = "Myanmar"; + $country[120]['label'] = "Namibia"; + $country[121]['label'] = "Nauru"; + $country[122]['label'] = "Nepal"; + $country[123]['label'] = "Netherlands"; + $country[124]['label'] = "New Zealand"; + $country[125]['label'] = "Nicaragua"; + $country[126]['label'] = "Niger"; + $country[127]['label'] = "Nigeria"; + $country[128]['label'] = "Norway"; + $country[129]['label'] = "Oman"; + $country[130]['label'] = "Pakistan"; + $country[131]['label'] = "Palau"; + $country[132]['label'] = "Panama"; + $country[133]['label'] = "Papua New Guinea"; + $country[134]['label'] = "Paraguay"; + $country[135]['label'] = "Peru"; + $country[136]['label'] = "Philippines"; + $country[137]['label'] = "Poland"; + $country[138]['label'] = "Portugal"; + $country[139]['label'] = "Puerto Rico"; + $country[140]['label'] = "Qatar"; + $country[141]['label'] = "Romania"; + $country[142]['label'] = "Russia"; + $country[143]['label'] = "Rwanda"; + $country[144]['label'] = "Saint Kitts and Nevis"; + $country[145]['label'] = "Saint Lucia"; + $country[146]['label'] = "Saint Vincent and the Grenadines"; + $country[147]['label'] = "Samoa"; + $country[148]['label'] = "San Marino"; + $country[149]['label'] = "Sao Tome and Principe"; + $country[150]['label'] = "Saudi Arabia"; + $country[151]['label'] = "Senegal"; + $country[152]['label'] = "Serbia and Montenegro"; + $country[153]['label'] = "Seychelles"; + $country[154]['label'] = "Sierra Leone"; + $country[155]['label'] = "Singapore"; + $country[156]['label'] = "Slovakia"; + $country[157]['label'] = "Slovenia"; + $country[158]['label'] = "Solomon Islands"; + $country[159]['label'] = "Somalia"; + $country[160]['label'] = "South Africa"; + $country[161]['label'] = "Spain"; + $country[162]['label'] = "Sri Lanka"; + $country[163]['label'] = "Sudan"; + $country[164]['label'] = "Suriname"; + $country[165]['label'] = "Swaziland"; + $country[166]['label'] = "Sweden"; + $country[167]['label'] = "Switzerland"; + $country[168]['label'] = "Syria"; + $country[169]['label'] = "Taiwan"; + $country[170]['label'] = "Tajikistan"; + $country[171]['label'] = "Tanzania"; + $country[172]['label'] = "Thailand"; + $country[173]['label'] = "Togo"; + $country[174]['label'] = "Tonga"; + $country[175]['label'] = "Trinidad and Tobago"; + $country[176]['label'] = "Tunisia"; + $country[177]['label'] = "Turkey"; + $country[178]['label'] = "Turkmenistan"; + $country[179]['label'] = "Tuvalu"; + $country[180]['label'] = "Uganda"; + $country[181]['label'] = "Ukraine"; + $country[182]['label'] = "United Arab Emirates"; + $country[183]['label'] = "United Kingdom"; + $country[184]['label'] = "United States"; + $country[185]['label'] = "Uruguay"; + $country[186]['label'] = "Uzbekistan"; + $country[187]['label'] = "Vanuatu"; + $country[188]['label'] = "Vatican City"; + $country[189]['label'] = "Venezuela"; + $country[190]['label'] = "Vietnam"; + $country[191]['label'] = "Yemen"; + $country[192]['label'] = "Zambia"; + $country[193]['label'] = "Zimbabwe"; + + + $country[0]['value'] = "Afghanistan"; + $country[1]['value'] = "Albania"; + $country[2]['value'] = "Algeria"; + $country[3]['value'] = "Andorra"; + $country[4]['value'] = "Antigua and Barbuda"; + $country[5]['value'] = "Argentina"; + $country[6]['value'] = "Armenia"; + $country[7]['value'] = "Australia"; + $country[8]['value'] = "Austria"; + $country[9]['value'] = "Azerbaijan"; + $country[10]['value'] = "Bahamas"; + $country[11]['value'] = "Bahrain"; + $country[12]['value'] = "Bangladesh"; + $country[13]['value'] = "Barbados"; + $country[14]['value'] = "Belarus"; + $country[15]['value'] = "Belgium"; + $country[16]['value'] = "Belize"; + $country[17]['value'] = "Benin"; + $country[18]['value'] = "Bhutan"; + $country[19]['value'] = "Bolivia"; + $country[20]['value'] = "Bosnia and Herzegovina"; + $country[21]['value'] = "Botswana"; + $country[22]['value'] = "Brazil"; + $country[23]['value'] = "Brunei"; + $country[24]['value'] = "Bulgaria"; + $country[25]['value'] = "Burkina Faso"; + $country[26]['value'] = "Burundi"; + $country[27]['value'] = "Cambodia"; + $country[28]['value'] = "Cameroon"; + $country[29]['value'] = "Canada"; + $country[30]['value'] = "Cape Verde"; + $country[31]['value'] = "Central African Republic"; + $country[32]['value'] = "Chad"; + $country[33]['value'] = "Chile"; + $country[34]['value'] = "China"; + $country[35]['value'] = "Colombia"; + $country[36]['value'] = "Comoros"; + $country[37]['value'] = "Congo"; + $country[38]['value'] = "Costa Rica"; + $country[39]['value'] = "Côte d'Ivoire"; + $country[40]['value'] = "Croatia"; + $country[41]['value'] = "Cuba"; + $country[42]['value'] = "Cyprus"; + $country[43]['value'] = "Czech Republic"; + $country[44]['value'] = "Denmark"; + $country[45]['value'] = "Djibouti"; + $country[46]['value'] = "Dominica"; + $country[47]['value'] = "Dominican Republic"; + $country[48]['value'] = "East Timor"; + $country[49]['value'] = "Ecuador"; + $country[50]['value'] = "Egypt"; + $country[51]['value'] = "El Salvador"; + $country[52]['value'] = "Equatorial Guinea"; + $country[53]['value'] = "Eritrea"; + $country[54]['value'] = "Estonia"; + $country[55]['value'] = "Ethiopia"; + $country[56]['value'] = "Fiji"; + $country[57]['value'] = "Finland"; + $country[58]['value'] = "France"; + $country[59]['value'] = "Gabon"; + $country[60]['value'] = "Gambia"; + $country[61]['value'] = "Georgia"; + $country[62]['value'] = "Germany"; + $country[63]['value'] = "Ghana"; + $country[64]['value'] = "Greece"; + $country[65]['value'] = "Grenada"; + $country[66]['value'] = "Guatemala"; + $country[67]['value'] = "Guinea"; + $country[68]['value'] = "Guinea-Bissau"; + $country[69]['value'] = "Guyana"; + $country[70]['value'] = "Haiti"; + $country[71]['value'] = "Honduras"; + $country[72]['value'] = "Hong Kong"; + $country[73]['value'] = "Hungary"; + $country[74]['value'] = "Iceland"; + $country[75]['value'] = "India"; + $country[76]['value'] = "Indonesia"; + $country[77]['value'] = "Iran"; + $country[78]['value'] = "Iraq"; + $country[79]['value'] = "Ireland"; + $country[80]['value'] = "Israel"; + $country[81]['value'] = "Italy"; + $country[82]['value'] = "Jamaica"; + $country[83]['value'] = "Japan"; + $country[84]['value'] = "Jordan"; + $country[85]['value'] = "Kazakhstan"; + $country[86]['value'] = "Kenya"; + $country[87]['value'] = "Kiribati"; + $country[88]['value'] = "North Korea"; + $country[89]['value'] = "South Korea"; + $country[90]['value'] = "Kuwait"; + $country[91]['value'] = "Kyrgyzstan"; + $country[92]['value'] = "Laos"; + $country[93]['value'] = "Latvia"; + $country[94]['value'] = "Lebanon"; + $country[95]['value'] = "Lesotho"; + $country[96]['value'] = "Liberia"; + $country[97]['value'] = "Libya"; + $country[98]['value'] = "Liechtenstein"; + $country[99]['value'] = "Lithuania"; + $country[100]['value'] = "Luxembourg"; + $country[101]['value'] = "Macedonia"; + $country[102]['value'] = "Madagascar"; + $country[103]['value'] = "Malawi"; + $country[104]['value'] = "Malaysia"; + $country[105]['value'] = "Maldives"; + $country[106]['value'] = "Mali"; + $country[107]['value'] = "Malta"; + $country[108]['value'] = "Marshall Islands"; + $country[109]['value'] = "Mauritania"; + $country[110]['value'] = "Mauritius"; + $country[111]['value'] = "Mexico"; + $country[112]['value'] = "Micronesia"; + $country[113]['value'] = "Moldova"; + $country[114]['value'] = "Monaco"; + $country[115]['value'] = "Mongolia"; + $country[116]['value'] = "Montenegro"; + $country[117]['value'] = "Morocco"; + $country[118]['value'] = "Mozambique"; + $country[119]['value'] = "Myanmar"; + $country[120]['value'] = "Namibia"; + $country[121]['value'] = "Nauru"; + $country[122]['value'] = "Nepal"; + $country[123]['value'] = "Netherlands"; + $country[124]['value'] = "New Zealand"; + $country[125]['value'] = "Nicaragua"; + $country[126]['value'] = "Niger"; + $country[127]['value'] = "Nigeria"; + $country[128]['value'] = "Norway"; + $country[129]['value'] = "Oman"; + $country[130]['value'] = "Pakistan"; + $country[131]['value'] = "Palau"; + $country[132]['value'] = "Panama"; + $country[133]['value'] = "Papua New Guinea"; + $country[134]['value'] = "Paraguay"; + $country[135]['value'] = "Peru"; + $country[136]['value'] = "Philippines"; + $country[137]['value'] = "Poland"; + $country[138]['value'] = "Portugal"; + $country[139]['value'] = "Puerto Rico"; + $country[140]['value'] = "Qatar"; + $country[141]['value'] = "Romania"; + $country[142]['value'] = "Russia"; + $country[143]['value'] = "Rwanda"; + $country[144]['value'] = "Saint Kitts and Nevis"; + $country[145]['value'] = "Saint Lucia"; + $country[146]['value'] = "Saint Vincent and the Grenadines"; + $country[147]['value'] = "Samoa"; + $country[148]['value'] = "San Marino"; + $country[149]['value'] = "Sao Tome and Principe"; + $country[150]['value'] = "Saudi Arabia"; + $country[151]['value'] = "Senegal"; + $country[152]['value'] = "Serbia and Montenegro"; + $country[153]['value'] = "Seychelles"; + $country[154]['value'] = "Sierra Leone"; + $country[155]['value'] = "Singapore"; + $country[156]['value'] = "Slovakia"; + $country[157]['value'] = "Slovenia"; + $country[158]['value'] = "Solomon Islands"; + $country[159]['value'] = "Somalia"; + $country[160]['value'] = "South Africa"; + $country[161]['value'] = "Spain"; + $country[162]['value'] = "Sri Lanka"; + $country[163]['value'] = "Sudan"; + $country[164]['value'] = "Suriname"; + $country[165]['value'] = "Swaziland"; + $country[166]['value'] = "Sweden"; + $country[167]['value'] = "Switzerland"; + $country[168]['value'] = "Syria"; + $country[169]['value'] = "Taiwan"; + $country[170]['value'] = "Tajikistan"; + $country[171]['value'] = "Tanzania"; + $country[172]['value'] = "Thailand"; + $country[173]['value'] = "Togo"; + $country[174]['value'] = "Tonga"; + $country[175]['value'] = "Trinidad and Tobago"; + $country[176]['value'] = "Tunisia"; + $country[177]['value'] = "Turkey"; + $country[178]['value'] = "Turkmenistan"; + $country[179]['value'] = "Tuvalu"; + $country[180]['value'] = "Uganda"; + $country[181]['value'] = "Ukraine"; + $country[182]['value'] = "United Arab Emirates"; + $country[183]['value'] = "United Kingdom"; + $country[184]['value'] = "United States"; + $country[185]['value'] = "Uruguay"; + $country[186]['value'] = "Uzbekistan"; + $country[187]['value'] = "Vanuatu"; + $country[188]['value'] = "Vatican City"; + $country[189]['value'] = "Venezuela"; + $country[190]['value'] = "Vietnam"; + $country[191]['value'] = "Yemen"; + $country[192]['value'] = "Zambia"; + $country[193]['value'] = "Zimbabwe"; + + //check for error + $error_class = ''; + $error_message = ''; + $span_required = ''; + $guidelines = ''; + global $lang; + + if(!empty($element->is_error)){ + $error_class = 'class="error"'; + $error_message = "

    {$element->error_message}

    "; + } + + //check for required + if($element->is_required){ + $span_required = "id}\" class=\"required\">*"; + } + + //check for guidelines + if(!empty($element->guidelines)){ + $guidelines = "

    id}\">{$element->guidelines}

    "; + } + + + //create country markup, if no default value, provide a blank option + if(empty($element->default_value)){ + $country_markup = ''."\n"; + }else{ + $country_markup = ''; + } + + foreach ($country as $data){ + if($data['value'] == $element->default_value){ + $selected = 'selected="selected"'; + }else{ + $selected = ''; + } + + //check for populated value, use it instead of default value + if(!empty($element->populated_value['element_'.$element->id.'_6']['default_value'])){ + $selected = ''; + if($element->populated_value['element_'.$element->id.'_6']['default_value'] == $data['value']){ + $selected = 'selected="selected"'; + } + } + + $country_markup .= "\n"; + } + +$element_markup = << + + +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    + + +
     {$guidelines} {$error_message} + +EOT; + + + return $element_markup; + } + + + //Captcha + function display_captcha($element){ + + if(!empty($element->error_message)){ + $error_code = $element->error_message; + }else{ + $error_code = ''; + } + + //check for error + $error_class = ''; + $error_message = ''; + $span_required = ''; + $guidelines = ''; + global $lang; + + if(!empty($element->is_error)){ + + if($element->error_message == 'el-required'){ + $element->error_message = $lang['captcha_required']; + $error_code = ''; + }elseif ($element->error_message == 'incorrect-captcha-sol'){ + $element->error_message = $lang['captcha_mismatch']; + }else{ + $element->error_message = "{$lang['captcha_error']} ({$element->error_message})"; + } + + $error_class = 'class="error"'; + $error_message = "

    {$element->error_message}

    "; + } + + if(!empty($_SERVER['HTTPS'])){ + $use_ssl = true; + }else{ + $use_ssl = false; + } + + + if(USE_INTERNAL_CAPTCHA === true){ //use the internal captcha if enabled + + $machform_path = ''; + if(!empty($element->machform_path)){ + $machform_path = $element->machform_path; + } + + $timestamp = time(); //use this as paramater for captcha.php, to prevent caching + + $element->title = $lang['captcha_title']; +$captcha_html = <<
    +
    +EOT; + + }else{ //otherwise use the reCAPTCHA + $captcha_html = recaptcha_get_html(RECAPTCHA_PUBLIC_KEY, $error_code,$use_ssl); + + if($captcha_html === false){ + $domain = str_replace('www.','',$_SERVER['SERVER_NAME']); + $captcha_html = "Error! You have enabled CAPTCHA but no API key available.

    To use CAPTCHA you must get an API key from http://recaptcha.net/api/getkey

    After getting the API key, save them into your config.php file."; + $error_class = 'class="error"'; + } + } + + + if(function_exists("form{$element->form_id}_hook_pre_captcha")){ + $custom_precaptcha = call_user_func("form{$element->form_id}_hook_pre_captcha"); + } + +$element_markup = << {$custom_precaptcha} + +
    + {$captcha_html} +
    + {$guidelines} {$error_message} + +EOT; + + return $element_markup; + } + + + //Main function to display a form + //There are few mode when displaying a form + //1. New blank form (form populated with default values) + //2. New form with error (displayed when 1 submitted and having error, form populated with user inputs) + //3. Edit form (form populated with data from db) + //4. Edit form with error (displayed when 3 submiteed and having error) + function display_form($form_id,$populated_values=array(),$error_elements=array(),$custom_error='',$edit_id=0,$embed=false){ + + global $lang; + + //if there is custom error, don't show other errors + if(!empty($custom_error)){ + $error_elements = array(); + } + + //get form properties data + $query = "select + form_name, + form_description, + form_redirect, + form_success_message, + form_password, + form_unique_ip, + form_frame_height, + form_has_css, + form_active, + form_captcha, + form_review + from + ap_forms + where + form_id='$form_id'"; + $result = do_query($query); + $row = do_fetch_result($result); + + $form = new \stdClass(); + + $form->id = $form_id; + $form->name = $row['form_name']; + $form->description = $row['form_description']; + $form->redirect = $row['form_redirect']; + $form->success_message = $row['form_success_message']; + $form->password = $row['form_password']; + $form->frame_height = $row['form_frame_height']; + $form->unique_ip = $row['form_unique_ip']; + $form->has_css = $row['form_has_css']; + $form->active = $row['form_active']; + $form->captcha = $row['form_captcha']; + $form->review = $row['form_review']; + + if(empty($error_elements)){ + $form->is_error = 0; + }else{ + $form->is_error = 1; + } + + //if this form has review enabled and user are having $_SESSION['review_id'], then populate the form with that values + if(!empty($form->review) && !empty($_SESSION['review_id']) && empty($populated_values)){ + $populated_values = get_entry_values($form_id,$_SESSION['review_id'],true); + } + + //get elements data + //get element options first and store it into array + $query = "select + element_id, + option_id, + `position`, + `option`, + option_is_default + from + ap_element_options + where + form_id='$form_id' and live=1 + order by + element_id asc,`position` asc"; + $result = do_query($query); + while($row = do_fetch_result($result)){ + $element_id = $row['element_id']; + $option_id = $row['option_id']; + $options_lookup[$element_id][$option_id]['position'] = $row['position']; + $options_lookup[$element_id][$option_id]['option'] = $row['option']; + $options_lookup[$element_id][$option_id]['option_is_default'] = $row['option_is_default']; + } + + + //get elements data + $element = array(); + $query = "select + element_id, + element_title, + element_guidelines, + element_size, + element_is_required, + element_is_unique, + element_is_private, + element_type, + element_position, + element_default_value, + element_constraint + from + ap_form_elements + where + form_id='$form_id' + order by + element_position asc"; + $result = do_query($query); + + $j=0; + $has_calendar = false; //assume the form doesn't have calendar, so it won't load calendar.js + while($row = do_fetch_result($result)){ + $element_id = $row['element_id']; + + //lookup element options first + if(!empty($options_lookup[$element_id])){ + $element_options = array(); + $i=0; + foreach ($options_lookup[$element_id] as $option_id=>$data){ + $element_options[$i] = new \stdClass(); + $element_options[$i]->id = $option_id; + $element_options[$i]->option = $data['option']; + $element_options[$i]->is_default = $data['option_is_default']; + $element_options[$i]->is_db_live = 1; + $i++; + } + } + + + //populate elements + $element[$j] = new \stdClass(); + $element[$j]->title = nl2br($row['element_title']); + $element[$j]->guidelines = $row['element_guidelines']; + $element[$j]->size = $row['element_size']; + $element[$j]->is_required = $row['element_is_required']; + $element[$j]->is_unique = $row['element_is_unique']; + $element[$j]->is_private = $row['element_is_private']; + $element[$j]->type = $row['element_type']; + $element[$j]->position = $row['element_position']; + $element[$j]->id = $row['element_id']; + $element[$j]->is_db_live = 1; + + //this data came from db or form submit + //being used to display edit form or redisplay form with errors and previous inputs + //this should be optimized in the future, only pass necessary data, not the whole array + $element[$j]->populated_value = $populated_values; + + //if there is file upload type, set form enctype to multipart + if($row['element_type'] == 'file'){ + $form_enc_type = 'enctype="multipart/form-data"'; + } + + if(!empty($error_elements[$element[$j]->id])){ + $element[$j]->is_error = 1; + $element[$j]->error_message = $error_elements[$element[$j]->id]; + } + + + $element[$j]->default_value = htmlspecialchars($row['element_default_value']); + + + $element[$j]->constraint = $row['element_constraint']; + if(!empty($element_options)){ + $element[$j]->options = $element_options; + }else{ + $element[$j]->options = ''; + } + + + //check for calendar type + if($row['element_type'] == 'date' || $row['element_type'] == 'europe_date'){ + $has_calendar = true; + } + + $j++; + } + + + //add captcha if enable + if(!empty($form->captcha) && (empty($edit_id))){ + $element[$j] = new \stdClass(); + $element[$j]->type = 'captcha'; + $element[$j]->form_id = $form_id; + $element[$j]->is_private = 0; + + if(!empty($error_elements['element_captcha'])){ + $element[$j]->is_error = 1; + $element[$j]->error_message = $error_elements['element_captcha']; + } + } + + //generate html markup for each element + $all_element_markup = ''; + foreach ($element as $element_data){ + if($element_data->is_private && empty($_SESSION['logged_in'])){ //don't show private element + continue; + } + $all_element_markup .= call_user_func(__NAMESPACE__ .'\display_'.$element_data->type,$element_data); + } + + if(!empty($custom_error)){ + $form->error_message =<< +
  • + {$custom_error}

    +

  • + +EOT; + /*
  • +

    {$custom_error}

    +
  • */ + }elseif(!empty($error_elements)){ + $form->error_message =<< +
  • + {$lang['error_title']}

    +

    {$lang['error_desc']}

    +
  • + +EOT; + /*
  • +

    {$lang['error_title']}

    +

    {$lang['error_desc']}

    +
  • */ + + } + + + //display edit_id if there is any + if(!empty($edit_id)){ + $edit_markup = "\n"; + }else{ + $edit_markup = ''; + } + + if(empty($form->review)){ + $button_text = $lang['submit_button']; + }else{ + $button_text = $lang['continue_button']; + } + + //markup for submit button + $button_markup =<< +
      +
    • + + {$edit_markup} + + +
    +EOT; + + /*
  • + + {$edit_markup} + + +
  • */ + + //check for specific form css, if any, use it instead + if($form->has_css){ + $css_dir = "mobile/apple/css/"; + } + + if(!empty($form->password) && empty($_SESSION['user_authenticated'])){ //if form require password and password hasn't set yet + $show_password_form = true; + + }elseif (!empty($form->password) && !empty($_SESSION['user_authenticated']) && $_SESSION['user_authenticated'] != $form_id){ //if user authenticated but not for this form + $show_password_form = true; + + }else{ //user authenticated for this form, or no password required + $show_password_form = false; + } + + + if(empty($form->active)){ //if form is not active, don't show the fields + $form_desc_div =''; + $all_element_markup = ''; + $button_markup = ''; + $ul_class = 'class="password"'; + $custom_element =<< +

    {$lang['form_inactive']}

    + +EOT; + }elseif($show_password_form){ //don't show form description if this page is password protected and user not authenticated + $form_desc_div =''; + $all_element_markup = ''; + $custom_element =<<{$lang['form_pass_desc']} +
      +
    • + {$lang['form_pass_word']} +
    • + +
    +

    {$lang['form_pass_title']}

    +EOT; + /*
  • +

    {$lang['form_pass_title']}

    +
    + + +
    +
  • */ + + $ul_class = 'class="password"'; + }else{ + if(!empty($form->name) || !empty($form->description)){ + $form->description = nl2br($form->description); + $form_desc_div =<< +
  • + {$form->name} +

    {$form->description}

    +
  • + +EOT; + } + } + + if($embed){ + $embed_class = 'class="embed"'; + } + + if($has_calendar){ + $calendar_js = ''; + }else{ + $calendar_js = ''; + } + + + //If you would like to remove the "Powered by MachForm" link, please contact us at customer.service@appnitro.com before doing so + $form_markup = << + + + + + + + + + +{$form->name} + + + +
    +
    {$form->name}
    +
    +
    + {$form_desc_div} + +
    + {$form->error_message} + {$all_element_markup} + {$custom_element} + {$button_markup} +
    +
    + + + +EOT; + return $form_markup; + + } + + //this function is similar as display_form, but designed to display form without IFRAME + function display_integrated_form($form_id,$populated_values=array(),$error_elements=array(),$custom_error='',$edit_id=0,$machform_path){ + + global $lang; + + //if there is custom error, don't show other errors + if(!empty($custom_error)){ + $error_elements = array(); + } + + //get form properties data + $query = "select + form_name, + form_description, + form_redirect, + form_success_message, + form_password, + form_unique_ip, + form_frame_height, + form_has_css, + form_active, + form_captcha, + form_review + from + ap_forms + where + form_id='$form_id'"; + $result = do_query($query); + $row = do_fetch_result($result); + + $form = new \stdClass(); + + $form->id = $form_id; + $form->name = $row['form_name']; + $form->description = $row['form_description']; + $form->redirect = $row['form_redirect']; + $form->success_message = $row['form_success_message']; + $form->password = $row['form_password']; + $form->frame_height = $row['form_frame_height']; + $form->unique_ip = $row['form_unique_ip']; + $form->has_css = $row['form_has_css']; + $form->active = $row['form_active']; + $form->captcha = $row['form_captcha']; + $form->review = $row['form_review']; + + if(empty($error_elements)){ + $form->is_error = 0; + }else{ + $form->is_error = 1; + } + + //if this form has review enabled and user are having $_SESSION['review_id'], then populate the form with that values + if(!empty($form->review) && !empty($_SESSION['review_id']) && empty($populated_values)){ + $param['machform_path'] = $machform_path; + $populated_values = get_entry_values($form_id,$_SESSION['review_id'],true,$param); + } + + //get elements data + //get element options first and store it into array + $query = "select + element_id, + option_id, + `position`, + `option`, + option_is_default + from + ap_element_options + where + form_id='$form_id' and live=1 + order by + element_id asc,`position` asc"; + $result = do_query($query); + while($row = do_fetch_result($result)){ + $element_id = $row['element_id']; + $option_id = $row['option_id']; + $options_lookup[$element_id][$option_id]['position'] = $row['position']; + $options_lookup[$element_id][$option_id]['option'] = $row['option']; + $options_lookup[$element_id][$option_id]['option_is_default'] = $row['option_is_default']; + } + + + //get elements data + $element = array(); + $query = "select + element_id, + element_title, + element_guidelines, + element_size, + element_is_required, + element_is_unique, + element_is_private, + element_type, + element_position, + element_default_value, + element_constraint + from + ap_form_elements + where + form_id='$form_id' + order by + element_position asc"; + $result = do_query($query); + + $j=0; + $has_calendar = false; + while($row = do_fetch_result($result)){ + $element_id = $row['element_id']; + + //lookup element options first + if(!empty($options_lookup[$element_id])){ + $element_options = array(); + $i=0; + foreach ($options_lookup[$element_id] as $option_id=>$data){ + $element_options[$i] = new \stdClass(); + $element_options[$i]->id = $option_id; + $element_options[$i]->option = $data['option']; + $element_options[$i]->is_default = $data['option_is_default']; + $element_options[$i]->is_db_live = 1; + $i++; + } + } + + + //populate elements + $element[$j] = new \stdClass(); + $element[$j]->title = nl2br($row['element_title']); + + if(empty($edit_id)){ + $element[$j]->guidelines = $row['element_guidelines']; + }else{ + $element[$j]->guidelines = ''; + } + + $element[$j]->size = $row['element_size']; + $element[$j]->is_required = $row['element_is_required']; + $element[$j]->is_unique = $row['element_is_unique']; + $element[$j]->is_private = $row['element_is_private']; + $element[$j]->type = $row['element_type']; + $element[$j]->position = $row['element_position']; + $element[$j]->id = $row['element_id']; + $element[$j]->is_db_live = 1; + $element[$j]->machform_path = $machform_path; + + //this data came from db or form submit + //being used to display edit form or redisplay form with errors and previous inputs + //this should be optimized in the future, only pass necessary data, not the whole array + $element[$j]->populated_value = $populated_values; + + //if there is file upload type, set form enctype to multipart + if($row['element_type'] == 'file'){ + $form_enc_type = 'enctype="multipart/form-data"'; + } + + if(!empty($error_elements[$element[$j]->id])){ + $element[$j]->is_error = 1; + $element[$j]->error_message = $error_elements[$element[$j]->id]; + } + + + $element[$j]->default_value = htmlspecialchars($row['element_default_value']); + + + $element[$j]->constraint = $row['element_constraint']; + if(!empty($element_options)){ + $element[$j]->options = $element_options; + }else{ + $element[$j]->options = ''; + } + + //check for calendar type + if($row['element_type'] == 'date' || $row['element_type'] == 'europe_date'){ + $has_calendar = true; + } + + $j++; + } + + + //add captcha if enable + if(!empty($form->captcha) && (empty($edit_id))){ + $element[$j] = new \stdClass(); + $element[$j]->type = 'captcha'; + $element[$j]->form_id = $form_id; + $element[$j]->machform_path = $machform_path; + + if(!empty($error_elements['element_captcha'])){ + $element[$j]->is_error = 1; + $element[$j]->error_message = $error_elements['element_captcha']; + } + } + + //generate html markup for each element + $all_element_markup = ''; + foreach ($element as $element_data){ + if($element_data->is_private && empty($_SESSION['logged_in'])){ //don't show private element + continue; + } + $all_element_markup .= call_user_func('display_'.$element_data->type,$element_data); + } + + if(!empty($custom_error)){ + $form->error_message =<< +

    {$custom_error}

    + +EOT; + }elseif(!empty($error_elements)){ + $form->error_message =<< +

    {$lang['error_title']}

    +

    {$lang['error_desc']}

    + +EOT; + } + + if(!empty($form->password) && empty($_SESSION['user_authenticated'])){ //if form require password and password hasn't set yet + $show_password_form = true; + + }elseif (!empty($form->password) && !empty($_SESSION['user_authenticated']) && $_SESSION['user_authenticated'] != $form_id){ //if user authenticated but not for this form + $show_password_form = true; + + }else{ //user authenticated for this form, or no password required + $show_password_form = false; + } + + //display edit_id if there is any + if(!empty($edit_id)){ + $edit_markup = "\n"; + $submit_button = ''; + }else{ + $edit_markup = ''; + + if(!empty($form->review) && !$show_password_form){ + $submit_button = ''."\n".''; + }else{ + $submit_button = ''."\n".''; + } + } + + + //markup for submit button + $button_markup =<< + + {$edit_markup} + {$submit_button} + +EOT; + + //check for specific form css, if any, use it instead + if($form->has_css){ + $css_dir = DATA_DIR."/form_{$form_id}/css/"; + } + + + if(empty($form->active)){ //if form is not active, don't show the fields + $form_desc_div =''; + $all_element_markup = ''; + $button_markup = ''; + $ul_class = 'class="password"'; + $custom_element =<< +

    {$lang['form_inactive']}

    + +EOT; + }elseif($show_password_form){ //don't show form description if this page is password protected and user not authenticated + $form_desc_div =''; + $all_element_markup = ''; + $custom_element =<< +

    {$lang['form_pass_title']}

    +
    + + +
    + +EOT; + $ul_class = 'class="password"'; + }else{ + if(!empty($form->name) || !empty($form->description)){ + $form->description = nl2br($form->description); + $form_desc_div =<< +

    {$form->name}

    +

    {$form->description}

    +
    +EOT; + } + } + + + $embed_class = 'class="integrated"'; + + if(empty($edit_id)){ + $css_markup = ""; + }else{ + $css_markup = ""; + } + + if($has_calendar){ + $calendar_js = ""; + }else{ + $calendar_js = ''; + } + + + //If you would like to remove the "Powered by MachForm" link, please contact us at customer.service@appnitro.com before doing so + $form_markup =<< +{$calendar_js} + +
    + +
    + +

    {$form->name}

    +
    + {$form_desc_div} +
      + {$form->error_message} + {$all_element_markup} + {$custom_element} + {$button_markup} +
    +
    + +
    +
    +EOT; + return $form_markup; + + } + + function display_success($form_id,$embed=false){ + //get form properties data + $query = "select + form_success_message, + form_has_css, + form_name + from + ap_forms + where + form_id='$form_id'"; + + $result = do_query($query); + $row = do_fetch_result($result); + + $form = new \stdClass(); + + $form->id = $form_id; + $form->success_message = nl2br($row['form_success_message']); + $form->has_css = $row['form_has_css']; + $form->name = $row['form_name']; + + + //check for specific form css, if any, use it instead + if($form->has_css){ + $css_dir = "mobile/apple/css/"; + } + + if($embed){ + $embed_class = 'class="embed"'; + } + + $form_markup = << + + + + + + + + + +{$form->name} + + + +
    +
    {$form->name}
    +
    +
    +
      +
    • +

      {$form->success_message}

      +
    • +
    +
    + + + +EOT; + +/*$form_markup = << + + + +{$form->name} + + + + + +
    + +

    Appnitro MachForm

    + +
    +

    {$form->success_message}

    +
    + +
    + + + +EOT;*/ + + return $form_markup; + } + + //this function is similar as display_success, but designed to display success page without IFRAME + function display_integrated_success($form_id,$machform_path){ + //get form properties data + $query = "select + form_success_message, + form_has_css + from + ap_forms + where + form_id='$form_id'"; + + $result = do_query($query); + $row = do_fetch_result($result); + + $form = new \stdClass(); + + $form->id = $form_id; + $form->success_message = nl2br($row['form_success_message']); + $form->has_css = $row['form_has_css']; + + + //check for specific form css, if any, use it instead + if($form->has_css){ + $css_dir = DATA_DIR."/form_{$form_id}/css/"; + } + + + $form_markup = << +
    +
    +

    Appnitro MachForm

    + +
    +

    {$form->success_message}

    +
    + +
    +
    +EOT; + return $form_markup; + } + + //display form confirmation page + function display_form_review($form_id,$record_id,$embed=false){ + global $lang; + + //get form properties data + $query = "select + form_has_css, + form_redirect + from + ap_forms + where + form_id='$form_id'"; + + $result = do_query($query); + $row = do_fetch_result($result); + + + $form_has_css = $row['form_has_css']; + $form_redirect = $row['form_redirect']; + + //prepare entry data for previewing + $param['strip_download_link'] = true; + $param['review_mode'] = true; + $param['show_attach_image'] = true; + $entry_details = get_entry_details($form_id,$record_id,$param); + + $entry_data = ''."\n"; + + $toggle = false; + foreach ($entry_details as $data){ + if($toggle){ + $toggle = false; + $row_style = 'class="alt"'; + }else{ + $toggle = true; + $row_style = ''; + } + + $entry_data .= "\n"; + $entry_data .= "\n"; + $entry_data .= "\n"; + $entry_data .= "\n"; + } + + $entry_data .= '
    {$data['label']}".nl2br($data['value'])."
    '; + + //check for specific form css, if any, use it instead + if($form_has_css){ + $css_dir = DATA_DIR."/form_{$form_id}/css/"; + } + + if($embed){ + $embed_class = 'class="embed"'; + } + + $form_markup = << + + + +{$form_name} + + + + + + + + +
    + +

    Appnitro MachForm

    +
    +
    +

    {$lang['review_title']}

    +

    {$lang['review_message']}

    +
    + {$entry_data} +
      +
    • + + + +
    • +
    +
    + +
    + + + +EOT; + return $form_markup; + } + + //display form confirmation page for integrated embed code + function display_integrated_form_review($form_id,$record_id,$machform_path){ + global $lang; + + //get form properties data + $query = "select + form_has_css, + form_redirect + from + ap_forms + where + form_id='$form_id'"; + + $result = do_query($query); + $row = do_fetch_result($result); + + + $form_has_css = $row['form_has_css']; + $form_redirect = $row['form_redirect']; + + //prepare entry data for previewing + $param['strip_download_link'] = true; + $param['review_mode'] = true; + $param['show_attach_image'] = true; + $param['machform_path'] = $machform_path; + $entry_details = get_entry_details($form_id,$record_id,$param); + + $entry_data = ''."\n"; + + $toggle = false; + foreach ($entry_details as $data){ + if($toggle){ + $toggle = false; + $row_style = 'class="alt"'; + }else{ + $toggle = true; + $row_style = ''; + } + + $entry_data .= "\n"; + $entry_data .= "\n"; + $entry_data .= "\n"; + $entry_data .= "\n"; + } + + $entry_data .= '
    {$data['label']}".nl2br($data['value'])."
    '; + + //check for specific form css, if any, use it instead + if($form_has_css){ + $css_dir = DATA_DIR."/form_{$form_id}/css/"; + } + + if($embed){ + $embed_class = 'class="embed"'; + } + + $form_action = str_replace(array("&show_review=1","?show_review=1"),"",$_SERVER['REQUEST_URI']); + + $form_markup = << + + + + +
    +
    +

    Appnitro MachForm

    +
    +
    +

    {$lang['review_title']}

    +

    {$lang['review_message']}

    +
    + {$entry_data} +
      +
    • + + + +
    • +
    +
    + +
    +
    +EOT; + return $form_markup; + } +?> \ No newline at end of file diff --git a/includes/standard-view-functions.php b/includes/standard-view-functions.php new file mode 100644 index 0000000..c544826 --- /dev/null +++ b/includes/standard-view-functions.php @@ -0,0 +1,2502 @@ +is_error)){ + $error_class = 'class="error"'; + $error_message = "

    {$element->error_message}

    "; + } + + //check for required + if($element->is_required){ + $span_required = "id}\" class=\"required\">*"; + } + + //check for guidelines + if(!empty($element->guidelines)){ + $guidelines = "

    id}\">{$element->guidelines}

    "; + } + + //check for populated value, if exist, use it instead default_value + if(isset($element->populated_value['element_'.$element->id]['default_value'])){ + $element->default_value = $element->populated_value['element_'.$element->id]['default_value']; + } + + +$element_markup = << + +
    + +
    {$guidelines} {$error_message} + +EOT; + + return $element_markup; + } + + + + //Paragraph Text + function display_textarea($element){ + //check for error + $error_class = ''; + $error_message = ''; + $span_required = ''; + $guidelines = ''; + + if(!empty($element->is_error)){ + $error_class = 'class="error"'; + $error_message = "

    {$element->error_message}

    "; + } + + //check for required + if($element->is_required){ + $span_required = "id}\" class=\"required\">*"; + } + + //check for guidelines + if(!empty($element->guidelines)){ + $guidelines = "

    id}\">{$element->guidelines}

    "; + } + + //check for populated value, if exist, use it instead default_value + if(isset($element->populated_value['element_'.$element->id]['default_value'])){ + $element->default_value = $element->populated_value['element_'.$element->id]['default_value']; + } + +$element_markup = << + +
    + +
    {$guidelines} {$error_message} + +EOT; + + return $element_markup; + } + + + //File Upload + function display_file($element){ + //check for error + $error_class = ''; + $error_message = ''; + $span_required = ''; + $guidelines = ''; + + if(!empty($element->is_error)){ + $error_class = 'class="error"'; + $error_message = "

    {$element->error_message}

    "; + } + + //check for required + if($element->is_required){ + $span_required = "id}\" class=\"required\">*"; + } + + //check for guidelines + if(!empty($element->guidelines)){ + $guidelines = "

    id}\">{$element->guidelines}

    "; + } + + //check for populated value (this is being used for edit_entry.php only) + if(!empty($element->populated_value)){ + $file_option = $element->populated_value['element_'.$element->id]['default_value']; //this should be contain html markup to download or delete current file + } + +$element_markup = << + +
    + +
    {$file_option} {$guidelines} {$error_message} + +EOT; + + return $element_markup; + } + + //Website + function display_url($element){ + //check for error + $error_class = ''; + $error_message = ''; + $span_required = ''; + $guidelines = ''; + + if(!empty($element->is_error)){ + $error_class = 'class="error"'; + $error_message = "

    {$element->error_message}

    "; + } + + //check for required + if($element->is_required){ + $span_required = "id}\" class=\"required\">*"; + } + + //check for guidelines + if(!empty($element->guidelines)){ + $guidelines = "

    id}\">{$element->guidelines}

    "; + } + + //check for default value + if(empty($element->default_value)){ + $element->default_value = 'http://'; + } + + //check for populated value, if exist, use it instead default_value + if(!empty($element->populated_value['element_'.$element->id]['default_value'])){ + $element->default_value = $element->populated_value['element_'.$element->id]['default_value']; + } + +$element_markup = << + +
    + +
    {$guidelines} {$error_message} + +EOT; + + return $element_markup; + } + + //Email + function display_email($element){ + //check for error + $error_class = ''; + $error_message = ''; + $span_required = ''; + $guidelines = ''; + + if(!empty($element->is_error)){ + $error_class = 'class="error"'; + $error_message = "

    {$element->error_message}

    "; + } + + //check for required + if($element->is_required){ + $span_required = "id}\" class=\"required\">*"; + } + + //check for guidelines + if(!empty($element->guidelines)){ + $guidelines = "

    id}\">{$element->guidelines}

    "; + } + + //check for populated value, if exist, use it instead default_value + if(!empty($element->populated_value['element_'.$element->id]['default_value'])){ + $element->default_value = $element->populated_value['element_'.$element->id]['default_value']; + } + +$element_markup = << + +
    + +
    {$guidelines} {$error_message} + +EOT; + + return $element_markup; + } + + + //Phone - Extended + function display_phone($element){ + //check for error + $error_class = ''; + $error_message = ''; + $span_required = ''; + $guidelines = ''; + + if(!empty($element->is_error)){ + $error_class = 'class="error"'; + $error_message = "

    {$element->error_message}

    "; + } + + //check for required + if($element->is_required){ + $span_required = "id}\" class=\"required\">*"; + } + + //check for guidelines + if(!empty($element->guidelines)){ + $guidelines = "

    id}\">{$element->guidelines}

    "; + } + + //check default value + if(!empty($element->default_value)){ + //split into (xxx) xxx - xxxx + $default_value_1 = substr($element->default_value,0,3); + $default_value_2 = substr($element->default_value,3,3); + $default_value_3 = substr($element->default_value,6,4); + } + + if(!empty($element->populated_value['element_'.$element->id.'_1']['default_value']) || + !empty($element->populated_value['element_'.$element->id.'_2']['default_value']) || + !empty($element->populated_value['element_'.$element->id.'_3']['default_value']) + ){ + $default_value_1 = ''; + $default_value_2 = ''; + $default_value_3 = ''; + $default_value_1 = $element->populated_value['element_'.$element->id.'_1']['default_value']; + $default_value_2 = $element->populated_value['element_'.$element->id.'_2']['default_value']; + $default_value_3 = $element->populated_value['element_'.$element->id.'_3']['default_value']; + } + + +$element_markup = << + + + - + + + + - + + + + + + + {$guidelines} {$error_message} + +EOT; + + + return $element_markup; + } + + //Phone - Simple + function display_simple_phone($element){ + //check for error + $error_class = ''; + $error_message = ''; + $span_required = ''; + $guidelines = ''; + + if(!empty($element->is_error)){ + $error_class = 'class="error"'; + $error_message = "

    {$element->error_message}

    "; + } + + //check for required + if($element->is_required){ + $span_required = "id}\" class=\"required\">*"; + } + + //check for guidelines + if(!empty($element->guidelines)){ + $guidelines = "

    id}\">{$element->guidelines}

    "; + } + + //check for populated value + if(!empty($element->populated_value['element_'.$element->id]['default_value'])){ + $element->default_value = $element->populated_value['element_'.$element->id]['default_value']; + } + +$element_markup = << + +
    + +
    {$guidelines} {$error_message} + +EOT; + + return $element_markup; + } + + + + //Date - Normal + function display_date($element){ + //check for error + $error_class = ''; + $error_message = ''; + $span_required = ''; + $guidelines = ''; + global $lang; + + if(!empty($element->is_error)){ + $error_class = 'class="error"'; + $error_message = "

    {$element->error_message}

    "; + } + + //check for required + if($element->is_required){ + $span_required = "id}\" class=\"required\">*"; + } + + //check for guidelines + if(!empty($element->guidelines)){ + $guidelines = "

    id}\">{$element->guidelines}

    "; + } + + $machform_path = ''; + if(!empty($element->machform_path)){ + $machform_path = $element->machform_path; + } + + +$element_markup = << + + + / + + + + / + + + + + + + + + Pick a date. + + + {$guidelines} {$error_message} + +EOT; + + return $element_markup; + } + + //Date - Normal + function display_europe_date($element){ + //check for error + $error_class = ''; + $error_message = ''; + $span_required = ''; + $guidelines = ''; + global $lang; + + if(!empty($element->is_error)){ + $error_class = 'class="error"'; + $error_message = "

    {$element->error_message}

    "; + } + + //check for required + if($element->is_required){ + $span_required = "id}\" class=\"required\">*"; + } + + //check for guidelines + if(!empty($element->guidelines)){ + $guidelines = "

    id}\">{$element->guidelines}

    "; + } + + $machform_path = ''; + if(!empty($element->machform_path)){ + $machform_path = $element->machform_path; + } + +$element_markup = << + + + / + + + + / + + + + + + + + + Pick a date. + + + {$guidelines} {$error_message} + +EOT; + + return $element_markup; + } + + + //Multiple Choice + function display_radio($element){ + //check for error + $error_class = ''; + $error_message = ''; + $span_required = ''; + $guidelines = ''; + + if(!empty($element->is_error)){ + $error_class = 'class="error"'; + $error_message = "

    {$element->error_message}

    "; + } + + //check for required + if($element->is_required){ + $span_required = "id}\" class=\"required\">*"; + } + + //check for guidelines + if(!empty($element->guidelines)){ + $guidelines = "

    id}\">{$element->guidelines}

    "; + } + + $option_markup = ''; + + if($element->constraint == 'random'){ + $temp = $element->options; + shuffle($temp); + $element->options = $temp; + } + + foreach ($element->options as $option){ + + if($option->is_default){ + $checked = 'checked="checked"'; + }else{ + $checked = ''; + } + + //check for populated values + if(!empty($element->populated_value['element_'.$element->id]['default_value'])){ + $checked = ''; + if($element->populated_value['element_'.$element->id]['default_value'] == $option->id){ + $checked = 'checked="checked"'; + } + } + + $option_markup .= "id}_{$option->id}\" name=\"element_{$element->id}\" class=\"element radio\" type=\"radio\" value=\"{$option->id}\" {$checked} />\n"; + $option_markup .= "\n"; + } + +$element_markup = << + + + {$option_markup} + {$guidelines} {$error_message} + +EOT; + + return $element_markup; + } + + //Checkboxes + function display_checkbox($element){ + //check for error + $error_class = ''; + $error_message = ''; + $span_required = ''; + $guidelines = ''; + + if(!empty($element->is_error)){ + $error_class = 'class="error"'; + $error_message = "

    {$element->error_message}

    "; + } + + //check for required + if($element->is_required){ + $span_required = "id}\" class=\"required\">*"; + } + + //check for guidelines + if(!empty($element->guidelines)){ + $guidelines = "

    id}\">{$element->guidelines}

    "; + } + + //check for populated value first, if any exist, unselect all default value + $is_populated = false; + foreach ($element->options as $option){ + + if(!empty($element->populated_value['element_'.$element->id.'_'.$option->id]['default_value'])){ + $is_populated = true; + break; + } + } + + $option_markup = ''; + + foreach ($element->options as $option){ + if(!$is_populated){ + if($option->is_default){ + $checked = 'checked="checked"'; + }else{ + $checked = ''; + } + }else{ + + if(!empty($element->populated_value['element_'.$element->id.'_'.$option->id]['default_value'])){ + $checked = 'checked="checked"'; + }else{ + $checked = ''; + } + } + + + + $option_markup .= "id}_{$option->id}\" name=\"element_{$element->id}_{$option->id}\" class=\"element checkbox\" type=\"checkbox\" value=\"1\" {$checked} />\n"; + $option_markup .= "\n"; + } + +$element_markup = << + + + {$option_markup} + {$guidelines} {$error_message} + +EOT; + + return $element_markup; + } + + + //Dropdown + function display_select($element){ + //check for error + $error_class = ''; + $error_message = ''; + $span_required = ''; + $guidelines = ''; + + if(!empty($element->is_error)){ + $error_class = 'class="error"'; + $error_message = "

    {$element->error_message}

    "; + } + + //check for required + if($element->is_required){ + $span_required = "id}\" class=\"required\">*"; + } + + //check for guidelines + if(!empty($element->guidelines)){ + $guidelines = "

    id}\">{$element->guidelines}

    "; + } + + $option_markup = ''; + + $has_default = false; + foreach ($element->options as $option){ + + if($option->is_default){ + $selected = 'selected="selected"'; + $has_default = true; + }else{ + $selected = ''; + } + + if(!empty($element->populated_value['element_'.$element->id]['default_value'])){ + $selected = ''; + if($element->populated_value['element_'.$element->id]['default_value'] == $option->id){ + $selected = 'selected="selected"'; + } + } + + $option_markup .= "\n"; + } + + if(!$has_default){ + if(!empty($element->populated_value['element_'.$element->id]['default_value'])){ + $option_markup = ''."\n".$option_markup; + }else{ + $option_markup = ''."\n".$option_markup; + } + } + +$element_markup = << + +
    + +
    {$guidelines} {$error_message} + +EOT; + + return $element_markup; + } + + + //Name - Simple + function display_simple_name($element){ + //check for error + $error_class = ''; + $error_message = ''; + $span_required = ''; + $guidelines = ''; + global $lang; + + if(!empty($element->is_error)){ + $error_class = 'class="error"'; + $error_message = "

    {$element->error_message}

    "; + } + + //check for required + if($element->is_required){ + $span_required = "id}\" class=\"required\">*"; + } + + //check for guidelines + if(!empty($element->guidelines)){ + $guidelines = "

    id}\">{$element->guidelines}

    "; + } + +$element_markup = << + + + + + + + + + {$guidelines} {$error_message} + +EOT; + + return $element_markup; + } + + //Name + function display_name($element){ + //check for error + $error_class = ''; + $error_message = ''; + $span_required = ''; + $guidelines = ''; + global $lang; + + if(!empty($element->is_error)){ + $error_class = 'class="error"'; + $error_message = "

    {$element->error_message}

    "; + } + + //check for required + if($element->is_required){ + $span_required = "id}\" class=\"required\">*"; + } + + //check for guidelines + if(!empty($element->guidelines)){ + $guidelines = "

    id}\">{$element->guidelines}

    "; + } + +$element_markup = << + + + + + + + + + + + + + + + + + {$guidelines} {$error_message} + +EOT; + + return $element_markup; + } + + //Time + function display_time($element){ + //check for error + $error_class = ''; + $error_message = ''; + $span_required = ''; + $guidelines = ''; + global $lang; + + if(!empty($element->is_error)){ + $error_class = 'class="error"'; + $error_message = "

    {$element->error_message}

    "; + } + + //check for required + if($element->is_required){ + $span_required = "id}\" class=\"required\">*"; + } + + //check for guidelines + if(!empty($element->guidelines)){ + $guidelines = "

    id}\">{$element->guidelines}

    "; + } + + if(!empty($element->populated_value['element_'.$element->id.'_4']['default_value'])){ + if($element->populated_value['element_'.$element->id.'_4']['default_value'] == 'AM'){ + $selected_am = 'selected'; + }else{ + $selected_pm = 'selected'; + } + } + + if($element->constraint == 'show_seconds'){ + $seconds_markup =<< + + + +EOT; + $seconds_separator = ':'; + }else{ + $seconds_markup = ''; + $seconds_separator = ''; + } + +$element_markup = << + + + : + + + + {$seconds_separator} + + + {$seconds_markup} + + + + {$guidelines} {$error_message} + +EOT; + + return $element_markup; + } + + + //Price + function display_money($element){ + //check for error + $error_class = ''; + $error_message = ''; + $span_required = ''; + $guidelines = ''; + global $lang; + + if(!empty($element->is_error)){ + $error_class = 'class="error"'; + $error_message = "

    {$element->error_message}

    "; + } + + //check for required + if($element->is_required){ + $span_required = "id}\" class=\"required\">*"; + } + + //check for guidelines + if(!empty($element->guidelines)){ + $guidelines = "

    id}\">{$element->guidelines}

    "; + } + + if($element->constraint != 'yen'){ //for dollar, pound and euro + if($element->constraint == 'pound'){ + $main_cur = $lang['price_pound_main']; + $child_cur = $lang['price_pound_sub']; + $cur_symbol = '£'; + }elseif ($element->constraint == 'euro'){ + $main_cur = $lang['price_euro_main']; + $child_cur = $lang['price_euro_sub']; + $cur_symbol = '€'; + }else{ //dollar + $main_cur = $lang['price_dollar_main']; + $child_cur = $lang['price_dollar_sub']; + $cur_symbol = '$'; + } + +$element_markup = << + + {$cur_symbol} + + . + + + + + + + {$guidelines} {$error_message} + +EOT; + + }else{ //for yen, only display one textfield + $main_cur = $lang['price_yen']; + $cur_symbol = '¥'; + +$element_markup = << + + {$cur_symbol} + + + + + {$guidelines} {$error_message} + +EOT; + + } + + + + return $element_markup; + } + + //Section Break + function display_section($element){ + $element->guidelines = nl2br($element->guidelines); +$element_markup = << +

    {$element->title}

    +

    {$element->guidelines}

    + +EOT; + + return $element_markup; + } + + + + //Number + function display_number($element){ + //check for error + $error_class = ''; + $error_message = ''; + $span_required = ''; + $guidelines = ''; + + if(!empty($element->is_error)){ + $error_class = 'class="error"'; + $error_message = "

    {$element->error_message}

    "; + } + + //check for required + if($element->is_required){ + $span_required = "id}\" class=\"required\">*"; + } + + //check for guidelines + if(!empty($element->guidelines)){ + $guidelines = "

    id}\">{$element->guidelines}

    "; + } + + //check for populated value, if exist, use it instead default_value + if(isset($element->populated_value['element_'.$element->id]['default_value'])){ + $element->default_value = $element->populated_value['element_'.$element->id]['default_value']; + } + +$element_markup = << + +
    + +
    {$guidelines} {$error_message} + +EOT; + + return $element_markup; + } + + + + //Address + function display_address($element){ + + $country[0]['label'] = "Afghanistan"; + $country[1]['label'] = "Albania"; + $country[2]['label'] = "Algeria"; + $country[3]['label'] = "Andorra"; + $country[4]['label'] = "Antigua and Barbuda"; + $country[5]['label'] = "Argentina"; + $country[6]['label'] = "Armenia"; + $country[7]['label'] = "Australia"; + $country[8]['label'] = "Austria"; + $country[9]['label'] = "Azerbaijan"; + $country[10]['label'] = "Bahamas"; + $country[11]['label'] = "Bahrain"; + $country[12]['label'] = "Bangladesh"; + $country[13]['label'] = "Barbados"; + $country[14]['label'] = "Belarus"; + $country[15]['label'] = "Belgium"; + $country[16]['label'] = "Belize"; + $country[17]['label'] = "Benin"; + $country[18]['label'] = "Bhutan"; + $country[19]['label'] = "Bolivia"; + $country[20]['label'] = "Bosnia and Herzegovina"; + $country[21]['label'] = "Botswana"; + $country[22]['label'] = "Brazil"; + $country[23]['label'] = "Brunei"; + $country[24]['label'] = "Bulgaria"; + $country[25]['label'] = "Burkina Faso"; + $country[26]['label'] = "Burundi"; + $country[27]['label'] = "Cambodia"; + $country[28]['label'] = "Cameroon"; + $country[29]['label'] = "Canada"; + $country[30]['label'] = "Cape Verde"; + $country[31]['label'] = "Central African Republic"; + $country[32]['label'] = "Chad"; + $country[33]['label'] = "Chile"; + $country[34]['label'] = "China"; + $country[35]['label'] = "Colombia"; + $country[36]['label'] = "Comoros"; + $country[37]['label'] = "Congo"; + $country[38]['label'] = "Costa Rica"; + $country[39]['label'] = "Côte d'Ivoire"; + $country[40]['label'] = "Croatia"; + $country[41]['label'] = "Cuba"; + $country[42]['label'] = "Cyprus"; + $country[43]['label'] = "Czech Republic"; + $country[44]['label'] = "Denmark"; + $country[45]['label'] = "Djibouti"; + $country[46]['label'] = "Dominica"; + $country[47]['label'] = "Dominican Republic"; + $country[48]['label'] = "East Timor"; + $country[49]['label'] = "Ecuador"; + $country[50]['label'] = "Egypt"; + $country[51]['label'] = "El Salvador"; + $country[52]['label'] = "Equatorial Guinea"; + $country[53]['label'] = "Eritrea"; + $country[54]['label'] = "Estonia"; + $country[55]['label'] = "Ethiopia"; + $country[56]['label'] = "Fiji"; + $country[57]['label'] = "Finland"; + $country[58]['label'] = "France"; + $country[59]['label'] = "Gabon"; + $country[60]['label'] = "Gambia"; + $country[61]['label'] = "Georgia"; + $country[62]['label'] = "Germany"; + $country[63]['label'] = "Ghana"; + $country[64]['label'] = "Greece"; + $country[65]['label'] = "Grenada"; + $country[66]['label'] = "Guatemala"; + $country[67]['label'] = "Guinea"; + $country[68]['label'] = "Guinea-Bissau"; + $country[69]['label'] = "Guyana"; + $country[70]['label'] = "Haiti"; + $country[71]['label'] = "Honduras"; + $country[72]['label'] = "Hong Kong"; + $country[73]['label'] = "Hungary"; + $country[74]['label'] = "Iceland"; + $country[75]['label'] = "India"; + $country[76]['label'] = "Indonesia"; + $country[77]['label'] = "Iran"; + $country[78]['label'] = "Iraq"; + $country[79]['label'] = "Ireland"; + $country[80]['label'] = "Israel"; + $country[81]['label'] = "Italy"; + $country[82]['label'] = "Jamaica"; + $country[83]['label'] = "Japan"; + $country[84]['label'] = "Jordan"; + $country[85]['label'] = "Kazakhstan"; + $country[86]['label'] = "Kenya"; + $country[87]['label'] = "Kiribati"; + $country[88]['label'] = "North Korea"; + $country[89]['label'] = "South Korea"; + $country[90]['label'] = "Kuwait"; + $country[91]['label'] = "Kyrgyzstan"; + $country[92]['label'] = "Laos"; + $country[93]['label'] = "Latvia"; + $country[94]['label'] = "Lebanon"; + $country[95]['label'] = "Lesotho"; + $country[96]['label'] = "Liberia"; + $country[97]['label'] = "Libya"; + $country[98]['label'] = "Liechtenstein"; + $country[99]['label'] = "Lithuania"; + $country[100]['label'] = "Luxembourg"; + $country[101]['label'] = "Macedonia"; + $country[102]['label'] = "Madagascar"; + $country[103]['label'] = "Malawi"; + $country[104]['label'] = "Malaysia"; + $country[105]['label'] = "Maldives"; + $country[106]['label'] = "Mali"; + $country[107]['label'] = "Malta"; + $country[108]['label'] = "Marshall Islands"; + $country[109]['label'] = "Mauritania"; + $country[110]['label'] = "Mauritius"; + $country[111]['label'] = "Mexico"; + $country[112]['label'] = "Micronesia"; + $country[113]['label'] = "Moldova"; + $country[114]['label'] = "Monaco"; + $country[115]['label'] = "Mongolia"; + $country[116]['label'] = "Montenegro"; + $country[117]['label'] = "Morocco"; + $country[118]['label'] = "Mozambique"; + $country[119]['label'] = "Myanmar"; + $country[120]['label'] = "Namibia"; + $country[121]['label'] = "Nauru"; + $country[122]['label'] = "Nepal"; + $country[123]['label'] = "Netherlands"; + $country[124]['label'] = "New Zealand"; + $country[125]['label'] = "Nicaragua"; + $country[126]['label'] = "Niger"; + $country[127]['label'] = "Nigeria"; + $country[128]['label'] = "Norway"; + $country[129]['label'] = "Oman"; + $country[130]['label'] = "Pakistan"; + $country[131]['label'] = "Palau"; + $country[132]['label'] = "Panama"; + $country[133]['label'] = "Papua New Guinea"; + $country[134]['label'] = "Paraguay"; + $country[135]['label'] = "Peru"; + $country[136]['label'] = "Philippines"; + $country[137]['label'] = "Poland"; + $country[138]['label'] = "Portugal"; + $country[139]['label'] = "Puerto Rico"; + $country[140]['label'] = "Qatar"; + $country[141]['label'] = "Romania"; + $country[142]['label'] = "Russia"; + $country[143]['label'] = "Rwanda"; + $country[144]['label'] = "Saint Kitts and Nevis"; + $country[145]['label'] = "Saint Lucia"; + $country[146]['label'] = "Saint Vincent and the Grenadines"; + $country[147]['label'] = "Samoa"; + $country[148]['label'] = "San Marino"; + $country[149]['label'] = "Sao Tome and Principe"; + $country[150]['label'] = "Saudi Arabia"; + $country[151]['label'] = "Senegal"; + $country[152]['label'] = "Serbia and Montenegro"; + $country[153]['label'] = "Seychelles"; + $country[154]['label'] = "Sierra Leone"; + $country[155]['label'] = "Singapore"; + $country[156]['label'] = "Slovakia"; + $country[157]['label'] = "Slovenia"; + $country[158]['label'] = "Solomon Islands"; + $country[159]['label'] = "Somalia"; + $country[160]['label'] = "South Africa"; + $country[161]['label'] = "Spain"; + $country[162]['label'] = "Sri Lanka"; + $country[163]['label'] = "Sudan"; + $country[164]['label'] = "Suriname"; + $country[165]['label'] = "Swaziland"; + $country[166]['label'] = "Sweden"; + $country[167]['label'] = "Switzerland"; + $country[168]['label'] = "Syria"; + $country[169]['label'] = "Taiwan"; + $country[170]['label'] = "Tajikistan"; + $country[171]['label'] = "Tanzania"; + $country[172]['label'] = "Thailand"; + $country[173]['label'] = "Togo"; + $country[174]['label'] = "Tonga"; + $country[175]['label'] = "Trinidad and Tobago"; + $country[176]['label'] = "Tunisia"; + $country[177]['label'] = "Turkey"; + $country[178]['label'] = "Turkmenistan"; + $country[179]['label'] = "Tuvalu"; + $country[180]['label'] = "Uganda"; + $country[181]['label'] = "Ukraine"; + $country[182]['label'] = "United Arab Emirates"; + $country[183]['label'] = "United Kingdom"; + $country[184]['label'] = "United States"; + $country[185]['label'] = "Uruguay"; + $country[186]['label'] = "Uzbekistan"; + $country[187]['label'] = "Vanuatu"; + $country[188]['label'] = "Vatican City"; + $country[189]['label'] = "Venezuela"; + $country[190]['label'] = "Vietnam"; + $country[191]['label'] = "Yemen"; + $country[192]['label'] = "Zambia"; + $country[193]['label'] = "Zimbabwe"; + + + $country[0]['value'] = "Afghanistan"; + $country[1]['value'] = "Albania"; + $country[2]['value'] = "Algeria"; + $country[3]['value'] = "Andorra"; + $country[4]['value'] = "Antigua and Barbuda"; + $country[5]['value'] = "Argentina"; + $country[6]['value'] = "Armenia"; + $country[7]['value'] = "Australia"; + $country[8]['value'] = "Austria"; + $country[9]['value'] = "Azerbaijan"; + $country[10]['value'] = "Bahamas"; + $country[11]['value'] = "Bahrain"; + $country[12]['value'] = "Bangladesh"; + $country[13]['value'] = "Barbados"; + $country[14]['value'] = "Belarus"; + $country[15]['value'] = "Belgium"; + $country[16]['value'] = "Belize"; + $country[17]['value'] = "Benin"; + $country[18]['value'] = "Bhutan"; + $country[19]['value'] = "Bolivia"; + $country[20]['value'] = "Bosnia and Herzegovina"; + $country[21]['value'] = "Botswana"; + $country[22]['value'] = "Brazil"; + $country[23]['value'] = "Brunei"; + $country[24]['value'] = "Bulgaria"; + $country[25]['value'] = "Burkina Faso"; + $country[26]['value'] = "Burundi"; + $country[27]['value'] = "Cambodia"; + $country[28]['value'] = "Cameroon"; + $country[29]['value'] = "Canada"; + $country[30]['value'] = "Cape Verde"; + $country[31]['value'] = "Central African Republic"; + $country[32]['value'] = "Chad"; + $country[33]['value'] = "Chile"; + $country[34]['value'] = "China"; + $country[35]['value'] = "Colombia"; + $country[36]['value'] = "Comoros"; + $country[37]['value'] = "Congo"; + $country[38]['value'] = "Costa Rica"; + $country[39]['value'] = "Côte d'Ivoire"; + $country[40]['value'] = "Croatia"; + $country[41]['value'] = "Cuba"; + $country[42]['value'] = "Cyprus"; + $country[43]['value'] = "Czech Republic"; + $country[44]['value'] = "Denmark"; + $country[45]['value'] = "Djibouti"; + $country[46]['value'] = "Dominica"; + $country[47]['value'] = "Dominican Republic"; + $country[48]['value'] = "East Timor"; + $country[49]['value'] = "Ecuador"; + $country[50]['value'] = "Egypt"; + $country[51]['value'] = "El Salvador"; + $country[52]['value'] = "Equatorial Guinea"; + $country[53]['value'] = "Eritrea"; + $country[54]['value'] = "Estonia"; + $country[55]['value'] = "Ethiopia"; + $country[56]['value'] = "Fiji"; + $country[57]['value'] = "Finland"; + $country[58]['value'] = "France"; + $country[59]['value'] = "Gabon"; + $country[60]['value'] = "Gambia"; + $country[61]['value'] = "Georgia"; + $country[62]['value'] = "Germany"; + $country[63]['value'] = "Ghana"; + $country[64]['value'] = "Greece"; + $country[65]['value'] = "Grenada"; + $country[66]['value'] = "Guatemala"; + $country[67]['value'] = "Guinea"; + $country[68]['value'] = "Guinea-Bissau"; + $country[69]['value'] = "Guyana"; + $country[70]['value'] = "Haiti"; + $country[71]['value'] = "Honduras"; + $country[72]['value'] = "Hong Kong"; + $country[73]['value'] = "Hungary"; + $country[74]['value'] = "Iceland"; + $country[75]['value'] = "India"; + $country[76]['value'] = "Indonesia"; + $country[77]['value'] = "Iran"; + $country[78]['value'] = "Iraq"; + $country[79]['value'] = "Ireland"; + $country[80]['value'] = "Israel"; + $country[81]['value'] = "Italy"; + $country[82]['value'] = "Jamaica"; + $country[83]['value'] = "Japan"; + $country[84]['value'] = "Jordan"; + $country[85]['value'] = "Kazakhstan"; + $country[86]['value'] = "Kenya"; + $country[87]['value'] = "Kiribati"; + $country[88]['value'] = "North Korea"; + $country[89]['value'] = "South Korea"; + $country[90]['value'] = "Kuwait"; + $country[91]['value'] = "Kyrgyzstan"; + $country[92]['value'] = "Laos"; + $country[93]['value'] = "Latvia"; + $country[94]['value'] = "Lebanon"; + $country[95]['value'] = "Lesotho"; + $country[96]['value'] = "Liberia"; + $country[97]['value'] = "Libya"; + $country[98]['value'] = "Liechtenstein"; + $country[99]['value'] = "Lithuania"; + $country[100]['value'] = "Luxembourg"; + $country[101]['value'] = "Macedonia"; + $country[102]['value'] = "Madagascar"; + $country[103]['value'] = "Malawi"; + $country[104]['value'] = "Malaysia"; + $country[105]['value'] = "Maldives"; + $country[106]['value'] = "Mali"; + $country[107]['value'] = "Malta"; + $country[108]['value'] = "Marshall Islands"; + $country[109]['value'] = "Mauritania"; + $country[110]['value'] = "Mauritius"; + $country[111]['value'] = "Mexico"; + $country[112]['value'] = "Micronesia"; + $country[113]['value'] = "Moldova"; + $country[114]['value'] = "Monaco"; + $country[115]['value'] = "Mongolia"; + $country[116]['value'] = "Montenegro"; + $country[117]['value'] = "Morocco"; + $country[118]['value'] = "Mozambique"; + $country[119]['value'] = "Myanmar"; + $country[120]['value'] = "Namibia"; + $country[121]['value'] = "Nauru"; + $country[122]['value'] = "Nepal"; + $country[123]['value'] = "Netherlands"; + $country[124]['value'] = "New Zealand"; + $country[125]['value'] = "Nicaragua"; + $country[126]['value'] = "Niger"; + $country[127]['value'] = "Nigeria"; + $country[128]['value'] = "Norway"; + $country[129]['value'] = "Oman"; + $country[130]['value'] = "Pakistan"; + $country[131]['value'] = "Palau"; + $country[132]['value'] = "Panama"; + $country[133]['value'] = "Papua New Guinea"; + $country[134]['value'] = "Paraguay"; + $country[135]['value'] = "Peru"; + $country[136]['value'] = "Philippines"; + $country[137]['value'] = "Poland"; + $country[138]['value'] = "Portugal"; + $country[139]['value'] = "Puerto Rico"; + $country[140]['value'] = "Qatar"; + $country[141]['value'] = "Romania"; + $country[142]['value'] = "Russia"; + $country[143]['value'] = "Rwanda"; + $country[144]['value'] = "Saint Kitts and Nevis"; + $country[145]['value'] = "Saint Lucia"; + $country[146]['value'] = "Saint Vincent and the Grenadines"; + $country[147]['value'] = "Samoa"; + $country[148]['value'] = "San Marino"; + $country[149]['value'] = "Sao Tome and Principe"; + $country[150]['value'] = "Saudi Arabia"; + $country[151]['value'] = "Senegal"; + $country[152]['value'] = "Serbia and Montenegro"; + $country[153]['value'] = "Seychelles"; + $country[154]['value'] = "Sierra Leone"; + $country[155]['value'] = "Singapore"; + $country[156]['value'] = "Slovakia"; + $country[157]['value'] = "Slovenia"; + $country[158]['value'] = "Solomon Islands"; + $country[159]['value'] = "Somalia"; + $country[160]['value'] = "South Africa"; + $country[161]['value'] = "Spain"; + $country[162]['value'] = "Sri Lanka"; + $country[163]['value'] = "Sudan"; + $country[164]['value'] = "Suriname"; + $country[165]['value'] = "Swaziland"; + $country[166]['value'] = "Sweden"; + $country[167]['value'] = "Switzerland"; + $country[168]['value'] = "Syria"; + $country[169]['value'] = "Taiwan"; + $country[170]['value'] = "Tajikistan"; + $country[171]['value'] = "Tanzania"; + $country[172]['value'] = "Thailand"; + $country[173]['value'] = "Togo"; + $country[174]['value'] = "Tonga"; + $country[175]['value'] = "Trinidad and Tobago"; + $country[176]['value'] = "Tunisia"; + $country[177]['value'] = "Turkey"; + $country[178]['value'] = "Turkmenistan"; + $country[179]['value'] = "Tuvalu"; + $country[180]['value'] = "Uganda"; + $country[181]['value'] = "Ukraine"; + $country[182]['value'] = "United Arab Emirates"; + $country[183]['value'] = "United Kingdom"; + $country[184]['value'] = "United States"; + $country[185]['value'] = "Uruguay"; + $country[186]['value'] = "Uzbekistan"; + $country[187]['value'] = "Vanuatu"; + $country[188]['value'] = "Vatican City"; + $country[189]['value'] = "Venezuela"; + $country[190]['value'] = "Vietnam"; + $country[191]['value'] = "Yemen"; + $country[192]['value'] = "Zambia"; + $country[193]['value'] = "Zimbabwe"; + + //check for error + $error_class = ''; + $error_message = ''; + $span_required = ''; + $guidelines = ''; + global $lang; + + if(!empty($element->is_error)){ + $error_class = 'class="error"'; + $error_message = "

    {$element->error_message}

    "; + } + + //check for required + if($element->is_required){ + $span_required = "id}\" class=\"required\">*"; + } + + //check for guidelines + if(!empty($element->guidelines)){ + $guidelines = "

    id}\">{$element->guidelines}

    "; + } + + + //create country markup, if no default value, provide a blank option + if(empty($element->default_value)){ + $country_markup = ''."\n"; + }else{ + $country_markup = ''; + } + + foreach ($country as $data){ + if($data['value'] == $element->default_value){ + $selected = 'selected="selected"'; + }else{ + $selected = ''; + } + + //check for populated value, use it instead of default value + if(!empty($element->populated_value['element_'.$element->id.'_6']['default_value'])){ + $selected = ''; + if($element->populated_value['element_'.$element->id.'_6']['default_value'] == $data['value']){ + $selected = 'selected="selected"'; + } + } + + $country_markup .= "\n"; + } + +$element_markup = << + + +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    + + +
    + +
    + + +
     {$guidelines} {$error_message} + +EOT; + + + return $element_markup; + } + + + //Captcha + function display_captcha($element){ + + if(!empty($element->error_message)){ + $error_code = $element->error_message; + }else{ + $error_code = ''; + } + + //check for error + $error_class = ''; + $error_message = ''; + $span_required = ''; + $guidelines = ''; + global $lang; + + if(!empty($element->is_error)){ + + if($element->error_message == 'el-required'){ + $element->error_message = $lang['captcha_required']; + $error_code = ''; + }elseif ($element->error_message == 'incorrect-captcha-sol'){ + $element->error_message = $lang['captcha_mismatch']; + }else{ + $element->error_message = "{$lang['captcha_error']} ({$element->error_message})"; + } + + $error_class = 'class="error"'; + $error_message = "

    {$element->error_message}

    "; + } + + if(!empty($_SERVER['HTTPS'])){ + $use_ssl = true; + }else{ + $use_ssl = false; + } + + + if(USE_INTERNAL_CAPTCHA === true){ //use the internal captcha if enabled + + $machform_path = ''; + if(!empty($element->machform_path)){ + $machform_path = $element->machform_path; + } + + $timestamp = time(); //use this as paramater for captcha.php, to prevent caching + + $element->title = $lang['captcha_title']; +$captcha_html = <<
    +
    +EOT; + + }else{ //otherwise use the reCAPTCHA + $captcha_html = recaptcha_get_html(RECAPTCHA_PUBLIC_KEY, $error_code,$use_ssl); + + if($captcha_html === false){ + $domain = str_replace('www.','',$_SERVER['SERVER_NAME']); + $captcha_html = "Error! You have enabled CAPTCHA but no API key available.

    To use CAPTCHA you must get an API key from http://recaptcha.net/api/getkey

    After getting the API key, save them into your config.php file."; + $error_class = 'class="error"'; + } + } + + + if(function_exists("form{$element->form_id}_hook_pre_captcha")){ + $custom_precaptcha = call_user_func("form{$element->form_id}_hook_pre_captcha"); + } + +$element_markup = << {$custom_precaptcha} + +
    + {$captcha_html} +
    + {$guidelines} {$error_message} + +EOT; + + return $element_markup; + } + + + //Main function to display a form + //There are few mode when displaying a form + //1. New blank form (form populated with default values) + //2. New form with error (displayed when 1 submitted and having error, form populated with user inputs) + //3. Edit form (form populated with data from db) + //4. Edit form with error (displayed when 3 submiteed and having error) + function display_form($form_id,$populated_values=array(),$error_elements=array(),$custom_error='',$edit_id=0,$embed=false){ + + global $lang; + + //if there is custom error, don't show other errors + if(!empty($custom_error)){ + $error_elements = array(); + } + + //get form properties data + $query = "select + form_name, + form_description, + form_redirect, + form_success_message, + form_password, + form_unique_ip, + form_frame_height, + form_has_css, + form_active, + form_captcha, + form_review + from + ap_forms + where + form_id='$form_id'"; + $result = do_query($query); + $row = do_fetch_result($result); + + $form = new \stdClass(); + + $form->id = $form_id; + $form->name = $row['form_name']; + $form->description = $row['form_description']; + $form->redirect = $row['form_redirect']; + $form->success_message = $row['form_success_message']; + $form->password = $row['form_password']; + $form->frame_height = $row['form_frame_height']; + $form->unique_ip = $row['form_unique_ip']; + $form->has_css = $row['form_has_css']; + $form->active = $row['form_active']; + $form->captcha = $row['form_captcha']; + $form->review = $row['form_review']; + + if(empty($error_elements)){ + $form->is_error = 0; + }else{ + $form->is_error = 1; + } + + //if this form has review enabled and user are having $_SESSION['review_id'], then populate the form with that values + if(!empty($form->review) && !empty($_SESSION['review_id']) && empty($populated_values)){ + $populated_values = get_entry_values($form_id,$_SESSION['review_id'],true); + } + + //get elements data + //get element options first and store it into array + $query = "select + element_id, + option_id, + `position`, + `option`, + option_is_default + from + ap_element_options + where + form_id='$form_id' and live=1 + order by + element_id asc,`position` asc"; + $result = do_query($query); + while($row = do_fetch_result($result)){ + $element_id = $row['element_id']; + $option_id = $row['option_id']; + $options_lookup[$element_id][$option_id]['position'] = $row['position']; + $options_lookup[$element_id][$option_id]['option'] = $row['option']; + $options_lookup[$element_id][$option_id]['option_is_default'] = $row['option_is_default']; + } + + + //get elements data + $element = array(); + $query = "select + element_id, + element_title, + element_guidelines, + element_size, + element_is_required, + element_is_unique, + element_is_private, + element_type, + element_position, + element_default_value, + element_constraint + from + ap_form_elements + where + form_id='$form_id' + order by + element_position asc"; + $result = do_query($query); + + $j=0; + $has_calendar = false; //assume the form doesn't have calendar, so it won't load calendar.js + while($row = do_fetch_result($result)){ + $element_id = $row['element_id']; + + //lookup element options first + if(!empty($options_lookup[$element_id])){ + $element_options = array(); + $i=0; + foreach ($options_lookup[$element_id] as $option_id=>$data){ + $element_options[$i] = new \stdClass(); + $element_options[$i]->id = $option_id; + $element_options[$i]->option = $data['option']; + $element_options[$i]->is_default = $data['option_is_default']; + $element_options[$i]->is_db_live = 1; + $i++; + } + } + + + //populate elements + $element[$j] = new \stdClass(); + $element[$j]->title = nl2br($row['element_title']); + $element[$j]->guidelines = $row['element_guidelines']; + $element[$j]->size = $row['element_size']; + $element[$j]->is_required = $row['element_is_required']; + $element[$j]->is_unique = $row['element_is_unique']; + $element[$j]->is_private = $row['element_is_private']; + $element[$j]->type = $row['element_type']; + $element[$j]->position = $row['element_position']; + $element[$j]->id = $row['element_id']; + $element[$j]->is_db_live = 1; + + //this data came from db or form submit + //being used to display edit form or redisplay form with errors and previous inputs + //this should be optimized in the future, only pass necessary data, not the whole array + $element[$j]->populated_value = $populated_values; + + //if there is file upload type, set form enctype to multipart + if($row['element_type'] == 'file'){ + $form_enc_type = 'enctype="multipart/form-data"'; + } + + if(!empty($error_elements[$element[$j]->id])){ + $element[$j]->is_error = 1; + $element[$j]->error_message = $error_elements[$element[$j]->id]; + } + + + $element[$j]->default_value = htmlspecialchars($row['element_default_value']); + + + $element[$j]->constraint = $row['element_constraint']; + if(!empty($element_options)){ + $element[$j]->options = $element_options; + }else{ + $element[$j]->options = ''; + } + + + //check for calendar type + if($row['element_type'] == 'date' || $row['element_type'] == 'europe_date'){ + $has_calendar = true; + } + + $j++; + } + + + //add captcha if enable + if(!empty($form->captcha) && (empty($edit_id))){ + $element[$j] = new \stdClass(); + $element[$j]->type = 'captcha'; + $element[$j]->form_id = $form_id; + $element[$j]->is_private = 0; + + if(!empty($error_elements['element_captcha'])){ + $element[$j]->is_error = 1; + $element[$j]->error_message = $error_elements['element_captcha']; + } + } + + //generate html markup for each element + $all_element_markup = ''; + foreach ($element as $element_data){ + if($element_data->is_private && empty($_SESSION['logged_in'])){ //don't show private element + continue; + } + $all_element_markup .= call_user_func(__NAMESPACE__ .'\display_'.$element_data->type,$element_data); + } + + if(!empty($custom_error)){ + $form->error_message =<< +

    {$custom_error}

    + +EOT; + }elseif(!empty($error_elements)){ + $form->error_message =<< +

    {$lang['error_title']}

    +

    {$lang['error_desc']}

    + +EOT; + } + + + //display edit_id if there is any + if(!empty($edit_id)){ + $edit_markup = "\n"; + }else{ + $edit_markup = ''; + } + + if(empty($form->review)){ + $button_text = $lang['submit_button']; + }else{ + $button_text = $lang['continue_button']; + } + + //markup for submit button + $button_markup =<< + + {$edit_markup} + + + +EOT; + + //check for specific form css, if any, use it instead + if($form->has_css){ + $css_dir = DATA_DIR."/form_{$form_id}/css/"; + } + + if(!empty($form->password) && empty($_SESSION['user_authenticated'])){ //if form require password and password hasn't set yet + $show_password_form = true; + + }elseif (!empty($form->password) && !empty($_SESSION['user_authenticated']) && $_SESSION['user_authenticated'] != $form_id){ //if user authenticated but not for this form + $show_password_form = true; + + }else{ //user authenticated for this form, or no password required + $show_password_form = false; + } + + + if(empty($form->active)){ //if form is not active, don't show the fields + $form_desc_div =''; + $all_element_markup = ''; + $button_markup = ''; + $ul_class = 'class="password"'; + $custom_element =<< +

    {$lang['form_inactive']}

    + +EOT; + }elseif($show_password_form){ //don't show form description if this page is password protected and user not authenticated + $form_desc_div =''; + $all_element_markup = ''; + $custom_element =<< +

    {$lang['form_pass_title']}

    +
    + + +
    + +EOT; + $ul_class = 'class="password"'; + }else{ + if(!empty($form->name) || !empty($form->description)){ + $form->description = nl2br($form->description); + $form_desc_div =<< +

    {$form->name}

    +

    {$form->description}

    + +EOT; + } + } + + if($embed){ + $embed_class = 'class="embed"'; + } + + if($has_calendar){ + $calendar_js = ''; + }else{ + $calendar_js = ''; + } + + + //If you would like to remove the "Powered by MachForm" link, please contact us at customer.service@appnitro.com before doing so + $form_markup = << + + + +{$form->name} + + +{$calendar_js} + + + + + + +
    + +

    {$form->name}

    +{$soy_un_movil} +
    + {$form_desc_div} +
      + {$form->error_message} + {$all_element_markup} + {$custom_element} + {$button_markup} +
    +
    + +
    + + + +EOT; + return $form_markup; + + } + + //this function is similar as display_form, but designed to display form without IFRAME + function display_integrated_form($form_id,$populated_values=array(),$error_elements=array(),$custom_error='',$edit_id=0,$machform_path){ + + global $lang; + + //if there is custom error, don't show other errors + if(!empty($custom_error)){ + $error_elements = array(); + } + + //get form properties data + $query = "select + form_name, + form_description, + form_redirect, + form_success_message, + form_password, + form_unique_ip, + form_frame_height, + form_has_css, + form_active, + form_captcha, + form_review + from + ap_forms + where + form_id='$form_id'"; + $result = do_query($query); + $row = do_fetch_result($result); + + $form = new stdClass(); + + $form->id = $form_id; + $form->name = $row['form_name']; + $form->description = $row['form_description']; + $form->redirect = $row['form_redirect']; + $form->success_message = $row['form_success_message']; + $form->password = $row['form_password']; + $form->frame_height = $row['form_frame_height']; + $form->unique_ip = $row['form_unique_ip']; + $form->has_css = $row['form_has_css']; + $form->active = $row['form_active']; + $form->captcha = $row['form_captcha']; + $form->review = $row['form_review']; + + if(empty($error_elements)){ + $form->is_error = 0; + }else{ + $form->is_error = 1; + } + + //if this form has review enabled and user are having $_SESSION['review_id'], then populate the form with that values + if(!empty($form->review) && !empty($_SESSION['review_id']) && empty($populated_values)){ + $param['machform_path'] = $machform_path; + $populated_values = get_entry_values($form_id,$_SESSION['review_id'],true,$param); + } + + //get elements data + //get element options first and store it into array + $query = "select + element_id, + option_id, + `position`, + `option`, + option_is_default + from + ap_element_options + where + form_id='$form_id' and live=1 + order by + element_id asc,`position` asc"; + $result = do_query($query); + while($row = do_fetch_result($result)){ + $element_id = $row['element_id']; + $option_id = $row['option_id']; + $options_lookup[$element_id][$option_id]['position'] = $row['position']; + $options_lookup[$element_id][$option_id]['option'] = $row['option']; + $options_lookup[$element_id][$option_id]['option_is_default'] = $row['option_is_default']; + } + + + //get elements data + $element = array(); + $query = "select + element_id, + element_title, + element_guidelines, + element_size, + element_is_required, + element_is_unique, + element_is_private, + element_type, + element_position, + element_default_value, + element_constraint + from + ap_form_elements + where + form_id='$form_id' + order by + element_position asc"; + $result = do_query($query); + + $j=0; + $has_calendar = false; + while($row = do_fetch_result($result)){ + $element_id = $row['element_id']; + + //lookup element options first + if(!empty($options_lookup[$element_id])){ + $element_options = array(); + $i=0; + foreach ($options_lookup[$element_id] as $option_id=>$data){ + $element_options[$i] = new stdClass(); + $element_options[$i]->id = $option_id; + $element_options[$i]->option = $data['option']; + $element_options[$i]->is_default = $data['option_is_default']; + $element_options[$i]->is_db_live = 1; + $i++; + } + } + + + //populate elements + $element[$j] = new stdClass(); + $element[$j]->title = nl2br($row['element_title']); + + if(empty($edit_id)){ + $element[$j]->guidelines = $row['element_guidelines']; + }else{ + $element[$j]->guidelines = ''; + } + + $element[$j]->size = $row['element_size']; + $element[$j]->is_required = $row['element_is_required']; + $element[$j]->is_unique = $row['element_is_unique']; + $element[$j]->is_private = $row['element_is_private']; + $element[$j]->type = $row['element_type']; + $element[$j]->position = $row['element_position']; + $element[$j]->id = $row['element_id']; + $element[$j]->is_db_live = 1; + $element[$j]->machform_path = $machform_path; + + //this data came from db or form submit + //being used to display edit form or redisplay form with errors and previous inputs + //this should be optimized in the future, only pass necessary data, not the whole array + $element[$j]->populated_value = $populated_values; + + //if there is file upload type, set form enctype to multipart + if($row['element_type'] == 'file'){ + $form_enc_type = 'enctype="multipart/form-data"'; + } + + if(!empty($error_elements[$element[$j]->id])){ + $element[$j]->is_error = 1; + $element[$j]->error_message = $error_elements[$element[$j]->id]; + } + + + $element[$j]->default_value = htmlspecialchars($row['element_default_value']); + + + $element[$j]->constraint = $row['element_constraint']; + if(!empty($element_options)){ + $element[$j]->options = $element_options; + }else{ + $element[$j]->options = ''; + } + + //check for calendar type + if($row['element_type'] == 'date' || $row['element_type'] == 'europe_date'){ + $has_calendar = true; + } + + $j++; + } + + + //add captcha if enable + if(!empty($form->captcha) && (empty($edit_id))){ + $element[$j] = new stdClass(); + $element[$j]->type = 'captcha'; + $element[$j]->form_id = $form_id; + $element[$j]->machform_path = $machform_path; + + if(!empty($error_elements['element_captcha'])){ + $element[$j]->is_error = 1; + $element[$j]->error_message = $error_elements['element_captcha']; + } + } + + //generate html markup for each element + $all_element_markup = ''; + foreach ($element as $element_data){ + if($element_data->is_private && empty($_SESSION['logged_in'])){ //don't show private element + continue; + } + $all_element_markup .= call_user_func('display_'.$element_data->type,$element_data); + } + + if(!empty($custom_error)){ + $form->error_message =<< +

    {$custom_error}

    + +EOT; + }elseif(!empty($error_elements)){ + $form->error_message =<< +

    {$lang['error_title']}

    +

    {$lang['error_desc']}

    + +EOT; + } + + if(!empty($form->password) && empty($_SESSION['user_authenticated'])){ //if form require password and password hasn't set yet + $show_password_form = true; + + }elseif (!empty($form->password) && !empty($_SESSION['user_authenticated']) && $_SESSION['user_authenticated'] != $form_id){ //if user authenticated but not for this form + $show_password_form = true; + + }else{ //user authenticated for this form, or no password required + $show_password_form = false; + } + + //display edit_id if there is any + if(!empty($edit_id)){ + $edit_markup = "\n"; + $submit_button = ''; + }else{ + $edit_markup = ''; + + if(!empty($form->review) && !$show_password_form){ + $submit_button = ''."\n".''; + }else{ + $submit_button = ''."\n".''; + } + } + + + //markup for submit button + $button_markup =<< + + {$edit_markup} + {$submit_button} + +EOT; + + //check for specific form css, if any, use it instead + if($form->has_css){ + $css_dir = DATA_DIR."/form_{$form_id}/css/"; + } + + + if(empty($form->active)){ //if form is not active, don't show the fields + $form_desc_div =''; + $all_element_markup = ''; + $button_markup = ''; + $ul_class = 'class="password"'; + $custom_element =<< +

    {$lang['form_inactive']}

    + +EOT; + }elseif($show_password_form){ //don't show form description if this page is password protected and user not authenticated + $form_desc_div =''; + $all_element_markup = ''; + $custom_element =<< +

    {$lang['form_pass_title']}

    +
    + + +
    + +EOT; + $ul_class = 'class="password"'; + }else{ + if(!empty($form->name) || !empty($form->description)){ + $form->description = nl2br($form->description); + $form_desc_div =<< +

    {$form->name}

    +

    {$form->description}

    + +EOT; + } + } + + + $embed_class = 'class="integrated"'; + + if(empty($edit_id)){ + $css_markup = ""; + }else{ + $css_markup = ""; + } + + if($has_calendar){ + $calendar_js = ""; + }else{ + $calendar_js = ''; + } + + + //If you would like to remove the "Powered by MachForm" link, please contact us at customer.service@appnitro.com before doing so + $form_markup =<< +{$calendar_js} + +
    + +
    + +

    {$form->name}

    +
    + {$form_desc_div} +
      + {$form->error_message} + {$all_element_markup} + {$custom_element} + {$button_markup} +
    +
    + +
    +
    +EOT; + return $form_markup; + + } + + function display_success($form_id,$embed=false){ + //get form properties data + $query = "select + form_success_message, + form_has_css, + form_name + from + ap_forms + where + form_id='$form_id'"; + + $result = do_query($query); + $row = do_fetch_result($result); + + $form = new stdClass(); + + $form->id = $form_id; + $form->success_message = nl2br($row['form_success_message']); + $form->has_css = $row['form_has_css']; + $form->name = $row['form_name']; + + + //check for specific form css, if any, use it instead + if($form->has_css){ + $css_dir = DATA_DIR."/form_{$form_id}/css/"; + } + + if($embed){ + $embed_class = 'class="embed"'; + } + + $form_markup = << + + + +{$form->name} + + + + + +
    + +

    Appnitro MachForm

    + +
    +

    {$form->success_message}

    +
    + +
    + + + +EOT; + return $form_markup; + } + + //this function is similar as display_success, but designed to display success page without IFRAME + function display_integrated_success($form_id,$machform_path){ + //get form properties data + $query = "select + form_success_message, + form_has_css + from + ap_forms + where + form_id='$form_id'"; + + $result = do_query($query); + $row = do_fetch_result($result); + + $form = new stdClass(); + + $form->id = $form_id; + $form->success_message = nl2br($row['form_success_message']); + $form->has_css = $row['form_has_css']; + + + //check for specific form css, if any, use it instead + if($form->has_css){ + $css_dir = DATA_DIR."/form_{$form_id}/css/"; + } + + + $form_markup = << +
    +
    +

    Appnitro MachForm

    + +
    +

    {$form->success_message}

    +
    + +
    +
    +EOT; + return $form_markup; + } + + //display form confirmation page + function display_form_review($form_id,$record_id,$embed=false){ + global $lang; + + //get form properties data + $query = "select + form_has_css, + form_redirect + from + ap_forms + where + form_id='$form_id'"; + + $result = do_query($query); + $row = do_fetch_result($result); + + + $form_has_css = $row['form_has_css']; + $form_redirect = $row['form_redirect']; + + //prepare entry data for previewing + $param['strip_download_link'] = true; + $param['review_mode'] = true; + $param['show_attach_image'] = true; + $entry_details = get_entry_details($form_id,$record_id,$param); + + $entry_data = ''."\n"; + + $toggle = false; + foreach ($entry_details as $data){ + if($toggle){ + $toggle = false; + $row_style = 'class="alt"'; + }else{ + $toggle = true; + $row_style = ''; + } + + $entry_data .= "\n"; + $entry_data .= "\n"; + $entry_data .= "\n"; + $entry_data .= "\n"; + } + + $entry_data .= '
    {$data['label']}".nl2br($data['value'])."
    '; + + //check for specific form css, if any, use it instead + if($form_has_css){ + $css_dir = DATA_DIR."/form_{$form_id}/css/"; + } + + if($embed){ + $embed_class = 'class="embed"'; + } + + $form_markup = << + + + +{$form_name} + + + + + + + + +
    + +

    Appnitro MachForm

    +
    +
    +

    {$lang['review_title']}

    +

    {$lang['review_message']}

    +
    + {$entry_data} +
      +
    • + + + +
    • +
    +
    + +
    + + + +EOT; + return $form_markup; + } + + //display form confirmation page for integrated embed code + function display_integrated_form_review($form_id,$record_id,$machform_path){ + global $lang; + + //get form properties data + $query = "select + form_has_css, + form_redirect + from + ap_forms + where + form_id='$form_id'"; + + $result = do_query($query); + $row = do_fetch_result($result); + + + $form_has_css = $row['form_has_css']; + $form_redirect = $row['form_redirect']; + + //prepare entry data for previewing + $param['strip_download_link'] = true; + $param['review_mode'] = true; + $param['show_attach_image'] = true; + $param['machform_path'] = $machform_path; + $entry_details = get_entry_details($form_id,$record_id,$param); + + $entry_data = ''."\n"; + + $toggle = false; + foreach ($entry_details as $data){ + if($toggle){ + $toggle = false; + $row_style = 'class="alt"'; + }else{ + $toggle = true; + $row_style = ''; + } + + $entry_data .= "\n"; + $entry_data .= "\n"; + $entry_data .= "\n"; + $entry_data .= "\n"; + } + + $entry_data .= '
    {$data['label']}".nl2br($data['value'])."
    '; + + //check for specific form css, if any, use it instead + if($form_has_css){ + $css_dir = DATA_DIR."/form_{$form_id}/css/"; + } + + if($embed){ + $embed_class = 'class="embed"'; + } + + $form_action = str_replace(array("&show_review=1","?show_review=1"),"",$_SERVER['REQUEST_URI']); + + $form_markup = << + + + + +
    +
    +

    Appnitro MachForm

    +
    +
    +

    {$lang['review_title']}

    +

    {$lang['review_message']}

    +
    + {$entry_data} +
      +
    • + + + +
    • +
    +
    + +
    +
    +EOT; + return $form_markup; + } +?> \ No newline at end of file diff --git a/includes/view-functions.php b/includes/view-functions.php index 1f7c9b9..80033df 100644 --- a/includes/view-functions.php +++ b/includes/view-functions.php @@ -1,2511 +1,96 @@ -is_error)){ - $error_class = 'class="error"'; - $error_message = "

    {$element->error_message}

    "; - } - - //check for required - if($element->is_required){ - $span_required = "id}\" class=\"required\">*"; - } - - //check for guidelines - if(!empty($element->guidelines)){ - $guidelines = "

    id}\">{$element->guidelines}

    "; - } - - //check for populated value, if exist, use it instead default_value - if(isset($element->populated_value['element_'.$element->id]['default_value'])){ - $element->default_value = $element->populated_value['element_'.$element->id]['default_value']; - } - - -$element_markup = << - -
    - -
    {$guidelines} {$error_message} - -EOT; - - return $element_markup; - } - - - - //Paragraph Text - function display_textarea($element){ - //check for error - $error_class = ''; - $error_message = ''; - $span_required = ''; - $guidelines = ''; - - if(!empty($element->is_error)){ - $error_class = 'class="error"'; - $error_message = "

    {$element->error_message}

    "; - } - - //check for required - if($element->is_required){ - $span_required = "id}\" class=\"required\">*"; - } - - //check for guidelines - if(!empty($element->guidelines)){ - $guidelines = "

    id}\">{$element->guidelines}

    "; - } - - //check for populated value, if exist, use it instead default_value - if(isset($element->populated_value['element_'.$element->id]['default_value'])){ - $element->default_value = $element->populated_value['element_'.$element->id]['default_value']; - } - -$element_markup = << - -
    - -
    {$guidelines} {$error_message} - -EOT; - - return $element_markup; - } - - - //File Upload - function display_file($element){ - //check for error - $error_class = ''; - $error_message = ''; - $span_required = ''; - $guidelines = ''; - - if(!empty($element->is_error)){ - $error_class = 'class="error"'; - $error_message = "

    {$element->error_message}

    "; - } - - //check for required - if($element->is_required){ - $span_required = "id}\" class=\"required\">*"; - } - - //check for guidelines - if(!empty($element->guidelines)){ - $guidelines = "

    id}\">{$element->guidelines}

    "; - } - - //check for populated value (this is being used for edit_entry.php only) - if(!empty($element->populated_value)){ - $file_option = $element->populated_value['element_'.$element->id]['default_value']; //this should be contain html markup to download or delete current file - } - -$element_markup = << - -
    - -
    {$file_option} {$guidelines} {$error_message} - -EOT; - - return $element_markup; - } - - //Website - function display_url($element){ - //check for error - $error_class = ''; - $error_message = ''; - $span_required = ''; - $guidelines = ''; - - if(!empty($element->is_error)){ - $error_class = 'class="error"'; - $error_message = "

    {$element->error_message}

    "; - } - - //check for required - if($element->is_required){ - $span_required = "id}\" class=\"required\">*"; - } - - //check for guidelines - if(!empty($element->guidelines)){ - $guidelines = "

    id}\">{$element->guidelines}

    "; - } - - //check for default value - if(empty($element->default_value)){ - $element->default_value = 'http://'; - } - - //check for populated value, if exist, use it instead default_value - if(!empty($element->populated_value['element_'.$element->id]['default_value'])){ - $element->default_value = $element->populated_value['element_'.$element->id]['default_value']; - } - -$element_markup = << - -
    - -
    {$guidelines} {$error_message} - -EOT; - - return $element_markup; - } - - //Email - function display_email($element){ - //check for error - $error_class = ''; - $error_message = ''; - $span_required = ''; - $guidelines = ''; - - if(!empty($element->is_error)){ - $error_class = 'class="error"'; - $error_message = "

    {$element->error_message}

    "; - } - - //check for required - if($element->is_required){ - $span_required = "id}\" class=\"required\">*"; - } - - //check for guidelines - if(!empty($element->guidelines)){ - $guidelines = "

    id}\">{$element->guidelines}

    "; - } - - //check for populated value, if exist, use it instead default_value - if(!empty($element->populated_value['element_'.$element->id]['default_value'])){ - $element->default_value = $element->populated_value['element_'.$element->id]['default_value']; - } - -$element_markup = << - -
    - -
    {$guidelines} {$error_message} - -EOT; - - return $element_markup; - } - - - //Phone - Extended - function display_phone($element){ - //check for error - $error_class = ''; - $error_message = ''; - $span_required = ''; - $guidelines = ''; - - if(!empty($element->is_error)){ - $error_class = 'class="error"'; - $error_message = "

    {$element->error_message}

    "; - } - - //check for required - if($element->is_required){ - $span_required = "id}\" class=\"required\">*"; - } - - //check for guidelines - if(!empty($element->guidelines)){ - $guidelines = "

    id}\">{$element->guidelines}

    "; - } - - //check default value - if(!empty($element->default_value)){ - //split into (xxx) xxx - xxxx - $default_value_1 = substr($element->default_value,0,3); - $default_value_2 = substr($element->default_value,3,3); - $default_value_3 = substr($element->default_value,6,4); - } - - if(!empty($element->populated_value['element_'.$element->id.'_1']['default_value']) || - !empty($element->populated_value['element_'.$element->id.'_2']['default_value']) || - !empty($element->populated_value['element_'.$element->id.'_3']['default_value']) - ){ - $default_value_1 = ''; - $default_value_2 = ''; - $default_value_3 = ''; - $default_value_1 = $element->populated_value['element_'.$element->id.'_1']['default_value']; - $default_value_2 = $element->populated_value['element_'.$element->id.'_2']['default_value']; - $default_value_3 = $element->populated_value['element_'.$element->id.'_3']['default_value']; - } - - -$element_markup = << - - - - - - - - - - - - - - - - {$guidelines} {$error_message} - -EOT; - - - return $element_markup; - } - - //Phone - Simple - function display_simple_phone($element){ - //check for error - $error_class = ''; - $error_message = ''; - $span_required = ''; - $guidelines = ''; - - if(!empty($element->is_error)){ - $error_class = 'class="error"'; - $error_message = "

    {$element->error_message}

    "; - } - - //check for required - if($element->is_required){ - $span_required = "id}\" class=\"required\">*"; - } - - //check for guidelines - if(!empty($element->guidelines)){ - $guidelines = "

    id}\">{$element->guidelines}

    "; - } - - //check for populated value - if(!empty($element->populated_value['element_'.$element->id]['default_value'])){ - $element->default_value = $element->populated_value['element_'.$element->id]['default_value']; - } - -$element_markup = << - -
    - -
    {$guidelines} {$error_message} - -EOT; - - return $element_markup; - } - - - - //Date - Normal - function display_date($element){ - //check for error - $error_class = ''; - $error_message = ''; - $span_required = ''; - $guidelines = ''; - global $lang; - - if(!empty($element->is_error)){ - $error_class = 'class="error"'; - $error_message = "

    {$element->error_message}

    "; - } - - //check for required - if($element->is_required){ - $span_required = "id}\" class=\"required\">*"; - } - - //check for guidelines - if(!empty($element->guidelines)){ - $guidelines = "

    id}\">{$element->guidelines}

    "; - } - - $machform_path = ''; - if(!empty($element->machform_path)){ - $machform_path = $element->machform_path; - } - - -$element_markup = << - - - / - - - - / - - - - - - - - - Pick a date. - - - {$guidelines} {$error_message} - -EOT; - - return $element_markup; - } - - //Date - Normal - function display_europe_date($element){ - //check for error - $error_class = ''; - $error_message = ''; - $span_required = ''; - $guidelines = ''; - global $lang; - - if(!empty($element->is_error)){ - $error_class = 'class="error"'; - $error_message = "

    {$element->error_message}

    "; - } - - //check for required - if($element->is_required){ - $span_required = "id}\" class=\"required\">*"; - } - - //check for guidelines - if(!empty($element->guidelines)){ - $guidelines = "

    id}\">{$element->guidelines}

    "; - } - - $machform_path = ''; - if(!empty($element->machform_path)){ - $machform_path = $element->machform_path; - } - -$element_markup = << - - - / - - - - / - - - - - - - - - Pick a date. - - - {$guidelines} {$error_message} - -EOT; - - return $element_markup; - } - - - //Multiple Choice - function display_radio($element){ - //check for error - $error_class = ''; - $error_message = ''; - $span_required = ''; - $guidelines = ''; - - if(!empty($element->is_error)){ - $error_class = 'class="error"'; - $error_message = "

    {$element->error_message}

    "; - } - - //check for required - if($element->is_required){ - $span_required = "id}\" class=\"required\">*"; - } - - //check for guidelines - if(!empty($element->guidelines)){ - $guidelines = "

    id}\">{$element->guidelines}

    "; - } - - $option_markup = ''; - - if($element->constraint == 'random'){ - $temp = $element->options; - shuffle($temp); - $element->options = $temp; - } - - foreach ($element->options as $option){ - - if($option->is_default){ - $checked = 'checked="checked"'; - }else{ - $checked = ''; - } - - //check for populated values - if(!empty($element->populated_value['element_'.$element->id]['default_value'])){ - $checked = ''; - if($element->populated_value['element_'.$element->id]['default_value'] == $option->id){ - $checked = 'checked="checked"'; - } - } - - $option_markup .= "id}_{$option->id}\" name=\"element_{$element->id}\" class=\"element radio\" type=\"radio\" value=\"{$option->id}\" {$checked} />\n"; - $option_markup .= "\n"; - } - -$element_markup = << - - - {$option_markup} - {$guidelines} {$error_message} - -EOT; - - return $element_markup; - } - - //Checkboxes - function display_checkbox($element){ - //check for error - $error_class = ''; - $error_message = ''; - $span_required = ''; - $guidelines = ''; - - if(!empty($element->is_error)){ - $error_class = 'class="error"'; - $error_message = "

    {$element->error_message}

    "; - } - - //check for required - if($element->is_required){ - $span_required = "id}\" class=\"required\">*"; - } - - //check for guidelines - if(!empty($element->guidelines)){ - $guidelines = "

    id}\">{$element->guidelines}

    "; - } - - //check for populated value first, if any exist, unselect all default value - $is_populated = false; - foreach ($element->options as $option){ - - if(!empty($element->populated_value['element_'.$element->id.'_'.$option->id]['default_value'])){ - $is_populated = true; - break; - } - } - - $option_markup = ''; - - foreach ($element->options as $option){ - if(!$is_populated){ - if($option->is_default){ - $checked = 'checked="checked"'; - }else{ - $checked = ''; - } - }else{ - - if(!empty($element->populated_value['element_'.$element->id.'_'.$option->id]['default_value'])){ - $checked = 'checked="checked"'; - }else{ - $checked = ''; - } - } - - - - $option_markup .= "id}_{$option->id}\" name=\"element_{$element->id}_{$option->id}\" class=\"element checkbox\" type=\"checkbox\" value=\"1\" {$checked} />\n"; - $option_markup .= "\n"; - } - -$element_markup = << - - - {$option_markup} - {$guidelines} {$error_message} - -EOT; - - return $element_markup; - } - - - //Dropdown - function display_select($element){ - //check for error - $error_class = ''; - $error_message = ''; - $span_required = ''; - $guidelines = ''; - - if(!empty($element->is_error)){ - $error_class = 'class="error"'; - $error_message = "

    {$element->error_message}

    "; - } - - //check for required - if($element->is_required){ - $span_required = "id}\" class=\"required\">*"; - } - - //check for guidelines - if(!empty($element->guidelines)){ - $guidelines = "

    id}\">{$element->guidelines}

    "; - } - - $option_markup = ''; - - $has_default = false; - foreach ($element->options as $option){ - - if($option->is_default){ - $selected = 'selected="selected"'; - $has_default = true; - }else{ - $selected = ''; - } - - if(!empty($element->populated_value['element_'.$element->id]['default_value'])){ - $selected = ''; - if($element->populated_value['element_'.$element->id]['default_value'] == $option->id){ - $selected = 'selected="selected"'; - } - } - - $option_markup .= "\n"; - } - - if(!$has_default){ - if(!empty($element->populated_value['element_'.$element->id]['default_value'])){ - $option_markup = ''."\n".$option_markup; - }else{ - $option_markup = ''."\n".$option_markup; - } - } - -$element_markup = << - -
    - -
    {$guidelines} {$error_message} - -EOT; - - return $element_markup; - } - - - //Name - Simple - function display_simple_name($element){ - //check for error - $error_class = ''; - $error_message = ''; - $span_required = ''; - $guidelines = ''; - global $lang; - - if(!empty($element->is_error)){ - $error_class = 'class="error"'; - $error_message = "

    {$element->error_message}

    "; - } - - //check for required - if($element->is_required){ - $span_required = "id}\" class=\"required\">*"; - } - - //check for guidelines - if(!empty($element->guidelines)){ - $guidelines = "

    id}\">{$element->guidelines}

    "; - } - -$element_markup = << - - - - - - - - - {$guidelines} {$error_message} - -EOT; - - return $element_markup; - } - - //Name - function display_name($element){ - //check for error - $error_class = ''; - $error_message = ''; - $span_required = ''; - $guidelines = ''; - global $lang; - - if(!empty($element->is_error)){ - $error_class = 'class="error"'; - $error_message = "

    {$element->error_message}

    "; - } - - //check for required - if($element->is_required){ - $span_required = "id}\" class=\"required\">*"; - } - - //check for guidelines - if(!empty($element->guidelines)){ - $guidelines = "

    id}\">{$element->guidelines}

    "; - } - -$element_markup = << - - - - - - - - - - - - - - - - - {$guidelines} {$error_message} - -EOT; - - return $element_markup; - } - - //Time - function display_time($element){ - //check for error - $error_class = ''; - $error_message = ''; - $span_required = ''; - $guidelines = ''; - global $lang; - - if(!empty($element->is_error)){ - $error_class = 'class="error"'; - $error_message = "

    {$element->error_message}

    "; - } - - //check for required - if($element->is_required){ - $span_required = "id}\" class=\"required\">*"; - } - - //check for guidelines - if(!empty($element->guidelines)){ - $guidelines = "

    id}\">{$element->guidelines}

    "; - } - - if(!empty($element->populated_value['element_'.$element->id.'_4']['default_value'])){ - if($element->populated_value['element_'.$element->id.'_4']['default_value'] == 'AM'){ - $selected_am = 'selected'; - }else{ - $selected_pm = 'selected'; - } - } - - if($element->constraint == 'show_seconds'){ - $seconds_markup =<< - - - -EOT; - $seconds_separator = ':'; - }else{ - $seconds_markup = ''; - $seconds_separator = ''; - } - -$element_markup = << - - - : - - - - {$seconds_separator} - - - {$seconds_markup} - - - - {$guidelines} {$error_message} - -EOT; - - return $element_markup; - } - - - //Price - function display_money($element){ - //check for error - $error_class = ''; - $error_message = ''; - $span_required = ''; - $guidelines = ''; - global $lang; - - if(!empty($element->is_error)){ - $error_class = 'class="error"'; - $error_message = "

    {$element->error_message}

    "; - } - - //check for required - if($element->is_required){ - $span_required = "id}\" class=\"required\">*"; - } - - //check for guidelines - if(!empty($element->guidelines)){ - $guidelines = "

    id}\">{$element->guidelines}

    "; - } - - if($element->constraint != 'yen'){ //for dollar, pound and euro - if($element->constraint == 'pound'){ - $main_cur = $lang['price_pound_main']; - $child_cur = $lang['price_pound_sub']; - $cur_symbol = '£'; - }elseif ($element->constraint == 'euro'){ - $main_cur = $lang['price_euro_main']; - $child_cur = $lang['price_euro_sub']; - $cur_symbol = '€'; - }else{ //dollar - $main_cur = $lang['price_dollar_main']; - $child_cur = $lang['price_dollar_sub']; - $cur_symbol = '$'; - } - -$element_markup = << - - {$cur_symbol} - - . - - - - - - - {$guidelines} {$error_message} - -EOT; - - }else{ //for yen, only display one textfield - $main_cur = $lang['price_yen']; - $cur_symbol = '¥'; - -$element_markup = << - - {$cur_symbol} - - - - - {$guidelines} {$error_message} - -EOT; - - } - - - - return $element_markup; - } - - //Section Break - function display_section($element){ - $element->guidelines = nl2br($element->guidelines); -$element_markup = << -

    {$element->title}

    -

    {$element->guidelines}

    - -EOT; - - return $element_markup; - } - - - - //Number - function display_number($element){ - //check for error - $error_class = ''; - $error_message = ''; - $span_required = ''; - $guidelines = ''; - - if(!empty($element->is_error)){ - $error_class = 'class="error"'; - $error_message = "

    {$element->error_message}

    "; - } - - //check for required - if($element->is_required){ - $span_required = "id}\" class=\"required\">*"; - } - - //check for guidelines - if(!empty($element->guidelines)){ - $guidelines = "

    id}\">{$element->guidelines}

    "; - } - - //check for populated value, if exist, use it instead default_value - if(isset($element->populated_value['element_'.$element->id]['default_value'])){ - $element->default_value = $element->populated_value['element_'.$element->id]['default_value']; - } - -$element_markup = << - -
    - -
    {$guidelines} {$error_message} - -EOT; - - return $element_markup; - } - - - - //Address - function display_address($element){ - - $country[0]['label'] = "Afghanistan"; - $country[1]['label'] = "Albania"; - $country[2]['label'] = "Algeria"; - $country[3]['label'] = "Andorra"; - $country[4]['label'] = "Antigua and Barbuda"; - $country[5]['label'] = "Argentina"; - $country[6]['label'] = "Armenia"; - $country[7]['label'] = "Australia"; - $country[8]['label'] = "Austria"; - $country[9]['label'] = "Azerbaijan"; - $country[10]['label'] = "Bahamas"; - $country[11]['label'] = "Bahrain"; - $country[12]['label'] = "Bangladesh"; - $country[13]['label'] = "Barbados"; - $country[14]['label'] = "Belarus"; - $country[15]['label'] = "Belgium"; - $country[16]['label'] = "Belize"; - $country[17]['label'] = "Benin"; - $country[18]['label'] = "Bhutan"; - $country[19]['label'] = "Bolivia"; - $country[20]['label'] = "Bosnia and Herzegovina"; - $country[21]['label'] = "Botswana"; - $country[22]['label'] = "Brazil"; - $country[23]['label'] = "Brunei"; - $country[24]['label'] = "Bulgaria"; - $country[25]['label'] = "Burkina Faso"; - $country[26]['label'] = "Burundi"; - $country[27]['label'] = "Cambodia"; - $country[28]['label'] = "Cameroon"; - $country[29]['label'] = "Canada"; - $country[30]['label'] = "Cape Verde"; - $country[31]['label'] = "Central African Republic"; - $country[32]['label'] = "Chad"; - $country[33]['label'] = "Chile"; - $country[34]['label'] = "China"; - $country[35]['label'] = "Colombia"; - $country[36]['label'] = "Comoros"; - $country[37]['label'] = "Congo"; - $country[38]['label'] = "Costa Rica"; - $country[39]['label'] = "Côte d'Ivoire"; - $country[40]['label'] = "Croatia"; - $country[41]['label'] = "Cuba"; - $country[42]['label'] = "Cyprus"; - $country[43]['label'] = "Czech Republic"; - $country[44]['label'] = "Denmark"; - $country[45]['label'] = "Djibouti"; - $country[46]['label'] = "Dominica"; - $country[47]['label'] = "Dominican Republic"; - $country[48]['label'] = "East Timor"; - $country[49]['label'] = "Ecuador"; - $country[50]['label'] = "Egypt"; - $country[51]['label'] = "El Salvador"; - $country[52]['label'] = "Equatorial Guinea"; - $country[53]['label'] = "Eritrea"; - $country[54]['label'] = "Estonia"; - $country[55]['label'] = "Ethiopia"; - $country[56]['label'] = "Fiji"; - $country[57]['label'] = "Finland"; - $country[58]['label'] = "France"; - $country[59]['label'] = "Gabon"; - $country[60]['label'] = "Gambia"; - $country[61]['label'] = "Georgia"; - $country[62]['label'] = "Germany"; - $country[63]['label'] = "Ghana"; - $country[64]['label'] = "Greece"; - $country[65]['label'] = "Grenada"; - $country[66]['label'] = "Guatemala"; - $country[67]['label'] = "Guinea"; - $country[68]['label'] = "Guinea-Bissau"; - $country[69]['label'] = "Guyana"; - $country[70]['label'] = "Haiti"; - $country[71]['label'] = "Honduras"; - $country[72]['label'] = "Hong Kong"; - $country[73]['label'] = "Hungary"; - $country[74]['label'] = "Iceland"; - $country[75]['label'] = "India"; - $country[76]['label'] = "Indonesia"; - $country[77]['label'] = "Iran"; - $country[78]['label'] = "Iraq"; - $country[79]['label'] = "Ireland"; - $country[80]['label'] = "Israel"; - $country[81]['label'] = "Italy"; - $country[82]['label'] = "Jamaica"; - $country[83]['label'] = "Japan"; - $country[84]['label'] = "Jordan"; - $country[85]['label'] = "Kazakhstan"; - $country[86]['label'] = "Kenya"; - $country[87]['label'] = "Kiribati"; - $country[88]['label'] = "North Korea"; - $country[89]['label'] = "South Korea"; - $country[90]['label'] = "Kuwait"; - $country[91]['label'] = "Kyrgyzstan"; - $country[92]['label'] = "Laos"; - $country[93]['label'] = "Latvia"; - $country[94]['label'] = "Lebanon"; - $country[95]['label'] = "Lesotho"; - $country[96]['label'] = "Liberia"; - $country[97]['label'] = "Libya"; - $country[98]['label'] = "Liechtenstein"; - $country[99]['label'] = "Lithuania"; - $country[100]['label'] = "Luxembourg"; - $country[101]['label'] = "Macedonia"; - $country[102]['label'] = "Madagascar"; - $country[103]['label'] = "Malawi"; - $country[104]['label'] = "Malaysia"; - $country[105]['label'] = "Maldives"; - $country[106]['label'] = "Mali"; - $country[107]['label'] = "Malta"; - $country[108]['label'] = "Marshall Islands"; - $country[109]['label'] = "Mauritania"; - $country[110]['label'] = "Mauritius"; - $country[111]['label'] = "Mexico"; - $country[112]['label'] = "Micronesia"; - $country[113]['label'] = "Moldova"; - $country[114]['label'] = "Monaco"; - $country[115]['label'] = "Mongolia"; - $country[116]['label'] = "Montenegro"; - $country[117]['label'] = "Morocco"; - $country[118]['label'] = "Mozambique"; - $country[119]['label'] = "Myanmar"; - $country[120]['label'] = "Namibia"; - $country[121]['label'] = "Nauru"; - $country[122]['label'] = "Nepal"; - $country[123]['label'] = "Netherlands"; - $country[124]['label'] = "New Zealand"; - $country[125]['label'] = "Nicaragua"; - $country[126]['label'] = "Niger"; - $country[127]['label'] = "Nigeria"; - $country[128]['label'] = "Norway"; - $country[129]['label'] = "Oman"; - $country[130]['label'] = "Pakistan"; - $country[131]['label'] = "Palau"; - $country[132]['label'] = "Panama"; - $country[133]['label'] = "Papua New Guinea"; - $country[134]['label'] = "Paraguay"; - $country[135]['label'] = "Peru"; - $country[136]['label'] = "Philippines"; - $country[137]['label'] = "Poland"; - $country[138]['label'] = "Portugal"; - $country[139]['label'] = "Puerto Rico"; - $country[140]['label'] = "Qatar"; - $country[141]['label'] = "Romania"; - $country[142]['label'] = "Russia"; - $country[143]['label'] = "Rwanda"; - $country[144]['label'] = "Saint Kitts and Nevis"; - $country[145]['label'] = "Saint Lucia"; - $country[146]['label'] = "Saint Vincent and the Grenadines"; - $country[147]['label'] = "Samoa"; - $country[148]['label'] = "San Marino"; - $country[149]['label'] = "Sao Tome and Principe"; - $country[150]['label'] = "Saudi Arabia"; - $country[151]['label'] = "Senegal"; - $country[152]['label'] = "Serbia and Montenegro"; - $country[153]['label'] = "Seychelles"; - $country[154]['label'] = "Sierra Leone"; - $country[155]['label'] = "Singapore"; - $country[156]['label'] = "Slovakia"; - $country[157]['label'] = "Slovenia"; - $country[158]['label'] = "Solomon Islands"; - $country[159]['label'] = "Somalia"; - $country[160]['label'] = "South Africa"; - $country[161]['label'] = "Spain"; - $country[162]['label'] = "Sri Lanka"; - $country[163]['label'] = "Sudan"; - $country[164]['label'] = "Suriname"; - $country[165]['label'] = "Swaziland"; - $country[166]['label'] = "Sweden"; - $country[167]['label'] = "Switzerland"; - $country[168]['label'] = "Syria"; - $country[169]['label'] = "Taiwan"; - $country[170]['label'] = "Tajikistan"; - $country[171]['label'] = "Tanzania"; - $country[172]['label'] = "Thailand"; - $country[173]['label'] = "Togo"; - $country[174]['label'] = "Tonga"; - $country[175]['label'] = "Trinidad and Tobago"; - $country[176]['label'] = "Tunisia"; - $country[177]['label'] = "Turkey"; - $country[178]['label'] = "Turkmenistan"; - $country[179]['label'] = "Tuvalu"; - $country[180]['label'] = "Uganda"; - $country[181]['label'] = "Ukraine"; - $country[182]['label'] = "United Arab Emirates"; - $country[183]['label'] = "United Kingdom"; - $country[184]['label'] = "United States"; - $country[185]['label'] = "Uruguay"; - $country[186]['label'] = "Uzbekistan"; - $country[187]['label'] = "Vanuatu"; - $country[188]['label'] = "Vatican City"; - $country[189]['label'] = "Venezuela"; - $country[190]['label'] = "Vietnam"; - $country[191]['label'] = "Yemen"; - $country[192]['label'] = "Zambia"; - $country[193]['label'] = "Zimbabwe"; - - - $country[0]['value'] = "Afghanistan"; - $country[1]['value'] = "Albania"; - $country[2]['value'] = "Algeria"; - $country[3]['value'] = "Andorra"; - $country[4]['value'] = "Antigua and Barbuda"; - $country[5]['value'] = "Argentina"; - $country[6]['value'] = "Armenia"; - $country[7]['value'] = "Australia"; - $country[8]['value'] = "Austria"; - $country[9]['value'] = "Azerbaijan"; - $country[10]['value'] = "Bahamas"; - $country[11]['value'] = "Bahrain"; - $country[12]['value'] = "Bangladesh"; - $country[13]['value'] = "Barbados"; - $country[14]['value'] = "Belarus"; - $country[15]['value'] = "Belgium"; - $country[16]['value'] = "Belize"; - $country[17]['value'] = "Benin"; - $country[18]['value'] = "Bhutan"; - $country[19]['value'] = "Bolivia"; - $country[20]['value'] = "Bosnia and Herzegovina"; - $country[21]['value'] = "Botswana"; - $country[22]['value'] = "Brazil"; - $country[23]['value'] = "Brunei"; - $country[24]['value'] = "Bulgaria"; - $country[25]['value'] = "Burkina Faso"; - $country[26]['value'] = "Burundi"; - $country[27]['value'] = "Cambodia"; - $country[28]['value'] = "Cameroon"; - $country[29]['value'] = "Canada"; - $country[30]['value'] = "Cape Verde"; - $country[31]['value'] = "Central African Republic"; - $country[32]['value'] = "Chad"; - $country[33]['value'] = "Chile"; - $country[34]['value'] = "China"; - $country[35]['value'] = "Colombia"; - $country[36]['value'] = "Comoros"; - $country[37]['value'] = "Congo"; - $country[38]['value'] = "Costa Rica"; - $country[39]['value'] = "Côte d'Ivoire"; - $country[40]['value'] = "Croatia"; - $country[41]['value'] = "Cuba"; - $country[42]['value'] = "Cyprus"; - $country[43]['value'] = "Czech Republic"; - $country[44]['value'] = "Denmark"; - $country[45]['value'] = "Djibouti"; - $country[46]['value'] = "Dominica"; - $country[47]['value'] = "Dominican Republic"; - $country[48]['value'] = "East Timor"; - $country[49]['value'] = "Ecuador"; - $country[50]['value'] = "Egypt"; - $country[51]['value'] = "El Salvador"; - $country[52]['value'] = "Equatorial Guinea"; - $country[53]['value'] = "Eritrea"; - $country[54]['value'] = "Estonia"; - $country[55]['value'] = "Ethiopia"; - $country[56]['value'] = "Fiji"; - $country[57]['value'] = "Finland"; - $country[58]['value'] = "France"; - $country[59]['value'] = "Gabon"; - $country[60]['value'] = "Gambia"; - $country[61]['value'] = "Georgia"; - $country[62]['value'] = "Germany"; - $country[63]['value'] = "Ghana"; - $country[64]['value'] = "Greece"; - $country[65]['value'] = "Grenada"; - $country[66]['value'] = "Guatemala"; - $country[67]['value'] = "Guinea"; - $country[68]['value'] = "Guinea-Bissau"; - $country[69]['value'] = "Guyana"; - $country[70]['value'] = "Haiti"; - $country[71]['value'] = "Honduras"; - $country[72]['value'] = "Hong Kong"; - $country[73]['value'] = "Hungary"; - $country[74]['value'] = "Iceland"; - $country[75]['value'] = "India"; - $country[76]['value'] = "Indonesia"; - $country[77]['value'] = "Iran"; - $country[78]['value'] = "Iraq"; - $country[79]['value'] = "Ireland"; - $country[80]['value'] = "Israel"; - $country[81]['value'] = "Italy"; - $country[82]['value'] = "Jamaica"; - $country[83]['value'] = "Japan"; - $country[84]['value'] = "Jordan"; - $country[85]['value'] = "Kazakhstan"; - $country[86]['value'] = "Kenya"; - $country[87]['value'] = "Kiribati"; - $country[88]['value'] = "North Korea"; - $country[89]['value'] = "South Korea"; - $country[90]['value'] = "Kuwait"; - $country[91]['value'] = "Kyrgyzstan"; - $country[92]['value'] = "Laos"; - $country[93]['value'] = "Latvia"; - $country[94]['value'] = "Lebanon"; - $country[95]['value'] = "Lesotho"; - $country[96]['value'] = "Liberia"; - $country[97]['value'] = "Libya"; - $country[98]['value'] = "Liechtenstein"; - $country[99]['value'] = "Lithuania"; - $country[100]['value'] = "Luxembourg"; - $country[101]['value'] = "Macedonia"; - $country[102]['value'] = "Madagascar"; - $country[103]['value'] = "Malawi"; - $country[104]['value'] = "Malaysia"; - $country[105]['value'] = "Maldives"; - $country[106]['value'] = "Mali"; - $country[107]['value'] = "Malta"; - $country[108]['value'] = "Marshall Islands"; - $country[109]['value'] = "Mauritania"; - $country[110]['value'] = "Mauritius"; - $country[111]['value'] = "Mexico"; - $country[112]['value'] = "Micronesia"; - $country[113]['value'] = "Moldova"; - $country[114]['value'] = "Monaco"; - $country[115]['value'] = "Mongolia"; - $country[116]['value'] = "Montenegro"; - $country[117]['value'] = "Morocco"; - $country[118]['value'] = "Mozambique"; - $country[119]['value'] = "Myanmar"; - $country[120]['value'] = "Namibia"; - $country[121]['value'] = "Nauru"; - $country[122]['value'] = "Nepal"; - $country[123]['value'] = "Netherlands"; - $country[124]['value'] = "New Zealand"; - $country[125]['value'] = "Nicaragua"; - $country[126]['value'] = "Niger"; - $country[127]['value'] = "Nigeria"; - $country[128]['value'] = "Norway"; - $country[129]['value'] = "Oman"; - $country[130]['value'] = "Pakistan"; - $country[131]['value'] = "Palau"; - $country[132]['value'] = "Panama"; - $country[133]['value'] = "Papua New Guinea"; - $country[134]['value'] = "Paraguay"; - $country[135]['value'] = "Peru"; - $country[136]['value'] = "Philippines"; - $country[137]['value'] = "Poland"; - $country[138]['value'] = "Portugal"; - $country[139]['value'] = "Puerto Rico"; - $country[140]['value'] = "Qatar"; - $country[141]['value'] = "Romania"; - $country[142]['value'] = "Russia"; - $country[143]['value'] = "Rwanda"; - $country[144]['value'] = "Saint Kitts and Nevis"; - $country[145]['value'] = "Saint Lucia"; - $country[146]['value'] = "Saint Vincent and the Grenadines"; - $country[147]['value'] = "Samoa"; - $country[148]['value'] = "San Marino"; - $country[149]['value'] = "Sao Tome and Principe"; - $country[150]['value'] = "Saudi Arabia"; - $country[151]['value'] = "Senegal"; - $country[152]['value'] = "Serbia and Montenegro"; - $country[153]['value'] = "Seychelles"; - $country[154]['value'] = "Sierra Leone"; - $country[155]['value'] = "Singapore"; - $country[156]['value'] = "Slovakia"; - $country[157]['value'] = "Slovenia"; - $country[158]['value'] = "Solomon Islands"; - $country[159]['value'] = "Somalia"; - $country[160]['value'] = "South Africa"; - $country[161]['value'] = "Spain"; - $country[162]['value'] = "Sri Lanka"; - $country[163]['value'] = "Sudan"; - $country[164]['value'] = "Suriname"; - $country[165]['value'] = "Swaziland"; - $country[166]['value'] = "Sweden"; - $country[167]['value'] = "Switzerland"; - $country[168]['value'] = "Syria"; - $country[169]['value'] = "Taiwan"; - $country[170]['value'] = "Tajikistan"; - $country[171]['value'] = "Tanzania"; - $country[172]['value'] = "Thailand"; - $country[173]['value'] = "Togo"; - $country[174]['value'] = "Tonga"; - $country[175]['value'] = "Trinidad and Tobago"; - $country[176]['value'] = "Tunisia"; - $country[177]['value'] = "Turkey"; - $country[178]['value'] = "Turkmenistan"; - $country[179]['value'] = "Tuvalu"; - $country[180]['value'] = "Uganda"; - $country[181]['value'] = "Ukraine"; - $country[182]['value'] = "United Arab Emirates"; - $country[183]['value'] = "United Kingdom"; - $country[184]['value'] = "United States"; - $country[185]['value'] = "Uruguay"; - $country[186]['value'] = "Uzbekistan"; - $country[187]['value'] = "Vanuatu"; - $country[188]['value'] = "Vatican City"; - $country[189]['value'] = "Venezuela"; - $country[190]['value'] = "Vietnam"; - $country[191]['value'] = "Yemen"; - $country[192]['value'] = "Zambia"; - $country[193]['value'] = "Zimbabwe"; - - //check for error - $error_class = ''; - $error_message = ''; - $span_required = ''; - $guidelines = ''; - global $lang; - - if(!empty($element->is_error)){ - $error_class = 'class="error"'; - $error_message = "

    {$element->error_message}

    "; - } - - //check for required - if($element->is_required){ - $span_required = "id}\" class=\"required\">*"; - } - - //check for guidelines - if(!empty($element->guidelines)){ - $guidelines = "

    id}\">{$element->guidelines}

    "; - } - - - //create country markup, if no default value, provide a blank option - if(empty($element->default_value)){ - $country_markup = ''."\n"; - }else{ - $country_markup = ''; - } - - foreach ($country as $data){ - if($data['value'] == $element->default_value){ - $selected = 'selected="selected"'; - }else{ - $selected = ''; - } - - //check for populated value, use it instead of default value - if(!empty($element->populated_value['element_'.$element->id.'_6']['default_value'])){ - $selected = ''; - if($element->populated_value['element_'.$element->id.'_6']['default_value'] == $data['value']){ - $selected = 'selected="selected"'; - } - } - - $country_markup .= "\n"; - } - -$element_markup = << - - -
    - - -
    - -
    - - -
    - -
    - - -
    - -
    - - -
    - -
    - - -
    - -
    - - -
     {$guidelines} {$error_message} - -EOT; - - - return $element_markup; - } - - - //Captcha - function display_captcha($element){ - - if(!empty($element->error_message)){ - $error_code = $element->error_message; - }else{ - $error_code = ''; - } - - //check for error - $error_class = ''; - $error_message = ''; - $span_required = ''; - $guidelines = ''; - global $lang; - - if(!empty($element->is_error)){ - - if($element->error_message == 'el-required'){ - $element->error_message = $lang['captcha_required']; - $error_code = ''; - }elseif ($element->error_message == 'incorrect-captcha-sol'){ - $element->error_message = $lang['captcha_mismatch']; - }else{ - $element->error_message = "{$lang['captcha_error']} ({$element->error_message})"; - } - - $error_class = 'class="error"'; - $error_message = "

    {$element->error_message}

    "; - } - - if(!empty($_SERVER['HTTPS'])){ - $use_ssl = true; - }else{ - $use_ssl = false; - } - - - if(USE_INTERNAL_CAPTCHA === true){ //use the internal captcha if enabled - - $machform_path = ''; - if(!empty($element->machform_path)){ - $machform_path = $element->machform_path; - } - - $timestamp = time(); //use this as paramater for captcha.php, to prevent caching - - $element->title = $lang['captcha_title']; -$captcha_html = <<
    -
    -EOT; - - }else{ //otherwise use the reCAPTCHA - $captcha_html = recaptcha_get_html(RECAPTCHA_PUBLIC_KEY, $error_code,$use_ssl); - - if($captcha_html === false){ - $domain = str_replace('www.','',$_SERVER['SERVER_NAME']); - $captcha_html = "Error! You have enabled CAPTCHA but no API key available.

    To use CAPTCHA you must get an API key from http://recaptcha.net/api/getkey

    After getting the API key, save them into your config.php file."; - $error_class = 'class="error"'; - } - } - - - if(function_exists("form{$element->form_id}_hook_pre_captcha")){ - $custom_precaptcha = call_user_func("form{$element->form_id}_hook_pre_captcha"); - } - -$element_markup = << {$custom_precaptcha} - -
    - {$captcha_html} -
    - {$guidelines} {$error_message} - -EOT; - - return $element_markup; - } - - - //Main function to display a form - //There are few mode when displaying a form - //1. New blank form (form populated with default values) - //2. New form with error (displayed when 1 submitted and having error, form populated with user inputs) - //3. Edit form (form populated with data from db) - //4. Edit form with error (displayed when 3 submiteed and having error) - function display_form($form_id,$populated_values=array(),$error_elements=array(),$custom_error='',$edit_id=0,$embed=false){ - - global $lang; - - $agent_info = new uagent_info(); - - //if there is custom error, don't show other errors - if(!empty($custom_error)){ - $error_elements = array(); - } - - //get form properties data - $query = "select - form_name, - form_description, - form_redirect, - form_success_message, - form_password, - form_unique_ip, - form_frame_height, - form_has_css, - form_active, - form_captcha, - form_review - from - ap_forms - where - form_id='$form_id'"; - $result = do_query($query); - $row = do_fetch_result($result); - - $form = new stdClass(); - - $form->id = $form_id; - $form->name = $row['form_name']; - $form->description = $row['form_description']; - $form->redirect = $row['form_redirect']; - $form->success_message = $row['form_success_message']; - $form->password = $row['form_password']; - $form->frame_height = $row['form_frame_height']; - $form->unique_ip = $row['form_unique_ip']; - $form->has_css = $row['form_has_css']; - $form->active = $row['form_active']; - $form->captcha = $row['form_captcha']; - $form->review = $row['form_review']; - - if(empty($error_elements)){ - $form->is_error = 0; - }else{ - $form->is_error = 1; - } - - //if this form has review enabled and user are having $_SESSION['review_id'], then populate the form with that values - if(!empty($form->review) && !empty($_SESSION['review_id']) && empty($populated_values)){ - $populated_values = get_entry_values($form_id,$_SESSION['review_id'],true); - } - - //get elements data - //get element options first and store it into array - $query = "select - element_id, - option_id, - `position`, - `option`, - option_is_default - from - ap_element_options - where - form_id='$form_id' and live=1 - order by - element_id asc,`position` asc"; - $result = do_query($query); - while($row = do_fetch_result($result)){ - $element_id = $row['element_id']; - $option_id = $row['option_id']; - $options_lookup[$element_id][$option_id]['position'] = $row['position']; - $options_lookup[$element_id][$option_id]['option'] = $row['option']; - $options_lookup[$element_id][$option_id]['option_is_default'] = $row['option_is_default']; - } - - - //get elements data - $element = array(); - $query = "select - element_id, - element_title, - element_guidelines, - element_size, - element_is_required, - element_is_unique, - element_is_private, - element_type, - element_position, - element_default_value, - element_constraint - from - ap_form_elements - where - form_id='$form_id' - order by - element_position asc"; - $result = do_query($query); - - $j=0; - $has_calendar = false; //assume the form doesn't have calendar, so it won't load calendar.js - while($row = do_fetch_result($result)){ - $element_id = $row['element_id']; - - //lookup element options first - if(!empty($options_lookup[$element_id])){ - $element_options = array(); - $i=0; - foreach ($options_lookup[$element_id] as $option_id=>$data){ - $element_options[$i] = new stdClass(); - $element_options[$i]->id = $option_id; - $element_options[$i]->option = $data['option']; - $element_options[$i]->is_default = $data['option_is_default']; - $element_options[$i]->is_db_live = 1; - $i++; - } - } - - - //populate elements - $element[$j] = new stdClass(); - $element[$j]->title = nl2br($row['element_title']); - $element[$j]->guidelines = $row['element_guidelines']; - $element[$j]->size = $row['element_size']; - $element[$j]->is_required = $row['element_is_required']; - $element[$j]->is_unique = $row['element_is_unique']; - $element[$j]->is_private = $row['element_is_private']; - $element[$j]->type = $row['element_type']; - $element[$j]->position = $row['element_position']; - $element[$j]->id = $row['element_id']; - $element[$j]->is_db_live = 1; - - //this data came from db or form submit - //being used to display edit form or redisplay form with errors and previous inputs - //this should be optimized in the future, only pass necessary data, not the whole array - $element[$j]->populated_value = $populated_values; - - //if there is file upload type, set form enctype to multipart - if($row['element_type'] == 'file'){ - $form_enc_type = 'enctype="multipart/form-data"'; - } - - if(!empty($error_elements[$element[$j]->id])){ - $element[$j]->is_error = 1; - $element[$j]->error_message = $error_elements[$element[$j]->id]; - } - - - $element[$j]->default_value = htmlspecialchars($row['element_default_value']); - - - $element[$j]->constraint = $row['element_constraint']; - if(!empty($element_options)){ - $element[$j]->options = $element_options; - }else{ - $element[$j]->options = ''; - } - - - //check for calendar type - if($row['element_type'] == 'date' || $row['element_type'] == 'europe_date'){ - $has_calendar = true; - } - - $j++; - } - - - //add captcha if enable - if(!empty($form->captcha) && (empty($edit_id))){ - $element[$j] = new stdClass(); - $element[$j]->type = 'captcha'; - $element[$j]->form_id = $form_id; - $element[$j]->is_private = 0; - - if(!empty($error_elements['element_captcha'])){ - $element[$j]->is_error = 1; - $element[$j]->error_message = $error_elements['element_captcha']; - } - } - - //generate html markup for each element - $all_element_markup = ''; - foreach ($element as $element_data){ - if($element_data->is_private && empty($_SESSION['logged_in'])){ //don't show private element - continue; - } - $all_element_markup .= call_user_func('display_'.$element_data->type,$element_data); - } - - if(!empty($custom_error)){ - $form->error_message =<< -

    {$custom_error}

    - -EOT; - }elseif(!empty($error_elements)){ - $form->error_message =<< -

    {$lang['error_title']}

    -

    {$lang['error_desc']}

    - -EOT; - } - - - //display edit_id if there is any - if(!empty($edit_id)){ - $edit_markup = "\n"; - }else{ - $edit_markup = ''; - } - - if(empty($form->review)){ - $button_text = $lang['submit_button']; - }else{ - $button_text = $lang['continue_button']; - } - - //markup for submit button - $button_markup =<< - - {$edit_markup} - - - -EOT; - - //check for specific form css, if any, use it instead - if($form->has_css){ - $css_dir = DATA_DIR."/form_{$form_id}/css/"; - } - - if(!empty($form->password) && empty($_SESSION['user_authenticated'])){ //if form require password and password hasn't set yet - $show_password_form = true; - - }elseif (!empty($form->password) && !empty($_SESSION['user_authenticated']) && $_SESSION['user_authenticated'] != $form_id){ //if user authenticated but not for this form - $show_password_form = true; - - }else{ //user authenticated for this form, or no password required - $show_password_form = false; - } - - - if(empty($form->active)){ //if form is not active, don't show the fields - $form_desc_div =''; - $all_element_markup = ''; - $button_markup = ''; - $ul_class = 'class="password"'; - $custom_element =<< -

    {$lang['form_inactive']}

    - -EOT; - }elseif($show_password_form){ //don't show form description if this page is password protected and user not authenticated - $form_desc_div =''; - $all_element_markup = ''; - $custom_element =<< -

    {$lang['form_pass_title']}

    -
    - - -
    - -EOT; - $ul_class = 'class="password"'; - }else{ - if(!empty($form->name) || !empty($form->description)){ - $form->description = nl2br($form->description); - $form_desc_div =<< -

    {$form->name}

    -

    {$form->description}

    - -EOT; - } - } - - if($embed){ - $embed_class = 'class="embed"'; - } - - if($has_calendar){ - $calendar_js = ''; - }else{ - $calendar_js = ''; - } - - - if ($agent_info->DetectIphoneOrIpod()) { - $soy_un_movil = 'SOY UN MOVIL'; - } - else { - $soy_un_movil = 'NO SOY UN MOVIL'; - } - - //If you would like to remove the "Powered by MachForm" link, please contact us at customer.service@appnitro.com before doing so - $form_markup = << - - - -{$form->name} - - -{$calendar_js} - - - - - - -
    - -

    {$form->name}

    -{$soy_un_movil} -
    - {$form_desc_div} -
      - {$form->error_message} - {$all_element_markup} - {$custom_element} - {$button_markup} -
    -
    - -
    - - - -EOT; - return $form_markup; - - } - - //this function is similar as display_form, but designed to display form without IFRAME - function display_integrated_form($form_id,$populated_values=array(),$error_elements=array(),$custom_error='',$edit_id=0,$machform_path){ - - global $lang; - - //if there is custom error, don't show other errors - if(!empty($custom_error)){ - $error_elements = array(); - } - - //get form properties data - $query = "select - form_name, - form_description, - form_redirect, - form_success_message, - form_password, - form_unique_ip, - form_frame_height, - form_has_css, - form_active, - form_captcha, - form_review - from - ap_forms - where - form_id='$form_id'"; - $result = do_query($query); - $row = do_fetch_result($result); - - $form = new stdClass(); - - $form->id = $form_id; - $form->name = $row['form_name']; - $form->description = $row['form_description']; - $form->redirect = $row['form_redirect']; - $form->success_message = $row['form_success_message']; - $form->password = $row['form_password']; - $form->frame_height = $row['form_frame_height']; - $form->unique_ip = $row['form_unique_ip']; - $form->has_css = $row['form_has_css']; - $form->active = $row['form_active']; - $form->captcha = $row['form_captcha']; - $form->review = $row['form_review']; - - if(empty($error_elements)){ - $form->is_error = 0; - }else{ - $form->is_error = 1; - } - - //if this form has review enabled and user are having $_SESSION['review_id'], then populate the form with that values - if(!empty($form->review) && !empty($_SESSION['review_id']) && empty($populated_values)){ - $param['machform_path'] = $machform_path; - $populated_values = get_entry_values($form_id,$_SESSION['review_id'],true,$param); - } - - //get elements data - //get element options first and store it into array - $query = "select - element_id, - option_id, - `position`, - `option`, - option_is_default - from - ap_element_options - where - form_id='$form_id' and live=1 - order by - element_id asc,`position` asc"; - $result = do_query($query); - while($row = do_fetch_result($result)){ - $element_id = $row['element_id']; - $option_id = $row['option_id']; - $options_lookup[$element_id][$option_id]['position'] = $row['position']; - $options_lookup[$element_id][$option_id]['option'] = $row['option']; - $options_lookup[$element_id][$option_id]['option_is_default'] = $row['option_is_default']; - } - - - //get elements data - $element = array(); - $query = "select - element_id, - element_title, - element_guidelines, - element_size, - element_is_required, - element_is_unique, - element_is_private, - element_type, - element_position, - element_default_value, - element_constraint - from - ap_form_elements - where - form_id='$form_id' - order by - element_position asc"; - $result = do_query($query); - - $j=0; - $has_calendar = false; - while($row = do_fetch_result($result)){ - $element_id = $row['element_id']; - - //lookup element options first - if(!empty($options_lookup[$element_id])){ - $element_options = array(); - $i=0; - foreach ($options_lookup[$element_id] as $option_id=>$data){ - $element_options[$i] = new stdClass(); - $element_options[$i]->id = $option_id; - $element_options[$i]->option = $data['option']; - $element_options[$i]->is_default = $data['option_is_default']; - $element_options[$i]->is_db_live = 1; - $i++; - } - } - - - //populate elements - $element[$j] = new stdClass(); - $element[$j]->title = nl2br($row['element_title']); - - if(empty($edit_id)){ - $element[$j]->guidelines = $row['element_guidelines']; - }else{ - $element[$j]->guidelines = ''; - } - - $element[$j]->size = $row['element_size']; - $element[$j]->is_required = $row['element_is_required']; - $element[$j]->is_unique = $row['element_is_unique']; - $element[$j]->is_private = $row['element_is_private']; - $element[$j]->type = $row['element_type']; - $element[$j]->position = $row['element_position']; - $element[$j]->id = $row['element_id']; - $element[$j]->is_db_live = 1; - $element[$j]->machform_path = $machform_path; - - //this data came from db or form submit - //being used to display edit form or redisplay form with errors and previous inputs - //this should be optimized in the future, only pass necessary data, not the whole array - $element[$j]->populated_value = $populated_values; - - //if there is file upload type, set form enctype to multipart - if($row['element_type'] == 'file'){ - $form_enc_type = 'enctype="multipart/form-data"'; - } - - if(!empty($error_elements[$element[$j]->id])){ - $element[$j]->is_error = 1; - $element[$j]->error_message = $error_elements[$element[$j]->id]; - } - - - $element[$j]->default_value = htmlspecialchars($row['element_default_value']); - - - $element[$j]->constraint = $row['element_constraint']; - if(!empty($element_options)){ - $element[$j]->options = $element_options; - }else{ - $element[$j]->options = ''; - } - - //check for calendar type - if($row['element_type'] == 'date' || $row['element_type'] == 'europe_date'){ - $has_calendar = true; - } - - $j++; - } - - - //add captcha if enable - if(!empty($form->captcha) && (empty($edit_id))){ - $element[$j] = new stdClass(); - $element[$j]->type = 'captcha'; - $element[$j]->form_id = $form_id; - $element[$j]->machform_path = $machform_path; - - if(!empty($error_elements['element_captcha'])){ - $element[$j]->is_error = 1; - $element[$j]->error_message = $error_elements['element_captcha']; - } - } - - //generate html markup for each element - $all_element_markup = ''; - foreach ($element as $element_data){ - if($element_data->is_private && empty($_SESSION['logged_in'])){ //don't show private element - continue; - } - $all_element_markup .= call_user_func('display_'.$element_data->type,$element_data); - } - - if(!empty($custom_error)){ - $form->error_message =<< -

    {$custom_error}

    - -EOT; - }elseif(!empty($error_elements)){ - $form->error_message =<< -

    {$lang['error_title']}

    -

    {$lang['error_desc']}

    - -EOT; - } - - if(!empty($form->password) && empty($_SESSION['user_authenticated'])){ //if form require password and password hasn't set yet - $show_password_form = true; - - }elseif (!empty($form->password) && !empty($_SESSION['user_authenticated']) && $_SESSION['user_authenticated'] != $form_id){ //if user authenticated but not for this form - $show_password_form = true; - - }else{ //user authenticated for this form, or no password required - $show_password_form = false; - } - - //display edit_id if there is any - if(!empty($edit_id)){ - $edit_markup = "\n"; - $submit_button = ''; - }else{ - $edit_markup = ''; - - if(!empty($form->review) && !$show_password_form){ - $submit_button = ''."\n".''; - }else{ - $submit_button = ''."\n".''; - } - } - - - //markup for submit button - $button_markup =<< - - {$edit_markup} - {$submit_button} - -EOT; - - //check for specific form css, if any, use it instead - if($form->has_css){ - $css_dir = DATA_DIR."/form_{$form_id}/css/"; - } - - - if(empty($form->active)){ //if form is not active, don't show the fields - $form_desc_div =''; - $all_element_markup = ''; - $button_markup = ''; - $ul_class = 'class="password"'; - $custom_element =<< -

    {$lang['form_inactive']}

    - -EOT; - }elseif($show_password_form){ //don't show form description if this page is password protected and user not authenticated - $form_desc_div =''; - $all_element_markup = ''; - $custom_element =<< -

    {$lang['form_pass_title']}

    -
    - - -
    - -EOT; - $ul_class = 'class="password"'; - }else{ - if(!empty($form->name) || !empty($form->description)){ - $form->description = nl2br($form->description); - $form_desc_div =<< -

    {$form->name}

    -

    {$form->description}

    - -EOT; - } - } - - - $embed_class = 'class="integrated"'; - - if(empty($edit_id)){ - $css_markup = ""; - }else{ - $css_markup = ""; - } - - if($has_calendar){ - $calendar_js = ""; - }else{ - $calendar_js = ''; - } - - - //If you would like to remove the "Powered by MachForm" link, please contact us at customer.service@appnitro.com before doing so - $form_markup =<< -{$calendar_js} - -
    - -
    - -

    {$form->name}

    -
    - {$form_desc_div} -
      - {$form->error_message} - {$all_element_markup} - {$custom_element} - {$button_markup} -
    -
    - -
    -
    -EOT; - return $form_markup; - - } - - function display_success($form_id,$embed=false){ - //get form properties data - $query = "select - form_success_message, - form_has_css, - form_name - from - ap_forms - where - form_id='$form_id'"; - - $result = do_query($query); - $row = do_fetch_result($result); - - $form = new stdClass(); - - $form->id = $form_id; - $form->success_message = nl2br($row['form_success_message']); - $form->has_css = $row['form_has_css']; - $form->name = $row['form_name']; - - - //check for specific form css, if any, use it instead - if($form->has_css){ - $css_dir = DATA_DIR."/form_{$form_id}/css/"; - } - - if($embed){ - $embed_class = 'class="embed"'; - } - - $form_markup = << - - - -{$form->name} - - - - - -
    - -

    Appnitro MachForm

    - -
    -

    {$form->success_message}

    -
    - -
    - - - -EOT; - return $form_markup; - } - - //this function is similar as display_success, but designed to display success page without IFRAME - function display_integrated_success($form_id,$machform_path){ - //get form properties data - $query = "select - form_success_message, - form_has_css - from - ap_forms - where - form_id='$form_id'"; - - $result = do_query($query); - $row = do_fetch_result($result); - - $form = new stdClass(); - - $form->id = $form_id; - $form->success_message = nl2br($row['form_success_message']); - $form->has_css = $row['form_has_css']; - - - //check for specific form css, if any, use it instead - if($form->has_css){ - $css_dir = DATA_DIR."/form_{$form_id}/css/"; - } - - - $form_markup = << -
    -
    -

    Appnitro MachForm

    - -
    -

    {$form->success_message}

    -
    - -
    -
    -EOT; - return $form_markup; - } - - //display form confirmation page - function display_form_review($form_id,$record_id,$embed=false){ - global $lang; - - //get form properties data - $query = "select - form_has_css, - form_redirect - from - ap_forms - where - form_id='$form_id'"; - - $result = do_query($query); - $row = do_fetch_result($result); - - - $form_has_css = $row['form_has_css']; - $form_redirect = $row['form_redirect']; - - //prepare entry data for previewing - $param['strip_download_link'] = true; - $param['review_mode'] = true; - $param['show_attach_image'] = true; - $entry_details = get_entry_details($form_id,$record_id,$param); - - $entry_data = ''."\n"; - - $toggle = false; - foreach ($entry_details as $data){ - if($toggle){ - $toggle = false; - $row_style = 'class="alt"'; - }else{ - $toggle = true; - $row_style = ''; - } - - $entry_data .= "\n"; - $entry_data .= "\n"; - $entry_data .= "\n"; - $entry_data .= "\n"; - } - - $entry_data .= '
    {$data['label']}".nl2br($data['value'])."
    '; - - //check for specific form css, if any, use it instead - if($form_has_css){ - $css_dir = DATA_DIR."/form_{$form_id}/css/"; - } - - if($embed){ - $embed_class = 'class="embed"'; - } - - $form_markup = << - - - -{$form_name} - - - - - - - - -
    - -

    Appnitro MachForm

    -
    -
    -

    {$lang['review_title']}

    -

    {$lang['review_message']}

    -
    - {$entry_data} -
      -
    • - - - -
    • -
    -
    - -
    - - - -EOT; - return $form_markup; - } - - //display form confirmation page for integrated embed code - function display_integrated_form_review($form_id,$record_id,$machform_path){ - global $lang; - - //get form properties data - $query = "select - form_has_css, - form_redirect - from - ap_forms - where - form_id='$form_id'"; - - $result = do_query($query); - $row = do_fetch_result($result); - - - $form_has_css = $row['form_has_css']; - $form_redirect = $row['form_redirect']; - - //prepare entry data for previewing - $param['strip_download_link'] = true; - $param['review_mode'] = true; - $param['show_attach_image'] = true; - $param['machform_path'] = $machform_path; - $entry_details = get_entry_details($form_id,$record_id,$param); - - $entry_data = ''."\n"; - - $toggle = false; - foreach ($entry_details as $data){ - if($toggle){ - $toggle = false; - $row_style = 'class="alt"'; - }else{ - $toggle = true; - $row_style = ''; - } - - $entry_data .= "\n"; - $entry_data .= "\n"; - $entry_data .= "\n"; - $entry_data .= "\n"; - } - - $entry_data .= '
    {$data['label']}".nl2br($data['value'])."
    '; - - //check for specific form css, if any, use it instead - if($form_has_css){ - $css_dir = DATA_DIR."/form_{$form_id}/css/"; - } - - if($embed){ - $embed_class = 'class="embed"'; - } - - $form_action = str_replace(array("&show_review=1","?show_review=1"),"",$_SERVER['REQUEST_URI']); - - $form_markup = << - - - - -
    -
    -

    Appnitro MachForm

    -
    -
    -

    {$lang['review_title']}

    -

    {$lang['review_message']}

    -
    - {$entry_data} -
      -
    • - - - -
    • -
    -
    - -
    -
    -EOT; - return $form_markup; - } +DetectIphoneOrIpod()) { + return \mobile_view_funcions\display_form($form_id, $populated_values, $error_elements, $custom_error, $edit_id, $embed); + } + else { + return \standard_view_funcions\display_form($form_id, $populated_values, $error_elements, $custom_error, $edit_id, $embed); + } + } + + //this function is similar as display_form, but designed to display form without IFRAME + function display_integrated_form($form_id,$populated_values=array(),$error_elements=array(),$custom_error='',$edit_id=0,$machform_path){ + + $agent_info = new uagent_info(); + + if ($agent_info->DetectIphoneOrIpod()) { + return \mobile_view_funcions\display_integrated_form($form_id, $populated_values, $error_elements, $custom_error, $edit_id, $machform_path); + } + else { + return \standard_view_funcions\display_integrated_form($form_id, $populated_values, $error_elements, $custom_error, $edit_id, $machform_path); + } + } + + function display_success($form_id,$embed=false){ + + $agent_info = new uagent_info(); + + if ($agent_info->DetectIphoneOrIpod()) { + return \mobile_view_funcions\display_success($form_id, $embed); + } + else { + return \standard_view_funcions\display_success($form_id, $embed); + } + } + + //this function is similar as display_success, but designed to display success page without IFRAME + function display_integrated_success($form_id,$machform_path){ + + $agent_info = new uagent_info(); + + if ($agent_info->DetectIphoneOrIpod()) { + return \mobile_view_funcions\display_integrated_success($form_id, $machform_path); + } + else { + return \standard_view_funcions\display_integrated_success($form_id, $machform_path); + } + } + + //display form confirmation page + function display_form_review($form_id,$record_id,$embed=false){ + + $agent_info = new uagent_info(); + + if ($agent_info->DetectIphoneOrIpod()) { + return \mobile_view_funcions\display_form_review($form_id, $record_id, $embed); + } + else { + return \standard_view_funcions\display_form_review($form_id, $record_id, $embed); + } + } + + //display form confirmation page for integrated embed code + function display_integrated_form_review($form_id,$record_id,$machform_path){ + + $agent_info = new uagent_info(); + + if ($agent_info->DetectIphoneOrIpod()) { + return \mobile_view_funcions\display_integrated_form_review($form_id, $record_id, $machform_path); + } + else { + return \standard_view_funcions\display_integrated_form_review($form_id, $record_id, $machform_path); + } + } ?> \ No newline at end of file diff --git a/mobile/apple/css/developer-style.css b/mobile/apple/css/developer-style.css new file mode 100644 index 0000000..b50c80a --- /dev/null +++ b/mobile/apple/css/developer-style.css @@ -0,0 +1,1138 @@ +/*iWebKit css 5.04 by Christopher Plieger*/ +body { + position: relative; + margin: 0; + -webkit-text-size-adjust: none; + min-height: 416px; + font-family: helvetica,sans-serif; + -webkit-background-size:0.438em 100%; + background: -webkit-gradient(linear,left top,right top,from(#c5ccd4), color-stop(71%, #c5ccd4), color-stop(72%, #cbd2d8), to(#cbd2d8)); + -webkit-touch-callout: none; +} +.center { + margin: auto; + display: block; + text-align: center!important; +} +img { + border: 0; +} +a:hover .arrow { + background-position: 0 -13px!important; +} +@media screen and (max-width: 320px) +{ +#topbar { + height: 44px; +} +#title { + line-height: 44px; + height: 44px; + font-size: 16pt; +} +#tributton a:first-child, #duobutton a:first-child { + width: 101px; +} +#tributton a:last-child, #duobutton a:last-child { + width: 101px; +} +#tributton a { + width: 106px; +} +#duobutton .links { + width: 195px; +} +#tributton .links { + width: 302px; +} +#doublead { + width: 300px!important; +} +#duoselectionbuttons { + width: 191px; + height: 30px; + top: 7px; +} +#triselectionbuttons { + width: 290px; + height: 30px; + top: 7px; +} +#triselectionbuttons a:first-child, #duoselectionbuttons a:first-child { + width: 99px; + height: 28px; + line-height: 28px; +} +#triselectionbuttons a { + width: 98px; + height: 28px; + line-height: 28px; +} +#triselectionbuttons a:last-child, #duoselectionbuttons a:last-child { + width: 99px; + height: 28px; + line-height: 28px; +} +.searchbox form { + width: 272px; +} +.searchbox input[type="text"] { + width: 275px; +} +.menu .name { + max-width: 77%; +}.checkbox .name { + max-width: 190px; +}.radiobutton .name { + max-width: 190px; +} +#leftnav a, #rightnav a, #leftbutton a, #rightbutton a, #blueleftbutton a, #bluerightbutton a { + line-height: 30px; + height: 30px; +} +#leftnav img, #rightnav img { + margin-top: 4px; +} +#leftnav, #leftbutton, #blueleftbutton { + top: 7px; +} +#rightnav, #rightbutton, #bluerightbutton { + top: 7px; +} +.musiclist .name { + max-width:55% +} +.textbox textarea { + width: 280px; +} +.bigfield input{ + width:295px +} +} +@media screen and (min-width: 321px) +{ +#topbar { + height: 32px; +} +#title { + line-height: 32px; + height: 32px; + font-size: 13pt; +} +.menu .name { + max-width: 85%; +}.checkbox .name { + max-width: 75%; +}.radiobutton .name { + max-width: 75%; +} +#leftnav a, #rightnav a, #leftbutton a, #rightbutton a, #blueleftbutton a, #bluerightbutton a { + line-height: 24px; + height: 24px; +} +#leftnav img, #rightnav img { + margin-top: 4px; + height: 70%; +} +#leftnav, #leftbutton, #blueleftbutton { + top: 4px; +} +#rightnav, #rightbutton, #bluerightbutton { + top: 4px; +} +.musiclist .name { + max-width:70% +} +.textbox textarea { + width: 440px; +} +#tributton a:first-child, #duobutton a:first-child { + width: 152px; +} +#tributton a:last-child, #duobutton a:last-child { + width: 152px; +} +#tributton a { + width: 154px; +} +#tributton .links { + width: 452px; +} +#duobutton .links { + width: 298px; +} +#doublead { + width: 350px!important; +} +#duoselectionbuttons { + width: 293px; + height: 24px; + top: 4px; +} +#triselectionbuttons { + width: 450px; + height: 24px; + top: 4px; +} +#triselectionbuttons a:first-child, #duoselectionbuttons a:first-child { + width: 150px; + height: 22px; + line-height: 22px; +} +#triselectionbuttons a { + width: 156px; + height: 22px; + line-height: 22px; +} +#triselectionbuttons a:last-child, #duoselectionbuttons a:last-child { + width: 150px; + height: 22px; + line-height: 22px; +} +.searchbox form { + width: 432px; +} +.searchbox input[type="text"] { + width: 435px; +} +.bigfield input{ + width:455px +} +} +#topbar.black { + background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#858585), color-stop(3%, #636363), color-stop(50%, #202020), color-stop(51%, black), color-stop(97%, black), to(#262626)); +} +#topbar.transparent { + background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(133,133,133,0.7)), color-stop(3%, rgba(99,99,99,0.7)), color-stop(50%, rgba(32,32,32,0.7)), color-stop(51%, rgba(0,0,0,0.7)), color-stop(97%, rgba(0,0,0,0.7)), to(rgba(38,38,38,0.7))); +} +#topbar { + position: relative; + left: 0; + top: 0; + width: auto; + background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#cdd5df), color-stop(3%, #b0bccd), color-stop(50%, #889bb3), color-stop(51%, #8195af), color-stop(97%, #6d84a2), to(#2d3642)); + margin-bottom: 13px; +} +#title { + position: absolute; + font-weight: bold; + top: 0; + left: 0; + right: 0; + padding: 0 10px; + text-align: center; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + color: #FFF; + text-shadow: rgba(0,0,0,0.6) 0 -1px 0; +} +#content { + width: 100%; + position: relative; + min-height: 250px; + margin-top: 10px; + height: auto; + z-index: 0; + overflow: hidden; +} +#footer { + text-align: center; + position: relative; + margin: 20px 10px 0; + height: auto; + width: auto; + bottom: 10px; +} +.ipodlist #footer, .ipodlist #footer a { + text-shadow: #FFF 0 -1px 0; +} +#footer a, #footer { + text-decoration: none; + font-size: 9pt; + color: #4C4C4C; + text-shadow: #FFF 0 1px 0; +} +.pageitem { + -webkit-border-radius: 8px; + background-color: #fff; + border: #878787 solid 1px; + font-size: 12pt; + overflow: hidden; + padding: 0; + position: relative; + display: block; + height: auto; + width: auto; + margin: 3px 9px 17px; + list-style: none; +} +.textbox { + padding: 5px 9px; + position: relative; + overflow: hidden; + border-top: 1px solid #878787; +} +#tributton, #duobutton { + height: 44px; + background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#cdd4d9), color-stop(3%, #c0c9cf), color-stop(97%, #abb7bf),to(#81929f)); + margin: -13px 0 13px 0; + text-align: center; +} +#tributton .links, #duobutton .links { + height: 30px; + -webkit-border-image: url("../images/tributton.png") 0 4 0 4; + border-width: 0 4px 0 4px; + margin: 0 auto 0px auto; + position: relative; + top: 7px; +} +#tributton a:first-child, #duobutton a:first-child { + border-right: 1px solid #6d7e91; + -webkit-border-top-left-radius: 5px; + -webkit-border-bottom-left-radius: 5px; + margin-left: -4px; +} +#tributton a, #duobutton a { + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + height: 27px; + display: inline-block; + line-height: 27px; + margin-top: 1px; + font: bold 13px; + text-decoration: none; + color: #3f5c84; + text-shadow: #FFF 0 1px 0; +} +#duobutton a:last-child { + border: 0; +} +#tributton a:last-child { + border-left: 1px solid #6d7e91; +} +#tributton a:last-child, #duobutton a:last-child { + -webkit-border-top-right-radius: 5px; + -webkit-border-bottom-right-radius: 5px; + margin-right: -4px; +} +#tributton a:hover, #tributton a#pressed, #duobutton a:hover, #duobutton a#pressed { + background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#7b8b9f), color-stop(3%, #8c9baf), to(#647792)); + color: white; + text-shadow: black 0 -1px 0; +} +#triselectionbuttons, #duoselectionbuttons { + -webkit-border-image: url('../images/navbutton.png') 0 5 0 5; + border-width: 0 5px 0 5px; + position: relative; + margin: auto; +} +#duoselectionbuttons a:first-child { + border: 0; +} +#triselectionbuttons a:first-child { + border-right: solid 1px #556984; +} +#triselectionbuttons a:first-child, #duoselectionbuttons a:first-child { + margin-left: -4px; + -webkit-border-top-left-radius: 6px; + -webkit-border-bottom-left-radius: 6px; +} +#triselectionbuttons a, #duoselectionbuttons a { + display: inline-block; + text-align: center; + color: white; + text-decoration: none; + margin-top: 1px; + text-shadow: black 0 -1px 0; + background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#909baa), color-stop(3%, #a5b4c6), color-stop(50%, #798eaa), color-stop(51%, #6b83a1), color-stop(97%, #6e85a3), to(#526379)); +} +#triselectionbuttons a:last-child, #duoselectionbuttons a:last-child { + border-left: solid 1px #556984; + margin-right: -4px; + -webkit-border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; +} +#triselectionbuttons a:hover, #triselectionbuttons a#pressed, #duoselectionbuttons a:hover, #duoselectionbuttons a#pressed { + background: none; +} +#doublead { + height: 83px!important; + position: relative; + margin: 0 auto 13px auto; +} +#doublead a:first-child { + left: 0!important; +} +#doublead a:last-child { + right: 0!important; +} +#doublead a { + width: 147px!important; + height: 83px!important; + position: absolute; + -webkit-border-radius: 8px; + display: block; + background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#7c7c7c), color-stop(3%, #858585), color-stop(97%, #a4a4a4),to(#c2c2c2)); +} +li#doublead { + margin-top: 25px; + margin-bottom: 10px!important; + background: none; +} +li#doublead:hover { + background: none; +} +.searchbox { + height: 44px; + background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#f1f3f4), color-stop(3%, #e0e4e7), color-stop(50%, #c7cfd4), color-stop(51%, #bec7cd), color-stop(97%, #b4bec6), to(#8999a5)); + margin: -13px 0 13px 0; + width: 100%; +} +.searchbox form { + height: 24px; + -webkit-border-image: url('../images/searchfield.png') 4 14 1 24; + border-width: 4px 14px 1px 24px; + display: block; + position: relative; + top: 8px; + margin: auto; +} +fieldset { + border: 0; + margin: 0; + padding: 0; +} +.searchbox input[type="text"] { + border: 0; + -webkit-appearance: none; + height: 18px; + float: left; + font-size: 13px; + padding: 0; + position: relative; + top: 2px; + left: 2px; +} +.textbox img { + max-width: 100%; +} +.textbox p { + margin-top: 2px; +} +.textbox p { + margin-top: 2px; + color: #000; + margin-bottom: 2px; + text-align: justify; +} +.textbox img { + max-width: 100%; +} +.textbox ul { + margin: 3px 0 3px 0; + list-style: circle!important; +} +.textbox li { + margin: 0!important; +} +.pageitem li:first-child, .pageitem li.form:first-child { + border-top: 0; +} +.menu, .checkbox, .radiobutton, .select, li.button, li.bigfield, li.smallfield { + position: relative; + list-style-type: none; + display: block; + height: 43px; + overflow: hidden; + border-top: 1px solid #878787; + width: auto; +} +.pageitem li:first-child:hover, .pageitem li:first-child a, .radiobutton:first-child input, .select:first-child select, li.button:first-child input, .bigfield:first-child input { + -webkit-border-top-left-radius: 8px; + -webkit-border-top-right-radius: 8px; +} +.pageitem li:last-child:hover, .pageitem li:last-child a, .radiobutton:last-child input, .select:last-child select, li.button:last-child input, .bigfield:last-child input { + -webkit-border-bottom-left-radius: 8px; + -webkit-border-bottom-right-radius: 8px; +} +.menu:hover, .store:hover, .list #content li a:hover, .list .withimage:hover, .applist li:hover:nth-child(n),.ipodlist li:hover:nth-child(n) { + background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#058cf5), to(#015fe6)); +} +.ipodlist li:hover:nth-child(n) .name,.ipodlist li:hover:nth-child(n) .time{border:0} +.menu a:hover .name, .store:hover .starcomment, .store:hover .name, .store:hover .comment, .list .withimage a:hover .comment { + color: #fff; +} +.menu a:hover .comment { + color: #CCF; +} +.menu a { + display: block; + height: 43px; + width: auto; + text-decoration: none; +} +.menu a img { + width: auto; + height: 32px; + margin: 5px 0 0 5px; + float: left; +} +.menu .name, .checkbox .name, .radiobutton .name { + margin: 11px 0 0 7px; + width: auto; + color: #000; + font-weight: bold; + font-size: 17px; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + float: left; +} +.menu .comment { + margin: 11px 30px 0 0; + width: auto; + font-size: 17px; + text-overflow: ellipsis; + overflow: hidden; + max-width: 75%; + white-space: nowrap; + float: right; + color: #324f85; +} +.menu .arrow, .store .arrow, .musiclist .arrow, .list .arrow { + position: absolute; + width: 8px!important; + height: 13px!important; + right: 10px; + top: 15px; + margin: 0!important; + background: url("../images/arrow.png") 0 0 no-repeat; +} +.applist .arrow { + position: absolute; + width: 8px!important; + height: 13px!important; + right: 10px; + top: 29px; + margin: 0!important; + background: url("../images/arrow.png") 0 0 no-repeat; +} +.store { + height: 90px; + border-top: #878787 solid 1px; + overflow: hidden; + position: relative; +} +.store a { + width: 100%; + height: 90px; + display: block; + text-decoration: none; + position: absolute; +} +.store .image { + position: absolute; + left: 0; + top: 0; + height: 90px; + width: 90px; + display: block; + background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#eff1f5), to(#d6dce6)); + -webkit-background-size: 90px; +} +.applist .image { + width: 57px; + height: 57px; + display: block; + position: absolute; + top: 7px; + left: 11px; + -webkit-border-radius: 8px; + -webkit-box-shadow: 0 2px 3px rgb(0,0,0); + background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#7c7c7c), color-stop(3%, #858585), color-stop(97%, #a4a4a4),to(#c2c2c2)); + -webkit-background-size: 57px; +} +li:first-child.store .image, .store:first-child a { + -webkit-border-top-left-radius: 8px 8px; +} +li:last-child.store .image, .store:last-child a { + -webkit-border-bottom-left-radius: 8px 8px; +} +.store .name, .applist .name { + font-size: 15px; + white-space: nowrap; + display: block; + overflow: hidden; + color: #000; + max-width: 60%; + text-overflow: ellipsis; + font-weight: bold; +} +.store .name { + position: absolute; + left: 95px; + top: 35px; +} +.applist .name { + position: absolute; + top: 27px; + left: 80px; + text-shadow: #eeeeee 0 1px 0; +} +.store .comment, .list .withimage .comment, .applist .comment, .applist .price { + font-size: 12px; + color: #7f7f7f; + display: block; + width: 60%; + font-weight: bold; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.store .comment, .list .withimage .comment { + margin: 16px 0 0 95px; +} +.applist .comment { + position: absolute; + top: 9px; + left: 80px; + text-shadow: #eeeeee 0 1px 0; + color: #3b3b3b; +} +.applist .price { + position: absolute; + top: 29px; + right: 26px; + text-shadow: #eeeeee 0 1px 0; + text-align: right; + color: #3b3b3b; +} +.store .arrow, .list .withimage .arrow { + top: 39px!important; +} +.store .stars0, .store .stars1, .store .stars2, .store .stars3, .store .stars4, .store .stars5 { + position: absolute; + top: 56px; + left: 95px; + width: 65px; + height: 18px; + display: block!important; +} +.store .stars0 { + background: url('../images/0starsborder.png'); +} +.store .stars1 { + background: url('../images/1starsborder.png'); +} +.store .stars2 { + background: url('../images/2starsborder.png'); +} +.store .stars3 { + background: url('../images/3starsborder.png'); +} +.store .stars4 { + background: url('../images/4starsborder.png'); +} +.store .stars5, .applist .stars5 { + background: url('../images/5stars.png'); +} +.applist .stars0, .applist .stars1, .applist .stars2, .applist .stars3, .applist .stars4, .applist .stars5 { + position: absolute; + top: 46px; + left: 79px; + width: 65px; + height: 18px; + display: block!important; +} +.applist .stars0 { + background: url('../images/0stars.png'); +} +.applist .stars1 { + background: url('../images/1stars.png'); +} +.applist .stars2 { + background: url('../images/2stars.png'); +} +.applist .stars3 { + background: url('../images/3stars.png'); +} +.applist .stars4 { + background: url('../images/4stars.png'); +} +.applist .starcomment { + left: 147px; + top: 46px; + color: #3b3b3b; +} +.starcomment { + position: absolute; + left: 165px; + top: 56px; + font-size: 12px; + color: #7f7f7f; + font-weight: lighter; +} +.applist a:hover .name, .applist a:hover .starcomment, .applist a:hover .comment, .applist a:hover .price { + color: white; + text-shadow: none; +} +.graytitle { + position: relative; + font-weight: bold; + font-size: 17px; + right: 20px; + left: 9px; + color: #4C4C4C; + text-shadow: #FFF 0 1px 0; + padding: 1px 0 3px 8px; +} +.header { + display: block; + font-weight: bold; + color: rgb(73,102,145); + font-size: 12pt; + margin-bottom: 6px; + line-height: 14pt; +} +.musiclist ul, .ipodlist ul, .applist ul { + padding: 0; +} +.ipodlist ul { + margin: 0; +} +.musiclist li:nth-child(odd) { + background: #dddee0 +} +.applist li:nth-child(even) { + background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#adadb0), color-stop(98%, #adadb0), to(#898a8d)) +} +.applist li:nth-child(odd) { + background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#98989c), color-stop(98%, #98989c), to(#898a8d)) + +} +.ipodlist li:nth-child(even) { + background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#414041), color-stop(3%, rgba(45,45,45,0.2)), to(rgba(45,45,45,0.2))) +} +.ipodlist li:nth-child(odd) { + background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#414041), color-stop(3%, rgba(50,50,50,0.4)), to(rgba(50,50,50,0.4))) +} +.musiclist #content li, .ipodlist #content li, .applist #content li { + list-style: none; + width: auto; + position: relative; +} +.musiclist #content li { + height: 44px; + border-bottom: 1px solid #e6e6e6; +} +.applist #content li { + height: 70px; + margin-bottom: 1px; +} +.ipodlist #content li { + height: 42px; +} +.ipodlist #content { + background: -webkit-gradient(radial, 50% -70, 0, 50% 0, 200, from(#444444), to(rgb(13, 13, 13))); + top: 16px; +} +.musiclist #content li a, .ipodlist #content li a { + text-decoration: none; + color: #000; + width: 100%!important; + height: 100%; + display: block; +} +.applist #content li a { + text-decoration: none; + color: #000; + width: 100%; + height: 100%; + display: block; +} +.musiclist .number, .musiclist .name, .musiclist .time { + display: inline-block; + height: 44px; + font-weight: bold; + font-size: large; + width: 44px; + text-align: center; + line-height: 46px; +} +.musiclist .name { + margin-left: 0; + width: auto!important; + font-size: medium; + padding-left: 5px; + border-left: solid 1px #e6e6e6; +} +.musiclist .time { + color: #848484; + font-size: medium; + margin-left: 4px; + width: auto!important; + font-weight: normal; +} +.musiclist { + background-image: none!important; + background-color: #cbcccf; +} +.ipodlist { + background-image: none!important; + background-color: black; +} +.applist { + background-image: none!important; + background-color: #98989c; +} +.ipodlist span { + color: white; + font-weight: bold; + font-size: 14px; +} +.musiclist .name { + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; +} +.musiclist a:hover .name { + color: #0380f2; +} +.ipodlist .number { + width: 23px; + display: block; + float: left; + height: 42px; + margin-right: 3px; + text-align: right; + line-height: 43px; +} +.ipodlist .stop, .ipodlist .auto, .ipodlist .play { + width: 18px; + display: block; + float: left; + height: 10px; + text-align: right; + line-height: 43px; + margin-top: 16px; +} +.ipodlist .play { + background: url('../images/play.gif') no-repeat; +} +.ipodlist a:hover .auto, .ipodlist a:hover .play { + background: url('../images/play.gif') no-repeat; + background-position: 0 -10px; +} +.ipodlist .time { + width: 48px; + float: right; + border-left: solid #414041 1px; + display: block; + height: 42px; + text-align: center; + line-height: 43px; +} +.ipodlist .name { + display: block; + float: left; + width: inherit; + height: 42px; + text-overflow: ellipsis; + line-height: 42px; + padding-left: 5px; + overflow: hidden; + white-space: nowrap; + max-width: 62%; + border-left: solid #414041 1px; +} +.list .title { + background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#a5b1ba), color-stop(3%, #909faa), color-stop(97%, #b5bfc6), to(#989ea4)); + height: 22px!important; + width: 100%; + color: #fff; + font-weight: bold; + font-size: 16px; + text-shadow: gray 0 1px 0; + line-height: 22px; + padding-left: 20px; + border-bottom: none!important; +} +.list ul { + background-color: #fff; + width: 100%; + overflow: hidden; + padding: 0; + margin: 0; +} +.list #content li { + height: 40px; + border-bottom: 1px solid #e1e1e1; + list-style: none; +} +.list { + background-color: #fff; + background-image: none!important; +} +.list #footer { + margin-top: 24px!important; +} +.ipodlist #footer { + margin-top: 48px!important; +} +.list #content li a { + padding: 9px 0 0 20px; + font-size: large; + font-weight: bold; + position: relative; + display: block; + color: #000; + text-decoration: none; + height: 32px; +} +.list #content li a .name { + text-overflow: ellipsis; + overflow: hidden; + max-width: 93%; + white-space: nowrap; + display: block; +} +.list #content li a:hover { + color: #fff; +} +.list #content { + margin-top: -13px!important; +} +.ipodlist #content, .musiclist #content, .applist #content { + margin-top: -29px!important; +} +.list ul img { + width: 90px; + height: 90px; + position: absolute; + left: 0; + top: 0; +} +.list .withimage { + height: 90px!important; +} +.list .withimage .name { + margin: 13px 0 0 90px; + text-overflow: ellipsis; + overflow: hidden; + max-width: 63%!important; + white-space: nowrap; +} +.list .withimage .comment { + margin: 10px auto auto 90px !important; + max-width: 63%!important; +} +.list .withimage a, .list .withimage:hover a { + height: 81px!important; +} +#leftnav, #leftbutton, #blueleftbutton { + position: absolute; + font-size: 12px; + left: 9px; + font-weight: bold; +} +#leftnav, #leftbutton, #rightnav, #rightbutton, #blueleftbutton, #bluerightbutton { + z-index: 5000; +} +#leftnav a, #rightnav a, #leftbutton a, #rightbutton a, #blueleftbutton a, #bluerightbutton a { + display: block; + color: #fff; + text-shadow: rgba(0,0,0,0.6) 0 -1px 0; + text-decoration: none; +} +.black #leftnav a:first-child, .transparent #leftnav a:first-child { + -webkit-border-image: url("../images/navleftblack.png") 0 5 0 13; +} +.black #leftnav a, .transparent #leftnav a { + -webkit-border-image: url("../images/navlinkleftblack.png") 0 5 0 13; +} +.black #rightnav a:first-child, .transparent #rightnav a:first-child { + -webkit-border-image: url("../images/navrightblack.png") 0 13 0 5; +} +.black #rightnav a, .transparent #rightnav a { + -webkit-border-image: url("../images/navlinkrightblack.png") 0 13 0 5; +} +.black #leftbutton a, .black #rightbutton a, .transparent #leftbutton a, .transparent #rightbutton a { + -webkit-border-image: url("../images/navbuttonblack.png") 0 5 0 5; +} +#leftnav a:first-child { + z-index: 2; + -webkit-border-image: url("../images/navleft.png") 0 5 0 13; + border-width: 0 5px 0 13px; + -webkit-border-top-left-radius: 16px; + -webkit-border-bottom-left-radius: 16px; + -webkit-border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + width: auto; +} +#leftnav a { + -webkit-border-image: url("../images/navlinkleft.png") 0 5 0 13; + z-index: 3; + margin-left: -4px; + border-width: 0 5px 0 13px; + padding-right: 4px; + -webkit-border-top-left-radius: 16px; + -webkit-border-bottom-left-radius: 16px; + -webkit-border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + float: left; +} +#rightnav, #rightbutton, #bluerightbutton { + position: absolute; + font-size: 12px; + right: 9px; + font-weight: bold; +} +#rightnav a { + -webkit-border-image: url("../images/navlinkright.png") 0 13 0 5; + z-index: 3; + margin-right: -4px; + border-width: 0 13px 0 5px; + padding-left: 4px; + -webkit-border-top-left-radius: 6px; + -webkit-border-bottom-left-radius: 6px; + float: right; + -webkit-border-top-right-radius: 16px; + -webkit-border-bottom-right-radius: 16px; +} +#rightnav a:first-child { + z-index: 2; + -webkit-border-top-left-radius: 6px; + -webkit-border-bottom-left-radius: 6px; + -webkit-border-image: url("../images/navright.png") 0 13 0 5; + border-width: 0 13px 0 5px; + -webkit-border-top-right-radius: 16px; + -webkit-border-bottom-right-radius: 16px; +} +#leftbutton a, #rightbutton a { + -webkit-border-image: url("../images/navbutton.png") 0 5 0 5; + border-width: 0 5px; + -webkit-border-radius: 6px; +} +#blueleftbutton a, #bluerightbutton a { + -webkit-border-image: url("../images/navbuttonblue.png") 0 5 0 5; + border-width: 0 5px; + -webkit-border-radius: 6px; +} +input[type="checkbox"] { + width: 94px; + height: 27px; + background: url('../images/checkbox.png'); + -webkit-appearance: none; + border: 0; + float: right; + margin: 8px 4px 0 0; +} +input[type="checkbox"]:checked { + background-position: 0 27px; +} +input[type="radio"] { + -webkit-appearance: none; + border: 0; + width: 100%; + height: 100%; + z-index: 2; + position: absolute; + left: 0; + margin: 0; + -webkit-border-radius: 0; +} +input[type="radio"]:checked { + background: url('../images/radiobutton.png') no-repeat; + background-position: right center; +} +.radiobutton .name { + z-index: 1; +} +select { + -webkit-appearance: none; + height: 100%; + width: 100%; + border: 0; +} +.select select { + -webkit-border-radius: 0; + color: #000; + font-weight: bold; + font-size: 17px; +} +.select option { + max-width: 90%; +} +.select .arrow { + background: url('../images/arrow.png'); + width: 8px; + height: 13px; + display: block; + -webkit-transform: rotate(90deg); + position: absolute; + right: 10px; + top: 18px; +} +.button input { + width: 100%; + height: 100%; + -webkit-appearance: none; + border: 0; + -webkit-border-radius: 0; + font-weight: bold; + font-size: 17px; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + background: none; +} +.textbox textarea { + padding: 0; + margin-top: 5px; + font-size: medium; +} +.bigfield input { + -webkit-appearance: none; + border: 0; + height: 100%; + padding: 0; + -webkit-border-radius: 0; + background: transparent; + font-weight: bold; + font-size: 17px; + padding-left: 5px; +} +.smallfield .name { + width: 48%; + position: absolute; + left: 0; + font-size: 17px; + text-overflow: ellipsis; + white-space: nowrap; + font-weight: bold; + line-height: 44px; + font-size: 17px; + padding-left: 5px; + overflow: hidden; +} +.smallfield input { + width: 50%; + position: absolute; + right: 0; + height: 44px; + -webkit-appearance: none; + border: none; + padding: 0; + background: transparent; + -webkit-border-radius: 0; + font-weight: bold; + font-size: 17px; +} +.smallfield:first-child input { + -webkit-border-top-right-radius: 8px; +} +.smallfield:last-child input { + -webkit-border-bottom-right-radius: 8px; +} diff --git a/mobile/apple/css/forms.css b/mobile/apple/css/forms.css new file mode 100644 index 0000000..d5d8145 --- /dev/null +++ b/mobile/apple/css/forms.css @@ -0,0 +1,72 @@ +.required { + color: #CC0000; +} + +.guidelines { + position:relative; + font-weight:normal; + font-size:14px; + right:20px; + left:9px; + color:#4C4C4C; + padding:1px 0 3px 8px; + margin: 0; + width:90%; +} + +.error +{ + position:relative; + font-weight:normal; + font-size:14px; + left:9px; + padding:1px 8px 3px 8px; + color:#CC0000 !important; + margin: 0; + width:90%; +} + +ul.error_message +{ + background-color:#FFDFDF !important; + border-color:#c7a9aa; +} + +ul.success_message +{ + background-color:#ccffcc !important; + border-color:#89ba8a; +} + +input.small +{ + width:25%; +} + +input.medium +{ + width:50%; +} + +input.large +{ + width:99%; +} + +textarea.small +{ + width:98%; + height:2.5em; +} + +textarea.medium +{ + width:98%; + height:5em; +} + +textarea.large +{ + width:98%; + height:7.5em; +} diff --git a/mobile/apple/css/style.css b/mobile/apple/css/style.css new file mode 100644 index 0000000..af839a2 --- /dev/null +++ b/mobile/apple/css/style.css @@ -0,0 +1 @@ +/*iWebKit css 5.04 by Christopher Plieger*/body{position:relative;margin:0;-webkit-text-size-adjust:none;min-height:416px;font-family:helvetica,sans-serif;-webkit-background-size:0.438em 100%;background:-webkit-gradient(linear,left top,right top,from(#c5ccd4),color-stop(71%, #c5ccd4),color-stop(72%, #cbd2d8),to(#cbd2d8));-webkit-touch-callout:none}.center{margin:auto;display:block;text-align:center!important}img{border:0}a:hover .arrow{background-position:0 -13px!important}@media screen and (max-width:320px){#topbar{height:44px}#title{line-height:44px;height:44px;font-size:16pt}#tributton a:first-child,#duobutton a:first-child{width:101px}#tributton a:last-child,#duobutton a:last-child{width:101px}#tributton a{width:106px}#duobutton .links{width:195px}#tributton .links{width:302px}#doublead{width:300px!important}#duoselectionbuttons{width:191px;height:30px;top:7px}#triselectionbuttons{width:290px;height:30px;top:7px}#triselectionbuttons a:first-child,#duoselectionbuttons a:first-child{width:99px;height:28px;line-height:28px}#triselectionbuttons a{width:98px;height:28px;line-height:28px}#triselectionbuttons a:last-child,#duoselectionbuttons a:last-child{width:99px;height:28px;line-height:28px}.searchbox form{width:272px}.searchbox input[type="text"]{width:275px}.menu .name{max-width:77%}.checkbox .name{max-width:190px}.radiobutton .name{max-width:190px}#leftnav a,#rightnav a,#leftbutton a,#rightbutton a,#blueleftbutton a,#bluerightbutton a{line-height:30px;height:30px}#leftnav img,#rightnav img{margin-top:4px}#leftnav,#leftbutton,#blueleftbutton{top:7px}#rightnav,#rightbutton,#bluerightbutton{top:7px}.musiclist .name{max-width:55%}.textbox textarea{width:280px}.bigfield input{width:295px}}@media screen and (min-width:321px){#topbar{height:32px}#title{line-height:32px;height:32px;font-size:13pt}.menu .name{max-width:85%}.checkbox .name{max-width:75%}.radiobutton .name{max-width:75%}#leftnav a,#rightnav a,#leftbutton a,#rightbutton a,#blueleftbutton a,#bluerightbutton a{line-height:24px;height:24px}#leftnav img,#rightnav img{margin-top:4px;height:70%}#leftnav,#leftbutton,#blueleftbutton{top:4px}#rightnav,#rightbutton,#bluerightbutton{top:4px}.musiclist .name{max-width:70%}.textbox textarea{width:440px}#tributton a:first-child,#duobutton a:first-child{width:152px}#tributton a:last-child,#duobutton a:last-child{width:152px}#tributton a{width:154px}#tributton .links{width:452px}#duobutton .links{width:298px}#doublead{width:350px!important}#duoselectionbuttons{width:293px;height:24px;top:4px}#triselectionbuttons{width:450px;height:24px;top:4px}#triselectionbuttons a:first-child,#duoselectionbuttons a:first-child{width:150px;height:22px;line-height:22px}#triselectionbuttons a{width:156px;height:22px;line-height:22px}#triselectionbuttons a:last-child,#duoselectionbuttons a:last-child{width:150px;height:22px;line-height:22px}.searchbox form{width:432px}.searchbox input[type="text"]{width:435px}.bigfield input{width:455px}}#topbar.black{background:-webkit-gradient(linear,0% 0%,0% 100%,from(#858585),color-stop(3%,#636363),color-stop(50%,#202020),color-stop(51%,black),color-stop(97%,black),to(#262626))}#topbar.transparent{background:-webkit-gradient(linear,0% 0%,0% 100%,from(rgba(133,133,133,0.7)),color-stop(3%,rgba(99,99,99,0.7)),color-stop(50%,rgba(32,32,32,0.7)),color-stop(51%,rgba(0,0,0,0.7)),color-stop(97%,rgba(0,0,0,0.7)),to(rgba(38,38,38,0.7)))}#topbar{position:relative;left:0;top:0;width:auto;background:-webkit-gradient(linear,0% 0%,0% 100%,from(#cdd5df),color-stop(3%,#b0bccd),color-stop(50%,#889bb3),color-stop(51%,#8195af),color-stop(97%,#6d84a2),to(#2d3642));margin-bottom:13px}#title{position:absolute;font-weight:bold;top:0;left:0;right:0;padding:0 10px;text-align:center;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;color:#FFF;text-shadow:rgba(0,0,0,0.6) 0 -1px 0}#content{width:100%;position:relative;min-height:250px;margin-top:10px;height:auto;z-index:0;overflow:hidden}#footer{text-align:center;position:relative;margin:20px 10px 0;height:auto;width:auto;bottom:10px}.ipodlist #footer,.ipodlist #footer a{text-shadow:#FFF 0 -1px 0}#footer a,#footer{text-decoration:none;font-size:9pt;color:#4C4C4C;text-shadow:#FFF 0 1px 0}.pageitem{-webkit-border-radius:8px;background-color:#fff;border:#878787 solid 1px;font-size:12pt;overflow:hidden;padding:0;position:relative;display:block;height:auto;width:auto;margin:3px 9px 17px;list-style:none}.textbox{padding:5px 9px;position:relative;overflow:hidden;border-top:1px solid #878787}#tributton,#duobutton{height:44px;background:-webkit-gradient(linear,0% 0%,0% 100%,from(#cdd4d9),color-stop(3%,#c0c9cf),color-stop(97%,#abb7bf),to(#81929f));margin:-13px 0 13px 0;text-align:center}#tributton .links,#duobutton .links{height:30px;-webkit-border-image:url("../images/tributton.png") 0 4 0 4;border-width:0 4px 0 4px;margin:0 auto 0px auto;position:relative;top:7px}#tributton a:first-child,#duobutton a:first-child{border-right:1px solid #6d7e91;-webkit-border-top-left-radius:5px;-webkit-border-bottom-left-radius:5px;margin-left:-4px}#tributton a,#duobutton a{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;height:27px;display:inline-block;line-height:27px;margin-top:1px;font:bold 13px;text-decoration:none;color:#3f5c84;text-shadow:#FFF 0 1px 0}#duobutton a:last-child{border:0}#tributton a:last-child{border-left:1px solid #6d7e91}#tributton a:last-child,#duobutton a:last-child{-webkit-border-top-right-radius:5px;-webkit-border-bottom-right-radius:5px;margin-right:-4px}#tributton a:hover,#tributton a#pressed,#duobutton a:hover,#duobutton a#pressed{background:-webkit-gradient(linear,0% 0%,0% 100%,from(#7b8b9f),color-stop(3%,#8c9baf),to(#647792));color:white;text-shadow:black 0 -1px 0}#triselectionbuttons,#duoselectionbuttons{-webkit-border-image:url('../images/navbutton.png') 0 5 0 5;border-width:0 5px 0 5px;position:relative;margin:auto}#duoselectionbuttons a:first-child{border:0}#triselectionbuttons a:first-child{border-right:solid 1px #556984}#triselectionbuttons a:first-child,#duoselectionbuttons a:first-child{margin-left:-4px;-webkit-border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px}#triselectionbuttons a,#duoselectionbuttons a{display:inline-block;text-align:center;color:white;text-decoration:none;margin-top:1px;text-shadow:black 0 -1px 0;background:-webkit-gradient(linear,0% 0%,0% 100%,from(#909baa),color-stop(3%,#a5b4c6),color-stop(50%,#798eaa),color-stop(51%,#6b83a1),color-stop(97%,#6e85a3),to(#526379))}#triselectionbuttons a:last-child,#duoselectionbuttons a:last-child{border-left:solid 1px #556984;margin-right:-4px;-webkit-border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px}#triselectionbuttons a:hover,#triselectionbuttons a#pressed,#duoselectionbuttons a:hover,#duoselectionbuttons a#pressed{background:none}#doublead{height:83px!important;position:relative;margin:0 auto 13px auto}#doublead a:first-child{left:0!important}#doublead a:last-child{right:0!important}#doublead a{width:147px!important;height:83px!important;position:absolute;-webkit-border-radius:8px;display:block;background:-webkit-gradient(linear,0% 0%,0% 100%,from(#7c7c7c),color-stop(3%,#858585),color-stop(97%,#a4a4a4),to(#c2c2c2))}li#doublead{margin-top:25px;margin-bottom:10px!important;background:none}li#doublead:hover{background:none}.searchbox{height:44px;background:-webkit-gradient(linear,0% 0%,0% 100%,from(#f1f3f4),color-stop(3%,#e0e4e7),color-stop(50%,#c7cfd4),color-stop(51%,#bec7cd),color-stop(97%,#b4bec6),to(#8999a5));margin:-13px 0 13px 0;width:100%}.searchbox form{height:24px;-webkit-border-image:url('../images/searchfield.png') 4 14 1 24;border-width:4px 14px 1px 24px;display:block;position:relative;top:8px;margin:auto}fieldset{border:0;margin:0;padding:0}.searchbox input[type="text"]{border:0;-webkit-appearance:none;height:18px;float:left;font-size:13px;padding:0;position:relative;top:2px;left:2px}.textbox img{max-width:100%}.textbox p{margin-top:2px}.textbox p{margin-top:2px;color:#000;margin-bottom:2px;text-align:justify}.textbox img{max-width:100%}.textbox ul{margin:3px 0 3px 0;list-style:circle!important}.textbox li{margin:0!important}.pageitem li:first-child,.pageitem li.form:first-child{border-top:0}.menu,.checkbox,.radiobutton,.select,li.button,li.bigfield,li.smallfield{position:relative;list-style-type:none;display:block;height:43px;overflow:hidden;border-top:1px solid #878787;width:auto}.pageitem li:first-child:hover,.pageitem li:first-child a,.radiobutton:first-child input,.select:first-child select,li.button:first-child input,.bigfield:first-child input{-webkit-border-top-left-radius:8px;-webkit-border-top-right-radius:8px}.pageitem li:last-child:hover,.pageitem li:last-child a,.radiobutton:last-child input,.select:last-child select,li.button:last-child input,.bigfield:last-child input{-webkit-border-bottom-left-radius:8px;-webkit-border-bottom-right-radius:8px}.menu:hover,.store:hover,.list #content li a:hover,.list .withimage:hover,.applist li:hover:nth-child(n),.ipodlist li:hover:nth-child(n){background:-webkit-gradient(linear,0% 0%,0% 100%,from(#058cf5),to(#015fe6))}.ipodlist li:hover:nth-child(n) .name,.ipodlist li:hover:nth-child(n) .time{border:0}.menu a:hover .name,.store:hover .starcomment,.store:hover .name,.store:hover .comment,.list .withimage a:hover .comment{color:#fff}.menu a:hover .comment{color:#CCF}.menu a{display:block;height:43px;width:auto;text-decoration:none}.menu a img{width:auto;height:32px;margin:5px 0 0 5px;float:left}.menu .name,.checkbox .name,.radiobutton .name{margin:11px 0 0 7px;width:auto;color:#000;font-weight:bold;font-size:17px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;float:left}.menu .comment{margin:11px 30px 0 0;width:auto;font-size:17px;text-overflow:ellipsis;overflow:hidden;max-width:75%;white-space:nowrap;float:right;color:#324f85}.menu .arrow,.store .arrow,.musiclist .arrow,.list .arrow{position:absolute;width:8px!important;height:13px!important;right:10px;top:15px;margin:0!important;background:url("../images/arrow.png") 0 0 no-repeat}.applist .arrow{position:absolute;width:8px!important;height:13px!important;right:10px;top:29px;margin:0!important;background:url("../images/arrow.png") 0 0 no-repeat}.store{height:90px;border-top:#878787 solid 1px;overflow:hidden;position:relative}.store a{width:100%;height:90px;display:block;text-decoration:none;position:absolute}.store .image{position:absolute;left:0;top:0;height:90px;width:90px;display:block;background:-webkit-gradient(linear,0% 0%,0% 100%,from(#eff1f5),to(#d6dce6));-webkit-background-size:90px}.applist .image{width:57px;height:57px;display:block;position:absolute;top:7px;left:11px;-webkit-border-radius:8px;-webkit-box-shadow:0 2px 3px rgb(0,0,0);background:-webkit-gradient(linear,0% 0%,0% 100%,from(#7c7c7c),color-stop(3%,#858585),color-stop(97%,#a4a4a4),to(#c2c2c2));-webkit-background-size:57px}li:first-child.store .image,.store:first-child a{-webkit-border-top-left-radius:8px 8px}li:last-child.store .image,.store:last-child a{-webkit-border-bottom-left-radius:8px 8px}.store .name,.applist .name{font-size:15px;white-space:nowrap;display:block;overflow:hidden;color:#000;max-width:60%;text-overflow:ellipsis;font-weight:bold}.store .name{position:absolute;left:95px;top:35px}.applist .name{position:absolute;top:27px;left:80px;text-shadow:#eee 0 1px 0}.store .comment,.list .withimage .comment,.applist .comment,.applist .price{font-size:12px;color:#7f7f7f;display:block;width:60%;font-weight:bold;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.store .comment,.list .withimage .comment{margin:16px 0 0 95px}.applist .comment{position:absolute;top:9px;left:80px;text-shadow:#eee 0 1px 0;color:#3b3b3b}.applist .price{position:absolute;top:29px;right:26px;text-shadow:#eee 0 1px 0;text-align:right;color:#3b3b3b}.store .arrow,.list .withimage .arrow{top:39px!important}.store .stars0,.store .stars1,.store .stars2,.store .stars3,.store .stars4,.store .stars5{position:absolute;top:56px;left:95px;width:65px;height:18px;display:block!important}.store .stars0{background:url('../images/0starsborder.png')}.store .stars1{background:url('../images/1starsborder.png')}.store .stars2{background:url('../images/2starsborder.png')}.store .stars3{background:url('../images/3starsborder.png')}.store .stars4{background:url('../images/4starsborder.png')}.store .stars5,.applist .stars5{background:url('../images/5stars.png')}.applist .stars0,.applist .stars1,.applist .stars2,.applist .stars3,.applist .stars4,.applist .stars5{position:absolute;top:46px;left:79px;width:65px;height:18px;display:block!important}.applist .stars0{background:url('../images/0stars.png')}.applist .stars1{background:url('../images/1stars.png')}.applist .stars2{background:url('../images/2stars.png')}.applist .stars3{background:url('../images/3stars.png')}.applist .stars4{background:url('../images/4stars.png')}.applist .starcomment{left:147px;top:46px;color:#3b3b3b}.starcomment{position:absolute;left:165px;top:56px;font-size:12px;color:#7f7f7f;font-weight:lighter}.applist a:hover .name,.applist a:hover .starcomment,.applist a:hover .comment,.applist a:hover .price{color:white;text-shadow:none}.graytitle{position:relative;font-weight:bold;font-size:17px;right:20px;left:9px;color:#4C4C4C;text-shadow:#FFF 0 1px 0;padding:1px 0 3px 8px}.header{display:block;font-weight:bold;color:rgb(73,102,145);font-size:12pt;margin-bottom:6px;line-height:14pt}.musiclist ul,.ipodlist ul,.applist ul{padding:0}.ipodlist ul{margin:0}.musiclist li:nth-child(odd){background:#dddee0}.applist li:nth-child(even){background:-webkit-gradient(linear,0% 0%,0% 100%,from(#adadb0),color-stop(98%,#adadb0),to(#898a8d))}.applist li:nth-child(odd){background:-webkit-gradient(linear,0% 0%,0% 100%,from(#98989c),color-stop(98%,#98989c),to(#898a8d))}.ipodlist li:nth-child(even){background:-webkit-gradient(linear,0% 0%,0% 100%,from(#414041),color-stop(3%,rgba(45,45,45,0.2)),to(rgba(45,45,45,0.2)))}.ipodlist li:nth-child(odd){background:-webkit-gradient(linear,0% 0%,0% 100%,from(#414041),color-stop(3%,rgba(50,50,50,0.4)),to(rgba(50,50,50,0.4)))}.musiclist #content li,.ipodlist #content li,.applist #content li{list-style:none;width:auto;position:relative}.musiclist #content li{height:44px;border-bottom:1px solid #e6e6e6}.applist #content li{height:70px;margin-bottom:1px}.ipodlist #content li{height:42px}.ipodlist #content{background:-webkit-gradient(radial,50% -70,0,50% 0,200,from(#444),to(rgb(13,13,13)));top:16px}.musiclist #content li a,.ipodlist #content li a{text-decoration:none;color:#000;width:100%!important;height:100%;display:block}.applist #content li a{text-decoration:none;color:#000;width:100%;height:100%;display:block}.musiclist .number,.musiclist .name,.musiclist .time{display:inline-block;height:44px;font-weight:bold;font-size:large;width:44px;text-align:center;line-height:46px}.musiclist .name{margin-left:0;width:auto!important;font-size:medium;padding-left:5px;border-left:solid 1px #e6e6e6}.musiclist .time{color:#848484;font-size:medium;margin-left:4px;width:auto!important;font-weight:normal}.musiclist{background-image:none!important;background-color:#cbcccf}.ipodlist{background-image:none!important;background-color:black}.applist{background-image:none!important;background-color:#98989c}.ipodlist span{color:white;font-weight:bold;font-size:14px}.musiclist .name{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.musiclist a:hover .name{color:#0380f2}.ipodlist .number{width:23px;display:block;float:left;height:42px;margin-right:3px;text-align:right;line-height:43px}.ipodlist .stop,.ipodlist .auto,.ipodlist .play{width:18px;display:block;float:left;height:10px;text-align:right;line-height:43px;margin-top:16px}.ipodlist .play{background:url('../images/play.gif') no-repeat}.ipodlist a:hover .auto,.ipodlist a:hover .play{background:url('../images/play.gif') no-repeat;background-position:0 -10px}.ipodlist .time{width:48px;float:right;border-left:solid #414041 1px;display:block;height:42px;text-align:center;line-height:43px}.ipodlist .name{display:block;float:left;width:inherit;height:42px;text-overflow:ellipsis;line-height:42px;padding-left:5px;overflow:hidden;white-space:nowrap;max-width:62%;border-left:solid #414041 1px}.list .title{background:-webkit-gradient(linear,0% 0%,0% 100%,from(#a5b1ba),color-stop(3%,#909faa),color-stop(97%,#b5bfc6),to(#989ea4));height:22px!important;width:100%;color:#fff;font-weight:bold;font-size:16px;text-shadow:gray 0 1px 0;line-height:22px;padding-left:20px;border-bottom:none!important}.list ul{background-color:#fff;width:100%;overflow:hidden;padding:0;margin:0}.list #content li{height:40px;border-bottom:1px solid #e1e1e1;list-style:none}.list{background-color:#fff;background-image:none!important}.list #footer{margin-top:24px!important}.ipodlist #footer{margin-top:48px!important}.list #content li a{padding:9px 0 0 20px;font-size:large;font-weight:bold;position:relative;display:block;color:#000;text-decoration:none;height:32px}.list #content li a .name{text-overflow:ellipsis;overflow:hidden;max-width:93%;white-space:nowrap;display:block}.list #content li a:hover{color:#fff}.list #content{margin-top:-13px!important}.ipodlist #content,.musiclist #content,.applist #content{margin-top:-29px!important}.list ul img{width:90px;height:90px;position:absolute;left:0;top:0}.list .withimage{height:90px!important}.list .withimage .name{margin:13px 0 0 90px;text-overflow:ellipsis;overflow:hidden;max-width:63%!important;white-space:nowrap}.list .withimage .comment{margin:10px auto auto 90px !important;max-width:63%!important}.list .withimage a,.list .withimage:hover a{height:81px!important}#leftnav,#leftbutton,#blueleftbutton{position:absolute;font-size:12px;left:9px;font-weight:bold}#leftnav,#leftbutton,#rightnav,#rightbutton,#blueleftbutton,#bluerightbutton{z-index:5000}#leftnav a,#rightnav a,#leftbutton a,#rightbutton a,#blueleftbutton a,#bluerightbutton a{display:block;color:#fff;text-shadow:rgba(0,0,0,0.6) 0 -1px 0;text-decoration:none}.black #leftnav a:first-child,.transparent #leftnav a:first-child{-webkit-border-image:url("../images/navleftblack.png") 0 5 0 13}.black #leftnav a,.transparent #leftnav a{-webkit-border-image:url("../images/navlinkleftblack.png") 0 5 0 13}.black #rightnav a:first-child,.transparent #rightnav a:first-child{-webkit-border-image:url("../images/navrightblack.png") 0 13 0 5}.black #rightnav a,.transparent #rightnav a{-webkit-border-image:url("../images/navlinkrightblack.png") 0 13 0 5}.black #leftbutton a,.black #rightbutton a,.transparent #leftbutton a,.transparent #rightbutton a{-webkit-border-image:url("../images/navbuttonblack.png") 0 5 0 5}#leftnav a:first-child{z-index:2;-webkit-border-image:url("../images/navleft.png") 0 5 0 13;border-width:0 5px 0 13px;-webkit-border-top-left-radius:16px;-webkit-border-bottom-left-radius:16px;-webkit-border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;width:auto}#leftnav a{-webkit-border-image:url("../images/navlinkleft.png") 0 5 0 13;z-index:3;margin-left:-4px;border-width:0 5px 0 13px;padding-right:4px;-webkit-border-top-left-radius:16px;-webkit-border-bottom-left-radius:16px;-webkit-border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;float:left}#rightnav,#rightbutton,#bluerightbutton{position:absolute;font-size:12px;right:9px;font-weight:bold}#rightnav a{-webkit-border-image:url("../images/navlinkright.png") 0 13 0 5;z-index:3;margin-right:-4px;border-width:0 13px 0 5px;padding-left:4px;-webkit-border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;float:right;-webkit-border-top-right-radius:16px;-webkit-border-bottom-right-radius:16px}#rightnav a:first-child{z-index:2;-webkit-border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-webkit-border-image:url("../images/navright.png") 0 13 0 5;border-width:0 13px 0 5px;-webkit-border-top-right-radius:16px;-webkit-border-bottom-right-radius:16px}#leftbutton a,#rightbutton a{-webkit-border-image:url("../images/navbutton.png") 0 5 0 5;border-width:0 5px;-webkit-border-radius:6px}#blueleftbutton a,#bluerightbutton a{-webkit-border-image:url("../images/navbuttonblue.png") 0 5 0 5;border-width:0 5px;-webkit-border-radius:6px}input[type="checkbox"]{width:94px;height:27px;background:url('../images/checkbox.png');-webkit-appearance:none;border:0;float:right;margin:8px 4px 0 0}input[type="checkbox"]:checked{background-position:0 27px}input[type="radio"]{-webkit-appearance:none;border:0;width:100%;height:100%;z-index:2;position:absolute;left:0;margin:0;-webkit-border-radius:0}input[type="radio"]:checked{background:url('../images/radiobutton.png') no-repeat;background-position:right center}.radiobutton .name{z-index:1}select{-webkit-appearance:none;height:100%;width:100%;border:0}.select select{-webkit-border-radius:0;color:#000;font-weight:bold;font-size:17px}.select option{max-width:90%}.select .arrow{background:url('../images/arrow.png');width:8px;height:13px;display:block;-webkit-transform:rotate(90deg);position:absolute;right:10px;top:18px}.button input{width:100%;height:100%;-webkit-appearance:none;border:0;-webkit-border-radius:0;font-weight:bold;font-size:17px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;background:none}.textbox textarea{padding:0;margin-top:5px;font-size:medium}.bigfield input{-webkit-appearance:none;border:0;height:100%;padding:0;-webkit-border-radius:0;background:transparent;font-weight:bold;font-size:17px;padding-left:5px}.smallfield .name{width:48%;position:absolute;left:0;font-size:17px;text-overflow:ellipsis;white-space:nowrap;font-weight:bold;line-height:44px;font-size:17px;padding-left:5px;overflow:hidden}.smallfield input{width:50%;position:absolute;right:0;height:44px;-webkit-appearance:none;border:none;padding:0;background:transparent;-webkit-border-radius:0;font-weight:bold;font-size:17px}.smallfield:first-child input{-webkit-border-top-right-radius:8px}.smallfield:last-child input{-webkit-border-bottom-right-radius:8px} \ No newline at end of file diff --git a/mobile/apple/images/0stars.png b/mobile/apple/images/0stars.png new file mode 100644 index 0000000000000000000000000000000000000000..81947f7bc57581b32e3b5376db3b5a0e66047685 GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^jzBEL!VDz89bTsoq?n7HJVQ7*IBq}me*ol41o(uw z{{R2~^M{Wg-@kwT{Q1l0&#zy-e&q1cg9i?uED~}7s^KUJ@(X4FDguG4r$UT?Vw?pY zk;M!QTpvJ~(P@pz44|M)iEBhjaDG}zd16s2gJVj5QmTSmW>IQ+eo=O@f^)D5+osD4 zfa+>JT^vI+CMG8&Byc1!Foqd)_8vZmdKI;Vst0Ctab Ag8%>k literal 0 HcmV?d00001 diff --git a/mobile/apple/images/0starsborder.png b/mobile/apple/images/0starsborder.png new file mode 100644 index 0000000000000000000000000000000000000000..f4d231499ae912ae946ea16a47ffa0bc0c2ae00f GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^jzBEL!3-pgjh*#?6mzkYX9x!e$L)vy4}e^!0G|-o z|3Kiwgg{ph|G&5oBzR)u|D$XF?_c_V&w~G3r~O~o^M7f>|G6dqr)K`2ko3Pb=zq1> z|0<{drM9m%*{1_d6DtYw3uX{hGImKz1L;QsNu25YKoy(?9+AZi3|t>Tn9*sC$qb;N zOo?kmNpOBzNqJ&XDuZK6ep0G}TV_#ed45rLv4V533EQU23xMj%JY5_^EP9t7zsT2Q zAmDOwck~OUrVCO3{)f8?^Payv^NAY!zS%o`8}0Y<>zuyC-e+O8Vf!_uN3Y%qCFp*P zj1*+t8Mh*medkf-xJdTfHPedkl?2>Aabp$V?Kkn96Y{1yNbyKd;=6OX^m?OZ+ibow gb%Kp|wH6lV|9sA`S={iI5$FO2Pgg&ebxsLQ0HpYy8~^|S literal 0 HcmV?d00001 diff --git a/mobile/apple/images/1stars.png b/mobile/apple/images/1stars.png new file mode 100644 index 0000000000000000000000000000000000000000..12dd9c6a981a62f6c9c537302ea117870181eab2 GIT binary patch literal 456 zcmeAS@N?(olHy`uVBq!ia0vp^jzBEL!3-pgjh*#?6mzkYX9x!e$L)vy4}je80G|-o z|3Kiwgo1X>`@eY#P~`K6k00N^fBpRV%jeIpU%h_h@X><@4uhnYH~*hq^nYgl|0(JJ zC#U`Ij{e^k{J+8be}&`!V$1(I2LCg)g9T270j-cN3GxeO5L7aD2~A5&1KEWRE@iEs z2~@~g;1OBOz`*qZgc+UIn9KkQ%9OZ9lmzFem6RtIr7}3C#?Rscua!hu&dpu3H~pGbZrzi~s)r$e&~Jlucc}4FOJvVg)Cx&~405T5^9Q*1d3RKBi z;1OBOz`*qZgc+UIn9KkQ%9OZ9lmzFem6RtIr7}3CWPS`@eY#P~`K6k00N^fBpRV%jeIpU%h_h@X><@4uhnYH~*hq^nYgl|0(JJ zC#U`Ij{e^k{J+8be}&`!V$1(I2LCg)g9T270j-cN3GxeO5L7aD2~A5&1KEWRE@iEs z2~@~g;1OBOz`*qZgc+UIn9KkQ%9OZ9lmzFem6RtIr7}3CjRwY|Ha#Fq!MvciH4?t^6yE@`jbGys~9i9pq==H`gn? z%Q)@Jr0d0(8Mx%reknCoS$cexJf!;kZj8%;w+26Mp8YJ)sA{yu)|9uR{@~Hy96Y8O zC+0YQc@+G;qJDR7j?jtgk7rsm&E7L*LaH32xz_2!L4pO!Q>FxUa@>$zB9Q2QAa}#l c2K%R+L4SpU{x@Ik2Kt7<)78&qol`;+04C?s>i_@% literal 0 HcmV?d00001 diff --git a/mobile/apple/images/2starsborder.png b/mobile/apple/images/2starsborder.png new file mode 100644 index 0000000000000000000000000000000000000000..10a2b912b4670b03e727193af048e0ba8f7cc008 GIT binary patch literal 501 zcmeAS@N?(olHy`uVBq!ia0vp^jzBEL!3-pgjh*#?6mzkYX9x!e$L)vy4}jdL0G|-o z|3Kiwgo3Uf{(o`b|6TL`Z=D7b2ZEz(|L{(+%k(&%kzt}ixr%MP1rVF zUI0}0z|+Ms#G-fUh1-*w3*D-S>>QymvRPTJ??L+z!#0ucoZ;_I|$>^>W_*20y*ETT8aH9%%VDE#X7w ztryWgdwCy-q(<84E-3gkOFL*nzZ1{l;=>9v%qspauJ0B}cr4I%(C*)38DB{sjoBgs zj|GoQh(Gwl$o@V^!8^Eq!NQg13{M`$@)mfqrH1boFyt=akR{ E0LzTyKL7v# literal 0 HcmV?d00001 diff --git a/mobile/apple/images/3stars.png b/mobile/apple/images/3stars.png new file mode 100644 index 0000000000000000000000000000000000000000..7136c3f24cadeaec9e4dbe315df6f75350bc809b GIT binary patch literal 470 zcmeAS@N?(olHy`uVBq!ia0vp^jzBEL!3-pgjh*#?6mzkYX9x!e$L)vy4}je80G|-o z|3Kiwgo1X>`@eY#P~_|9PaogEfBF3R>*vp}U%h_h@X><@4uhnYH~*hq^nYgl|0(JJ zC#U`Ij{e^k{J+8be}&`!V$1(I2LCg)S8VW>0$L$k666=mAgE;Q5}KBl2C@qsT*_KM z6R420z$3Dlfr0A-2s1jZF_{4rlqqqIC<)F_D=AMbN@Z|N$xljEaLX)8Ezd8?E>>_3 zHeuUzc>z$}QBN1g5R2Zemu~VkD+sV&;NHQvXzNzJ2mkBSFJ221PON#U>Qf{n@r*Iy zEbs1?#HN7qQdWhQ3wF1(4N{m6T;L6N5S{DLciH4??fcgnha2=xZ@M&fy_7qHzqQ`R zSedpjlfJ)UXW04q{Ej)!d+#jz#qw`XY1ui;AKq8@9p;y~lk>dtK|+T~Zm~SWbEA}V zg%_?YP^@LT*qz_|;4}Mn$!`w3=6SF*dt7pI64Pw=2$}S2sfCNulqo@+d>i?KIQCn* fNab`suCHXwJ|t?9%6rxw=phDAS3j3^P6~405T5^9Q*1d3RKBi z;1OBOz`*qZgc+UIn9KkQ%9OZ9lmzFem6RtIr7}3C1Uq8EXhRIU% zeK|@F9O-kMZ!}B$S@7yHZTj*~*W}AP)rOi|o9|y_Idx5VMWlY?pHmOA_pz($2QE_* zc)IC|+>EI@eGDq|*JOzEFdbJ=T6A86v+AnU`5flYagXNzWDKa4Xqx4+;y%#B44$rj JF6*2UngAMs<_7=( literal 0 HcmV?d00001 diff --git a/mobile/apple/images/4stars.png b/mobile/apple/images/4stars.png new file mode 100644 index 0000000000000000000000000000000000000000..071415689c56299d6f242062f35a8c34df8a50ff GIT binary patch literal 455 zcmeAS@N?(olHy`uVBq!ia0vp^jzBEL!3-pgjh*#?6mzkYX9x!e$L)vy4}jc|0G|-o z|3Kiwgo1X>`@eY#P~_|9PaogEfBF3R>*vp}U%h_h@KK=n!2^f?FK_-oyXgPS{Qr~F z{&z?JZwvn4;QhbC@qe-9{~Uw=nc7l%Q%(TQmnjMI3uX{hGIj|~OG^V;ga$GkME(QS zaTa()7Bet#eE?xbr!^)sz?xknN`mv#O3D+9QW+dm@{>{(+%k(&%kzt}ixr%MP1rVF zUI0|L%hSa%#G-fYrPqAT3OuY2m>w-{xa=G7;P3t77e@}(-Ap-t|mYiY{)#_y9_tQJjtDWq~Gv8h;3g43RN&c>3-0pd>tK3w0!X!%k+XX3R|DNig)WpGT%PfAsA%PdMQ&o9a@R&WkBVcT?h z0Z`o|PZ!4!i{7P^yVo@t2)LAQSIBZ?%R-|t18-gm*TVP^ZaS+#NTM_W=u4K~QH zb6aopGsA!4=|`R{b00HZckFcHS^37BXa4M0OWNKo)c+MImE)tRI@^CW+i&%rT7!l1 z#m+tM7RNN0p7R%c_<4E3(e3Zs1n-~A+J1A-BHj%@efK$rp1U}+;oMpd5%a`gsgTQ` zf|L}3_MDpESmVi+>d@d2A;lrcnc8r4+e}r46@T|vF((Sq|{2J(622WQ%mvv4F FO#nFY=1u?r literal 0 HcmV?d00001 diff --git a/mobile/apple/images/5stars.png b/mobile/apple/images/5stars.png new file mode 100644 index 0000000000000000000000000000000000000000..370c60be52bd6f4b73c8b8c264a5ebe1e5f105b9 GIT binary patch literal 393 zcmeAS@N?(olHy`uVBq!ia0vp^jzBEL!3-pgjh*#?6mzkYX9x!e$L)vy4}e^!0G|-o z|3Kiwgo1X>`@eM>NCZeOZ~i~K=>MGT|5MWcPfq*a9sR#8_{(+%k(&%kzt}ixr%MP1rVFUI0`##nZ(x#G-fUnMS^51s;|Q z*@C4OtPB7AU%zhGj)@Y}m&z@C^3KL7v# literal 0 HcmV?d00001 diff --git a/mobile/apple/images/arrow.png b/mobile/apple/images/arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..9993a06bf7617a94d2333ae2757c6b6339965a35 GIT binary patch literal 361 zcmeAS@N?(olHy`uVBq!ia0vp^96&6^!3-q#o`0(eq?n7HJVQ7*IBq}me*okL2Ka=y z{s)7Gh6W%_6>_@F^A$kDB};<*f*Aw_m6VK)U0gy#%gZ}DR;}8-`^=fUci+9+(y{t2 zP!VT=M`SSr1J?%-W^`I(G6N_mQ{oy?5}cn_Ql40p%HWuipOmWLmRXcqo?nz*tl%7M z!nW!10-(AiPZ!4!j_A@JPq79C9%shqk!(l5{bS#{Y)6Z)oxZ)P-WfK1gZ_reKUYr9 zc(pTnMaiDi|FgqQdgA|n=$d&FVBO*ybaA7*F8{uKbLh*2~7Z9NTWso literal 0 HcmV?d00001 diff --git a/mobile/apple/images/checkbox.png b/mobile/apple/images/checkbox.png new file mode 100644 index 0000000000000000000000000000000000000000..75f0ede2996125f97f32207b604b027ea9050c48 GIT binary patch literal 3300 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 JPDHLkV1lTn{}uoM literal 0 HcmV?d00001 diff --git a/mobile/apple/images/navbuttonblack.png b/mobile/apple/images/navbuttonblack.png new file mode 100644 index 0000000000000000000000000000000000000000..b7a9bab4972505a4bf2445ade0aabe03203586e4 GIT binary patch literal 493 zcmV*l(DL-KoEw%)m2ayu}GB{NEORKigbCFn|Hd; zl0J|&AmjyNlS)L5?mD+fw7NO*6sI^JOtI|8&oB(5L-9<)hMZ0(rFOfW48y=?v%wfc7>1MFbsbezaXz2% zJP)sJTe2*}7&8fD0T^S*vW&KE(MghEjF~?FhcSjENzhRgVXb{Djzm#}_I;ne??1}E z@1w1?JRXmavbFXp&q@Bi?3|k=JLk}S-+wu_k-qPr$#X{Mocl?+EK7!A_$XIZg$7Vc zeUt&bS=I}!l$w>Sl=@!sZ*0R;N-^G!cZkTdjUWhc&V4C6=Lmw}xf{+owAOFsafQ7+ z&s7}9ho)(;)*>QPS!-#UhB%H7d7di|pePE`G(Ct2bzM&-BBW`0D2f7j-MW$Wdi^I! jlIdNRC6~+P@A&=)c4gx;bFc9r00000NkvXXu0mjfJIK}& literal 0 HcmV?d00001 diff --git a/mobile/apple/images/navbuttonblue.png b/mobile/apple/images/navbuttonblue.png new file mode 100644 index 0000000000000000000000000000000000000000..97a2c983b13ac107b5bf355b388ab9f810327c49 GIT binary patch literal 664 zcmV;J0%!e+P)5ls#w^Q51#0H}m$-osf+aC2pdDppk%z*ce0* zv=XwFg@uh(0-}wekiyDBP_R*iO=W9gm4KBtf<%!hlES}2O-KZTY%uQb?A-UB#caTU zWX1!px*vyo?tNV4oCDz2{YR58=jZF+S62D8u|ZD|Fi_pY@$vDg>C5M50F-l%OV{sA zF1-C%A3iuv@6I7gL50>vgY}=weEl%bv7@6?4{l$Z@$=#6PJpqARHVc=&MpF zhm?9kg1#Yk4UX}CaiO-d_G8sAhX-C)$0q3AJ%XnTI5gHN96rj=lPmR7DEIT}-Se8) zQ6WJ%f*6lj6tVEvQ;6{h!Vx0+(5kQ(u|8sxp#PSSDh{KSUnMr%a9t_CiWZk6>ey6R zTn-(JB{ti&kSG?57Het8>9AOf76X#r1!72?W61zpi#A5+nDlWNBj{KhlEFC^hjz}U zEF_V07Tt^lua%y#83{TPi)yF05s5{ELaB5Z6kZl=QyK+iaaN$o$O3p-K}FX&tMz{c z^dNnEi5y<3050t#SxYgm@CGVvtZ8k_8fh{ZM#)9mf9{#1vJZv7HLL@NfyOsJKR&HI zfK!J%bF436qXt$YoV8equu%inmy$Z&TL*CC-qYC^i}A$rn&Ec~$|V@;_c?JWH+S>O ync5Z@;O@gGvpb4;wC^Lv&}?_Odhu*+v;GH-i10X9`naC}0000w(E zZ*psMAVX6$2C~zj0008DNkli?R@XLt{V?nG)kvK3kZM|aJ2TZc zJW=Tjh@!{|I70vs98Qny>x_)9EH6rUrmblhFD9Ra!Xp*e{2YN}?$cN0noZ1i=esx4 z{`z)rO&vSK97%ANdUEgFSYORpbfdWqi4a)<5*#J2Q<-{3TloAbJoFgJfp(!l00880 z>dyJO>4w&bv&4-I&%poy5l`B#tu7lVHTdeRi!cCS$PY<1tt@?8Y#Vrp1W@o}{%=dt zLD~7a=|D@LD7kHRF?N#qV`YgsJRYx~;l(|VGP#u8Pkdim3PmP37XS)wI7b}G!3CGM z{+6pu=0wF?P3=nMRY8N7^0ZN8+JQ7ZD?S(>l`zeb36~KFf|y8W#sJphmL_~_Jx3@NxNj9@g0HGL*#~&R}szU=^ zOxpv(VhSH-5)mg-G;_GWQ%lB*nS@9L$F^-0C1+14s4MYe?>v^Ko3(+OK$SbIrwcK} z(N$WKOA=8$sfIglxdqP1_R`^ann;K(dfQ{&OTt|p5MQlW2Th`XuG_;Byq#-HEOSW45~u2P@3qB|Vs zASBZn>72FNHg4^tni_&V9W73$#26Z;wU<=QtPKGF088@(WQPa1p8x;=07*qoM6N<$ Ef<&)qc>n+a literal 0 HcmV?d00001 diff --git a/mobile/apple/images/navleftblack.png b/mobile/apple/images/navleftblack.png new file mode 100644 index 0000000000000000000000000000000000000000..e1eb70ff703ed3ab4878b611ae56f164d15b78bb GIT binary patch literal 810 zcmV+_1J(SAP);^V%DowFzo6vScAy6UY z&`Sajq|suN z-EH&0oMz_7^S<-WJHs)?5JbgdF?xP}{>m_n7nD)~0AyLl%*@PoxmUdCHk&v+JVZDgMx|2W0>L&mHa_I@`G=aOL6Rg0f&c&@gupaS zRI62R9JlQY%Vx7rH#av+u~-Zo$BkTbc6NqZtp?Exr0aSrm&=t@RfTQaW7jE)0##MV z!!nsncx`R1qG=ikA)fAm!C{PrO;1nn%+1Zk9mj#=IKD7J5JtmvU4NF#&kUqZ?SZcmM$3Xf$>rk;uDAodEz3 z07pkhTdJylwk&HRcRT6a*n}+qQ24 z|JJDA>$JYUo(+XU_2Kh2O2dvk{^nk&(P(@nggo-PmxPc(Bk+R(!2bUJd&{z34mSaV z&?u$ocDs;e83zXkTp-v5@Uo@8HRyQrvt_q(=_dVtJPWs0{%6IN~hCYJRZM0 oH8pjc5Q28Q-PzmQ`!byW1M56Ps);w{jsO4v07*qoM6N<$f@&IL8vpw(E zZ*psMAVX6$2C~zj0007wNkl7q+D>Eof_j0s%}FA|b}a z#E<1y@C&$i=HR_ zcPEv}x;Zot}y?~vO7K0my%z;>X*&oqDEg@pDI6>4yKYzT-x}RSM-YuP~MkzKc81U6LyEnht+n8 z%ayXIVaMnA7v`4X4N z@4qyn*k+<3y9p7c(h^H9M^{&P)J;Ged8;s^teODMJu?S}Bf# z-&JsbWlrnpKYkw9+nVZfhJ*gqY*v8On&;%jt2d*_0Wroqx^Yr#>0J}RA4*|J^csWU QH2?qr07*qoM6N<$g0I_YP5=M^ literal 0 HcmV?d00001 diff --git a/mobile/apple/images/navlinkleftblack.png b/mobile/apple/images/navlinkleftblack.png new file mode 100644 index 0000000000000000000000000000000000000000..82d10229cae02b71b888cde4604505c888bae8ab GIT binary patch literal 737 zcmV<70v`Q|P)J3@ zu3d^CuEnJr1sAO`wQ2s%%w0%wYpr8@J&;Xi_&DdxFB5Tkdg@q1M@L5_Ny2nGrLJoL zq9|f#XNRk+D*+%bFE70?=Nx&Slcp(?$%KQ01GcudaL)1k{LI6{17R3)b8{oqU@-84 z=JPqT*^F+t%V;zr3`3-pt+TzoJ#KGrIX^#lsw_({C`l5WbL{W$69fUq7>qIPKCLxp zXJ_2q-LVq32&$@z!^6Y2r&ZEg6UXsam~)PzC`gioG)*}$6xyKsjlmP&Kl6$+Z)zehQr}n@m9i`o|IAy z1_N*5URYh%OePZm!Z5@+w~;FVW6Z~C7DYi-RR|&IbUJ)Ddp=cFg__M~Os7+nQfRF= zj`zvgcsxc*Nw3!f_!efZB?tmP%v$>~BTD_~$~SMu7}V?QD{&leT==ry-``P9Pf|*6 zjCB-ryIuPIK6#%13Iw2p5IE=B9&ab-rRFaeuYwg+}_p+1_ z;`0loD2jq8idbIr=~K)_nAV#4e7>=>m9yZSBZ?vx@4EknHIh=Ubs)~U)iD=U6vbM% ztuY3rlpogb_uDJU_gyyYfpZSu69fTT>-OK!K%H~cbxoFKL{W5ce}6AjmSx@ujkMMn zW61LyV+=wF!Z2hw99}#=J_4Y&x3@3Wq5&^2FYNB_((Cmo%aSxrxxT*s)2#mmR;ZFx T+ZKyR00000NkvXXu0mjfi7ZGp literal 0 HcmV?d00001 diff --git a/mobile/apple/images/navlinkright.png b/mobile/apple/images/navlinkright.png new file mode 100644 index 0000000000000000000000000000000000000000..df5131f87507e0bc728e2e3e70eab0af0ade824f GIT binary patch literal 804 zcmV+<1Ka$GP)w(E zZ*psMAVX6$2C~zj0007?Nkld}q5^8vLsB^; zw^Yvgj`;++H9~KKja2PBI=VE(nWBcP~EU}zeeTgu(Dwn6FA`&98wBk_IlRP>srqesmU%l}M zbdOg70KYyKG9wMETFB=YQcIE&>`F=@GZITZ)4~%7OPmYNg#d(!EGsIONHKR{nug19 zTe_LpWf0H|Mg?{G&EyOMnmM8wpFeGRvD=|imlN6R=K^ucx>^buk-AmgPw!67q&m+j zc@&q?JMPe&ihs*&Yt=LPUid$fad6zbUqUjX^M%~rlQq3!Utcw0jIkb8uR`|te11KX z-Z7?<*Cb`!=|=)UFdWJ6t_Srqtd6xSm~lZF@0(1(WNbPAHS71Vc7;&JT{_UjVdC?L z9%S}*L(wDv5XL!W{oS@>L^n>dC9UyOc*B@8!3Ivw(fD*Kmq`Z|K3vbXY0ZphGig$5 zv^-UN2ok_?C53nhAcRoQuXH;Yb!E|5NG#%^x(Oj%yE6Ycw)g#lAb`PJw(6JhnF%HY zLNG*6$F_|7qpGSFepmoN01!a`rqr>0GBSlUt>8?wYO%z_>~Z;O@gQzR zvwry~7HziNo7MhgvsR9pVT7flUyc7r#p@Bg=L|Wvr3chtaI|=4bx1g@jk-?v8KREu zB`h*Io-0*ut2i+?)2jXzLUahsZGlsZO-HiF<*xf;hoiN{S?m1RY1TNS0KlkgTNjvC z7v^SjrE0H(ke1`>y7v0T%9s88@AE%)v*jOArzXOxPubYq>V*LS5dtnMb;T<`T}}EF i4ILN+;vhxfcQoDm@e04^^tL!Rf9WeI?kk|aq; z)0DfrJ64ehA#i?v9*i-ZoSblQaDWhk;c&>q!vk5C(d+f-cDo26nqe0g7a@eeU@$;y zO}pI&z&VF8hNq_|lu~3_#>U1*BTyP+I6FH-YYo77JpNmhlKuUC9v>fhetsrR(?+07 zk_4^w4CG(!?CfxVf6sV4ZUo9Wj=hN9L zSK~WrttpCvx3@QvBv}sg-qUKe7S^Sd7-M*SeO=9&_r4J}>5;?Xu(5d+S!?ow-N~84`=~a UAQnY0Jpcdz07*qoM6N<$g5yL+CIA2c literal 0 HcmV?d00001 diff --git a/mobile/apple/images/navright.png b/mobile/apple/images/navright.png new file mode 100644 index 0000000000000000000000000000000000000000..afa269d087b2f0a9bc5cb54891edcdebd3483ea9 GIT binary patch literal 845 zcmV-T1G4;yP)w(E zZ*psMAVX6$2C~zj0008WNklOQRUXL=pti;1-P!qA^N|{%whwj9_y|vU}wGcw?gv_LsPqnp=D|x41B$>^&QfwhJk9nXQ$dUsrxC z-MVu(*4DmXrDJexeBtGb(aX2P@sqwl(9`Jm1%fTdV$Gr0%yjBlIPCK`@m_MYgxiw+ zV@4<T_L&rC#PiH3@Il8A`922Pi^y?c0iGWB1d8p+aFlOsouo2Wj%U#v{a8V^qUM~R-1 z#koh(c*5Tl0060xY+V;pd83^}(~~J;AO?ve15?X?R-T^14|9m2Cz*zSxs8-`ITYi3XY0-(03woIS0d%HU} zw(~nDN{HHNnNa7~FJ2u^Z{_|zy{aQ7=eJg`jP_^pCE|ZGQ@hV%CVjRmE|t@^v2qbf zkK4tx?+lfT*=Wcci?-&ArK;U0Lq?Nr?L9-E(pn^j&UEC`Kde%oPy+yJ+stiBYxBnVU^-JoX4(r?w(MZgxOr*d z-KQ_V((7ia?DsV!+rp<$^{u9}2Ye&N44avP$L$;)?DKkDN;zy>XY=Or+BWTKp;EsA X*;>SgeABAf00000NkvXXu0mjf=?0Q@ literal 0 HcmV?d00001 diff --git a/mobile/apple/images/navrightblack.png b/mobile/apple/images/navrightblack.png new file mode 100644 index 0000000000000000000000000000000000000000..80c5b833457e6946085cef8ff7d941aca0ccb115 GIT binary patch literal 861 zcmV-j1ETziP)wg;d1hvJM)5ok0I;~YxKb*WmaEk&0Dur8P1Af43Wc7nudkQUh7`~9kW3~$ z#u#F;7$T7f6h%R~Tt=Z#z~0_oAsh~mZES2felRjWKfj`B8Wt87Kq-Z;>i_^sDf;^Q zFf=q2+1%WG3*f#VOl6EMPft&SQVIZY90!i$KuQTs)6m=7i)1o+Z)RrZu`kRtO;Ac3 zkn_bkhiRIaot<5c$KzL9!VJTJ5TYrpUY2Dc7K?pJBoddJu9>E3;GFv<008v&_g^WM zN^1b_Ug%5+0mfKcC4|8E`1qZ8JpQC9jC0<0sj7--G`bRvM#uh(S%-C^U@)kKLZOcn z6BDs)HrqIVL`vB)3;+fO2F8w$k6!_J)PQl$;W)mB`$7#44lWH355M2v-+$e3CWPn; z76=4jS=Q>v$jIk>KL67f=DIFaRc+c2hr^doPEOWGM@MJca^|{j%YGyhN#yhS52Rc! z`wsS#5CXcc-yi^>C`#8L*L5L;0HyR{^TlXWwrwL22)s$B(`!Ugl&+oGwhhxXKke@B zE&)K-&N%1j>FN1;aBy&|QmMEAK)L}*DdDAHjA4=)*rz7PZe zDj@_?%9bE0C8U(sQmNFBR^wFHbzA;|&iW71>GXF$_v+5hj$#-Fs?{ol5RJ(7Nf={K zGnvdgKM-)Xo5f;r(z2}Ep67X|r>Ce?DzI(aBZR!nWHQg&0Rd-kjk>0$rWS(1U_jS( n*tUImbaeDBm&^I@&YAuKv@o(v4Ic<500000NkvXXu0mjf=vsS` literal 0 HcmV?d00001 diff --git a/mobile/apple/images/play.gif b/mobile/apple/images/play.gif new file mode 100644 index 0000000000000000000000000000000000000000..7447d05419cb7786079d1b3ac49fb3f80bb25bfb GIT binary patch literal 103 zcmZ?wbhEHbNF literal 0 HcmV?d00001 diff --git a/mobile/apple/images/radiobutton.png b/mobile/apple/images/radiobutton.png new file mode 100644 index 0000000000000000000000000000000000000000..45e68fddb1db488f2f749b28dba32813cbf267c9 GIT binary patch literal 373 zcmeAS@N?(olHy`uVBq!ia0vp^q98U0GmtFwxe5|sE_U(^;o#u7{m}mbkQ*D|6XN>+ z|Nl4dzr1?;`SJ62_a48#e&_k&Gk3P`zdV2Kv8hWARQGKxY+XHL*&!gA)40MvV>%Go zM07jG^Z`k$ur4G2Rv?Ngo)?lc3#c9_i!3#5XUra;Me-#jMZgI;}C80Th%eag8Vm&QB{TPb^Ah za7@WhN>y;nEJ`iUFUl@fa1J(M+jMyWP+g3ti(`ny)YM*gz6JxH1BdSIp7Qp;z3>vR z4x#%=svA$7J|}ZxK9iTK@?in3+YakevR+P^GSBjF&sy2}<(47$m-0$+s{1^-yY9xC skd;p!xh&865Zw24deM>N50^h-yPn0GP>~ke3bcp8)78&qol`;+00BgxwEzGB literal 0 HcmV?d00001 diff --git a/mobile/apple/images/searchfield.png b/mobile/apple/images/searchfield.png new file mode 100644 index 0000000000000000000000000000000000000000..05eb98a07e6e36a0e393f8a343936511e3dae790 GIT binary patch literal 1548 zcmV+n2J`ueP)w(E zZ*psMAVX6$2C~zj000GtNkl4j^9LHy`+0)mqk2pT?K|&x_fpQ0E)dwUV zc;H`b)k^I{RU}ZGLXlb_XgSK6JH$Eccx@az@v&a7cXy@_Bity7O`!cg?f&LF`poyY zW6w~F`3*2YhG8tu&&|%fZtQFuhS6*^D2f_n#u$4%UP+d{UhmkkiSc8{RZU|U=0G#G zu(H0tx>c>-zc;-&Kc}i{C=`+;iRXDi5QbAN%d#x1)9KXf^?JQN8jD}Ld^MHH@;twn zI{$WU_j|9`yEpyw-0Yhp$z&pt@OV73EDM4FA!HbaqNqV&gpljHy&0SG z3x=nzei4f&cIT#Mmh%0VRCvg~1~j^o(2ZJMTG z7>!1wR;#V8t<~!F(`PRnpUgoBiJ8S1lc#pO_5HVBXEW(kDiscgRaI3KWp_%NrU$jR z55^d~u4~)2Wm$${XqpxX1U5G}=Vx9a!4K};M;u^8h@S=ToU*REZQ#bUu= zkSy(Ed3)GIG)?!H?l{iNmoGPq8~%XGB8;CueVohX`iY#T;?bz`HrxwTaX00e_- zG9JsMlZq^VFgMGxq9`JSB9TZsozAbWmGu(a=@^ae+E-s*)imuuWaVA;#jBas^+LZ= zD3%JvQb{kLKADSzLx%+W{r+S!sh7*G<_^2DzDB;~pp*nT8jXx)Gl}>pp)RlF$vUn~ zo&R8BjBy_v35P3Nb>{NrsiT=pDwR?crN3kQT3A|nJv%=djZ9rQn@Yxc2zdxYK}}Nw zJB?!@VL8$G4Azx^;(VYb~>R@NDu^;W%qBNjp8N%U@V&n1-0GvP*5AoX8MNV zBK>0+214lb`5@$Ij9kCp4Xh!lz8kYJW&6-5zvo~9^DmSytqbC~&` zrhZ(W=OKi&AP5MdLC9cG1ppL^rTs&sNDPMu0{|F?p+!luZF>+k8IJ(~mRIuCt=jH- zb*r|#lJ6T14@L-4G|h^V(rUH(XTTn1(#euuUR^Iddi-qnFK6j(UN2V?@zG2=d3Y*0 zgE0ndAQ;wlePUwbK%XMZr%&bp0ITbTl3v*}y1m_C=!0(ygVby`U4&_mFHkO*9mg3I zHxdqAnL2;@;<-e8R1^eJ5EAjxb7xL@y`HvV+`2Pun%%?j$RXHlHZ9wsetY=rU18<( zQzx_8>__cn)9l{5GriMj`hDJ;H?E7KFdT^xs#dG>3yUqYM`Mg5vE=OR?2xzzN)&~g zH?I4A-knDC_Vm5sW)f7_b{3sLFzd! z8KQoD@TBjfDas>@^>;dO?OZMwi^V>z+azMOT3uRNGR&^*Q(Zv!Y^QIae);3CJ#!RE zqyes1b>KSDXfzs)ilQir;{GfA9$A*v?RHJmtX8Y#a=GWY-hjqH!L)kL`;kl* z$w(E zZ*psMAVX6$2C~zj00043NklX{;qBf1bN6L)y{7G;Un!T)PLD(c0D!&Sjf<0kAQ;0WSuC4mgpz^e`bUwrk$ea7pWrw3 SS>S^J0000 "http://purl.org/rss/1.0/modules/content/", + "wfw" => "http://wellformedweb.org/CommentAPI/", + "dc" => "http://purl.org/dc/elements/1.1/" +); +// obtain the articles in the feeds, and construct an array of articles + +$articles = array(); + +// step 1: get the feed +$blog_url = "HTTP://YOURSITE.COM/FEED.XML"; + +$rawFeed = file_get_contents($blog_url); +$xml = new SimpleXmlElement($rawFeed); + +// step 2: extract the channel metadata + +$channel = array(); +$channel["title"] = $xml->channel->title; +$channel["link"] = $xml->channel->link; +$channel["description"] = $xml->channel->description; +$channel["pubDate"] = $xml->pubDate; +$channel["timestamp"] = strtotime($xml->pubDate); +$channel["generator"] = $xml->generator; +$channel["language"] = $xml->language; + +// step 3: extract the articles + +foreach ($xml->channel->item as $item) +{ + $article = array(); + $article["channel"] = $blog_url; + ?> + comments; + $article["timestamp"] = strtotime($item->pubDate); + ?> + +guid["isPermaLink"]; + + // get data held in namespaces + $content = $item->children($ns["content"]); + $dc = $item->children($ns["dc"]); + $wfw = $item->children($ns["wfw"]); + + + foreach ($dc->subject as $subject) + $article["subject"][] = (string)$subject; + + $article["content"] = (string)trim($content->encoded); + $article["commentRss"] = $wfw->commentRss; + + // add this article to the list + $articles[$article["timestamp"]] = $article; +} + +// at this point, $channel contains all the metadata about the RSS feed, +// and $articles contains an array of articles for us to repurpose + + + + ?> \ No newline at end of file diff --git a/mobile/apple/thumbs/accessibility.png b/mobile/apple/thumbs/accessibility.png new file mode 100644 index 0000000000000000000000000000000000000000..6478c8b9a25cb8af8a0693981690b4973ad42936 GIT binary patch literal 1282 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dy%*9TgAsieWw;%dHU|?YE3GfMV z{r~?zP^PPQ37nKyGf>eshj3fE7fUK=ib^X1xj?q1SGQHJ+?O@yKdw0aW%bGTOHO=Qa`f%e!!KqZ{WSgX z*Tn~(&OY#F?*123_kEnc`+4uK4?R0S%-epwd+UqVt?wspzT3a?R{f@T%^P1fZ+Kp_ z{$2h0myN6Ml&pSRz2bhu@*CMp-y|=5ojCt>*4*0(bDu@ddKotJW$M%mKwm^nyB9F^ zMexMCkrOU?O?nY9;cj@}1&{t`p}iNKdY*Z7-*N4{W7YA@tL=hS`%|0dTZYX~9U9K- zHasz`y=hrN7H1=pnWuE=Gd zmd-vSoOM+yTn9*sC$qb;NOo?km zNpOBzNqJ&XDuZK6ep0G}TV_#ed45rLv4V533EQU23m6!fLOop^Lo9lGC;tt<6d-Z@ z;PgxP-tJw)o+#|$B-7h-Md$3CjVHsBMD8xCjP1R)g3VXT@rwPuV)IGzONxKZ>3wc_ zzn1U$yz2SVT&+&ZlY`H<8<<)OeUh9VH*>#f%g?DV4ZqbsSvBJ{zp8p%^8do5+OPB1 z%y)cvjLrF$L|ch$YkI5m5f=6XszuEy(yiiN@}2E3VytY%S>s;0f8yhMzlFi@khlk{ zqL94c?}y%MQ)-PALO55hh-#g%ieaWgZTBIIi`rA{IpD_UNJwD8*BbAH$y=emfq zIVq4KMCXdfkqs}de%GkEqPbKkgY9a_)+jCE(5ov}Hnwa$*HYFSq%6DHS6P^O{)~hf zWjeV5S#|CY%a5~oZMdot(Svfbi$Uu}(EJ8e7jhS!Og-{qd$z;Ay;Dr(*9v-iH=nRffrHim7sJTdR@ zt!aPCz`Fisj-1Ys*>*RNwjN#3oz6e&ESvB?%f8DROob6oy^mHjmx^j6tu+t$krlne zO0QLW^B2kEvkYHJs8}w~i@YW-Vkhn4+ZL*`C1A5k*IAymxnhlKfK!%p`| z#}hJ+0-N~Hx81xeZCm>A)Lm=$oi+cSWE4~%ek{Da-M~;DTi)Vv44@v^Z#}U`W|ys54rcx#dQN zjkqC0IcjP!SsF&7V2Y*!A1;U)qD^KEO)+0*&Y3ea_uTEh_q+GKKi==$EI(h*)rOl5 z0RUL-?S=A(q6uWC`d>g^7K$Z7;R}+xcYwaW{@D0Y1pvSpeuo3lI-PE##R1sz70@|8 zBpP%0#6O7}I&vQ}%*sAwlkny&8Yn}cd@m-@F(W%J{CZpTzRZ{mvZWeZo)#GPb4nE&-Y z$ZDG_dHC|~eI=t^P2x{8TQm(#AhTJK(lHgmU#RCuYdOj)wv5Rdp|j<|zs(i06=n76 zaNa~^?FgPbp39mksg+{6lFPbhwl?|m_6UAPY9w=0}6^RcPy$HOjNK6yC_Cbs#vQ--k3}e}Qk44DO*0 z*;2%oNnp^~$9s~V?xL`kmra%9NHi)-TZa1-kJH|XIlZk=1) zdD~rha2Gz@iM!gd*T|M{WXUtKY+Zzz)1V(|Pxkl40!BtgW@cu#{}I%`1b3Q3$;>P* zt$!et$uxh9uF7>k)W9I#D;VN{;lgKI=H6ge0&Q+3ql3s;;%PD^BJmX97EO#iW$F== zc#1+yB#=xGVeRx92N)1<482iq0q{*L9`z7HaX`m7NR_D$+ZI?C*yU7HZ?tUVYX;Q~ znEs5f@1H|0a1xYZGmmpx>%_Q(V;Oi<{PtaZMqJYoA<3qoO|@U-`onEt5kLDHFt%E@ zPR{yse*N+WcKNz^M~1$uzVl|duw&FplPnJfEd@+od^de(z;JE#}=aAx-2 z^#H)M*4yq(G>9wvdNUd8jNO+ryorHzTw^DLjEiU-@jB`Fp zBq|=0xig_Wt*al4U;E+A(t&#z`m68WzSZVDtdPessc3HI^FN-R)t{~t!a#MHYrFPP z^^e`TYltc7F~kVu=)OA!_-2GQ?b`ciS%_B3`TlUvrbayuud{6`^85WCW}A$ z%%ye5j*U8zLsmu<514@EIz=li^%G+9_CQ7*hBq99mPx6}x=Dc(VExg$JzU0~t%^Te z%OX+V6!SP>Q52wG4QedpLgzK$>{4jn=_f90Kb5GfsLPJgFHyu)(4((SZ;lmKibGRX zHECaxj;oIFE+j1Lmv#Q~*sD(UjO_wdxS)Ri$=*I;(V+cNC=jYuT?OpfoF z4T6pQ7<4w;C;X(hxqx{h)V$NCX$?Ou7Qr$rtr?-ax!<5tXiq=;YzyBRQ8J;30YOh52V#Tzg;8bcI0*rc@m3Gn+o cSAY&D#brS+vC-im_Q2=0H`*8Vi~C91Us(-8k^lez literal 0 HcmV?d00001 diff --git a/mobile/apple/thumbs/basics.png b/mobile/apple/thumbs/basics.png new file mode 100644 index 0000000000000000000000000000000000000000..5305ea3352e452bf1b62cffef13b47a60a0bb5c0 GIT binary patch literal 1332 zcmZvcdr;C@6vuz$x|LbGH7?s`nOobtR+}E%;=44{%1A+N({yz;%Q3di($dsyGes0r zQ&JIAQ}G4(21Gyv1t9?yL3|)Sl1$xAG0lYiHO(~rv1dN_+;hKk&di-T=iVf^oAY|3 zEk*zUtamx%=nn4YAJ-ZK&^s2Rc>u7A2tS8#5@o&tmCptqKk-TVGPc-#?Dzre&pH@< zs@=Y22PbWK*Y>@jcXL1>oqaGj^5SnMKf0BQ3B!Xq)i^3Sm)?XCm&GvYX;M+PMugMw zabtYkXjwEX0Y*-=p(LNGNpY%8b*@Wut?Dx-Lmcs@N>#4ZuH;Jez0-D2usqE$_jRc(@WEgDvjwywk2G^W^4Q|ud4 zPcTw#sj0R!tW^uvu_?{2Iqfv{i5=sKGd10gnQqU_aA0MgWM!UWWuB*JIkB^x+1bvm z*=JgDXE`_zM$Y-R9JjXI3n1KFI5*dunFr_QUF723d3X1l}VX?)Pz^ibA>me3yc(Gp~| zgg*M?K6+ALbCSFnEoWd9Eh!2nR>4Z`XJPwUY5nZX{?-g7=ji|^OUcPrwq*~t<@IxM zgWP;2FK4JDf4GA%EO@RG6so{3zpNPPsu&f6RE|oj#wFEbQu4U8UM-~#OKHR1bX6}! z)7$V$MtLoxPRL2Ka{8o#JgaEd^w-S}u%`w&QzQIob?1y)I5W|@IMMU(j7YDYSz3I% zyg0Y4*XvIxHa-Mr&N1BG%>&qE^4<4lKmK(1my3ui{!#G{9~BnAC@CRU)KXjeJa)Vbm5xu-zL!0b!+!-l-;%qp2h$AZYyCA z1iayEpG{19r9S9&)FvuNKVhY64z{4;xlsFAzLFES_ z3G0Zy(73g7A+Vcx!GN^}^PnUoD6{{D)ZpBnKypM6-5y&hT^K&L&HK>MTk|MGww56M zFu9aF*hSOMt)#}GBa z$k*i|$-iIZ=S;c}7y}%-MdbTYV{;lp1`*F#w6N)y_${JO&>%_-q#u*4t zhHH}(g~1OTee6ISl*s_*v0&h=(^9yP22R#s>$Bv+osa{CYjD3FPS`p}B@ VdsD)?s~^8J7biEz>XZKQ{{cYL)6xI{ literal 0 HcmV?d00001 diff --git a/mobile/apple/thumbs/calculator.png b/mobile/apple/thumbs/calculator.png new file mode 100644 index 0000000000000000000000000000000000000000..4d61678cb89001b97146c1d692df11193a830740 GIT binary patch literal 1239 zcmeAS@N?(olHy`uVBq!ia0vp^@<6P>!3-qt#sn7wDdu7)&kzm{j@u9YA22X5J`V5+ zasB`QzoDKEP!K4emX;P36$NKlTUkOxW`e=qy<34&KoY3_$dMxuQcYPA$nf{~_ww?3 zaQD`dB}=AEnF2KP-J4gRpWS)!>?u(2^VPlo&&<4j`QqQBQ{Nt6apCmwQ%4W{-&F-P zO84&FduaEz|LfAftuOh%D(Um8oL?(b_iSFbWy_YI%ab>3 z*zjd>+}5?Lwya+IeSXOQIqo0kM*N)RxqjKgx3famE}09o{l_Gme-q8t&Y5z0YUa{e zQ}#?P0lIzhjEUbnb^f=>FPzr@zeV~-i_+Z5JwSJ!Y4`tLCpo*f?R%Bb}t!Zg#>2I#?X(_&1Bwt@&-&R|3vQWLVy6AMSTys@PYkA(uEa{qx zvYPVJhP=3%?8Msam<@^Y#o19gSs7XBsld=HNsi1*j-DSWR~qk|A0Ltx7oHg%oE6~% z4Cj=HfZhPv#1Nk*AGzoNuV61{U>F9wS^K)!J2^SI*;%<+83Log!%W@FSi#j;*~rww z*x1;^K*roiU(3h>80;GQCi>c%>e_mmnwr3fkW*GyR8*9bQbnWCmEXYeY$Kep*R+Vo@rCV@iHfs)Ac)QEGX9QFgI{bFc~9rppT$7?`X* zT^vIsBv}tSX3K;!Fg$p_x6*j?*}Q2gyJuxAQi`%!;rhn)g{uJT%ZtC%ZM7a<>=t)5 z(3&dZDAdb#Yr-yNl zq=vv3`+t2js(f8HJ73SpgnQ?wCG6dv#s5#{ue>+g`sX{DE8p#S>V77&n%Ui-`(Ad5 zMgP-@vH^9q)sJiHjhkk>uRoGH)x^o_d^$k~?lD3p4K0aS>zfbC#)Y)&PSp~V= zlk8@^SyN{(Syz?M{_OMS+GXXhIvppGv<0Odv2|-v1X5o%i{C@Dt@GzYb=$R z7XKhEL`#Tk*V|Ncf#ehk24&8T(~2*bY?-?1Ekmh`Q`|1c#rJwt-`U2lESjo*TE;Vh zGvP`eGn0ywhhbBY+bS0c$;}Q)GOLd-SN4ftU9{DzO6=j&@bI0}17zzqGu`{Y$9~k?hNfOlzPp%b9LH;gx5wgak_qX9ofBA z7vp7u-mn0s(`!rus zGxfj;jw(<7!{6R**dcl1(S}0t+CU}Em^F`F&du%nIwe1MZd!u-J7=zR{aI&kG;dI> z_+H3vHvQ+b{gZYr{#(5>w=vPf`37qs2Y>&rkT{ty<AI-q9 y>v{e6bjyIVw=9?#1iZ?pvaZl#U^pT9pLuWgi+{ds(~kp_8-u5-pUXO@geCw+^e68C literal 0 HcmV?d00001 diff --git a/mobile/apple/thumbs/calendar.png b/mobile/apple/thumbs/calendar.png new file mode 100644 index 0000000000000000000000000000000000000000..e6e5591f1419a04b4858b124f6bd52fd8fd55b4c GIT binary patch literal 1103 zcmeAS@N?(olHy`uVBq!ia0vp^@<6P>!3-qt#sn7wDdu7)&kzm{j@u9YA22X5P7Ux0 zasB`Qzow=pD=RBdJ|!q9*32BpsIIOqE-nUgfxyelE5Y0%TTeezSv6fkDuiDEA`6s4 z7Mz)z2SnTYCIF2Bl1@%e#}_VwkjBQwKt@_x+O=!fz8*gEe&2z;d-nqE{rTt5_wV07 zef#$Q{rhLno_&4%)w=UFDFjE*EjK5Pv7gV-aB1A&)Pa?&Ybz8x$RzC=he3MyG^ZArc8NU-}tPm_C{^P z)AFkK#pTzlYI=Hl9u}28&M&%BT-w^&`Y^ZPNp{|cWl%!otEIrhA?PMuSF4kY6x^pr9a70;mECTp%Dct-QRW zW9H1=yU*Nx2Lum<>Q(^ta29w(0^^$N0|+xZtudJa6qG4(jVKAuPb(=;EJ|f?Ovz75 zRdCBJN-fVX$}U!L4mM%iba??VMSS&iaSYKo-#WQB`jUgpasBJvsq1g;-kZ5hI#*O+ zvy)KBCKf^Vt&TS}93pn8csb3^zB~8t-MeMcA5K*KvH5QE{qFnEcjn!{Ys=2SaQwZG z{fqQp_c9+86xY4<)k@{>GS@$Qf792mPjk$6Pn&i*yV6t3W6~b2i3$^w%6_taY)#tu zL-F&AyN|#2{4xCd?X%aHTDNIWZ8XKXk00pl&Dt6@d7e%iP)(A`td4Wb<{wMmSkrsO z{9IG<>|VFW*@{B5s;BiFH!j|M@_A=~k>E|Gr^lY97S#QgPFx+b>dI2Dy>TnoPV>4n zJ>}Kz*n9h!^xpj0a`X1rMMr|yr!za5y#WEw_@dM(HqZJ=0;w~Y2&ZF=+gGMnaxc=(fGz=*3j(=B{tU& z1ylyQu~+qr|CdX+-Yt;1L^3qE>biEfx+r#2UX|@wAGI9Z8Hqgxi>8}$x$Swa`}%3aw}e*NDJNufy=@k^kXqKpu;c9J<_GU5 zeLw7Trr=*yTGK{(1!KF)`~4>i+w2k!%=vP7<9~+tYd^G3y(11vaSWcWelF{r5}E*_ C6&^?c literal 0 HcmV?d00001 diff --git a/mobile/apple/thumbs/calendar2.png b/mobile/apple/thumbs/calendar2.png new file mode 100644 index 0000000000000000000000000000000000000000..9c5542235036134015e3ce617c7318a463a00c6c GIT binary patch literal 536 zcmeAS@N?(olHy`uVBq!ia0vp^@<6P>!3-qt#sn7wDdu7)&kzm{j@u9Y9{{-r0(?ST z|NsAQY;4TR$_f-n2?~leGY2xNs;Y{Li-FwGfB-KquLN_8Y(4!EsSthvh%8VF zS#V}<9uRHon*cNlNIE$=9bdQzLITYPGSbr0E?>U<_3)AR`wr~gyBBEhhc90~efso$ z?fQdTw|!l-^ykbun^&%UJ8SOC?%vm3y^ot(A2qf-tFC)rT>d0G??ZC>gP8a?{=s*= zd|#Mb-!w7bucWd`LFusrM;Fk=8YMw~!3=_ef=WtCK>MJ;1p-3T%F8=CX3ku-`^?>U zKoG#}FALPeS>O=~3>K~rAk65r#$*OiP^QE+q9iy!t)x7$D3!r6B|j-u!7Z~WwLHHl zyI8?F*o1A<lRaG=Lp096y==&L$biS;;`k z6>etk`r2(zjxyc2VJUyIEZQN#hGl8MsebNb1xEUYYR5}VmpSOpO}o7^ME3n!Zr%4j zv-IMBmtEhrJi~I?v3;{2o3Jsx{r4|Zi^VW?Jy{zwZI*FC2z3nVYu61D(g<>FVdQ&MBb@0Be`pHUIzs literal 0 HcmV?d00001 diff --git a/mobile/apple/thumbs/camera.png b/mobile/apple/thumbs/camera.png new file mode 100644 index 0000000000000000000000000000000000000000..9b808a58605e1eaa11ec5c956732ca9e9f3ef9c8 GIT binary patch literal 1507 zcma))c{mhk9LERIM2d+RR71$Mj-64c%o;PpxMF4)_ibt%iJ46YQ!yB4nxqCfcicv< zl`|b1ts|oK*wztBuA%J4nwWii`e*mQeV_Mzf4}#AzR!F7KHn5)CmUI56=?_rB1^Ev z5N)vnT9~b>CO&hoJb@xHvDe4)07*nd z6v+JoX&8)^uC6Xv(rDq-vti#hfyUF*)0N^uCR2z+BEjCt#?B6lCjfClKJWi1fvlsm z8+1ttvHt#kb#-+x!{N#xK_ZdhNn2Z6VRQyaHie>%P0{LxXl;E{u(q+Z{AphB=fd)* z_w$0;*~O`u4`VY+6O-@8-b{^+O%0E}85$XXIrv-0;8btl(6gR_ww{st-ii92@y@3` z9bLbG8y|Lb^E!uHTAwui+?m%p+SvGz*F0ET-@wY-{NQPIGu zdCKNL=atp4Yx+ul;@vN)C@8K@DDS>sR9ReD3Vsn++%)^0 z+dv~5AHdEC=dOthLRp{Dvi8MTSeToetDmMIEzmj^b_V8HgoTTynH`{W$kY)SM%4%d zjG?J-qNHb`t*r&X$*UX79o7dB55N!aRn?JEIw~h82ZgEb-7hb@R~EPqcnshM?!w4< zD1v}u5S>U6d3kva4GnNE5{dm!bNzRt#<1C3ZdH5#gg_wJcWLgcwf9`G^#HDxUi&)4 zFg2)qU{j5Ob7znusf?I_=n#liaAaTz0#Az$iHVF3qa&x7Su16@sMF+Mg)evh=GS6Tk`DlsZRl2TJR#|(}iFkuV zEOn!`)n6p}p5@T%TA*pLs6C{w<~?8Q>ygotyz{CA8Y*X{owfFUdjPhp>(rMWiuXn7 z=GXz3-kSYgZ7IDt=)#?wDnbw2?+2PEk(}uSp{^o}uA=m?v%#LzKdWDW-gz<>d|bxa z?UE{V&r#Z zA9Fo6PU@1bBLekGV+pqON_f$I=&pz?wZEJEdgPo2EozcwV39ZbdV3;<)J94~)sd%l z$n)V$zEy5=m#>qrrCPcVH2O-wAbeMq8|x^!@}#Bdf?2sLPUWpKuZoB$^HkepoL?24 zzE`^aIoT^Zbv#X_pY?m2Px)=6SKfoyF~|kx1^YAjFtnO!=!G4l1Vy?@OD8ihflOktptm=y~`1etUm9XuQHr95#Ll&j#6DLyCjwhEDa&xoUnY1 GfBZiSHK9oW literal 0 HcmV?d00001 diff --git a/mobile/apple/thumbs/clock.png b/mobile/apple/thumbs/clock.png new file mode 100644 index 0000000000000000000000000000000000000000..801c6cb9d83c9130060c65f6e8e7c8f7a0cbc818 GIT binary patch literal 1014 zcmeAS@N?(olHy`uVBq!ia0vp^@<6P>!3-qt#sn7wDdu7)&kzm{j@u9YA22X5Dg^k1 zxc>kDA1DHpw6d}?Ha3=&l!P!86cm7L0RaJ^pt`ymgze?!1yl(nqoSgKQfX;v$Rtn= z5CAo{w6s)JRTUN%0@*c-@kwU_U--q_s`zE{{QIdvuDq4J%9f09tga+ zbLa8Ro7b*gyM6icnKNe&oj!H!*s+hBH=o|UXYby<4>xanylL~BHEUk3TD^7a*7e)A zJzBo<#`0Bb)~wmGdiAnp%hoJhbZyGyL(^x?nKNg~lquca-Fs{5>btvu&e&F540OrD zf&!pps&cZQdi!N(XXmD+16>aE!UI#wpr9b2cbuG@Aif6rR8bn zWCl=Bro=U(Bsf2CcLhe_Fa}|D^QA(x&lek8#`jO}6lB@8+y5>)rcs z&hq8QLchyDaNk^6}3D?3_P->}0O_#$NeaI%)CO86uV)@9*z(Q<>y9$GmRk z*TOXl96E>dZ5{Pz3%R(Hc$3mW$j3}xBKMG;IPI#GwrD8#>gm%s`fJ}YW`TA^DWF+cIfPtL|Z(+6G$ems~{5*N8rIsa;7l5+0O51I?R z7fj>gh+3Vw^@G;LJ;~=!{MygFpjIv==bV9Y3wtus!S?v92OCLeqBArMI6Q z6uqKDR>w`{WZwSmr<#W5%T>{j?(E4jUK^eIdE@1EX7@$1+pj8Z4$SH8b>Ba2>S0sG zvaVP4nq@!!M&7s8c(#10#f{kfxC?Lh{=NM_tv-ME(_eDSmrlID`})~{t?ApQ0TUC0 Mr>mdKI;Vst0DSb-=Kufz literal 0 HcmV?d00001 diff --git a/mobile/apple/thumbs/compass.png b/mobile/apple/thumbs/compass.png new file mode 100644 index 0000000000000000000000000000000000000000..66533d341440fe94e011c4a8fcab46c229eb6750 GIT binary patch literal 2035 zcmdT@i96J58~!o&j4hQxwuI>`+c<@6Ge%>=*podPGTFyiGGxh?I66jl60(!R&>6z9 z97j`*V;3V^lgN^gBYxkn^Ig|>egDGuT-S3y_xrxrbzkrM+|PU8ihzR)ND2S|0LPnR zZJ;XmBl%zuV#`zep#lrR;O+SM_}<`u$b8q;?=-Bw!=+L*7o89X2;whoyla*473dO zbu4sO5A?KsYiXKoFPrG7>U_mu(`j9==smwSPSXoI+FF?O{HB-f1I;DPt#qhML)Em6 zqJq}ivfnFc)wPuswXGGk_4LZ@`Miv}r$yxzRTbqW&5yGxigTI@lNt(An{%iQIY~u% z*?D<+<=Lq-iBZK_51&1xv_J4IeGr|RLCZ~xf!at*j89KW%1NN)#|EUuP-)R*TJ-IE zF|iLKZb#j@lSv`o3!@~55TR~|QbMW0eq?{&L?2fw$vu=rj3l~5-?UG^iA?b@_4f8& z$DqSJed643L2eFyZjO*UWGC!@4GOk4bh5n;x!jFHL1y_7&iUhYoh-~C%SgsLALM21 zjSc+uRa^~KjW9;tGN*BdT2{K6rrIbkbqN>mfqV2TPT}KYwZNepZgTnmxS`H4$u^6;= z9ItXVEJ=Q4^hpZAT0#0}6>N`q(F1;oEc4?h`~tR9+mf_KhV$!4$T*pcqgKYMyE$vr zfycZ1^XgF>(LSM*KwR6tTtWV2u{&afbDEGSaW- zaD1ifjZA&bwbDQHI($*l^rO24{se*EcZ7mjmSOwaYTctCvJhG)ZDDY?5Ad1#Oq-R+ z4NjYOjYGCz?3mhLcX9-;Y8We=b`OPT{7ldWB5s8diMpF1O{JOzoTm@AS}o-S>|G*` zl3P~p^Rq>OjY#FfTH6bsY$Oquhs*1;a~Yx|15f{o+{+L73&q(*J@&S5^+LUux?rU| z91fq8BdIf)z6Lt29}7>z-oxf(%}y~0@{Z@PdGl;-dSG}|njY3%JN&d}AsE%xrhC_| zXvlN~g_F0i7jl8KWPLDu=@9-mZZ~_)5A`w6; z+Q)+zIL}aY5pz!vRIW^!bj<>6C0oH>d8Bi(e8PUoTb`n6k1R0rd>{73t+L{w>6sk& z8YN>36Orn*1F~+>^%CpSKYS%jd#OK3Zo-{hbxvfa$muci@yfKUOqP!V_rlgYr>D8t z3hQb`m1Nj2Rd$kawNWIP)^96!@;;o@%pD>22pezI$SL;eb~1f@k3-U!;T!51l#om; zrEDhjUUi%pRFVv@G*TC5-24S;kLwC0SnG0W5G_*QUUt5#waZtcBI&wv4Ns|25E$4} zvZu|wcp){zdu&T2mFK2t>uz29=h}<*W#8*uF0aqQ_Yb?<7Ln3#^MJ05E2Vc^O(r6) zuqM5Wo%oZDRRBC9*XpITa4A|#Jgs+p*!fbx%-_EHCpi{5Ql1$IUtB$FA}0zD3`p#8 zb{^(^CrocGE0|XwH&rwly77Ad*WS>WTWo{u^z;~*R5h8m`GbjCC0%N7DUK~96E)ul fvZpF#VaXszrhkX%Op4ND==TG769TpYb0hxWfT=m9 literal 0 HcmV?d00001 diff --git a/mobile/apple/thumbs/contacts.png b/mobile/apple/thumbs/contacts.png new file mode 100644 index 0000000000000000000000000000000000000000..76ae042032c600cc036543019133cb3eab55c404 GIT binary patch literal 1505 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 literal 0 HcmV?d00001 diff --git a/mobile/apple/thumbs/ipod.png b/mobile/apple/thumbs/ipod.png new file mode 100644 index 0000000000000000000000000000000000000000..f03c7b0de4cd1d711243901ef67c1d9f52ab8ec9 GIT binary patch literal 1030 zcmZWneNYo*9Dc_b`!ofqAWVqUNRXNWMxnt5iw$%x1`7lU1l z0}M!zARt4~&(n{iGOG zsw$W!IY)!_M?|#LEBDckULn+nxaEYh^fGIWjHMSl=*8ChmzW`5>_<#W`yam#K1(j-A@jh}C?-5r}O=l7Rz>3gugf~8q3&e1-89L1a& z_szIBjH!Nna|3r8Fwu_53z&Ehx0>-~v1RN7jMn0_a~Lhe=XwlRVk80PGZ-jCZw^KT zxRH-81G>`DC%{KqToG6_KwdiP&<4mdW4?k zW=Nx`s=UR2oFQ)WuAF%r7+C z^?b#GGx0UNJeadRwN4ZzVP4Ggbh^_#+EWm=_9mmP$d0>guVHw~-rmv85>#ByuQqNJ z<{I6F%0`vw))6Pgm6&{!xFs&QOwiNGRN0n$nN+`Jlcsn(pQVx$^Gf-jS$pcIE0)GR z|IqSUy7$~HzMny!^N}L>ifih|XJEUw!fS`9tig26kjm4EnMR4@Y)-Ot3ss$RLmNbjoz>0Ye^^ zqs$Wa(NZPrq;KwQY`X w<8?xcYks;UoQ=ghgv9yH2!<@(_JlYv!OXB+duGv6ahs}6WD z^a%E65Om}i82fo*F$V%rdodn6QC?O)o@Qt_(?f_Ydt6LB?TuV)p$Jg+f6ZP?cTo0^ zhLm*+T+C_~SeaGB2Coxvn}4#+I$JRC-xc6%f7EB2FWS!g_2|2?p*LF9m_|8z`)F~# zcMRLzG``^l&E@vey!-`qZZ|}#^=v@uLgOea{iM}fuf7oGhC1ce{tn6`#qHsS@}{RGjWTbbfg z3)MG90J5wrzgLwxtjHde-{|G%wYFy~I3!_RKCdrTEx*z$ybee&ceh_rFthl*DJn)L zw==O@7O#}V%lOH_{Y#CVF^aD9$~&p-wzIP4v+eXGmNdLa5+M^sO8A5pY1rf1sCss! z7zpd4onh6VY$}Pats-)OP=JqbEj&$c4p9Jsat=<D@B@`6*;qKF!1kQnfh3osI{ zzle;lWCRE*g4hqd<+c7Cj(4*dDZA_4SmDcH9BJTsNa<)c4b3d|zQf-yxqFb`N|N^GrtK`E!P-bR56Uf@uh~`PSl8Tyv(l}pDR!h-yX@;0)mLF9>E_e~ z82Owwc(s1~gKQVQ;8PJ~H3H)^ir|HP z8v@x|GiN^VjB8zpg5#G&8{Zh|b$T&{|Do?z0GVr`W-PfKsb>Ut-p_RJh? z6H_Lmw~u4G41T>VU|*z|8B?6Oo<49Jr-glCwl4Wl^l6c+l(BeC*|;EBwY*V+pYp3% zh%jZCCBOZV;}`0fIZPL13hycBmc`RrW7b}+Qxh*Gx~|TQEZV&fXL~$7d`$Yn3-}^$ z8ypioU9tPe2!(7}OxCX*a1ZKZETie6t#!IkddL?wKxkhO|3P?;`|6y#sqn7c)k)H@ zrBwK)(@I|SUH=}Bnr4`BxLP%<>;5({wHQ!zLP8!bnTGG!ji|PRzE{0?&iVd_iP?oO zduGF3l43PmvuwK8!akplnXg>Ym+4ku(mt}`f_PFSPa-h~3+|T>MlWiKsf4eXv=*Hj zZzdiYdf`?U-6&h1~gd4qDQLzuU~z)Q`#HdChdx z>H7J$Ra=I?GO=oQ9@cm?6*!C)b26owzZl$i5#1r`Vcqmr_WJM1*_M@VAvKt`Pu90O<89St2VA|exJM| zsOl;{G-S|YVAr-!Mu|qW4S|!Qpc9LU%-1wqB(39-A&C?aK)vixzw`aATKDrwY0M0J z5z(*)L%@(9M5l^PmN0Jy+n_99u;qnDa7O(qeLZ)(1utkv`kS&0lRK2)a&TB6=tI6p Jo=5ogKLOMtH9P7*=nNKKULH z7YyE^fc1ulDSr1-Hzi z)bjkI>|zDyU=y}YmlrTFFs}A=aSX9IojdupQ?r6dL*dn3Ykt?>UEq7S=$Vgsy2%+K zrPqJ&FJC;HEBc4?m){l#8k;9v%!&_RTU}RCP!(LiEt*3yS$p;D1!*VP7UulRk<4&@ z9;C7@YfFIpW6M24rf$-)>pzGt4(3k%lNxTA<@j(`Ag7dmPu5cJh4bolk2ys=?hWM9 z{%E>bfMsjfM;W<{7!i?s@k<$-X3So^L}rTEoTCqpYW}Ygmz0pb()yz>U#)NMw@kg_ z^S`DRAKGVs?^&|N^xBfdHv7ktGr!0!YpLY>`mx}U$CG{gev~Jg-Eckbcuuh`ch)xp zg+9}|5<}Hx*41-_v~HSNRqC~T_;+&W_n0?5F|!|cJjlE=`)jag`GuuVpZ;yQ*Y_t{ z>QTb0hl%}<8dy}032y!#V7_(Fj86?l_KzEl7ys)>OEl|LoB5t^QSFVite=%?mhD?O z6n9Kv`ov&+kZq!lFstD;p~xrK`<@tGJ!yZeDZHK4@Kb$d?VZ(bM`v>{UcdO+sj0!e zZL6nmGZb0JaW*c5uPMl)duo;pm%HxXB(ar+8n$aIf?r!+`?0L?%cuQTc2>cs?>p2x X8Qj@Xf899~7`+Uhu6{1-oD!M<9HMAv literal 0 HcmV?d00001 diff --git a/mobile/apple/thumbs/mail.png b/mobile/apple/thumbs/mail.png new file mode 100644 index 0000000000000000000000000000000000000000..42970057a786b4b69568e0ff266f9cd33365430d GIT binary patch literal 1491 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 Nu*PBW7!Eq}%HO}WQ_cVY literal 0 HcmV?d00001 diff --git a/mobile/apple/thumbs/messages.png b/mobile/apple/thumbs/messages.png new file mode 100644 index 0000000000000000000000000000000000000000..1a7879a2b5f566b8d82b1f39ba04945555bf3de9 GIT binary patch literal 1412 zcmd5*i&K(W6u)R7`O2Ez^1+&`yV;uVw6U9+mIFdb5kBy-_R#XtLkkHhOAnGy6B}nK|d&`Q3AWzkBDNQxZR{_?3jlDSgpwkW?D561)<`7rOCKZ2I)g}w!eX&QqhT)quyP8gMv)g57K}zCvWYAZ zo16cH#IMMatRo1n)9H{%KO1SbnCiet5%|3vA5R2x2rFN2X!Tq^3vL^B8WI z!!5EQ*$wT@rh&$=*#s@rt5_g5jtsVoAc0ySQi-_()dH0OdJdg@4psJ53OXB#HN`w7 zkE4M&z0kS#bKHj)$`$3Miqp^&2zlTsMUmAE;5>v1+X_5&?worNY8qe-m|S@d+5iFu z0`l(UWwfv`6N{W)+5sJ4HM5S(vh$_ok@q7H%hJ#=05C{uN_0@$?`?`_h_ac&T+k1a zB}ob5_?^-?>J4hVI3Zd>$8@0rWr08m_VJHIUyXKDIK*Cwp^2zrS7_i7pbEmMe5$|L zKa{_PBnSa50DT9wM!3d9;uca90%TwZcLz?03%U@rM7RVc1$Z7FeHE3;Npr1r4XD^` z_m`a&A7CzGd`f->Jm7xjJKPypR26WjaI`81=;B4#A{$T$KpsG6FM`hw|Bd{2BRi5t z2TPZF;_;;Y`!i4TM0b@+gjNv1p#qv z^6zYV`hIriK2{1KB&R2)cx*YuO36%TrDb@8(0|2TSJxp!;Y}eCqBflQqp~daX*jMO zaydUZPZ->ux<2&D0|oKAc=Zh%V#GhdW$A`WqAfmEND$PYOC)@+O4=gP7!#%#1?0Ni zo{1@V{u7*$d8-D+p-THwcilwuOJW)ZeXI+`_a^g0k5;W^gajrJ`K?m_$=K=0DwEhw z^oM+shz{8u|95tF7nIz$p-f@5nh}_^r}~tMYvt|MaK?qjo7^GO<}ExnH5BR*}3jQ z?fVm2?B#>L%Xi=+L|x%CKP2{bP`tEsHNM0@>%_H~u_m5^{TNdl9K23=vNK*{&tDh3 z;xNN!n}O8*9#% zVap0eT&h!)s;*bgx`F!6oZZPTQE{WIYP$NUbuWL>q({_t@%k_ux2qF+xN>jHv!F`{ zx|v>nMuUCKoL}S6dp&#kp`wP4SH9EUi7R7B_3yg7OHcUkE(v>tuI$I4`#IVX-NiLU zCdTb=c%@j{RJ5Gh>gJYnseHvUn9iL2mTcO5=kvjQALW8efWv{})uK}GQAJYgLU8dm z?vjdp3!}AlrGABU9H!sj)-W)>r*r;dED+DVJ{GX2>{&CzWx*_+wbb{q$WA)0 zg%A!Z6`Qdtv#~D8Es-%Zj2R4m`|EV}>~p^Nd7tlnzw>^7e9w2y)5A?!QCATFl!*iv zGMe?#z{+nzdBop~hNew4C!)8!y!_DEp-%uZOwR+}cmzQ#c7vjf4B8Jq;S)@D`7Y?b zuBfKFThZ(dV=Oh@>}2Ws5TgTUwZUzRY-|9Y=4Th<1?YirZw&RIVKfP%oz$Z3;NFe% z=xVKGp>t5S$6&f!%IvMaF?x|D0IJbqpd*}ghCm!9&>Rzl#RREfPHw_%O#ihq+OzcW z&#n?oQ$BQQVwzcJvWzo?jY}B z`DM1`WfAfs1K|MD9w%wb61S!xPs2nFS<6pS78=h6e%EHOgf1)!5}@0n zLxS5RX@Lil>(486lH`yCd5#DR7P5~F7KHPQK$;7~*@65l+;XNJKNm#l&Z2aZG~Gg) z3BnAs#Z>3X4AS)Vef&(A%7P81o`7jSf5mQ<33E)tjih~ot1xxRWHkwDI)rPe#HcDor~>-*4M|i5)GpR^vWFL_si_$l7+C%f zm;c}s%3!3Wu~_9TEga6scg%l>K+7NpouCj+IEp%5QSdD=PL);#Xi<-j_oI77h0+;; z)DUnCjtUCFx`t6h7*W)48rIp%O0KrA82t~nL>EVIZ5`R?J(1ia+VGaf>pgv*;Cijt ziGo!cpkMYb8xkw8#@|{EHXHDfC(BTNAQlKmTjP3(Y57{Fy9Tf|KC1dgTg@*X@Tni< zRu;>o_wxU)zA*S;*Mr}%>r2HKV$}~0V(?V}d3$D0DB-bY zUGK~sMpC&fdC%G0iC0m*2+4tXc&UE>smkVxfa>0%rtOzqzv${J`L{Ry7Uj-b%=!7& zv0s%a0o=GZYtl!Q-IjB@j@lK3)YpVFT!wnq?2hP@%qm~wLXuql`?)|DcK*XDVx1LF zRE6ioGo+svOg|XSnv{PXyYTkC_=Rv@{JDG4=GfD@d<}nk-!HgppT~GT{Tpj%wWPIt zStAVP_#{77ELs^aD>;<9-+}GgY0=3FWiW|G7TOB2KGvBy3n-1dn)B>+kd4u)|CLV-ilfF*BCvr|0OILKzOo+qzOWw@%pH9Rnrh zMXN$id++eYHEP~;_dbK^8q@1tB zdhuejRg+1=vS{ZAq}gA~z}#@jImaj5tgB;UY^ad?XwL>GA=@Y$oMvm9I^3+%hSckC61c8sB310vqTrP}FK^1sskmVy8P literal 0 HcmV?d00001 diff --git a/mobile/apple/thumbs/nike+.png b/mobile/apple/thumbs/nike+.png new file mode 100644 index 0000000000000000000000000000000000000000..673d59dc84ed23c906db6b8e88698591556caecb GIT binary patch literal 1106 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dy%*9TgAsieWw;%dHU|?Wu2=EDU z{r~^}CnJXcbDREep8J1k&;O~F|JzdjubKM4ui*dgW&bZ6{?`!w_t5(P#td^57=eoa zmIZ#)0-D9}MVsN16vGDvh99R7{GV0#H^=E;k>|hKs6Y80Kf^Wt-M#vM|Jolj8vj*= z{0vh1Vk+>(fb;*AqkpfS{d0W(-|dTkt(^8}LjI4Q(qD}+f77jhr&@js()wyG^yAUJ zpLehRJG%K-so(E-qyIV#AWMJ$GB!5W)zMZ_QTg%W$&ZtJuU|4Ai3Csq9K%KDz``!m+?TeRa>Z~d>XD&JfszF0_nH)97H1q2&6ZUmAm z*Q^N&3i9#s0UFN9$@%Zo$B!?c0nv}EXTP04`seE>pvd1>PhP%x{rACbpp))Dd<2pD zv~$(}^|OAjoBwOc6a)KY{XSr5Hk1VU1%teb3RVHR?@)!1 zc<;bcf`T)5?|uhiBT4@MuVifO;!@r*bJgy<*rZX^f;mRE7bXDR!dc)ESKxJHx&=ckpFCl;kLIHu$$r7E~(7NwTw7iAYKI0u`sZMwVwn5edTx;Tbd z^tN6O4}NSQ!unvfi302G6NjdGKl(C{!Slu5@@p0e{tJJHBpK6Ws$A{kKh?&uM#@dUTUZ;FTk6+m>31 zGFSR;xx#nDEX3>T8vm=3UMttFYHgA`u`4FBJ1CjWZE0w-q5V>^kYxdD!n${zpZw0d zTKnj$q$y_{x3?7DoFCIKtC?pWb;!%e#2lOwEUG z&c`J8|NN8Pdt)!h(XgPI&9m9Q=+E_OQ}&(_yKeH5{A!l_EK7dOe`=(7J$bqEJDqUG zmiK;dC;tli@58s7v6y+{ZzisuPt0*Y3hryqlfN2u-v5Mq!~67wVV^I&{Kx&G{_poi zVp*%o3T?I>{CBT>|9R`#zwON!wzd1SwYP8I^-fAks^-@WUVX+-eBQ>N_i^w7Bbvd} L)z4*}Q$iB}fv{(# literal 0 HcmV?d00001 diff --git a/mobile/apple/thumbs/notepad.png b/mobile/apple/thumbs/notepad.png new file mode 100644 index 0000000000000000000000000000000000000000..3f38062986af8bf0390385bd7ae239fab9523cbc GIT binary patch literal 1266 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°z);r<$^aAr47@C0Lk*iGT?A;|cmpDEAfx(1i z(H;nvaX}%e5FDDu5E!gv$BYUcwfcrW{^{B~E@IF{zQ47##Xt$Es-~0G-Ix~|8vA)4 z;v!BDe{g6z1dI1TP>6y%c0vuu!d(bLCw`~555dESE3Eza$r^Oy)w)xmCp}x%&P32& zSYLm^j}fPbKkQ@{gdR^51ROh|;vyn**jhzIX(22;3+5M=VQl;c%W|GlV|T*DXdFu!tN38CScY`melAC^$03KPyz z^bI?yW}B9dEXAPu^qCw%KxA|_CqB1yd?c6`>Kl6D3BGnJbeYg@C;OW~$1N&W2aj>@ zP>IJgFHJNuP7gojgcylV5Fm-yaVnNZ5$-xA)rxDlfkbQ2hWmgfD$|NxK5s!1CYz4V z5hmc~tvSDWl!_DNM$u)IY~*~uVsrCc=bnyM3X00eF6YOxM1EfF99ON@R6v@#lwUqt z5;3-gkE==KQItSvCQ`WOuyZ{p{{BN?cRdXPE%XC3;hx>ze|B zAHa~IE)fK%vu#{4W-<6L;;dG-%)bH`>i+!9spvR}C7`1gBoBQ^C zqv8c%dH?$#_IEWkJ6~NG_!EXNPQu9O6pUWFj_}l;wzz+N8y|lV7jY7IOKace{vUtp z!{TpKWcJJPgs$=5hw`^x?R{HucZw(BNnMP00000NkvXX Hu0mjfQ-m3@ literal 0 HcmV?d00001 diff --git a/mobile/apple/thumbs/photos.png b/mobile/apple/thumbs/photos.png new file mode 100644 index 0000000000000000000000000000000000000000..2c801e05df709789dac795618e9009dc339927e9 GIT binary patch literal 1639 zcmXw24Ls9n9Dfiulgi~jaa=jMj#BrMgpOEVcWxLh+^%e~7Kb%sl0MPf>BWUiablNi zUZzb(UY4>`lx9PD$(X#AWs5?_@W02$=YF5(_wsyypWpBKJkRs}UGm3y8KS>L0{{$t zyxsB8Z-Huo(t&n>7#IhgP8`N32!%q)hWuUwpk3+j8{~l?i0v*reY6402b06S{Rl9? zM>1d>K%#pRPwXSmb_dcRzR%NdD>fFUR&nppnAH>n&s@!gtB_j*YoT>)d-?OkbxznOM`UHEi9`3LR41~#oy20t6L_K zkIKyDvDD?a(GL~K*l7Lo2)W_ST+J9VHdH)0N|C>=X?$0{Ja}+Xmh?}*f2raNi4|7=Y^!jpdz%7%J+|Gqn*Tz=_QBAajSmbLZr+Pj5FI|1pmS4)z({bFH< zg44ZF)t|HcoLt@2F)1P3m#PqnX>I4@YKfw_a};TD<%^YN(gAf-jHLBUrewaT^+R#X zc(!{qBo{>99Y%5tdkc4+ zFHcXea6ETM(8uy6mZ;haKw1egth}g{1H$=O{B6~zG@!TyFzh+eC3029kDmDxwCw!S zw9r6y41w*bhzE~PgPwRGOx#<_^t_fp894@esi2&p9eQ=mo{aCqn92UBUtgyFOpgkQ zr-ncH6;LBdj!EGB;h*5ATQObg0>IW&M)3D3!T!X9#4ukE$N~N127kH%d%_k-Do76y z3U)jDF>Ha8!;fFMtc9F`B*Bt&HsL3DJV^OHBQ=HfTOR-p{1dmdQ%EK={)`0S=ip?4GQCCr)X_YkN(lVy zte;k+O|z)#)~K!R%z!g!oX5Yquzrese45&tu})EochGgnP-D|`qS;P@4IuHxS>;%C zp*i-BMH8pbX>pU;hS}b2ryPGRw>9JK^f+hB9s9whiu~@S!RPnv_w_x@eBq)020f8o zP?5+r>Ik0Kphe1Kas18Gq1GMInOnTFX4;;q*1ycJK^E^>WuGbBI;-xW}n+kGjF(A-`lP~GQEy=;C41Ha`r0| z$0zvcPGf9>b<(2*THe4#ZYIw@MpHKV{Sv>707C(RWpHF`sruD`&XYVTDrSrkBd z?RY`Sar$k_xu`Vx&|h7o%G!p*T9+A^f?`(|fhR&49jeO0*)x37hx=G#tg&L9FE`yi z8N!Ol@C?*DO!(H_w4LC!O>KVN{_U`hB^fh8$157G@1atSBcHsBw?s#gr^2Q~@K;Xx zhx~ig#8JHB2J~quoqo-RjT9`a%V9YE^ zSe6}mvUF|#{7}>$+3A_GYn2xD)2fZ6*NM?l?>~Aa)-TDuCcgV5cSbP!5mL;$YCCX7 zE@~xuUVGK|iivYML}giBF#IM3h1**QK8|wx%w)y;bE~|ASPZl+$aY9_4Y*C=i-+bg z)V<}#n_2}sj;^706vu8aGSoiTKC)Rmyrp`rwrem)do5~fSu)!Q;I&s6Ni|$tpC%@b Tw=G=Rv9kB^z`64?p#qP4|!;DDw5ch6m7{0 zW!Y&9(Ii|CR+n=sNAi$|bj4j=?(5YbcdvWDUfXVo z*x2vbyyMF|{b(jJJkocc2VmBJw{Ptx8^8y9pbqX11Ehs}DB2DeXotjq=j*i{>1gTX zXY33rZ45j>rGY*|Ump%S^G_DD<5`q2Drg0^eEC-$N63gT1Z7~UZ|x46?>8QBGxmGe(1K!EsZ=hsJe`!joNRvl_UdnM>mL4o?Os<)r>d!cK|DAv9+2LY4%D|z zRSmtk*d~>8*RE^{TTiPdWD#C716ONdy9cw76y@HS%oYL(TrRhhArrIsIKEPn z`C~a#(!vlAQo4Y&_Qc1*C2}B8p43&5!N0=bpHC|a=E`N%^F47gAeqI?{v}G`$GHu( zV>vf*9Em(uRzWLlBR7DfXeD*Gki~WJ!pfvGJZd308E>ZaD*1x@sWw_FyMds1fRhx( z7YL#Ss!$LNR?UGzy za=5S=BL?m_qOZFoU5bv5&c|n6_7kNLO7_JG*tjea>YM~w7EVn0AuJtz^atP_@HgR5 zbl?#RaG7wBNyktT#GE|uYD&;C`v^|0GwWa|At;0pg(d_0${kPTJJFMz%YD#TuK+we zu*?n}>)?098HL;I$4RqGAns1}bc+jej02GXVZ$P5z;S<@bX&)RPL3`P4$;<#BM94Y zvN^`a8V3?3Ve3S*ClH;_S%f=RoG)9oAd zUVkkjxCfVQs2$te+LP_vA7ez`jzQ~$C~IVJpS-V=*nKL~>7LfxF%9!Y7Gko|%!Ax5 z`JO@g-w?M5w`fk4`wNU_Fh$b_XOP==>0GLf=_!ta4aFj(Cl3lHScYQn8nH z|3$}wXH8$RbWDvfY)Seadp(Qp?$ZnbBNqi*QXZOX(g`j3{;EkG-t0ap`IqMxZ)}T| zYdYVLt?VAn;OCyC$*Kr1EV_(eAh-+F61d+7)0a6Pst$ZO*)y$vVA_Riu5rI(be92Q zkN?D!=F}%5wkAe{9h&p(BTVgB%=>k-jj@ZB<07*Lqetjpt$GHmwyBqX^tHlNLlKo- ziKcHdd>{Lfk`-%TIc^_ z=(muO8RBi>z;ifyKePU2;-jrTDvhYtwD+H08?q3FTrqDLTQO)EBfry)^?3Iw?`&Gl zTiRpHdfepuPkIk8-{ixey_*Z@n|}nz(XDHEg25+OG$&Hsmih;aH@nXljSd_gf`t+1V<`2|w{FePQ#4dP7Q3WMkOUsJ`A*fLQ

    rP+I#io4zsNj9mI|lGDGJp8Wf(4-@ELl4CmzvDO&2_c0ed(fcG`eNajCGj|{f} literal 0 HcmV?d00001 diff --git a/mobile/apple/thumbs/safari.png b/mobile/apple/thumbs/safari.png new file mode 100644 index 0000000000000000000000000000000000000000..e7ca494a7d61c24c741cec20dc3b6e78a000aaa5 GIT binary patch literal 1636 zcmYjQcT|&C6#o!VWGET8%dkL5ibx3}8&MzoL_jNH2$a}}6)|jO zc$5_dM2taX1cGddAd*#9WQ9Nm0mIj?_4J(H^X~87_kO>3-}~d*^}iQ0hL(}d1MU@;Gaj73 zH+!IR3aAx2<97i)Idk$&LF)2EiElWL#zK8{6F)#h{tDUlF3h~ zy{x5wZ9$bD2VLAAb20#GdDZ2ATme>XeIGj1i$nOwd0{Wc;X`B5fKwP2g*NyZ6N|=U zV%E#zfH-?&Q7iYvnh69(q^wT6qJ#*FxE2=R*8*j;ncJ8uIacrFo$N z6HeTJ4~{f7X}}WDo&=CU^9NWBu~%MFX$dd9IL!ZPy#TUjc&z+z)<9H?3*};l_8RnlzL$N#R9xf0X#GkaWx=cUy5L zFzu>z`P?^(#LdJQTw&fBL;y zRd1sW$3M{i>-gbkt6cs~bM9PP%Dx8)Qr=%((&H(cJ)5bYLfqTt@OWB*2dDneCVCt% zgguj7wKN)fatEhInAtKIv-shZiPZQp%l2)%N%U@wFi z{CmVn=6H5(iG`3oOO}pn$hj+@b1gW(R!oUuMp&Y~E)$5NPSS3;=`(LQ?I5%{ytT%8 zwsZjfOHJ$yyI^Xc%lQ`$TMJ1gHU`#DKq%==1T`AR+5cyn2J_t~DbSqtb!MD?r`Vo$PPIlUMYR3LVDA zX3@?{=Mz1t#k-mfir($(J~T$QtbU0G63R~OE^N|;>tKG*onbn9PZi%IYM<@Olnmxc z3@PoD!9Fl6`&qw7N;^`p}pFj?=9m W%HCtlyll(8fA+2jB)k?DlJYkZolThl literal 0 HcmV?d00001 diff --git a/mobile/apple/thumbs/settings.png b/mobile/apple/thumbs/settings.png new file mode 100644 index 0000000000000000000000000000000000000000..4b94e87113bd05cd7c78020ebb0591c57e196ba1 GIT binary patch literal 1340 zcmeAS@N?(olHy`uVBq!ia0vp^@<6P>!3-qt#sn7wDdu7)&kzm{j@u9YA22X5t_tu8 zasB`QKR-V|P!K5Z>E&%>YY$}Pzpw;oCQzfKlyq zyLR!~9k?Nfj-Nex^yq=3rw$xGv3KuYpqbmZ?*tmVe$)2V>o%`hyB28v(xpr1FIqBd z?!uWfXHK3rYs!=<{S&7E-QUyG)85(B*529D(o)~pR9D|vU0q#KQC?P2QCwUC^ejB| z($do40SF1Jz@Q*Z&!PpImXf#K*-666=mASfuPq@)B4 zJ~(he0-bnWCl=Bro=U( zBsf234yQoD=iZbwK6Q0=2S0|D0UsY*3#{93`^Nm)7tJ5l9u5CL zSU=pIv*U%(WBU|$k$vH7*|itHiSHMFaAj@#d1YNGW@83{I|_L`MGOi3q35nO&WLo` zWtKfX(pLCo#Eh9Yvy%PSXmO>O`DV&rH(V_y6%sOKv0=}Y<|LtRlbb)69ITo3RDboH z=7J_G6R$I(-)plRbZ;_ceymt2)yl!O_{_Zd>)bAf+G!boe7X5u{2`0A{E;nJ7KX{3 zt9$q-C&r>@`A_lFnrgfMWp=o5DTFTmy!_E-J0)rJ-JhE`{Z9(cD?+_@w5YFgUe>Q>qLHYR`DPJdQsJJEPI zPr_9HQs#|GOu8%By)u|5GhJN!&ihoc{tVB~>szM?X-4wpY;R_q5SF#->k{=P8y0V9 z-WVvhv(w$QDA{a_kyZx3+R?@OOIceNr0#z^U8?JGVSP-po{QI>8PjHW-!>N&u_!EB zup;y2?7wErD%H8Sd7pXpPj@clXbc29y5!k zPdW9_vCH@J?6dn;P37DY&tE6>a;oBmJ0VpnC)i4#-u!#fBJ0D3drvIh?R=TGdHS~p zAqg7%N+lx9t!0Y6^S)VKf3~kmU+$h+-b%&(%+;CmYyS1jiNCY$`!56a6Vub<^H)vJ znE&L51~c=DXWKg&cD{Q$?~bEF!-tK1>-KpoFbEv{KS8KrKf|y6S=T&I`8@?DbOujX KKbLh*2~7ZodSH|Q literal 0 HcmV?d00001 diff --git a/mobile/apple/thumbs/sketches.png b/mobile/apple/thumbs/sketches.png new file mode 100644 index 0000000000000000000000000000000000000000..8d7bd14e0df5b7c27be054ab9de9f6ae3c689f8d GIT binary patch literal 1601 zcmYjQ3pCSv9RCxJ>A}jqjmYw<)Fq8^BTSn{-W!G#(@N$Qv(e_!8Zjo1mRF0kc@Kqg zjnS!bV)VLk>3CM^l2#N-hx>Os=brmH-`DwmzK?T$=l9L@bU(RWO6; zVq$Fcui@cgnM~H(-!GL)Ur4$n63J{cv$eGqTrn(69~5$ig!G|WmQW~sSw$ZdTpkdl zb_xX5HFZ)xYw!-WuOjjBo%o^h1c5*xE2H+5Go?J*qg!#krO~qD^W7z}orN)NMU01B za@P&AG(WVsxL8tfL6jHOaXpO7dSr>0JFA7r#%?yubhMSP?&15pmlFqgy`16wpO$n}5iEh<24_;zGeY|fzomfQ) zsi$BW3`SL)OI;kMlGknG4OqgqLB`B9#{a8v>LRC$<9 zDake~%sC<=BKtfx`yBda$gyxs8)q!JK~`6TP}zYJ=fD||7_5IB0H}T1R0YR+iy|&c1DSVeu=a#y+o(aZ}6qc|P*^ zXMN3ULHSaupXDwu+9zJhOUqfD@@ttAS zexcN^`qtU;rrx0+7 zdd#B0*OhTy0XIW7oB)9SPBOZ;M5H{oFc?OPd`eRv1vCN4lX-22<9@Yn)C%pP9a*t( z05IFAR&aPATk~p~hOk$r8q#T)Ls%WMEGHWB2Ndph zA$Q)?MLfjJc-ku|8Jo(1Dp*-2dCyNjOF8JS0U6O9|1cs*Kr3aM;LdZY_U>zHnuKlX zkB`*chp6=rVG1WLM1g&U5McQ^>r?Zw?lUexo{v@|FTSz6gfZG~m-+?3I-s@{G#19~ lhm{UKQUq@V=<2p^Ur(_f3P161pR4O;#u?*|Zg31{{sY7}=Ar-q literal 0 HcmV?d00001 diff --git a/mobile/apple/thumbs/sms.png b/mobile/apple/thumbs/sms.png new file mode 100644 index 0000000000000000000000000000000000000000..3c8af6cc23f216cf4adb14833694c9a122f07d1a GIT binary patch literal 1264 zcmeAS@N?(olHy`uVBq!ia0vp^@<6P>!3-qt#sn7wDdu7)&kzm{j@u9YA22X5z7OyT zasB`Qzf76C@4MeK@A|BnSEf$CGNt!=*W}CnlP>o4UFd4OTGMr|t@cuN z>-om!bM<8x3TsbRRvs@YJ64!=IwkLTX3>$H)ZHvOhj)UyQ>E zYpHAeE=L?Ab_GdZ;P=?)V1Llc>abDZb}!$p9$s6Vt#+A69Ocv4rzn3&+-94Z%3ej$ z!`zM=tV9lR*{!#b+AAQqk3)11x5ZjRlhwN1dzi$w@rZ5Z<=@U~xJt`lr3T9`2KFrs z@~b5@mMKWC5foj+Be;%3b*UWVdIsgi(yVJ4fMF=JK$L$eJKGWl(YXS^@Z_G$$~KpQ zVKRf}Rku~ZI4~*+@(X4V6ckiaQZhybE=V9Wt-QRWW9H0NyU*Nx2Lzo#FDih#ISV`@ zf$53s0|+xZtudJa6qG4(jVKAuPb(=;EJ|f?Ovz75RdCBJN-fVX$}U!L4mM%iba?>- z1Cx=bi(`mJaOospf8jupw)xfXXP)!n77=7(VaYXUP~sNuVKbAOer*2Bdpi;q8tNTc zAssFtz^c07sWMM*=JV=x-C`5A*zK;KXa3&PZyi(0v8^QwFTFR^m@(5}X&$fVzu($z zx2C*bQ1!qfRhXmOc9->(cW*l;SN*Er*KsPTr}$%7#)1cXE-n!boE|40DYMx2ct8o0 z*OdDot!!<*gB*6&D%V**(7u?&Fvaqp=+9y5J-+u{AG`H7jsLYGd4 zO&`~@^=WVAamiFwdL(~seFW?8iTX-jB}W&$(KDY`SzYq~{I{*G{#iet{d)dp$*Toh zXJp<^*#Fe_f5o(EVNGv;F72Ip^13Pq+X^wa=&SaYlFnAC%=!iEzNa^TeBg2S(2p7Y zrcc#Z6_oLBKKrUmPwVUKEdPBh<vG^|&u7keuvTugDW`0KFlPWs0}mI;a~iUNAm>`nCFd^i+yjmbkG zi2K5dwdM<1Zb?hepWtRaQ)%w}1?BvKn>Sm|Q{U3{d6km_v&Obn&cfS`JSHtMW^yQb z!k{X)x9F1B4zCsoeb%5mUt09`oN(#QWIUl?7ALg!-vp&EvyQzk6L>mxN5G7omoD#^ wUVdL?_D-hY;!yqk$8%*^6MXdNKR*!vEzjycj58wVaZ+x3N=Sj<|JO2Lu zN(DD;n(iLD@L>7jmo810b87lIV$T=NxpMvbwUCJqvr8II-TC_I?UVTj-%Xh^rDyAN znT#{K6}Nu<`FH!$9^=xJ>rQ{{+4e>${Xq28hc_-AdGX>&=B!(RefN`6vnp3SzkBEA zgV#T$bFO#K+fmlL&a(baVEb9k;-kH5uRnNjZ}o|HAwAceTkrk&_;lLFE0SraXYYHb zn6fu^+GCHvxG7uTFI>1Vf9lDSrO(csIkV;J&ytdo%%;V;3!lDuen-9Ns!i4DHHRMk z`0-dh`?zBE*~KTmhD63!uX=Ii;#q~TJb(N8)zj$&l4XbXiJ@!mF^XS%d?-w6=|L*0r_wV1` zymm2r{?i{n-egTa9npWCJN|-K&o!&+YZ+zThGiEt3eKfWyZQY6&udSA0_}RD_~Q^T zUg}GN{DOhp0R#;HAKGvNox)k*5n0T@!1V!y8J*Uc%m50?l( zC#5R5WfrBD=NDxcD>w(6ux+}$0GOaYdb&70`-HE~~Y)jVl zYn%ylHBZbmihsb(YAw3bSIdAq>0=Zt4lv|N7| zI=mDAbBNpWo8R#(RkD`fq$~97^q07?)Xtr-bwj`U>K_F+_gkEcEKz)EUoH9|z4+_P yzc=50Dov}uBeCFeZ1rBdAOEbD_jg77;hr_`d8Z}MC3#>XVeoYIb6Mw<&;$VBj*8j< literal 0 HcmV?d00001 diff --git a/mobile/apple/thumbs/stocks.png b/mobile/apple/thumbs/stocks.png new file mode 100644 index 0000000000000000000000000000000000000000..041648b09bb4a66058207d1389881fb37205171b GIT binary patch literal 1523 zcmZuwc{tQ*9RCfi9J$JUjI$(GY$S_yYX*;V9EIF8sd0@N25nS>3i}}Ai0p>k6{3i- z8%AO%6@_uHam={qa{Tt!fBWpSpXdF4zTfwKKhOJp|M+|}U7atA3M&W$03eD)*t$bm z1qxL`eu$_1JmR3lA7_n32?`2M%(~0~0AGfy6Uq(*K|LcgzN3QBy{BKOtw$JC1ct{$ zwY@J6+8Vm!OkCsCTrt{?@e;1MlgM~cBv#rID{6(6H9`m(MgoR$UO_lW{J%;_cHAsl zTqh#wK{>RFYP+Cb5JOFC+TWX){sOTO{PYPEYq(DY+&fem6(s8%Ano8sT{wJ4;}kdb zX=XfwKFMYsY;5wD8N7M=-t;1SVwMdF#%L@^(>VhUPjD!c;NbXj{}{b#66_q?Yx{E0 zH_9dtZ+B658b9ncjO;Z~c@-mI$2J<^PSzX+;ZZNBBvg#$htaX*x&NZik_u4oXg9kC4+&eEh zh0hrg52S<4AMY3fEAjY?V4t zzmgqPxZz#A3$NuU*K$;=ITs)8hCieuNo?gOpll^auZ(pyXWEPeBJwsB%GlOp?-86a8g0QHPx*?y&mQP)>z|(Y+*YpW=hqy7dq*b{TrU7nAK5@}FdR#AdQh)&J z#eCI{T2YLhQ;VUUzW!A?Y95H&lE=^_Fl&++nksq>z#Phljf;kj!$MaSQB=TXN*MXs z(_bnHa-K2P-Pr?>l$2CgS3mb3*!~Ni;dp#TMp031$Kcd=Fd^g^-Q0nm5Q;`zg4`~= z@jYPH^@fGep%T{42kQ|Pj>QMXh5=TgQNdxV_UPC!d{k^?oT`n7p+M7UIW!X_q^%W7 zPX32K$vINcB#aoJn;xVxX+J9Aqt9H;7m@5$3eD+)9z@6=SuIkyFETykZW)n~ zAl-~Uk-PQ^C+5Tz45Br!1eskJQGzjX_^#5g^3#qI&c{pvAa~iz?ytxl$I0C_5Y2i`} zCV{T}3!X){{rU%f>F#pr05_rdW<>Dcckb%NLgcme;k!#Q3V415s($ zP<-iUbKVxU9??M~?!)q3ifyEI4=(uL%w4J*btp=av}w-`dKKUDKE3&J*?uB(#-*UK z%)jO+Ne7*PyX)JxibryrJh;~-~<4F|WltVK-z z{{A($H_6)ryenp1zHp|y$iP$-l^j1ybZqXR{EDDy-xCioVQ)4EoSN>mDrgBiSdLuM za@3j*cy!aE3%BXxee4VMa6-Zob9CbA-`y6S z8shgVJ@=$)r{@me)+?H;?DbaEto}S@l04&Pzz}mPZqHt6A#X>iC!sf340*YS=wZz9 z2z^3ONNiHsZw!3-qt#sn7wDdu7)&kzm{j@u9YA22X5E)Vbt zasB`Qzf7FXKdV?$L~d6H(a*Q`7b*#2t>5zAKQh zFFNRmx70QMnBC!#yMq1qc}ZU2_t@tUxZTTdn}_EXC%4TG5=Z$o_9-}SwzAk}=(N$s zcB7g29$v#u+HyNYg?DqBuG16U&26^UKx`YI{u)iu%{+ozIMi0ja&2W$SR<*mLP=;N zr{o$z(KS5E%cOyUz`2@1U>OJd5(Z#sa4cZ3eF5an;26DhD(X&f;NAa zoMvDMcsFOikldZuz|{HW^xaL|@w$=>38ajtUNto&;Gc(7a1BRE$Wv0besF}T4`2>6`Da`UM%B|slCF;pz8XH{YmY?eLM^f zo)eV>M5q1F(`8TyDtWErdD~uk_2hNz3pTz~y1#yUvG?t>asPfjo5Rq1_2ROp883fS zNOo6O=f2~f@b$GvVjknhhhP5G*8aVDS8$gj!=W3E|7NGR|J*L0FScu`KDUHx@WGN# zUn=+hdAWP?w75C7zkckv+9js-;KR|Yr@y^FKi|Ig_o6rdcKrXbB8ZitUH$7Cz1{nx z67L<=Up|R} zp`kL;-*ivk!{4?H3~T0{U*GcS(?NYs28LT-mT{blJO>PSu7B*JBAd0?d2jmybuxIm L`njxgN@xNAjeXJI literal 0 HcmV?d00001 diff --git a/mobile/apple/thumbs/video.png b/mobile/apple/thumbs/video.png new file mode 100644 index 0000000000000000000000000000000000000000..0aa924894b64caf7bf3cde11ba9744b719be51ca GIT binary patch literal 1649 zcmYk52UJsM6vv;5C_*cES}QmzLn^COMyWzk2`E!!BpwKefDj;vtOyudrXY$GN+LBP zt0K!V1Og~a189{%qCg@fAz=uJF$;Krm8PGEp0@vUzIVTO*E{dr-@WGU=J2`7ZWRcE zK6i4o_XKu7I9kd`@Z|e>#Q}qiLph<9m6f@Zr-cxNV7a@ZPbd@$O-;=m+f{)dq}ZWQ z)>c;Ff{!5v#v}&D#^Wv~`dy4V6BO(0>h7Y^XmxdU!L_u|Dr(l1E1(1T7N}(?6x|91b4BrbSy87@-1}?&2@HeU9vR#x z5z{2{8>_1=@8CL-3^Z$}j%B5~c!%2nx7#hc|G{(7t6L+PA^{O*0ONXllj+r~e# zhgmtZ3wOCIH-+-n(e=!kg*!aB;ng~W!N}z;W^%<%kz=_@!U zKZ6cmdhsfzUzS8)2LBlNe8Gn?asCDS3}Zfk{@&&3TrzDHLmzSN=chEwFEy_mr%w_Z zq|QB@GY>^UEi&&`Nd$G-vsrweDzoUE!crv;G*(#Ek`-+PY;pe(W8QX)VuyD)1_vzg|#cTq!iHWPMw~*Tj$XnFg66T4UP&5(K;C(8{VUxq=R}!wUC~B zt}I{&&oI4RrsUWDWyj7hcRi}vS>8^<>$S8z4Oj@C9qLLD4;(p~hu}?fA6zr6aXmPX zMK_fYh-O=rPJa~MG!`@*IJ#JvQxVm$D|-1SSH4REOO)J6xqp}_J89(bjQO^r)S~Uj zW8%F2PT8Q};&SGnYmWLQJug4>{IYV^ED0_=eeA3O`SQAMq*~4xzf+yA+QVH;Nl5Y^ z>yk<;J06~M{NRa#nR8NX3Q7e)-~@8{maWg;C*Nh(=M1rx;w2CZO~O$x!W*5 zC!)zDJCggBp)U3h*tn(eCsTvSe3;ZhN)+>B(Doi)M0a>KBV9gRfMsLDdUk>#UgeKh^ zxUIh$V3K?0xGL%Q((`D0UC=tG*-&+)SvX%mFRFlqCTY{YTf|IOC=Q1k|2b#^fX(H>fuVlue+gPdz4p!0 z%F0T!T8&yXM3X4sa5$*_fS-?!9&m9nG&Dp*hyDAfr>B2k{;x)(8G1I1;tv3AM9Q&T#v4(<9->hJG=+})$gnuk?C7}Hx*_e&&DY!7(0f}|Dy6dVic;Cq z&~Wp{jk>zJs;a7r%Bu46@}i=myu7@t+1WCg>`VFSTdAosvG{9|C_O!0l#wBjNUHh# zlZlC9k*HW85G5zarlu29;VKejkS9p4gU^pNk;43;^0K=!eym&Ayrqk8V&ficd zDKuJ$uWuZk&SEkP$z&#z89}FCc6L5bB8AZDC&}b`2Zstr#{fEAOeQxG2(YJTBANUx z1W8GxTt~+iOUo}vq$o1E+|Eu!B9%Z;y`?3GOs0BzUbeE5Ly&?%@TO8@oSh>{q{C#g z%G8uYB2lT-PYxawLD1&}f*+bEkzyez8iI<=%}dS9(8(eYL?aUY?d={+{DCV z-@YI#D|FV^0Vu>^hy;SIt!)(mm=uJ*)9{2pR}6sB!iH{Qe&<$+CaooY z;SwZGD9MaXj|YsnG=9A8p``Tq%(Qfo*wzEU^qAPuh1v5fDisOgZV|HcW!NU2F zv6VDo{NsNY-xiKL^E(D5#k>1zj3azU9kxmoFEQJL9E}EN;pWrGBI(EOk=l#TMXrR|I~dvxslh%`DT)k9ov$coSanS zbkPa0@rpWue!5MgNt4)j2He<}b9=2rqiGu$r&({8QKaK@zmB!Y67+2@BI8Y(5`o*w za9_L2`18zp-S8y8@bts+Q|~6$=9N+U{4hqvBMPne*Mh;QD6M{n&3q<<{F~qX*`@He zfGx|^zGSo4;;Cw3wzz&w}aA9|7*|W#BiUoLF2cn*awTZmETT<=jvZSo(iQC?V3~e zmyw>%-d4vRTBr12MOgYI!ej;}?5wQ*^ru^^ElX!9~ Tx`JP!D+^eDM_?uMc+UR-d`ZAq literal 0 HcmV?d00001 diff --git a/mobile/apple/thumbs/weather.png b/mobile/apple/thumbs/weather.png new file mode 100644 index 0000000000000000000000000000000000000000..d22550b1e7492a60cf463b9abfbd064a97351d91 GIT binary patch literal 1523 zcmZWoeKgZ+9RHE>Qe<7ydbvjTq#{L*kV-=#Q+X@76*0BDYs0pd5`|mxl0w;RGNV?q zu~n=wBQIry>s>J$`k<~DHAClHJFIsZdA z1yEqU(~Gjko4DDHqV0K69ZlAEBqQwI)$B-c_5UR}Pfce3;7m>xybsK9e_?sk4~9>H z#m^_On|y;`%NC{YW_A>|*s#T5;vOvXq!i(Y0?yg^K<#^{k5$~$|Ui*l6 zo%<2T2Y(dHstRH)s}}_Yv^S3&tR*veu8f(_H?N#G6@#1X`sjlGz$f4(%igR^5&Ce> zvTXQFQ6r8m7iFIDh74p3r zw_LFHsS^2Eb>ntkV0O)k%z^xrBiOqQzp%z!GiH8bDLw8rT}w`*-}Hl@(ug^y!vt=r zgCRF7uO{5LybU&F$*t~m?n$0LomgR+*5-0c7!`M4`>rA(Cd4>(NbmNvPn?hxeO)~j z_+MsO$2aV|CfaC7%e2uF!ju9{Y z@H8u8T^Ke|i#)NKG>RnlZ~eXL2$qvuH&21hWKQ<>@_`TtQ&ZF3|H0*7`1yrVsYyw6 zdQnC5z`zuY4|We`;4$q8w*c7rI62P4UWP>2SbVHu&6`0 zC@hs2g(sn$eQZ_;I#}@kNO5;L=(`TNyat2ch=rh`^I?PZ#;ImPIVQ7r=gJ-23;ecg z=)cuh$7}Ap+;)Iv7MIz^&~eq@Zh(-mvcGUWp7+{vF(Gc$XBBn*&(53FH2oMlgCcyFcQX^qUl{o1@9q)s>z7w1&)V7uI4!yf0y zXHh0bS9~$`c8=30eS5c|k7OtM2S4nqkW5P(Q^q5`YBoLKs^xM5DpCZ8C z#joIMps*$--?F%O9t5~=nJ*^DpP1M+2nSRCw)pHBsK)mg>sVR7_qSbJB&Gi4A*ngg z@f>B7yKXaAmltZ%kmQsbY#>w3sx-E0nt2@+IAL~u=}ECsXc7m+*~?N?I4Z9F$)zpYrPwYWd^+F&swyut(~Rmq8NiE#27Rc}%Nq z(W7EzN1sJamA=&-Jg1;GEy1+VOz)<<1LM>&xz#$$H)}mJySw{E#IphWrzl39tCo)> zBBKb7#xb+C(#funChGYh3mZ)oZFZr?Xx!M7z|(vBxf!9C6O^TPDPp9nx6eW3p9Yp4 zLWiw-6FzAe*B{$jkY-m ziDKeHK&(8UwIFX!$7w*Q1^o9y#D%hswGd>nVQF=X)9M6KyJ!KnFXZm( K<-$V;#s34IA_A%a literal 0 HcmV?d00001 diff --git a/mobile/apple/thumbs/wordpress.png b/mobile/apple/thumbs/wordpress.png new file mode 100644 index 0000000000000000000000000000000000000000..28f0f7ed308445faeb0c429b8bc4f290a4d6538a GIT binary patch literal 1388 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 Y0?Y3EaxTgxWdHyG07*qoM6N<$f(vG#z5oCK literal 0 HcmV?d00001 diff --git a/save.php b/save.php index 33fbbb3..3cb70bc 100644 --- a/save.php +++ b/save.php @@ -407,8 +407,8 @@ /******** End processing review table **********************************************************/ - $_SESSION['AP_SUCCESS']['title'] = 'Success'; - $_SESSION['AP_SUCCESS']['desc'] = 'Your form has been saved.'; + $_SESSION['AP_SUCCESS']['title'] = 'Completado'; + $_SESSION['AP_SUCCESS']['desc'] = 'Se ha guardado el formulario.'; echo '{ "status" : "ok", "message" : "'.$form_id.'" }';