                              function MM_reloadPage(init) {  //reloads the window if Nav4 resized

                                if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {

                                  document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}

                                else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();

                              }

                              MM_reloadPage(true);

                              

                              function MM_swapImgRestore() { //v3.0

                                var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;

                              }

                              

                              function MM_findObj(n, d) { //v4.01

                                var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {

                                  d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}

                                if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];

                                for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);

                                if(!x && d.getElementById) x=d.getElementById(n); return x;

                              }

                               

                              function MM_swapImage() { //v3.0

                                var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)

                                 if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}

                              }



function PopupCentrer(page,largeur,hauteur,options) {

  var top=(screen.height-hauteur)/2;

  var left=(screen.width-largeur)/2;

  window.open(page,"","top="+top+",left="+left+",width="+largeur+",height="+hauteur+","+options);

}



// LensCalc

var InternetExplorer;



// lens id

var lID = 0;



// sensor id

var sID = 1;



// direction (reading) id

var dID = 0;



var rowWithMouse = null;



function start() {

	rowRollover('l', 0, 1);

	rowRollover('s', 1, 1);

	rowRollover('d', 0, 1);

	update();

}

function changeLens(arg){

	lID = arg;

	update();

}

function changeSensor(arg){

	sID = arg;

	update();

}



function changeDirection(arg){

	dID = arg;

	update();

}



function update() {

	CalcLens();

}



function rowRollover(type, myId, isInRow) {

	var row = document.getElementById(type + '_' + myId);

	rowWithMouse = (isInRow) ? row : null;

	rowUpdateBg(type, row);

	

}



function rowUpdateBg(type, row) {

	// is it the selected row?

	if ((row.id == 'l_' + lID) || (row.id == 's_' + sID) ||(row.id == 'd_' + dID)) {

		row.style.backgroundColor = "#FFF3C4";

		row.style.borderColor = "#FFCC00";

	} else {

		row.style.backgroundColor = (row == rowWithMouse)   ? '#CEE7FF' : '#F2F2F2';

		row.style.borderColor = (row == rowWithMouse) ? "#0066CC" : "#ffffff";

	}	

}

function rowToggle(type, myId) {

	// unselect old row, select new row.

	if(type == "l") {

		var oldrow = document.getElementById('l_' + lID);

		var newrow = document.getElementById('l_' + myId);

		lID = myId;

	} else if(type == "s") {

		var oldrow = document.getElementById('s_' + sID);

		var newrow = document.getElementById('s_' + myId);

		sID = myId;

	} else {

		var oldrow = document.getElementById('d_' + dID);

		var newrow = document.getElementById('d_' + myId);

		dID = myId;

	}

	rowUpdateBg(type, oldrow);

	rowUpdateBg(type, newrow);

	

	// update lens calc

	if(type == 'l') {

		changeLens(myId)

	} else if (type =='s') {

		changeSensor(myId)

	} else {

		changeDirection(myId)

	}

	

}



function DrawFOV(x1,x2,x3,y1,y2,y3,sColor,bFill)

{

	var FovXpts = new Array(x1,x2,x3,x1);

	var FovYpts = new Array(y1,y2,y3,y1);

	

	jgFOV.setStroke(1); 

	jgFOV.setColor("#" + sColor);

	if(bFill)

		jgFOV.fillPolygon(FovXpts, FovYpts); 

	else 

		jgFOV.drawPolygon(FovXpts, FovYpts);

}



function CalcLens()

