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 var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=ca.length-1;i >= 0;i--) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

function getScrollPosition()
{
	var ScrollTop = document.body.scrollTop;

	if (ScrollTop == 0)
	{
	    if (window.pageYOffset) ScrollTop = window.pageYOffset;
	    else ScrollTop = (document.body.parentElement) ? document.body.parentElement.scrollTop : 0;
	}
	return ScrollTop;
}

function setScrollPosition(pos)
{
	window.scrollTo(0,pos);
}

var dp = null;

function initDatePicker(date)
{
	if(!date) {
		var date = $F('first_possible_delivery');
	}
	
	var fpdd = date.split('.');
	fpdd = fpdd[2]+'-'+fpdd[1]+'-'+fpdd[0];

	if(dp) {
		$(dp._id_datepicker).hide();
		dp = null;
	}
	
	dp = new DatePicker({
		 relative : 'deliver_date_display',
		 afterClose:function(){
				$('deliver_date').value = $F('deliver_date_display');
				request('/catalog/json/get_date','updateDate');
				updateFactSheet();
		 },
		 dateFilter:DatePickerUtils.noWeekends().append(DatePickerUtils.noDatesBefore(fpdd)).append(DatePickerUtils.noDatesAfter(120))
		});
}

function initChoose()
{
	if($('btn_update_price')) $('btn_update_price').hide();
	initDatePicker();
	
	if($('delivery_zip_code')) {
		$('delivery_zip_code').onkeyup = function(){
			$('delivery_zip_code').value = $F('delivery_zip_code').replace(/[^\d]+/, '');
			
			if($F('delivery_zip_code').length >= 2) {
				$('delivery_zip_code').value = $('delivery_zip_code').value.substring(0, 5);	
				if($F('delivery').length == 0) {
					var oneSelected = false;
					$A($('content').select('input[type="image"]')).each(function(el){
						var n = el.readAttribute('name');
						if(Core.stristr(n,'delivery')) {
							if(oneSelected) return;
							var elName  = n.replace(/\[[^\]]*\]/,'');
							var elValue = n.replace(/[^\}]*\[([^\]]*)\]/,'$1');
							$('delivery').writeAttribute('value',elValue);
							el.addClassName('active');
							oneSelected = true;
						}
					});
				}
			} else {
				$('delivery').writeAttribute('value','');
				$A($('content').select('input.active')).each(function(tEl){
					var tElname = tEl.readAttribute('name');
					if(Core.stristr(tElname,'delivery')) tEl.removeClassName('active');
				});				
			}
			
			request('/catalog/json/get_price',  'updatePrice');
			request('/catalog/json/get_weight', 'updateWeight');
			updateFactSheet();
		}
		var t = ['edition', 'pages'];
		for(el in t) {
			$(t[el]).onchange = function() {
				fixationCheck();
				request('/catalog/json/get_price',  'updatePrice');
				request('/catalog/json/get_weight', 'updateWeight');
				updateFactSheet();
			}
		}		
	}
	
	fixationCheck();
	aktivateOptionsDisabled();
}

Event.observe(window,"unload",function(){
	createCookie('scrollPos',getScrollPosition(),1);
});

Event.observe(window,"load",function()
{
	if(Core.stristr(document.location.href,'choose')) {
		initChoose();
	}
	
	if (document.referrer == document.location.href) {
		setScrollPosition(readCookie('scrollPos'));
		eraseCookie('scrollPos');
	}
});

function getTarget(x){
	x = x || window.event;
	return x.target || x.srcElement;
} 

function stopFormSubmit() {
	$('catalog_choose').onsubmit = function() {return false;}	
}
function startFormSubmit() {
	$('catalog_choose').onsubmit = function() {return true;}	
}

function updatePrice(res)
{
	$('price_net').innerHTML = Text.numberFormat(res.net,2,',','.');
	$('price_gross').innerHTML = Text.numberFormat(res.gross,2,',','.');
	$('delivery_price_net').innerHTML = Text.numberFormat(res.delivery_net,2,',','.');
	$('delivery_price_gross').innerHTML = Text.numberFormat(res.delivery_gross,2,',','.');
	
	if($F('delivery_zip_code').length >=2) {
		$('delivery_price').show();
	} else {
		$('delivery_price').hide();
	}
}

function updateWeight(res)
{
	$('total_weight').innerHTML = Text.numberFormat(res,0,',','.');
}

function updateDate(res)
{
	if($('release_date')) $('release_date').innerHTML = res.release;
	if($('deliver_date_display')) $('deliver_date_display').value = res.delivery;
	if($('deliver_date')) $('deliver_date').value = res.delivery;

	if($('termin_hint')) $('termin_hint').update(res.release);
	
	initDatePicker(res.first_possible_delivery);
}

ajaxBusy = {};

