/***************************************** (c) Copyright Phi Tran 2005 ***************/





		
var edit_mode=0;



var ANCHORDIV="<div id='XX1' class='XX2' style='top:0px;left:0px;' onmousedown='AnchorMouseDown(this.id)' onmouseup='AnchorMouseUp(this.id)'></div>";
var STROKEDIV="<div id='XX1' class='XX2' style='top:0px;left:0px;' onmousedown='StrokeMouseDown(this.id)' onmouseup='StrokeMouseUp(this.id)'></div>";
function MakeAnchorStr(idd,clssn){	var a=ANCHORDIV.replace("XX1",idd);	a=a.replace("XX2",clssn);	return(a);	}
function MakeStrokeStr(idd,clssn){	var a=STROKEDIV.replace("XX1",idd);	a=a.replace("XX2",clssn);	return(a);	}

var ie5 = (document.getElementById && document.all);
var ns6 = (document.getElementById && !document.all);
var Xpos,Ypos;
if(navigator.userAgent.indexOf("Opera") >0)
	ie5=0;
	

/***************************************** (c) Copyright Phi Tran 2005 ***************/

function _STOPPOINT(x,RR,GG,BB)
	{
	this.offset		=x;
	this.opacity	=1;
	this.colorR		=RR;
	this.colorB		=BB;
	this.colorG		=GG;
	}	
function _LinearGradient(x1,x2,y1,y2)
	{
	this.x1		=x1;
	this.y1		=y1;
	this.x2		=x2;
	this.y2		=y2;
	this.stop   =new Array();
	this.stop[0]=new _STOPPOINT(0,		255,128,128);
	this.stop[1]=new _STOPPOINT(0.25,	255,128,0);
	this.stop[2]=new _STOPPOINT(0.75,	255,255,128);
	this.stop[3]=new _STOPPOINT(1,		128,128,255);
	} 
	
function _RadialGradient(x1,x2,y1,y2)
	{
	this.fx		= (x1+x2)/2;
	this.fy		= (y1+y2)/2;
	this.r		= 0;
	this.stop   = new Array();
	if(y2-y1 >x2-x1)this.r=y2-y1;
	else this.r=x2-x1;
	this.r=Math.round(Math.abs(this.r)/2);
	this.stop[0]=new _STOPPOINT(0,		255,128,128);
	this.stop[1]=new _STOPPOINT(0.25,	255,128,0);
	this.stop[2]=new _STOPPOINT(0.75,	255,255,128);
	this.stop[3]=new _STOPPOINT(1,		128,128,255);
	}	
	
function _BoundRect() // circle
	{
	this.x1 =00;
	this.y1 =00;
	this.x2 =60;
	this.y2 =40;  // two dots (X1 Y1) (X2 Y2)
	}
function _BoundRoundRect()
	{
	this.x1 =00;
	this.y1 =00;
	this.x2 =60;
	this.y2 =40;  // two dots (X1 Y1) (X2 Y2)
	this.rx =7;
	this.ry =5;// Four dots (X1, Y1) (X2, Y2) (X1+cx,Y1) (X1,Y1+Cy)
	}		
function _PPPOINT(z,x,y)// moveto line to
	{
	this.type	=z;// 0=move to 1 = line to
	this.x		=x;
	this.y		=y;
	}
function _Curve(x1,y1,x2,y2,x3,y3)// moveto line to
	{
	this.type	=2;// 2= curve
	this.x1		=x1;
	this.y1		=y1;	
	this.x2		=x2;
	this.y2		=y2;
	this.x		=x3;
	this.y		=y3;
	}




function _elementRect()
	{
	this.type			= 2;
	this.BRect			= new _BoundRect();
	this.strokeWidth	= 1;
	this.stroke			= new Array(0,0,0,255);
	this.strokeType		= 1; // 0 is none 1 is solid color 2 is linear 3 is radial
	this.fillType		= 1;
	this.fill			= new Array(255,255,0,255);
	this.style			= new Array();
	this.id				= new String();
	this.skewX			= 0;
	this.skewY			= 0;
	this.rotate			= 0;
	this.maxX			= 0;
	this.minX			= 0;
	this.maxY			= 0;
	this.minY			= 0;
	this.zIndex			= 0;
	this.translateY		= 0;
	this.translateX		= 0;
	this.outline		= 0;
	this.draw			= 0;
	}

function _elementEllipse()
	{
	this.type			= 1;
	this.BRect			= new _BoundRect();
	this.strokeWidth	= 1;
	this.stroke			= new Array(0,0,0,255);
	this.strokeType		= 1; // 0 is none 1 is solid color 1 is linear 2 is radial
	this.fillType		= 1;
	this.fill			= new Array(255,255,0,255);
	this.style			= new Array();
	this.id				= new String();
	this.skewX			= 0;//Math.PI/2 ;
	this.skewY			= 0;//Math.PI/2 ;
	this.rotate			= 0;
	this.maxX			= 0;
	this.minX			= 0;
	this.maxY			= 0;
	this.minY			= 0;
	this.zIndex			= 0;
	this.translateY		= 0;
	this.translateX		= 0;	
	this.outline		= 0;
	this.draw			= 0;
	}

function _elementText()
	{
	this.type			= 5;
	this.textString		=  new String("ABCD");
	this.strokeWidth	= 1;
	this.stroke			= new Array(0,0,0,255);
	this.strokeType		= 1; // 0 is none 1 is solid color 1 is linear 2 is radial
	this.fillType		= 1;
	this.fill			= new Array(0,0,0,255);
	this.style			= new Array();
	this.id				= new String();
	this.BRect			= new _BoundRect();
	this.skewX			= 0;//Math.PI/2 ;
	this.skewY			= 0;//Math.PI/2 ;
	this.rotate			= 0;
	this.maxX			= 0;
	this.minX			= 0;
	this.maxY			= 0;
	this.minY			= 0;
	this.zIndex			= 0;
	this.translateY		= 50;
	this.translateX		= 50;	
	this.outline		= 0;
	this.draw			= 0;
	this.fontSize		= 48;
	this.BRect.x1 =0;
	this.BRect.y1 =0;
	this.BRect.x2 =50;
	this.BRect.y2 =50;
	}




function _elementRoundRect()
	{
	this.type			= 3;
	this.BRect			= new _BoundRoundRect();
	this.strokeWidth	= 1;
	this.stroke			= new Array(0,0,0,255);
	this.strokeType		= 1; // 0 is none 1 is solid color 1 is linear 2 is radial
	this.fillType		= 1;
	this.fill			= new Array(255,255,0,255);
	this.style			= new Array();
	this.id				= new String();
	this.maxX			= 0;
	this.minX			= 0;
	this.maxY			= 0;
	this.minY			= 0;
	this.zIndex			= 0;
	this.skewX			= 0;
	this.skewY			= 0;
	this.rotate			= 0;
	this.translateY		= 0;
	this.translateX		= 0;
	this.outline		= 0;
	this.draw			= 0;
	}
function _elementPath()
	{
	this.type			= 4;
	this.closed			= 1; // 1= close 0 =open
	this.points			= new Array();
	this.strokeWidth	= new Number(1);
	this.stroke			= new Array(0,0,0,255);
	this.strokeType		= 1; // 0 is none 1 is solid color 1 is linear 2 is radial
	this.fillType		= 1;
	this.fill			= new Array(255,255,0,255);
	this.style			= new Array();
	this.id				= new String();
	this.skewX			= 0;
	this.skewY			= 0;
	this.rotate			= 0;
	this.maxX			= 0;
	this.minX			= 0;
	this.maxY			= 0;
	this.zIndex			= 0;
	this.minY			= 0;
	this.translateY		= 0;
	this.translateX		= 0;
	this.outline		= 0;
	this.draw			= 0;
	this.points[0]= new _PPPOINT(0,24,12);
	this.points[1]= new _PPPOINT(1,70,110);
	this.points[2]= new _PPPOINT(1,86,12);
	this.points[3]= new _PPPOINT(1,5,90);
	this.points[4]= new _PPPOINT(1,100,60);
	}

