﻿
function signFileList (type)
{					
	var activexInput = new String (GetXml());			
	if (activexInput != null)
	{						
		try 
		{
			var activexOutput = GetEDok (activexInput, type);
			if (activexOutput == "" || activexOutput == null)
			{
//				alert ("No data from ActiveX :(");
				event.returnValue = false;
				return;
			}
			document.getElementById ("hidXml").value = activexOutput;
				
//			if (document.formSignForm.chkFileSave.checked)
//			{
//				var fso = new ActiveXObject("Scripting.FileSystemObject");
//				var path = new String (document.formSignForm.fileToSave.value);
//				var file = fso.CreateTextFile (path, true, true);
//				file.Write (activexOutput);
//				file.Close ();							
//				alert ("Fails ir veiksmīgi saglabāts --> " + path);
//			}
		}
		catch (e) 
		{
			alert (e.message);
			event.returnValue = false;
		}
	}
	else event.returnValue = false;
}

function GetEDok (params, type)
{
	var wizard = new ActiveXObject("EDokSignWizard.SignWizard");
	wizard.Initialize (false, true, false);
	
	if (type == "signFile")
	{
		params = params.substring (params.indexOf ("FilePath") + 10);
		params = params.substr (0, params.indexOf("\""));
		params = wizard.SignFile (params);
	}
	
	if (type == "sign") params = wizard.Sign (params);
	
	if (type == "verify")
	{
		params = params.substring (params.indexOf ("FilePath") + 10);
		params = params.substr (0, params.indexOf("\""));
		params = wizard.GetFileContent (params);
	}
	
	//check for out errors
	var s = new String ();
	s = params;
	
	if (s.substr (0, 18) == "<EDokStatusReport>")
	{
		s = s.substr (18);
		s = s.substring (s.indexOf (">") + 1);
		s = s.substr (0, s.indexOf ("</Error>"))	
		alert (s);
		return null;
	}
	
	return params;
}




function getItem (root, rootName)
{
	var ss, output = new String();
	var booleanItem = false, addToXml = false;
	output = "<ITEM name=\"" + rootName + "\">";
				
	for (var j = 0; j < document.all.length; j++)
	{
		try 
		{
			var name = "", value = "", item;
			item = document.all(j);
			ss = String (item.id);
											
			if (ss.indexOf (root + "#") > -1)
			{
				//check if checkbox, radio						
				if (item.tagName.toUpperCase () == "INPUT")
				{
					switch (item.type.toUpperCase())
					{
						case "CHECKBOX":															
						case "RADIO":								

							booleanItem = true;
							
							if (item.checked) 																		
								addToXml = true;
							
						break;
					}
				}
				
				if (item.tagName.toUpperCase() == "SELECT")
				{
					if (item.multiple) getMultipleSelect (item);
					else value = (item.item(item.selectedIndex).innerText);
					addToXml = true;
				}
								
				if ((!booleanItem && item.value.replace(" ", "") != ""))
				{					
					value = item.value;
					addToXml = true;
				}
					
				item = document.getElementById (item.id.replace ("#", "@"));						
				name = item.innerText;						
				
				if (addToXml) output += "<ITEM name=\"" + name + "\">" + value + "</ITEM>";	
			}
				
			booleanItem = false;
			addToXml = false;	
			
		}
		catch (e) {;}
	}
	output += "</ITEM>";
	return output;
}		

function GetXml ()
{
	var xml, s = new String ();
	try {			
		var sFormID = document.getElementById ("formID").value;
		var sFormVersion = document.getElementById ("formVersion").value;
		
		xml = "<EDok><Form id=\"0\" ApplicationID = \"App0\" ApplicationVersion=\"1.0.0.0\" FormID=\"" + sFormID + "\" FormVersion=\"" + sFormVersion + "\">";				
	
		for (var i = 0; i < document.all.length; i++)
		{					
			try {
				s = String (document.all(i).id);						
				if (s.indexOf ("@") == 0)
					xml += getItem (s.substr(1), document.all(i).innerText);	
				}
				catch (e) {;}
		}
		xml += "</Form></EDok>";
		//alert (xml);		
		return xml;
	}
	catch (e) {alert (e.message); return null;}
}

