var DashboardPDFPrinter = {
	enablePDF:true,
	//pulls all of the styles into one style tag
	getStylesheets:function()
	{
		//console.log('generating css');
		var styleSheets = document.styleSheets;
		var ret = '<style>\n';
		for (var i=0; i<styleSheets.length; i++)
		{
			var href = styleSheets[i].href;
			var cssRules = styleSheets[i].cssRules;
			var path = '';
			if (href)
			{
				path = href.substr(0,href.lastIndexOf('/'));
				path = path.substr(0,path.lastIndexOf('/'));
			}
			for (var j=0;j<cssRules.length;j++)
			{
				var css = cssRules[j].cssText;
				if (css.indexOf('../') != -1)
				{
					css = css.replace('..',path);
				}
				ret+=css+'\n';
			}
		}
		ret +='</style>\n';
		//console.log('finished generating css');
		return ret;
	},
	//returns link tags for all linked stylesheets and generates style tags for each inline stylesheet
	getStylesheetLinks:function()
	{
		var ret = '';
		try {
			//if an error occurs, the worst case will be no css included. not ideal but it won't break ie
			var styleSheets = document.styleSheets;
			var path = window.location.href;
			path = path.substr(0,path.lastIndexOf('/'));
			path = path.substr(0,path.lastIndexOf('/'));
			for (var i=0; i<styleSheets.length; i++)
			{
				var href = styleSheets[i].href;
				if (href)
				{
					//ie returns a relative path
					if (href.indexOf('../') != -1)
					{
						href = href.replace('..',path);
					}
					/* put this in to prevent caching of stylesheets (for debugging) */
					href += ((href.indexOf('?') != -1)?'&x=':'?=')+Math.random();
					ret += '<link rel="stylesheet" type="text/css" href="'+href+'" />\n';
				}
				else
				{
					//.rules for ie, .cssRules for all others
					var cssRules = styleSheets[i].cssRules || styleSheets[i].rules;
					ret += '<style>';
					for (var j=0;j<cssRules.length;j++)
					{
						var css = cssRules[j].cssText;
						if (css)
						{
							if (css.indexOf('../') != -1)
							{
								css = css.replace('..',path);
							}
						ret+=css+'\n';
						}
					}
					ret += '</style>';
				}
			}
		}
		catch(e)
		{
			console.log(e)
		}
	//	console.log(ret);
		return ret;
	},
	printPDF:function(nodeList,options)
	{
	
		if(Qualtrics.Browser.IE && Qualtrics.Browser.Version < 7)
		{
			alert('PDF creation is not currently supported in Internet Explorer 6. Please upgrade your browser.');
			return;
		}
		options = options || {};
		var htmlArray = new Array();
		var includeCSS = true;
		var css = '';
		var baseCSS = "float:left; margin-right:20px;";
		var path = window.location.href;
		var wrpath = path.substr(0,path.lastIndexOf('/'));
		path = path.substr(0,wrpath.lastIndexOf('/'));
		if (typeof(options.includeCSS) != 'undefined')
			includeCSS = options.includeCSS;
		if (includeCSS)
			css = this.getStylesheetLinks();
		if (!(nodeList instanceof Array))
		{
			nodeList = new Array(nodeList);

		}

		if (options.baseCSS)
		{
			baseCSS = options.baseCSS;
		}
		for (var i=0,ilen=nodeList.length;i<ilen;i++)
		{
			node = nodeList[i];
			var baseHTML = $(node).innerHTML;
			if (baseHTML.indexOf('../') != -1)
			{
				baseHTML = baseHTML.replace(/\.\./g,path);
			}
			if (baseHTML.indexOf('./') != -1)
			{
				baseHTML = baseHTML.replace(/\.\//g,wrpath + '/');
			}
			var html = '';
			html +='<html><head>';
			html +='<meta http-equiv="content-type" content="text/html; charset=UTF-8" />';
			html += css;
			html += '</head><body>';
			if (!options.paginate)
				html += '<div style="'+baseCSS+'">';
			html += baseHTML;
			if (!options.paginate)
				html += '</div>';
			html += '</body></html>';
			//console.log(html);
			htmlArray.push(html);
		}
		var jsonHTML = Object.toJSON(htmlArray);
		//console.log(jsonHTML);
		QDashboard.PageAction('GeneratePDF',jsonHTML,Object.toJSON(options));
		//console.log('finished generating');
	}
};