
function newwin(url, width, height, winname)
{
	wleft = (screen.width - width) / 2;
	wtop = (screen.height-50 - height) / 2;
	resizable = (arguments[4] == true) ? 1 : 0;
	props = 'toolbar=0,location=0,directories=0,hotkeys=0,status=0,menubar=0,scrollbars=' + resizable + ',resizable=' + resizable + ',copyhistory=0,left=' + wleft  + ',top=' + wtop + ',width=' + width + ',height=' + height;
	var uj_b_ablak = window.open(url, winname, props);
	uj_b_ablak.focus();
	
	return uj_b_ablak;
}


function getLeft(element) {
	xPos = element.offsetLeft;
	tempElement = element.offsetParent;
	
	while (tempElement != null) {
		xPos += tempElement.offsetLeft;
		tempElement = tempElement.offsetParent;
	}
	
	return xPos;
} 


function getTop(element) {
	yPos = element.offsetTop;
	tempElement = element.offsetParent;
	
	while (tempElement != null) {
		yPos += tempElement.offsetTop;
		tempElement = tempElement.offsetParent;
	}
	
	return yPos;
} 


function element(objectID) {
	return document.getElementById ? document.getElementById(objectID) : document.all[objectID];
}


function switchtab(tab, num) {

	element(tab + step).className = '';
	element(tab + num).className = 'on';

	setProjektekTab(num);

	step = num;
}






function updateFCK()
{
	for ( i = 0; i < parent.frames.length; ++i )
	if ( parent.frames[i].FCK )
		parent.frames[i].FCK.UpdateLinkedField();
}



createFCK = function(a, div, textareaId, height, toolbarset)
{
	div.removeChild(a);
	textarea = element('textareaId');

	var oFCKeditor = new FCKeditor(textareaId) ;
	oFCKeditor.BasePath	= '/_includes/FCKeditor/';
	oFCKeditor.Height = height ;
	oFCKeditor.ToolbarSet = toolbarset;
	oFCKeditor.ReplaceTextarea() ;
}




showErrorMessage = function(errors)
{
	str = '';

	for (i=0; i<errors.length; i++)
		str += '- ' + errors[i] + '<br />';

	Modalbox.alert(str);
}


showMessage = function(response)
{
	if (response.redirect)
		afterHide = function() { location.href = response.redirect };
	else if (response.reload)
		afterHide = function() { location.reload() };
	else
		afterHide = function() {};

	Modalbox.alert(response.message, afterHide);
}



toggleBlock = function(blokk, duration)
{
	if (!duration)
		duration = 0.2;

	if ($(blokk).visible()) 
		new Effect.BlindUp(blokk, {duration: duration}) 
	else 
		new Effect.BlindDown(blokk, {duration: duration})
}


function copyInputData()
{
	for (var i=0; i<arguments.length; i+=2)
		$(arguments[i+1]).value = $(arguments[i]).value;
}



fieldsetMethods = {

	toggleDisabled: function(element) {
		if (typeof fieldsetData == 'undefined')
			fieldsetData = new Array();
		
		element.toggleClassName('disabled');
		element.select('input').each(function(element){
			element.disabled = !element.disabled;
//			element.toggleClassName('disabled');
		});
	},

	disable: function(element) {
		element.addClassName('disabled');
		element.select('input').each(function(element){
			element.disabled = true;
//			element.addClassName('disabled');
		});
	},

	enable: function(element) {
		element.removeClassName('disabled');
		element.select('input').each(function(element){
			element.disabled = false;
//			element.removeClassName('disabled');
		});
	},

	reset: function(element) {
		element.select('input[type="text"], select, textarea').each(function(element){
			element.value = '';
		});
	}

};

Element.addMethods('FIELDSET', fieldsetMethods);




addToCart = function(n, checkboxId)
{
	ajax_submitURL('/Kosar/addremove/' + n, function(response) {
		if (response.res)
			$('box-cart').update(response.html);
		else
			$(checkboxId).checked = false;
	});
}


addVevoToSelection = function()
{
	var id = this.id.split('-')[1];
	if (this.checked)
		var url = '/vevogyujto/selection-add/' + id;
	else
		var url = '/vevogyujto/selection-remove/' + id;
	
	ajax_submitURL(url, function(response) {
		if (response.res)
			$('box-vevo-selection').update(response.html);
		else
			this.checked = false;
	});
}


