﻿jQuery(document).ready(function () {
    jQuery('#Loading').hide();
    toggleTech();
    headlinks();
    buildResearcher();
    getDepartments();
    getFocusAreas();
    jQuery("form").submit(function (e) {
        jQuery('#Loading').hide();
        e.preventDefault();

        if (jQuery('#search-content').length != 0 && jQuery("input:text").val() != "") {
            SearchbyKeyword();
            return false;
        }
       
    });





});


/**************START COOKIE FUNCTIONS *******************/

function setCookie(name, value, expires, path, domain, secure) {
	var curCookie = name + "=" + escape(value) +
	  ((expires) ? "; expires=" + expires : "") +
	  ((path) ? "; path=" + path : "") +
	  ((domain) ? "; domain=" + domain : "") +
	  ((secure) ? "; secure" : "");
	document.cookie = curCookie;
}

function getCookie(name) {
	var dc = document.cookie;
	var prefix = name + "=";
	var begin = dc.indexOf("; " + prefix);
	if (begin == -1) {
		begin = dc.indexOf(prefix);
		if (begin != 0) return null;
	} else
		begin += 2;
	var end = document.cookie.indexOf(";", begin);
	if (end == -1)
		end = dc.length;
	return unescape(dc.substring(begin + prefix.length, end));
}


function deleteCookie(name, path, domain) {
	if (getCookie(name)) {
		document.cookie = name + "=" +
	((path) ? "; path=" + path : "") +
	((domain) ? "; domain=" + domain : "") +
	"; expires=Thu, 01-Jan-70 00:00:01 GMT";
	}
}
function searchfromcookiestripper(value) {
	jQuery('#Loading').show();
	holder = value.split("%");
	categories = holder[1];
	subcategories = holder[3];
	keywords = holder[5];
	t = holder[7];

	jQuery.ajaxDotNet("search.asmx/SearchParams", {
		verb: "POST",
		data: { cats: categories, subs: subcategories, keys: keywords, type: t },
		success: function (obj) {
			searchBinds(obj.d);
			jQuery("#subh :checkbox").click(function () { updateResultsSub(); });
		}
	});
}





/************** END COOKIE FUNCTIONS *******************/


/************ START HEADLINKS AND TOGLE *****/


function gup(name) {
	name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
	var regexS = "[\\?&]" + name + "=([^&#]*)";
	var regex = new RegExp(regexS);
	var results = regex.exec(window.location.href);
	if (results == null)
		return "";
	else
		return results[1];
}

function headlinks() {
    jQuery("#tech").click(function () { toggleTech(); reset(); });
	jQuery("#rese").click(function () { toggleRese(); });


	var url = gup('go');

	switch (url) {
		case "tech":
			toggleTech();
			if (getCookie("ti_te_search") != null)
			{ searchfromcookiestripper(getCookie("ti_te_search")); }
			else { reset(); }
			break;
		case "rese":
			toggleRese();
			if (getCookie("ti_te_search") != null)
			{ searchfromcookiestripper(getCookie("ti_te_search")); }
			else { reset(); }
			break;
		default:
			toggleTech();
			if (getCookie("ti_te_search") != null)
			{ searchfromcookiestripper(getCookie("ti_te_search")); }
			else { reset(); }
			break;
	}
}
function toggleTech() {

	jQuery("#tech").removeClass("selected");
	jQuery("#rese").addClass("selected");
	jQuery("#tech-place-holder").show();
	jQuery("#rese-place-holder").hide();
}
function toggleRese() {
	jQuery("#rese").removeClass("selected");
	jQuery("#tech").addClass("selected");
	jQuery("#rese-place-holder").show();
	jQuery("#tech-place-holder").hide();
}
/************ END HEADLINKS AND TOGLE *****/
/************************* START TECH INIT FUNCTIONS **************/




function buildResearcher() {
  
    jQuery.ajaxDotNet("search.asmx/GetResearcherHTML", {
        verb: "GET",
        success: function (obj) {
            jQuery("#rese-place-holder").append(obj.d);
            bindDropdowns();
        },
        error: function (obj) {
            alert(obj.d);
        }
    });
}





function getCategories() {
	jQuery.ajaxDotNet("search.asmx/GetAllCategories", {
		verb: "GET",
		success: function (obj) {
		    var Category = JSON.parse(obj.d);
			CategoryCheckboxBuild(Category);
		}
	});
}


