﻿/*SetConfiguration*/
var format = '';
var itemsToShow = 50;
var lang = 'nl';
var scrollItems = 5;
var scrollDisplayItems = 5;
var scrollInterval = 7000;
var useGA = 'false';
var functionID = '1000';
var functionName = '';
var moreText = '';
var hlMore = '';
var uRL = '';
var newWindow = 'true';

function SetConfiguration(inFormat, inUseGA, inHlMore, inMoreText, inUrl, inNewWindow) {
    format = inFormat;
    useGA = inUseGA.toLowerCase();
    hlMore = inHlMore;
    moreText = inMoreText;
    uRL = inUrl;
    newWindow = inNewWindow.toLowerCase();
}

function jobatSearch(keywordID, regionID, jobatUrl, culture, query) {
    var regio = document.getElementById(keywordID);
    var keyword = document.getElementById(regionID);
    var url = '';
    
    if (jobatUrl.lastIndexOf('/') == jobatUrl.length - 1)
        url = jobatUrl + '/' + culture + '/jobs_1000_{0}.aspx';
    else
        url = jobatUrl + culture + '/jobs_1000_{0}.aspx';
        
    if (regio && keyword) {
        if (regio.value == '-1')
            url = url.replace('{0}', '');
        else
            url = url.replace('{0}', regio.value);

        if (keyword.value == '')
            url = url;
        else
            url = url + '?keyword=' + keyword.value;

        if (query) {
            if (query != '') {
                if (url.indexOf('?', 0) > 0)
                    url = url + '&' + query;
                else
                    url = url + '?' + query;
            }
        }

        if (newWindow == 'true')
            window.open(url);
        else
            window.location = url;
    }
}



/*READ AND DISPLAY XML TICKERS*/
function ReadJobs(xml) {
    var counter = 0;

    $(xml).find('job').each(function() {
        if (counter < itemsToShow) {
            counter++;
            var id = $(this).find('id').text();
            var title = $(this).find('jobtitle').text();
            var baseline = $(this).find('companyName').text();
            var description = $(this).find('Shortjobdescription').text();

            DisplayJobs(id, title, baseline, description);
        }
    });

    if (counter > 0) {

        var navigation = document.getElementById('jobat_navigation');
        var height = 540 / (counter / 5);
        if (navigation) {
            for (var i = 0; i < (counter / 5); i++) {
            
                if (i == 0) {
                    navigation.innerHTML += '<a class="top" style="height:' + height  + 'px"></a>';
                }
                else if (i == (counter / 5) - 1) {
                    navigation.innerHTML += '<a class="center" style="height:' + height + 'px; background-position:center ' + (height - 10) + 'px;"></a>';
                }
                else {
                    navigation.innerHTML += '<a style="height:' + height + 'px"></a>';
                }
            }
        }
        
        InitScroller();
    }

    return counter;
}

function DisplayJobs(id, title, baseline, description) {
    var formattedtitle = GetFormattedTitle(title, 50, 40);

    if (format == '336x600') {
        formattedtitle = GetFormattedTitle(title, 50, 40);
    }
    else if (format == '300x600') {
        formattedtitle = GetFormattedTitle(title, 50, 40);
    }
    
    var query = MakeGAQuery(id);
    var onClickAction = '';

    if (newWindow == 'true')
        onClickAction = 'window.open(\'http://www.jobat.be/' + lang + '/jobdetail/index.aspx' + query + '\');';
    else
        onClickAction = 'parent.location.href = \'http://www.jobat.be/' + lang + '/jobdetail/index.aspx' + query + '\';';

    if (description.length > 0) {
        $('<div></div>').html('<div id="job_' + id + '" class="item_jobat" onclick="' + onClickAction + '"><div class="itemtitle_jobat" id="title_' + id + '"><h3>' + formattedtitle + '</h3><b>' + baseline + '</b></div><div id="desc_' + id + '" class="description_jobat"></div></div>').appendTo('#items_jobat');
        DisplayDescriptionFast(id, description);
    }
    else {
        $('<div></div>').html('<div class="item_jobat" onclick="' + onClickAction + '"><h3>' + formattedtitle + '</h3><b>' + baseline + '</b></div>').appendTo('#items_jobat');
    }
}

function InitScroller() {
    $(document).ready(function() {
        $("#scroller_jobat").scrollable({ vertical: true, size: scrollDisplayItems }).circular().navigator().mousewheel().autoscroll({
            steps: scrollItems,
            interval: scrollInterval
        });
    });
}

function AddJobs() {
    var filename = GetFileName();

    $.ajax({
        type: "GET",
        url: filename,
        dateType: "xml",
        success: function(xml) {
            var counter = ReadJobs(xml);

            if (counter == 0) {
                AddDefaultJobs();
            }
        },
        error: function() {
            AddDefaultJobs();
        }
    });


    var link = document.getElementById(hlMore);
    if (link) {
        link.href = uRL.replace('{0}', functionID) + MakeGAQuery(-1);
        link.innerHTML = moreText.replace('{0}', functionName);
    }
}

