index = webroot+"/server.php?";
current_type = 0;

Ajax.Responders.register({
	onComplete: function(request, response) {
		//google.maps.Log.write(response.responseJSON);
 		showMessageWindow(response.responseJSON);
	}
});

function showMessageWindow(jd)
{
	if (jd.code.messages)
	{
		$('message').hide();
		
		$('message').appear();
		
		setTimeout(function(){
			$('message_content').update(jd.code.messages);
		}, 1000)
		
		setTimeout(function(){
			if ($('message_box')) $('message_box').remove();
			$('message').fade();
			
		}, 5000)
	}
}

function registerEmail(email)
{
	if (email)
	{
		new Ajax.Request(index, {
	  		method: 'get',
	  		parameters: {f:'registerEmail', s:session, email:email},
	  		onSuccess: function(transport) {
	  			jd = transport.responseJSON;
		    	$('side_newsletter').hide();
		    	$('side_newsletter').update("Die eMail Adresse wurde eingetragen!");
		    	$('side_newsletter').appear();
	        }
	    });
	}
	else
		alert("Bitte eMail Adresse eingeben!");
}

function unregisterEmail(email)
{
	if (confirm("eMail Adresse wirklich löschen?"))
	{
		new Ajax.Request(index, {
	  		method: 'get',
	  		parameters: {f:'unregisterEmail', s:session, email:email},
	  		onSuccess: function(transport) {
	  			jd = transport.responseJSON;
	  			$('side_newsletter').hide();
		    	$('side_newsletter').update("Die eMail Adresse wurde gelöscht!");
		    	$('side_newsletter').appear();
	        }
	    });
	}
	else
		alert("Bitte eMail Adresse eingeben!");
}


function login(user, pass, target, page)
{
	var data = {u:user, p:pass};
	$('account_content').hide();
	new Ajax.Request(index, {
  		method: 'get',
  		parameters: {f:'login', s:session, target:target, page:page, data:Object.toJSON(data)},
  		onSuccess: function(transport) {
  			jd = transport.responseJSON;
  			
  			if (jd.code.content)
  				$(target).update(jd.code.content);
  			
	    	$('side_account').update(jd.code.account);
	    	$('account_content').hide();
	    	$('account_content').appear();
        }
    });
}

function logout()
{
	$('account_content').hide();
	new Ajax.Request(index, {
  		method: 'get',
  		parameters: {f:'logout', s:session},
  		onSuccess: function(transport) {
  			jd = transport.responseJSON;
  			
	    	$('side_account').update(jd.code.account);
	    	$('account_content').hide();
	    	$('account_content').appear();
        }
    });
}

function showAccountDataEdit()
{
	new Ajax.Request(index, {
  		method: 'get',
  		parameters: {f:'showAccountDataEdit', s:session},
  		onSuccess: function(transport) {
  			jd = transport.responseJSON;
	    	$('account_data').update(jd.code.account);
        }
    });
}

function showRetailDataEdit()
{
	new Ajax.Request(index, {
  		method: 'get',
  		parameters: {f:'showRetailDataEdit', s:session},
  		onSuccess: function(transport) {
  			jd = transport.responseJSON;
	    	$('retail_data').update(jd.code.retail);
        }
    });
}

function sendAccountEditForm()
{
	var data = $('register').serialize(true);
	var inputs = new Array('vorname', 'nachname', 'firma', 'zusatz', 'email', 'passwort', 'passwort2', 'strasse', 'plz', 'ort', 'telefon');
		
	new Ajax.Request(index, {
  		method: 'get',
  		parameters: {f:'sendAccountEditForm', s:session, data:Object.toJSON(data)},
  		onSuccess: function(transport) {
  			jd = transport.responseJSON;
	        if (displayErrors(inputs, jd.errors))	
			{
				$('account_data').update(jd.code.content);
			}
        }
    });
}