function getSubCategories() {
	jQuery.ajaxDotNet("search.asmx/GetAllSubCategories", {
		verb: "GET",
		success: function (obj) {
		    var SubCategory = JSON.parse(obj.d);
			SubCategoryCheckboxBuild(SubCategory);
		}
	});
}
function bindButtoms() {

    jQuery('#btn_cat').click(function () {   SearchbyCat(); });
    jQuery('#btn_sub').click(function () { SearchbySubCat(); });
    jQuery('#btn_key').click(function () { SearchbyKeyword(); });
    
}
/************************* START TECH INIT FUNCTIONS **************/

/************************* START RESE INIT FUNCTIONS **************/

function getDepartments() {

	jQuery.ajaxDotNet("search.asmx/GetDepartments", {
		verb: "GET",
		success: function (obj) {
		    var Departments = JSON.parse(obj.d);
			DepartmentDropdownBuild(Departments);
		}
	});
}
function getFocusAreas() {
	jQuery.ajaxDotNet("search.asmx/GetFocusAreas", {
		verb: "GET",
		success: function (obj) {
		    var FocusAreas = JSON.parse(obj.d);
			FocusAreaDropdownBuild(FocusAreas);
		}
	});

}

function bindDropdowns() {
	jQuery("#ListFocus").change(function () { getReseacherbyFocusArea(); });
	jQuery("#ListDepartment").change(function () { getReseacherbyDepartment(); });
	jQuery("#ListGroup").change(function () { getReseacherbyGroup(); });
}
/************************* END RESE INIT FUNCTIONS **************/

/**************** START HTML BUILDERS ****************/

/**********START TECH SEARCH****/
function SubCategoryCheckboxBuild(SubCategory) {
	jQuery('#subs').empty();
	for (i = 0; i < jQuery(SubCategory).length; i++) {
		jQuery('#subs').append("<p><input type='checkbox' name='subcat_' value=" + SubCategory[i].Id + ">" + SubCategory[i].Name + " (" + SubCategory[i].Total + ")</p>");
	}
	jQuery("#subh :checkbox").click(function () { updateResultsSub(); });
	jQuery('#Loading').hide();
}

function CategoryCheckboxBuild(Category) {
	for (x = 0; x < jQuery(Category).length; x++) {
		if (x % 2 == 0) { jQuery('#cats').append("<p class=\"lighter-check\"><input type='checkbox' name='cat_' value=" + Category[x].Id + ">" + Category[x].Name + " (" + Category[x].Total + ")</p>"); }
		else { { jQuery('#cats').append("<p class=\"darker-check\"><input type='checkbox' name='cat_' value=" + Category[x].Id + ">" + Category[x].Name + " (" + Category[x].Total + ")</p>"); } }


	}
	jQuery(":checkbox").click(function () { getNewTotalsSearch(); });
}
/**********END TECH SEARCH****/

/**********START TECH RESULTS****/
function SubCategoryResultsCheckboxBuild(SubCategory) {
	jQuery('#subh').empty();
	for (i = 0; i < jQuery(SubCategory).length; i++)
	{ jQuery('#subh').append("<div class=\"individual-results\"><span class=\"checkbox\"><input type=\"checkbox\" name=\"subcat_\" value=\"" + SubCategory[i].Id + "\" ></span><p>" + SubCategory[i].Name + "(" + SubCategory[i].Total + ")</p></div>"); }
	jQuery("#subh :checkbox").click(function () { updateResultsSub(); });
}

/**********END TECH RESULTS****/

/**********START RESE SEARCH****/
function DepartmentDropdownBuild(Departments) {

	jQuery("#ListDepartment").empty();
	jQuery("#ListDepartment").append("<option value=\"null\">Select One</option>");
	for (i = 0; i < jQuery(Departments).length; i++)
		jQuery("#ListDepartment").append("<option value=\"" + Departments[i].DepartmentId + "\">" + Departments[i].DepartmentName + "</option>");
}
function FocusAreaDropdownBuild(FocusAreas) {
	jQuery("#ListFocus").empty();
	jQuery("#ListFocus").append("<option value=\"null\">Select One</option>");
	for (i = 0; i < jQuery(FocusAreas).length; i++)
	{ jQuery("#ListFocus").append("<option value=\"" + FocusAreas[i].FocusAreaId + "\">" + FocusAreas[i].FocusAreaName + "</option>"); }
}

