﻿
//Universal feedback javascript
function swapUF(obj1, obj2) 
{
		var el1 = document.getElementById(obj1);
		var el2 = document.getElementById(obj2);
		if ( el1.style.display != 'none' ) {
			el1.style.display = 'none';
			el2.style.display = '';
		}
		else {
			el1.style.display = '';
			el2.style.display = 'none';
		}
}

function clickclear(thisfield, defaulttext, color) 
{
		if (thisfield.value == defaulttext) {
			thisfield.value = "";
		if (!color) { color = '000000'; }
			thisfield.style.color = '#' + color;
		}
}

function clickrecall(thisfield, defaulttext, color) 
{
		if (thisfield.value == "") {
			thisfield.value = defaulttext;
		if (!color) { color = 'cccccc'; }
			thisfield.style.color = '#' + color;
		}
}

function closeFeedback()
{
	var e = document.getElementById('universalFeedbackMaster');
	var icon = document.getElementById('SendFeedbackBubbleIcon');
	if(icon != null)
    	icon.style.visibility = 'visible';
	e.style.display = 'none';	
}

function openFeedback( sendFeedbackAnchor )
{
	var e = document.getElementById('universalFeedbackMaster');
	var icon = document.getElementById('SendFeedbackBubbleIcon');
	if(icon != null)
    	icon.style.visibility = 'hidden';
	e.style.display = 'block';
}

function trimString(sInString) 
{
	sInString = sInString.replace( /^\s+/g, "" );// strip leading
	return sInString.replace( /\s+$/g, "" );// strip trailing
}

function sendFeedback()
{
	var e = document.getElementById('feedbackTextBox');
	var eSenderName = document.getElementById('SenderName');
	var eEmail = document.getElementById('SenderEmail');

    var msg = new String(e.value);
	if(msg.length > 7000)
	    msg = msg.substr(0, 7000);

    var sSenderName = new String(eSenderName.value);
    var sEmail = new String(eEmail.value);
	
	if( oUniversalFeedbackData )
	{
	    oUniversalFeedbackData.Email = eEmail.value;
	    oUniversalFeedbackData.SenderFirstName = eSenderName.value;
	    oUniversalFeedbackData.SenderLastName = "";
	}
	
	submitSurvey(msg, e, sSenderName, sEmail);
}

function changeAnchorName()
{
	if( oUniversalFeedbackData )
	{
		var divAnchor = document.getElementById('divSuggestionAnchorElement');
	    divAnchor.innerHTML = '<STRONG>Thank You!</STRONG>';
		//var anchor = document.getElementById('divSuggestionAnchorElement');
		//anchor.outerHTML = '<STRONG>Thank You!</STRONG>';
		//anchor.href= "javascript:";
		//anchor.title = "Your comments have been sent to LoopNet. Thanks!"
	}
}

function submitSurvey(sAnswer, txtBox, sSenderName, sEmail)
{
	if (trimString(sAnswer) + "" == "")
	{
		alert('Please enter a response.');
		return;
	}
	
	if(trimString(sEmail) == "")
	{
		alert('Please enter your email address.');
		return;
	}
	
    var re = /^[\w-']+(?:\.[\w-']+)*@(?:[\w-]+\.)+[a-zA-Z]{2,7}$/;
	if(sEmail.match(re) == null)
	{
	    alert('Please enter a valid email address.');
	    return;
	}
	
	if(trimString(sAnswer) == "Provide your feedback here.")
	{
		alert('Please enter a response.');
		return;
	}
	
	if( oUniversalFeedbackData )
	{
		try
		{
			LogSurvey( sAnswer, sSenderName, sEmail );
			
			var sXml = "<PFRequestData>"+ oUniversalFeedbackData.generateEmail( sAnswer ) +"</PFRequestData>";
			RemoteAJAXCall(oUniversalFeedbackData.onRemoteAJAXComplete, '/xNet/MainSite/WebServices/Email/Email.asmx', sXml, 'SendUniversalFeedbackEmail', 'http://www.loopnet.com/EmailServices', -1);
			closeFeedback();
			txtBox.value = "Sending...";
		}
		catch( e )
		{
			alert('Sorry but your message could not be sent.  Please try again later or email us directly');
		}
	}
}

function replaceSpecialChar(sInput)
{
    while(sInput.match("&") !=null)
        sInput = sInput.replace("&", "");
    while(sInput.match("<") !=null)
        sInput = sInput.replace("<", "&lt;");
    while(sInput.match(">") !=null)
        sInput = sInput.replace(">", "&gt;");
    while(sInput.match("\"") !=null)
	    sInput = sInput.replace("\"", "&quot;");
    while(sInput.match("'") !=null)
	    sInput = sInput.replace("'", "&apos;");

	return sInput
}

