deepdyve = {
    host: 'www.deepdyve.com',
	apiKey: '',
	num: 5,
    fieldName: '',
    docId: '',
    elementToShowOnSuccess: '',
    loadedTabs: {},

	addEvent: function(obj, evType, fn) { 
		if (obj.addEventListener) {
			obj.addEventListener(evType, fn, false); 
			return true;
		} else if (obj.attachEvent) {
			var r = obj.attachEvent('on' + evType, fn);
			return r;
		} else {
			return false;
		}
	},
	
    newMltTab: function(mltTabParams) {
        var dataSourceParams = '';
        if (mltTabParams.dataSources.length > 0) {
            dataSourceParams = deepdyve.encodeValuesList(mltTabParams.dataSources);
        }
        var journalParams = '';
        if (mltTabParams.journals && mltTabParams.journals.length > 0) {
            journalParams = deepdyve.encodeValuesList(mltTabParams.journals);
        }

        var linkType = 'normal';
        if (mltTabParams.linkTo) {
            linkType = mltTabParams.linkTo;
        }

        var linkTarget = 'local';
        if (mltTabParams.linkTarget) {
            linkTarget = mltTabParams.linkTarget;
        }

        var link = 'http://' + deepdyve.host + '/mlt2?fieldName=' + deepdyve.fieldName + 
                                                    '&docId=' + deepdyve.docId + 
                                                    '&n=' + deepdyve.num + 
                                                    '&key=' + deepdyve.apiKey + 
                                                    '&elementId=' + mltTabParams.resultId +
                                                    '&link=' + linkType +
                                                    '&linkTarget=' + linkTarget +
                                                    '&ds=' + dataSourceParams +
                                                    '&j=' + journalParams;
        if (mltTabParams.preload) {
            deepdyve.remoteRequest(link);
        } else {
            deepdyve.addEvent(document.getElementById(mltTabParams.linkId), 'click', function() { 
                if (deepdyve.loadedTabs.hasOwnProperty(mltTabParams.resultId)) {
                    // do nothing
                } else {
                    deepdyve.loadedTabs[mltTabParams.resultId] = 1;
                    deepdyve.remoteRequest(link); 
                }
            });
        }
    },

    remoteRequest: function(url) {
    //alert(url);
        var headId = document.getElementsByTagName("head")[0];
        var newScript = document.createElement('script');
        newScript.type = 'text/javascript';
        newScript.src = url;
        headId.appendChild(newScript);
    },

    encodeValuesList: function(a) {
        if (a.length === 0) {
            return '';
        }
        var stringBuffer = [];
        var i, len;
        for (i = 0, len = a.length; i < len; i++) {
            stringBuffer.push(encodeURIComponent(a[i]));
        }
        return stringBuffer.join(',');
    },

	showMlt: function(mltLinks, linkType, elementId, linkTarget, viewAllLink) {
        var len = mltLinks.length;
        if (len === 0) {
            delete deepdyve.loadedTabs[elementId];
            return;
        }

        if (deepdyve.elementToShowOnSuccess) {
            document.getElementById(deepdyve.elementToShowOnSuccess).removeAttribute('style');
        }

        var target = '';
        if (linkTarget === 'newWindow') {
            target = ' target="_blank" ';    
        }
		var stringBuffer = [];
		for (var i = 0; i < mltLinks.length; i++) {
            if (linkType === 'publisher') {
			    stringBuffer.push('<li><a ' + target + ' href="' + mltLinks[i].internal_external_url + '">' + mltLinks[i].internal_title + '</a>');
            } else {
			    stringBuffer.push('<li><a ' + target + ' href="http://' + deepdyve.host + mltLinks[i].url + '">' + mltLinks[i].internal_title + '</a>');
            }
            if (mltLinks[i].citation) {
                stringBuffer.push('<br />');
                stringBuffer.push('<span class="dd_citation">' + mltLinks[i].citation + '</span>');
            }
            stringBuffer.push('</li>');
		}
        if (viewAllLink) {
	        stringBuffer.push('<li><a ' + target + ' href="' + viewAllLink + '">View All</a></li>');
        }
		if (document.getElementById(elementId) != null) {
			document.getElementById(elementId).innerHTML = stringBuffer.join('');
		}
	}
}