var current_move_object;
var CurrentItem=-1;
var ItemCount=0;
var ItemArray=new Array();
var current_move_function="";
var downX=-10000;
var downY=-10000;
var GetMask;

function myGetImageMask( url)
	{
	script = document.createElement('script');
	script.type = 'text/javascript';
	script.src = url;
	document.getElementsByTagName('head')[0].appendChild(script);
	return(script);
	}

function GetMoveVal()
			{
			var x=Math.abs(document.getElementById("MoveItem").value);
			if(isNaN(x)) return(5);
			if(x==0)x=5;
			return(x);
			}
function GetOtherVal(y)
			{
			switch(y)
				{
				case 1:y="ZoomItem";break;
				case 2:y="StretchItem";break;
				case 3:y="SkewItem";break;
				case 4:y="RotateItem";break;
				default:return(0.01);
				}
			var x=Math.abs(document.getElementById(y).value);
			if(isNaN(x)) return(0.01);
			if(x==0) x=0.01;
			return(x);
			}
function ItemScale(x,y)
		{
		var a=ItemArray[CurrentItem];
		switch(a.type)
			{
			case 3:a.BRect.rx=Math.round(a.BRect.rx*x);a.BRect.ry=Math.round(a.BRect.ry*y);// round Rect
			case 2:
			case 1:
					a.BRect.x1=Math.round(a.BRect.x1*x);
					a.BRect.y1=Math.round(a.BRect.y1*y);
					a.BRect.x2=Math.round(a.BRect.x2*x);
					a.BRect.y2=Math.round(a.BRect.y2*y);
					break;
			case 4:// path
					var b=ItemArray[CurrentItem].points;
					for(var m=0;m<b.length;m++)
						{
						a=b[m];
						if(a.type==2)
							{
							a.x1=Math.round(a.x1*x);
							a.y1=Math.round(a.y1*y);
							a.x2=Math.round(a.x2*x);
							a.y2=Math.round(a.y2*y);
							}
						a.x=Math.round(a.x*x);
						a.y=Math.round(a.y*y);
						}
					break;
			default:return;
			}
		}
function VerifySkew()
	{
	var x=40*0.017453293;
	if(ItemArray[CurrentItem].skewX<=(-x))ItemArray[CurrentItem].skewX=-x;
	if(ItemArray[CurrentItem].skewX>=( x))ItemArray[CurrentItem].skewX=x;
	if(ItemArray[CurrentItem].skewY<=(-x))ItemArray[CurrentItem].skewY=-x;
	if(ItemArray[CurrentItem].skewY>=( x))ItemArray[CurrentItem].skewY=x;
	}		
function ToolDown(x)
			{
			if (x!=50 && CurrentItem<0)
				if(x<16) return;
			AnyDown=1;	
			
			switch(x)
				{
				case 50:
					current_move_object="Tool1";
					downX=Xpos-parseInt(document.getElementById("Tool1").style.left,10);
					downY=Ypos-parseInt(document.getElementById("Tool1").style.top,10);
					current_move_function="";	return;

				case 0: x=parseInt(document.getElementById("item"+CurrentItem).style.left,10)-GetMoveVal();document.getElementById("item"+CurrentItem).style.left=x+"px";	return;//left
				case 1: x=parseInt(document.getElementById("item"+CurrentItem).style.left,10)+GetMoveVal();document.getElementById("item"+CurrentItem).style.left=x+"px";	return;// move right
				case 2: x=parseInt(document.getElementById("item"+CurrentItem).style.top,10) -GetMoveVal();document.getElementById("item"+CurrentItem).style.top=x+"px";	return;;// move up
				case 3: x=parseInt(document.getElementById("item"+CurrentItem).style.top,10) +GetMoveVal();document.getElementById("item"+CurrentItem).style.top=x+"px";	return;;// move down
							
				case 4: ItemScale(1-GetOtherVal(2),1);break;// Stretch left
				case 5: ItemScale(1+GetOtherVal(2),1);break;// Stretch right
				case 6: ItemScale(1,1+GetOtherVal(2));break;// Stretch up
				case 7: ItemScale(1,1-GetOtherVal(2));break;// Stretch down
				
				case 8: ItemArray[CurrentItem].skewX-=GetOtherVal(3)*0.017453293; VerifySkew();ItemArray[CurrentItem].skewY =0;break;// Skew left
				case 9: ItemArray[CurrentItem].skewX+=GetOtherVal(3)*0.017453293; VerifySkew();ItemArray[CurrentItem].skewY =0;break;// Skew right
				case 10:ItemArray[CurrentItem].skewY-=GetOtherVal(3)*0.017453293; VerifySkew();ItemArray[CurrentItem].skewX =0;break;// Skew up
				case 11:ItemArray[CurrentItem].skewY+=GetOtherVal(3)*0.017453293; VerifySkew();ItemArray[CurrentItem].skewX =0;break;// Skew down
							
				case 12:ItemScale(1+GetOtherVal(1),1+GetOtherVal(1));break;// Scale up
				case 13:ItemScale(1-GetOtherVal(1),1-GetOtherVal(1));break;// Scale down
							
				case 14:ItemArray[CurrentItem].rotate+=GetOtherVal(4)*0.017453293; break;// Rotate Up
				case 15:ItemArray[CurrentItem].rotate-=GetOtherVal(4)*0.017453293; break;// Rotate down
							
				case 16:ClearCurThumb();CurrentItem=GetFreeItem();ItemArray[CurrentItem]= new _elementEllipse()	 ;SetUpNewItem(CurrentItem);break;// Circle
				case 17:ClearCurThumb();CurrentItem=GetFreeItem();ItemArray[CurrentItem]= new _elementRect()	 ;SetUpNewItem(CurrentItem);break;// Rect
				case 18:ClearCurThumb();CurrentItem=GetFreeItem();ItemArray[CurrentItem]= new _elementRoundRect();SetUpNewItem(CurrentItem);break;// Round rect
				case 19:ClearCurThumb();CurrentItem=GetFreeItem();ItemArray[CurrentItem]= new _elementPath()	 ;SetUpNewItem(CurrentItem);break;// Path
				case 20:alert("Not Implemented"); break;
						ClearCurThumb();CurrentItem=GetFreeItem();ItemArray[CurrentItem]= new _elementText()	 ;SetUpNewItem(CurrentItem);break;// Path
				default: return;//continue;
				}
			
			Draw_Anhore(CurrentItem);
			RefreshItem(CurrentItem);
			return;
		}
			
		
function GetFreeItem()
		{
		var x;
		var m;
		for(x=0;x<ItemCount;x++)
			{
			if(ItemArray[x]==undefined) return(x);
			}
		return(ItemCount++);
		}			
			
function ToolUp(x)
			{
			downY=downX=-10000;
			}

var refresh_needed;	
var AnyDown=0;
function MasterMouseDown(e)
			{
			AnyDown=0;
			var mystring="MasterPause();";
			setTimeout(mystring,20);
			return;
			}
