﻿/*=========================================================================
|
|	file:			bkh.js
|	site:			www.bulgarische-kinderheime.de
|	descr:		JS-Sammlung
|	version:	1.2 - 2008/02/28 22:51
|
|	------------------------------------------------------------------------
|
|	author:			Christoph Schüßler
|	author url:	http://herr-schuessler.de
|
==========================================================================*/


/* 
|
|	unmask e-mail-addresses
|
--------------------------------------------------------------------------*/

function noSpamLink(name,domain,tld,id) {
	var link = '<a href="mailto:' + name + '@' + domain + '.' + tld + '">' + name + '@' + domain + '.' + tld +'</a>';
	document.getElementById(id).innerHTML = link;
}

/* 
|
|	turn off image flicker in ie6
| see http://www.mister-pixel.com/#Content__state=is_that_simple
--------------------------------------------------------------------------*/
try {
  document.execCommand("BackgroundImageCache", false, true);
} catch(err) {}


/* 
|
|	ajax form processing
| 
--------------------------------------------------------------------------*/
var carousel;

window.addEvent('domready', function(){
	
    if ($('carousel') != undefined) {
        carousel = new Fx.Scroll.Carousel('carousel', {
            mode: 'horizontal'
        });
        $('car-next').addEvent('click', function(){
            carousel.toNext();
        });
    }
    
	//if there is an ajaxForm
	if ($('ajaxForm') != undefined) {
		
		//preload images
		ajaxPreloads = new Object();
		ajaxPreloads[0] = new Image(); ajaxPreloads[0].src = "http://bulgarische-kinderheime.de/gfx/bg-opac-70.png";
		ajaxPreloads[1] = new Image(); ajaxPreloads[1].src = "http://bulgarische-kinderheime.de/gfx/ajax-loader.gif";
	
		//add behaviour
		$('ajaxForm').addEvent('submit', function(e) {
		
			// stop form from reloading window
			new Event(e).stop();
			
			//create div #systemResponse
			if($('systemResponse') == undefined) {
				var systemResponse = document.createElement("div");
				systemResponse.id = 'systemResponse';
				$('ajaxForm').insertBefore(systemResponse,$('ajaxForm').firstChild);
			}
			else {
				var systemResponse = $('systemResponse');
				systemResponse.innerHTML = '';
			}
		
			// add loading gfx
			$('systemResponse').addClass('ajax-loading');
			var loader =  document.createElement("img");		
			loader.src = 'http://bulgarische-kinderheime.de/gfx/ajax-loader.gif';
			$('systemResponse').appendChild(loader);
			
			window.location = '#systemResponse';
			
			//identify check-field
			var systemResponseChecked 				= $('form-checked');
		    
            var myRequest = new Request({
                url: this.action,
                onSuccess: function(responseText, responseXML) {
                    
                    //process xml-reply
                    var responseType                = responseXML.getElementsByTagName('response')[0].getAttribute('type');
                    var responseTarget              = responseXML.getElementsByTagName('response')[0].getAttribute('target');
                    
                    //IE doesn't recognize XML as what it is, so we better check for its stupidity
                    if(responseXML.getElementsByTagName('responseHTML')[0].textContent) {
                        var responseHTML = responseXML.getElementsByTagName('responseHTML')[0].textContent;
                    }
                    else {
                        var responseHTML = responseXML.getElementsByTagName('responseHTML')[0].text;
                    }
                                
                    var systemResponseDiv           = document.createElement("div");
                    var systemResponseCloseButton   = document.createElement("p");
                    var systemResponseCloseButtonA  = document.createElement("a");
                    
                    //since IE7 doesn't recognize the DOM-Elements yet, detour has to be made by calling these elements by their IDs
                    systemResponseDiv.id            = 'systemResponseDiv';
                    systemResponseCloseButton.id    = 'systemResponseCloseButton';  
                    systemResponseCloseButtonA.id   = 'systemResponseCloseButtonA';
                    
                    //insert Overlay in DOM
                    $('systemResponse').appendChild(systemResponseDiv);
                    
                    //Insert System Response Text in Overlay
                    systemResponseDiv.innerHTML             = responseHTML;
                    
                    //Add Close Button
                    $('systemResponseDiv').appendChild(systemResponseCloseButton);
                    $('systemResponseCloseButton').appendChild(systemResponseCloseButtonA);
                    systemResponseCloseButtonA.href = 'index.html';
                    
                    //Add Styles
                    $('systemResponseDiv').addClass('systemResponseStart');
                    $('systemResponseCloseButton').addClass('button-link');
                    
                    //close button should close systemResponse, not reload page
                    $('systemResponseCloseButtonA').addEvent('click', function(e) { 
                        new Event(e).stop();
                        $('ajaxForm').removeChild(systemResponse);
                        systemResponseChecked.setAttribute('value', 'false');
                    });
                    
                    //reset labels
                    var labels  = document.getElementsByTagName('label');
                    for(j=0; j<labels.length; j++) {
                        if(labels[j].parentNode.className.match('missing')) {
                            labels[j].parentNode.removeClass('missing');
                        }
                    }

                    //do stuff for error, check or success
                    if(responseType == 'neg') {
                        
                            systemResponseCloseButtonA.innerHTML = 'weiter &raquo;&raquo;';
                            
                            //mark missing form fields
                            var errors  = responseXML.getElementsByTagName('errors')[0].getElementsByTagName('error');
                            var labels  = document.getElementsByTagName('label');
                            
                            for(i=0; i<errors.length; i++) {
                                for(j=0; j<labels.length; j++) {
                                    if(errors[i].textContent) {
                                        if(labels[j].htmlFor == errors[i].textContent) {
                                            labels[j].parentNode.addClass('missing');
                                        }
                                    }
                                    else {
                                        if(labels[j].htmlFor == errors[i].text) {
                                            //Another IE detour...
                                            labels[j].parentNode.id = 'labcon' + j;
                                            $('labcon'+j).addClass('missing');
                                        }
                                    }
                                }
                            }
                            
                    } else if(responseType == 'check') {
                        
                            //list name-value-pairs in a table
                            var checks                  = responseXML.getElementsByTagName('checks')[0].getElementsByTagName('check');
                            
                            //DOM
                            var systemResponseCheckContainer    = document.createElement("div");
                            var systemResponseSubmitButton          = document.createElement('input');
                            systemResponseSubmitButton.setAttribute('type', 'submit');  
                            
                            systemResponseCheckContainer.id         = 'systemResponseCheckContainer';
                            systemResponseSubmitButton.id           = 'systemResponseSubmitButton';
                            
                            systemResponseDiv.appendChild(systemResponseCheckContainer);
                            
                            for(i=0; i<checks.length; i++) {
                                
                                var checkDiv  = document.createElement("div");
                                var checkName  = document.createElement("span");
                                var checkValue  = document.createElement("span");
                                
                                checkName.innerHTML = checks[i].getAttribute('name');
                                
                                if(checks[i].textContent) {
                                    checkValue.innerHTML = checks[i].textContent;
                                }
                                else {
                                    checkValue.innerHTML = checks[i].text;
                                }

                                systemResponseCheckContainer.appendChild(checkDiv);
                                checkDiv.appendChild(checkName);
                                checkDiv.appendChild(checkValue);
                                
                                if(i % 2 != 0) {
                                    checkDiv.id = 'checkDiv' + i;
                                    $('checkDiv' + i).addClass('odd');
                                }
                                else {
                                    checkDiv.id = 'checkDiv' + i;
                                    $('checkDiv' + i).addClass('even');
                                }
                                checkName.id = 'checkName' + i;
                                $('checkName' + i).addClass('checkName');
                                checkValue.id = 'checkValue' + i;
                                $('checkValue' + i).addClass('checkValue');
                                
                            }
                            
                            systemResponseDiv.appendChild(systemResponseSubmitButton);
                            systemResponseDiv.appendChild(systemResponseCloseButton);
                            
                            $('systemResponseCheckContainer').addClass('check-table');
                            $('systemResponseSubmitButton').addClass('button-link');

                            systemResponseChecked.setAttribute('value', 'true');
                            systemResponseCloseButtonA.innerHTML = 'Ich möchte die Angaben verändern&hellip;';
                            systemResponseSubmitButton.setAttribute('value', 'Die Angaben sind korrekt!');

                    }
                    
                    else if(responseType == 'pos') {
                        
                            systemResponseCloseButtonA.innerHTML = 'OK!';
                            //reset form
                            $('ajaxForm').reset();
                            $$('#ajaxForm .checkboxAreaChecked').removeClass('checkboxAreaChecked').addClass('checkboxArea');
                    }

                    
                    //clean up html
                    $('systemResponse').removeClass('ajax-loading');
                    $('systemResponse').removeChild(loader);
                    
                    // start morph that inserts neg or pos class
                    var myMorph = new Fx.Morph(systemResponseDiv, {wait: false, duration: 500});
                    myMorph.start(responseType);                    
                        
                }
            });
            
			// send form content
			myRequest.send({
                data: this.toQueryString()			
			});
		});
	}
});


