var screen_locked = false;

function unlock_screen() {
	if(!screen_locked) return;
	
	screen_locked = false;
	
   if(!$('lock_div')) {
      var obj = document.createElement('div');
      document.body.appendChild( obj );
      obj.id = 'lock_div';
   }
   $('lock_div').fade('hide').setStyles({
        width:  0,
        height: 0,
        opacity: 0
    });    
}

function lock_screen() {
	if(screen_locked) return;
	
	screen_locked = true;
	

   if(!$('lock_div')) {
      var obj = new Element('div', {id: 'lock_div', 'class': 'screen_lock'}).inject( document.body );
   }

	$( 'lock_div').setStyles({
        width:  Math.max(window.getSize().x, window.getScrollSize().x) + 'px',
        height: Math.max(window.getSize().y, window.getScrollSize().y) + 'px',
        opacity: 0
    });
    
	$(document.body).scrollTo(0,0);

	$('lock_div').fade(0.3);
}

function show_popup( str, w, h, left, top ) {
   lock_screen();
	
	//De tweede keer dat in firefox een window wordt geopend, geeft hij een XULElement.accessibleType error.
	//Het breekt echter niets, en in IE gaat het prima... Oplossingen zijn welkom. 
	left = ((window.getSize().x-w)/2)-35;
	// door deze regel werd de popup altijd een bepaalde afstand van de onderkant van het venster geplaatst,
	// waardoor de popup bij lage schermhoogtes half onzichtbaar werd.
	//top = ((window.getSize().y-h)/2); 
   
   if(!$('popup_div')) {
      // ik stop hier een iframe achter om te zorgen dat de popup over de inputs eenvalt
      var obj = new Element('iframe', {id: 'popup_iframe', 'class': 'popup_iframe' }).inject(document.body);

      var obj = new Element('div', {id : 'popup_div', 'class':'popup_div'}).inject( document.body );
	  
	  $('popup_div').setStyles( { display: 'none' } );
//      $('popup_div').fade('hide');
   }

   $( 'popup_div' ).set( 'html', str );
	
	

	var popup_location = {
                    width: w + 'px',
                    left: left + 'px',
                    top: top + 'px'
                  };
   $('popup_div').setStyles(popup_location);
   
//   $('popup_div').fade('in');

	$('popup_div').setStyles( { display: 'block', zIndex: 10001 } );
	
	var dim = $( 'popup_div' ).getCoordinates();
	
	popup_location['height'] = dim.height;
	
// Event.observe( 'popup_div', 'click', hide_popup, true);

   if(navigator.appVersion.match(/\bMSIE\b/)) {
		//$('popup_iframe').fade('in'); 
		
		$('popup_iframe').setStyles( { display: 'block', zIndex: 10000 } );
		$('popup_iframe').setStyles(popup_location);

		/*if( parseInt( $('popup_iframe').style.height, 10 ) > get_window_dimension_real().height-top ) {
			$('lock_div').setStyles({
				height: (parseInt( $('popup_iframe').style.height, 10 )+top) + 'px'
			});
		}*/
   } else {
//		$('popup_iframe').fade('out'); 

		$('popup_iframe').setStyles( { display: 'none' } );
   }

   
   //setTimeout(activate, 0);
}

function hide_popup() {
	if($('popup_iframe')) {
//		$('popup_iframe').fade('out'); 
		$('popup_iframe').setStyles( { display: 'none' } );
	}
	
	$('popup_div').setStyles( { display: 'none' } );
//   $('popup_div').fade('out');   
   unlock_screen();
}

function get_html(url, pars) {
   var ajax_obj = new Request.HTML({url:url, method: 'get', onComplete: put_html, evalScripts: false }).send(pars);;
}

function ajax_request(url, pars) {
   var ajax_obj = new Request.HTML({url:url, method: 'get', onComplete: function(){}}).send(pars);
}

function put_html(responseTree, responseElements, responseHTML, responseJavaScript) {
   //dom_eval(responseJavaScript);

   show_popup(responseHTML, 800, 600, 30, 60);
   
   dom_eval(responseJavaScript);
}

function goto_ajax(loc) {
   if(loc.search(/\?/) == -1) {
      var url = loc;
      var pars = 'ajax=true';
   } else {
      var arr = loc.split(/\?/);
      var url = arr[0];
      var pars = arr[1] + '&ajax=true';
   }
   
   get_html(url, pars);
}

