/**
 * @author chris
 */

/* Define caar if it hasn't already been defined */
if (typeof(caar) == 'undefined') {
	caar = {
		version : '1.0'
	};
}
caar.rotator = {
	version : '1.0',
	bannerSearch : '.banner',
	bannerSource : '/advertisements/banner',
	bannerInterval : 7,
	bannerTimeout : 7,
	data : null,
	initialize : function() {
		setTimeout(caar.rotator.rotate, caar.rotator.bannerTimeout * 1000);
	},
	rotateBanners : function() {
		banners = $$('.banner');
		banners.each(function(v, k) {
			new Ajax.PeriodicalUpdater( {
				success : v
			}, caar.rotator.bannerSource, {
				method : 'get',
				frequency : caar.rotator.bannerInterval
			});
		});
	},
	getBannerSource : function() {
		var d = new Date();
		return caar.rotator.bannerSource + '/0/' + d.getTime().toString();
	},
	rotate : function() {
		var ex = new PeriodicalExecuter(function(pe) {
			$$(caar.rotator.bannerSearch).each(function(v) {
				var advert = caar.rotator.data[Math.floor(Math.random()
						* caar.rotator.data.size())].Advertisement;
				switch (advert.mime) {
					case 'image/jpeg' :
					case 'image/gif' :
						var anc = new Element('a', {
							href : '/advertisements/redir/?u='+escape(advert.url),
							title : advert.description,
							target : '_blank'
						});

						var img = new Element('img', {
							src : advert.media,
							alt : advert.description
						});

						anc.update(img);
						v.update(anc);
						break;
					case 'application/x-shockwave-flash' :
						var swf = new Element('object', {
							classid : 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000',
							codebase : 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0',
							width : '468',
							height : '60',
							title : advert.description
						});
						swf.insert(new Element('param', {
							name : 'movie',
							value : advert.media+'?clickTag='+escape('/advertisements/redir/?u='+advert.url)
						}));
						swf.insert(new Element('param', {
							name : 'quality',
							value : 'high'
						}));
						swf.insert(new Element('embed', {
							src : advert.media+'?clickTag='+escape('/advertisements/redir/?u='+advert.url),
							quality : 'high',
							pluginspage : 'http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash',
							type : 'application/x-shockwave-flash',
							width : '468',
							height : '60'
						}));

						v.update(swf);
						v.innerHTML = v.innerHTML; // Odd, but makes the swf display in IE7
						break;
				}
			});
		}, caar.rotator.bannerInterval);
	}
};

if (typeof(caar.utilities) == 'undefined') {
	caar.utilities = {
		version : '1.0',
		transGif : '/img/x.gif',
		fixPng : function() {
			$$('img').each(function(img){
				if(img.src.match(/\.png$/im)) {
					img.setStyle({
						width : img.getWidth() + 'px',
						height : img.getHeight() + 'px',
						filter : "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + img.src + "', sizingMethod='scale')"
					});
					img.src = caar.utilities.transGif;
				}
			});
		}
	};
}
caar.utilities.mortcalc = {
	version : '1.1',
	CS_floor : function(number) {
		return Math.floor(number * Math.pow(10, 2)) / Math.pow(10, 2);
	},
	CS_calcMortgage : function() {
		var mi = $F('MCIR') / 1200;
		var base = 1;
		var mbase = 1 + mi;
		for (i = 0; i < $F('MCYR') * 12; i++) {
			base = base * mbase;
		}
		$('MCPI').value = caar.utilities.mortcalc.CS_floor($('MCLA').value * mi
				/ (1 - (1 / base)));
		$('MCMT').value = caar.utilities.mortcalc
				.CS_floor($('MCAT').value / 12);
		$('MCMI').value = caar.utilities.mortcalc
				.CS_floor($('MCAI').value / 12);
		$('MCMP').value = caar.utilities.mortcalc.CS_floor($('MCLA').value * mi
				/ (1 - (1 / base)) + $('MCAT').value / 12 + $('MCAI').value
				/ 12);
	}
};

var Gui = {
	Tortilla : {
		init : function(selectors) {
			$A(selectors).each(function(selector) {
				$$(selector).each(function(element) {
					Gui.Tortilla.addCorners(element);
				})
			});
		},
		addCorners : function(element) {
			$A(['top_left', 'top_right', 'bottom_left', 'bottom_right'])
					.each(function(className) {
						element.addClassName('tortillated');
						element.appendChild(Gui.Tortilla.newCorner(className))
					});
		},
		newCorner : function(className) {
			corner = document.createElement('div');
			corner.className += className + ' corner';
			return corner;
		}
	}
}

Event.observe(window, 'load', function() {
	Gui.Tortilla.init(['.input', '.optional', '.required', '.info', '#tabs',
			'.error', '.error-message', '#accountMenu', '#adminMenu',
			'#flashMessage', '#authMessage'])
	caar.rotator.initialize();
});
