// contains all methods to handle webemails.
function lvsysEmail() 
{
    this.formEmailDialog = null;
    this.formEmailDialogTitle = "";
    this.formEmailDialogSubject = "";
    this.formEmailDialogBody = "";
    this.formEmailDialogId = "";        // dialog to show.
    this.formEmailDialogFromId = "";    // "from" field
    this.formEmailDialogToId = "";      // "to" field
    this.formEmailDialogSubjectId = ""; // "subject" field
    this.formEmailDialogBodyId = "";    // "body" field
    this.formEmailDialogErrorId = "";   // "error" field -> where we show user input errors

    //------------------------------------------------------------
    // public methods 
    this.init = function(options) {
        this.formEmailDialogTitle = options['emailDialogTitle'];    // title of dialog
        this.formEmailDialogSubject = options['emailDialogSubject'];// subject of dialog
        this.formEmailDialogBody = options['emailDialogBody'];      // user-filled body of dialog
        this.formEmailDialogId = options['emailDialogId'];          // dialog to show.
        this.formEmailDialogFromId = options['emailFromId'];        // "from" field
        this.formEmailDialogToId = options['emailToId'];            // "to" field
        this.formEmailDialogSubjectId = options['emailSubjectId'];  // "subject" field
        this.formEmailDialogBodyId = options['emailBodyId'];        // "body" field
        this.formEmailDialogErrorId = options['emailErrorId'];        // "body" field
    }

    this.show = function() {
        $("#" + this.formEmailDialogToId).val("");
        var subject = $("#" + this.formEmailDialogSubjectId).val().trim();
        if (subject == "") {
            $("#" + this.formEmailDialogSubjectId).val(this.formEmailDialogSubject);
        }
        // don't reset these, so that the system remembers prior values
        //$("#" + this.formEmailDialogFromId).val("");
        //$("#" + this.formEmailDialogSubjectId).val("");
        //$("#" + this.formEmailDialogBodyId).val(this.formEmailDialogBody);
        $("#" + this.formEmailDialogErrorId).html("");
        this.formEmailDialog = this.showForm(this.formEmailDialogId);
    }

    this.send = function(options) {
        $("#" + this.formEmailDialogErrorId).html("");

        var from = $("#" + this.formEmailDialogFromId).val().trim();
        var to = $("#" + this.formEmailDialogToId).val().trim();
        var subject = $("#" + this.formEmailDialogSubjectId).val().trim();

        if (!from.validateEmail()) {
            $("#" + this.formEmailDialogErrorId).append("Please enter a valid 'From' email address");
            return;
        }
        if (!to.validateEmail()) {
            $("#" + this.formEmailDialogErrorId).append("Please enter a valid 'To' email address");
            return;
        }
        if (subject == "") {
            $("#" + this.formEmailDialogErrorId).append("Please enter a subject line");
            return;
        }
        this.close();
        // ok. Send email
        this.wsSendEmail(options);
    }

    this.close = function() {
        if (this.formEmailDialog != null) {
            this.formEmailDialog.hide();
        }
        this.formEmailDialog = null;
    }

    //----------------------------------------------------------------
    // private method
    this.showForm = function(formId) {
        var dialog = new Boxy("#" + formId, { title: this.formEmailDialogTitle, modal: true });
        var pos = dialog.getPosition();
        if (pos[1] < 50) {
            pos[1] = 50;
            dialog.moveTo(pos[0], pos[1]);
        }
        return dialog;
    }
    
    //////////////
    this.wsSendEmail = function(options) {
        var from = $("#" + this.formEmailDialogFromId).val();
        var to = $("#" + this.formEmailDialogToId).val();
        var subject = $("#" + this.formEmailDialogSubjectId).val();
        var body = $("#" + this.formEmailDialogBodyId).val();

        $.post(
				'index.php',
 				{
 				    ws: '1',
 				    P1: 'SendEmail',
 				    P2: lvsys.wsCS,
 				    P3: from,
 				    P4: to,
 				    P5: subject,
 				    P6: body,
 				    P7: options['itemType'],
 				    P8: options['itemRef'],
 				    P9: options['itemUrl']
 				},
 				function(data, textStatus) {
 				    if (textStatus != 'success') {
 				        alert('your message could not be delivered. Please check your connection');
 				    } else {
 				        var xml = LoadXml(data);
 				        $(xml).find("error").each(function() {
 				            alert('Could not send message, please try again later');
 				            return;
 				        });
 				        // close email form.
 				        lvsysEmail.close();
 				    }
 				},
 				'text'
 			);
    }
}
