// JavaScript Document
var VPARVersion = navigator.appVersion.split("MSIE");
var VPVersion = parseFloat(VPARVersion[1]);
var VPInfixServerErrorFunc = null;
var VPUpdateCompleteFunc = null;

var VPOnImageMapClicked = null;

function VPFixPNG(myImage) 
{
    if ((VPVersion >= 5.5) && (VPVersion < 7) && (document.body.filters)) 
    {
		var imgID = (myImage.id) ? "id='" + myImage.id + "' " : ""
		var imgClass = (myImage.className) ? "class='" + myImage.className + "' " : ""
		var imgTitle = (myImage.title) ? 
					 "title='" + myImage.title  + "' " : "title='" + myImage.alt + "' "
		var imgStyle = "display:inline-block;" + myImage.style.cssText
		var strNewHTML = "<span " + imgID + imgClass + imgTitle
				  + " style=\"" + "width:" + myImage.width 
				  + "px; height:" + myImage.height 
				  + "px;" + imgStyle + ";"
				  + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
				  + "(src=\'" + myImage.src + "\', sizingMethod='scale');\"></span>"
		myImage.outerHTML = strNewHTML
    }
}

var VPChanged = false;
var VPAutoUpdate = true;
var VPCurrentFocus = null;
var VPCurrentType = null;
var VPCurrentPage = null;
function VPSwapImage(name, type, session, template_id, updatefck)
{
	// upcount used a hash to force updates
	var d = new Date(); 
	var upcount = d.getTime();
	var pdf_id = "";
	
	VPCurrentFocus = name;
	VPCurrentType = type;
	// Get session and template_id if not supplied 
	if(session == null)
	{
		var hash;
		
		// Get the hash if there is one 
		// If VPParams set use it instead
		if(VPParams != null)
			hash = VPParams;
		else
			hash = location.hash.substring(1);
			
		var params = hash.parseQuery();
		session = params['Session'];
		template_id = params['Template_id'];
		// pdf_id is also a valid way of interacting with Template objects
		if(typeof(template_id) == "undefined")
			pdf_id = "&Pdf_id=" + params['Pdf_id'];
	}
	
	/* Get scaleMode and scaleValue if specified in the url, hash
		or in VPxParams */
	// Get the hash if there is one 
	// If VPParams set use it instead
	var hash;
	if(VPParams != null)
		hash = VPParams;
	else
		hash = location.hash.substring(1);
	if(hash == '')
		var parseParams = location.href;
	else	
		var parseParams = hash;
	if((typeof(VPxParams) != "undefined") && (VPxParams != null))
		parseParams += "&" + VPxParams;
	var params = parseParams.parseQuery();
	if(params['ScaleMode'] != null)
		ScaleMode = params['ScaleMode'];
	else
		ScaleMode = "percent";
	if(params['ScaleValue'] != null)
		ScaleValue = params['ScaleValue'];
	else
		ScaleValue = "100";
	/* If VPCurrentPage not set then do it now */
	if(VPCurrentPage == null)
	{
		if(params['PageNum'] != null)
			VPCurrentPage = params['PageNum'];
		else
			VPCurrentPage = 1;
	}
		
	if($('tempmapover') != null)
	{
		if(VPChanged == true && VPAutoUpdate == true)
		{
			VPChanged = false;
			
			/* If tinymce is being used ensure changes get saved */
			if(typeof(tinyMCE) != "undefined")
				tinyMCE.triggerSave(true,true);
				
			if(updatefck == true && (typeof(FCKeditor) != "undefined"))
			{
				$$('textarea[id^=VPF]').each(function(s) { 
					var oFCKeditor = FCKeditorAPI.GetInstance($(s).id);
					oFCKeditor.UpdateLinkedField();
				});
			}

			$('VPInterfaceField').value = "imageMap";
			var form = $('VPFormPDFGen');
			
			// Ensure that if Defer field is specified that it is set to false
			if(typeof(form.elements["Defer"]) != "undefined")
			{
				form.elements["Defer"].value = "false";
			}
			
			new Ajax.Request(form.action, {
							 method: 'post', parameters: form.serialize() + "&Ajax=true&Hash=" + upcount + "&ScaleMode=" + ScaleMode + "&ScaleValue=" + ScaleValue + "&PageNum=" + VPCurrentPage,
							 onSuccess: function(response) {
								var d = new Date(); 
								var hash = d.getTime();
								
								/* If there is a javascript function supplied for infixServer errors
								use it */
								if((VPInfixServerErrorFunc != null) && 
								   (response.responseText.indexOf('Infix Server Error') != -1))
								{
									eval(VPInfixServerErrorFunc + '(response.responseText)');
									return;
								}
								
								$('tempmapover').src = VPBase + "Interface.php?Object=TemplateGenPDF&Interface=ImageOverlay&Name=" + name + "&Type=" + type + "&Session=" + session + "&Template_id=" + template_id + "&ScaleMode=" + ScaleMode + "&ScaleValue=" + ScaleValue + "&PageNum=" + VPCurrentPage + "&b=" + hash + pdf_id;
								$('tempmapover').onLoad=VPFixPNG($('tempmapover'));
								$('tempmap').src = VPBase + "Interface.php?Object=TemplateGenPDF&Interface=Image&Name=" + name + "&Session=" + session + "&Template_id=" + template_id + "&ScaleMode=" + ScaleMode + "&ScaleValue=" + ScaleValue + "&PageNum=" + VPCurrentPage + "&b=" + hash + pdf_id;
								$('tempmap').onLoad=VPFixPNG($('tempmap'));
								
								// Will have been returned a new image map
								// Named with a hash. This solves a bug with replacing image maps
								// in Mozilla based browsers
								var imgmapdiv = $('tempimgmapdiv');
								imgmapdiv.update(response.responseText);
								$('transmapover').useMap = "#tempmap" + upcount;
								
								if(VPUpdateCompleteFunc != null)
									eval(VPUpdateCompleteFunc + '()');
							 } 
			});
			$('VPInterfaceField').value = "Html";
		}
		else
		{
			$('tempmapover').src = VPBase + "Interface.php?Object=TemplateGenPDF&Interface=ImageOverlay&Name=" + name + "&Type=" + type + "&Session=" + session + "&Template_id=" + template_id + "&ScaleMode=" + ScaleMode + "&ScaleValue=" + ScaleValue + "&PageNum=" + VPCurrentPage + "&b=" + upcount + pdf_id;
			$('tempmapover').onLoad=VPFixPNG($('tempmapover'));
		}
	}
	
	VPSetFocus(name);
}