function sendRegisterForm()
{
	var data = $('register').serialize(true);
	var inputs = new Array('vorname', 'nachname', 'firma', 'zusatz', 'email', 'passwort', 'passwort2', 'strasse', 'plz', 'ort', 'telefon', 'type');
		
	if (!data.type)
	{
		data.type = "";
	}
	
	if (!data.check_bonitaet)
	{
		alert('Bitte Bonitätsfeststellung erlauben!');
		return;
	}
	
	if (!data.check_datenschutz_agb)
	{
		alert('Bitte Datenschutzerklärung & AGB akzeptieren!');
		return;
	}
	
	new Ajax.Request(index, {
  		method: 'get',
  		parameters: {f:'sendRegisterForm', s:session, data:Object.toJSON(data)},
  		onSuccess: function(transport) {
  			jd = transport.responseJSON;
	        if (displayErrors(inputs, jd.errors))	
			{
				$('register_content').update(jd.code.content);
				
				$('side_account').update(jd.code.account);
	    		$('account_content').hide();
	    		$('account_content').appear();
			}
        }
    });
}

function sendSupportForm()
{
	var data = $('support').serialize(true);
	var inputs = new Array('vorname', 'nachname', 'email', 'strasse', 'plz', 'ort', 'telefon');
		

	if (!data.product)
	{
		alert('Bitte Produkt angeben!');
		return;
	}
	
	if (!data.problem)
	{
		alert('Bitte Fehlerbeschreibung angeben!');
		return;
	}
	
	new Ajax.Request(index, {
  		method: 'get',
  		parameters: {f:'sendSupportForm', s:session, data:Object.toJSON(data)},
  		onSuccess: function(transport) {
  			jd = transport.responseJSON;
	        if (displayErrors(inputs, jd.errors))	
			{
				$('support_content').update(jd.code.content);
			}
        }
    });
}

function sendContactForm()
{
	var data = $('support').serialize(true);
	var inputs = new Array('vorname', 'nachname', 'email', 'strasse', 'plz', 'ort', 'telefon');
		
	
	if (!data.text)
	{
		alert('Bitte Mitteilung / Frage angeben!');
		return;
	}
	
	new Ajax.Request(index, {
  		method: 'get',
  		parameters: {f:'sendContactForm', s:session, data:Object.toJSON(data)},
  		onSuccess: function(transport) {
  			jd = transport.responseJSON;
	        if (displayErrors(inputs, jd.errors))	
			{
				$('kontakt_content').update(jd.code.content);
			}
        }
    });
}

function sendRequestForm(system)
{
	var data = $('support').serialize(true);
	var inputs = new Array('vorname', 'nachname', 'firma', 'zusatz', 'email', 'passwort', 'passwort2', 'strasse', 'plz', 'ort');
		
	
	new Ajax.Request(index, {
  		method: 'get',
  		parameters: {f:'sendRequestForm', s:session, system:system, data:Object.toJSON(data)},
  		onSuccess: function(transport) {
  			jd = transport.responseJSON;
	        if (displayErrors(inputs, jd.errors))	
			{
				$('page_content_main').update(jd.code.content);
			}
        }
    });
}

function sendRequestPdfForm(system, type)
{
	var data = $('support').serialize(true);
	var inputs = new Array('vorname', 'nachname', 'firma', 'zusatz', 'strasse', 'plz', 'ort');
		
	new Ajax.Request(index, {
  		method: 'get',
  		parameters: {f:'sendRequestPdfForm', s:session, system:system, type:type, data:Object.toJSON(data)},
  		onSuccess: function(transport) {
  			jd = transport.responseJSON;
	        if (displayErrors(inputs, jd.errors))	
			{
				$('page_content_main').update(jd.code.content);
			}
        }
    });
}


function sendRetailForm()
{
	var data = $('retail').serialize(true);
	var inputs = new Array('retail_text', 'retail_contact1', 'retail_marge');
		
	new Ajax.Request(index, {
  		method: 'get',
  		parameters: {f:'sendRetailForm', s:session, data:Object.toJSON(data)},
  		onSuccess: function(transport) {
  			jd = transport.responseJSON;
	        if (displayErrors(inputs, jd.errors))	
			{
				$('retail_data').update(jd.code.content);
			}
        }
    });
}

function checkOrderCheckboxes(type)
{
	var data = $('order').serialize(true);

	if (!data.check_datenschutz_agb)
	{
		alert('Bitte Datenschutzerklärung & AGB akzeptieren!');
		return;
	}
	
	if (type == 1)
	{
		if (!data.check_widerruf)
		{
			alert('Bitte Widerrufsbelehrung lesen!');
			return;
		}
	}
	
	
	$('order').submit();
	
}

