
// (c) 2008 mediaunit.de
/**
 * Helper for the Flash Header to update the displayed contents.
 *
 * @author tc
 * @since 2008-06-02
 */
/*
 * Simulate namespaces.
 */
if (typeof es == "undefined") 
    es = new Object();
if (typeof es.fhecor == "undefined") 
    es.fhecor = new Object();

es.fhecor.Navigator = {
	
    update: function(newContent){
    
        $('content').replace(newContent.replace(/(<textarea[^>]*)\/>/gi, "$1></textarea>"));
        
        es.fhecor.News.update();
        es.fhecor.Selection.initialize();
        es.fhecor.Layout.update();
        es.fhecor.Form.update();
        
        if (Prototype.Browser.Gecko || Prototype.Browser.WebKit) {
            window.resizeBy(0, 1);
            window.resizeBy(0, -1);
            window.scrollBy(0, 1);
            window.scrollBy(0, -1);
        }
        return true;
    },
    
    clickHandler: function(event){
        var element = event.element();
        if (element.tagName.toLowerCase() == "a") {
			
            var url = element.readAttribute("href");
			var target  = element.readAttribute("target");
			
            if (url && !es.fhecor.Layout.instance.noFlash && !target) {
				event.stop();
                $('header').navigateTo(url);
            }
        }
    },
	
	submitHandler: function(event) {
		
		if (es.fhecor.Layout.instance.noFlash)
			return;
			
		event.stop();
		var form = event.element();
		$('header').submitForm(form.readAttribute('action'), form.serialize(), form.readAttribute('method'));
	},
    
    initDeepLinking: function(){
		
		if(typeof es.fhecor.Layout == 'undefined' || es.fhecor.Layout.instance.noFlash)
			return;
		
		var hash = (window.location.hash.length > 1) ? window.location.hash : "#" + window.location.pathname + window.location.search.replace(/^\?/, "__");
			
		if (window.location.protocol.indexOf("http") == 0 && window.location.pathname != "/") {
			window.location.replace("/" + hash);
		} else {
			window.location.hash = hash;
		}
		
		document.observe("click", es.fhecor.Navigator.clickHandler);
		$$('form').invoke('observe', 'submit', es.fhecor.Navigator.submitHandler);
    }
};

document.observe("dom:loaded", es.fhecor.Navigator.initDeepLinking);

function wopen(url, name, w, h)
{
  // Fudge factors for window decoration space.
  // In my tests these work well on all platforms & browsers.
  w += 32;
  h += 96;
  wleft = (screen.width - w) / 2;
  wtop = (screen.height - h) / 2;
  // IE5 and other old browsers might allow a window that is
  // partially offscreen or wider than the screen. Fix that.
  // (Newer browsers fix this for us, but let's be thorough.)
  if (wleft < 0) {
	w = screen.width;
	wleft = 0;
  }
  if (wtop < 0) {
	h = screen.height;
	wtop = 0;
  }
  var win = window.open(url,
	name,
	'width=' + w + ', height=' + h + ', ' +
	'left=' + wleft + ', top=' + wtop + ', ' +
	'location=no, menubar=no, ' +
	'status=no, toolbar=no, scrollbars=no, resizable=no');
  // Just in case width and height are ignored
  win.resizeTo(w, h);
  // Just in case left and top are ignored
  win.moveTo(wleft, wtop);
  win.focus();
}
