var newEmails;
var username;
var recipientlist;
var cclist;
var bcclist;
var contentDiv;
var errorMsgDiv;
var successMessage;

//these fields are used for stats
var statEmailFrom;
var statEmailTo;

// pduey: this is the function to call in the onSubmit event.
// (from everywhere BUT Vendor-Contact)
function sendEmail(emailForm) {
    if (validateEmailForm(emailForm)) {
	EmailService.sendDWR(checkStatus, emailForm.name.value, emailForm.from.value, recipientlist, cclist, bcclist, emailForm.subject.value, emailForm.message.value, location.href);

	statEmailFrom = emailForm.from.value;
	statEmailTo = emailForm.to.value;

    	sendEvent(emailForm.vpid.value, 'lc_sf');
    	//console.debug('Sent a Friend an email!' );

	page.reloadAssets();
    }
    
    // always return false, else the page will reload
    return false;
}

// this is the function to call in the onSubmit event from Vendor-Contact only.  
function sendVendorEmail(emailForm) {
    if (validateVendorEmailForm(emailForm)) {

	if (emailForm.address != undefined) { 
	    
	    emailForm.message.value = "Sender's information - " +
	    "Name: " + emailForm.name.value + "," +
		"E-mail: " + emailForm.from.value + ", " +
		"Phone Number: " + emailForm.phone.value + ", " +
		"Wedding Date: " + emailForm.wed_date.value + ", " +
		//"<p>VPID: " + emailForm.vpid.value + "</p>" +
		"Message:" + emailForm.message.value + ", " +
    	"Address" + emailForm.address.value + ", " +
        "Vendor: " + $('vendorDisplay').firstChild.innerHTML.replace(/<.*?>/g, "");
        } else {
	    emailForm.message.value = "Sender's information - " +
	    "Name: " + emailForm.name.value + ", " +
		"E-mail: " + emailForm.from.value + ", " +
		"Phone Number: " + emailForm.phone.value + ", " +
		"Wedding Date: " + emailForm.wed_date.value + ", " +
		"Message: " + emailForm.message.value + ", " +
		"Vendor: " + $('vendorDisplay').firstChild.innerHTML.replace(/<.*?>/g, "");
		//"<p>VPID: " + emailForm.vpid.value + "</p>" +
	}

	EmailService.sendDWR(checkStatus, emailForm.name.value, emailForm.from.value, recipientlist, cclist, bcclist, emailForm.subject.value, emailForm.message.value, "");

	statEmailFrom = emailForm.from.value;
	statEmailTo = emailForm.to.value;

    	sendEmailEvent(emailForm.from.value, emailForm.to.value, emailForm.vpid.value);
    	//console.debug('An email has been sent to vendor! ' );
	page.reloadAssets();
    }
    
    // always return false, else the page will reload
    return false;
}

// this is the function to call in the onSubmit event from list_your_business.  
function sendLYBEmail(emailForm) {
    if (validateLYBEmailForm(emailForm)) {

	theMessage ="Sender's information - " +
	    "Name: " + emailForm.name.value + ", " +
	    "Company Name: " + emailForm.cname.value + ", " +
	    "E-mail: " + emailForm.email.value + ", " +
	    "Phone Number: " + emailForm.phone.value + ", " +
	    "Company Website: " + emailForm.website.value + ", " +
	    "Message: " + emailForm.message.value;
	
	EmailService.sendDWR(checkStatus, emailForm.name.value, emailForm.email.value, emailForm.repEmail.value, cclist, bcclist, "Advertise Your Business email", theMessage, location.href);

	page.reloadAssets();
    }
    
    // always return false, else the page will reload
    return false;
}

// this is the function to call in the onSubmit event from Report Wedding Web Site only.  
function sendReportSiteEmail(form) {
    if (validateReportSiteForm(form)) {

	aMessage = "Report Wedding Web Site - " +
	    "By: " + form.username.value + ", " +
	    "E-mail: " + form.from.value + ", " +
	    "SiteLink: " + form.sitelink.value + ", " +
	    "WeddingWebSiteId: " + form.weddingWebsiteId.value + ", " +
	    "WeddingWebSiteOwner: " + form.weddingWebsiteOwner.value + ", " + 
	    "Additional Information: " + form.reportSiteMessage.value;
	
	EmailService.sendDWR(checkStatusReportSite, form.username.value, 
			     form.from.value, 
			     recipientlist, 
			     cclist, 
			     bcclist, form.subject.value, aMessage, "");

	statEmailFrom = form.from.value;
	statEmailTo = form.to.value;
	page.reloadAssets();
    }
    
    // always return false, else the page will reload
    return false;
}

