/*
 * Mediajargo.js
 * A simplistic javascript framework
 *
 * @version 	1.0
 * @author 	Jan-Karel Visser <jankarelvisser@gmail.com>
 * @copyright 	(c)2002-2010 Mediajargo / Jan-Karel Visser
 * @license 	http://www.mediajargo.nl/license
 */

var m_included_files = new Array();
var webpageOS = new Array();
var m_included_files_external = new Array();
var m_content=false;
var scriptTags = document.getElementsByTagName("script");
var m_locatie = window.location.protocol;
var m_id=100;
var dialog,target,results,opdracht,f,req;


for(var i=0;i<scriptTags.length;i++) 
{
      	if(scriptTags[i].src && scriptTags[i].src.match(/mediajargo\.js(\?.*)?$/)) 
	{
		var path1 = scriptTags[i].src.replace(/mediajargo\.js(\?.*)?$/,'');
		var m_image_path = path1.replace("/js", "/icons");
		var m_js_path = path1;
		var m_media_path = path1.replace("/js", "");
		var m_css_path = path1.replace("/js", "/css");
	}
}
var m_viewport = window, m_a = 'inner';
if ( !( 'innerWidth' in window ) )
{
	m_a = 'client';
	m_viewport = document.documentElement || document.body;
}
var m_viewport_h=m_viewport[ m_a+'Height' ];
var m_viewport_w=m_viewport[ m_a+'Width' ];


function mdjrg_resize()
{
e=document.getElementById('m_popup_blok');
if(e!=null){
	var m_viewport = window, m_a = 'inner';
	if ( !( 'innerWidth' in window ) )
	{
		m_a = 'client';
		m_viewport = document.documentElement || document.body;
	}
	var m_viewport_h=m_viewport[ m_a+'Height' ];
	var m_viewport_w=m_viewport[ m_a+'Width' ];
	e=document.getElementById('m_popup_blok');
	e2=document.getElementById('m_di_pop');
	e3=document.getElementById('m_xx_id');
	e.style.width = (m_viewport_w-74)+'px';
	e.style.height = (m_viewport_h-50)+'px';
if(e2!=null){//buggy
	e2.style.width = (m_viewport_w-74)+'px';
	e2.style.height = (m_viewport_h-50)+'px';
}
	e3.innerHTML='<span style=\"position:fixed;left:'+(m_viewport_w-45)+'px;top:8px;padding:4px;float:right;color:#ff0000;font-weight:bold;font:mono-space,helvetica,arial;background:#fff;-webkit-border-radius: 4px; -moz-border-radius: 4px;z-index:8001\" onclick=\"m_fade_out(\'m_popup\')\"><strong>X</strong></span>';
}
}

function m_(v) 
{ 
	
	return document.getElementById(v); 
}

function m_S(v) 
{ 
	if(m_(v)!=null)
	{	
		return (m_(v).style);
	}
	else
	{
		return false;
	} 
}

function m_I(v) 
{ 
	return m_(v).innerHTML; 
}

function m_path(locatie)
{
	return  path1.replace("/js", "/"+locatie);
}

function m_ajax(url,target,evil) 
{
	m_(target).innerHTML = '<p class="laadscherm"><img src="'+m_image_path+'/loader.gif" >  Loading...</p>';
	if (window.XMLHttpRequest) 
	{
		req = new XMLHttpRequest();
		req.onreadystatechange = function() {m_ajax_klaar(target,evil);};
		req.open("GET", url, true);
		req.send(null);
	} 
	else if (window.ActiveXObject) 
	{
		req = new ActiveXObject("Microsoft.XMLHTTP");
		if (req) 
		{
				req.onreadystatechange = function() {m_ajax_klaar(target,evil);
		};
		req.open("GET", url, true);req.send();
	}}
}

function m_ajax_klaar(target,evil) 
{
	if (req.readyState == 4) 
	{
		if (req.status == 200) 
		{
			results = req.responseText;
			if (evil)
			{
				eval(results)
			} 
			else 
			{
				m_(target).innerHTML = results;
			}
		} 
		else 
		{
			m_(target).innerHTML="foutmelding / error:\n" + req.statusText;
		}
	}
}