function AddDefaultJobs() {
    var defaultfilename = GetDefaultFileName();

    $.ajax({
        type: "GET",
        url: defaultfilename,
        dateType: "xml",
        success: function(xml) {
            ReadJobs(xml);
        }
    });
}

/*DISPLAY FUNCTIONS*/

function MakeGAQuery(id) {
    if (useGA == 'true') {
        var query = '?utm_source={0}&utm_medium={1}&utm_term={2}&utm_campaign={3}';

        var utmsource = 'itprofessional';
        var utmmedium = 'rightnav';
        var utmterm = 'job';
        var utmcampaign = 'jobat-itpro';

        query = query.replace('{0}', utmsource);
        query = query.replace('{1}', utmmedium);
        query = query.replace('{2}', utmterm);
        query = query.replace('{3}', utmcampaign);
        if (id > 0) {
            query = query + '&jobid=' + id;
        }

        return query
    }
    else {
        if (id > 0) {
            return '?jobid=' + id;
        }
        else {
            return '';
        }
    }
}

function DisplayDescriptionFast(id, description) {
    var job = document.getElementById('job_' + id);
    var title = document.getElementById('title_' + id);
    var desc = document.getElementById('desc_' + id);
    var availableHeight = job.clientHeight - title.clientHeight;
    var shrinkDescription = false;
    desc.innerHTML = description;

    while (desc.clientHeight >= availableHeight) {
        shrinkDescription = true;

        var tempDesc = desc.innerHTML;

        if (tempDesc.length > 20) {
            tempDesc = tempDesc.substring(0, tempDesc.length - 20);

            var lastIndexOfSpace = tempDesc.lastIndexOf(' ');

            if (lastIndexOfSpace > 0) {
                tempDesc = tempDesc.substring(0, lastIndexOfSpace) + '...';

            }
            else
            { tempDesc = ''; }
        }
        else {
            tempDesc = '';
        }

        if (tempDesc.length < 30) {
            desc.innerHTML = '';
            break;
        }

        desc.innerHTML = tempDesc;
    }

    if (!shrinkDescription) {
        if (description.length > 100) {
            if (description.lastIndexOf('.') != description.length - 1) {
                var indexOfLastSpace = description.lastIndexOf(' ');

                if (indexOfLastSpace > -1) {
                    desc.innerHTML = description.substring(0, indexOfLastSpace) + '...';
                }
                else {
                    desc.innerHTML += '...';
                }
            }
        }
    }
}

function GetFormattedTitle(title, lengthlinetitle, splitindex) {
    var words = title.split(' ');
    var result = title;

    if (words.length > 0) {
        result = '';

        for (var i = 0; i < words.length; i++) {
            var w = words[i];

            if (w.length >= lengthlinetitle) {
                if (w.substring(splitindex).length >= lengthlinetitle) {
                    w = w.substring(0, splitindex) + '- ' + w.substring(splitindex, splitindex + splitindex) + '- ' + w.substring(splitindex + splitindex);
                }
                else {
                    w = w.substring(0, splitindex) + '- ' + w.substring(splitindex);
                };
            }

            if (result == '')
                result += w;
            else
                result += ' ' + w;

        }
    }

    return result;
}

/*FILENAME*/

/*read the jobat cookie for last search region + functiontype*/
function getCookie(name) {
    var result = "";
    var myCookie = " " + document.cookie + ";";
    var searchName = " " + name + "=";
    var startOfCookie = myCookie.indexOf(searchName);

    var endOfCookie;
    if (startOfCookie != -1) {
        startOfCookie += searchName.length;
        endOfCookie = myCookie.indexOf(";", startOfCookie);
        result = myCookie.substring(startOfCookie, endOfCookie);
    }
    return result;
}

/*get the default file*/
function GetDefaultFileName() {
    var filename = "http://www.jobat.be/ticker/xml/itpro/ITPro_1000_" + lang + ".xml";
    return filename;
}

/*get the filename*/
function GetFileName() {
    var filename = GetDefaultFileName();
    var cookievalue = getCookie("ITProfile");
    var region, functiontype;
    var filenameformat = "{0}_" + lang + ".xml";

    if (cookievalue != "") {
        cookievaluesep = cookievalue.split("&");
        var strLastSearch = "";

        for (c = 0; c < cookievaluesep.length; c++) {
            cookienamevalue = cookievaluesep[c].split("=");

            if (cookienamevalue[0] == "FunctionType") {
                if (cookienamevalue[1].length > 0) {
                    filenameformat = filenameformat.replace("{0}", cookienamevalue[1]);
                    functionID = cookienamevalue[1];
                }
            }
            if (cookienamevalue[0] == "FunctionName") {
                if (cookienamevalue[1].length > 0) {
                    functionName = unescape(cookienamevalue[1]) + ' ';
                }
            }
        }

        filenameformat = filenameformat.replace("{0}", "");

        if (filenameformat != "_" + lang + ".xml") {

            if (filenameformat.indexOf("_", 0) == 0) {
                filenameformat = filenameformat.substring(1, filenameformat.length);
            }

            filename = "http://www.jobat.be/ticker/xml/itpro/ITPro_" + filenameformat
        }
    }

    return filename;
}