//Contains functions for opening forms in inline divs on any page
reliance.load('utilities');
reliance.load('pageMask');
reliance.load('httpRequest');
reliance.load('common');

function getFormHtml(pFormType, pQuerystringVars){
	var request = reliance.httpRequest.create('/modules/internet/forms/form.aspx', 'f='+pFormType+'&'+pQuerystringVars,{complete:formCallback},reliance.httpRequest.METHOD_GET);
}

function getFlyerHtml(pMlsId, pMlsNumber){
	var request = reliance.httpRequest.create('/'+reliance.loader.siteDirectory()+'/modules/internet/search/listing/listingflyers_inc.asp', 'mlsid='+pMlsId+'&mlsnumber='+pMlsNumber,{complete:flyerCallback},reliance.httpRequest.METHOD_GET);
}

function getFloorplanHtml(pMlsId, pMlsNumber){
	var request = reliance.httpRequest.create('/'+reliance.loader.siteDirectory()+'/modules/internet/search/listing/floorplans_inc.asp', 'mlsid='+pMlsId+'&mlsnumber='+pMlsNumber,{complete:floorplanCallback},reliance.httpRequest.METHOD_GET);
}

function formCallback(){
	handleCallback.apply(this, ['Form', document.documentElement.offsetHeight*.97, 420]);
}

function flyerCallback(){
	handleCallback.apply(this, ['Flyer',350, 360]);
}

function floorplanCallback(){
	handleCallback.apply(this, ['Floorplan',350, 360]);
}

function handleCallback(type, height, width){
	var response = this.responseText;
	try {
		if (response == '') { alert('There was an error retrieving the form'); }
		else {
			reliance.pageMask.show({style:reliance.pageMask.MASK_STYLE_DARK});
			var barHeight = 22;
			var divPadding = 8;
			var wrapper = document.createElement('div');
			wrapper.style.cssText = 'background-color:#FFFFFF;padding:5px;position:absolute;height:'+height+'px;width:'+width+'px;top:'+(((document.documentElement.offsetHeight-height)/2)+document.documentElement.scrollTop)+'px;left:'+(((document.documentElement.offsetWidth-width)/2)+document.documentElement.scrollLeft)+'px;z-index:'+(reliance.pageMask.zIndex()+1);
			var close = document.createElement('a');
			close.appendChild(document.createTextNode('Close '+type));
			close.style.cssText = 'font-family:arial,sans-serif;font-size:12px;float:right;'
			close.href = 'javascript:void(0);'
			reliance.event.bindDom(close,'click',wrapper,function(){document.body.removeChild(this);reliance.pageMask.hide();});
			var bar = document.createElement('div');
			bar.style.cssText = 'height:'+barHeight+'px;border-bottom:1px solid #000000;';
			bar.appendChild(close);
			var div = document.createElement('div');
			div.id = 'formdiv';
			div.style.cssText = 'height:'+(height-barHeight-divPadding)+'px;width:'+width+'px;overflow:auto;padding-top:'+divPadding+'px;';
			div.innerHTML = response;
			wrapper.appendChild(bar);
			wrapper.appendChild(div);
			document.body.appendChild(wrapper);
			reliance.event.bind(window,'updatehtml',div,updateHtml);
		}
	}
	catch (ex) { alert(ex.message + ' | ' + response); }	
}

function submitForm(form, formname, accid, mlsnumalpha, mlsid, price, city, clientid){
	if (validSubmission(formname)) {
		var formdata = [];
		var qsdata = 'f='+formname+'&comp='+reliance.loader.serviceID()+'&acc='+accid+'&mlsnumber='+mlsnumalpha+'&mlsid='+mlsid+'&pr='+price+'&ct='+city+'&cid='+clientid;
		
		for (var i=0;i<form.elements.length;i++){
			if ((form.elements[i].type == 'checkbox' || form.elements[i].type == 'radio') && !form.elements[i].checked)
				continue;
			
			formdata.push(form.elements[i].name + '=' + escape(form.elements[i].value));
		}

		var url = '/'+reliance.loader.siteDirectory()+'/modules/internet/forms/form.aspx?'+qsdata;
		reliance.httpRequest.create(url,formdata.join('&'),{complete:submitComplete},reliance.httpRequest.METHOD_POST);
	}
}

function submitComplete(){
	var messageHtml;
	var messageText;
	
	if (isNaN(this.responseText)) {
		messageText = this.responseText;//'There was an error during your form submission.  Please close form window and retry sending.';
		messageHtml = messageText;
	}else{
		messageText = 'Thank you!  Your information has been received!';
		messageHtml = '<table width="400" border="0" align="center" cellpadding="0" cellspacing="0">' +
			'<tr> ' +
			'<td>' +
			'	<table width="100%" border="0" cellspacing="0" cellpadding="0">' +
			'	<tr> ' +
			'	<td width="8" background="'+reliance.loader.mediaPath()+'/global/general/form_title_body.gif"><img src="'+reliance.loader.mediaPath()+'/global/general/form_title_left.gif" width="8" height="27"></td>' +
			'	<td width="100%" align="center" background="'+reliance.loader.mediaPath()+'/global/general/form_title_body.gif"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b>'+messageText+'</b></font></td>' +
			'	<td width="7"><img src="'+reliance.loader.mediaPath()+'/global/general/form_title_right.gif" width="7" height="27"></td>' +
			'	</tr>' +
			'	</table>' +
			'</td>' + 
			'</tr>'
	}
	
	reliance.event.trigger(window, 'updatehtml', messageHtml)
}

function updateHtml(html){
	this.innerHTML = html;
}

function validSubmission(formname) {
	var emailAddress = document.getElementById('emailAddress');
	var firstName = document.getElementById('firstName');
	var lastName = document.getElementById('lastName');
	var phoneNumber = document.getElementById('phone1');
	
	if (formname == 'ListingAppointmentRequest') {
		var apptDate = document.getElementById('apptDate1');
		if (!reliance.common.isValidDateFormat(apptDate.value)) {
			alert("Please enter a valid date in the format: mm/dd/yyyy");
			apptDate.focus();
			return false;
		}
	}

	if (firstName.value.trim() == "") {
		alert("Please enter your First Name.");			
		firstName.focus();
		return false;
	}
	if (lastName.value.trim() == "") {
		alert("Please enter your Last Name.");			
		lastName.focus();
		return false;
	}
	
	if (!reliance.common.isValidEmailFormat(emailAddress.value)) {
		alert("Please enter a valid Email Address");
		emailAddress.focus();
		return false;
	}else if (emailAddress.value.indexOf('@aol.com') != -1) {
		if (!confirm('AOL has known issues consistently delivering website system emails.\nUsing an alternate email address is highly recommended.\n\nClick OK to continue signup with an AOL email address.  Click Cancel to change email address.')){
			emailAddress.select();
			return false;
		}
	}
	
	if (!reliance.common.isValidPhoneFormat(phoneNumber.value)) {
		alert("Please enter a valid phone number");
		phoneNumber.focus();
		return false;
	}
	return true;
}