function validateEmailForm(form) {
    username = form.username.value;
    
    // clear out error message div's
    DWRUtil.setValues({emailName:"", emailFrom:"", emailTo:""});

    var valid = true;    

    //validate required
    if(isEmpty(form.name.value)){
	DWRUtil.setValue("emailName", "This is required");
	valid=false;		
    }

    if(isEmpty(form.from.value)){
	DWRUtil.setValue("emailFrom", "This is required");		
	valid=false;		
    }else if(!isEmail(form.from.value)){
	DWRUtil.setValue("emailFrom", "Invalid Email");		
	valid=false;		
    }

    if(!isEmpty(form.to.value)){
	var errMsg = "";
	var emails = form.to.value.split(",");
	for(i=0; i<emails.length; i++){
	    var email = emails[i];
	    if(!isEmpty(email) && !isEmail(email)){
		errMsg = errMsg + email + " is invalid<br />"
	    }
	}
	if(!isEmpty(errMsg)){
	    DWRUtil.setValue("emailTo", errMsg);					
	    valid=false;
	}	
    }
    
    var contactListSelected = "";
    if (form.contactEmails) {
	for(i=0; i < form.contactEmails.length; i++) {
	    if(form.contactEmails[i].selected) {
		contactListSelected += "," + form.contactEmails[i].value;
	    }
	}
    }
    
    newEmails = form.to.value.replace(/\s+|\n+|\r+|\t+/g, '');		// strip whitespace
    if(isEmpty(newEmails)) {
	contactListSelected = contactListSelected.substring(1);		// remove leading comma
    }

    recipientlist = newEmails + contactListSelected;
    if(isEmpty(recipientlist)){
	DWRUtil.setValue("emailTo", "This is required");		
	valid=false;		
    }

    cclist = '';
    if (form.sendToMe.checked) {
	cclist = form.from.value;
    }
    
    bcclist = '';
    if (form.bcc) {
	bcclist = form.bcc.value;
    }
    
    return valid;
}

function validateVendorEmailForm(form) {
    // clear out error message div's
    DWRUtil.setValues({vendorFrom:""});

    var valid = true;    

    //validate required
    if(isEmpty(form.from.value)){
	DWRUtil.setValue("vendorFrom", "This is required");		
	valid=false;		
    }else if(!isEmail(form.from.value)){
	DWRUtil.setValue("vendorFrom", "Invalid Email");		
	valid=false;		
    }

    recipientlist = form.to.value;
    
    cclist = '';
    if (form.sendToMe.checked) {
	cclist = form.from.value;
    }
    
    bcclist = '';
    if (form.bcc) {
	bcclist = form.bcc.value;
    }
    
    return valid;
}

function validateLYBEmailForm(form) {
    // clear out error message div's
    DWRUtil.setValues({emailName:""});
    DWRUtil.setValues({emailCname:""});
    DWRUtil.setValues({emailFrom:""});
    DWRUtil.setValues({emailPhone:""});

    var valid = true;    

    //validate required
    if(isEmpty(form.name.value)){
	DWRUtil.setValue("emailName", "This is required");
	valid=false;		
    }
    if(isEmpty(form.cname.value)){
	DWRUtil.setValue("emailCname", "This is required");
	valid=false;		
    }
    if(isEmpty(form.phone.value)){
	DWRUtil.setValue("emailPhone", "This is required");
	valid=false;		
    }

    if(isEmpty(form.email.value)){
	DWRUtil.setValue("emailFrom", "This is required");		
	valid=false;		
    }else if(!isEmail(form.email.value)){
	DWRUtil.setValue("emailFrom", "Invalid Email");		
	valid=false;		
    }

    
    cclist = '';
    if (form.sendToMe.checked) {
	cclist = form.email.value;
    }
    

    bcclist = 'listyourbusiness@brides.com';
  
    return valid;
}

function validateReportSiteForm(form) {
    // clear out error message div's
    DWRUtil.setValues({reportSiteMessageError:""});
    DWRUtil.setValues({reportSiteReasonError:""});

    var valid = true;    

    //validate required
    if(isEmpty(form.reportSiteMessage.value)){
	DWRUtil.setValue("reportSiteMessageError", "This is required");		
	valid=false;		
    }
    if(isEmpty(form.reportSiteReason.value) || form.reportSiteReason.value == "Select a reason" ){
	DWRUtil.setValue("reportSiteReasonError", "This is required");		
	valid=false;		
    }

    recipientlist = form.to.value;
    
    cclist = '';	
    bcclist = '';
    
    return valid;
}

function checkStatus(valid) {
    if(valid) {
	contentDiv.innerHTML = "Your message has been sent.";
    } else {
	errorMsgDiv.innerHTML = "Your message was not sent due to server error. Please try again later.";
    }
    
    if(!isEmpty(username) && !isEmpty(newEmails)) {
    	ContactListEmailService.newEmails(callBackAddEmails, username, newEmails);
    }
}

