(function() {
    var REDIRECT_TO = '/dev.do';
	var REDIRECTION_API_ENDPOINT = '/api/snc/v1/dev/url_redirections';

    function findRedirectionRule(data) {
        var currentUrl = window.location.toString();
        var urlRedirections = data.result;
        var urlRedirection;
        var redirectionRule;

        for (var i = 0; i < urlRedirections.length; i++) {
            urlRedirection = urlRedirections[i];
            if (urlRedirection.regex === '1' && new RegExp(urlRedirection.old_url, 'i').test(currentUrl)) {
                redirectionRule = urlRedirection;
            } else if (urlRedirection.regex === '0' && currentUrl.indexOf(urlRedirection.old_url) > -1) {
                redirectionRule = urlRedirection;
            }
        }

        return redirectionRule;
    }
	
	function generateNewUrl(rule) {
		var currentUrl = window.location.toString();
		var result = new RegExp(rule.old_url, 'i').exec(currentUrl);
        var newUrlLocation = rule.new_url.replace(/\\\//g, '/');

		if (result.length > 1) {
			for (var i = 1; i < result.length; i++) {
				newUrlLocation = newUrlLocation.replace('$' + i, result[i]);
			}
		}
		
		return newUrlLocation;
	}

    jQuery.get(REDIRECTION_API_ENDPOINT)
        .done(function(data) {
            var urlRedirectionRule = findRedirectionRule(data);
			var newUrlLocation = REDIRECT_TO;

            if (urlRedirectionRule) {
                newUrlLocation = generateNewUrl(urlRedirectionRule);
            }
		
			window.location = newUrlLocation;
        })
        .fail(function() {
            window.location = REDIRECT_TO;
        });
})();