{

	var Lh,Lv,V,H,D,U,Focal,FocalZm,Vss;

	var x1,x2,x3,y1,y2,y3,cvH,cvW,FovMinH,FovMaxH;

	var theta1,theta2,tn,adj;

	var lblAngle,lblHeight,lblWidth,lblDiag,lblObject;

	switch (sID)

	{

		case 0:

			Lv=2.4;

			Lh=3.2;

			Ld=Math.sqrt(Math.pow(Lv,2)+Math.pow(Lh,2));

			break;

		case 1:

			Lv=3.6;

			Lh=4.8;

			Ld=Math.sqrt(Math.pow(Lv,2)+Math.pow(Lh,2));

			break;

		case 2:

			Lv=4.8;

			Lh=6.4;

			Ld=Math.sqrt(Math.pow(Lv,2)+Math.pow(Lh,2));

			break;

		case 3:

			Lv=6.6;

			Lh=8.8;

			Ld=Math.sqrt(Math.pow(Lv,2)+Math.pow(Lh,2));

			break;

		case 4:

			Lv=9.6;

			Lh=12.8;

			Ld=Math.sqrt(Math.pow(Lv,2)+Math.pow(Lh,2));

	} //end switch

	switch (lID)

	{

		case 0:

			Focal=2.8;

			break;

		case 1:

			Focal=3.6;

			break;

		case 2:

			Focal=4.2;

			break;

		case 3:

			Focal=6;

			break;

		case 4:

			Focal=8;

			break;

		case 5:

			Focal=12;

			break;

		case 6:

			Focal=16;

			break;

		case 7:

			Focal=20;

			break;

		case 8:

			Focal=33;

			break;

		case 9:

			Focal=50;

			break;

		case 10:

			Focal=2.9;

			FocalZm=8;

			break;

		case 11:

			Focal=3.6;

			FocalZm=8;

			break;

		case 12:

			Focal=5;

			FocalZm=50;

	} //end switch

	lblObject = document.getElementById("Distance");

	D=lblObject.value;

	lblObject = document.getElementById("Units");

	U=lblObject.value;

	switch (dID)

	{

		case 0:

			Vss = Lh;

			break;

		case 1:

			Vss = Lv;

			break;

		case 2:

			Vss = Ld;

	} //end switch

	

	lblWidth=(Math.round(((Lh*D)/Focal)*10)/10)+U;

	lblHeight=(Math.round(((Lv*D)/Focal)*10)/10)+U;

	lblDiag=(Math.round(((Ld*D)/Focal)*10)/10)+U;

	 

	

	//clear the canvas

	jgFOV.clear();

	//set the canvas height and width

	cvW=400;

	cvH=150;

	FovMinH=100;

	FovMaxH=140;

	//calculate Max FOV

	theta1=Math.atan(Vss/(2*Focal));

	tn=Math.tan(theta1);

	//give it a length

	adj=FovMinH;

	

	x1=(cvW/2)-Math.round(adj*tn);

	y1=cvH-adj;

	

	x2=(cvW/2)+Math.round(adj*tn);

	y2=cvH-adj;

	

	x3=(cvW/2);

	y3=cvH;

	//draw it

	DrawFOV(x1,x2,x3,y1,y2,y3,'029ff0',true);

	//draw a border

	DrawFOV(x1,x2,x3,y1,y2,y3,'002951',false);

	

	//calculate Min FOV

	if (lID > 9) 

	{

		theta2=Math.atan(Vss/(2*FocalZm));

		tn=Math.tan(theta2);

		//give it a length

		adj=FovMaxH;

		

		x1=(cvW/2)-Math.round(adj*tn);

		y1=cvH-adj;

		//alert(adj*tn);

		x2=(cvW/2)+Math.round(adj*tn);

		y2=cvH-adj;

	

		x3=(cvW/2);

		y3=cvH;

		//draw it

		DrawFOV(x1,x2,x3,y1,y2,y3,'fff6d2',true);

		DrawFOV(x1,x2,x3,y1,y2,y3,'ffde5d',false);

		

		//draw the overlap 

		//theta=Math.atan(Lh/(2*Focal+20));

		tn=Math.tan(theta2);

		//give it a length

		adj=FovMinH;

	

		x1=(cvW/2)-Math.round(adj*tn);

		y1=cvH-adj;

		//alert(adj*tn);

		x2=(cvW/2)+Math.round(adj*tn);

		y2=cvH-adj;

	

		x3=(cvW/2);

		y3=cvH;

		//draw it

		DrawFOV(x1,x2,x3,y1,y2,y3,'d1d2d2',true);

		DrawFOV(x1,x2,x3,y1,y2,y3,'d1bb5d',false);

		

		

	}

	

	jgFOV.paint();

	//document.frmCalc.FovAngle.value = Math.round((2*theta1*(180/Math.PI))*100)/100;

	lblObject = document.getElementById("Angle1");

	lblObject.innerHTML = (Math.round((2*theta1*(180/Math.PI))*100)/100) + String.fromCharCode(176);

	

	lblObject = document.getElementById("Height");

	lblObject.innerHTML = lblHeight;

	

	lblObject = document.getElementById("Width");

	lblObject.innerHTML = lblWidth;

	

	lblObject = document.getElementById("Diagonal");

	lblObject.innerHTML = lblDiag;

	

	

	if(theta2>0){

		lblObject = document.getElementById("Angle2");

		lblObject.innerHTML = (Math.round((2*theta2*(180/Math.PI))*100)/100) + String.fromCharCode(176);

		lblObject = document.getElementById("Angle2Title");

		lblObject.innerHTML ='Angle Min:';

		lblObject = document.getElementById("Angle1Title");

		lblObject.innerHTML ='Angle Max:';

	}

	else {

		lblObject = document.getElementById("Angle2");

		lblObject.innerHTML ='';

		lblObject = document.getElementById("Angle2Title");

		lblObject.innerHTML ='';

		lblObject = document.getElementById("Angle1Title");

		lblObject.innerHTML ='Angle:';

	}

	

}							

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

var jg_ihtm, jg_ie, jg_dom,

jg_n4 = (document.layers && typeof document.classes != "undefined");





