function LinkTools() {
    
}

LinkTools.EXTERNAL_TARGET_CLASS = 'targeted';
LinkTools.TARGET_CLASS_CUSTOM_PREFIX = 'target_';

LinkTools.PARENT_TARGET = '_parent';
LinkTools.TOP_TARGET = '_top';
LinkTools.NEW_TARGET = '_blank';

LinkTools.DEFAULT_TARGET = LinkTools.NEW_TARGET;

LinkTools.target = {
    subscribes : function() {
        var defaultTarget = LinkTools.DEFAULT_TARGET;
        var defaultCustomlPrefixTargetClass = LinkTools.TARGET_CLASS_CUSTOM_PREFIX;
        var defaultExternalTargetClass = LinkTools.EXTERNAL_TARGET_CLASS;
        
        switch (arguments.length) {
            case 3 : {
                defaultTarget = (arguments[2] == null) ? defaultTarget : arguments[2];
            }
            
            case 2 : {
                defaultCustomlPrefixTargetClass = (arguments[1] == null) ? defaultCustomlPrefixTargetClass : arguments[1];
                
            }
            
            case 2 : {
                defaultExternalTargetClass = (arguments[0] == null) ? defaultExternalTargetClass : arguments[0];
                
            } break;
            
            default : {
                // do nothing
            } break;
            
        }
        
        window.appendLoadEvent(function () {
            var lst = document.getElementsByTagName('a');
            
            var sz = lst.length;
            var i = 0;
            var cur = null;
            var tg = null;
            
            for (i = 0; i < sz; i++) {
                cur = lst[i];
                
                if (cur.className.findWord(defaultExternalTargetClass) == false) {
                    continue;
                }
                
                tg = cur.className.getPrefixedWord(defaultCustomlPrefixTargetClass);
                
                tg = (tg == null) ? defaultTarget : tg;
                
                cur.target = tg;
            }
            
            
            return true;
        });
        
        return true;
        
        
    }
    
}