function m_zap(url,target)
{

		m_ajax(url,target);
	
}



function m_zapdiv(di,target)
{
	if (m_S(target).display == "none")
	{
		m_S(target).display = "";
		m_I(di)=m_I(target);
	}
	else
	{
				
		m_(di).innerHTML=m_(target).innerHTML;
		
	}
}

function m_hide(target)
{
	m_S(target).display = "none";
}
function m_hide_class(target)
{
	e=document.getElementsByTagName("*");



	for(var i=0;i<e.length;i++) 
	{
		

		if( e[i].className.match(target))
		{
		e[i].style.display="none";

		}
	}
}

function m_show(target)
{
	m_S(target).display = "block";
}

function m_show_class(target)
{
	e=document.getElementsByTagName("*");



	for(var i=0;i<e.length;i++) 
	{
		

		if( e[i].className.match(target))
		{
			
		e[i].style.display="block";

		}
	}
}


function m_toggle(target)
{
	if (m_S(target).display == "none")
	{
		m_show(target);
	}
	else
	{
		m_hide(target);
	}
}

function m_toggle_class(target)
{
	e=m_class(target);



	for(var i=0;i<e.length;i++) 
	{
		

		if( e[i].className.match(target))
		{
			
			if (e[i].style.display == "none")
			{
			e[i].style.display="block";
			}
			else
			{
			e[i].style.display="none";
			}

		}
	}
}

function m_insert( matches,action)
{

var get = document.getElementsByTagName('*');

	for(var i=0;i<get.length;i++) 
	{
		e=get[i].nodeName.toLowerCase();

		if(get[i].id.match(matches) || get[i].className.match(matches) || e.match('\\b'+matches+'\\b'))
		{
			a=action.replace('{id}',get[i].id);
			get[i].innerHTML=a+get[i].innerHTML;

		}
	}
}

function m_appear(target,content,duration)
{
	
	m_fade_out(target,(duration?duration:500));
	setTimeout("m_('"+target+"').innerHTML=\""+content+"\";m_fade_in('"+target+"','"+(duration?duration:500)+"');",(duration?duration:500));
}

function m_fade_out(target,duration)
{
	m_opacity(target,90,10,700);
	setTimeout("m_hide('"+target+"')",(duration?duration:500));
}

function m_fade_in(target,duration)
{
	m_S(target).opacity=0;
	m_show(target);
	m_opacity(target,0,100,(duration?duration:500));
}

//efects

function m_opacity(id, opacStart, opacEnd, millisec) {
	//speed for each frame
	var speed = Math.round(millisec / 100);
	var timer = 0;

	//determine the direction for the blending, if start and end are the same nothing happens
	if(opacStart > opacEnd)
	{
		for(i = opacStart; i >= opacEnd; i--)
		{
			setTimeout("m_c_o(" + i + ",'" + id + "')",(timer * speed));
			timer++;
		}
	} 
	else if(opacStart < opacEnd)
	{
		for(i = opacStart; i <= opacEnd; i++)
		{
			setTimeout("m_c_o(" + i + ",'" + id + "')",(timer * speed));
			timer++;
		}
	}
}

//change the opacity for different browsers
function m_c_o(opacity, id)
{
	var object = m_S(id);
	object.opacity = (opacity / 100);
	object.MozOpacity = (opacity / 100);
	object.KhtmlOpacity = (opacity / 100);
	object.filter = "alpha(opacity=" + opacity + ")";
}



function m_set_id(obj)
{
m_id++;
id='m_'+m_id;
obj.setAttribute("id",id);
return id;
}

function m_include(functions){
if(m_extend_external("core")==true){
m_extend('prototype/'+functions);
}

}


function m_jquery(functions)
{
	if(m_extend("jquery")==true)
	{
		m_extend('jquery/'+functions);
	}
}

