$(document).ready(function(){

	/*Tag-Cloud öffnen/schließen*/
	$('.tagCloud .opener').click(function(){
		if ($(this).parents('.tagCloud').hasClass('open')){
			$(this).parents('.tagCloud').removeClass('open');
		}
		else {
			$(this).parents('.tagCloud').addClass('open');
		}
	});

// empty on click
$("input:text, textarea").focus(function(){
    if(typeof ($(this).attr('default')) == 'undefined' || $(this).val() == $(this).attr('default')){
        $(this).attr('default',$(this).val());
        $(this).val('');
    }
}).blur(function(){
    var newValue = $(this).val();
    if (newValue == '') {
        var myVal = $(this).attr('default');
        $(this).val(myVal);
    }
});


    workWithRegions.setEventsForDocumentReady();
    workWithStage.slideNavigationContent();
    workWithTabs.adjustTabs();
    window.show_region   = false;
    window.show_language = false;
    window.show_search   = false;
    window.shaderM = 0;
    $('#shader').css({'width':$(document).width(),'height':$(document).height()});
    $('#shader2').css({'width':$(document).width(),'height':$(document).height()});

    $('.outerLI').click(function(){
        if(!$(this).hasClass('active')){
            $('.innerUL').slideUp();
            $(this).find('.innerUL').slideDown();
        }

            var id = $(this).find('.innerUL li:first').attr('id').split('_');
            workWithStage.switchNavigationContent(id[2],'auto');
            clearInterval(window.stageTimers_itemSlide);
            workWithStage.slideNavigationContent(0);
    });

    $('a').click(function(){
        window.ajaxItem = this;
    });

    $('#tabsNews').pager('li');
//    $('#tabsNews').pager('li');

    $('#tabsEvents').pager('li', {
        navId: 'pager2'
    });

//    $('#tabsUser').pager('li', {
//        navId: 'pager3'
//    });

    $("body").ajaxStart(function(){
        $.fancybox.showActivity();
    });
    $('body').ajaxComplete(function() {
        $.fancybox.hideActivity();
    });
});

workWithTabs = {
    switchToTab:function(id,element){
        id = Base64.decode(id);
        $('.tabBox .active').removeClass('active');
        $('.tabCont').hide();
        $('.'+id).addClass('active');
        $('#'+id).show();
//        $('.tabCont .pager').remove();
        $('#tabsEvents .pager').remove();        
        $('#tabsNews .pager').remove();                
	if(!$('#tabsEvents .pager')[0]){
	    $('#tabsEvents').pager('li', {
        	navId: id+'_pager'
    	    });
	}
	
	if(!$('#tabsNews .pager')[0]){
	    $('#tabsNews').pager('li');
    	}
	
	if($.browser.msie){
		$('.tabCont li').css({'position':'relative','top':'-16px'});
	}

    },
    adjustTabs:function(){
        $('.tabs li').css({'width':'70px','height':'25px'});
    }

}

workWithSearch ={
    openLayer:function(){
        if(window.show_search == false){
            workWithLayers.closeOtherTop();
            $('#shader').show().bind('click', function() {
                workWithSearch.closeLayer();
            });
            workWithLayers.centerLayers();
            $('#searchDropdown').slideDown();
            window.show_search = true;
        }else{
            workWithSearch.closeLayer();
        }
    },
    closeLayer:function(){
        $('#searchDropdown').slideUp();
        $('#shader').hide();
        $('#shader').unbind('click');
        window.show_search = false;
    }

}

workWithLanguage = {
    openLayer:function(){
        if(window.show_language == false){
            workWithLayers.closeOtherTop();
            $('#shader').show().bind('click', function() {
                workWithLanguage.closeLayer();
            });
            workWithLayers.centerLayers();
            $('#languageDropdown').slideDown();
            window.show_language = true;
        }else{
            workWithLanguage.closeLayer();
        }
    },
    closeLayer:function(){
        $('#languageDropdown').slideUp();
        $('#shader').hide();
        $('#shader').unbind('click');
        window.show_language = false;
    }
}


