2 'libs/jquery-1.9.1.min'
 
   7 // DocumentElement represents a node from WLXML document rendered inside Canvas
 
   8 var DocumentElement = function(htmlElement) {
 
   9     if(arguments.length === 0)
 
  11     this.$element = $(htmlElement);
 
  12     this.wlxmlTag = this.$element.prop('tagName');
 
  15 $.extend(DocumentElement.prototype, {
 
  16     children: function() {
 
  18         if(this instanceof DocumentTextElement)
 
  22         var elementContent = this.$element.contents();
 
  23         elementContent.each(function(idx) {
 
  24             var element = documentElementFromHTMLElement(this);
 
  25             if(idx === 0 && elementContent.length > 1 && elementContent[1].nodeType === Node.ELEMENT_NODE && (element instanceof DocumentTextElement) && $.trim($(this).text()) === '')
 
  27             if(idx > 0 && element instanceof DocumentTextElement) {
 
  28                 if(toret[toret.length-1] instanceof DocumentNodeElement && $.trim($(this).text()) === '')
 
  36         return documentElementFromHTMLElement(this.$element.parent()[0]);
 
  39     sameNode: function(other) {
 
  40         return other && (typeof other === typeof this) && other.$element[0] === this.$element[0];
 
  43     wrapWithNodeElement: function(wlxmlNode) {
 
  44         this.$element.wrap($('<' + wlxmlNode.tag + ' class="' + wlxmlNode.klass + '"">')[0]);
 
  45         return documentElementFromHTMLElement(this.$element.parent().get(0));
 
  49 var DocumentNodeElement = function(htmlElement) {
 
  50     DocumentElement.call(this, htmlElement);
 
  53 var DocumentTextElement = function(htmlElement) {
 
  54     DocumentElement.call(this, htmlElement);  
 
  57 DocumentNodeElement.prototype = new DocumentElement();
 
  58 DocumentTextElement.prototype = new DocumentElement();
 
  60 var documentElementFromHTMLElement = function(htmlElement) {
 
  61     if(htmlElement.nodeType === Node.ELEMENT_NODE)
 
  62         return new DocumentNodeElement(htmlElement);
 
  63     if(htmlElement.nodeType === Node.TEXT_NODE)
 
  64         return new DocumentTextElement(htmlElement);
 
  68     wrap: function(htmlElement) {
 
  69         return documentElementFromHTMLElement(htmlElement);
 
  71     DocumentElement: DocumentElement,
 
  72     DocumentNodeElement: DocumentNodeElement,
 
  73     DocumentTextElement: DocumentTextElement