function MasterPause()
			{
			if(AnyDown) return;
			AnyDown=1;
			if(CurrentItem>=0)
				{
				if(ItemArray[CurrentItem].fillType>1)
					{
					var kk=IsDown(CurrentItem);
					if(kk) 
						{
						if(kk<0) return;
						FloodMouseDown(CurrentItem);
						return;
						}
					}
				}	
			for(var x=ItemCount-1;x>=0;x--)
				{
				if(ItemArray[x]==undefined)  continue;
				if(ItemArray[x].fillType<=1) continue;
				if(x==CurrentItem) continue;
				var kk=IsDown(x);
				if(kk) 
					{
					if(kk<0) return;
					FloodMouseDown(x);
					return;
					}
				}
			return;
			function IsDown(cc)
					{
					var a=document.getElementById("item"+cc).style;
					var x1,x2,y1,y2;
					x1=parseInt(a.left,10);
					y1=parseInt(a.top,10);
					x2=x1+ItemArray[cc].maxX;
					y2=y1+ItemArray[cc].maxY;
					x1+=ItemArray[cc].minX;
					y1+=ItemArray[cc].minY;
					if(Xpos>x1 && Xpos<x2 && Ypos>y1 && Ypos<y2) 
						{
						x1-=ItemArray[cc].minX;
						y1-=ItemArray[cc].minY;
						var tt=ItemArray[cc].fillGradient.stop;
						for(var hh=0;hh<tt.length;hh++)
							{
							x2=parseInt(document.getElementById("T"+cc+"I"+hh).style.left,10)-1;
							y2=parseInt(document.getElementById("T"+cc+"I"+hh).style.top,10)-1;
							if(Xpos>=x2+x1 &&Xpos<=x2+x1+9 &&Ypos>=y2+y1 &&Ypos<=y2+y1+9)
								return(-1);
							}
						
						var tt=document.getElementById("itemDR"+cc);
						for(var m=0;tt.childNodes[m];m++)
							{
							if(parseInt(tt.childNodes[m].style.top,10)+y1!=Ypos) continue;
							y2=parseInt(tt.childNodes[m].style.left,10)+x1;
							if(Xpos<y2) continue;
							x2=parseInt(tt.childNodes[m].style.width,10)+y2;
							if(Xpos<x2) return(1);
							}
						return(0);
						}
					return(0);
					}
			
			}
			
function MasterMouseMove(e)
			{
   		Xpos=
			(ie5)?event.x+window.document.body.scrollLeft:(ns6)?clientX=e.clientX+window.pageXOffset:e.pageX;
		Ypos=
			(ie5)?event.y+window.document.body.scrollTop:(ns6)?clientY=e.clientY+window.pageYOffset:e.pageY;						
			AnyDown=1;
			if(downX>-10000 &&  downY>-10000)
				{
				var m=document.getElementById(current_move_object).style;
				if(current_move_object=="RedBut" ||current_move_object=="GreenBut" ||current_move_object=="BlueBut")
					{
					if(Number(Number(Xpos)-Number(downX)) >=256 || Number(Number(Xpos)-Number(downX)) <0)
						return;
					m["left"]=Number(Number(Xpos)-Number(downX))+"px";
					SetColorDiv();
					return;
					}
				
				m["left"]=Number(Number(Xpos)-Number(downX))+"px";
				m["top"] =Number(Number(Ypos)-Number(downY))+"px";
				refresh_needed=1;
				}
			}
			

function parsing_itemID()
		{
		var pp=new Array();
		var a=current_move_object.substring(1);
		
		pp.a=parseInt(a,10);
		a=a.substring(a.indexOf("@")+1);
		pp.b=parseInt(a,10);
		if(a.indexOf("#")>=1)
			{
			a=a.substring(a.indexOf("#")+1);
			pp.c=parseInt(a,10);
			}
		return(pp);
		}
		

function AchchorMove()
		{
		var m=document.getElementById(current_move_object).style;
		var x1=parseInt(m.left,10)+1;
		var y1=parseInt(m.top,10)+1;
		var pp=SVGReverseTransform(x1,y1);
		x1=pp.x;
		y1=pp.y;
		pp=parsing_itemID();
		switch(ItemArray[CurrentItem].type)
			{
			case 4:
				switch(pp.c)
					{
					case 1:
						ItemArray[CurrentItem].points[pp.b].x=x1;
						ItemArray[CurrentItem].points[pp.b].y=y1;break;
					case 2:
						ItemArray[CurrentItem].points[pp.b].x1=x1;
						ItemArray[CurrentItem].points[pp.b].y1=y1;break;
					case 3:
						ItemArray[CurrentItem].points[pp.b].x2=x1;
						ItemArray[CurrentItem].points[pp.b].y2=y1;break;
					}
					break;
			case 3:	
					m=document.getElementById("p"+pp.a+"@"+1).style;
					var pp2=SVGReverseTransform(parseInt(m.left,10),parseInt(m.top,10));			
					if(pp.b==3)
						{
						x1=x1-pp2.x;//parseInt(m.left,10);
						if(x1<0 ) break;
						//if(x1<parseInt(m.width,10)/2) 
						ItemArray[CurrentItem].BRect.rx=x1;
						break;
						}
					else if(pp.b==4)
				   		{
				   		y1=y1-pp2.y;//parseInt(m.top,10);
				   		if(y1<0) break;
				   		//if(x1<parseInt(m.height,10)/2) 	
						ItemArray[CurrentItem].BRect.ry=y1;
						break;
						}	
			case 1://"p"+cur+"@"+1
			case 2:
				if(pp.b==1)
					{
					ItemArray[CurrentItem].BRect.x1=x1;
					ItemArray[CurrentItem].BRect.y1=y1;
					break;
					}
				   else if(pp.b==2)
				   	{
					ItemArray[CurrentItem].BRect.x2=x1;
					ItemArray[CurrentItem].BRect.y2=y1;
					break;
					}
				break;	
			}
		}
			
function AnchorMouseDown(itemID) //DOWN
		{
		var x=document.getElementById(itemID).style;
		AnyDown=1;
		if(downY==-20000)
			{
			downY=downX=-10000;
			return;
			}
		if(CurrentItem>=0)
			{
			if(ItemArray[CurrentItem].type==5){
				refresh_needed=0;
				ShowOneMenu(Xpos,Ypos,document.getElementById("TextStrokeMenu"),700,TextStrokeMenuTemplate.ParamPass);
				//SetCurThumb();
				return;
				}
			document.getElementById('itemAC'+ CurrentItem).style.visibility="visible";
			}
		//var y =itemID.indexOf("@");
		//alert(itemID.substring( 1, y));
		current_move_object=itemID;
		downX=Xpos-parseInt(x.left,10);
		downY=Ypos-parseInt(x.top,10);
		
		if(itemID=="RedBut" || itemID=="GreenBut" ||itemID=="BlueBut")
			{
			//alert(itemID);
			refresh_needed=0;
			return;
			}
		if(itemID.indexOf("T")!=0)
			document.getElementById("AutoColor").checked=0;
		current_move_function=AchchorMove;
		refresh_needed=0;
		}
function StrokeMouseUp(itemID)
		{
		}
function StrokeMouseDown(itemID)
		{
		AnyDown=1;
		var cur,item,subitem;
		cur=parseInt(itemID.substring(2));
		item=itemID.indexOf("@");
		
		if(item>=0)
			{
			item=parseInt(itemID.substring(item+1));
			}
		subitem=itemID.indexOf("K");
		if(ItemArray[cur].type==4)
			{
			var x=ItemArray[cur].points;
			LineDownPath=item;
			if(item>=x.length-1){ShowPath2Menu(Xpos,Ypos);return;}
			if(x[item+1].type==2)
				{
				x="Change to Line";
				}
			else
				x="Change to Curve";
			document.getElementById("li3").innerHTML=x;
			if(ItemArray[CurrentItem].closed) x="Open Two Ends";
				else	x="Close Two Ends";
			document.getElementById("li8").innerHTML=x;
			ShowPath1Menu(Xpos,Ypos);
			}
		else
			ShowPath2Menu(Xpos,Ypos);
		ClearCurThumb();
		CurrentItem=cur;
		document.getElementById("itemAC"+cur).style.visibility="visible";
		SetCurThumb();		
		}
