// :: form - dynamic html portable :: //

	function dom__layer (id)
	{
		var app = navigator.userAgent.split(";") ;

		if (app[1].substring(0,5) == "MSIE" && app[1].substring(6,7) == "5")
		{
			return document.all[id] ;
		}
		else
		{
			return document.getElementById(id) ;
		}
	}

function dom__onchange_command (obj,num)
{
	var str ;

	var explorer = (navigator.userAgent.indexOf("MSIE") >= 0 && navigator.userAgent.indexOf("Opera") < 0) ? 1 : 0 ;
	var firefox = (navigator.userAgent.indexOf("Firefox") >= 0) ? 1 : 0 ;
	var opera = (navigator.userAgent.indexOf("Opera") >= 0) ? 1 : 0 ;
	var safari = (navigator.userAgent.indexOf("Safari") >= 0) ? 1 : 0 ;
	var konqueror = (navigator.userAgent.indexOf("Konqueror") >= 0) ? 1 : 0 ;

	var temp ;

	if (explorer)
	{
		temp = String(obj.onchange).split("'") ;
	}
	else if (firefox || konqueror || safari)
	{
		temp = String(obj.onchange).split("\"") ;
	}
	else if (opera)
	{
		temp = obj.attributes["onchange"].value.split("'") ;
	}
	
	if (temp.length == 1)
	{
		str = "" ;
	}
	else
	{
		str = temp[num] ;
	}

	return str ;
}

// :: FORM - BUTTON -> ONCLICK :: //

	function framework__form__button_onclick (elm,str)
	{
		var action = str.split(",") ;

		for (var i = 0 ; i < action.length ; i++)
		{
			if (action[i] == "check")
			{
				var test = true ;

				for (var j = 0 ; j < elm.form.elements.length ; j++)
				{
					if (elm.form.elements[j].onchange)
					{
						var onchange_str = dom__onchange_command(elm.form.elements[j],1) ;
						
						if (onchange_str != "")
						{
							if (!framework__form__element_onchange(elm.form.elements[j],dom__onchange_command(elm.form.elements[j],1)))
							{
								test = false ;
							}
						}
					}
				}

				if (!test)
				{
					framework__form__message_common(elm.form,elm.form.elements["message_common_novalid"].value) ;
					break ;
				}
			}
			if (action[i].substring(0,10) == "check_solo")
			{
				var test = true ;

				var name = action[i].substring(11,action[i].length - 1) ;

				if (!framework__form__element_onchange(elm.form.elements[name],dom__onchange_command(elm.form.elements[name],1)))
				{
					test = false ;
				}

				if (!test)
				{
					framework__form__message_common(elm.form,elm.form.elements["message_common_novalid"].value) ;
					break ;
				}
			}
			else if (action[i].substring(0,2) == "js")
			{
				eval(action[i].substring(3)) ;
			}
			else if (action[i] == "submit")
			{
				elm.form.elements["view_state"].value = elm.name ;
				elm.form.submit() ;
			}
		}
	}

// :: FORM - ELEMENT -> ONCHANGE :: //

	function framework__form__element_onchange (elm,str)
	{
		var test = true ;

		var message_context = "" ;

		var keyword = str.split(",") ;

		for (var t = 0 ; t < keyword.length ; t++)
		{
			if (keyword[t] == "required" && (elm.value == "" || (elm.options && elm.value == "%")))
			{
				test = false ;
			}
			else if (keyword[t].substring(0,9) == "minlength" && elm.value.length < parseInt(keyword[t].substring(10,keyword[t].length - 1)))
			{
				test = false ;
			}
			else if (keyword[t] == "email" && elm.value != "")
			{
				var mask = /^[a-z0-9][a-z-_0-9\.]+@[a-z-_=>0-9\.]+\.[a-z]{2,4}$/ ;
				
				if (!mask.test(elm.value))
				{
					test = false ;
				}
			}
			else if (keyword[t] == "zip" && elm.value != "")
			{
				var mask = /[0-9]{5}/ ;
				
				if (!mask.test(elm.value))
				{
					test = false ;
				}
			}
			else if (keyword[t] == "integer+")
			{
				if (parseInt(elm.value) != elm.value)
				{
					test = false ;
				}
				else if (parseInt(elm.value) <= 0)
				{
					test = false ;
				}
			}
			else if (keyword[t] == "date" && elm.value != "")
			{
				var mask = /^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/ ;
				
				if (!mask.test(elm.value))
				{
					test = false ;
				}
			}
			else if (keyword[t] == "tel" && elm.value != "")
			{
				var mask = /^([0]{1})([1-8]{1})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})/ ;
				
				if (!mask.test(elm.value))
				{
					test = false ;
				}
			}
			if (!test)
			{
				message_context = elm.form.elements["message_context_" + keyword[t]].value ;
				break ;
			}
		}

		framework__form__message_context(elm,message_context) ;

		return test ;
	}

