/* PDFObject v1.2.20111123 https://github.com/pipwerks/PDFObject Copyright (c) Philip Hutchison MIT-style license: http://pipwerks.mit-license.org/*/ /*jslint browser: true, sloppy: true, white: true, plusplus: true */ /*global ActiveXObject, window */ var PDFObject = function(obj) { if (!obj || !obj.url) { return false; } var pdfobjectversion = "1.2", //Set reasonable defaults id = obj.id || "vcipdfview", width = obj.width || "100%", height = obj.height || "100%", pdfOpenParams = obj.pdfOpenParams, url, pluginTypeFound, //declare functions createAXO, hasReaderActiveX, hasReader, hasGeneric, pluginFound, setCssForFullWindowPdf, buildQueryString, get, embed; /* ---------------------------------------------------- Supporting functions ---------------------------------------------------- */ createAXO = function(type) { var ax; try { ax = new ActiveXObject(type); } catch (e) { //ensure ax remains null ax = null; } return ax; }; //Tests specifically for Adobe Reader (aka Acrobat) in Internet Explorer hasReaderActiveX = function() { var axObj = null; if (window.ActiveXObject) { axObj = createAXO("AcroPDF.PDF"); //If "AcroPDF.PDF" didn't work, try "PDF.PdfCtrl" if (!axObj) { axObj = createAXO("PDF.PdfCtrl"); } //If either "AcroPDF.PDF" or "PDF.PdfCtrl" are found, return true if (axObj !== null) { return true; } } //If you got to this point, there's no ActiveXObject for PDFs return false; }; //Tests specifically for Adobe Reader (aka Adobe Acrobat) in non-IE browsers hasReader = function() { var i, n = navigator.plugins, count = n.length, regx = /Adobe Reader|Adobe PDF|Acrobat/gi; for (i = 0; i < count; i++) { if (regx.test(n[i].name)) { return true; } } return false; }; //Detects unbranded PDF support hasGeneric = function() { var plugin = navigator.mimeTypes["application/pdf"]; return (plugin && plugin.enabledPlugin); }; //Determines what kind of PDF support is available: Adobe or generic pluginFound = function() { var type = null; if (hasReader() || hasReaderActiveX()) { type = "Adobe"; } else if (hasGeneric()) { type = "generic"; } return type; }; //If setting PDF to fill page, need to handle some CSS first setCssForFullWindowPdf = function() { var html = document.getElementsByTagName("html"), html_style, body_style; if (!html) { return false; } html_style = html[0].style; body_style = document.body.style; html_style.height = "100%"; html_style.overflow = "hidden"; body_style.margin = "0"; body_style.padding = "0"; body_style.height = "100%"; body_style.overflow = "hidden"; }; //Creating a querystring for using PDF Open parameters when embedding PDF buildQueryString = function(pdfParams) { var string = "", prop; if (!pdfParams) { return string; } for (prop in pdfParams) { if (pdfParams.hasOwnProperty(prop)) { string += prop + "="; if (prop === "search") { string += encodeURI(pdfParams[prop]); } else { string += pdfParams[prop]; } string += "&"; } } //Remove last ampersand return string.slice(0, string.length - 1); }; //Simple function for returning values from PDFObject get = function(prop) { var value = null; switch (prop) { case "url": value = url; break; case "id": value = id; break; case "width": value = width; break; case "height": value = height; break; case "pdfOpenParams": value = pdfOpenParams; break; case "pluginTypeFound": value = pluginTypeFound; break; case "pdfobjectversion": value = pdfobjectversion; break; } return value; }; /* ---------------------------------------------------- PDF Embedding functions ---------------------------------------------------- */ embed = function(targetID) { if (!pluginTypeFound) { return false; } var targetNode = null; if (targetID) { //Allow users to pass an element OR an element's ID targetNode = (targetID.nodeType && targetID.nodeType === 1) ? targetID : document.getElementById(targetID); //Ensure target element is found in document before continuing if (!targetNode) { return false; } } else { targetNode = document.body; setCssForFullWindowPdf(); width = "100%"; height = "100%"; } targetNode.innerHTML = ''; //targetNode.innerHTML +=''; //targetNode.innerHTML +=''; //targetNode.innerHTML +=''; // targetNode.innerHTML +=''; targetNode.innerHTML += ''; //style="margin-top:-70px;" return targetNode.getElementsByTagName("object")[0]; }; //The hash (#) prevents odd behavior in Windows //Append optional Adobe params for opening document url = encodeURI(obj.url) + "#" + buildQueryString(pdfOpenParams); pluginTypeFound = pluginFound(); this.get = function(prop) { return get(prop); }; this.embed = function(id) { return embed(id); }; this.pdfobjectversion = pdfobjectversion; return this; };