var clientPC  = navigator.userAgent.toLowerCase(); // Get client info
var is_gecko  = ((clientPC.indexOf('gecko')!=-1) && (clientPC.indexOf('spoofer')==-1)
                && (clientPC.indexOf('khtml') == -1) && (clientPC.indexOf('netscape/7.0')==-1));
var is_safari = ((clientPC.indexOf('AppleWebKit')!=-1) && (clientPC.indexOf('spoofer')==-1));

var wikiRules = {
	'.editheadline' : function(element)
	{
		element.onmouseover = function()
		{
			this.className = 'editheadline vieweditbutton';
		}
		element.onmouseout = function()
		{
			this.className = 'editheadline';
		}
	}
 ,'.wikieditor' : function(element)
  {
  	var editorheight = readCookie('wikieditor');
  	if(editorheight)
  	{
  		element.style.height=editorheight;
  	}
  }
 ,'.editareagrow' : function(element)
  {
		if(element.parentNode.previousSibling.previousSibling)
		{
			element.txtf = new fx.Height(element.parentNode.previousSibling.previousSibling,{duration: 400});
			element.txtf.el.style.overflow="auto";

			element.onclick = function()
			{
				this.txtf.custom(this.txtf.el.offsetHeight,this.txtf.el.offsetHeight+150);
				createCookie('wikieditor',this.txtf.el.offsetHeight+150+'px',30);
				return false;
			}
		}
  }
 ,'.editareashrink' : function(element)
  {
		if(element.parentNode.previousSibling.previousSibling)
		{
			element.txtf = new fx.Height(element.parentNode.previousSibling.previousSibling,{duration: 400});
			element.txtf.el.style.overflow="auto";

			element.onclick = function()
			{
				if(this.txtf.el.offsetHeight>300)
				{
					this.txtf.custom(this.txtf.el.offsetHeight,this.txtf.el.offsetHeight-150);
					createCookie('wikieditor',this.txtf.el.offsetHeight-150+'px',30);
				}
				return false;
			}
		}
  }
 ,'.editareapreview' : function(element)
  {
		element.txtf = element.parentNode.previousSibling.previousSibling;

		element.preview = new fx.Height(element.parentNode.nextSibling,{duration: 400});
		element.previewhidden = true;

		element.previewed = function()
		{
			if(element.previewhidden)
			{
				element.preview.el.style.display = "block";
				element.preview.el.style.overflow="auto";
			}
			var hgt = this.preview.el.scrollHeight;
			hgt = (hgt>300)? 300 : hgt;
			hgt = (hgt<100)? 100 : hgt;

			element.preview.custom(element.previewhidden?0:this.preview.el.offsetHeight,hgt);
			element.previewhidden = false;
		}			

		element.onclick = function()
		{
			new ajax (sitebase+'/resources/scripts/preview.php', {postBody: 'content='+escape(element.txtf.value).replace(/\+/g,'%2B'), update: this.preview.el, onComplete: function(){this.previewed();}.bind(this)});
			return false;
		}
  }
 ,'#confirmrestore' : function(element)
 {
    if (confirm("Van deze pagina is een backup beschikbaar. Wilt u deze herstellen?"))
    {
        AS.restore();
    }
 }
 ,'.popuplink'  : function(element)
  {
  	element.onclick = function()
  	{
  		popup(this.href,600,400,'yes');
  		return false;
  	}
  }
 ,'.unfold' : function(element)
  {
 		element.child   = element.nextSibling.nextSibling.nextSibling;
 		element.image   = element.childNodes[0];
 		element.onclick = function()
 		{
 			if(this.child.style.display=="block")
 			{
 				this.child.style.display="none";
 				this.image.src = this.image.src.replace("ul_fold.gif","ul_unfold.gif");
 			}
 			else
 			{
 				this.child.style.display="block";
 				this.image.src = this.image.src.replace("ul_unfold.gif","ul_fold.gif");
 			}
 			return false;
 		}
  }
,'#searchbox' : function(element)
 {
    element.focus();
    element.cansubmit = true;

    element.submittable = function()
        {
            this.cansubmit = true;
        }

    if($('auto_complete'))
    {
        
        element.onkeyup = function(e)
        {
            if(element.cansubmit)
            {
                new ajax (sitebase+'/wiki?action=Search&acsearch=1&q='+element.value, {update: $('auto_complete'), onComplete: function(){element.submittable();}.bind(this)});
                this.cansubmit = false;
            }
            return false;
        }
    }
 }
,'#expirelockwarning' : function(element)
 {
    var timeout = element.className;
    if (timeout == parseInt(timeout))
    {
       setTimeout('warningExpiredLock()', (timeout - 300) * 1000);
    }

 }
};
Attitude.append(wikiRules);

