var $jq = jQuery.noConflict();

// overwrite navigator
var t = $jq.tools.scrollable; 
var navigatorOverwrite = function(conf) {
    var globals = $jq.extend({}, t.plugins.navigator.conf), ret;
    if (typeof conf == 'string') { conf = {navi: conf}; }
    conf = $jq.extend(globals, conf);
    $jq("#gallery_main").each(function() {
        var api = $jq(this).scrollable(),
             root = api.getRoot(), 
             navi = root.data("finder").call(null, conf.navi), 
             els = null, 
             buttons = api.getNaviButtons();
        if (api) { ret = api; }
        api.getNaviButtons = function() {
            return buttons.add(navi);   
        }; 
        function reload() {
            if (!navi.children().length || navi.data("navi") == api) {
                navi.empty();
                navi.data("navi", api);
                for (var i = 0; i < api.getPageAmount(); i++) {     
                    navi.append($jq("<" + (conf.naviItem || 'a') + "/>"));
                }
                els = navi.children().each(function(i) {
                    var el = $jq(this);
                    el.click(function(e) {
                        api.setPage(i);
                        return e.preventDefault();
                    });
                    if (conf.indexed)  { el.text(i); }
                    if (conf.idPrefix) { el.attr("id", conf.idPrefix + i); }
                });
            } else {
                els = conf.naviItem ? navi.find(conf.naviItem) : navi.children();
                els.each(function(i)  {
                    var el = $jq(this);
                    el.click(function(evt) {
                        api.setPage(i);
                        return evt.preventDefault();
                    });
                    
                });
            }
            els.eq(0).addClass(conf.activeClass);
        }
        api.onStart(function(e, index) {
            var cls = conf.activeClass;             
            els.removeClass(cls).eq(api.getPageIndex()).addClass(cls);
        });
        api.onReload(function() {
            reload();
        });
        reload();
        var el = els.filter("[href=" + location.hash + "]");    
        if (el.length) { api.move(els.index(el)); }         
    });
    return conf.api ? ret : this;
}; // end overwrite navigator

var fullsize = false;
var generated_gallery = false;
var log = function(text){
	if (console.log){
		console.log(text)
	}
}

// unwrap 
$jq.fn.unwrap = function() {
  this.parent(':not(body)')
    .each(function(){
      $jq(this).replaceWith( this.childNodes );
    });
  return this;
};

// preload
(function($) {
  var cache = [];
  // Arguments are image paths relative to the current page.
  $jq.preLoadImages = function() {
    var args_len = arguments.length;
    for (var i = args_len; i--;) {
      var cacheImage = document.createElement('img');
      cacheImage.src = arguments[i];
      cache.push(cacheImage);
    }
  }
})(jQuery)

close_fullsize = function() {
    $jq('body').attr('id', '');
    $jq("#subnav ul li a.level1:first").next().hide();
    $jq("#fullsize").hide('500');
    $jq("#gallery_navi").hide('0');
    $jq("#gallery_main").hide('0');
    $jq("#subnav ul li a.level1").show('1000');
    $jq("#maincol").show('1500');
    $jq("#rightcol").show('1500');
    fullsize = false;
    
    $jq("#subnav ul li a.level1:first").unbind('click');
    $jq("#subnav ul li a.level1:first").click(function() {
        prepare_design();
        $jq("#design #subnav ul li ul li a:first").click();
        $jq("#fullsize").show('1500');
    });
}

prepare_design = function(){
    fullsize = true;
    $jq('body').attr('id', 'design');
    if (!generated_gallery) setup_design();
    $jq("#subnav ul li ul.nav").hide();
    $jq("#maincol").hide();
    $jq("#rightcol").hide();
    $jq("#subnav ul li a.level1").hide();
    $jq("#subnav ul li a.level1:first").next().fadeIn('1000');
    //$jq("#fullsize").show('1500');
}

setup_design = function() {
    $jq("#design #subnav li:first a").unbind('click');
    $jq("#design #subnav li:first a").click(function(){
            var gallery_content_url = $jq(this).attr("rel")+'&type=91';
			$jq("ul.nav li").removeClass('act');
			$jq(this).parent().addClass('act');
            $jq(".progress").show();
			$jq('#cont-fullsize').load(gallery_content_url, "", setup_gallery);
			$jq(this).attr("href", "javascript:void(0);");
	});
	// click on first element 
	$jq("#design #subnav ul li ul li a:first").click();
    
	// for google analytics
	try {
	pageTracker._trackPageview("index.php?id=32");
	} catch(err) {}
	//$jq('#cont-fullsize').load("/index.php?id=32&type=91", "", setup_gallery);
	generated_gallery = true;
}

