
﻿$(document).ready(function() {

    ionmx = {};
    ionmx.onsolis = function() {
        return {
            errorFields: [],
            validate: function() {
                //Clear previous errors

                //$('#successMsg').hide();
                if (ionmx.onsolis.errorFields.length > 0) {
                    var label = null;
                    var field = null;
                    jQuery.each(ionmx.onsolis.errorFields, function(i, entry) {
                        field = entry.field;
                        label = $('#' + field + '_label');

                        if (label != null) {
                            label.toggleClass('required');
                            if (label.text() == 'Required selection')
                                label.text('');
                            else
                                label.text(label.text().split(' - ')[0]);
                        }
                    });
                }
				
                ionmx.onsolis.errorFields = []; //find a better way to do this.

                //collect any errors
 				if ($("#hcp").attr('checked')){
					if ($('#professionalDesignation').val() == 0) {
						ionmx.onsolis.errorFields.push({ field: 'professionalDesignation', errorMsg: '<br />Required 		selection' });
					}
	
					if ($('#specialty').val() == 0) {
						ionmx.onsolis.errorFields.push({ field: 'specialty', errorMsg: '<br />Required selection' });
					}					
					
				}
				else if (!$("#hcp").attr('checked')){
					if ($('#salutation').val() == 0) {
						ionmx.onsolis.errorFields.push({ field: 'salutation', errorMsg: 'Required 		selection' });
					}
					
				}				
				
				var email = $('#email').val();
                var confirmEmail = $('#confirmEmail').val();
				

                if (ionmx.onsolis.isNullOrEmpty(email)) {
                    ionmx.onsolis.errorFields.push({ field: 'email', errorMsg: 'required' });
                }

                if (ionmx.onsolis.isNullOrEmpty(confirmEmail)) {
                    ionmx.onsolis.errorFields.push({ field: 'confirmEmail', errorMsg: 'required' });
                }

                if (!(ionmx.onsolis.isNullOrEmpty(email) || ionmx.onsolis.isNullOrEmpty(confirmEmail))) {
                    if (email != confirmEmail) {
                        ionmx.onsolis.errorFields.push({ field: 'email', errorMsg: '<br />must match email confirmation' });
						ionmx.onsolis.errorFields.push({ field: 'confirmEmail', errorMsg: '<br />must match email' });
                    }
                    else {
                        //Check for invalid email.
                        var emailPattern = /^([a-zA-Z0-9_\.\-''])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
                        if (!emailPattern.test(email)) {
                            ionmx.onsolis.errorFields.push({ field: 'email', errorMsg: '<br />invalid email format' });
                        }

                        if (!emailPattern.test(confirmEmail)) {
                            ionmx.onsolis.errorFields.push({ field: 'confirmEmail', errorMsg: '<br />invalid email format' });
                        }
                    }
                }

                if (ionmx.onsolis.isNullOrEmpty($('#firstName').val())) {
                    ionmx.onsolis.errorFields.push({ field: 'firstName', errorMsg: 'required' });
                }

                if (ionmx.onsolis.isNullOrEmpty($('#lastName').val())) {
                    ionmx.onsolis.errorFields.push({ field: 'lastName', errorMsg: 'required' });
                }



                //if (ionmx.onsolis.isNullOrEmpty($('#workAddress1').val())) {
                //    ionmx.onsolis.errorFields.push({ field: 'workAddress1', errorMsg: 'required' });
                //}


                //Validate zip code
                var zipPattern = /^\d{5}([\-]\d{4})?$/;
                if (ionmx.onsolis.isNullOrEmpty($('#zip').val())) {
                    ionmx.onsolis.errorFields.push({ field: 'zip', errorMsg: 'required' });
                }
                
                else  if (!zipPattern.test($('#zip').val())) {
                        ionmx.onsolis.errorFields.push({ field: 'zip', errorMsg: 'invalid ZIP' });
                }
                
                if (!$('#consent').attr("checked")) {
                    ionmx.onsolis.errorFields.push({ field: 'consent', errorMsg: 'You must agree to the terms.' });
                }

                if (ionmx.onsolis.errorFields.length > 0) {
                    var field;
                    var errorMsg;
                    var label = null;
                    var msg = '';
                    jQuery.each(ionmx.onsolis.errorFields, function(i, entry) {
                        field = entry.field;
                        errorMsg = entry.errorMsg;
                        msg += errorMsg + '\n';

                        label = $('#' + field + '_label');

                        if (label != null) {
                            label.toggleClass('required');
                            if (ionmx.onsolis.isNullOrEmpty(label.text()))
                                label.text(errorMsg);
                            else
                                label.html(label.text() + ' - ' + errorMsg);
                        }
                    });

                    return false;
                }

                return true;


            },
            wireupEventHandlers: function() {
                $('#submitButton').click(function() {
                    ionmx.onsolis.tryToSubmit();
                });
				$("#hcp").click(function(){
					 if ($("#hcp").attr('checked')) {
						  
						 $('#hcpDesignations').show();
						 $('#patientDesignations').hide();
						 
					 }
					 else if (!$("#hcp").attr('checked')) {
						  
						 $('#hcpDesignations').hide();
						 $('#patientDesignations').show();
						 
					 }
				});
				 if (!$("#hcp").attr('checked')) {
						 $('#hcpDesignations').hide();
						 $('#patientDesignations').show();
				}   
				else   {
						  
						 $('#hcpDesignations').show();
						 $('#patientDesignations').hide();
						 
				}
				
				
				
            },
            tryToSubmit: function() {
                if (ionmx.onsolis.validate()) {
                    /*
                    var regData = { 'reqData': {
                    'email': $('#email').val(),
                    'confirmEmail': $('#confirmEmail').val(),
                    'firstName': $('#firstName').val(),
                    'lastName': $('#lastName').val(),
                    'professionDesignation': $('#professionDesignation option:selected').text(),
                    'specialy': $('#specialy option:selected').text(),
                    'workAddress1': $('#workAddress1').val(),
                    'workAddress2': $('#workAddress2').val(),
                    'city': $('#city').val(),
                    'state': $('#state option:selected').text(),
                    'zip': $('#zip').val()
                    }
                    }
                    */
                    var entries = {
                        'email': $('#email').val(),
                        'confirmEmail': $('#confirmEmail').val(),
                        'firstName': $('#firstName').val(),
                        'lastName': $('#lastName').val(),
                        'professionalDesignation':$("#hcp").attr('checked')? $('#professionalDesignation option:selected').text():$('#salutation option:selected').text(),
                        'specialty': $("#hcp").attr('checked')?$('#specialty option:selected').text():'Patient or Caregiver',
                        'workAddress1': $('#address1').val(),
                        'workAddress2': $('#address2').val(),
                        'city': $('#city').val(),
                        'state': $('#state option:selected').text(),
                        'zip': $('#zip').val(),
                        'repvisit': $("#repvisit").attr('checked')?1:0
                    }
                   var jo = JSON.stringify(entries);
                    
                    var originalImage= $('#submitButton').attr("src");
					var originalWidth=$('#submitButton').css("width");
					var originalHeight= $('#submitButton').css("height");
                    $('#submitButton').css("background-image","url(css/images/ajax-loader.gif)");
                    $('#submitButton').css("width","128px");
					$('#submitButton').css("height","15px");
                    $.post('registration.php',
                        { regData: jo },
                        function(response) {
                                                         
								$('#submitButton').css("background-image",originalImage);
								$('#submitButton').css("width",originalWidth);
								$('#submitButton').css("height",originalHeight);	
								if (response == '1') {
									document.location.href = "thankyou.php";
								} else if (response == "Error") {
									alert('An error has occurred.  Please try your request later.');
								} else {
									//Data validation messages from the server.
									alert(JSON.parse(response));
								}
							},
                        'text'
                     );
                    /*
                    $.ajax({
                    type: 'POST',
                    url: 'ajaxHelpers/registration.ashx',
                    regData: jo,
                    Data: jo,
                    dataType: 'JSON',
                    success: function() { $('#successMsg').show(); }
                    });
                    */
                }
                else { }

            },
            isNullOrEmpty: function(value) {
                return jQuery.trim(value) == '' || value == null;
            }
        }
    } ();
    ionmx.onsolis.wireupEventHandlers();
});