/*
#------------------------------------------------------------------------
# hitmusic - September 2010 UPDATE (for Joomla 1.5)
#
# Copyright (C) 2007-2010 Gavick.com. All Rights Reserved.
# License: Copyrighted Commercial Software
# Website: http://www.gavick.com
# Support: support@gavick.com   
#------------------------------------------------------------------------ 
# Based on T3 Framework
#------------------------------------------------------------------------
# Copyright (C) 2004-2009 J.O.O.M Solutions Co., Ltd. All Rights Reserved.
# @license - GNU/GPL, http://www.gnu.org/copyleft/gpl.html
# Author: J.O.O.M Solutions Co., Ltd
# Websites: http://www.joomlart.com - http://www.joomlancers.com
#------------------------------------------------------------------------
*/

//Call noconflict if detect jquery
//Apply jquery.noConflict if jquery is enabled
if ($defined(window.jQuery) && $type(jQuery.noConflict)=='function') {
	jQuery.noConflict();
	jQuery.noConflict();
}

function switchFontSize (ckname,val){
	var bd = document.getElement('body');
	switch (val) {
		case 'inc':
			if (CurrentFontSize+1 < 7) {
				bd.removeClass('fs'+CurrentFontSize);
				CurrentFontSize++;
				bd.addClass('fs'+CurrentFontSize);
			}		
		break;
		case 'dec':
			if (CurrentFontSize-1 > 0) {
				bd.removeClass('fs'+CurrentFontSize);
				CurrentFontSize--;
				bd.addClass('fs'+CurrentFontSize);
			}		
		break;
		default:
			bd.removeClass('fs'+CurrentFontSize);
			CurrentFontSize = val;
			bd.addClass('fs'+CurrentFontSize);		
	}
	Cookie.set(ckname, CurrentFontSize,{duration:365});
}

function switchTool (ckname, val) {
	createCookie(ckname, val, 365);
	window.location.reload();
}

function createCookie(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }else expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

//addEvent - attach a function to an event
function gkAddEvent(obj, evType, fn){ 
 if (obj.addEventListener){ 
   obj.addEventListener(evType, fn, false); 
   return true; 
 } else if (obj.attachEvent){ 
   var r = obj.attachEvent("on"+evType, fn); 
   return r; 
 } else { 
   return false; 
 } 
}

