/// <summary>
		/// If test is IScriptItem then it tests against it being not nothing
		/// </summary>
		/// <param name="js"></param>
		/// <param name="test"></param>
		/// <param name="trueValue"></param>
		/// <param name="falseValue"></param>
		public ScriptIf(ScriptDocument sd, object test, object trueValue, object falseValue)
            :base(sd)
        {
			Test = test;
			FalseValue = falseValue;
			TrueValue = trueValue;

			StartOnNewLine = false;
			MultiLine = false;
        }
        public  Test()
        {
            ScriptDocument sd = new ScriptDocument();

			JsBuilder js = new JsBuilder(sd);

			sd.Content.AddRange(
				js.S(
                    "hghfgdgshf = ",
					js.F(
						js.L("sdfd", "dfdf"),
						js.SL(
                            "sfdgfg;",
                            "sfdgfg;",
                            "sfdgfg;",
                            "sfdgfg;",
                            "sfdgfg;"
                        )
                    )
                )
            );
        }
		public ScriptBuilder(ScriptDocument sd)
		{
			_Document = sd;
		}
		public ScriptJoiner(ScriptDocument sd, params object[] items) : base(sd, items) { }
		public ScriptJoiner(ScriptDocument sd, IEnumerable<object> items) : base(sd, items) { }
 public ScriptJoiner(ScriptDocument sd) : base(sd) { }
 public ScriptLines(ScriptDocument sd, params object[] lines) : base(sd, lines) { }
 public ScriptLines(ScriptDocument sd, IEnumerable<object> lines) : base(sd, lines) { }
 public ScriptLines(ScriptDocument sd) : base(sd) { }
        public ScriptItem(ScriptDocument sd)
        {
            _Sd = sd;

            this.OnInitialise();
        }