function m_in_array(needle, haystack)
{
	for (var i = 0; i < haystack.length; i++) 
	{
        	if (haystack[i] == needle)
		{
            		return true;
        	}
	}
	return false;
}





function m_css(filename)
{
	if (!m_in_array(filename, m_included_files)) 
	{
		var css_doc = document.getElementsByTagName('head').item(0); 
	    	var cssNode = document.createElement('link');
		cssNode.type = 'text/css';
		cssNode.rel = 'stylesheet';
		cssNode.href= m_css_path+'/'+filename+'.css';
		cssNode.media = 'screen';
	    	css_doc.appendChild(cssNode);
	 	m_included_files[m_included_files.length] = filename;
		return true;
	}
	else 
	{
		return true;
	}
}

function m_sauce()
{//builder,effects,dragdrop,controls,slider,sound
	m_add_js(m_locatie+'://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.2/builder.js');
	m_add_js(m_locatie+'://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.2/effects.js');
	m_add_js(m_locatie+'://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.2/controls.js');
	m_add_js(m_locatie+'://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.2/slider.js');
}

function m_add_js(path)
{
    var html_doc = document.getElementsByTagName('head').item(0); 
    var js = document.createElement('script');
    js.setAttribute('type', 'text/javascript');
    js.setAttribute('src',path);
    html_doc.appendChild(js);
}

function m_extend_external(filename)
{
	if (!m_in_array(filename, m_included_files_external)) 
	{
		if(filename=='core')
		{
			m_add_js(m_locatie+'://ajax.googleapis.com/ajax/libs/prototype/1.6.1.0/prototype.js');			
		}

		m_included_files_external[m_included_files.length] = filename;

		return true;
		
	}
	else 
	{
		return true;
	}
}

/*
function m_extend_external(filename)
{
	if (!m_in_array(filename, m_included_files_external)) 
	{
		if(filename=='core')
		{
			m_add_js(m_js_path+'prototype/core.js');
			
			
		}

		m_included_files_external[m_included_files.length] = filename;

		return true;
		
	}
	else 
	{
		return true;
	}
}

*/

function m_extend(filename)
{
	if (!m_in_array(filename, m_included_files))
	{
		m_add_js(m_js_path+filename+'.js'); 
		m_included_files[m_included_files.length] = filename;
		return true;    
	}
	else
	{

		
		return true;
	}
}




function m_add(divname,content)
{
	m_view_editable=document.createElement("div");
	m_view_editable.id = divname;
	m_view_editable.style.display = "none";
	m_view_editable.style.opacity = 0;
	m_view_editable.innerHTML =content;
	document.body.appendChild(m_view_editable);
}


function m_popup(purl)
{
	if(m_createwindow())
	{m_show('m_popup');
	m_opacity('m_popup',40,100,800);
	m_('m_popup_blok').innerHTML='<iframe id="m_di_pop" src='+purl+' width=100% height='+(m_viewport_h-55)+' style=border:0><\/iframe>';
	}
} 

function m_popvenster(purl,br,gr)
{
window.open(purl,'popup',
'width='+br+',height='+gr+',menubar=no,scrollbars=no,toolbar=no,location=no'); 
}

function m_popdiv(di)
{
	if(m_createwindow())
	{m_show('m_popup');
	m_opacity('m_popup',40,100,800);
	m_('m_popup_blok').innerHTML='<div id="m_di_pop" style="border:1px dotted red;width:'+(m_viewport_w-74)+'px;height:'+(m_viewport_h-50)+'px;overflow:auto;">'+m_(di).innerHTML+'</div>';}

} 

