﻿// SignObjectExample klasės konstruktorius.
function SignObjectExample() {
	this.init();
}

// Veiksmai reikalingi kad nustatyti klasių priklausomybę
SignObjectExample.prototype = new JustaWebSignObject( );
SignObjectExample.prototype.constructor = SignObjectExample;
SignObjectExample.superclass = JustaWebSignObject.prototype;
SignObjectExample.prototype.init = function () {
	SignObjectExample.superclass.init.call( this );
}

// Laukas skirtas laikinam parašo rezultato saugojimui.
SignObjectExample.prototype.signResult = null;

 

/**
 * @desc Ši funkcija kviečiama vidyniais resursais programos pasikrovimo metu.
 *		Funkcija yra kviečiama tuo ir tik tuo atvėjų, jeigu programa pasikrove
 *		sėkmingai.
 **/
SignObjectExample.prototype.appletLoaded = function () {

	try {
		// Aktivuojame formos laukelius.
//		document.getElementById( "name" ).disabled = false;
//		document.getElementById( "company_name" ).disabled = false;
//		document.getElementById( "contact" ).disabled = false;
//		document.getElementById( "comment" ).disabled = false;
//		document.getElementById( "file_path" ).disabled = false;
		
		// Pasliepiame užrašą "Palaukite, kraunasi".
		document.getElementById( "loading" ).style.display = 'none';
	} catch( e ) {
	
	}

}

/**
 * @desc Ši funkcija kviečiama vidyniais resursais, po to, kai vartotojas
 *	 		paspaudžia pagrindinį programos mygtuką.
 *			Čia reikia surinkti, bei paruošti visus, vartotojo suteiktus duomenys,
 *			jų tolimesniam pasirašymui.
 *			Taip pat čia galima patikrinti, ar vartotojas užpyldė visus
 *			reikalaujamus laukelius.
 *			Kai visi patikrinimai baigti, reikia sukurti nauja DataToSign
 * 			objekto kopiją ir papyldyti jį surinktomis duomenymis naudojant du metodus:
 *			1. addTextField(), jeigu duomenys yra tekstas arba skaičiai.
 *			2. addFileField(), jeigu duomenys yra byla.
 *			Kai visos duomenys yra pateiktos, kvieskite this.setCallResult( "true" );
 *	 
 **/
SignObjectExample.prototype.initFieldsToSign = function () {
	this.dataToSign = new DataToSign( );
	var isFilled = "false";
	
	var v = getValue( "Tekstas" );
	this.dataToSign.addTextField( "Tekstas", v );
	
	isFilled = "true";
	
	return this.setCallResult( isFilled );
}	

/**
 * @desc Ši funkcija kviečiama vidyniais resursais tuo atvėjų, jeigu pasirašymo 
 *		procedūra buvo atlikta sėkmingai.
 *		Kad gauti pasirašymo rezultatą, reikia kviesti this.getCallResult() metodą.		
 **/
SignObjectExample.prototype.putSignResult = function ( ) {
	this.signResult = this.getCallResult();
}

/**
 * @desc Ši funkcija kviečiama vidyniais resursais, kai programa užbaigia savo
		darbą, nepriklausomai nuo vikdymo resultatu.
		Naudojant perduodamo argumento reikšmę galima nustatyti priežastį, dėl
		kurios programa baigė asvo darbą.
 * @param String reason Aprašymas suteikiantis informaciją kodėl programa 
		užsidarė.
 * @see this.SIGN_SUCCESSFULL Pasirašymas ivyko sekmingai
 * @see this.SIGN_FAILED Pasirašymas žlugo
 * @see this.CANCELED Vartotojas atšauke pasirašymą
 * @see this.INIT_FAILED Nepavyko pasilesti programos
 * @see this.INTERNAL_ERROR Įvyko vidyne klaida
 **/
SignObjectExample.prototype.endSign = function ( reason ) {
	// Move focus to browser window.
	window.focus();
	
	// Under Opera SWICH construct do not work as expected
	// so IF was choosen.
	// Treat here all reasons you interesting in.
	if( reason == this.CANCELED ) {
		// User has canceled sign procedure or close dialog.
		
	}
	 else if( reason == this.SIGN_FAILED ) {
		// In some reason sign procedure has failed
		
	}
	 else if( reason == this.SIGN_SUCCESSFULL ) {
		// Data was signed successfully
		if( null == this.signResult ) {
	
			if (this.SIGN_FAILED_Message)
    		{
	    	    alert( this.SIGN_FAILED_Message );
		    }
		    else
		    {
			    alert( "Klaida, pasirašant duomenys!" );
			}    
		} else {
			this.sendForm();
		}
	}
	 else if( reason == this.INIT_FAILED ) {
		// In some reason "Justa WEB" has failed to start sign. 
		if (this.INIT_FAILED_Message)
		{
		    alert( this.INIT_FAILED_Message );
		}
		else
		{
		    alert( "Nepavyko pasileisti pasirašymo programos!" );
		}
	}
	 else {
		// Unknown reason. Reasons may extends in the future.
		alert('Unknown error');
	}

	// Do here somthing special depend on you requirements
}

// Saugo formos action parametro reikšmę
SignObjectExample.prototype.formAction = "";
/**
 * @desc Nustato formos action parametrą.
 **/
SignObjectExample.prototype.setFormAction = function ( action ) {
	this.formAction = action;
}

/**
 * @desc Dinamiškai sukuriam formą ir išsiunčiame ją.
 **/
SignObjectExample.prototype.sendForm = function (  ) {

		// Create form
		var form = document.createElement( "form" );
		// Set send method
		form.method = "POST";
		// Set url to send
		form.action = this.formAction;
		// Create input field
		var inputF1 = document.createElement( "input" );
		// Set input type to hidden
		inputF1.type = "hidden";
		// Set field name
		inputF1.name = "jsdc";
		// Assign signature result
		inputF1.value = this.signResult;
		// Append input field to form
		form.appendChild( inputF1 );
		// Append form to current document's body
		document.body.appendChild( form );
		// Make form invisible
		form.style.display = "none";
		// Submit form
		form.submit();

}

// Funkcija nepriklauso klasei.
function getValue( id ) {
	var field = document.getElementById( id );
	return field.value;
}