// the first bits are supporting tools

// truncates long strings
function truncate(long) {
	var short = '';
   	for(var i=0; i<100; i++) { short += long.charAt(i); }
    if (long.length > 100) { short += "..."}
    return short;
}

// cleans dirty input vars
function clean(dirty) {
	var clean = '';
   	for(var i=0; i<(dirty.length); i++){
		if (dirty.charAt(i) in {'>':'', '<':'', '\'':''}) { }
		else { clean += dirty.charAt(i); }
    }
    return clean;
}

// get a var from a url
function getURLVar(urlVarName) {
	var urlHalves = String(document.location).toLowerCase().split('?');
	var urlVarValue = '';
	if(urlHalves[1]){
		var urlVars = urlHalves[1].split('&');
		for(var i=0; i<=(urlVars.length); i++){
			if(urlVars[i]){
            	var urlVarPair = urlVars[i].split('=');
            	if (urlVarPair[0] && urlVarPair[0] == urlVarName.toLowerCase()) {
					urlVarValue = urlVarPair[1];
            	}
			}
		}
	}
   return urlVarValue;
}

// get a var from a pa:ir
function getPair(pairName) {
	var pairHalves = String(pairName).split(':');
	return pairHalves;
}


// get number of pages
function getNumPages(pageArr) {
	return Math.ceil(pageArr['NumberOfSearchResults']/pageArr['NumberPerPage']);
}

// get page links
function getPageLinks(thisPage, numPages) {
	var pageLinks = '';
	for(var i=1; i<= numPages ; i++){
		if (i == thisPage) { pageLinks += i+' '; }
		else { pageLinks += '<a href="#searchresults" onclick="return formSubmit_search('+i+');">'+i+'</a> '; }
	}
	if (i>2) { return pageLinks; } else { return ''; }
}

// simulate form return on enter
function onEnter(key) {
	var keyCode = null;
	if( key.which ) { keyCode = key.which; } else if( key.keyCode ) { keyCode = key.keyCode; }
	if( keyCode == 13 ) { formSubmit_search(1); return false; }
	return true;
}

// page displays and form submits

function loadit_search() {
	var subjectSearchUser = clean(getURLVar("uid"));
	var filter = document.getElementById('filter');
	if  (clean(getURLVar("TYPE")) > 0){ var TYPE = clean(getURLVar("TYPE")); } else { var TYPE = 0; }
	if (TYPE == 2){ filter.style.display = 'none'; } else { filter.style.display = 'inline'; }
	var mainContent = '';
	mainContent += "<div class='PersonaSearchTypes'><h3>What do you want to search?</h3><ul>";
	var TYPES = new Array();
	TYPES[0] = "Handle";
	TYPES[1] = "Name";
	TYPES[2] = "Comments";
	TYPES[3] = "Company";
	TYPES[4] = "Dealership Brands";
	TYPES[5] = "Title";
	TYPES[6] = "Responsibility";
	TYPES[7] = "Location";
	TYPES[8] = "Education";
	TYPES[9] = "Previous Companies";
	TYPES[10] = "Professional Interests";
	TYPES[11] = "Industry Groups";
	TYPES[12] = "Description";
	TYPES[13] = "Personal Interests";

	for (i=0;i<TYPES.length;i++) { 
		if  (TYPE==i){ mainContent += "<li class='selected'>"+TYPES[i]+"</li>"; }
		else if (i == 12) {mainContent += "<li class='last'><a href='/section/sitelife_profile?uid=" + subjectSearchUser + "&plckPersonaPage=PersonaSearch&TYPE="+i+"'>"+TYPES[i]+"</a></li>"; }
		else { mainContent += "<li><a href='/section/sitelife_profile?uid=" + subjectSearchUser + "&plckPersonaPage=PersonaSearch&TYPE="+i+"'>"+TYPES[i]+"</a></li>"; }
	}
	mainContent += "</ul></div>";
	// display links
	var displayResponse = document.getElementById('displayResponse');
	displayResponse.innerHTML= mainContent;
}


