model {
  for(i in 1:N){
    #measurement equation model
    for(j in 1:P){
      y[i,j]~dnorm(mu[i,j],errorprec[j])
    }
    mu[i,1]<-lam[1]*xi[i,1]
    mu[i,2]<-lam[2]*xi[i,1]
    mu[i,3]<-lam[3]*xi[i,1]
    mu[i,4]<-lam[4]*xi[i,1]
    mu[i,5]<-lam[5]*xi[i,1]
    mu[i,6]<-lam[6]*xi[i,1]
    mu[i,7]<-lam[7]*xi[i,2]
    mu[i,8]<-lam[8]*xi[i,2]
    mu[i,9]<-lam[9]*xi[i,2]
    mu[i,10]<-lam[10]*xi[i,2]
    mu[i,11]<-lam[11]*xi[i,2]
    mu[i,12]<-lam[12]*xi[i,2]
    #structural equation model
    xi[i,1:2]~dmnorm(u[1:2],latprec[1:2,1:2])
  } #end of i
  #priors on loadings
  lam[1]~dnorm(0.8432,105)
  lam[2]~dnorm(0.8202,64)
  lam[3]~dnorm(0.8327,74)
  lam[4]~dnorm(0.8217,47)
  lam[5]~dnorm(0.8344,63)
  lam[6]~dnorm(0.8682,108)
  lam[7]~dnorm(0.8199,78)
  lam[8]~dnorm(0.8652,95)
  lam[9]~dnorm(0.8724,114)
  lam[10]~dnorm(0.8728,80)
  lam[11]~dnorm(0.8309,80)
  lam[12]~dnorm(0.8429,100)
  #priors on errors
  for(j in 1:P){
    errorprec[j]~dgamma(9.0, 4.0)
  errorvar[j]<-1/errorprec[j]
  }
#priors on latent (co-)variances
  latprec[1:2,1:2] ~ dwish(V[,], 5)
  latcov[1:2,1:2] <- inverse(latprec[,])
  latcor <- latcov[1,2]/(sqrt(latcov[1,1])*sqrt(latcov[2,2]))
  V[1,1] <- 1
  V[1,2] <- 0.5
  V[2,1] <- V[1,2]
  V[2,2] <- 1
} #end of model
