﻿RBS.System.RegisterNamespace("RBS.Form");
RBS.System.RegisterNamespace("RBS.Table");	
RBS.System.RegisterNamespace("RBS.Component");	
	
RBS.Form.Init = function(evt) 
{
	RBS.Form.Element = new RBS_Dom_Element("RBS_FORM");
	RBS.Form.Submited = false;
	RBS.Event.AddEvent(RBS.Form.Element.Base, "submit", RBS.Form.Submit);
	
	if (RBS.Form.ScriptLoad != null)
	{
		for (var i = 0; i < RBS.Form.ScriptLoad.length; i++) 
		{
			RBS.Form.ScriptLoad[i][0](RBS.Form, RBS.Form.ScriptLoad[i]);
		}
	}
	
	var obj = RBS.Dom.GetElement("EventObject");
	if (obj != null) {obj.value = "";}
	obj = RBS.Dom.GetElement("EventMethode");
	if (obj != null) {obj.value = "";}
	obj = RBS.Dom.GetElement("EventArgs");
	if (obj != null) {obj.value = "";}
	
//	RBS.Form.FocusControl(RBS.Form.Element.Base);
	return true;
}

RBS.Event.AddEvent(window, "load", RBS.Form.Init);


RBS.Form.RegisterElement = function(objectid, objectlabel)
{
	if (RBS.Form.Data == null) RBS.Form.Data = new Array;
	RBS.Form.Data[RBS.Form.Data.length] = {id:objectid, label:objectlabel};
	
	return true;
}

RBS.Form.AddFunction = function(stype, handler, context) 
{
	var aFunc = [handler, context];		
	switch (stype) {
		case "Onload" :
			if (RBS.Form.ScriptLoad == null) RBS.Form.ScriptLoad = new Array;
			RBS.Form.ScriptLoad[RBS.Form.ScriptLoad.length] = aFunc;
			break;
		case "OnSubmit" :
			if (RBS.Form.ScriptSubmit == null) RBS.Form.ScriptSubmit = new Array;
			RBS.Form.ScriptSubmit[RBS.Form.ScriptSubmit.length] = aFunc;
			break;
	}
}

RBS.Form.UploadFile = function(oField, rParam) 
{
	try 
	{
		var oFile = RBS.Dom.GetElement(rParam[1]);
		oFile.UploadFichier();
	} 
	catch (e) 
	{
		dump("RBS.Form.UploadFile" + e);
	}
}

RBS.Form.InitFile = function(oField, rParam) 
{
	try 
	{
		var oFile = RBS.Dom.GetElement(rParam[1] + "DIV");
		var s = "<object id=\"" + rParam[1] + "\" width=\"" + oFile.getAttribute("width") + "\" height=\"" + oFile.getAttribute("height") + "\" classid=\"" + oFile.getAttribute("ClassID") + "\" codebase=\"" + oFile.getAttribute("Codebase") + "\" >" + oFile.innerHTML + "</object>";
		oFile.innerHTML = s;
	} 
	catch (e) 
	{
		dump("RBS.Form.InitFile" + e);
	}
}

RBS.Form.ActivateObjectDiv = function(oField, rParam)
{
    try
    {
        var oDiv = RBS.Dom.GetElement(rParam[1]);
        var newHTML = "<object" 
        + " id=\"" + rParam[1] + "\"" 
        + " width=\"" + oDiv.getAttribute("width") + "\"" 
        + " height=\"" + oDiv.getAttribute("height") + "\"" 
        + " classid=\"" + oDiv.getAttribute("classid") + "\"" 
        + " codebase=\"" + oDiv.getAttribute("codebase") + "\"" + ">" 
        + oDiv.innerHTML 
        + "</object>";
        oDiv.outerHTML = newHTML;
        
    }
    catch (e)
    {
        dump("RBS.Form.ActivateObjectDiv" + e);
    }
}    

RBS.Form.AjaxPanels = new Array();
RBS.Form.AddAjaxPanel = function (id, handler)
{
    var panel = new Array();
    panel[0] = id;
    panel[1] = handler;
    RBS.Form.AjaxPanels.push(panel);
}
function ChildOf(elem, panel)
{
    if (elem.parentNode == panel)
        return true;
    else if (elem.parentNode != document.getElementById("RBS_FORM"))
        return ChildOf(elem.parentNode, panel);
    else
        return false;
}

RBS.Form.Submit = function(EventObject, EventMethode, EventArgs)
{
	if (RBS.Form.Submited && typeof(EventMethode) == "undefined") 
	{
		dump("Form already submited !!" + EventObject +"', '" + EventMethode + "', '" + EventArgs + "'");
		return false;
	}
	
	var oForm = RBS.Form.Element.Base;
	if (typeof(EventMethode) != "undefined") 
	{
		dump("RBS.Form.Submit('" + EventObject +"', '" + EventMethode + "', '" + EventArgs + "')");
		RBS.Dom.GetElement("EventObject").value = EventObject == null ? "" : EventObject;
		RBS.Dom.GetElement("EventMethode").value = EventMethode == null ? "" : EventMethode;
		RBS.Dom.GetElement("EventArgs").value = EventArgs == null ? "" : EventArgs;
	} 
	
	if (RBS.Form.ScriptSubmit != null)
	{
		for (var i = 0; i < RBS.Form.ScriptSubmit.length; i++) 
		{
			RBS.Form.ScriptSubmit[i][0](RBS.Form, RBS.Form.ScriptSubmit[i]);
		}
	}
	
	RBS.Form.Submited = true;
	oForm.submit();
	return true;
}

RBS.Form.DisplaySelect = function(bDisplay) 
{
	if (document.forms.length > 0) 
	{
		var oForm = document.forms[0];
		if (bDisplay) {s = 'visible';} else {s = 'hidden';}
		for (i=0; i < oForm.elements.length; i++) 
		{
			elem = oForm.elements[i];
			if (elem.tagName == 'SELECT') {
				elem.style.visibility = s;
			}
		}
	}
}

RBS.Form.FocusControl = function(form)
{
	if (!RBS.Page.hasPopup) 
	{
		for(i=0; i < form.length; i++)
		{
			if (form[i].type == "text")
			{
				if (form[i].disabled != true)
				{
				    try
				    {
					    dump("Focus element : " + form[i].name);
					    form[i].focus();
					    return;
					}
					catch(err)
					{
                        dump("Exception détectée, exécution du bloc catch");
                        dump("Nom de l'erreur : " + err.name);
                        dump("Message d'erreur : " + err.message);
       				}
				}
			}
		}
	}
}

