﻿$(document).ready(function() {
    //date pickers
    $(".dateInput").datepicker({ dateFormat: 'dd/mm/yy', showOn: 'button', buttonImage: '/Images/Extranet/dateIcon.gif', buttonImageOnly: true, changeMonth: true, changeYear: true });
    $("#txtAvailability").datepicker({ dateFormat: 'dd/mm/yy', showOn: 'button', buttonImage: '/Images/Extranet/dateIcon.gif', buttonImageOnly: true, changeMonth: true, changeYear: true });

    // search table expand
    $('div.resultsTable table tr td div.itemDetailContainer').hide();
    $('tr.detail').addClass("hiddenRow");
    $('tr.evenDetail').addClass("hiddenRow");
    $('div.resultsTable#candidateTable table tr.summaryRow a.expandLink').click(function(event) {
        var rowClicked = $(this).closest('tr.summaryRow');
        if (rowClicked.hasClass("expanded") && !rowClicked.hasClass('animating')) {
            // HIDE
            event.preventDefault();
            rowClicked.next().children('td').eq(0).children('div.itemDetailContainer').eq(0).children('div.itemDetailHeader').toggleClass("IERelativeFix");
            rowClicked.addClass('animating');
            rowClicked.next().children('td').eq(0).children('div.itemDetailContainer').eq(0).slideToggle(700, function() {
                rowClicked.next().toggleClass("hiddenRow");
                rowClicked.toggleClass("expanded");
                rowClicked.removeClass("animating");
            });
        } else if (!rowClicked.hasClass('animating')) {
            // SHOW
            // The actual animation of the details row has been moved to the ConfigureViewCV method
            // so that we can check for the existance of a CV and toggle the View CV button before
            // the div appears. Therefore all we need to do here is NOT prevent the default action of the link.
        }
    });

    $('div.resultsTable#searchesTable table tr.summaryRow a.expandLink').click(function(event) {
        var rowClicked = $(this).closest('tr.summaryRow');
        if (rowClicked.hasClass("expanded") && !rowClicked.hasClass('animating')) {
            // HIDE
            event.preventDefault();
            rowClicked.next().children('td').eq(0).children('div.itemDetailContainer').eq(0).children('div.itemDetailHeader').toggleClass("IERelativeFix");
            rowClicked.addClass('animating');
            rowClicked.next().children('td').eq(0).children('div.itemDetailContainer').eq(0).slideToggle(700, function() {
                rowClicked.next().toggleClass("hiddenRow");
                rowClicked.toggleClass("expanded");
                rowClicked.removeClass("animating");
            });
        } else if (!rowClicked.hasClass('animating')) {
            // SHOW
            event.preventDefault();
            rowClicked.toggleClass("expanded");
            rowClicked.addClass('animating');
            rowClicked.next().toggleClass("hiddenRow");
            rowClicked.next().children('td').eq(0).children('div.itemDetailContainer').eq(0).slideToggle(700, function() {
                rowClicked.next().children('td').eq(0).children('div.itemDetailContainer').eq(0).children('div.itemDetailHeader').toggleClass("IERelativeFix");
                rowClicked.removeClass("animating");
            });
        }
    });
});

