/*jslint eqeqeq: true, browser: true */
/*global window, $, jQuery */
/*JP 17/07/09*/
/*  JS Linted*/
/* 1 Issues Left.... Line 330 MainMenuOutsideClickHdnlr() was used before it was defined. The function before it calls it but the MainMenuOutsideClickHdnlr function*/
/* calls that one! */
/*JP END*/
/* ----------------------------------------------------------------
/ Innoware Limited
/
/ Copyright 2007
/
/ No part of this code may be copied or duplicated in any 
/ way without the express written permission of the owner.
/
/ AUTHOR      : DaveS (http://www.sourcedoctor.co.uk)
/ DESCRIPTION : 
/ NOTES       : 
/ ---------------------------------------------------------------- */

/* Main functionality */
function SearchCompanyPrefix(type, prefix) {
	MyObject('SearchButtonWait' + type).style.display = 'inline';
	MyObject('div' + type + 'Matches').style.display = 'none';

	var res = GoodEmployerGuideControl.SearchByPrefix('div' + type + 'Matches', type, prefix, eval('Search' + type + 'CompanyPrefix_CallBack'));
}

function SearchPathway(type) {
	MyObject('SearchButtonWait' + type).style.display = 'inline';
	MyObject('div' + type + 'Matches').style.display = 'none';

	var res = GoodEmployerGuideControl.SearchByPathway('div' + type + 'Matches', type, document.getElementById('_sel' + type + 'Pathway').value, eval('Search' + type + 'Pathway_CallBack'));
}

function SearchAward(type) {
	MyObject('SearchButtonWait' + type).style.display = 'inline';
	MyObject('div' + type + 'Matches').style.display = 'none';

	var res = GoodEmployerGuideControl.SearchByAward('div' + type + 'Matches', type, document.getElementById('_sel' + type + 'Award').value, eval('Search' + type + 'Award_CallBack'));
}

function Search_CallBack(type, res) {
	MyObject('SearchButtonWait' + type).style.display = 'none';
	MyObject('div' + type + 'Matches').style.display = 'block';

	Place(res);
}

// callback stubs
function SearchIIPPathway_CallBack(res) {
	Search_CallBack('IIP', res);
}

function SearchP1Pathway_CallBack(res) {
	Search_CallBack('P1', res);
}

function SearchIIPCompanyPrefix_CallBack(res) {
	Search_CallBack('IIP', res);
}

function SearchP1CompanyPrefix_CallBack(res) {
	Search_CallBack('P1', res);
}

function SearchAWARDIPathway_CallBack(res) {
	Search_CallBack('AWARD', res);
}

function SearchAWARDAward_CallBack(res) {
	Search_CallBack('AWARD', res);
}

/********************** New Good Employer Functions! *****************/

// utility functions
function ReloadOnSave(res) {
	var result = res.value,
	listTokens = result.split('|');

	if (listTokens[0] === '0') {
		alert(listTokens[1]);
		this.UpdateAjaxSessionTimer();
	}
	else {
		location.reload();
	}
}

function ShowFeatureSection(sectionName) {
	$("#main-nav li").removeClass('selected');
	$("#main-nav li." + sectionName).addClass('selected');
	$(".champTab").hide();
	$("div." + sectionName).show();
}

function EditChampEmployer(id) {
	Place(GoodEmployerFeatureControl.FireEditChampEmployer(id));
	$(function () {
		$('.champEdit').show();
	});
}

function ReloadChampEmployer(EmployerOID) {
	var res = GoodEmployerFeatureControl.FireReloadEmployer(EmployerOID);
	Place(res);
	$(function () {
		$('.champEdit').show();
	});
}

function SaveChampEmployer(EmployerOID) {
	var json = GetJSONForSection('#featuredEmp');
	GoodEmployerFeatureControl.FireJsonSave(EmployerOID, json);
	ReloadChampEmployer(EmployerOID);
}

function EditChampJob(id) {
	Place(GoodEmployerFeatureControl.FireEditChampJob(id));
	$(function () {
		$('.champEdit').show();
	});
}

function ReloadChampJob(EmployerOID) {
	var res = GoodEmployerFeatureControl.FireReloadJob(EmployerOID);
	Place(res);
	$(function () {
		$('.champEdit').show();
	});
}

function SaveChampJob(EmployerOID) {
	var json = GetJSONForSection('#featuredJob');
	GoodEmployerFeatureControl.FireJsonSave(EmployerOID, json);
	ReloadChampJob(EmployerOID);
}
// Utility End
function ReloadChampQandA(EmployerOID) {
	var res = GoodEmployerFeatureControl.FireReloadQandA(EmployerOID);
	Place(res);
	$(function () {
		$('.champEdit').show();
	});
}

function EditChampQandA(id) {
	Place(GoodEmployerFeatureControl.FireEditChampQandA(id));
	$(function () {
		$('.champEdit').show();
	});
}

function SaveChampQandA(EmployerOID) {
	var json = GetJSONForSection('#QandA');
	//GoodEmployerFeatureControl.FireJsonSave(EmployerOID, json);  
	//need specialist save method but can handily use the json to do it.
	GoodEmployerFeatureControl.FireSaveQandA(EmployerOID, json);
	ReloadChampQandA(EmployerOID);
}

