dates2 = false; // default for single entry visas, otherwise true var neccessary_fields = new Array( 'VisaConsulateCountry', 'VisaConsulateCity', 'VisitCityList', 'LastName', 'FirstName', 'MailAddress', 'email2', 'PhoneNumber', 'JobAddress', 'JobCountry', 'JobCity', 'JobZIPCode', 'Citizenship', 'PassportNumber' ); var neccessary_date_fields = new Array(); var date_fields_names = new Array('arrival', 'departure', '2nd arrival', '2nd departure'); var required_date_select_fields = new Array('VisitDateFrom', 'VisitDateTo', 'BirthDate', 'PassportDate', 'PassportValidityDate'); var required_radios = new Array('Gender'); function validate(f) { var value; if (dates2) { required_date_select_fields[required_date_select_fields.length] = 'VisitDateFrom2'; required_date_select_fields[required_date_select_fields.length] = 'VisitDateTo2'; } for (var i = 0; i < neccessary_date_fields.length; ++i) { value = f.elements[neccessary_date_fields[i]].value; if (!parseDate(value)) { alert('Invalid ' + date_fields_names[i] + ' date!'); return false; } } for (var i = 0; i < required_date_select_fields.length; ++i) { if (!parseDateSelect(required_date_select_fields[i], f)) { alert('Please, fill out all required fields!'); return false; } } for (i = 0; i < required_radios.length; ++i) { if (getRadioSelectedValue(f.elements[required_radios[i]]) == -1) { alert('Please, fill out all required fields.'); return false; } } var arrival_date = parseDateSelect('VisitDateFrom', f); if (!dates2) var departure_date = parseDateSelect('VisitDateTo', f); else { var departure_date = parseDateSelect('VisitDateTo2', f); var departure_date1 = parseDateSelect('VisitDateTo', f); var arrival_date2 = parseDateSelect('VisitDateFrom2', f); if (arrival_date2 > departure_date || departure_date1 > arrival_date2) { alert('Invalid arrival/departure dates!'); return false; } } var selected_visa = getRadioSelectedValue(f.ServiceCode); if (selected_visa == -1) { alert('Select type of visa service'); return false; } var t = parseServiceCode(selected_visa); var visa_type = t[0]; var visa_validity = t[1]; var days_diff = (departure_date.getTime() - arrival_date.getTime()) / 86400 / 1000; if (!isFinite(days_diff) || days_diff < 0 || days_diff > (visa_validity * 31)) { if (visa_validity > 1) var mess = 'months'; else var mess = 'month'; alert('The period between arrival and departure can not be longer than ' + visa_validity + ' ' + mess + '.'); return false; } for (var i = 0; i < neccessary_fields.length; ++i) { var val = f.elements[neccessary_fields[i]].value; if (!val.length) { alert('Please, fill out all required fields.'); return false; } } //var regexp = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i; var regexp = /^[^\s@]+@[^\s@]{2,}\.[a-z]{2,4}$/i; if (!regexp.test(f.MailAddress.value)) { alert('Email address is not valid'); return false; } if (f.email2.value != f.MailAddress.value) { alert('Emails are not equal'); return false; } return true; } function getRadioSelectedValue(el_group) { if (typeof el_group.length == 'undefined') { if (el_group.checked) return el_group.value; else return -1; } for (var i = 0; i < el_group.length; ++i) { if (el_group[i].checked) { return el_group[i].value; } } return -1; } function leftTrim(str, cut) { for (var i = 0; i < str.length; ++i) { if (str.charAt(0) == cut.charAt(0)) str = str.substr(1); else break; } return str; } function parseDateSelect(name, frm) { var date_arr = new Array(); var suffixes = new Array('DD', 'MM', 'YYYY'); var el, val; for (var i = 0; i < suffixes.length; ++i) { el = frm.elements[name + suffixes[i]]; val = parseInt(leftTrim(el.value, '0')); if (!val) { //throw true; return false; } date_arr[i] = val; } var date_obj = new Date(date_arr[2], date_arr[1] - 1, date_arr[0]); if (isNaN(date_obj) || !date_obj) { //throw true; return false; } return date_obj; } function parseDate(str) { var date_arr = str.split('/', 3); if (date_arr.length != 3) return false; for (var i = 0; i < 3; ++i) { if (date_arr[i].charAt(0) == '0') date_arr[i] = date_arr[i].substr(1, 1); date_arr[i] = parseInt(date_arr[i]); } var date_obj = new Date(date_arr[2], date_arr[1] - 1, date_arr[0]); if (isNaN(date_obj) || !date_obj) return false; return date_obj; } function showTimeSpans(show) { if (show) { dates2 = true; try { document.getElementById('time_span_0').style.display = ''; } catch (e) { } document.getElementById('time_span_1').style.display = ''; document.getElementById('time_span_2').style.display = ''; } else { dates2 = false; try { document.getElementById('time_span_0').style.display = ''; } catch (e) { } document.getElementById('time_span_1').style.display = 'none'; document.getElementById('time_span_2').style.display = 'none'; } } show_info_pane = true; function showInfoPane(show) { if (show_info_pane) { document.getElementById('info_pane').style.display = ''; } else { document.getElementById('info_pane').style.display = 'none'; } show_info_pane = !show_info_pane; } function showChildren(el) { el.blur(); var childs = parseInt(el.value); if (childs) var disp_style = ''; else var disp_style = 'none'; for (var i = 1; i < 4; ++i) document.getElementById('children_' + i).style.display = disp_style; addHtml('children_info_src', 'children_info', childs); } function addHtml(src, dest, quantity) { var src_html = document.getElementById(src).innerHTML; document.getElementById(dest).innerHTML = ''; var regexp = /%NUM%/g; for (var i = 0; i < quantity; ++i) { document.getElementById(dest).innerHTML += '
' + src_html.replace(regexp, i); } } function parseServiceCode(selected_visa) { var visa_type = selected_visa.substr(5, 1); var visa_validity = selected_visa.substr(6, 2); if (visa_validity.charAt(0) == '0') visa_validity.substr(1, 1); visa_validity = parseInt(visa_validity); /* if (visa_type == 'S' && visa_validity > 12) visa_validity = Math.round(visa_validity / 30); */ if (visa_validity == 30) visa_validity = 1; return new Array(visa_type, visa_validity); } function init() { var t = parseServiceCode(getRadioSelectedValue(document.visa_order_form.ServiceCode)); if (t[0] == 'S') showTimeSpans(false); else showTimeSpans(true); } window.onload = init;