/*******************************/
/***** Interaction Variables ***/
/*******************************/
var ctSelf="1";
var ctCommunity="2";
var hhNot_a_Home_Help_article="0";
var hhHome_Help_article="1";
var stKeyword="1";
var stUser_Defined_Search="2";
var stTopic="3"; //TODO: verify var name from XML file
var intFAQ_List_Presented="1";
var intFAQ_List_PresentedIsActive=true;
var intTOC_List_Presented="2";
var intTOC_List_PresentedIsActive=true;
var intSearch_executed="3";
var intSearch_executedIsActive=true;
var intSelf_Care_Article_Viewed="4";
var intSelf_Care_Article_ViewedIsActive=true;
var intSelf_Care_Article_Printed="5";
var intSelf_Care_Article_PrintedIsActive=true;
var intRating_submitted="6";
var intRating_submittedIsActive=true;
var intFeedback_Submitted="7";
var intFeedback_SubmittedIsActive=true;
var intCommunity_Thread_Viewed="8";
var intCommunity_Thread_ViewedIsActive=true;
var intCommunity_Thread_Printed="9";
var intCommunity_Thread_PrintedIsActive=true;
var intGet_More_Help="10";
var intGet_More_HelpIsActive=true;
var intUser_Sent_to_Community="11";
var intUser_Sent_to_CommunityIsActive=true;
var intUser_Sent_to_Support="12";
var intUser_Sent_to_SupportIsActive=true;
var intUser_Closes_Help="13";
var intUser_Closes_HelpIsActive=true;
var intBad_Link_Found="14";
var intBad_Link_FoundIsActive=true;


/*******************************/
/***** Logging Variables *****/
/*******************************/
var _feedbackDestURL = _appPath + "/message.asp"; //URL for feedback XMLHTTP POST
var _xmlPostID = "msnportallivehelpfeed"; //Report suite ID for feedback
s.trackExternalLinks= false;
//Static logging vars
s.charSet	= "UTF-8"; //hard-coded
s.prop3		= _guid; //GUID from wlmap.js
s.prop5		= _mkt; //Market - From wlmap.js
s.prop7		= (IsHC()) ? 2 : 1; //Layout
s.prop43	= _env; //Environment

/*******************************/
/***** Other Consts   **********/
/*******************************/
var CommSearchLogTimeout = 5000; // 5 seconds
var InteractionDelay = 2000; // 2 seconds
var SearchLogArrayLen = 5;
var SearchLogCharLen = 25;
var CommThreadArrayLen = 2;
var CommThreadCharLen = 100;
var FeedbackLogArrayLen = 34;
var FeedbackLogCharLen = 25;

/*******************************/
/***** MapLog Object **********/
/*******************************/
function MapLog() {}


//Class Methods
MapLog.CreateXmlHttpPost = function(content) 
{
	//Get the request object from wlmap.js
	var req = Req.getRequest();
	if (req != null)
	{	//Callback for request
		req.onreadystatechange = function(){}
		//Open the post request
		try{req.open('POST', _feedbackDestURL, false);
			req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		}
		catch(e){alert(e);} // TODO: handle error or ???
		//Send the request
		req.send(escape(content));
	}
	else
	{
		alert("Request Object is null"); // TODO: handle error or ???
	}
}

