﻿String.prototype.toTitleCase = function () {
    
    var i, 
    str, 
    lowers = ['A', 'An', 'The', 'And', 'But', 'Or', 'For', 'Nor', 'As', 'At', 'By', 'For', 'From', 'In', 'Into', 'Of', 'On', 'Onto', 'To', 'With'], 
    uppers = ['Id', 'Safc', 'Sfa', 'Fifa', 'Spl', 'Sfl', 'Fa', 'Sast']; ;
    
    str = this.replace(/\w\S*/g, function (txt) {
        return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
    });
    
    for (i = 0; i < lowers.length; i++)
        str = str.replace(new RegExp('\\s' + lowers[i] + '\\s', 'gi'),
            function (txt) {
                return txt.toLowerCase();
            });
   
    for (i = 0; i < uppers.length; i++)
        str = str.replace(new RegExp('\\b' + uppers[i] + '\\b', 'gi'),
            uppers[i].toUpperCase());

    return str;
}

