String.prototype.equalsIgnoreCase=MatchIgnoreCase;
function MatchIgnoreCase(strTerm)
{
	var strToSearch = this.toLowerCase();
	strTerm = strTerm.toLowerCase();
	
	return (strToSearch==strTerm);
}

String.prototype.stripLength=stripLengthFromString;
function stripLengthFromString()
{
	var length_items = new Array();
	length_items[length_items.length] = 'px';
	length_items[length_items.length] = 'pt';
	length_items[length_items.length] = 'pts';
	length_items[length_items.length] = 'mm';
	length_items[length_items.length] = 'cm';
	length_items[length_items.length] = 'pica';
	length_items[length_items.length] = 'inch';
	
	var search_string = this.toLowerCase();
	
	for (var i=0; i<length_items.length; i++)
	{
		search_string = search_string.replace(length_items[i], '');
	}
	
	return search_string;
}

String.prototype.htmlEntitiesToXml=htmlEntitiesToXml;
function htmlEntitiesToXml()
{
	var str_replace = this;
	
	str_replace = str_replace.replace(/&#38;/, "&");
	str_replace = str_replace.replace(/&#60;/, "<");
	str_replace = str_replace.replace(/&#62;/, ">");
	str_replace = str_replace.replace(/&#34;/, "\"");
	str_replace = str_replace.replace(/&#39;/, "'");
	
	return str_replace;
}

String.prototype.shortstrmid=shortstrmid;
function shortstrmid(maxlength)
{
	var str_original = this;
	
	if (str_original.length > maxlength)
	{
		var mid = parseInt(maxlength / 2);
		
		var part_one = str_original.substring(0, mid);
		var part_two = str_original.substring(str_original.length - mid, str_original.length);
		
		str_original = part_one + "..." + part_two;
	}
	
	return str_original;
}

function getOptimalPopupPosition(the_width, the_height)
{
	var xpos = (screen.width / 2) - (the_width / 2);
	var ypos = (screen.height / 2) - (the_height / 2);
	
	// Item 'lijkt' pas in het midden te staan voor mensen als je het iets boven het midden positioneert...
	ypos = ypos - (screen.height / 15);
	
	return {x: xpos, y:ypos};
}

String.prototype.isEmailAddress=isEmailAddress;
function isEmailAddress()
{
	var mailCheck = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	return mailCheck.test(this);
}

String.prototype.jsnl2br=jsnl2br;
function jsnl2br()
{ 
	return this.replace(/\n/ig, "<br />");
}

String.prototype.isNumeric=isNumeric;
function isNumeric()
{
	return isFinite(this);
}

Array.prototype.containsItem = containsItem;
function containsItem(str_item)
{
	for (var i=0, len=this.length; i<len; i++)
	{
		if (this[i] == str_item)
		{
			return true;
		}
	}
	
	return false;
}

function getHashKeys(hashObj)
{
	var array_keys = new Array();
	
	for (i in hashObj) if (hashObj.hasOwnProperty(i))
	{
		array_keys.push(i);
	}
	
	return array_keys;
}

function getHTMLObjPosition(obj) 
{
	var curleft = curtop = 0;
	if (obj.offsetParent) 
	{
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) 
		{
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return {x:curleft, y:curtop};
}

function isEmpty(sText)
{
	return (sText.replace(/^\s*|\s*$/g,"").length==0);
}
			
function fixpngs(jqueryvar, blankImg) 
{
	// Manuele FIX, iepngfix werkt niet???
	if (typeof document.body.style.maxHeight == "undefined")
	{
		var array_elements = jqueryvar(".png");
				
		for (var i=0, len=array_elements.length; i<len; i++)
		{
			var element = array_elements[i];
			
			var dim = {
				width: element.offsetWidth,
				height: element.offsetHeight
			};
			
			if (element.src && element.src.indexOf("blank.gif") == -1)
			{
				element.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'" + element.src + "\');";
				element.src = blankImg;
				element.style.width = dim.width;
				element.style.height = dim.height;
			}
		}
	}
}

function parsexmlvaluestoobj(xmlnode)
{
	var returnobj;
	
	// Type van xmlnode opvragen
	var xmlnode_type = xmlnode.getAttribute("type");
	
	////////////////////////////////////////////////////////////////////
	// Geen type -> gewone value!!!
	if (xmlnode_type == undefined || xmlnode_type == null)
	{
		// Geen Type -> gewoon value
		if (xmlnode.firstChild && xmlnode.firstChild.nodeValue)
		{
			returnobj = xmlnode.firstChild.nodeValue;
		}
		else
		{
			returnobj = "";
		}
	}
	////////////////////////////////////////////////////////////////////
	// Array -> Subitems overlopen
	else if (xmlnode_type.equalsIgnoreCase("Array"))
	{
		returnobj = new Array();
		
		for (var i=0, len=xmlnode.childNodes.length; i<len; i++)
		{
			returnobj[returnobj.length] = parsexmlvaluestoobj(xmlnode.childNodes[i]);
		}
	}
	////////////////////////////////////////////////////////////////////
	// Hash -> Subkeys overlopen
	else if (xmlnode_type.equalsIgnoreCase("Struct"))
	{
		returnobj = {};
		
		for (var i=0, len=xmlnode.childNodes.length; i<len; i++)
		{
			var xml_subnode = xmlnode.childNodes[i];
			var itemkey = xml_subnode.getAttribute("name");
			
			if (itemkey != undefined)
			{
				returnobj[itemkey] = parsexmlvaluestoobj(xml_subnode);
			}
		}
	}
			
	return returnobj;
}

function deepCopy(originalobj) 
{
    var returnobj = new Object();
    
    if (typeof(originalobj) == 'object') 
    {
        if (typeof(originalobj.length) != 'undefined')
        {
            var returnobj = new Array();
            
	        for (var obj_index in originalobj)
	        {
	            if (typeof(originalobj[obj_index]) == 'object')
	            {
	                returnobj[obj_index] = deepCopy(originalobj[obj_index]);
	            }
	            else if (typeof(originalobj[obj_index]) == 'string')
	            {
	                returnobj[obj_index] = originalobj[obj_index];
	            }
	            else if (typeof(originalobj[obj_index]) == 'number')
	            {
	                returnobj[obj_index] = originalobj[obj_index];
	            }
	            else if (typeof(originalobj[obj_index]) == 'boolean')
	            {
	                ((originalobj[obj_index] == true) ? returnobj[obj_index] = true : returnobj[obj_index] = false);
	            }
	        }
		}
    }
    return returnobj;
}

function utf8_decode(utftext) 
{
	utftext = unescape(utftext);
	 var plaintext = ''; var i=0; var c=c1=c2=0;
	 // while-Schleife, weil einige Zeichen uebersprungen werden
	 while(i<utftext.length)
		 {
		 c = utftext.charCodeAt(i);
		 if (c<128) {
			 plaintext += String.fromCharCode(c);
			 i++;}
		 else if((c>191) && (c<224)) {
			 c2 = utftext.charCodeAt(i+1);
			 plaintext += String.fromCharCode(((c&31)<<6) | (c2&63));
			 i+=2;}
		 else {
			 c2 = utftext.charCodeAt(i+1); c3 = utftext.charCodeAt(i+2);
			 plaintext += String.fromCharCode(((c&15)<<12) | ((c2&63)<<6) | (c3&63));
			 i+=3;}
		 }
	 return plaintext;
}

function utf8_encode(argString) 
{
    var string = (argString+''); // .replace(/\r\n/g, "\n").replace(/\r/g, "\n");
    
    var utftext = "";
    var start, end;
    var stringl = 0;
    
    start = end = 0;
    stringl = string.length;
    for (var n = 0; n < stringl; n++) {
        var c1 = string.charCodeAt(n);
        var enc = null;
        
        if (c1 < 128) {
            end++;
        } else if (c1 > 127 && c1 < 2048) {
            enc = String.fromCharCode((c1 >> 6) | 192) + String.fromCharCode((c1 & 63) | 128);
        } else {
            enc = String.fromCharCode((c1 >> 12) | 224) + String.fromCharCode(((c1 >> 6) & 63) | 128) + String.fromCharCode((c1 & 63) | 128);
        }
        if (enc !== null) {
            if (end > start) {
                utftext += string.substring(start, end);
            }
            utftext += enc;
            start = end = n+1;
        }
    }
    
    if (end > start) {
        utftext += string.substring(start, string.length);
    }
    
    return utftext;
}

function newlinetobr(textstring)
{
	return textstring.replace(/\n/, "<br />");
}

function getarrayobjbyproperty(array_objs, propertyname, searchval)
{
	// Item binnen een array van hashen opzoeken adhv een bepaalde property en searchvalue
	var returnobj = undefined;
	
	for (var i=0, len=array_objs.length; i<len; i++)
	{
		var curobj = array_objs[i]
		
		if (curobj[propertyname] == searchval)
		{
			returnobj = curobj;
		}
	}
	
	return returnobj;
}

function urlencode(str)
{
	// string URLencoding op toepassen zodat deze kan worden via de GET querystring - niet nodig bij POST (duh)
	// Niet nodig voor alle karakters, enkel voor "probleemkarakters"
	
	str = str.replace("%", "%25");
	str = str.replace(" ", "%20");
	str = str.replace("#", "%23");
	str = str.replace("+", "%2b");
	str = str.replace("=", "%3d");
	str = str.replace("<", "%3c");
	str = str.replace(">", "%3e");
	str = str.replace("?", "%3f");
	str = str.replace("@", "%40");
	str = str.replace("\"", "%22");
	str = str.replace("'", "%27");
	
}

function cookie_set(name,value,days) 
{
	var expires = "";
	
	if (days) 
	{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		expires = "; expires="+date.toGMTString();
	}
	
	document.cookie = name+"="+value+expires+"; path=/";
}

function cookie_value(name) 
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	
	for(var i=0;i < ca.length;i++) 
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	
	return undefined;
}

function cookie_erase(name)
{
	cookie_set(name,"",-1);
}

function getPosition(e)
{
	var left = 0;
	var top  = 0;

	while (e.offsetParent)
	{
		left += e.offsetLeft;
		top  += e.offsetTop - e.scrollTop;
		e     = e.offsetParent;
	}

	left += e.offsetLeft;
	top  += e.offsetTop;

	return {x:left, y:top};
}

function getBodyDimensions()
{
	if (self.innerHeight)
	{
		return {
			width: self.innerWidth,
			height: self.innerHeight
		};
	}
	else if (document.documentElement && document.documentElement.clientHeight)
	{
		return {
			width: document.documentElement.clientWidth,
			height: document.documentElement.clientHeight
		};
	}
	else if (document.body)
	{
		return {
			width: document.body.clientWidth,
			height: document.body.clientHeight
		};
	}
}

function getBodyScroll()
{
	var scrOfX = 0, scrOfY = 0;
	if( typeof( window.pageYOffset ) == 'number' ) 
	{
		return {
			y: window.pageYOffset,
			x: window.pageXOffset
		};
	} 
	else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) 
	{
		return {
			y: document.body.scrollTop,
			x: document.body.scrollLeft
		};
	}
	else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) 
	{
		return {
			y: document.documentElement.scrollTop,
			x: document.documentElement.scrollLeft
		};
	}
}

var adminpopup;
function call_adminpopup(url){
	if(adminpopup){ adminpopup.close(); }

	var poppos = getOptimalPopupPosition(1000,600);
	
	adminpopup = window.open(url, 'Vit2PrintAdmin', 'width=1000,height=600,top=' + poppos.y + ',left=' + poppos.x + ',statusbar=yes,scrollbars=yes,resizable=yes');
    adminpopup();
}
function kill_adminpopup(){
	if(adminpopup){ adminpopup.close(); }
}