// :: FORM - TEXTAREA :: //

	function framework__form__textarea (elm,val)
	{
		if (elm.value.length > val)
		{
			elm.value = elm.value.substring(0,val) ;
		}
		else
		{
			framework__form__message_context(elm,elm.value.length + " car.") ;
		}
	}

// :: form - message :: //

	function framework__form__message_common (frm,str)
	{
		var obj = dom__layer("layer_" + frm.id + "_message_common") ;

		obj.innerHTML = str ;
	}

	function framework__form__message_context (elm,str)
	{
		var obj = dom__layer("layer_" + elm.form.id + "_message_" + elm.name + "_context") ;

		obj.innerHTML = str ;
	}

// -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  -- -- -- //
// -- ::  FORM - EDITOR :: -- //
// -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --  -- -- -- //

	var framework__form__editor_memo = new Array() ;
	
	framework__form__editor_memo[0] = "" ;
	
	var framework__form__editor_inc = 0 ;
	
	function check_cdata()
	{
		framework__form__editor_update("form_edit_article","text_website","default") ;
	}

	function framework__form__editor_push_html (frm,elm,tag)
	{
		var search = document.selection.createRange().htmlText ;

		document.selection.clear() ;
		
		switch (tag)
		{
			case "back" :
			
				framework__form__editor_back(frm,elm) ;
				framework__form__editor_update(frm,elm,"default") ;
				break ;
				
			case "foward" :
			
				framework__form__editor_foward(frm,elm) ;
				framework__form__editor_update(frm,elm,"default") ;
				break ;
				
			case "bold" :
			
				document.selection.createRange().pasteHTML("<b>" + search + "</b>") ;
				framework__form__editor_update(frm,elm,"action") ;
				break ;
			
			case "underline" :
			
				document.selection.createRange().pasteHTML("<u>" + search + "</u>") ;
				framework__form__editor_update(frm,elm,"action") ;
				break ;

			case "italic" :
			
				document.selection.createRange().pasteHTML("<i>" + search + "</i>") ;
				framework__form__editor_update(frm,elm,"action") ;
				break ;
				
			case "left" :
			
				document.selection.createRange().pasteHTML("<div align=\"left\">" + search + "</div>") ;
				framework__form__editor_update(frm,elm,"action") ;
				break ;

			case "center" :
			
				document.selection.createRange().pasteHTML("<div align=\"center\">" + search + "</div>") ;
				framework__form__editor_update(frm,elm,"action") ;
				break ;
				
			case "right" :
			
				document.selection.createRange().pasteHTML("<div align=\"right\">" + search + "</div>") ;
				framework__form__editor_update(frm,elm,"action") ;
				break ;
				
			case "chip" :
			
				document.selection.createRange().pasteHTML("<table cellpadding=\"2\" cellspacing=\"0\" border=\"0\">" +
																										"<tr>" +
																											"<td valign=\"top\">&bull;</td>" +
																											"<td>" + search + "</td>" +
																										"</tr>" +
																									"</table>") ;
				framework__form__editor_update(frm,elm,"action") ;
				break ;
		}
	}

	function framework__form__editor_update (frm_name,elm_name,memo)
	{
		var txt = document.getElementById("layer_"+ frm_name +"_"+ elm_name +"_editor_text").innerHTML ;

		document.forms[frm_name].elements[elm_name].value = "<![CDATA[" + txt + "]]>" ;

		if (memo == "default")
		{
			framework__form__editor_memo[framework__form__editor_inc] = txt ;
		}
		else
		{
			framework__form__editor_memo[framework__form__editor_memo.length] = txt ;
			
			framework__form__editor_inc = framework__form__editor_memo.length - 1 ;
		}
	}

	function framework__form__editor_back (frm_name,elm_name)
	{
		if (framework__form__editor_inc > 0)
		{
			document.getElementById("layer_"+ frm_name +"_"+ elm_name +"_editor_text").innerHTML = framework__form__editor_memo[framework__form__editor_inc - 1] ;

			if (framework__form__editor_inc != 1)
			{
				framework__form__editor_inc-- ;
			}
		}
	}

	function framework__form__editor_foward (frm_name,elm_name)
	{
		if (framework__form__editor_inc < framework__form__editor_memo.length - 1)
		{
			document.getElementById("layer_"+ frm_name +"_"+ elm_name +"_editor_text").innerHTML = framework__form__editor_memo[framework__form__editor_inc + 1] ;

			if (framework__form__editor_inc != framework__form__editor_memo.length - 1)
			{
				framework__form__editor_inc++ ;
			}
		}
	}

// ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ //

	function framework__form__editor_hyperlink (frm_name,elm_name)
	{
		if (document.getElementById("layer_" + frm_name + "_" + elm_name + "_frame_command"))
		{
			document.getElementById("layer_" + frm_name + "_" + elm_name + "_frame_command").style.visibility = "hidden" ;
		}

		document.getElementById("layer_" + frm_name + "_" + elm_name + "_hyperlink_command").style.visibility = "visible" ;
	}

	function framework__form__editor_hyperlink_command (frm_name,elm_name)
	{
		var search = document.selection.createRange().htmlText ;

		document.selection.clear() ;

		var replace = "<a href=\""+ document.forms[frm_name].elements[frm_name +"_"+ elm_name +"_hyperlink"].value +"\">" +
										 	search +
									 "</a>" ;

		document.selection.createRange().pasteHTML(replace) ;

		framework__form__editor_update(frm_name,elm_name,"action") ;

		document.getElementById("layer_" + frm_name + "_" + elm_name + "_hyperlink_command").style.visibility = "hidden" ;

		document.forms[frm_name].elements[frm_name +"_"+ elm_name +"_hyperlink"].value = "http://" ;
	}

// ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ //

	function framework__form__editor_frame (frm_name,elm_name)
	{
		if (document.getElementById("layer_" + frm_name + "_" + elm_name + "_hyperlink_command"))
		{
			document.getElementById("layer_" + frm_name + "_" + elm_name + "_hyperlink_command").style.visibility = "hidden" ;
		}

		document.getElementById("layer_" + frm_name + "_" + elm_name + "_frame_command").style.visibility = "visible" ;
	}

	function framework__form__editor_frame_command_color_border (frm_name,elm_name,code,num,count)
	{
		for (var t = 0 ; t < count ; t++)
		{
			document.getElementById("layer_" + frm_name + "_" + elm_name + "_frame_command_color_border_" + t).style.border = "1px solid #000000" ;
		}

		document.getElementById("layer_" + frm_name + "_" + elm_name + "_frame_command_color_border_" + num).style.border = "1px solid #FF0000" ;

		document.forms[frm_name].elements[frm_name +"_"+ elm_name +"_frame_command_border"].value = code ;
	}

	function framework__form__editor_frame_command_color_background (frm_name,elm_name,code,num,count)
	{
		for (var t = 0 ; t < count ; t++)
		{
			document.getElementById("layer_" + frm_name + "_" + elm_name + "_frame_command_color_background_" + t).style.border = "1px solid #000000" ;
		}

		document.getElementById("layer_" + frm_name + "_" + elm_name + "_frame_command_color_background_" + num).style.border = "1px solid #FF0000" ;

		document.forms[frm_name].elements[frm_name +"_"+ elm_name +"_frame_command_background"].value = code ;
	}

	function framework__form__editor_frame_command (frm_name,elm_name)
	{
		var search = document.selection.createRange().htmlText ;

		document.selection.clear() ;

		var color1 = document.forms[frm_name].elements[frm_name +"_"+ elm_name +"_frame_command_border"].value ;
		
		var color2 = document.forms[frm_name].elements[frm_name +"_"+ elm_name +"_frame_command_background"].value ;

		var replace = "<table bordercolor=\""+ color1 +"\" cellpadding=\"0\" cellspacing=\"0\" bgcolor=\""+ color2 +"\" border=\"1\">" +
									"<tr>" +
										"<td>" + search + "</td>" +
									"</tr>" +
								"</table>" ;

		document.selection.createRange().pasteHTML(replace) ;

		framework__form__editor_update(frm_name,elm_name,"action") ;

		document.getElementById("layer_" + frm_name + "_" + elm_name + "_frame_command").style.visibility = "hidden" ;
	}