function VPSelectImage(formid, assetid)
{
	img = $('VPSelImg' + formid + '-' + assetid);
	if($('VPImage' + formid) != null)
	{
		if($('VPImage' + formid).value != assetid)
		{
			$('VPImage' + formid).value = assetid;
			VPChanged = true;
		}
	}
	
	/* Remove the tick from all */
	$$('img[id^=VPSelImg' + formid + ']').each(function (i) {
		i.src="transparentpixel.gif";
	});								
	/* Set it on the one that has been clicked */
	img.src = "tick.gif";
}

function VPImageMapClicked(name, type, session, template_id)
{
	if(VPOnImageMapClicked != null)
		eval(VPOnImageMapClicked + '(name, type);');
	VPSwapImage(name, type, session, template_id, true);
}

function VPSetFocus(name)
{
	// Set the focus to the name edit
	try
	{
		if($('VPF' + name) != null)
		{
			if(typeof(FCKeditor) != "undefined" && typeof(FCKeditorAPI) != "undefined")
			{
				var oFCKeditor = FCKeditorAPI.GetInstance('VPF' + name);
				if(typeof(oFCKeditor) != "undefined")
					oFCKeditor.Focus();
				else
					$('VPF' + name).focus();
			}
			else
				$('VPF' + name).focus();
		}
	}
	catch(err)
	{
	}
}

/* Force the preview to update */
function VPUpdatePreview()
{
	VPAutoUpdate = true;
	VPChanged = true;
	if(VPCurrentFocus == null)
	{
		// Set current focus to field0 in the form
		VPCurrentFocus = $F('VPLabel0');
		VPCurrentType = $F('VPType0');
	}
	
	VPSwapImage(VPCurrentFocus, VPCurrentType, null, null, true)
	VPAutoUpdate = false;
}

/* Download the PDF as currently edited */
function VPDownloadPDF()
{
	$('VPInterfaceField').value = "downloadPDF";
	$('VPFormPDFGen').submit();
	$('VPInterfaceField').value = "Html";
}

/* View the PDF as currently edited in a browser */
function VPViewPDF()
{
	$('VPInterfaceField').value = "viewPDF";
	$('VPFormPDFGen').submit();
	$('VPInterfaceField').value = "Html";
}

/* Generate a new PDF from the template */
function VPPdfFromTemplate(Name, Description, successFunc)
{
	var d = new Date(); 
	var upcount = d.getTime();
	$('VPObjectField').value = "PdfFromTemplate";
	$('VPInterfaceField').value = "Add";
	$('VPNameField').value = Name;
	$('VPDescriptionField').value = Description;
	var form = $('VPFormPDFGen');
	new Ajax.Request(form.action, {
					 method: 'post', parameters: form.serialize() + "&Ajax=true&Hash=" + upcount,
					 onSuccess: function(response) {
									var xml = $(response.responseXML);
									var Error = xml.getElementsByTagName("Error");
									if(Error.length != 0)
									{
										Error = Error[0].childNodes[0].nodeValue;
										alert(Error);
									}
									else
									{
										var Pdf_id = xml.getElementsByTagName("Pdf_id");
										successFunc(Pdf_id[0].childNodes[0].nodeValue);
									}
								} 
	});
	$('VPObjectField').value = "TemplateGenPDF";
	$('VPInterfaceField').value = "Html";
}

function VPChangePage(pageNum)
{
	if(VPCurrentPage != pageNum)
	{
		if(VPCurrentPage == null)
			VPCurrentPage = 1;
		$('VPPageNum' + VPCurrentPage).innerHTML = "<a href='javascript:VPChangePage(" + VPCurrentPage + ")'>" + VPCurrentPage + "</a>&nbsp;";
		VPCurrentPage = pageNum;
		$('VPPageNum' + VPCurrentPage).innerHTML = VPCurrentPage + "&nbsp;";
		VPUpdatePreview();
	}
}
