load_file("CalciumParameters.hoc")

// UI
objref vBoxCaWave, plotShapeCaWaveCai, graphCaWaveCai

// Sets initial UI and simulation params.
proc initParamsCaWave() {
    TimeDelayCaWave = 1000
    InitIp3  = 0.05
}

// Shows Calcium Wave UI.
proc showCaWaveUi() {
    vBoxCaWave = new VBox()
    vBoxCaWave.intercept(1)
    {
        xpanel("")
        xlabel("=========== Parameters of waves===========")
        xvalue("IP3 increase onset (ms)","TimeDelayCaWave", 1,"", 0, 1)
        xvalue("IP3 peak concentration (mM)","InitIp3", 1,"", 0, 1  )
        xlabel("=========================================")
        xvalue("Run time","tstop", 1,"", 0, 1  )
        xbutton("Run simulation", "run()")
        xpanel()
    }
    vBoxCaWave.intercept(0)
    vBoxCaWave.map("Ca wave", 283, 102, 235, 133)

    removeIfExists(graphList[0], graphCaWaveCai)
    graphCaWaveCai = new Graph(0)
    addplot(graphCaWaveCai, 0)
    graphCaWaveCai.erase_all()
    graphCaWaveCai.size(0,50000,0,0.0001)
    graphCaWaveCai.view(0, 0, 50000, 0.0001, 602, 705, 400, 200)
    graphCaWaveCai.addvar("soma.cai(0.5)",1,1,0.6, 0.9,2)
    graphCaWaveCai.fastflush()
    
    removeIfExists(fast_flush_list, plotShapeCaWaveCai)
    plotShapeCaWaveCai = new PlotShape(0)
    fast_flush_list.append(plotShapeCaWaveCai)
    plotShapeCaWaveCai.size(-50,50,-50,50)
    plotShapeCaWaveCai.view(-50, -49.9003, 100, 100, 601, 102, 400.64, 400.32)
    plotShapeCaWaveCai.exec_menu("Shape Plot")
    plotShapeCaWaveCai.variable("cai")
	plotShapeCaWaveCai.label(0.12, 0.95, "[Ca2+]i (mM)", 2, 1, 0, 1, 1)
    plotShapeCaWaveCai.show(0)
    plotShapeCaWaveCai.scale(0,0.0006)  // mV, scale of voltage on 3D plots
}

// Opens Calcium Wave window.
proc CalciumWave() {
    initParamsCaWave()
    showCaWaveUi()
    // The set of parameters of Ca stimulations
    showCaParameters()
}