function(domElement, model, parent) {
	if(domElement.nodeType !== Node.ELEMENT_NODE) return;
	
	var attributeName;
	
	if(domElement.tesujiBindingContext == null) domElement.tesujiBindingContext = new ElementBindingContext(domElement, model, parent);
	else domElement.tesujiBindingContext.rebind(model, parent);
	
	if(registeredComponents[domElement.nodeName]) {
		// handle specially
	}
	else {
		for(var i = 0; i < domElement.attributes.length; i++) {
			if(domElement.attributes[i].name.search('data-') === 0) {
				// this a data attribute
				attributeName = domElement.attributes[i].name.substring(5);
				
				processDataAttribute(attributeName, domElement.attributes[i].value, domElement.tesujiBindingContext);
			}
		}
	}
	
	if(domElement.tesujiBindingContext.keepTraversing()) {
		for(var i = 0; i < domElement.children.length; i++) {
			applyModelOnDOMElement(domElement.children[i], model, parent);
		}
	}

}
function(domElement, model, parent) {
	if(domElement.nodeType !== Node.ELEMENT_NODE) return;
	
	var attributeName;
	
	if(domElement.tesujiBindingContext == null) domElement.tesujiBindingContext = new ElementBindingContext(domElement, model, parent);
	else domElement.tesujiBindingContext.rebind(model, parent);
	
	if(registeredComponents[domElement.nodeName]) {
		
	}
	else {
		for(var i = 0; i < domElement.attributes.length; i++) {
			if(domElement.attributes[i].name.search('data-') === 0) {
				
				attributeName = domElement.attributes[i].name.substring(5);
				
				processDataAttribute(attributeName, domElement.attributes[i].value, domElement.tesujiBindingContext);
			}
		}
	}
	
	if(domElement.tesujiBindingContext.keepTraversing()) {
		for(var i = 0; i < domElement.children.length; i++) {
			applyModelOnDOMElement(domElement.children[i], model, parent);
		}
	}

}
function ( domElement , model , parent ) { if ( domElement . nodeType !== Node . ELEMENT_NODE ) return ; var attributeName ; if ( domElement . tesujiBindingContext == null ) domElement . tesujiBindingContext = new ElementBindingContext ( domElement , model , parent ) ; else domElement . tesujiBindingContext . rebind ( model , parent ) ; if ( registeredComponents [ domElement . nodeName ] ) { // handle specially } else { for ( var i = 0 ; i < domElement . attributes . length ; i ++ ) { if ( domElement . attributes [ i ] . name . search ( 'data-' ) === 0 ) { // this a data attribute attributeName = domElement . attributes [ i ] . name . substring ( 5 ) ; processDataAttribute ( attributeName , domElement . attributes [ i ] . value , domElement . tesujiBindingContext ) ; } } } if ( domElement . tesujiBindingContext . keepTraversing ( ) ) { for ( var i = 0 ; i < domElement . children . length ; i ++ ) { applyModelOnDOMElement ( domElement . children [ i ] , model , parent ) ; } } }
/* traverse DOM tree
/ * traverse DOM tree