// --------------------------------------------------------------------------------------
// inPoly
// --------------------------------------------------------------------------------------
function inPoly(poly, px, py) 
{ 
  var npoints = poly.length; 
  var xnew, ynew, xold, yold, x1, y1, x2, y2, i; 
  var inside = false;     
  if(npoints/2 < 3) 
  { 
  	return false; // points don't describe a polygon 
  } 
  xold = poly[npoints-2]; 
  yold = poly[npoints-1];   
  for(i = 0; i < npoints; i= i+2) 
  { 
      xnew = poly[i]; 
      ynew = poly[i+1]; 
      if (xnew > xold) { 
        x1 = xold; 
        x2 = xnew; 
        y1 = yold; 
        y2 = ynew; 
      } 
      else 
      { 
        x1 = xnew; 
        x2 = xold; 
        y1 = ynew; 
        y2 = yold; 
      } 
      if((xnew < px) == (px <=xold) && ((py - y1)*(x2 - x1) < (y2-y1) * (px-x1)))
      { 
          inside = !inside; 
      } 
    xold = xnew; 
    yold = ynew; 
  } 
  return inside; 
}

// --------------------------------------------------------------------------------------
// MousePosition
// --------------------------------------------------------------------------------------
function MousePosition ( e)
{
  if (!isIE) {
    _x = e.pageX;
    _y = e.pageY;
  }
  if (isIE) {
	var scrOfX = 0, scrOfY = 0;
	if( typeof( window.pageYOffset ) == 'number' ) {
		scrOfX = window.pageXOffset;
		scrOfY = window.pageYOffset; 
	} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
		scrOfX = document.body.scrollLeft;
		scrOfY = document.body.scrollTop; 
	} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
		scrOfX = document.documentElement.scrollLeft;
		scrOfY = document.documentElement.scrollTop; 
	}
	 _x = event.clientX + scrOfX-15;
	 _y = event.clientY + scrOfY-15;
  }
}
                         
                         
// --------------------------------------------------------------------------------------
// MouseClicked
// --------------------------------------------------------------------------------------
function MouseClicked(e) {
	if (iOverButton>-1) 
	{
		document.location.href=sButtonLink[iOverButton];
	}

}
// --------------------------------------------------------------------------------------
// MouseMoved
// --------------------------------------------------------------------------------------
function MouseMoved(e) {

  MousePosition(e);
  if (iBlewUp==-1)
  {
  	bFoundInButton=false;
  	for (i=0; i<iButtonCount;i++)
	{
		if (inPoly(polyButtons[i],_x,_y))
		{
			overButton(i);
			bFoundInButton=true;
		}
	}

  	if ( (iOverButton>-1) && (bFoundInButton==false) )
	{	
	  normButton(iOverButton); 	
    }
  	for (i=0;i<polyArray.length;i++)
	{
		if (inPoly(polyArray[i],_x,_y))
		{
			iBlewUp=i;
			StartBlowup();
			i=polyArray.length;
  		}
	}
  }
  else
  {
	if (!inPoly(polyBigArray[iBlewUp],_x,_y))
	{
		StartBlowdown();
	}
  }
  return true;
}

// --------------------------------------------------------------------------------------
// overButton
// --------------------------------------------------------------------------------------