function warningExpiredLock()
{
    alert('De vergrendeling van deze pagina vervalt over 5 minuten. Dit betekent dat een andere gebruiker van de wiki de pagina kan gaan aanpassen. Om dit te voorkomen kunt u de pagina opslaan en daarna verder bewerken.');
}

function insertTags(obj, tagOpen, tagClose, sampleText, listtype)
{
  // IE
  if(document.selection  && !is_gecko)
  {
    var theSelection = document.selection.createRange().text;
    if(!theSelection)
    {
    	theSelection=sampleText;
		}
    obj.focus();
		if(listtype=="*")
		{
			document.selection.createRange().text = createUListCode(theSelection);
		}
		else if(listtype=="-")
		{
			document.selection.createRange().text = createOListCode(theSelection);
		}
		else
		{    
	    //link
	    if(tagClose=="]]")
	    {
	    	theSelection = theSelection.replace(/^\s+|\s+$/, '');
	    	if(theSelection.length>0)
	    	{
	    		theSelection = "|"+theSelection;
	    	}
	    }
	    
	    document.selection.createRange().text = tagOpen + theSelection + tagClose;
    }
  // Mozilla
  }
  else if(obj.selectionStart || obj.selectionStart == '0')
  {
    var startPos = obj.selectionStart;
    var endPos = obj.selectionEnd;
    var scrollTop=obj.scrollTop;
    var myText = (obj.value).substring(startPos, endPos);
    if(!myText)
    {
    	myText=sampleText;
    }
		if(listtype=="*")
		{
			subst = createUListCode(myText);
		}
		else if(listtype=="-")
		{
			subst = createOListCode(myText);
		}
    else
    {
    	subst = tagOpen + myText + tagClose;
    }
    obj.value = obj.value.substring(0, startPos)+subst+obj.value.substring(endPos, obj.value.length);
    obj.focus();
    var cPos=startPos+(tagOpen.length+myText.length+tagClose.length);
    obj.selectionStart=cPos;
    obj.selectionEnd=cPos;
    obj.scrollTop=scrollTop;

  // All others
  }
  else
  {
    var copy_alertText=alertText;
    var re1=new RegExp("\\$1","g");
    var re2=new RegExp("\\$2","g");
    copy_alertText=copy_alertText.replace(re1,sampleText);
    copy_alertText=copy_alertText.replace(re2,tagOpen+sampleText+tagClose);
    var text;
    if (sampleText)
    {
      text=prompt(copy_alertText);
    }
    else
    {
      text="";
    }
    if(!text)
    {
    	text=sampleText;
    }
    text=tagOpen+text+tagClose;
    //append to the end
    obj.value += "\n"+text;

    // in Safari this causes scrolling
    if(!is_safari) {
      obj.focus();
    }

  }
  // reposition cursor if possible
  if (obj.createTextRange) obj.caretPos = document.selection.createRange().duplicate();
}

function insertLink(obj,lnk)
{
	var lnkBrowser = popup(lnk,600,400,'yes');
	lnkBrowser.sel = function(file)
	{
		insertTags(obj,"[["+file,"]]","Omschrijving","");
		lnkBrowser.close();
	}
}

function insertCode(obj,lnk,imagepopup)
{
	if(imagepopup)
	{
		var tabBrowser = popup(lnk,740,370,'no');
	}
	else
	{
		var tabBrowser = popup(lnk,400,400,'yes');
	}
	tabBrowser.sel = function(val)
	{
		insertTags(obj,"","",val,"");
		tabBrowser.close();
	}
}

function createUListCode(txt)
{
	return txt.replace(/^(?:((?:  )+)\* )?(.+)$/mg,"$1  * $2");
}
function createOListCode(txt)
{
	return txt.replace(/^(?:((?:  )+)- )?(.+)$/mg,"$1  - $2");
}

function reloadValidationImage()
{
	if($('validationimage'))
	{
		var now = new Date();
		newSrc = $('validationimage').src
		newSrc = (newSrc.indexOf("?")>0)? newSrc.substr(0,newSrc.indexOf("?")) : newSrc;
		newSrc+= "?"+ now.getTime();
		$('validationimage').src = newSrc;
	}
}

function dateoptionsclick()
{
    x = $('dateoptions');
    y = $('hasnodate');
    x.style.display = (y.checked)? 'none' : 'inline';
}

function admincheck()
{
	return confirm("Heeft u de schrijfrechten van de pagina juist ingesteld?");
}