function showPasswordReminder()
{
	$('account_content').hide();
	new Ajax.Request(index, {
  		method: 'get',
  		parameters: {f:'showPasswordReminder', s:session},
  		onSuccess: function(transport) {
  			jd = transport.responseJSON;
  			
	    	$('side_account').update(jd.code.account);
	    	$('account_content').hide();
	    	$('account_content').appear();
        }
    });
}

function showLogin()
{
	$('account_content').hide();
	new Ajax.Request(index, {
  		method: 'get',
  		parameters: {f:'showLogin', s:session},
  		onSuccess: function(transport) {
  			jd = transport.responseJSON;
  			
	    	$('side_account').update(jd.code.account);
	    	$('account_content').hide();
	    	$('account_content').appear();
        }
    });
}

function setBranchTab(tab, tab_name, target, element)
{
	element.blur();
	
	var tabs = $('tablist').select('li');
	tabs.each(function(tab) {
       	tab.removeClassName('a');
	});

	
	new Ajax.Request(index, {
  		method: 'get',
  		parameters: {f:'getBranchContent', s:session, tab: tab, tab_name: tab_name},
  		onSuccess: function(transport) {
  			jd = transport.responseJSON;
  			
  			$("tab_tablist_"+tab).addClassName('a');
  			
	    	$(target).update(jd.code.content);
	    	$('big_box').hide();
	    	$('big_box').appear();
        }
    });
}


function setKonfiguratorTab(tab, target, element, system, item)
{
	element.blur();
	
	var tabs = $('tablist').select('li');
	tabs.each(function(tab) {
       	tab.removeClassName('a');
	});

	new Ajax.Request(index, {
  		method: 'get',
  		parameters: {f:'getKonfiguratorContent', s:session, tab: tab, system: system, item: item},
  		onSuccess: function(transport) {
  			jd = transport.responseJSON;
  			
  			$("tab_tablist_"+tab).addClassName('a');
	    	$(target).update(jd.code.content);
	    	
	    	$('tab_system_content').hide();
	    	$('tab_system_content').appear();
        }
    });
}

function showSerial(tag, target)
{
	if ($('system_support_box'))
		$('system_support_box').remove();
	
	new Ajax.Request(index, {
  		method: 'get',
  		parameters: {f:'showSerial', s:session, tag: tag},
  		onSuccess: function(transport) {
  			jd = transport.responseJSON;
	    	Element.insert(target, {top:jd.code.content});
        }
    });
}

function showComponentList(system, type, komponent)
{
	//element.blur();
	
	if ($('component_list')) $('component_list').remove();
	
	if (current_type == type)
	{
	 	current_type = 0;
	 	return;
	}
	
	current_type = type;
	
	new Ajax.Request(index, {
  		method: 'get',
  		parameters: {f:'showComponentList', s:session, system: system, type: type, komponent: komponent},
  		onSuccess: function(transport) {
  			jd = transport.responseJSON;
  			
  			Element.insert('component_'+type, jd.code.content);

        }
    });
}

function updateComponentList(system, type, komponent)
{
	//element.blur();
	
	if ($('component_list')) $('component_list').remove();
	current_type = 0;
	
	if ($('price_box_content')) $('price_box_content').update(loadImage());
	
	new Ajax.Request(index, {
  		method: 'get',
  		parameters: {f:'updateComponentList', s:session, system: system, type: type, komponent: komponent},
  		onSuccess: function(transport) {
  			jd = transport.responseJSON;
  			
  			Element.update('component_'+type, jd.code.item);
  			
  			setTimeout(function(){
  				Element.update('price_box', jd.code.price_box);
  				//$('price_box_content').hide();
	    		//$('price_box_content').appear();
	    	}, 1000);
        }
    });
}


function checkDelivery(str)
{
	if ($('price_box_delivery')) $('price_box_delivery').update(loadImage('bar3'));
	
	setTimeout(function(){
		Element.update('price_box_delivery', "Lieferzeit: "+str);
   	}, 2000);
      
}

function showComponents(system, item)
{
	if ($('row_name_'+item)) $('row_name_'+item).update(loadImage());
	
	new Ajax.Request(index, {
  		method: 'get',
  		parameters: {f:'showComponents', s:session, system: system, item: item},
  		onSuccess: function(transport) {
  			jd = transport.responseJSON;
  			
  			setTimeout(function(){
  				Element.update('row_name_'+item, jd.code.item_name);
	    	}, 1000);
        }
    });
}