addVevoToCart = function()
{
	var id = this.id.split('-')[1];
	if (this.checked)
		var url = '/vevogyujto/cart-add/' + id;
	else
		var url = '/vevogyujto/cart-remove/' + id;
	
	ajax_submitURL(url, function(response) {
		if (response.res)
		{
			$('box-vevo-cart').update(response.html);
			if (this.checked)
				Messages.ShowMessage('A vevő a gyűjtőbe került');
			else
				Messages.ShowMessage('A vevő el lett távolítva a gyűjtőből');
		}
		else
			this.checked = false;
	}.bind(this));
}


displayInfoBox = function(anchor)
{
	new InfoBox(anchor);
}




var InfoBox = Class.create({

	initialize: function(anchor) 
	{
		anchor = $(anchor);
		
		this.container = new Element('div', {'class': 'divOnClick'}).update(this.closeX = new Element('a', {'class': 'divOnClickClose'}).update('Bezárás'));
	
		new Ajax.Request(anchor.href, {
			onComplete: function(ajax) {
				this.container.insert({Bottom: ajax.responseText});
				$(document.body).insert(this.container);

				offsetX = anchor.cumulativeOffset()[0];
				offsetY = anchor.cumulativeOffset()[1];

				cH = this.container.getHeight();
				cW = this.container.getWidth();
	
				if (offsetX + cW > document.viewport.getWidth() - 10)
					cX = document.viewport.getScrollOffsets()[0] + document.viewport.getWidth() - cW - 10;
				else
					cX = document.viewport.getScrollOffsets()[0] + offsetX;

				if (offsetY + cH > document.viewport.getHeight() + document.viewport.getScrollOffsets()[1] - 10)
					cY = document.viewport.getScrollOffsets()[1] + document.viewport.getHeight() - cH - 10;
				else
					cY = offsetY;
	
				this.container.setStyle({
					left: cX + 'px',
					top: cY + 'px', 
					visibility: 'visible',
					zIndex: 400
				});

				this.closeObserver = this.hide.bindAsEventListener(this);
				$(this.closeX).observe("click", this.closeObserver);

/*
				this.container.select('.dropdown').each(function(element){
					new DropDownMenu(element);
				});
*/
				
				visibilityToggerInit();
				dropDownInit();
				registerNewWindowURLs(this.container);

			}.bind(this)
		});
	}, 
	
	hide: function()
	{
		this.container.remove();
	} 
});



var InfoBox2 = Class.create({

	initialize: function(anchor) 
	{
		anchor = $(anchor);
		this.container = new Element('div', {'class': 'divOnClick2'}).update(this.closeX = new Element('a', {'class': 'closeX'}).update('Bezárás'));
		
		new Ajax.Request(anchor.href, {
			onComplete: function(ajax) {
				this.container.insert({Bottom: ajax.responseText});
				$(document.body).insert(this.container);

				offsetX = anchor.viewportOffset()[0];
				offsetY = anchor.viewportOffset()[1];

				cH = this.container.getHeight();
				cW = this.container.getWidth();

				if (offsetX + cW > document.viewport.getWidth() - 10)
					cX = document.viewport.getWidth() - cW - 10;
				else
					cX = offsetX;

				if (offsetY + cH > document.viewport.getHeight() - 10)
					cY = document.viewport.getHeight() - cH - 10;
				else
					cY = offsetY;
	
				this.container.setStyle({
					left: cX + 'px',
					top: cY + 'px', 
					visibility: 'visible',
					zIndex: 400
				});

				this.closeObserver = this.hide.bindAsEventListener(this);
				$(this.closeX).observe("click", this.closeObserver);
				
				fleXenv.initByClass("scrollable");

				this.container.select('.tabs li a').invoke('observe', 'click', function(ev){
					var a = ev.element();
					if (!a.up('li').hasClassName('on'))
					{
						this.container.select('li.on').invoke('removeClassName', 'on');
						a.up('li').addClassName('on');
						this.container.select('.content > div').invoke('hide');
						var tab = this.container.select('#' + a.rel)[0];
						var scrollable = tab.select('.scrollable')[0];
						tab.show();
						fleXenv.fleXcrollMain(scrollable);
					}
				}.bind(this));

				/*
				visibilityToggerInit();
				dropDownInit();
				registerNewWindowURLs(document.body);
				*/

			}.bind(this)
		});
	}, 
	
	hide: function()
	{
		this.container.remove();
	} 
});




