/**
 * Full HTML5 compatibility rule set
 * These rules define which tags and CSS classes are supported and which tags should be specially treated.
 *
 * Examples based on this rule set:
 *
 *    <a href="http://foobar.com">foo</a>
 *    ... becomes ...
 *    <a href="http://foobar.com" target="_blank" rel="nofollow">foo</a>
 *
 *    <img align="left" src="http://foobar.com/image.png">
 *    ... becomes ...
 *    <img class="wysiwyg-float-left" src="http://foobar.com/image.png" alt="">
 *
 *    <div>foo<script>alert(document.cookie);</script></div>
 *    ... becomes ...
 *    <div>foo</div>
 *
 *    <marquee>foo</marquee>
 *    ... becomes ...
 *    <span>foo</span>
 *
 *    foo <br clear="both"> bar
 *    ... becomes ...
 *    foo <br class="wysiwyg-clear-both"> bar
 *
 *    <div>hello <iframe src="http://google.com"></iframe></div>
 *    ... becomes ...
 *    <div>hello </div>
 *
 *    <center>hello</center>
 *    ... becomes ...
 *    <div class="wysiwyg-text-align-center">hello</div>
 */
var wysihtml5ParserRules = {
	/**
	 * CSS Class white-list
	 * Following CSS classes won't be removed when parsed by the wysihtml5 HTML parser
	 * If all classes should pass "any" as classes value. Ex: "classes": "any"
	 */
	"classes": {
		"wysiwyg-clear-both": 1,
		"wysiwyg-clear-left": 1,
		"wysiwyg-clear-right": 1,
		"wysiwyg-color-aqua": 1,
		"wysiwyg-color-black": 1,
		"wysiwyg-color-blue": 1,
		"wysiwyg-color-fuchsia": 1,
		"wysiwyg-color-gray": 1,
		"wysiwyg-color-green": 1,
		"wysiwyg-color-lime": 1,
		"wysiwyg-color-maroon": 1,
		"wysiwyg-color-navy": 1,
		"wysiwyg-color-olive": 1,
		"wysiwyg-color-purple": 1,
		"wysiwyg-color-red": 1,
		"wysiwyg-color-silver": 1,
		"wysiwyg-color-teal": 1,
		"wysiwyg-color-white": 1,
		"wysiwyg-color-yellow": 1,
		"wysiwyg-float-left": 1,
		"wysiwyg-float-right": 1,
		"wysiwyg-font-size-large": 1,
		"wysiwyg-font-size-larger": 1,
		"wysiwyg-font-size-medium": 1,
		"wysiwyg-font-size-small": 1,
		"wysiwyg-font-size-smaller": 1,
		"wysiwyg-font-size-x-large": 1,
		"wysiwyg-font-size-x-small": 1,
		"wysiwyg-font-size-xx-large": 1,
		"wysiwyg-font-size-xx-small": 1,
		"wysiwyg-text-align-center": 1,
		"wysiwyg-text-align-justify": 1,
		"wysiwyg-text-align-left": 1,
		"wysiwyg-text-align-right": 1
	},


	"type_definitions": {

		"visible_content_object": {
			"methods": {
				"has_visible_contet": 1
			}
		},

		"alignment_object": {
			"classes": {
				"wysiwyg-text-align-center": 1,
				"wysiwyg-text-align-justify": 1,
				"wysiwyg-text-align-left": 1,
				"wysiwyg-text-align-right": 1,
				"wysiwyg-float-left": 1,
				"wysiwyg-float-right": 1
			},
			"styles": {
				"float": ["left", "right"],
				"text-align": ["left", "right", "center", "justify"]
			}
		},

		"valid_image_src": {
			"attrs": {
				"src": /^[^data\:]/i
			}
		},

		"text_color_object": {
			"styles": {
				"color": true,
				"background-color": true
			}
		},

		"text_fontfamily_object": {
			"styles": {
				"font-family": true
			}
		},

		"text_fontsize_object": {
			"styles": {
				"font-size": true
			}
		},

		"text_formatting_object": {
			"classes": {
				"wysiwyg-color-aqua": 1,
				"wysiwyg-color-black": 1,
				"wysiwyg-color-blue": 1,
				"wysiwyg-color-fuchsia": 1,
				"wysiwyg-color-gray": 1,
				"wysiwyg-color-green": 1,
				"wysiwyg-color-lime": 1,
				"wysiwyg-color-maroon": 1,
				"wysiwyg-color-navy": 1,
				"wysiwyg-color-olive": 1,
				"wysiwyg-color-purple": 1,
				"wysiwyg-color-red": 1,
				"wysiwyg-color-silver": 1,
				"wysiwyg-color-teal": 1,
				"wysiwyg-color-white": 1,
				"wysiwyg-color-yellow": 1,
				"wysiwyg-font-size-large": 1,
				"wysiwyg-font-size-larger": 1,
				"wysiwyg-font-size-medium": 1,
				"wysiwyg-font-size-small": 1,
				"wysiwyg-font-size-smaller": 1,
				"wysiwyg-font-size-x-large": 1,
				"wysiwyg-font-size-x-small": 1,
				"wysiwyg-font-size-xx-large": 1,
				"wysiwyg-font-size-xx-small": 1
			}
		}
	},

	"comments": 1, // if set allows comments to pass

	/**
	 * Tag list
	 *
	 * The following options are available:
	 *
	 *    - add_class:        converts and deletes the given HTML4 attribute (align, clear, ...) via the given method to a css class
	 *                        The following methods are implemented in wysihtml5.dom.parse:
	 *                          - align_text:  converts align attribute values (right/left/center/justify) to their corresponding css class "wysiwyg-text-align-*")
	 *                            <p align="center">foo</p> ... becomes ... <p class="wysiwyg-text-align-center">foo</p>
	 *                          - clear_br:    converts clear attribute values left/right/all/both to their corresponding css class "wysiwyg-clear-*"
	 *                            <br clear="all"> ... becomes ... <br class="wysiwyg-clear-both">
	 *                          - align_img:    converts align attribute values (right/left) on <img> to their corresponding css class "wysiwyg-float-*"
	 *
	 *    - add_style:        converts and deletes the given HTML4 attribute (align) via the given method to a css style
	 *                        The following methods are implemented in wysihtml5.dom.parse:
	 *                          - align_text:  converts align attribute values (right/left/center) to their corresponding css style)
	 *                            <p align="center">foo</p> ... becomes ... <p style="text-align:center">foo</p>
	 *
	 *    - remove:             removes the element and its content
	 *
	 *    - unwrap              removes element but leaves content
	 *
	 *    - rename_tag:         renames the element to the given tag
	 *
	 *    - set_class:          adds the given class to the element (note: make sure that the class is in the "classes" white list above)
	 *
	 *    - set_attributes:     sets/overrides the given attributes
	 *
	 *    - check_attributes:   checks the given HTML attribute via the given method
	 *                            - url:            allows only valid urls (starting with http:// or https://)
	 *                            - src:            allows something like "/foobar.jpg", "http://google.com", ...
	 *                            - href:           allows something like "mailto:bert@foo.com", "http://google.com", "/foobar.jpg"
	 *                            - alt:            strips unwanted characters. if the attribute is not set, then it gets set (to ensure valid and compatible HTML)
	 *                            - numbers:  ensures that the attribute only contains numeric characters
	 *                            - any:            allows anything to pass
	 */
	"tags": {
		"tr": {
			"add_class": {
				"align": "align_text"
			}
		},
		"strike": {
			"unwrap": 1
		},
		"form": {
			"unwrap": 1
		},
		"rt": {
			"rename_tag": "span"
		},
		"code": {},
		"acronym": {
			"rename_tag": "span"
		},
		"br": {
			"add_class": {
				"clear": "clear_br"
			}
		},
		"details": {
			"unwrap": 1
		},
		"h4": {
			"add_class": {
				"align": "align_text"
			}
		},
		"em": {},
		"title": {
			"remove": 1
		},
		"multicol": {
			"unwrap": 1
		},
		"figure": {
			"unwrap": 1
		},
		"xmp": {
			"unwrap": 1
		},
		"small": {
			"rename_tag": "span",
			"set_class": "wysiwyg-font-size-smaller"
		},
		"area": {
			"remove": 1
		},
		"time": {
			"unwrap": 1
		},
		"dir": {
			"rename_tag": "ul"
		},
		"bdi": {
			"unwrap": 1
		},
		"command": {
			"unwrap": 1
		},
		"ul": {
			"keep_styles": {
				"textAlign": 1,
				"float": 1,
				"font-family":1,
				"font-size":1,
				"color":1
			}
		},
		"progress": {
			"rename_tag": "span"
		},
		"dfn": {
			"unwrap": 1
		},
		"iframe": {
			"remove": 1
		},
		"figcaption": {
			"unwrap": 1
		},
		"a": {
			"check_attributes": {
				"href": "href", // if you compiled master manually then change this from 'url' to 'href'
				"target": "any"
			},
			"set_attributes": {
				"rel": "nofollow"
			},
			"keep_styles": {
				"textAlign": 1,
				"float": 1,
				"font-family":1,
				"font-size":1,
				"color":1
			}
		},
		"img": {
			"one_of_type": {
				"valid_image_src": 1
			},
			"check_attributes": {
				"width": "numbers",
				"alt": "alt",
				"src": "src", // if you compiled master manually then change this from 'url' to 'src'
				"height": "numbers"
			},
			"add_class": {
				"align": "align_img"
			}
		},
		"rb": {
			"unwrap": 1
		},
		"footer": {
			"rename_tag": "div"
		},
		"noframes": {
			"remove": 1
		},
		"abbr": {
			"unwrap": 1
		},
		"u": {
			"keep_styles": {
				"textAlign": 1,
				"float": 1,
				"font-family":1,
				"font-size":1,
				"color":1
			}
		},
		"bgsound": {
			"remove": 1
		},
		"sup": {
			"unwrap": 1
		},
		"address": {
			"unwrap": 1
		},
		"basefont": {
			"remove": 1
		},
		"nav": {
			"unwrap": 1
		},
		"h1": {
			"add_class": {
				"align": "align_text"
			}
		},
		"head": {
			"unwrap": 1
		},
		"tbody": {
			"add_class": {
				"align": "align_text"
			}
		},
		"dd": {
			"unwrap": 1
		},
		"s": {
			"unwrap": 1
		},
		"li": {
			"keep_styles": {
				"textAlign": 1,
				"float": 1,
				"font-family":1,
				"font-size":1,
				"color":1,
				"fontFamily": 1
			}
		},
		"td": {
			"check_attributes": {
				"rowspan": "numbers",
				"colspan": "numbers",
				"valign": "any",
				"align": "any"
			},
			"add_class": {
				"align": "align_text"
			}
		},
		"object": {
			"remove": 1
		},

		"div": {
			"one_of_type": {
				"visible_content_object": 1
			},
			"remove_action": "unwrap",
			"keep_styles": {
				"textAlign": 1,
				"float": 1,
				"font-family":1
			},
			"add_class": {
				"align": "align_text"
			}
		},

		"option": {
			"remove":1
		},
		"select": {
			"remove":1
		},
		"i": {},
		"track": {
			"remove": 1
		},
		"wbr": {
			"remove": 1
		},
		"fieldset": {
			"unwrap": 1
		},
		"big": {
			"rename_tag": "span",
			"set_class": "wysiwyg-font-size-larger"
		},
		"button": {
			"unwrap": 1
		},
		"noscript": {
			"remove": 1
		},
		"svg": {
			"remove": 1
		},
		"input": {
			"remove": 1
		},
		"table": {},
		"keygen": {
			"remove": 1
		},
		"h5": {
			"add_class": {
				"align": "align_text"
			}
		},
		"meta": {
			"remove": 1
		},
		"map": {
			"remove": 1
		},
		"isindex": {
			"remove": 1
		},
		"mark": {
			"unwrap": 1
		},
		"caption": {
			"add_class": {
				"align": "align_text"
			}
		},
		"tfoot": {
			"add_class": {
				"align": "align_text"
			}
		},
		"base": {
			"remove": 1
		},
		"video": {
			"remove": 1
		},
		"strong": {},
		"canvas": {
			"remove": 1
		},
		"output": {
			"unwrap": 1
		},
		"marquee": {
			"unwrap": 1
		},
		"b": {},
		"q": {
			"check_attributes": {
				"cite": "url"
			}
		},
		"applet": {
			"remove": 1
		},
		"span": {
			/*"one_of_type": {
				"text_formatting_object": 1,
				"text_color_object": 1,
				"text_fontsize_object": 1
			},*/
			"keep_styles": {
				"color": 1,
				"backgroundColor": 1,
				"fontSize": 1,
				"fontFamily": 1,
				"font-family": 1
			},
			"remove_action": "unwrap"
		},
		"rp": {
			"unwrap": 1
		},
		"spacer": {
			"remove": 1
		},
		"source": {
			"remove": 1
		},
		"aside": {
			"rename_tag": "div"
		},
		"frame": {
			"remove": 1
		},
		"section": {
			"rename_tag": "div"
		},
		"body": {
			"unwrap": 1
		},
		"ol": {
			"keep_styles": {
				"textAlign": 1,
				"float": 1,
				"font-family":1,
				"font-size":1,
				"color":1
			}
		},
		"nobr": {
			"unwrap": 1
		},
		"html": {
			"unwrap": 1
		},
		"summary": {
			"unwrap": 1
		},
		"var": {
			"unwrap": 1
		},
		"del": {
			"unwrap": 1
		},
		"blockquote": {
			"check_attributes": {
				"cite": "url"
			}
		},
		"style": {
			"remove": 1
		},
		"device": {
			"remove": 1
		},
		"meter": {
			"unwrap": 1
		},
		"h3": {
			"add_class": {
				"align": "align_text"
			}
		},
		"textarea": {
			"unwrap": 1
		},
		"embed": {
			"remove": 1
		},
		"hgroup": {
			"unwrap": 1
		},
		"font": {
			"rename_tag": "span",
			"add_class": {
				"size": "size_font"
			}
		},
		"tt": {
			"unwrap": 1
		},
		"noembed": {
			"remove": 1
		},
		"thead": {
			"add_class": {
				"align": "align_text"
			}
		},
		"blink": {
			"unwrap": 1
		},
		"plaintext": {
			"unwrap": 1
		},
		"xml": {
			"remove": 1
		},
		"h6": {
			"add_class": {
				"align": "align_text"
			}
		},
		"param": {
			"remove": 1
		},
		"th": {
			"check_attributes": {
				"rowspan": "numbers",
				"colspan": "numbers"
			},
			"add_class": {
				"align": "align_text"
			}
		},
		"legend": {
			"unwrap": 1
		},
		"hr": {},
		"label": {
			"unwrap": 1
		},
		"dl": {
			"unwrap": 1
		},
		"kbd": {
			"unwrap": 1
		},
		"listing": {
			"unwrap": 1
		},
		"dt": {
			"unwrap": 1
		},
		"nextid": {
			"remove": 1
		},
		"pre": {},
		"center": {
			"rename_tag": "div",
			"set_class": "wysiwyg-text-align-center"
		},
		"audio": {
			"remove": 1
		},
		"datalist": {
			"unwrap": 1
		},
		"samp": {
			"unwrap": 1
		},
		"col": {
			"remove": 1
		},
		"article": {
			"rename_tag": "div"
		},
		"cite": {},
		"link": {
			"remove": 1
		},
		"script": {
			"remove": 1
		},
		"bdo": {
			"unwrap": 1
		},
		"menu": {
			"rename_tag": "ul"
		},
		"colgroup": {
			"remove": 1
		},
		"ruby": {
			"unwrap": 1
		},
		"h2": {
			"add_class": {
				"align": "align_text"
			}
		},
		"ins": {
			"unwrap": 1
		},
		"p": {
			"add_class": {
				"align": "align_text"
			},
			"keep_styles": {
				"textAlign": 1,
				"float": 1,
				"fontSize": 1,
				"fontFamily": 1,
				"color": 1
			}
		},
		"sub": {
			"unwrap": 1
		},
		"comment": {
			"remove": 1
		},
		"frameset": {
			"remove": 1
		},
		"optgroup": {
			"unwrap": 1
		},
		"header": {
			"rename_tag": "div"
		}
	}
};