function LogSurvey( msg, SenderName, Email, surveyId, interceptTypeId)
{
    //Set default surveyId for 'Contact Us' survey
    if(surveyId == null)
    {
        surveyId = 110;
    }
    
    //Set default interceptTypeId for 'Contact Us' survey
    if(interceptTypeId == null)
    {
        interceptTypeId = 80;
    }

	if(oUniversalFeedbackData)
	{
		try
		{
		
		    SenderName = replaceSpecialChar(SenderName);
		    Email = replaceSpecialChar(Email);
			//if( parseInt(oUniversalFeedbackData.AID) > 2)
			//{
			var sSurvey = '<Survey SurveyID="' + surveyId + '" InterceptTypeID="' + interceptTypeId + '" ';			
			var ShortURL = (oUniversalFeedbackData.Url.length > 254)?oUniversalFeedbackData.Url.substr(0,254):oUniversalFeedbackData.Url;
			
			if(SenderName != null && Email != null)
			    sSurvey += 'SenderName="' + SenderName + '" Email="' + Email + '" SessionInfoID="' + oUniversalFeedbackData.SessionInfoID + '" FullUrl="' + ShortURL + '">'
			else
			    sSurvey += '">'
			var sXml = '<PFRequestData><Intercept AssociateID="' + oUniversalFeedbackData.AID + '" InterceptTypeID="' + interceptTypeId + '"/>' + sSurvey + '<SurveyQuestionList><SurveyQuestion QuestionTypeID="-1"><SurveyQuestionText><![CDATA[Universal Feedback comments]]></SurveyQuestionText><SurveyAnswerList><SurveyAnswer AnswerTypeID="-1"><SurveyAnswerText><![CDATA[Comments]]></SurveyAnswerText><AssociateResponse><![CDATA['+ msg +']]></AssociateResponse></SurveyAnswer></SurveyAnswerList></SurveyQuestion></SurveyQuestionList></Survey></PFRequestData>'	
			RemoteAJAXCall(null, '/xNet/MainSite/WebServices/Surveys/Survey.asmx', sXml,'ProcessSurvey','http://www.loopnet.com/WebServices', -1);
			//alert("RemoteAJAXCall done:" + sXml);
			//}
		}catch( e )
		{
			alert('Sorry but your message could not be sent.  Please try again later or email us directly');
		}
	}
}

function LogActionCode(ac, guid)
{
	var sXml = '<PFRequestData BypassLogServiceStats="Yes" PageExecutionGuid="' + guid + '" ActionCode="' + ac + '"></PFRequestData>';
	RemoteAJAXCall(null, '/xNet/MainSite/WebServices/WebStatistics/RequestInfo.asmx', sXml,'UpdateActionCode','http://www.loopnet.com/WebServices', -1);
}

function UniversalFeedBackEmail( mode )
{
	this.MODE = mode;
	this.ANCHOR = null;
	
	this.SenderFirstName = "";
	this.SenderLastName = "";
	this.SessionInfoID = "";
	this.Url = "";
	this.AID = "";
	this.PhoneNumber = "";
	this.Email = "";
	this.Additional = "";
	this.Comments = "";
	this.UserAgent = "";
	this.PageExecutionGuid = "";
	this.Recipient = "";
}

UniversalFeedBackEmail.prototype.generateEmail = function( msg )
{
	var emailXML = "<Email><Sender>"+this.SenderFirstName + " "+ this.SenderLastName +"</Sender>";
	emailXML+="<SenderAddress>"+this.Email+"</SenderAddress>";
	emailXML+="<RecipientAddress>"+ this.Recipient +"</RecipientAddress>";
	emailXML+="<Subject><![CDATA[Feedback: "+ this.Url +"]]></Subject>";
	emailXML+="<Message><![CDATA["+ this.generateBody( msg ) +"]]></Message></Email>";
	
	return emailXML;
}

UniversalFeedBackEmail.prototype.generateBody = function( msg )
{
	var NL = "<BR />";
	var msgBody = "<B>URL</B>: " + this.Url + NL;
	msgBody+= "<B>Comments</B>: " + msg + NL;
	if(this.SenderFirstName != "" && this.SenderLastName != "")
		msgBody+= "<B>From</B>: "+ this.SenderFirstName + " " + this.SenderLastName + NL;
	if( parseInt(this.AID) > 0)
		msgBody+= "<B>AssociateID</B>: "+ this.AID + NL;
	if(this.PhoneNumber != "()-" && this.PhoneNumber != "")
		msgBody+= "<B>Phone</B>: "+ this.PhoneNumber + NL;
	if(this.Email != "")
	 msgBody+= "<B>Email</B>: "+ this.Email + NL;
	msgBody+= "<B>Additional User Information</B>: "+ this.UserAgent + NL +"<B>Screen Settings</B>: " + screen.width + "x" + screen.height + NL + NL;
	
	return msgBody;
}

UniversalFeedBackEmail.prototype.onRemoteAJAXComplete = function( response )
{
	if (response.readyState == 4)
	{
		if (response.status == 200)
		{
			LogActionCode(91, oUniversalFeedbackData.PageExecutionGuid)
			closeFeedback();
			changeAnchorName();
		}
	}	
}


