/**
 * accordion for middle block, lightbox
 * selfmade
 * 
 * @author Marco Sanna
 */

/**
 * make the accordion a real one using
 * jquery. happens on dom-loaded.
 */ 
jQuery(document).ready(function(){
    $('.accordion').accordion({autoHeight: false, clearStyle: true});
    $('.overlayBG').fadeTo(500, 0);
    $('.preloader').fadeTo(500, 0);
    $('.contactFormWrapper').fadeTo(500, 0);
    $('.overlayForm').fadeTo(500, 0);
    //hover on btnclose
    $(".btnClose").hover(
      function () {
        $(this).toggleClass("btnCloseOver");
      }, 
      function () {
        $(this).toggleClass("btnCloseOver");
      }
    );  
    //hover on btnsend
    $(".btnSend").hover(
      function () {
        $(this).toggleClass("btnSendOver");
      }, 
      function () {
        $(this).toggleClass("btnSendOver");
      }
    );    
});

/**
 * jquery center helper
 */
jQuery.fn.center = function (absolute) {
	return this.each(function () {
		var t = jQuery(this);

		t.css({
			position:	absolute ? 'absolute' : 'fixed', 
			left:		'50%', 
			top:		'50%', 
			zIndex:		'99'
		}).css({
			marginLeft:	'-' + (t.outerWidth() / 2) + 'px', 
			marginTop:	'-' + (t.outerHeight() / 2) + 'px'
		});

		if (absolute) {
			t.css({
				marginTop:	parseInt(t.css('marginTop'), 10) + jQuery(window).scrollTop(), 
				marginLeft:	parseInt(t.css('marginLeft'), 10) + jQuery(window).scrollLeft()
			});
		}
		
		// is ie?
		if (!jQuery.support.boxModel) {
		    t.css({
		        position: 'absolute',
		        top:   ((jQuery(window).height() - t.outerHeight()) / 2) + "px",
		        left:  ((jQuery(window).width() - t.outerWidth()) / 2) + "px"}).css({
    		        marginLeft: '0px',
    		        marginRight: '0px',
    		        marginTop: '0px',
    		        marginBottom: '0px'
		    });
		}
	});
};

/**
 * display the contact form in a lightbox
 */
function displayContactForm() {
    $('.overlayBG').css({height: jQuery(document).height() + "px"});
    $('.contactFormWrapper').center();
    $('.overlayBG').css({'visibility':'visible'});
    $('.contactFormWrapper').css({'visibility':'visible'});
    $('.overlayBG').fadeTo(500, 0.6);
    $('.contactFormWrapper').fadeTo(500, 1);
}

/**
 * hide the contact form
 */
function hideContactForm() {
    $('.overlayBG').fadeTo(500, 0, hideComplete);
    $('.contactFormWrapper').fadeTo(500, 0);  
    $('.overlayForm').fadeTo(500, 0); 
    $('.preloader').fadeTo(500, 0);   
    $('.thanks').fadeTo(500, 0);     
}

/**
 * completely hide the elements, so 
 * no one can click on them.
 */
function hideComplete() {
    $('.overlayBG').css({'visibility':'hidden'});
    $('.contactFormWrapper').css({'visibility':'hidden'});  
    $('.overlayForm').css({'visibility':'hidden'});   
    $('.preloader').css({visibility: "hidden"});
    $('.thanks').css({visibility: "hidden"});
}

/**
 * send the form to a script, display loading
 */
function sendForm() {
    if (checkForm()) {
        //show loading, disable form
        $('.overlayForm').css({visibility: "visible"});
        $('.overlayForm').fadeTo(500, 0.8);
        //position that overlay
        $('.overlayForm').center();
        $('.overlayForm').css({marginTop: (parseInt($('.overlayForm').css('marginTop'), 10) + 12) + "px"});
        //display loading
        $('.preloader').css({visibility: "visible"});
        $('.preloader').center();
        $('.preloader').fadeTo(500, 1);
        //now send the form
        data = {
            anrede:             $('#herr:checked').val() == "herr" ? "Herr" : "Frau",
            firma:              convertHtml($('#firma').val()),
            ressort:            convertHtml($('#ressort').val()),
            position:           convertHtml($('#position').val()),
            vorname:            convertHtml($('#vorname').val()),
            nachname:           convertHtml($('#nachname').val()),
            telefon:            convertHtml($('#telefon').val()),
            fax:                convertHtml($('#fax').val()),
            email:              convertHtml($('#email').val()),
            nachricht:          convertHtml($('#nachricht').val()),
            mobilfunk:          $('#mobilfunk:checked').val(),
            festnetz:           $('#festnetz:checked').val(),
            datendienste:       $('#datendienste:checked').val(),
            it_services:        $('#it_services:checked').val(),
            anzahl_mobil:       convertHtml($('#anzahl_mobil').val()),
            kosten_mobil:       convertHtml($('#kosten_mobil').val()),
            kosten_festnetz:    convertHtml($('#kosten_festnetz').val()),
            kosten_internet:    convertHtml($('#kosten_internet').val()),
            anbieter_internet:  convertHtml($('#anbieter_internet').val()),
            budget_it:          convertHtml($('#budget_it').val()),
            keyword:            convertHtml($('#keyword').val())
        };
        $.get("send.php", data, callback);
    } 
}

/**
 * adds slashes and so on
 */
function convertHtml(conv) {
    return conv.replace('"', '\\"');
}

/**
 * form sent, return message
 */
function callback(data) {
    //check return value
    var ret = eval('(' + data + ')');
    if (ret.info == "ok") {
        $('.thanks').css({visibility: "visible"});
        $('.thanks').fadeTo(500, 1);
        $('.thanks').center();
        //remove eventual errors
        $('#firma_txt').removeClass('required');
        $('#vorname_txt').removeClass('required');
        $('#nachname_txt').removeClass('required');
        $('#email_txt').removeClass('required');
    } else {
        //display the errors
        for (var i = 0; i < ret.errors.length; i++) {
            $(ret.errors[i]).addClass('required');
        }
        //hide the overlay
        $('.overlayForm').fadeTo(500, 0, function() {$('.overlayForm').css({visibility: "hidden"})});
    }
    //hide preloader
    $('.preloader').fadeTo(500, 0, function(){$('.preloader').css({visibility: "hidden"})});
}

/**
 * validate form fields on the required fields
 * which is name, surname, email and company
 */
function checkForm() {
    returnValue = true;
    if ($('#firma').val().length == 0) {
        $('#firma_txt').addClass('required');
        returnValue = false;
    } else {
        $('#firma_txt').removeClass('required');    
    }
    if ($('#email').val().length == 0 || !isValidEmailAddress($('#email').val())) {
        returnValue = false;
        $('#email_txt').addClass('required');
    }else {
        $('#email_txt').removeClass('required');  
    }
    if ($('#vorname').val().length == 0) {
        returnValue = false;
        $('#vorname_txt').addClass('required');
    }else {
        $('#vorname_txt').removeClass('required');  
    }
    if ($('#nachname').val().length == 0) {
        returnValue = false;
        $('#nachname_txt').addClass('required');
    }else {
        $('#nachname_txt').removeClass('required');   
    }
    return returnValue;
}

/**
 * check for valid email-adress
 */
function isValidEmailAddress(emailAddress) {
    var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
    return pattern.test(emailAddress);
}
