
//---loads import text into point form----
//====also configure form for add/remove and locpoints
function loadFormValues()
{
 SelectNum=1
	commSelectRemove()
	Points=importTextValue.value
	if(Points!="") //---cleared---
	{
		PlusPointArray=[];
		for(var k=0;k<RelPointArray.length;k++)
		{
			RelPointArray[k]=""
		}

		var commaSplit=Points.split(",")


			var commaCnt=commaSplit.length

		valueCnt=0
		var zCnt=0
		for(var k=0;k<commaCnt;k++)
		{
			var valueSplit=commaSplit[k].split(" ")

			var z=false
			if(commaSplit[k]=="Z" ||commaSplit[k]=="z" ) //---a z, use previous valueCnt---
			{
				if(commaSplit[k]=="Z")zz="Z"
				if(commaSplit[k]=="z")zz="z"
				var zSelect=eval("z"+valueCnt+"Select")
				if(zz=="Z")zSelect.selectedIndex=1
				if(zz=="z")zSelect.selectedIndex=2
				zCnt++
				z=true
			}
			else
			{




				var command=false
				if(valueSplit.length==3) //---command at start(excluding v,h)---
				{
					command=valueSplit[0]
					var x=parseInt(valueSplit[1])
					var y=parseInt(valueSplit[2])
				}
				else if(valueSplit.length==2)
				{
					//---is this a v,h command----
					var vs0=valueSplit[0]
					if(vs0.indexOf("h")==-1 && vs0.indexOf("H")==-1
						&& vs0.indexOf("v")==-1 && vs0.indexOf("V")==-1)
					{
						var x=parseInt(valueSplit[0])
						var y=parseInt(valueSplit[1])
					}
					else
					{
						command=vs0
						if(vs0.indexOf("h")!=-1 || vs0.indexOf("H")!=-1)
						{
							var x=parseInt(valueSplit[1])
							var y="00"
						}
						else if(vs0.indexOf("v")!=-1 || vs0.indexOf("V")!=-1)
						{
							var y=parseInt(valueSplit[1])
							var x="00"
						}
					}
				}


					if(z==false && zCnt<2)
					valueCnt++
					else if(z==true&& zCnt>=2)
					valueCnt=valueCnt-1
					else
					valueCnt++

					if(command=="l"||command=="h"||command=="t" ||command=="v"||command=="m")
						RelPointArray[RelPointArray.length]=[valueCnt,RefX,RefY]
				//---holds the previous value---
				RefX=x
				RefY=y


				if(command!=false)
				{

						var selectSpan=eval("select"+valueCnt+"Span")
						selectSpan.innerHTML=command


				}
  					eval("select"+(valueCnt)+"Span.disabled=false")
  					eval("select"+(valueCnt)+"Span.style.borderWidth=2")
  					eval("select"+(valueCnt)+"Span.style.cursor='hand'")
  					eval("select"+(valueCnt)+"Span.title='Click to change/remove command'")

					eval("xCom"+valueCnt+"Value.value="+x)
					eval("yCom"+valueCnt+"Value.value="+y)
					eval("xCom"+valueCnt+"Value.style.backgroundColor='lightgreen'")
					eval("yCom"+valueCnt+"Value.style.backgroundColor='lightgreen'")
HiliteString+=valueCnt
SelectString+=valueCnt+","

				//--increment cnt---
				if(command=="A"||command=="a")
				{
					var angle=commaSplit[k+1]
					var sw1=parseInt(commaSplit[k+2])
					var sw2=parseInt(commaSplit[k+3])
					eval("angCom"+valueCnt+"Value.value="+angle)
					eval("sw1Com"+valueCnt+"Select.selectedIndex="+(sw1+1))
					eval("sw2Com"+valueCnt+"Select.selectedIndex="+(sw2+1))

					var xy1=commaSplit[k+4]

					var xy1Split=xy1.split(" ")

					var x1=xy1Split[0]
					var y1=xy1Split[1]

					eval("xCom"+(valueCnt+1)+"Value.value="+x1)
					eval("yCom"+(valueCnt+1)+"Value.value="+y1)
					eval("xCom"+(valueCnt+1)+"Value.style.backgroundColor='lightgreen'")
					eval("yCom"+(valueCnt+1)+"Value.style.backgroundColor='lightgreen'")

					eval("select"+(valueCnt+1)+"Span.innerText="+(valueCnt+1))

					eval("xCom"+(valueCnt+1)+"Value.value="+x1)
					eval("yCom"+(valueCnt+1)+"Value.value="+y1)
					eval("xCom"+(valueCnt+1)+"Value.style.backgroundColor='lightgreen'")
					eval("yCom"+(valueCnt+1)+"Value.style.backgroundColor='lightgreen'")
 					eval("select"+(valueCnt+1)+"Span.disabled=true")

					k=k+4
					var arcSpan=eval("com"+valueCnt+"ArcSpan")
					arcSpan.style.overflow=""
					arcSpan.style.height=""

					if(command=="a")
					{
						RelPointArray[RelPointArray.length]=[valueCnt,RefX,RefY]
					    RelPointArray[RelPointArray.length]=[valueCnt+1,x1,y1]

					}
					valueCnt=valueCnt+1
HiliteString+=valueCnt
SelectString+=valueCnt+","
				}

				//-- horiz,verical lines ---
				if(command=="H"||command=="h"||command=="V"||command=="v" )
				{

					if(command=="H"||command=="h")
					{
						eval("yCom"+valueCnt+"Value.value=''")
						eval("yCom"+valueCnt+"Value.disabled=true")
						eval("yCom"+valueCnt+"Value.style.backgroundColor='gray'")
					}
					if(command=="V"||command=="v")
					{
						eval("xCom"+valueCnt+"Value.value=''")
						eval("xCom"+valueCnt+"Value.disabled=true")
						eval("xCom"+valueCnt+"Value.style.backgroundColor='gray'")
					}

					if(command=="h"||command=="h")
						RelPointArray[RelPointArray.length]=[valueCnt,RefX,RefY]


				}

				if(command=="C"||command=="c")
				{


				//---increment  2----
					var xy1=commaSplit[k+1]
					var xy2=commaSplit[k+2]
					var xy1Split=xy1.split(" ")
					var xy2Split=xy2.split(" ")
					var x1=xy1Split[0]
					var y1=xy1Split[1]
					var x2=xy2Split[0]
					var y2=xy2Split[1]

					eval("select"+(valueCnt+1)+"Span.innerText="+(valueCnt+1))
					eval("xCom"+(valueCnt+1)+"Value.value="+x1)
					eval("yCom"+(valueCnt+1)+"Value.value="+y1)
					eval("xCom"+(valueCnt+1)+"Value.style.backgroundColor='lightgreen'")
					eval("yCom"+(valueCnt+1)+"Value.style.backgroundColor='lightgreen'")

					eval("select"+(valueCnt+2)+"Span.innerText="+(valueCnt+2))
					eval("xCom"+(valueCnt+2)+"Value.value="+x2)
					eval("yCom"+(valueCnt+2)+"Value.value="+y2)
					eval("xCom"+(valueCnt+2)+"Value.style.backgroundColor='lightgreen'")
					eval("yCom"+(valueCnt+2)+"Value.style.backgroundColor='lightgreen'")
  					eval("select"+(valueCnt+1)+"Span.disabled=true")
					eval("select"+(valueCnt+2)+"Span.disabled=true")
HiliteString+=valueCnt+1
SelectString+=(valueCnt+2)+","


				k=k+2
					valueCnt=valueCnt+2

					if(command=="c")
					{
						RelPointArray[RelPointArray.length]=[valueCnt,RefX,RefY]
						RelPointArray[RelPointArray.length]=[(valueCnt+1),x1,y1]
						RelPointArray[RelPointArray.length]=[(valueCnt+2),x2,y2]

					}
			       	RefX=x2
					RefY=y2


				}
					//---increment 1----
				if(command=="S" || command=="s"   ||command=="Q" || command=="q") //---minimum of 2 points---
				{
					var xy1=commaSplit[k+1]

					var xy1Split=xy1.split(" ")

					var x1=xy1Split[0]
					var y1=xy1Split[1]

					eval("xCom"+(valueCnt+1)+"Value.value="+x1)
					eval("yCom"+(valueCnt+1)+"Value.value="+y1)
					eval("xCom"+(valueCnt+1)+"Value.style.backgroundColor='lightgreen'")
					eval("yCom"+(valueCnt+1)+"Value.style.backgroundColor='lightgreen'")
					eval("select"+(valueCnt+1)+"Span.innerText="+(valueCnt+1))
					eval("select"+(valueCnt+1)+"Span.disabled=true")






					k=k+1
					valueCnt=valueCnt+1
HiliteString+=valueCnt
SelectString+=valueCnt+","

					if(command=="s"||command=="q")
					{
						RelPointArray[RelPointArray.length]=[valueCnt,RefX,RefY]
						RelPointArray[RelPointArray.length]=[(valueCnt+1),x1,y1]

					}

			       	RefX=x1
					RefY=y1


				}

				//---add plus(+) select to following 'open' points---
				if(command==false)
				{
						//----used to color drag/drop icon magenta---
						PlusPointArray[PlusPointArray.length]=valueCnt
						 command="<span style='font-weight:bold;color:magenta'>+</span>"
						 var selectSpan=eval("select"+valueCnt+"Span")
						 selectSpan.innerHTML=command

				}


			}
		}



		   importTextValue.value=Points

	   loadDragCircles()


					if(valueCnt<10)
					{
						eval("select"+(valueCnt+1)+"Span.disabled=false")
						eval("select"+(valueCnt+1)+"Span.style.borderWidth=2")
					}



	}

}