function chkDHTM(x, i)

{

	x = document.body || null;

	jg_ie = (x && typeof x.insertAdjacentHTML != "undefined");

	jg_dom = (x && !jg_ie &&

		typeof x.appendChild != "undefined" &&

		typeof document.createRange != "undefined" &&

		typeof (i = document.createRange()).setStartBefore != "undefined" &&

		typeof i.createContextualFragment != "undefined");

	jg_ihtm = (!jg_ie && !jg_dom &&	x && typeof x.innerHTML != "undefined");

}





function pntDoc()

{

	this.wnd.document.write(this.htm);

	this.htm = '';

}





function pntCnvDom()

{

	var x = document.createRange();

	x.setStartBefore(this.cnv);

	x = x.createContextualFragment(this.htm);

	this.cnv.appendChild(x);

	this.htm = '';

}







function pntCnvIe()

{

	this.cnv.insertAdjacentHTML("BeforeEnd", this.htm);

	this.htm = '';

}







function pntCnvIhtm()

{

	this.cnv.innerHTML += this.htm;

	this.htm = '';

}







function pntCnv()

{

	this.htm = '';

}







function mkDiv(x, y, w, h)

{

	this.htm += '<div style="position:absolute;'+

		'left:' + x + 'px;'+

		'top:' + y + 'px;'+

		'width:' + w + 'px;'+

		'height:' + h + 'px;'+

		'clip:rect(0,'+w+'px,'+h+'px,0);'+

		'overflow:hidden;background-color:' + this.color + ';'+

		'"><\/div>';

}







function mkDivPrint(x, y, w, h)

{

	this.htm += '<div style="position:absolute;'+

		'border-left:' + w + 'px solid ' + this.color + ';'+

		'left:' + x + 'px;'+

		'top:' + y + 'px;'+

		'width:' + w + 'px;'+

		'height:' + h + 'px;'+

		'clip:rect(0,'+w+'px,'+h+'px,0);'+

		'overflow:hidden;background-color:' + this.color + ';'+

		'"><\/div>';

}











function mkLyr(x, y, w, h)

{

	this.htm += '<layer '+

		'left="' + x + '" '+

		'top="' + y + '" '+

		'width="' + w + '" '+

		'height="' + h + '" '+

		'bgcolor="' + this.color + '"><\/layer>\n';

}











function mkLbl(txt, x, y)

{

	this.htm += '<div style="position:absolute;white-space:nowrap;'+

		'left:' + x + 'px;'+

		'top:' + y + 'px;'+

		'font-family:' +  this.ftFam + ';'+

		'font-size:' + this.ftSz + ';'+

		'color:' + this.color + ';' + this.ftSty + '">'+

		txt +

		'<\/div>';

}











function mkLin(x1, y1, x2, y2)

{

	if (x1 > x2)

	{

		var _x2 = x2;

		var _y2 = y2;

		x2 = x1;

		y2 = y1;

		x1 = _x2;

		y1 = _y2;

	}

	var dx = x2-x1, dy = Math.abs(y2-y1),

	x = x1, y = y1,

	yIncr = (y1 > y2)? -1 : 1;



	if (dx >= dy)

	{

		var pr = dy<<1,

		pru = pr - (dx<<1),

		p = pr-dx,

		ox = x;

		while ((dx--) > 0)

		{

			++x;

			if (p > 0)

			{

				this.mkDiv(ox, y, x-ox, 1);

				y += yIncr;

				p += pru;

				ox = x;

			}

			else p += pr;

		}

		this.mkDiv(ox, y, x2-ox+1, 1);

	}



	else

	{

		var pr = dx<<1,

		pru = pr - (dy<<1),

		p = pr-dy,

		oy = y;

		if (y2 <= y1)

		{

			while ((dy--) > 0)

			{

				if (p > 0)

				{

					this.mkDiv(x++, y, 1, oy-y+1);

					y += yIncr;

					p += pru;

					oy = y;

				}

				else

				{

					y += yIncr;

					p += pr;

				}

			}

			this.mkDiv(x2, y2, 1, oy-y2+1);

		}

		else

		{

			while ((dy--) > 0)

			{

				y += yIncr;

				if (p > 0)

				{

					this.mkDiv(x++, oy, 1, y-oy);

					p += pru;

					oy = y;

				}

				else p += pr;

			}

			this.mkDiv(x2, oy, 1, y2-oy+1);

		}

	}

}











function mkLin2D(x1, y1, x2, y2)

