﻿// JScript File
function SendEmailDialog(id, caption, ajaxHandler, ajaxHandlerUri, beforeSend)
{
    var controls  = dynapi.functions.getElementById(id);
    var docW = dynapi.document.getWidth();
    var dlgW = CNT_DEF;
    var x = parseInt((docW - dlgW)/2);        
    var dlgH = (controls.offsetHeight||CNT_DEF) + CNT_CAPTION_HEIGHT + 3 * CNT_PADDING;
    //alert(dlgH+','+ CNT_DEF +','+ controls.offsetHeight);
    var winH = 815;
    var y = parseInt((winH - dlgH)/2); 
    dlg = new DynLayer(null, x, y, dlgW, dlgH, CNT_BACKGROUND); 
    dlg.setVisible(false);
    dynapi.document.addChild(dlg, id); 
    
    //AjaxEmailHandler
    dlg.ajaxHandler = ajaxHandler;
    
    if(typeof dynapi.frame.frames[ajaxHandler] == 'undefined')
    {
        var lyr = dynapi.document.addChild(new DynLayer('<iframe name="' + ajaxHandler +'" src="'+ajaxHandlerUri+'" style=\"width:0px; height:0px; visibility:hidden;\"/>',0,0,0,0));  
        lyr.setVisible(false);
        
    }   
    
    //Caption
    var captionLyr = dlg.addChild(new DynLayer(null,0,0, dlgW, CNT_CAPTION_HEIGHT), 'caption');
    captionLyr.setAnchor({left:0,top:0,right:0});
    
    //Caption text
    var textLyr = captionLyr.addChild(new DynLayer('<span class="sendemail_caption">'+ caption +'</span>'),'text');        
    textLyr.setAnchor({top:0,left:0});
    
    //Close Button
    var closeImg = dynapi.functions.getImage(sendEmailCloseIcon,null,null,{onclick:function(){DynObject.all[dlg.id].setVisible(false);}});
    var closeBtn = captionLyr.addChild(new DynLayer(closeImg.getHTML(),0,0,16,16),'closeBtn');
    closeBtn.setAnchor({top:0,right:0});
    
    //Control Layers
    var controlsLayer= dlg.addChild(new DynLayer(null,0,0,0,0,'#000000'),'controlsLayer');
    controlsLayer.setAnchor({top:CNT_CAPTION_HEIGHT,right:CNT_PADDING,bottom:CNT_PADDING,left:CNT_PADDING});
    
    //Add dialog controls elements
    var p = controls.parentNode;
    controlsLayer.elm.appendChild(p.removeChild(controls));
    var lyr = DynLayer.getInline(id, controlsLayer); 
    controlsLayer.addChild(lyr,'controls');
    lyr.setVisible(true);
    lyr.setAnchor({top:CNT_PADDING,right:CNT_PADDING,bottom:CNT_PADDING,left:CNT_PADDING});
    
    //Sending
    var sendingIcon = dynapi.functions.getImage(sendingEmailIcon);
    var sendingHTML = '<div class="sendemail_sending"><div>'+sendingIcon.getHTML()+'</div><div>'+sendingEmailText+'</div></div>';
    var sending = controlsLayer.addChild(new DynLayer(sendingHTML),'sending');
    sending.setX(parseInt((controlsLayer.w - sending.w)/2));  
    sending.setY(parseInt((controlsLayer.h - sending.h)/2));
    sending.setZIndex({topmost:true});
    sending.setVisible(false);
    //Show function
    dlg.show = SendEmailDialog._show;
    //Clear function
    dlg.clear = SendEmailDialog._clear;
    //Close function
    dlg.close = SendEmailDialog._close;
    //Send function
    dlg.send = SendEmailDialog._send;
    //GetField function
    dlg.getField = SendEmailDialog._getField;
    //Before Send
    dlg.beforeSend = beforeSend;
    
    //Initialize
    new FloatLayer(dlg.id,x,y,7, function(){
        dlg.x = parseInt(dlg.elm.offsetLeft);
        dlg.y = parseInt(dlg.elm.offsetTop);        
    }); 
    
    alignFloatLayers();
    
    return dlg;
}

SendEmailDialog._getField = function(field){
    var ref = this.controlsLayer.controls.id;
    var ctrl = dynapi.functions.getElementById(ref+'_'+field);
    //alert(ref+'_'+field+','+ctrl);
    if(typeof ctrl == 'undefined') return null;
    return ctrl;
}

SendEmailDialog._clear = function()
{
    var elm = this.controlsLayer.controls.elm;
    var inputs = elm.getElementsByTagName('input');
    for(var i=0;i<inputs.length;i++)
    {
        if(inputs[i].type=='text')
        {
            inputs[i].value = '';
        }
    }
    var textareas = elm.getElementsByTagName('textarea');
    for(var i=0;i<textareas.length;i++)
    {
        textareas[i].value = '';        
    }
}

SendEmailDialog._show  = function()
{
    this.setVisible(true);
    this.setZIndex({topmost:true});
}

SendEmailDialog._close  = function()
{
    this.clear();
    this.setVisible(false);
}

SendEmailDialog._send = function()
{
    var f;
    this.controlsLayer.controls.setVisible(false);
    this.controlsLayer.sending.setVisible(true);
    var dynobject = this.id;
    
    var mail = new Object();
    
    if((f = this.getField("FromNameTextBox")))
    {
        mail.FromName = f.value;
    }
    
    if((f = this.getField("FromEmailTextBox")))
    {
        mail.FromEmail = f.value;
    }
    
    if((f = this.getField("RecipientNameTextBox")))
    {
        mail.RecipientName = f.value;
    }
    
    if((f = this.getField("RecipientEmailTextBox")))
    {
        mail.RecipientEmail = f.value;
    }
    if((f = this.getField("BodyTextBox")))
    {
        mail.Body = f.value;
    }  
        
    if(this.beforeSend && typeof this.beforeSend == 'function')
    {
        this.beforeSend(mail);
    }
    
    var handler = eval('dynapi.frame.frames["'+this.ajaxHandler+'"].'+ this.ajaxHandler);
    
    if(typeof handler != 'undefined')
    {   
        handler.Send(mail, function(r){
            var dlg = DynObject.all[dynobject];                             
            var ajaxResult = r.value;
            if(ajaxResult.Success){
                dlg.close();
                alert(ajaxResult.Value);
            }else{
                alert(ajaxResult.Error);
            }
            dlg.controlsLayer.sending.setVisible(false);
            dlg.controlsLayer.controls.setVisible(true); 
            dlg.close();
        });
    }
}