var Intranet = new function() {
    this.ShowProfileOverlay = function(id, isCandidate) {
        // Reset fields.
        $('#overlayContainer ul li').removeClass('formError');
        $('#overlayContainer .errorMsg').hide();
        $('#overlayContainer div.checkBox').removeClass('checked');
        $('#overlayContainer #liAssociatedCompany').hide();
        $('#overlayContainer #divCandidateOptions').css('visibility', 'visible');
        $('#overlayContainer #divCandidateOptions').css('display', 'inline');
        if (id > 0) {
            $('#overlayContainer .titleBar').removeClass('createProfile');
            $('#overlayContainer .titleBar').addClass('editProfile');
        } else {
            $('#overlayContainer .titleBar').addClass('createProfile');
            $('#overlayContainer .titleBar').removeClass('editProfile');
        }
        $('#overlayContainer input[type=text]').val('');
        $('#overlayContainer select').val('0');
        $('#overlayContainer #overlayClientCount').text('(0)');
        $('#overlayContainer #overlayLocationCount').text('(0)');
        $('#overlayContainer #overlaySkillCount').text('(0)');
        $('#overlayContainer #overlayCompaniesAvailableCount').text('(0)');
        $('#overlayContainer .managerTable tbody').html("<tr title=\"0\"><td class=\"prevManagerName\">"
            + "<input type=\"text\" id=\"txtPrevManager1\" class=\"previousManInput\" value=\"Name\" onfocus=\"if(this.value == 'Name') { this.value = ''; }\" onblur=\"if(this.value == '') { this.value = 'Name'; }\" />"
            + "</td><td class=\"prevManagerEmail\">"
            + "<input type=\"text\" id=\"txtPrevManagerEmail1\" class=\"previousManInput\" value=\"Email Address\" onfocus=\"if(this.value == 'Email Address') { this.value = ''; }\" onblur=\"if(this.value == '') { this.value = 'Email Address'; }\" />"
            + "</td\"><td><div class=\"addIcon\" onclick=\"Intranet.AddRow(this)\"></div></td></tr>");
        $('#overlayContainer .forDeletion tbody').html('');
        $('#overlayContainer input[type=file]').val('');
        $('#overlayContainer #otherNotes').attr('title', '0');
        $('#overlayContainer textarea').val('');
        $('#overlayContainer input[type=checkbox]').attr('checked', false);
        $('#overlayContainer .leftCol div.checkBox').closest('ul').show();

        $('#overlayContainer .rightCol li input[type=hidden]').val(id);
        $('#overlayTabs li a[rel=profile]').click();
        $('#overlayContainer').css({ left: ($(window).width() / 2) - ($('#overlayContainer').width() / 2) });
        if (id > 0) {
            $('#overlayContainer .leftCol div.checkBox').closest('ul').hide(); // We do not rebind the left checkbox for edit mode
            // Populate fields.
            if (isCandidate) {
                $.ajax({
                    type: "POST",
                    url: "/Homepages/Intranet/Default.aspx/GetIndividualDetails",
                    data: '{"id":' + id + '}',
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function(returnData) {
                        if (returnData.d.ColumnValues["[cont_title]"] != '')
                            $('#overlayContainer #txtTitle').val(returnData.d.ColumnValues["[cont_title]"]);
                        if (returnData.d.ColumnValues["[cont_first_name]"] != '')
                            $('#overlayContainer #txtFirstName').val(returnData.d.ColumnValues["[cont_first_name]"]);
                        if (returnData.d.ColumnValues["[cont_last_name]"] != '')
                            $('#overlayContainer #txtSurname').val(returnData.d.ColumnValues["[cont_last_name]"]);
                        if (returnData.d.ColumnValues["[cont_job_title]"] != '')
                            $('#overlayContainer #txtJobTitle').val(returnData.d.ColumnValues["[cont_job_title]"]);
                        if (returnData.d.ColumnValues["[cont_pnl_availability__location_available_from]"] != '')
                            $('#overlayContainer #txtAvailability').val(returnData.d.ColumnValues["[cont_pnl_availability__location_available_from]"]);
                        if (returnData.d.ColumnValues["[cont_pnl_availability__location_currently_at_client]"] == 'true')
                            $('#overlayContainer .rightCol div.checkBox').addClass('checked');
                        if (returnData.d.ColumnValues["[cont_adr_address1]"] != '')
                            $('#overlayContainer #txtAddress1').val(returnData.d.ColumnValues["[cont_adr_address1]"]);
                        if (returnData.d.ColumnValues["[cont_adr_address2]"] != '')
                            $('#overlayContainer #txtAddress2').val(returnData.d.ColumnValues["[cont_adr_address2]"]);
                        if (returnData.d.ColumnValues["[cont_adr_city]"] != '')
                            $('#overlayContainer #txtCity').val(returnData.d.ColumnValues["[cont_adr_city]"]);
                        if (returnData.d.ColumnValues["[cont_adr_state_id]"] != '')
                            $('#overlayContainer #ddlCounty').val(returnData.d.ColumnValues["[cont_adr_state_id]"]);
                        if (returnData.d.ColumnValues["[cont_adr_post_code]"] != '')
                            $('#overlayContainer #txtPostcode').val(returnData.d.ColumnValues["[cont_adr_post_code]"]);
                        if (returnData.d.ColumnValues["[cont_adr_email]"] != '')
                            $('#overlayContainer #txtEmail').val(returnData.d.ColumnValues["[cont_adr_email]"]);
                        if (returnData.d.ColumnValues["[cont_adr_mobile]"] != '')
                            $('#overlayContainer #txtMobile').val(returnData.d.ColumnValues["[cont_adr_mobile]"]);
                        if (returnData.d.ColumnValues["[cont_adr_telephone]"] != '')
                            $('#overlayContainer #txtHomeTel').val(returnData.d.ColumnValues["[cont_adr_telephone]"]);
                        if (returnData.d.ColumnValues["[cont_additional_adr_telephone]"] != '')
                            $('#overlayContainer #txtWorkTel').val(returnData.d.ColumnValues["[cont_additional_adr_telephone]"]);
                        if (returnData.d.ColumnValues["[cont_note_id]"] != '')
                            $('#overlayContainer #otherNotes').attr('title', returnData.d.ColumnValues["[cont_note_id]"]);
                        if (returnData.d.ColumnValues["[cont_note_description]"] != '')
                            $('#overlayContainer #otherNotes').val(returnData.d.ColumnValues["[cont_note_description]"]);

                        $.ajax({
                            type: "POST",
                            url: "/Homepages/Intranet/Default.aspx/GetIndividualManagers",
                            data: '{}',
                            contentType: "application/json; charset=utf-8",
                            dataType: "json",
                            cache: false,
                            success: function(returnData) {
                                if (returnData.d != null && returnData.d.length > 0) {
                                    $('#overlayContainer .managerTable tbody').html('');
                                    for (i = 0; i < returnData.d.length; i++) {
                                        var addIcon = '';
                                        if (i == (returnData.d.length - 1))
                                            addIcon = "</div><div onclick=\"Intranet.AddRow(this);\" class=\"addIcon\"></div>";
                                        $('#overlayContainer .managerTable tbody').append("<tr title=\"" + returnData.d[i].ManagerGroupID + "\"><td class=\"prevManagerName\"><input type=\"text\" onblur=\"if(this.value == '') { this.value = 'Name'; }\" onfocus=\"if(this.value == 'Name') { this.value = ''; }\" value=\"" + returnData.d[i].ManagerName + "\" class=\"previousManInput\" id=\"txtPrevManager" + i + "\"></td>"
                                    + "<td class=\"prevManagerEmail\"><input type=\"text\" onblur=\"if(this.value == '') { this.value = 'Email Address'; }\" onfocus=\"if(this.value == 'Email Address') { this.value = ''; }\" value=\"" + returnData.d[i].ManagerEmail + "\" class=\"previousManInput\" id=\"prevManagerEmail" + i + "\"></td>"
                                    + "<td><div onclick=\"Intranet.RemoveRow(this);\" class=\"deleteIcon\">" + addIcon + "</td></tr>");
                                    }
                                }

                                $.ajax({
                                    type: "POST",
                                    url: "/Homepages/Intranet/Default.aspx/GetIndividualLocations",
                                    data: '{}',
                                    contentType: "application/json; charset=utf-8",
                                    dataType: "json",
                                    cache: false,
                                    success: function(returnData) {
                                        if (returnData.d != null && returnData.d.length > 0) {
                                            for (i = 0; i < returnData.d.length; i++) {
                                                var locationId = returnData.d[i];
                                                $('#overlayContainer #overlayLocations #ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_chkLocation' + locationId).attr('checked', true);
                                            }
                                            $('#overlayContainer #overlayLocationCount').text('(' + returnData.d.length + ')');
                                        }
                                        $.ajax({
                                            type: "POST",
                                            url: "/Homepages/Intranet/Default.aspx/GetIndividualAvailableCompanies",
                                            data: '{}',
                                            contentType: "application/json; charset=utf-8",
                                            dataType: "json",
                                            cache: false,
                                            success: function(returnData) {
                                                if (returnData.d != null && returnData.d.length > 0) {
                                                    for (i = 0; i < returnData.d.length; i++) {
                                                        var availableCompanyId = returnData.d[i];
                                                        $('#overlayContainer #overlayCompaniesAvailable #ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_chkOverlayCompaniesAvailable' + availableCompanyId).attr('checked', true);
                                                    }
                                                    $('#overlayContainer #overlayCompaniesAvailableCount').text('(' + returnData.d.length + ')');
                                                }
                                                $.ajax({
                                                    type: "POST",
                                                    url: "/Homepages/Intranet/Default.aspx/GetIndividualSkills",
                                                    data: '{}',
                                                    contentType: "application/json; charset=utf-8",
                                                    dataType: "json",
                                                    cache: false,
                                                    success: function(returnData) {
                                                        if (returnData.d != null && returnData.d.length > 0) {
                                                            for (i = 0; i < returnData.d.length; i++) {
                                                                var skillColumnId = returnData.d[i];
                                                                $('#overlayContainer #overlaySkills #ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_chkSkill' + skillColumnId).attr('checked', true);
                                                            }
                                                            $('#overlayContainer #overlaySkillCount').text('(' + returnData.d.length + ')');

                                                        }
                                                        $('#overlay').show();
                                                        $('#overlay').fadeTo("slow", 0.7);
                                                        $('#overlayContainer').fadeIn("normal", function() {
                                                            // Add click events.
                                                            $('#overlayContainer input.focusFirst').focus();
                                                            $('#overlayContainer div.checkBox').unbind('click');

                                                            $('#overlayContainer .rightCol div.checkBox').click(function() {
                                                                $(this).toggleClass('checked');
                                                            });
                                                            $('#overlayContainer .noSelectAll input').unbind('click');
                                                            $('#overlayContainer .noSelectAll input').click(function() {
                                                                if ($(this).is(':checked')) {
                                                                    $('#overlayContainer .noSelectAll input').removeAttr('checked');
                                                                    $(this).attr('checked', 'checked');
                                                                    Extranet.UpdateSelected('overlayClientCount', 'overlayClients');
                                                                }
                                                            });
                                                            $('#overlayTabs li a').unbind('click');
                                                            $('#overlayTabs li a').click(function(evt) {
                                                                evt.preventDefault();
                                                                // sort tabs
                                                                $('#overlayTabs li a').removeClass('active');
                                                                $(this).addClass('active');
                                                                // show appropriate tab
                                                                var targetDiv = $(this).attr('rel');
                                                                $('div.overlayTabbedAreaTab').removeClass('active');
                                                                $('#' + targetDiv).addClass('active');
                                                            });
                                                            $("#overlayClose, #overlay").unbind('click');
                                                            $("#overlayClose, #overlay").click(
		                                                        function(event) {
		                                                            event.preventDefault();
		                                                            $('#overlayContainer').fadeOut("normal");
		                                                            $('#overlay').fadeTo("slow", 0, function() { $('#overlay').hide() });
		                                                            $(".resultsContainer").css('z-index', '');
		                                                        }
	                                                        );
                                                        });
                                                    }
                                                });
                                            }
                                        });
                                    }
                                });
                            }
                        });
                    }
                });
            } else {
                $('#overlayContainer .leftCol div.checkBox').addClass('checked');
                $('#overlayContainer #divCandidateOptions').css('visibility', 'hidden');
                $('#overlayContainer #divCandidateOptions').css('display', 'none');
                $.ajax({
                    type: "POST",
                    url: "/Homepages/Intranet/Default.aspx/GetClientDetails",
                    data: '{"id":' + id + '}',
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function(returnData) {
                        if (returnData.d.ColumnValues["[cont_title]"] != '')
                            $('#overlayContainer #txtTitle').val(returnData.d.ColumnValues["[cont_title]"]);
                        if (returnData.d.ColumnValues["[cont_first_name]"] != '')
                            $('#overlayContainer #txtFirstName').val(returnData.d.ColumnValues["[cont_first_name]"]);
                        if (returnData.d.ColumnValues["[cont_last_name]"] != '')
                            $('#overlayContainer #txtSurname').val(returnData.d.ColumnValues["[cont_last_name]"]);
                        if (returnData.d.ColumnValues["[cont_job_title]"] != '')
                            $('#overlayContainer #txtJobTitle').val(returnData.d.ColumnValues["[cont_job_title]"]);
                        if (returnData.d.ColumnValues["[cont_adr_address1]"] != '')
                            $('#overlayContainer #txtAddress1').val(returnData.d.ColumnValues["[cont_adr_address1]"]);
                        if (returnData.d.ColumnValues["[cont_org_id]"] != '') {
                            $('#overlayContainer #overlayClients #ctl00_ctl00_ContentPlaceHolderPageFrame_ContentPlaceHolderMain_chkClients' + returnData.d.ColumnValues["[cont_org_id]"]).attr('checked', true);
                            $('#overlayContainer #overlayClientCount').text('(1)');
                        }
                        if (returnData.d.ColumnValues["[cont_adr_address2]"] != '')
                            $('#overlayContainer #txtAddress2').val(returnData.d.ColumnValues["[cont_adr_address2]"]);
                        if (returnData.d.ColumnValues["[cont_adr_city]"] != '')
                            $('#overlayContainer #txtCity').val(returnData.d.ColumnValues["[cont_adr_city]"]);
                        if (returnData.d.ColumnValues["[cont_adr_state_id]"] != '')
                            $('#overlayContainer #ddlCounty').val(returnData.d.ColumnValues["[cont_adr_state_id]"]);
                        if (returnData.d.ColumnValues["[cont_adr_post_code]"] != '')
                            $('#overlayContainer #txtPostcode').val(returnData.d.ColumnValues["[cont_adr_post_code]"]);
                        if (returnData.d.ColumnValues["[cont_adr_email]"] != '')
                            $('#overlayContainer #txtEmail').val(returnData.d.ColumnValues["[cont_adr_email]"]);
                        if (returnData.d.ColumnValues["[cont_adr_mobile]"] != '')
                            $('#overlayContainer #txtMobile').val(returnData.d.ColumnValues["[cont_adr_mobile]"]);
                        if (returnData.d.ColumnValues["[cont_adr_telephone]"] != '')
                            $('#overlayContainer #txtHomeTel').val(returnData.d.ColumnValues["[cont_adr_telephone]"]);
                        if (returnData.d.ColumnValues["[cont_additional_adr_telephone]"] != '')
                            $('#overlayContainer #txtWorkTel').val(returnData.d.ColumnValues["[cont_additional_adr_telephone]"]);

                        $('#overlay').show();
                        $('#overlay').fadeTo("slow", 0.7);
                        $('#overlayContainer').fadeIn("normal", function() {
                            // Add click events.
                            $('#overlayContainer input.focusFirst').focus();
                            $('#overlayContainer div.checkBox').unbind('click');

                            $('#overlayContainer .rightCol div.checkBox').click(function() {
                                $(this).toggleClass('checked');
                            });
                            $('#overlayContainer .noSelectAll input').unbind('click');
                            $('#overlayContainer .noSelectAll input').click(function() {
                                if ($(this).is(':checked')) {
                                    $('#overlayContainer .noSelectAll input').removeAttr('checked');
                                    $(this).attr('checked', 'checked');
                                    Extranet.UpdateSelected('overlayClientCount', 'overlayClients');
                                }
                            });
                            $('#overlayTabs li a').unbind('click');
                            $('#overlayTabs li a').click(function(evt) {
                                evt.preventDefault();
                                // sort tabs
                                $('#overlayTabs li a').removeClass('active');
                                $(this).addClass('active');
                                // show appropriate tab
                                var targetDiv = $(this).attr('rel');
                                $('div.overlayTabbedAreaTab').removeClass('active');
                                $('#' + targetDiv).addClass('active');
                            });
                            $("#overlayClose, #overlay").unbind('click');
                            $("#overlayClose, #overlay").click(
                                function(event) {
                                    event.preventDefault();
                                    $('#overlayContainer').fadeOut("normal");
                                    $('#overlay').fadeTo("slow", 0, function() { $('#overlay').hide() });
                                    $(".resultsContainer").css('z-index', '');
                                }
                            );
                        });
                    }
                });
            }
        } else {
            $('#overlay').show();
            $('#overlay').fadeTo("slow", 0.7);
            $('#overlayContainer').fadeIn("normal", function() {
                // Add click events.
                $('#overlayContainer input.focusFirst').focus();
                $('#overlayContainer div.checkBox').unbind('click');
                $('#overlayContainer .leftCol div.checkBox').click(function() {
                    $(this).toggleClass('checked');
                    if ($(this).hasClass('checked')) {
                        $('#overlayContainer #liAssociatedCompany').show();
                        $('#overlayContainer #divCandidateOptions').css('visibility', 'hidden');
                    } else {
                        $('#overlayContainer #liAssociatedCompany').hide();
                        $('#overlayContainer #divCandidateOptions').css('visibility', 'visible');
                    }
                });
                $('#overlayContainer .rightCol div.checkBox').click(function() {
                    $(this).toggleClass('checked');
                });
                $('#overlayContainer .noSelectAll input').unbind('click');
                $('#overlayContainer .noSelectAll input').click(function() {
                    if ($(this).is(':checked')) {
                        $('#overlayContainer .noSelectAll input').removeAttr('checked');
                        $(this).attr('checked', 'checked');
                        Extranet.UpdateSelected('overlayClientCount', 'overlayClients');
                    }
                });
                $('#overlayTabs li a').unbind('click');
                $('#overlayTabs li a').click(function(evt) {
                    evt.preventDefault();
                    // sort tabs
                    $('#overlayTabs li a').removeClass('active');
                    $(this).addClass('active');
                    // show appropriate tab
                    var targetDiv = $(this).attr('rel');
                    $('div.overlayTabbedAreaTab').removeClass('active');
                    $('#' + targetDiv).addClass('active');
                });
                $("#overlayClose, #overlay").unbind('click');
                $("#overlayClose, #overlay").click(
		            function(event) {
		                event.preventDefault();
		                $('#overlayContainer').fadeOut("normal");
		                $('#overlay').fadeTo("slow", 0, function() { $('#overlay').hide() });
		                $(".resultsContainer").css('z-index', '');
		            }
	            );
            });
        }
    }

    this.SubmitProfileOverlay = function() {
        var id = $('#overlayContainer .rightCol li input[type=hidden]').val();
        if (Intranet.ProfileOverlayIsValid()) {
            if ($('#overlayContainer .leftCol div.checkBox').hasClass('checked')) { // Client
                $.ajax({
                    type: "POST",
                    url: "/Homepages/Intranet/Default.aspx/CheckDuplicateContact",
                    data: '{"contactID":' + id + ',"email":"' + $('#overlayContainer #txtEmail').val() + '","relationship":"CLIENT"}',
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function(returnData) {
                        if (returnData.d) { // Duplicate Found
                            if (confirm('Another Contact with this email address has been found.\nDo you wish to continue adding this contact?'))
                                Intranet.SubmitClientContactData(id);
                        } else {
                            Intranet.SubmitClientContactData(id);
                        }
                    },
                    error: function(XMLHttpRequest, textStatus, errorThrown) {
                        console.log(textStatus + ":" + errorThrown);
                    }
                });
                return false;
            } else {                                                                // Candidate
                $.ajax({
                    type: "POST",
                    url: "/Homepages/Intranet/Default.aspx/CheckDuplicateContact",
                    data: '{"contactID":' + id + ',"email":"' + $('#overlayContainer #txtEmail').val() + '","relationship":"INDIVIDUAL"}',
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function(returnData) {
                        if (returnData.d) { // Duplicate Found
                            if (confirm('Another Contact with this email address has been found.\nDo you wish to continue adding this contact?'))
                                Intranet.SubmitIndividualContactData(id);
                        } else {
                            Intranet.SubmitIndividualContactData(id);
                        }
                    },
                    error: function(XMLHttpRequest, textStatus, errorThrown) {
                        console.log(textStatus + ":" + errorThrown);
                    }
                });
                return false;
            }
        } else {
            return false;
        }
    }

    this.SubmitClientContactData = function(id) {
        var dataString = '{"contactID":' + id
            + ',"title":"' + $('#overlayContainer #txtTitle').val()
            + '","firstname":"' + $('#overlayContainer #txtFirstName').val()
            + '","surname":"' + $('#overlayContainer #txtSurname').val()
            + '","jobtitle":"' + $('#overlayContainer #txtJobTitle').val();

        $('#overlayContainer .noSelectAll input[type=checkbox]:checked').each(function() {
            dataString += '","clientID":' + $(this).attr('name').replace('ctl00$ctl00$ContentPlaceHolderPageFrame$ContentPlaceHolderMain$chkClients', '');
        });

        dataString += ',"address1":"' + $('#overlayContainer #txtAddress1').val()
            + '","address2":"' + $('#overlayContainer #txtAddress2').val()
            + '","city":"' + $('#overlayContainer #txtCity').val()
            + '","countyID":' + $('#overlayContainer #ddlCounty').val()
            + ',"postcode":"' + $('#overlayContainer #txtPostcode').val()
            + '","email":"' + $('#overlayContainer #txtEmail').val()
            + '","mobile":"' + $('#overlayContainer #txtMobile').val()
            + '","home":"' + $('#overlayContainer #txtHomeTel').val()
            + '","work":"' + $('#overlayContainer #txtWorkTel').val() + '"}';
        $.ajax({
            type: "POST",
            url: "/Homepages/Intranet/Default.aspx/CreateClientContact",
            data: dataString,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(returnData) {
                if (returnData.d) {
                    $('#overlayContainer').fadeOut("normal");
                    $('#overlay').fadeTo("slow", 0, function() { $('#overlay').hide() });
                    $(".resultsContainer").css('z-index', '');
                }
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                console.log(textStatus + ":" + errorThrown);
            }
        });
    }

    this.SubmitIndividualContactData = function(id) {
        var dataString = '{"contactID":' + id
            + ',"title":"' + $('#overlayContainer #txtTitle').val()
            + '","firstname":"' + $('#overlayContainer #txtFirstName').val()
            + '","surname":"' + $('#overlayContainer #txtSurname').val()
            + '","jobtitle":"' + $('#overlayContainer #txtJobTitle').val();

        var locationsString = '';
        $('#overlayContainer #overlayLocations ul input[type=checkbox]:checked').each(function() {
            locationsString += $(this).attr('name').replace('ctl00$ctl00$ContentPlaceHolderPageFrame$ContentPlaceHolderMain$chkLocation', '') + ',';
        });
        dataString += '","locationIDs":"' + locationsString;

        var skillsString = '';
        $('#overlayContainer #overlaySkills ul input[type=checkbox]:checked').each(function() {
            skillsString += $(this).attr('name').replace('ctl00$ctl00$ContentPlaceHolderPageFrame$ContentPlaceHolderMain$chkSkill', '') + ',';
        });
        dataString += '","skills":"' + skillsString;

        var companiesString = '';
        $('#overlayContainer #overlayCompaniesAvailable ul input[type=checkbox]:checked').each(function() {
            companiesString += $(this).attr('name').replace('ctl00$ctl00$ContentPlaceHolderPageFrame$ContentPlaceHolderMain$chkOverlayCompaniesAvailable', '') + ',';
        });
        dataString += '","companyIDs":"' + companiesString;

        var managersString = '';
        $('#overlayContainer .managerTable tr').each(function() {
            var groupId = $(this).attr('title');
            var name = $(this).children('td.prevManagerName').children('input').val();
            var email = $(this).children('td.prevManagerEmail').children('input').val();
            managersString += groupId + ':' + name + ';' + email + ',';
        });
        dataString += '","previousManagers":"' + managersString;

        var forDeletion = '';
        $('#overlayContainer .forDeletion tr').each(function() {
            var groupId = $(this).attr('title');
            forDeletion += groupId + ',';
        });
        dataString += '","managersToDelete":"' + forDeletion;

        dataString += '","availableFrom":"' + $('#overlayContainer #txtAvailability').val();

        var checked = false;
        if ($('#overlayContainer .rightCol div.checkBox').hasClass('checked'))
            dataString += '","atClient":true';
        else
            dataString += '","atClient":false';

        dataString += ',"noteId":' + $('#overlayContainer #otherNotes').attr('title') + ',"notes":"' + $('#overlayContainer #otherNotes').val()
            + '","address1":"' + $('#overlayContainer #txtAddress1').val()
            + '","address2":"' + $('#overlayContainer #txtAddress2').val()
            + '","city":"' + $('#overlayContainer #txtCity').val()
            + '","countyID":' + $('#overlayContainer #ddlCounty').val()
            + ',"postcode":"' + $('#overlayContainer #txtPostcode').val()
            + '","email":"' + $('#overlayContainer #txtEmail').val()
            + '","mobile":"' + $('#overlayContainer #txtMobile').val()
            + '","home":"' + $('#overlayContainer #txtHomeTel').val()
            + '","work":"' + $('#overlayContainer #txtWorkTel').val() + '"}';

        $.ajax({
            type: "POST",
            url: "/Homepages/Intranet/Default.aspx/CreateIndividualContact",
            data: dataString,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(returnData) {
                if (returnData.d > 0) {
                    $('#overlayContainer .rightCol li input[type=hidden]').val(returnData.d);
                    $('#overlayContainer').fadeOut("normal");
                    $('#overlay').fadeTo("slow", 0, function() { $('#overlay').hide() });
                    $(".resultsContainer").css('z-index', '');
                    __doPostBack('ctl00$ctl00$ContentPlaceHolderPageFrame$ContentPlaceHolderMain$lbtnSubmitOverlay', '');
                }
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                console.log(textStatus + ":" + errorThrown);
            }
        });
    }

    this.ProfileOverlayIsValid = function() {
        var valid = true;
        $('#overlayContainer ul li').removeClass('formError');
        $('#overlayContainer .errorMsg').hide();

        if ($('#overlayContainer #txtFirstName').val() == '') {
            valid = false;
            $('#overlayContainer #txtFirstName').closest('li').addClass('formError');
        }
        if ($('#overlayContainer #txtSurname').val() == '') {
            valid = false;
            $('#overlayContainer #txtSurname').closest('li').addClass('formError');
        }
        if ($('#overlayContainer #txtJobTitle').val() == '') {
            valid = false;
            $('#overlayContainer #txtJobTitle').closest('li').addClass('formError');
        }

        if ($('#overlayContainer .leftCol div.checkBox').hasClass('checked')) {
            if ($('#overlayContainer #liAssociatedCompany input[type=checkbox]:checked').length != 1) {
                valid = false;
                $('#overlayContainer #liAssociatedCompany').addClass('formError');
            }
        }

        // If already not valid, switch view to first tab.
        if (!valid) {
            $('#overlayTabs li a[rel=profile]').click();
        }

        if ($('#overlayContainer #txtAddress1').val() == '') {
            valid = false;
            $('#overlayContainer #txtAddress1').closest('li').addClass('formError');
        }
        if ($('#overlayContainer #txtCity').val() == '') {
            valid = false;
            $('#overlayContainer #txtCity').closest('li').addClass('formError');
        }
        if ($('#overlayContainer #ddlCounty').val() == '0') {
            valid = false;
            $('#overlayContainer #ddlCounty').closest('li').addClass('formError');
        }
        if ($('#overlayContainer #txtPostcode').val() == '') {
            valid = false;
            $('#overlayContainer #txtPostcode').closest('li').addClass('formError');
        }
        var myRegExp = /^([a-zA-Z0-9_-])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]+)+$/;
        if ($('#overlayContainer #txtEmail').val() == '' || !myRegExp.test($('#overlayContainer #txtEmail').val())) {
            valid = false;
            $('#overlayContainer #txtEmail').closest('li').addClass('formError');
        }

        if (!valid) {
            $('#overlayContainer .errorMsg').show();
        }

        return valid;
    }

    var addCounter = 1;
    this.RemoveRow = function(ele) {
        var parentTable = $(ele).closest('table');
        var moveBtn = false;
        if ($(ele).closest('tr').attr('title') != '0') {
            $('table.forDeletion').append('<tr title="' + $(ele).closest('tr').attr('title') + '">' + $(ele).closest('tr').html() + '</tr>');
        }
        $(ele).closest('tr').remove();

        if ($('.managerTable tbody tr:last td:last div.addIcon').length == 0)
            moveBtn = true;

        var outputStr = '<div class="addIcon" onclick="Intranet.AddRow(this)"></div>';

        parentTable.each(function() {
            if ($('tbody', this).length > 0) {
                if (moveBtn)
                    $('tbody tr:last td:last', this).append(outputStr);
            } else {
                if (moveBtn)
                    $('tr:last td:last', this).append(outputStr);
            }
        });

    };


    this.AddRow = function(ele) {
        addCounter++;
        var outputStr = ''
			+ '<tr title="0">'
			+ '		<td class="prevManagerName"><input type="text" id="txtPrevManager' + addCounter + '" class="previousManInput" value="Name" onfocus="if(this.value == \'Name\') { this.value = \'\'; }" onblur="if(this.value == \'\') { this.value = \'Name\'; }" /></td>'
			+ '		<td class="prevManagerEmail"><input type="text" id="txtPrevManagerEmail' + addCounter + '" class="previousManInput" value="Email Address" onfocus="if(this.value == \'Email Address\') { this.value = \'\'; }" onblur="if(this.value == \'\') { this.value = \'Email Address\'; }" /></td>'
			+ '		<td>'
			+ '			<div class="deleteIcon" onclick="Intranet.RemoveRow(this)"></div>';
        if ($('table.managerTable tr').length < '7')
            outputStr += '			<div class="addIcon" onclick="Intranet.AddRow(this)"></div>';
        outputStr += '		</td>'
			+ '</tr>';
        if ($('table.managerTable tr').length <= '7') {
            $(ele).closest('table').append(outputStr);
            $(ele).remove();
        }
    };

    this.ShowUserOverlay = function() {
        $('#overlayContainer ul li').removeClass('formError');
        $('#overlayContainer .errorMsg').hide();
        $('#overlayContainer input').val('');
        $('#overlayContainer #generalContent').show();
        $('#overlayContainer #duplicateContent').hide();
        $('#overlayContainer .mainTabbedContent.createUser').show();

        $('#overlayContainer').css({ left: ($(window).width() / 2) - ($('#overlayContainer').width() / 2) });
        $('#overlay').show();
        $('#overlay').fadeTo("slow", 0.7);
        $('#overlayContainer').fadeIn("normal", function() {
            $('#overlayContainer input.focusFirst').focus();
            $("#overlayClose, #overlay").unbind('click');
            $("#overlayClose, #overlay").click(
			        function(event) {
			            event.preventDefault();
			            $('#overlayContainer').fadeOut("normal");
			            $('#overlay').fadeTo("slow", 0, function() { $('#overlay').hide() });
			        }
		        );
        });
    }

    this.CreateUser = function() {
        if (Intranet.CreateUserFormIsValid()) {
            $.ajax({
                type: "POST",
                url: "/Modules/Intranet/Users/Default.aspx/CreateUser",
                data: '{"firstname":"' + $('#overlayContainer #txtFirstName').val() + '","surname":"' + $('#overlayContainer #txtSurname').val() + '","email":"' + $('#overlayContainer #txtEmail').val() + '","password":"' + $('#overlayContainer #txtPassword').val() + '"}',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(returnData) {
                    if (returnData.d) {
                        $('#overlayContainer').fadeOut("normal");
                        $('#overlay').fadeTo("slow", 0, function() { $('#overlay').hide() });
                        __doPostBack('ctl00$ctl00$ContentPlaceHolderPageFrame$ContentPlaceHolderMain$lbtnSearch', '');
                    } else {
                        $('#overlayContainer #generalContent').hide();
                        $('#overlayContainer #duplicateContent').show();
                        $('#overlayContainer .mainTabbedContent.createUser').hide();
                    }
                },
                error: function(XMLHttpRequest, textStatus, errorThrown) {
                    console.log(textStatus + ":" + errorThrown);
                }
            });
        }
    }

    this.CreateUserFormIsValid = function() {
        var valid = true;
        $('#overlayContainer ul li').removeClass('formError');
        $('#overlayContainer .errorMsg').hide();

        if ($('#overlayContainer #txtFirstName').val() == '') {
            valid = false;
            $('#overlayContainer #txtFirstName').closest('li').addClass('formError');
        }

        if ($('#overlayContainer #txtSurname').val() == '') {
            valid = false;
            $('#overlayContainer #txtSurname').closest('li').addClass('formError');
        }
        var myRegExp = /^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9])+(\.[a-zA-Z0-9_-]+)+$/;
        if ($('#overlayContainer #txtEmail').val() == '' || !myRegExp.test($('#txtEmail').val())) {
            valid = false;
            $('#overlayContainer #txtEmail').closest('li').addClass('formError');
        }

        if ($('#overlayContainer #txtPassword').val() == '') {
            valid = false;
            $('#overlayContainer #txtPassword').closest('li').addClass('formError');
        }

        if ($('#overlayContainer #txtPasswordConf').val() == '' || $('#overlayContainer #txtPassword').val() != $('#overlayContainer #txtPasswordConf').val()) {
            valid = false;
            $('#overlayContainer #txtPasswordConf').closest('li').addClass('formError');
        }

        if (!valid) {
            $('#overlayContainer .errorMsg').show();
        }

        return valid;
    }

    this.ShowCompanyOverlay = function(id, trigger) {
        $('#overlayContainer ul li').removeClass('formError');
        $('#overlayContainer .errorMsg').hide();
        $('#overlayContainer input').val('');
        $('#overlayContainer #generalContent').show();
        $('#overlayContainer #duplicateContent').hide();
        $('#overlayContainer .mainTabbedContent.createUser').show();
        $('#overlayContainer').css({ left: ($(window).width() / 2) - ($('#overlayContainer').width() / 2) });
        $('#overlayContainer a.submitButton').attr('href', 'javascript:Intranet.AddEditCompany(' + id + ', 0);');

        $('#overlayContainer .titleBar').removeClass('editCompany');
        $('#overlayContainer .titleBar').removeClass('createCompany');
        $('#overlayContainer .titleBar').addClass('createCompany');

        if (id > 0) {
            Extranet.ReplaceWithSpinner(trigger, '/Images/Intranet/framework/spinner.gif', 24, '0 0 0 2px');
            $('#overlayContainer .titleBar').removeClass('createCompany');
            $('#overlayContainer .titleBar').addClass('editCompany');
        }

        $.ajax({
            type: "POST",
            url: "/Modules/Intranet/Company/Default.aspx/BuildCountryDropdown",
            data: '{}',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(returnData) {
                $('#overlayContainer select').html(returnData.d);

                if (id > 0) {
                    $.ajax({
                        type: "POST",
                        url: "/Modules/Intranet/Company/Default.aspx/GetCompanyDetails",
                        data: '{"id":' + id + '}',
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        success: function(returnData) {
                            if (returnData.d.ColumnValues["[org_name]"] != '')
                                $('#overlayContainer #txtCompanyName').val(returnData.d.ColumnValues["[org_name]"]);
                            if (returnData.d.ColumnValues["[org_adr_address1]"] != '')
                                $('#overlayContainer #txtAddress1').val(returnData.d.ColumnValues["[org_adr_address1]"]);
                            if (returnData.d.ColumnValues["[org_adr_address2]"] != '')
                                $('#overlayContainer #txtAddress2').val(returnData.d.ColumnValues["[org_adr_address2]"]);
                            if (returnData.d.ColumnValues["[org_adr_city]"] != '')
                                $('#overlayContainer #txtCity').val(returnData.d.ColumnValues["[org_adr_city]"]);
                            if (returnData.d.ColumnValues["[org_adr_country_id]"] != '')
                                $('#overlayContainer #ddlCountry').val(returnData.d.ColumnValues["[org_adr_country_id]"]);
                            if (returnData.d.ColumnValues["[org_adr_post_code]"] != '')
                                $('#overlayContainer #txtPostCode').val(returnData.d.ColumnValues["[org_adr_post_code]"]);
                            if (returnData.d.ColumnValues["[org_adr_telephone]"] != '')
                                $('#overlayContainer #txtTelephone').val(returnData.d.ColumnValues["[org_adr_telephone]"]);
                            if (returnData.d.ColumnValues["[org_adr_fax]"] != '')
                                $('#overlayContainer #txtFax').val(returnData.d.ColumnValues["[org_adr_fax]"]);
                            if (returnData.d.ColumnValues["[org_adr_website]"] != '')
                                $('#overlayContainer #txtWebsite').val(returnData.d.ColumnValues["[org_adr_website]"]);


                            $('#overlayContainer a.submitButton').attr('href', 'javascript:Intranet.AddEditCompany(' + id + ', ' + returnData.d.ColumnValues["[org_adr_id]"] + ');');

                            $('#overlay').show();
                            $('#overlay').fadeTo("slow", 0.7);
                            $('#overlayContainer').fadeIn("normal", function() {
                                $('#overlayContainer input.focusFirst').focus();
                                $("#overlayClose, #overlay").unbind('click');
                                $("#overlayClose, #overlay").click(
			                        function(event) {
			                            event.preventDefault();
			                            $('#overlayContainer').fadeOut("normal");
			                            $('#overlay').fadeTo("slow", 0, function() { $('#overlay').hide() });
			                        }
		                        );
                            });
                            $(trigger).next('img').remove();
                            $(trigger).show();
                        },
                        error: function(XMLHttpRequest, textStatus, errorThrown) {
                            console.log(textStatus + ":" + errorThrown);
                        }
                    });
                } else {
                    $('#overlay').show();
                    $('#overlay').fadeTo("slow", 0.7);
                    $('#overlayContainer').fadeIn("normal", function() {
                        $('#overlayContainer input.focusFirst').focus();
                        $("#overlayClose, #overlay").unbind('click');
                        $("#overlayClose, #overlay").click(
	                        function(event) {
	                            event.preventDefault();
	                            $('#overlayContainer').fadeOut("normal");
	                            $('#overlay').fadeTo("slow", 0, function() { $('#overlay').hide() });
	                        }
                        );
                    });
                }
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                console.log(textStatus + ":" + errorThrown);
            }
        });
    }

    this.AddEditCompany = function(id, addressId) {
        if (Intranet.CreateCompanyFormIsValid()) {
            $.ajax({
                type: "POST",
                url: "/Modules/Intranet/Company/Default.aspx/AddEditCompany",
                data: '{"id":' + id + ',"name":"' + $('#overlayContainer #txtCompanyName').val() + '","addressId":' + addressId + ',"address1":"' + $('#overlayContainer #txtAddress1').val()
                    + '","address2":"' + $('#overlayContainer #txtAddress2').val() + '","city":"' + $('#overlayContainer #txtCity').val()
                    + '","countryID":' + $('#overlayContainer #ddlCountry').val() + ',"postcode":"' + $('#overlayContainer #txtPostCode').val()
                    + '","telephone":"' + $('#overlayContainer #txtTelephone').val() + '","fax":"' + $('#overlayContainer #txtFax').val()
                    + '","website":"' + $('#overlayContainer #txtWebsite').val() + '"}',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(returnData) {
                    if (returnData.d) {
                        $('#overlayContainer').fadeOut("normal");
                        $('#overlay').fadeTo("slow", 0, function() { $('#overlay').hide() });
                        __doPostBack('ctl00$ctl00$ContentPlaceHolderPageFrame$ContentPlaceHolderMain$lbtnSearch', '');
                    } else {
                        $('#overlayContainer #duplicateContent').show();
                    }
                },
                error: function(XMLHttpRequest, textStatus, errorThrown) {
                    console.log(textStatus + ":" + errorThrown);
                }
            });
        }
    }

    this.CreateCompanyFormIsValid = function() {
        var valid = true;
        $('#overlayContainer ul li').removeClass('formError');
        $('#overlayContainer .errorMsg').hide();

        if ($('#overlayContainer #txtCompanyName').val() == '') {
            valid = false;
            $('#overlayContainer #txtCompanyName').closest('li').addClass('formError');
        }

        if ($('#overlayContainer #txtAddress1').val() == '') {
            valid = false;
            $('#overlayContainer #txtAddress1').closest('li').addClass('formError');
        }

        if ($('#overlayContainer #txtCity').val() == '') {
            valid = false;
            $('#overlayContainer #txtCity').closest('li').addClass('formError');
        }

        if ($('#overlayContainer #ddlCountry').val() == '0') {
            valid = false;
            $('#overlayContainer #ddlCountry').closest('li').addClass('formError');
        }

        if ($('#overlayContainer #txtPostCode').val() == '') {
            valid = false;
            $('#overlayContainer #txtPostCode').closest('li').addClass('formError');
        }

        if ($('#overlayContainer #txtTelephone').val() == '') {
            valid = false;
            $('#overlayContainer #txtTelephone').closest('li').addClass('formError');
        }

        if (!valid) {
            $('#overlayContainer .errorMsg').show();
        }

        return valid;
    }
}

