var cookie_expire = 24*1000*1000;
var LMS_AMG = function() {
	this.cmi__suspend_data = "";
	this.cmi__core__student_name = "";
	this.cmi__core__lesson_status = "";
	this.cmi__core__lesson_location = "";
	this.cmi__core__score__max;
	this.cmi__core__score__min;
	this.cmi__core__score__raw;
	this.cmi__student_preference__language="ca";
	this.sco_id = "";
	this.sco_id_temp = "";
	this.error_cod;
	this.debug_status = "info";
	this.debug = false;
	this.status_window = null;
	this.program_name = "LMS_AMG_DALEPH";
	this.program_version = "0.6";
	if (this.debug) {
		this.status_window = window.open();
		this.status_window.document.write(this.program_name+" v."+this.program_version+" ("+this.debug_status+")<br/>");
	}
}
LMS_AMG.prototype = {
	GetStatusSCO: function(sco){
		varRet = "n";
		jar = new CookieJar({  
    	 expires:cookie_expire,
     	path: '/'  
	 	});
	miLMS = jar.get('SCO_'+sco+this.cmi__core__student_name);
	if (miLMS && miLMS.student_name) {
		varRet = miLMS.lesson_status;
	} 
	return varRet;
	},
	SetSCO: function(cad) {
		//El proper initialize canviem de SCO!!
		this.sco_id_temp = cad;
	},
	GetCookie: function() {
		jar = new CookieJar({  
    	 expires:cookie_expire,
     	path: '/'  
	 	});
	miLMS = jar.get('SCO_'+this.sco_id+this.cmi__core__student_name);
	if (miLMS && miLMS.student_name) {
			/*alert("student_name:"+miLMS.student_name);
			alert("suspend_data:"+miLMS.suspend_data);
			alert("lesson_status:"+miLMS.lesson_status);
			alert("lesson_location:"+miLMS.lesson_location);*/
			this.cmi__core__student_name = miLMS.student_name;
			this.cmi__suspend_data = miLMS.suspend_data;
			this.cmi__core__lesson_status = miLMS.lesson_status;
			this.cmi__core__lesson_location = miLMS.lesson_location;
		} else {
			this.cmi__suspend_data = "";
			this.cmi__core__lesson_status = "";
			this.cmi__core__lesson_location = "";		
		}
	},
	SetCookie: function() {
		jar = new CookieJar({  
    	 expires:cookie_expire,
     	path: '/'  
	 	});
		datos = {student_name: this.cmi__core__student_name, 
						 suspend_data: this.cmi__suspend_data, 
						 lesson_status: this.cmi__core__lesson_status,
						 lesson_location:this.cmi__core__lesson_location
						}; 
		jar.put('SCO_'+this.sco_id+this.cmi__core__student_name,datos);
	},
	SerialLMS: function() {
		return(this.cmi__core__student_name+"#"+this.cmi__suspend_data+"#"+this.cmi__core__lesson_status+"#"+this.cmi__core__lesson_location);
	},
	UnserialLMS: function(variable) {
		var datos_cmi = new String(variables);
		var strDatos = datos_cmi.split("#");
		this.cmi__core__student_name = datos_cmi[0];
		this.cmi__suspend_data = datos_cmi[1];
		this.cmi__core__lesson_status = datos_cmi[2];
		this.cmi__core__lesson_location = datos_cmi[3];
	},
	LMSCommit: function() {
		//alert("Grabar Cookie!");
		this.SetCookie();
	},
	LMSFinish: function() {
		//alert("Grabar Cookie(F)!");
		this.SetCookie();
		if (this.debug_status == 'info') {
			this.writeVariables();
		}	
	},
	LMSGetDiagnostic: function() {
	},
	LMSGetErrorString: function() {
		this.syslog("LMSGetErrorString() => "+this.error_cod);
	},
	LMSGetLastError: function() {
		this.syslog("LMSGetLastError() => "+this.error_cod);
		return this.error_cod;
	},
	LMSInitialize: function() {
		//Recullir la cookie
		this.sco_id = this.sco_id_temp;
		// Carrege'm les dades del SCO
		this.GetCookie();
		if (this.cmi__core__student_name == "") {
			//alert("Carregar student demo...");
			this.cmi__core__student_name = "Demo User";
		}
		this.syslog("LMSInitialize()");
	},
	LMSGetValue: function(variable) {
		strVariable = new String(variable);
		strVariable = strVariable.replace(/\./g,"__");
		valRet = "";
		/* Validar si existeix la variable */
		this.error_cod = 0;
		eval("valRet = this."+strVariable);
		this.syslog("LMSGetValue("+variable+") => "+valRet);
		return valRet;
	},
	LMSSetValue: function(variable, valor) {
		strVariable = new String(variable);
		strVariable = strVariable.replace(/\./g,"__");
		valRet = "";
		eval("this."+strVariable+"='"+valor+"'");
		eval("valRet = this."+strVariable);
		this.syslog("LMSSetValue("+variable+","+valRet+") => "+(valRet==valor));
		return (valRet==valor);		
	},
	syslog: function(str) {
		var d = new Date();
		strData = "["+d.getHours()+":"+d.getMinutes()+":"+d.getSeconds()+" "+d.getDay()+"/"+(d.getMonth()+1)+"/"+(d.getYear()+1900)+"] ";
		tipus = "info";
		if (arguments.length == 2) {
			tipus = arguments[1];
		}
		if (this.debug_status == tipus) {
			if(this.status_window != null) {
				s_w = this.status_window;
				if (s_w.document) {
					s_w.document.write(strData+str+"<br/>");
				}
			}
		}
	},
	writeVariables: function() {
		this.syslog("==== Variables =====",this.debug_status);
		this.syslog("cmi.suspend_data="+this.cmi__suspend_data,this.debug_status);
		this.syslog("cmi.core.lesson_status="+this.cmi__core__lesson_status,this.debug_status);
		this.syslog("cmi.core.lesson_location="+this.cmi__core__lesson_location,this.debug_status);
		this.syslog("cmi.core.score.max="+this.cmi__core__score__max,this.debug_status);
		this.syslog("cmi.core.score.min="+this.cmi__core__score__min,this.debug_status);
		this.syslog("cmi.core.score.raw="+this.cmi__core__score__raw,this.debug_status);
		this.syslog("cmi.student_preference.language="+this.cmi__student_preference__language,this.debug_status);
		this.syslog("====================",this.debug_status);
	}
}

API = new LMS_AMG();