import Particle;
import java.awt.*;
import java.applet.Applet;


/*
 *
 * OsmParticle
 *
 */
public class OsmParticle extends Particle
{
	public Image i_anionWater[]={null,null,null}, i_neutralWater[]={null,null,null}	;

//-------------------------------------------------------------------------
	public OsmParticle(Applet Parent, int charge, Point P, Point Min, Point Max){
		m_Parent=Parent;
		Init(charge,P,Min,Max);
	}


//-------------------------------------------------------------------------
	public OsmParticle(Applet Parent){
		m_Parent=Parent;
	}
	

//-------------------------------------------------------------------------
	public void Init(int charge, Point P, Point Min, Point Max){
		m_Charge=charge;
		m_CurrentLocation= new Point(P.x,P.y);
		m_MinLimit= new Point(Min.x,Min.y);
		m_MaxLimit= new Point(Max.x,Max.y);
		m_neg=new Color(0,0,255);
		m_pos=new Color(255,0,0);
		m_neut=new Color(0,255,0);
		m_OldLoc=new Point(P.x,P.y);
		//i_cation = m_Parent.getImage(m_Parent.getDocumentBase(),"images/cation.gif");
		i_anionWater[0] = m_Parent.getImage(m_Parent.getDocumentBase(),"images/anionwater0.gif");
		i_anionWater[1] = m_Parent.getImage(m_Parent.getDocumentBase(),"images/anionwater1.gif");
		i_anionWater[2] = m_Parent.getImage(m_Parent.getDocumentBase(),"images/anionwater2.gif");
		i_neutralWater[0] = m_Parent.getImage(m_Parent.getDocumentBase(),"images/neutral0.gif");
		i_neutralWater[1] = m_Parent.getImage(m_Parent.getDocumentBase(),"images/neutral1.gif");
		i_neutralWater[2] = m_Parent.getImage(m_Parent.getDocumentBase(),"images/neutral2.gif");
	}


//--------------------------------------------------------------------------
	public void DrawParticle(Graphics g){
		Image i;
		int x=(int)(Math.random()*3.0);
		if (m_Charge==0) i=i_neutralWater[x];
		else i=i_anionWater[x];
		g.drawImage(i,m_CurrentLocation.x,m_CurrentLocation.y,null);
	}

	
//-------------------------------------------------------------------------
	public void MoveMembrane(int NewMembLoc){
		if (NewMembLoc>m_Barrier){
			if (m_CurrentLocation.x<=NewMembLoc && m_CurrentLocation.x>m_Barrier){
				m_CurrentLocation.x= (m_CurrentLocation.x-m_Barrier)+NewMembLoc;
			}
		}else if (NewMembLoc<m_Barrier){
			if (m_CurrentLocation.x>=NewMembLoc && m_CurrentLocation.x<=m_Barrier){
				m_CurrentLocation.x= NewMembLoc-(m_Barrier-m_CurrentLocation.x);
			}
		}
		m_Barrier=NewMembLoc;
	}


}