{

	if (x1 > x2)

	{

		var _x2 = x2;

		var _y2 = y2;

		x2 = x1;

		y2 = y1;

		x1 = _x2;

		y1 = _y2;

	}

	var dx = x2-x1, dy = Math.abs(y2-y1),

	x = x1, y = y1,

	yIncr = (y1 > y2)? -1 : 1;





	var s = this.stroke;

	if (dx >= dy)

	{

		if (s-0x3 > 0)

		{

			var _s = (s*dx*Math.sqrt(1+dy*dy/(dx*dx))-dx-(s>>1)*dy) / dx;

			_s = (!(s-0x4)? Math.ceil(_s) : Math.round(_s)) + 1;

		}

		else var _s = s;

		var ad = Math.ceil(s/2);



		var pr = dy<<1,

		pru = pr - (dx<<1),

		p = pr-dx,

		ox = x;

		while ((dx--) > 0)

		{

			++x;

			if (p > 0)

			{

				this.mkDiv(ox, y, x-ox+ad, _s);

				y += yIncr;

				p += pru;

				ox = x;

			}

			else p += pr;

		}

		this.mkDiv(ox, y, x2-ox+ad+1, _s);

	}



	else

	{

		if (s-0x3 > 0)

		{

			var _s = (s*dy*Math.sqrt(1+dx*dx/(dy*dy))-(s>>1)*dx-dy) / dy;

			_s = (!(s-0x4)? Math.ceil(_s) : Math.round(_s)) + 1;

		}

		else var _s = s;

		var ad = Math.round(s/2);



		var pr = dx<<1,

		pru = pr - (dy<<1),

		p = pr-dy,

		oy = y;

		if (y2 <= y1)

		{

			++ad;

			while ((dy--) > 0)

			{

				if (p > 0)

				{

					this.mkDiv(x++, y, _s, oy-y+ad);

					y += yIncr;

					p += pru;

					oy = y;

				}

				else

				{

					y += yIncr;

					p += pr;

				}

			}

			this.mkDiv(x2, y2, _s, oy-y2+ad);

		}

		else

		{

			while ((dy--) > 0)

			{

				y += yIncr;

				if (p > 0)

				{

					this.mkDiv(x++, oy, _s, y-oy+ad);

					p += pru;

					oy = y;

				}

				else p += pr;

			}

			this.mkDiv(x2, oy, _s, y2-oy+ad+1);

		}

	}

}











function mkLinDott(x1, y1, x2, y2)

{

	if (x1 > x2)

	{

		var _x2 = x2;

		var _y2 = y2;

		x2 = x1;

		y2 = y1;

		x1 = _x2;

		y1 = _y2;

	}

	var dx = x2-x1, dy = Math.abs(y2-y1),

	x = x1, y = y1,

	yIncr = (y1 > y2)? -1 : 1,

	drw = true;

	if (dx >= dy)

	{

		var pr = dy<<1,

		pru = pr - (dx<<1),

		p = pr-dx;

		while ((dx--) > 0)

		{

			if (drw) this.mkDiv(x, y, 1, 1);

			drw = !drw;

			if (p > 0)

			{

				y += yIncr;

				p += pru;

			}

			else p += pr;

			++x;

		}

		if (drw) this.mkDiv(x, y, 1, 1);

	}



	else

	{

		var pr = dx<<1,

		pru = pr - (dy<<1),

		p = pr-dy;

		while ((dy--) > 0)

		{

			if (drw) this.mkDiv(x, y, 1, 1);

			drw = !drw;

			y += yIncr;

			if (p > 0)

			{

				++x;

				p += pru;

			}

			else p += pr;

		}

		if (drw) this.mkDiv(x, y, 1, 1);

	}

}











function mkOv(left, top, width, height)

{

	var a = width>>1, b = height>>1,

	wod = width&1, hod = (height&1)+1,

	cx = left+a, cy = top+b,

	x = 0, y = b,

	ox = 0, oy = b,

	aa = (a*a)<<1, bb = (b*b)<<1,

	st = (aa>>1)*(1-(b<<1)) + bb,

	tt = (bb>>1) - aa*((b<<1)-1),

	w, h;

	while (y > 0)

	{

		if (st < 0)

		{

			st += bb*((x<<1)+0x3);

			tt += (bb<<1)*(++x);

		}

		else if (tt < 0)

		{

			st += bb*((x<<1)+0x3) - (aa<<1)*(y-1);

			tt += (bb<<1)*(++x) - aa*(((y--)<<1)-0x3);

			w = x-ox;

			h = oy-y;

			if (w&0x2 && h&0x2)

			{

				this.mkOvQds(cx, cy, -x+0x2, ox+wod, -oy, oy-1+hod, 1, 1);

				this.mkOvQds(cx, cy, -x+1, x-1+wod, -y-1, y+hod, 1, 1);

			}

			else this.mkOvQds(cx, cy, -x+1, ox+wod, -oy, oy-h+hod, w, h);

			ox = x;

			oy = y;

		}

		else

		{

			tt -= aa*((y<<1)-0x3);

			st -= (aa<<1)*(--y);

		}

	}

	this.mkDiv(cx-a, cy-oy, a-ox+1, (oy<<1)+hod);

	this.mkDiv(cx+ox+wod, cy-oy, a-ox+1, (oy<<1)+hod);

}











