function Yonca_FrontLine()
{
	this.elementLength = 0;
	this.scrollObject = Dom.get('front_line');
	this.mainScrollObject = Dom.get('main_line');
	this.mainScrollItemWidth = 0;
	this.scrollWidth = 0;
	this.scrollActive = 0;
	this.scrollMargin = 0;
	this.scrollItemWidth = 0;
	this.scrollItemHeight = 0;
	this.initSubNavigation = false;
	this.parentWrapper = null;
	this.inProgress = false;
	this.scrollTarget = 0;
	this.blankBoxes = 0;
	this.scrollParsing = 0;
	this.firstSpacer = 2000;
	this.moveTogether = true;
}

Yonca_FrontLine.prototype.init = function()
{
	var tags = Dom.getElementsByClassName('box', 'div', this.scrollObject);
	this.elementLength = tags.length;
	
	if (this.elementLength < 1)
	{
		return false;
	}
	
	this.parentWrapper = Yonca.fetch_parent_obj('div', this.scrollObject, function(_this){ return Dom.hasClass(_this, 'frontline'); });

	this.scrollItemWidth = tags[0].offsetWidth;
	this.scrollItemHeight = tags[0].offsetHeight;
	this.scrollMargin = parseInt(Dom.getStyle(tags[1], 'marginLeft'), 10);
	this.scrollWidth = ((this.scrollItemWidth + this.scrollMargin) * this.elementLength) - this.scrollMargin;
	
	var main_tags = Dom.getElementsByClassName('picture', 'div', this.mainScrollObject);
	if (main_tags.length > 1)
	{
		this.mainScrollItemWidth = main_tags[0].offsetWidth;
	}
	else
	{
		this.moveTogether = false;
	}
	
	this.nav_pos();
};

Yonca_FrontLine.prototype.nav_pos = function()
{
	if (!this.initSubNavigation)
	{
		var left_nav = document.createElement('a');
		left_nav.href = 'javascript:;';
		left_nav.innerHTML = '&nbsp;';
			
		var right_nav = left_nav.cloneNode(true);
			
		left_nav.className = 'front_prev';
		left_nav.id = 'front_prev';
		right_nav.className = 'front_next';
		right_nav.id = 'front_next';
			
		document.body.insertBefore(left_nav, document.body.firstChild);
		document.body.insertBefore(right_nav, document.body.firstChild);

		Event.on(window, 'resize', UA.ie ? Yonca_FrontLine.prototype.nav_pos_ie : Yonca_FrontLine.prototype.nav_pos, this, true);
		
		Event.on(left_nav, 'click', Yonca_FrontLine.prototype.prevScroll, this, true);
		Event.on(right_nav, 'click', Yonca_FrontLine.prototype.nextScroll, this, true);
		
		if (this.moveTogether)
		{
			Event.on('main_prev', 'click', Yonca_FrontLine.prototype.prevScroll, this, true);
			Event.on('main_next', 'click', Yonca_FrontLine.prototype.nextScroll, this, true);
		}
	}
	else
	{
		var left_nav = Dom.get('front_prev'), right_nav = Dom.get('front_next');
	}

	var delta = (Math.round(this.scrollItemWidth / 2) + Math.round(this.scrollMargin / 2)), dochalfwidth = Math.round(Dom.getDocumentWidth() / 2), scrollposy = Dom.getY(this.parentWrapper) + Math.round(this.scrollItemHeight / 2) - 10;

	Dom.setXY(left_nav, [dochalfwidth - delta - (left_nav.offsetWidth / 2), scrollposy], false);
	Dom.setXY(right_nav, [dochalfwidth + delta - (right_nav.offsetWidth / 2), scrollposy], false);
	
	this.parentWrapper.scrollLeft = this.firstSpacer;
	var visible_center = this.fetch_center_item();
	var visible_pos_x = Dom.getX(visible_center);
	
	var visible_x = dochalfwidth - Math.round(this.scrollItemWidth / 2);
	if (visible_pos_x != visible_x)
	{
		if (visible_pos_x > visible_x)
		{
			var visible_delta = visible_pos_x - visible_x;
			this.parentWrapper.scrollLeft += visible_delta;
			this.scrollParsing = this.firstSpacer + visible_delta;
		}
		else
		{
			var visible_delta = visible_x - visible_pos_x;
			this.parentWrapper.scrollLeft -= visible_delta;
			this.scrollParsing = this.firstSpacer - visible_delta;
		}
	}
	
	// scroll_frontline_
	this.scrollTarget = parseInt(visible_center.id.substring(17), 10);
	this.mainScrollObject.scrollLeft = this.scrollTarget * this.mainScrollItemWidth;
	if (this.initSubNavigation)
	{
		this.scrollActive = 0;
	}
	else
	{
		this.initSubNavigation = true;
	}
};

