Я бы реализовал вот так:
String.prototype.index = function(x){
var i1, i2, l1 = this.length, l2 = x.length;
for(i1 = 0; i1 < l1; i1++)
if(this[i1] === x[0])
for(i2 = 0; i2 <= l2; i2++){
if(i2 === l2) return i1;
if(this[i1 + i2] === x[i2]) continue;
break;
};
return -1;
};
var s1 = 'aababaO_o',
l1 = 'abaO', l2 = 'abac', l3 = 'aa', l4 = 'O_o';
alert( [
[s1.index(l1), s1.indexOf(l1)],
[s1.index(l2), s1.indexOf(l2)],
[s1.index(l3), s1.indexOf(l3)],
[s1.index(l4), s1.indexOf(l4)]
].join('\n') );