function AnchorMouseUp(itemID)
		{
		downY=downX=-10000;
		current_move_function="";
		if(refresh_needed)
			{
			if(itemID.indexOf("T")==0)
				{
				var cur=parseInt(itemID.substring(1));
				var m=parseInt(itemID.substring(1+itemID.indexOf("I")));
				//alert(m+ " " + cur);
				var b=ItemArray[cur].fillGradient;
				var x=document.getElementById(itemID).style;
				var y=parseInt(x.top,10)+4;
					x=parseInt(x.left,10)+4;
				if(m==0)
					{
					if(ItemArray[cur].fillType==2)
						{b.x1=x;b.y1=y;	}
					else
						{b.fx=x;b.fy=y;	}
					}
				else if(m==b.stop.length-1)	
					{
					if(ItemArray[cur].fillType==2)
						{b.x2=x;b.y2=y;}
					else
						{b.r=Math.abs(x-b.fx);}
					}
				else
					{
					if(ItemArray[cur].fillType==2)
						{
						var w=Math.abs (b.x2-b.x1);
						var h=Math.abs (b.y2-b.y1);
						if(h>w) 
							w=Math.abs (y-b.y1);
						else { h=w; w=Math.abs (x-b.x1);}
						h=w/h;
						if(h>=1) h=0.9;
						else { h*=1000; h=Math.round (h); h/=1000;}
						b.stop[m].offset=h;
						}
					
					else
						{
						var a=Math.abs(x-b.fx);
							a/=b.r; a*=1000; a=Math.round(a); a/=1000;
						b.stop[m].offset=a;
						}
						
					}
				//AchchorMove();
				Draw_Anhore(CurrentItem);
				return;
				}
			AchchorMove();
			RefreshItem(CurrentItem);
			Draw_Anhore(CurrentItem);
			}
		refresh_needed=0;	
		}

var CurveAddlevel;
var PathOrient =new Array();

var StrokeColor;
var FillSection;


function GetMatrixString(X){
	var itm=ItemArray[X];
	var xx="";
	var a,b,c,d,x,y;
	var cnt=1;
	xx="a=1 b=0 c=0 d=1 x=0 y=0"; // SCALE =1 always
	
/*	
if(itm.type==5){
	var bb=	SVGApplet.UnitPerEm;
	//alert(bb);
	bb=itm.fontSize/bb;
	xx="a="+bb+" b=0 c=0 d="+bb+" x=0 y=0";
	//alert(bb);
}
*/	
	
	//Xi = X * a + Y * c;// alpha=0;
	//Yi = X * b + Y * d;
	if(itm.rotate){
		a = Math.cos(itm.rotate);
		b = Math.sin(itm.rotate);
		c = b*(-1);
		d = a;
		x = 0;
		y = 0;
		cnt++;
		xx=" a=" +a+" b="+b+ " c=" + c+ " d="+d+" x="+ x+ " y="+y;
	}
	
	
	if((itm.skewX ||itm.skewY) && itm.type!=5){
		a = 1;
		b = 0;
		c = 0;
		if(itm.skewX)
			b = Math.tan(itm.skewX);
		if(itm.skewY)
			c = Math.tan(itm.skewY);
			
		d = 1;
		x = 0;
		y = 0;
		cnt++;
		xx+=" a=" +a+" b="+b+ " c=" + c+ " d="+d+" x="+ x+ " y="+y;
	}
	
//	if(itm.translateX || itm.translateY){
//		a = 1;
//		b = 0;
//		c = 0;
//		d = 1;
//		x = itm.TranslateX;
//		y = itm.TranslateX;
//		cnt++;
//		xx+=" a=" +a+" b="+b+ " c=" + c+ +" d="+d+" x="+ x+ " y="+y;
//	}	
xx+=" Count="+ cnt;
return(xx);	
}


var test_out2,test_out1;


var MeatSkin=new Array();
var SKINCOUNT=0;

function PutMeatSkin(x,y,z)
{
if(z==0)
	return(MeatSkin[y].Meat);
if(z==1)
	return(MeatSkin[y].Skin);
alert(MeatSkin[y].Skin);	
}
function GetStopString(lk)
{
var rr,uu,jj;
uu=lk.length;
rr="";

for(jj=0;jj<uu;jj++)
	{
	rr+="<stop  offset="+lk[jj].offset+" style='stop-opacity:"+lk[jj].opacity+" stop-color:"+RgbToString(lk[jj].colorR,lk[jj].colorG,lk[jj].colorB)+";'/>\r\n"
	}
return(rr);
}





