/* combine : /javascript/common/libraries/jquery/jquery.pdfobject.js*/
/* 
	PDFObject, copyright (C) 2008 Philip Hutchison (pipwerks.com)
	Documentation and examples are at www.pdfobject.com 
	Version 1.2, April 2011
	MIT style license
*/

/*global ActiveXObject, window */


var PDFObject = function (obj){
	
	if(!obj || !obj.url){ return false; }

	var pdfobjectversion = "1.2",
		//Set reasonable defaults
		id = obj.id || false,
		width = obj.width || "100%",
		height = obj.height || "100%",
		pdfOpenParams = obj.pdfOpenParams,
		url,
		pluginTypeFound;
	

	/* ----------------------------------------------------
	   Supporting functions
	   ---------------------------------------------------- */

	//Tests specifically for Adobe Reader (aka Acrobat) in Internet Explorer
	var hasReaderActiveX = function (){

		var axObj = null;
		
		if (window.ActiveXObject) {
			
			axObj = new ActiveXObject("AcroPDF.PDF");
				
			//If "AcroPDF.PDF" didn't work, try "PDF.PdfCtrl"
			if(!axObj){
				axObj = new ActiveXObject("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
	var 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
	var hasGeneric = function (){
		var plugin = navigator.mimeTypes["application/pdf"];
		return (plugin && plugin.enabledPlugin);
	};
	

	//Determines what kind of PDF support is available: Adobe or generic
	var 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
	var setCssForFullWindowPdf = function (){
		
		var html = document.getElementsByTagName("html");
		if(!html){ return false; }
		
		var 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
	var 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
	var 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
	   ---------------------------------------------------- */

	
	var 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 = '<object	data="' +url +'" type="application/pdf" width="' +width +'" height="' +height +'" id="' +id +'"></object>';

		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); };
	
	return this;
	
};/* complete : /javascript/common/libraries/jquery/jquery.pdfobject.js*/


