Removed CKEDITOR test files

Monotone-Parent: b2cf7eda0ef8f15fb6e78f8c38a7406a47bcdd2f
Monotone-Revision: 253445df7ee9966d67a53263e1ffd5389ab09588

Monotone-Author: crobert@inverse.ca
Monotone-Date: 2009-08-26T14:10:37
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
C Robert committed 2009-08-26 14:10:37 +00:00
1 parent 0ce87017d6
commit bf64bfdc1d
36 files changed
-7717

No files matched your search

@@ -1,4 +0,0 @@
.sample
{
position: absolute;
}
@@ -1 +0,0 @@
var testVar = 'Test!';
@@ -1 +0,0 @@
Sample Text
@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<list>
<item id="test1" />
<item id="test2" />
</list>
@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<list>
<item id="test1" />
<item id="test2" />
</list>
@@ -1,10 +0,0 @@
/*
Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.editorConfig = function( config )
{
config.customConfig = '_editor/custom_config_2.js';
config.test_custom1 = 'Ok';
};
@@ -1,9 +0,0 @@
/*
Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.editorConfig = function( config )
{
config.test_custom2 = 'Ok';
};
@@ -1,163 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>CKEDITOR.ajax</title>
<link rel="stylesheet" type="text/css" href="../test.css" />
<script type="text/javascript" src="../../ckeditor.js"></script>
<script type="text/javascript" src="../../_source/core/loader.js"></script>
<script type="text/javascript" src="../test.js"></script>
<script type="text/javascript">
//<![CDATA[
CKEDITOR.loader.load( 'core/ajax' );
//]]>
</script>
<script type="text/javascript">
//<![CDATA[
CKEDITOR.test.addTestCase( (function()
{
// Local reference to the "assert" object.
var assert = CKEDITOR.test.assert;
return {
test_load_sync : function()
{
var data = CKEDITOR.ajax.load( '../_assets/sample.txt' );
assert.areSame( 'Sample Text\r\n', data, 'The loaded data doesn\'t match' );
},
test_load_sync_404 : function()
{
var data = CKEDITOR.ajax.load( '../_assets/404.txt' );
assert.isNull( data );
},
test_load_async : function()
{
var testCase = this;
var callback = function( data )
{
testCase.resume( function()
{
assert.areSame( 'Sample Text\r\n', data, 'The loaded data doesn\'t match' );
} );
};
CKEDITOR.ajax.load( '../_assets/sample.txt', callback );
this.wait();
},
test_load_async_404 : function()
{
var testCase = this;
var callback = function( data )
{
testCase.resume( function()
{
assert.isNull( data );
} );
};
CKEDITOR.ajax.load( '../_assets/404.txt', callback );
this.wait();
},
test_loadXml_sync : function()
{
var data = CKEDITOR.ajax.loadXml( '../_assets/sample.xml' );
assert.isInstanceOf( CKEDITOR.xml, data );
assert.isNotNull( data.selectSingleNode( '//list/item' ), 'The loaded data doesn\'t match (null)' );
assert.isNotUndefined( data.selectSingleNode( '//list/item' ), 'The loaded data doesn\'t match (undefined)' );
},
test_loadXml_sync_404 : function()
{
var data = CKEDITOR.ajax.loadXml( '../_assets/404.xml' );
assert.isNull( data );
},
test_loadXml_async : function()
{
var testCase = this;
var callback = function( data )
{
testCase.resume( function()
{
assert.isInstanceOf( CKEDITOR.xml, data );
assert.isNotNull( data.selectSingleNode( '//list/item' ), 'The loaded data doesn\'t match (null)' );
assert.isNotUndefined( data.selectSingleNode( '//list/item' ), 'The loaded data doesn\'t match (undefined)' );
} );
};
CKEDITOR.ajax.loadXml( '../_assets/sample.xml', callback );
this.wait();
},
test_loadXml_async_404 : function()
{
var testCase = this;
var callback = function( data )
{
testCase.resume( function()
{
assert.isNull( data );
} );
};
CKEDITOR.ajax.loadXml( '../_assets/404.xml', callback );
this.wait();
},
test_loadXml_sync_txt : function()
{
var data = CKEDITOR.ajax.loadXml( '../_assets/sample_xml.txt' );
assert.isInstanceOf( CKEDITOR.xml, data );
assert.isNotNull( data.selectSingleNode( '//list/item' ), 'The loaded data doesn\'t match (null)' );
assert.isNotUndefined( data.selectSingleNode( '//list/item' ), 'The loaded data doesn\'t match (undefined)' );
},
test_loadXml_async_txt : function()
{
var testCase = this;
var callback = function( data )
{
testCase.resume( function()
{
assert.isInstanceOf( CKEDITOR.xml, data );
assert.isNotNull( data.selectSingleNode( '//list/item' ), 'The loaded data doesn\'t match (null)' );
assert.isNotUndefined( data.selectSingleNode( '//list/item' ), 'The loaded data doesn\'t match (undefined)' );
} );
};
CKEDITOR.ajax.loadXml( '../_assets/sample_xml.txt', callback );
this.wait();
},
test_parseXml : function()
{
var data = new CKEDITOR.xml( '<?xml version="1.0" encoding="utf-8" ?><list><item id="test1" /><item id="test2" /></list>' );
assert.isInstanceOf( CKEDITOR.xml, data );
assert.isNotNull( data.selectSingleNode( '//list/item' ), 'The loaded data doesn\'t match (null)' );
assert.isNotUndefined( data.selectSingleNode( '//list/item' ), 'The loaded data doesn\'t match (undefined)' );
},
test_parseXml_nbsp : function()
{
var data = new CKEDITOR.xml( '<?xml version="1.0" encoding="utf-8" ?><list><item id="test1">&nbsp;</item><item id="test2" /></list>' );
assert.isInstanceOf( CKEDITOR.xml, data );
assert.isNotNull( data.selectSingleNode( '//list/item' ), 'The loaded data doesn\'t match (null)' );
assert.isNotUndefined( data.selectSingleNode( '//list/item' ), 'The loaded data doesn\'t match (undefined)' );
},
name : document.title
};
})() );
//]]>
</script>
</head>
<body>
</body>
</html>
@@ -1,160 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>CKEDITOR</title>
<link rel="stylesheet" type="text/css" href="../test.css" />
<script type="text/javascript" src="../../ckeditor.js"></script>
<script type="text/javascript" src="../test.js"></script>
<script type="text/javascript">
//<![CDATA[
// Clean up all instances been created on the page.
function removeAllInstances()
{
var allInstances = CKEDITOR.instances;
for( var i in allInstances )
{
CKEDITOR.remove( allInstances[ i ] );
}
}
CKEDITOR.test.addTestCase( (function()
{
// Local reference to the "assert" object.
var assert = CKEDITOR.test.assert;
return {
test_replaceClass : function()
{
// Asserts the default value.
assert.areSame( 'ckeditor', CKEDITOR.replaceClass );
},
test_replaceByClassEnabled : function()
{
// Asserts the default value.
assert.isTrue( CKEDITOR.replaceByClassEnabled );
},
test_replaceId : function()
{
CKEDITOR.replace( 'editor1' );
assert.isObject( CKEDITOR.instances.editor1, 'editor instance not found' );
assert.areSame( 'editor1', CKEDITOR.instances.editor1.name, 'instance name doesn\'t match' );
assert.areSame( document.getElementById( 'editor1' ), CKEDITOR.instances.editor1.element.$, 'instance element doesn\'t match' );
},
test_replaceName : function()
{
CKEDITOR.replace( 'editor2' );
assert.isObject( CKEDITOR.instances.editor2, 'editor instance not found' );
assert.areSame( 'editor2', CKEDITOR.instances.editor2.name, 'instance name doesn\'t match' );
assert.areSame( document.getElementsByName( 'editor2' )[0], CKEDITOR.instances.editor2.element.$, 'instance element doesn\'t match' );
},
test_replaceElement : function()
{
CKEDITOR.replace( document.getElementById( 'editor5' ) );
assert.isObject( CKEDITOR.instances.editor5, 'editor instance not found' );
assert.areSame( 'editor5', CKEDITOR.instances.editor5.name, 'instance name doesn\'t match' );
assert.areSame( document.getElementById( 'editor5' ), CKEDITOR.instances.editor5.element.$, 'instance element doesn\'t match' );
},
test_replaceError : function()
{
try
{
CKEDITOR.replace( 'error' );
}
catch ( e )
{
assert.areSame( '[CKEDITOR.editor.replace] The element with id or name "error" was not found.', e );
}
},
test_replaceAll_Class : function()
{
CKEDITOR.replaceAll( 'myclass' );
assert.isObject( CKEDITOR.instances.editor3, 'editor3 instance not found' );
assert.areSame( 'editor3', CKEDITOR.instances.editor3.name, 'editor3 instance name doesn\'t match' );
assert.areSame( document.getElementById( 'editor3' ), CKEDITOR.instances.editor3.element.$, 'editor3 instance element doesn\'t match' );
assert.isObject( CKEDITOR.instances.editor4, 'editor4 instance not found' );
assert.areSame( 'editor4', CKEDITOR.instances.editor4.name, 'editor4 instance name doesn\'t match' );
assert.areSame( document.getElementsByName( 'editor4' )[0], CKEDITOR.instances.editor4.element.$, 'editor4 instance element doesn\'t match' );
assert.isUndefined( CKEDITOR.instances.editor6, 'editor6 should be undefined' );
assert.isUndefined( CKEDITOR.instances.editor7, 'editor7 should be undefined' );
assert.isUndefined( CKEDITOR.instances.editor8, 'editor8 should be undefined' );
assert.isUndefined( CKEDITOR.instances.editor8, 'editor9 should be undefined' );
},
test_replaceAll_Function : function()
{
CKEDITOR.replaceAll( function( textarea )
{
return ( textarea.id != 'editor6' && textarea.id != 'editor8' );
} );
assert.isObject( CKEDITOR.instances.editor7, 'editor7 instance not found' );
assert.areSame( 'editor7', CKEDITOR.instances.editor7.name, 'editor7 instance name doesn\'t match' );
assert.areSame( document.getElementById( 'editor7' ), CKEDITOR.instances.editor7.element.$, 'editor7 instance element doesn\'t match' );
assert.isObject( CKEDITOR.instances.editor9, 'editor9 instance not found' );
assert.areSame( 'editor9', CKEDITOR.instances.editor9.name, 'editor9 instance name doesn\'t match' );
assert.areSame( document.getElementById( 'editor9' ), CKEDITOR.instances.editor9.element.$, 'editor9 instance element doesn\'t match' );
assert.isUndefined( CKEDITOR.instances.editor6, 'editor6 should be undefined' );
assert.isUndefined( CKEDITOR.instances.editor8, 'editor8 should be undefined' );
},
test_replaceAll : function()
{
CKEDITOR.replaceAll();
assert.isObject( CKEDITOR.instances.editor6, 'editor6 instance not found' );
assert.areSame( 'editor6', CKEDITOR.instances.editor6.name, 'editor6 instance name doesn\'t match' );
assert.areSame( document.getElementById( 'editor6' ), CKEDITOR.instances.editor6.element.$, 'editor6 instance element doesn\'t match' );
assert.isObject( CKEDITOR.instances.editor8, 'editor8 editor instance not found' );
assert.areSame( 'editor8', CKEDITOR.instances.editor8.name, 'editor8 instance name doesn\'t match' );
assert.areSame( document.getElementById( 'editor8' ), CKEDITOR.instances.editor8.element.$, 'editor8 instance element doesn\'t match' );
},
test_add : function()
{
var textarea = CKEDITOR.dom.element.createFromHtml( '<textarea id="test_add">&lt;p&gt;test_add&lt;/p&gt;<\/textarea>' );
textarea.appendTo( new CKEDITOR.dom.element( document.body ) );
var editor = new CKEDITOR.editor( {}, textarea, CKEDITOR.ELEMENT_MODE_REPLACE );
CKEDITOR.add( editor );
assert.areSame( editor, CKEDITOR.instances.test_add );
},
setUp : function()
{
removeAllInstances();
},
name : document.title
};
})() );
//]]>
</script>
</head>
<body>
<textarea id="editor1" cols="80" rows="10"></textarea>
<textarea name="editor2" cols="80" rows="10"></textarea>
<textarea id="editor3" name="editor3" class="myclass" cols="80" rows="10"></textarea>
<textarea name="editor4" class="myclass" cols="80" rows="10"></textarea>
<textarea id="editor5" cols="80" rows="10"></textarea>
<textarea id="editor6" cols="80" rows="10"></textarea>
<textarea id="editor7" cols="80" rows="10"></textarea>
<textarea id="editor8" cols="80" rows="10"></textarea>
<textarea id="editor9" cols="80" rows="10"></textarea>
</body>
</html>
@@ -1,126 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>CKEDITOR.dom.document</title>
<link rel="stylesheet" type="text/css" href="../../test.css" />
<script type="text/javascript" src="../../../ckeditor.js"></script>
<script type="text/javascript" src="../../test.js"></script>
<script type="text/javascript">
//<![CDATA[
CKEDITOR.test.addTestCase( (function()
{
// Local reference to the "assert" object.
var assert = CKEDITOR.test.assert,
arrayAssert = YAHOO.util.ArrayAssert;
return {
test_$ : function()
{
var doc = new CKEDITOR.dom.document( document );
assert.areSame( document, doc.$ );
},
test_appendStyleSheet : function()
{
var cssUrl = CKEDITOR.basePath + '_tests/';
cssUrl += '_assets/sample.css';
var doc = new CKEDITOR.dom.document( document );
doc.appendStyleSheet( cssUrl );
var links = document.getElementsByTagName( 'link' );
for ( var i = 0 ; i < links.length ; i++ )
{
if ( links[i].href == cssUrl )
return ;
}
assert.fail( 'The link element was not found' );
},
test_equals1 : function()
{
// Actually checks the real need for equals().
var doc1 = new CKEDITOR.dom.document( document );
assert.isFalse( doc1 == document );
},
test_equals2 : function()
{
// Actually checks the real need for equals().
var doc1 = new CKEDITOR.dom.document( document );
var doc2 = new CKEDITOR.dom.document( document );
assert.isFalse( doc1 == doc2, 'doc1 == doc2' );
},
test_equals3 : function()
{
var doc1 = new CKEDITOR.dom.document( document );
var doc2 = new CKEDITOR.dom.document( document );
assert.isTrue( doc1.equals( doc2 ), 'doc1.equals( doc2 )' );
assert.isTrue( doc2.equals( doc1 ), 'doc2.equals( doc1 )' );
},
test_getById1 : function()
{
var doc = new CKEDITOR.dom.document( document );
var element = doc.getById( 'test1' );
assert.areSame( document.getElementById( 'test1' ), element.$ );
},
test_getById2 : function()
{
var doc = new CKEDITOR.dom.document( document );
var element = doc.getById( 'test_invalid' );
assert.isNull( element );
},
test_getHead : function()
{
var doc = new CKEDITOR.dom.document( document );
assert.areSame( document.getElementsByTagName( 'head' )[0], doc.getHead().$ );
},
test_getBody : function()
{
var doc = new CKEDITOR.dom.document( document );
assert.areSame( document.body, doc.getBody().$, '1st call failed' );
assert.areSame( document.body, doc.getBody().$, '2nd call failed' );
},
test_createText : function()
{
var doc = new CKEDITOR.dom.document( document ), contentText = 'text content';
var textNode = doc.createText( contentText );
assert.areSame( contentText, textNode.getText(),
'Create text node content doesn\'t match.' );
},
test_getByAddress1 : function()
{
var doc = new CKEDITOR.dom.document( document );
var node = doc.getByAddress( [ 1, 1, 0, 1, 0, 0 ] );
assert.areSame( 'target', node.getText(),
'Addressing target doesn\'t match.' );
},
test_getElementsByTag : function()
{
var nodeList = new CKEDITOR.dom.document( document ).getElementsByTag( 'span' ),
results = [];
for( var i = 0; i < nodeList.count(); i++ ){
results.push( nodeList.getItem( i ).$ );
}
arrayAssert.itemsAreEqual( results, document.getElementsByTagName( 'span' ) );
},
name : document.title
};
})() );
//]]>
</script>
</head>
<body><div id="test1"></div><div><p>text<span><b id="addressTarget1">target</b>text</span>text</p></div><span ><b id="addressTarget2">target</b></span></body>
</html>
@@ -1,292 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>CKEDITOR.dom.documentFragment</title>
<link rel="stylesheet" type="text/css" href="../../test.css" />
<script type="text/javascript" src="../../../ckeditor.js"></script>
<script type="text/javascript" src="../../test.js"></script>
<script type="text/javascript">
//<![CDATA[
var tc;
CKEDITOR.test.addTestCase( tc = ( function()
{
// Local reference to the "assert" object.
var assert = YAHOO.util.Assert,
doc = CKEDITOR.document;
return {
test_appendTo : function()
{
var frag =
new CKEDITOR.dom.documentFragment( CKEDITOR.document );
var inner =
new CKEDITOR.dom.element( 'b' );
frag.append( inner );
var container = CKEDITOR.document.getById( 'fragmentContainer1' );
frag.appendTo( container );
assert.isTrue( container.getLast().equals( inner ) );
},
test_append : function()
{
var frag =
new CKEDITOR.dom.documentFragment( CKEDITOR.document );
var inner =
new CKEDITOR.dom.element( 'b' );
frag.append( inner );
var container = CKEDITOR.document.getById( 'fragmentContainer3' );
container.append( frag );
assert.isTrue( container.getLast().equals( inner ) );
},
test_getFirst : function()
{
var frag =
new CKEDITOR.dom.documentFragment( CKEDITOR.document );
var inner =
new CKEDITOR.dom.element( 'b' );
frag.append( inner );
var first = frag.getFirst();
assert.isTrue( first.equals( inner ) );
},
test_getLast : function()
{
var frag =
new CKEDITOR.dom.documentFragment( CKEDITOR.document );
var inner =
new CKEDITOR.dom.element( 'b' ), lastInner = inner.clone();
frag.append( inner );
frag.append( lastInner );
var last = frag.getLast();
assert.isTrue( last.equals( lastInner ) );
},
test_moveChildren : function()
{
var frag =
new CKEDITOR.dom.documentFragment( CKEDITOR.document );
var inner1 = new CKEDITOR.dom.element( 'b' ),
inner2 = new CKEDITOR.dom.element( 'i' );
frag.append( inner1 );
frag.append( inner2 );
// Move to element
var element = new CKEDITOR.dom.element( 'span' );
frag.moveChildren( element, true );
assert.isTrue( element.getFirst().equals( inner1 ) );
assert.isTrue( element.getLast().equals( inner2 ) );
},
test_moveChildren2 : function()
{
var frag =
new CKEDITOR.dom.documentFragment( CKEDITOR.document );
var inner1 = new CKEDITOR.dom.element( 'b' ),
inner2 = new CKEDITOR.dom.element( 'i' );
frag.append( inner1 );
frag.append( inner2 );
// Move to fragment
var anotherFrag = new CKEDITOR.dom.documentFragment(
CKEDITOR.document );
frag.moveChildren( anotherFrag, true );
assert.isTrue( anotherFrag.getFirst().equals( inner1 ) );
assert.isTrue( anotherFrag.getLast().equals( inner2 ) );
},
test_appendText : function()
{
var element = new CKEDITOR.dom.element( 'script' );
element.appendText( 'Test appendText' );
assert.areEqual( 'Test appendText', element.$.text );
},
test_ltrim : function()
{
// IE need special treatement to setup this tc, see
// next tc for this.
if ( CKEDITOR.env.ie )
return;
var element = CKEDITOR.dom.element.createFromHtml(
'<div id="trimTarget">\t\ntext\t\n</div>'
);
var frag =
new CKEDITOR.dom.documentFragment( CKEDITOR.document );
element.moveChildren( frag );
frag.ltrim();
var ct = new CKEDITOR.dom.element( 'div' );
ct.append( frag );
assert.areSame( 'text\t\n', ct.getText() );
},
test_ltrim_ie : function()
{
if ( !CKEDITOR.env.ie )
return;
// IE dom operation will trim preceding empty text,
// here we use 'splitText' way to create leading spaces
// instead for testing.
var emptyTextNode = doc.createText( '@ \ttext\t ');
var frag =
new CKEDITOR.dom.documentFragment( doc );
frag.append( emptyTextNode );
frag.getFirst().$.splitText( 1 );
frag.getFirst().remove();
frag.ltrim();
var ct = new CKEDITOR.dom.element( 'div' );
ct.append( frag );
assert.areSame( 'text\t ', ct.getText() );
},
test_rtrim : function()
{
if ( CKEDITOR.env.ie )
return;
var element = CKEDITOR.dom.element.createFromHtml(
'<div id="trimTarget">\t\ntext\t\n</div>'
);
var frag =
new CKEDITOR.dom.documentFragment( CKEDITOR.document );
element.moveChildren( frag );
frag.rtrim();
var ct = new CKEDITOR.dom.element( 'div' );
ct.append( frag );
assert.areSame( '\t\ntext', ct.getText() );
},
/**
*@see test_ltrim_ie
*/
test_rtrim_ie : function()
{
if ( !CKEDITOR.env.ie )
return;
var emptyTextNode = doc.createText( '@ \ttext\t ');
var frag =
new CKEDITOR.dom.documentFragment( doc );
frag.append( emptyTextNode );
frag.getFirst().$.splitText( 1 );
frag.getFirst().remove();
frag.rtrim();
var ct = new CKEDITOR.dom.element( 'div' );
ct.append( frag );
assert.areSame( ' \ttext', ct.getText() );
},
test_trim : function()
{
if ( !CKEDITOR.env.ie )
return;
var element = CKEDITOR.dom.element.createFromHtml(
'<div id="trimTarget">\t\ntext\t\n</div>'
);
var frag =
new CKEDITOR.dom.documentFragment( CKEDITOR.document );
element.moveChildren( frag );
frag.trim();
var ct = new CKEDITOR.dom.element( 'div' );
ct.append( frag );
assert.areSame( 'text', ct.getText() );
},
/**
*@see test_ltrim_ie
*/
test_trim_ie : function()
{
if ( !CKEDITOR.env.ie )
return;
var emptyTextNode = doc.createText( '@ \t\ntext\t\n ');
var frag =
new CKEDITOR.dom.documentFragment( doc );
frag.append( emptyTextNode );
frag.getFirst().$.splitText( 1 );
frag.getFirst().remove();
frag.trim();
var ct = new CKEDITOR.dom.element( 'div' );
ct.append( frag );
assert.areSame( 'text', ct.getText() );
},
test_insertAfter : function()
{
var frag =
new CKEDITOR.dom.documentFragment( CKEDITOR.document );
var inner = new CKEDITOR.dom.element( 'b' );
frag.append( inner );
var container = CKEDITOR.document.getById( 'fragmentContainer2' );
var sibling = CKEDITOR.document.getById( 'fragmentSibling1' );
frag.insertAfterNode( sibling );
assert.isTrue( container.getLast().equals( inner ) );
},
test_getChildCount : function()
{
var frag =
new CKEDITOR.dom.documentFragment( CKEDITOR.document );
var inner1 = new CKEDITOR.dom.element( 'b' ),
inner2 = new CKEDITOR.dom.element( 'i' );
frag.append( inner1 );
frag.append( inner2 );
assert.areEqual( 2, frag.getChildCount() );
},
test_getChild : function()
{
var frag =
new CKEDITOR.dom.documentFragment( CKEDITOR.document );
var inner1 = new CKEDITOR.dom.element( 'b' ),
inner2 = new CKEDITOR.dom.element( 'i' );
frag.append( inner1 );
frag.append( inner2 );
assert.isTrue( inner2.equals( frag.getChild( 1 ) ) );
},
test_getChildren : function()
{
var frag =
new CKEDITOR.dom.documentFragment( CKEDITOR.document );
var inner1 = new CKEDITOR.dom.element( 'b' ),
inner2 = new CKEDITOR.dom.element( 'i' );
frag.append( inner1 );
frag.append( inner2 );
var childNodesList = frag.getChildren();
assert.areEqual( 2, childNodesList.count() );
assert.isTrue( inner2.equals( childNodesList.getItem( 1 ) ) );
},
test_getDocument : function()
{
var doc = CKEDITOR.document,
innerDoc = new CKEDITOR.dom.document(
doc.getById( 'innerFrame' ).$.contentWindow.document );
var frag1 = new CKEDITOR.dom.documentFragment( doc ),
frag2 = new CKEDITOR.dom.documentFragment( innerDoc );
assert.isTrue( doc.equals( frag1.getDocument() ) );
assert.isTrue( innerDoc.equals( frag2.getDocument() ) );
},
name :document.title
};
} )() );
//window.onload = tc.test_rtrim_ie;
//]]>
</script>
</head>
<body>
<div id="fragmentContainer1"></div>
<div id="fragmentContainer2"><div id="fragmentSibling1"></div></div>
<div id="fragmentContainer3"></div>
<iframe id="innerFrame" name="innerFrame" src="about:blank"></iframe>
</body>
</html>
@@ -1,637 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>CKEDITOR.dom.element</title>
<link rel="stylesheet" type="text/css" href="../../test.css" />
<script type="text/javascript" src="../../../ckeditor.js"></script>
<script type="text/javascript" src="../../test.js"></script>
<script type="text/javascript">
//<![CDATA[
CKEDITOR.test.addTestCase( (function()
{
// Local reference to the "assert" object.
var assert = CKEDITOR.test.assert;
var getInnerHtml = CKEDITOR.test.getInnerHtml;
return {
test_$ : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'test1' ) );
assert.areSame( document.getElementById( 'test1' ), element.$ );
},
test_getId1 : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'test1' ) );
assert.areEqual( 'test1', element.getId() );
},
test_getId2 : function()
{
var element = new CKEDITOR.dom.element( document.getElementsByTagName( 'div' )[0] );
assert.isNull( element.getId() );
},
test_getNameAtt1 : function()
{
var element = new CKEDITOR.dom.element( document.getElementsByName( 'named1' )[0] );
assert.areEqual( 'named1', element.getNameAtt() );
},
test_getNameAtt2 : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'test1' ) );
assert.isNull( element.getNameAtt() );
},
test_getName : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'test1' ) );
assert.areEqual( 'textarea', element.getName(), 'First call' );
assert.areEqual( 'textarea', element.getName(), 'Second call' );
},
test_hide : function()
{
var nativeElement = document.getElementById( 'test1' );
nativeElement.style.display = '';
var element = new CKEDITOR.dom.element( nativeElement );
element.hide();
assert.areEqual( 'none', nativeElement.style.display );
},
test_show : function()
{
var nativeElement = document.getElementById( 'test1' );
nativeElement.style.display = '';
var element = new CKEDITOR.dom.element( nativeElement );
element.show();
assert.areEqual( '', nativeElement.style.display );
},
test_createFromHtml : function()
{
var element = CKEDITOR.dom.element.createFromHtml( '<p>My test</p>' );
assert.areEqual( 'p', element.getName(), 'element name doesn\'t match' );
assert.areEqual( 'My test', element.$.innerHTML, 'the innerHTML doesn\'t match' );
},
test_createFromHtml2 : function()
{
var element = new CKEDITOR.dom.element.createFromHtml( '<div><x:x><p>Test</p></div>' );
assert.areNotEqual( 'Test', element.getChild( 0, 0 ).innerHTML );
},
test_append1 : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'append' ) );
element.append( new CKEDITOR.dom.element( 'b' ) );
assert.areEqual( 'b', document.getElementById( 'append' ).firstChild.nodeName.toLowerCase() );
},
test_append2 : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'append' ) );
element.append( 'i' );
assert.areEqual( 'i', document.getElementById( 'append' ).lastChild.nodeName.toLowerCase() );
},
test_appendText1 : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'append' ) );
element.setHtml( '' );
element.appendText( 'Test appendText' );
assert.areEqual( 'Test appendText', document.getElementById( 'append' ).innerHTML );
},
test_appendText2 : function()
{
var element = new CKEDITOR.dom.element( 'script' );
element.appendText( 'Test appendText' );
assert.areEqual( 'Test appendText', element.$.text );
},
test_setHtml : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'append' ) );
element.setHtml( '<b>Test</b>' );
assert.areEqual( '<b>test</b>', document.getElementById( 'append' ).innerHTML.toLowerCase(), 'First call doesn\'t match' );
element.setHtml( 'Another test' );
assert.areEqual( 'Another test', document.getElementById( 'append' ).innerHTML, 'Second call doesn\'t match' );
},
test_getDocument1 : function()
{
var element = new CKEDITOR.dom.element( 'div' );
assert.areSame( document, element.getDocument().$, 'First call' );
assert.areSame( document, element.getDocument().$, 'Second call' );
},
test_getDocument2 : function()
{
var element = new CKEDITOR.dom.element( document.body );
assert.areSame( document, element.getDocument().$, 'First call' );
assert.areSame( document, element.getDocument().$, 'Second call' );
},
test_getFirst1 : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'append' ) );
element.setHtml( '<b>Test</b>' );
var first = element.getFirst();
assert.areSame( 'b', first.getName() );
},
test_getFirst2 : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'append' ) );
element.setHtml( 'Test' );
var first = element.getFirst();
assert.areSame( 'Test', first.$.nodeValue );
},
test_getFirst3 : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'append' ) );
element.setHtml( '' );
var first = element.getFirst();
assert.isNull( first );
},
test_setAttribute1 : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'test1' ) );
element.setAttribute( 'class', 'Test' );
assert.areSame( 'Test', document.getElementById( 'test1' ).className );
},
test_setAttribute2 : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'test1' ) );
element.setAttribute( 'style', 'position: absolute;' );
assert.areEqual( 'position: absolute;', CKEDITOR.test.getAttribute( element, 'style' ) );
},
test_setAttribute3 : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'test1' ) );
element.setAttribute( 'name', 'TestName' );
assert.areEqual( 'TestName', document.getElementById( 'test1' ).name );
},
test_setAttribute4 : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'test1' ) );
element.setAttribute( 'rows', 5 );
assert.areEqual( 5, document.getElementById( 'test1' ).rows );
},
test_setAttributes : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'test2' ) );
element.setAttributes({
'class' : 'Test',
'style' : 'position: absolute;',
'name' : 'TestName',
'rows' : 5 });
assert.areSame( 'Test', document.getElementById( 'test1' ).className, 'class is wrong' );
assert.areEqual( 'position: absolute;', CKEDITOR.test.getAttribute( element, 'style'), 'style is wrong' );
assert.areEqual( 'TestName', document.getElementById( 'test1' ).name, 'name is wrong' );
assert.areEqual( 5, document.getElementById( 'test1' ).rows, 'rows is wrong' );
},
test_setStyle1 : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'setStyle' ) );
element.setStyle( 'position', 'absolute' );
assert.areEqual( 'absolute', document.getElementById( 'setStyle' ).style.position );
},
test_setStyle2 : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'setStyle' ) );
element.setStyle( 'float', 'right' );
assert.areEqual( 'right', document.getElementById( 'setStyle' ).style.cssFloat );
},
test_setStyles : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'setStyle' ) );
element.setStyles({
'position' : 'absolute',
'float' : 'right'
});
assert.areEqual( 'absolute', document.getElementById( 'setStyle' ).style.position );
assert.areEqual( 'right', document.getElementById( 'setStyle' ).style.cssFloat );
},
test_setText1 : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'setText' ) );
element.setText( 'A & B' );
assert.areSame( 'A &amp; B', document.getElementById( 'setText' ).innerHTML );
},
test_setText2 : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'setText' ) );
element.setText( 'C & D' );
assert.areSame( 'C &amp; D', document.getElementById( 'setText' ).innerHTML );
},
test_addClass1 : function()
{
var element = new CKEDITOR.dom.element( 'div' );
element.addClass( 'classA' );
assert.areSame( 'classA', element.$.className );
},
test_addClass2 : function()
{
var element = new CKEDITOR.dom.element( 'div' );
element.addClass( 'classA' );
element.addClass( 'classA' );
assert.areSame( 'classA', element.$.className );
},
test_addClass3 : function()
{
var element = new CKEDITOR.dom.element( 'div' );
element.addClass( 'classA' );
element.addClass( 'classB' );
element.addClass( 'classC' );
assert.areSame( 'classA classB classC', element.$.className );
},
test_addClass4 : function()
{
var element = new CKEDITOR.dom.element( 'div' );
element.addClass( 'classA' );
element.addClass( 'classB' );
element.addClass( 'classC' );
element.addClass( 'classA' );
element.addClass( 'classB' );
element.addClass( 'classC' );
assert.areSame( 'classA classB classC', element.$.className );
},
test_removeClass1 : function()
{
document.getElementById( 'removeClass' ).innerHTML = '';
var element = CKEDITOR.dom.element.createFromHtml( '<div class="classA"></div>' );
element.appendTo( new CKEDITOR.dom.element( document.getElementById( 'removeClass' ) ) );
assert.areSame( '<div class="classa"></div>', getInnerHtml( 'removeClass' ) );
element.removeClass( 'classA' );
assert.areSame( '<div></div>', getInnerHtml( 'removeClass' ) );
},
test_removeClass2 : function()
{
document.getElementById( 'removeClass' ).innerHTML = '';
var element = CKEDITOR.dom.element.createFromHtml( '<div class="classA classB classC classD"></div>' );
element.appendTo( new CKEDITOR.dom.element( document.getElementById( 'removeClass' ) ) );
assert.areSame( '<div class="classa classb classc classd"></div>', getInnerHtml( 'removeClass' ) );
element.removeClass( 'classA' );
assert.areSame( '<div class="classb classc classd"></div>', getInnerHtml( 'removeClass' ) );
element.removeClass( 'classC' );
assert.areSame( '<div class="classb classd"></div>', getInnerHtml( 'removeClass' ) );
element.removeClass( 'classD' );
assert.areSame( '<div class="classb"></div>', getInnerHtml( 'removeClass' ) );
element.removeClass( 'classB' );
assert.areSame( '<div></div>', getInnerHtml( 'removeClass' ) );
},
test_removeClass3 : function()
{
document.getElementById( 'removeClass' ).innerHTML = '';
var element = CKEDITOR.dom.element.createFromHtml( '<div class="classA classB"></div>' );
element.appendTo( new CKEDITOR.dom.element( document.getElementById( 'removeClass' ) ) );
assert.areSame( '<div class="classa classb"></div>', getInnerHtml( 'removeClass' ) );
element.removeClass( 'classXXX' );
assert.areSame( '<div class="classa classb"></div>', getInnerHtml( 'removeClass' ) );
element.removeClass( 'classB' );
assert.areSame( '<div class="classa"></div>', getInnerHtml( 'removeClass' ) );
element.removeClass( 'classYYY' );
assert.areSame( '<div class="classa"></div>', getInnerHtml( 'removeClass' ) );
},
test_removeAttribute1 : function()
{
document.getElementById( 'removeClass' ).innerHTML = '';
var element = CKEDITOR.dom.element.createFromHtml( '<div class="classA"></div>' );
element.appendTo( new CKEDITOR.dom.element( document.getElementById( 'removeClass' ) ) );
element.removeAttribute( 'class' );
assert.areSame( '<div></div>', getInnerHtml( 'removeClass' ) );
},
test_removeAttribute2 : function()
{
document.getElementById( 'removeClass' ).innerHTML = '';
var element = CKEDITOR.dom.element.createFromHtml( '<div style="position:absolute"></div>' );
element.appendTo( new CKEDITOR.dom.element( document.getElementById( 'removeClass' ) ) );
element.removeAttribute( 'style' );
assert.areSame( '<div></div>', getInnerHtml( 'removeClass' ) );
},
test_removeAttribute3 : function()
{
document.getElementById( 'removeClass' ).innerHTML = '';
var element = CKEDITOR.dom.element.createFromHtml( '<div title="Test"></div>' );
element.appendTo( new CKEDITOR.dom.element( document.getElementById( 'removeClass' ) ) );
element.removeAttribute( 'title' );
assert.areSame( '<div></div>', getInnerHtml( 'removeClass' ) );
},
test_remove : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'removeInner' ) );
element.remove();
assert.areSame( '', getInnerHtml( 'removeOuter' ) );
},
test_getAttribute_tabindex1 : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'tabIndex10' ) );
assert.areEqual( 10, CKEDITOR.test.getAttribute( element, 'tabindex' ) );
},
test_getAttribute_tabindex2 : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'tabIndexDef' ) );
assert.isNull( CKEDITOR.test.getAttribute( element, 'tabindex' ) );
},
test_getAttribute_tabindex3 : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'tabIndexInputDef' ) );
assert.isNull( CKEDITOR.test.getAttribute( element, 'tabindex' ) );
},
test_getAttribute_tabindex4 : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'tabIndexInput20' ) );
assert.areEqual( 20, CKEDITOR.test.getAttribute( element, 'tabindex' ) );
},
test_getAttribute_tabindex5 : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'tabIndexScriptDef' ) );
assert.areEqual( null, CKEDITOR.test.getAttribute( element, 'tabindex' ) );
},
/**
* Test getAttribute and getAttribute will ingore '_cke_expando' attribute.
*/
test_getAttribute_ignoreExpandoAttributes : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'testExpandoAttributes' ) );
assert.areEqual( 1, CKEDITOR.test.getAttribute( element, 'tabindex' ), 'tabindex is wrong' );
element.removeAttribute( 'tabindex' );
assert.areEqual( 'hasExpando', CKEDITOR.test.getAttribute( element, 'class' ), 'class is wrong' );
element.removeAttribute( 'class' );
assert.areEqual( 'float: right;', CKEDITOR.test.getAttribute( element, 'style' ) );
element.removeAttribute( 'style' );
element.removeAttribute( 'id' );
assert.isFalse( element.hasAttributes(), 'hasAttributes should be false' );
},
test_getTabIndex1 : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'tabIndex10' ) );
assert.areSame( 10, element.getTabIndex() );
},
test_getTabIndex2 : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'tabIndexDef' ) );
assert.areSame( -1, element.getTabIndex() );
},
test_getTabIndex3 : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'tabIndexInputDef' ) );
assert.areSame( 0, element.getTabIndex() );
},
test_getTabIndex4 : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'tabIndexInput20' ) );
assert.areSame( 20, element.getTabIndex() );
},
test_getTabIndex5 : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'tabIndexScriptDef' ) );
assert.areSame( -1, element.getTabIndex() );
},
test_private1 : function()
{
var a = new CKEDITOR.dom.element( document.getElementById( 'test1' ) );
var b = new CKEDITOR.dom.element( document.getElementById( 'test1' ) );
assert.areSame( a.getPrivate(), b.getPrivate() );
},
test_private2 : function()
{
var a = new CKEDITOR.dom.element( document.getElementById( 'test1' ) );
var b = new CKEDITOR.dom.element( document.getElementById( 'test2' ) );
assert.areNotSame( a.getPrivate(), b.getPrivate() );
},
test_getText1 : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'getText' ) );
// IE gives us a different result, which is ok for us (see code comments).
if ( CKEDITOR.env.ie )
assert.areSame( 'Some \nsample text for testing', element.getText().replace( /\r\n|\r/g, '\n' ) );
else
assert.areSame( 'Some sample text for testing', element.getText() );
},
test_getText2 : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'getText2' ).getElementsByTagName( 'b' )[0] );
assert.areSame( ' ', element.getText() );
},
test_getText3 : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'getText3' ) );
// IE gives us a different result, which is ok for us (see code comments).
if ( CKEDITOR.env.ie )
assert.areSame( 'A B', element.getText() );
else
assert.areSame( 'A\nB', element.getText().replace( /\r\n|\r/g, '\n' ) );
},
test_hasAttributes1 : function()
{
var element = new CKEDITOR.dom.element( document.getElementsByTagName( 'big' )[0] );
assert.isFalse( element.hasAttributes() );
},
test_hasAttributes2 : function()
{
var element = new CKEDITOR.dom.element( document.getElementsByTagName( 'small' )[0] );
assert.isTrue( element.hasAttributes() );
},
/**
* Test detecting of 'class' attribute in IE6/7.
*/
test_hasAttributes_4075 : function()
{
if ( !CKEDITOR.env.ie && ( CKEDITOR.env.ie7Compat || CKEDITOR.env.ie6Compat ) )
return;
var element = new CKEDITOR.dom.element( 'span' );
element.setAttribute( 'class', 'value' );
assert.isTrue( element.hasAttributes(), 'Failed to detect "class" attribute existence.' );
},
test_getDocumentPosition : function()
{
// Assign the page location of the element.
YAHOO.util.Dom.setXY('DocPositionTarget', [ 350, 450 ] );
var pos = CKEDITOR.document.getById( 'DocPositionTarget' ).getDocumentPosition();
if ( !CKEDITOR.env.ie || CKEDITOR.env.ie8 )
{
assert.areEqual( 350, pos.x, 'Position coordinates:x relative to document doesn\'t match.' );
assert.areEqual( 450, pos.y, 'Position coordinates:y relative to document doesn\'t match.' );
}
else
{
assert.isTrue( pos.x == 348 || pos.x == 349, 'Position coordinates:x relative to document doesn\'t match.' );
assert.areEqual( 448, pos.y, 'Position coordinates:y relative to document doesn\'t match.' );
}
},
// Test get last non-spaces child node.
test_getLast : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'append' ) );
var span1 = new CKEDITOR.dom.element( 'span' );
element.append( span1 );
element.append( new CKEDITOR.dom.text( ' ' ) );
element.append( new CKEDITOR.dom.text( ' ' ) );
var last = element.getLast( CKEDITOR.dom.walker.whitespaces( true ) );
assert.areSame( span1.$, last.$ );
},
name : document.title
};
})() );
//]]>
</script>
<style type="text/css" media="screen">
#test-computed {
width:50%;
margin:auto;
padding:10px;
z-index: 2;
}
.scroll
{
overflow: visible;
}
.block1
{
width: 100%;
height: 100px;
background-color: blue;
text-align: center;
}
.block2
{
margin: auto;
width: 200px;
height: 200px;
background-color: green;
position : relative;
}
.block3
{
position: absolute;
float:right;
width: 300px;
height: 300px;
background-color: black;
}
.block4
{
position: absolute;
left: 50px;
right: 50px;
width: 400px;
height: 400px;
background-color: pink;
}
#DocPositionTarget
{
background-color: red;
}
</style>
</head>
<body>
<textarea id="test1" rows="10" cols="80"></textarea>
<textarea id="test2" rows="10" cols="80"></textarea>
<textarea name="named1" rows="10" cols="80"></textarea>
<div>Test</div>
<div id="append"></div>
<div id="setStyle"></div>
<div id="setText"></div>
<div id="removeClass"></div>
<div id="removeOuter"><b id="removeInner"></b></div>
<div id="tabIndex10" tabindex="10"></div>
<div id="testExpandoAttributes" _cke_expando ="1" class="hasExpando" tabindex="1" style="float:right"></div>
<div id="tabIndexDef"></div>
<input id="tabIndexInputDef" />
<input id="tabIndexInput20" tabindex="20" />
<script id="tabIndexScriptDef" type="text/javascript"></script>
<div id="getText">Some <br /><b> sample text</b> for <i> testing</i></div>
<div id="getText2">A<b> </b>B</div>
<div id="getText3">A
B</div>
<big>Test</big>
<small title="Testing">Test</small>
<div class="block1 scroll" id="block1"><div class="block2 scroll" id="block2"><div class="block3 scroll" id="block3"><div class="block4 scroll" id="block4"><div id="DocPositionTarget">target</div></div></div></div></div>
</body>
</html>
@@ -1,164 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>CKEDITOR.dom.node</title>
<link rel="stylesheet" type="text/css" href="../../test.css" />
<script type="text/javascript" src="../../../ckeditor.js"></script>
<script type="text/javascript" src="../../test.js"></script>
<script type="text/javascript">
//<![CDATA[
var tc;
CKEDITOR.test.addTestCase( tc = (function()
{
// Local reference to the "assert" object.
var assert = CKEDITOR.test.assert;
return {
test_getPosition1 : function()
{
var node1 = new CKEDITOR.dom.node( document.getElementsByTagName( 'h1' )[0] );
var node2 = new CKEDITOR.dom.node( document.getElementsByTagName( 'p' )[0] );
assert.areSame( CKEDITOR.POSITION_PRECEDING, node1.getPosition( node2 ) );
},
test_getPosition2 : function()
{
var node1 = new CKEDITOR.dom.node( document.getElementsByTagName( 'h1' )[0] );
var node2 = new CKEDITOR.dom.node( document.getElementsByTagName( 'p' )[0] );
assert.areSame( CKEDITOR.POSITION_FOLLOWING, node2.getPosition( node1 ) );
},
test_getPosition3 : function()
{
var node1 = new CKEDITOR.dom.node( document.getElementsByTagName( 'p' )[0] );
var node2 = new CKEDITOR.dom.node( document.getElementsByTagName( 'b' )[0] );
assert.areSame( CKEDITOR.POSITION_CONTAINS + CKEDITOR.POSITION_PRECEDING, node1.getPosition( node2 ) );
},
test_getPosition4 : function()
{
var node1 = new CKEDITOR.dom.node( document.getElementsByTagName( 'p' )[0] );
var node2 = new CKEDITOR.dom.node( document.getElementsByTagName( 'b' )[0] );
assert.areSame( CKEDITOR.POSITION_IS_CONTAINED + CKEDITOR.POSITION_FOLLOWING, node2.getPosition( node1 ) );
},
test_getPosition5 : function()
{
var node1 = new CKEDITOR.dom.node( document.getElementsByTagName( 'div' )[0] );
var node2 = new CKEDITOR.dom.node( document.getElementsByTagName( 'div' )[0] );
assert.areSame( CKEDITOR.POSITION_IDENTICAL, node1.getPosition( node2 ) );
},
test_getPosition6 : function()
{
var node1 = new CKEDITOR.dom.node( document.getElementsByTagName( 'h1' )[0] );
var node2 = new CKEDITOR.dom.node( document.getElementsByTagName( 'h1' )[0].firstChild );
assert.areSame( CKEDITOR.POSITION_CONTAINS + CKEDITOR.POSITION_PRECEDING, node1.getPosition( node2 ) );
},
test_getPosition7 : function()
{
var node1 = new CKEDITOR.dom.node( document.getElementsByTagName( 'h1' )[0] );
var node2 = new CKEDITOR.dom.node( document.getElementsByTagName( 'h1' )[0].firstChild );
assert.areSame( CKEDITOR.POSITION_IS_CONTAINED + CKEDITOR.POSITION_FOLLOWING, node2.getPosition( node1 ) );
},
test_getPosition8 : function()
{
var node1 = new CKEDITOR.dom.node( document.getElementsByTagName( 'h1' )[0].firstChild );
var node2 = new CKEDITOR.dom.node( document.getElementsByTagName( 'b' )[0].firstChild );
assert.areSame( CKEDITOR.POSITION_PRECEDING, node1.getPosition( node2 ) );
},
test_getPosition9 : function()
{
var node1 = new CKEDITOR.dom.node( document.getElementsByTagName( 'h1' )[0].firstChild );
var node2 = new CKEDITOR.dom.node( document.getElementsByTagName( 'b' )[0].firstChild );
assert.areSame( CKEDITOR.POSITION_FOLLOWING, node2.getPosition( node1 ) );
},
test_getPosition10 : function()
{
var node1 = new CKEDITOR.dom.node( document.getElementsByTagName( 'b' )[0] );
var node2 = new CKEDITOR.dom.node( document.getElementsByTagName( 'i' )[0] );
assert.areSame( CKEDITOR.POSITION_PRECEDING, node1.getPosition( node2 ) );
},
test_getPosition11 : function()
{
var node1 = new CKEDITOR.dom.node( document.getElementsByTagName( 'b' )[0] );
var node2 = new CKEDITOR.dom.node( document.getElementsByTagName( 'i' )[0] );
assert.areSame( CKEDITOR.POSITION_FOLLOWING, node2.getPosition( node1 ) );
},
/**
* Test 'preceding' position.
*/
test_getPosition_3240: function()
{
var node1 = new CKEDITOR.dom.node( document.getElementsByTagName( 'b' )[0].firstChild );
var node2 = new CKEDITOR.dom.node( document.getElementsByTagName( 'span' )[0].firstChild );
assert.areSame( CKEDITOR.POSITION_PRECEDING, node1.getPosition( node2 ) );
},
// Test get previous non-spaces node.
test_getPrevious : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'append' ) );
var span1 = new CKEDITOR.dom.element( 'span' );
element.append( span1 );
element.append( new CKEDITOR.dom.text( ' ' ) );
var span2 = new CKEDITOR.dom.element( 'span' );
element.append( span2 );
var previous = span2.getPrevious( CKEDITOR.dom.walker.whitespaces( true ) );
assert.areSame( span1.$, previous.$ );
},
// Test get next non-spaces node.
test_getNext : function()
{
var element = new CKEDITOR.dom.element( document.getElementById( 'append' ) );
var span1 = new CKEDITOR.dom.element( 'span' );
element.append( span1 );
element.append( new CKEDITOR.dom.text( ' ' ) );
var span2 = new CKEDITOR.dom.element( 'span' );
element.append( span2 );
var next = span1.getNext( CKEDITOR.dom.walker.whitespaces( true ) );
assert.areSame( span2.$, next.$ );
},
name : document.title
};
})() );
//window.onload = function()
//{
// var node1 = new CKEDITOR.dom.node( document.getElementsByTagName( 'h1' )[0] );
// var node2 = new CKEDITOR.dom.node( document.getElementsByTagName( 'p' )[0] );
//
// alert( node1.getPosition( node2 ) );
//};
//window.onload = tc.test_getPosition6;
//]]>
</script>
</head>
<body>
<div>
<h1>Title</h1>
<p><b>Sample</b> <i>Text</i></p>
</div>
<span>Another</span>
<p id="append"></p>
</body>
</html>
File diff suppressed because it is too large. Load diff
@@ -1,128 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>CKEDITOR.dom.text</title>
<link rel="stylesheet" type="text/css" href="../../test.css" />
<script type="text/javascript" src="../../../ckeditor.js"></script>
<script type="text/javascript" src="../../test.js"></script>
<script type="text/javascript">
//<![CDATA[
var tc;
CKEDITOR.test.addTestCase( tc = (function()
{
// Local reference to the "assert" object.
var assert = CKEDITOR.test.assert;
return {
test_substring1 : function()
{
var text = new CKEDITOR.dom.text( '0123456789' );
assert.areSame( '123', text.substring( 1, 4 ) );
},
test_substring2 : function()
{
var text = new CKEDITOR.dom.text( '0123456789' );
assert.areSame( '56789', text.substring( 5 ) );
},
test_substring3 : function()
{
var text = new CKEDITOR.dom.text( '0123456789' );
assert.areSame( '', text.substring( 1,1 ) );
},
test_substring4 : function()
{
var text = new CKEDITOR.dom.text( '0123456789' );
assert.areSame( '012', text.substring( -10,3 ) );
},
test_substring5 : function()
{
var text = new CKEDITOR.dom.text( '0123456789' );
assert.areSame( '89', text.substring( 8,100 ) );
},
test_substring6 : function()
{
var text = new CKEDITOR.dom.text( '0123456789' );
assert.areSame( '234', text.substring( 5,2 ) );
},
test_split1 : function()
{
var div = CKEDITOR.document.getById( 'playground' );
div.setHtml( '01234' );
var text = div.getFirst(),
next = text.split( 3 );
assert.areSame( '012', text.getText(), 'text.getText() is wrong' );
assert.areSame( '34', next.getText(), 'next.getText() is wrong' );
assert.areSame( div.$, next.$.parentNode, 'parentNode is wrong' );
assert.areSame( text.$, next.$.previousSibling, 'sibling is wrong' );
},
test_split2 : function()
{
var div = CKEDITOR.document.getById( 'playground' );
div.setHtml( '01234' );
var text = div.getFirst(),
next = text.split( 5 );
assert.areSame( '01234', text.getText(), 'text.getText() is wrong' );
assert.areSame( '', next.getText(), 'next.getText() is wrong' );
assert.areSame( div.$, next.$.parentNode, 'parentNode is wrong' );
assert.areSame( text.$, next.$.previousSibling, 'sibling is wrong' );
},
test_split3 : function()
{
var div = CKEDITOR.document.getById( 'playground' );
div.setHtml( '01234' );
var text = div.getFirst(),
next = text.split( 0 );
assert.areSame( '', text.getText(), 'text.getText() is wrong' );
assert.areSame( '01234', next.getText(), 'next.getText() is wrong' );
assert.areSame( div.$, next.$.parentNode, 'parentNode is wrong' );
assert.areSame( text.$, next.$.previousSibling, 'sibling is wrong' );
},
test_split_3436 : function()
{
var parent = CKEDITOR.document.getById( 'playground2' );
parent.setHtml( 'A B <b>C </b>D E' );
parent.getFirst().split( 2 ); // Right before "B"
parent.getChildren().getItem( 3 ).split( 2 ); // Right before "E"
assert.areSame( 5, parent.getChildren().count(), 'Child nodes num doesn\'t match after split' );
},
name : document.title
};
})() );
//window.onload = tc.test_split_3436;
//]]>
</script>
</head>
<body>
<p id="playground"></p>
<p id="playground2"></p>
</body>
</html>
@@ -1,340 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>CKEDITOR.dom.walker</title>
<link rel="stylesheet" type="text/css" href="../../test.css" />
<script type="text/javascript" src="../../../ckeditor.js"></script>
<script type="text/javascript" src="../../test.js"></script>
<script type="text/javascript">
//<![CDATA[
var tc;
CKEDITOR.test.addTestCase( tc = (function()
{
// Local reference to the "assert" object.
var assert = CKEDITOR.test.assert;
var doc = new CKEDITOR.dom.document( document );
function assertNodesList( wanted, nodes )
{
var simplifiedNodes = [];
for ( var i = 0 ; i < nodes.length ; i++ )
simplifiedNodes.push( nodes[i].type == CKEDITOR.NODE_TEXT ? nodes[i].getText() : ( '<' + nodes[i].getName() + '>' ) );
assert.areSame( wanted.toString(), simplifiedNodes.toString() );
}
return {
test_collapsed : function()
{
var node = doc.getById( 'playground' );
node.setHtml( '<p>Test</p>' );
var range = new CKEDITOR.dom.range( doc );
range.setStartAt( node.getFirst(), CKEDITOR.POSITION_AFTER_START );
range.collapse( true );
var walker = new CKEDITOR.dom.walker( range );
assert.isNull( walker.next() );
},
test_next_1 : function()
{
var node = doc.getById( 'playground' );
node.setHtml( '<p>This is <b>a <i>simple</i></b> test</p>' );
var range = new CKEDITOR.dom.range( doc );
range.selectNodeContents( node );
var walker = new CKEDITOR.dom.walker( range );
var nodes = [];
while ( ( node = walker.next() ) )
nodes.push( node );
assertNodesList( [ '<p>', 'This is ', '<b>', 'a ', '<i>', 'simple', ' test' ], nodes );
},
test_next_2 : function()
{
var node = doc.getById( 'playground' );
node.setHtml( '<p>This is <b>a <i>simple</i></b> test</p>' );
var range = new CKEDITOR.dom.range( doc );
range.setStartAt( node.getFirst(), CKEDITOR.POSITION_AFTER_START );
range.setEnd( node.getChild( [0,1,1,0] ), 2 );
var walker = new CKEDITOR.dom.walker( range );
var nodes = [];
while ( ( node = walker.next() ) )
nodes.push( node );
assertNodesList( [ 'This is ', '<b>', 'a ', '<i>', 'si' ], nodes );
},
test_next_3 : function()
{
var node = doc.getById( 'playground' );
node.setHtml( '<p>Test</p><h1>More</h1>' );
var range = new CKEDITOR.dom.range( doc );
range.setStartAt( node.getChild( 1 ), CKEDITOR.POSITION_BEFORE_START );
range.setEndAt( node.getChild( 1 ), CKEDITOR.POSITION_AFTER_START );
var walker = new CKEDITOR.dom.walker( range );
var nodes = [];
while ( ( node = walker.next() ) )
nodes.push( node );
assertNodesList( [ '<h1>' ], nodes );
},
test_next_4 : function()
{
var node = doc.getById( 'playground' );
node.setHtml( '<p>Test</p><h1>More</h1>' );
var range = new CKEDITOR.dom.range( doc );
range.setStartAt( node.getChild( 0 ), CKEDITOR.POSITION_BEFORE_END );
range.setEndAt( node.getChild( 0 ), CKEDITOR.POSITION_AFTER_END );
var walker = new CKEDITOR.dom.walker( range );
var nodes = [];
while ( ( node = walker.next() ) )
nodes.push( node );
assertNodesList( [], nodes );
},
test_next_5 : function()
{
var node = doc.getById( 'playground' );
node.setHtml( '<p>Test</p><h1>More</h1>' );
var range = new CKEDITOR.dom.range( doc );
range.setStartAt( node.getChild( 0 ), CKEDITOR.POSITION_BEFORE_END );
range.setEndAt( node.getChild( 1 ), CKEDITOR.POSITION_AFTER_START );
var walker = new CKEDITOR.dom.walker( range );
var nodes = [];
while ( ( node = walker.next() ) )
nodes.push( node );
assertNodesList( [ '<h1>' ], nodes );
},
test_previous_1 : function()
{
var node = doc.getById( 'playground' );
node.setHtml( '<p>This is <b>a <i>simple</i></b> test</p>' );
var range = new CKEDITOR.dom.range( doc );
range.selectNodeContents( node );
var walker = new CKEDITOR.dom.walker( range );
var nodes = [];
while ( ( node = walker.previous() ) )
nodes.push( node );
assertNodesList( [ '<p>', ' test', '<b>', '<i>', 'simple', 'a ', 'This is ' ], nodes );
},
test_previous_2 : function()
{
var node = doc.getById( 'playground' );
node.setHtml( '<p>This is <b>a <i>simple</i></b> test</p>' );
var range = new CKEDITOR.dom.range( doc );
range.setEnd( node.getChild( [0,0] ), 2 );
range.setEnd( node.getChild( [0,1,1,0] ), 2 );
var walker = new CKEDITOR.dom.walker( range );
var nodes = [];
while ( ( node = walker.previous() ) )
nodes.push( node );
assertNodesList( [ 'si', 'a ', 'is is ' ], nodes );
},
test_previous_3 : function()
{
var node = doc.getById( 'playground' );
node.setHtml( '<p>Test</p><h1>More</h1>' );
var range = new CKEDITOR.dom.range( doc );
range.setStartAt( node.getChild( 1 ), CKEDITOR.POSITION_BEFORE_START );
range.setEndAt( node.getChild( 1 ), CKEDITOR.POSITION_AFTER_START );
var walker = new CKEDITOR.dom.walker( range );
var nodes = [];
while ( ( node = walker.previous() ) )
nodes.push( node );
assertNodesList( [ '' ], nodes );
},
test_previous_4 : function()
{
var node = doc.getById( 'playground' );
node.setHtml( '<p>Test</p><h1>More</h1>' );
var range = new CKEDITOR.dom.range( doc );
range.setStartAt( node.getChild( 0 ), CKEDITOR.POSITION_BEFORE_END );
range.setEndAt( node.getChild( 0 ), CKEDITOR.POSITION_AFTER_END );
var walker = new CKEDITOR.dom.walker( range );
var nodes = [];
while ( ( node = walker.previous() ) )
nodes.push( node );
assertNodesList( [ '<p>' ], nodes );
},
test_previous_5 : function()
{
var node = doc.getById( 'playground' );
node.setHtml( '<p>Test</p><h1>More</h1>' );
var range = new CKEDITOR.dom.range( doc );
range.setStartAt( node.getChild( 0 ), CKEDITOR.POSITION_BEFORE_END );
range.setEndAt( node.getChild( 1 ), CKEDITOR.POSITION_AFTER_START );
var walker = new CKEDITOR.dom.walker( range );
var nodes = [];
while ( ( node = walker.previous() ) )
nodes.push( node );
assertNodesList( [ '<p>' ], nodes );
},
/**
* Test guard function is invoked on every move when iterating forward.
*/
test_guard_1 : function()
{
var node = doc.getById( 'playground' );
node.setHtml( '<p>This is <b>a <i>simple</i></b> test</p>' );
var range = new CKEDITOR.dom.range( doc );
range.selectNodeContents( node );
var walker = new CKEDITOR.dom.walker( range );
var nodes = [];
walker.guard = function( node )
{
nodes.push( node );
return true;
};
while ( ( node = walker.next() ) )
{ /*jsl:pass*/ }
assertNodesList( [ '<p>', 'This is ', '<b>', 'a ', '<i>', 'simple', '<i>', '<b>',' test' , '<p>' ], nodes );
},
/**
* Test guard function is invoked on every move when iterating backward.
*/
test_guard_2 : function()
{
var node = doc.getById( 'playground' );
node.setHtml( '<p>This is <b>a <i>simple</i></b> test</p>' );
var range = new CKEDITOR.dom.range( doc );
range.selectNodeContents( node );
var walker = new CKEDITOR.dom.walker( range );
var nodes = [];
walker.guard = function( node )
{
nodes.push( node );
return true;
};
while ( ( node = walker.previous() ) )
{ /*jsl:pass*/ }
assertNodesList( [ '<p>', ' test', '<b>', '<i>', 'simple', '<i>', 'a ', '<b>', 'This is ', '<p>' ], nodes );
},
/**
* Test evaluator function is invoked on every step when iterating backward.
*/
test_evaluator_1 : function()
{
var node = doc.getById( 'playground' );
node.setHtml( '<p>This is <b>a <i>simple</i></b> test</p>' );
var range = new CKEDITOR.dom.range( doc );
range.selectNodeContents( node );
var walker = new CKEDITOR.dom.walker( range );
var nodes = [];
walker.evaluator = function( node )
{
nodes.push( node );
return true;
};
while ( ( node = walker.previous() ) )
{ /*jsl:pass*/ }
assertNodesList( [ '<p>', ' test', '<b>', '<i>', 'simple', 'a ', 'This is ' ], nodes );
},
/**
* Test walker stop at empty endContainer.
*/
test_stopGuard : function()
{
var node = doc.getById( 'playground' );
node.setHtml( '<span></span>afterEnd' );
var endContainer = node.getFirst();
var range = new CKEDITOR.dom.range( doc );
range.selectNodeContents( node );
range.setEndAt( endContainer, CKEDITOR.POSITION_AFTER_START );
var walker = new CKEDITOR.dom.walker( range );
var nodes = [];
walker.evaluator = function( node )
{
nodes.push( node );
return true;
};
while ( ( node = walker.next() ) )
{ /*jsl:pass*/ }
assertNodesList( [ '<span>' ], nodes );
},
name : document.title
};
})() );
//window.onload = tc.test_stopGuard;
//]]>
</script>
</head>
<body>
<div id="playground"></div>
</body>
</html>
@@ -1,53 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>CKEDITOR.dom.window</title>
<link rel="stylesheet" type="text/css" href="../../test.css" />
<script type="text/javascript" src="../../../ckeditor.js"></script>
<script type="text/javascript" src="../../test.js"></script>
<script type="text/javascript">
//<![CDATA[
var loadCalled;
var testWindow = new CKEDITOR.dom.window( window );
var t;
testWindow.on( 'load', function()
{
t = document.createElement( 'textarea' );
t.id = 'fred';
document.body.appendChild( t );
loadCalled = true;
});
testWindow.on( 'beforeunload', function()
{
t.value = new Date();
});
CKEDITOR.test.addTestCase( (function()
{
// Local reference to the "assert" object.
var assert = CKEDITOR.test.assert;
return {
test_loadEvent : function()
{
assert.isTrue( loadCalled );
},
name : document.title
};
})() );
//]]>
</script>
</head>
<body>
<div id="test1"></div>
</body>
</html>
@@ -1,123 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>CKEDITOR.editor</title>
<link rel="stylesheet" type="text/css" href="../test.css" />
<script type="text/javascript" src="../../ckeditor.js"></script>
<script type="text/javascript" src="../test.js"></script>
<script type="text/javascript">
//<![CDATA[
// Disable 'scayt' plugin due to it may alter editor config after initialized.
CKEDITOR.config.removePlugins = 'scayt';
CKEDITOR.test.addTestCase( (function()
{
// Local reference to the "assert" object.
var assert = CKEDITOR.test.assert;
return {
test_name : function()
{
assert.areSame( 'editor1', CKEDITOR.instances.editor1.name );
},
test_element : function()
{
assert.areSame( document.getElementById( 'editor1' ), CKEDITOR.instances.editor1.element.$ );
},
test_config : function()
{
// The instance default config must match the CKEDITOR.config.
var config = CKEDITOR.instances.editor1.config;
for ( var prop in CKEDITOR.config )
assert.areSame( CKEDITOR.config[ prop ], config[ prop ], '"' + prop + '" doesn\'t match' );
},
test_config_inpage : function()
{
var self = this;
CKEDITOR.replace( 'editor2',
{
// The custom setting to be checked.
test1 : 'ball',
baseHref : 'test',
on :
{
instanceReady : function()
{
self.resume( function()
{
var config = CKEDITOR.instances.editor2.config;
assert.areSame( 'ball', config.test1, '"test1" doesn\'t match' );
assert.areSame( 'test', config.baseHref, '"baseHref" doesn\'t match' );
// All other settings must match CKEDITOR.config.
for ( var prop in CKEDITOR.config )
{
if ( prop != 'test1' && prop != 'baseHref' )
assert.areSame( CKEDITOR.config[ prop ], config[ prop ], '"' + prop + '" doesn\'t match' );
}
} );
}
}
});
this.wait();
},
test_config_customConfig : function()
{
var testCase = this;
CKEDITOR.on( 'instanceCreated', function( event )
{
if ( event.editor.name == 'editor3' )
{
event.editor.on( 'configLoaded', function()
{
testCase.resume( function()
{
var config = event.editor.config;
assert.areSame( 'Ok', config.test_custom1, '"test_custom1" doesn\'t match' );
assert.areSame( 'Ok', config.test_custom2, '"test_custom1" doesn\'t match' );
assert.areSame( 'ball', config.test1, '"test1" doesn\'t match' );
assert.areSame( 'test', config.baseHref, '"baseHref" doesn\'t match' );
// All other settings must match CKEDITOR.config.
for ( var prop in CKEDITOR.config )
{
if ( prop != 'customConfig' && prop != 'test_custom1' && prop != 'test_custom2' && prop != 'test1' && prop != 'baseHref' )
assert.areSame( CKEDITOR.config[ prop ], config[ prop ], '"' + prop + '" doesn\'t match' );
}
});
});
}
});
// Pass in-page settings to the instance.
CKEDITOR.replace( 'editor3', { customConfig : '_editor/custom_config_1.js', test1 : 'ball', baseHref : 'test' } );
this.wait();
},
name : document.title
};
})() );
//]]>
</script>
</head>
<body>
<textarea id="editor1" class="ckeditor" cols="80" rows="10"></textarea>
<textarea id="editor2" cols="80" rows="10"></textarea>
<textarea id="editor3" cols="80" rows="10"></textarea>
</body>
</html>
@@ -1,52 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>CKEDITOR.env</title>
<link rel="stylesheet" type="text/css" href="../test.css" />
<script type="text/javascript" src="../../ckeditor.js"></script>
<script type="text/javascript" src="../test.js"></script>
<script type="text/javascript">
//<![CDATA[
CKEDITOR.test.addTestCase( (function()
{
// Local reference to the "assert" object.
var assert = CKEDITOR.test.assert;
return {
test_ie : function()
{
if ( window.ActiveXObject )
{
assert.isTrue( CKEDITOR.env.ie , 'ie should be true' );
assert.isFalse( CKEDITOR.env.opera , 'opera should be false' );
assert.isFalse( CKEDITOR.env.webkit , 'webkit should be false' );
assert.isFalse( CKEDITOR.env.air , 'air should be false' );
assert.isFalse( CKEDITOR.env.gecko , 'gecko should be false' );
assert.isFalse( CKEDITOR.env.mac , 'ismac should be false' );
}
else
assert.isFalse( CKEDITOR.env.ie );
},
test_isCompatible : function()
{
assert.isTrue( CKEDITOR.env.isCompatible );
},
test_quirks : function()
{
assert.isFalse( CKEDITOR.env.quirks );
},
name : document.title
};
})() );
//]]>
</script>
</head>
<body>
</body>
</html>
@@ -1,487 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>CKEDITOR.event</title>
<link rel="stylesheet" type="text/css" href="../test.css" />
<script type="text/javascript" src="../../ckeditor.js"></script>
<script type="text/javascript" src="../test.js"></script>
<script type="text/javascript">
//<![CDATA[
CKEDITOR.test.addTestCase( (function()
{
// Local reference to the "assert" object.
var assert = CKEDITOR.test.assert;
return {
test_inherit : function()
{
// Create a testClass that inherits from CKEDITOR.event.
var testClass = function()
{
CKEDITOR.event.call( this );
};
testClass.prototype = CKEDITOR.event.prototype;
var calls = [];
var testInstance = new testClass();
testInstance.on( 'someEvent', function( ev )
{
assert.areSame( testInstance, this, 'Scope 1 is not valid' );
assert.areSame( 'someEvent', ev.name, 'ev.name (1) is wrong' );
assert.areSame( testInstance, ev.sender, 'ev.sender (1) is wrong' );
assert.isUndefined( ev.editor, 'ev.editor (1) is wrong' );
assert.isUndefined( ev.data, 'ev.data (1) is wrong' );
assert.isUndefined( ev.listenerData, 'ev.listenerData (1) is wrong' );
calls.push( 'a' );
} );
testInstance.on( 'someEvent', function( ev )
{
assert.areSame( testInstance, this, 'Scope 2 is not valid' );
assert.areSame( 'someEvent', ev.name, 'ev.name (2) is wrong' );
assert.areSame( testInstance, ev.sender, 'ev.sender (2) is wrong' );
assert.isUndefined( ev.editor, 'ev.editor (2) is wrong' );
assert.isUndefined( ev.data, 'ev.data (2) is wrong' );
assert.isUndefined( ev.listenerData, 'ev.listenerData (2) is wrong' );
calls.push( 'b' );
} );
assert.areSame( false, testInstance.fire( 'someEvent' ) );
assert.areSame( 2, calls.length, 'number of calls doesn\'t match' );
assert.areSame( 'a,b', calls.toString() );
},
test_implementOn : function()
{
// Create a testObject and implement CKEDITOR.event on it.
var testObject = { someprop : 'Test' };
CKEDITOR.event.implementOn( testObject );
assert.areSame( 'Test', testObject.someprop );
var calls = [];
testObject.on( 'someEvent', function( ev )
{
assert.areSame( testObject, this, 'Scope 1 is not valid' );
assert.areSame( 'someEvent', ev.name, 'ev.name (1) is wrong' );
assert.areSame( testObject, ev.sender, 'ev.sender (1) is wrong' );
assert.isUndefined( ev.editor, 'ev.editor (1) is wrong' );
assert.isUndefined( ev.data, 'ev.data (1) is wrong' );
assert.isUndefined( ev.listenerData, 'ev.listenerData (1) is wrong' );
calls.push( 'a' );
} );
testObject.on( 'someEvent', function( ev )
{
assert.areSame( testObject, this, 'Scope 2 is not valid' );
assert.areSame( 'someEvent', ev.name, 'ev.name (2) is wrong' );
assert.areSame( testObject, ev.sender, 'ev.sender (2) is wrong' );
assert.isUndefined( ev.editor, 'ev.editor (2) is wrong' );
assert.isUndefined( ev.data, 'ev.data (2) is wrong' );
assert.isUndefined( ev.listenerData, 'ev.listenerData (2) is wrong' );
calls.push( 'b' );
} );
assert.areSame( false, testObject.fire( 'someEvent' ) );
assert.areSame( 2, calls.length, 'number of calls doesn\'t match' );
assert.areSame( 'a,b', calls.toString() );
},
test_eventNameCase : function()
{
// Create a testObject and implement CKEDITOR.event on it.
var testObject = {};
CKEDITOR.event.implementOn( testObject );
var counter = 0;
// Event Names are case sensitive.
testObject.on( 'someEvent', function( ev )
{
assert.areSame( 'someEvent', ev.name, 'ev.name (someEvent) is wrong' );
counter++;
} );
testObject.on( 'SomeEvent', function( ev )
{
assert.areSame( 'SomeEvent', ev.name, 'ev.name (SomeEvent) is wrong' );
counter++;
} );
testObject.fire( 'someEvent' );
assert.areSame( 1, counter, '"someEvent" calls doesn\'t match' );
counter = 0;
testObject.fire( 'SomeEvent' );
assert.areSame( 1, counter, '"SomeEvent" calls doesn\'t match' );
},
test_scope : function()
{
// Create a testObject and implement CKEDITOR.event on it.
var testObject = {};
CKEDITOR.event.implementOn( testObject );
// Counter used just to check that the calls are effectively done.
var counter = 0;
var testScope = {};
testObject.on( 'someEvent', function( ev )
{
assert.areSame( testObject, this, 'scope (testObject) is wrong' );
assert.areSame( testObject, ev.sender, 'sender (testObject) is wrong' );
counter++;
} );
testObject.on( 'someEvent', function( ev )
{
assert.areSame( testScope, this, 'scope (testScope) is wrong' );
assert.areSame( testObject, ev.sender, 'sender (testScope) is wrong' );
counter++;
}, testScope );
testObject.fire( 'someEvent' );
assert.areSame( 2, counter, 'wrong number of calls' );
},
test_listenerData : function()
{
// Create a testObject and implement CKEDITOR.event on it.
var testObject = {};
CKEDITOR.event.implementOn( testObject );
// Counter used just to check that the calls are effectively done.
var counter = 0;
testObject.on( 'someEvent', function( ev )
{
assert.areSame( 'Test1', ev.listenerData, 'listenerData (1) is wrong' );
counter++;
}, null, 'Test1' );
testObject.on( 'someEvent', function( ev )
{
assert.areSame( 'Test2', ev.listenerData, 'listenerData (2) is wrong' );
counter++;
}, null, 'Test2' );
testObject.fire( 'someEvent' );
assert.areSame( 2, counter, 'wrong number of calls' );
},
test_data : function()
{
// Create a testObject and implement CKEDITOR.event on it.
var testObject = {};
CKEDITOR.event.implementOn( testObject );
// Counter used just to check that the calls are effectively done.
var counter = 0;
testObject.on( 'someEvent', function( ev )
{
assert.areSame( 'Test data', ev.data, 'data (1) is wrong' );
counter++;
} );
testObject.on( 'someEvent', function( ev )
{
assert.areSame( 'Test data', ev.data, 'data (2) is wrong' );
counter++;
} );
testObject.fire( 'someEvent', 'Test data' );
assert.areSame( 2, counter, 'wrong number of calls' );
},
test_editor : function()
{
// Create a testObject and implement CKEDITOR.event on it.
var testObject = {};
CKEDITOR.event.implementOn( testObject );
// Counter used just to check that the calls are effectively done.
var counter = 0;
var editor = {};
testObject.on( 'someEvent', function( ev )
{
assert.areSame( editor, ev.editor, 'editor is wrong' );
counter++;
} );
testObject.fire( 'someEvent', null, editor );
assert.areSame( 1, counter, 'wrong number of calls' );
},
test_stop : function()
{
// Create a testObject and implement CKEDITOR.event on it.
var testObject = {};
CKEDITOR.event.implementOn( testObject );
var counter = 0;
testObject.on( 'someEvent', function( ev )
{
ev.stop();
counter++;
} );
testObject.on( 'someEvent', function( ev )
{
counter++;
} );
assert.areSame( false, testObject.fire( 'someEvent' ), 'fire must return "false"' );
assert.areSame( 1, counter, 'number of calls doesn\'t match' );
},
test_cancel : function()
{
// Create a testObject and implement CKEDITOR.event on it.
var testObject = {};
CKEDITOR.event.implementOn( testObject );
var counter = 0;
testObject.on( 'someEvent', function( ev )
{
ev.cancel();
counter++;
} );
testObject.on( 'someEvent', function( ev )
{
counter++;
} );
assert.areSame( true, testObject.fire( 'someEvent' ), 'fire must return "true"' );
assert.areSame( 1, counter, 'number of calls doesn\'t match' );
},
test_dataManipulation : function()
{
// Create a testObject and implement CKEDITOR.event on it.
var testObject = {};
CKEDITOR.event.implementOn( testObject );
var counter = 0;
testObject.on( 'someEvent', function( ev )
{
assert.areSame( 'Test1', ev.data );
ev.data = 'Test2';
counter++;
} );
testObject.on( 'someEvent', function( ev )
{
assert.areSame( 'Test2', ev.data );
ev.data = 'Test3';
counter++;
} );
testObject.on( 'someEvent', function( ev )
{
assert.areSame( 'Test3', ev.data );
ev.data = 'Test4';
counter++;
} );
assert.areSame( 'Test4', testObject.fire( 'someEvent', 'Test1' ), 'fire must return "Test4"' );
assert.areSame( 3, counter, 'number of calls doesn\'t match' );
},
test_priority : function()
{
// Create a testObject and implement CKEDITOR.event on it.
var testObject = {};
CKEDITOR.event.implementOn( testObject );
var calls = [];
testObject.on( 'someEvent', function( ev )
{
calls.push( 'e' );
}, null, null, 11 );
testObject.on( 'someEvent', function( ev )
{
calls.push( 'c' );
} );
testObject.on( 'someEvent', function( ev )
{
calls.push( 'a' );
}, null, null, 9 );
testObject.on( 'someEvent', function( ev )
{
calls.push( 'f' );
}, null, null, 11 );
testObject.on( 'someEvent', function( ev )
{
calls.push( 'd' );
} );
testObject.on( 'someEvent', function( ev )
{
calls.push( 'b' );
}, null, null, 9 );
testObject.fire( 'someEvent', 'Test data' );
assert.areSame( 'a,b,c,d,e,f', calls.toString() );
},
test_removeListener : function()
{
// Create a testObject and implement CKEDITOR.event on it.
var testObject = {};
CKEDITOR.event.implementOn( testObject );
var calls = [];
var listener = function( ev )
{
calls.push( 'a' );
};
testObject.on( 'someEvent', listener );
testObject.on( 'someEvent', function( ev )
{
calls.push( 'b' );
} );
testObject.fire( 'someEvent', 'Test data' );
assert.areSame( 'a,b', calls.toString() );
testObject.removeListener( 'someEvent', listener );
calls = [];
testObject.fire( 'someEvent', 'Test data' );
assert.areSame( 'b', calls.toString() );
},
test_fireOnce : function()
{
// Create a testObject and implement CKEDITOR.event on it.
var testObject = {};
CKEDITOR.event.implementOn( testObject );
var counter = 0;
testObject.on( 'someEvent', function( ev )
{
counter++;
} );
testObject.on( 'someEvent', function( ev )
{
counter++;
} );
assert.areSame( false, testObject.fireOnce( 'someEvent' ), 'fireOnce must return "false"' );
assert.areSame( 2, counter, 'number of calls doesn\'t match' );
counter = 0;
assert.areSame( false, testObject.fire( 'someEvent' ), 'fire must return "false"' );
assert.areSame( 0, counter, 'number of calls doesn\'t match' );
},
test_nestedCancel : function()
{
// Create a testObject and implement CKEDITOR.event on it.
var testObject = {};
CKEDITOR.event.implementOn( testObject );
var isCanceledA,
isCanceledB,
isCanceledC;
testObject.on( 'A', function( ev )
{
isCanceledB = testObject.fire( 'B' );
isCanceledC = testObject.fire( 'C' );
});
testObject.on( 'B', function( ev )
{
ev.cancel();
});
testObject.on( 'C', function( ev )
{
});
isCanceledA = testObject.fire( 'A' );
assert.areSame( false, isCanceledA, 'event A must not be canceled' );
assert.areSame( true, isCanceledB, 'event B must be canceled' );
assert.areSame( false, isCanceledC, 'event C must not be canceled' );
},
test_event_removeListener : function()
{
// Create a testObject and implement CKEDITOR.event on it.
var testObject = {};
CKEDITOR.event.implementOn( testObject );
var counter = 0;
// Add two listeners for the same event "A".
testObject.on( 'A', function( ev )
{
counter++;
ev.removeListener();
});
testObject.on( 'A', function( ev )
{
counter++;
});
// Fire the event twice.
testObject.fire( 'A' );
testObject.fire( 'A' );
assert.areSame( 3, counter );
},
name : document.title
};
})() );
//]]>
</script>
</head>
<body>
</body>
</html>
@@ -1,188 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>CKEDITOR.htmlParser.fragment</title>
<link rel="stylesheet" type="text/css" href="../../test.css" />
<script type="text/javascript" src="../../../ckeditor.js"></script>
<script type="text/javascript" src="../../test.js"></script>
<script type="text/javascript">
//<![CDATA[
var tc;
CKEDITOR.test.addTestCase( tc = (function()
{
// Local reference to the "assert" object.
var assert = CKEDITOR.test.assert;
function testParser( input, expected )
{
var fragment = CKEDITOR.htmlParser.fragment.fromHtml( input, 'p' ),
writer = new CKEDITOR.htmlParser.basicWriter();
fragment.writeHtml( writer );
assert.areSame( expected, writer.getHtml( true ) );
}
return {
test_fromHtml_1 : function()
{
var fragment = CKEDITOR.htmlParser.fragment.fromHtml( '<p>Test</p>' );
assert.areSame( 1, fragment.children.length, 'Wrong size' );
assert.areSame( CKEDITOR.NODE_ELEMENT, fragment.children[0].type, 'Wrong child type' );
assert.areSame( 'p', fragment.children[0].name, 'Wrong child name' );
},
test_parser_1 : function()
{
testParser( '<table><tr><td>1</td><p><b>2</b> Test</p><td>3</td></tr></table>',
'<p><b>2</b> Test</p><table><tr><td>1</td><td>3</td></tr></table>' );
},
test_parser_2 : function()
{
testParser( '<b><table><tr><td>1</td><td>2</td></tr></table></b>',
'<table><tr><td><b>1</b></td><td><b>2</b></td></tr></table>' );
},
test_parser_3_1 : function()
{
testParser( '<b><i>Table:<table><tr><td>1</td><td>2</td></tr></table></i></b>',
'<p><b><i>Table:</i></b></p><table><tr><td><b><i>1</i></b></td><td><b><i>2</i></b></td></tr></table>' );
},
test_parser_3_2 : function()
{
testParser( '<b><i><table><tr><td>1</td><td>2</td></tr></table>Table</i></b>',
'<table><tr><td><b><i>1</i></b></td><td><b><i>2</i></b></td></tr></table><p><b><i>Table</i></b></p>' );
},
test_parser_4 : function()
{
testParser( '<b><i>Test',
'<p><b><i>Test</i></b></p>' );
},
test_parser_5 : function()
{
testParser( '<p>Para 1<p>Para 2<p>Para 3',
'<p>Para 1</p><p>Para 2</p><p>Para 3</p>' );
},
test_parser_6 : function()
{
testParser( '<b>A</b><i>B</i>',
'<p><b>A</b><i>B</i></p>' );
},
test_parser_7 : function()
{
testParser( '<p>Para 1<hr>Para 2<h1>Para 3',
'<p>Para 1</p><hr /><p>Para 2</p><h1>Para 3</h1>' );
},
/**
* Test remove empty inline element.
*/
test_parser_8 : function()
{
testParser( '<p><b></b>text</p>',
'<p>text</p>' );
},
/**
* Test remove multiple empty inline elements.
*/
test_parser_8_2 : function()
{
testParser( '<p><b><i></b></i>text</p>',
'<p>text</p>' );
},
/**
* Test fixing malformed inline element closing.
*/
test_parser_9 : function()
{
testParser( '<p><b>bold<i>ita</b>lic</i></p>',
'<p><b>bold<i>ita</i></b><i>lic</i></p>' );
},
test_ticket_10 : function()
{
testParser( '<table><tbody><tr><td>A<b></b></td></tr></tbody></table>',
'<table><tbody><tr><td>A</td></tr></tbody></table>' );
},
/**
* Test fixing paragraph inside table row.
*/
test_ticket_3195 : function()
{
testParser( '<table><tr><td>1</td><p>2</p><td>3</td></tr></table>',
'<p>2</p><table><tr><td>1</td><td>3</td></tr></table>' );
},
/**
* Test fixing paragraph inside list.
*/
test_ticket_3195_2 : function()
{
testParser( '<ul><li>1</li><p>2</p><li>3</li></ul>',
'<p>2</p><ul><li>1</li><li>3</li></ul>' );
},
/**
* Test fixing 'div' inside paragraph.
*/
test_ticket_3195_3 : function()
{
testParser( '<p>1<div>2</div><span>3</span></p>',
'<p>1</p><div>2</div><p><span>3</span></p>' );
},
test_ticket_3441 : function()
{
testParser( '<p><b>Test</b></p><script type="test">var a = "<A Href=xxx>Testing</ A>";\nGo();<\/script>',
'<p><b>Test</b></p><script type="test">var a = "<A Href=xxx>Testing</ A>";\nGo();<\/script>' );
},
test_ticket_3585 : function()
{
testParser( '<p><br />\t\r\n</p>',
'<p><br /></p>' );
},
test_ticket_3585_1 : function()
{
testParser( '<p><br />text\t\r\n</p>',
'<p><br />text</p>' );
},
test_ticket_3585_2 : function()
{
testParser( '<b>inline </b>\n<p>paragraph\t\r\n</p>\t\r\n',
'<p><b>inline </b></p><p>paragraph</p>' );
},
test_ticket_3744 : function()
{
testParser( '<div><b><font><span>A</font></span></b></div><div>X</div>',
'<div><b><font><span>A</span></font></b></div><div>X</div>' );
},
name : document.title
};
})() );
// Uncomment the following to run a single test.
// window.onload = tc.test_ticket_3585_2;
//]]>
</script>
</head>
<body>
</body>
</html>
@@ -1,91 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>CKEDITOR.htmlParser</title>
<link rel="stylesheet" type="text/css" href="../../test.css" />
<script type="text/javascript" src="../../../ckeditor.js"></script>
<script type="text/javascript" src="../../test.js"></script>
<script type="text/javascript">
//<![CDATA[
CKEDITOR.plugins.load( 'htmlwriter' );
var tc;
CKEDITOR.test.addTestCase( tc = ( function()
{
// Local reference to the "assert" object.
var assert = YAHOO.util.Assert;
/**
* Wrapper of the combination of htmlParser with htmlWriter, for convenience of
* testing, formatting of writer has been disabled.
*/
function htmlParse( htmlString , writerConfig)
{
var writer = new CKEDITOR.htmlParser.basicWriter();
writer.reset();
var fragment = CKEDITOR.htmlParser.fragment.fromHtml( htmlString );
fragment.writeHtml( writer );
return writer.getHtml();
}
/**
* IE always returning CRLF for line-feed, so remove it when retrieving
* pre-formated text from text area.
*/
function getTextAreaValue( id )
{
return CKEDITOR.document.getById( id ).getValue().replace( /\r/gi, '' );
}
return {
/**
* Test <pre> tag formatting.
*/
test_fromHtml_3715 : function()
{
assert.areSame( getTextAreaValue( 'htmlResult1' ),
htmlParse( getTextAreaValue( 'htmlOriginal1' ) ),
'<pre> parsing result doesn\'t match.' );
},
/**
* Test compress empty spaces within text.
*/
test_fromHtml_3715_2 : function()
{
assert.areSame( getTextAreaValue( 'htmlResult2' ),
htmlParse( getTextAreaValue( 'htmlOriginal2' ) ),
'Spaces compressing result doesn\'t match.' );
},
name :document.title
};
} )() );
//window.onload = tc.test_fromHtml_3715;
//]]>
</script>
</head>
<body>
<textarea id="htmlOriginal1"><pre>
text<b>
inside<br /><br /></b>
pre
</pre></textarea>
<textarea id="htmlResult1"><pre>
text<b>
inside
</b>
pre
</pre></textarea>
<textarea id="htmlOriginal2"><p>
para graph
</p><b>compress spaces</b></textarea>
<textarea id="htmlResult2"><p>para graph</p><b>compress spaces</b></textarea>
</body>
</html>
@@ -1,45 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>CKEDITOR.plugins</title>
<link rel="stylesheet" type="text/css" href="../test.css" />
<script type="text/javascript" src="../../ckeditor.js"></script>
<script type="text/javascript" src="../test.js"></script>
<script type="text/javascript">
//<![CDATA[
CKEDITOR.test.addTestCase( (function()
{
// Local reference to the "assert" object.
var assert = CKEDITOR.test.assert;
return {
/**
* Test loading self defined external plugin file paths.
*/
test_addExternal : function()
{
var path = '_tests/';
CKEDITOR.plugins.addExternal( 'myplugin',
path + 'core/plugins/myplugins/sample/', 'my_plugin.js' );
CKEDITOR.plugins.load( 'myplugin', function(){
this.resume( function(){
assert.isTrue( CKEDITOR.plugins.get( 'myplugin' ).definition );
} );
}, this );
this.wait();
},
name : document.title
};
})() );
//]]>
</script>
</head>
<body>
</body>
</html>
@@ -1,3 +0,0 @@
CKEDITOR.plugins.add( 'myplugin' , {
definition : true
} );
@@ -1,52 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>CKEDITOR.scriptLoader</title>
<link rel="stylesheet" type="text/css" href="../test.css" />
<script type="text/javascript" src="../../ckeditor.js"></script>
<script type="text/javascript" src="../test.js"></script>
<script type="text/javascript">
//<![CDATA[
CKEDITOR.test.addTestCase( (function()
{
// Local reference to the "assert" object.
var assert = CKEDITOR.test.assert;
return {
test_loadCode : function()
{
CKEDITOR.scriptLoader.loadCode( 'var test="Testing!";' );
/*jsl:ignore*/
assert.areEqual( 'Testing!', test );
/*jsl:end*/
},
test_load : function()
{
var testCase = this;
var callback = function( data )
{
testCase.resume( function()
{
/*jsl:ignore*/
assert.areSame( 'Test!', testVar );
/*jsl:end*/
} );
};
CKEDITOR.scriptLoader.load( '../_assets/sample.js', callback );
this.wait();
},
name : document.title
};
})() );
//]]>
</script>
</head>
<body>
</body>
</html>
@@ -1,170 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>CKEDITOR.tools</title>
<link rel="stylesheet" type="text/css" href="../test.css" />
<script type="text/javascript" src="../../ckeditor.js"></script>
<script type="text/javascript" src="../test.js"></script>
<script type="text/javascript">
//<![CDATA[
var testcase;
CKEDITOR.test.addTestCase( testcase = (function()
{
// Local reference to the "assert" object.
var assert = CKEDITOR.test.assert;
return {
test_extend : function()
{
var fakeFn = function() {};
var fakeObj = { fake1 : 1, fake2 : 2 };
var fakeArray = [ 'Test', 10, fakeFn, fakeObj ];
var target =
{
prop1 : 'Test',
prop2 : 10,
prop3 : fakeFn,
prop4 : fakeObj,
prop5 : fakeArray
};
CKEDITOR.tools.extend( target,
{
prop3 : 'Wrong',
prop6 : 'Good',
prop7 : fakeArray
} );
assert.areSame( 'Test' , target.prop1, 'prop1 doesn\'t match' );
assert.areSame( 10 , target.prop2, 'prop2 doesn\'t match' );
assert.areSame( fakeFn , target.prop3, 'prop3 doesn\'t match' );
assert.areSame( fakeObj , target.prop4, 'prop4 doesn\'t match' );
assert.areSame( fakeArray , target.prop5, 'prop5 doesn\'t match' );
assert.areSame( 'Good' , target.prop6, 'prop6 doesn\'t match' );
assert.areSame( fakeArray , target.prop7, 'prop7 doesn\'t match' );
},
test_isArray1 : function()
{
assert.isTrue( CKEDITOR.tools.isArray( [] ) );
},
test_isArray2 : function()
{
assert.isFalse( CKEDITOR.tools.isArray( { length:1 } ) );
},
test_isArray3 : function()
{
assert.isFalse( CKEDITOR.tools.isArray( null ) );
},
test_isArray4 : function()
{
assert.isFalse( CKEDITOR.tools.isArray( window.x ) );
},
test_htmlEncode1 : function()
{
assert.areSame( '&lt;b&gt;Test&lt;/b&gt;', CKEDITOR.tools.htmlEncode( '<b>Test</b>' ) );
},
test_htmlEncode2 : function()
{
assert.areSame( 'Test\'s &amp; "quote"', CKEDITOR.tools.htmlEncode( 'Test\'s & "quote"' ) );
},
test_htmlEncode_3874 : function()
{
assert.areSame( 'line1\nline2', CKEDITOR.tools.htmlEncode( 'line1\nline2' ) );
},
test_cssStyleToDomStyle1 : function()
{
assert.areSame( 'backgroundColor', CKEDITOR.tools.cssStyleToDomStyle( 'background-color' ) );
},
test_cssStyleToDomStyle2 : function()
{
assert.areSame( 'cssFloat', CKEDITOR.tools.cssStyleToDomStyle( 'float' ) );
},
test_getNextNumber : function()
{
var number = CKEDITOR.tools.getNextNumber();
assert.areSame( number + 1, CKEDITOR.tools.getNextNumber() );
assert.areSame( number + 2, CKEDITOR.tools.getNextNumber() );
assert.areSame( number + 3, CKEDITOR.tools.getNextNumber() );
},
test_trim1 : function()
{
assert.areSame( 'test', CKEDITOR.tools.trim( ' test ' ) );
},
test_trim2 : function()
{
assert.areSame( 'test', CKEDITOR.tools.trim( ' \n \t test\n \t ' ) );
},
test_ltrim1 : function()
{
assert.areSame( 'test ', CKEDITOR.tools.ltrim( ' test ' ) );
},
test_ltrim2 : function()
{
assert.areSame( 'test\n \t ', CKEDITOR.tools.ltrim( ' \n \t test\n \t ' ) );
},
test_rtrim1 : function()
{
assert.areSame( ' test', CKEDITOR.tools.rtrim( ' test ' ) );
},
test_rtrim2 : function()
{
assert.areSame( ' \n \t test', CKEDITOR.tools.rtrim( ' \n \t test\n \t ' ) );
},
test_clone : function()
{
var obj =
{
name : 'John',
cars :
{
Mercedes : { color : 'blue' },
Porsche : { color : 'red' }
}
};
var clone = CKEDITOR.tools.clone( obj );
clone.name = 'Paul';
clone.cars.Porsche.color = 'silver';
assert.areSame( 'John', obj.name );
assert.areSame( 'Paul', clone.name );
assert.areSame( 'red', obj.cars.Porsche.color );
assert.areSame( 'silver', clone.cars.Porsche.color );
},
test_repeat : function()
{
assert.areSame( '&nbsp;&nbsp;&nbsp;', CKEDITOR.tools.repeat( '&nbsp;', 3 ) );
},
name : document.title
};
})() );
//window.onload = testcase.test_htmlEncode_3874;
//]]>
</script>
</head>
<body>
<iframe></iframe>
</body>
</html>
@@ -1,150 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>CKEDITOR.xml</title>
<link rel="stylesheet" type="text/css" href="../test.css" />
<script type="text/javascript" src="../../ckeditor.js"></script>
<script type="text/javascript" src="../../_source/core/loader.js"></script>
<script type="text/javascript" src="../test.js"></script>
<script type="text/javascript">
//<![CDATA[
CKEDITOR.loader.load( 'core/xml' );
//]]>
</script>
<script type="text/javascript">
//<![CDATA[
CKEDITOR.test.addTestCase( (function()
{
// Local reference to the "assert" object.
var assert = CKEDITOR.test.assert;
return {
test_baseXml : function()
{
var xml = new CKEDITOR.xml( '<data />' );
assert.isObject( xml.baseXml );
},
test_selectSingleNode1a : function()
{
var xml = new CKEDITOR.xml( '<data><item /></data>' );
var node = xml.selectSingleNode( 'data/item' );
assert.areEqual( 'item', node.nodeName );
},
test_selectSingleNode1b : function()
{
var xml = new CKEDITOR.xml( '<data><item /></data>' );
var node = xml.selectSingleNode( 'item' );
assert.isNull( node );
},
test_selectSingleNode2a : function()
{
var xml = new CKEDITOR.xml( '<data><item><subitem/></item></data>' );
var contextNode = xml.selectSingleNode( 'data' );
var node = xml.selectSingleNode( 'item/subitem', contextNode );
assert.areEqual( 'subitem', node.nodeName );
},
test_selectSingleNode2b : function()
{
var xml = new CKEDITOR.xml( '<data><item><subitem/></item></data>' );
var contextNode = xml.selectSingleNode( 'data' );
var node = xml.selectSingleNode( 'subitem', contextNode );
assert.isNull( node );
},
test_selectSingleNode3 : function()
{
var xml = new CKEDITOR.xml( '<data><item id="x1"/><item id="x2"/></data>' );
var node = xml.selectSingleNode( '//item[@id="x2"]' );
assert.areEqual( 'item', node.nodeName );
assert.areEqual( 'x2', node.getAttribute( 'id' ) );
},
test_selectSingleNode4 : function()
{
// For may results, the first one must be returned.
var xml = new CKEDITOR.xml( '<data><item id="x1"/><item id="x2"/></data>' );
var node = xml.selectSingleNode( '//item' );
assert.areEqual( 'item', node.nodeName );
assert.areEqual( 'x1', node.getAttribute( 'id' ) );
},
test_selectNodes1 : function()
{
var xml = new CKEDITOR.xml( '<data><item /></data>' );
var nodes = xml.selectNodes( 'data/item' );
assert.areEqual( 1, nodes.length );
assert.areEqual( 'item', nodes[0].nodeName );
},
test_selectNodes2a : function()
{
var xml = new CKEDITOR.xml( '<data><item id="x1"/><item id="x2"/><item id="x3"/></data>' );
var nodes = xml.selectNodes( '//item' );
assert.areEqual( 3, nodes.length );
assert.areEqual( 'x1', nodes[0].getAttribute( 'id' ) );
assert.areEqual( 'x2', nodes[1].getAttribute( 'id' ) );
assert.areEqual( 'x3', nodes[2].getAttribute( 'id' ) );
},
test_selectNodes2b : function()
{
var xml = new CKEDITOR.xml( '<data><item id="x1"/><item id="x2"/><item id="x3"/></data>' );
var nodes = xml.selectNodes( '//itemX' );
assert.areEqual( 0, nodes.length );
},
test_selectNodes3a : function()
{
var xml = new CKEDITOR.xml( '<data><item id="x1"/><item id="x2"/><item id="x3"/></data>' );
var contextNode = xml.selectSingleNode( 'data' );
var nodes = xml.selectNodes( 'item', contextNode );
assert.areEqual( 3, nodes.length );
assert.areEqual( 'x1', nodes[0].getAttribute( 'id' ) );
assert.areEqual( 'x2', nodes[1].getAttribute( 'id' ) );
assert.areEqual( 'x3', nodes[2].getAttribute( 'id' ) );
},
test_selectNodes3b : function()
{
var xml = new CKEDITOR.xml( '<data><item id="x1"/><item id="x2"/><item id="x3"/></data>' );
var contextNode = xml.selectSingleNode( 'data' );
var nodes = xml.selectNodes( 'itemX', contextNode );
assert.areEqual( 0, nodes.length );
},
test_getInnerXml1 : function()
{
var xml = new CKEDITOR.xml( '<data><item/></data>' );
assert.areEqual( '<item/>', xml.getInnerXml( 'data' ) );
},
test_getInnerXml2 : function()
{
var xml = new CKEDITOR.xml( '<data><item id="x1"><subitem name="sub1"/></item></data>' );
assert.areEqual( '<subitem name="sub1"/>', xml.getInnerXml( '//item' ) );
},
test_getInnerXml3 : function()
{
var xml = new CKEDITOR.xml( '<data><item id="x1"/></data>' );
assert.isNull( xml.getInnerXml( '//itemX' ) );
},
name : document.title
};
})() );
//]]>
</script>
</head>
<body>
</body>
</html>
@@ -1,236 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Plugin: domiterator</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="../../test.css" />
<script type="text/javascript" src="../../../ckeditor.js"></script>
<script type="text/javascript" src="../../test.js"></script>
<script type="text/javascript">
CKEDITOR.plugins.load( [ 'htmldataprocessor', 'htmlwriter', 'domiterator'] );
</script>
<script type="text/javascript">
//<![CDATA[
/**
* IE always returning CRLF for linefeed, so remove it when retrieve pre-formated text from text area.
* @param {Object} id
*/
function getTextAreaValue( id )
{
return CKEDITOR.document.getById( id ).getValue().replace(/\r/gi,'');
}
CKEDITOR.test.addTestCase( (function()
{
// Local references.
var assert = CKEDITOR.test.assert,
arrayAssert = YAHOO.util.ArrayAssert;
var doc = new CKEDITOR.dom.document( document );
// In these tests, we may "reset" the writer rules to avoid it formatting
// the output, making the assertion easier to the done. We don't need to
// test formatting features here, so this is ok.
var getDataProcessor = function()
{
var dataProcessor = new CKEDITOR.htmlDataProcessor();
dataProcessor.writer._.rules = [];
return dataProcessor;
};
/**
* IE always returning CRLF for line-feed, so remove it when retrieving
* pre-formated text from text area.
*/
function getTextAreaValue( id )
{
return CKEDITOR.document.getById( id ).getValue().replace( /\r/gi, '' );
}
function assumeElementContentAreSame( container, textareaId )
{
if( typeof container == 'string' )
container = doc.getById( container );
//Assume result document content
var html = getDataProcessor().toDataFormat( container.getHtml() );
assert.areSame( getTextAreaValue( textareaId ) , html );
}
function assumeElementAreSame( element, textareaId )
{
if( typeof element == 'string' )
element = doc.getById( element );
//Assume result document content
var html = getDataProcessor().toDataFormat( element.getOuterHtml() );
assert.areSame( getTextAreaValue( textareaId ) , html );
}
/**
*
* @param {String|CKEDITOR.dom.range} containerId|range Either the id of html container which contents are treated as range, or a exisiting range object.
* @param {Object} iteratorOption
* @param {Array} expectedTagList block elements tagName list in iteration orders.
*/
function assumeIterationSameAs( containerIdOrRange, iteratorOption, expectedTagList )
{
var range;
if( typeof containerIdOrRange == 'string' )
{
range = new CKEDITOR.dom.range( doc );
range.selectNodeContents( doc.getById( containerIdOrRange ) );
}
else
range = containerIdOrRange;
var iter = range.createIterator();
CKEDITOR.tools.extend( iter, iteratorOption, true );
var blockList = [], block;
while (( block = iter.getNextParagraph() ) )
{
blockList.push( block.getName() );
}
arrayAssert.itemsAreEqual( expectedTagList, blockList );
}
return {
/**
* Test iterating over table cells.
*/
test_iterator_table_cells : function()
{
var range = new CKEDITOR.dom.range( doc );
range.setStartAt( doc.getById( 'iterTarget2a' ), CKEDITOR.POSITION_AFTER_START );
range.setEndAt( doc.getById( 'iterTarget2b' ), CKEDITOR.POSITION_BEFORE_END );
assumeIterationSameAs( range, null, [ 'th', 'p', 'td' ]);
assumeElementContentAreSame( 'iterContainer2', 'iterResult2' );
},
/**
* Test iterating over list items.
*/
test_iterator_listItems : function()
{
var range = new CKEDITOR.dom.range( doc );
range.setStartAt( doc.getById( 'iterTarget3a' ), CKEDITOR.POSITION_AFTER_START );
range.setEndAt( doc.getById( 'iterTarget3b' ), CKEDITOR.POSITION_BEFORE_END );
assumeIterationSameAs( range, null, [ 'li', 'p', 'li' ,'p', 'li' ]);
assumeElementContentAreSame( 'iterContainer3', 'iterResult3' );
},
/**
* Test iterating over pseudo block.
*/
test_iterator_pseudoBlock : function()
{
var range = new CKEDITOR.dom.range( doc );
range.setStartAt( doc.getById( 'iterTarget4a' ), CKEDITOR.POSITION_AFTER_START );
range.setEndAt( doc.getById( 'iterTarget4b' ), CKEDITOR.POSITION_BEFORE_END );
assumeIterationSameAs( range, null, [ 'p', 'p' ] );
assumeElementContentAreSame( 'iterContainer4', 'iterResult4' );
},
/**
* Test collapsed range before paraghraph end.
*/
test_iterator_collapsed_before_paragraph : function()
{
var range = new CKEDITOR.dom.range( doc );
range.setStartAt( doc.getById( 'iterTarget7' ), CKEDITOR.POSITION_BEFORE_END );
assumeIterationSameAs( range, null, [ 'p' ]);
assumeElementContentAreSame( 'iterContainer7', 'iterResult7' );
},
/**
* Test range collapsed inside paraghraph.
*/
test_iterator_collapsed_inside_paragraph : function()
{
var range = new CKEDITOR.dom.range( doc );
range.setStart( doc.getById( 'para8' ).getFirst(), 3 );
assumeIterationSameAs( range, null, [ 'p' ]);
assumeElementContentAreSame( 'iterContainer8', 'iterResult8' );
},
/**
* Test fix paragraph-less content.
*/
test_iterator_establish_paragraph: function()
{
var range = new CKEDITOR.dom.range(doc);
range.setStartAt(doc.getById('iterTarget9'), CKEDITOR.POSITION_AFTER_START);
range.setEndAt(doc.getById('iterTarget9'), CKEDITOR.POSITION_BEFORE_END);
assumeIterationSameAs(range, null, ['p']);
assumeElementContentAreSame( 'iterContainer9', 'iterResult9');
},
/**
* Test iterating over more than one paragraphs. (#3352)
*/
test_iterator_multiple_paragraphs: function()
{
var range = new CKEDITOR.dom.range( doc );
range.setStartAt(doc.getById( 'iterTarget10a' ), CKEDITOR.POSITION_AFTER_START );
range.setEndAt(doc.getById( 'iterTarget10b' ), CKEDITOR.POSITION_BEFORE_END );
assumeIterationSameAs( range, null, [ 'p', 'p' ] );
},
name : document.title
};
})() );
//]]>
</script>
</head>
<body>
<div id="iterContainer2"><table summary="summary">
<caption>caption</caption>
<tr>
<th id="iterTarget2a">
head1</th>
</tr>
<tr>
<td><p>cell1</p></td>
</tr>
<tr>
<td id="iterTarget2b">cell2</td>
</tr>
</table></div>
<textarea id="iterResult2"><table summary="summary"><caption>caption</caption><tbody><tr><th id="iterTarget2a">head1</th></tr><tr><td><p>cell1</p></td></tr><tr><td id="iterTarget2b">cell2</td></tr></tbody></table></textarea>
<div id="iterContainer3"><ul>
<li id="iterTarget3a">item1</li>
<li><p>item2</p></li>
<li>
<ul><li>item3</li></ul>
<ul><li><p>item5</p></li></ul>
</li>
<li id="iterTarget3b">item5</li>
</ul></div>
<textarea id="iterResult3"><ul><li id="iterTarget3a">item1</li><li><p>item2</p></li><li><ul><li>item3</li></ul><ul><li><p>item5</p></li></ul></li><li id="iterTarget3b">item5</li></ul></textarea>
<div id="iterContainer4">
<div id="iterTarget4b"><p id="iterTarget4a">paragraph</p>text</div>
</div>
<textarea id="iterResult4"><div id="iterTarget4b"><p id="iterTarget4a">paragraph</p><p>text</p></div></textarea>
<div id="iterContainer7"><p id="iterTarget7">paragraph</p></div>
<textarea id="iterResult7"><p id="iterTarget7">paragraph</p></textarea>
<div id="iterContainer8"><p id="para8">paragraph</p></div>
<textarea id="iterResult8"><p id="para8">paragraph</p></textarea>
<form id="iterContainer9"><span id="iterTarget9">non-paragraph</span></form>
<textarea id="iterResult9"><p><span id="iterTarget9">non-paragraph</span></p></textarea>
<div id="iterContainer10"><p id="iterTarget10a">para1</p><p id="iterTarget10b">para2</p></div>
</body>
</html>
@@ -1,386 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Plugin: htmldataprocessor</title>
<link rel="stylesheet" type="text/css" href="../../test.css" />
<script type="text/javascript" src="../../../ckeditor.js"></script>
<script type="text/javascript" src="../../test.js"></script>
<script type="text/javascript">
//<![CDATA[
// Load the required plugins and launch the runner.
CKEDITOR.test.deferRunner = true;
CKEDITOR.plugins.load( 'htmldataprocessor' , function()
{
CKEDITOR.test.runner.run();
} );
var testCase;
CKEDITOR.test.addTestCase( testCase = (function()
{
// Local references.
var assert = CKEDITOR.test.assert;
var doc = new CKEDITOR.dom.document( document );
// In these tests, we may "reset" the writer rules to avoid it formatting
// the output, making the assertion easier to the done. We don't need to
// test formatting features here, so this is ok.
var getDataProcessor = function()
{
var dataProcessor = new CKEDITOR.htmlDataProcessor();
dataProcessor.writer._.rules = [];
return dataProcessor;
};
/**
* IE always returning CRLF for linefeed, so remove it when retrieve pre-formated text from text area.
* @param {Object} id
*/
function getTextAreaValue( id )
{
return CKEDITOR.document.getById( id ).getValue().replace(/\r/gi,'');
}
// These tests go far beyond the strict htmlDataProcessor code testing. We
// are actually testing the entire parsing system here. The combination of
// htmlParser and htmlWriter inside htmlDataProcessor is useful in this
// sense.
return {
test_toDataFormat_1a : function()
{
var element = new CKEDITOR.dom.element.createFromHtml( '<div><p>Test</p></div>' );
assert.areSame( '<p>Test</p>', getDataProcessor().toDataFormat( element.getHtml() ) );
},
test_toDataFormat_1b : function()
{
var element = new CKEDITOR.dom.element.createFromHtml( '<div><x:x>Test</x:x></div>' );
// IE adds the XML namespace tag.
if ( CKEDITOR.env.ie )
assert.areSame( '<?xml:namespace prefix="x" /><x:x>Test</x:x>', getDataProcessor().toDataFormat( element.getHtml() ) );
else
assert.areSame( '<x:x>Test</x:x>', getDataProcessor().toDataFormat( element.getHtml() ) );
},
test_toDataFormat_2a : function()
{
var element = new CKEDITOR.dom.element.createFromHtml( '<div><br /><p>Test</p></div>' );
assert.areSame( '<br /><p>Test</p>', getDataProcessor().toDataFormat( element.getHtml() ) );
},
test_toDataFormat_2b : function()
{
var element = new CKEDITOR.dom.element.createFromHtml( '<div><x:x></x:x><p>Test</p></div>' );
// IE adds the XML namespace tag.
if ( CKEDITOR.env.ie )
assert.areSame( '<?xml:namespace prefix="x" /><x:x></x:x><p>Test</p>', getDataProcessor().toDataFormat( element.getHtml() ) );
else
assert.areSame( '<x:x></x:x><p>Test</p>', getDataProcessor().toDataFormat( element.getHtml() ) );
},
test_toDataFormat_3 : function()
{
assert.areSame( '<div><x:x><p>Test</p></x:x></div>', getDataProcessor().toDataFormat( '<div><x:x><p>Test</p></div>' ) );
},
test_toDataFormat_ticket_2774 : function()
{
var element = new CKEDITOR.dom.element.createFromHtml( '<div><P class=MsoNormal><B><I><SPAN lang=EN-US><o:p>Test</o:p></SPAN></I></B></P></div>' );
// IE adds the XML namespace tag.
if ( CKEDITOR.env.ie )
assert.areSame( '<p class="MsoNormal"><b><i><span lang="EN-US"><?xml:namespace prefix="o" /><o:p>Test</o:p></span></i></b></p>', getDataProcessor().toDataFormat( element.getHtml() ) );
else
assert.areSame( '<p class="MsoNormal"><b><i><span lang="EN-US"><o:p>Test</o:p></span></i></b></p>', getDataProcessor().toDataFormat( element.getHtml() ) );
},
test_toDataFormat_ticket_3036_1 : function()
{
assert.areSame( '<input autocomplete="off" checked="checked" type="checkbox" />',
getDataProcessor().toDataFormat( '<INPUT type="checkbox" CHECKED autocomplete=off>' ) );
},
test_toDataFormat_ticket_3036_2 : function()
{
assert.areSame( '<input autocomplete="off" type="checkbox" unknown="" />',
getDataProcessor().toDataFormat( '<INPUT type="checkbox" UNKNOWN autocomplete=off>' ) );
},
test_toDataFormat_ticket_2886_1 : function()
{
var editor = CKEDITOR.instances.editor1;
var test = this;
var isReady = !!editor.dataProcessor;
if ( !isReady )
{
editor.on( 'instanceReady', function()
{
isReady = true;
} );
}
this.wait( function()
{
if ( !isReady )
{
test.wait( arguments.callee, 100 );
return;
}
assert.areSame( '<p>\n\t&nbsp;</p>\n',
editor.dataProcessor.toDataFormat( '<p></p>' ) );
}, 100 );
},
test_toDataFormat_ticket_2886_2 : function()
{
var dataProcessor = CKEDITOR.instances.editor1.dataProcessor;
var source = '<p>Some text<br><br><br></p>';
if ( CKEDITOR.env.ie )
source = '<p>Some text<br><br></p>';
assert.areSame( '<p>\n\tSome text<br />\n\t<br />\n\t&nbsp;</p>\n',
dataProcessor.toDataFormat( source ) );
},
test_toDataFormat_ticket_2886_3 : function()
{
var dataProcessor = CKEDITOR.instances.editor1.dataProcessor;
assert.areSame( '<p>\n\tSome text<br />\n\t<br />\n\t<br />\n\tSome more text</p>\n',
dataProcessor.toDataFormat( '<p>Some text<br><br><br>Some more text</p>' ) );
},
test_toDataFormat_ticket_2886_4 : function()
{
var dataProcessor = CKEDITOR.instances.editor1.dataProcessor;
assert.areSame( '<p>\n\tSome text<br />\n\t<br />\n\t&nbsp;</p>\n',
dataProcessor.toDataFormat( '<p>Some text<br><br>&nbsp;</p>' ) );
},
test_toDataFormat_ticket_2886_5 : function()
{
if ( CKEDITOR.env.ie )
return;
var dataProcessor = CKEDITOR.instances.editor1.dataProcessor;
assert.areSame( '<p>\n\t&nbsp;</p>\n',
dataProcessor.toDataFormat( '<p><br></p>' ) );
},
test_toDataFormat_ticket_2886_6 : function()
{
var dataProcessor = CKEDITOR.instances.editor1.dataProcessor;
var source = '<p><br><br></p>';
if ( CKEDITOR.env.ie )
source = '<p><br></p>';
assert.areSame( '<p>\n\t<br />\n\t&nbsp;</p>\n',
dataProcessor.toDataFormat( source ) );
},
test_toHtml_ticket_2886_1 : function()
{
var dataProcessor = CKEDITOR.instances.editor1.dataProcessor;
var expected = '<p><br /></p>';
if ( CKEDITOR.env.ie )
expected = '<p>\xa0</p>';
assert.areSame( expected, dataProcessor.toHtml( '<p></p>' ) );
},
test_toHtml_ticket_2886_2 : function()
{
var dataProcessor = CKEDITOR.instances.editor1.dataProcessor;
var expected = '<p>Some text<br />Some other text</p>';
assert.areSame( expected, dataProcessor.toHtml( '<p>Some text<br>Some other text</p>' ) );
},
test_toHtml_ticket_2886_3 : function()
{
var dataProcessor = CKEDITOR.instances.editor1.dataProcessor;
var expected = '<p>Some text<br /><br /></p>';
if ( CKEDITOR.env.ie )
expected = '<p>Some text<br />\xa0</p>';
assert.areSame( expected, dataProcessor.toHtml( '<p>Some text<br>&nbsp;</p>' ) );
},
test_toHtml_ticket_2886_4 : function()
{
var dataProcessor = CKEDITOR.instances.editor1.dataProcessor;
var expected = '<p>Some text</p>';
assert.areSame( expected, dataProcessor.toHtml( '<p>Some text<br></p>' ));
},
test_ticket_3407 : function()
{
var editor = CKEDITOR.instances.editor1,
dataProcessor = editor.dataProcessor,
config = editor.config;
config.protectedSource.push( /<\?[\s\S]*?\?>/g ); // PHP Code
config.protectedSource.push( /<%[\s\S]*?%>/g ); // ASP Code
config.protectedSource.push( /(<asp:[^\>]+>[\s|\S]*?<\/asp:[^\>]+>)|(<asp:[^\>]+\/>)/gi ); // ASP.Net Code
dataProcessor.writer = new CKEDITOR.htmlParser.basicWriter();
var html = getTextAreaValue( '_TEXTAREA1' );
var protectedHtml = dataProcessor.toHtml( html );
assert.areSame( html , dataProcessor.toDataFormat( protectedHtml ) );
},
test_ticket_3591 : function()
{
var editor = CKEDITOR.instances.editor1,
dataProcessor = editor.dataProcessor;
dataProcessor.writer = new CKEDITOR.htmlParser.basicWriter();
var html = getTextAreaValue( '_TEXTAREA_3591' );
var protectedHtml = dataProcessor.toHtml( html );
assert.areSame( getTextAreaValue( CKEDITOR.env.ie ? '_TEXTAREA_3591_protected_ie' : '_TEXTAREA_3591_protected' ),
protectedHtml );
assert.areSame( getTextAreaValue( '_TEXTAREA_3591' ),
dataProcessor.toDataFormat( protectedHtml ) );
},
test_ticket_3591_2 : function()
{
var editor = CKEDITOR.instances.editor1,
dataProcessor = editor.dataProcessor;
dataProcessor.writer = new CKEDITOR.htmlParser.basicWriter();
dataProcessor.writer.sortAttributes = true;
var html = getTextAreaValue( '_TEXTAREA_3591_2' );
var protectedHtml = dataProcessor.toHtml( html );
assert.areSame( getTextAreaValue( '_TEXTAREA_3591_2' ),
dataProcessor.toDataFormat( protectedHtml ) );
},
test_ticket_3869_1 : function()
{
var editor = CKEDITOR.instances.editor1,
dataProcessor = editor.dataProcessor;
dataProcessor.writer = new CKEDITOR.htmlParser.basicWriter();
var html = getTextAreaValue( '_TEXTAREA_3869_1' );
var protectedHtml = dataProcessor.toHtml( html );
assert.areSame( html , dataProcessor.toDataFormat( protectedHtml ) );
},
test_ticket_3869_2 : function()
{
var editor = CKEDITOR.instances.editor1,
dataProcessor = editor.dataProcessor,
config = editor.config;
config.protectedSource.push( /<\?[\s\S]*?\?>/g ); // PHP Code
config.protectedSource.push( /<%[\s\S]*?%>/g ); // ASP Code
config.protectedSource.push( /(<asp:[^\>]+>[\s|\S]*?<\/asp:[^\>]+>)|(<asp:[^\>]+\/>)/gi ); // ASP.Net Code
config.protectedSource.push(/<gallery[\s\S]*?<\/gallery>/gi ); // custom protected source
config.protectedSource.push(/<options[\s\S]*?<\/options>/gi );
dataProcessor.writer = new CKEDITOR.htmlParser.basicWriter();
var html = getTextAreaValue( '_TEXTAREA_3869_2' );
var protectedHtml = dataProcessor.toHtml( html );
assert.areSame( html , dataProcessor.toDataFormat( protectedHtml ) );
},
/**
* Test empty value attributes.
*/
test_ticket_3884 : function()
{
var editor = CKEDITOR.instances.editor1,
dataProcessor = editor.dataProcessor;
dataProcessor.writer = new CKEDITOR.htmlParser.basicWriter();
dataProcessor.writer.sortAttributes = true;
assert.areSame( '<p><a href="" name="">emptylink</a></p>',
dataProcessor.toDataFormat( dataProcessor.toHtml( '<p><a href="" name="">emptylink</a></p>' ) ) );
},
test_innerHtmlComments_ticket_3801 : function()
{
var editor = CKEDITOR.instances.editor1,
dataProcessor = editor.dataProcessor;
dataProcessor.writer = new CKEDITOR.htmlParser.basicWriter();
for ( var i = 1; i <= 7; i++ )
{
var html = getTextAreaValue( '_TEXTAREA_3801_' + i );
var protectedHtml = dataProcessor.toHtml( html );
assert.areSame( getTextAreaValue( '_TEXTAREA_3801_' + i ),
dataProcessor.toDataFormat( protectedHtml ) );
}
},
name : document.title
};
})() );
//window.onload = testCase.test_ticket_3884;
//]]>
</script>
</head>
<body>
<textarea id="editor1" class="ckeditor" cols="80" rows="10"></textarea>
<textarea id="_TEXTAREA1"><script type="text/javascript">alert('>');</script><table><tbody><tr><!--- IE doesn't handle this comment ---><!--[if gte IE 6 ]>
<![if lt IE 8 ]>
gIE conditional comments
<![endif]>
<![endif]--><td><%Response.Write(now())%></td><td><asp:control_name id="some_id" runat="server"/></td><td><?php
include ("head.html"); ?></td></tr></tbody></table><noscript>Your browser doesn't support JavaScript</noscript></textarea>
<textarea id="_TEXTAREA_3591"><object><param /><param /><embed></embed></object></textarea>
<textarea id="_TEXTAREA_3591_protected"><cke:object><cke:param></cke:param><cke:param></cke:param><cke:embed></cke:embed></cke:object></textarea>
<textarea id="_TEXTAREA_3591_protected_ie"><?xml:namespace prefix="cke" /><cke:object><cke:param></cke:param><cke:param></cke:param><cke:embed></cke:embed></cke:object></textarea>
<textarea id="_TEXTAREA_3801_1"><!-- foo --><p>bar</p></textarea>
<textarea id="_TEXTAREA_3801_2"><p><!-- foo -->bar</p></textarea>
<textarea id="_TEXTAREA_3801_3"><!-- foo --><p><!-- foo -->bar</p></textarea>
<textarea id="_TEXTAREA_3801_4"><p>bar</p><!-- foo --></textarea>
<textarea id="_TEXTAREA_3801_5">bar<!-- foo --></textarea>
<textarea id="_TEXTAREA_3801_6"><!-- foo -->bar</textarea>
<textarea id="_TEXTAREA_3801_7"><p><!-- foo -->bar</p><p><!-- foo -->bar</p></textarea>
<textarea id="_TEXTAREA_3869_1">#3869<script language="Javascript" type="text/javascript">
<!--
alert('-->');
//-->
</script></textarea>
<textarea id="_TEXTAREA_3869_2">#3869&lt;gallery&gt;
file.jpg
&lt;options name="test1" value="value1"&gt;&lt;/options&gt;
&lt;options name="test2" value="value2"&gt;&lt;/options&gt;
&lt;/gallery&gt;&lt;?
echo '&lt;script type="text/javascript"&gt;';
echo '&lt;!--alert("--&gt;");//--&gt;';
echo '&lt;/script&gt;';
?&gt;&lt;!--&lt;%Response.Write(now())%&gt;//--&gt;invalid&lt;?
echo 'bbb&lt;script&gt;
&lt;!--
ccc();&lt;!-- &lt;/script&gt;&lt;!-- &lt;/script&gt;
//--&gt;&lt;/script&gt;
&lt;script&gt;&lt;!--
&lt;!--
ffff();
//--&gt;&lt;/script&gt;
ddd';
?&gt;html</textarea>
<textarea id="_TEXTAREA_3591_2"><object classid="clsid"><param name="movie" value="movie.swf" /><embed src="movie.swf" type="application/x-shockwave-flash"></embed></object></textarea>
</body>
</html>
@@ -1,217 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Plugin: list</title>
<link rel="stylesheet" type="text/css" href="../../test.css" />
<script type="text/javascript" src="../../../ckeditor.js"></script>
<script type="text/javascript" src="../../test.js"></script>
<script type="text/javascript">
//<![CDATA[
/**
* Load the editor and wait for fully interactable.
* @param {Object} elementId
* @parma {Object} mode
* @param {Object} config
* @param {Object} callback Continuation with {@param editor}.
* @param {Object} context
*/
function prepareEditor( elementId, mode, config, callback, context )
{
CKEDITOR.on( 'instanceReady',
function( evt )
{
var isMe = mode == CKEDITOR.ELEMENT_MODE_REPLACE ?
evt.editor.name == elementId
: evt.editor.element.$ ==
document.getElementById( elementId );
if ( isMe )
{
var editor = evt.editor;
// Force result data unformatted.
editor.dataProcessor.writer._.rules = {};
callback.call( context, editor );
}
}, this );
mode = mode || CKEDITOR.ELEMENT_MODE_REPLACE;
switch( mode )
{
case CKEDITOR.ELEMENT_MODE_REPLACE :
CKEDITOR.replace( elementId, config );
break;
case CKEDITOR.ELEMENT_MODE_APPENDTO :
CKEDITOR.appendTo( elementId, config );
break;
}
}
/**
* IE always returning CRLF for line-feed, so remove it when retrieving
* pre-formated text from text area.
*/
function getTextAreaValue( id )
{
return CKEDITOR.document.getById( id ).getValue().replace( /\r/gi, '' );
}
CKEDITOR.test.addTestCase( ( function()
{
// Local references.
var assert = CKEDITOR.test.assert,
doc = CKEDITOR.document,
action = YAHOO.util.UserAction,
selector = YAHOO.util.Selector;
/**
* Set the range with the start/end position specified by the locator, which in form of bookmark2.
* @param {Object} range
* @param {Array} startPosition range start path including offset
* @param {Array|Boolean} endPositoin range end path including offset or is collapsed
*/
function setRange( range, startPosition, endPositoin )
{
var bm = {
end : null,
start : null,
is2: true,
startOffset : 0,
endoffset : 0
};
bm.start = startPosition.slice( 0, startPosition.length - 1 );
bm.startOffset = startPosition[ startPosition.length -1];
if( endPositoin === true )
{
bm.end = bm.start.slice();
bm.endOffset = bm.startOffset;
}
else
{
bm.end = endPositoin.slice( 0, endPositoin.length - 1 );
bm.endOffset = endPositoin[ endPositoin.length -1 ];
}
range.moveToBookmark( bm );
}
return {
/**
* Test remove numbered list with 'enterMode = BR'.
*/
test_ticket_3151 : function()
{
prepareEditor( 'test_ticket_3151_editor', null,
{ enterMode : CKEDITOR.ENTER_BR },
function( editor )
{
this.resume( function()
{
editor.focus();
var doc = editor.document,
range = new CKEDITOR.dom.range( doc );
setRange( range, [ 1, 0, 0, 0, 0 ], true );
var sel = editor.getSelection();
sel.selectRanges( [ range ] );
// Waiting for 'comand state' effected.
this.wait( function(){
// Remove list.
editor.execCommand( 'numberedlist' );
assert.areSame( getTextAreaValue( 'test_ticket_3151_result' ),
editor.getData(),
'Remove list result not correct.' );
}, 1000 );
} );
}, this );
this.wait();
},
/**
* Test merge newlist with previous list.
*/
test_ticket_3820 : function()
{
prepareEditor( 'test_ticket_3820_editor', null,
{ enterMode : CKEDITOR.ENTER_BR },
function( editor )
{
this.resume( function()
{
editor.focus();
var doc = editor.document,
range = new CKEDITOR.dom.range( doc );
setRange( range, [ 1, 1, 0 ], true );
var sel = editor.getSelection();
sel.selectRanges( [ range ] );
// Waiting for 'comand state' effected.
this.wait( function(){
// Remove list.
editor.execCommand( 'bulletedlist' );
assert.areSame( getTextAreaValue( 'test_ticket_3820_result' ),
editor.getData(),
'Merge list result not correct.' );
}, 1000 );
} );
}, this );
this.wait();
},
/**
* Test remove list first list item not merging with previous text node.
*/
test_ticket_3836 : function()
{
prepareEditor( 'test_ticket_3836_editor', null,
{ enterMode : CKEDITOR.ENTER_BR },
function( editor )
{
this.resume( function()
{
this.wait( function ()
{
editor.focus();
var doc = editor.document,
range = new CKEDITOR.dom.range( doc );
setRange( range, [ 1, 1, 0, 0 ], [ 1, 1, 1, 1 ] );
var sel = editor.getSelection();
sel.selectRanges( [ range ] );
// Waiting for 'comand state' effected.
this.wait( function(){
// Remove list.
editor.execCommand( 'bulletedlist' );
assert.areSame( getTextAreaValue( 'test_ticket_3836_result' ),
editor.getData(),
'Remove list result not correct.' );
}, 1000 );
}, 1000 );
} );
}, this );
this.wait();
},
name :document.title
};
} )() );
//]]>
</script>
</head>
<body>￘
<textarea id="test_ticket_3151_editor"><ol><li>text</li></ol></textarea>
<textarea id="test_ticket_3151_result">text</textarea>
<textarea id="test_ticket_3820_editor"><ul><li>bullet line 1</li><li>bullet line 2</li></ul><p>Second line</p></textarea>
<textarea id="test_ticket_3820_result"><ul><li>bullet line 1</li><li>bullet line 2</li><li>Second line</li></ul></textarea>
<textarea id="test_ticket_3773_editor"><ol><li>line1</li><li>line2</li></ol></textarea>
<textarea id="test_ticket_3773_result">line1<br />line2</textarea>
<textarea id="test_ticket_3836_editor">line1<ul><li>item1</li><li>item2</li></ul>line2</textarea>
<textarea id="test_ticket_3836_result">line1<br />item1<br />item2<br />line2</textarea>
</body>
</html>
@@ -1,49 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Plugin: selection</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="../../test.css" />
<script type="text/javascript" src="../../../ckeditor.js"></script>
<script type="text/javascript" src="../../test.js"></script>
<script type="text/javascript">
//<![CDATA[
CKEDITOR.plugins.load( [ 'selection' ] );
//]]>
</script>
<script type="text/javascript">
//<![CDATA[
CKEDITOR.test.addTestCase( (function()
{
var assert = CKEDITOR.test.assert;
var doc = new CKEDITOR.dom.document( document );
return {
test_selection_ie : function()
{
if ( !CKEDITOR.env.ie )
return;
var $range = document.body.createTextRange();
$range.findText( 'This' );
$range.select();
var range = doc.getSelection().getRanges()[ 0 ];
range.select();
var $range2 = document.selection.createRange();
assert.areSame( 0, $range.compareEndPoints( 'StartToStart', $range2 ), 'StartToStart' );
assert.areSame( 0, $range.compareEndPoints( 'EndToEnd', $range2 ), 'EndToEnd' );
},
name : document.title
};
})());
//]]>
</script>
</head>
<body>
<p>
This is some <strong>sample text</strong>. You are using <a href="http://www.fckeditor.net/">CKEditor</a>.</p>
</body>
</html>
@@ -1,596 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Plugin: styles</title>
<link rel="stylesheet" type="text/css" href="../../test.css" />
<script type="text/javascript" src="../../../ckeditor.js"></script>
<script type="text/javascript" src="../../test.js"></script>
<script type="text/javascript">
CKEDITOR.plugins.load( [ 'styles', 'domiterator', 'htmldataprocessor' ] );
</script>
<script type="text/javascript">
//<![CDATA[
var testCase;
CKEDITOR.test.addTestCase( testCase = (function()
{
// Local references.
var assert = CKEDITOR.test.assert;
var getInnerHtml = CKEDITOR.test.getInnerHtml;
function getInnerHtmlParsed( element )
{
var dataProcessor = new CKEDITOR.htmlDataProcessor();
dataProcessor.writer = new CKEDITOR.htmlParser.basicWriter();
return dataProcessor.toDataFormat( getInnerHtml( element, false ) );
}
var doc = new CKEDITOR.dom.document( document );
return {
test_inline1 : function()
{
doc.getById( '_P1' ).setHtml( 'this is some sample text' );
var range = new CKEDITOR.dom.range( doc );
range.setStart( doc.getById( '_P1' ).getFirst(), 5 );
range.setEnd( doc.getById( '_P1' ).getFirst(), 7 );
var style = new CKEDITOR.style( { element : 'b' } );
style.applyToRange( range );
assert.areSame( 'this <b>is</b> some sample text', getInnerHtml( '_P1' ) );
},
test_inline2 : function()
{
doc.getById( '_P1' ).setHtml( 'this <b>is some </b>sample text' );
var range = new CKEDITOR.dom.range( doc );
range.setStart( doc.getById( '_P1' ).getChild( 1 ), 0 );
range.setEnd( doc.getById( '_P1' ), 2 );
var style = new CKEDITOR.style( { element : 'i' } );
style.applyToRange( range );
assert.areSame( 'this <i><b>is some </b></i>sample text', getInnerHtml( '_P1' ) );
},
test_inline3 : function()
{
doc.getById( '_P1' ).setHtml( 'this <b>is some </b>sample text' );
var range = new CKEDITOR.dom.range( doc );
range.setStart( doc.getById( '_P1' ).getChild( 1 ), 0 );
range.setEnd( doc.getById( '_P1' ).getChild( 1 ).getFirst(), 2 );
var style = new CKEDITOR.style( { element : 'i' } );
style.applyToRange( range );
assert.areSame( 'this <b><i>is</i> some </b>sample text', getInnerHtml( '_P1' ) );
},
// Inline - Remove inner duplicates.
test_inline4 : function()
{
doc.getById( '_P1' ).setHtml( 'this <b>is some </b>sample text' );
var range = new CKEDITOR.dom.range( doc );
range.setStart( doc.getById( '_P1' ), 0 );
range.setEnd( doc.getById( '_P1' ), 3 );
var style = new CKEDITOR.style( { element : 'b' } );
style.applyToRange( range );
assert.areSame( '<b>this is some sample text</b>', getInnerHtml( '_P1' ) );
},
// Inline - Merge with next.
test_inline5 : function()
{
doc.getById( '_P1' ).setHtml( 'this <b>is some </b>sample text' );
var range = new CKEDITOR.dom.range( doc );
range.setStart( doc.getById( '_P1' ), 0 );
range.setEnd( doc.getById( '_P1' ), 1 );
var style = new CKEDITOR.style( { element : 'b' } );
style.applyToRange( range );
assert.areSame( '<b>this is some </b>sample text', getInnerHtml( '_P1' ) );
},
// Inline - Merge with previous.
test_inline6 : function()
{
doc.getById( '_P1' ).setHtml( 'this <b>is some </b>sample text' );
var range = new CKEDITOR.dom.range( doc );
range.setStart( doc.getById( '_P1' ), 2 );
range.setEnd( doc.getById( '_P1' ).getChild( 2 ), 6 );
var style = new CKEDITOR.style( { element : 'b' } );
style.applyToRange( range );
assert.areSame( 'this <b>is some sample</b> text', getInnerHtml( '_P1' ) );
},
// Inline - Merge several with next.
test_inline7 : function()
{
doc.getById( '_P1' ).setHtml( '<i><u>this </u></i><b><i><u>is</u> some</i> sample</b> text' );
var range = new CKEDITOR.dom.range( doc );
range.setStart( doc.getById( '_P1' ), 0 );
range.setEnd( doc.getById( '_P1' ), 1 );
var style = new CKEDITOR.style( { element : 'b' } );
style.applyToRange( range );
assert.areSame( '<b><i><u>this is</u> some</i> sample</b> text', getInnerHtml( '_P1' ) );
},
// Inline - Merge several with previous.
test_inline8 : function()
{
doc.getById( '_P1' ).setHtml( 'this <b>is <i>some <u>sample</u></i></b><i><u> text</u></i>' );
var range = new CKEDITOR.dom.range( doc );
range.setStart( doc.getById( '_P1' ), 2 );
range.setEnd( doc.getById( '_P1' ), 3 );
var style = new CKEDITOR.style( { element : 'b' } );
style.applyToRange( range );
assert.areSame( 'this <b>is <i>some <u>sample text</u></i></b>', getInnerHtml( '_P1' ) );
},
test_inline9 : function()
{
doc.getById( '_P1' ).setHtml( 'this <i>is some </i>sample text' );
var range = new CKEDITOR.dom.range( doc );
range.setStart( doc.getById( '_P1' ), 0 );
range.setEnd( doc.getById( '_P1' ).getChild( 1 ), 0 );
var style = new CKEDITOR.style( { element : 'b' } );
style.applyToRange( range );
assert.areSame( '<b>this </b><i>is some </i>sample text', getInnerHtml( '_P1' ) );
},
test_inline10 : function()
{
doc.getById( '_P1' ).setHtml( 'this is some sample text' );
var range = new CKEDITOR.dom.range( doc );
range.setStart( doc.getById( '_P1' ), 0 );
range.setEnd( doc.getById( '_P1' ), 1 );
var style = new CKEDITOR.style(
{
element : 'b',
attributes :
{
lang : 'it',
title : 'test'
},
styles :
{
'font-size' : '10pt',
'text-decoration' : 'line-through'
}
} );
style.applyToRange( range );
assert.areSame( '<b lang="it" style="font-size:10pt;text-decoration:line-through;" title="test">this is some sample text</b>', getInnerHtml( '_P1' ) );
},
test_inline11 : function()
{
doc.getById( '_P1' ).setHtml( 'this <b lang="it" class="sample">is</b> <b lang="it" style="font-size: 10pt; text-decoration: line-through;" title="test">some sample</b> <b>t</b>ext' );
var range = new CKEDITOR.dom.range( doc );
range.setStart( doc.getById( '_P1' ), 0 );
range.setEnd( doc.getById( '_P1' ), 7 );
var style = new CKEDITOR.style(
{
element : 'b',
attributes :
{
lang : 'it',
title : 'test'
},
styles :
{
'font-size' : '10pt',
'text-decoration' : 'line-through'
}
} );
style.applyToRange( range );
assert.areSame( '<b lang="it" style="font-size: 10pt; text-decoration: line-through;" title="test">this <b class="sample">is</b> some sample text</b>', getInnerHtml( '_P1' ) );
},
test_inline11 : function()
{
doc.getById( '_P1' ).setHtml( 'this <span class="a">is</span> some <span class="b">sample</span> text' );
var range = new CKEDITOR.dom.range( doc );
range.setStart( doc.getById( '_P1' ), 0 );
range.setEnd( doc.getById( '_P1' ), 5 );
var style = new CKEDITOR.style( { element : 'span', attributes : { 'class' : 'b' } } );
style.applyToRange( range );
assert.areSame( '<span class="b">this <span class="a">is</span> some sample text</span>', getInnerHtml( '_P1' ) );
},
test_inline12 : function()
{
doc.getById( '_P1' ).setHtml( 'this <span style="font-size:12pt; font-weight:600">is</span> some <span style="font-size:10px;">sample</span> text' );
var range = new CKEDITOR.dom.range( doc );
range.setStart( doc.getById( '_P1' ), 0 );
range.setEnd( doc.getById( '_P1' ), 5 );
var style = new CKEDITOR.style( { element : 'span', styles : { 'font-size' : '1.5em' } } );
style.applyToRange( range );
assert.areSame( '<span style="font-size:1.5em;">this <span style="font-weight:600;">is</span> some sample text</span>', getInnerHtml( '_P1' ) );
},
test_inline13 : function()
{
doc.getById( '_P1' ).setHtml( 'this <b>is some sample</b> text' );
var range = new CKEDITOR.dom.range( doc );
range.setStart( doc.getById( '_P1' ).getChild( 1 ).getFirst(), 3 );
range.setEnd( doc.getById( '_P1' ), 3 );
var style = new CKEDITOR.style( { element : 'i' } );
style.applyToRange( range );
assert.areSame( 'this <b>is <i>some sample</i></b><i> text</i>', getInnerHtml( '_P1' ) );
},
test_inline14 : function()
{
var para = doc.getById( '_P1' );
para.setHtml( 'this is some sample text' );
var range = new CKEDITOR.dom.range( doc );
range.setStart( para.getFirst(), 0 );
range.setEnd( para.getFirst(), 7 );
var style = new CKEDITOR.style( { element : 'b' } );
style.applyToRange( range );
assert.areSame( '<b>this is</b> some sample text', getInnerHtml( '_P1' ), 'First range' );
para.setHtml( para.getHtml() );
range = new CKEDITOR.dom.range( doc );
range.setStart( para.getFirst().getFirst(), 5 );
range.setEnd( para.getChild( 1 ), 5 );
style.applyToRange( range );
assert.areSame( '<b>this is some</b> sample text', getInnerHtml( '_P1' ), 'Second range' );
},
test_inline15 : function()
{
var para = doc.getById( '_P1' );
para.setHtml( 'this is some sample text' );
var range = new CKEDITOR.dom.range( doc );
range.setStart( para.getFirst(), 0 );
range.setEnd( para.getFirst(), 7 );
var style = new CKEDITOR.style( { element : 'span', styles : { 'font-family' : '#(family)' } }, { family : 'Arial,Helvetica,sans-serif' } );
style.applyToRange( range );
assert.areSame( '<span style="font-family:arial,helvetica,sans-serif;">this is</span> some sample text', getInnerHtml( '_P1' ), 'First range' );
para.setHtml( para.getHtml() );
range = new CKEDITOR.dom.range( doc );
range.setStart( para.getFirst().getFirst(), 5 );
range.setEnd( para.getChild( 1 ), 5 );
style = new CKEDITOR.style( { element : 'span', styles : { 'font-family' : '#(family)' } }, { family : 'Georgia,serif' } );
style.applyToRange( range );
assert.areSame( '<span style="font-family:arial,helvetica,sans-serif;">this <span style="font-family:georgia,serif;">is</span></span><span style="font-family:georgia,serif;"> some</span> sample text', getInnerHtml( '_P1' ), 'Second range' );
},
test_inline16 : function()
{
var para = doc.getById( '_P1' );
para.setHtml( '<b lang="pt" style="font-size:11pt;color:red;">this is some sample text</b>' );
var range = new CKEDITOR.dom.range( doc );
range.setStart( para.getFirst().getFirst(), 4 );
range.setEnd( para.getFirst(), 10 );
var style = new CKEDITOR.style( { element : 'b', styles : { color : 'red', 'font-weight' : '700' } } );
style.applyToRange( range );
assert.areSame( '<b lang="pt" style="color:red;font-size:11pt;">this<b style="font-weight:700;"> is some sample text</b></b>', getInnerHtml( '_P1' ), 'First range' );
},
test_inline_nobreak1 : function()
{
doc.getById( '_P1' ).setHtml( 'this is <a href="http://example.com/">some sample</a> text' );
var range = new CKEDITOR.dom.range( doc );
range.setStart( doc.getById( '_P1' ), 0 );
range.setEnd( doc.getById( '_P1' ).getChild( 1 ).getFirst(), 4 );
var style = new CKEDITOR.style( { element : 'b' } );
style.applyToRange( range );
assert.areSame( '<b>this is </b><a href="http://example.com/"><b>some</b> sample</a> text', getInnerHtml( '_P1' ) );
},
test_ticket_2040 : function()
{
doc.getById( '_P1' ).setHtml( 'This is some <strong>sample text<\/strong>. You are using <a href="http://www.fckeditor.net/">ckeditor<\/a>.' );
var range = new CKEDITOR.dom.range( doc );
range.setStart( doc.getById( '_P1' ), 1 );
range.setEnd( doc.getById( '_P1' ).getChild( 1 ).getFirst(), 6 );
var style = new CKEDITOR.style( { element : 'i' } );
style.applyToRange( range );
assert.areSame( 'this is some <strong><i>sample</i> text<\/strong>. you are using <a href="http://www.fckeditor.net/">ckeditor<\/a>.', getInnerHtml( '_P1' ) );
},
test_checkElementRemovable1 : function()
{
var element = CKEDITOR.dom.element.createFromHtml( '<b>Test</b>', doc );
var style = new CKEDITOR.style( { element : 'b' } );
assert.isTrue( style.checkElementRemovable( element ) );
},
test_checkElementRemovable2 : function()
{
var element = CKEDITOR.dom.element.createFromHtml( '<b>Test</b>', doc );
var style = new CKEDITOR.style( { element : 'i' } );
assert.isFalse( style.checkElementRemovable( element ) );
},
test_checkElementRemovable3 : function()
{
var element = CKEDITOR.dom.element.createFromHtml( '<b>Test</b>', doc );
var style = new CKEDITOR.style( { element : 'b', attributes : { lang : 'pt' } } );
assert.isTrue( style.checkElementRemovable( element ) );
},
test_checkElementRemovable4 : function()
{
var element = CKEDITOR.dom.element.createFromHtml( '<b>Test</b>', doc );
var style = new CKEDITOR.style( { element : 'b', attributes : { lang : 'pt' } } );
assert.isFalse( style.checkElementRemovable( element, true ) );
},
test_checkElementRemovable5 : function()
{
var element = CKEDITOR.dom.element.createFromHtml( '<span lang="pt" style="color : #fff">Test</span>', doc );
var style = new CKEDITOR.style( { element : 'span', attributes : { lang : 'pt' }, style : { color : '#ffffff' } } );
assert.isTrue( style.checkElementRemovable( element, true ) );
},
test_checkElementRemovable6 : function()
{
var element = CKEDITOR.dom.element.createFromHtml( '<span lang="pt" style="color : #fff">Test</span>', doc );
var style = new CKEDITOR.style( { element : 'span', attributes : { lang : 'pt' }, style : { color : '#fffff0' } } );
assert.isTrue( style.checkElementRemovable( element, true ) );
},
test_checkElementRemovable7 : function()
{
var element = CKEDITOR.dom.element.createFromHtml( '<span lang="pt" style="color : #fff">Test</span>', doc );
var style = new CKEDITOR.style( { element : 'span', attributes : { lang : 'fr' }, style : { color : '#ffffff' } } );
assert.isFalse( style.checkElementRemovable( element, true ) );
},
test_checkElementRemovable8 : function()
{
var element = CKEDITOR.dom.element.createFromHtml( '<span lang="pt" style="font-size: 10px">Test</span>', doc );
var style = new CKEDITOR.style( { element : 'span', attributes : { lang : 'pt' , style : 'font-size:10px;' } } );
assert.isTrue( style.checkElementRemovable( element, true ) );
},
test_ticket_3091 : function()
{
var element = doc.getById( '_P1' );
element.setHtml( 'outter<table><tr><td>text</td></tr></table>outter' );
var range = new CKEDITOR.dom.range( doc );
range.selectNodeContents( element );
var styleDef =
{
element : 'span',
styles : { 'font-family' : '#(family)' },
overrides : [ { element : 'font', attributes : { 'face' : null } } ]
};
var style = new CKEDITOR.style( styleDef, { 'family' : 'Arial,Helvetica,sans-serif' } );
style.applyToRange( range );
style = new CKEDITOR.style( styleDef, { 'family' : 'Comic Sans MS,cursive' } );
style.applyToRange( range );
style = new CKEDITOR.style( styleDef, { 'family' : 'Courier New,Courier,monospace' } );
style.applyToRange( range );
assert.areSame( '<span style="font-family:couriernew,courier,monospace;">outter</span><table><tbody><tr><td><span style="font-family:couriernew,courier,monospace;">text</span></td></tr></tbody></table><span style="font-family:couriernew,courier,monospace;">outter</span>', getInnerHtml( element ) );
},
test_ticket_3091_2 : function()
{
var element = doc.getById( '_P1' );
element.setHtml( 'outter<p>text</p>outter' );
var range = new CKEDITOR.dom.range( doc );
range.selectNodeContents( element );
var style = new CKEDITOR.style( { element : 'i', attributes : { title : 'x' } } );
style.applyToRange( range );
assert.areSame( '<i title="x">outter</i><p><i title="x">text</i></p><i title="x">outter</i>', getInnerHtml( element ), 'First step failed' );
style = new CKEDITOR.style( { element : 'i', attributes : { title : 'y' } } );
style.applyToRange( range );
assert.areSame( '<i title="y">outter</i><p><i title="y">text</i></p><i title="y">outter</i>', getInnerHtml( element ), 'Second step failed' );
style = new CKEDITOR.style( { element : 'i', attributes : { title : 'z' } } );
style.applyToRange( range );
assert.areSame( '<i title="z">outter</i><p><i title="z">text</i></p><i title="z">outter</i>', getInnerHtml( element ), 'Third step failed' );
},
// TC based on the state of the second step in the above test, before it got fixed.
test_ticket_3091_3 : function()
{
var element = doc.getById( '_P1' );
element.setHtml( '<p><i title="y">text</i><i title="x"></i></p><i title="y">outter</i><i title="x"></i>' );
var range = new CKEDITOR.dom.range( doc );
range.selectNodeContents( element );
var style = new CKEDITOR.style( { element : 'i', attributes : { title : 'z' } } );
style.applyToRange( range );
assert.areSame( '<p><i title="z">text</i></p><i title="z">outter</i>', getInnerHtml( element ) );
},
// Remove inline style when range collapsed at element boundaries,
// move out of the removing-style element, with inner style copied.
test_ticket_3309 : function()
{
var element = doc.getById( '_P1' );
element.setHtml( 'this is some <b><i id="_i1">styles</i></b> text' );
// This is some <b><i>styles^</i></b> text
var range = new CKEDITOR.dom.range( doc );
range.setStartAt( doc.getById( '_i1' ), CKEDITOR.POSITION_BEFORE_END );
var style = new CKEDITOR.style( { element : 'b' } );
style.removeFromRange( range );
assert.areSame( 'this is some <b><i id="_i1">styles</i></b><i></i> text', getInnerHtml( element ) );
},
// No inner style preserved, simply move out of the removing-style element.
test_ticket_3309_2 : function()
{
var element = doc.getById( '_P1' );
element.setHtml( 'this is some <b id="_b1">styles</b> text' );
// This is some <b>styles^</b> text
var range = new CKEDITOR.dom.range( doc );
range.setStartAt( doc.getById( '_b1' ), CKEDITOR.POSITION_BEFORE_END );
var style = new CKEDITOR.style( { element : 'b' } );
style.removeFromRange( range );
// This is some <b>styles</b>^ text
assert.areSame( doc.getById( '_b1' ).getParent().$, range.startContainer.$ );
assert.areSame( 2, range.startOffset );
assert.areSame( 'this is some <b id="_b1">styles</b> text', getInnerHtml( element ) );
},
// With style overrides.
test_ticket_3309_3 : function()
{
var element = doc.getById( '_P1' );
element.setHtml( 'text <strong><bold><span><b><i id="_i1">styles</i></b></span></bold></strong>' );
// text <strong><bold><span><b><i id="_i1">^styles</i></b></span></bold></strong>
var range = new CKEDITOR.dom.range( doc );
range.setStartAt( doc.getById( '_i1' ), CKEDITOR.POSITION_AFTER_START );
var style = new CKEDITOR.style( { element : 'b' , overrides : [ 'strong', 'bold' ] } );
style.removeFromRange( range );
// text <span><i>^</i></span><bold><span><b><i>styles</i></b></span></bold>
assert.areSame( 'text <span><i></i></span><strong><bold><span><b><i id="_i1">styles</i></b></span></bold></strong>', getInnerHtml( element ) );
},
// Test convert multiple paragraphs to one <pre>.
test_ticket_3188 : function()
{
var element = doc.getById( '_P1' );
element.setHtml( '<p id="_P2">\nparagraph1<br /><br />para\t\ngraph2</p><p id="_P3">\nparagraph3\n</p>' );
// <p id="_P2">[paragraph1</p><p id="_P3">paragraph2]</p>
var range = new CKEDITOR.dom.range( doc );
range.setStartAt( doc.getById( '_P2' ), CKEDITOR.POSITION_AFTER_START );
range.setEndAt( doc.getById( '_P3' ), CKEDITOR.POSITION_BEFORE_END );
var style = new CKEDITOR.style( { element : 'pre' } );
style.applyToRange( range );
var result = getInnerHtmlParsed( element );
assert.areSame( '<pre>paragraph1\n\npara graph2\n\nparagraph3</pre>', result );
},
// Test convert one <pre> to multiple paragraphs.
test_ticket_3188_2 : function()
{
var element = doc.getById( '_P1' );
element.setHtml( '<pre>\n\tparagraph1\t\tparagraph1\nparagraph2\n\t\n\tpara graph3\n</pre>' );
//<pre>[\n\tparagraph1\t\tparagraph1\nparagraph2\n\t\n\tpara graph3\n]</pre>
var range = new CKEDITOR.dom.range( doc );
range.selectNodeContents( doc.getById( '_P1' ).getFirst() );
var style = new CKEDITOR.style( { element : 'p' } );
style.applyToRange( range );
var result = getInnerHtmlParsed( element );
if ( CKEDITOR.env.webkit || CKEDITOR.env.opera )
result = result.replace( /\xa0/g, '&nbsp;' );
assert.areSame( '<p>&nbsp;paragraph1&nbsp; paragraph1<br />paragraph2</p><p>&nbsp;para&nbsp;&nbsp; graph3</p>',
result );
},
name : document.title
};
})() );
//window.onload = testCase.test_ticket_3188;
//]]>
</script>
</head>
<body>
<div id="_P1"></div>
</body>
</html>
@@ -1,81 +0,0 @@
/*
Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
body
{
margin:10px;
}
#testLogger
{
position: absolute;
right: 10px;
left: 10px;
top: 10px;
font-family: Monospace;
border: solid 2px black;
background: #ffffff;
padding: 0px;
}
/* IE6 */
* html #testLogger
{
width: 100%;
}
#testLogger.testAll
{
position: static;
}
#testLogger pre
{
margin: 0 0 0 40px;
background-color: #f0f0f0;
padding: 1px 4px 1px 4px;
}
#testLogger div
{
margin: 2px;
}
#testLogger div div
{
margin-left: 20px;
}
.testEntry
{
padding: 5px;
margin: 0 !important;
}
.testEntry:hover
{
background-color: #ffff99;
}
.testFail, .testPass, .testIgnore
{
padding-left: 3px;
padding-right: 3px;
}
.testFail
{
background-color: #ff0000;
}
.testPass
{
background-color: #00ff00;
}
.testIgnore
{
background-color: #f1f100;
}
@@ -1,93 +0,0 @@
/*
Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
/*jsl:import yuitest.js*/
// Inject the YUI Test files into the page.
// URLs copied from http://developer.yahoo.com/yui/yuitest/
document.write(
'<script type="text/javascript" src="' +
CKEDITOR.basePath +
'_tests/yuitest.js"></script>' );
document.write(
'<script type="text/javascript" src="' +
CKEDITOR.basePath +
'_source/' +
'core/test.js"></script>' );
(function()
{
var createLogger = function()
{
document.body.appendChild( document.createElement( 'div' ) ).id = 'testLogger';
};
var outputResult = function( text )
{
var div = document.getElementById('testLogger').appendChild( document.createElement( 'div' ) );
div.className = 'testEntry';
div.innerHTML = text;
};
var htmlEncode = function( data )
{
if ( typeof data != 'string' )
return data;
return data.replace(
/&/g, '&amp;' ).replace(
/</g, '&lt;' ).replace(
/>/g, '&gt;' );
};
window.onload = function()
{
createLogger();
var runner = YAHOO.tool.TestRunner;
var handleTestResult = function( data )
{
switch( data.type )
{
case runner.TEST_FAIL_EVENT:
var expected = data.error.expected;
if ( expected && expected.nodeType )
expected += ' (' + ( expected.nodeType == 1 ? expected.nodeName : expected.nodeValue ) + ')';
var actual = data.error.actual;
if ( actual && actual.nodeType )
actual += ' (' + ( actual.nodeType == 1 ? actual.nodeName : actual.nodeValue ) + ')';
outputResult(
'<span class="testFail">FAIL</span> Test named "' + data.testName +
'" failed with message: "' + htmlEncode( data.error.message ) +
'".<div>Expected:</div><pre>' + htmlEncode( expected ) +
'<br></pre><div>Actual:</div><pre>' + htmlEncode( actual ) + '<br></pre>' );
break;
case runner.TEST_PASS_EVENT:
outputResult( '<span class="testPass">PASS</span> Test named "' + data.testName + '" passed.' );
break;
case runner.TEST_IGNORE_EVENT:
outputResult( '<span class="testIgnore">IGNORE</span> Test named "' + data.testName + '" was ignored.' );
break;
}
};
runner.subscribe(runner.TEST_FAIL_EVENT, handleTestResult);
runner.subscribe(runner.TEST_IGNORE_EVENT, handleTestResult);
runner.subscribe(runner.TEST_PASS_EVENT, handleTestResult);
if ( window.parent && window.parent.onTestStart )
{
runner.subscribe(runner.TEST_CASE_BEGIN_EVENT, window.parent.onTestStart);
runner.subscribe(runner.TEST_CASE_COMPLETE_EVENT, window.parent.onTestComplete);
}
if ( !CKEDITOR.test.deferRunner )
runner.run();
};
})();
@@ -1,114 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>CKEditor Core Tests Runner</title>
<link rel="stylesheet" type="text/css" href="test.css" />
<script type="text/javascript">
//<![CDATA[
var testList =
[
'core/ajax',
'core/bootstrap',
'core/ckeditor',
'core/editor',
'core/env',
'core/event',
'core/plugins',
'core/scriptloader',
'core/tools',
'core/xml',
'core/dom/document',
'core/dom/documentfragment',
'core/dom/element',
'core/dom/node',
'core/dom/range',
'core/dom/text',
'core/dom/walker',
'core/dom/window',
'core/htmlparser/fragment',
'core/htmlparser/htmlparser',
'plugins/domiterator/domiterator',
'plugins/htmldataprocessor/htmldataprocessor',
'plugins/link/link',
'plugins/list/list',
'plugins/styles/styles',
'plugins/selection/selection'
];
var currentTest;
var currentTime;
var totalTime;
var totalFailed = 0;
var totalPassed = 0;
function runTest()
{
currentTest = testList.shift();
if ( currentTest )
document.getElementById( 'testFrame' ).src = currentTest + '.html';
}
function onTestStart( data )
{
var div = document.getElementById('testLogger').appendChild( document.createElement( 'div' ) );
div.className = 'testEntry';
div.innerHTML = 'Testing "<a href="' + currentTest + '.html" target="_blank">' + data.testCase.name + '</a>"...';
currentTime = new Date();
if ( !totalTime )
totalTime = currentTime;
}
function onTestComplete( data )
{
var finishTime = new Date();
var failed = data.results.failed;
var passed = data.results.passed;
var html = '<span class="testIgnore">Unknown</span>';
if ( failed > 0 )
html = '<span class="testFail">FAIL</span>';
else
html = '<span class="testPass">PASS</span>';
html += ' Test "<a href="' + currentTest + '.html" target="_blank">' + data.testCase.name + '</a>" (' + failed + ' failed / ' + passed + ' passed) - ' + ( finishTime - currentTime ) + 'ms';
var div = document.getElementById('testLogger').lastChild;
div.innerHTML = html;
totalFailed += failed;
totalPassed += passed;
document.getElementById('testFailed').innerHTML = totalFailed;
document.getElementById('testPassed').innerHTML = totalPassed;
document.getElementById('totalTime').innerHTML = finishTime - totalTime;
document.title = totalFailed + ' failed / ' + totalPassed + ' passed - CKEditor Core Tests Runner';
runTest();
}
window.onload = function()
{
// IE was "caching" the latest logged div on refresh. So, we must clean it
// on startup.
document.getElementById('testLogger').innerHTML = '';
runTest();
};
//]]>
</script>
</head>
<body>
<h1>CKEditor Core Tests Runner (<span id="testFailed">0</span> failed / <span id="testPassed">0</span> passed) - <span id="totalTime">0</span>ms</h1>
<iframe id="testFrame" src="javascript:;" style="position: absolute; width: 50px; height: 50px; left: -1000px">
</iframe>
<div id="testLogger" class="testAll"></div>
</body>
</html>
-75
View File
@@ -1,75 +0,0 @@
/*jsl:ignoreall*/
/*
Copyright (c) 2008, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.net/yui/license.txt
version: 2.5.2
== BEGIN LICENSE ==
Software License Agreement (BSD License)
Copyright (c) 2008, Yahoo! Inc.
All rights reserved.
Redistribution and use of this software in source and binary forms, with or without modification, are
permitted provided that the following conditions are met:
* Redistributions of source code must retain the above
copyright notice, this list of conditions and the
following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the
following disclaimer in the documentation and/or other
materials provided with the distribution.
* Neither the name of Yahoo! Inc. nor the names of its
contributors may be used to endorse or promote products
derived from this software without specific prior
written permission of Yahoo! Inc.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
== END LICENSE ==
*/
/*
This file contains the YUI Tester code as well as its dependencies, in the
order defined at:
http://developer.yahoo.com/yui/yuitest/
*/
// yahoo-dom-event/yahoo-dom-event.js
if(typeof YAHOO=="undefined"||!YAHOO){var YAHOO={};}YAHOO.namespace=function(){var A=arguments,E=null,C,B,D;for(C=0;C<A.length;C=C+1){D=A[C].split(".");E=YAHOO;for(B=(D[0]=="YAHOO")?1:0;B<D.length;B=B+1){E[D[B]]=E[D[B]]||{};E=E[D[B]];}}return E;};YAHOO.log=function(D,A,C){var B=YAHOO.widget.Logger;if(B&&B.log){return B.log(D,A,C);}else{return false;}};YAHOO.register=function(A,E,D){var I=YAHOO.env.modules;if(!I[A]){I[A]={versions:[],builds:[]};}var B=I[A],H=D.version,G=D.build,F=YAHOO.env.listeners;B.name=A;B.version=H;B.build=G;B.versions.push(H);B.builds.push(G);B.mainClass=E;for(var C=0;C<F.length;C=C+1){F[C](B);}if(E){E.VERSION=H;E.BUILD=G;}else{YAHOO.log("mainClass is undefined for module "+A,"warn");}};YAHOO.env=YAHOO.env||{modules:[],listeners:[]};YAHOO.env.getVersion=function(A){return YAHOO.env.modules[A]||null;};YAHOO.env.ua=function(){var C={ie:0,opera:0,gecko:0,webkit:0,mobile:null,air:0};var B=navigator.userAgent,A;if((/KHTML/).test(B)){C.webkit=1;}A=B.match(/AppleWebKit\/([^\s]*)/);if(A&&A[1]){C.webkit=parseFloat(A[1]);if(/ Mobile\//.test(B)){C.mobile="Apple";}else{A=B.match(/NokiaN[^\/]*/);if(A){C.mobile=A[0];}}A=B.match(/AdobeAIR\/([^\s]*)/);if(A){C.air=A[0];}}if(!C.webkit){A=B.match(/Opera[\s\/]([^\s]*)/);if(A&&A[1]){C.opera=parseFloat(A[1]);A=B.match(/Opera Mini[^;]*/);if(A){C.mobile=A[0];}}else{A=B.match(/MSIE\s([^;]*)/);if(A&&A[1]){C.ie=parseFloat(A[1]);}else{A=B.match(/Gecko\/([^\s]*)/);if(A){C.gecko=1;A=B.match(/rv:([^\s\)]*)/);if(A&&A[1]){C.gecko=parseFloat(A[1]);}}}}}return C;}();(function(){YAHOO.namespace("util","widget","example");if("undefined"!==typeof YAHOO_config){var B=YAHOO_config.listener,A=YAHOO.env.listeners,D=true,C;if(B){for(C=0;C<A.length;C=C+1){if(A[C]==B){D=false;break;}}if(D){A.push(B);}}}})();YAHOO.lang=YAHOO.lang||{};(function(){var A=YAHOO.lang,C=["toString","valueOf"],B={isArray:function(D){if(D){return A.isNumber(D.length)&&A.isFunction(D.splice);}return false;},isBoolean:function(D){return typeof D==="boolean";},isFunction:function(D){return typeof D==="function";},isNull:function(D){return D===null;},isNumber:function(D){return typeof D==="number"&&isFinite(D);},isObject:function(D){return(D&&(typeof D==="object"||A.isFunction(D)))||false;},isString:function(D){return typeof D==="string";},isUndefined:function(D){return typeof D==="undefined";},_IEEnumFix:(YAHOO.env.ua.ie)?function(F,E){for(var D=0;D<C.length;D=D+1){var H=C[D],G=E[H];if(A.isFunction(G)&&G!=Object.prototype[H]){F[H]=G;}}}:function(){},extend:function(H,I,G){if(!I||!H){throw new Error("extend failed, please check that "+"all dependencies are included.");}var E=function(){};E.prototype=I.prototype;H.prototype=new E();H.prototype.constructor=H;H.superclass=I.prototype;if(I.prototype.constructor==Object.prototype.constructor){I.prototype.constructor=I;}if(G){for(var D in G){if(A.hasOwnProperty(G,D)){H.prototype[D]=G[D];}}A._IEEnumFix(H.prototype,G);}},augmentObject:function(H,G){if(!G||!H){throw new Error("Absorb failed, verify dependencies.");}var D=arguments,F,I,E=D[2];if(E&&E!==true){for(F=2;F<D.length;F=F+1){H[D[F]]=G[D[F]];}}else{for(I in G){if(E||!(I in H)){H[I]=G[I];}}A._IEEnumFix(H,G);}},augmentProto:function(G,F){if(!F||!G){throw new Error("Augment failed, verify dependencies.");}var D=[G.prototype,F.prototype];for(var E=2;E<arguments.length;E=E+1){D.push(arguments[E]);}A.augmentObject.apply(this,D);},dump:function(D,I){var F,H,K=[],L="{...}",E="f(){...}",J=", ",G=" => ";if(!A.isObject(D)){return D+"";}else{if(D instanceof Date||("nodeType" in D&&"tagName" in D)){return D;}else{if(A.isFunction(D)){return E;}}}I=(A.isNumber(I))?I:3;if(A.isArray(D)){K.push("[");for(F=0,H=D.length;F<H;F=F+1){if(A.isObject(D[F])){K.push((I>0)?A.dump(D[F],I-1):L);}else{K.push(D[F]);}K.push(J);}if(K.length>1){K.pop();}K.push("]");}else{K.push("{");for(F in D){if(A.hasOwnProperty(D,F)){K.push(F+G);if(A.isObject(D[F])){K.push((I>0)?A.dump(D[F],I-1):L);}else{K.push(D[F]);}K.push(J);}}if(K.length>1){K.pop();}K.push("}");}return K.join("");},substitute:function(S,E,L){var I,H,G,O,P,R,N=[],F,J="dump",M=" ",D="{",Q="}";for(;;){I=S.lastIndexOf(D);if(I<0){break;}H=S.indexOf(Q,I);if(I+1>=H){break;}F=S.substring(I+1,H);O=F;R=null;G=O.indexOf(M);if(G>-1){R=O.substring(G+1);O=O.substring(0,G);}P=E[O];if(L){P=L(O,P,R);}if(A.isObject(P)){if(A.isArray(P)){P=A.dump(P,parseInt(R,10));}else{R=R||"";var K=R.indexOf(J);if(K>-1){R=R.substring(4);}if(P.toString===Object.prototype.toString||K>-1){P=A.dump(P,parseInt(R,10));}else{P=P.toString();}}}else{if(!A.isString(P)&&!A.isNumber(P)){P="~-"+N.length+"-~";N[N.length]=F;}}S=S.substring(0,I)+P+S.substring(H+1);}for(I=N.length-1;I>=0;I=I-1){S=S.replace(new RegExp("~-"+I+"-~"),"{"+N[I]+"}","g");}return S;},trim:function(D){try{return D.replace(/^\s+|\s+$/g,"");}catch(E){return D;}},merge:function(){var G={},E=arguments;for(var F=0,D=E.length;F<D;F=F+1){A.augmentObject(G,E[F],true);}return G;},later:function(K,E,L,G,H){K=K||0;E=E||{};var F=L,J=G,I,D;if(A.isString(L)){F=E[L];}if(!F){throwLine truncated
};var O=function(S,T,V){var U=V||"utf-8";return J("script",{"id":"yui__dyn_"+(Q++),"type":"text/javascript","charset":U,"src":S},T);};var A=function(S,T){return{tId:S.tId,win:S.win,data:S.data,nodes:S.nodes,msg:T,purge:function(){D(this.tId);}};};var B=function(S,V){var T=M[V],U=(R.isString(S))?T.win.document.getElementById(S):S;if(!U){P(V,"target node not found: "+S);}return U;};var P=function(V,U){var S=M[V];if(S.onFailure){var T=S.scope||S.win;S.onFailure.call(T,A(S,U));}};var C=function(V){var S=M[V];S.finished=true;if(S.aborted){var U="transaction "+V+" was aborted";P(V,U);return ;}if(S.onSuccess){var T=S.scope||S.win;S.onSuccess.call(T,A(S));}};var G=function(U,Y){var T=M[U];if(T.aborted){var W="transaction "+U+" was aborted";P(U,W);return ;}if(Y){T.url.shift();if(T.varName){T.varName.shift();}}else{T.url=(R.isString(T.url))?[T.url]:T.url;if(T.varName){T.varName=(R.isString(T.varName))?[T.varName]:T.varName;}}var b=T.win,a=b.document,Z=a.getElementsByTagName("head")[0],V;if(T.url.length===0){if(T.type==="script"&&N.webkit&&N.webkit<420&&!T.finalpass&&!T.varName){var X=O(null,T.win,T.charset);X.innerHTML='YAHOO.util.Get._finalize("'+U+'");';T.nodes.push(X);Z.appendChild(X);}else{C(U);}return ;}var S=T.url[0];if(T.type==="script"){V=O(S,b,T.charset);}else{V=H(S,b,T.charset);}F(T.type,V,U,S,b,T.url.length);T.nodes.push(V);if(T.insertBefore){var c=B(T.insertBefore,U);if(c){c.parentNode.insertBefore(V,c);}}else{Z.appendChild(V);}if((N.webkit||N.gecko)&&T.type==="css"){G(U,S);}};var K=function(){if(E){return ;}E=true;for(var S in M){var T=M[S];if(T.autopurge&&T.finished){D(T.tId);delete M[S];}}E=false;};var D=function(Z){var W=M[Z];if(W){var Y=W.nodes,S=Y.length,X=W.win.document,V=X.getElementsByTagName("head")[0];if(W.insertBefore){var U=B(W.insertBefore,Z);if(U){V=U.parentNode;}}for(var T=0;T<S;T=T+1){V.removeChild(Y[T]);}}W.nodes=[];};var I=function(T,S,U){var W="q"+(L++);U=U||{};if(L%YAHOO.util.Get.PURGE_THRESH===0){K();}M[W]=R.merge(U,{tId:W,type:T,url:S,finished:false,nodes:[]});var V=M[W];V.win=V.win||window;V.scope=V.scope||V.win;V.autopurge=("autopurge" in V)?V.autopurge:(T==="script")?true:false;R.later(0,V,G,W);return{tId:W};};var F=function(b,W,V,T,X,Y,a){var Z=a||G;if(N.ie){W.onreadystatechange=function(){var c=this.readyState;if("loaded"===c||"complete"===c){Z(V,T);}};}else{if(N.webkit){if(b==="script"){if(N.webkit>=420){W.addEventListener("load",function(){Z(V,T);});}else{var S=M[V];if(S.varName){var U=YAHOO.util.Get.POLL_FREQ;S.maxattempts=YAHOO.util.Get.TIMEOUT/U;S.attempts=0;S._cache=S.varName[0].split(".");S.timer=R.later(U,S,function(h){var e=this._cache,d=e.length,c=this.win,f;for(f=0;f<d;f=f+1){c=c[e[f]];if(!c){this.attempts++;if(this.attempts++>this.maxattempts){var g="Over retry limit, giving up";S.timer.cancel();P(V,g);}else{}return ;}}S.timer.cancel();Z(V,T);},null,true);}else{R.later(YAHOO.util.Get.POLL_FREQ,null,Z,[V,T]);}}}}else{W.onload=function(){Z(V,T);};}}};return{POLL_FREQ:10,PURGE_THRESH:20,TIMEOUT:2000,_finalize:function(S){R.later(0,null,C,S);},abort:function(T){var U=(R.isString(T))?T:T.tId;var S=M[U];if(S){S.aborted=true;}},script:function(S,T){return I("script",S,T);},css:function(S,T){return I("css",S,T);}};}();YAHOO.register("get",YAHOO.util.Get,{version:"2.5.2",build:"1076"});(function(){var Y=YAHOO,util=Y.util,lang=Y.lang,env=Y.env,PROV="_provides",SUPER="_supersedes",REQ="expanded",AFTER="_after";var YUI={dupsAllowed:{"yahoo":true,"get":true},info:{"base":"http://yui.yahooapis.com/2.5.2/build/","skin":{"defaultSkin":"sam","base":"assets/skins/","path":"skin.css","after":["reset","fonts","grids","base"],"rollup":3},dupsAllowed:["yahoo","get"],"moduleInfo":{"animation":{"type":"js","path":"animation/animation-min.js","requires":["dom","event"]},"autocomplete":{"type":"js","path":"autocomplete/autocomplete-min.js","requires":["dom","event"],"optional":["connection","animation"],"skinnable":true},"base":{"type":"css","path":"base/base-min.css","after":["reset","fonts","grids"]},"button":{"type":"js","path":"button/button-min.js","requires":["element"],"optional":["menu"],"skinnable":true},"calendar":{"type":"js","path":"calendar/calendar-min.js","requires":["event","dom"],"skinnable":true},"charts":{"type":"js","path":"charts/charts-experimental-min.js","requires":["element","json","datasource"]},"colorpicker":{"type":"js","path":"colorpicker/colorpicker-min.js","requires":["slider","element"],"optional":["animation"],"skinnable":true},"connection":{"type":"js","path":"connection/connection-min.js","requires":["event"]},"container":{"type":"js","path":"container/container-min.js","requires":["dom","event"],"optional":["dragdrop","animation","connection"],"supersedes":["containercore"],"skinnable":true},"containercore":{"type":"js","path":"container/container_core-min.js","requires":["dom","event"],"pkg":"container"},"cookie":{"type":"js","path":"cookie/cookie-beta-min.js","requires":["yahoo"]},"datasource":{"type":"js","path":"datasource/datasource-beta-min.js","reqLine truncated
i<a.length;i=i+1){o[a[i]]=true;}}},keys:function(o,ordered){var a=[],i;for(i in o){if(lang.hasOwnProperty(o,i)){a.push(i);}}return a;}},ArrayUtil:{appendArray:function(a1,a2){Array.prototype.push.apply(a1,a2);},indexOf:function(a,val){for(var i=0;i<a.length;i=i+1){if(a[i]===val){return i;}}return -1;},toObject:function(a){var o={};for(var i=0;i<a.length;i=i+1){o[a[i]]=true;}return o;},uniq:function(a){return YUI.ObjectUtil.keys(YUI.ArrayUtil.toObject(a));}}};YAHOO.util.YUILoader=function(o){this._internalCallback=null;this._useYahooListener=false;this.onSuccess=null;this.onFailure=Y.log;this.onProgress=null;this.scope=this;this.data=null;this.insertBefore=null;this.charset=null;this.varName=null;this.base=YUI.info.base;this.ignore=null;this.force=null;this.allowRollup=true;this.filter=null;this.required={};this.moduleInfo=lang.merge(YUI.info.moduleInfo);this.rollups=null;this.loadOptional=false;this.sorted=[];this.loaded={};this.dirty=true;this.inserted={};var self=this;env.listeners.push(function(m){if(self._useYahooListener){self.loadNext(m.name);}});this.skin=lang.merge(YUI.info.skin);this._config(o);};Y.util.YUILoader.prototype={FILTERS:{RAW:{"searchExp":"-min\\.js","replaceStr":".js"},DEBUG:{"searchExp":"-min\\.js","replaceStr":"-debug.js"}},SKIN_PREFIX:"skin-",_config:function(o){if(o){for(var i in o){if(lang.hasOwnProperty(o,i)){if(i=="require"){this.require(o[i]);}else{this[i]=o[i];}}}}var f=this.filter;if(lang.isString(f)){f=f.toUpperCase();if(f==="DEBUG"){this.require("logger");}if(!Y.widget.LogWriter){Y.widget.LogWriter=function(){return Y;};}this.filter=this.FILTERS[f];}},addModule:function(o){if(!o||!o.name||!o.type||(!o.path&&!o.fullpath)){return false;}o.ext=("ext" in o)?o.ext:true;o.requires=o.requires||[];this.moduleInfo[o.name]=o;this.dirty=true;return true;},require:function(what){var a=(typeof what==="string")?arguments:what;this.dirty=true;YUI.ObjectUtil.appendArray(this.required,a);},_addSkin:function(skin,mod){var name=this.formatSkin(skin),info=this.moduleInfo,sinf=this.skin,ext=info[mod]&&info[mod].ext;if(!info[name]){this.addModule({"name":name,"type":"css","path":sinf.base+skin+"/"+sinf.path,"after":sinf.after,"rollup":sinf.rollup,"ext":ext});}if(mod){name=this.formatSkin(skin,mod);if(!info[name]){var mdef=info[mod],pkg=mdef.pkg||mod;this.addModule({"name":name,"type":"css","after":sinf.after,"path":pkg+"/"+sinf.base+skin+"/"+mod+".css","ext":ext});}}return name;},getRequires:function(mod){if(!mod){return[];}if(!this.dirty&&mod.expanded){return mod.expanded;}mod.requires=mod.requires||[];var i,d=[],r=mod.requires,o=mod.optional,info=this.moduleInfo,m;for(i=0;i<r.length;i=i+1){d.push(r[i]);m=info[r[i]];YUI.ArrayUtil.appendArray(d,this.getRequires(m));}if(o&&this.loadOptional){for(i=0;i<o.length;i=i+1){d.push(o[i]);YUI.ArrayUtil.appendArray(d,this.getRequires(info[o[i]]));}}mod.expanded=YUI.ArrayUtil.uniq(d);return mod.expanded;},getProvides:function(name,notMe){var addMe=!(notMe),ckey=(addMe)?PROV:SUPER,m=this.moduleInfo[name],o={};if(!m){return o;}if(m[ckey]){return m[ckey];}var s=m.supersedes,done={},me=this;var add=function(mm){if(!done[mm]){done[mm]=true;lang.augmentObject(o,me.getProvides(mm));}};if(s){for(var i=0;i<s.length;i=i+1){add(s[i]);}}m[SUPER]=o;m[PROV]=lang.merge(o);m[PROV][name]=true;return m[ckey];},calculate:function(o){if(this.dirty){this._config(o);this._setup();this._explode();if(this.allowRollup){this._rollup();}this._reduce();this._sort();this.dirty=false;}},_setup:function(){var info=this.moduleInfo,name,i,j;for(name in info){var m=info[name];if(m&&m.skinnable){var o=this.skin.overrides,smod;if(o&&o[name]){for(i=0;i<o[name].length;i=i+1){smod=this._addSkin(o[name][i],name);}}else{smod=this._addSkin(this.skin.defaultSkin,name);}m.requires.push(smod);}}var l=lang.merge(this.inserted);if(!this._sandbox){l=lang.merge(l,env.modules);}if(this.ignore){YUI.ObjectUtil.appendArray(l,this.ignore);}if(this.force){for(i=0;i<this.force.length;i=i+1){if(this.force[i] in l){delete l[this.force[i]];}}}for(j in l){if(lang.hasOwnProperty(l,j)){lang.augmentObject(l,this.getProvides(j));}}this.loaded=l;},_explode:function(){var r=this.required,i,mod;for(i in r){mod=this.moduleInfo[i];if(mod){var req=this.getRequires(mod);if(req){YUI.ObjectUtil.appendArray(r,req);}}}},_skin:function(){},formatSkin:function(skin,mod){var s=this.SKIN_PREFIX+skin;if(mod){s=s+"-"+mod;}return s;},parseSkin:function(mod){if(mod.indexOf(this.SKIN_PREFIX)===0){var a=mod.split("-");return{skin:a[1],module:a[2]};}return null;},_rollup:function(){var i,j,m,s,rollups={},r=this.required,roll;if(this.dirty||!this.rollups){for(i in this.moduleInfo){m=this.moduleInfo[i];if(m&&m.rollup){rollups[i]=m;}}this.rollups=rollups;}for(;;){var rolled=false;for(i in rollups){if(!r[i]&&!this.loaded[i]){m=this.moduleInfo[i];s=m.supersedes;roll=false;if(!m.rollup){continue;}var skin=(m.ext)?false:this.parseSkin(i),c=0;if(skin){for(j in r){if(i!==j&&this.parseSkin(j)){c++;roll=(c>=m.rollup);if(roll){break;}}}}else{for(j=0;j<sLine truncated
}if(checkOptional&&optional&&YUI.ArrayUtil.indexOf(optional,bb)>-1){return true;}var ss=info[bb]&&info[bb].supersedes;if(ss){for(ii=0;ii<ss.length;ii=ii+1){if(requires(aa,ss[ii])){return true;}}}if(mm.ext&&mm.type=="css"&&(!other.ext)){return true;}return false;};for(var i in this.required){s.push(i);}var p=0;for(;;){var l=s.length,a,b,j,k,moved=false;for(j=p;j<l;j=j+1){a=s[j];for(k=j+1;k<l;k=k+1){if(requires(a,s[k])){b=s.splice(k,1);s.splice(j,0,b[0]);moved=true;break;}}if(moved){break;}else{p=p+1;}}if(!moved){break;}}this.sorted=s;},toString:function(){var o={type:"YUILoader",base:this.base,filter:this.filter,required:this.required,loaded:this.loaded,inserted:this.inserted};lang.dump(o,1);},insert:function(o,type){this.calculate(o);if(!type){var self=this;this._internalCallback=function(){self._internalCallback=null;self.insert(null,"js");};this.insert(null,"css");return ;}this._loading=true;this.loadType=type;this.loadNext();},sandbox:function(o,type){if(o){}else{}this._config(o);if(!this.onSuccess){throw new Error("You must supply an onSuccess handler for your sandbox");}this._sandbox=true;var self=this;if(!type||type!=="js"){this._internalCallback=function(){self._internalCallback=null;self.sandbox(null,"js");};this.insert(null,"css");return ;}if(!util.Connect){var ld=new YAHOO.util.YUILoader();ld.insert({base:this.base,filter:this.filter,require:"connection",insertBefore:this.insertBefore,charset:this.charset,onSuccess:function(){this.sandbox(null,"js");},scope:this},"js");return ;}this._scriptText=[];this._loadCount=0;this._stopCount=this.sorted.length;this._xhr=[];this.calculate();var s=this.sorted,l=s.length,i,m,url;for(i=0;i<l;i=i+1){m=this.moduleInfo[s[i]];if(!m){this.onFailure.call(this.scope,{msg:"undefined module "+m,data:this.data});for(var j=0;j<this._xhr.length;j=j+1){this._xhr[j].abort();}return ;}if(m.type!=="js"){this._loadCount++;continue;}url=m.fullpath||this._url(m.path);var xhrData={success:function(o){var idx=o.argument[0],name=o.argument[2];this._scriptText[idx]=o.responseText;if(this.onProgress){this.onProgress.call(this.scope,{name:name,scriptText:o.responseText,xhrResponse:o,data:this.data});}this._loadCount++;if(this._loadCount>=this._stopCount){var v=this.varName||"YAHOO";var t="(function() {\n";var b="\nreturn "+v+";\n})();";var ref=eval(t+this._scriptText.join("\n")+b);this._pushEvents(ref);if(ref){this.onSuccess.call(this.scope,{reference:ref,data:this.data});}else{this.onFailure.call(this.scope,{msg:this.varName+" reference failure",data:this.data});}}},failure:function(o){this.onFailure.call(this.scope,{msg:"XHR failure",xhrResponse:o,data:this.data});},scope:this,argument:[i,url,s[i]]};this._xhr.push(util.Connect.asyncRequest("GET",url,xhrData));}},loadNext:function(mname){if(!this._loading){return ;}if(mname){if(mname!==this._loading){return ;}this.inserted[mname]=true;if(this.onProgress){this.onProgress.call(this.scope,{name:mname,data:this.data});}}var s=this.sorted,len=s.length,i,m;for(i=0;i<len;i=i+1){if(s[i] in this.inserted){continue;}if(s[i]===this._loading){return ;}m=this.moduleInfo[s[i]];if(!m){this.onFailure.call(this.scope,{msg:"undefined module "+m,data:this.data});return ;}if(!this.loadType||this.loadType===m.type){this._loading=s[i];var fn=(m.type==="css")?util.Get.css:util.Get.script,url=m.fullpath||this._url(m.path),self=this,c=function(o){self.loadNext(o.data);};if(env.ua.webkit&&env.ua.webkit<420&&m.type==="js"&&!m.varName){c=null;this._useYahooListener=true;}fn(url,{data:s[i],onSuccess:c,insertBefore:this.insertBefore,charset:this.charset,varName:m.varName,scope:self});return ;}}this._loading=null;if(this._internalCallback){var f=this._internalCallback;this._internalCallback=null;f.call(this);}else{if(this.onSuccess){this._pushEvents();this.onSuccess.call(this.scope,{data:this.data});}}},_pushEvents:function(ref){var r=ref||YAHOO;if(r.util&&r.util.Event){r.util.Event._load();}},_url:function(path){var u=this.base||"",f=this.filter;u=u+path;if(f){u=u.replace(new RegExp(f.searchExp),f.replaceStr);}return u;}};})();(function(){var B=YAHOO.util,K,I,J={},F={},M=window.document;YAHOO.env._id_counter=YAHOO.env._id_counter||0;var C=YAHOO.env.ua.opera,L=YAHOO.env.ua.webkit,A=YAHOO.env.ua.gecko,G=YAHOO.env.ua.ie;var E={HYPHEN:/(-[a-z])/i,ROOT_TAG:/^body|html$/i,OP_SCROLL:/^(?:inline|table-row)$/i};var N=function(P){if(!E.HYPHEN.test(P)){return P;}if(J[P]){return J[P];}var Q=P;while(E.HYPHEN.exec(Q)){Q=Q.replace(RegExp.$1,RegExp.$1.substr(1).toUpperCase());}J[P]=Q;return Q;};var O=function(Q){var P=F[Q];if(!P){P=new RegExp("(?:^|\\s+)"+Q+"(?:\\s+|$)");F[Q]=P;}return P;};if(M.defaultView&&M.defaultView.getComputedStyle){K=function(P,S){var R=null;if(S=="float"){S="cssFloat";}var Q=P.ownerDocument.defaultView.getComputedStyle(P,"");if(Q){R=Q[N(S)];}return P.style[S]||R;};}else{if(M.documentElement.currentStyle&&G){K=function(P,R){switch(N(R)){case"opacity":var T=100;try{T=P.filters["DXImageTransform.Microsoft.Alpha"].opacity;}catch(S){try{T=P.filters("alpha").opLine truncated
var Q=M.compatMode;if((Q||G)&&!C){P=(Q=="CSS1Compat")?M.documentElement.clientHeight:M.body.clientHeight;}return P;},getViewportWidth:function(){var P=self.innerWidth;var Q=M.compatMode;if(Q||G){P=(Q=="CSS1Compat")?M.documentElement.clientWidth:M.body.clientWidth;}return P;},getAncestorBy:function(P,Q){while(P=P.parentNode){if(D(P,Q)){return P;}}return null;},getAncestorByClassName:function(Q,P){Q=B.Dom.get(Q);if(!Q){return null;}var R=function(S){return B.Dom.hasClass(S,P);};return B.Dom.getAncestorBy(Q,R);},getAncestorByTagName:function(Q,P){Q=B.Dom.get(Q);if(!Q){return null;}var R=function(S){return S.tagName&&S.tagName.toUpperCase()==P.toUpperCase();};return B.Dom.getAncestorBy(Q,R);},getPreviousSiblingBy:function(P,Q){while(P){P=P.previousSibling;if(D(P,Q)){return P;}}return null;},getPreviousSibling:function(P){P=B.Dom.get(P);if(!P){return null;}return B.Dom.getPreviousSiblingBy(P);},getNextSiblingBy:function(P,Q){while(P){P=P.nextSibling;if(D(P,Q)){return P;}}return null;},getNextSibling:function(P){P=B.Dom.get(P);if(!P){return null;}return B.Dom.getNextSiblingBy(P);},getFirstChildBy:function(P,R){var Q=(D(P.firstChild,R))?P.firstChild:null;return Q||B.Dom.getNextSiblingBy(P.firstChild,R);},getFirstChild:function(P,Q){P=B.Dom.get(P);if(!P){return null;}return B.Dom.getFirstChildBy(P);},getLastChildBy:function(P,R){if(!P){return null;}var Q=(D(P.lastChild,R))?P.lastChild:null;return Q||B.Dom.getPreviousSiblingBy(P.lastChild,R);},getLastChild:function(P){P=B.Dom.get(P);return B.Dom.getLastChildBy(P);},getChildrenBy:function(Q,S){var R=B.Dom.getFirstChildBy(Q,S);var P=R?[R]:[];B.Dom.getNextSiblingBy(R,function(T){if(!S||S(T)){P[P.length]=T;}return false;});return P;},getChildren:function(P){P=B.Dom.get(P);if(!P){}return B.Dom.getChildrenBy(P);},getDocumentScrollLeft:function(P){P=P||M;return Math.max(P.documentElement.scrollLeft,P.body.scrollLeft);},getDocumentScrollTop:function(P){P=P||M;return Math.max(P.documentElement.scrollTop,P.body.scrollTop);},insertBefore:function(Q,P){Q=B.Dom.get(Q);P=B.Dom.get(P);if(!Q||!P||!P.parentNode){return null;}return P.parentNode.insertBefore(Q,P);},insertAfter:function(Q,P){Q=B.Dom.get(Q);P=B.Dom.get(P);if(!Q||!P||!P.parentNode){return null;}if(P.nextSibling){return P.parentNode.insertBefore(Q,P.nextSibling);}else{return P.parentNode.appendChild(Q);}},getClientRegion:function(){var R=B.Dom.getDocumentScrollTop(),Q=B.Dom.getDocumentScrollLeft(),S=B.Dom.getViewportWidth()+Q,P=B.Dom.getViewportHeight()+R;return new B.Region(R,S,P,Q);}};var H=function(){if(M.documentElement.getBoundingClientRect){return function(Q){var R=Q.getBoundingClientRect();var P=Q.ownerDocument;return[R.left+B.Dom.getDocumentScrollLeft(P),R.top+B.Dom.getDocumentScrollTop(P)];};}else{return function(R){var S=[R.offsetLeft,R.offsetTop];var Q=R.offsetParent;var P=(L&&B.Dom.getStyle(R,"position")=="absolute"&&R.offsetParent==R.ownerDocument.body);if(Q!=R){while(Q){S[0]+=Q.offsetLeft;S[1]+=Q.offsetTop;if(!P&&L&&B.Dom.getStyle(Q,"position")=="absolute"){P=true;}Q=Q.offsetParent;}}if(P){S[0]-=R.ownerDocument.body.offsetLeft;S[1]-=R.ownerDocument.body.offsetTop;}Q=R.parentNode;while(Q.tagName&&!E.ROOT_TAG.test(Q.tagName)){if(Q.scrollTop||Q.scrollLeft){if(!E.OP_SCROLL.test(B.Dom.getStyle(Q,"display"))){if(!C||B.Dom.getStyle(Q,"overflow")!=="visible"){S[0]-=Q.scrollLeft;S[1]-=Q.scrollTop;}}}Q=Q.parentNode;}return S;};}}();})();YAHOO.util.Region=function(C,D,A,B){this.top=C;this[1]=C;this.right=D;this.bottom=A;this.left=B;this[0]=B;};YAHOO.util.Region.prototype.contains=function(A){return(A.left>=this.left&&A.right<=this.right&&A.top>=this.top&&A.bottom<=this.bottom);};YAHOO.util.Region.prototype.getArea=function(){return((this.bottom-this.top)*(this.right-this.left));};YAHOO.util.Region.prototype.intersect=function(E){var C=Math.max(this.top,E.top);var D=Math.min(this.right,E.right);var A=Math.min(this.bottom,E.bottom);var B=Math.max(this.left,E.left);if(A>=C&&D>=B){return new YAHOO.util.Region(C,D,A,B);}else{return null;}};YAHOO.util.Region.prototype.union=function(E){var C=Math.min(this.top,E.top);var D=Math.max(this.right,E.right);var A=Math.max(this.bottom,E.bottom);var B=Math.min(this.left,E.left);return new YAHOO.util.Region(C,D,A,B);};YAHOO.util.Region.prototype.toString=function(){return("Region {"+"top: "+this.top+", right: "+this.right+", bottom: "+this.bottom+", left: "+this.left+"}");};YAHOO.util.Region.getRegion=function(D){var F=YAHOO.util.Dom.getXY(D);var C=F[1];var E=F[0]+D.offsetWidth;var A=F[1]+D.offsetHeight;var B=F[0];return new YAHOO.util.Region(C,E,A,B);};YAHOO.util.Point=function(A,B){if(YAHOO.lang.isArray(A)){B=A[1];A=A[0];}this.x=this.right=this.left=this[0]=A;this.y=this.top=this.bottom=this[1]=B;};YAHOO.util.Point.prototype=new YAHOO.util.Region();YAHOO.register("dom",YAHOO.util.Dom,{version:"2.5.2",build:"1076"});YAHOO.util.CustomEvent=function(D,B,C,A){this.type=D;this.scope=B||window;this.silent=C;this.signature=A||YAHOO.util.CustomEvent.LIST;this.subscribers=[];if(!this.silenLine truncated
},getXY:function(K){return[this.getPageX(K),this.getPageY(K)];},getRelatedTarget:function(L){var K=L.relatedTarget;if(!K){if(L.type=="mouseout"){K=L.toElement;}else{if(L.type=="mouseover"){K=L.fromElement;}}}return this.resolveTextNode(K);},getTime:function(M){if(!M.time){var L=new Date().getTime();try{M.time=L;}catch(K){this.lastError=K;return L;}}return M.time;},stopEvent:function(K){this.stopPropagation(K);this.preventDefault(K);},stopPropagation:function(K){if(K.stopPropagation){K.stopPropagation();}else{K.cancelBubble=true;}},preventDefault:function(K){if(K.preventDefault){K.preventDefault();}else{K.returnValue=false;}},getEvent:function(M,K){var L=M||window.event;if(!L){var N=this.getEvent.caller;while(N){L=N.arguments[0];if(L&&Event==L.constructor){break;}N=N.caller;}}return L;},getCharCode:function(L){var K=L.keyCode||L.charCode||0;if(YAHOO.env.ua.webkit&&(K in D)){K=D[K];}return K;},_getCacheIndex:function(O,P,N){for(var M=0,L=I.length;M<L;M=M+1){var K=I[M];if(K&&K[this.FN]==N&&K[this.EL]==O&&K[this.TYPE]==P){return M;}}return -1;},generateId:function(K){var L=K.id;if(!L){L="yuievtautoid-"+A;++A;K.id=L;}return L;},_isValidCollection:function(L){try{return(L&&typeof L!=="string"&&L.length&&!L.tagName&&!L.alert&&typeof L[0]!=="undefined");}catch(K){return false;}},elCache:{},getEl:function(K){return(typeof K==="string")?document.getElementById(K):K;},clearCache:function(){},DOMReadyEvent:new YAHOO.util.CustomEvent("DOMReady",this),_load:function(L){if(!H){H=true;var K=YAHOO.util.Event;K._ready();K._tryPreloadAttach();}},_ready:function(L){var K=YAHOO.util.Event;if(!K.DOMReady){K.DOMReady=true;K.DOMReadyEvent.fire();K._simpleRemove(document,"DOMContentLoaded",K._ready);}},_tryPreloadAttach:function(){if(F.length===0){C=0;clearInterval(this._interval);this._interval=null;return ;}if(this.locked){return ;}if(this.isIE){if(!this.DOMReady){this.startInterval();return ;}}this.locked=true;var Q=!H;if(!Q){Q=(C>0&&F.length>0);}var P=[];var R=function(T,U){var S=T;if(U.override){if(U.override===true){S=U.obj;}else{S=U.override;}}U.fn.call(S,U.obj);};var L,K,O,N,M=[];for(L=0,K=F.length;L<K;L=L+1){O=F[L];if(O){N=this.getEl(O.id);if(N){if(O.checkReady){if(H||N.nextSibling||!Q){M.push(O);F[L]=null;}}else{R(N,O);F[L]=null;}}else{P.push(O);}}}for(L=0,K=M.length;L<K;L=L+1){O=M[L];R(this.getEl(O.id),O);}C--;if(Q){for(L=F.length-1;L>-1;L--){O=F[L];if(!O||!O.id){F.splice(L,1);}}this.startInterval();}else{clearInterval(this._interval);this._interval=null;}this.locked=false;},purgeElement:function(O,P,R){var M=(YAHOO.lang.isString(O))?this.getEl(O):O;var Q=this.getListeners(M,R),N,K;if(Q){for(N=Q.length-1;N>-1;N--){var L=Q[N];this.removeListener(M,L.type,L.fn);}}if(P&&M&&M.childNodes){for(N=0,K=M.childNodes.length;N<K;++N){this.purgeElement(M.childNodes[N],P,R);}}},getListeners:function(M,K){var P=[],L;if(!K){L=[I,J];}else{if(K==="unload"){L=[J];}else{L=[I];}}var R=(YAHOO.lang.isString(M))?this.getEl(M):M;for(var O=0;O<L.length;O=O+1){var T=L[O];if(T){for(var Q=0,S=T.length;Q<S;++Q){var N=T[Q];if(N&&N[this.EL]===R&&(!K||K===N[this.TYPE])){P.push({type:N[this.TYPE],fn:N[this.FN],obj:N[this.OBJ],adjust:N[this.OVERRIDE],scope:N[this.ADJ_SCOPE],index:Q});}}}}return(P.length)?P:null;},_unload:function(Q){var K=YAHOO.util.Event,N,M,L,P,O,R=J.slice();for(N=0,P=J.length;N<P;++N){L=R[N];if(L){var S=window;if(L[K.ADJ_SCOPE]){if(L[K.ADJ_SCOPE]===true){S=L[K.UNLOAD_OBJ];}else{S=L[K.ADJ_SCOPE];}}L[K.FN].call(S,K.getEvent(Q,L[K.EL]),L[K.UNLOAD_OBJ]);R[N]=null;L=null;S=null;}}J=null;if(I){for(M=I.length-1;M>-1;M--){L=I[M];if(L){K.removeListener(L[K.EL],L[K.TYPE],L[K.FN],M);}}L=null;}G=null;K._simpleRemove(window,"unload",K._unload);},_getScrollLeft:function(){return this._getScroll()[1];},_getScrollTop:function(){return this._getScroll()[0];},_getScroll:function(){var K=document.documentElement,L=document.body;if(K&&(K.scrollTop||K.scrollLeft)){return[K.scrollTop,K.scrollLeft];}else{if(L){return[L.scrollTop,L.scrollLeft];}else{return[0,0];}}},regCE:function(){},_simpleAdd:function(){if(window.addEventListener){return function(M,N,L,K){M.addEventListener(N,L,(K));};}else{if(window.attachEvent){return function(M,N,L,K){M.attachEvent("on"+N,L);};}else{return function(){};}}}(),_simpleRemove:function(){if(window.removeEventListener){return function(M,N,L,K){M.removeEventListener(N,L,(K));};}else{if(window.detachEvent){return function(L,M,K){L.detachEvent("on"+M,K);};}else{return function(){};}}}()};}();(function(){var EU=YAHOO.util.Event;EU.on=EU.addListener;
/* DOMReady: based on work by: Dean Edwards/John Resig/Matthias Miller */
if(EU.isIE){YAHOO.util.Event.onDOMReady(YAHOO.util.Event._tryPreloadAttach,YAHOO.util.Event,true);var n=document.createElement("p");EU._dri=setInterval(function(){try{n.doScroll("left");clearInterval(EU._dri);EU._dri=null;EU._ready();n=null;}catch(ex){}},EU.POLL_INTERVAL);}else{if(EU.webkit&&EU.webkit<525){EU._dri=setInterval(function(){var rs=document.readyState;if("loaded"==rs||"complete"==rs){clearInterval(EU._dri);EU._dri=null;EU._ready();}},EU.POLL_INTERVAL);}else{EU._simpleAdd(document,"DOMContentLoaded",EU._ready);}}EU._simpleAdd(window,"load",EU._load);EU._simpleAdd(window,"unload",EU._unload);EU._tryPreloadAttach();})();}YAHOO.util.EventProvider=function(){};YAHOO.util.EventProvider.prototype={__yui_events:null,__yui_subscribers:null,subscribe:function(A,C,F,E){this.__yui_events=this.__yui_events||{};var D=this.__yui_events[A];if(D){D.subscribe(C,F,E);}else{this.__yui_subscribers=this.__yui_subscribers||{};var B=this.__yui_subscribers;if(!B[A]){B[A]=[];}B[A].push({fn:C,obj:F,override:E});}},unsubscribe:function(C,E,G){this.__yui_events=this.__yui_events||{};var A=this.__yui_events;if(C){var F=A[C];if(F){return F.unsubscribe(E,G);}}else{var B=true;for(var D in A){if(YAHOO.lang.hasOwnProperty(A,D)){B=B&&A[D].unsubscribe(E,G);}}return B;}return false;},unsubscribeAll:function(A){return this.unsubscribe(A);},createEvent:function(G,D){this.__yui_events=this.__yui_events||{};var A=D||{};var I=this.__yui_events;
if(I[G]){}else{var H=A.scope||this;var E=(A.silent);var B=new YAHOO.util.CustomEvent(G,H,E,YAHOO.util.CustomEvent.FLAT);I[G]=B;if(A.onSubscribeCallback){B.subscribeEvent.subscribe(A.onSubscribeCallback);}this.__yui_subscribers=this.__yui_subscribers||{};var F=this.__yui_subscribers[G];if(F){for(var C=0;C<F.length;++C){B.subscribe(F[C].fn,F[C].obj,F[C].override);}}}return I[G];},fireEvent:function(E,D,A,C){this.__yui_events=this.__yui_events||{};var G=this.__yui_events[E];if(!G){return null;}var B=[];for(var F=1;F<arguments.length;++F){B.push(arguments[F]);}return G.fire.apply(G,B);},hasEvent:function(A){if(this.__yui_events){if(this.__yui_events[A]){return true;}}return false;}};YAHOO.util.KeyListener=function(A,F,B,C){if(!A){}else{if(!F){}else{if(!B){}}}if(!C){C=YAHOO.util.KeyListener.KEYDOWN;}var D=new YAHOO.util.CustomEvent("keyPressed");this.enabledEvent=new YAHOO.util.CustomEvent("enabled");this.disabledEvent=new YAHOO.util.CustomEvent("disabled");if(typeof A=="string"){A=document.getElementById(A);}if(typeof B=="function"){D.subscribe(B);}else{D.subscribe(B.fn,B.scope,B.correctScope);}function E(J,I){if(!F.shift){F.shift=false;}if(!F.alt){F.alt=false;}if(!F.ctrl){F.ctrl=false;}if(J.shiftKey==F.shift&&J.altKey==F.alt&&J.ctrlKey==F.ctrl){var G;if(F.keys instanceof Array){for(var H=0;H<F.keys.length;H++){G=F.keys[H];if(G==J.charCode){D.fire(J.charCode,J);break;}else{if(G==J.keyCode){D.fire(J.keyCode,J);break;}}}}else{G=F.keys;if(G==J.charCode){D.fire(J.charCode,J);}else{if(G==J.keyCode){D.fire(J.keyCode,J);}}}}}this.enable=function(){if(!this.enabled){YAHOO.util.Event.addListener(A,C,E);this.enabledEvent.fire(F);}this.enabled=true;};this.disable=function(){if(this.enabled){YAHOO.util.Event.removeListener(A,C,E);this.disabledEvent.fire(F);}this.enabled=false;};this.toString=function(){return"KeyListener ["+F.keys+"] "+A.tagName+(A.id?"["+A.id+"]":"");};};YAHOO.util.KeyListener.KEYDOWN="keydown";YAHOO.util.KeyListener.KEYUP="keyup";YAHOO.util.KeyListener.KEY={ALT:18,BACK_SPACE:8,CAPS_LOCK:20,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,META:224,NUM_LOCK:144,PAGE_DOWN:34,PAGE_UP:33,PAUSE:19,PRINTSCREEN:44,RIGHT:39,SCROLL_LOCK:145,SHIFT:16,SPACE:32,TAB:9,UP:38};YAHOO.register("event",YAHOO.util.Event,{version:"2.5.2",build:"1076"});YAHOO.register("yuiloader-dom-event", YAHOO, {version: "2.5.2", build: "1076"});
// logger/logger-min.js
YAHOO.widget.LogMsg=function(A){this.msg=this.time=this.category=this.source=this.sourceDetail=null;if(A&&(A.constructor==Object)){for(var B in A){this[B]=A[B];}}};YAHOO.widget.LogWriter=function(A){if(!A){YAHOO.log("Could not instantiate LogWriter due to invalid source.","error","LogWriter");return ;}this._source=A;};YAHOO.widget.LogWriter.prototype.toString=function(){return"LogWriter "+this._sSource;};YAHOO.widget.LogWriter.prototype.log=function(A,B){YAHOO.widget.Logger.log(A,B,this._source);};YAHOO.widget.LogWriter.prototype.getSource=function(){return this._sSource;};YAHOO.widget.LogWriter.prototype.setSource=function(A){if(!A){YAHOO.log("Could not set source due to invalid source.","error",this.toString());return ;}else{this._sSource=A;}};YAHOO.widget.LogWriter.prototype._source=null;YAHOO.widget.LogReader=function(B,A){this._sName=YAHOO.widget.LogReader._index;YAHOO.widget.LogReader._index++;this._buffer=[];this._filterCheckboxes={};this._lastTime=YAHOO.widget.Logger.getStartTime();if(A&&(A.constructor==Object)){for(var C in A){this[C]=A[C];}}this._initContainerEl(B);if(!this._elContainer){YAHOO.log("Could not instantiate LogReader due to an invalid container element "+B,"error",this.toString());return ;}this._initHeaderEl();this._initConsoleEl();this._initFooterEl();this._initDragDrop();this._initCategories();this._initSources();YAHOO.widget.Logger.newLogEvent.subscribe(this._onNewLog,this);YAHOO.widget.Logger.logResetEvent.subscribe(this._onReset,this);YAHOO.widget.Logger.categoryCreateEvent.subscribe(this._onCategoryCreate,this);YAHOO.widget.Logger.sourceCreateEvent.subscribe(this._onSourceCreate,this);this._filterLogs();YAHOO.log("LogReader initialized",null,this.toString());};YAHOO.lang.augmentObject(YAHOO.widget.LogReader,{_index:0,ENTRY_TEMPLATE:(function(){var A=document.createElement("pre");YAHOO.util.Dom.addClass(A,"yui-log-entry");return A;})(),VERBOSE_TEMPLATE:"<span class='{category}'>{label}</span>{totalTime}ms (+{elapsedTime}) {localTime}:</p><p>{sourceAndDetail}</p><p>{message}</p>",BASIC_TEMPLATE:"<p><span class='{category}'>{label}</span>{totalTime}ms (+{elapsedTime}) {localTime}: {sourceAndDetail}: {message}</p>"});YAHOO.widget.LogReader.prototype={logReaderEnabled:true,width:null,height:null,top:null,left:null,right:null,bottom:null,fontSize:null,footerEnabled:true,verboseOutput:true,entryFormat:null,newestOnTop:true,outputBuffer:100,thresholdMax:500,thresholdMin:100,isCollapsed:false,isPaused:false,draggable:true,toString:function(){return"LogReader instance"+this._sName;},pause:function(){this.isPaused=true;this._btnPause.value="Resume";this._timeout=null;this.logReaderEnabled=false;},resume:function(){this.isPaused=false;this._btnPause.value="Pause";this.logReaderEnabled=true;this._printBuffer();},hide:function(){this._elContainer.style.display="none";},show:function(){this._elContainer.style.display="block";},collapse:function(){this._elConsole.style.display="none";if(this._elFt){this._elFt.style.display="none";}this._btnCollapse.value="Expand";this.isCollapsed=true;},expand:function(){this._elConsole.style.display="block";if(this._elFt){this._elFt.style.display="block";}this._btnCollapse.value="Collapse";this.isCollapsed=false;},getCheckbox:function(A){return this._filterCheckboxes[A];},getCategories:function(){return this._categoryFilters;},showCategory:function(B){var D=this._categoryFilters;if(D.indexOf){if(D.indexOf(B)>-1){return ;}}else{for(var A=0;A<D.length;A++){if(D[A]===B){return ;}}}this._categoryFilters.push(B);this._filterLogs();var C=this.getCheckbox(B);if(C){C.checked=true;}},hideCategory:function(B){var D=this._categoryFilters;for(var A=0;A<D.length;A++){if(B==D[A]){D.splice(A,1);break;}}this._filterLogs();var C=this.getCheckbox(B);if(C){C.checked=false;}},getSources:function(){return this._sourceFilters;},showSource:function(A){var D=this._sourceFilters;if(D.indexOf){if(D.indexOf(A)>-1){return ;}}else{for(var B=0;B<D.length;B++){if(A==D[B]){return ;}}}D.push(A);this._filterLogs();var C=this.getCheckbox(A);if(C){C.checked=true;}},hideSource:function(A){var D=this._sourceFilters;for(var B=0;B<D.length;B++){if(A==D[B]){D.splice(B,1);break;}}this._filterLogs();var C=this.getCheckbox(A);if(C){C.checked=false;}},clearConsole:function(){this._timeout=null;this._buffer=[];this._consoleMsgCount=0;var A=this._elConsole;A.innerHTML="";},setTitle:function(A){this._title.innerHTML=this.html2Text(A);},getLastTime:function(){return this._lastTime;},formatMsg:function(C){var B=YAHOO.widget.LogReader,A=this.entryFormat||(this.verboseOutput?B.VERBOSE_TEMPLATE:B.BASIC_TEMPLATE),D={category:C.category,label:C.category.substring(0,4).toUpperCase(),sourceAndDetail:C.sourceDetail?C.source+" "+C.sourceDetail:C.source,message:this.html2Text(C.msg||C.message||"")};if(C.time&&C.time.getTime){D.localTime=C.time.toLocaleTimeString?C.time.toLocaleTimeString():C.time.toString();D.elapsedTime=C.time.getTime()-this.getLastTime();D.totalTime=C.time.getTime()-YAHOO.widget.Logger.getStartTime(Line truncated
if(this.width){A.width=this.width;}if(this.right){A.right=this.right;}if(this.top){A.top=this.top;}if(this.left){A.left=this.left;A.right="auto";}if(this.bottom){A.bottom=this.bottom;A.top="auto";}if(this.fontSize){A.fontSize=this.fontSize;}if(navigator.userAgent.toLowerCase().indexOf("opera")!=-1){document.body.style+="";}}},_initHeaderEl:function(){var A=this;if(this._elHd){YAHOO.util.Event.purgeElement(this._elHd,true);this._elHd.innerHTML="";}this._elHd=this._elContainer.appendChild(document.createElement("div"));this._elHd.id="yui-log-hd"+this._sName;this._elHd.className="yui-log-hd";this._elCollapse=this._elHd.appendChild(document.createElement("div"));this._elCollapse.className="yui-log-btns";this._btnCollapse=document.createElement("input");this._btnCollapse.type="button";this._btnCollapse.className="yui-log-button";this._btnCollapse.value="Collapse";this._btnCollapse=this._elCollapse.appendChild(this._btnCollapse);YAHOO.util.Event.addListener(A._btnCollapse,"click",A._onClickCollapseBtn,A);this._title=this._elHd.appendChild(document.createElement("h4"));this._title.innerHTML="Logger Console";},_initConsoleEl:function(){if(this._elConsole){YAHOO.util.Event.purgeElement(this._elConsole,true);this._elConsole.innerHTML="";}this._elConsole=this._elContainer.appendChild(document.createElement("div"));this._elConsole.className="yui-log-bd";if(this.height){this._elConsole.style.height=this.height;}},_initFooterEl:function(){var A=this;if(this.footerEnabled){if(this._elFt){YAHOO.util.Event.purgeElement(this._elFt,true);this._elFt.innerHTML="";}this._elFt=this._elContainer.appendChild(document.createElement("div"));this._elFt.className="yui-log-ft";this._elBtns=this._elFt.appendChild(document.createElement("div"));this._elBtns.className="yui-log-btns";this._btnPause=document.createElement("input");this._btnPause.type="button";this._btnPause.className="yui-log-button";this._btnPause.value="Pause";this._btnPause=this._elBtns.appendChild(this._btnPause);YAHOO.util.Event.addListener(A._btnPause,"click",A._onClickPauseBtn,A);this._btnClear=document.createElement("input");this._btnClear.type="button";this._btnClear.className="yui-log-button";this._btnClear.value="Clear";this._btnClear=this._elBtns.appendChild(this._btnClear);YAHOO.util.Event.addListener(A._btnClear,"click",A._onClickClearBtn,A);this._elCategoryFilters=this._elFt.appendChild(document.createElement("div"));this._elCategoryFilters.className="yui-log-categoryfilters";this._elSourceFilters=this._elFt.appendChild(document.createElement("div"));this._elSourceFilters.className="yui-log-sourcefilters";}},_initDragDrop:function(){if(YAHOO.util.DD&&this.draggable&&this._elHd){var A=new YAHOO.util.DD(this._elContainer);A.setHandleElId(this._elHd.id);this._elHd.style.cursor="move";}},_initCategories:function(){this._categoryFilters=[];var C=YAHOO.widget.Logger.categories;for(var A=0;A<C.length;A++){var B=C[A];this._categoryFilters.push(B);if(this._elCategoryFilters){this._createCategoryCheckbox(B);}}},_initSources:function(){this._sourceFilters=[];var C=YAHOO.widget.Logger.sources;for(var B=0;B<C.length;B++){var A=C[B];this._sourceFilters.push(A);if(this._elSourceFilters){this._createSourceCheckbox(A);}}},_createCategoryCheckbox:function(B){var A=this;if(this._elFt){var E=this._elCategoryFilters;var D=E.appendChild(document.createElement("span"));D.className="yui-log-filtergrp";var C=document.createElement("input");C.id="yui-log-filter-"+B+this._sName;C.className="yui-log-filter-"+B;C.type="checkbox";C.category=B;C=D.appendChild(C);C.checked=true;YAHOO.util.Event.addListener(C,"click",A._onCheckCategory,A);var F=D.appendChild(document.createElement("label"));F.htmlFor=C.id;F.className=B;F.innerHTML=B;this._filterCheckboxes[B]=C;}},_createSourceCheckbox:function(A){var D=this;if(this._elFt){var F=this._elSourceFilters;var E=F.appendChild(document.createElement("span"));E.className="yui-log-filtergrp";var C=document.createElement("input");C.id="yui-log-filter"+A+this._sName;C.className="yui-log-filter"+A;C.type="checkbox";C.source=A;C=E.appendChild(C);C.checked=true;YAHOO.util.Event.addListener(C,"click",D._onCheckSource,D);var B=E.appendChild(document.createElement("label"));B.htmlFor=C.id;B.className=A;B.innerHTML=A;this._filterCheckboxes[A]=C;}},_filterLogs:function(){if(this._elConsole!==null){this.clearConsole();this._printToConsole(YAHOO.widget.Logger.getStack());}},_printBuffer:function(){this._timeout=null;if(this._elConsole!==null){var B=this.thresholdMax;B=(B&&!isNaN(B))?B:500;if(this._consoleMsgCount<B){var A=[];for(var C=0;C<this._buffer.length;C++){A[C]=this._buffer[C];}this._buffer=[];this._printToConsole(A);}else{this._filterLogs();}if(!this.newestOnTop){this._elConsole.scrollTop=this._elConsole.scrollHeight;}}},_printToConsole:function(I){var B=I.length,M=document.createDocumentFragment(),P=[],Q=this.thresholdMin,C=this._sourceFilters.length,N=this._categoryFilters.length,K,H,G,F,L;if(isNaN(Q)||(Q>this.thresholdMax)){Q=0;}K=(B>Q)?(B-Q):0;for(H=KLine truncated
if(!this.checked){B.hideSource(C);}else{B.showSource(C);}},_onClickCollapseBtn:function(A,B){if(!B.isCollapsed){B.collapse();}else{B.expand();}},_onClickPauseBtn:function(A,B){if(!B.isPaused){B.pause();}else{B.resume();}},_onClickClearBtn:function(A,B){B.clearConsole();},_onNewLog:function(D,C,A){var B=C[0];A._buffer.push(B);if(A.logReaderEnabled===true&&A._timeout===null){A._timeout=setTimeout(function(){A._printBuffer();},A.outputBuffer);}},_onReset:function(C,B,A){A._filterLogs();}};if(!YAHOO.widget.Logger){YAHOO.widget.Logger={loggerEnabled:true,_browserConsoleEnabled:false,categories:["info","warn","error","time","window"],sources:["global"],_stack:[],maxStackEntries:2500,_startTime:new Date().getTime(),_lastTime:null,_windowErrorsHandled:false,_origOnWindowError:null};YAHOO.widget.Logger.log=function(B,F,G){if(this.loggerEnabled){if(!F){F="info";}else{F=F.toLocaleLowerCase();if(this._isNewCategory(F)){this._createNewCategory(F);}}var C="global";var A=null;if(G){var D=G.indexOf(" ");if(D>0){C=G.substring(0,D);A=G.substring(D,G.length);}else{C=G;}if(this._isNewSource(C)){this._createNewSource(C);}}var H=new Date();var J=new YAHOO.widget.LogMsg({msg:B,time:H,category:F,source:C,sourceDetail:A});var I=this._stack;var E=this.maxStackEntries;if(E&&!isNaN(E)&&(I.length>=E)){I.shift();}I.push(J);this.newLogEvent.fire(J);if(this._browserConsoleEnabled){this._printToBrowserConsole(J);}return true;}else{return false;}};YAHOO.widget.Logger.reset=function(){this._stack=[];this._startTime=new Date().getTime();this.loggerEnabled=true;this.log("Logger reset");this.logResetEvent.fire();};YAHOO.widget.Logger.getStack=function(){return this._stack;};YAHOO.widget.Logger.getStartTime=function(){return this._startTime;};YAHOO.widget.Logger.disableBrowserConsole=function(){YAHOO.log("Logger output to the function console.log() has been disabled.");this._browserConsoleEnabled=false;};YAHOO.widget.Logger.enableBrowserConsole=function(){this._browserConsoleEnabled=true;YAHOO.log("Logger output to the function console.log() has been enabled.");};YAHOO.widget.Logger.handleWindowErrors=function(){if(!YAHOO.widget.Logger._windowErrorsHandled){if(window.error){YAHOO.widget.Logger._origOnWindowError=window.onerror;}window.onerror=YAHOO.widget.Logger._onWindowError;YAHOO.widget.Logger._windowErrorsHandled=true;YAHOO.log("Logger handling of window.onerror has been enabled.");}else{YAHOO.log("Logger handling of window.onerror had already been enabled.");}};YAHOO.widget.Logger.unhandleWindowErrors=function(){if(YAHOO.widget.Logger._windowErrorsHandled){if(YAHOO.widget.Logger._origOnWindowError){window.onerror=YAHOO.widget.Logger._origOnWindowError;YAHOO.widget.Logger._origOnWindowError=null;}else{window.onerror=null;}YAHOO.widget.Logger._windowErrorsHandled=false;YAHOO.log("Logger handling of window.onerror has been disabled.");}else{YAHOO.log("Logger handling of window.onerror had already been disabled.");}};YAHOO.widget.Logger.categoryCreateEvent=new YAHOO.util.CustomEvent("categoryCreate",this,true);YAHOO.widget.Logger.sourceCreateEvent=new YAHOO.util.CustomEvent("sourceCreate",this,true);YAHOO.widget.Logger.newLogEvent=new YAHOO.util.CustomEvent("newLog",this,true);YAHOO.widget.Logger.logResetEvent=new YAHOO.util.CustomEvent("logReset",this,true);YAHOO.widget.Logger._createNewCategory=function(A){this.categories.push(A);this.categoryCreateEvent.fire(A);};YAHOO.widget.Logger._isNewCategory=function(B){for(var A=0;A<this.categories.length;A++){if(B==this.categories[A]){return false;}}return true;};YAHOO.widget.Logger._createNewSource=function(A){this.sources.push(A);this.sourceCreateEvent.fire(A);};YAHOO.widget.Logger._isNewSource=function(A){if(A){for(var B=0;B<this.sources.length;B++){if(A==this.sources[B]){return false;}}return true;}};YAHOO.widget.Logger._printToBrowserConsole=function(C){if(window.console&&console.log){var E=C.category;var D=C.category.substring(0,4).toUpperCase();var G=C.time;var F;if(G.toLocaleTimeString){F=G.toLocaleTimeString();}else{F=G.toString();}var H=G.getTime();var B=(YAHOO.widget.Logger._lastTime)?(H-YAHOO.widget.Logger._lastTime):0;YAHOO.widget.Logger._lastTime=H;var A=F+" ("+B+"ms): "+C.source+": ";console.log(A,C.msg);}};YAHOO.widget.Logger._onWindowError=function(A,C,B){try{YAHOO.widget.Logger.log(A+" ("+C+", line "+B+")","window");if(YAHOO.widget.Logger._origOnWindowError){YAHOO.widget.Logger._origOnWindowError();}}catch(D){return false;}};YAHOO.widget.Logger.log("Logger initialized");}YAHOO.register("logger",YAHOO.widget.Logger,{version:"2.5.2",build:"1076"});
//selector/selector-min.js
(function(){var A=YAHOO.util;A.Selector={_foundCache:[],_regexCache:{},_re:{nth:/^(?:([-]?\d*)(n){1}|(odd|even)$)*([-+]?\d*)$/,attr:/(\[.*\])/g,urls:/^(?:href|src)/},document:window.document,attrAliases:{},shorthand:{"\\#(-?[_a-z]+[-\\w]*)":"[id=$1]","\\.(-?[_a-z]+[-\\w]*)":"[class~=$1]"},operators:{"=":function(B,C){return B===C;},"!=":function(B,C){return B!==C;},"~=":function(B,D){var C=" ";return(C+B+C).indexOf((C+D+C))>-1;},"|=":function(B,C){return B===C||B.slice(0,C.length+1)===C+"-";},"^=":function(B,C){return B.indexOf(C)===0;},"$=":function(B,C){return B.slice(-C.length)===C;},"*=":function(B,C){return B.indexOf(C)>-1;},"":function(B,C){return B;}},pseudos:{"root":function(B){return B===B.ownerDocument.documentElement;},"nth-child":function(B,C){return A.Selector._getNth(B,C);},"nth-last-child":function(B,C){return A.Selector._getNth(B,C,null,true);},"nth-of-type":function(B,C){return A.Selector._getNth(B,C,B.tagName);},"nth-last-of-type":function(B,C){return A.Selector._getNth(B,C,B.tagName,true);},"first-child":function(B){return A.Selector._getChildren(B.parentNode)[0]===B;},"last-child":function(C){var B=A.Selector._getChildren(C.parentNode);return B[B.length-1]===C;},"first-of-type":function(B,C){return A.Selector._getChildren(B.parentNode,B.tagName)[0];},"last-of-type":function(C,D){var B=A.Selector._getChildren(C.parentNode,C.tagName);return B[B.length-1];},"only-child":function(C){var B=A.Selector._getChildren(C.parentNode);return B.length===1&&B[0]===C;},"only-of-type":function(B){return A.Selector._getChildren(B.parentNode,B.tagName).length===1;},"empty":function(B){return B.childNodes.length===0;},"not":function(B,C){return !A.Selector.test(B,C);},"contains":function(B,D){var C=B.innerText||B.textContent||"";return C.indexOf(D)>-1;},"checked":function(B){return B.checked===true;}},test:function(F,D){F=A.Selector.document.getElementById(F)||F;if(!F){return false;}var C=D?D.split(","):[];if(C.length){for(var E=0,B=C.length;E<B;++E){if(A.Selector._test(F,C[E])){return true;}}return false;}return A.Selector._test(F,D);},_test:function(D,G,F,E){F=F||A.Selector._tokenize(G).pop()||{};if(!D.tagName||(F.tag!=="*"&&D.tagName!==F.tag)||(E&&D._found)){return false;}if(F.attributes.length){var B,H,C=A.Selector._re.urls;if(!D.attributes||!D.attributes.length){return false;}for(var I=0,K;K=F.attributes[I++];){H=(C.test(K[0]))?2:0;B=D.getAttribute(K[0],H);if(B===null||B===undefined){return false;}if(A.Selector.operators[K[1]]&&!A.Selector.operators[K[1]](B,K[2])){return false;}}}if(F.pseudos.length){for(var I=0,J=F.pseudos.length;I<J;++I){if(A.Selector.pseudos[F.pseudos[I][0]]&&!A.Selector.pseudos[F.pseudos[I][0]](D,F.pseudos[I][1])){return false;}}}return(F.previous&&F.previous.combinator!==",")?A.Selector._combinators[F.previous.combinator](D,F):true;},filter:function(E,D){E=E||[];var G,C=[],H=A.Selector._tokenize(D);if(!E.item){for(var F=0,B=E.length;F<B;++F){if(!E[F].tagName){G=A.Selector.document.getElementById(E[F]);if(G){E[F]=G;}else{}}}}C=A.Selector._filter(E,A.Selector._tokenize(D)[0]);return C;},_filter:function(E,G,H,D){var C=H?null:[],I=A.Selector._foundCache;for(var F=0,B=E.length;F<B;F++){if(!A.Selector._test(E[F],"",G,D)){continue;}if(H){return E[F];}if(D){if(E[F]._found){continue;}E[F]._found=true;I[I.length]=E[F];}C[C.length]=E[F];}return C;},query:function(C,D,E){var B=A.Selector._query(C,D,E);return B;},_query:function(H,M,N,F){var P=(N)?null:[],E;if(!H){return P;}var D=H.split(",");if(D.length>1){var O;for(var I=0,J=D.length;I<J;++I){O=arguments.callee(D[I],M,N,true);P=N?O:P.concat(O);}A.Selector._clearFoundCache();return P;}if(M&&!M.nodeName){M=A.Selector.document.getElementById(M);if(!M){return P;}}M=M||A.Selector.document;if(M.nodeName!=="#document"){A.Dom.generateId(M);H=M.tagName+"#"+M.id+" "+H;E=M;M=M.ownerDocument;}var L=A.Selector._tokenize(H);var K=L[A.Selector._getIdTokenIndex(L)],B=[],C,G=L.pop()||{};if(K){C=A.Selector._getId(K.attributes);}if(C){E=E||A.Selector.document.getElementById(C);if(E&&(M.nodeName==="#document"||A.Dom.isAncestor(M,E))){if(A.Selector._test(E,null,K)){if(K===G){B=[E];}else{if(K.combinator===" "||K.combinator===">"){M=E;}}}}else{return P;}}if(M&&!B.length){B=M.getElementsByTagName(G.tag);}if(B.length){P=A.Selector._filter(B,G,N,F);}return P;},_clearFoundCache:function(){var E=A.Selector._foundCache;for(var C=0,B=E.length;C<B;++C){try{delete E[C]._found;}catch(D){E[C].removeAttribute("_found");}}E=[];},_getRegExp:function(D,B){var C=A.Selector._regexCache;B=B||"";if(!C[D+B]){C[D+B]=new RegExp(D,B);}return C[D+B];},_getChildren:function(){if(document.documentElement.children){return function(C,B){return(B)?C.children.tags(B):C.children||[];};}else{return function(F,C){if(F._children){return F._children;}var E=[],G=F.childNodes;for(var D=0,B=G.length;D<B;++D){if(G[D].tagName){if(!C||G[D].tagName===C){E[E.length]=G[D];}}}F._children=E;return E;};}}(),_combinators:{" ":function(C,B){while((C=C.parentNode)){if(A.Selector._test(C,"",B.previous)){return tLine truncated
++D){if(C[D][0]=="id"&&C[D][1]==="="){return C[D][2];}}},_getIdTokenIndex:function(D){for(var C=0,B=D.length;C<B;++C){if(A.Selector._getId(D[C].attributes)){return C;}}return -1;},_patterns:{tag:/^((?:-?[_a-z]+[\w-]*)|\*)/i,attributes:/^\[([a-z]+\w*)+([~\|\^\$\*!=]=?)?['"]?([^\]]*?)['"]?\]/i,pseudos:/^:([-\w]+)(?:\(['"]?(.+)['"]?\))*/i,combinator:/^\s*([>+~]|\s)\s*/},_tokenize:function(B){var D={},H=[],I,G=false,F=A.Selector._patterns,C;B=A.Selector._replaceShorthand(B);do{G=false;for(var E in F){if(YAHOO.lang.hasOwnProperty(F,E)){if(E!="tag"&&E!="combinator"){D[E]=D[E]||[];}if((C=F[E].exec(B))){G=true;if(E!="tag"&&E!="combinator"){if(E==="attributes"&&C[1]==="id"){D.id=C[3];}D[E].push(C.slice(1));}else{D[E]=C[1];}B=B.replace(C[0],"");if(E==="combinator"||!B.length){D.attributes=A.Selector._fixAttributes(D.attributes);D.pseudos=D.pseudos||[];D.tag=D.tag?D.tag.toUpperCase():"*";H.push(D);D={previous:D};}}}}}while(G);return H;},_fixAttributes:function(C){var D=A.Selector.attrAliases;C=C||[];for(var E=0,B=C.length;E<B;++E){if(D[C[E][0]]){C[E][0]=D[C[E][0]];}if(!C[E][1]){C[E][1]="";}}return C;},_replaceShorthand:function(C){var D=A.Selector.shorthand;var E=C.match(A.Selector._re.attr);if(E){C=C.replace(A.Selector._re.attr,"REPLACED_ATTRIBUTE");}for(var G in D){if(YAHOO.lang.hasOwnProperty(D,G)){C=C.replace(A.Selector._getRegExp(G,"gi"),D[G]);}}if(E){for(var F=0,B=E.length;F<B;++F){C=C.replace("REPLACED_ATTRIBUTE",E[F]);}}return C;}};if(YAHOO.env.ua.ie&&YAHOO.env.ua.ie<8){A.Selector.attrAliases["class"]="className";A.Selector.attrAliases["for"]="htmlFor";}})();YAHOO.register("selector",YAHOO.util.Selector,{version:"2.7.0",build:"1796"});
// yuitest/yuitest-min.js
YAHOO.namespace("tool");YAHOO.tool.TestCase=function(A){this._should={};for(var B in A){this[B]=A[B];}if(!YAHOO.lang.isString(this.name)){this.name=YAHOO.util.Dom.generateId(null,"testCase");}};YAHOO.tool.TestCase.prototype={resume:function(A){YAHOO.tool.TestRunner.resume(A);},wait:function(B,A){throw new YAHOO.tool.TestCase.Wait(B,A);},setUp:function(){},tearDown:function(){}};YAHOO.tool.TestCase.Wait=function(B,A){this.segment=(YAHOO.lang.isFunction(B)?B:null);this.delay=(YAHOO.lang.isNumber(A)?A:0);};YAHOO.namespace("tool");YAHOO.tool.TestSuite=function(A){this.name="";this.items=[];if(YAHOO.lang.isString(A)){this.name=A;}else{if(YAHOO.lang.isObject(A)){YAHOO.lang.augmentObject(this,A,true);}}if(this.name===""){this.name=YAHOO.util.Dom.generateId(null,"testSuite");}};YAHOO.tool.TestSuite.prototype={add:function(A){if(A instanceof YAHOO.tool.TestSuite||A instanceof YAHOO.tool.TestCase){this.items.push(A);}},setUp:function(){},tearDown:function(){}};YAHOO.namespace("tool");YAHOO.tool.TestRunner=(function(){function B(C){this.testObject=C;this.firstChild=null;this.lastChild=null;this.parent=null;this.next=null;this.results={passed:0,failed:0,total:0,ignored:0};if(C instanceof YAHOO.tool.TestSuite){this.results.type="testsuite";this.results.name=C.name;}else{if(C instanceof YAHOO.tool.TestCase){this.results.type="testcase";this.results.name=C.name;}}}B.prototype={appendChild:function(C){var D=new B(C);if(this.firstChild===null){this.firstChild=this.lastChild=D;}else{this.lastChild.next=D;this.lastChild=D;}D.parent=this;return D;}};function A(){A.superclass.constructor.apply(this,arguments);this.masterSuite=new YAHOO.tool.TestSuite("YUI Test Results");this._cur=null;this._root=null;var D=[this.TEST_CASE_BEGIN_EVENT,this.TEST_CASE_COMPLETE_EVENT,this.TEST_SUITE_BEGIN_EVENT,this.TEST_SUITE_COMPLETE_EVENT,this.TEST_PASS_EVENT,this.TEST_FAIL_EVENT,this.TEST_IGNORE_EVENT,this.COMPLETE_EVENT,this.BEGIN_EVENT];for(var C=0;C<D.length;C++){this.createEvent(D[C],{scope:this});}}YAHOO.lang.extend(A,YAHOO.util.EventProvider,{TEST_CASE_BEGIN_EVENT:"testcasebegin",TEST_CASE_COMPLETE_EVENT:"testcasecomplete",TEST_SUITE_BEGIN_EVENT:"testsuitebegin",TEST_SUITE_COMPLETE_EVENT:"testsuitecomplete",TEST_PASS_EVENT:"pass",TEST_FAIL_EVENT:"fail",TEST_IGNORE_EVENT:"ignore",COMPLETE_EVENT:"complete",BEGIN_EVENT:"begin",_addTestCaseToTestTree:function(C,D){var E=C.appendChild(D);for(var F in D){if(F.indexOf("test")===0&&YAHOO.lang.isFunction(D[F])){E.appendChild(F);}}},_addTestSuiteToTestTree:function(C,F){var E=C.appendChild(F);for(var D=0;D<F.items.length;D++){if(F.items[D] instanceof YAHOO.tool.TestSuite){this._addTestSuiteToTestTree(E,F.items[D]);}else{if(F.items[D] instanceof YAHOO.tool.TestCase){this._addTestCaseToTestTree(E,F.items[D]);}}}},_buildTestTree:function(){this._root=new B(this.masterSuite);this._cur=this._root;for(var C=0;C<this.masterSuite.items.length;C++){if(this.masterSuite.items[C] instanceof YAHOO.tool.TestSuite){this._addTestSuiteToTestTree(this._root,this.masterSuite.items[C]);}else{if(this.masterSuite.items[C] instanceof YAHOO.tool.TestCase){this._addTestCaseToTestTree(this._root,this.masterSuite.items[C]);}}}},_handleTestObjectComplete:function(C){if(YAHOO.lang.isObject(C.testObject)){C.parent.results.passed+=C.results.passed;C.parent.results.failed+=C.results.failed;C.parent.results.total+=C.results.total;C.parent.results.ignored+=C.results.ignored;C.parent.results[C.testObject.name]=C.results;if(C.testObject instanceof YAHOO.tool.TestSuite){C.testObject.tearDown();this.fireEvent(this.TEST_SUITE_COMPLETE_EVENT,{testSuite:C.testObject,results:C.results});}else{if(C.testObject instanceof YAHOO.tool.TestCase){this.fireEvent(this.TEST_CASE_COMPLETE_EVENT,{testCase:C.testObject,results:C.results});}}}},_next:function(){if(this._cur.firstChild){this._cur=this._cur.firstChild;}else{if(this._cur.next){this._cur=this._cur.next;}else{while(this._cur&&!this._cur.next&&this._cur!==this._root){this._handleTestObjectComplete(this._cur);this._cur=this._cur.parent;}if(this._cur==this._root){this._cur.results.type="report";this._cur.results.timestamp=(new Date()).toLocaleString();this.fireEvent(this.COMPLETE_EVENT,{results:this._cur.results});this._cur=null;}else{this._handleTestObjectComplete(this._cur);this._cur=this._cur.next;}}}return this._cur;},_run:function(){var E=false;var D=this._next();if(D!==null){var C=D.testObject;if(YAHOO.lang.isObject(C)){if(C instanceof YAHOO.tool.TestSuite){this.fireEvent(this.TEST_SUITE_BEGIN_EVENT,{testSuite:C});C.setUp();}else{if(C instanceof YAHOO.tool.TestCase){this.fireEvent(this.TEST_CASE_BEGIN_EVENT,{testCase:C});}}if(typeof setTimeout!="undefined"){setTimeout(function(){YAHOO.tool.TestRunner._run();},0);}else{this._run();}}else{this._runTest(D);}}},_resumeTest:function(G){var C=this._cur;var H=C.testObject;var E=C.parent.testObject;var K=(E._should.fail||{})[H];var D=(E._should.error||{})[H];var F=false;var I=null;try{G.apply(E);if(K){I=new YAHOO.util.ShouldFail();F=true;}else{iLine truncated
if(F){C.parent.results.failed++;}else{C.parent.results.passed++;}C.parent.results.total++;if(typeof setTimeout!="undefined"){setTimeout(function(){YAHOO.tool.TestRunner._run();},0);}else{this._run();}},_runTest:function(F){var C=F.testObject;var D=F.parent.testObject;var G=D[C];var E=(D._should.ignore||{})[C];if(E){F.parent.results[C]={result:"ignore",message:"Test ignored",type:"test",name:C};F.parent.results.ignored++;F.parent.results.total++;this.fireEvent(this.TEST_IGNORE_EVENT,{testCase:D,testName:C});if(typeof setTimeout!="undefined"){setTimeout(function(){YAHOO.tool.TestRunner._run();},0);}else{this._run();}}else{D.setUp();this._resumeTest(G);}},fireEvent:function(C,D){D=D||{};D.type=C;A.superclass.fireEvent.call(this,C,D);},add:function(C){this.masterSuite.add(C);},clear:function(){this.masterSuite.items=[];},resume:function(C){this._resumeTest(C||function(){});},run:function(C){var D=YAHOO.tool.TestRunner;D._buildTestTree();D.fireEvent(D.BEGIN_EVENT);D._run();}});return new A();})();YAHOO.namespace("util");YAHOO.util.Assert={_formatMessage:function(B,A){var C=B;if(YAHOO.lang.isString(B)&&B.length>0){return YAHOO.lang.substitute(B,{message:A});}else{return A;}},fail:function(A){throw new YAHOO.util.AssertionError(this._formatMessage(A,"Test force-failed."));},areEqual:function(B,C,A){if(B!=C){throw new YAHOO.util.ComparisonFailure(this._formatMessage(A,"Values should be equal."),B,C);}},areNotEqual:function(A,C,B){if(A==C){throw new YAHOO.util.UnexpectedValue(this._formatMessage(B,"Values should not be equal."),A);}},areNotSame:function(A,C,B){if(A===C){throw new YAHOO.util.UnexpectedValue(this._formatMessage(B,"Values should not be the same."),A);}},areSame:function(B,C,A){if(B!==C){throw new YAHOO.util.ComparisonFailure(this._formatMessage(A,"Values should be the same."),B,C);}},isFalse:function(B,A){if(false!==B){throw new YAHOO.util.ComparisonFailure(this._formatMessage(A,"Value should be false."),false,B);}},isTrue:function(B,A){if(true!==B){throw new YAHOO.util.ComparisonFailure(this._formatMessage(A,"Value should be true."),true,B);}},isNaN:function(B,A){if(!isNaN(B)){throw new YAHOO.util.ComparisonFailure(this._formatMessage(A,"Value should be NaN."),NaN,B);}},isNotNaN:function(B,A){if(isNaN(B)){throw new YAHOO.util.UnexpectedValue(this._formatMessage(A,"Values should not be NaN."),NaN);}},isNotNull:function(B,A){if(YAHOO.lang.isNull(B)){throw new YAHOO.util.UnexpectedValue(this._formatMessage(A,"Values should not be null."),null);}},isNotUndefined:function(B,A){if(YAHOO.lang.isUndefined(B)){throw new YAHOO.util.UnexpectedValue(this._formatMessage(A,"Value should not be undefined."),undefined);}},isNull:function(B,A){if(!YAHOO.lang.isNull(B)){throw new YAHOO.util.ComparisonFailure(this._formatMessage(A,"Value should be null."),null,B);}},isUndefined:function(B,A){if(!YAHOO.lang.isUndefined(B)){throw new YAHOO.util.ComparisonFailure(this._formatMessage(A,"Value should be undefined."),undefined,B);}},isArray:function(B,A){if(!YAHOO.lang.isArray(B)){throw new YAHOO.util.UnexpectedValue(this._formatMessage(A,"Value should be an array."),B);}},isBoolean:function(B,A){if(!YAHOO.lang.isBoolean(B)){throw new YAHOO.util.UnexpectedValue(this._formatMessage(A,"Value should be a Boolean."),B);}},isFunction:function(B,A){if(!YAHOO.lang.isFunction(B)){throw new YAHOO.util.UnexpectedValue(this._formatMessage(A,"Value should be a function."),B);}},isInstanceOf:function(B,C,A){if(!(C instanceof B)){throw new YAHOO.util.ComparisonFailure(this._formatMessage(A,"Value isn't an instance of expected type."),B,C);}},isNumber:function(B,A){if(!YAHOO.lang.isNumber(B)){throw new YAHOO.util.UnexpectedValue(this._formatMessage(A,"Value should be a number."),B);}},isObject:function(B,A){if(!YAHOO.lang.isObject(B)){throw new YAHOO.util.UnexpectedValue(this._formatMessage(A,"Value should be an object."),B);}},isString:function(B,A){if(!YAHOO.lang.isString(B)){throw new YAHOO.util.UnexpectedValue(this._formatMessage(A,"Value should be a string."),B);}},isTypeOf:function(A,C,B){if(typeof C!=A){throw new YAHOO.util.ComparisonFailure(this._formatMessage(B,"Value should be of type "+expected+"."),expected,typeof actual);}}};YAHOO.util.AssertionError=function(A){arguments.callee.superclass.constructor.call(this,A);this.message=A;this.name="AssertionError";};YAHOO.lang.extend(YAHOO.util.AssertionError,Error,{getMessage:function(){return this.message;},toString:function(){return this.name+": "+this.getMessage();},valueOf:function(){return this.toString();}});YAHOO.util.ComparisonFailure=function(B,A,C){arguments.callee.superclass.constructor.call(this,B);this.expected=A;this.actual=C;this.name="ComparisonFailure";};YAHOO.lang.extend(YAHOO.util.ComparisonFailure,YAHOO.util.AssertionError,{getMessage:function(){return this.message+"\nExpected: "+this.expected+" ("+(typeof this.expected)+")\nActual:"+this.actual+" ("+(typeof this.actual)+")";}});YAHOO.util.UnexpectedValue=function(B,A){arguments.callee.superclass.constructor.call(tLine truncated
var F=YAHOO.util.Assert;for(var A=0;A<D.length&&!C;A++){if(D[A]===E){C=true;}}if(!C){F.fail(F._formatMessage(B,"Value "+E+" ("+(typeof E)+") not found in array ["+D+"]."));}},containsItems:function(C,D,B){for(var A=0;A<C.length;A++){this.contains(C[A],D,B);}},containsMatch:function(E,D,B){if(typeof E!="function"){throw new TypeError("ArrayAssert.containsMatch(): First argument must be a function.");}var C=false;var F=YAHOO.util.Assert;for(var A=0;A<D.length&&!C;A++){if(E(D[A])){C=true;}}if(!C){F.fail(F._formatMessage(B,"No match found in array ["+D+"]."));}},doesNotContain:function(E,D,B){var C=false;var F=YAHOO.util.Assert;for(var A=0;A<D.length&&!C;A++){if(D[A]===E){C=true;}}if(C){F.fail(F._formatMessage(B,"Value found in array ["+D+"]."));}},doesNotContainItems:function(C,D,B){for(var A=0;A<C.length;A++){this.doesNotContain(C[A],D,B);}},doesNotContainMatch:function(E,D,B){if(typeof E!="function"){throw new TypeError("ArrayAssert.doesNotContainMatch(): First argument must be a function.");}var C=false;var F=YAHOO.util.Assert;for(var A=0;A<D.length&&!C;A++){if(E(D[A])){C=true;}}if(C){F.fail(F._formatMessage(B,"Value found in array ["+D+"]."));}},indexOf:function(E,D,A,C){for(var B=0;B<D.length;B++){if(D[B]===E){YAHOO.util.Assert.areEqual(A,B,C||"Value exists at index "+B+" but should be at index "+A+".");return ;}}var F=YAHOO.util.Assert;F.fail(F._formatMessage(C,"Value doesn't exist in array ["+D+"]."));},itemsAreEqual:function(D,F,C){var A=Math.max(D.length,F.length);var E=YAHOO.util.Assert;for(var B=0;B<A;B++){E.areEqual(D[B],F[B],E._formatMessage(C,"Values in position "+B+" are not equal."));}},itemsAreEquivalent:function(E,F,B,D){if(typeof B!="function"){throw new TypeError("ArrayAssert.itemsAreEquivalent(): Third argument must be a function.");}var A=Math.max(E.length,F.length);for(var C=0;C<A;C++){if(!B(E[C],F[C])){throw new YAHOO.util.ComparisonFailure(YAHOO.util.Assert._formatMessage(D,"Values in position "+C+" are not equivalent."),E[C],F[C]);}}},isEmpty:function(C,A){if(C.length>0){var B=YAHOO.util.Assert;B.fail(B._formatMessage(A,"Array should be empty."));}},isNotEmpty:function(C,A){if(C.length===0){var B=YAHOO.util.Assert;B.fail(B._formatMessage(A,"Array should not be empty."));}},itemsAreSame:function(D,F,C){var A=Math.max(D.length,F.length);var E=YAHOO.util.Assert;for(var B=0;B<A;B++){E.areSame(D[B],F[B],E._formatMessage(C,"Values in position "+B+" are not the same."));}},lastIndexOf:function(E,D,A,C){var F=YAHOO.util.Assert;for(var B=D.length;B>=0;B--){if(D[B]===E){F.areEqual(A,B,F._formatMessage(C,"Value exists at index "+B+" but should be at index "+A+"."));return ;}}F.fail(F._formatMessage(C,"Value doesn't exist in array."));}};YAHOO.namespace("util");YAHOO.util.ObjectAssert={propertiesAreEqual:function(D,G,C){var F=YAHOO.util.Assert;var B=[];for(var E in D){B.push(E);}for(var A=0;A<B.length;A++){F.isNotUndefined(G[B[A]],F._formatMessage(C,"Property '"+B[A]+"' expected."));}},hasProperty:function(A,B,C){if(!(A in B)){var D=YAHOO.util.Assert;D.fail(D._formatMessage(C,"Property '"+A+"' not found on object."));}},hasOwnProperty:function(A,B,C){if(!YAHOO.lang.hasOwnProperty(B,A)){var D=YAHOO.util.Assert;D.fail(D._formatMessage(C,"Property '"+A+"' not found on object instance."));}}};YAHOO.util.DateAssert={datesAreEqual:function(B,D,A){if(B instanceof Date&&D instanceof Date){var C=YAHOO.util.Assert;C.areEqual(B.getFullYear(),D.getFullYear(),C._formatMessage(A,"Years should be equal."));C.areEqual(B.getMonth(),D.getMonth(),C._formatMessage(A,"Months should be equal."));C.areEqual(B.getDate(),D.getDate(),C._formatMessage(A,"Day of month should be equal."));}else{throw new TypeError("DateAssert.datesAreEqual(): Expected and actual values must be Date objects.");}},timesAreEqual:function(B,D,A){if(B instanceof Date&&D instanceof Date){var C=YAHOO.util.Assert;C.areEqual(B.getHours(),D.getHours(),C._formatMessage(A,"Hours should be equal."));C.areEqual(B.getMinutes(),D.getMinutes(),C._formatMessage(A,"Minutes should be equal."));C.areEqual(B.getSeconds(),D.getSeconds(),C._formatMessage(A,"Seconds should be equal."));}else{throw new TypeError("DateAssert.timesAreEqual(): Expected and actual values must be Date objects.");}}};YAHOO.namespace("util");YAHOO.util.UserAction={simulateKeyEvent:function(F,J,E,C,L,B,A,K,H,N,M){F=YAHOO.util.Dom.get(F);if(!F){throw new Error("simulateKeyEvent(): Invalid target.");}if(YAHOO.lang.isString(J)){J=J.toLowerCase();switch(J){case"keyup":case"keydown":case"keypress":break;case"textevent":J="keypress";break;default:throw new Error("simulateKeyEvent(): Event type '"+J+"' not supported.");}}else{throw new Error("simulateKeyEvent(): Event type must be a string.");}if(!YAHOO.lang.isBoolean(E)){E=true;}if(!YAHOO.lang.isBoolean(C)){C=true;}if(!YAHOO.lang.isObject(L)){L=window;}if(!YAHOO.lang.isBoolean(B)){B=false;}if(!YAHOO.lang.isBoolean(A)){A=false;}if(!YAHOO.lang.isBoolean(K)){K=false;}if(!YAHOO.lang.isBoolean(H)){H=false;}if(!YAHOO.lang.isNumber(N)){N=0;}if(!YAHOO.laLine truncated
}}else{throw new Error("simulateMouseEvent(): Event type must be a string.");}if(!YAHOO.lang.isBoolean(H)){H=true;}if(!YAHOO.lang.isBoolean(E)){E=(P!="mousemove");}if(!YAHOO.lang.isObject(Q)){Q=window;}if(!YAHOO.lang.isNumber(J)){J=1;}if(!YAHOO.lang.isNumber(G)){G=0;}if(!YAHOO.lang.isNumber(F)){F=0;}if(!YAHOO.lang.isNumber(D)){D=0;}if(!YAHOO.lang.isNumber(B)){B=0;}if(!YAHOO.lang.isBoolean(C)){C=false;}if(!YAHOO.lang.isBoolean(A)){A=false;}if(!YAHOO.lang.isBoolean(O)){O=false;}if(!YAHOO.lang.isBoolean(M)){M=false;}if(!YAHOO.lang.isNumber(I)){I=0;}var N=null;if(YAHOO.lang.isFunction(document.createEvent)){N=document.createEvent("MouseEvents");if(N.initMouseEvent){N.initMouseEvent(P,H,E,Q,J,G,F,D,B,C,A,O,M,I,L);}else{N=document.createEvent("UIEvents");N.initEvent(P,H,E);N.view=Q;N.detail=J;N.screenX=G;N.screenY=F;N.clientX=D;N.clientY=B;N.ctrlKey=C;N.altKey=A;N.metaKey=M;N.shiftKey=O;N.button=I;N.relatedTarget=L;}if(L&&!N.relatedTarget){if(P=="mouseout"){N.toElement=L;}else{if(P=="mouseover"){N.fromElement=L;}}}K.dispatchEvent(N);}else{if(YAHOO.lang.isObject(document.createEventObject)){N=document.createEventObject();N.bubbles=H;N.cancelable=E;N.view=Q;N.detail=J;N.screenX=G;N.screenY=F;N.clientX=D;N.clientY=B;N.ctrlKey=C;N.altKey=A;N.metaKey=M;N.shiftKey=O;switch(I){case 0:N.button=1;break;case 1:N.button=4;break;case 2:break;default:N.button=0;}N.relatedTarget=L;K.fireEvent("on"+P,N);}else{throw new Error("simulateMouseEvent(): No event simulation framework present.");}}},fireMouseEvent:function(C,B,A){A=A||{};this.simulateMouseEvent(C,B,A.bubbles,A.cancelable,A.view,A.detail,A.screenX,A.screenY,A.clientX,A.clientY,A.ctrlKey,A.altKey,A.shiftKey,A.metaKey,A.button,A.relatedTarget);},click:function(B,A){this.fireMouseEvent(B,"click",A);},dblclick:function(B,A){this.fireMouseEvent(B,"dblclick",A);},mousedown:function(B,A){this.fireMouseEvent(B,"mousedown",A);},mousemove:function(B,A){this.fireMouseEvent(B,"mousemove",A);},mouseout:function(B,A){this.fireMouseEvent(B,"mouseout",A);},mouseover:function(B,A){this.fireMouseEvent(B,"mouseover",A);},mouseup:function(B,A){this.fireMouseEvent(B,"mouseup",A);},fireKeyEvent:function(B,C,A){A=A||{};this.simulateKeyEvent(C,B,A.bubbles,A.cancelable,A.view,A.ctrlKey,A.altKey,A.shiftKey,A.metaKey,A.keyCode,A.charCode);},keydown:function(B,A){this.fireKeyEvent("keydown",B,A);},keypress:function(B,A){this.fireKeyEvent("keypress",B,A);},keyup:function(B,A){this.fireKeyEvent("keyup",B,A);}};YAHOO.namespace("tool");YAHOO.tool.TestManager={TEST_PAGE_BEGIN_EVENT:"testpagebegin",TEST_PAGE_COMPLETE_EVENT:"testpagecomplete",TEST_MANAGER_BEGIN_EVENT:"testmanagerbegin",TEST_MANAGER_COMPLETE_EVENT:"testmanagercomplete",_curPage:null,_frame:null,_logger:null,_timeoutId:0,_pages:[],_results:null,_handleTestRunnerComplete:function(A){this.fireEvent(this.TEST_PAGE_COMPLETE_EVENT,{page:this._curPage,results:A.results});this._processResults(this._curPage,A.results);this._logger.clearTestRunner();if(this._pages.length){this._timeoutId=setTimeout(function(){YAHOO.tool.TestManager._run();},1000);}else{this.fireEvent(this.TEST_MANAGER_COMPLETE_EVENT,this._results);}},_processResults:function(C,A){var B=this._results;B.passed+=A.passed;B.failed+=A.failed;B.ignored+=A.ignored;B.total+=A.total;if(A.failed){B.failedPages.push(C);}else{B.passedPages.push(C);}A.name=C;A.type="page";B[C]=A;},_run:function(){this._curPage=this._pages.shift();this.fireEvent(this.TEST_PAGE_BEGIN_EVENT,this._curPage);this._frame.location.replace(this._curPage);},load:function(){if(parent.YAHOO.tool.TestManager!==this){parent.YAHOO.tool.TestManager.load();}else{if(this._frame){var A=this._frame.YAHOO.tool.TestRunner;this._logger.setTestRunner(A);A.subscribe(A.COMPLETE_EVENT,this._handleTestRunnerComplete,this,true);A.run();}}},setPages:function(A){this._pages=A;},start:function(){if(!this._initialized){this.createEvent(this.TEST_PAGE_BEGIN_EVENT);this.createEvent(this.TEST_PAGE_COMPLETE_EVENT);this.createEvent(this.TEST_MANAGER_BEGIN_EVENT);this.createEvent(this.TEST_MANAGER_COMPLETE_EVENT);if(!this._frame){var A=document.createElement("iframe");A.style.visibility="hidden";A.style.position="absolute";document.body.appendChild(A);this._frame=A.contentWindow||A.contentDocument.ownerWindow;}if(!this._logger){this._logger=new YAHOO.tool.TestLogger();}this._initialized=true;}this._results={passed:0,failed:0,ignored:0,total:0,type:"report",name:"YUI Test Results",failedPages:[],passedPages:[]};this.fireEvent(this.TEST_MANAGER_BEGIN_EVENT,null);this._run();},stop:function(){clearTimeout(this._timeoutId);}};YAHOO.lang.augmentObject(YAHOO.tool.TestManager,YAHOO.util.EventProvider.prototype);YAHOO.namespace("tool");YAHOO.tool.TestLogger=function(B,A){YAHOO.tool.TestLogger.superclass.constructor.call(this,B,A);this.init();};YAHOO.lang.extend(YAHOO.tool.TestLogger,YAHOO.widget.LogReader,{footerEnabled:true,newestOnTop:false,formatMsg:function(B){var A=B.category;var C=this.html2Text(B.msg);return"<pre><p><span class=\""+A+"\">"+A.toUpperLine truncated
A.subscribe(A.TEST_CASE_COMPLETE_EVENT,this._handleTestRunnerEvent,this,true);},_handleTestRunnerEvent:function(D){var A=YAHOO.tool.TestRunner;var C="";var B="";switch(D.type){case A.BEGIN_EVENT:C="Testing began at "+(new Date()).toString()+".";B="info";break;case A.COMPLETE_EVENT:C="Testing completed at "+(new Date()).toString()+".\nPassed:"+D.results.passed+" Failed:"+D.results.failed+" Total:"+D.results.total;B="info";break;case A.TEST_FAIL_EVENT:C=D.testName+": "+D.error.getMessage();B="fail";break;case A.TEST_IGNORE_EVENT:C=D.testName+": ignored.";B="ignore";break;case A.TEST_PASS_EVENT:C=D.testName+": passed.";B="pass";break;case A.TEST_SUITE_BEGIN_EVENT:C="Test suite \""+D.testSuite.name+"\" started.";B="info";break;case A.TEST_SUITE_COMPLETE_EVENT:C="Test suite \""+D.testSuite.name+"\" completed.\nPassed:"+D.results.passed+" Failed:"+D.results.failed+" Total:"+D.results.total;B="info";break;case A.TEST_CASE_BEGIN_EVENT:C="Test case \""+D.testCase.name+"\" started.";B="info";break;case A.TEST_CASE_COMPLETE_EVENT:C="Test case \""+D.testCase.name+"\" completed.\nPassed:"+D.results.passed+" Failed:"+D.results.failed+" Total:"+D.results.total;B="info";break;default:C="Unexpected event "+D.type;C="info";}YAHOO.log(C,B,"TestRunner");}});YAHOO.namespace("tool.TestFormat");YAHOO.tool.TestFormat.JSON=function(A){return YAHOO.lang.JSON.stringify(A);};YAHOO.tool.TestFormat.XML=function(C){var A=YAHOO.lang;var B="<"+C.type+" name=\""+C.name.replace(/"/g,"&quot;").replace(/'/g,"&apos;")+"\"";if(C.type=="test"){B+=" result=\""+C.result+"\" message=\""+C.message+"\">";}else{B+=" passed=\""+C.passed+"\" failed=\""+C.failed+"\" ignored=\""+C.ignored+"\" total=\""+C.total+"\">";for(var D in C){if(A.hasOwnProperty(C,D)&&A.isObject(C[D])&&!A.isArray(C[D])){B+=arguments.callee(C[D]);}}}B+="</"+C.type+">";return B;};YAHOO.namespace("tool");YAHOO.tool.TestReporter=function(A,B){this.url=A;this.format=B||YAHOO.tool.TestFormat.XML;this._fields=new Object();this._form=null;this._iframe=null;};YAHOO.tool.TestReporter.prototype={constructor:YAHOO.tool.TestReporter,addField:function(A,B){this._fields[A]=B;},clearFields:function(){this._fields=new Object();},destroy:function(){if(this._form){this._form.parentNode.removeChild(this._form);this._form=null;}if(this._iframe){this._iframe.parentNode.removeChild(this._iframe);this._iframe=null;}this._fields=null;},report:function(A){if(!this._form){this._form=document.createElement("form");this._form.method="post";this._form.style.visibility="hidden";this._form.style.position="absolute";this._form.style.top=0;document.body.appendChild(this._form);if(YAHOO.env.ua.ie){this._iframe=document.createElement("<iframe name=\"yuiTestTarget\" />");}else{this._iframe=document.createElement("iframe");this._iframe.name="yuiTestTarget";}this._iframe.src="javascript:false";this._iframe.style.visibility="hidden";this._iframe.style.position="absolute";this._iframe.style.top=0;document.body.appendChild(this._iframe);this._form.target="yuiTestTarget";}this._form.action=this.url;while(this._form.hasChildNodes()){this._form.removeChild(this._form.lastChild);}this._fields.results=this.format(A);this._fields.useragent=navigator.userAgent;this._fields.timestamp=(new Date()).toLocaleString();for(var B in this._fields){if(YAHOO.lang.hasOwnProperty(this._fields,B)&&typeof this._fields[B]!="function"){if(YAHOO.env.ua.ie){input=document.createElement("<input name=\""+B+"\" >");}else{input=document.createElement("input");input.name=B;}input.type="hidden";input.value=this._fields[B];this._form.appendChild(input);}}delete this._fields.results;delete this._fields.useragent;delete this._fields.timestamp;if(arguments[1]!==false){this._form.submit();}}};YAHOO.register("yuitest",YAHOO.tool.TestRunner,{version:"2.5.2",build:"1076"});