workWithLayers ={
    closeOtherTop:function(){
        workWithLanguage.closeLayer();
        workWithRegions.closeLayer();
        workWithSearch.closeLayer();
        $('#js_headlines').show();
        $('.imgMenu,#js_shadow2').fadeOut();
    },
    centerLayers:function(){
        if($.browser.msie){
            $('.header').insertAfter('#shader2');
            $('.drpdwn').insertAfter('#shader2');
            $('.corporateDropup').insertAfter('#shader2');

            var left = ($('body').outerWidth() - 940)/2;
            $('.header').css('left',left);
            $('.drpdwn').css('left',left);
        }
    },
    centerLayersCorp:function(){
        if($.browser.msie){
            $('.header').insertAfter('#shader2');
            $('.drpdwn').insertAfter('#shader2');
            $('.corporateDropup').insertAfter('#shader2');

            var left = ($('body').outerWidth() - 940)/2;
            $('.header').css('left',left);
            $('.drpdwn').css('left',left);
            var top = $('.footer').position();
            $('.corporateDropup').css({'left':left,'top': (top.top -75), 'height': '0px'});
            $('.corporateDropup').animate({'height': '200px','top': '380px'},500);
        }
    }
}


workWithRegions = {
	openLayer:function(){
            if(window.show_region == false){
                workWithLayers.closeOtherTop();
                workWithRegions.fetchRegions(0,2);
                $('ul.topMenu li.region a').css({'color':'#ccc','background-position':'left -30px'})
                $('#shader').show().bind('click', function() {
                    workWithRegions.closeLayer();
                });
                $('#regionMainLayer .region02').hide();
                $('#regionMainLayer .region01').show();
                workWithLayers.centerLayers();
                $('#regionMainLayer').slideDown();
                $('html, body').animate({scrollTop:0}, 'slow');
                window.show_region = true;
            }else{
                workWithRegions.closeLayer();
            }
	},
        fetchLocations:function(uid,pointer,mode){
//            var pageId = getParameter("id",window.location.href);
//            $.get('index.php?id='+pageId, {"no_cache" : 1,"L" : L, "type": 999, "tx_ddevajax_pi1[element]" : 1, "tx_ddevregions_pi2[uid]": uid, "tx_ddevregions_pi2[pointer]": pointer}, function(returnData){
            $.get('index.php?id='+pid, {"no_cache" : 1,"L" : L, "type": 999, "tx_ddevajax_pi1[element]" : 1, "tx_ddevregions_pi2[uid]": uid, "tx_ddevregions_pi2[pointer]": pointer}, function(returnData){
                if ($(".region02").length == 0){
                    $('#regionMainLayer').append(returnData);
                }else{
                    $('.region02').replaceWith(returnData);
                }
                workWithRegions.reInitEvents();
                workWithRegions.openDetailLayer(mode);
            });
        },
        fetchRegions:function(pointer,element){
//            var pageId = getParameter("id",window.location.href);
//            $.get('index.php?id='+pageId, {"no_cache" : 1, "L" : L, "type" : 999, "tx_ddevajax_pi1[element]" : 2, "tx_ddevregions_pi2[pointer]": pointer}, function(returnData){
            $.get('index.php?id='+pid, {"no_cache" : 1, "L" : L, "type" : 999, "tx_ddevajax_pi1[element]" : 2, "tx_ddevregions_pi2[pointer]": pointer}, function(returnData){
                $('#regionMainLayer').replaceWith(returnData);
                workWithRegions.reInitEvents();
                $('#regionMainLayer,.region01').show();
                workWithLayers.centerLayers();
            });
        },
        reInitEvents:function(){
            observeAjax();
            workWithRegions.setEventsForDocumentReady();
        },
        startContactform:function(email){
            workWithRegions.closeLayer();
            startContactform(email);
        },
	closeLayer:function(){
            $('#regionMainLayer').slideUp();
            $('#regionMainLayer .region01').hide();
            $('#regionMainLayer .region02').hide();
            $('#shader').hide();
            $('#shader').unbind('click');
            $('ul.topMenu li.region a').css({'color':'#002F5C','background-position':'left top'})
            window.show_region = false;
	},
        openDetailLayer:function(mode){
            if(mode == 'init'){
                $('#regionMainLayer .region01').slideUp();
                $('#regionMainLayer .region02').slideDown();
            }else{
                $('#regionMainLayer .region01').hide();
                $('#regionMainLayer .region02').show();
            }
        },
        switchBackLayer:function(){
            $('#regionMainLayer .region01').slideDown();
            $('#regionMainLayer .region02').slideUp();
        },
        setEventsForDocumentReady:function(){
            $('#pageBrowserRegions a').click(function(link){
               var pointer = getParameter('tx_ddevregions_pi2[pointer]',$(this).attr('href'));
               workWithRegions.fetchRegions(pointer,2);
               return false;
            });

            $('#pageBrowserLocations a').click(function(link){
               var pointer = getParameter('tx_ddevregions_pi2[pointer]',$(this).attr('href'));
               if($(this).attr('href') != 'javascript:void(0);'){
                   //console.info($(this).attr('href'));
                   var uid = getParameter('tx_ddevregions_pi2[uid]',$(this).attr('href'));
                   workWithRegions.fetchLocations(uid,pointer,'normal');
               }
               return false;
            });

        }
}

