document.write('<script language="JavaScript" type="text/javascript" src="http://widgets.zibb.com/js/contentEnhancement.js"></script>');

// Configuration //
var domainName = 'roadtransport.com';
var jobsDomainName = 'http://www.roadtransport.com/jobs';
var channelName = 'RT';
//use below key for localhost, change for dev/systest/uat
var zibbKey = 'b875afaa1efd4aa8952b135da07aeec0';
//point serviceURL to location of CallService.aspx
var serviceURL = '../Widgets/RelatedJobsWidget/CallService.aspx';
var format = 'XML'; // JSON or HTML or XML
var responseText;
// End Configuration //


var keywords = getmetaContents('keywords') + " ";
function getmetaContents(mn) {
    var m = document.getElementsByTagName('meta');
    for (var i in m) {
        if (m[i].name == mn) {
            return m[i].content;
        }
    }
}

var relatedJobsRequest = {
    requestId: "main",
    queryLanguage: "en",
    mode: "DocumentVectors",
    filters: {
        industry: "All",
        bucketType: "Jobs",
        domainType: "All",
        customFilter: "domain:" + domainName
    },
    hits: 10,
    sortBy: "Relevance"
}

var zodContentEnhancementQuery = {
    relatedRequests: [
                         relatedJobsRequest
                  ],
    semanticsOutput: {
        documentVectors: true
    },
    key: zibbKey
}


function zodDisplayContentEnhancement(zodContentEnhancementResult) {
    relatedResponse = zodContentEnhancementResult.relatedResponses['main'];
    if (zodContentEnhancementResult.semantics != undefined && zodContentEnhancementResult.semantics != null) {
        if (zodContentEnhancementResult.semantics.documentVectors != undefined && zodContentEnhancementResult.semantics.documentVectors != null) {
            for (var vectorIndex = 0; vectorIndex < zodContentEnhancementResult.semantics.documentVectors.length; vectorIndex++) {
                keywords += zodContentEnhancementResult.semantics.documentVectors[vectorIndex].value + " ";
            }
        }
    }
    callService();
}


function renderRelatedJobs() {
    var jobsWidget = document.getElementById("jobsWidget");

    var title = '<h2>Related Jobs</h2>';

    if (format == 'HTML') {
        jobsWidget.innerHTML = title + responseText;
    }

    if (format == 'XML') {
        var xmlDoc = loadXMLString(responseText);
        var htmlOutput = '';
        if (xmlDoc != null) {
            htmlOutput += '<ul>';
            for (var i = 0; i < xmlDoc.getElementsByTagName("job").length; i++) {
                var jobTitle = xmlDoc.getElementsByTagName("job")[i].getElementsByTagName("jobTitle")[0].childNodes[0].nodeValue;
                var jobLocation = xmlDoc.getElementsByTagName("job")[i].getElementsByTagName("jobLocation")[0].childNodes[0].nodeValue;
                var jobDescription = xmlDoc.getElementsByTagName("job")[i].getElementsByTagName("jobDescription")[0].childNodes[0].nodeValue;
                var jobUrl = xmlDoc.getElementsByTagName("job")[i].getElementsByTagName("jobLink")[0].childNodes[0].nodeValue;
                htmlOutput += '<li><a class="jobLink" target="_blank" href="http://' + jobUrl + '">' + jobTitle;
                htmlOutput += '<span class="jobLocation">&nbsp;(' + jobLocation + ')</a>';

                if (jobDescription.length > 90) {
                    jobDescription = jobDescription.substr(0, 90) + '...';
                }

                htmlOutput += '<br />' + jobDescription + '</li>';
            }
            htmlOutput += '</ul>';

            if (xmlDoc.getElementsByTagName("job").length > 0) {
                jobsWidget.innerHTML = title + htmlOutput;
            }

        }
    }

    if (format == 'JSON') {
        var returnData = eval('(' + responseText + ')');
        var htmlOutput = '';

        for (var i = 0; i < returnData.results.job.length; i++) {
            var jobTitle = returnData.results.job[i].jobtitle;
            var jobLocation = returnData.results.job[i].joblocation;
            var jobDescription = returnData.results.job[i].jobdescription;
            var jobUrl = returnData.results.job[i].joblink;
            htmlOutput += '<div class="jobTitle">' + jobTitle + '</div>';
            htmlOutput += '<div class="jobDescription"><span class="jobLocation">(' + jobLocation + ')';
            htmlOutput += '<a class="jobLink" target="_blank" href="http://' + jobUrl + '">' + jobDescription + '</a></div>';
        }

        jobsWidget.innerHTML = title + htmlOutput;
    }

    jobsWidget.style.visibility = "visible";


}

function callService(searchText) {
    var oRequest = new XMLHttpRequest();
    searchText = encodeURI(keywords);
    serviceURL = serviceURL + '?jobsDomainName=' + jobsDomainName + '&channelName=' + channelName + '&keyWords=' + searchText + '&format=' + format;
    oRequest.open("get", serviceURL, false);
    oRequest.send(null);
    var jobsWidget = document.getElementById("jobsWidget");
    if (oRequest.responseText.length > 0) {
        responseText = oRequest.responseText;
        renderRelatedJobs();
    }
    else {
        jobsWidget.style.visibility = "hidden";
    }
}

if (typeof XMLHttpRequest == "undefined" && window.ActiveXObject) {
    function XMLHttpRequest() {
        // an array of different versions in reverse order, so we try the latest version first
        var arrSignatures = ["Msxml2.XMLHTTP.6.0", "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0",
							     "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP",
							     "Microsoft.XMLHTTP"];
        // loop through the array of versions
        for (var i = 0; i < arrSignatures.length; i++) {
            try {
                // try and create an object using the current name
                var oRequest = new ActiveXObject(arrSignatures[i]);
                return oRequest;
            } catch (oError) {
                //ignore
            }
        }
        //throw new Error("MSXML is not installed on your system.");
    }
}


function loadXMLString(txt) {
    try //Internet Explorer
		{
        xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async = "false";
        xmlDoc.loadXML(txt);
        return (xmlDoc);
    }
    catch (e) {
        try //Firefox, Mozilla, Opera, etc.
				{
            parser = new DOMParser();
            xmlDoc = parser.parseFromString(txt, "text/xml");
            return (xmlDoc);
        }
        catch (e) {
            //alert(e.message)
        }
    }
    return (null);
}