function overButton( iButton ) {
	jg.drawImage( sOverButton[iButton], 
	              polyButtonX[iButton], polyButtonY[iButton],
				  polyButtons[iButton][2]-polyButtons[iButton][0], polyButtons[iButton][5]-polyButtons[iButton][3]);
	jg.paint();
	iOverButton=iButton;
}
// --------------------------------------------------------------------------------------
// normButton
// --------------------------------------------------------------------------------------
function normButton( iButton ) {
	jg.drawImage( sNormButton[iButton], 
	              polyButtonX[iButton], polyButtonY[iButton],
				  polyButtons[iButton][2]-polyButtons[iButton][0], polyButtons[iButton][5]-polyButtons[iButton][3]);
	jg.paint();
	iOverButton=-1;
}
// --------------------------------------------------------------------------------------
// StartBlowup
// --------------------------------------------------------------------------------------
function StartBlowup(){
  	if (iBlowupX==0) {
			bInPoly=true;
			iIncrementX=(polyImageW[iBlewUp]-(polyImageW[iBlewUp]*.33))*iIncrement/100;
			iIncrementY=(polyImageH[iBlewUp]-(polyImageH[iBlewUp]*.33))*iIncrement/100;
			iBlowupX=(polyImageW[iBlewUp]*.33)+1;
			iBlowupY=(polyImageH[iBlewUp]*.33)+1;
			blowup();
	}
}
// --------------------------------------------------------------------------------------
// StartBlowdown
// --------------------------------------------------------------------------------------
function StartBlowdown() {
	if ( bInPoly ) 
	{
		bInPoly=false;
		iIncrementX=-1*(polyImageW[iBlewUp]-(polyImageW[iBlewUp]*.33))*iIncrement/100;
		iIncrementY=-1*(polyImageH[iBlewUp]-(polyImageH[iBlewUp]*.33))*iIncrement/100;
		iBlowupX=polyImageW[iBlewUp]-1;
		iBlowupY=polyImageH[iBlewUp]-1;		
		blowup();
	}
}

// --------------------------------------------------------------------------------------
// blowup
// --------------------------------------------------------------------------------------
function blowup(){
	if (iBlewUp>=0) 
	{         
		iBlowupX=iBlowupX+iIncrementX;
		iBlowupY=iBlowupY+iIncrementY;
		//drawPolygon(polyArray[iBlewUp]);

		//--------------------------------------------------
		// If we're not at the target width or orig width, 
		// then we still need to grow/shrink.  Call me again.		
		//---------------------------------------------------
    if (iBlowupX<=(polyImageW[iBlewUp]*.33))
	  { 
		  iBlowupX=0;
		  iBlowupY=0;
		  iBlewUp=-1;			
		  jg.clear();
  	  jg.drawImage("./images/morestates800w.gif",0,0,766,451);
      jg.paint();
	  }
	  else
	  {
	    jg.clear();
	    jg.drawImage("./images/morestates800w.gif",0,0,766,451);
	    jg.drawImage("./images/"+polyImage[iBlewUp]+".gif", 
	             polySlideX[iBlewUp]+Math.round((polyImageW[iBlewUp]/2)-(iBlowupX/2)), 
				       polySlideY[iBlewUp]+Math.round((polyImageH[iBlewUp]/2)-(iBlowupY/2)), 
				       iBlowupX, 
				       iBlowupY);
       jg.paint();
    }
		if ((iBlowupX>(polyImageW[iBlewUp]*.33))&&(iBlowupX<(polyImageW[iBlewUp]))) {
			window.setTimeout('blowup()',10);
		}
	}
}
// --------------------------------------------------------------------------------------
// drawPoly
// --------------------------------------------------------------------------------------
function drawPoly( polyDrawMe ) {
	var iLen=parseInt(polyDrawMe.length/2);
	var MyX=new Array(iLen);
	var MyY=new Array(iLen);
	var i=0;
	for (var j=0; j<polyDrawMe.length; j+=2)
	{
		MyX[i]=polyDrawMe[j];
		MyY[i]=polyDrawMe[j+1];
		i++;
	}
	jg.drawPolygon(MyX,MyY);
	
	
	jg.paint();
}                                                                           

// ----------------------------------------------------------------------------------------
// MAIN
// ----------------------------------------------------------------------------------------