workWithStage = {
        openInfoLayer:function(){

        },
        showCorporateInformations:function(){
            clearInterval(window.stageTimers_itemSlide);
            workWithLayers.closeOtherTop();
            $('#shader2').show().bind('click', function() {
                workWithStage.hideCorporateInformations();
            });
            workWithLayers.centerLayersCorp();
            $('.corporateDropup').slideDown();
        },
         hideCorporateInformations:function(){
            $('.corporateDropup').slideUp();
            $('#shader2').hide();
        },
	switchNavigationContent:function(uid,mode){
            $('#js_headlines').show();
            $('.imgMenu,#js_shadow2').fadeOut();
            workWithStage.closeHowTo();
            if(mode == 'user'){
                clearInterval(window.stageTimers_itemSlide);
            }else{
                $('li[id^="js_listItem_"]').parent().parent().removeClass('active');
                $('#js_listItem_'+uid).parent().parent().addClass('active');
            }

            $('li[id^="js_listItem_"]').removeClass('act');
            $('#js_listItem_'+uid).addClass('act');

            $('#js_background').css('background-image','url('+Base64.decode(eval("bgd_"+uid))+')');
            $('#js_headlines h1').text(Base64.decode(eval("hdl_"+uid)));
            $('#js_headlines h2').text(Base64.decode(eval("shdl_"+uid)));
            $('#js_btnHowTo').attr('href','javascript:workWithStage.fetchHowTo("'+eval("hta_"+uid)+'");');
        },
        fetchHowTo:function(item){
            item = Base64.decode(item);
            item = item.split(',');

            clearInterval(window.stageTimers_itemSlide);
//            var pageId = getParameter("id",window.location.href);

//            $.get('index.php?id='+pageId, {"no_cache" : 1, "L" : L, "type" : 999, "tx_ddevajax_pi1[element]" : 3, "tx_ddevhomesitestage_pi1[uid]": item[1],"tx_ddevhomesitestage_pi1[table]": item[0]}, function(returnData){
            $.get('index.php?id='+pid, {"no_cache" : 1, "L" : L, "type" : 999, "tx_ddevajax_pi1[element]" : 3, "tx_ddevhomesitestage_pi1[uid]": item[1],"tx_ddevhomesitestage_pi1[table]": item[0]}, function(returnData){
                $('.footerInfoBar').replaceWith(returnData);
                $('#js_btnHowTo').fadeOut();
                
                $('.footerBar').fadeOut(400);
                $('.shadow').css({'height':'0px',bottom:'224px'});
                $('.shadow').show().animate({
                    bottom: 0,
                    height: 224
                }, 500,function(){
	                $('.footerInfoBar').css({'height':'0px','bottom':'100px', 'display':'none'});
        	        $('.footerInfoBar').fadeIn();
                });
            });
        },
        fetchAllIndustries:function(pointer,uid){
            $('li[id^="js_listItem_"]').removeClass('act');
            $('#js_listItem_'+uid).addClass('act');
            if(uid){
               $('#js_background').css('background-image','url('+Base64.decode(eval("bgd_"+uid))+')');
//               $('#js_headlines h1').html('&nbsp;');
//               $('#js_headlines h2').html('&nbsp;');
                 $('#js_headlines').hide();
            }

//            var pageId = getParameter("id",window.location.href);
            clearInterval(window.stageTimers_itemSlide);
//            $.get('index.php?id='+pageId, {"no_cache" : 1, "L" : L, "type" : 999, "tx_ddevajax_pi1[element]" : 6, "tx_ddevhomesitestage_pi1[pointer]": pointer}, function(returnData){
            $.get('index.php?id='+pid, {"no_cache" : 1, "L" : L, "type" : 999, "tx_ddevajax_pi1[element]" : 6, "tx_ddevhomesitestage_pi1[pointer]": pointer}, function(returnData){
                $('.imgMenu').replaceWith(returnData);
                $('#js_headlines').hide();
//                _typeface_js.renderDocument();
                $('#js_btnHowTo').fadeOut();
                $('.imgMenu,#js_shadow2').fadeIn();
            });
        },
        fetchAllReferences:function(pointer,uid){
            $('li[id^="js_listItem_"]').removeClass('act');
            $('#js_listItem_'+uid).addClass('act');
            if(uid){
               $('#js_background').css('background-image','url('+Base64.decode(eval("bgd_"+uid))+')');
//               $('#js_headlines h1').html('&nbsp;');
//               $('#js_headlines h2').html('&nbsp;');
                 $('#js_headlines').hide();
            }
//            var pageId = getParameter("id",window.location.href);
            clearInterval(window.stageTimers_itemSlide);
//            $.get('index.php?id='+pageId, {"no_cache" : 1, "L" : L, "type" : 999, "tx_ddevajax_pi1[element]" : 7, "tx_ddevhomesitestage_pi1[pointer]": pointer}, function(returnData){
            $.get('index.php?id='+pid, {"no_cache" : 1, "L" : L, "type" : 999, "tx_ddevajax_pi1[element]" : 7, "tx_ddevhomesitestage_pi1[pointer]": pointer}, function(returnData){
                $('.imgMenu').replaceWith(returnData);
                $('#js_headlines').hide();
//                _typeface_js.renderDocument();
                $('#js_btnHowTo').fadeOut();
                $('.imgMenu,#js_shadow2').fadeIn();
            });
        },
        fetchMediaContainer:function(item,table){
            item = Base64.decode(item);
            table = Base64.decode(table);

            clearInterval(window.stageTimers_itemSlide);
//            var pageId = getParameter("id",window.location.href);

            $.get('index.php?id='+pid, {"no_cache" : 1, "L" : L, "type" : 999, "tx_ddevajax_pi1[element]" : 5, "tx_ddevhomesitestage_pi1[uid]": item, "tx_ddevhomesitestage_pi1[table]": table}, function(returnData){
                $('body').append(returnData);
                workWithStage.centerMediaLayer();
                $('#shader').css('z-index','300').show().bind('click', function() {
                    workWithStage.closeMediaLayer();
                });
                workWithStage.centerMediaLayer('zoom');
            });
        },
        centerMediaLayer:function(zoom){
            var bodyHeight  = $('.stage').outerHeight();
            var bodyWidth   = $('body').outerWidth();
            if(zoom == 'zoom'){
                var flashHeight = $('.mediaC').outerHeight();
                var flashWidth  = 580;
            }else{
                var flashHeight = $('.mediaC').outerHeight();
                var flashWidth  = $('.mediaC').outerWidth();
            }

            var left = (bodyWidth/2) - (flashWidth/2);
            var top  = (bodyHeight/2) - (flashHeight/2);
            $('.mediaC').css({'left':left,'top':top,'position':'absolute','z-index':'500'});
        },
        closeMediaLayer:function(){
            $('.mediaC, #splash').fadeOut().remove();
            $('#shader').css({'display':'none','z-index':'150'}).unbind('click');



        },
        closeHowTo:function(){
            if($('#js_btnHowTo').css('display') == 'none'){

              $('.footerInfoBar').fadeOut(500,function(){
                
                $('.shadow').show().animate({
                    bottom: 224,
                    height: 0
                  }, 500, function() {
                    // Animation complete.
                  });
                  $('.footerBar').fadeIn(400);
                  $('#js_btnHowTo').fadeIn();

              });                
                

            }
        },
        slideNavigationContent:function(count){
            if (count == null) var count = 1;
            if (count == 0) var count = 1;
            var topTopicsItems     = $('div.topTopics ul.outerUL li.outerLI.active ul.innerUL li:not(".excludeSlide")');
            if(topTopicsItems.length > 1){
                window.stageTimers_itemSlide = setInterval(function(){
                    var id = $(topTopicsItems[count]).attr('id').split('_');
                    workWithStage.switchNavigationContent(id[2],'auto');
                    count++;
                    if(count > (topTopicsItems.size()-1)){
                        count = 0;
                    }
                }, 5000);
            }
        },
        watchUserActions:function(){

        },
        showActivity:function(item){
            var pos = $(item).position();
            alert(pos.left);
            alert(pos.top);
            //$(item).append('<img id="activity" src="/typo3conf/ext/ddev_homesite_stage/res/img/ajax-loader.gif" />')
            $('html *, body *').css('cursor','wait');

        },
        hideActivity:function(item){

        }

}


