(function($) {
$(document).ready(function() {
var colSets = $( '.colSet' );
colSets.each( function( index, element ) {
var colSet = $(this);
var columns = colSet.children( '.sColumn' );
var colNum = columns.length;
var freeCols = 12;
columns.each(function( index, element ) {
// column does not have specified width
if( ! $(this).is( '[class*=col-lg-]' ) ) {
return;
}
var columnClasses = $(this).attr( 'class' ).split(' ');
var numCols = 0;
// Get # of initial grid columns assigned for the column
for( var key in columnClasses ) {
var currClass = columnClasses[key];
if( currClass.indexOf( 'col-lg-' ) >= 0 ) {
numCols = currClass.substr(currClass.length - 2);
if( numCols.substr(0, 1) == '-' ) {
numCols = numCols.substr( numCols.length - 1 );
}
}
}
// Adjust the remaining freeCols accordingly
freeCols -= numCols;
// Check if user provided widths with total that exceeds 100%.
// If so, just divide all columns evenly.
// If number is not exactly divisible => add remainder to the last column.
if( freeCols < 0 ) {
freeCols = 12;
colNum = columns.length;
columns.each(function( index, element ) {
$(this).attr( 'class', function (i, c) {
return c.replace( /col-lg-(\d+)/, 'col-lg-' + freeCols/colNum );
});
freeCols -= freeCols/colNum;
colNum--;
});
colNum = 0;
return;
}
// Account for all columns having the class col-lg-..
colNum--;
});
// Apply free width to the rest of the columns
if( colNum != 0 ) {
var numCols = Math.floor(freeCols / colNum);
columns.each(function(index, element) {
if( ! $(this).is( '[class*=col-lg-]' ) ) {
$(this).addClass( 'col-lg-' + numCols );
freeCols -= numCols;
}
});
}
// If all columns have set width, but freeWidth is remaining, add it to the last column
if( freeCols != 0 ) {
var $lastCol = columns.last();
var lastColClasses = $lastCol.attr( 'class' ).split(' ');
for( var key in lastColClasses ) {
var currClass = lastColClasses[key];
if( currClass.indexOf( 'col-lg-' ) >= 0 ) {
numCols = Number( currClass.substr(currClass.length - 1) );
numCols += freeCols;
$lastCol.removeClass(currClass);
}
}
$lastCol.addClass( 'col-lg-' + numCols );
}
});
});
})(jQuery);