/**
* @version		$Id: modal.js 5263 2006-10-02 01:25:24Z webImagery $
* @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
* @license		GNU/GPL, see LICENSE.php
* Joomla! is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See COPYRIGHT.php for copyright notices and details.
*/

/**
 * JCaption javascript behavior
 *
 * Used for displaying image captions
 *
 * @package		Joomla
 * @since		1.5
 * @version     1.0
 */
var JCaption = new Class({
	initialize: function(selector)
	{
		this.selector = selector;

		var images = $$(selector);
		images.each(function(image){ this.createCaption(image); }, this);
	},

	createCaption: function(element)
	{
		var caption   = document.createTextNode(element.title);
		var container = document.createElement("div");
		var text      = document.createElement("p");
		var width     = element.getAttribute("width");
		var align     = element.getAttribute("align");

		if(!width) {
			width = element.width;
		}

		text.appendChild(caption);
		element.parentNode.insertBefore(container, element);
		container.appendChild(element);
		if ( element.title != "" ) {
			container.appendChild(text);
		}
		container.className   = this.selector.replace('.', '_');
		container.className   = container.className + " " + align;
		container.setAttribute("style","float:"+align);
		container.style.width = width + "px";

	}
});

document.caption = null
window.addEvent('load', function() {
  var caption = new JCaption('img.caption')
  document.caption = caption
});


//MooTools, My Object Oriented Javascript Tools. Copyright (c) 2006 Valerio Proietti, <http://mad4milk.net>, MIT Style License.



//
// CONFIGURATION
// png_overlay is the png 'frame' that will be loaded over the images with a class name of "frame"
// suffix is the identifier for the rollover image; image.jpg -> image_suffix.jpg
//
//	var png_overlay = 'rounded_frame.png';
//	var suffix = '_over';

//
//	addEvent()
//	Allows attachment of events to elements
//
function addEvent( obj, type, fn ) {
	if (obj.addEventListener) {
		obj.addEventListener( type, fn, false );
		EventCache.add(obj, type, fn);
	}
	else if (obj.attachEvent) {
		obj["e"+type+fn] = fn;
		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
		obj.attachEvent( "on"+type, obj[type+fn] );
		EventCache.add(obj, type, fn);
	}
	else {
		obj["on"+type] = obj["e"+type+fn];
	}
}
var EventCache = function(){
	var listEvents = [];
	return {
		listEvents : listEvents,
		add : function(node, sEventName, fHandler){
			listEvents.push(arguments);
		},
		flush : function(){
			var i, item;
			for(i = listEvents.length - 1; i >= 0; i = i - 1){
				item = listEvents[i];
				if(item[0].removeEventListener){
					item[0].removeEventListener(item[1], item[2], item[3]);
				};
				if(item[1].substring(0, 2) != "on"){
					item[1] = "on" + item[1];
				};
				if(item[0].detachEvent){
					item[0].detachEvent(item[1], item[2]);
				};
				item[0][item[1]] = null;
			};
		}
	};
}();

addEvent(window,'unload',EventCache.flush);