function goto_ajax_post(url,pars) {
   var ajax_obj = new Request.HTML({url:url, method: 'post', onComplete: put_html}).send(pars + '&ajax=true');
}

function show_custom_popup( prefix, w, h, left, top ) {
   lock_screen();

   if(left == null) left = parseInt((window.getSize().x-w)/2,10);
   if(top == null) top = parseInt((window.getSize().y-h)/2,10);
	
	var popup_location = {
						width: (w + 'px'),
//                  	height: (h + 'px'),
						left: (left + 'px'),
						top: (top + 'px')
                  };        
   
   $(prefix + '_popup_div').setStyles(popup_location);
   $(prefix + '_popup_div').setStyles( { display: 'block' } );
// Event.observe( prefix + '_popup_div', 'click', hide_popup, true);

    if(navigator.appVersion.match(/\bMSIE\b/)) {
		$(prefix + '_popup_iframe').setStyles(popup_location);
		$(prefix + '_popup_iframe').setStyles( { display: 'block' } );

	} else {
		$(prefix + '_popup_iframe').setStyles( { display: 'none' } );
	}
   
   //setTimeout(activate, 0);
}

function hide_custom_popup( prefix ) {
   $( prefix + '_popup_iframe' ).setStyles( { display: 'none' } ); 
   $( prefix + '_popup_div' ).setStyles( { display: 'none' } );
   unlock_screen();
}

function switch_custom_popup( prefix ) {
   $( prefix + '_popup_iframe' ).fade('out'); 
   $( prefix + '_popup_div' ).fade('out'); 
}

function ajax_xpath_eval(doc, xpath) {
    return $try(
    	function() {return doc.selectSingleNode(xpath)},
		function() {return doc.evaluate( xpath, doc, doc.createNSResolver(doc.documentElement), 9, null).singleNodeValue}
    );
}

function dom_include(src) {
   var headList = document.getElementsByTagName('head');
   var headElement = headList[0];
   
   var scriptElement = document.createElement('script');

   var attribute = document.createAttribute('type');
   attribute.nodeValue = 'text/javascript';
   scriptElement.setAttributeNode(attribute);

   var attribute = document.createAttribute('src');
   attribute.nodeValue = src;
   scriptElement.setAttributeNode(attribute);

   headElement.appendChild(scriptElement);
}

function dom_eval(body) {
   var headList = document.getElementsByTagName('head');
   var headElement = headList[0];
   
   var scriptElement = document.createElement('script');

   var attribute = document.createAttribute('type');
   attribute.nodeValue = 'text/javascript';
   scriptElement.setAttributeNode(attribute);

// werkt in IE en FF
   scriptElement.text = body;

// werkt in FF, niet in IE
//    var text = document.createTextNode(body);
//    scriptElement.appendChild(text);
   
   headElement.appendChild(scriptElement);
}

function post_ajax(fav_form) {
	var str = Form.serialize(fav_form);
	goto_ajax(fav_form.action+'&'+str);
}

function show_popup_swf(href, width, height) {
	if(width === '100%') {
		width = 800;
	}
	
	var closeButton = '<div style="position: absolute; right: 3px; top: 3px; cursor: pointer;"><img src="res/images_hbi/close.gif" onclick="javascript:hide_popup();"></div>';
    var swfObject = '<embed src="' + href + '" width="' + width + '" height="' + height + '"';
	swfObject += ' class="youtube"';
	swfObject += ' allowfullscreen="true"';
	swfObject += ' allowscriptaccess="always"'; 
	swfObject += ' type="application/x-shockwave-flash"';
	swfObject += ' pluginspage="http://www.macromedia.com/go/getflashplayer">';
	swfObject += '</embed>';
	
	show_popup(swfObject + closeButton, width, height, 30, 60);
	
	setTimeout(function() {
		var dim = $( 'popup_div' ).getCoordinates();
		$( 'popup_iframe' ).setStyles( { height: dim.height } )  ;
	}, 0);
}

$(window).addEvent('domready', function() {
	$$(document.links).filter(function(el) {
		return el.rel && el.rel.test(/^popup-swf/i);
	}).each(function(el) {
		el.addEvent('click', function(e) {
			e.preventDefault();
			var params = el.rel.split(':');
			show_popup_swf(el.href, params[1], params[2]);
		});
	});
});