Yonca_FrontLine.prototype.nav_pos_ie = function(e)
{
	var _this = this;
	setTimeout(function(){ _this.nav_pos(); }, 0);
};

Yonca_FrontLine.prototype.fetch_center_item = function()
{
	var visibleItems = this.calc_number_item(this.parentWrapper.offsetWidth), leftHiddenItems = this.calc_number_item(this.scrollObject.scrollLeft);
	var centeringid = leftHiddenItems + Math.round(visibleItems / 2) - 1;

	return Dom.get('scroll_frontline_' + centeringid);
};

Yonca_FrontLine.prototype.calc_number_item = function(width)
{
	return Math.round((width - this.scrollItemWidth) / (this.scrollItemWidth + this.scrollMargin)) + Math.round(this.scrollItemWidth / (this.scrollItemWidth + this.scrollMargin));
};

Yonca_FrontLine.prototype.sanitize_scrollid = function(i)
{
	i = Math.min(i, this.elementLength - 1);
	i = Math.max(i, 0);
	
	return i;
};

Yonca_FrontLine.prototype.prevScroll = function()
{
	this.scrollTarget--;
	this.go_scroll(this.scrollActive - 1);
};

Yonca_FrontLine.prototype.nextScroll = function()
{
	this.scrollTarget++;
	this.go_scroll(this.scrollActive + 1);
};

Yonca_FrontLine.prototype.go_scroll = function(i)
{
	// i = this.sanitize_scrollid(i);
	if (i == this.scrollActive || this.parentWrapper.inProgress > 0 || this.mainScrollObject.inProgress > 0)
	{
		return false;
	}
	
	var scrollx = (i * (this.scrollMargin + this.scrollItemWidth)) + this.scrollParsing;
	var lastdif = this.elementLength - this.scrollTarget;
	
	// alert(this.scrollTarget + ' ' + this.elementLength);
	
	if (this.scrollTarget >= this.elementLength)
	{
		this.scrollTarget--;
		return false;
	}
	else if (this.scrollTarget < 0)
	{
		this.scrollTarget++;
		return false;
	}

	this.parentWrapper.inProgress++;
	var anim = new YAHOO.util.Scroll(this.parentWrapper, { scroll: { to: [scrollx, 0] } }, 0.5, YAHOO.util.Easing.easeBothStrong);
	anim.onComplete.subscribe(function(){ this.getEl().inProgress--; });
	anim.animate();
	
	if (this.moveTogether)
	{
		var mainscrollX = (this.mainScrollItemWidth * this.scrollTarget);
	
		this.mainScrollObject.inProgress++;
		var anim2 = new YAHOO.util.Scroll(this.mainScrollObject, { scroll: { to: [mainscrollX, 0] } }, 0.5, YAHOO.util.Easing.easeBothStrong);
		anim2.onComplete.subscribe(function(){ this.getEl().inProgress--; });
		anim2.animate();
	}
	
	this.scrollActive = i;
};

Yonca.domready_register(function(){
	var frontline = new Yonca_FrontLine();
	frontline.init();
});