# -*- coding: iso-8859-1 -*-
"""
    MoinMoin - Skype button and link macro

    @copyright: 2006 Andreas Schreiber <AndreasSchreiber@dlr.de>
    @license: GNU GPL, see COPYING for details.

"""

__version__ = '$Revision: $'[11:-2]

IMAGE_URL = 'http://goodies.skype.com/graphics/skypeme_btn%s_%s.gif'

COLORS = ['green',
          'black',
          'blue',
          'brownish',
          'darkgrey',
          'lightgrey',
          'orange',
          'pink',
          'purple',
          'red',
          'white',
          'yellow']


class Skype:
    """ This implements the MantisIssue macro for the MoinMoin Wiki."""

    def __init__(self, macro, args):
        self.macro = macro
        self.formatter = macro.request.formatter

        # default values
        self.username = None
        self.color = COLORS[0]
        self.size = "small"
       
        self.parseArgs(args)
        

    def execute(self):
        if (self.username == None):
            return self.errorMessage("No username specified!")

        if self.color not in COLORS:
            return self.errorMessage("Color '%s' unknown! Use one of %s." % (self.color, str(COLORS)))
        
        if self.size == "small":
            imageUrl = IMAGE_URL % ("_small", self.color)
        else:
            imageUrl = IMAGE_URL % ("", self.color)
        return '<a href="callto://%s"><img src="%s" alt="Skype me!" title="Call %s with Skype" border=0></a>' % (self.username, imageUrl, self.username)

    def parseArgs(self, args):
        """Parse arguments."""
        if args:        
            # Arguments are comma delimited
            sargs = args.split(',')

            # The first argument should be the username            
            if len(sargs[0].split('=')) == 1:
                self.username = sargs[0]

            # Optional arguments are key:value pairs                
            for item in sargs:
                sitem = item.strip().split('=')
        
                if len(sitem) == 2:
                    if sitem[0] == "color":
                        self.color = sitem[1]
                    if sitem[0] == "size":
                        self.size = sitem[1]                
        return

    def errorMessage(self, message):
        _ = self.macro.request.getText
        formatter = self.macro.formatter
        return (formatter.sysmsg(1) +
                formatter.smiley("{X}") +
                _(" ") +
                formatter.highlight(1) +
                _(message) +
                formatter.highlight(0) +
                formatter.sysmsg(0))


def execute(macro, args):
    return Skype(macro, args).execute()