function checkStatusReportSite(valid) {
    if(valid) {
	contentDiv.innerHTML = "Your message has been sent." + successMessage;
    } else {
	errorMsgDiv.innerHTML = "Your message was not sent due to server error. Please try again later.";
    }
}


var totalNewEmails = 0;

function callBackAddEmails(data) {
    var newEmails = '';
    if(data!=null) {
	newEmails = '<input type="hidden" name="username" value="' + username + '"/>';
	totalNewEmails = data.length;
	for(i=0; i < totalNewEmails; i++) {
	    newEmails += ' <input type="checkbox" name="addEmail" value="' + data[i] + '"/> ' + data[i];
	}
	document.getElementById("newEmails").innerHTML = newEmails;
	contentDiv.innerHTML = contentDiv.innerHTML + document.getElementById("addEmails").innerHTML;
    }
}

function addEmails(form) {
    var emails = "";
    if(totalNewEmails > 1) {
	for(i=0; i < form.addEmail.length; i++) {
	    if(form.addEmail[i].checked) {
		emails += ","  + form.addEmail[i].value;
	    }
	}
	if(emails.length > 0) {
	    emails = emails.substring(1);
	}
    }
    else {	// -- For single checkbox
	if(form.addEmail.checked) {
	    emails = form.addEmail.value;
	}
    }
    if(emails.length==0) {
	DWRUtil.setValue("addEmailsErrorMsg", "Please make a selection");
	return false;
    }
    ContactListEmailService.addEmails(callBackAddedEmails, form.username.value, emails);
    return false;
}


function callBackAddedEmails(isSuccessful) {
    if(isSuccessful) {
	contentDiv.innerHTML = "Emails added to your Guest List";
    }
    else {
	contentDiv.innerHTML = "There was a problem adding emails to your Guest List";
    }
    return false;
}

var emailAction;
var clipAction = '';


function emailAFriendPopup() {
    contentDiv = document.getElementById("emailAFriendContent");
    contentDiv.innerHTML = document.getElementById("emailFriendForm").innerHTML;
    
    savedContent = contentDiv.innerHTML;
    showItem('emailContainer', 'eMailIcon', 'bottomleft');
    emailAction = 'emailAFriend';
    clipAction = 'email';
    errorMsgDiv = document.getElementById("emailAFriendErrorMsg");
    errorMsgDiv.innerHTML = '';
}


function emailAFriendMBOTYPopup() {
    contentDiv = document.getElementById("emailAFriendContent");
    contentDiv.innerHTML = document.getElementById("emailFriendForm").innerHTML;
    savedContent = contentDiv.innerHTML;
    showItem('emailContainer', 'eMailIcon', 'topleft');
    emailAction = 'emailAFriend';
    clipAction = 'email';
    errorMsgDiv = document.getElementById("emailAFriendErrorMsg");
    errorMsgDiv.innerHTML = '';
}




function emailVendorPopup(buttonId, vendorInfoObj) {
//console.debug('from : '+cvForm.from.value );
    if (document.getElementById("contactContainer").style.visibility == 'visible') {
        hideItem('contactContainer');
    }
    contentDiv = document.getElementById("emailVendorContent");
//    savedContent = document.getElementById("emailVendorForm").innerHTML; // Clone the hidden content
//    document.getElementById("emailVendorForm").innerHTML = ""; // Destroy the original
//    contentDiv.innerHTML = savedContent;

    contentDiv.innerHTML = document.getElementById("emailVendorForm").innerHTML;
    savedContent = contentDiv.innerHTML;

    emailAction = 'emailVendor';
    clipAction = 'email';
    errorMsgDiv = document.getElementById("emailVendorErrorMsg");
    errorMsgDiv.innerHTML = '';
    if (vendorInfoObj) {
        vendorListingId = vendorInfoObj.vendorListingId;
        var displaySpan = document.getElementById("vendorDisplay");
        displaySpan.innerHTML = vendorInfoObj.displayText;
        var cvForm = document.getElementById("contactvendorform");
	if (vendorInfoObj.vpid){
		cvForm.vpid.value = vendorInfoObj.vpid;
	}
        // no idea why dereferencing document.contactvendorform.to.value with '.' doesn't work
        for(i=0;i<cvForm.elements.length;i++){
            if (cvForm.elements[i].name == 'to') {
                cvForm.elements[i].value = vendorInfoObj.toAddr;
            }
        }//for
    }

    if (userData.weddingDate != undefined) {
	var cvForm = document.getElementById("contactvendorform");
	cvForm.flName.value = userData.firstName +" "+userData.lastName ;
	cvForm.eMail.value = userData.email;
	cvForm.wed_date.value = formatMMDDYYYY(userData.weddingDate);
    }
    showItem('contactContainer', buttonId, 'bottomleft');

}

