'use strict';

var TYPES = require('../parsers').TYPES; var valueType = require('../parsers').valueType; var shorthandParser = require('../parsers').shorthandParser; var shorthandSetter = require('../parsers').shorthandSetter; var shorthandGetter = require('../parsers').shorthandGetter;

var shorthand_for = {

'font-family': require('./fontFamily'),
'font-size': require('./fontSize'),
'font-style': require('./fontStyle'),
'font-variant': require('./fontVariant'),
'font-weight': require('./fontWeight'),
'line-height': require('./lineHeight')

};

var static_fonts = ['caption', 'icon', 'menu', 'message-box', 'small-caption', 'status-bar', 'inherit'];

module.exports.isValid = function isValid(v) {

return (shorthandParser(v, shorthand_for) !== undefined) ||
    (valueType(v) === TYPES.KEYWORD && static_fonts.indexOf(v.toLowerCase()) !== -1);

};

var setter = shorthandSetter('font', shorthand_for);

module.exports.definition = {

set: function (v) {
    var short = shorthandParser(v, shorthand_for);
    if (short !== undefined) {
        return setter.call(this, v);
    }
    if (valueType(v) === TYPES.KEYWORD && static_fonts.indexOf(v.toLowerCase()) !== -1) {
        this._setProperty('font', v);
    }
},
get: shorthandGetter('font', shorthand_for),
enumerable: true,
configurable: true

};