TElement = class(TCorpusObject)
	constructor Create(x,y,z,v,s,d,de:double);
	constructor CreateParented(AParent:TCorpusObject;v,de:double);           
	Procedure  Kopiraj(asource:Tobject);override;           
	Procedure AddKorpus(nh:Double);
	procedure Addnogicu(x,z,h,r:Double;ime:string);
	procedure AddPrednju(h,de:Double);
	Procedure AddKutni;
	procedure AddVrata(Fvrata:TDaska);
	procedure AddPolice(Fpolice:TDaska);
	procedure AddDaska(Fdsk:TDaska);
	procedure AddElement(Fdsk:TElement);
	Function GetBox:Tbox;
	Function GetMinZ:Double;
	function GetMinHorY:Double;
	Function GetNextHorY(PrevY:Double):Double;
	Procedure RecalcFormula(caller:tobject); override;
	Function GetRubName(RubId:integer;var CntName:integer):tobject;
	Function Get3dPosition(Tmpv:TVector3f):TVector3f;
	function CountBrojRupa(DoChild:boolean):double;
	Function  GetVarValue(Varname:string):double;
	Function  GetVarValueSelf(Varname:string):double;
	Function  GetVarValueAsString(Varname:string):String;
	Procedure SetVarValue(Varname:string;value:double);
	Function SetNewEditPassword(oldp,newp:string):boolean;
	Procedure AddNewVar(Value:string);
	procedure MakeSpoj(r1,r2:tobject;m1,m2:string);
	procedure MakeSpojSetVars(r1,r2:tobject;m1,m2:string;avar1,avar2:string);
	procedure MakeSpojSetEditVars(r1,r2:tobject;m1,m2:tstrings;aedit1,aedit2:boolean);
	Procedure DeleteSpoj(Macroname:string;KogaSpaja:tobject);
	Function  GetBocnaDaska(LD:integer):TDaska;  // 0= lijevo 1=dasno
	Procedure DestroyLinks;
	Procedure GetAccessoriesList(Var AList:tlist);                   
	Function  HaveCustomFielsds:boolean;

	Property ChildDaska : Tchildelement; read;
	Property ElmList : Tchildelement; read;
	Property Naziv : string; Read; Write;
	Property Visina : Double; read; Write;
	Property Dubina : Double; read; Write;
	Property Sirina : Double; read; Write;
	property Kut : Single; read; Write;
	property XKut : Single; read; Write;
	property ZKut : Single; read; Write;
	Property XPos : Double; read; Write;
	Property YPos : Double; read; Write;
	Property ZPos : Double; read; Write;
	Property TipElementa : TTipElementa read; write;
	Property Cijena : Single read; write;
	Property FiksnaCijena : Single read;
	Property TipIzracunaCijene : byte read; write;
	Property Visible : boolean read; Write;
	Property Parent : tobject read; write;
	Property Selected : boolean read; Write;
	Property ImportName : String read; write;
	Property Potrosni : Tpotrosni read; write;
	Property Editable : boolean read; Write;
	Property Locked : boolean read; Write; 
	Property XF : String; read; Write;
	Property YF : String; read; Write;
	Property HF : String; read; Write;
	Property ZF : String; read; Write;
	Property SF : String; read; Write;
	Property DF : String; read; Write;
	Property XFormula : String; read; Write;
	Property YFormula : String; read; Write;
	Property ZFormula : String; read; Write;
	Property HFormula : String; read; Write;
	Property SFormula : String; read; Write;
	Property DFormula : String; read; Write;
	Property KXFormula : String; read; Write;
	Property KYFormula : String; read; Write;
	Property KZFormula : String; read; Write; 
	Property ParentHolder : Tobject read; write;
	Property VarValue[Varname:string] : Double read; write;
	Property VarValueAsString[Varname : string]:string read;
	Property CleanOpis : string Read; Write;
	Property Napomena : string Read; write;
	Property Artikl : boolean read; Write;
	Property Sifra : string; Read;
	Property CleanSifra : string; Read; Write;
	Property MinVisina : integer Read FMinV Write FMinV;
	Property MinSirina : integer Read FMinS Write FMinS;
	Property MinDubina : integer Read FMinD Write FMinD;
	Property MaxVisina : integer Read FMaxV Write FMaxV;
	Property MaxSirina : integer Read FMaxS Write FMaxS;
	Property MaxDubina : integer Read FMaxD Write FMaxD;
	Property KorakV    : integer Read FKorakV Write FKorakV;
	Property KorakS    : integer Read FKorakS Write FKorakS;
	Property KorakD    : integer Read FKorakD Write FKorakD;
	Property VKorakOn  : Boolean Read FVKorakOn write FVKorakOn;
	Property SKorakOn  : Boolean Read FSKorakOn write FSKorakOn;
	Property DKorakOn  : Boolean Read FDKorakOn write FDKorakOn;
	Property VString   : String  Read FVString write FVString;
	Property SString   : String  Read FSString write FSString;
	Property DString   : String  Read FDString write FDString;
	Property LockV     : Boolean Read FLockV Write FLockV;
	Property LockS     : Boolean Read FLockS Write FLockS;
	Property LockD     : Boolean Read FLockD Write FLockD;
	Property LockN     : Boolean Read FLockN Write FLockN;
	Property DefVisina : Integer Read FDefVisina write FDefVisina;
	Property DefDubina : Integer Read FDefDubina write FDefDubina;
	Property DefSirina : Integer Read FDefSirina write FDefSirina;
	Property OpisElementa : string Read GetOpisElementa;
	Property Vrsta : integer read FVrsta write FVrsta;
	Property FVarijable : Tvarijable Read;
	Property FKalkVar : Tvarijable Read;	
	Property ListaGrupaPotrosnog : TStringlist; Read;
	Property ModelName : string read GetModelName;
	Property CustomFields : TEditableVarList read getCustomFields;
end;

Tchildelement = class(tlist)
	Procedure DeleteAll;
	Procedure AddNew(value:tobject);
	Procedure Kopiraj(Source:Tchildelement);
	Procedure Obrisi(index:integer);
	Procedure Kill(obj:tobject);             
	property CountObj :integer read Getcount;
	Property Daska[index:integer] : TDaska Read GeTDaska Write SeTDaska;
	Property Element[index:integer] : TElement Read GeTElement Write SeTElement;
end;


TTipElementa = ( MojElement, Import, PC, PK, VC, VK, LA, VRE, RP, VRZ, PRO, LAM, TEZid, 
		CAparat, ERuckica, Ekolona, Enogica, Esudoper ,Emaska, Ecokla, EZl, EBocnaPloha, Estropna, EPodna);