if (UFO.fv[0]<8) 
{
	var iBlowupX=0;
	var iBlowupY=0;
	var iBlewUp=-1;
	var _x;
	var _y;
	var bInPoly=false;
	
	var jg = new jsGraphics("myCanvas");
	var iIncrement=10;
	var iOverButton=-1;
	
	var iNumPolygons=13;
	var i_RTP=0;
	var i_TRIAD=1;
	var i_CHARLOTTE=2;
	var i_WILMINGTON=3;
	var i_GREENVILLE=4;
	var i_COLUMBIA=5;
	var i_MYRTLE=6;
	var i_CHARLESTON=7;
	var i_HILTONHEAD=8;
	var i_SAVANNAH=9;
	var i_NASHVILLE=10;
	var i_CUMBERLAND=11;
	var i_PITT=12;

// No longer used, excluded by the polygoncount above but left for future re-expansion
	var i_ASHEVILLE=14;
	var i_RICHMOND=13;
	
	var sNormButton=new Array('./images/MissionNorm.gif','./images/ContactUsNorm.gif');
	var sOverButton=new Array('./images/MissionOver.gif','./images/ContactUsOver.gif');
	var sDownButton=new Array('./images/MissionDown.gif','./images/ContactUsDown.gif');
	var sButtonLink=new Array('./Mission.html','./ContactUs.html');
	
	
	var polyArray=new Array(iNumPolygons);
	var polyBigArray=new Array(iNumPolygons);
	var polyCenterX=new Array(iNumPolygons);
	var polyCenterY=new Array(iNumPolygons);
	var polySlideX=new Array(iNumPolygons);
	var polySlideY=new Array(iNumPolygons);
	var polyImage=new Array(iNumPolygons);
	//var polyImageSlideX=new Array(iNumPolygons);
	//var polyImageSlideY=new Array(iNumPolygons);
	var polyImageW=new Array(iNumPolygons);
	var polyImageH=new Array(iNumPolygons);
	var iButtonCount=2;
	var polyButtons=new Array(iButtonCount);
	polyButtonX=new Array(iButtonCount);
	polyButtonY=new Array(iButtonCount);
	
	var i_SERVICES=0;
	var i_CONTACT=1;
	polyButtons[i_SERVICES]=new Array(55,337,222,337,222,362,55,362);
	polyButtons[i_CONTACT]=new Array(55,306,222,306,222,331,55,331);
	polyButtonX[i_SERVICES]=55;
	polyButtonY[i_SERVICES]=337;
	polyButtonX[i_CONTACT]=55;
	polyButtonY[i_CONTACT]=306;
	
	var iDraw=i_HILTONHEAD;
	
	polyBigArray[i_RTP]=new Array(114,   0, 165,   2, 156,  15, 159,  64, 172,  68, 187,  54, 233,  65, 199, 131,
	                              224, 176, 208, 216, 168, 236, 152, 220, 128, 186,  96, 176,  57, 224,  22, 187,
								   -1, 184,   3, 129,  48, 128,  42, 116,  45,  58, 110,  54);
	BlowupBonus=0;
	SlideBonusX=-10;
	SlideBonusY=-100;
	CenterSkewX=25;
	CenterSkewY=20;
	ImageSkew=-20;							   
	polySlideX[i_RTP]=495;							   
	polySlideY[i_RTP]=107;
	polyImage[i_RTP]="researchtrianglearea";							   
	polyImageW[i_RTP]=240+BlowupBonus;
	polyImageH[i_RTP]=241+BlowupBonus;

	polyBigArray[i_TRIAD]=new Array(38,1,219,6,216,61,222,76,177,77,175,135,82,136,53,102,33,93,1,72,3,39,31,37);
	polySlideX[i_TRIAD]=440;							   
	polySlideY[i_TRIAD]=159;							   
	polyImage[i_TRIAD]="triadregion";							   
	polyImageW[i_TRIAD]=228+BlowupBonus;
	polyImageH[i_TRIAD]=143+BlowupBonus;
	
	polyBigArray[i_CHARLOTTE]=new Array(82,1,134,3,134,36,183,61,231,125,227,163,198,165,189,224,167,286,133,305,121,301,93,317,88,252,6,253,2,209,13,205,20,184,36,159,7,91,86,93,95,78,67,53,85,19);
	polySlideX[i_CHARLOTTE]=395;							   
	polySlideY[i_CHARLOTTE]=110;
	polyImage[i_CHARLOTTE]="charlottearea";							   							   
	polyImageW[i_CHARLOTTE]=234+BlowupBonus;
	polyImageH[i_CHARLOTTE]=323+BlowupBonus;

	polyBigArray[i_ASHEVILLE]=new Array(78,0,93,20,91,41,107,53,96,71,81,111,48,121,42,92,13,65,17,43,6,37,2,24);
	polySlideX[i_ASHEVILLE]=370;							   
	polySlideY[i_ASHEVILLE]=190;							   
	polyImage[i_ASHEVILLE]="ashevillearea";							   							   
	polyImageW[i_ASHEVILLE]=114+BlowupBonus;
	polyImageH[i_ASHEVILLE]=128+BlowupBonus;

	polyBigArray[i_WILMINGTON]=new Array(82,1,147,3,170,51,133,86,98,152,61,147,17,156,1,141,20,104,36,104,73,72,60,60,72,49,58,35);
	polySlideX[i_WILMINGTON]=560;							   
	polySlideY[i_WILMINGTON]=243;
	polyImage[i_WILMINGTON]="wilmingtonarea";							   							   
	polyImageW[i_WILMINGTON]=193+BlowupBonus;
	polyImageH[i_WILMINGTON]=164+BlowupBonus;

	polyBigArray[i_GREENVILLE]=new Array(89,2,169,5,195,57,185,68,170,118,127,84,116,124,38,185,17,139,1,135,20,109,13,85,7,42,15,27);
	polySlideX[i_GREENVILLE]=332;							   
	polySlideY[i_GREENVILLE]=212;
	polyImage[i_GREENVILLE]="greenvillespartanburgarea";							   							   
	polyImageW[i_GREENVILLE]=203+BlowupBonus;
	polyImageH[i_GREENVILLE]=193+BlowupBonus;
	polyBigArray[i_COLUMBIA]=new Array(176,2,197,45,175,61,171,79,147,98,147,156,104,150,96,162,58,176,25,163,-1,137,25,82,39,68,59,72,113,65,119,40,103,29,136,8,143,16);
	polySlideX[i_COLUMBIA]=403;							   
	polySlideY[i_COLUMBIA]=251;
	polyImage[i_COLUMBIA]="columbiaarea";							   							   
	polyImageW[i_COLUMBIA]=202+BlowupBonus;
	polyImageH[i_COLUMBIA]=184+BlowupBonus;
	polyBigArray[i_MYRTLE]=new Array(91,-2,171,86,120,114,83,177,74,196,74,211,62,217,0,184,2,170,34,137,52,98,53,55);
	polySlideX[i_MYRTLE]=508;							   
	polySlideY[i_MYRTLE]=257;
	polyImage[i_MYRTLE]="myrtlebeacharea";							   							   
	polyImageW[i_MYRTLE]=179+BlowupBonus;
	polyImageH[i_MYRTLE]=224+BlowupBonus;
	polyBigArray[i_CHARLESTON]=new Array(89,6,127,3,162,35,227,68,230,77,200,93,190,90,182,102,189,108,164,128,144,137,128,160,96,174,72,189,61,175,59,154,50,142,61,119,60,88,39,83,25,83,12,65,0,60,46,33,53,43,68,45,80,40);
	polySlideX[i_CHARLESTON]=430;							   
	polySlideY[i_CHARLESTON]=313;
	polyImage[i_CHARLESTON]="charlestonarea";
	polyImageW[i_CHARLESTON]=239+BlowupBonus;
	polyImageH[i_CHARLESTON]=199+BlowupBonus;
	polyBigArray[i_HILTONHEAD]=new Array(72,1,87,5,106,22,135,25,133,36,136,63,125,81,132,96,140,123,136,130,110,125,131,141,128,159,102,168,91,163,95,176,74,199,54,207,43,198,34,202,24,193,11,133,0,115,41,79,52,96,60,96,69,86,30,28,52,14,58,19,60,9);
	polySlideX[i_HILTONHEAD]=436;							   
	polySlideY[i_HILTONHEAD]=329;
	polyImage[i_HILTONHEAD]="hiltonheadarea";							   							   
	polyImageW[i_HILTONHEAD]=160+BlowupBonus;
	polyImageH[i_HILTONHEAD]=218+BlowupBonus;
	polyBigArray[i_SAVANNAH]=new Array(63,1,79,7,93,24,92,31,97,46,102,46,104,58,99,68,106,79,104,88,114,95,121,93,137,103,146,105,147,112,140,118,134,120,129,118,127,122,133,125,124,135,110,132,101,135,94,148,98,157,87,155,81,151,79,145,69,138,64,137,58,122,46,116,31,118,25,103,3,89,2,81,54,67,51,55,38,38,38,26,36,18);
	polySlideX[i_SAVANNAH]=398;							   
	polySlideY[i_SAVANNAH]=383;
	polyImage[i_SAVANNAH]="savannaharea";							   							   
	polyImageW[i_SAVANNAH]=155+BlowupBonus;
	polyImageH[i_SAVANNAH]=166+BlowupBonus;
	//polyImageSlideX[i_SAVANNAH]=398+5;							   
	//polyImageSlideY[i_SAVANNAH]=383+5;
	polyBigArray[i_NASHVILLE]=new Array(76,0,215,2,203,54,225,62,243,123,221,125,225,132,210,183,183,183,139,169,123,171,121,186,114,206,96,221,75,215,63,217,48,217,52,202,41,190,43,175,57,165,66,85,63,69,72,64,49,59,50,52,75,33);
	polySlideX[i_NASHVILLE]=51;							   
	polySlideY[i_NASHVILLE]=106;
	polyImage[i_NASHVILLE]="nashvillearea";							   							   
	polyImageW[i_NASHVILLE]=250+BlowupBonus;
	polyImageH[i_NASHVILLE]=230+BlowupBonus;
	//polyImageSlideX[i_NASHVILLE]=51+5;
	//polyImageSlideY[i_NASHVILLE]=106+5;
	
	polyBigArray[i_RICHMOND]=new Array(60,29,87,36,127,63,141,76,147,73,153,79,154,94,160,91,197,117,194,125,259,153,270,172,258,173,266,187,283,197,284,207,280,209,273,199,258,206,241,196,237,177,231,174,181,166,171,182,162,181,150,196,134,200,118,191,107,185,102,189,80,170,79,156,62,150,47,158,39,152,46,119,38,103,51,71,14,53,28,31,60,29);	
	//polyBigArray[i_RICHMOND]=new Array(74,1,80,4,87,3,112,10,137,27,146,37,153,37,167,51,173,48,178,54,176,64,180,69,185,66,190,69,194,79,203,78,203,86,210,84,212,91,218,88,223,93,219,99,216,105,211,104,205,113,213,121,204,138,206,142,203,143,196,155,187,156,177,171,166,171,159,174,145,164,140,166,131,159,125,164,115,156,119,152,104,144,106,135,107,130,103,130,103,125,86,122,73,131,65,129,71,96,75,93,70,90,69,86,72,83,62,76,77,46,54,37,40,27,55,5,74,1);
	polySlideX[i_RICHMOND]=520;
	polySlideY[i_RICHMOND]=4;
	polyImage[i_RICHMOND]="richmondarea";
	polyImageW[i_RICHMOND]=300+BlowupBonus;
	polyImageH[i_RICHMOND]=240+BlowupBonus;
	
	polyBigArray[i_CUMBERLAND]=new Array(87,0,123,14,145,46,130,74,126,100,150,133,88,136,69,114,49,136,23,136,20,115,5,99,34,71,43,55,87,0);	
	polySlideX[i_CUMBERLAND]=530;
	polySlideY[i_CUMBERLAND]=195;
	polyImage[i_CUMBERLAND]="cumberlandarea";
	polyImageW[i_CUMBERLAND]=150+BlowupBonus;
	polyImageH[i_CUMBERLAND]=135+BlowupBonus;
	
	polyBigArray[i_PITT]=new Array(47,0,78,18,89,49,81,58,69,87,62,85,54,93,37,86,23,55,0,33,47,0);	
	//polyBigArray[i_PITT]=new Array(28,-9,59,9,70,40,62,49,50,78,43,76,35,84,18,77,4,46,-19,24,28,-9);	
	polySlideX[i_PITT]=635;
	polySlideY[i_PITT]=197;
	polyImage[i_PITT]="pittarea";
	polyImageW[i_PITT]=93+BlowupBonus;
	polyImageH[i_PITT]=96+BlowupBonus;

	for (i=0; i<polyArray.length;i++)
	{
			polyArray[i]=new Array(polyBigArray[i].Length);
  }
	
	for (i=0; i<polyBigArray.length; i++)
	{
	//	window.alert(polySlideX[i]);
		polySlideX[i]=polySlideX[i]+SlideBonusX;
		polySlideY[i]=polySlideY[i]+SlideBonusY;
		for (var j=0; j<polyBigArray[i].length; j+=2)
		{
			polyBigArray[i][j]=polyBigArray[i][j]+polySlideX[i]-15;//+ImageSkew;
			polyBigArray[i][j+1]=polyBigArray[i][j+1]+polySlideY[i]+90;//+ImageSkew;	
		}
	}
	
	// -----------------------------------------------
	// Calculate the centers of the big polygons
	// -----------------------------------------------
	var MaxX;
	var MinX;
	var MaxY;
	var MinY;
	// window.alert('main clear' );
	jg.clear();
	
	
	 for (var i=0; i<polyButtons.length;i++)
	{	
		for (var j=0; j<polyButtons[i].length; j+=2)
		{
			polyButtons[i][j+1]=polyButtons[i][j+1]+100;	
		}
	}
	
	
	for (var i=0; i<polyBigArray.length;i++)
	{
		MaxX=-999999999;
		MinX=999999999;
		MaxY=-999999999;
		MinY=999999999;
		for (var j=0; j<polyBigArray[i].length; j+=2)
		{
			if (polyBigArray[i][j]>MaxX) 
				MaxX = polyBigArray[i][j];
			if (polyBigArray[i][j]<MinX) 
				MinX = polyBigArray[i][j];
			if (polyBigArray[i][j+1]>MaxY) 
				MaxY = polyBigArray[i][j+1];
			if (polyBigArray[i][j+1]<MinY) 
				MinY = polyBigArray[i][j+1];			
		}
		polyCenterX[i]=parseInt(Math.round((MaxX-MinX)/2))+MinX;
		polyCenterY[i]=parseInt(Math.round((MaxY-MinY)/2))+MinY;
	//	window.alert("center " + polyCenterX[i] + "," + polyCenterY[i]);
	  jg.drawImage("./images/"+polyImage[i]+".gif", 
			           polySlideX[i]+Math.round(polyImageW[i]/2)-Math.round(iBlowupX/2), 
						     polySlideY[i]+Math.round(polyImageH[i]/2)-Math.round(iBlowupY/2), 
						     iBlowupX, 
						     iBlowupY);
	}
	
	
	
	
	
	
	
	// -----------------------------------------------
	// Create the small polygons
	// -----------------------------------------------
	jg.drawImage("./images/morestates800w.gif",0,0,766,451);
	 for (var i=0; i<iNumPolygons;i++)
	{
		
		for (var j=0; j<polyBigArray[i].length; j+=2)
		{
			polyArray[i][j]=  parseInt(.33*(polyBigArray[i][j]   - polyCenterX[i] ) + polyCenterX[i])+CenterSkewX;	
			polyArray[i][j+1]=parseInt(.33*(polyBigArray[i][j+1] - polyCenterY[i] ) + polyCenterY[i])+CenterSkewY;	
		}
		// drawPoly(polyArray[i]);	
  }
	
	var iOrigWidth=80
	var iOrigHeight=80
	var iTargetWidth=219;
	var iTargetHeight=237;
	var iIncrementX=0;
	var iIncrementY=0;
	
	// For getting mouseposition
	var isIE = document.all?true:false;
	if (!isIE) document.captureEvents(Event.MOUSEMOVE);
	document.onmousemove = MouseMoved;
	document.onclick = MouseClicked;
	// End For getting Mouseposition
	
	jg.paint();
}

