/**
 * --------------------------------------------------------------------
 * jQuery-Plugin "pngFix"
 * Version: 1.2, 09.03.2009
 * by Andreas Eberhard, andreas.eberhard@gmail.com
 *                      http://jquery.andreaseberhard.de/
 *
 * Copyright (c) 2007 Andreas Eberhard
 * Licensed under GPL (http://www.opensource.org/licenses/gpl-license.php)
 *
 * Changelog:
 *    09.03.2009 Version 1.2
 *    - Update for jQuery 1.3.x, removed @ from selectors
 *    11.09.2007 Version 1.1
 *    - removed noConflict
 *    - added png-support for input type=image
 *    - 01.08.2007 CSS background-image support extension added by Scott Jehl, scott@filamentgroup.com, http://www.filamentgroup.com
 *    31.05.2007 initial Version 1.0
 * --------------------------------------------------------------------
 * @example $(function(){$(document).pngFix();});
 * @desc Fixes all PNG's in the document on document.ready
 *
 * jQuery(function(){jQuery(document).pngFix();});
 * @desc Fixes all PNG's in the document on document.ready when using noConflict
 *
 * @example $(function(){$('div.examples').pngFix();});
 * @desc Fixes all PNG's within div with class examples
 *
 * @example $(function(){$('div.examples').pngFix( { blankgif:'ext.gif' } );});
 * @desc Fixes all PNG's within div with class examples, provides blank gif for input with png
 * --------------------------------------------------------------------
 */

