﻿$(document).ready(function() {

    $('.jsiframe').each(function() {
        var html;
        if ($.browser.msie) html = $(this).html();      	 // IE
        else if ($.browser.mozilla) html = $(this).text();   // Firefox
        else if ($.browser.safari) html = $(this).text();    // Safari
        else if ($.browser.opera) html = $(this).text();     // Opera
        else html = $(this).text();                          // Default (not sure if this should be 'html' or 'text'.

        $(this).after(html);
        $(this).remove();
    });

    $('#swfupload-control').flash({}, { version: '9.0.28', update: false, expressInstall: false }, function(htmloptions) {

        $('#swfupload-control').show();
        $('#fileupload-control').hide();

        $('#swfupload-control').swfupload({
            button_cursor: SWFUpload.CURSOR.HAND,
            button_window_mode: SWFUpload.WINDOW_MODE.TRANSPARENT,
            preserve_relative_urls: false,
            upload_url: g_upload_url,
            file_size_limit: "3 MB",
            file_types: "*.doc; *.docx; *.pdf",
            file_types_description: "MS Word and PDF",
            file_upload_limit: "0",
            flash_url: g_flash_url,
            button_placeholder: $('#swfupload-button')[0],
            button_width: 83,
            button_height: 23,
            debug: false
        })
		.bind('fileQueued', function(event, file) {
		    RemoveErrorMessage($('#swfupload-filename'));
		    $('#swfupload-filename').val(file.name);
		})
		.bind('uploadComplete', function(event, file) {
		    document.location = document.location + "?acknowledgement=true";
		})
		.bind('fileQueueError', function(file, errorCode, message) {
		    $('#swfupload-filename').val('');
		    RemoveErrorMessage($('#swfupload-filename'));
		    try {
		        if (errorCode === SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED) {
		            alert("You have attempted to queue too many files.\n" + (message === 0 ? "You have reached the upload limit." : "You may select " + (message > 1 ? "up to " + message + " files." : "one file.")));
		            return;
		        }
		        switch (message) {
		            case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
		                //alert("Error Code: File too big, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
		                AddErrorMessage($('#swfupload-filename'), 'Maximum file size is 3 MB');
		                break;
		            case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
		                alert("Error Code: Zero byte file, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
		                break;
		            case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
		                alert("Error Code: Invalid File Type, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
		                break;
		            default:
		                if (file !== null) {
		                    alert("Unhandled Error");
		                }
		                alert("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);
		                break;
		        }
		    } catch (ex) {
		        alert(ex);
		    }
		});
    });
    // full page validation
    $('.sendButton').click(function() {
        return (ValidateForm() && CheckForAttachment() && Upload());
    });
});

function ValidateForm() {
    ClearErrorMessages();
    var errors = false;

    $('.valAttachment').each(function() {
        if (!isValidAttachment($(this).val())) {
            AddErrorMessage($(this), 'Only MS Word or PDF files are allowed');
            errors = true;
        }
    });

    $('.valRequired').each(function() {
        if (!isValid(this)) {
            AddErrorMessage($(this));
            errors = true;
        }
    });

    $('.valPhoneNumber').each(function() {
        if (!isValidPhoneNumber($(this).val())) {
            AddErrorMessage($(this), 'Please enter a valid contact number');
            errors = true;
        }
    });

    $('.valEmail').each(function() {
        if (!isValidEmailAddress($(this).val())) {
            AddErrorMessage($(this), 'Please enter a valid email address');
            errors = true;
        }
    });

    if ($('.valEmail').val() == '' && $('.valPhoneNumber').val() == '') {
        AddErrorMessage($('.valEmail'), 'Please enter an email address or a contact number');
        AddErrorMessage($('.valPhoneNumber'), 'Please enter an email address or a contact number');
        errors = true;
    }


    if (errors == true) {
        return false;
    }
    return true;
}

function AddErrorMessage(jControl, msg) {
    if (msg == undefined) msg = jControl.attr('title');
    jControl.parent('.irow').addClass("rowError");
    jControl.after("<span class='valMessage'>" + msg + "</span>");
}

function RemoveErrorMessage(jControl) {
    jControl.parent('.irow').children('.valMessage').remove();
    jControl.parent('.irow').removeClass('rowError');
}

function ClearErrorMessages(jControl) {
    $('.irow').each(function() {
        $(this).children('.valMessage').remove();
        $(this).removeClass('rowError');
    });
}


function isValid(domObj) {


    var type = $(domObj).attr('type');
    if (type == undefined) type = $(domObj).find('input').attr('type');

    if (type == 'text') return $(domObj).val() != '';
    if (type == 'textarea') return $(domObj).val() != '';
    if (type == 'select-one') return $(domObj).val() != '';

    if (type == 'checkbox') return $(domObj).find(':checked').length > 0;
    if (type == 'radio') return $(domObj).find(':checked').length > 0;

    return false;
}

function isValidNumber(num) {
    if (num == '') return true;
    return num.match(/^[0-9 ]+$/);
}

function isValidPhoneNumber(num) {
    if (num == '') return true;
    return num.match(/^[0-9]{10,}$/);
}

function isValidEmailAddress(emailAddress) {
    if ((emailAddress == undefined) || (emailAddress == '')) return true;
    return emailAddress.match(/^([a-zA-Z0-9_\-])+(\.([a-zA-Z0-9_\-])+)*@((\[(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5])))\.(((([0-1])?([0-9])?[0-9])|(2[0-4][0-9])|(2[0-5][0-5]))\]))|((([a-zA-Z0-9])+(([\-])+([a-zA-Z0-9])+)*\.)+([a-zA-Z])+(([\-])+([a-zA-Z0-9])+)*))$/);
}

function isValidAttachment(filename) {
    if ((filename == undefined) || (filename == '')) return true;
    return filename.match(/\.(doc|docx|pdf)$/i);
}

function CheckForAttachment() {
    var filename = $('.valAttachment').val();
    if ((filename != undefined) && (filename != '')) return true;
    filename = $('#swfupload-filename').val();
    if ((filename != undefined) && (filename != '')) return true;
    return confirm('You have not included a file to attach. Do you wish to continue?');
}

function Upload() {
    var filename = $('#swfupload-filename').val();
    if (filename == '') return true;

    var dataarray = $('form').serializeArray();
    var data = {};
    for (idx in dataarray) {
        if (dataarray[idx].name.match(/^__/i)) continue;
        data[dataarray[idx].name] = dataarray[idx].value;
    }
    $.swfupload.getInstance('#swfupload-control').setPostParams(data);
    $.swfupload.getInstance('#swfupload-control').startUpload();
    return false;
}