function RefreshItem(Cur){
	var item_Style="";
	var item_Gradient="";;
	var item_Attributes="";;
	var item_tag="";
	
	var MaxMin=new Array();
	MaxMin.x1=20000;
	MaxMin.x2=-20000;
	MaxMin.y1=20000;
	MaxMin.y2=-20000;

	//CurrentItem=x;	
	/*
	var bb=	SVGApplet.UnitPerEm;
	//bb*=1;
	if(bb==0 || bb==undefined){
		bb=document.getElementById("testDiv").innerHTML;
		//alert(bb);
		SVGApplet.SetFont(bb);
		}
	
//******************************		FONT
		
	var aa=GetMatrixString(Cur);
	//alert(aa);
	SVGApplet.SetMatix(aa+" ");
	*/
	
	var itm=ItemArray[Cur];
	var rotating="";
	if(itm.rotate!=0)
		{
		rotating="rotate("+((itm.rotate)*-1)+")";
		}
	if(itm.skewX ||	itm.skewY)
		{
		if(Math.tan(itm.skewY)<200 && Math.tan(itm.skewY)!=0)
			rotating+="SkewY("+itm.skewY+")";
		if(Math.tan(itm.skewX)<200 && Math.tan(itm.skewX)!=0)
			rotating+="SkewX("+itm.skewX+")";
		}
		
	
	switch(itm.fillType){
		case 1:
			item_Style='fill:'+RgbToString(itm.fill[0],itm.fill[1],itm.fill[2])+';fill-opacity:'+itm.fill[3]/255+';';
			break;
		case 2:
			item_Style='fill:url(#Linear1'+Cur+');';
			aa=itm.fillGradient;
			item_Gradient='<LinearGradient id="Linear1'+Cur+'" x1=' + aa.x1+" x2="+aa.x2+"  y1="+aa.y1+" y2="+aa.y2+" >";
			aa=GetStopString(aa.stop,item_Gradient);
			item_Gradient+=aa;
			item_Gradient+='</LinearGradient>'
			break;
		case 3:
			aa=itm.fillGradient;
			bb="RadialGradient r="+aa.r+" cx="+aa.fx+" cy="+aa.fy;
			item_Style='fill:url(#radial1'+Cur+');';
			aa=itm.fillGradient;
			item_Gradient='<RadialGradient id="radial1'+Cur+'" r=' +aa.r+" cx="+aa.fx+" cy="+aa.fy+" >";
			aa=GetStopString(aa.stop,item_Gradient);
			item_Gradient+=aa;
			item_Gradient+='</RadialGradient>';
			break;
		default:
			alert("None");
			item_Style='fill:"none;"'
			break;
	}
	if(itm.strokeWidth==0) item_Style+='stroke:none;'
	else
	switch(itm.strokeType){
		case 1:
			item_Style+='stroke:'+RgbToString(itm.stroke[0],itm.stroke[1],itm.stroke[2])+';stroke-opacity:'+itm.stroke[3]/255+';';
			break;
		case 2:
			item_Style+='stroke:url(#Linear2'+Cur+');';
			aa=itm.StrokeGradient;
			item_Gradient+='<LinearGradient id="Linear2'+Cur+'" x1=' + aa.x1+" x2="+aa.x2+"  y1="+aa.y1+" y2="+aa.y2+" >";
			aa=GetStopString(aa.stop,item_Gradient);
			item_Gradient+=aa;
			item_Gradient+='</LinearGradient>'
			
			break;
		case 3:
			item_Style+='stroke:url(#radial2'+Cur+');';
			aa=itm.StrokeGradient;
			item_Gradient+='<RadialGradient id="radial2'+Cur+'" r=' +aa.r+" cx="+aa.fx+" cy="+aa.fy+" >";
			aa=GetStopString(aa.stop,item_Gradient);
			item_Gradient+=aa;
			item_Gradient+='</RadialGradient>';
			break;
		default:
			//alert("None");
			item_Style+='stroke:none;'
			break;
	
	}
	item_Style+="stroke-width:"+itm.strokeWidth+";";
	
	switch(itm.type){
		case 5: 
			var BRect=itm.BRect;
			bb=itm.textString+"";
			item_tag="<text" + " style='"+item_Style+"'>"+itm.textString+"</text>"
			break;
		case 1:
			var BRect=itm.BRect;

			if(BRect.x2-BRect.x1==BRect.y2-BRect.y1)
				{
				aa="cx=" +(BRect.x2+BRect.x1)/2+ " cy=" +(BRect.y2+BRect.y1)/2+ " r=" +(BRect.x2-BRect.x1)/2+ " ";
				item_tag="<circle" + " style='"+item_Style+"' "+ aa+"/>"
				}
			else
				{
				aa="cx=" +(BRect.x2+BRect.x1)/2+ " cy=" +(BRect.y2+BRect.y1)/2+ " rx=" +(BRect.x2-BRect.x1)/2+ " ry="+(BRect.y2-BRect.y1)/2 + " ";
				item_tag="<ellipse" + " style='"+item_Style+"' "+ aa+"/>"
				}
			pp=SVGTransform(BRect.x1, BRect.y1);if(MaxMin.x1>pp.x) MaxMin.x1=pp.x;if(MaxMin.x2<pp.x) MaxMin.x2=pp.x;    if(MaxMin.y1>pp.y) MaxMin.y1=pp.y;if(MaxMin.y2<pp.y) MaxMin.y2=pp.y;
			pp=SVGTransform(BRect.x2, BRect.y2);if(MaxMin.x1>pp.x) MaxMin.x1=pp.x;if(MaxMin.x2<pp.x) MaxMin.x2=pp.x;    if(MaxMin.y1>pp.y) MaxMin.y1=pp.y;if(MaxMin.y2<pp.y) MaxMin.y2=pp.y;
			pp=SVGTransform(BRect.x1, BRect.y2);if(MaxMin.x1>pp.x) MaxMin.x1=pp.x;if(MaxMin.x2<pp.x) MaxMin.x2=pp.x;    if(MaxMin.y1>pp.y) MaxMin.y1=pp.y;if(MaxMin.y2<pp.y) MaxMin.y2=pp.y;
			pp=SVGTransform(BRect.x2, BRect.y1);if(MaxMin.x1>pp.x) MaxMin.x1=pp.x;if(MaxMin.x2<pp.x) MaxMin.x2=pp.x;    if(MaxMin.y1>pp.y) MaxMin.y1=pp.y;if(MaxMin.y2<pp.y) MaxMin.y2=pp.y;

			break;
		case 2:
			var BRect=itm.BRect;
			aa="x="  +BRect.x1+ " y=" +BRect.y1+ " width=" +(BRect.x2-BRect.x1)+ "  height=" +(BRect.y2-BRect.y1)+ " ";
			item_tag="<rect" + " style='"+item_Style+"' "+ aa+"/>"
			pp=SVGTransform(BRect.x1, BRect.y1);if(MaxMin.x1>pp.x) MaxMin.x1=pp.x;if(MaxMin.x2<pp.x) MaxMin.x2=pp.x;    if(MaxMin.y1>pp.y) MaxMin.y1=pp.y;if(MaxMin.y2<pp.y) MaxMin.y2=pp.y;
			pp=SVGTransform(BRect.x2, BRect.y2);if(MaxMin.x1>pp.x) MaxMin.x1=pp.x;if(MaxMin.x2<pp.x) MaxMin.x2=pp.x;    if(MaxMin.y1>pp.y) MaxMin.y1=pp.y;if(MaxMin.y2<pp.y) MaxMin.y2=pp.y;
			pp=SVGTransform(BRect.x1, BRect.y2);if(MaxMin.x1>pp.x) MaxMin.x1=pp.x;if(MaxMin.x2<pp.x) MaxMin.x2=pp.x;    if(MaxMin.y1>pp.y) MaxMin.y1=pp.y;if(MaxMin.y2<pp.y) MaxMin.y2=pp.y;
			pp=SVGTransform(BRect.x2, BRect.y1);if(MaxMin.x1>pp.x) MaxMin.x1=pp.x;if(MaxMin.x2<pp.x) MaxMin.x2=pp.x;    if(MaxMin.y1>pp.y) MaxMin.y1=pp.y;if(MaxMin.y2<pp.y) MaxMin.y2=pp.y;
			break;
		case 3:
			var BRect=itm.BRect;
			aa="x="  +BRect.x1+ " y=" +BRect.y1+ " width=" +(BRect.x2-BRect.x1)+ "  height=" +(BRect.y2-BRect.y1)+ " ";
			aa+=" rx="  +BRect.rx+ " ry=" +BRect.ry+ " ";
			item_tag="<rect" + " style='"+item_Style+"' "+ aa+"/>"
			pp=SVGTransform(BRect.x1, BRect.y1);if(MaxMin.x1>pp.x) MaxMin.x1=pp.x;if(MaxMin.x2<pp.x) MaxMin.x2=pp.x;    if(MaxMin.y1>pp.y) MaxMin.y1=pp.y;if(MaxMin.y2<pp.y) MaxMin.y2=pp.y;
			pp=SVGTransform(BRect.x2, BRect.y2);if(MaxMin.x1>pp.x) MaxMin.x1=pp.x;if(MaxMin.x2<pp.x) MaxMin.x2=pp.x;    if(MaxMin.y1>pp.y) MaxMin.y1=pp.y;if(MaxMin.y2<pp.y) MaxMin.y2=pp.y;
			pp=SVGTransform(BRect.x1, BRect.y2);if(MaxMin.x1>pp.x) MaxMin.x1=pp.x;if(MaxMin.x2<pp.x) MaxMin.x2=pp.x;    if(MaxMin.y1>pp.y) MaxMin.y1=pp.y;if(MaxMin.y2<pp.y) MaxMin.y2=pp.y;
			pp=SVGTransform(BRect.x2, BRect.y1);if(MaxMin.x1>pp.x) MaxMin.x1=pp.x;if(MaxMin.x2<pp.x) MaxMin.x2=pp.x;    if(MaxMin.y1>pp.y) MaxMin.y1=pp.y;if(MaxMin.y2<pp.y) MaxMin.y2=pp.y;
			break;
		case 4:
			var xx=new Array();
			var ct=0;
			var m=itm.points
			var c;
			var m2=m.length;
			
			for(c=0;c<m2;c++){
				var a=m[c];
				switch(a.type){
					case 0:xx[ct++]="M" +a.x+"," + a.y; 
						pp=SVGTransform(a.x, a.y);if(MaxMin.x1>pp.x) MaxMin.x1=pp.x;if(MaxMin.x2<pp.x) MaxMin.x2=pp.x;    if(MaxMin.y1>pp.y) MaxMin.y1=pp.y;if(MaxMin.y2<pp.y) MaxMin.y2=pp.y;
						break;
					case 1:xx[ct++]="L" +a.x+"," + a.y; 
						pp=SVGTransform(a.x, a.y);if(MaxMin.x1>pp.x) MaxMin.x1=pp.x;if(MaxMin.x2<pp.x) MaxMin.x2=pp.x;    if(MaxMin.y1>pp.y) MaxMin.y1=pp.y;if(MaxMin.y2<pp.y) MaxMin.y2=pp.y;					
						break;
					case 2:xx[ct++]="C" +a.x1+","+a.y1+","+a.x2+","+a.y2+","+a.x+","+a.y;
						pp=SVGTransform(a.x, a.y);if(MaxMin.x1>pp.x) MaxMin.x1=pp.x;if(MaxMin.x2<pp.x) MaxMin.x2=pp.x;    if(MaxMin.y1>pp.y) MaxMin.y1=pp.y;if(MaxMin.y2<pp.y) MaxMin.y2=pp.y;
						pp=SVGTransform(a.x1, a.y1);if(MaxMin.x1>pp.x) MaxMin.x1=pp.x;if(MaxMin.x2<pp.x) MaxMin.x2=pp.x;    if(MaxMin.y1>pp.y) MaxMin.y1=pp.y;if(MaxMin.y2<pp.y) MaxMin.y2=pp.y;
						pp=SVGTransform(a.x2, a.y2);if(MaxMin.x1>pp.x) MaxMin.x1=pp.x;if(MaxMin.x2<pp.x) MaxMin.x2=pp.x;    if(MaxMin.y1>pp.y) MaxMin.y1=pp.y;if(MaxMin.y2<pp.y) MaxMin.y2=pp.y;
					}
				}
			if(itm.closed) xx[ct++]="Z";
			m="d='"+xx.join("")+"'";
			
			item_tag="<path" + " style='"+item_Style+"' "+ m+" />"
			//SVGApplet.DrawPath(m);
			break;
			
		default:return;
	}
MaxMin.x1-=itm.strokeWidth;MaxMin.x1-=2;
MaxMin.y1-=itm.strokeWidth;MaxMin.y1-=2;
MaxMin.x2+=itm.strokeWidth;MaxMin.x2+=4;
MaxMin.y2+=itm.strokeWidth;MaxMin.y2+=4;
itm.minY=ItemMinY=MaxMin.y1;
itm.minX=ItemMinX=MaxMin.x1;
itm.maxX=ItemMaxX=MaxMin.x2;
itm.maxY=ItemMaxY=MaxMin.y1;
MaxMin.x2-=MaxMin.x1;
MaxMin.y2-=MaxMin.y1;


	
if(item_Gradient!="")
	item_Gradient="<defs>" +item_Gradient + "</defs>"
	
if(item_Gradient!="")	
	item_tag=item_Gradient+item_tag;
	
item_tag="<g>"+item_tag+"</g> ";
var TheProtocol;



TheProtocol="zip:data/load;image/png;sig=me;viewport["+MaxMin.x1+","+MaxMin.y1+","+MaxMin.x2+","+MaxMin.y2+"]"+rotating+"/"+item_tag;
//if(item_Gradient!="")
//	alert(TheProtocol);


var w=MaxMin.x2;
var h=MaxMin.y2;
MaxMin=undefined;
var outt1="<img id='Meat" +Cur+ "' onmousedown='FloodMouseDown(" +Cur+ ")' ";
if(ie5)
	outt1+="style='background-color:transparent;position:absolute;visibility:visible;overflow:visible;top:"+ItemMinY+"px;left:"+ItemMinX+"px;width:"+w+"px;height:"+h+"px;FILTER:Chroma(Color=#FEFEFE);'>";	
else
	outt1+="style='background-color:transparent;position:absolute;visibility:visible;overflow:visible;top:"+ItemMinY+"px;left:"+ItemMinX+"px;width:"+w+"px;height:"+h+"px;'>";	
document.getElementById("itemDR"+Cur).innerHTML=outt1;
document.getElementById("Meat"+Cur).src=TheProtocol;
if(ie5)
	window.clipboardData.setData("Text",TheProtocol);
var a=myGetImageMask("zip:IsZipInstalled/GetMask;Text/plain;sig=me;/;;");

var mystring="mypauseToParse("+ Cur+");";
document.getElementsByTagName('head')[0].removeChild(a);
setTimeout(mystring,70);
return;
}
		