function ReseResultsBuilder(Results) {
	jQuery("#rese-place-holder #results").empty();
	jQuery("#rese-place-holder #results").append('<p class="bigger">' + jQuery(Results).length + ' Reseachers were found.</p>');
	jQuery("#rese-place-holder #results").append('<div class="title"><div class="w">Researcher</div><div class="w1">Focus Area</div><div class="w2">Department</div><div class="clearfloats"/></div>');

	for (i = 0; i < jQuery(Results).length; i++) {
		if (i % 2 == 0) { jQuery("#rese-place-holder #results").append('<div class="cell"><div class="w"><a target="_blank" href="' + Results[i].ResearcherUrl + '">' + Results[i].Researcher + '</a></div><div class="w1"><h6>' + Results[i].FocusArea + '</h6></div><div class="w2"><a target="_blank" href="' + Results[i].DepartmentUrl + '">' + Results[i].Department + '</a></div></div>'); }
		else { jQuery("#rese-place-holder #results").append('<div class="cell blue-bg"><div class="w"><a target="_blank" href="' + Results[i].ResearcherUrl + '">' + Results[i].Researcher + '</a></div><div class="w1"><h6>' + Results[i].FocusArea + '</h6></div><div class="w2"><a target="_blank" href="' + Results[i].DepartmentUrl + '">' + Results[i].Department + '</a></div></div>'); }
	}
	jQuery('#Loading').hide();
}
/**********END RESE SEARCH****/

/**************** END HTML BUILDERS ****************/

/***** Functions **/
function catmanip() {
	jQuery('#Loading').show();
	getNewTotalsResults();
	updateResultsCat();
}
function catmanipResults() {
	jQuery('#Loading').show();
	getNewTotalsResults();
	updateResultsCat();
}



/***** Functions **/

/****************** START TECH NEW MANIP ****************************/
function getNewTotalsSearch() {
	jQuery('#Loading').show();
	var pop = "";
	var test = jQuery("input:checked");
	for (i = 0; i < jQuery("input:checked").length; i++) {
		if (jQuery(test[i]).attr("name") == "cat_")
		{ pop = pop + test[i].value + "|"; }
	}




	jQuery.ajaxDotNet("search.asmx/GetAllSubsCategoriesBasedOnCats", {
		verb: "POST",
		data: { categorylist: pop },
		success: function (obj) {
			var SubCategory = JSON.parse(obj.d);
			SubCategoryCheckboxBuild(SubCategory);

		}
	});

}
function getNewTotalsResults() {
	jQuery('#Loading').show();
	var pop = "";
	var test = jQuery("input:checked");
	for (i = 0; i < jQuery("input:checked").length; i++) {
		if (jQuery(test[i]).attr("name") == "cat_")
		{ pop = pop + test[i].value + "|"; }
	}

	jQuery.ajaxDotNet("search.asmx/GetAllSubsCategoriesBasedOnCats", {
		verb: "POST",
		data: { categorylist: pop },
		success: function (obj) {
			var SubCategory = JSON.parse(obj.d);
			SubCategoryResultsCheckboxBuild(SubCategory);

		}
	});
}
/****************** END TECH NEW MANIP ****************************/
/****************** START RESE NEW MANIP ****************************/
function getAllResearchers() {
	jQuery.ajaxDotNet("search.asmx/GetAllResearchers", {
		verb: "GET",
		success: function (obj) {
		    var Reseachers = JSON.parse(obj.d);
			ReseResultsBuilder(Reseachers);

		}
	});
}
function getReseacherbyDepartment() {
	jQuery('#Loading').show();
	jQuery.ajaxDotNet("search.asmx/GetResearchersbyDepartment", {
		verb: "POST",
		data: { id: jQuery("#ListDepartment").val() },
		success: function (obj) {

		    var Reseachers = JSON.parse(obj.d);
			ReseResultsBuilder(Reseachers);
			jQuery("#ListFocus").val("Select One");
			jQuery("#ListGroup").val("Select One");

		}
	});
}
function getReseacherbyFocusArea() {
	jQuery('#Loading').show();
	jQuery.ajaxDotNet("search.asmx/GetResearchersbyFocus", {
		verb: "POST",
		data: { id: jQuery("#ListFocus").val() },
		success: function (obj) {

		    var Reseachers = JSON.parse(obj.d);
			ReseResultsBuilder(Reseachers);
			jQuery("#ListDepartment").val("Select One");
			jQuery("#ListGroup").val("Select One");

		}
	});
}
function getReseacherbyGroup() {
	jQuery('#Loading').show();

	jQuery.ajaxDotNet("search.asmx/GetResearchersbyGroup", {
		verb: "POST",
		data: { i: jQuery("#ListGroup").val() },
		success: function (obj) {
		    var Reseachers = JSON.parse(obj.d);
			ReseResultsBuilder(Reseachers);
			jQuery("#ListFocus").val("Select One");
			jQuery("#ListDepartment").val("Select One");

		}
	});


}