//
//	correctPNG()
//	Allows transparent PNG images to be display correctly in IE
//	Not sure who wrote it, but thanks
//
function correctPNG() {
	for(var i=0; i<document.images.length; i++) {
		var img = document.images[i]
		var imgName = img.src.toUpperCase()
		if (imgName.substring(imgName.length-3, imgName.length) == "PNG") {
			var imgID = (img.id) ? "id='" + img.id + "' " : ""
			var imgClass = (img.className) ? "class='" + img.className + "' " : ""
			var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
			var imgStyle = "display:inline-block;" + img.style.cssText 
			if (img.align == "left") imgStyle = "float:left;" + imgStyle
			if (img.align == "right") imgStyle = "float:right;" + imgStyle
			if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle		
			var strNewHTML = "<span " + imgID + imgClass + imgTitle
			+ " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
			+ "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
			+ "(src=\'" + img.src + "\', sizingMethod='image');\"></span>" 
			img.outerHTML = strNewHTML
			i = i-1
		}
	}
}
//
//	rollovers()
//	Displays a rollover for any image with a class name of "rollover". Includes IE friendly function for transparent PNG fix.
//
var rollovers = {
	obj : Object,
	init : function() {
		for( var i = 0, over; over = document.getElementsByTagName('img')[i]; i++ ){
			if( over.className.indexOf('rollover') >= 0 ) {
				rollovers.preload(over);
				addEvent(over,'mouseover',rollovers.show);
				addEvent(over,'mouseout',rollovers.hide);
			}
		}
	},
	preload : function(e) {
		var img = new Image;
		var ext = e.src.substring(e.src.length - 4, e.src.length);
		var name = e.src.substring(0, e.src.length - 4);
		img.src = name + suffix + ext;
	},
	show : function(e) {
		var ext = this.src.substring(this.src.length - 4, this.src.length);
		var name = this.src.substring(0, this.src.length - 4);
		this.src = name + suffix + ext;
	},
	hide : function(e) {
		this.src = this.src.replace(suffix,'');
	}
}
var rollovers_ie = {
	obj : Object,
	init : function() {
		if( document.getElementsByTagName('span').length < 1 )
			setTimeout('rollovers_ie.init()',500);
		for( var i = 0, span; span = document.getElementsByTagName('span')[i]; i++ ){
			if( span.className.indexOf('rollover') >= 0 ) {
				rollovers_ie.preload(span);
				addEvent(span,'mouseover',rollovers_ie.show);
				addEvent(span,'mouseout',rollovers_ie.hide);
			}
		}
	},
	preload : function(e) {
		var img = new Image;
		var filter = e.style.filter;
		var src = filter.substring( filter.indexOf("src='") + 5, filter.indexOf("',"));
		var ext = src.substring(src.length - 4, src.length);
		var name = src.substring(0, src.length - 4);
		img.src = name + suffix + ext;
	},
	show : function(e) {
		var filter = this.style.filter;
		var src = filter.substring( filter.indexOf("src='") + 5, filter.indexOf("',"));
		var ext = src.substring(src.length - 4, src.length);
		var name = src.substring(0, src.length - 4);
		this.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader" + "(src=\'" + name + suffix + ext + "\', sizingMethod='image')";
	},
	hide : function(e) {
		var filter = this.style.filter;
		var src = filter.substring( filter.indexOf("src='") + 5, filter.indexOf("',"));
		this.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader" + "(src=\'" + src.replace(suffix,'') + "\', sizingMethod='image')";
	}
}

//
// Load the Functions
//
if( navigator.userAgent.indexOf('MSIE') >= 0 )
	addEvent(window,'load',correctPNG);
if( navigator.userAgent.indexOf('MSIE') >= 0 )
	addEvent(window,'load',rollovers_ie.init);
addEvent(window,'load',rollovers.init);


/*
	reflection.js for mootools v1.2
	by Christophe Beyls (http://www.digitalia.be) - MIT-style license
*/

var Reflection = {

	add: function(img, options){
		img = $(img);
		if (img.getTag() != 'img') return;
		options = {arguments: [img, options]};
		if (window.ie) options.delay = 50;
		img.preload = new Image();
		img.preload.onload = Reflection.reflect.create(options);
		img.preload.src = img.src;
	},

	remove: function(img){
		img = $(img);
		if (img.preload) img.preload.onload = null;
		if ((img.getTag() == 'img') && (img.className == 'reflected')){
			img.className = img.parentNode.className;
			img.style.cssText = img.backupStyle;
			img.parentNode.replaceWith(img);
		}
	},

	reflect: function(img, options){
		options = $extend({
			height: 0.33,
			opacity: 0.5
		}, options || {});

		Reflection.remove(img);
		var canvas, canvasHeight = Math.floor(img.height*options.height);

		if (window.ie){
			canvas = new Element('img', {'src': img.src, 'styles': {
				'width': img.width,
				'marginBottom': -img.height+canvasHeight,
				'filter': 'flipv progid:DXImageTransform.Microsoft.Alpha(opacity='+(options.opacity*100)+', style=1, finishOpacity=0, startx=0, starty=0, finishx=0, finishy='+(options.height*100)+')'
			}});
		} else {
			canvas = new Element('canvas', {'styles': {'width': img.width, 'height': canvasHeight}});
			if (!canvas.getContext) return;
		}

		var div = new Element('div').injectAfter(img).adopt(img, canvas);
		div.className = img.className;
		div.style.cssText = img.backupStyle = img.style.cssText;
		div.removeClass('reflect').setStyles({'width': img.width, 'height': canvasHeight+img.height});
		img.style.cssText = 'vertical-align: bottom';
		img.className = 'reflected';
		if (window.ie) return;

		var context = canvas.setProperties({'width': img.width, 'height': canvasHeight}).getContext('2d');
		context.save();
		context.translate(0, img.height-1);
		context.scale(1, -1);
		context.drawImage(img, 0, 0, img.width, img.height);
		context.restore();
		context.globalCompositeOperation = 'destination-out';
		var gradient = context.createLinearGradient(0, 0, 0, canvasHeight);
		gradient.addColorStop(0, 'rgba(255, 255, 255, '+(1-options.opacity)+')');
		gradient.addColorStop(1, 'rgba(255, 255, 255, 1.0)');
		context.fillStyle = gradient;
		context.rect(0, 0, img.width, canvasHeight);
		context.fill();
	},

	addFromClass: function(){
		$each(document.getElementsByTagName('img'), function(img){
			if ($(img).hasClass('reflect')) Reflection.add(img);
		});
	}
};

Element.extend({
	addReflection: function(options) { Reflection.add(this, options); return this; },
	removeReflection: function(options) { Reflection.remove(this, options); return this; }
});
Window.addEvent("domready", Reflection.addFromClass);


  function moveDown( elid, start, end )
  {
  	var changeheight = new Fx.Style( elid, 'top', {duration: 400}  );
	changeheight.start( start, end );	
  }
  
  function moveUp( elid, start, end )
  {
  	var changeheight = new Fx.Style( elid, 'top', {duration: 400}  );
	changeheight.start( start, end );
  }
  
  function toggleControl( elid, start, end )
  {
	var styles = $( elid ).getStyles( 'overflow','height', 'top', 'display' );
	var test = '-100px';
	if( start != null )
		test = start.toString()+'px';
	if( styles.top == test )
	{
		moveDown( elid, start, end );
	}	
	else
	{
		moveUp( elid, end, start );
	}
  }
  
window.onload = function() {
  setLinks();
}

function setLinks() {
  if (!document.getElementsByTagName) return false;
  var links = document.getElementsByTagName("a");
  if (links.length == 0) return false;
  for (var i = 0; i < links.length; i++) {
    var relation = links[i].getAttribute("rel");
    if (relation == "external") {
      links[i].onclick = function() {
        return !window.open(this.href);
      }
    }     
  }
}

function checkMainSearchForm() {
   if (document.getElementById('mainsearch').q.value == "") {
      alert('Please enter some words.');
      document.getElementById('mainsearch').q.focus();
      return false;
      }
}
