/**
 * @author mdogan( dogan(at)intelligentworks(dot)ch )
 */

 var iw = {};
 
 iw.Slider  = {};
 iw.GMap    = {};
 iw.Ajax    = {};
 iw.Table   = {};
 iw.Gallery = {};
 iw.Popup   = {}
 iw.Offer   = {};
 iw.NewsLetter = {};
 
 iw.Slider.index = 0;
  
 iw.lang = "de";
 
 iw.Ajax.loaderGif = "image/ajax-loader.gif";

 iw.ResultArray       = null;
 iw.Table.headerNames = null; 
 iw.Table.criterias   = null; 
 iw.Table.bodyRowTemplate   = null;
 iw.Table.headerRowTemplate = null;

 iw.Popup.manager = null;
 
 iw.GMap.currentMapPopup = null;
 
 
 
 
 
 
 


 
 
 
 
 
 iw.Offer.openForm = 
 function(id, domElm)
 { 
 	new Ajax.Request('operations.php',
	{
		method:'POST'
		,parameters:{'action':'getTemplate','tplName':'OfferForm'}
		,onSuccess:function(rs)
		{
			if( iw.Popup.manager == null )
				iw.Popup.manager = new UI.WindowManager({ container: 'body' });
			
			if (iw.Popup.window != null) 
				iw.Popup.window.destroy();
				
				iw.Popup.window = new UI.Window({
					shadow: true,
					theme: "black_hud",
					top:document.viewport.getScrollOffsets().top + document.viewport.getHeight()/2  - 250,
					left:document.viewport.getScrollOffsets().left + document.viewport.getWidth()/2 - 150,
					windowManager: iw.Popup.manager
				});
				iw.Popup.window.observe('destroyed', function(){iw.Popup.window=null;})
				iw.Popup.window.show(true).focus();
				iw.Popup.window.setSize(500, 300, true);
				
			
				$$('.black_hud_overlay').first().setStyle({'height':'100%', 'position':'fixed'})
			var elt = iw.ResultArray.find(function(elm){return elm.id == id;});
				
			var arr = $A(eval(elt.images)).compact();	
			var ds = {'image':arr[0], 'year':elt.year, 
					  'manufacturer':elt.manufacturer, 
					  'name':elt.name, 'type':elt.type, 
					  'price':elt.price, 'id':elt.id
					 }
			
			var tpl = eval(rs.responseText);	
			iw.Popup.window.setContent(tpl.evaluate(ds));			
		}
	})
 }
 
 
 iw.Offer.sendForm = 
 function(id)
 {
 	var title  = $('form_title').getValue();
	var fname  = $('form_firstname').getValue();
	var lname  = $('form_lastname').getValue();
	var frname = $('form_firmname').getValue();
	var mail   = $('form_email').getValue();
	var phone  = $('form_phone').getValue();
	var mobile = $('form_mobile').getValue();
	var type = id.indexOf('mch') > -1 ? 0 : 1;
	
	new Ajax.Request('operations.php',
	{
		method:'POST'
		,parameters:{
			'action':'sendOfferForm'
			,'firstname':fname
			,'lastname':lname
			,'email':mail
			,'phone':phone
			,'mobile':mobile
			,'firmname':frname
			,'title':title
			,'id':id
			,'type':type
		}
		,onSuccess:function(rs){
			iw.Popup.window.destroy();
		}
	});
 }
 
 
 
 
 
 
 iw.Slider.run   = 
 function( query )
 {
 	
	$$(query).first().setStyle({'display':'block'});
			
	new PeriodicalExecuter(
	function(pe)
	{
		var elms  = $$(query);
								
		var prev = elms[ (iw.Slider.index) % elms.size() ];
		var next = elms[ (++iw.Slider.index) % elms.size() ];
								 
		Effect.Appear(next.identify());
		Effect.Fade(
			prev.identify(), 
			{   
				duration: 0.5 , 
				afterFinish:function()
				{
				next.setOpacity(0);
				next.setStyle({'display':'block'});
				}
			});
	}, 8);
 }

















 iw.openPopup = 
 function( content )
 {
	if( iw.Popup.manager == null )
		iw.Popup.manager = new UI.WindowManager({ container: 'container' });
	
	if (iw.Popup.window == null) {
		iw.Popup.window = new UI.Window({
			shadow: false,
			theme: "black_hud",
			top:document.viewport.getScrollOffsets().top + document.viewport.getHeight()/2  - 250,
			left:document.viewport.getScrollOffsets().left + document.viewport.getWidth()/2 - 150,
			windowManager: iw.Popup.manager
		});
		iw.Popup.window.observe('destroyed', function(){iw.Popup.window=null;})
		iw.Popup.window.show(true).focus();
		iw.Popup.window.setSize(350, 150, true);
	}
	
	var container = $$(".w .e .content").first().identify();	
	$(container).update(content);	
 }
















 iw.GMap.ready = 
 function( query )
 { 	
	$$( query ).each(
	function(elm)
	{
		elm.onclick = 
		function()
		{	
		
			if( iw.Popup.manager == null )
				iw.Popup.manager = new UI.WindowManager({ container: 'contentLeft' });
			
			if (iw.Popup.window == null) {
				iw.Popup.window = new UI.Window({
					shadow: false,
					theme: "black_hud",
					top: $('content').cumulativeOffset().top - 40,
					left: $('content').cumulativeOffset().left,
					windowManager: iw.Popup.manager
				});
				iw.Popup.window.observe('destroyed', function(){iw.Popup.window=null;})
				iw.Popup.window.show(false).focus();
				iw.Popup.window.setSize(739, 600, true);
			}
			
			var mapID = $$(".w .e .content").first().identify();
			
			var info_ = elm.id.split(",");
			
			if (GBrowserIsCompatible()) {
				var map = new GMap2(document.getElementById(mapID));				
		        map.removeMapType(G_SATELLITE_MAP);
		        map.setCenter(new GLatLng(info_[0],info_[1]), 4);
		        map.addControl(new GLargeMapControl());		 
		        var mapControl = new GMapTypeControl();
		        map.addControl(mapControl);
			        
				var latlng = new GLatLng(info_[0],info_[1]);
				map.addOverlay(new GMarker(latlng));
			}
			else{iw.Popup.window.destroy();}
			return false;
		}
	});
 }
 
 
 
 
 
 
 
 
 
 
 iw.setLanguage =
 function( lng )
 {
 	this.lang = lng;
	$$('.lang').each(function(elm){elm.setOpacity(0.5);})
	$(lng).setOpacity(1);
 }

 
 
 
 
 
 
 
 
 
 iw.Ajax.showIndicator = 
 function( parent )
 {
 	if(parent == null )
		parent = $(document.body);
	if($('iwAjaxIndicator') != null) return;
	
	var img = new Element('img', {'src':this.loaderGif});
	img.id= 'iwAjaxIndicator';
	img.setStyle({'zIndex':'100', 'position':'absolute', 'top':'55%', 'left':'40%'});
	
	parent.insert({
		top: img
	});
 }
 
 iw.Ajax.hideIndicator = 
 function()
 {
	if($('iwAjaxIndicator') == null )
		return false;		
	
	$('iwAjaxIndicator').remove();
 }
 
 
 
 
 
 
 
 
 
 
 iw.Table.createPeripherals = 
 function(parent)
 {
 	var tbody = '';
	
 	iw.ResultArray.each(
	function(elm){		
		tbody += iw.Table.createPeripheralPanel(elm)
	})
 	var table  = "<table width='100%' cellpadding='0' cellspacing='0' border='0' id='dom_result_table'>"
				 + "<tbody>"+tbody+"</tbody>" 
				 +"</table>";
				 	
	parent.update( table );
	
	initLightbox();
 }
 
 
 iw.Table.createPeripheralPanel = 
 function( elt )
 {
 	var links = "";
	var arr = $A(eval(elt.images)).compact();
	arr.each(function(el, index){
		if( index == 0)
			links += '<a id="image'+elt.id+'_'+index+'" rel="lightbox[mando'+elt.id+']" href="data/picture/'+el+'" title="">'
					+'<img style="border:1px solid lightgrey;padding:3px" src="data/picture/thumbs/'+el+'" width="200" height="160" />'
					+'</a>'
					+'<br/><img src="image/add.png" title="" class="add_offer" onclick="iw.Offer.openForm(\''+elt.id+'\', this)">&nbsp;&nbsp;'
					+'<img src="image/print.png" title=""  onclick="window.location.href=\'operations.php?action=printPeripheral&id='+elt.id+'\'">';
		else
			links += '<a id="image'+elt.id+'_'+index+'" rel="lightbox[mando'+elt.id+']" href="data/picture/'+el+'" title="">'
	});
		
	var content =
	'<tr>' 
	+'<td width="30%" valign="top">'
	+ links
	+'</td>'
	+'<td width="70%" valign="top">'
	+ elt['info']
	+'</td>'
	+'</tr>';
	
	return content;	
 } 
 
 
 
 
 
 
 
 
 /*Machines*/ 
 iw.Table.create = 
 function(parent)
 {
 	iw.Table.createTemplates();
 	var header = iw.Table.createHeader();
	var body   = iw.Table.createBody();
 	var table  = "<table width='100%' cellpadding='0' cellspacing='0' border='0' id='dom_result_table'>"
				 + "<thead>"+header+"</thead>"
				 + "<tbody>"+body+"</tbody>" 
				 +"</table>";
				
 	parent.update( table );
	
	initLightbox();
 }
 
 iw.Table.refresh = 
 function()
 {
	var body   = iw.Table.createBody();	
	$$('#dom_result_table tbody').first().update(body);
	initLightbox();
 }
 
 iw.Table.createHeader =
 function(){return iw.Table.headerRowTemplate.evaluate(  iw.Table.headerNames );}
 
 iw.Table.createBody =
 function()
 {
 	var body = "";
	iw.ResultArray.each(function(elm, index){
		elm.myIdx = index % 2;
		body += iw.Table.bodyRowTemplate.evaluate( elm );
		body += iw.Table.addInfoPanelStatic(elm,  iw.Table.myColspan+1);
	});
	return body;
 }
 
 
 iw.Table.myColspan = 0;
 iw.Table.createTemplates = 
 function()
 {
 	var dynamicPartBody   = "";
 	var dynamicPartHeader = "";
		
 	$H(iw.Table.headerNames).each(
	function( elm ){
		dynamicPartBody   += "<td>#{"+elm.key+"}&nbsp;</td>";		
		dynamicPartHeader += "<td id='header_"+elm.key+"' class='table_column_header'><img src='image/no_sort.png' />#{"+elm.key+"}</td>";		
		iw.Table.myColspan++;
	})
 	
	iw.Table.bodyRowTemplate = 
	new Template('<tr id="#{id}" class="row_#{myIdx}">'
				+'<td style="padding-top:5px"><img src="image/info.png" class="info_img"/></td>'
				+ dynamicPartBody+'</tr>');
	
	iw.Table.headerRowTemplate = 
	new Template('<tr>'+'<td>&nbsp;</td>'+ dynamicPartHeader+'</tr>');		
 }

 iw.Table.addInfoPanel = 
 function( id )
 {
 	var elm = $(id).next('tr');
	elm.toggle();
	
	if (elm.visible() ) {
		$$('#'+id+" img").first().writeAttribute('src', "image/down.png");
	}
	else {
		$$('#'+id+" img").first().writeAttribute('src', "image/info.png");
	}
	
 }
 
 
 iw.Table.addInfoPanelStatic = 
 function( elm, colspan )
 {
	 	var panel =  
	 	'<tr style="height:150px" class="info_panel">'
			+'<td colspan="'+ colspan +'">'
				+'<table width="100%" border="0" cellspacing="0" cellpadding="0">'
					+'<tr>'
					+iw.Table.createPanel(elm)
					+'</tr>'
				+'</table>'
			+'</td>'
		+'</tr>';
		
		return panel;
 }
 
 
 iw.Table.createPanel = 
 function( elt )
 {
 	/*
	var elt = 
	iw.ResultArray.find(function(elm){
		return elm.id == id;
	});
	*/
	
	var links = "";
	var content = "";

	elt.images.each(function(el, index){
		if (index == 0) 
		{
			links += '<a id="image' + elt.id + '_' + index + '" rel="lightbox[mando' + elt.id + ']" href="data/picture/' + el + '" title="<b>' + elt.manufacturer + ' ' + elt.type + ', ' + elt.year + '</b>">' +
			'<img style="border:1px solid lightgrey;padding:3px" src="data/picture/thumbs/' +
			el +
			'" width="200" height="160" />' +
			'</a>' +
			'<br/><img src="image/add.png" class="add_offer" onclick="iw.Offer.openForm(\'' +
			elt.id +
			'\', this)">&nbsp;&nbsp;' +
			'<img src="image/print.png" title=""  onclick="window.location.href=\'operations.php?action=printMachine&id=' +
			elt.id +
			'\'">';
		}
		else 
			links += '<a id="image' + elt.id + '_' + index + '" rel="lightbox[mando' + elt.id + ']" href="data/picture/' + el + '" title="<b>' + elt.manufacturer + ' ' + elt.type + ', ' + elt.year + '</b>">'
			
	});
	
	var existInfoProp = false;
	var infoPropGiven = true;
	
	$H(iw.Table.criterias).each(
	function(elm, index)
	{		
		if( elm.key=="info" )
		{			
			existInfoProp = true;
			if( elt["info"] == undefined || elt["info"] == '')
				infoPropGiven = false;
			return;
		}
		
		if( elt[elm.key] != undefined && elt[elm.key]!='')
			content += "<tr><td width='35%'><b>"+elm.value+"&nbsp;</b></td><td>: "+(elt[elm.key]!=undefined ?elt[elm.key]:"")+"&nbsp;</td></tr>";
	});

	if( existInfoProp && infoPropGiven)
		content += "<tr class='infoBlock'><td colspan='4'><b>Info&nbsp;</b></td></tr><tr><td colspan='4'>"+elt["info"]+"</td></tr>";
	
	content = 
	'<td width="30%">'
	+ links
	+'</td>'
	+'<td width="70%" valign="top">'
		+'<table class="machine_features" width="100%" border="0" cellspacing="0" cellpadding="0">'
			+content
		+'</table>'
	+'</td>';
	
	return content;	
 }

 iw.Table.sort = 
 function(column, elm)
 {	
 	$$('.table_column_header img').invoke('writeAttribute','src','image/no_sort.png')
	iw.ResultArray = iw.ResultArray.sortBy(
	function(elm){
		if(!isNaN(parseInt(elm[column])))
			return parseInt(elm[column]);
		else return elm[column]
	}); 
 	if (elm.sorted) {
		iw.ResultArray.reverse();
		elm.sorted = false;
		elm.select('img').invoke('writeAttribute','src','image/up_sort.png')
	}
	else {
		elm.sorted = true;
		elm.select('img').invoke('writeAttribute','src','image/down_sort.png')
	}
 }
 
 
 

 iw.NewsLetter.save = 
 function()
 { 	
	if( $('newsletter').getValue() == $('newsletter').originalValue ) return;
	
	new Ajax.Request('operations.php',
	{	method:'POST',
		parameters:{'action':'saveNewsletter', 'email':$('newsletter').getValue()},
		onSuccess:function(rs)
		{
			$('newsletter_result').innerHTML = rs.responseText;
			new Effect.Highlight('newsletter_result',{duration:5,afterFinish:function(){$('newsletter_result').innerHTML = ""}});
		}
	});	
 }

