﻿var iRecipientsCount = 1;
var height = 40;
function clearNameEmailControls()
{
    $('uxFirstName1').value = '';
    $('uxLastName1').value = '';
    $('uxEmail1').value = '';
    for (var i = 2; i <= iRecipientsCount; i++)               
    {
         var validatorId = 'uxREVEmail'+i;   
         Array.remove(Page_Validators, $(validatorId));
    }  
    var list = $$('#uxRecipientsList div[dynamicDiv=1]');
    list.each(Element.remove); 
    height = 40;
    $('uxRecipientsList').style.height = height + "px";
    iRecipientsCount = 1;
}
function addMoreRecipients()
{       
      iRecipientsCount++;
      var myObject = {ID: iRecipientsCount};
       
      var tpl = new Template(
      '<div dynamicDiv="1"><div class="floatLeft alignLeft" style="padding: 5px 10px 0 0;"><input type="text" id="uxFirstName#{ID}" name="uxFirstName#{ID}" class="elTxt elW120" /></div>'
    +'<div class="floatLeft" style="padding: 5px 10px 0 0;"><input type="text" id="uxLastName#{ID}" name="uxLastName#{ID}" class="elTxt elW120" /></div>'
    +'<div class="floatLeft" style="padding-top: 5px;"><input type="text" id="uxEmail#{ID}" name="uxEmail#{ID}" class="elTxt elW120" />'  
    +'<span id="uxREVEmail#{ID}" style="color:Red;display:none;"><img src="../../images/ErrorImg.gif" /></span><span style="color: Red;"></span>'      
    +'</div>'
    +'<br clear="all" /></div>'		      
      );         
     var content = tpl.evaluate(myObject);      
     $('uxRecipientsList').insert(content);   
     //create email regexp validator  
     var validatorId = 'uxREVEmail'+iRecipientsCount;     
     Page_Validators.push($(validatorId));
     var uxREVEmail = $(validatorId);
     uxREVEmail.controltovalidate = 'uxEmail'+iRecipientsCount;
     uxREVEmail.errormessage = "Incorrect email address";
     uxREVEmail.display = "Dynamic";
     uxREVEmail.evaluationfunction = RegularExpressionValidatorEvaluateIsValid;
     uxREVEmail.validationexpression = "\\w+([-+.\']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*"; 
     uxREVEmail.validationGroup = "RecommendPopUp"; 
     uxREVEmail.dispose = function() {
        Array.remove(Page_Validators, uxREVEmail);
     }      
     
     if(height >= 140){height = 140}         
     else{height=height + 25;}
     $('uxRecipientsList').style.height = height + "px";
}

//returns an Array of objects: {FirstName, LastName, Email}
function GetNameEmails()
{
    var selected = new Array();         
    for (var i = 1; i <= iRecipientsCount; i++)               
    {
        var f = $('uxFirstName'+i).value;
        var l = $('uxLastName'+i).value;
        var e = $('uxEmail'+i).value;
        if (e)
        {
        var myObject = {FirstName: f, LastName:l, Email:e};
        selected.push(myObject);
        }
    }      
    return selected;
}

var IsFirstEmailAdded = false;
function  RecPro_AddEmailValidator()
{
        if(!IsFirstEmailAdded)
        {
            Page_Validators.push($('uxREVEmail1'));
            var ctl00_cphContent_Register_uxREVEmail = $('uxREVEmail1');
            ctl00_cphContent_Register_uxREVEmail.controltovalidate = "uxEmail1";
            ctl00_cphContent_Register_uxREVEmail.errormessage = "Incorrect email address";
            ctl00_cphContent_Register_uxREVEmail.display = "Dynamic";
            ctl00_cphContent_Register_uxREVEmail.evaluationfunction = RegularExpressionValidatorEvaluateIsValid;
            ctl00_cphContent_Register_uxREVEmail.validationexpression = "\\w+([-+.\']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";  
            ctl00_cphContent_Register_uxREVEmail.validationGroup = "RecommendPopUp";  
        }
        IsFirstEmailAdded = true;     
}