function mypauseToParse(Cur)
	{
	MeatSkin[Cur]=GetMask;
//	alert(MeatSkin[Cur]);
//	MeatSkin[Cur]="";
//	alert(MeatSkin[Cur]);
	}

function SetCurThumb()
		{
		document.getElementById("item"+CurrentItem).style["zIndex"]=ItemCount+150;
		}
function ClearCurThumb()
		{
		if(CurrentItem>=0)
			{
			document.getElementById("itemAC"+CurrentItem).style.visibility="hidden";
			document.getElementById("item"+CurrentItem).style["zIndex"]=ItemArray[CurrentItem].zIndex;
			}
		}

function FloodMouseDown(cur)
		{
		if(MeatSkin[cur].length <10) return;
		ClearCurThumb();
		AnyDown=1;

		var tt=GetPosAbs2(document.getElementById("Meat"+cur));
		var a=Xpos-tt.l;
		var b=Ypos-tt.t;
		b=b*(tt.r-tt.l);
		b+=a;
		b*=2;
		
		a=parseInt(b/6);
		var the_char=MeatSkin[cur].charAt(a);
		if(the_char =='A' ||the_char==0) return;
		CurrentItem=cur;
		document.getElementById("itemAC"+CurrentItem).style.visibility="visible";
		if(ItemArray[cur].type==5)
			ShowItemTextMenu(Xpos,Ypos);
		else	
			ShowItemMenu(Xpos,Ypos);
		SetCurThumb();
		}

var LastBkColor=-1;
function SetItemBkColor(cur)
		{
		var ThisColor=RgbToString(ItemArray[cur].fill[0],ItemArray[cur].fill[1],ItemArray[cur].fill[2]);
		var x=document.getElementById("itemDR"+cur);
		LastBkColor=cur;
		for(var m=0;x.childNodes[m];m++)
			{
			x.childNodes[m].style.backgroundColor=ThisColor;
			}
		}


function SetUpNewItem(cur)
		{
		var y = document.getElementById("PAPA").appendChild(document.createElement('div'));
		y.id = 'item'+ cur;	y.className='Items';y.style.top="10px";y.style.left="10px";
		y.style["zIndex"]=cur+100;
		y.style.top=ItemArray[cur].translateY+"px";
		y.style.left=ItemArray[cur].translateX+"px";
		var yy = y.appendChild(document.createElement('div'));
		yy.id = 'itemDR'+ cur;	yy.className='Items'; yy.style.top="0px";yy.style.left="0px"; // for fill
		
		
		yy = y.appendChild(document.createElement('div'));
		yy.id = 'itemOL'+ cur;	yy.className='Items'; yy.style.top="0px";yy.style.left="0px";// outline
		
		
		yy = y.appendChild(document.createElement('div'));
		yy.id = 'itemAC'+ cur;	yy.className='Items'; yy.style.top="0px";yy.style.left="0px";//anchor
		
		var a=ItemArray[cur];
		a.zIndex= cur+100;
		var b="";
		switch(a.type)
				{
				case 3:
					   b =MakeAnchorStr("p"+cur+"@"+3,'RountPoint');
					   b+=MakeAnchorStr("p"+cur+"@"+4,'RountPoint');
				case 2:
				case 1:// create 4 new div
						b+=MakeAnchorStr("p"+cur+"@"+1,'Anchor');
					    b+=MakeAnchorStr("p"+cur+"@"+2,'Anchor');
					    
					    b+=MakeStrokeStr("st"+cur,'AnchorS');
						yy.innerHTML=b;
						//making stroke point
					break;
				case 4:
					CreatePathOL(cur);
					break;
				case 5:
					b=MakeAnchorStr("p"+cur+"@1",'Anchor');
					yy.innerHTML=b;
					break;
				}
		
		}
		
