creating an array of polygons and applying the event to each elelemnt of the array might do the trick :-
var polyArray = [];
for(m=0;m<array.length;m++){>
var lat =array[m][1];
var lon = array[m][2];
var latOffset = 0.5;
var lonOffset = 2;
var latOffset2 = 0.5;
var lonOffset2 = 2;
var polygon = new GPolygon([
new GLatLng(lat , lon ),
new GLatLng(lat - latOffset2, lon + (lonOffset-1)),
new GLatLng(lat - latOffset2, lon - (lonOffset-1)),
new GLatLng(lat , lon ), ], "#ff0000", 0.1 , 0.9, "#ff0000", 0.9);
a=array[m][1];
b=array[m][2];
c=array[m][0];
f=array[m][3];
h=array[m][4];
s=array[m][6];
bsc=array[m][5];
polyArray.push(polygon)
GEvent.addListener(polyArray[polyArray.length-1], "click", function(overlay,lat,lon) {
map.openInfoWindowHtml(overlay,"Site"+ s +"<br>"+"BSC"+ bsc +"<br>"+"Cell"+ c +"<br>"+"Cell lattitude"+ lat +"<br>"+"Cell longitude" + lon + "<br>"+"Freq"+ f +"<br>"+"Height"+ h );
});
map.addOverlay(polyArray[polyArray.length-1]);
}
}
not sure on the openInfoWindowHtml, I use the V3 API, but in that I usually have to create a seperate infowindow for each object (marker, poly, whatever) and also store an array of them in line with the object array.
hope this helps
Gib