// nCode Image Resizer for SMF 1.1
// http://www.ncode.nl/
// Version: 1.0.1
// Converted to SMF use by m3talc0re (webtechnica.net)
//
// (c) 2007 nCode

NcodeImageResizer.IMAGE_ID_BASE = 'ncode_imageresizer_container_';
NcodeImageResizer.scheduledResizes = [];

function NcodeImageResizer(id, img) {
    this.id = id;
    this.img = img;
    this.originalWidth = 0;
    this.originalHeight = 0;
    this.originalWidth = img.originalWidth;
    this.originalHeight = img.originalHeight;

    img.id = NcodeImageResizer.IMAGE_ID_BASE+id;
}

NcodeImageResizer.executeOnload = function() {
    var rss = NcodeImageResizer.scheduledResizes;
    for(var i = 0; i  < rss.length; i++) {
        NcodeImageResizer.createOn(rss[i], true);
    }
}

NcodeImageResizer.schedule = function(img) {
    if(NcodeImageResizer.scheduledResizes.length == 0) {
        if(window.addEventListener) {
            window.addEventListener('load', NcodeImageResizer.executeOnload, false);
        } else if(window.attachEvent) {
            window.attachEvent('onload', NcodeImageResizer.executeOnload);
        }
    }
    NcodeImageResizer.scheduledResizes.push(img);
}

NcodeImageResizer.getNextId = function() {
    var id = 1;
    while(document.getElementById(NcodeImageResizer.IMAGE_ID_BASE+id) != null) {
        id++;
    }
    return id;
}

NcodeImageResizer.createOnId = function(id) {
    return NcodeImageResizer.createOn(document.getElementById(id));
}

NcodeImageResizer.createOn = function(img, isSchedule) {
    if (typeof isSchedule == 'undefined') isSchedule = false;

    if (!img || !img.tagName || img.tagName.toLowerCase() != 'img') {
        alert(img+' is not an image ('+img.tagName.toLowerCase()+')');
    }

    if(img.width == 0 || img.height == 0) {
        if(!isSchedule)
            NcodeImageResizer.schedule(img);
        return;
    }

    if(!img.originalWidth) img.originalWidth = img.width;
    if(!img.originalHeight) img.originalHeight = img.height;

    if((NcodeImageResizer.MAXWIDTH > 0 && img.originalWidth > NcodeImageResizer.MAXWIDTH) || (NcodeImageResizer.MAXHEIGHT > 0 && img.originalHeight > NcodeImageResizer.MAXHEIGHT)) {
        var newid, resizer;
        if(img.id && img.id.indexOf(NcodeImageResizer.IMAGE_ID_BASE) == 0) {
            newid = img.id.substr(NcodeImageResizer.IMAGE_ID_BASE.length);
        } else {
            newid = NcodeImageResizer.getNextId();
            resizer = new NcodeImageResizer(newid, img);
        }

        resizer.scale();
    }
}

NcodeImageResizer.prototype.scale = function() {
    this.img.height = this.originalHeight;
    this.img.width = this.originalWidth;

    if(NcodeImageResizer.MAXWIDTH > 0 && this.img.width > NcodeImageResizer.MAXWIDTH) {
        this.img.height = (NcodeImageResizer.MAXWIDTH / this.img.width) * this.img.height;
        this.img.width = NcodeImageResizer.MAXWIDTH;
    }

    if(NcodeImageResizer.MAXHEIGHT > 0 && this.img.height > NcodeImageResizer.MAXHEIGHT) {
        this.img.width = (NcodeImageResizer.MAXHEIGHT / this.img.height) * this.img.width;
        this.img.height = NcodeImageResizer.MAXHEIGHT;
    }

    return false;
}

