// 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.WARNING_ID_BASE = 'ncode_imageresizer_warning_'; NcodeImageResizer.scheduledResizes = [];  function NcodeImageResizer(id, img) { 	this.id = id; 	this.img = img; 	this.originalWidth = 0; 	this.originalHeight = 0; 	this.warning = null; 	this.warningTextNode = null; 	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 isRecovery = false; // if this is a recovery from QuickEdit, which only restores the HTML, not the OO structure 		var newid, resizer; 		if(img.id && img.id.indexOf(NcodeImageResizer.IMAGE_ID_BASE) == 0) { 			newid = img.id.substr(NcodeImageResizer.IMAGE_ID_BASE.length); 			if(document.getElementById(NcodeImageResizer.WARNING_ID_BASE+newid) != null) { 				resizer = new NcodeImageResizer(newid, img); 				isRecovery = true; 				resizer.restoreImage(); 			} 		} else { 			newid = NcodeImageResizer.getNextId(); 			resizer = new NcodeImageResizer(newid, img); 		} 		 		if(isRecovery) { 			resizer.reclaimWarning(newid); 		} else { 			resizer.createWarning(); 		} 		resizer.scale(); 	} }  NcodeImageResizer.prototype.restoreImage = function() { 	newimg = document.createElement('IMG'); 	newimg.src = this.img.src; 	this.img.width = newimg.width; 	this.img.height = newimg.height; }  NcodeImageResizer.prototype.reclaimWarning = function(id) { 	this.warning = document.getElementById(NcodeImageResizer.WARNING_ID_BASE+id); 	this.warningTextNode = this.warning.firstChild.firstChild.childNodes[1].firstChild; 	this.warning.resize = this; 	 	this.scale(); }  NcodeImageResizer.prototype.createWarning = function() { 	var mtable = document.createElement('TABLE'); 	var mtbody = document.createElement('TBODY'); 	var mtr = document.createElement('TR'); 	var mtd1 = document.createElement('TD'); 	var mtd2 = document.createElement('TD'); 	var mimg = document.createElement('IMG'); 	var mtext = document.createTextNode(''); 	 	mimg.src = NcodeImageResizer.BBURL+'/icons/assist.gif'; 	mimg.width = 16; 	mimg.height = 16; 	mimg.alt = ''; 	mimg.border = 0; 	 	mtd1.width = 20; 	mtd1.className = 'td1'; 	 	mtd2.unselectable = 'on'; 	mtd2.className = 'td2'; 	 	mtable.className = 'ncode_imageresizer_warning'; 	mtable.textNode = mtext; 	mtable.resize = this; 	mtable.id = NcodeImageResizer.WARNING_ID_BASE+this.id; 	 	mtd1.appendChild(mimg); 	mtd2.appendChild(mtext); 	 	mtr.appendChild(mtd1); 	mtr.appendChild(mtd2); 	 	mtbody.appendChild(mtr); 	 	mtable.appendChild(mtbody); 	 	this.img.parentNode.insertBefore(mtable, this.img); 	 	this.warning = mtable; 	this.warningTextNode = mtext; }  NcodeImageResizer.prototype.setText = function(text) { 	var newnode = document.createTextNode(text); 	this.warningTextNode.parentNode.replaceChild(newnode, this.warningTextNode); 	this.warningTextNode = newnode; }  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; 	} 	 	this.warning.width = this.img.width; 	this.warning.onclick = function() { return this.resize.unScale(); } 	 	if(this.img.width < 450) { 		this.setText(vbphrase['ncode_imageresizer_warning_small']); 	} else if(this.img.fileSize && this.img.fileSize > 0) { 		this.setText(vbphrase['ncode_imageresizer_warning_filesize'].replace('%1$s', this.originalWidth).replace('%2$s', this.originalHeight).replace('%3$s', Math.round(this.img.fileSize/1024))); 	} else { 		this.setText(vbphrase['ncode_imageresizer_warning_no_filesize'].replace('%1$s', this.originalWidth).replace('%2$s', this.originalHeight)); 	} 	 	return false; }  NcodeImageResizer.prototype.unScale = function() { 	switch(NcodeImageResizer.MODE) { 		case 'samewindow': 			window.open(this.img.src, '_self'); 			break; 		case 'newwindow': 			window.open(this.img.src, '_blank'); 			break; 		case 'enlarge': 		default: 			this.img.width = this.originalWidth; 			this.img.height = this.originalHeight; 			this.img.className = 'ncode_imageresizer_original'; 			if(this.warning != null) { 				this.setText(vbphrase['ncode_imageresizer_warning_fullsize']); 				this.warning.width = this.img.width; 				this.warning.onclick = function() { return this.resize.scale() }; 			} 			break; 	} 	 	return false; }