var Extranet = new function() {
    this.FiltersOpen = function(id) {
        // set the panel to active
        $(".filtersItemList" + id.toString()).closest(".filterItem").addClass("activeIE7");
        // show the dropdown list
        $(".filtersItemList" + id.toString()).fadeIn("slow");
        // set mask height
        var listHeight = $(".toggleItem2").height();
        // z index hack on content
        $(".resultsContainer").css('z-index', '-1');

    };

    this.FiltersClose = function(id) {
        // close the dropdown list
        $(".filtersItemList" + id.toString()).fadeOut("def");
        // remove active class
        $(".filtersItemList" + id.toString()).closest(".filterItem").removeClass("activeIE7");
        // z index hack on content
        $(".resultsContainer").css('z-index', '');
    };

    this.RemoveFilter = function(id, name) {
        // uncheck all checkboxes in teh dropdown
        $("INPUT[name=" + name + "][type='checkbox']").attr('checked', false);
        $("INPUT[name=checkAll" + name + "][type='checkbox']").attr('checked', false);
        // remove the active filter BG
        $(".filtersItem" + id.toString()).removeClass("active");
        $(".rmbtn" + id.toString()).hide();
    };

    this.CheckAll = function(triggerId, containerId, spanId) {
        $(".dropdownText#" + containerId + " ul INPUT[type='checkbox']").attr('checked', $('#' + triggerId).is(':checked'));
        Extranet.UpdateSelected(spanId, containerId);
    };

    this.UpdateSelected = function(spanId, containerId) {
        $('#' + spanId).html('(' + $(".dropdownText#" + containerId + " ul INPUT[type='checkbox']:checked").size() + ')');
    }

    this.ResetAllFilters = function() {
        $(".searchContainer input[type='text']").val('');
        $(".searchContainer input[type='checkbox']").attr('checked', false);
        $(".searchContainer .rdoClients input[type='radio']").attr('checked', true);
        $(".searchContainer .rdoUsers input[type='radio']").attr('checked', false);
        Extranet.UpdateSelected('locationCount', 'locations');
        Extranet.UpdateSelected('skillCount', 'skills');
    }

    this.ConfigureViewCV = function(candidateId) {
        var rowClicked = $('div.resultsTable table tr.summaryRow a.expandLink#expandLink' + candidateId).closest('tr.summaryRow')
        $.ajax({
            type: "POST",
            url: "/Homepages/Extranet/Default.aspx/ConfigureViewCV",
            data: '{"candidateId":' + candidateId + '}',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(returnData) {
                if (returnData.d) {
                    rowClicked.next().children('td').eq(0).children('div.itemDetailContainer').eq(0).children('div.OptionsContainer').eq(0).children('ul').eq(0).children('li.liViewCV').eq(0).children('a').eq(0).attr('href', 'javascript:Extranet.GetCandidateCV(' + candidateId + ');');
                    rowClicked.next().children('td').eq(0).children('div.itemDetailContainer').eq(0).children('div.OptionsContainer').eq(0).children('ul').eq(0).children('li.liViewCV').eq(0).children('a').eq(0).show();
                } else {
                    rowClicked.next().children('td').eq(0).children('div.itemDetailContainer').eq(0).children('div.OptionsContainer').eq(0).children('ul').eq(0).children('li.liViewCV').eq(0).children('a').eq(0).hide();
                }
                rowClicked.toggleClass("expanded");
                rowClicked.addClass('animating');
                rowClicked.next().toggleClass("hiddenRow");
                rowClicked.next().children('td').eq(0).children('div.itemDetailContainer').eq(0).slideToggle(700, function() {
                    rowClicked.next().children('td').eq(0).children('div.itemDetailContainer').eq(0).children('div.itemDetailHeader').toggleClass("IERelativeFix");
                    rowClicked.removeClass("animating");
                });
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                console.log(textStatus + ":" + errorThrown);
            }
        });
    }

    this.GetCandidateCV = function(candidateId) {
        popupLink('/Modules/Extranet/CV/ViewCV.aspx?candidateId=' + candidateId);
    }

    this.SendEmail = function(templateCode, candidateFirstName, candidateLastName) {
        $.ajax({
            type: "POST",
            url: "/Homepages/Extranet/Default.aspx/SendEmail",
            data: '{"templateCode":"' + templateCode + '","candidateFirstName":"' + candidateFirstName + '","candidateLastName":"' + candidateLastName + '"}',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(returnData) {
                if (returnData.d) {
                    alert('Your request has been sent.');
                } else {
                    alert('Your request failed.');
                }
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                console.log(textStatus + ":" + errorThrown);
            }
        });
    }

    this.SetStoredProfile = function(trigger, candidateId, removeRow) {
        // The logic is reversed as the toggle happens after the save/remove.
        if ($(trigger).is('.checked')) {
            $.ajax({
                type: "POST",
                url: "/Homepages/Extranet/Default.aspx/RemoveStoredProfile",
                data: '{"candidateId":' + candidateId + '}',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function() {
                    if (removeRow) {
                        __doPostBack('ctl00$ctl00$ContentPlaceHolderPageFrame$ContentPlaceHolderMain$CandidateSearch$lbtnSearch', '');
                    } else {
                        $(trigger).toggleClass('checked');
                    }
                },
                error: function(XMLHttpRequest, textStatus, errorThrown) {
                    console.log(textStatus + ":" + errorThrown);
                }
            });
        } else {
            $.ajax({
                type: "POST",
                url: "/Homepages/Extranet/Default.aspx/SaveStoredProfile",
                data: '{"candidateId":' + candidateId + '}',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function() {
                    $(trigger).toggleClass('checked');
                },
                error: function(XMLHttpRequest, textStatus, errorThrown) {
                    console.log(textStatus + ":" + errorThrown);
                }
            });
        }
    }

    this.ReplaceWithSpinner = function(trigger, imagePath, height, margin) {
        if (height > 32)
            height = 32;
        $(trigger).after('<img src="' + imagePath + '" alt="" height="' + height + '" style="margin: ' + margin + ';" />');
        $(trigger).hide();
    }
}