function listYourBusinessPopup(locale) {

  // totally temporary fix that relies on jQuery's ability to specify
	// var regionHeader = document.getElementById("regionHeader");  
	//regionHeader.innerHTML = locale.toUpperCase() + " REGION";	
	var regionHeader = jQuery("#listYourBusinessFormContainer #regionHeader");
	regionHeader.html(locale.toUpperCase() + " REGION");
	
	// var repName = document.getElementById("repName");
	// repName.innerHTML = LYB_REGIONS[locale].repName + ", " + LYB_REGIONS[locale].repTitle;
	 var repName = jQuery("#listYourBusinessFormContainer #repName");
	 repName.html(LYB_REGIONS[locale].repName + ", " + LYB_REGIONS[locale].repTitle);
	
	// var repPhone = document.getElementById("repPhone");
	// repPhone.innerHTML = LYB_REGIONS[locale].repPhone;
	 var repPhone = jQuery("#listYourBusinessFormContainer #repPhone");
	 repPhone.html(LYB_REGIONS[locale].repPhone);
	
	// var repFax = document.getElementById("repFax");
	// repFax.innerHTML = LYB_REGIONS[locale].repFax;
	var repFax = jQuery("#listYourBusinessFormContainer #repFax");
	repFax.html(LYB_REGIONS[locale].repFax);
	
	// var repEmail = document.getElementById("repEmail");
	// repEmail.value = LYB_REGIONS[locale].repEmail;
  var repEmail = jQuery("#listYourBusinessFormContainer #repEmail");
  repEmail.val(LYB_REGIONS[locale].repEmail);


	contentDiv = document.getElementById("listYourBusinessContent");
	contentDiv.innerHTML = document.getElementById("listYourBusinessFormContainer").innerHTML;
	savedContent = contentDiv.innerHTML;
	showItem('emailContainer', 'legendHead', 'bottomright');
	emailAction = 'emailListYourBusiness';
	clipAction = 'email';
	errorMsgDiv = document.getElementById("listYourBusinessErrorMsg");
	errorMsgDiv.innerHTML = '';
}


function reportSitePopup(){
    contentDiv = document.getElementById("reportSiteContent");
    contentDiv.innerHTML = document.getElementById("reportSiteForm").innerHTML;
    successMessage = document.getElementById("reportSiteSuccess").value;
    savedContent = contentDiv.innerHTML;
    showItem('reportSiteContainer', 'reportSiteButton', null);
    emailAction = 'reportSite';
    clipAction = 'email';
    errorMsgDiv = document.getElementById("reportSiteErrorMsg");
    errorMsgDiv.innerHTML = '';
}

function emailAdminWeddingWebsitePopup() {
    contentDiv = document.getElementById("emailAFriendContent");
    contentDiv.innerHTML = document.getElementById("emailFriendForm").innerHTML;
    savedContent = contentDiv.innerHTML;
    showItem('emailContainer', 'eMailIcon', 'bottomleft');
    emailAction = 'emailWeddingWebsite';
    clipAction = 'email';
    errorMsgDiv = document.getElementById("emailAFriendErrorMsg");
    errorMsgDiv.innerHTML = '';
}

function emailOverviewWeddingWebsitePopup() {
    contentDiv = document.getElementById("emailAFriendContent");
    contentDiv.innerHTML = document.getElementById("emailFriendForm").innerHTML;
    savedContent = contentDiv.innerHTML;
    showItem('emailContainer', 'eMailIcon', 'topleft');
    emailAction = 'emailWeddingWebsite';
    clipAction = 'email';
    errorMsgDiv = document.getElementById("emailAFriendErrorMsg");
    errorMsgDiv.innerHTML = '';
}

function emailViewWeddingWebsitePopup() {
    contentDiv = document.getElementById("emailAFriendContent");
    contentDiv.innerHTML = document.getElementById("emailFriendForm").innerHTML;
    savedContent = contentDiv.innerHTML;
    showItem('emailContainer', 'eMailIcon', null);
    emailAction = 'emailWeddingWebsite';
    clipAction = 'email';
    errorMsgDiv = document.getElementById("emailAFriendErrorMsg");
    errorMsgDiv.innerHTML = '';
}

function sendWeddingWebsiteEmail(emailForm) {
    var siteLink = 'http://www.brides.com/weddingwebsite/' + navLink;
    
    if (validateEmailForm(emailForm)){
        EmailService.sendDWR(checkStatus, emailForm.name.value, emailForm.from.value, recipientlist, cclist, bcclist, emailForm.subject.value, emailForm.message.value, siteLink);

        statEmailFrom = emailForm.from.value;
        statEmailTo = emailForm.to.value;
        page.reloadAssets();
    }

    return false;
}