function request(location,callback)
{
	var url = Core.url(location);
	
	var data = {};
	
	ajaxBusy[callback] = 1;
	
	$A($('content').select('input[type="hidden"]')).each(function(el){
		data[el.readAttribute('name')] = el.readAttribute('value');
	});
	
	var f = ['edition','pages','delivery_zip_code','deliver_date'];
	
	for(var i= 0; i<f.length;i++) {
		data[f[i]] = $F(f[i]);
	}
	
	var params = Core.object2string(data);
	
	new Ajax.Request(url, {
	  parameters:params,
	  onSuccess: function(transport) {
	    var res = transport.responseText;
	    eval(cb = callback + '('+res+');');
	  },
	  onComplete: function()
	  {
	  	ajaxBusy[callback] = 0;
	  }
	});
}

function updateFactSheet()
{
	var num = 0, keys = 0; 
	for (i in ajaxBusy)
	{
		keys++;
		num += ajaxBusy[i];
	}

	// Warten bis zum irgendein Request fertig ist
	if (num == keys) 
	{
		setTimeout(updateFactSheet, 200);
		
		return;
	}
	
	new Ajax.Updater('factsheet', Core.url('/catalog/html/factsheet'));
}

$(document).onclick = function(e)
{
	var e = e || window.event;

	var el = getTarget(e);
	var elRealName = $(el).readAttribute('name');

	if (elRealName && elRealName.match(/^[a-zA-Z0-9_-]+\[[^\]]+\]$/) && el.readAttribute('type') != 'submit')
	{
		Event.stop(e);
		
		var elValue = elRealName.replace(/[^\}]*\[([^\]]*)\]/, '$1');
		var elName  = elRealName.replace(/\[[^\]]*\]/, '');

		var elH = $('content').select('input[name="'+elName+'"]');
		elH = elH[0];
		
		var wasSelected = el.hasClassName('active');

		$A($('content').select('input.active')).each(function(tEl){
			var r = new RegExp(elName+'\[[.*]*\]');
			var tElname = tEl.readAttribute('name');
			if(Core.stristr(tElname,elName)) {
				tEl.previous('div').removeClassName('active');
				tEl.removeClassName('active');
			}
		});	
		
		// Eine Variante muss immer bleiben
		if (wasSelected 
			&& elName != 'cover_paper' && elName != 'cover_finishing' && elName != 'page_paper' 
			&& elName != 'page_finishing' && elName != 'fixation' && elName != 'delivery') 
		{
			elValue = '';
		}
		else 
		{
			el.addClassName('active');
			el.previous('div').addClassName('active');
		}

		elH.writeAttribute('value', elValue);
		
		fixationCheck();
		request('/catalog/json/get_price', 'updatePrice');
		request('/catalog/json/get_weight','updateWeight');
		request('/catalog/json/get_date',  'updateDate');
		updateFactSheet();
	}

	if(el.readAttribute('cmd') == 'print') {
		openWindow(el.readAttribute('href'),800,800);
		return false;
	}
	if(el.readAttribute('cmd') == 'email') {
		openWindow(el.readAttribute('href'),500,300);
		return false;
	}
};


function openWindow(l, w, h)
{
	var sw = (screen.width - w)  / 2;
	var sh = (screen.height - h) / 2;

	var win = window.open (l, "popup", "status=0,toolbar=0,location=0,resizable=1,scrollbars=1,width="+w+",height="+h+",directories=0,left=" + sw + ",top=" + sh + ",screenX=" + sw + ",screenY=" + sh + "");
	return false;
}


//Prüft, ob Voraussetzungen für Verarbeitung gelten
function fixationCheck()
{
	var pagesElm;
	
	pagesElm = $('pages');
	pagesElm = $(pagesElm[ pagesElm.selectedIndex ]);
	if ( pagesElm.hasClassName( 'paper' + $F('page_paper') ) )
	{
		fixationUpdate();
	}
	else
	{
		if ( $('fixation_check').value == $F('fixation') )
		{
			alert('Bei dieser Auswahl nur Klebebindung möglich');
			$('fixation' + $('fixation_uncheck').value).click();
		}

		fixationUpdate(1);
	}
}


function fixationUpdate(block)
{
	var elm;
	
	elm = $('fixation' + $('fixation_check').value);
	
	if (block)
	{
		if (elm.src.indexOf('_dis.png') == -1)
		{
			elm.disabled = 'disabled';
			elm.src = elm.src.replace('.png', '_dis.png');
		}
	}
	else
	{
		elm.disabled = false;
		elm.src = elm.src.replace('_dis.png', '.png');
	}
}


function aktivateOptionsDisabled()
{
    if (!Prototype.Browser.IE)
    {
    	return;
    }
    
    var elm;
    
    elm = $('country_list');
    elm.onchange= function(){ 
        if (this.options[ this.selectedIndex ].disabled)
        {
            if (this.options.length <= 1)
            {
                this.selectedIndex = -1;
            }
            else if(this.selectedIndex > 0)
            {
                this.selectedIndex--;
            }
        }
        
    	if (elm.options[ elm.selectedIndex ].disabled)
    	{
    	    elm.onchange();
    	}    
	}
        
    for (var j = 0; j < elm.options.length; j++)
    {
        if (elm.options[j].disabled)
        {
            elm.options[j].style.color = '#808080';
        }
    }

}


