Create a new load balancer for your account. By default the load
        balancer will be created in EC2. To create a load balancer inside a
        VPC, parameter zones must be set to None and subnets must not be None.
        The load balancer will be automatically created under the VPC that
        contains the subnet(s) specified.

        :type name: string
        :param name: The mnemonic name associated with the new load balancer

        :type zones: List of strings
        :param zones: The names of the availability zone(s) to add.

        :type listeners: List of tuples
        :param listeners: Each tuple contains three or four values,
                          (LoadBalancerPortNumber, InstancePortNumber,
                          Protocol, [SSLCertificateId])
                          where LoadBalancerPortNumber and InstancePortNumber
                          are integer values between 1 and 65535, Protocol is a
                          string containing either 'TCP', 'HTTP' or 'HTTPS';
                          SSLCertificateID is the ARN of a AWS AIM certificate,
                          and must be specified when doing HTTPS.

        :rtype: :class:`boto.ec2.elb.loadbalancer.LoadBalancer`
        :return: The newly created :class:`boto.ec2.elb.loadbalancer.LoadBalancer`

def create_load_balancer(self, name, zones, listeners, subnets=None,
        security_groups=None):
        """
        Create a new load balancer for your account. By default the load
        balancer will be created in EC2. To create a load balancer inside a
        VPC, parameter zones must be set to None and subnets must not be None.
        The load balancer will be automatically created under the VPC that
        contains the subnet(s) specified.

        :type name: string
        :param name: The mnemonic name associated with the new load balancer

        :type zones: List of strings
        :param zones: The names of the availability zone(s) to add.

        :type listeners: List of tuples
        :param listeners: Each tuple contains three or four values,
                          (LoadBalancerPortNumber, InstancePortNumber,
                          Protocol, [SSLCertificateId])
                          where LoadBalancerPortNumber and InstancePortNumber
                          are integer values between 1 and 65535, Protocol is a
                          string containing either 'TCP', 'HTTP' or 'HTTPS';
                          SSLCertificateID is the ARN of a AWS AIM certificate,
                          and must be specified when doing HTTPS.

        :rtype: :class:`boto.ec2.elb.loadbalancer.LoadBalancer`
        :return: The newly created :class:`boto.ec2.elb.loadbalancer.LoadBalancer`
        """
        params = {'LoadBalancerName' : name}
        for index, listener in enumerate(listeners):
            i = index + 1
            params['Listeners.member.%d.LoadBalancerPort' % i] = listener[0]
            params['Listeners.member.%d.InstancePort' % i] = listener[1]
            params['Listeners.member.%d.Protocol' % i] = listener[2]
            if listener[2]=='HTTPS':
                params['Listeners.member.%d.SSLCertificateId' % i] = listener[3]
        if zones:
            self.build_list_params(params, zones, 'AvailabilityZones.member.%d')

        if subnets:
            self.build_list_params(params, subnets, 'Subnets.member.%d')

        if security_groups:
            self.build_list_params(params, security_groups, 
                                    'SecurityGroups.member.%d')

        load_balancer = self.get_object('CreateLoadBalancer',
                                        params, LoadBalancer)
        load_balancer.name = name
        load_balancer.listeners = listeners
        load_balancer.availability_zones = zones
        load_balancer.subnets = subnets
        load_balancer.security_groups = security_groups
        return load_balancer