-
Notifications
You must be signed in to change notification settings - Fork 0
/
dualcolumns.js
91 lines (85 loc) · 4.02 KB
/
dualcolumns.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
$.fn.dualColumns = function(cutoff, fullclass, halfclass, otherclass) {
//handle undefined cutoff
if(typeof cutoff === 'undefined'){
throw new Error("A charactor cuttoff limit is required");
}
//handle undefined $(this)
if(typeof $(this) === 'undefined'){
throw new Error("A class selector is required is required");
}
//handled undefined fullclass
if(typeof fullclass === 'undefined'){
throw new Error("A class declaration for full length is required");
}
//handled undefined halfclass for half cells
if(typeof halfclass === 'undefined'){
throw new Error("A class declaration for half length is required");
}
//optional extra class for right side
otherclass = typeof otherclass !== 'undefined' ? otherclass : halfclass;
var halfcount = 0;
$(this).each(function(){
//first
if(!$(this).prev().html()) {
if($(this).html().length < cutoff && $(this).next().html().length < cutoff){
$(this).addClass(halfclass);
$(this).removeClass(fullclass);
halfcount++;
} else {
$(this).addClass(fullclass);
$(this).removeClass(halfclass);
halfcount = 0;
}
//last
} else if(!$(this).next().html()) {
if($(this).html().length < cutoff && $(this).prev().html().length < cutoff){
$(this).addClass(otherclass);
$(this).removeClass(fullclass);
halfcount++;
} else {
$(this).addClass(fullclass);
$(this).removeClass('half');
halfcount = 0;
}
//normal
} else {
if($(this).html().length < cutoff){
//prefigure
if(halfcount % 2 == 1 && halfcount != 0) {
//we are on a odd one, we're gtg
var halfsafe = true;
} else {
//we are on a new one
if($(this).next().html().length < cutoff){
//half it
var halfsafe = true;
} else {
//full it
var halfsafe = false;
}
}
if(halfsafe)
{
if(halfcount % 2 == 0){
$(this).addClass(halfclass);
$(this).removeClass(fullclass);
} else {
$(this).addClass(otherclass);
$(this).removeClass(fullclass);
}
halfcount++;
} else {
$(this).addClass(fullclass);
$(this).removeClass(halfclass);
$(this).removeClass(halfclass);
halfcount = 0;
}
} else {
$(this).addClass(fullclass);
$(this).removeClass(halfclass);
$(this).removeClass(otherclass);
halfcount = 0;
}
}
});
};