function hideComponents(system, item)
{

	new Ajax.Request(index, {
  		method: 'get',
  		parameters: {f:'hideComponents', s:session, system: system, item: item},
  		onSuccess: function(transport) {
  			jd = transport.responseJSON;
  			Element.update('row_name_'+item, jd.code.item_name); 
        }
    });
}

function addArticleToBasket(id)
{
	//$('basket').update(loadImage());
	
	new Ajax.Request(index, {
  		method: 'get',
  		parameters: {f:'addArticleToBasket', s:session, id: id},
  		onSuccess: function(transport) {
  			jd = transport.responseJSON;
  			
  			setTimeout(function(){
  				Element.update('basket', jd.code.basket);
  				$('basket_content').hide();
  				$('basket_content').appear();
  			}, 100);
        }
    });
}


function addSystemToBasket(system)
{
	//$('basket').update(loadImage());
	
	new Ajax.Request(index, {
  		method: 'get',
  		parameters: {f:'addSystemToBasket', s:session, system: system},
  		onSuccess: function(transport) {
  			jd = transport.responseJSON;
  			
  			setTimeout(function(){
  				Element.update('basket', jd.code.basket);
  				$('basket_content').hide();
  				$('basket_content').appear();
  			}, 100);
        }
    });
}

function updateSystemInBasket(system, item)
{
	//$('basket').update(loadImage());
	
	new Ajax.Request(index, {
  		method: 'get',
  		parameters: {f:'updateSystemInBasket', s:session, system: system, item:item},
  		onSuccess: function(transport) {
  			jd = transport.responseJSON;
  			
  			setTimeout(function(){
  				Element.update('basket', jd.code.basket);
  				$('basket_content').hide();
  				$('basket_content').appear();
  			}, 100);
        }
    });
}

function updateBasketItem(system, item, num)
{
	$('page_content_main').update(loadImage());
	
	new Ajax.Request(index, {
  		method: 'get',
  		parameters: {f:'updateBasketItem', s:session, system: system, item:item, num:num},
  		onSuccess: function(transport) {
  			jd = transport.responseJSON;
  			setTimeout(function(){
  				Element.update('page_content_main', jd.code.basket_main);
  				Element.update('basket', jd.code.basket);
  				$('basket_content').hide();
  				$('basket_content').appear();
  			}, 1000);
        }
    });
}

function delBasketItem(system, item)
{
	$('page_content_main').update(loadImage());
	
	new Ajax.Request(index, {
  		method: 'get',
  		parameters: {f:'delBasketItem', s:session, system: system, item:item},
  		onSuccess: function(transport) {
  			jd = transport.responseJSON;
  			setTimeout(function(){
  				Element.update('page_content_main', jd.code.basket_main);
  				Element.update('basket', jd.code.basket);
  				$('basket_content').hide();
  				$('basket_content').appear();
  			}, 1000);
        }
    });
}

function loadImage(image)
{
	var img = new Element("div", {"class":"load "+ image});
	return img;
}

function displayErrors(elements, errors){
	elements.each(function(element) {
			
		var label = $$('LABEL[rel='+element+']');
       	var edit = element+"_edit";
	
		if ($(edit)) 	$(edit).remove();
		if ($(element)) $(element).removeClassName('error');
		
		if (label[0]) 	Element.writeAttribute(label[0], 'title', '');
		if (label[0]) 	label[0].removeClassName('error');
	});
       
    if (errors)
       {
       	var e = new Hash(errors);
       	
       	//GLog.write(Object.toJSON(e));
       	
       	e.each(function(pair) {
       		var element = pair.key;
       		var label = $$('LABEL[rel='+element+']');
       		var edit = element+"_edit";
       	
 				if ($(element)) 
 					$(element).addClassName('error');
 					
 				if (label[0]) 
 				{
 					label[0].addClassName('error');
 				
 					var code = "<IMG SRC=\""+webroot+"/inc/bilder/icons_mini/PNG/mini-alert.png\" BORDER=\"0\" ID=\""+edit+"\">";
 				
 					if (!$(edit))
 						Element.insert(label[0], {top: code});
 				
 					Element.writeAttribute(label[0], 'title', pair.value);
 				}
		});
		
		return false;
       }
       
       return true;
	}
	
	
function showGalleryImage(num)
{
	//element.blur();
	
	var divs = $('gallery_content').select('DIV');
	divs.each(function(div) {
       	div.hide();
	});
	
	$('gallery'+num).show();

}