var RecPro_PopUp;
var RecPro_CompletePopUp;

var RecPro_baseContentId;
var RecPro_loggedIn;
var RecPro_queryReadMessage = "msg:messagemanager.BuildMessage4TemplateJS('Reference',$CurrentUserId);";
var RecPro_queryReadMessageFull;
var RecPro_Island;

document.observe('dom:loaded', function()
{
    RecPro_PopUp = new RmzPopup("recommendProfessional", 605);
    RecPro_CompletePopUp = new RmzPopup("recommendProfessionalComplete", 605);
    $('recommendProfessional').style.display = 'block';
    $('recommendProfessionalComplete').style.display = 'block';
});

function showRecPro_PopUp(bcId, loggedIn) {
    RecPro_loggedIn = loggedIn;
    RecPro_baseContentId = bcId;
    RecPro_clearPreviousSelection();
    RecPro_LoadData(bcId);        
};    
 

function RecPro_LoadData(bcId)
{
	RecPro_queryReadMessageFull = "content:basecontentmanager.GetBaseContent(" + bcId + ");name:$content.ContentItem.Title;imageHtml:data.ImageUrlJS3params($content.RmzUserCreatedBy.ImageId,'xSmall',$content.RmzUserCreatedBy.FullName);" + RecPro_queryReadMessage;
    if(Trail != null) Trail.show();
	Rmz.Web.WebServices.DataService.ReadDataIsland(RecPro_queryReadMessageFull, RecPro_OnReadSuccess, OnAjaxRequest_Error);                        
}
function RecPro_OnReadSuccess(result)
{   
    RecPro_AddEmailValidator();
    if(Trail != null) Trail.hide();
    RecPro_Island = result.evalJSON();            
    
    var fname = RecPro_Island.name;
    $('uxProHeader').removeClassName('elHide');
    $('uxCompanyHeader').removeClassName('elHide');
    if (RecPro_Island.content.ContentType == 'Rmz.BusinessLogic.ProfileCompany')
		$('uxProHeader').addClassName('elHide');
	else
		$('uxCompanyHeader').addClassName('elHide');
    
    var imageSrc = RecPro_Island.imageHtml;                
    $('recommendTitle').update('Recommend ' + fname);
    $('uxImage').update(imageSrc);
    $('uxImageSent').update(imageSrc);
                    
     RecPro_PopUp.show();
     //RecPro_CompletePopUp.show();
}   

function RecPro_SendEmails()
{                     
     var isValid = Page_ClientValidate('RecommendPopUp');
     if(!isValid) return;
    
     var island = RecPro_Island;
    
    island.msg.MessageData.BaseContentId = RecPro_baseContentId;
    island.msg.MessageData.CustomText =  $('uxMessage').value;
    island.msg.MessageData.ReviewRelationshipId =  $(RecPro_ReviewRelationClientId).value;
    island.msg.MessageData.SendCopyToMe = $('cbSendCopy').checked;
                            
    var query='';
    var recipientTemplate = new Template("messagemanager.AddRecipient($msg,'#{FirstName}','#{LastName}','#{Email}','');");
    var contactTemplate = new Template("messagemanager.AddRecipientUser($msg,#{ID});");
    
    //this function is declared at SelectContacts.ascx
    var selectedContacts = GetSelection();
    
    for (var i = 0; i < selectedContacts.length; i++)
     {
        var content = contactTemplate.evaluate(selectedContacts[i]);
        query = query + content;                         
     }
     
    var nameEmails = GetNameEmails();
    for (var i = 0; i < nameEmails.length; i++)
    {
        var content = recipientTemplate.evaluate(nameEmails[i]);
        query = query + content;                         
    }
    if(query != '')
    {
        if(Trail != null) Trail.show();
		query = query+ "resultmsg:messagemanager.SendEmail($msg);";
             //alert(RecPro_queryReadMessageFull); alert(Object.toJSON(island)); alert(query);
        Rmz.Web.WebServices.DataService.UpdateIsland(RecPro_queryReadMessageFull, Object.toJSON(island), query,RecPro_OnMessagesSent, OnAjaxRequest_Error);        
    }     
    else
    {
         NameEmailForm_SetAddressesValidator(true);
         SelectContacts_SetAddressesValidator(true);
         Page_ClientValidate('RecommendPopUp');
    }                            
}    