window.addEvent('load', function() {
	new SmoothScroll(); 
	var login = false;
	var register = false;
	var tools = false;
	var search = false;
	var login_fx = null;
	var hlogin_fx = null;
	var register_fx = null;
	var hregister_fx = null;
	var search_fx = null;
	var tools_fx = null;
	var link_login_fx = null;
	var link_reg_fx = null;
	var link_search_fx = null;
	var login_over = false;
	var register_over = false;
	var opened = false;
	var opened2 = false;

	if($('popup_login')){ 
		var popup_login_o = new Fx.Style($('popup_login'), 'opacity', {duration: 400}).set(0);
		var popup_login_w = new Fx.Style($('popup_login'), 'width',{duration: 400}).set(0);
		var popup_login_h = new Fx.Style($('popup_login'), 'height',{duration: 400}).set(0);
		var popup_login_t = new Fx.Style($('popup_login'), 'top',{duration: 400}).set(-300);
		var popup_login_l = new Fx.Style($('popup_login'), 'left',{duration: 400}).set(0);
		$('popup_login').setStyle('display', 'block');
		$('close_button_login').addEvent("click", function(){
			popup_login_o.start(0);
			popup_login_w.start(0);
			popup_login_h.start(0);
			popup_login_t.start(-300);
			popup_login_l.start(((window.getWidth()-267)/2));
			login = false;
		});
		
		$('popup_login').addEvent('mouseenter',function(){login_over = true;});
		$('popup_login').addEvent('mouseleave',function(){login_over = false;});
	}
	
	if($('popup_register')){ 
		var popup_register_o = new Fx.Style($('popup_register'),'opacity', {duration: 400}).set(0);
		var popup_register_w = new Fx.Style($('popup_register'), 'width',{duration: 400}).set(0);
		var popup_register_h = new Fx.Style($('popup_register'), 'height',{duration: 400}).set(0);
		var popup_register_t = new Fx.Style($('popup_register'), 'top',{duration: 400}).set(-500);
		var popup_register_l = new Fx.Style($('popup_register'), 'left',{duration: 400}).set(0);
		$('popup_register').setStyle("display", "block");
		$('close_button_register').addEvent("click", function(){
			popup_register_o.start(0);
			popup_register_w.start(0);
			popup_register_h.start(0);
			popup_register_t.start(-500);
			popup_register_l.start(((window.getWidth()-267)/2));
			register = false;
		});		
		
		$('popup_register').addEvent('mouseenter',function(){register_over = true;});
		$('popup_register').addEvent('mouseleave',function(){register_over = false;});
	}
	// login
	if($('btn_login')){
	    $('btn_login').addEvent("click", function(e){
			new Event(e).stop();
			if(!login){
				var tmax = 100;
				popup_login_o.start(1);
				popup_login_w.start(534);
				popup_login_h.start(300);
				popup_login_t.start(tmax);
				popup_login_l.start(((window.getWidth()-267)/2), ((window.getWidth()-534)/2));
				login = true;
			}
		});
	}
	// register
	if($('btn_register')){ 
	    $('btn_register').addEvent("click", function(e){
			new Event(e).stop();
			if(!register){
				var tmax = 100;
				popup_register_o.start(1);
				popup_register_w.start(534);
				popup_register_h.start(500);
				popup_register_t.start(tmax);
				popup_register_l.start(((window.getWidth()-267)/2), ((window.getWidth()-534)/2));
				register = true;
			}
		});
	}

	if($('btn_tools')){
		opened = false;
		if($('btn_login')) link_login_fx = new Fx.Style($('btn_login'),'opacity',{duration:300});
		if($('btn_register')) link_reg_fx = new Fx.Style($('btn_register'),'opacity',{duration:300});
		if($('btn_search')) link_search_fx = new Fx.Style($('btn_search'),'opacity',{duration:300});
		$('popup_tools').getParent().setProperty('class','gk_hide').setStyle('display', 'block');
		$('popup_tools').getParent().setProperty('class','gk_hide').setStyle('overflow', 'hidden');
		
		$('popup_tools').setStyle('display', 'block');
		
		tools_fx = new Fx.Style($('popup_tools').getParent(),'width',{duration:300}).set(0);
		$('btn_tools').addEvent('click', function(e){
			new Event(e).stop();
			
			if(opened) {
				tools_fx.start(0);
				(function(){ 
					if($('btn_login')) link_login_fx.start(1);
					if($('btn_register')) link_reg_fx.start(1);
				}).delay(500);
			} else {
				(function(){ tools_fx.start(140); }).delay(500);
				if($('btn_login')) link_login_fx.start(0);
				if($('btn_register')) link_reg_fx.start(0);
			}
			 
			opened = !opened;
			
			if(login) {
				login_fx.start(0);
				hlogin_fx.start(0);
				login = false;
				$('btn_login').removeClass("popup");
			}

			if(register){
				register_fx.start(0);
				hregister_fx.start(0);
				register = false;
				$('btn_register').removeClass("popup");
			}
		});	
	}
	//
	if($('stylearea')){
		$A($$('.style_switcher')).each(function(element,index){
			element.addEvent('click',function(event){
				var event = new Event(event);
				event.preventDefault();
				changeStyle(index+1);
			});
		});
		new SmoothScroll();
	}
	// equal columns
	var bmax1 = 0;
	var bmax2 = 0;
	$$('#gk-botsl1 .column').each(function(el,i){ if(bmax1 < el.getSize().size.y) bmax1 = el.getSize().size.y; });
	$$('#gk-botsl2 .column').each(function(el,i){ if(bmax2 < el.getSize().size.y) bmax2 = el.getSize().size.y; });
	$$('#gk-botsl1 .column').each(function(el,i){ el.getElement('div').setStyle('height',bmax1+"px"); });
	$$('#gk-botsl2 .column').each(function(el,i){ el.getElement('div').setStyle('height',bmax2+"px"); });
	
	$(document.body).addEvent("click", function(e){
		if(login && !login_over){
			login_fx.start(0);
			hlogin_fx.start(0);
			login = false;
			$('btn_login').removeClass("popup");
		}
		if(register && !register_over){
			register_fx.start(0);
			hregister_fx.start(0);
			register = false;
			$('btn_register').removeClass("popup");
		}
	});
	
	if(window.ie){
		$$('.blog-columns').each(function(el){
			if(el.getElement('.article-tools').getCoordinates().height > el.getElement('.article-wrap').getCoordinates().height){
				el.getElement('.article-wrap').setStyle('height', el.getElement('.article-tools').getCoordinates().height + 'px');
			}else{
				el.getElement('.article-tools').setStyle('height', el.getElement('.article-wrap').getCoordinates().height + 'px');
			}
		});
		
		if(document.getElement('.k2itemColumn')){
			if(document.getElement('.k2itemColumn').getCoordinates().height > document.getElement('.k2ItemContent').getCoordinates().height){
				document.getElement('.k2ItemContent').setStyle('height', document.getElement('.k2itemColumn').getCoordinates().height + 'px');
			}else{
				document.getElement('.k2itemColumn').setStyle('height', document.getElement('.k2ItemContent').getCoordinates().height + 'px');
			}
		}
	}
});