function ChangedTOB() {}

function EditChampMainDetails(id) {
	Place(GoodEmployer_NewControl.FireEditMain(id));
	$(function () {
		$('.champEdit').show();
	});
}

function EditChampSideDetails(id) {
	Place(GoodEmployer_NewControl.FireEditSide(id));
	$(function () {
		$('.champEdit').show();
	});
	ChangedTOB();
}

function ChampSelected(item) {
	var EmployerOID = item.id;
	if (EmployerOID > 0) {
		location.href = 'Champion.aspx?id=' + EmployerOID;
	}
}

function SearchAll() {
	$('#suggestBox')[0].value = '**';
	runSuggest.apply($('#suggestBox')[0]);
	$('#suggestBox')[0].value = '';
}

function SaveChampDetails(divToSave, recordId) {
	var json = GetJSONForSection(divToSave);
	ReloadOnSave(GoodEmployer_NewControl.FireJsonSave(recordId, json));
}

function SaveAndRemovePathwaysList(sEmployerOID) {
	/* Set up the Variables we need. An array to hold the Pathway OIDS and get the element that will need to be removed at the end if sucessfull. */
	var aPathwayOIDs = [],
	DD = $('#PathwaysEditList').parent('dd'),
	DT = $(DD).prev();

	/* Read all the Check Boxes that are ticked and add them to the OID array. */
	$('.PathwayItem:checked').each(function () {
		aPathwayOIDs.push($(this).attr('id').substr(7));
	});

	/* Now we have the values we need Let send them to the server to update the Pathways collection and see if it workes! */
	if (GoodEmployer_NewControl.SaveEmployerPathways(sEmployerOID, aPathwayOIDs).value) {
		/* It Worked: Now so the Json save works we need to remove the pathways from the page. Then we can tell the Json Save to go ahead. */
		$(DD).remove();
		$(DT).remove();
		return true;
	} else {
		/* The failed: so lets Alert them and cancel the Json Save so they can try again. */
		alert('Saving Failed - Please try again. If this is a persistant problem please refresh the page to check you are still logged in.');
		return false;
	}
}

function RebuildChampionDetails() {
	location.reload();
}

// Message Board functions
function ReloadBoard(EmployerOID, page) {
	if ($('#srchMessages').length > 0) {
		var srch = Value('srchMessages');
		GoodEmployerFeatureControl.FireReloadMessageBoard(EmployerOID, srch, page, function (res) {
			Place(res);
			$('#srchMessages')[0].value = srch;
		});
	} else {
		GoodEmployerFeatureControl.FireReloadMessageBoard(EmployerOID, '', page, Place);
	}
}

function GetPage() {
	var page = 0;
	if ($('#CurrentPage').length > 0) {
		page = parseInt($('#CurrentPage').text(), 10) - 1;
	}
	return page;
}

function SaveMessage(EmployerOID, msgID) {
	var txt = Value('newMsgText');
	var page = GetPage();
	GoodEmployerFeatureControl.FireSaveMessage(EmployerOID, msgID, txt);
	ReloadBoard(EmployerOID, page);
}

function PostNewMessage(EmployerOID) {
	Place(GoodEmployerFeatureControl.FireShowPostNewMessage(EmployerOID));
}

function EditMessage(EmployerOID, msgID) {
	Place(GoodEmployerFeatureControl.FireEditMessage(EmployerOID, msgID));
}

function DeleteMessage(EmployerOID, msgID) {
	if (confirm('Please confirm you wish to delete this message')) {
		var result = GoodEmployerFeatureControl.FireDeleteMessage(EmployerOID, msgID).value,
		listTokens = result.split('|');
		if (listTokens[0] === '0') {
			alert(listTokens[1]);
		} else {
			ReloadBoard(EmployerOID, 0);
		}
	}
}

function ReplyToMessage(msgID) {
	Place(GoodEmployerFeatureControl.FireShowPostNewReply(msgID));
}

function SaveReply(EmployerOID, msgID, replyID) {
	var page = GetPage();
	var txt = Value('newMsgText');
	GoodEmployerFeatureControl.FireSaveReply(EmployerOID, msgID, replyID, txt);
	ReloadBoard(EmployerOID, page);
}

function EditReply(EmployerOID, msgID) {
	Place(GoodEmployerFeatureControl.FireEditReply(EmployerOID, msgID));
}

function ChangeNewEmployerVacancyPage(iPage) {
	var sSearchTxt = $('.GoodEmployerVacancySearchSpan input').val();
	$('#GoodEmployerVacancyDisplay').html(GoodEmployerFeatureControl.ChangeVacancyPage(iPage).value);
	$('.GoodEmployerVacancySearchSpan input').val(sSearchTxt);
}

function FilterVacancies() {
	var sSearchTxt = $('.GoodEmployerVacancySearchSpan input').val();
	$('#GoodEmployerVacancyDisplay').html(GoodEmployerFeatureControl.FilterVacancies(sSearchTxt).value);
	$('.GoodEmployerVacancySearchSpan input').val(sSearchTxt);
}