function CreatePathOL(cur)
		{
		var m=ItemArray[cur].points;
		var html="";
		var yy=document.getElementById('itemAC'+cur);
		yy.innerHTML="";
		var a="";
		for(var x=0;x<m.length;x++)
			{
			if(x<m.length-1)
				{
				// making stroke point
				a+=MakeStrokeStr("st"+cur+"@"+x,'AnchorS');
				
				}
			else
				{
				//making stroke END point 
				a+=MakeStrokeStr("st"+cur+"@"+x+"K",'AnchorS');
				}
			if(m[x].type==2)
				{
				a+=MakeAnchorStr("p"+cur+"@"+x+"#"+2,'Curve');
				a+=MakeAnchorStr("p"+cur+"@"+x+"#"+3,'Curve');
				}
			a+=MakeAnchorStr("p"+cur+"@"+x+"#"+1,'Anchor');
			}
		yy.innerHTML=a;
		}
function DrawOutlinePoint(x,y,cur,childname,flag)
	{
	var yy;
	
	var pp=SVGTransform(x, y);
	
	if(flag==-1)
		yy="p"+cur+"@"+childname;
	else
		yy="p"+cur+"@"+childname+"#"+flag;
	pp.y--;
	pp.x--;
	
	flag=document.getElementById(yy).style;
	flag.top=pp.y+"px";
	flag.left=pp.x+"px";
	}
function DrawStrokePoint(x,y,childnameId)
	{
	var pp=SVGTransform(x, y);
	pp.y--;
	pp.x--;
	var flag;
	flag=document.getElementById(childnameId).style;
	flag.top=pp.y+"px";
	flag.left=pp.x+"px";
	}
function Draw_Anhore(cur)
		{
		var a=ItemArray[cur];
		switch(a.type)
			{
			case 5:
					DrawOutlinePoint(a.BRect.x1,a.BRect.y1,cur,1,-1);break;
			
			case 3:DrawOutlinePoint(a.BRect.x1+a.BRect.rx,a.BRect.y1,cur,3,-1);
			       DrawOutlinePoint(a.BRect.x1,a.BRect.y1+a.BRect.ry,cur,4,-1);
			case 2:
			case 1:DrawOutlinePoint(a.BRect.x1,a.BRect.y1,cur,1,-1);
				   DrawOutlinePoint(a.BRect.x2,a.BRect.y2,cur,2,-1);
				   //refresh(cur);
				   if(a.BRect.rx !=undefined &&  a.BRect.ry!=undefined)
				      DrawStrokePoint(a.BRect.x1+Math.round(a.BRect.rx/2),a.BRect.y1+Math.round (a.BRect.ry/2),"st"+cur)
				   break;
			case 4:
					var m=ItemArray[cur].points;
					for(var x=0;x<m.length;x++)
						{
//						if(m[x].type==2);
//						else
							{
							if(x<m.length-1)
								DrawStrokePoint(Math.round ((m[x].x+m[x+1].x)/2),Math.round ((m[x].y+m[x+1].y)/2),"st"+cur+"@"+x);
							else
								DrawStrokePoint(Math.round ((m[x].x+m[0].x)/2),Math.round ((m[x].y+m[0].y)/2),"st"+cur+"@"+x+"K");
							}
						DrawOutlinePoint(m[x].x,m[x].y,cur,x,1);
						if(m[x].type==2)
							{
							DrawOutlinePoint(m[x].x1,m[x].y1,cur,x,2);
							DrawOutlinePoint(m[x].x2,m[x].y2,cur,x,3);
							}
						}
					break;
			}
		
		DrawGradient(cur);
		}
		
function DrawGradient(cur)
		{
		var a;
		if(ItemArray[cur].fillType<=1)
			{
			try	{
				a=document.getElementById("T"+cur+"I0").style; // not defined
				}
			catch(e) {return;}
			}
		
		var aa="";
		var b=ItemArray[cur].fillGradient;
		var x1,x2,y1,y2;
		if(ItemArray[cur].fillType==2)
			{
			x1=b.x1;		x2=b.x2;		y1=b.y1;		y2=b.y2;
			}
		if(ItemArray[cur].fillType==3)
			{
			x1=b.fx;
			x2=b.fx+b.r;
			y1=b.fy;
			y2=b.fy;
			}
		//draw all stop	
		b=b.stop;
		x2-=x1;
		y2-=y1;
		
		for(var x=0;x<b.length;x++)
			{
			if(ItemArray[cur].fillType<=1)
				{
				try
					{
					a=document.getElementById("T"+cur+"I"+x);
					document.getElementById('itemAC'+cur).removeChild(a);
					} catch(e) {;}
				continue;
				}
			try {
			    a=document.getElementById("T"+cur+"I"+x).style;
				} catch(e)
					{
					var kk="<div class='Radient1' onmousedown='CThumbDn("+cur+","+x+")' style='background-color:#FFF;'> </div></div>";
					aa=MakeAnchorStr("T"+cur+"I"+x,"Radient3");
					aa=aa.replace("</div>",kk);
					document.getElementById('itemAC'+cur).innerHTML+=aa;
					a=document.getElementById("T"+cur+"I"+x).style;
					}
					
			try
				{
				if(x) { if(b[x].offset<b[x-1].offset) b[x].offset=b[x-1].offset+0.05;}
				b[x].left=a.left				=Math.round ((x1-4)+x2*b[x].offset)+"px";
				b[x].top =a.top 				=Math.round ((y1-4)+y2*b[x].offset)+"px";
				a.backgroundColor	=RgbToString(b[x].colorR,b[x].colorG,b[x].colorB);
				var vv=RgbToString(~b[x].colorR,~b[x].colorG,~b[x].colorB);
				document.getElementById("T"+cur+"I"+x).childNodes[0].style.backgroundColor=vv;
				a["borderColor"]=vv;
				}catch(e){;}
			}

			
		x=b.length;
		try {
			a=document.getElementById("T"+cur+"I"+x).style;
			document.getElementById('itemAC'+cur).removeChild(document.getElementById("T"+cur+"I"+x));
			}catch(e){;}
		return;	
		}

var GradientIndex1=0;
var GradientIndex2=0;
function CThumbDn(cur,index)
		{
		GradientIndex1=cur;
		GradientIndex2=index;
		downY=downX=-20000;
		AnyDown=1;
		if(index==0 ||index== ItemArray[GradientIndex1].fillGradient.stop.length-1)
			ShowOneMenu(Xpos,Ypos,document.getElementById("Gradient1"),300,GradientTemplate1.ParamPass);
		else
			ShowOneMenu(Xpos,Ypos,document.getElementById("Gradient2"),400,GradientTemplate2.ParamPass);
		}

function RgbToString(RR,GG,BB)
		{
		var x = "#" + IntToHex(RR) + IntToHex(GG) + IntToHex(BB);
		return(x);
		}
		
function AlphaRgbToString(OO,RR,GG,BB)
		{
		var x = "#" +IntToHex(OO)+ IntToHex(RR) + IntToHex(GG) + IntToHex(BB);
		return(x);
		}		