// Function to change styles
function changeStyle(style){
	var file = tmplurl+'/css/style'+style+'.css';
	var file_css3 = tmplurl+'/css/css3_style'+style+'.css';
	new Asset.css(file);
	new Asset.css(file_css3);
	new Cookie.set('gk39_style',style,{duration: 200,path: "/"});
	(function(){if(CufonCheck()) Cufon.refresh();}).delay(500);
}

function CufonCheck(){ return (typeof(Cufon) == "undefined")?  false: true; }

// JCaptionCheck
function JCaptionCheck(){ return (typeof(JCaption) == "undefined")?  false: true; }

if(!JCaptionCheck()) {
	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");
			var docMode = document.documentMode;

			//Windows fix
			if (!align)
				align = element.getStyle("float");  // Rest of the world fix
			if (!align) // IE DOM Fix
				align = element.style.styleFloat;

			text.appendChild(caption);
			text.className = this.selector.replace('.', '_');

			if (align=="none") {
				if (element.title != "") {
					element.parentNode.replaceChild(text, element);
					text.parentNode.insertBefore(element, text);
				}
			} else {
				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);

				//IE8 fix
				if (!docMode|| docMode < 8) {
					container.style.width = width + "px";
				}
			}

		}
	});

	document.caption = null;
	window.addEvent('load', function() {
		var caption = new JCaption('img.caption')
		document.caption = caption
	});
}
if(MooTools.version.contains('1.2')){
Fx.Scroll = new Class({

	Extends: Fx,

	options: {
		offset: {x: 0, y: 0},
		wheelStops: true
	},

	initialize: function(element, options){
		this.element = this.subject = document.id(element);
		this.parent(options);
		var cancel = this.cancel.bind(this, false);

		if ($type(this.element) != 'element') this.element = document.id(this.element.getDocument().body);

		var stopper = this.element;

		if (this.options.wheelStops){
			this.addEvent('start', function(){
				stopper.addEvent('mousewheel', cancel);
			}, true);
			this.addEvent('complete', function(){
				stopper.removeEvent('mousewheel', cancel);
			}, true);
		}
	},

	set: function(){
		var now = Array.flatten(arguments);
		if (Browser.Engine.gecko) now = [Math.round(now[0]), Math.round(now[1])];
		this.element.scrollTo(now[0] + this.options.offset.x, now[1] + this.options.offset.y);
	},

	compute: function(from, to, delta){
		return [0, 1].map(function(i){
			return Fx.compute(from[i], to[i], delta);
		});
	},

	start: function(x, y){
		if (!this.check(x, y)) return this;
		var scrollSize = this.element.getScrollSize(),
			scroll = this.element.getScroll(), 
			values = {x: x, y: y};
		for (var z in values){
			var max = scrollSize[z];
			if ($chk(values[z])) values[z] = ($type(values[z]) == 'number') ? values[z] : max;
			else values[z] = scroll[z];
			values[z] += this.options.offset[z];
		}
		return this.parent([scroll.x, scroll.y], [values.x, values.y]);
	},

	toTop: function(){
		return this.start(false, 0);
	},

	toLeft: function(){
		return this.start(0, false);
	},

	toRight: function(){
		return this.start('right', false);
	},

	toBottom: function(){
		return this.start(false, 'bottom');
	},

	toElement: function(el){
		var position = document.id(el).getPosition(this.element);
		return this.start(position.x, position.y);
	},

	scrollIntoView: function(el, axes, offset){
		axes = axes ? $splat(axes) : ['x','y'];
		var to = {};
		el = document.id(el);
		var pos = el.getPosition(this.element);
		var size = el.getSize();
		var scroll = this.element.getScroll();
		var containerSize = this.element.getSize();
		var edge = {
			x: pos.x + size.x,
			y: pos.y + size.y
		};
		['x','y'].each(function(axis) {
			if (axes.contains(axis)) {
				if (edge[axis] > scroll[axis] + containerSize[axis]) to[axis] = edge[axis] - containerSize[axis];
				if (pos[axis] < scroll[axis]) to[axis] = pos[axis];
			}
			if (to[axis] == null) to[axis] = scroll[axis];
			if (offset && offset[axis]) to[axis] = to[axis] + offset[axis];
		}, this);
		if (to.x != scroll.x || to.y != scroll.y) this.start(to.x, to.y);
		return this;
	},

	scrollToCenter: function(el, axes, offset){
		axes = axes ? $splat(axes) : ['x', 'y'];
		el = $(el);
		var to = {},
			pos = el.getPosition(this.element),
			size = el.getSize(),
			scroll = this.element.getScroll(),
			containerSize = this.element.getSize(),
			edge = {
				x: pos.x + size.x,
				y: pos.y + size.y
			};

		['x','y'].each(function(axis){
			if(axes.contains(axis)){
				to[axis] = pos[axis] - (containerSize[axis] - size[axis])/2;
			}
			if(to[axis] == null) to[axis] = scroll[axis];
			if(offset && offset[axis]) to[axis] = to[axis] + offset[axis];
		}, this);
		if (to.x != scroll.x || to.y != scroll.y) this.start(to.x, to.y);
		return this;
	}

});


/*
---

script: Scroller.js

name: Scroller

description: Class which scrolls the contents of any Element (including the window) when the mouse reaches the Element's boundaries.

license: MIT-style license

authors:
  - Valerio Proietti

requires:
  - Core/Events
  - Core/Options
  - Core/Element.Event
  - Core/Element.Dimensions

provides: [Scroller]

...
*/

var Scroller = new Class({

	Implements: [Events, Options],

	options: {
		area: 20,
		velocity: 1,
		onChange: function(x, y){
			this.element.scrollTo(x, y);
		},
		fps: 50
	},

	initialize: function(element, options){
		this.setOptions(options);
		this.element = document.id(element);
		this.docBody = document.id(this.element.getDocument().body);
		this.listener = ($type(this.element) != 'element') ?  this.docBody : this.element;
		this.timer = null;
		this.bound = {
			attach: this.attach.bind(this),
			detach: this.detach.bind(this),
			getCoords: this.getCoords.bind(this)
		};
	},

	start: function(){
		this.listener.addEvents({
			mouseenter: this.bound.attach,
			mouseleave: this.bound.detach
		});
	},

	stop: function(){
		this.listener.removeEvents({
			mouseenter: this.bound.attach,
			mouseleave: this.bound.detach
		});
		this.detach();
		this.timer = $clear(this.timer);
	},

	attach: function(){
		this.listener.addEvent('mousemove', this.bound.getCoords);
	},

	detach: function(){
		this.listener.removeEvent('mousemove', this.bound.getCoords);
		this.timer = $clear(this.timer);
	},

	getCoords: function(event){
		this.page = (this.listener.get('tag') == 'body') ? event.client : event.page;
		if (!this.timer) this.timer = this.scroll.periodical(Math.round(1000 / this.options.fps), this);
	},

	scroll: function(){
		var size = this.element.getSize(), 
			scroll = this.element.getScroll(), 
			pos = this.element != this.docBody ? this.element.getOffsets() : {x: 0, y:0}, 
			scrollSize = this.element.getScrollSize(), 
			change = {x: 0, y: 0},
			top = this.options.area.top || this.options.area,
		  bottom = this.options.area.bottom || this.options.area;
		for (var z in this.page){
			if (this.page[z] < (top + pos[z]) && scroll[z] != 0) {
				change[z] = (this.page[z] - top - pos[z]) * this.options.velocity;
			} else if (this.page[z] + bottom > (size[z] + pos[z]) && scroll[z] + size[z] != scrollSize[z]) {
				change[z] = (this.page[z] - size[z] + bottom - pos[z]) * this.options.velocity;
			}
			change[z] = change[z].round();
		}
		if (change.y || change.x) this.fireEvent('change', [scroll.x + change.x, scroll.y + change.y]);
	}

});
}
