YAHOO.namespace('blaney.sendThis');

/*******************************************************************************
* init()
* Creates the dialog object
*******************************************************************************/
function init() {
	// IE's onload event ordering is different than in Fx or Safari, so on pages
	// which trigger the Send to Friends automatically, it runs sendRelease before
	// init. sendRelease has been modified to check for the object and call init
	// directly, so we check here to make sure we don't end up calling it twice
	if( YAHOO.blaney.sendThis.dlg ){
		return;
	}
	
	var handleCancel = function() {
		clearForm();
		this.cancel();
	}
	var handleSubmit = function() {
		if( checkSend() ){
			this.submit();
			clearForm();
		}
		
	}
	YAHOO.blaney.sendThis.dlg = new YAHOO.widget.Dialog("sendDlg", 
			{ 	visible:false, 
				width:"205px", 
				y: 210,
				close: false,
				draggable: false,
				underlay: 'shadow'
			});

	YAHOO.blaney.sendThis.dlg.callback.success = submitCallback;
	YAHOO.blaney.sendThis.dlg.callback.failure = submitFailure;

	var listeners = new YAHOO.util.KeyListener(document, { keys : 27 }, {fn:handleCancel,scope:YAHOO.blaney.sendThis.dlg,correctScope:true} );

	YAHOO.blaney.sendThis.dlg.cfg.queueProperty("keylisteners", listeners);

	YAHOO.blaney.sendThis.dlg.cfg.queueProperty("buttons", [ { text:"Cancel", handler:handleCancel }, { text:"Send", handler:handleSubmit } ]);
	
	YAHOO.blaney.sendThis.dlg.render();
}

YAHOO.util.Event.addListener(window, "load", init);


function clearForm() {
	document.getElementById('senderName').value = '';
	document.getElementById('senderEmail').value = '';
	document.getElementById('toName').value = '';
	document.getElementById('toEmail').value = '';
	document.getElementById('subject').value = '';
	document.getElementById('message').value = '';
	document.getElementById('toError').innerHTML = '';
	document.getElementById('senderError').innerHTML = '';
	document.getElementById('contentError').innerHTML = '';
}

/*******************************************************************************
* Methods for emailing pages
* emailPracticeArea(name, page)
* emailArticle(article)
* emailLawyer(lawyer)
*******************************************************************************/


function emailPracticeArea(name, page){
	// IE's onload event ordering is different than in Fx or Safari, so on pages
	// which trigger the Send to Friends automatically, it runs sendRelease before
	// init. 
	if( !YAHOO.blaney.sendThis.dlg ){
		init();
	}
	document.getElementById('name').value = name;
	document.getElementById('page').value = page;
	YAHOO.blaney.sendThis.dlg.show();
}

function emailArticle(article){
	// IE's onload event ordering is different than in Fx or Safari, so on pages
	// which trigger the Send to Friends automatically, it runs sendRelease before
	// init. 
	if( !YAHOO.blaney.sendThis.dlg ){
		init();
	}
	document.getElementById('article').value = article;
	YAHOO.blaney.sendThis.dlg.show();
}

function emailLawyer(lawyer){
	// IE's onload event ordering is different than in Fx or Safari, so on pages
	// which trigger the Send to Friends automatically, it runs sendRelease before
	// init. 
	if( !YAHOO.blaney.sendThis.dlg ){
		init();
	}
	document.getElementById('lawyer').value = lawyer;
	YAHOO.blaney.sendThis.dlg.show();
}

/*******************************************************************************
* submitCallback(obj)
* Callback function which gets called by the Yahoo! library after a successful
* submission.
*******************************************************************************/
function submitCallback(obj) {
	
	var response = obj.responseText.parseJSON();
	var sentMessageContainer = document.getElementById(response['id']);
	sentMessageContainer.innerHTML = response['message'];
	sentMessageContainer.style.display = 'block';
}

/*******************************************************************************
* submitFailure(obj)
* Callback function which gets called by the Yahoo! library after an unsuccessful
* submission.
*******************************************************************************/
function submitFailure(obj) {
	alert("Sorry!\n\nSending failed due to a " + obj.status + " error.");
}

/*******************************************************************************
* checkSend()
* Validates the form before submittign
*******************************************************************************/
function checkSend() {
	var valid = true;
	var toName = document.getElementById('toName').value.replace(/\s+/, '');
	var toEmail = document.getElementById('toEmail').value.replace(/\s+/, '');
	var senderName = document.getElementById('senderName').value.replace(/\s+/, '');
	var senderEmail = document.getElementById('senderEmail').value.replace(/\s+/, '');
	var subject = document.getElementById('subject').value.replace(/\s+/, '');
	
	if(toName == '' && toEmail == '') {
		var errorDiv = document.getElementById('toError');
		errorDiv.innerHTML = 'Please specify both a name and email address.';
		valid = false;
	} else {
		var errorDiv = document.getElementById('toError');
		errorDiv.innerHTML = '';
	}
	
	if(senderName == '' && senderEmail == '') {
		var errorDiv = document.getElementById('senderError');
		errorDiv.innerHTML = 'Please specify both a name and email address.';
		valid = false;
	}  else {
		var errorDiv = document.getElementById('senderError');
		errorDiv.innerHTML = '';
	}
	
	if(subject == '') {
		var errorDiv = document.getElementById('contentError');
		errorDiv.innerHTML = 'Please specify a subject.';
		valid = false;
	}  else {
		var errorDiv = document.getElementById('contentError');
		errorDiv.innerHTML = '';
	}
	
	return valid;
}