var togglers = [];
visibilityToggerInit = function() {
	$$('.autotoggler').each(function(element){
		togglers.push(new VisibilityToggler(element, element.rel));
	});
}

dropDownInit = function() {
	$$('.dropdown.auto').each(function(element){
		new DropDown(element);
	});

	$$('.newdropdown.auto').each(function(element){
		if (!element.hasClassName('initialized'))
			new Avus.DropDownContent(element, element.rel);
	});
}

helpboxTogglerInit = function() {
	$$('.helpboxToggler.auto').each(function(element){
		new Tip(element, $(element.rel).innerHTML, {
			fixed: true,
			hook: {
				target: 'bottomMiddle', 
				tip: 'topMiddle'
			},
			showOn: 'click',
			hideOn: 'click',
			closeButton: true,
			className: 'helpbox'
		});
	});
}


registerNewWindowURLs = function(container) {

	$(container).select('a.inNewWindow').each(function(element){
		element.onclick = function() {
			w = new Window({width:600, zIndex: 100, title: element.title}) 
			w.setAjaxContent(element.href, null, true, true)
			return false
		};
	});

	$(container).select('a.inIframeWindow').each(function(element){
		element.onclick = function() {
			var href = '';
			if (element.href.match(/\?/))
			{
				var parts = element.href.split('?');
				href = parts[0] + '?bodyClass=window&' + parts[1];
			}
			else
				href = element.href + '?bodyClass=window';
			
			w = new Window({width:700, height: document.viewport.getHeight()-60, zIndex: 100}) 
			w.setURL(href, null, true, true);
			w.showCenter(modal = true);
			return false
		};
	});

	$(container).select('.replaceElement').each(function(element){
		element.onclick = function(){return false};

		element.observe('click', function(){
			var href = '';
			if (this.href.match(/\?/))
			{
				var parts = this.href.split('?');
				href = parts[0] + '?bodyClass=blank&' + parts[1];
			}
			else
				href = this.href + '?bodyClass=blank';
			
			var element = $(this.target);
			element.ajaxUpdate(href);
		});
	});
}


Event.observe(window, 'load', function(){

	visibilityToggerInit();
	dropDownInit();
	helpboxTogglerInit();

	$$('a.toggler').each(function(element){
		element.onclick = function() {return false};

		element.observe('click', function(){
			$(element.getAttribute('rel')).toggle();
			if (element.innerHTML == '[+]')
				element.update('[-]');
			else
				element.update('[+]');
			element.blur();
		});
	});


	registerNewWindowURLs(document.body);

	$$('.tooltip').each(function(element){
		new Tip(element, element.title, {delay: 0.1});
		element.title = '';
	});

});



var ProgressBar = Class.create({

	initialize: function(elementId) 
	{
		this.container = $(elementId);
		this.container.addClassName('progressbar');
		this.container.update(this.indicator = new Element('div', {'class': 'progressbar-indicator'}));
		this.container.hide();
	}, 
	
	show: function()
	{
		this.container.show();
	}, 

	hide: function()
	{
		this.container.hide();
	}, 
	
	progress: function(currentStep, stepCount)
	{
		this.show();
		if (!this.stepCount)
			this.stepCount = stepCount;
		this.currentStep = currentStep;
		this.indicator.style.width = ((this.currentStep / this.stepCount) * 100) + '%';
	}, 
	
	reset: function()
	{
		this.currentStep = null;
		this.stepCount = null;
	}

});


formMethods = {

	deactivate: function(element) {
		shadow = new Element('div', {'class': 'loadingbg'});
		Element.clonePosition(shadow, element);
		$(document.body).insert({Top: shadow});
	},

	activate: function(element) {
		shadow.remove();
	},

	ajaxSubmit: function(element) {
		element.deactivate();
		element.request({ 
			onComplete: function(ajax){
				element.activate();
				ajaxOnComplete(ajax, afterOnComplete);
			}
		})
	}

};

Element.addMethods('FORM', formMethods);

Event.observe(window, 'load', function(){
	$$('.tabpanel').each(function(panel){
		var lis = panel.select('ul.tabs li');
		var tabs = panel.select('div.tabpanel-tab');
		lis.each(function(li){
			var a = li.select('a')[0];
			var rel = $(a.readAttribute('rel'));
			if (rel.visible())
				li.addClassName('active');
			a.onclick = function() {return false}
			a.observe('click', function(){
				lis.each(function(element){
					element.removeClassName('active');
				});
				li.addClassName('active');
				tabs.invoke('hide');
				rel.show();
			}.bindAsEventListener(a))
		});
	});
});