function IntToHex(n) {n &=0xff; var result = n.toString(16);if (result.length==1) result = "0"+result;return result;}

function SetColorDiv()
		{
		var RR=document.getElementById("RedVal").value=parseInt(document.getElementById("RedBut").style.left,10);
		var GG=document.getElementById("GreenVal").value=parseInt(document.getElementById("GreenBut").style.left,10);
		var BB=document.getElementById("BlueVal").value=parseInt(document.getElementById("BlueBut").style.left,10);
		document.getElementById("RGBColor").style.backgroundColor=RgbToString(RR,GG,BB);
		return;
		}
function GGBChange(RgbId)
		{
		var x;
		switch(RgbId)
			{
			case "RedVal": x="RedBut";break;
			case "GreenVal":x="GreenBut";break;
			case "BlueVal":x="BlueBut";break;
			default:return;
			}
		var y=document.getElementById(RgbId).value;
		if(isNaN(y)|| y<0) {y=0;document.getElementById(RgbId).value=0;}
		if( y>255) y=255;
		document.getElementById(x).style.left=y+"px";
		SetColorDiv();
		}
function DisableMove()
			{
			downY=downX=-10000;	
			if(current_move_object=="RedBut" ||current_move_object=="GreenBut" ||current_move_object=="BlueBut")
				{
				if(document.getElementById("AutoColor").checked && LastColorItem==CurrentItem)
					{
					MenuDown(-1,LastColorSet);
					if(LastColorSet!=201)
						{
						Draw_Anhore(CurrentItem);
						RefreshItem(CurrentItem);
						}
					}
				current_move_object="";
				}
			}

function ShowMainMenu()
		{
		var X=parseInt(document.getElementById("Tool1").style.left,10)+10;
		var Y=parseInt(document.getElementById("Tool1").style.top,10)+5;
		AnyDown=1;
		ShowOneMenu(X,Y,document.getElementById("MainMenu"),500,MainTemplate.ParamPass);
		}
		

		
function ButtonClick(x)
	{
	var Password1=document.getElementById("Password1").value;
	var Password2=document.getElementById("Password2").value;
	var UserName =document.getElementById("UserName").value;
	switch(x)
		{
		case 1000:
				document.getElementById("ABOUTME").style.visibility="hidden";break;
		case 0:document.getElementById("Heldiv").style.visibility="hidden";break;
		case 1:document.getElementById("LOGGIN").style.visibility="hidden";
			if(checkPassword(Password1,Password2,UserName)) break;
			//if(Password1=="" || UserName=="") break;
			AjaxCall("Savelog2",USERID,UserName,Password1);
			
			break;// login
		case 2:document.getElementById("LOGGIN").style.visibility="hidden";
			if(Password1 != Password2 || Password2=="" ||UserName=="")
				{
				alert("Retype not match Create New Account Failed");
				break;
				}
			AjaxCall("Savelog3",USERID,UserName,Password1);
			break;// as new
		}
		
	}
function onsetup()
		{
		document.getElementById("PAPA").onmousemove=MasterMouseMove;
		document.getElementById("PAPA").onmousedown=MasterMouseDown;
		BuildMenu("PathMenu1",PathMenuTemplate,0,0,"MeYou1",10,0,"#8AA","#FFF","#FFA","#000",0,0,0);
		BuildMenu("PathMenu2",OtherPathMenuTemplate,0,0,"MeYou2",10,0,"#8AA","#FFF","#FFA","#000",0,0,100);
		BuildMenu("InsideItemMenu",ItemMenuTemplate,0,0,"MeYou3",10,0,"#576","#FFF","#FFA","#000",0,0,200);
		BuildMenu("Gradient1",GradientTemplate1,0,0,"MeYou4",10,0,"#7AB","#FFF","#FFA","#000",0,0,300);
		BuildMenu("Gradient2",GradientTemplate2,0,0,"MeYou5",10,0,"#7AB","#FFF","#FFA","#000",0,0,400);
		BuildMenu("MainMenu",MainTemplate,0,0,"MeYou6",10,0,"#48C","#FFF","#FFA","#000",0,0,500);
		BuildMenu("TextMenu",TextMenuTemplate,0,0,"MeYou7",10,0,"#48C","#FFF","#FFA","#000",0,0,600);
		BuildMenu("TextStrokeMenu",TextStrokeMenuTemplate,0,0,"MeYou8",10,0,"#48C","#FFF","#FFA","#000",0,0,700);
		}

	


function GetPosAbs2(x)
			{
			var m1,m2,n1,n2;
			m2=parseInt(x.style.width,10);
			n2=parseInt(x.style.height,10);
			m1=parseInt(x.style.left,10);
			n1=parseInt(x.style.top,10);
			var a;var b;var c;
			while(1)
				{
				a=parseInt(x.parentNode.style.left,10);
				b=parseInt(x.parentNode.style.width,10);
				c=parseInt(x.parentNode.style.top,10);
				if(isNaN(a)  ||isNaN(c))
					{
					x=x.parentNode;
					continue;
					}
				m1+=a;
				n1+=c;
				if(x.parentNode.id=="PAPA") break;
				if(a==0 && b==1500) break;
				x=x.parentNode;
				}
			m2+=m1;
			n2+=n1;
			var tt= new Array();
			tt.t=n1;
			tt.b=n2;
			tt.l=m1;
			tt.r=m2;
			return(tt);
			}
function SVGTransformNoRound(zX, zY)
	{
	var pp=new Array();
	var Xi,Yi;
	var msin,mcos;
	var ud=ItemArray[CurrentItem];
	msin=Math.sin(ud.rotate);
	mcos=Math.cos(ud.rotate);
	Xi = X * mcos - Y * msin;// alpha=0;
	Yi = X * msin + Y * mcos;
	if(Math.tan(ud.skewY)<200 && Math.tan(ud.skewY)!=0)
		Yi+= Xi*Math.tan(ud.skewY);
	if(Math.tan(ud.skewX)<200 && Math.tan(ud.skewX)!=0)
		Xi+= Yi*Math.tan(ud.skewX);
	pp.x=Xi;
	pp.y=Yi;
	return(pp);
	}
function SVGTransform(X, Y)	
	{
	var pp=new Array();
	var Xi,Yi;
	var msin,mcos;
	var ud=ItemArray[CurrentItem];
	msin=Math.sin(ud.rotate);
	mcos=Math.cos(ud.rotate);
	// ROTATE
	Xi = X * mcos - Y * msin;// alpha=0;
	Yi = X * msin + Y * mcos;
	if(Math.tan(ud.skewY)<200 && Math.tan(ud.skewY)!=0)
		Yi+= Xi*Math.tan(ud.skewY);
	if(Math.tan(ud.skewX)<200 && Math.tan(ud.skewX)!=0)
		Xi+= Yi*Math.tan(ud.skewX);
	pp.x=Math.round (Xi);
	pp.y=Math.round (Yi);
	
	return(pp);
	
	}	
function SVGReverseTransform(X, Y)
	{
	var msin,mcos;
	var pp=new Array();
	var ud=ItemArray[CurrentItem];
	if(Math.tan(ud.skewX)<200 && Math.tan(ud.skewX)!=0)
		X-= Y*Math.tan(ud.skewX);
	if(Math.tan(ud.skewY)<200 && Math.tan(ud.skewY)!=0)
		Y-= X*Math.tan(ud.skewY);
	
	msin=Math.sin(-ud.rotate);
	mcos=Math.cos(-ud.rotate);
	Xi = X * mcos - Y * msin;// alpha=0;
	Yi = X * msin + Y * mcos;
	pp.x=Math.round (Xi);
	pp.y=Math.round (Yi);
	return(pp);
	}