/****************** START RESE NEW MANIP ****************************/

/************* START UPDATE TECH RESULTS FUNCTION *************/

function updateResultsSub() {
	jQuery('#Loading').show();
	var ExDate = new Date();
	var categories = "";
	var subcategories = "";
	var tc = jQuery("#cath :checked");
	var ts = jQuery("#subh :checked");

	if (jQuery(ts).length == 0) { updateResultsCat(); }
	else {
		for (i = 0; i < jQuery("#cath :checked").length; i++) {
			if (jQuery(tc[i]).attr("name") == "cat_")
			{ categories = categories + tc[i].value + "|"; }
		}
		for (i = 0; i < jQuery("#subh :checked").length; i++) {
			if (jQuery(ts[i]).attr("name") == "subcat_")
			{ subcategories = subcategories + ts[i].value + "|"; }
		}

		ExDate.toUTCString(ExDate.setDate(ExDate.getDate() + 1));
		deleteCookie("ti_te_search");
		setCookie("ti_te_search", "cats%" + categories + "%subs%" + subcategories + "%keys%%type%s", ExDate);
		jQuery.ajaxDotNet("search.asmx/ModifyResults", {
			verb: "POST",
			data: { cats: categories, subs: subcategories, keys: '', type: 's' },
			success: function (obj) {
				searchBindsResults(obj.d);
				// 
			}
		});
	}
}


function updateResultsCat() {
	jQuery('#Loading').show();
	var ExDate = new Date();
	var categories = "";
	var tc = jQuery("#cath :checked");
	for (i = 0; i < jQuery("#cath :checked").length; i++) {
		if (jQuery(tc[i]).attr("name") == "cat_")
		{ categories = categories + tc[i].value + "|"; }
	}
	ExDate.toUTCString(ExDate.setDate(ExDate.getDate() + 1));
	deleteCookie("ti_te_search");
	setCookie("ti_te_search", "cats%" + categories + "%subs%%keys%%type%c", ExDate);
	jQuery('#Loading').show();
	jQuery.ajaxDotNet("search.asmx/ModifyResults", {
		verb: "POST",
		data: { cats: categories, subs: '', keys: '', type: 'c' },
		success: function (obj) {

			searchBindsResults(obj.d);
			// 
		}
	});


}
function updateResultsKey() {
	jQuery('#Loading').show();
	var ExDate = new Date();
	var categories = "";
	var subcategories = "";
	var keywords = jQuery("input:text").val();
	var tc = jQuery("#cath :checked");
	var ts = jQuery("#subh :checked");
	for (i = 0; i < jQuery("#cath :checked").length; i++) {
		if (jQuery(tc[i]).attr("name") == "cat_")
		{ categories = categories + tc[i].value + "|"; }
	}
	for (i = 0; i < jQuery("#subh :checked").length; i++) {
		if (jQuery(ts[i]).attr("name") == "subcat_")
		{ subcategories = subcategories + ts[i].value + "|"; }
	}

	ExDate.toUTCString(ExDate.setDate(ExDate.getDate() + 1));
	deleteCookie("ti_te_search");
	setCookie("ti_te_search", "cats%" + categories + "%subs%" + subcategories + "%keys%" + keywords + "%type%k", ExDate);

	jQuery.ajaxDotNet("search.asmx/ModifyResults", {
		verb: "POST",
		data: { cats: categories, subs: subcategories, keys: keywords, type: 'k' },
		success: function (obj) {
			jQuery('#Loading').show();
			searchBindsResults(obj.d);
			// 
		}
	});
}




/************* END UPDATE TECH RESULTS FUNCTION *************/

/******************* Start TECH Search Functions (Default View) *************************/