function mkOv2D(left, top, width, height)

{

	var s = this.stroke;

	width += s-1;

	height += s-1;

	var a = width>>1, b = height>>1,

	wod = width&1, hod = (height&1)+1,

	cx = left+a, cy = top+b,

	x = 0, y = b,

	aa = (a*a)<<1, bb = (b*b)<<1,

	st = (aa>>1)*(1-(b<<1)) + bb,

	tt = (bb>>1) - aa*((b<<1)-1);





	if (s-0x4 < 0 && (!(s-0x2) || width-0x33 > 0 && height-0x33 > 0))

	{

		var ox = 0, oy = b,

		w, h,

		pxl, pxr, pxt, pxb, pxw;

		while (y > 0)

		{

			if (st < 0)

			{

				st += bb*((x<<1)+0x3);

				tt += (bb<<1)*(++x);

			}

			else if (tt < 0)

			{

				st += bb*((x<<1)+0x3) - (aa<<1)*(y-1);

				tt += (bb<<1)*(++x) - aa*(((y--)<<1)-0x3);

				w = x-ox;

				h = oy-y;



				if (w-1)

				{

					pxw = w+1+(s&1);

					h = s;

				}

				else if (h-1)

				{

					pxw = s;

					h += 1+(s&1);

				}

				else pxw = h = s;

				this.mkOvQds(cx, cy, -x+1, ox-pxw+w+wod, -oy, -h+oy+hod, pxw, h);

				ox = x;

				oy = y;

			}

			else

			{

				tt -= aa*((y<<1)-0x3);

				st -= (aa<<1)*(--y);

			}

		}

		this.mkDiv(cx-a, cy-oy, s, (oy<<1)+hod);

		this.mkDiv(cx+a+wod-s+1, cy-oy, s, (oy<<1)+hod);

	}





	else

	{

		var _a = (width-((s-1)<<1))>>1,

		_b = (height-((s-1)<<1))>>1,

		_x = 0, _y = _b,

		_aa = (_a*_a)<<1, _bb = (_b*_b)<<1,

		_st = (_aa>>1)*(1-(_b<<1)) + _bb,

		_tt = (_bb>>1) - _aa*((_b<<1)-1),



		pxl = new Array(),

		pxt = new Array(),

		_pxb = new Array();

		pxl[0] = 0;

		pxt[0] = b;

		_pxb[0] = _b-1;

		while (y > 0)

		{

			if (st < 0)

			{

				st += bb*((x<<1)+0x3);

				tt += (bb<<1)*(++x);

				pxl[pxl.length] = x;

				pxt[pxt.length] = y;

			}

			else if (tt < 0)

			{

				st += bb*((x<<1)+0x3) - (aa<<1)*(y-1);

				tt += (bb<<1)*(++x) - aa*(((y--)<<1)-0x3);

				pxl[pxl.length] = x;

				pxt[pxt.length] = y;

			}

			else

			{

				tt -= aa*((y<<1)-0x3);

				st -= (aa<<1)*(--y);

			}



			if (_y > 0)

			{

				if (_st < 0)

				{

					_st += _bb*((_x<<1)+0x3);

					_tt += (_bb<<1)*(++_x);

					_pxb[_pxb.length] = _y-1;

				}

				else if (_tt < 0)

				{

					_st += _bb*((_x<<1)+0x3) - (_aa<<1)*(_y-1);

					_tt += (_bb<<1)*(++_x) - _aa*(((_y--)<<1)-0x3);

					_pxb[_pxb.length] = _y-1;

				}

				else

				{

					_tt -= _aa*((_y<<1)-0x3);

					_st -= (_aa<<1)*(--_y);

					_pxb[_pxb.length-1]--;

				}

			}

		}



		var ox = 0, oy = b,

		_oy = _pxb[0],

		l = pxl.length,

		w, h;

		for (var i = 0; i < l; i++)

		{

			if (typeof _pxb[i] != "undefined")

			{

				if (_pxb[i] < _oy || pxt[i] < oy)

				{

					x = pxl[i];

					this.mkOvQds(cx, cy, -x+1, ox+wod, -oy, _oy+hod, x-ox, oy-_oy);

					ox = x;

					oy = pxt[i];

					_oy = _pxb[i];

				}

			}

			else

			{

				x = pxl[i];

				this.mkDiv(cx-x+1, cy-oy, 1, (oy<<1)+hod);

				this.mkDiv(cx+ox+wod, cy-oy, 1, (oy<<1)+hod);

				ox = x;

				oy = pxt[i];

			}

		}

		this.mkDiv(cx-a, cy-oy, 1, (oy<<1)+hod);

		this.mkDiv(cx+ox+wod, cy-oy, 1, (oy<<1)+hod);

	}

}