function EmployerReportRebuild(empID) {

    var from = $("#datepickerFrom").val();
    var to = $("#datepickerTo").val();
    var html = EmployerReportControl.FireRebuild(empID, from, to).value;
    $("#EmployerDigest").replaceWith(html);
    $(function() {
        $("#datepickerFrom, #datepickerTo").datepicker({ dateFormat: 'dd M yy' });
    });
}

function SysadminReportRebuild() {

    var from = $("#datepickerFrom").val();
    var to = $("#datepickerTo").val();
    var html = SysadminReportControl.FireRebuild(from, to).value;
    $("#Digest").replaceWith(html);
    $(function() {
        $("#datepickerFrom, #datepickerTo").datepicker({ dateFormat: 'dd M yy' });
        AddShrinkyTags("H3");
        window.EmployerSuggest = new AutoSuggestBox('EmployerName', 'EmployerResults', GetEmployerResults, HandleEmployerChoice);
    });
}


function ShowGEViewedList(cnrl) {
    var from = $("#datepickerFrom").val();
    var to = $("#datepickerTo").val();
    var html = SysadminReportControl.FireShowGEViewedList(from, to,$(cnrl)[0].id).value;
    $(cnrl).hide();
    $(cnrl).after(html);

}

function ShowNewGERatingList(cnrl) {
    var from = $("#datepickerFrom").val();
    var to = $("#datepickerTo").val();
    var html = SysadminReportControl.FireGERatingChanges(from, to, "first",$(cnrl)[0].id).value;
    $(cnrl).hide();
    $(cnrl).after(html);
}


function ShowAmendedGERatingList(cnrl, indOrEmp) {
    var from = $("#datepickerFrom").val();
    var to = $("#datepickerTo").val();
    var html = SysadminReportControl.FireGERatingChanges(from, to, indOrEmp, $(cnrl)[0].id).value;
    $(cnrl).hide();
    $(cnrl).after(html);

}

function ShowGPViewedList(cnrl) {
    var from = $("#datepickerFrom").val();
    var to = $("#datepickerTo").val();
    var html = SysadminReportControl.FireShowGPViewedList(from, to, $(cnrl)[0].id).value;
    $(cnrl).hide();
    $(cnrl).after(html);
   

}

function ShowNewGPRatingList(cnrl) {
    var from = $("#datepickerFrom").val();
    var to = $("#datepickerTo").val();
    var html = SysadminReportControl.FireGPRatingChanges(from, to, "first", $(cnrl)[0].id).value;
    $(cnrl).hide();
    $(cnrl).after(html);
    
}





function ShowAmendedGPRatingList(cnrl, indOrEmp) {
    var from = $("#datepickerFrom").val();
    var to = $("#datepickerTo").val();
    var html = SysadminReportControl.FireGPRatingChanges(from, to, indOrEmp, $(cnrl)[0].id).value;
    $(cnrl).hide();
    $(cnrl).after(html);
    
}

function ShowLoggedInList(type, cnrl) {
    var from = $("#datepickerFrom").val();
    var to = $("#datepickerTo").val();
    var html = SysadminReportControl.FireGetLoggedInsList(from, to, type, $(cnrl)[0].id).value;

    $(cnrl).hide();
    $(cnrl).after(html);
  

}

function ShowVacancySearchTerms(cnrl) {
    var from = $("#datepickerFrom").val();
    var to = $("#datepickerTo").val();
    var html = SysadminReportControl.FireTop10VacancySearchTerms(from, to, 10, $(cnrl)[0].id).value;

    $(cnrl).hide();
    $(cnrl).after(html);
}

function ShowTalentSearchTerms(cnrl) {
    var from = $("#datepickerFrom").val();
    var to = $("#datepickerTo").val();
    var html = SysadminReportControl.FireTop10TalentSearchTerms(from, to, 10, $(cnrl)[0].id).value;

    $(cnrl).hide();
    $(cnrl).after(html);
}


function GetEmployerResults(sSearch) {
    var results = SysadminReportControl.GetEmployers(sSearch).value;
    if (results != null)
        return AutoList(results);
}

function HandleEmployerChoice(sID, sText, arrExtra) {
    MyObject('EmployerID').value = sID;
    $('#displayBy').val('Job');
}


function AddShrinkyTags(selector) {
    
    $(selector).click(function() {
        $("p , h4", this.parentNode).toggle();
    });
}


function OpenEmployerReport() {
    var employerID = MyObject('EmployerID').value;
    if (employerID != "" && employerID != "-1")
        window.open("employerreport.aspx?id=" + employerID);
        //window.open("employerreport.aspx?id=" + employerID, "Employer Report", "width=800 height=500,scrollbars=1,resizable=1");

}

function ProduceCSV(){
    var from = $("#datepickerFrom").val();
    var to = $("#datepickerTo").val();
    SysadminReportControl.FireProduceCSV(from, to)
}



/**********************END  New Good Employer Functions!  END*****************/