function SearchbyCat() {
	jQuery('#Loading').show();
	var ExDate = new Date();
	var categories = "";
	var test = jQuery("input:checked");
	for (i = 0; i < jQuery("input:checked").length; i++) {
		if (jQuery(test[i]).attr("name") == "cat_")
		{ categories = categories + test[i].value + "|"; }
	}

	ExDate.toUTCString(ExDate.setDate(ExDate.getDate() + 1));
	setCookie("ti_te_search", "cats%" + categories + "%subs%%keys%%type%c", ExDate);

	jQuery.ajaxDotNet("search.asmx/SearchParams", {
		verb: "POST",
		data: { cats: categories, subs: '', keys: '', type: 'c' },
		success: function (obj) {
			searchBinds(obj.d);
			jQuery("#subh :checkbox").click(function () { updateResultsSub(); });
		}
	});
}

function SearchbySubCat() {
	jQuery('#Loading').show();
	var ExDate = new Date();
	var categories = "";
	var subcategories = "";
	var test = jQuery("input:checked");
	for (i = 0; i < jQuery("input:checked").length; i++) {
		if (jQuery(test[i]).attr("name") == "cat_")
		{ categories = categories + test[i].value + "|"; }
	}
	for (j = 0; j < jQuery("input:checked").length; j++) {
		if (jQuery(test[j]).attr("name") == "subcat_")
		{ subcategories = subcategories + test[j].value + "|"; }
	}
	ExDate.toUTCString(ExDate.setDate(ExDate.getDate() + 1));
	setCookie("ti_te_search", "cats%" + categories + "%subs%" + subcategories + "%keys%%type%s", ExDate);
	jQuery.ajaxDotNet("search.asmx/SearchParams", {
		verb: "POST",
		data: { cats: categories, subs: subcategories, keys: '', type: 's' },
		success: function (obj) {
			searchBinds(obj.d);
			jQuery("#subh :checkbox").click(function () { updateResultsSub(); });
		}
	});
}

function SearchbyKeyword() {
	jQuery('#Loading').show();
	var ExDate = new Date();
	var categories = "";
	var subcategories = "";
	var keywords = jQuery("input:text").val();
	var test = jQuery("input:checked");
	for (i = 0; i < jQuery("input:checked").length; i++) {
		if (jQuery(test[i]).attr("name") == "cat_")
		{ categories = categories + test[i].value + "|"; }
	}
	for (j = 0; j < jQuery("input:checked").length; j++) {
		if (jQuery(test[j]).attr("name") == "subcat_")
		{ subcategories = subcategories + test[j].value + "|"; }
	}
	ExDate.toUTCString(ExDate.setDate(ExDate.getDate() + 1));
	setCookie("ti_te_search", "cats%" + categories + "%subs%" + subcategories + "%keys%" + keywords + "%type%k", ExDate);
	jQuery.ajaxDotNet("search.asmx/SearchParams", {
		verb: "POST",
		data: { cats: categories, subs: subcategories, keys: keywords, type: 'k' },
		success: function (obj) {
			searchBinds(obj.d);
			jQuery("#subh :checkbox").click(function () { updateResultsSub(); });
		}
	});

}

/******************* End TECH Search Functions (Default View)*************************/


function searchBinds(obj) {

	jQuery('#tech-place-holder').empty();
	jQuery('#tech-place-holder').append(obj);
	jQuery('#tech-place-holder').addClass("search-tech-results");
	bindButton();
	jQuery("#cath :checkbox").click(function () { catmanip(); });

	jQuery("#left-search-results :image").click(function () { updateResultsKey(); });
	jQuery('#Loading').hide();
}
function searchBindsResults(obj) {
	jQuery("#cath :checkbox").unbind('click');

	jQuery("#left-search-results :image").unbind('click');
	jQuery('#tech-place-holder #results').empty();
	jQuery('#tech-place-holder #results').append(obj);
	jQuery("#cath :checkbox").click(function () { catmanip(); });

	jQuery("#left-search-results :image").click(function () { updateResultsKey(); });
	jQuery('#Loading').hide();
}


function bindButton() {
	var btns = jQuery(":image");
	for (i = 0; i < jQuery(":image").length; i++) {
		if (jQuery(btns[i]).attr("name") == "btn_reset")
		{ jQuery(btns[i]).click(function () { reset(); }); }
	}
}


function reset() {
	jQuery('#Loading').show();
	deleteCookie("ti_te_search");
	jQuery.ajaxDotNet("search.asmx/SearchState", {
		verb: "GET",
		success: function (obj) {
			jQuery('#tech-place-holder').empty();
			jQuery('#tech-place-holder').append(obj.d);
			jQuery('#tech-place-holder').removeClass("empty-content");
			getCategories();
			getSubCategories();
			bindButtoms();

		}
	});
	jQuery('#Loading').hide();
}