setup_gallery = function() {
        // GALLERY
        // make nice li list
        $jq(".progress").show();
        $jq("#gallery_navi").empty();
        $jq("#gallery_main .csc-header h1").appendTo("#gallery_navi");
        $jq("#gallery_main .csc-header h1").css("background-color","green");
        $jq("#gallery_navi h1").wrap("<li></li>");
        $jq("#gallery_main .csc-header").remove();
        $jq("#gallery_navi li").each(function(index) {
            if ($jq(".rgmediaimages-player").length) {
                $jq(".rgmediaimages-player").children().each(function(index2) {
                if (index == index2) {
                    img_url = $jq(this).attr('flashvars');
                    img_url = img_url.match(/\&image.*\.jpg/g, img_url)[0].slice(7);
                }
                img = $jq("<img/>")
                img.attr("src", img_url);
                });
            } else {
                img = $jq(".gallery .items").eq(index).find("img:first");
            }
            img_thumb = img.clone()
            img_thumb.attr("width", "94");
            img_thumb.attr("height", "53");
            //$jq(this).append(img_thumb);
            $jq(this).children("h1").before(img_thumb);
        });
        // setup gallery
        var gal = $jq("#gallery_main").scrollable({ 
            // basic settings 
            vertical: true, 
            size: 1, 
            clickable: false, 
            // up/down keys will always control this scrollable 
            keyboard: 'static', 
            // assign left/right keys to the actively viewed scrollable 
            onSeek: function(event, i) { 
                horizontal.scrollable(i).focus(); 
            } 
        // main navigator (thumbnail images) 
        });
        
        gal.navigator = navigatorOverwrite;
        gal.navigator("#gallery_navi");
        $jq("#gallery_navi li").click(function() {
            $jq(".rgmediaimages-player").children().each(function() {
                //setTimeout(function() { $jq(this)[0].sendEvent('stop'); }, 1000);
                try {
                    $jq(this)[0].sendEvent('stop');
                } catch(err) {}
            });
        });
        
        if ($jq(".rgmediaimages-player").length) {
            $jq(".navi").remove();
        } else {
            // horizontal scrollables. each one is circular and has its own navigator instance 
            var horizontal = $jq(".scrollable").scrollable({
                size: 1
            }).circular().navigator(".navi");
            // when page loads setup keyboard focus on the first horzontal scrollable 
            horizontal.eq(0).scrollable().focus();
        }
        $jq(".progress").hide();
        $jq("#gallery_navi").show();
        $jq("#gallery_main").show();
        $jq("#gallery_navi li:first").click();
}

$jq(document).ready(function(){
		// everything closed
		$jq("#subnav ul li ul").hide();
        
        // Action for all main nav tabs
		$jq("#subnav ul li a.level1:not(:first)").click(function() {
				$jq("#subnav ul li ul").hide('1000');
				$jq("#subnav ul li a").parent().removeClass('act');
				$jq(this).parent().addClass('act');
				$jq(this).next().show('1500');
		});
		
        // Action for design main nav tab
		$jq("#subnav ul li a.level1:first").click(function() {
    		prepare_design();
            $jq("#design #subnav ul li ul li a:first").click();
            $jq("#fullsize").show('1500');
		});
		
        // fullsize close
		$jq("#close-fullsize").click(function() {
                close_fullsize();
		});
        $jq("#metanav a").click(function(){
            if (fullsize) close_fullsize();
        });

        // backup links in rel attr
		$jq("#subnav a, #metanav a").each(function(){ 
		    $jq(this).attr("rel", $jq(this).attr("href"));
		});

		// get content with ajax
		$jq("#subnav a, #metanav a").each(function( intIndex ){
				var	border = $jq(this).attr("href")+'&type=90';
				var analytics = $jq(this).attr("href");
				var	content = $jq(this).attr("href")+'&type=91';
				var	bg = $jq(this).attr("href")+'&type=92';
				
				$jq( this ).bind (
					"click",
					function(e){
						$jq("ul.nav li").removeClass('act');
						$jq(this).parent().addClass('act');
						try {
                            pageTracker._trackPageview(analytics);
                        } catch(err) {}
						if (!fullsize) {
							// for google analytics
						    $jq('#cont').load(content);
    						$jq('#parentcont').load(border);
						}
						$jq.getJSON(bg, function(data) {
								$jq('body').css('background-image', 'url('+data['background']+')');
								$jq('body').attr('id', data['body_id']);
						});
					});
				$jq(this).attr("href", "javascript:void(0);");
		});
		
		// preload images
		$jq.preLoadImages("/fileadmin/template/img/nav_hover.png", "/fileadmin/template/img/nav_hover.png");
		$jq.preLoadImages("/fileadmin/template/img/4social_logos_hover.png", "fileadmin/template/img/4social_logos_hover.png");
});