function updateBgColor()
{

	Points=importTextValue.value

		var commaSplit=Points.split(",")


			var commaCnt=commaSplit.length



    valueCnt=0
		for(var k=0;k<commaCnt;k++)
		{
			valueCnt++
			var valueSplit=commaSplit[k].split(" ")
			if(valueCnt<=10)
			{
				if(eval("select"+valueCnt+"Span.innerText!=''"))
				{
					eval("xCom"+valueCnt+"Value.style.backgroundColor='lightgreen'")
					eval("yCom"+valueCnt+"Value.style.backgroundColor='lightgreen'")
				}
			}
		}


}



//---user selected import: validate points----
function importPoints()
{
	if(importTextValue.value!="")
	{
		var importD=importTextValue.value

		//---remove d attr name---
		var reD=/d=/
		importD=importD.replace(reD,"")

		//--remove quotes---
		var reQ=/\"/g
		importD=importD.replace(reQ,"")

		//----remove leading/trailing space(s)---
		var reSp2=/  /g
		var reSp=/ /
		importD=importD.replace(reSp2," ")
		if(importD.substr(0,1)==" ")
			importD=importD.replace(reSp,"")

		if(importD.substr(importD.length-1)==" ")
			importD=importD.substr(0,importD.length-1)

		//---remove open commas---
		var reComL=/ ,/g  //---left--
		var reComR=/, /g  //---right--
	   	importD=importD.replace(reComL,",")
	   	importD=importD.replace(reComR,",")


		//---remove last comma----
		if(importD.substr(importD.length-1)==",")
		importD=importD.substr(0,importD.length-1)


	//---is the import format: commandx,y or command x,y ?----
		var comString="ACHLMQSTVZachlmqstvz"



	//---first place a space between each command and the next value---
	var pointString=""

		for(var k=0;k<importD.length;k++)
		{
			var a=importD.charAt(k)
			if(comString.indexOf(a)!=-1)
			{
				var nextChar=importD.charAt(k+1)
				if(nextChar!=" ")
				{
					pointString+=a+" "

				}
				else
				 pointString+=a
			}
			else
	 			pointString+=a
		}

	//----next remove commas between adjacent x,y values-----
		//---test the M point to determine the format---

		var xyComma=false
		for(var k=0;k<pointString.length;k++)
		{
			var a=pointString.charAt(k)
			if(a=="M"|| a=="m")
			{
				  //---interrogate the following string---
					for(var m=k+2;m<pointString.length;m++)
					{
						var b=pointString.charAt(m)

						if(b==",")
						{
							xyComma=true
							break
						}
						else if(b==" ")
						break;

					}
				break;
			}

		}



		if(xyComma==true)
		{
			var pointString2=""

			for(var k=0;k<pointString.length;k++)
			{
				a=pointString.charAt(k)
				if(a==",")
				 {
				 	pointString2+=" "
					//---find the next space and replace it with a comma---
					for(m=k+1;m<pointString.length;m++)
					{
					  	var b=pointString.charAt(m)
					  	if(b!=" ")
						{
							pointString2+=b
							k++
						}
						else
						{
							pointString2+=","
							k++
							break;
						}

					}
				 }
				 else
				  pointString2+=a
			}



		pointString=pointString2
			//----next determine if this is a sans comma d value---



		}

			//----next determine if this is a sans comma d value---
			var comNozString="ACHLMQSTVachlmqstv" //---sans z---
			var commaLength=pointString.split(",").length
		   if(commaLength<2) //---a comma was added at Z----
		   {
					//---any arcs (has 3 single elements: angle, sw1,sw2)----
				if(pointString.indexOf("a")==-1 && pointString.indexOf("A")==-1)
				{
						var pointString3=""
						var spaceSplit=pointString.split(" ")
						for(var k=0;k<spaceSplit.length;k++)
						{

							myBit=spaceSplit[k]
									if(comNozString.indexOf(myBit)!=-1)
									{
										pointString3+=myBit+" "+spaceSplit[k+1]+" "+spaceSplit[k+2]+","
										k=k+2




									}
									else
									{

		   								pointString3+=myBit+" "+spaceSplit[k+1]+","
											k=k+1

									}
					}


	   				//---remove last comma----
					if(pointString3.substr(pointString3.length-1)==",")
					pointString3=pointString3.substr(0,importD.length-1)


					pointString=pointString3




				}
				else
				{
					alert("parse arc commands required")




				}

		   }




		//---assure a comma at z/Z----
			var reZ=/ Z/g
			pointString=pointString.replace(reZ,",Z")
			var rez=/ z/g
			pointString=pointString.replace(rez,",z")
 			var reZ2=/Z /g
			pointString=pointString.replace(reZ2,"Z")
			var rez2=/z /g
			pointString=pointString.replace(rez2,"z")

		//---interrogate commands---
		var validCom=true

		for(var k=0;k<pointString.length;k++)
		{
			var a=pointString.charAt(k)
			if(a!=" " && a!="," && a!="+" && a!="-" && a!=".")
			{
				if(isNaN(a)==true)
				{

					if(comString.indexOf(a)==-1)
					{
						validCom=false
						break;
					}
				}
			}
		}


		if(validCom==false)
		{
			alert("Character '"+a+"' is not a valid command")
	 	}
		else
		{
			//YellowBrickRoad.setAttribute("d",pointString)
			loadFormValues()
			//showButton.disabled=true

			importTextValue.value=pointString
		}





	}//---pointsValue empty

}