function getParameter(name,string){
    name = name.replace(/[\[]/,'\\\[').replace(/[\]]/,'\\\]');
    var regexS = "[\\?&]"+name+"=([^&#]*)";
    var regex = new RegExp(regexS);
    var results = regex.exec(string);
    if( results == null ){
        return '';
    }else{
        return results[1];
    }
}

function observeAjax(){
    $(document).ajaxSuccess(function(evt, request, settings){
        globalInit(evt.target)
    });
}

function globalInit(jquerySelectorOrObject){
    if(jquerySelectorOrObject == null){
        jquerySelectorOrObject = "body";
    }
}

var Base64 = {
    _keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
    encode : function (input) {
        var output = "";
        var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
        var i = 0;
        input = Base64._utf8_encode(input);
        while (i < input.length) {
            chr1 = input.charCodeAt(i++);
            chr2 = input.charCodeAt(i++);
            chr3 = input.charCodeAt(i++);
            enc1 = chr1 >> 2;
            enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
            enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
            enc4 = chr3 & 63;

            if (isNaN(chr2)) {
                    enc3 = enc4 = 64;
            } else if (isNaN(chr3)) {
                    enc4 = 64;
            }

            output = output +
            this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
            this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
        }

        return output;
    },
    decode : function (input) {
        var output = "";
        var chr1, chr2, chr3;
        var enc1, enc2, enc3, enc4;
        var i = 0;
        input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
        while (i < input.length) {
            enc1 = this._keyStr.indexOf(input.charAt(i++));
            enc2 = this._keyStr.indexOf(input.charAt(i++));
            enc3 = this._keyStr.indexOf(input.charAt(i++));
            enc4 = this._keyStr.indexOf(input.charAt(i++));
            chr1 = (enc1 << 2) | (enc2 >> 4);
            chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
            chr3 = ((enc3 & 3) << 6) | enc4;
            output = output + String.fromCharCode(chr1);

            if (enc3 != 64) {
                    output = output + String.fromCharCode(chr2);
            }
            if (enc4 != 64) {
                    output = output + String.fromCharCode(chr3);
            }
        }
        output = Base64._utf8_decode(output);

        return output;

    },
    _utf8_encode : function (string) {
        string = string.replace(/\r\n/g,"\n");
        var utftext = "";
        for (var n = 0; n < string.length; n++) {
            var c = string.charCodeAt(n);
            if (c < 128) {
                utftext += String.fromCharCode(c);
            }else if((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }
        }

        return utftext;
    },
    _utf8_decode : function (utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;
        while ( i < utftext.length ) {
            c = utftext.charCodeAt(i);
            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }else if((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i+1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            }else {
                c2 = utftext.charCodeAt(i+1);
                c3 = utftext.charCodeAt(i+2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }
        }

        return string;
    }

}
$.fn.pager = function(clas, options) {

	var settings = {
		navId: 'pager',
		navClass: 'pager',
		navAttach: 'append',
		highlightClass: 'highlight',
		prevText: '&laquo;',
		nextText: '&raquo;',
		linkText: null,
		linkWrap: null,
		height: null
	}
	if(options) $.extend(settings, options);


	return this.each( function () {

		var me = $(this);
		var size;
	  	var i = 0;
		var navid = '#'+settings.navId;

		function init () {
			size = $(clas, me).not(navid).size();
			if(settings.height == null) {
				settings.height = getHighest();
			}
			if(size > 1) {
				makeNav();
				show();
				highlight();
			}
			sizePanel();
			if(settings.linkWrap != null) {
				linkWrap();
			}
		}
                function makeNav () {
			var str = '<div id="'+settings.navId+'" class="'+settings.navClass+'">';
			str += '<a href="#" rel="prev" class="prev"><span>'+settings.prevText+'</span></a>';
			str += '<p><span class="pagerText">1</span> / '+size+'</p>'

                        /*
                        for(var i = 0; i < size; i++) {
				var j = i+1;
				str += '<a href="#" rel="'+j+'">';
				str += (settings.linkText == null) ? j : settings.linkText[j-1];
				str += '</a>';
			}
                        */

			str += '<a href="#" class="next" rel="next"><span>'+settings.nextText+'</span></a>';
			str += '</div>';
			switch (settings.navAttach) {
				case 'before':
					$(me).before(str);
					break;
				case 'after':
					$(me).after(str);
					break;
				case 'prepend':
					$(me).prepend(str);
					break;
				default:
					$(me).append(str);
					break;
			}
		}
		function show () {
			$(me).find(clas).not(navid).hide();
			var show = $(me).find(clas).not(navid).get(i);
			$(show).show();
                        $(navid + ' .pagerText').text(i+1);
		}
		function highlight () {
			$(me).find(navid).find('a').removeClass(settings.highlightClass);
			var show = $(me).find(navid).find('a').get(i+1);
			$(show).addClass(settings.highlightClass);
		}

		function sizePanel () {
			if($.browser.msie) {
				$(me).find(clas).not(navid).css( {
					height: settings.height
				});
			} else {
				$(me).find(clas).not(navid).css( {
					minHeight: settings.height
				});
			}
		}
		function getHighest () {
			var highest = 0;
			$(me).find(clas).not(navid).each(function () {

				if(this.offsetHeight > highest) {
					highest = this.offsetHeight;
				}
			});
			highest = highest + "px";
			return highest;
		}
		function getNavHeight () {
			var nav = $(navid).get(0);
			return nav.offsetHeight;
		}
		function linkWrap () {
			$(me).find(navid).find("a").wrap(settings.linkWrap);
		}
		init();
		$(this).find(navid).find("a").click(function () {

			if($(this).attr('rel') == 'next') {
				if(i + 1 < size) {
					i = i+1;
				}
			} else if($(this).attr('rel') == 'prev') {
				if(i > 0) {
					i = i-1;
				}
			} else {
				var j = $(this).attr('rel');
				i = j-1;
			}
			show();
			highlight();
			return false;
		});
	});
}

function shaderMode(){
    	var tmpId = $('[id^="flashcontainer_"]').attr('id');
    	var id = tmpId.split('_');
    	var player = document.getElementById("flashmovie_"+id[1]);

    //	player["jsShaderMode"]();
	workWithStage.centerMediaLayer('zoom');
}



var shadermode_op_opacity = 0.7;
var shadermode_op_bg = '#040404';

// alternative color for MacFF2
var shadermode_neutral = 'gray';

jQuery.fn.flashZoom = function(action) {

  var defaults = {
      version : 8
      }

  var element = $(this) //.attr('id')
  var node = $(this).attr('id')
  options = eval(node+'_opts')
  var opts = $.extend(defaults, options);
  var flash = $('#' + opts.flash_id);
  
  if (action == 'show') show_flash()
  else if (action == 'fold') open_flash()
  else if (action == 'unfold') close_flash()

  function show_flash() {
    if($.browser.msie){
        var so = new SWFObject(opts.flash_url, opts.flash_id, opts.width, opts.height, opts.version, "#ffffff");
        so.addParam("allowScriptAccess", "always");
        so.addParam("scale", "noscale");
        so.addParam("salign", "lt");
        so.addParam("wmode","transparent");
        so.addParam("align", "middle");
        so.write($(element).attr('id'));
        $(element).addClass('funfolded');
    }else{
        var so = new SWFObject(opts.flash_url, opts.flash_id, opts.width, opts.height, opts.version, "#ffffff");
        so.addParam("allowScriptAccess", "always");
        so.addParam("scale", "noscale");
        so.addParam("salign", "lt");
        so.addParam("wmode","transparent");
        so.addParam("align", "middle");
        so.write($(element).attr('id'));
        $(element).addClass('funfolded');
    }
    
    }

    function close_flash(){
        if ($.browser.msie) {
            closeMsie();
        }

        if ($.browser.safari) {
            closeSafari();
        }

        if ($.browser.mozilla) {
            closeMozilla();
        }
    }


    function closeMsie(){
        $(flash).attr('wmode','opaque');
        $(flash).attr('width', opts.width);
        $(flash).attr('height', opts.height);
        $(element).css('top', '0');
        $(element).css('left', '0');
        $(element).css('width', opts.width);
        $(element).css('height', opts.height);
        $(element).removeClass('ffolded');
        $(element).addClass('funfolded');
        $('html').css('overflow', 'auto');

        return false;
    }

    function closeSafari(){
        $(flash).attr('width', opts.width);
        $(flash).attr('height', opts.height);
        $(element).css('top', '0');
        $(element).css('left', '0');
        $(element).css('width', opts.width);
        $(element).css('height', opts.height);
        $(element).removeClass('ffolded');
        $(element).addClass('funfolded');
        $('html').css('overflow', 'auto');

        return false;
    }

    function closeMozilla(){
        $(flash).attr('width', opts.width);
        $(flash).attr('height', opts.height);
        $(element).css('top', '0');
        $(element).css('left', '0');
        $(element).css('width', opts.width);
        $(element).css('height', opts.height);
        $(element).removeClass('ffolded');
        $(element).addClass('funfolded');
        $('html').css('overflow', 'auto');
        
        return false;
    }

    function open_flash(){
        if ($.browser.msie) {
            if($.browser.version == '6.0'){
                openMsie6();
            }else{
                openMsie();
            }
        }

        if ($.browser.safari) {
            openSafari();
        }

        if ($.browser.mozilla) {
            openMozilla();
        }
    }

function openMsie6(){
	var db = document.body;
    	var dde = document.documentElement;
    	var docHeight = Math.max(db.scrollHeight, dde.scrollHeight, db.offsetHeight, dde.offsetHeight, db.clientHeight, dde.clientHeight);
        var pageHeight = getPageSize();
        $(flash).attr("wmode","");
        var temp = $('div.tx-lxsces-pi6 #'+opts.parent_id).parent();
        var temp2 = $(temp).parent();

        $('html').css('overflow', 'hidden');


        $(element).css('width', opts.widthZoom);
        $(element).css('height', opts.heightZoom);
        $(flash).attr('width', opts.widthZoom);
        $(flash).attr('height', opts.heightZoom);

        var offsets = getPosition($(element).attr('id'));
        var vanillaLeft = (($(window).width() - (opts.widthZoom)) / 2),
            vanillaTop = (($(window).height() - (opts.heightZoom)) / 2);

        var resultLeft = vanillaLeft + $(window).scrollLeft() - offsets[0],
            resultTop = vanillaTop + $(window).scrollTop() - offsets[1];

        $(element).css('top', resultTop);
        $(element).css('left', resultLeft);
        $(element).removeClass('funfolded');
        $(element).addClass('ffolded');



    return false;
    }
 
    function openMsie(){
	var db = document.body;
    	var dde = document.documentElement;
    	var docHeight = Math.max(db.scrollHeight, dde.scrollHeight, db.offsetHeight, dde.offsetHeight, db.clientHeight, dde.clientHeight);
        var pageHeight = getPageSize();
        $(flash).attr("wmode","");
        var temp = $('div.tx-lxsces-pi6 #'+opts.parent_id).parent();
        var temp2 = $(temp).parent();

        $(element).css('width', opts.widthZoom);
        $(element).css('height', opts.heightZoom);
        $(flash).attr('width', opts.widthZoom);
        $(flash).attr('height', opts.heightZoom);

        var offsets = getPosition($(element).attr('id'));
        var vanillaLeft = (($(window).width() - (opts.widthZoom)) / 2),
            vanillaTop = (($(window).height() - (opts.heightZoom)) / 2);

        var resultLeft = vanillaLeft + $(window).scrollLeft() - offsets[0],
            resultTop = vanillaTop + $(window).scrollTop() - offsets[1];

        $(element).css('top', resultTop);
        $(element).css('left', resultLeft);
        $(element).removeClass('funfolded');
        $(element).addClass('ffolded');

    return false;
    }

    function openSafari(){
        var pageHeight = getPageSize();
        $('body').append('<div id="splash"></div>');

        $(element).css('width', opts.widthZoom);
        $(element).css('height', opts.heightZoom);
        $(flash).attr('width', opts.widthZoom);
        $(flash).attr('height', opts.heightZoom);

        var offsets = getPosition($(element).attr('id'));
        var vanillaLeft = (($(window).width() - (opts.widthZoom)) / 2),
            vanillaTop = (($(window).height() - (opts.heightZoom)) / 2);
        var resultLeft = vanillaLeft + $(window).scrollLeft() - offsets[0],
            resultTop = vanillaTop + $(window).scrollTop() - offsets[1];

        $(element).css('top', resultTop);
        $(element).css('left', resultLeft);

        $(element).removeClass('funfolded');
        $(element).addClass('ffolded');

        return false;
    }

    function openMozilla(){
        var pageHeight = getPageSize();


        $(element).css('width', opts.widthZoom);
        $(element).css('height', opts.heightZoom);
        $(flash).attr('width', opts.widthZoom);
        $(flash).attr('height', opts.heightZoom);

        var offsets = getPosition($(element).attr('id'));
        var vanillaLeft = (($(window).width() - (opts.widthZoom)) / 2),
            vanillaTop = (($(window).height() - (opts.heightZoom)) / 2);
        var resultLeft = vanillaLeft + $(window).scrollLeft() - offsets[0],
            resultTop = vanillaTop + $(window).scrollTop() - offsets[1];

        $(element).css('top', resultTop);
        $(element).css('left', resultLeft);

        $(element).removeClass('funfolded');
        $(element).addClass('ffolded');

        return false;
    }

    function getPosition(id){
        ele = document.getElementById(id)
        var topValue= 0,leftValue= 0;
        while(ele){
            leftValue += ele.offsetLeft;
            topValue += ele.offsetTop;
            ele = ele.offsetParent;
        }
        result = new Array(leftValue, topValue);
        return result;
    }

    // this will catch MacFF2
    // special to raise no-opacity case
    function detectBadOpacity() {
        var userAgent = navigator.userAgent.toLowerCase();
        if (/firefox[\/\s](\d+\.\d+)/.test(userAgent)) {
            var ffversion = new Number(RegExp.$1);
            if (ffversion < 3 && userAgent.indexOf('mac') != -1) {
                return true;
            }
        }
    }
    //
    // getPageSize()
    // Returns array with page width, height and window width, height
    // Core code from - quirksmode.org
    // Edit for Firefox by pHaez
    //
    function getPageSize(){

        var xScroll, yScroll;

        if (window.innerHeight && window.scrollMaxY) {
            xScroll = document.body.scrollWidth;
            yScroll = window.innerHeight + window.scrollMaxY;
        } else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
            xScroll = document.body.scrollWidth;
            yScroll = document.body.scrollHeight;
        } else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
            xScroll = document.body.offsetWidth;
            yScroll = document.body.offsetHeight;
        }

        var windowWidth, windowHeight;
        if (self.innerHeight) {	// all except Explorer
            windowWidth = self.innerWidth;
            windowHeight = self.innerHeight;
        } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
            windowWidth = document.documentElement.clientWidth;
            windowHeight = document.documentElement.clientHeight;
        } else if (document.body) { // other Explorers
            windowWidth = document.body.clientWidth;
            windowHeight = document.body.clientHeight;
        }

        // for small pages with total height less then height of the viewport
        if(yScroll < windowHeight){
            pageHeight = windowHeight;
        } else {
            pageHeight = yScroll;
        }

        // for small pages with total width less then width of the viewport
        if(xScroll < windowWidth){
            pageWidth = windowWidth;
        } else {
            pageWidth = xScroll;
        }


        arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight)
        return arrayPageSize;
    }

}


