I, of course, after C++ it is difficult to find similar errors in your code. But still: what explains this behavior of JS?
An example of the first. In both cases, expected true:
var flag = true;
flag &= true;
alert(flag);//says "1"
var flag = true;
flag = flag && true;
alert(flag);//says true
Will take a second. The comparison to "equality" of two objects-date always returns false. In this case <= < return different values. It is not clear.
alert(new Date == new Date);//says "false"
alert(new Date <= new Date);//says true
alert(new Date >= new Date);//says true
alert(new Date < new Date);//says "false"
alert(new Date > new Date);//says "false"