//Show log type and data sent
MapLog.ShowDebugData = function(p_type)
{
	alert(p_type + ":\r\n\r\n" + 
	"s.charSet: " + s.charSet + "\r\n" +
	"s.pageName: " + s.pageName + "\r\n" +
	"s.pageType: " + s.pageType + "\r\n" +
	"s.prop3 GUID: " + s.prop3 + "\r\n" +
	"s.prop4 TimeStamp: " + s.prop4 + "\r\n" +
	"s.prop5 Market: " + s.prop5 + "\r\n" +
	"s.prop6 Interaction: " + s.prop6 + "\r\n" +
	"s.prop7 Layout: " + s.prop7 + "\r\n" +
	"s.prop9 Project: " + s.prop9 + "\r\n" +
	"s.prop10 ContentType: " + s.prop10 + "\r\n" +
	"s.prop11  File name: " + s.prop11 + "\r\n" +
	"s.prop32 Search text 1: " + s.prop32 + "\r\n" +
	"s.prop33 Search text 2: " + s.prop33 + "\r\n" +
	"s.prop34 Search text 3: " + s.prop34 + "\r\n" +
	"s.prop35 Search text 4: " + s.prop35 + "\r\n" +
	"s.prop36 Search text 5: " + s.prop36 + "\r\n" +
	"s.prop37 Thread name 1: " + s.prop37 + "\r\n" +
	"s.prop38 Thread name 2: " + s.prop38 + "\r\n" +
	"s.prop39 Rating: " + s.prop39 + "\r\n" +
	"s.prop40 Search type: " + s.prop40 + "\r\n" +
	"s.prop41 Self Care count (search results): " + s.prop41 + "\r\n" +
	"s.prop42 Community count (search results): " + s.prop42 + "\r\n" +
	"s.prop43 Environment: " + s.prop43 + "\r\n" +
	"s.prop44 Home Help Article Indicator: " + s.prop44 + "\r\n" +
	"s.prop45 Page name for export: " + s.prop45 + "\r\n" +
	"s.linkInternalFilters : " + s.linkInternalFilters + "\r\n" + 
	"s.linkLeaveQueryString: " + s.linkLeaveQueryString + "\r\n");
}

MapLog.ClearRenderAndClickVars = function()
{
	//alert("ClearRenderAndClickVars");
	//Set all non-static variables to the empty string
	s.pageName= "";
	s.pageType	= "";
	s.prop4		= ""; //Timestamp
	s.prop6		= ""; //Interaction
	s.prop9		= ""; //Project
	s.prop10	= ""; //ContentType
	s.prop11	= ""; // File name
	s.prop32	= ""; //Search text 1
	s.prop33	= ""; //Search text 2
	s.prop34	= ""; //Search text 3
	s.prop35	= ""; //Search text 4
	s.prop36	= ""; //Search text 5
	s.prop37	= ""; //Community thread name, part 1
	s.prop38	= ""; //Community thread name, part 2
	s.prop39	= "" //Self Care rating
	s.prop40	= "" //Self Care search type
	s.prop41	= "" //Self Care count (search results)
	s.prop42	= "" //Community count (search results)
	s.prop44	= ""; //Home Help Article Indicator
	s.prop45	= ""; //Page name for exporting
}
//Call the above f(x) onload to init vars
MapLog.ClearRenderAndClickVars();


MapLog.LogRenderData = function(p_type)
{
	//Set the timestamp var
	dt = new Date();
	s.prop4 = dt.getTime();
	//Trim fields that could be too long
	if (s.pageName.length > 100) { s.pageName = s.pageName.substr(0,100) }
	if (s.prop11.length > 100) { s.prop11 = s.prop11.substr(0,100) }
	if (s.pageName.length > 0) { s.prop45 = s.pageName } //will be zero for error page
	if (s.prop45.length > 100) { s.prop45 = s.prop45.substr(0,100) }
	//Log the results with the Omniture-provided code
	//MapLog.ShowDebugData(p_type); //DEBUG
	try {var s_code= s.t(); //try/catch to handle unknown Omniture errors
	}catch(e){}; //TODO: Determine, log this error
	MapLog.ClearRenderAndClickVars();
	//Clear vars

}

MapLog.CreateQueryTextArray = function(p_q)
{
	var fbArr = MapLog.StrToArr(p_q,SearchLogCharLen,SearchLogArrayLen);

	s.prop32	= fbArr[0]; //Search text 1
	s.prop33	= fbArr[1]; //Search text 2
	s.prop34	= fbArr[2]; //Search text 3
	s.prop35	= fbArr[3]; //Search text 4
	s.prop36	= fbArr[4]; //Search text 5
}