var ExtranetLogon = new function() {
    this.AttemptLogon = function() {
        if (ExtranetLogon.ValidateLogonForm()) {
            var _data = '{"username":"' + $('#txtEmail').val() + '","password":"' + $('#txtPassword').val() + '","remember":' + $('#chkRememberMe').attr('checked') + '}';
            //alert(_data + '\n\n\n' + $('#chkRememberMe').attr('checked'));
            $.ajax({
                type: "POST",
                url: "/Modules/Extranet/Logon/Default.aspx/AttemptLogon",
                data: _data,
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(returnData) {
                    if (returnData.d.Success) {
                        window.location.href = returnData.d.Url;
                    } else {
                        alert(returnData.d.Message);
                    }
                },
                error: function(XMLHttpRequest, textStatus, errorThrown) {
                    console.log(textStatus + ":" + errorThrown);
                }
            });
        }
    }

    this.ClearLogonPanel = function() {
        $('#txtEmail').val('');
        $('#txtPassword').val('');
        $('#chkRememberMe').attr('checked', 'false');
    }

    this.ValidateLogonForm = function() {
        var message = '';
        var valid = true;
        if ($('#txtEmail').val() == '') {
            message += 'You must enter an email address.\n';
            valid = false;
        } else if (!ExtranetLogon.ValidateEmail($('#txtEmail').val())) {
            message += 'You must enter a valid email.\n';
            valid = false;
        }
        if ($('#txtPassword').val() == '') {
            message += 'You must enter a password.\n';
            valid = false;
        }

        if (message != '')
            alert(message);

        return valid;
    }

    this.ValidateEmail = function(email) {
        var str = email;

        var atPos = str.indexOf("@")
        var stopPos = str.lastIndexOf(".")

        if (atPos == -1 || stopPos == -1 || (stopPos < atPos) || (stopPos - atPos == 1)) {
            return false;
        }
        else {
            return true;
        }
    }

    this.SendNewPassword = function() {
        var valid = true;
        var message = '';

        if ($('#txtEmail').val() == '') {
            message += 'You must enter an email address.\n';
            valid = false;
        } else if (!ExtranetLogon.ValidateEmail($('#txtEmail').val())) {
            message += 'You must enter a valid email.\n';
            valid = false;
        }

        if (message != '')
            alert(message);

        if (valid) {
            $.ajax({
                type: "POST",
                url: "/Modules/Extranet/Logon/Default.aspx/ChangePasswordAndSendEmail",
                data: '{"email":"' + $('#txtEmail').val() + '"}',
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(returnData) {
                    alert(returnData.d);
                },
                error: function(XMLHttpRequest, textStatus, errorThrown) {
                    console.log(textStatus + ":" + errorThrown);
                }
            });
        }
    }

    this.ShowRegisterUserOverlay = function() {
        var overlayStr = ''
            + '<div class="titleBar registeredUser"></div>'
            + '<div class="generalContent">'
		    + ' <p>Please complete the following form and we will email you your account details.</p>'
		    + '</div>'
		    + '     <div class="errorMsg" style="display:none">'
            + '         <div class="errorIcon"></div>'
            + '         <p>Please check your details below</p>'
            + '         <div class="clear"></div>'
            + '     </div>'
            + '     <div class="clear"></div>'
	        + '<div class="mainTabbedContent registerUser">'

            + '     <div class="mandatory">All Mandatory fields are marked with an asterisk <span>*</span></div>'

			+ '       <div class="formContainer">'
		    + '          <ul>'
		    + '              <li class="radio">'
		    + '                  <input type="radio" class="" name="userType" id="rdoCandidate" checked="checked" />'
		    + '                  <label for="rdoCandidate" class="" >Candidate</label>'
		    + '                  <input type="radio" class="" name="userType" id="rdoClients" />'
		    + '                  <label for="rdoClients" class="">Client</label>'
		    + '               </li>'
		    + '              <li>'
		    + '                  <label for="txtForename" class="">First Name <span>*</span></label>'
		    + '                  <input type="text" id="txtForename" />'
		    + '               </li>'
		    + '              <li>'
		    + '                  <label for="txtSurname" class="">Last Name <span>*</span></label>'
		    + '                  <input type="text" id="txtSurname" />'
		    + '              </li>'
		    + '              <li>'
		    + '                  <label for="txtRegisterEmail" class="">Email <span>*</span></label>'
		    + '                  <input type="text" id="txtRegisterEmail" />'
		    + '              </li>'
		    + '              <li>'
		    + '                  <label for="txtEmailConf" class="">Email Confirm <span>*</span></label>'
		    + '                  <input type="text" id="txtEmailConf" />'
		    + '              </li>'
		    + '              <li>'
            + '                  <a href="#" onclick="lclRegister();" class="submitButton"></a>'
            + '                  <div class="clear"></div>'
            + '              </li>'
		    + '          </ul>'

		    + '     <div class="clear"></div>'
		    + '   </div>'
		    + '   <div class="clear"></div>'
		    + '</div>';
        var callback = function() {
            // checkbox click
            $('div.checkBox').click(function() {
                $(this).toggleClass('checked');
            });
        };
        GenerateLoginOverlay(overlayStr, 440, callback);
    }

    // general framework
    GenerateLoginOverlay = function(content, width, _callback) {
        var outputStr = ''
		    + '<div class="overlayContainer" style="width:' + width + 'px;" id="overlayContainer">'
		    + '	<div class="overlayContentContainer">'
		    + '	    <a href="#" id="overlayClose" class="overlayClose"></a>'
		    + '     ' + content
		    + ' </div>'
		    + ' <div class="clear"></div>'
		    + ' <div class="overlayFooter"></div>'
		    + '</div>';

        $('body').append(outputStr);
        $('#overlayContainer').css({ left: ($(window).width() / 2) - ($('#overlayContainer').width() / 2) });
        $('#overlay').show();

        //                if ($.browser.safari) { bodyelem = $("body") } else { bodyelem = $("html,body") } bodyelem.scrollTop(100)
        //                bodyelem.animate({
        //                    scrollTop: $("#siteHolder").offset().top
        //                }, 1500);

        $('#overlay').fadeTo("slow", 0.7);
        $('#overlayContainer').fadeIn("normal", function() {
            $('#overlayContainer input.focusFirst').focus();

            if (_callback !== undefined && typeof (_callback) == "function") {
                _callback();


            }

            $("#overlayClose, #overlay").click(
			    function(event) {
			        event.preventDefault();
			        $('#overlayContainer').fadeOut("normal", function() {
			            $(this).remove();
			        });
			        $('#overlay').fadeTo("slow", 0, function() { $('#overlay').hide() });
			    }
		    );
        });
    }

    lclRegister = function() {
        if (lclValidateRegistration()) {
            PageMethods.CheckUser($('#txtRegisterEmail').val(), OnCallPerformCheckUserComplete, OnCallError, '');
        }
    }

    function OnCallPerformCheckUserComplete(result, txtresult, methodName) {
        if (result == 0) {
            var firstName = $('#txtForename').val();
            var lastName = $('#txtSurname').val();
            var email = $('#txtRegisterEmail').val();
            var relationship = "INDIVIDUAL";

            // check which relationship we're interested in
            if ($('#rdoClients').attr("checked"))
                relationship = "CLIENT";

            // Add new contact
            PageMethods.RegisterUser(firstName, lastName, email, relationship, OnCallPerformRegisterUserComplete, OnCallError, '')
        }
        else {
            // Show info message
            $('.generalContent').html('<p>Your email address already exists.  Please use the Forgotten Password functionality.</p>');

            // Hide form
            $('.registerUser').addClass('hidden');
        }
    }

    function OnCallPerformRegisterUserComplete(result, txtresult, methodName) {
        // Display message
        $('.generalContent').html('<p>Thank you for registering.</p>');

        // Hide form
        $('.registerUser').addClass('hidden');
    }

    function OnCallError(error, userContext, methodName) {
        if (error !== null) {
            alert(error.get_message());
        }
    }

    lclValidateRegistration = function() {
        var valid = true;

        // First Name
        if ($('#txtForename').val() == "") {
            $('#txtForename').parent('li').addClass('formError');
            valid = false;
        }
        else {
            $('#txtForename').parent('li').removeClass('formError');
        }

        // Last Name
        if ($('#txtSurname').val() == "") {
            $('#txtSurname').parent('li').addClass('formError');
            valid = false;
        }
        else {
            $('#txtSurname').parent('li').removeClass('formError');
        }

        // Email is valid

        if (!ExtranetLogon.ValidateEmail($('#txtRegisterEmail').val())) {
            $('#txtRegisterEmail').parent('li').addClass('formError');
            valid = false;
        }
        else {
            // email confirmed
            if ($('#txtEmailConf').val() == "") {
                $('#txtEmailConf').parent('li').addClass('formError');
                valid = false;
            }
            else {
                // email and confirmation match
                if ($('#txtRegisterEmail').val() != $('#txtEmailConf').val()) {
                    $('#txtRegisterEmail').parent('li').addClass('formError');
                    $('#txtEmailConf').parent('li').addClass('formError');
                    valid = false;
                }
                else {
                    $('#txtRegisterEmail').parent('li').removeClass('formError');
                    $('#txtEmailConf').parent('li').removeClass('formError');
                }
            }
        }

        if (!valid)
            $('.errorMsg').css({ display: 'block' });
        else
            $('.errorMsg').css({ display: 'none' });

        return valid;
    }
}