var FormElementObserver = Class.create({

	initialize: function(elements, events, func) {
		if (typeof elements == 'string')
			elements = [elements];

		if (typeof events == 'string')
			events = [events];
	
		for (var i=0; i<elements.length; i++)
			for (var j=0; j<events.length; j++)
				if ($(elements[i]))
					$(elements[i]).observe(events[j], func);
	}

});



var TableOfContents = Class.create({

	initialize: function(divId, labelClass) {
		var div = $(divId);

		div.update();
		var labels = $$('.' + labelClass);
		for (i=labels.length-1; i>=0; i--)
		{
			item = labels[i];
			if (item.up().visible())
			{
				a = new Element('a', {}).update(item.innerHTML);
				a.observe('click', function(){
					this.scrollTo();
				}.bind(item));
				div.insert({Top: new Element('li').update(a)});
			}
		}
	}

});


Element.addMethods({
	
	ajaxUpdate: function(element, URL, options) {

		element = $(element);
		element.update('kis türelmet');

		var href = '';
		if (URL.match(/\?/))
		{
			var parts = URL.split('?');
			href = parts[0] + '?bodyClass=blank&' + parts[1];
		}
		else
			href = URL + '?bodyClass=blank';

		new Ajax.Updater(element, href, {evalScripts: true});
		return element;
	},


	addLoading: function(element) {
		shadow = new Element('div', {'class': 'loadingbg'});
		Element.clonePosition(shadow, element);
		$(document.body).insert({Top: shadow});
	},


	removeLoading: function(element) {
		shadow.remove();
	},


	updateInputFile: function(element, name) {
		var input = new Element('input', {type: 'hidden', name: name, id: name});
		var iframe = new Element('iframe', {name: 'iframe_' + name, id: 'iframe_' + name, marginheight: 0, marginwidth: 0, frameborder: 0, 'class': 'uploadiframe', src: '/upload/index.php?h=' + name});
		element.update(input);
		element.insert(iframe);
	}
});




selectMethods = {

	addOption: function(element, value, label)
	{
		element.insert(new Element('option', {value: value}).update(label));
	},
	
	sortOptions: function(element) 
	{
		var lb = element;
		arrTexts = new Array();
		arrValues = new Array();
		arrOldTexts = new Array();
	
		for(i=0; i<lb.length; i++)
		{
			arrTexts[i] = lb.options[i].text;
			arrValues[i] = lb.options[i].value;
	
			arrOldTexts[i] = lb.options[i].text;
		}
	
		arrTexts.sort();
	
		for(i=0; i<lb.length; i++)
		{
			lb.options[i].text = arrTexts[i];
			for(j=0; j<lb.length; j++)
			{
				if (arrTexts[i] == arrOldTexts[j])
				{
					lb.options[i].value = arrValues[j];
					j = lb.length;
				}
			}
		}
	},

	selectOption: function(element, value) 
	{
		var options = element.select('option');
		for (var i=0; i<options.length; i++)
		{
			if (options[i].value == value)
			{
				element.selectedIndex = i;
				break;
			}	
		}
	},

	updateOptions: function(element, arr) {
		element.select('option').invoke('remove');
		for (i in arr)
		{
			element.insert(new Element('option', {value: i}).update(arr[i]));
		}
	}
}
	
Element.addMethods('SELECT', selectMethods);



OnLoadObservePhoneNumbers = function() {
	$$('div.inputphonenumber input.int').invoke('observe', 'change', function(){
			this.addClassName('_observed');
			
			var id = this.id.split('_')[0];
			var countryCode = $F(id + '_countryCode').replace(/\D/, '');
			var areaCode = $F(id + '_areaCode').replace(/\D/, '');
			var number = $F(id + '_number').replace(/\D/, '');
	
			if (countryCode == '36' && areaCode.length > 2)
			{
				number = areaCode.substr(2) + number;
				areaCode = areaCode.substr(0, 2);
			}
	
			if (countryCode && areaCode && number)
				$(id).value = '+' + countryCode + '-' + areaCode + '-' + number;
			else
				$(id).value = '';
	});
}


document.observe('dom:loaded', function(ev) {
	OnLoadObservePhoneNumbers();
});