MapLog.StrToArr = function(p_str,p_charLen,p_arrLen)
{
	if (p_str.length > p_charLen*p_arrLen) p_str = p_str.substring(0,p_charLen*p_arrLen)
	var fbArr = new Array(p_arrLen);
	for (var i=0; i < p_arrLen;i++){
		fbArr[i] = (i <= p_arrLen) ? p_str.substring(i*p_charLen,(i+1)*p_charLen) : "";
	}
	return fbArr;

}

MapLog.LogFeedback = function(feed)
{
	var fbArr = MapLog.StrToArr(feed,FeedbackLogCharLen,FeedbackLogArrayLen);
	var dt = new Date();
	var feedbackXml = 	"<?xml version= 1.0 encoding= UTF-8?>"
						+"<request>"
						+"<sc_xml_ver>1.0</sc_xml_ver>"
						+"<reportsuiteid>" + _xmlPostID + "</reportsuiteid>"
						+"<visitorid>" + s.prop3 + "</visitorid>" //set to GUID
						+"<pageName>" + s.pageName + "</pageName>"
						+"<pageurl>" + s.pageURL + "</pageurl>"
						+"<prop3>" + s.prop3 + "</prop3>"
						+"<prop4>" + dt.getTime() + "</prop4>"
						+"<prop5>" + s.prop5 + "</prop5>"
						+"<prop6>" + intFeedback_Submitted + "</prop6>"
						+"<prop11>" + s.prop11 + "</prop11>"
						+"<prop39>" + s.prop39 + "</prop39>"
						+"<prop43>" + s.prop43 + "</prop43>"
						+"<prop45>" + s.pageName + "</prop45>"
						+MapLog.AddEvars(fbArr)
						+"</request>"
	//alert(feedbackXml);
	MapLog.CreateXmlHttpPost(feedbackXml); // TODO: Turn on for logging
}

MapLog.AddEvars = function(fbArr)
{
	var ret = "";
	for(var i=0;i<fbArr.length;i++)
	{
		ret += "<evar" + (i+3) + ">" + fbArr[i] + "</evar" + (i+3) + ">";
	}
	return ret;
}


MapLog.FaqListPresented = function()
{
	if (intFAQ_List_PresentedIsActive){
		//Use a timeout so that this interaction does not interfere with the right-side interaction
		window.setTimeout("MapLog.LogFaq()",InteractionDelay)	
	}
}

MapLog.LogFaq = function()
{
		//Set appropriate vars
		var proj = Proj.getCurrentProject();
		s.pageName= proj + ":" + s.prop5 + ":FAQ";
		s.prop6		= intFAQ_List_Presented; //Interaction
		s.prop9		= proj; //Project
		//Log the data
		MapLog.LogRenderData("FaqListPresented");
}

MapLog.TocListPresented = function(p_topic,p_proj,p_type)
{
	if (intTOC_List_PresentedIsActive)
	{
		//Set appropriate vars
		if (p_type.length == 0)
		{
			s.pageName= p_proj + ":" + s.prop5 + ":" + p_topic;
		}
		else
		{
			s.pageName="";
		}
		s.pageType	= p_type;
		s.prop6		= intTOC_List_Presented; //Interaction
		s.prop9		= p_proj; //Project
		//Log the data
		MapLog.LogRenderData("TocListPresented");
	}
}

var st_p_qt,st_p_q,st_len,st_tPN,st_tP6,st_tP9;

MapLog.SearchExecuted = function(p_qt,p_q,len)
{
	if (intSearch_executedIsActive)
	{
		//Create temp vars since this is an async log
		st_p_qt = p_qt;
		st_p_q = decodeURIComponent(p_q);
		st_len = len;
		st_tPN = Proj.getCurrentProject() + ":" + s.prop5 + ":Search";
		st_tP6 = intSearch_executed; //Interaction
		st_tP9 = Proj.getCurrentProject(); //Project
		switch(p_qt)
		{
			case 'search':
				st_p_qt = stUser_Defined_Search;
				break;
			case 'keyword':
				st_p_qt = stKeyword;
				break;
			case 'topic':
				st_p_qt = stTopic;
				break;
		}
		
		//Wait for communty results to come back before logging
		if (Comm.exists())
		{
			window.setTimeout("MapLog.LogSearch()",CommSearchLogTimeout)	
		}
		else
		{
			window.setTimeout("MapLog.LogSearch()",InteractionDelay)	
		}	
	}
}