function mkOvDott(left, top, width, height)

{

	var a = width>>1, b = height>>1,

	wod = width&1, hod = height&1,

	cx = left+a, cy = top+b,

	x = 0, y = b,

	aa2 = (a*a)<<1, aa4 = aa2<<1, bb = (b*b)<<1,

	st = (aa2>>1)*(1-(b<<1)) + bb,

	tt = (bb>>1) - aa2*((b<<1)-1),

	drw = true;

	while (y > 0)

	{

		if (st < 0)

		{

			st += bb*((x<<1)+0x3);

			tt += (bb<<1)*(++x);

		}

		else if (tt < 0)

		{

			st += bb*((x<<1)+0x3) - aa4*(y-1);

			tt += (bb<<1)*(++x) - aa2*(((y--)<<1)-0x3);

		}

		else

		{

			tt -= aa2*((y<<1)-0x3);

			st -= aa4*(--y);

		}

		if (drw) this.mkOvQds(cx, cy, -x, x+wod, -y, y+hod, 1, 1);

		drw = !drw;

	}

}











function mkRect(x, y, w, h)

{

	var s = this.stroke;

	this.mkDiv(x, y, w, s);

	this.mkDiv(x+w, y, s, h);

	this.mkDiv(x, y+h, w+s, s);

	this.mkDiv(x, y+s, s, h-s);

}











function mkRectDott(x, y, w, h)

{

	this.drawLine(x, y, x+w, y);

	this.drawLine(x+w, y, x+w, y+h);

	this.drawLine(x, y+h, x+w, y+h);

	this.drawLine(x, y, x, y+h);

}











function jsgFont()

{

	this.PLAIN = 'font-weight:normal;';

	this.BOLD = 'font-weight:bold;';

	this.ITALIC = 'font-style:italic;';

	this.ITALIC_BOLD = this.ITALIC + this.BOLD;

	this.BOLD_ITALIC = this.ITALIC_BOLD;

}

var Font = new jsgFont();











function jsgStroke()

{

	this.DOTTED = -1;

}

var Stroke = new jsgStroke();











function jsGraphics(id, wnd)

