Het probleem met jou script is dat je var infowindow en marker niet uniek zijn. Deze worden telkens overschreven, dus alleen de laatste blijven staan. Dus wat het script doet het neemt ongeachte op welke marker je klikt de laatste infowindow en hangt deze boven de laatste marker.
Ik heb geprobeerd om jou script op te losen door het in een array te hangen. Maar dat wilde niet leuken, ik denk dat je in javascript geen objecten in een array kan hangen.
Om die laatste rede moet je een andere oplossing zoeken, stef draagt al een mooie aan. Maar ik denk ik leg even uit waarom jou script niet werkt.