function RecPro_clearPreviousSelection()
{        
    $('uxMessage').value = '';
    $(RecPro_ReviewRelationClientId).selectedIndex = 0;
    $('cbSendCopy').checked = false;
    //this function is declared at SelectContacts.ascx
    if (typeof (RecPro_ListBoxUsersClientId) != 'undefined') {
        clearSelectedUsers();
        SelectContacts_SetAddressesValidator(false);
    }
    clearNameEmailControls();  
    NameEmailForm_SetAddressesValidator(false);
    Page_ClientValidate('RecommendPopUp');    
    if(Trail != null) Trail.hide();
			
}
   
function RecPro_OnMessagesSent(result)
{   
    if(Trail != null) Trail.hide();
	var island =  result.evalJSON();	
    //this is an array of send recommendation results		
	var resultArray = island.msg.Result;
	//alert(resultArray.length);
    
    RecPro_PopUp.close();
    RecPro_CompletePopUp.show();
}

function  ValidateAdressesCount(source, args)
{
		args.IsValid = false;              
}  

 var SelectContacts_PopUp;

document.observe('dom:loaded', function()
{
    SelectContacts_PopUp = new RmzPopup("uxNetworkPopup", 605);
});

function showContacts()
{
    RecPro_PopUp.close();
    SelectContacts_PopUp.show();
}
function hideContacts()
{
    SelectContacts_PopUp.close();
    RecPro_PopUp.show();
}
function selectContacts()
{
    //1 get selection
    var selected = GetSelection(); 
    if(selected.length > 0)
    {
         $('uxSelectUsersContainer').style.display='block';
        //2 refresh list                         
         $('uxSelectUsersContainer').childElements().each(Element.remove);
          var tpl = new Template('<div style="padding:2px 0 2px 0; font-size:10px;">'
					    +'<span class="floatRight">[<a class="elRed" style="font-weight:bold;" href="javascript:removeUser(\'#{ID}\');">X</a>]</span>'
					    +'<span class="elBlue">#{TEXT}</span>'
			            +'</div>'
                        +'<div style="border-bottom:solid #FFFFFF 1px;"></div>');
                        
         for (var i = 0; i < selected.length; i++)
         {
            var content = tpl.evaluate(selected[i]);            
            $('uxSelectUsersContainer').insert(content);    
         }
     }
     else
     {
        $('uxSelectUsersContainer').childElements().each(Element.remove);
        $('uxSelectUsersContainer').style.display='none';
     }
    hideContacts();
}
function removeUser(selectionID)
{
    var ob = $(RecPro_ListBoxUsersClientId);
    for (var i = 0; i < ob.options.length; i++)         
    if (ob.options[i].value == selectionID) 
    {
        ob.options[i].selected = false;
        break;
    }
    selectContacts();
}
function clearSelectedUsers()
{
    var ob = $(RecPro_ListBoxUsersClientId);
    for (var i = 0; i < ob.options.length; i++)               
    ob.options[i].selected = false;                    
    selectContacts();
}

//returns an Array of objects: {ID, TEXT}
function GetSelection()
{
    var selected = new Array();
    if (typeof (RecPro_ListBoxUsersClientId) == 'undefined')
        return;
    var ob = $(RecPro_ListBoxUsersClientId);
    for (var i = 0; i < ob.options.length; i++)         
    if (ob.options[ i ].selected) 
    {
        var myObject = {ID: ob.options[i].value, TEXT: ob.options[i].text};
        selected.push(myObject);            
    }      
    return selected;
}