{

	this.setColor = new Function('arg', 'this.color = arg;');







	this.setStroke = function(x)

	{

		this.stroke = x;

		if (!(x+1))

		{

			this.drawLine = mkLinDott;

			this.mkOv = mkOvDott;

			this.drawRect = mkRectDott;

		}

		else if (x-1 > 0)

		{

			this.drawLine = mkLin2D;

			this.mkOv = mkOv2D;

			this.drawRect = mkRect;

		}

		else

		{

			this.drawLine = mkLin;

			this.mkOv = mkOv;

			this.drawRect = mkRect;

		}

	};







	this.setPrintable = function(arg)

	{

		this.printable = arg;

		this.mkDiv = jg_n4? mkLyr : arg? mkDivPrint : mkDiv;

	};







	this.setFont = function(fam, sz, sty)

	{

		this.ftFam = fam;

		this.ftSz = sz;

		this.ftSty = sty || Font.PLAIN;

	};







	this.drawPolyline = this.drawPolyLine = function(x, y, s)

	{

		var i = x.length-1; while (i >= 0)

			this.drawLine(x[i], y[i], x[--i], y[i]);

	};







	this.fillRect = function(x, y, w, h)

	{

		this.mkDiv(x, y, w, h);

	};







	this.drawPolygon = function(x, y)

	{

		this.drawPolyline(x, y);

		this.drawLine(x[x.length-1], y[x.length-1], x[0], y[0]);

	};







	this.drawEllipse = this.drawOval = function(x, y, w, h)

	{

		this.mkOv(x, y, w, h);

	};







	this.fillEllipse = this.fillOval = function(left, top, w, h)

	{

		var a = (w -= 1)>>1, b = (h -= 1)>>1,

		wod = (w&1)+1, hod = (h&1)+1,

		cx = left+a, cy = top+b,

		x = 0, y = b,

		ox = 0, oy = b,

		aa2 = (a*a)<<1, aa4 = aa2<<1, bb = (b*b)<<1,

		st = (aa2>>1)*(1-(b<<1)) + bb,

		tt = (bb>>1) - aa2*((b<<1)-1),

		pxl, dw, dh;

		if (w+1) while (y > 0)

		{

			if (st < 0)

			{

				st += bb*((x<<1)+0x3);

				tt += (bb<<1)*(++x);

			}

			else if (tt < 0)

			{

				st += bb*((x<<1)+0x3) - aa4*(y-1);

				pxl = cx-x;

				dw = (x<<1)+wod;

				tt += (bb<<1)*(++x) - aa2*(((y--)<<1)-0x3);

				dh = oy-y;

				this.mkDiv(pxl, cy-oy, dw, dh);

				this.mkDiv(pxl, cy+oy-dh+hod, dw, dh);

				ox = x;

				oy = y;

			}

			else

			{

				tt -= aa2*((y<<1)-0x3);

				st -= aa4*(--y);

			}

		}

		this.mkDiv(cx-a, cy-oy, w+1, (oy<<1)+hod);

	};







	this.drawString = mkLbl;







	this.clear = function()

	{

		this.htm = "";

		if (this.cnv) this.cnv.innerHTML = this.defhtm;

	};







	this.mkOvQds = function(cx, cy, xl, xr, yt, yb, w, h)

	{

		this.mkDiv(xr+cx, yt+cy, w, h);

		this.mkDiv(xr+cx, yb+cy, w, h);

		this.mkDiv(xl+cx, yb+cy, w, h);

		this.mkDiv(xl+cx, yt+cy, w, h);

	};





	this.setStroke(1);

	this.setPrintable(false);

	this.setFont('verdana,geneva,helvetica,sans-serif', String.fromCharCode(0x31, 0x32, 0x70, 0x78), Font.PLAIN);

	this.color = '#000000';

	this.htm = '';

	this.wnd = wnd || window;





	if (!(jg_ie || jg_dom || jg_ihtm)) chkDHTM();

	if (typeof id != 'string' || !id) this.paint = pntDoc;

	else

	{

		this.cnv = document.all? (this.wnd.document.all[id] || null)

			: document.getElementById? (this.wnd.document.getElementById(id) || null)

			: null;

		this.defhtm = (this.cnv && this.cnv.innerHTML)? this.cnv.innerHTML : '';

		this.paint = jg_dom? pntCnvDom : jg_ie? pntCnvIe : jg_ihtm? pntCnvIhtm : pntCnv;

	}

	this.fillPolygon = function(array_x, array_y)

	{

		var i;

		var y;

		var miny, maxy;

		var x1, y1;

		var x2, y2;

		var ind1, ind2;

		var ints;



		var n = array_x.length;



		if (!n) return;





		miny = array_y[0];

		maxy = array_y[0];

		for (i = 1; i < n; i++)

		{

			if (array_y[i] < miny)

				miny = array_y[i];



			if (array_y[i] > maxy)

				maxy = array_y[i];

		}

		for (y = miny; y <= maxy; y++)

		{

			var polyInts = new Array();

			ints = 0;

			for (i = 0; i < n; i++)

			{

				if (!i)

				{

					ind1 = n-1;

					ind2 = 0;

				}

				else

				{

					ind1 = i-1;

					ind2 = i;

				}

				y1 = array_y[ind1];

				y2 = array_y[ind2];

				if (y1 < y2)

				{

					x1 = array_x[ind1];

					x2 = array_x[ind2];

				}

				else if (y1 > y2)

				{

					y2 = array_y[ind1];

					y1 = array_y[ind2];

					x2 = array_x[ind1];

					x1 = array_x[ind2];

				}

				else continue;



				 // modified 11. 2. 2004 Walter Zorn

				if ((y >= y1) && (y < y2))

					polyInts[ints++] = Math.round((y-y1) * (x2-x1) / (y2-y1) + x1);



				else if ((y == maxy) && (y > y1) && (y <= y2))

					polyInts[ints++] = Math.round((y-y1) * (x2-x1) / (y2-y1) + x1);

			}

			polyInts.sort(integer_compare);



			for (i = 0; i < ints; i+=2)

			{

				w = polyInts[i+1]-polyInts[i]

				this.mkDiv(polyInts[i], y, polyInts[i+1]-polyInts[i]+1, 1);

			}

		}

	};



}



function integer_compare(x,y)

{

	return (x < y) ? -1 : ((x > y)*1);

}



///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

function MM_swapImgRestore() {

  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;

}



function MM_preloadImages() {

  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();

    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)

    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}

}



function MM_findObj(n, d) {

  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {

    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}

  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];

  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);

  if(!x && d.getElementById) x=d.getElementById(n); return x;

}



function MM_swapImage() {

  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)

   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}

}



function js_valid_mail(){

  var erreur = 0;

  if(send_com_mail.nom.value == ""){

		erreur = 1;

		txt_erreur = " vous devez saisir votre nom \n";

	}

	if(send_com_mail.societe.value == ""){

		erreur = 1;

		txt_erreur = txt_erreur + " vous devez saisir votre societe \n";

 	}

	if(send_com_mail.ville.value == ""){

		erreur = 1;

		txt_erreur = txt_erreur + " vous devez saisir votre ville \n";

 	}

	if(send_com_mail.tel.value == ""){

		erreur = 1;

	 txt_erreur = txt_erreur + " vous devez saisir votre n° de telephone \n";

	}

	if(send_com_mail.mail.value == ""){

		erreur = 1;

	 txt_erreur = txt_erreur + " vous devez saisir votre e-mail \n";

	}

  if (erreur == 0){

  	return (true);

  }else{

    alert(txt_erreur);

		return (false);

	}

}