function m_createwindow()
{

if (!m_in_array('m_createwindow', m_included_files_external)) 
	{
var m_view_popup= document.createElement("div");m_view_popup.id = "m_popup";m_view_popup.style.display = "none";m_view_popup.style.opacity = 0;m_view_popup.innerHTML = '<div id="m_fade" style=\"position: fixed; background: #000; opacity: 0.7; -moz-opacity: 0.7; -khtml-opacity: 0.7; filter: alpha(opacity=40); width: 100%; height: 100%; top: 0; left: 0; z-index: 7998;\"><\/div><div id=\"m_xx_id\"><span style=\"position:fixed;left:'+(m_viewport_w-45)+'px;top:8px;padding:4px;float:right;color:#ff0000;font-weight:bold;font:mono-space,helvetica,arial;background:#fff;-webkit-border-radius: 4px; -moz-border-radius: 4px;z-index:8001\" onclick=\"m_fade_out(\'m_popup\')\"><strong>X</strong></span><\/div><div id=\"m_popup_blok\" style=\"position: fixed; margin:17px;padding:1px;width:'+(m_viewport_w-74)+'px;height:'+(m_viewport_h-50)+'px;left:0;top:0;background: #fff;border:5px solid #fff;-webkit-border-radius: 4px; -moz-border-radius: 4px;z-index:8000\"><\/div>';document.body.appendChild(m_view_popup);
m_included_files[m_included_files.length] = 'm_createwindow';
		return true;    

}

else
{


return true;
}
}
//

function m_moveto(target){
	
	//find the element the anchor linked to
	var aim = target;
	aim = m_(aim);

	//find the position of the element
	var aimPos = findPos(aim);
	
	//find the current top position
	var docY = (document.all)?document.body.scrollTop:window.pageYOffset; 
	
	//check for equality
	if(aimPos == docY){
		return;
	}
	
	//call the scrollMotion function
	scrollMotion(aimPos[1]);
	
}

function scrollMotion(targPos){
	//scroll to position
	var curPos = (document.all)?document.body.scrollTop:window.pageYOffset; 
	
	if(curPos < (targPos + 10) && curPos > (targPos - 10)){
		window.scroll(0,targPos);
		return;
	}
	
	if(curPos != targPos){
		if(curPos > targPos){
			window.scroll(0,(curPos - 5));
		}else if(curPos < targPos){
			window.scroll(0,(curPos + 5));
		}
		sMTimer = setTimeout(function(){scrollMotion(targPos), 1})
	}else{
		clearTimeout(sMTimer);
		
	}
	

}

//stop the default action
function stopDefault(e){
	if(e.preventDefault){
		e.preventDefault();
	}
	else{
		e.returnValue = false;
	}
	return false;
}

//position finding utility, thanks to PPK http://www.quirksmode.org/js/findpos.html
function findPos(obj){
	var curleft = curtop = 0;
	if(obj.offsetParent){
		do{
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent)
		return [curleft,curtop]
	}
}

function classRE(name){ return new RegExp("(^|\\s)"+name+"(\\s|$)") }






	var mdjrg_input = document.createElement('input');
 


	function html_inputcheck(req)
	{
		return req in mdjrg_input;
	}

	if (/MSIE (\d+\.\d+);/.test(navigator.userAgent))
	{ 
 	var ieversion=new Number(RegExp.$1) 
	if (ieversion<9)
	{
        	(function(){
			var html5elmeents = "address|article|aside|audio|canvas|command|datalist|details|dialog|figure|figcaption|footer|header|hgroup|keygen|mark|meter|menu|nav|progress|ruby|section|time|video".split('|');  
		  	for(var i = 0; i < html5elmeents.length; i++)
			{
	  			document.createElement(html5elmeents[i]);

	  		}
  		})();
	}
	}
	else
	{
		if(/Opera/g.test(navigator.userAgent))
		{
			 var ieversion='opera';
		}
	}

	/*
	* Not a good solution but it works
	* Fetch events on click
	*/
	function mediajargo(e)
	{
		if(!e){var e=window.event;}	
		switch(e.type)
		{	
			case 'click':
				var target = e.target || e.srcElement;	
				html5_compat(target);	
			break;
			default:
				if(ieversion<9) //hope for better times
				{
					//we need to do strange things
					m_extend('backend/html5_ie');
				}
				else
				{
					m_extend('backend/html5_compat');
				}
			break;

		}
	m_extend('backend/webpageos');
	}



window.onload=mediajargo;
window.onresize = mdjrg_resize;

