/**
 * SL jQuery plugin
 * 
 * Generic functions and routines
 */

// ========================== curvyCorners integration ========================

$.curvyCorners = function(el, settings, r2, r3, r4){
    var r1;
    if (typeof(settings) != "object") {
        if (r2 || typeof(r2) == 'number') {
            if (r4 || typeof(r4) == 'number') {
                r1 = settings;
            } else {
                r3 = r4 = r2;
                r2 = r1 = settings;
            }
        } else {
            if (settings) {
                r2 = r3 = r4 = r1 = settings;
            } else {
                r2 = r3 = r4 = r1 = 10;
            }
        }
        settings = {
          tl: { radius: r1 },
          tr: { radius: r2 },
          bl: { radius: r3 },
          br: { radius: r4 },
          antiAlias: true
        };
    } else {
        r1 = settings.tl.radius;
        r2 = settings.tr.radius;
        r3 = settings.bl.radius;
        r4 = settings.br.radius;
    }
    if ($.browser.mozilla) {
        $(el).css({
            '-moz-border-radius-topleft': r1,
            '-moz-border-radius-topright': r2,
            '-moz-border-radius-bottomleft': r3,
            '-moz-border-radius-bottomright': r4
        });
        return;
    }
    else if (!$.browser.opera && !$.browser.msie) {
        $(el).css({
            '-webkit-border-top-left-radius': r1,
            '-webkit-border-top-right-radius': r2,
            '-webkit-border-bottom-left-radius': r3,
            '-webkit-border-bottom-right-radius': r4
        });
        return;
    }

    // check if curvycorners library has loaded
    if (window.curvyCorners) {
        curvyCorners(settings, el);
    } else {
        $.getScript(webroot+"vendors/curvycorners/curvycorners.js", function() {
            curvyCorners(settings, el);
        });
    }
}

$.fn.curvyCorners = function(settings, r2, r3, r4) {
    // loop through DOM elements
    this.each(function(){ 
        $.curvyCorners(this, settings, r2, r3, r4);
    });
}

var curvyCornersVerbose = false;
var curvyCornersNoAutoScan = true;

// =========================== EMAIL DEFUSCATOR ==================================

$.fn.defuscate = function(settings) {
    settings = $.extend({link: true}, settings);
    regex = /\b([A-Z0-9._%-]+)\([^)]+\)((?:[A-Z0-9-]+\.?))+\([^)]+\)([A-Z]{2,6})\b/gi;
    mailto = '<a href="mailto:$1@$2.$3">$1@$2.$3</a>';
    plain = "$1@$2.$3";
    return this.each(function() {
        defuscated = $(this).html().replace(regex, settings.link ? mailto : plain)
        $(this).html(defuscated);
    });
}

// =========================== Images preloader ==================================

$.preLoadImagesCache = [];

// Arguments are image paths relative to the current page.
$.preLoadImages = function() {
    var args_len = arguments.length;
    for (var i = args_len; i--;) {
        var cacheImage = document.createElement('img');
        cacheImage.src = arguments[i];
        $.preLoadImagesCache.push(cacheImage);
    }
}

// =========================== INITIALIZATION ==================================

// add support of IE8 browser detection to jQuery
$.browser.msie = $.browser.msie || navigator.appName == 'Microsoft Internet Explorer';

$.ajaxSetup({'dataType': 'html'});

$(function() { $('.sl-email').defuscate(); });