function js_valid_mail_recrut(){

  var erreur = 0;

  if(send_recrut_mail.nom.value == ""){

		erreur = 1;

		txt_erreur = " vous devez saisir votre nom \n";

	}

	if(send_recrut_mail.ville.value == ""){

		erreur = 1;

		txt_erreur = txt_erreur + " vous devez saisir votre ville \n";

 	}

	if(send_recrut_mail.tel.value == ""){

		erreur = 1;

	 txt_erreur = txt_erreur + " vous devez saisir votre n° de telephone \n";

	}

	if(send_recrut_mail.mail.value == ""){

		erreur = 1;

	 txt_erreur = txt_erreur + " vous devez saisir votre e-mail \n";

	}

	if(send_recrut_mail.comment.value == ""){

		erreur = 1;

	 txt_erreur = txt_erreur + " vous devez saisir vos motivation \n";

	}



  if (erreur == 0){

  	return (true);

  }else{

    alert(txt_erreur);

		return (false);

	}

}





function js_valid_compte(methode){

  var erreur = 0;

  if(valid_cpt.nom.value == ""){

		erreur = 1;

	}

  if(valid_cpt.societe.value == ""){

		erreur = 1;

	}

  if(valid_cpt.tel.value == ""){

		erreur = 1;

	}

	if(valid_cpt.mail.value == ""){

		erreur = 1;

	}

	if(valid_cpt.log.value == ""){

		erreur = 1;

	}

	if(methode == "new"){

  	if(valid_cpt.pass.value == ""){

  		erreur = 1;

  	}

  	if(valid_cpt.pass_confirm.value == ""){

  		erreur = 1;

  	}

  }

	if(valid_cpt.pass_confirm.value != valid_cpt.pass.value){

		erreur = 2;

	}

  if (erreur == 0){

  	return (true);

  }else{

    if (erreur == 1){

      alert("Vous devez saisir les champs obligatoires (*) du formulaire de contact");

  		return (false);

		}else{

		  if (erreur == 2){

        alert("Erreur de confirmation de mot de passe");

    		return (false);

  		}

    }

	}

}



function js_remember_compte(){

  var erreur = 0;

	if(remember_cpt.mail.value == ""){

		erreur = 1;

	}

	if(remember_cpt.log.value == ""){

		erreur = 1;

	}

  if (erreur == 0){

  	return (true);

  }else{

    alert("Vous devez saisir les champs obligatoires (*) du formulaire de contact");

  	return (false);

	}

}



function EcrireCookie(nom, valeur){

  var argv=EcrireCookie.arguments;

  var argc=EcrireCookie.arguments.length;

  var expires=(argc > 2) ? argv[2] : null;

  var path=(argc > 3) ? argv[3] : null;

  var domain=(argc > 4) ? argv[4] : null;

  var secure=(argc > 5) ? argv[5] : false;

  document.cookie=nom+"="+escape(valeur)+

  ((expires==null) ? "" : ("; expires="+expires.toGMTString()))+

  ((path==null) ? "" : ("; path="+path))+

  ((domain==null) ? "" : ("; domain="+domain))+

  ((secure==true) ? "; secure" : "");

}//EcrireCookie("dejavenu", "oui");



function getCookieVal(offset){

  var endstr=document.cookie.indexOf (";", offset);

  if (endstr==-1) endstr=document.cookie.length;

    return unescape(document.cookie.substring(offset, endstr)); 

}

function LireCookie(nom){

  var arg=nom+"=";

  var alen=arg.length;

  var clen=document.cookie.length;

  var i=0;

  while (i<clen){

    var j=i+alen;

    if (document.cookie.substring(i, j)==arg) return getCookieVal(j);

    i=document.cookie.indexOf(" ",i)+1;

    if (i==0) break;

  }

  return null; 

}//nbvisites=LireCookie("nombredevisites");



function EffaceCookie(nom){

  date=new Date;

  date.setFullYear(date.getFullYear()-1);

  EcrireCookie(nom,null,date); 

}//EffaceCookie("email");





function verif_cookie(){

  log_var = connect_form.log.value;

  if(log_var != ""){

    cookie_name = "SINGULARLOG_" +  log_var;

    pass_var=LireCookie(cookie_name);

    if(pass_var !=null){

      connect_form.pass.value = pass_var;

      connect_form.check.checked = true;

    }

  }

}



function submit_form(name){

  document.name.submit();

}



function visual(css_txt,txt) {

  document.visu.texte.value = txt;

  document.visu.css.value = css_txt;

  document.visu.submit();

}


