mCurrRow.appendTo(this);
mSlots = 4;
mCellSize = 0;
var mRealCellWidth = $(mLabels[0]).outerWidth(true);
if (mRealCellWidth < mSlotWidth) {
mCellSize = 1;
}
if (mRealCellWidth >= mSlotWidth && mRealCellWidth < mSlotWidth * 2) {
mCellSize = 2;
}
if (mRealCellWidth >= mSlotWidth * 2) {
mCellSize = 4;
}
}
mSlots -= mCellSize;
if (mSlots >= 0) { //If empty slots exists, put the cell into the row.
mLabel = mLabels.shift();
$(mLabel).addClass(‘___cell’);
$(mLabel).css(‘display’, ‘table-cell’);
$(mLabel).appendTo(mCurrRow);
}
}
$(‘.___table’).each(function() { //Align all the tables and cells.
$(this).css(‘width’, ‘100%’);
var mCellWidth = 100 / $(‘.___cell’, this).length;
$(‘.___cell’, this).css(‘width’, mCellWidth + ‘%’);
});
}
else { // for the evil M$IE6, use table, tr, td tags.
while (mLabels.length > 0) {
if (mSlots <= 0) { //If no empty slot, create a new row.
mCurrRow = $(‘<table class=”___table” cellspacing=”0″ cellpadding=”0″></table>’);
mRow = $(‘<tr></tr>’);
mRow.appendTo(mCurrRow);
mCurrRow.appendTo(this);
mSlots = 4;
mCellSize = 0;
var mRealCellWidth = $(mLabels[0]).attr(‘offsetWidth’);
//The EVIL IE only:
//be sure to use this css reset: table { border-collapse: collapse; border-spacing: 0; }
//otherwise, 2 lines will be occupied by some long problem options instead of 1.
//or use this code instead: var mRealCellWidth = $(mLabels[0]).attr(‘offsetWidth’) * 1.3;
if (mRealCellWidth <= mSlotWidth) {
mCellSize = 1;
}
if (mRealCellWidth > mSlotWidth && mRealCellWidth <= mSlotWidth * 2) {
mCellSize = 2;
}
if (mRealCellWidth > mSlotWidth * 2) {
mCellSize = 4;
}
}
mSlots -= mCellSize;
if (mSlots >= 0) { //If empty slots exists, put the cell into the row.
mLabel = mLabels.shift();
mCell = $(‘<td class=”___cell”></td>’);
$(mLabel).appendTo(mCell);
mCell.appendTo($(‘tr’, mCurrRow)[0]);
}
}
$(‘.___table’).each(function() { //Align all the tables and cells.
$(this).css(‘width’, ‘100%’);
var mCellWidth = 100 / $(‘tbody tr .___cell’, this).length;
$(‘tbody tr .___cell’, this).css(‘width’, mCellWidth + ‘%’);
});
}
});
},
/**
* Create a new page, and add it to the paper.
* @return {jQuery} the new page.
*/
_CreateNewPage: function() {
++this.FPageCount;
mPage = $(‘<div class=”‘ + this.CPageClass + ‘” id=”___page_’ + this.FPageCount + ‘”></div>’);
mPage.appendTo($(‘#’ + this.FPaperOlId));