(function ($) {

	jQuery.fn.pngFix = function (settings) {

		// Settings
		settings = jQuery.extend({
			blankgif: 'blank.gif'
		}, settings);

		var ie55 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 5.5") != -1);
		var ie6 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 6.0") != -1);

		if (jQuery.browser.msie && (ie55 || ie6)) {

			//fix images with png-source
			jQuery(this).find("img[src$=.png]").each(function () {

				jQuery(this).attr('width', jQuery(this).width());
				jQuery(this).attr('height', jQuery(this).height());

				var prevStyle = '';
				var strNewHTML = '';
				var imgId = (jQuery(this).attr('id')) ? 'id="' + jQuery(this).attr('id') + '" ' : '';
				var imgClass = (jQuery(this).attr('class')) ? 'class="' + jQuery(this).attr('class') + '" ' : '';
				var imgTitle = (jQuery(this).attr('title')) ? 'title="' + jQuery(this).attr('title') + '" ' : '';
				var imgAlt = (jQuery(this).attr('alt')) ? 'alt="' + jQuery(this).attr('alt') + '" ' : '';
				var imgAlign = (jQuery(this).attr('align')) ? 'float:' + jQuery(this).attr('align') + ';' : '';
				var imgHand = (jQuery(this).parent().attr('href')) ? 'cursor:hand;' : '';
				if (this.style.border) {
					prevStyle += 'border:' + this.style.border + ';';
					this.style.border = '';
				}
				if (this.style.padding) {
					prevStyle += 'padding:' + this.style.padding + ';';
					this.style.padding = '';
				}
				if (this.style.margin) {
					prevStyle += 'margin:' + this.style.margin + ';';
					this.style.margin = '';
				}
				var imgStyle = (this.style.cssText);

				strNewHTML += '<span ' + imgId + imgClass + imgTitle + imgAlt;
				strNewHTML += 'style="position:relative;white-space:pre-line;display:inline-block;background:transparent;' + imgAlign + imgHand;
				strNewHTML += 'width:' + jQuery(this).width() + 'px;' + 'height:' + jQuery(this).height() + 'px;';
				strNewHTML += 'filter:progid:DXImageTransform.Microsoft.AlphaImageLoader' + '(src=\'' + jQuery(this).attr('src') + '\', sizingMethod=\'scale\');';
				strNewHTML += imgStyle + '"></span>';
				if (prevStyle != '') {
					strNewHTML = '<span style="position:relative;display:inline-block;' + prevStyle + imgHand + 'width:' + jQuery(this).width() + 'px;' + 'height:' + jQuery(this).height() + 'px;' + '">' + strNewHTML + '</span>';
				}

				jQuery(this).hide();
				jQuery(this).after(strNewHTML);

			});

			// fix css background pngs
			jQuery(this).find("*").each(function () {
				var bgIMG = jQuery(this).css('background-image');
				if (bgIMG.indexOf(".png") != -1) {
					var iebg = bgIMG.split('url("')[1].split('")')[0];
					jQuery(this).css('background-image', 'none');
					jQuery(this).get(0).runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + iebg + "',sizingMethod='scale')";
				}
			});

			//fix input with png-source
			jQuery(this).find("input[src$=.png]").each(function () {
				var bgIMG = jQuery(this).attr('src');
				jQuery(this).get(0).runtimeStyle.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader' + '(src=\'' + bgIMG + '\', sizingMethod=\'scale\');';
				jQuery(this).attr('src', settings.blankgif)
			});

		}

		return jQuery;
	};
})(jQuery);

String.prototype.getSplitPart = function (part, spl) {
	spl = (spl != null && spl.length > 0) ? spl : '_';
	var str = this.split(spl);
	return str[part]
};

String.prototype.startsWith = function (str) {
	return (this.lastIndexOf(str, 0) === 0);
};

String.prototype.addslashes = function () {
	var str = this;
	str = str.replace(/\\/g, '\\\\');
	str = str.replace(/\'/g, '\\\'');
	str = str.replace(/\"/g, '\\"');
	str = str.replace(/\0/g, '\\0');

	return str;
};

Array.prototype.findIndex = function (value) {
	var ctr = "";
	for (var i = 0; i < this.length; i++) {
		// use === to check for Matches. ie., identical (===), ;
		if (this[i] == value) {
			return i;
		}
	}
	return ctr;
};

Array.prototype.in_array = function (ele) {
	for (var p = 0; p < this.length; p++) if (ele == this[p]) return true;
	return false
};

Array.prototype.foreach = function (callback) {
	for (var k = 0; k < this.length; k++) {
		callback(this[k]);
	}
};

/*
 AJAX Queuing
 */
var currentAjaxRequest = null;

jQuery.ajaxQ = function (opt) {
	var su = opt.success;
	var er = opt.error;
	var co = opt.complete;

	opt.success = function () {
		if (su) {
			try {
				su.apply(this, arguments);
			} catch (e) {
			}
		}
	};
	opt.error = function () {
		if (er) {
			try {
				er.apply(this, arguments);
			} catch (e) {
			}
		}
	};
	opt.complete = function () {
		if (co) {
			try {
				co.apply(this, arguments);
			} catch (e) {
			}
		}
		currentAjaxRequest = null;
		$(window).dequeue("ajax");
	};

	$(window).queue("ajax", function () {
		currentAjaxRequest = jQuery.ajax(opt);
	});

	if (currentAjaxRequest === null) {
		$(window).dequeue("ajax");
	}
};
/*
 ENDE AJAX Queuing
 */

function _log(msg) {
	console.log(new Date().getTime() + ' ' + msg);

	if (typeof msg == 'object') {
		console.log(msg);
	}
}

var _prefix = 'fk_';

var FK = {
    init: function () {
		FK.page.pageid = FK.fct.get_hash('body');

		$.ajaxSetup({
			type: 'post',
			url: "/fahrerkonzept/ajax/"
        });

		// hide all hidden objects
		$('.hidden').hide().removeClass('hidden');
        $('.error').hide();

		// initialize the pages
		switch (FK.page.pageid) {
        case 'lehrgang':
          		FK.page.kontakt.init();
                break;
            case 'kontakt':
          		FK.page.kontakt.init();
                break;
                
        case 'lehrgaenge':
                FK.page.lehrgaenge.init();
                break;
		  case 'fahrerkontakt':
          		FK.page.kontakt.init();
                break;
		  case 'kundenkontakt':
          		FK.page.kontakt.init();
                break;
		  case 'jobs':
          		FK.page.jobs.init();
                break;
			case 'cmsevents':
				FK.page.cmsevents.init();
				break;
			case 'cmsdownloads':
				FK.page.cmsdownloads.init();
				break;
			case 'cmscontent':
				FK.page.cmscontent.init();
				break;
			case 'cmsnews':
				FK.page.cmsnews.init();
				break;
			case 'cmstrain':
				FK.page.cmstrain.init();
				break;
            case 'kundenkontakt':
				FK.page.kundenkontakt.init();
				break;
			default:
				break;
		}
    },

	fct: {
		get_hash: function (ele) {
			var str = $(ele).attr('id');
			return str.getSplitPart(1, '_');
		}
	},

	page: {
		pageid: null,
        jobs:{
            init: function(){
                $('.joblink', '#jobslist').bind('click', function(e){
                    e.preventDefault();
                    var test = $('.jobtext', $(this).parent().parent());
                    var shown = !test.is(':hidden');
                    
                    $('.joblink', '#jobslist').html('Details anzeigen'); 
                    
                    if (shown) 
                    {
                        $('.jobtext').slideUp();           
                    }
                    else
                    {
                        $('.jobtext').not(test).slideUp();
                        test.slideDown();
                        $(this).html('Details verbergen');
                    }
                });
            }
        },
        
        lehrgaenge: {
            init: function() {
                $('.coursedetails').bind('click', function(e){
                   e.preventDefault();

                    var parent = $(this).parent().parent();
                    

                    
                    var text = '';
                    
                    if ($(this).html() == 'Details anzeigen')
                    {
                        text = 'Details ausblenden';
                                            $('.coursetext', parent).slideDown();
                    }
                    else
                    {
                        text = 'Details anzeigen';                    $('.coursetext', parent).slideUp();
                    }
                    
                    $(this).html(text);
                    
                });
            }            
        },
        kontakt:{
            init: function(){
                $('#submit').bind('click', function(e){
                    var counter = 0;
                    _log($('.required', '#commentForm').length);
                    $('.required', '#commentForm').each(function(e){
                        var parent = $(this).parent();

                        if ($(this).attr('type') == 'text')
                        {
                            var length = $(this).val().length;
                            var trigger = (length < 3) ? 1 : 0;
                        }
                        else
                        {
                            var trigger = $(this).is(':checked') ? 0 : 1;
                        }
                        
                        if (trigger)
                        {
                            $('.error', parent).show();
                            counter++;
                        }
                        else
                        {
                            $('.error', parent).hide();
                        }
                    });
                    
                    if (counter > 0)
                    {
                        e.preventDefault();
                    }
                    else
                    {
                        return true;
                    }
                });
            }
        },
        cmstrain:{
            init: function(){
                var button = $('#trainfile');
                var list = $('#filelist');
                var hash = $('#trainhash').html();
                
                
                $('.filelink',list).live('click', function(e){
                   e.preventDefault();
                   
                   var id = FK.fct.get_hash(this);
                   
                   
                   if (confirm('sicher?'))
                   {
                        $.ajaxQ({
    						data: {
    							mode: 'traindelete',
    							phash: id,
                                thash: hash
    						},
    						success: function (msg) {
                                $('#file_'+id).parent().remove();
    						}
    					});
                   }
                });
                
                
                var options = {
                    action: '/fahrerkonzept/ajax/',
                    name: 'userfile',
                    autoSubmit: true,
                    data: {
                        type : 'downloads',
                        mode: 'trainupload',
                        phash: hash
                    },
                    onSubmit: function(file, response) {
                          $('#output').addClass('isloading').html('<br /><br />');
                    },
                    onComplete: function(file, response) {
                        if (response != 'error')
                        {                            var fileinfos = response.split('###');
                            
                            var html = '<a href="#!" id="file_'+fileinfos[1]+'" class="filelink">löschen</a>&nbsp;&nbsp;||&nbsp;&nbsp;<a href="/content/downloads/'+hash+'/'+fileinfos[0]+'" target="_blank">'+fileinfos[0]+'</a>';
                            
                            $('<li />').html(html).appendTo(list);

                            $('.empty', list).remove();                     
                            
                            $('#output').addClass('b').html('<br clear="all" />Die Datei wurde hochgeladen.');                                        
                        }                               
                        else
                        {
                            alert('es ist ein Fehler aufgetreten');
                        }     
                        $('#output').removeClass('isloading');
                    }
                };

                if (button.length > 0) new AjaxUpload('trainfile', options);
                
                $('#delpicture').bind('click', function(e){
                    e.preventDefault();
                    
                    if (confirm('sicher?'))
                    {
                        $('#picture').val('');
                        $('#output').addClass('b').html('<br clear="all" />Das Bild wurde entfernt. Klicken Sie unten auf Aktualisieren bzw. Eintragen, um es endgültig zu entfernen.');
                        $('#delpicture').remove();
                    }
                });
                
                $('.filter').bind('change', function(e){
                    e.preventDefault();
                    
                    var place = $("input[name='category']:checked").val();
                    
                    $('.train', '#newslist').hide();

                    if (place == 0)
                    {
                        $('.train', '#newslist').slideDown();
                    }
                    else
                    {
                        $('.cat_'+place, '#newslist').slideDown();
                    }

                }).trigger('change');
            }
        },
        cmsdownloads:{
          init: function()
          {
  
                $('.filter').bind('change', function(e){
                    e.preventDefault();
                    
                    var place = $("input[name='category']:checked").val();
                    
                    $('.train', '#newslist').hide();

                    if (place == 0)
                    {
                        $('.train', '#newslist').slideDown();
                    }
                    else
                    {
                        $('.cat_'+place, '#newslist').slideDown();
                    }

                }).trigger('change');
          }  
        },
        cmsevents:{
            init: function(){
                
                $('.datedeletelink').live('click', function(e){
                   if (confirm('sicher?'))
                   {
                        return true
                   }
                });
                
                
                $('.filter').bind('change', function(e){
                    e.preventDefault();
                    
                    $('.event', '#newslist').hide()
                    
                    var place = $("input[name='place']:checked").val();
                    var onlynew = $("input[name='onlynew']:checked").val();
                    
                    var insert = '.new';
                    if (onlynew == 1)
                    {
                        insert = '.old';
                    }
                    
                    var show = '.event';
                  
                    if (place > 0)
                    {
                        show = '.event_'+place;
                    }
                    
                    show= show+':not('+insert+')';
                    $(show, '#newslist').slideDown();                    

                }).trigger('change');
                
                $('#courseondemand').bind('change', function(e){
                    if ($(this).attr('checked'))
                    {
                        $('.coursedate').slideUp();
                    }
                    else
                    {
                        $('.coursedate').slideDown();
                    }
                }).trigger('change');
            }
        },
        cmscontent:{
            init: function(){
                var button = $('#contentfile');
                var options = {
                                action: '/fahrerkonzept/ajax/',
                                name: 'userfile',
                                autoSubmit: true,
                                data: {
                                    type : 'content',
                                    mode: 'fileupload'
                                },
                                onSubmit: function(file, response) {
                                      $('#output').addClass('isloading');
                                },
                                onComplete: function(file, response) {
                                    if (response != 'error')
                                    {
                                        $('#picture').val(response);
                                        $('#output').addClass('b').html('<br clear="all" />Das Bild wurde hochgeladen. Klicken Sie unten auf Aktualisieren bzw. Eintragen, um es dem Artikel hinzuzufügen.');                                        
                                    }                               
                                    else
                                    {
                                        alert('es ist ein Fehler aufgetreten');
                                    }     
                                    $('#output').removeClass('isloading');
                                }
                };

                if (button.length > 0) new AjaxUpload('contentfile', options);
                
                $('#delpicture').bind('click', function(e){
                    e.preventDefault();
                    
                    if (confirm('sicher?'))
                    {
                        $('#picture').val('');
                        $('#output').addClass('b').html('<br clear="all" />Das Bild wurde entfernt. Klicken Sie unten auf Aktualisieren bzw. Eintragen, um es endgültig zu entfernen.');
                        $('#delpicture').remove();
                    }
                });
            }
        },
        cmsnews:{
            init: function(){
                var button = $('#newsfile');
                var options = {
                                action: '/fahrerkonzept/ajax/',
                                name: 'userfile',
                                autoSubmit: true,
                                data: {
                                    type : 'news',
                                    mode: 'fileupload'
                                },
                                onSubmit: function(file, response) {
                                      $('#output').addClass('isloading');
                                },
                                onComplete: function(file, response) {
                                    if (response != 'error')
                                    {
                                        $('#picture').val(response);
                                        $('#output').addClass('b').html('<br clear="all" />Das Bild wurde hochgeladen. Klicken Sie unten auf Aktualisieren bzw. Eintragen, um es dem Artikel hinzuzufügen.');                                        
                                    }                               
                                    else
                                    {
                                        alert('es ist ein Fehler aufgetreten');
                                    }
                                     $('#output').removeClass('isloading'); 
                                }
                };

                if (button.length > 0) new AjaxUpload('newsfile', options);
                
                $('#delpicture').bind('click', function(e){
                    e.preventDefault();
                    
                    if (confirm('sicher?'))
                    {
                        $('#picture').val('');
                        $('#output').addClass('b').html('<br clear="all" />Das Bild wurde entfernt. Klicken Sie unten auf Aktualisieren bzw. Eintragen, um es endgültig zu entfernen.');
                        $('#delpicture').remove();
                    }
                });
            }
        },
		kundenkontakt: {
			init: function () {
                
			}
		}
	},

	user: {
		init : function() {
		}
	},

	language: {
		de : {
		}
	}
}
	;