MapLog.LogSearch = function()
{
	s.pageName= st_tPN;
	s.prop6	= st_tP6;
	s.prop9	= st_tP9;
	s.prop40 = st_p_qt;
	MapLog.CreateQueryTextArray(st_p_q);
	s.prop41 = (st_len == 0) ? '0' : st_len ;
	s.prop42 = (CommSearch.aThreadIds == null) ? "" : (CommSearch.aThreadIds.length == 0) ? '0' : CommSearch.aThreadIds.length;
	//Log the data
	MapLog.LogRenderData("SearchExecuted");


}

MapLog.SelfCareArticleViewed = function(p_topic,p_proj)
{
	if (intSelf_Care_Article_ViewedIsActive)
	{
		s.pageName= p_proj + ":" + s.prop5 + ":" + p_topic;
		s.prop6		= intSelf_Care_Article_Viewed; //Interaction
		s.prop9		= p_proj; //Project
		s.prop10	= ctSelf; //ContentType
		s.prop11	= p_topic; // File name
		if (p_topic == "welcome.asp") //TODO: verify this logic
		{
			s.prop44	= hhHome_Help_article;
		}
		else
		{
			s.prop44	= hhNot_a_Home_Help_article;
		}
		//Log the data
		MapLog.LogRenderData("SelfCareArticleViewed");
	}
}

MapLog.SelfCareArticleError = function(p_topic,p_proj)
{
	if (intBad_Link_FoundIsActive)
	{
		s.pageType= "errorPage"; // if set, pageName must be blank
		s.prop6		= intBad_Link_Found; //Interaction
		s.prop9		= p_proj; //Project
		s.prop10	= ctSelf; //ContentType
		s.prop11	= p_topic; // File name
		s.prop44	= hhNot_a_Home_Help_article; //Missing home help is an error handled elsewhere
		s.prop45 = p_proj + ":" + s.prop5 + ":" + p_topic;
		//Log the data
		MapLog.LogRenderData("SelfCareArticleError");
	}
}



MapLog.SelfCareArticlePrinted = function(p_tpc,p_proj)
{
	if (intSelf_Care_Article_PrintedIsActive)
	{
		//Set appropriate vars
		s.pageName= p_proj + ":" + s.prop5 + ":" + p_tpc;
		s.pageType	= "";
		s.prop6		= intSelf_Care_Article_Printed; //Interaction
		s.prop9		= p_proj; //Project
		s.prop10	= ctSelf; //ContentType
		s.prop11	= p_tpc; // File name

		//Log the data
		MapLog.LogRenderData("SelfCareArticlePrinted");
	}
}

MapLog.RatingsSubmitted = function(p_tpc,p_proj,r)
{
	if (intRating_submittedIsActive)
	{
		//Set appropriate vars
		s.pageName= p_proj + ":" + s.prop5 + ":" + p_tpc;
		s.pageType	= "";
		s.prop6		= intRating_submitted; //Interaction
		s.prop9		= p_proj; //Project
		s.prop10	= ctSelf; //ContentType
		s.prop11	= p_tpc; // File name
		s.prop39    = (r == 0) ? '0' : r ; //Rating
		//Log the data
		MapLog.LogRenderData("RatingsSubmitted");
	}
}

MapLog.FeedbackSubmitted = function(p_tpc,p_proj,feed,r)
{
	if (intFeedback_SubmittedIsActive)
	{
		//Set appropriate vars
		s.pageName= p_proj + ":" + s.prop5 + ":" + p_tpc;
		s.pageType	= "";
		s.prop6		= intFeedback_Submitted; //Interaction
		s.prop9		= p_proj; //Project
		s.prop10	= ctSelf; //ContentType
		s.prop11	= p_tpc; // File name
		s.prop39    = (r == 0) ? '0' : r ; //Rating

		//Log the data
		MapLog.LogFeedback(feed);
	}
}