function formSubmit_search(PAGE) {
	if  (clean(getURLVar("TYPE")) > 0){ var TYPE = clean(getURLVar("TYPE")); } else { var TYPE = 0; }
	// form validation
	if (document.search.key.value == '') { alert('Please include a search term'); }
	else { 
		function displaySearch(responseBatch) { 
			var mainContent = '';
			var results = responseBatch.Responses[0]['SearchResult']['SearchResults'];
			if (TYPE == 2){
				// display comments
					var commentLinkBatch = new RequestBatch();
				for (i = 0; i < results.length; i++) {
					commentLinkBatch.AddToRequest(new ArticleKey(results[i].CommentedOnKey));
					mainContent += "<div class='PersonaSearchResultsItem'><img src='"+results[i]['Author']['AvatarPhotoUrl']+"'>";
					mainContent += "<h2>";
					mainContent += "<a id='commentLinkReplace"+results[i].CommentedOnKey+"' href='/section/sitelife_profile?uid="+results[i]['Author']['UserKey']['Key']+"'>" + results[i]['Author']['DisplayName'] + "</a>";
					mainContent += "</h2>";
					mainContent += "<p>" + truncate(results[i]['CommentBody'])+"<br style='clear:both;' /></p></div>";
				}
				commentLinkBatch.BeginRequest(daapiProcessUrl, commentLinkCallBack);
			}
			else {
				// display users
				for (i = 0; i < results.length; i++) { 
					mainContent += "<div class='PersonaSearchResultsItem'><img src='"+results[i]['AvatarPhotoUrl']+"'>";
					mainContent += "<h2><a href='/section/sitelife_profile?uid="+results[i]['UserKey']['Key']+"'>"+results[i]['DisplayName']+"</a></h2>";
					if (results[i]['AboutMe'].length > 0){ mainContent += "<p>" + truncate(results[i]['AboutMe']) + "<br style='clear:both;' /></p>"; } else {mainContent+= "<p><br style='clear:both;' /></p>"}
					mainContent += "</div>";
				}
			}
			if (mainContent.length == 0){ mainContent = "<h3>Your search returned no results</h3>"; } else { mainContent = "<div class='PersonaSearchResults'><a name='searchresults'></a><h3>Your search returned " + responseBatch.Responses[0].SearchResult.NumberOfSearchResults + " items</h3><h1>Search results:</h1>"+mainContent+"<br style='clear:both;' /></div>"; }
			var displayResponse2 = document.getElementById('displayResponse2');
			displayResponse2.innerHTML= mainContent;
			var numPages = getNumPages(responseBatch.Responses[0]['SearchResult']);
			var pageLinks = getPageLinks(PAGE, numPages);
			// display pagination
			var displayResponse3 = document.getElementById('displayResponse3');
			displayResponse3.innerHTML = pageLinks;

		} 
		var requestBatch = new RequestBatch();
		
		// test for search types 
		if (TYPE == 0) { var key = "DisplayName:"; var stype = "User"; }
		else if (TYPE == 1) { var key = "601E255E-9E50-46aa-AC3E-54A841597313:"; var stype = "User"; }
		else if (TYPE == 2) { var key = ""; var stype = "Comment"; }
		else if (TYPE == 3) { var key = "601E255E-9E50-46aa-AC3E-54A841597320:"; var stype = "User"; }
		else if (TYPE == 4) { var key = "601E255E-9E50-46aa-AC3E-54B841597315:"; var stype = "User"; }
		else if (TYPE == 5) { var key = "601E255E-9E50-46aa-AC3E-54A841597315:"; var stype = "User"; }
		else if (TYPE == 6) { var key = "601E255E-9E50-46aa-AC3E-54A841597316:"; var stype = "User"; }
		else if (TYPE == 7) { var key = "Location:"; var stype = "User"; }
		else if (TYPE == 8) { var key = "601E255E-9E50-46aa-AC3E-54A841597300:"; var stype = "User"; }
		else if (TYPE == 9) { var key = "601E255E-9E50-46aa-AC3E-54A841597323:"; var stype = "User"; }
		else if (TYPE == 10) { var key = "601E255E-9E50-46aa-AC3E-54A841597301:"; var stype = "User"; }
		else if (TYPE == 11) { var key = "601E255E-9E50-46aa-AC3E-54A841597303:"; var stype = "User"; }
		else if (TYPE == 12) { var key = "AboutMe:"; var stype = "User"; }
		else if (TYPE == 13) { var key = "601E255E-9E50-46aa-AC3E-54A841597302:"; var stype = "User"; }
		
		key += document.search.key.value;
		// test for search filters
		if (document.search.businesslist.value != 0) { key += " AND 601E255E-9E50-46aa-AC3E-54A841597312:"+document.search.businesslist.value; }
		if (document.search.personalinterests.value != 0) { key += " AND "+getPair(document.search.personalinterests.value)[0]+":"+getPair(document.search.personalinterests.value)[1]; }
		// perform search
		requestBatch.AddToRequest(new SearchAction(stype, key, 10, PAGE));
		requestBatch.BeginRequest(daapiProcessUrl, displaySearch); 
	}
}

function commentLinkCallBack(responseBatch) {
	for (i = 0; i < responseBatch.Responses.length; i++) {
		var commentedArticle = responseBatch.Responses[i].Article;
		var newLinkId = "commentLinkReplace" + commentedArticle.ArticleKey.Key;
		var newLink = commentedArticle.PageUrl;
		var commentLinkReplace = document.getElementById(newLinkId);
		commentLinkReplace.href = newLink;
	}
}