MapLog.CommunityThreadViewed = function(p_tid,p_type,p_tname)
{
	if (intCommunity_Thread_ViewedIsActive)
	{
		//Set appropriate vars
		var proj = Proj.getCurrentProject();
		//Set appropriate vars
		if (p_type.length == 0)
		{
			s.pageName= proj + ":" + s.prop5 + ":" + p_tid + ":" + p_tname; 
		}
		else
		{
			s.pageName="";
		}
		s.prop6		= intCommunity_Thread_Viewed; //Interaction
		s.prop9		= proj; //Project
		s.prop10	= ctCommunity; //ContentType
		s.prop11	= p_tid; // File name
		var tNameArr = MapLog.StrToArr(p_tname,CommThreadCharLen,CommThreadArrayLen);
		s.prop37	= tNameArr[0]; //Community thread name, part 1
		s.prop38	= tNameArr[1]; //Community thread name, part 2
		//Log the data
		MapLog.LogRenderData("CommunityThreadViewed");
	}
}

MapLog.CommunityThreadPrinted = function(p_tid,p_tname)
{
	if (intCommunity_Thread_PrintedIsActive)
	{
		//Set appropriate vars
		var proj = Proj.getCurrentProject();
		s.pageName= proj + ":" + s.prop5 + ":" + p_tid + ":" + p_tname; 
		s.prop6		= intCommunity_Thread_Printed; //Interaction
		s.prop9		= proj; //Project
		s.prop10	= ctCommunity; //ContentType
		s.prop11	= p_tname; // thread name
		var tNameArr = MapLog.StrToArr(p_tname,CommThreadCharLen,CommThreadArrayLen);
		s.prop37	= tNameArr[0]; //Community thread name, part 1
		s.prop38	= tNameArr[1]; //Community thread name, part 2

		//Log the data
		MapLog.LogRenderData("CommunityThreadPrinted");
	}
}

MapLog.GetMoreHelp = function(p_prj)
{
	if (intGet_More_HelpIsActive)
	{
		//Set appropriate vars
		s.pageName= p_prj + ":" + s.prop5 + ":GetMoreHelp";

		s.prop6		= intGet_More_Help; //Interaction
		s.prop9		= p_prj; //Project
		s.prop11	= HT.previous;  //Filename
		//Log the data
		MapLog.LogRenderData("GetMoreHelp");
	}
}

MapLog.UserSentToCommunity = function()
{
	if (intUser_Sent_to_CommunityIsActive)
	{
		//Set appropriate vars
		var proj = Proj.getCurrentProject();
		s.pageName= proj + ":" + s.prop5 + ":UserSentToCommunity";
		s.prop6		= intUser_Sent_to_Community; //Interaction
		s.prop9		= proj; //Project
		s.prop11	= HT.previous;  //Filename

		//Log the data
		MapLog.LogRenderData("UserSentToCommunity");
	}
}

MapLog.UserSentToSupport = function()
{
	if (intUser_Sent_to_SupportIsActive)
	{
		//Set appropriate vars
		var proj = Proj.getCurrentProject();
		s.pageName= proj + ":" + s.prop5 + ":UserSentToSupport";
		s.prop6		= intUser_Sent_to_Support; //Interaction
		s.prop9		= proj; //Project
		s.prop11	= HT.previous; //Filename

		//Log the data
		MapLog.LogRenderData("UserSentToSupport");
	}
}

MapLog.UserClosesHelp = function()
{
	if (intUser_Closes_HelpIsActive)
	{
		//Set appropriate vars
		var proj = Proj.getCurrentProject();
		s.pageName= proj + ":" + s.prop5 + ":UserClosesHelp";
		s.prop6		= intUser_Closes_Help; //Interaction
		s.prop9		= proj; //Project

		//Log the data
		MapLog.LogRenderData("UserClosesHelp");
	}
}

