<!-- Content - inc/js/formValidator.js-->
function doValidate(form, labels, highlitecolors, nameActions)
{
  
  if(typeof fVLabels == "undefined")
  { 
    labels = new Array();
    labels[0] = "De volgende velden zijn verplicht";
    labels[1] = "Gebruik in deze velden alleen nummers";
    labels[2] = "Gebruik in deze velden alleen komma's";
    labels[3] = "Deze velden bevatten geen correct email adress";
    labels[4] = "Deze velden bevatten geen correcte datum";
    labels[5] = "De volgende fouten zijn opgetreden tijdens het invullen van het formulier";
    labels[6] = "Deze velden bevatten geen correcte postcode";
    labels[7] = "De volgende velden zijn ongelijk";
    labels[8] = "Deze velden bevatten geen correcte rekeningnummer, gebruik voor een postbankrekening als 1e teken P (bv. \'P1234\')";
    labels[9] = "Deze velden bevatten geen correcte tijd ";
    labels[10]= "Gebruik geen speciale characters";
    labels[11]= "Minimale waarde overschreden";
    labels[12]= "Maximale waarde overschreden";
    labels[13]= "Fout in custom func";
  }else
    labels = fVLabels;
    
  err = new Array();
  err[0] = new Array(); // Required
  err[1] = new Array(); // Numeric
  err[2] = new Array(); // Numeric - Commas
  err[3] = new Array(); // Email
  err[4] = new Array(); // Date
  err[5] = new Array(); // General error
  err[6] = new Array(); // Postal code
  err[7] = new Array(); // Postal code
  err[8] = new Array(); // No accountnumber
  err[9] = new Array(); // Time
  err[10]= new Array(); // No special chars
  err[11]= new Array(); // < Min
  err[12]= new Array(); // > Max
  err[13]= new Array(); // Custom func

  if(form && form.elements)
  {
    for(i=0;i<form.elements.length;i++)
    {
      el = form.elements[i];
      validate = el.getAttribute("validate");
      if(validate && validate!="")
      {
        try
        {
          validate = ("" + validate).split("-");
        }catch( e )
        {
          return false;
        }
        err_in_el = false;
        error_name = el.getAttribute("error") 
        if(error_name && error_name!="")
	        error = error_name;
  			else
        	error = getGoodName(el.name, nameActions);
              
        if(validate.length>0)
          tmp_name = error; //getGoodName(error, nameActions);
        new_validate = new Array();
        reg_exp = new RegExp("ifvalueof\((.)*,(.)*,(.)*\)");
        for( a = 0 ; a < validate.length ; a++)
        {
          ar  = reg_exp.exec(""+validate[a]);
          if(ar)
          {
            ar = (ar[1].substring(1, ar[1].length-1)).split(",");
            if(ar.length==3)
            {
              tmp_el = form.elements[ar[0]];
              equals = (ar[1].substring(0,1)!="!");
              if(!equals) ar[1] = (ar[1].substring(1));
              if(tmp_el && typeof tmp_el == "object")
              {
                try
                {
                  if(tmp_el.length > 0)
                  {
                    if(tmp_el[0].type && tmp_el[0].type.toLowerCase()=="radio")
                    {
                      for(b = 0; b < tmp_el.length; b++)
                        if(tmp_el[b].checked===true && ((equals && tmp_el[b].value==ar[1]) || (!equals && tmp_el[b].value!=ar[1])))
                          new_validate[new_validate.length] = ar[2];
                    }else if(tmp_el.tagName && tmp_el.tagName.toLowerCase()=="select")
                    {
                      if((equals && tmp_el[tmp_el.selectedIndex].value==ar[1]) || (!equals && tmp_el[tmp_el.selectedIndex].value!=ar[1]))
                        new_validate[new_validate.length] = ar[2];
                    }
                  }else if(tmp_el.tagName && tmp_el.tagName.toLowerCase()=="input")
                  {
                    if(tmp_el.type)
                    {
                      if(tmp_el.type.toLowerCase()=="checkbox")
                      {                        
                        if(((equals && tmp_el.checked && tmp_el.value==ar[1]) || (!equals && !tmp_el.checked && tmp_el.value==ar[1])))
                          new_validate[new_validate.length] = ar[2];
                      }else if(tmp_el.type.toLowerCase()=="text")
                      {
                        if((equals && tmp_el.value==ar[1]) || (!equals && tmp_el.value!=ar[1]))
                          new_validate[new_validate.length] = ar[2];
                      }
                    }
                  }
                }catch( e ) {}
              }else if(tmp_el && tmp_el.tagName && tmp_el.tagName.toLowerCase()=="input" && tmp_el.type && tmp_el.type.toLowerCase()=="text")
              {
                if(tmp_el.value == ar[1])
                  new_validate[new_validate.length] = ar[2];
              }
            }
          }else
            new_validate[new_validate.length] = validate[a];
        }
        validate = new_validate;
        must_be_equal_to = new RegExp("mustbeequalto\((.)*\)");
        one_must_be_set = new RegExp("onemustbeset\((.)*\)");
        custom = new RegExp("custom\((.)*\)");
        check_postal_code = new RegExp("checkpostalcode\((.)*\)");
        min = new RegExp("min\((.)*\)");
        max = new RegExp("max\((.)*\)");
        for( a = 0 ; a < validate.length ; a++)
        {
          if(!err_in_el)
          {
            if(validate[a] == "required")
            {
              if (el.type.toLowerCase() == "radio")
              {
                radio_el = document.forms[0].elements[(el.name)];
                err_in_el = true;
                for(var b=0; b < radio_el.length; b++)
                {
                  if(radio_el[b].checked)
                    err_in_el = false;
                }
              }else if (el.type.toLowerCase() == "checkbox")
              {
                if(!el.checked)
                  err_in_el = true;
              }else if (el.tagName.toLowerCase() == "select")
              {
                if(el.selectedIndex==-1 || el[el.selectedIndex].value=='')
                  err_in_el = true;
              }else if((typeof el.value != "undefined") && el.value=="")
              {
                err_in_el = true;
              }
              if(err_in_el)
                err[0][err[0].length] = tmp_name;
            }else if(validate[a] == "numeric")
            {            
              el.value = (""+el.value).replace(",",".");
              res =  checkNumeric(el.value);
              if(res < 0)
              {
                if(res < -1)
                  err[2][err[2].length] = tmp_name;
  
                err[1][err[1].length] = tmp_name;              
                err_in_el = true;
              }            
            }else if(validate[a] == "nospecialchars")
            {            
              res = el.value.search("'");
              res2 = el.value.search('"');
              if(res > 0 || res2 > 0)
              {
                //if(res < -1)
                  //err[2][err[2].length] = tmp_name;
  
                err[10][err[10].length] = tmp_name;              
                err_in_el = true;
              }                    
            }else if(validate[a] == "email")
            {
              if(!checkEmail(el.value))
              {
                err_in_el = true;
                err[3][err[3].length] = tmp_name;
              }
            }else if(validate[a] == "date")
            {
              if(!checkDate(el.value) && el.value!="")
              {
                err_in_el = true;
                err[4][err[4].length] = tmp_name;
              }
            }else if(validate[a] == "time")
            {
              if(!checkTime(el.value) && el.value!="")
              {
                err_in_el = true;
                err[9][err[9].length] = tmp_name;
              }
            }else if(validate[a] == "accountnumber")
            {
              if(!checkAccountNumber(el.value) && el.value!="")
              {
                err_in_el = true;
                err[8][err[8].length] = tmp_name;
              }
            	
            }else if(validate[a] == "nl_postal_code")
            {
              if(!checkNlPostalCode(el.value))
              {
                err_in_el = true;
                err[6][err[6].length] = tmp_name;
              }            
            }else if(ar = check_postal_code.exec(validate[a]))
            {
            	if(el.value != "undefined" && el.value != "")
            	{
	              land_id_el = (ar[1].substring(1, ar[1].length-1));
	
	              try
	              {
	                if(land_id_el = form.elements[land_id_el])
	                {
	                  if(land_id_el.value == '031')
	                  {
											if(!checkNlPostalCode(el.value))
				              {
				                err_in_el = true;
				                err[6][err[6].length] = tmp_name;
				              }
	                  }
	                }
	              }catch(e) {}
							}
            }else if(ar = must_be_equal_to.exec(validate[a]))
            {
              must_equal_el = (ar[1].substring(1, ar[1].length-1));
              try
              {
                if(must_equal_el = form.elements[must_equal_el])
                {
                  if((typeof must_equal_el.value != "undefined") && must_equal_el.value!=el.value)
                  {
                    err_in_el = true;
                    other_el = getGoodName(must_equal_el.name, nameActions);
                    err[7][err[7].length] = tmp_name + " != " + other_el;                   
                  }
                }
              }catch(e) {}
            }else if(ar = one_must_be_set.exec(validate[a]))
            {
            	this_or_el = (ar[1].substring(1, ar[1].length-1));
            	try
            	{
								if((typeof el.value != "undefined") && el.value=="")
              	{
              		if(this_or_el = form.elements[this_or_el])
              		{
	               		if((typeof this_or_el.value != "undefined") && this_or_el.value=="")
	               		{
	               			err_in_el = true;
	               			err[0][err[0].length] = tmp_name;
	               		}
	               	}
              	}
            	}catch(e) {}
            }else if(ar = min.exec(validate[a]))
            {
              minValue = (ar[1].substring(1, ar[1].length-1));
            	try
            	{
								if(checkNumeric(minValue)==0)
              	{
                  if(parseFloat(el.value) < minValue)
              		{
              			err_in_el = true;
              			err[11][err[11].length] = tmp_name;
              		}
              	}
            	}catch(e) {}
            }else if(ar = max.exec(validate[a]))
            {
              maxValue = (ar[1].substring(1, ar[1].length-1));
              
            	try
            	{
								if(checkNumeric(maxValue)==0)
              	{
                  if(parseFloat(el.value) > maxValue)
              		{
              			err_in_el = true;
              			err[12][err[12].length] = tmp_name;
              		}
              	}
            	}catch(e) {}
            }else if(ar = custom.exec(validate[a]))
            {
              customFunc = (ar[1].substring(1, ar[1].length-1));
            	try
            	{
								if(eval("typeof " + customFunc + " != 'undefined'"))
              	{
                  result = eval(customFunc+"()");
                  if(result != "")
                  {  
              			err_in_el = true;
              			err[13][err[13].length] = new Array(tmp_name, result);
                  }
              	}
            	}catch(e) {alert(e.message);}
            }
          }
        }
        if(err_in_el)
        {
          try
          {
            if(highlitecolors[0]!="")
              el.style.borderColor = highlitecolors[0];
            if(highlitecolors[1]!="")
              el.style.backgroundColor = highlitecolors[1];
          }catch ( e ) {}
        }else
        {
            if(highlitecolors[2]!="")
              el.style.borderColor = highlitecolors[2];
            if(highlitecolors[3]!="")
              el.style.backgroundColor = highlitecolors[3];
        }
      }
    }

    total_errs = 0;
    for(a=0;a<err.length;a++)
      total_errs += err[a].length;
    if(total_errs>0)
    {
      err_txt = labels[5] + ":\n\n";      
      for(a=0;a<err.length;a++)
      {
        if(err[a].length>0)
        {
          if(typeof err[a][0] != "object")
            err_txt += labels[a] + ":\n" + err[a].join(", ") + "\n\n";
          else
            err_txt += err[a][0][0] + ":\n" + err[a][0][1] + "\n\n";
        }
      }
      alert(err_txt);
    }else
      return true;
  }
  return false;
}

function checkEmail(email)
{
  regexp = /(\w+\-?\.?\w+\-?\w+)+@(\w+\-?\w+)(\.\w+)/;
  return (("" + email).match(regexp) || ("" + email)=="");
}
function checkDate(date)
{ 
  val = (""+date).split("-");
  if(val.length==3)
  {
    dat = new Date(val[0], val[1]-1, val[2]);
    newdat = new Date(Date.parse(dat));
    if(newdat==-1 || (newdat.getDate()!=Math.round(val[2]) || newdat.getFullYear()!=Math.round(val[0]) || newdat.getMonth()!=Math.round(val[1]-1)))
      return false;
  }else
    return false;

  return true;
}

function checkTime(time)
{
  val = (""+time).split(":");
  if(val.length==2)
  {
  	if (parseInt(val[0]) < 0 || parseInt(val[0]) >= 24)
      return false;
    if (parseInt(val[1]) < 0 || parseInt(val[1]) >= 60)
    	return false;
  }else
    return false;

  return true;
}

function checkNlPostalCode(code)
{
	tmp_val = code.replace(" ", "");
	first  = -1;
	second = -1;
	third  = -1;
	if(tmp_val.length == 6)
	{
	  first  = tmp_val.substring(0,4);
	  second = tmp_val.substring(4,5);                
	  third  = tmp_val.substring(5,6);

		if((checkNumeric(first) == 0) && (checkNumeric(second) == -1) && (checkNumeric(third) == -1))
			return true;
	}
	
	return false;
}

function cleanPostalCode(code)
{
	var postcode = removeSpaces(code);
  var first  = postcode.substring(0,4);
  var second = postcode.substring(4,6); 
  if(checkNlPostalCode(postcode))
		return first+' '+second.toUpperCase();

	return code;
}

function checkNumeric(number)
{
  res = 0;
  if(number != ((number/2)*2))
  {
    res--;
    if((""+number).indexOf(",")!=-1)
      res--;
  }
  return res;
}

function getGoodName(old, actions)
{
  for(var i=0; i < actions.length; i++)
  {
    if(actions[i][0])
    {
      switch(actions[i][0])
      {
        case "substring":        
          if(actions[i][2]=="-1")
            old = (""+old).substring(actions[i][1]);
          else 
            old = (""+old).substring(actions[i][1], actions[i][2]);
        break;
        
        case "replace":
          while(old.indexOf(actions[i][1])!=-1)
            old = (""+old).replace(actions[i][1], actions[i][2]);
        break;
        
        case "ucfirst":
          old = (old.substring(0, 1)).toUpperCase() + old.substring(1); 
        break;
      }
    }
  }
  return old;
}


function checkAccountNumber(number)
{
    // Rekeningnummer achterhalen
    number = number.replace(/ /g, '');
    number = number.replace(/\./g, '');
    if(number.charAt(0).toLowerCase()=='p')
    {
        number = number.substring(1);
        regexp = /^([0-9]*)$/;
        return ("" + number).match(regexp)!==null;
    }
    /* Maak sommige hoofd-variabelen */
  total = 0;
  count = 9;
  numberlength = 0;
  
  /* Maak een loop om elk afzonderlijk cijfer uit het hele nummer te halen.
     En vermeenvuldig het met $count (Deze begint bij 9 en loopt af.) */
  for(var i=0;i<number.length;i++)
  {
   number_temp = (""+number).substr(i,1);
   if(!checkNumeric(number_temp))
   {
    total = total + number_temp * count;
   	count--;
    numberlength++;
   }
  }
  
  /* Is het getal zonder punten en streepjes 9 cijfers lang? */
  if(numberlength != 9)
  	return false;
    
  /* Kijk of de som ($total) van alle cijfers in het nummer deelbaar is door 11.
     Hier mag ook geen cijfer achter de komma uitkomen! */
  if (total % 11 == 0){ return true; } else { return false; }

}

function checkAge(date, age)
{
  ok = false;
  if(checkDate(date))
  {
    val = (""+date).split("-");
    d = new Date();
    if((d.getYear() - val[2]) == age)
    {
      if(d.getMonth() <= (Math.round(val[1])-1))
      {
        if(d.getDate() >= (Math.round(val[0])))
          ok = true;        
      }else
        ok = true;
    }else if((d.getYear() - val[2]) > age)
      ok = true;
  }
  return ok;    
}


function removeSpaces(string) 
{
  var tstring = "";
  string = '' + string;
  splitstring = string.split(" ");
  for(i = 0; i < splitstring.length; i++)
  tstring += splitstring[i];
  return tstring;
}

function doSubmit(dovalidate, formname)
{
  var result = true;
  var nameActions = new Array();
      
  if(typeof dovalidate =='undefined' || dovalidate)
  {
 		nameActions = new Array(new Array("substring", "4", "-1"),
														new Array("replace", "_", " "),
														new Array("replace", "[", " "),
														new Array("replace", "]", ""),
                            new Array("ucfirst")
                           );
  	if(typeof formname =='undefined')
      formname = 0;
    
    result = doValidate(document.forms[formname], 
                        new Array(), 
                        new Array("red", 
                        					"white",
                                  "#999999",
                                  "white"), 
                        nameActions
                       );
  }
  return result;
}<!-- Content - inc/js/cssHover.js-->
var csshoverReg = /(^|\s)(([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active|focus)/i,
currentSheet, doc = window.document, hoverEvents = [], activators = {
	onhover:{on:'mouseover', off:'mouseout'},
	onactive:{on:'mousedown', off:'mouseup'},
	onfocus:{on:'focus', off:'blur'}
}
function myAddEvent(el, name, func)
{
  if(el.attachEvent)
	  el.attachEvent('on'+name, func);
  else if(el.addEventListener)
    el.addEventListener (name, func, false);
}
function myRemoveEvent(el, name, func)
{
  if(el.attachEvent)
	  el.detachEvent('on'+name, func);
  else if(window.addEvent)
  	el.removeEvent(name, func);
}
function parseStylesheets() {
//	if(!/MSIE (5|6)/.test(navigator.userAgent)) return;
	var sheets = doc.styleSheets, l = sheets.length;

  myAddEvent(window, "unload", unhookHoverEvents);
	for(var i=0; i<l; i++) 
		parseStylesheet(sheets[i]);
}
	function parseStylesheet(sheet) {

		if(sheet.imports) {
			try {
				var imports = sheet.imports, l = imports.length;
				for(var i=0; i<l; i++) parseStylesheet(sheet.imports[i]);
			} catch(securityException){}
		}
		try {
			var rules = (currentSheet = sheet).rules, l = rules.length;
			for(var j=0; j<l; j++) parseCSSRule(rules[j]);
		} catch(securityException){}
	}

	function parseCSSRule(rule) {
		var select = rule.selectorText, style = rule.style.cssText;
		if(!csshoverReg.test(select) || !style) return;
		
		var pseudo = select.replace(/[^:]+:([a-z-]+).*/i, 'on$1');
		var newSelect = select.replace(/(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi, '.$2' + pseudo);
		var className = (/\.([a-z0-9_-]*on(hover|active|focus))/i).exec(newSelect)[1];
		var affected = select.replace(/:(hover|active|focus).*$/, '');
		var elements = getElementsBySelect(affected);
		if(elements.length == 0) return;

		currentSheet.addRule(newSelect, style);
		for(var i=0; i<elements.length; i++)
			new HoverElement(elements[i], className, activators[pseudo]);
	}

function HoverElement(node, className, events) {
	if(!node.hovers) node.hovers = {};
	if(node.hovers[className]) return;
	node.hovers[className] = true;
	hookHoverEvent(node, events.on, function() { node.className += ' ' + className;});
	hookHoverEvent(node, events.off, function() { node.className = node.className.replace(new RegExp('\\s+'+className, 'g'),''); });
}
	function hookHoverEvent(node, type, handler) {
		myAddEvent(node, type, handler);
		hoverEvents[hoverEvents.length] = { 
			node:node, type:type, handler:handler 
		};
	}

	function unhookHoverEvents() {
		for(var e,i=0; i<hoverEvents.length; i++) {
			e = hoverEvents[i]; 
      myRemoveEvent(e.node, e.type, e.handler);
		}
	}

function getElementsBySelect(rule) {
	var parts, nodes = [doc];
	parts = rule.split(' ');
	for(var i=0; i<parts.length; i++) {
		nodes = getSelectedNodes(parts[i], nodes);
	}	return nodes;
}
	function getSelectedNodes(select, elements) {
		var result, node, nodes = [];
		var identify = (/\#([a-z0-9_-]+)/i).exec(select);
		if(identify) return [doc.getElementById(identify[1])];
		
		var classname = (/\.([a-z0-9_-]+)/i).exec(select);
		var tagName = select.replace(/(\.|\#|\:)[a-z0-9_-]+/i, '');
		var classReg = classname? new RegExp('\\b' + classname[1] + '\\b'):false;
		for(var i=0; i<elements.length; i++) {
			result = tagName? elements[i].all.tags(tagName):elements[i].all; 
			for(var j=0; j<result.length; j++) {
				node = result[j];
				if(classReg && !classReg.test(node.className)) continue;
				nodes[nodes.length] = node;
			}
		}	return nodes;
	}
<!-- Content - inc/js/calendar.js-->
var datePickerDivID = "datepicker";
var iFrameDivID = "datepickeriframe";

var dayArrayShort = new Array('Zo', 'Ma', 'Di', 'Wo', 'Do', 'Vr', 'Za');
var dayArrayMed = new Array('Zon', 'Ma', 'Di', 'Woe', 'Don', 'Vrij', 'Zat');
var dayArrayLong = new Array('Zondag', 'Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrijdag', 'Zaterdag');
var monthArrayShort = new Array('Jan', 'Feb', 'Maa', 'Apr', 'Mei', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
var monthArrayMed = new Array('Jan', 'Feb', 'Maa', 'Apr', 'Mei', 'Juni', 'Juli', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec');
var monthArrayLong = new Array('Januari', 'Februari', 'Maart', 'April', 'Mei', 'Juni', 'Juli', 'Augustus', 'September', 'October', 'November', 'December');

//var dayArrayShort = new Array('Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa');
//var dayArrayMed = new Array('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');
//var dayArrayLong = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
//var monthArrayShort = new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
//var monthArrayMed = new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec');
//var monthArrayLong = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');

// these variables define the date formatting we're expecting and outputting.
// If you want to use a different format by default, change the defaultDateSeparator
// and defaultDateFormat variables either here or on your HTML page.
var defaultDateSeparator = "-";        // common values would be "/" or "."
var defaultDateFormat = "ymd"    // valid values are "mdy", "dmy", and "ymd"
var dateSeparator = defaultDateSeparator;
var dateFormat = defaultDateFormat;

function displayDatePicker(dateFieldName, displayBelowThisObject, dtFormat, dtSep)
{
  var targetDateField = document.getElementsByName (dateFieldName).item(0);
 
  // if we weren't told what node to display the datepicker beneath, just display it
  // beneath the date field we're updating
  if (!displayBelowThisObject)
    displayBelowThisObject = targetDateField;
 
  // if a date separator character was given, update the dateSeparator variable
  if (dtSep)
    dateSeparator = dtSep;
  else
    dateSeparator = defaultDateSeparator;
 
  // if a date format was given, update the dateFormat variable
  if (dtFormat)
    dateFormat = dtFormat;
  else
    dateFormat = defaultDateFormat;
 
  var x = displayBelowThisObject.offsetLeft;
  var y = displayBelowThisObject.offsetTop + displayBelowThisObject.offsetHeight ;
 
  // deal with elements inside tables and such
  var parent = displayBelowThisObject;
  while (parent.offsetParent) {
    parent = parent.offsetParent;
    x += parent.offsetLeft;
    y += parent.offsetTop ;
  }
 
  drawDatePicker(targetDateField, x, y);
}


/**
Draw the datepicker object (which is just a table with calendar elements) at the
specified x and y coordinates, using the targetDateField object as the input tag
that will ultimately be populated with a date.

This function will normally be called by the displayDatePicker function.
*/
function drawDatePicker(targetDateField, x, y)
{
  var dt = getFieldDate(targetDateField.value );
 
  // the datepicker table will be drawn inside of a <div> with an ID defined by the
  // global datePickerDivID variable. If such a div doesn't yet exist on the HTML
  // document we're working with, add one.
  if (!document.getElementById(datePickerDivID)) {
    // don't use innerHTML to update the body, because it can cause global variables
    // that are currently pointing to objects on the page to have bad references
    //document.body.innerHTML += "<div id='" + datePickerDivID + "' class='dpDiv'></div>";
    var newNode = document.createElement("div");
    newNode.setAttribute("id", datePickerDivID);
    newNode.setAttribute("class", "dpDiv");
    newNode.setAttribute("style", "visibility: hidden;");
    document.body.appendChild(newNode);
  }
 
  // move the datepicker div to the proper x,y coordinate and toggle the visiblity
  var pickerDiv = document.getElementById(datePickerDivID);
  pickerDiv.style.position = "absolute";
  pickerDiv.style.left = x + "px";
  pickerDiv.style.top = y + "px";
  pickerDiv.style.visibility = (pickerDiv.style.visibility == "visible" ? "hidden" : "visible");
  pickerDiv.style.display = (pickerDiv.style.display == "block" ? "none" : "block");
  pickerDiv.style.zIndex = 10000;
 
  // draw the datepicker table
  refreshDatePicker(targetDateField.name, dt.getFullYear(), dt.getMonth(), dt.getDate());
}


/**
This is the function that actually draws the datepicker calendar.
*/
function refreshDatePicker(dateFieldName, year, month, day)
{
  // if no arguments are passed, use today's date; otherwise, month and year
  // are required (if a day is passed, it will be highlighted later)
  var thisDay = new Date();
 
  if ((month >= 0) && (year > 0)) {
    thisDay = new Date(year, month, 1);
  } else {
    day = thisDay.getDate();
    thisDay.setDate(1);
  }
 
  // the calendar will be drawn as a table
  // you can customize the table elements with a global CSS style sheet,
  // or by hardcoding style and formatting elements below
  var crlf = "\r\n";
  var TABLE = "<table cols=7 class='dpTable'>" + crlf;
  var xTABLE = "</table>" + crlf;
  var TR = "<tr class='dpTR'>";
  var TR_title = "<tr class='dpTitleTR'>";
  var TR_days = "<tr class='dpDayTR'>";
  var TR_todaybutton = "<tr class='dpTodayButtonTR'>";
  var xTR = "</tr>" + crlf;
  var TD = "<td class='dpTD' onMouseOut='this.className=\"dpTD\";' onMouseOver=' this.className=\"dpTDHover\";' ";    // leave this tag open, because we'll be adding an onClick event
  var TD_title = "<td colspan=5 class='dpTitleTD'>";
  var TD_buttons = "<td class='dpButtonTD'>";
  var TD_todaybutton = "<td colspan=7 class='dpTodayButtonTD'>";
  var TD_days = "<td class='dpDayTD'>";
  var TD_selected = "<td class='dpDayHighlightTD' onMouseOut='this.className=\"dpDayHighlightTD\";' onMouseOver='this.className=\"dpTDHover\";' ";    // leave this tag open, because we'll be adding an onClick event
  var xTD = "</td>" + crlf;
  var DIV_title = "<div class='dpTitleText'>";
  var DIV_selected = "<div class='dpDayHighlight'>";
  var xDIV = "</div>";
 
  // start generating the code for the calendar table
  var html = TABLE;
 
  // this is the title bar, which displays the month and the buttons to
  // go back to a previous month or forward to the next month
  html += TR_title;
  html += TD_buttons + getButtonCode(dateFieldName, thisDay, -1, "&lt;") + xTD;
  html += TD_title + DIV_title + monthArrayLong[ thisDay.getMonth()] + " " + thisDay.getFullYear() + xDIV + xTD;
  html += TD_buttons + getButtonCode(dateFieldName, thisDay, 1, "&gt;") + xTD;
  html += xTR;
 
  // this is the row that indicates which day of the week we're on
  html += TR_days;
  for(i = 0; i < dayArrayShort.length; i++)
    html += TD_days + dayArrayShort[i] + xTD;
  html += xTR;
 
  // now we'll start populating the table with days of the month
  html += TR;
 
  // first, the leading blanks
  for (i = 0; i < thisDay.getDay(); i++)
    html += TD + "&nbsp;" + xTD;
 
  // now, the days of the month
  do {
    dayNum = thisDay.getDate();
    TD_onclick = " onclick=\"updateDateField('" + dateFieldName + "', '" + getDateString(thisDay) + "');\">";
    
    if (dayNum == day)
      html += TD_selected + TD_onclick + DIV_selected + dayNum + xDIV + xTD;
    else
      html += TD + TD_onclick + dayNum + xTD;
    
    // if this is a Saturday, start a new row
    if (thisDay.getDay() == 6)
      html += xTR + TR;
    
    // increment the day
    thisDay.setDate(thisDay.getDate() + 1);
  } while (thisDay.getDate() > 1)
 
  // fill in any trailing blanks
  if (thisDay.getDay() > 0) {
    for (i = 6; i > thisDay.getDay(); i--)
      html += TD + "&nbsp;" + xTD;
  }
  html += xTR;
 
  // add a button to allow the user to easily return to today, or close the calendar
  var today = new Date();
  var todayString = "Today is " + dayArrayMed[today.getDay()] + ", " + monthArrayMed[ today.getMonth()] + " " + today.getDate();
  html += TR_todaybutton + TD_todaybutton;
  html += "<button class='dpTodayButton' onClick='refreshDatePicker(\"" + dateFieldName + "\");'>Deze maand</button> ";
  html += "<button class='dpTodayButton' onClick='updateDateField(\"" + dateFieldName + "\");'>Sluiten</button>";
  html += xTD + xTR;
 
  // and finally, close the table
  html += xTABLE;
 
  document.getElementById(datePickerDivID).innerHTML = html;
  // add an "iFrame shim" to allow the datepicker to display above selection lists
  adjustiFrame();
}


/**
Convenience function for writing the code for the buttons that bring us back or forward
a month.
*/
function getButtonCode(dateFieldName, dateVal, adjust, label)
{
  var newMonth = (dateVal.getMonth () + adjust) % 12;
  var newYear = dateVal.getFullYear() + parseInt((dateVal.getMonth() + adjust) / 12);
  if (newMonth < 0) {
    newMonth += 12;
    newYear += -1;
  }
 
  return "<button class='dpButton' onClick='refreshDatePicker(\"" + dateFieldName + "\", " + newYear + ", " + newMonth + ");'>" + label + "</button>";
}


/**
Convert a JavaScript Date object to a string, based on the dateFormat and dateSeparator
variables at the beginning of this script library.
*/
function getDateString(dateVal)
{
  var dayString = "00" + dateVal.getDate();
  var monthString = "00" + (dateVal.getMonth()+1);
  dayString = dayString.substring(dayString.length - 2);
  monthString = monthString.substring(monthString.length - 2);
 
  switch (dateFormat) {
    case "dmy" :
      return dayString + dateSeparator + monthString + dateSeparator + dateVal.getFullYear();
    case "ymd" :
      return dateVal.getFullYear() + dateSeparator + monthString + dateSeparator + dayString;
    case "mdy" :
    default :
      return monthString + dateSeparator + dayString + dateSeparator + dateVal.getFullYear();
  }
}


/**
Convert a string to a JavaScript Date object.
*/
function getFieldDate(dateString)
{
  var dateVal;
  var dArray;
  var d, m, y;
 
  try {
    dArray = splitDateString(dateString);
    if (dArray) {
      switch (dateFormat) {
        case "dmy" :
          d = parseInt(dArray[0], 10);
          m = parseInt(dArray[1], 10) - 1;
          y = parseInt(dArray[2], 10);
          break;
        case "ymd" :
          d = parseInt(dArray[2], 10);
          m = parseInt(dArray[1], 10) - 1;
          y = parseInt(dArray[0], 10);
          break;
        case "mdy" :
        default :
          d = parseInt(dArray[1], 10);
          m = parseInt(dArray[0], 10) - 1;
          y = parseInt(dArray[2], 10);
          break;
      }
      dateVal = new Date(y, m, d);
    } else if (dateString) {
      dateVal = new Date(dateString);
    } else {
      dateVal = new Date();
    }
  } catch(e) {
    dateVal = new Date();
  }
 
  return dateVal;
}


/**
Try to split a date string into an array of elements, using common date separators.
If the date is split, an array is returned; otherwise, we just return false.
*/
function splitDateString(dateString)
{
  var dArray;
  if (dateString.indexOf("/") >= 0)
    dArray = dateString.split("/");
  else if (dateString.indexOf(".") >= 0)
    dArray = dateString.split(".");
  else if (dateString.indexOf("-") >= 0)
    dArray = dateString.split("-");
  else if (dateString.indexOf("\\") >= 0)
    dArray = dateString.split("\\");
  else
    dArray = false;
 
  return dArray;
}

/**
Update the field with the given dateFieldName with the dateString that has been passed,
and hide the datepicker. If no dateString is passed, just close the datepicker without
changing the field value.

Also, if the page developer has defined a function called datePickerClosed anywhere on
the page or in an imported library, we will attempt to run that function with the updated
field as a parameter. This can be used for such things as date validation, setting default
values for related fields, etc. For example, you might have a function like this to validate
a start date field:

function datePickerClosed(dateField)
{
  var dateObj = getFieldDate(dateField.value);
  var today = new Date();
  today = new Date(today.getFullYear(), today.getMonth(), today.getDate());
 
  if (dateField.name == "StartDate") {
    if (dateObj < today) {
      // if the date is before today, alert the user and display the datepicker again
      alert("Please enter a date that is today or later");
      dateField.value = "";
      document.getElementById(datePickerDivID).style.visibility = "visible";
      adjustiFrame();
    } else {
      // if the date is okay, set the EndDate field to 7 days after the StartDate
      dateObj.setTime(dateObj.getTime() + (7 * 24 * 60 * 60 * 1000));
      var endDateField = document.getElementsByName ("EndDate").item(0);
      endDateField.value = getDateString(dateObj);
    }
  }
}

*/
function updateDateField(dateFieldName, dateString)
{
  var targetDateField = document.getElementsByName (dateFieldName).item(0);
  if (dateString)
    targetDateField.value = dateString;
 
  var pickerDiv = document.getElementById(datePickerDivID);
  pickerDiv.style.visibility = "hidden";
  pickerDiv.style.display = "none";
 
  adjustiFrame();
  targetDateField.focus();
 
  // after the datepicker has closed, optionally run a user-defined function called
  // datePickerClosed, passing the field that was just updated as a parameter
  // (note that this will only run if the user actually selected a date from the datepicker)
  if ((dateString) && (typeof(datePickerClosed) == "function"))
    datePickerClosed(targetDateField);
}


/**
Use an "iFrame shim" to deal with problems where the datepicker shows up behind
selection list elements, if they're below the datepicker. The problem and solution are
described at:

http://dotnetjunkies.com/WebLog/jking/archive/2003/07/21/488.aspx
http://dotnetjunkies.com/WebLog/jking/archive/2003/10/30/2975.aspx
*/
function adjustiFrame(pickerDiv, iFrameDiv)
{
  // we know that Opera doesn't like something about this, so if we
  // think we're using Opera, don't even try
  var is_opera = (navigator.userAgent.toLowerCase().indexOf("opera") != -1);
  if (is_opera)
    return;
  
  // put a try/catch block around the whole thing, just in case
  try {
    if (!document.getElementById(iFrameDivID)) {
      // don't use innerHTML to update the body, because it can cause global variables
      // that are currently pointing to objects on the page to have bad references
      //document.body.innerHTML += "<iframe id='" + iFrameDivID + "' src='javascript:false;' scrolling='no' frameborder='0'>";
      var newNode = document.createElement("iFrame");
      newNode.setAttribute("id", iFrameDivID);
      newNode.setAttribute("src", "javascript:false;");
      newNode.setAttribute("scrolling", "no");
      newNode.setAttribute ("frameborder", "0");
      document.body.appendChild(newNode);
    }
    
    if (!pickerDiv)
      pickerDiv = document.getElementById(datePickerDivID);
    if (!iFrameDiv)
      iFrameDiv = document.getElementById(iFrameDivID);
    
    try {
      iFrameDiv.style.position = "absolute";
      iFrameDiv.style.width = pickerDiv.offsetWidth;
      iFrameDiv.style.height = pickerDiv.offsetHeight ;
      iFrameDiv.style.top = pickerDiv.style.top;
      iFrameDiv.style.left = pickerDiv.style.left;
      iFrameDiv.style.zIndex = pickerDiv.style.zIndex - 1;
      iFrameDiv.style.visibility = pickerDiv.style.visibility ;
      iFrameDiv.style.display = pickerDiv.style.display;
    } catch(e) {
    }
 
  } catch (ee) {
  }
 
}<!-- Content - js/jquery.js-->
/*
 * jQuery 1.2.6 - New Wave Javascript
 *
 * Copyright (c) 2008 John Resig (jquery.com)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * $Date: 2008-05-24 14:22:17 -0400 (Sat, 24 May 2008) $
 * $Rev: 5685 $
 */
(function(){var _jQuery=window.jQuery,_$=window.$;var jQuery=window.jQuery=window.$=function(selector,context){return new jQuery.fn.init(selector,context);};var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/,isSimple=/^.[^:#\[\.]*$/,undefined;jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector||document;if(selector.nodeType){this[0]=selector;this.length=1;return this;}if(typeof selector=="string"){var match=quickExpr.exec(selector);if(match&&(match[1]||!context)){if(match[1])selector=jQuery.clean([match[1]],context);else{var elem=document.getElementById(match[3]);if(elem){if(elem.id!=match[3])return jQuery().find(selector);return jQuery(elem);}selector=[];}}else
return jQuery(context).find(selector);}else if(jQuery.isFunction(selector))return jQuery(document)[jQuery.fn.ready?"ready":"load"](selector);return this.setArray(jQuery.makeArray(selector));},jquery:"1.2.6",size:function(){return this.length;},length:0,get:function(num){return num==undefined?jQuery.makeArray(this):this[num];},pushStack:function(elems){var ret=jQuery(elems);ret.prevObject=this;return ret;},setArray:function(elems){this.length=0;Array.prototype.push.apply(this,elems);return this;},each:function(callback,args){return jQuery.each(this,callback,args);},index:function(elem){var ret=-1;return jQuery.inArray(elem&&elem.jquery?elem[0]:elem,this);},attr:function(name,value,type){var options=name;if(name.constructor==String)if(value===undefined)return this[0]&&jQuery[type||"attr"](this[0],name);else{options={};options[name]=value;}return this.each(function(i){for(name in options)jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name));});},css:function(key,value){if((key=='width'||key=='height')&&parseFloat(value)<0)value=undefined;return this.attr(key,value,"curCSS");},text:function(text){if(typeof text!="object"&&text!=null)return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text));var ret="";jQuery.each(text||this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8)ret+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this]);});});return ret;},wrapAll:function(html){if(this[0])jQuery(html,this[0].ownerDocument).clone().insertBefore(this[0]).map(function(){var elem=this;while(elem.firstChild)elem=elem.firstChild;return elem;}).append(this);return this;},wrapInner:function(html){return this.each(function(){jQuery(this).contents().wrapAll(html);});},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html);});},append:function(){return this.domManip(arguments,true,false,function(elem){if(this.nodeType==1)this.appendChild(elem);});},prepend:function(){return this.domManip(arguments,true,true,function(elem){if(this.nodeType==1)this.insertBefore(elem,this.firstChild);});},before:function(){return this.domManip(arguments,false,false,function(elem){this.parentNode.insertBefore(elem,this);});},after:function(){return this.domManip(arguments,false,true,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);});},end:function(){return this.prevObject||jQuery([]);},find:function(selector){var elems=jQuery.map(this,function(elem){return jQuery.find(selector,elem);});return this.pushStack(/[^+>] [^+>]/.test(selector)||selector.indexOf("..")>-1?jQuery.unique(elems):elems);},clone:function(events){var ret=this.map(function(){if(jQuery.browser.msie&&!jQuery.isXMLDoc(this)){var clone=this.cloneNode(true),container=document.createElement("div");container.appendChild(clone);return jQuery.clean([container.innerHTML])[0];}else
return this.cloneNode(true);});var clone=ret.find("*").andSelf().each(function(){if(this[expando]!=undefined)this[expando]=null;});if(events===true)this.find("*").andSelf().each(function(i){if(this.nodeType==3)return;var events=jQuery.data(this,"events");for(var type in events)for(var handler in events[type])jQuery.event.add(clone[i],type,events[type][handler],events[type][handler].data);});return ret;},filter:function(selector){return this.pushStack(jQuery.isFunction(selector)&&jQuery.grep(this,function(elem,i){return selector.call(elem,i);})||jQuery.multiFilter(selector,this));},not:function(selector){if(selector.constructor==String)if(isSimple.test(selector))return this.pushStack(jQuery.multiFilter(selector,this,true));else
selector=jQuery.multiFilter(selector,this);var isArrayLike=selector.length&&selector[selector.length-1]!==undefined&&!selector.nodeType;return this.filter(function(){return isArrayLike?jQuery.inArray(this,selector)<0:this!=selector;});},add:function(selector){return this.pushStack(jQuery.unique(jQuery.merge(this.get(),typeof selector=='string'?jQuery(selector):jQuery.makeArray(selector))));},is:function(selector){return!!selector&&jQuery.multiFilter(selector,this).length>0;},hasClass:function(selector){return this.is("."+selector);},val:function(value){if(value==undefined){if(this.length){var elem=this[0];if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type=="select-one";if(index<0)return null;for(var i=one?index:0,max=one?index+1:options.length;i<max;i++){var option=options[i];if(option.selected){value=jQuery.browser.msie&&!option.attributes.value.specified?option.text:option.value;if(one)return value;values.push(value);}}return values;}else
return(this[0].value||"").replace(/\r/g,"");}return undefined;}if(value.constructor==Number)value+='';return this.each(function(){if(this.nodeType!=1)return;if(value.constructor==Array&&/radio|checkbox/.test(this.type))this.checked=(jQuery.inArray(this.value,value)>=0||jQuery.inArray(this.name,value)>=0);else if(jQuery.nodeName(this,"select")){var values=jQuery.makeArray(value);jQuery("option",this).each(function(){this.selected=(jQuery.inArray(this.value,values)>=0||jQuery.inArray(this.text,values)>=0);});if(!values.length)this.selectedIndex=-1;}else
this.value=value;});},html:function(value){return value==undefined?(this[0]?this[0].innerHTML:null):this.empty().append(value);},replaceWith:function(value){return this.after(value).remove();},eq:function(i){return this.slice(i,i+1);},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments));},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},andSelf:function(){return this.add(this.prevObject);},data:function(key,value){var parts=key.split(".");parts[1]=parts[1]?"."+parts[1]:"";if(value===undefined){var data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data===undefined&&this.length)data=jQuery.data(this[0],key);return data===undefined&&parts[1]?this.data(parts[0]):data;}else
return this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQuery.data(this,key,value);});},removeData:function(key){return this.each(function(){jQuery.removeData(this,key);});},domManip:function(args,table,reverse,callback){var clone=this.length>1,elems;return this.each(function(){if(!elems){elems=jQuery.clean(args,this.ownerDocument);if(reverse)elems.reverse();}var obj=this;if(table&&jQuery.nodeName(this,"table")&&jQuery.nodeName(elems[0],"tr"))obj=this.getElementsByTagName("tbody")[0]||this.appendChild(this.ownerDocument.createElement("tbody"));var scripts=jQuery([]);jQuery.each(elems,function(){var elem=clone?jQuery(this).clone(true)[0]:this;if(jQuery.nodeName(elem,"script"))scripts=scripts.add(elem);else{if(elem.nodeType==1)scripts=scripts.add(jQuery("script",elem).remove());callback.call(obj,elem);}});scripts.each(evalScript);});}};jQuery.fn.init.prototype=jQuery.fn;function evalScript(i,elem){if(elem.src)jQuery.ajax({url:elem.src,async:false,dataType:"script"});else
jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"");if(elem.parentNode)elem.parentNode.removeChild(elem);}function now(){return+new Date;}jQuery.extend=jQuery.fn.extend=function(){var target=arguments[0]||{},i=1,length=arguments.length,deep=false,options;if(target.constructor==Boolean){deep=target;target=arguments[1]||{};i=2;}if(typeof target!="object"&&typeof target!="function")target={};if(length==i){target=this;--i;}for(;i<length;i++)if((options=arguments[i])!=null)for(var name in options){var src=target[name],copy=options[name];if(target===copy)continue;if(deep&&copy&&typeof copy=="object"&&!copy.nodeType)target[name]=jQuery.extend(deep,src||(copy.length!=null?[]:{}),copy);else if(copy!==undefined)target[name]=copy;}return target;};var expando="jQuery"+now(),uuid=0,windowData={},exclude=/z-?index|font-?weight|opacity|zoom|line-?height/i,defaultView=document.defaultView||{};jQuery.extend({noConflict:function(deep){window.$=_$;if(deep)window.jQuery=_jQuery;return jQuery;},isFunction:function(fn){return!!fn&&typeof fn!="string"&&!fn.nodeName&&fn.constructor!=Array&&/^[\s[]?function/.test(fn+"");},isXMLDoc:function(elem){return elem.documentElement&&!elem.body||elem.tagName&&elem.ownerDocument&&!elem.ownerDocument.body;},globalEval:function(data){data=jQuery.trim(data);if(data){var head=document.getElementsByTagName("head")[0]||document.documentElement,script=document.createElement("script");script.type="text/javascript";if(jQuery.browser.msie)script.text=data;else
script.appendChild(document.createTextNode(data));head.insertBefore(script,head.firstChild);head.removeChild(script);}},nodeName:function(elem,name){return elem.nodeName&&elem.nodeName.toUpperCase()==name.toUpperCase();},cache:{},data:function(elem,name,data){elem=elem==window?windowData:elem;var id=elem[expando];if(!id)id=elem[expando]=++uuid;if(name&&!jQuery.cache[id])jQuery.cache[id]={};if(data!==undefined)jQuery.cache[id][name]=data;return name?jQuery.cache[id][name]:id;},removeData:function(elem,name){elem=elem==window?windowData:elem;var id=elem[expando];if(name){if(jQuery.cache[id]){delete jQuery.cache[id][name];name="";for(name in jQuery.cache[id])break;if(!name)jQuery.removeData(elem);}}else{try{delete elem[expando];}catch(e){if(elem.removeAttribute)elem.removeAttribute(expando);}delete jQuery.cache[id];}},each:function(object,callback,args){var name,i=0,length=object.length;if(args){if(length==undefined){for(name in object)if(callback.apply(object[name],args)===false)break;}else
for(;i<length;)if(callback.apply(object[i++],args)===false)break;}else{if(length==undefined){for(name in object)if(callback.call(object[name],name,object[name])===false)break;}else
for(var value=object[0];i<length&&callback.call(value,i,value)!==false;value=object[++i]){}}return object;},prop:function(elem,value,type,i,name){if(jQuery.isFunction(value))value=value.call(elem,i);return value&&value.constructor==Number&&type=="curCSS"&&!exclude.test(name)?value+"px":value;},className:{add:function(elem,classNames){jQuery.each((classNames||"").split(/\s+/),function(i,className){if(elem.nodeType==1&&!jQuery.className.has(elem.className,className))elem.className+=(elem.className?" ":"")+className;});},remove:function(elem,classNames){if(elem.nodeType==1)elem.className=classNames!=undefined?jQuery.grep(elem.className.split(/\s+/),function(className){return!jQuery.className.has(classNames,className);}).join(" "):"";},has:function(elem,className){return jQuery.inArray(className,(elem.className||elem).toString().split(/\s+/))>-1;}},swap:function(elem,options,callback){var old={};for(var name in options){old[name]=elem.style[name];elem.style[name]=options[name];}callback.call(elem);for(var name in options)elem.style[name]=old[name];},css:function(elem,name,force){if(name=="width"||name=="height"){var val,props={position:"absolute",visibility:"hidden",display:"block"},which=name=="width"?["Left","Right"]:["Top","Bottom"];function getWH(){val=name=="width"?elem.offsetWidth:elem.offsetHeight;var padding=0,border=0;jQuery.each(which,function(){padding+=parseFloat(jQuery.curCSS(elem,"padding"+this,true))||0;border+=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||0;});val-=Math.round(padding+border);}if(jQuery(elem).is(":visible"))getWH();else
jQuery.swap(elem,props,getWH);return Math.max(0,val);}return jQuery.curCSS(elem,name,force);},curCSS:function(elem,name,force){var ret,style=elem.style;function color(elem){if(!jQuery.browser.safari)return false;var ret=defaultView.getComputedStyle(elem,null);return!ret||ret.getPropertyValue("color")=="";}if(name=="opacity"&&jQuery.browser.msie){ret=jQuery.attr(style,"opacity");return ret==""?"1":ret;}if(jQuery.browser.opera&&name=="display"){var save=style.outline;style.outline="0 solid black";style.outline=save;}if(name.match(/float/i))name=styleFloat;if(!force&&style&&style[name])ret=style[name];else if(defaultView.getComputedStyle){if(name.match(/float/i))name="float";name=name.replace(/([A-Z])/g,"-$1").toLowerCase();var computedStyle=defaultView.getComputedStyle(elem,null);if(computedStyle&&!color(elem))ret=computedStyle.getPropertyValue(name);else{var swap=[],stack=[],a=elem,i=0;for(;a&&color(a);a=a.parentNode)stack.unshift(a);for(;i<stack.length;i++)if(color(stack[i])){swap[i]=stack[i].style.display;stack[i].style.display="block";}ret=name=="display"&&swap[stack.length-1]!=null?"none":(computedStyle&&computedStyle.getPropertyValue(name))||"";for(i=0;i<swap.length;i++)if(swap[i]!=null)stack[i].style.display=swap[i];}if(name=="opacity"&&ret=="")ret="1";}else if(elem.currentStyle){var camelCase=name.replace(/\-(\w)/g,function(all,letter){return letter.toUpperCase();});ret=elem.currentStyle[name]||elem.currentStyle[camelCase];if(!/^\d+(px)?$/i.test(ret)&&/^\d/.test(ret)){var left=style.left,rsLeft=elem.runtimeStyle.left;elem.runtimeStyle.left=elem.currentStyle.left;style.left=ret||0;ret=style.pixelLeft+"px";style.left=left;elem.runtimeStyle.left=rsLeft;}}return ret;},clean:function(elems,context){var ret=[];context=context||document;if(typeof context.createElement=='undefined')context=context.ownerDocument||context[0]&&context[0].ownerDocument||document;jQuery.each(elems,function(i,elem){if(!elem)return;if(elem.constructor==Number)elem+='';if(typeof elem=="string"){elem=elem.replace(/(<(\w+)[^>]*?)\/>/g,function(all,front,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all:front+"></"+tag+">";});var tags=jQuery.trim(elem).toLowerCase(),div=context.createElement("div");var wrap=!tags.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!tags.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!tags.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!tags.indexOf("<td")||!tags.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!tags.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||jQuery.browser.msie&&[1,"div<div>","</div>"]||[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--)div=div.lastChild;if(jQuery.browser.msie){var tbody=!tags.indexOf("<table")&&tags.indexOf("<tbody")<0?div.firstChild&&div.firstChild.childNodes:wrap[1]=="<table>"&&tags.indexOf("<tbody")<0?div.childNodes:[];for(var j=tbody.length-1;j>=0;--j)if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)tbody[j].parentNode.removeChild(tbody[j]);if(/^\s/.test(elem))div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild);}elem=jQuery.makeArray(div.childNodes);}if(elem.length===0&&(!jQuery.nodeName(elem,"form")&&!jQuery.nodeName(elem,"select")))return;if(elem[0]==undefined||jQuery.nodeName(elem,"form")||elem.options)ret.push(elem);else
ret=jQuery.merge(ret,elem);});return ret;},attr:function(elem,name,value){if(!elem||elem.nodeType==3||elem.nodeType==8)return undefined;var notxml=!jQuery.isXMLDoc(elem),set=value!==undefined,msie=jQuery.browser.msie;name=notxml&&jQuery.props[name]||name;if(elem.tagName){var special=/href|src|style/.test(name);if(name=="selected"&&jQuery.browser.safari)elem.parentNode.selectedIndex;if(name in elem&&notxml&&!special){if(set){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode)throw"type property can't be changed";elem[name]=value;}if(jQuery.nodeName(elem,"form")&&elem.getAttributeNode(name))return elem.getAttributeNode(name).nodeValue;return elem[name];}if(msie&&notxml&&name=="style")return jQuery.attr(elem.style,"cssText",value);if(set)elem.setAttribute(name,""+value);var attr=msie&&notxml&&special?elem.getAttribute(name,2):elem.getAttribute(name);return attr===null?undefined:attr;}if(msie&&name=="opacity"){if(set){elem.zoom=1;elem.filter=(elem.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(value)+''=="NaN"?"":"alpha(opacity="+value*100+")");}return elem.filter&&elem.filter.indexOf("opacity=")>=0?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100)+'':"";}name=name.replace(/-([a-z])/ig,function(all,letter){return letter.toUpperCase();});if(set)elem[name]=value;return elem[name];},trim:function(text){return(text||"").replace(/^\s+|\s+$/g,"");},makeArray:function(array){var ret=[];if(array!=null){var i=array.length;if(i==null||array.split||array.setInterval||array.call)ret[0]=array;else
while(i)ret[--i]=array[i];}return ret;},inArray:function(elem,array){for(var i=0,length=array.length;i<length;i++)if(array[i]===elem)return i;return-1;},merge:function(first,second){var i=0,elem,pos=first.length;if(jQuery.browser.msie){while(elem=second[i++])if(elem.nodeType!=8)first[pos++]=elem;}else
while(elem=second[i++])first[pos++]=elem;return first;},unique:function(array){var ret=[],done={};try{for(var i=0,length=array.length;i<length;i++){var id=jQuery.data(array[i]);if(!done[id]){done[id]=true;ret.push(array[i]);}}}catch(e){ret=array;}return ret;},grep:function(elems,callback,inv){var ret=[];for(var i=0,length=elems.length;i<length;i++)if(!inv!=!callback(elems[i],i))ret.push(elems[i]);return ret;},map:function(elems,callback){var ret=[];for(var i=0,length=elems.length;i<length;i++){var value=callback(elems[i],i);if(value!=null)ret[ret.length]=value;}return ret.concat.apply([],ret);}});var userAgent=navigator.userAgent.toLowerCase();jQuery.browser={version:(userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[])[1],safari:/webkit/.test(userAgent),opera:/opera/.test(userAgent),msie:/msie/.test(userAgent)&&!/opera/.test(userAgent),mozilla:/mozilla/.test(userAgent)&&!/(compatible|webkit)/.test(userAgent)};var styleFloat=jQuery.browser.msie?"styleFloat":"cssFloat";jQuery.extend({boxModel:!jQuery.browser.msie||document.compatMode=="CSS1Compat",props:{"for":"htmlFor","class":"className","float":styleFloat,cssFloat:styleFloat,styleFloat:styleFloat,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing"}});jQuery.each({parent:function(elem){return elem.parentNode;},parents:function(elem){return jQuery.dir(elem,"parentNode");},next:function(elem){return jQuery.nth(elem,2,"nextSibling");},prev:function(elem){return jQuery.nth(elem,2,"previousSibling");},nextAll:function(elem){return jQuery.dir(elem,"nextSibling");},prevAll:function(elem){return jQuery.dir(elem,"previousSibling");},siblings:function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},children:function(elem){return jQuery.sibling(elem.firstChild);},contents:function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}},function(name,fn){jQuery.fn[name]=function(selector){var ret=jQuery.map(this,fn);if(selector&&typeof selector=="string")ret=jQuery.multiFilter(selector,ret);return this.pushStack(jQuery.unique(ret));};});jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(name,original){jQuery.fn[name]=function(){var args=arguments;return this.each(function(){for(var i=0,length=args.length;i<length;i++)jQuery(args[i])[original](this);});};});jQuery.each({removeAttr:function(name){jQuery.attr(this,name,"");if(this.nodeType==1)this.removeAttribute(name);},addClass:function(classNames){jQuery.className.add(this,classNames);},removeClass:function(classNames){jQuery.className.remove(this,classNames);},toggleClass:function(classNames){jQuery.className[jQuery.className.has(this,classNames)?"remove":"add"](this,classNames);},remove:function(selector){if(!selector||jQuery.filter(selector,[this]).r.length){jQuery("*",this).add(this).each(function(){jQuery.event.remove(this);jQuery.removeData(this);});if(this.parentNode)this.parentNode.removeChild(this);}},empty:function(){jQuery(">*",this).remove();while(this.firstChild)this.removeChild(this.firstChild);}},function(name,fn){jQuery.fn[name]=function(){return this.each(fn,arguments);};});jQuery.each(["Height","Width"],function(i,name){var type=name.toLowerCase();jQuery.fn[type]=function(size){return this[0]==window?jQuery.browser.opera&&document.body["client"+name]||jQuery.browser.safari&&window["inner"+name]||document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||document.body["client"+name]:this[0]==document?Math.max(Math.max(document.body["scroll"+name],document.documentElement["scroll"+name]),Math.max(document.body["offset"+name],document.documentElement["offset"+name])):size==undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,size.constructor==String?size:size+"px");};});function num(elem,prop){return elem[0]&&parseInt(jQuery.curCSS(elem[0],prop,true),10)||0;}var chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:[\\w*_-]|\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=new RegExp("^>\\s*("+chars+"+)"),quickID=new RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=new RegExp("^([#.]?)("+chars+"*)");jQuery.extend({expr:{"":function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);},"#":function(a,i,m){return a.getAttribute("id")==m[2];},":":{lt:function(a,i,m){return i<m[3]-0;},gt:function(a,i,m){return i>m[3]-0;},nth:function(a,i,m){return m[3]-0==i;},eq:function(a,i,m){return m[3]-0==i;},first:function(a,i){return i==0;},last:function(a,i,m,r){return i==r.length-1;},even:function(a,i){return i%2==0;},odd:function(a,i){return i%2;},"first-child":function(a){return a.parentNode.getElementsByTagName("*")[0]==a;},"last-child":function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;},"only-child":function(a){return!jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},parent:function(a){return a.firstChild;},empty:function(a){return!a.firstChild;},contains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0;},visible:function(a){return"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";},hidden:function(a){return"hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden";},enabled:function(a){return!a.disabled;},disabled:function(a){return a.disabled;},checked:function(a){return a.checked;},selected:function(a){return a.selected||jQuery.attr(a,"selected");},text:function(a){return"text"==a.type;},radio:function(a){return"radio"==a.type;},checkbox:function(a){return"checkbox"==a.type;},file:function(a){return"file"==a.type;},password:function(a){return"password"==a.type;},submit:function(a){return"submit"==a.type;},image:function(a){return"image"==a.type;},reset:function(a){return"reset"==a.type;},button:function(a){return"button"==a.type||jQuery.nodeName(a,"button");},input:function(a){return/input|select|textarea|button/i.test(a.nodeName);},has:function(a,i,m){return jQuery.find(m[3],a).length;},header:function(a){return/h\d/i.test(a.nodeName);},animated:function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var old,cur=[];while(expr&&expr!=old){old=expr;var f=jQuery.filter(expr,elems,not);expr=f.t.replace(/^\s*,\s*/,"");cur=not?elems=f.r:jQuery.merge(cur,f.r);}return cur;},find:function(t,context){if(typeof t!="string")return[t];if(context&&context.nodeType!=1&&context.nodeType!=9)return[];context=context||document;var ret=[context],done=[],last,nodeName;while(t&&last!=t){var r=[];last=t;t=jQuery.trim(t);var foundToken=false,re=quickChild,m=re.exec(t);if(m){nodeName=m[1].toUpperCase();for(var i=0;ret[i];i++)for(var c=ret[i].firstChild;c;c=c.nextSibling)if(c.nodeType==1&&(nodeName=="*"||c.nodeName.toUpperCase()==nodeName))r.push(c);ret=r;t=t.replace(re,"");if(t.indexOf(" ")==0)continue;foundToken=true;}else{re=/^([>+~])\s*(\w*)/i;if((m=re.exec(t))!=null){r=[];var merge={};nodeName=m[2].toUpperCase();m=m[1];for(var j=0,rl=ret.length;j<rl;j++){var n=m=="~"||m=="+"?ret[j].nextSibling:ret[j].firstChild;for(;n;n=n.nextSibling)if(n.nodeType==1){var id=jQuery.data(n);if(m=="~"&&merge[id])break;if(!nodeName||n.nodeName.toUpperCase()==nodeName){if(m=="~")merge[id]=true;r.push(n);}if(m=="+")break;}}ret=r;t=jQuery.trim(t.replace(re,""));foundToken=true;}}if(t&&!foundToken){if(!t.indexOf(",")){if(context==ret[0])ret.shift();done=jQuery.merge(done,ret);r=ret=[context];t=" "+t.substr(1,t.length);}else{var re2=quickID;var m=re2.exec(t);if(m){m=[0,m[2],m[3],m[1]];}else{re2=quickClass;m=re2.exec(t);}m[2]=m[2].replace(/\\/g,"");var elem=ret[ret.length-1];if(m[1]=="#"&&elem&&elem.getElementById&&!jQuery.isXMLDoc(elem)){var oid=elem.getElementById(m[2]);if((jQuery.browser.msie||jQuery.browser.opera)&&oid&&typeof oid.id=="string"&&oid.id!=m[2])oid=jQuery('[@id="'+m[2]+'"]',elem)[0];ret=r=oid&&(!m[3]||jQuery.nodeName(oid,m[3]))?[oid]:[];}else{for(var i=0;ret[i];i++){var tag=m[1]=="#"&&m[3]?m[3]:m[1]!=""||m[0]==""?"*":m[2];if(tag=="*"&&ret[i].nodeName.toLowerCase()=="object")tag="param";r=jQuery.merge(r,ret[i].getElementsByTagName(tag));}if(m[1]==".")r=jQuery.classFilter(r,m[2]);if(m[1]=="#"){var tmp=[];for(var i=0;r[i];i++)if(r[i].getAttribute("id")==m[2]){tmp=[r[i]];break;}r=tmp;}ret=r;}t=t.replace(re2,"");}}if(t){var val=jQuery.filter(t,r);ret=r=val.r;t=jQuery.trim(val.t);}}if(t)ret=[];if(ret&&context==ret[0])ret.shift();done=jQuery.merge(done,ret);return done;},classFilter:function(r,m,not){m=" "+m+" ";var tmp=[];for(var i=0;r[i];i++){var pass=(" "+r[i].className+" ").indexOf(m)>=0;if(!not&&pass||not&&!pass)tmp.push(r[i]);}return tmp;},filter:function(t,r,not){var last;while(t&&t!=last){last=t;var p=jQuery.parse,m;for(var i=0;p[i];i++){m=p[i].exec(t);if(m){t=t.substring(m[0].length);m[2]=m[2].replace(/\\/g,"");break;}}if(!m)break;if(m[1]==":"&&m[2]=="not")r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3]);else if(m[1]==".")r=jQuery.classFilter(r,m[2],not);else if(m[1]=="["){var tmp=[],type=m[3];for(var i=0,rl=r.length;i<rl;i++){var a=r[i],z=a[jQuery.props[m[2]]||m[2]];if(z==null||/href|src|selected/.test(m[2]))z=jQuery.attr(a,m[2])||'';if((type==""&&!!z||type=="="&&z==m[5]||type=="!="&&z!=m[5]||type=="^="&&z&&!z.indexOf(m[5])||type=="$="&&z.substr(z.length-m[5].length)==m[5]||(type=="*="||type=="~=")&&z.indexOf(m[5])>=0)^not)tmp.push(a);}r=tmp;}else if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||1))-0,last=test[3]-0;for(var i=0,rl=r.length;i<rl;i++){var node=r[i],parentNode=node.parentNode,id=jQuery.data(parentNode);if(!merge[id]){var c=1;for(var n=parentNode.firstChild;n;n=n.nextSibling)if(n.nodeType==1)n.nodeIndex=c++;merge[id]=true;}var add=false;if(first==0){if(node.nodeIndex==last)add=true;}else if((node.nodeIndex-last)%first==0&&(node.nodeIndex-last)/first>=0)add=true;if(add^not)tmp.push(node);}r=tmp;}else{var fn=jQuery.expr[m[1]];if(typeof fn=="object")fn=fn[m[2]];if(typeof fn=="string")fn=eval("false||function(a,i){return "+fn+";}");r=jQuery.grep(r,function(elem,i){return fn(elem,i,m,r);},not);}}return{r:r,t:t};},dir:function(elem,dir){var matched=[],cur=elem[dir];while(cur&&cur!=document){if(cur.nodeType==1)matched.push(cur);cur=cur[dir];}return matched;},nth:function(cur,result,dir,elem){result=result||1;var num=0;for(;cur;cur=cur[dir])if(cur.nodeType==1&&++num==result)break;return cur;},sibling:function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType==1&&n!=elem)r.push(n);}return r;}});jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3||elem.nodeType==8)return;if(jQuery.browser.msie&&elem.setInterval)elem=window;if(!handler.guid)handler.guid=this.guid++;if(data!=undefined){var fn=handler;handler=this.proxy(fn,function(){return fn.apply(this,arguments);});handler.data=data;}var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle")||jQuery.data(elem,"handle",function(){if(typeof jQuery!="undefined"&&!jQuery.event.triggered)return jQuery.event.handle.apply(arguments.callee.elem,arguments);});handle.elem=elem;jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];handler.type=parts[1];var handlers=events[type];if(!handlers){handlers=events[type]={};if(!jQuery.event.special[type]||jQuery.event.special[type].setup.call(elem)===false){if(elem.addEventListener)elem.addEventListener(type,handle,false);else if(elem.attachEvent)elem.attachEvent("on"+type,handle);}}handlers[handler.guid]=handler;jQuery.event.global[type]=true;});elem=null;},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3||elem.nodeType==8)return;var events=jQuery.data(elem,"events"),ret,index;if(events){if(types==undefined||(typeof types=="string"&&types.charAt(0)=="."))for(var type in events)this.remove(elem,type+(types||""));else{if(types.type){handler=types.handler;types=types.type;}jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];if(events[type]){if(handler)delete events[type][handler.guid];else
for(handler in events[type])if(!parts[1]||events[type][handler].type==parts[1])delete events[type][handler];for(ret in events[type])break;if(!ret){if(!jQuery.event.special[type]||jQuery.event.special[type].teardown.call(elem)===false){if(elem.removeEventListener)elem.removeEventListener(type,jQuery.data(elem,"handle"),false);else if(elem.detachEvent)elem.detachEvent("on"+type,jQuery.data(elem,"handle"));}ret=null;delete events[type];}}});}for(ret in events)break;if(!ret){var handle=jQuery.data(elem,"handle");if(handle)handle.elem=null;jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle");}}},trigger:function(type,data,elem,donative,extra){data=jQuery.makeArray(data);if(type.indexOf("!")>=0){type=type.slice(0,-1);var exclusive=true;}if(!elem){if(this.global[type])jQuery("*").add([window,document]).trigger(type,data);}else{if(elem.nodeType==3||elem.nodeType==8)return undefined;var val,ret,fn=jQuery.isFunction(elem[type]||null),event=!data[0]||!data[0].preventDefault;if(event){data.unshift({type:type,target:elem,preventDefault:function(){},stopPropagation:function(){},timeStamp:now()});data[0][expando]=true;}data[0].type=type;if(exclusive)data[0].exclusive=true;var handle=jQuery.data(elem,"handle");if(handle)val=handle.apply(elem,data);if((!fn||(jQuery.nodeName(elem,'a')&&type=="click"))&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false)val=false;if(event)data.shift();if(extra&&jQuery.isFunction(extra)){ret=extra.apply(elem,val==null?data:data.concat(val));if(ret!==undefined)val=ret;}if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(elem,'a')&&type=="click")){this.triggered=true;try{elem[type]();}catch(e){}}this.triggered=false;}return val;},handle:function(event){var val,ret,namespace,all,handlers;event=arguments[0]=jQuery.event.fix(event||window.event);namespace=event.type.split(".");event.type=namespace[0];namespace=namespace[1];all=!namespace&&!event.exclusive;handlers=(jQuery.data(this,"events")||{})[event.type];for(var j in handlers){var handler=handlers[j];if(all||handler.type==namespace){event.handler=handler;event.data=handler.data;ret=handler.apply(this,arguments);if(val!==false)val=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}}return val;},fix:function(event){if(event[expando]==true)return event;var originalEvent=event;event={originalEvent:originalEvent};var props="altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which".split(" ");for(var i=props.length;i;i--)event[props[i]]=originalEvent[props[i]];event[expando]=true;event.preventDefault=function(){if(originalEvent.preventDefault)originalEvent.preventDefault();originalEvent.returnValue=false;};event.stopPropagation=function(){if(originalEvent.stopPropagation)originalEvent.stopPropagation();originalEvent.cancelBubble=true;};event.timeStamp=event.timeStamp||now();if(!event.target)event.target=event.srcElement||document;if(event.target.nodeType==3)event.target=event.target.parentNode;if(!event.relatedTarget&&event.fromElement)event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc.clientTop||0);}if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode))event.which=event.charCode||event.keyCode;if(!event.metaKey&&event.ctrlKey)event.metaKey=event.ctrlKey;if(!event.which&&event.button)event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));return event;},proxy:function(fn,proxy){proxy.guid=fn.guid=fn.guid||proxy.guid||this.guid++;return proxy;},special:{ready:{setup:function(){bindReady();return;},teardown:function(){return;}},mouseenter:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseenter";return jQuery.event.handle.apply(this,arguments);}},mouseleave:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseleave";return jQuery.event.handle.apply(this,arguments);}}}};jQuery.fn.extend({bind:function(type,data,fn){return type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn||data,fn&&data);});},one:function(type,data,fn){var one=jQuery.event.proxy(fn||data,function(event){jQuery(this).unbind(event,one);return(fn||data).apply(this,arguments);});return this.each(function(){jQuery.event.add(this,type,one,fn&&data);});},unbind:function(type,fn){return this.each(function(){jQuery.event.remove(this,type,fn);});},trigger:function(type,data,fn){return this.each(function(){jQuery.event.trigger(type,data,this,true,fn);});},triggerHandler:function(type,data,fn){return this[0]&&jQuery.event.trigger(type,data,this[0],false,fn);},toggle:function(fn){var args=arguments,i=1;while(i<args.length)jQuery.event.proxy(fn,args[i++]);return this.click(jQuery.event.proxy(fn,function(event){this.lastToggle=(this.lastToggle||0)%i;event.preventDefault();return args[this.lastToggle++].apply(this,arguments)||false;}));},hover:function(fnOver,fnOut){return this.bind('mouseenter',fnOver).bind('mouseleave',fnOut);},ready:function(fn){bindReady();if(jQuery.isReady)fn.call(document,jQuery);else
jQuery.readyList.push(function(){return fn.call(this,jQuery);});return this;}});jQuery.extend({isReady:false,readyList:[],ready:function(){if(!jQuery.isReady){jQuery.isReady=true;if(jQuery.readyList){jQuery.each(jQuery.readyList,function(){this.call(document);});jQuery.readyList=null;}jQuery(document).triggerHandler("ready");}}});var readyBound=false;function bindReady(){if(readyBound)return;readyBound=true;if(document.addEventListener&&!jQuery.browser.opera)document.addEventListener("DOMContentLoaded",jQuery.ready,false);if(jQuery.browser.msie&&window==top)(function(){if(jQuery.isReady)return;try{document.documentElement.doScroll("left");}catch(error){setTimeout(arguments.callee,0);return;}jQuery.ready();})();if(jQuery.browser.opera)document.addEventListener("DOMContentLoaded",function(){if(jQuery.isReady)return;for(var i=0;i<document.styleSheets.length;i++)if(document.styleSheets[i].disabled){setTimeout(arguments.callee,0);return;}jQuery.ready();},false);if(jQuery.browser.safari){var numStyles;(function(){if(jQuery.isReady)return;if(document.readyState!="loaded"&&document.readyState!="complete"){setTimeout(arguments.callee,0);return;}if(numStyles===undefined)numStyles=jQuery("style, link[rel=stylesheet]").length;if(document.styleSheets.length!=numStyles){setTimeout(arguments.callee,0);return;}jQuery.ready();})();}jQuery.event.add(window,"load",jQuery.ready);}jQuery.each(("blur,focus,load,resize,scroll,unload,click,dblclick,"+"mousedown,mouseup,mousemove,mouseover,mouseout,change,select,"+"submit,keydown,keypress,keyup,error").split(","),function(i,name){jQuery.fn[name]=function(fn){return fn?this.bind(name,fn):this.trigger(name);};});var withinElement=function(event,elem){var parent=event.relatedTarget;while(parent&&parent!=elem)try{parent=parent.parentNode;}catch(error){parent=elem;}return parent==elem;};jQuery(window).bind("unload",function(){jQuery("*").add(document).unbind();});jQuery.fn.extend({_load:jQuery.fn.load,load:function(url,params,callback){if(typeof url!='string')return this._load(url);var off=url.indexOf(" ");if(off>=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}callback=callback||function(){};var type="GET";if(params)if(jQuery.isFunction(params)){callback=params;params=null;}else{params=jQuery.param(params);type="POST";}var self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"||status=="notmodified")self.html(selector?jQuery("<div/>").append(res.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(selector):res.responseText);self.each(callback,[res.responseText,status,res]);}});return this;},serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();}});jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(i,o){jQuery.fn[o]=function(f){return this.bind(o,f);};});var jsc=now();jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data=null;}return jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type});},getScript:function(url,callback){return jQuery.get(url,null,callback,"script");},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},post:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type});},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settings);},ajaxSettings:{url:location.href,global:true,type:"GET",timeout:0,contentType:"application/x-www-form-urlencoded",processData:true,async:true,data:null,username:null,password:null,accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(s){s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));var jsonp,jsre=/=\?(&|$)/g,status,data,type=s.type.toUpperCase();if(s.data&&s.processData&&typeof s.data!="string")s.data=jQuery.param(s.data);if(s.dataType=="jsonp"){if(type=="GET"){if(!s.url.match(jsre))s.url+=(s.url.match(/\?/)?"&":"?")+(s.jsonp||"callback")+"=?";}else if(!s.data||!s.data.match(jsre))s.data=(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=?";s.dataType="json";}if(s.dataType=="json"&&(s.data&&s.data.match(jsre)||s.url.match(jsre))){jsonp="jsonp"+jsc++;if(s.data)s.data=(s.data+"").replace(jsre,"="+jsonp+"$1");s.url=s.url.replace(jsre,"="+jsonp+"$1");s.dataType="script";window[jsonp]=function(tmp){data=tmp;success();complete();window[jsonp]=undefined;try{delete window[jsonp];}catch(e){}if(head)head.removeChild(script);};}if(s.dataType=="script"&&s.cache==null)s.cache=false;if(s.cache===false&&type=="GET"){var ts=now();var ret=s.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+ts+"$2");s.url=ret+((ret==s.url)?(s.url.match(/\?/)?"&":"?")+"_="+ts:"");}if(s.data&&type=="GET"){s.url+=(s.url.match(/\?/)?"&":"?")+s.data;s.data=null;}if(s.global&&!jQuery.active++)jQuery.event.trigger("ajaxStart");var remote=/^(?:\w+:)?\/\/([^\/?#]+)/;if(s.dataType=="script"&&type=="GET"&&remote.test(s.url)&&remote.exec(s.url)[1]!=location.host){var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.src=s.url;if(s.scriptCharset)script.charset=s.scriptCharset;if(!jsonp){var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){done=true;success();complete();head.removeChild(script);}};}head.appendChild(script);return undefined;}var requestDone=false;var xhr=window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();if(s.username)xhr.open(type,s.url,s.async,s.username,s.password);else
xhr.open(type,s.url,s.async);try{if(s.data)xhr.setRequestHeader("Content-Type",s.contentType);if(s.ifModified)xhr.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]||"Thu, 01 Jan 1970 00:00:00 GMT");xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");xhr.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataType]+", */*":s.accepts._default);}catch(e){}if(s.beforeSend&&s.beforeSend(xhr,s)===false){s.global&&jQuery.active--;xhr.abort();return false;}if(s.global)jQuery.event.trigger("ajaxSend",[xhr,s]);var onreadystatechange=function(isTimeout){if(!requestDone&&xhr&&(xhr.readyState==4||isTimeout=="timeout")){requestDone=true;if(ival){clearInterval(ival);ival=null;}status=isTimeout=="timeout"&&"timeout"||!jQuery.httpSuccess(xhr)&&"error"||s.ifModified&&jQuery.httpNotModified(xhr,s.url)&&"notmodified"||"success";if(status=="success"){try{data=jQuery.httpData(xhr,s.dataType,s.dataFilter);}catch(e){status="parsererror";}}if(status=="success"){var modRes;try{modRes=xhr.getResponseHeader("Last-Modified");}catch(e){}if(s.ifModified&&modRes)jQuery.lastModified[s.url]=modRes;if(!jsonp)success();}else
jQuery.handleError(s,xhr,status);complete();if(s.async)xhr=null;}};if(s.async){var ival=setInterval(onreadystatechange,13);if(s.timeout>0)setTimeout(function(){if(xhr){xhr.abort();if(!requestDone)onreadystatechange("timeout");}},s.timeout);}try{xhr.send(s.data);}catch(e){jQuery.handleError(s,xhr,null,e);}if(!s.async)onreadystatechange();function success(){if(s.success)s.success(data,status);if(s.global)jQuery.event.trigger("ajaxSuccess",[xhr,s]);}function complete(){if(s.complete)s.complete(xhr,status);if(s.global)jQuery.event.trigger("ajaxComplete",[xhr,s]);if(s.global&&!--jQuery.active)jQuery.event.trigger("ajaxStop");}return xhr;},handleError:function(s,xhr,status,e){if(s.error)s.error(xhr,status,e);if(s.global)jQuery.event.trigger("ajaxError",[xhr,s,e]);},active:0,httpSuccess:function(xhr){try{return!xhr.status&&location.protocol=="file:"||(xhr.status>=200&&xhr.status<300)||xhr.status==304||xhr.status==1223||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpNotModified:function(xhr,url){try{var xhrRes=xhr.getResponseHeader("Last-Modified");return xhr.status==304||xhrRes==jQuery.lastModified[url]||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpData:function(xhr,type,filter){var ct=xhr.getResponseHeader("content-type"),xml=type=="xml"||!type&&ct&&ct.indexOf("xml")>=0,data=xml?xhr.responseXML:xhr.responseText;if(xml&&data.documentElement.tagName=="parsererror")throw"parsererror";if(filter)data=filter(data,type);if(type=="script")jQuery.globalEval(data);if(type=="json")data=eval("("+data+")");return data;},param:function(a){var s=[];if(a.constructor==Array||a.jquery)jQuery.each(a,function(){s.push(encodeURIComponent(this.name)+"="+encodeURIComponent(this.value));});else
for(var j in a)if(a[j]&&a[j].constructor==Array)jQuery.each(a[j],function(){s.push(encodeURIComponent(j)+"="+encodeURIComponent(this));});else
s.push(encodeURIComponent(j)+"="+encodeURIComponent(jQuery.isFunction(a[j])?a[j]():a[j]));return s.join("&").replace(/%20/g,"+");}});jQuery.fn.extend({show:function(speed,callback){return speed?this.animate({height:"show",width:"show",opacity:"show"},speed,callback):this.filter(":hidden").each(function(){this.style.display=this.oldblock||"";if(jQuery.css(this,"display")=="none"){var elem=jQuery("<"+this.tagName+" />").appendTo("body");this.style.display=elem.css("display");if(this.style.display=="none")this.style.display="block";elem.remove();}}).end();},hide:function(speed,callback){return speed?this.animate({height:"hide",width:"hide",opacity:"hide"},speed,callback):this.filter(":visible").each(function(){this.oldblock=this.oldblock||jQuery.css(this,"display");this.style.display="none";}).end();},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){return jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle.apply(this,arguments):fn?this.animate({height:"toggle",width:"toggle",opacity:"toggle"},fn,fn2):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();});},slideDown:function(speed,callback){return this.animate({height:"show"},speed,callback);},slideUp:function(speed,callback){return this.animate({height:"hide"},speed,callback);},slideToggle:function(speed,callback){return this.animate({height:"toggle"},speed,callback);},fadeIn:function(speed,callback){return this.animate({opacity:"show"},speed,callback);},fadeOut:function(speed,callback){return this.animate({opacity:"hide"},speed,callback);},fadeTo:function(speed,to,callback){return this.animate({opacity:to},speed,callback);},animate:function(prop,speed,easing,callback){var optall=jQuery.speed(speed,easing,callback);return this[optall.queue===false?"each":"queue"](function(){if(this.nodeType!=1)return false;var opt=jQuery.extend({},optall),p,hidden=jQuery(this).is(":hidden"),self=this;for(p in prop){if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden)return opt.complete.call(this);if(p=="height"||p=="width"){opt.display=jQuery.css(this,"display");opt.overflow=this.style.overflow;}}if(opt.overflow!=null)this.style.overflow="hidden";opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var e=new jQuery.fx(self,opt,name);if(/toggle|show|hide/.test(val))e[val=="toggle"?hidden?"show":"hide":val](prop);else{var parts=val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),start=e.cur(true)||0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]||"px";if(unit!="px"){self.style[name]=(end||1)+unit;start=((end||1)/e.cur(true))*start;self.style[name]=start+unit;}if(parts[1])end=((parts[1]=="-="?-1:1)*end)+start;e.custom(start,end,unit);}else
e.custom(start,val,"");}});return true;});},queue:function(type,fn){if(jQuery.isFunction(type)||(type&&type.constructor==Array)){fn=type;type="fx";}if(!type||(typeof type=="string"&&!fn))return queue(this[0],type);return this.each(function(){if(fn.constructor==Array)queue(this,type,fn);else{queue(this,type).push(fn);if(queue(this,type).length==1)fn.call(this);}});},stop:function(clearQueue,gotoEnd){var timers=jQuery.timers;if(clearQueue)this.queue([]);this.each(function(){for(var i=timers.length-1;i>=0;i--)if(timers[i].elem==this){if(gotoEnd)timers[i](true);timers.splice(i,1);}});if(!gotoEnd)this.dequeue();return this;}});var queue=function(elem,type,array){if(elem){type=type||"fx";var q=jQuery.data(elem,type+"queue");if(!q||array)q=jQuery.data(elem,type+"queue",jQuery.makeArray(array));}return q;};jQuery.fn.dequeue=function(type){type=type||"fx";return this.each(function(){var q=queue(this,type);q.shift();if(q.length)q[0].call(this);});};jQuery.extend({speed:function(speed,easing,fn){var opt=speed&&speed.constructor==Object?speed:{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&easing.constructor!=Function&&easing};opt.duration=(opt.duration&&opt.duration.constructor==Number?opt.duration:jQuery.fx.speeds[opt.duration])||jQuery.fx.speeds.def;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false)jQuery(this).dequeue();if(jQuery.isFunction(opt.old))opt.old.call(this);};return opt;},easing:{linear:function(p,n,firstNum,diff){return firstNum+diff*p;},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum;}},timers:[],timerId:null,fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig)options.orig={};}});jQuery.fx.prototype={update:function(){if(this.options.step)this.options.step.call(this.elem,this.now,this);(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);if(this.prop=="height"||this.prop=="width")this.elem.style.display="block";},cur:function(force){if(this.elem[this.prop]!=null&&this.elem.style[this.prop]==null)return this.elem[this.prop];var r=parseFloat(jQuery.css(this.elem,this.prop,force));return r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0;},custom:function(from,to,unit){this.startTime=now();this.start=from;this.end=to;this.unit=unit||this.unit||"px";this.now=this.start;this.pos=this.state=0;this.update();var self=this;function t(gotoEnd){return self.step(gotoEnd);}t.elem=this.elem;jQuery.timers.push(t);if(jQuery.timerId==null){jQuery.timerId=setInterval(function(){var timers=jQuery.timers;for(var i=0;i<timers.length;i++)if(!timers[i]())timers.splice(i--,1);if(!timers.length){clearInterval(jQuery.timerId);jQuery.timerId=null;}},13);}},show:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.show=true;this.custom(0,this.cur());if(this.prop=="width"||this.prop=="height")this.elem.style[this.prop]="1px";jQuery(this.elem).show();},hide:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0);},step:function(gotoEnd){var t=now();if(gotoEnd||t>this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var done=true;for(var i in this.options.curAnim)if(this.options.curAnim[i]!==true)done=false;if(done){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(jQuery.css(this.elem,"display")=="none")this.elem.style.display="block";}if(this.options.hide)this.elem.style.display="none";if(this.options.hide||this.options.show)for(var p in this.options.curAnim)jQuery.attr(this.elem.style,p,this.options.orig[p]);}if(done)this.options.complete.call(this.elem);return false;}else{var n=t-this.startTime;this.state=n/this.options.duration;this.pos=jQuery.easing[this.options.easing||(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update();}return true;}};jQuery.extend(jQuery.fx,{speeds:{slow:600,fast:200,def:400},step:{scrollLeft:function(fx){fx.elem.scrollLeft=fx.now;},scrollTop:function(fx){fx.elem.scrollTop=fx.now;},opacity:function(fx){jQuery.attr(fx.elem.style,"opacity",fx.now);},_default:function(fx){fx.elem.style[fx.prop]=fx.now+fx.unit;}}});jQuery.fn.offset=function(){var left=0,top=0,elem=this[0],results;if(elem)with(jQuery.browser){var parent=elem.parentNode,offsetChild=elem,offsetParent=elem.offsetParent,doc=elem.ownerDocument,safari2=safari&&parseInt(version)<522&&!/adobeair/i.test(userAgent),css=jQuery.curCSS,fixed=css(elem,"position")=="fixed";if(elem.getBoundingClientRect){var box=elem.getBoundingClientRect();add(box.left+Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),box.top+Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));add(-doc.documentElement.clientLeft,-doc.documentElement.clientTop);}else{add(elem.offsetLeft,elem.offsetTop);while(offsetParent){add(offsetParent.offsetLeft,offsetParent.offsetTop);if(mozilla&&!/^t(able|d|h)$/i.test(offsetParent.tagName)||safari&&!safari2)border(offsetParent);if(!fixed&&css(offsetParent,"position")=="fixed")fixed=true;offsetChild=/^body$/i.test(offsetParent.tagName)?offsetChild:offsetParent;offsetParent=offsetParent.offsetParent;}while(parent&&parent.tagName&&!/^body|html$/i.test(parent.tagName)){if(!/^inline|table.*$/i.test(css(parent,"display")))add(-parent.scrollLeft,-parent.scrollTop);if(mozilla&&css(parent,"overflow")!="visible")border(parent);parent=parent.parentNode;}if((safari2&&(fixed||css(offsetChild,"position")=="absolute"))||(mozilla&&css(offsetChild,"position")!="absolute"))add(-doc.body.offsetLeft,-doc.body.offsetTop);if(fixed)add(Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));}results={top:top,left:left};}function border(elem){add(jQuery.curCSS(elem,"borderLeftWidth",true),jQuery.curCSS(elem,"borderTopWidth",true));}function add(l,t){left+=parseInt(l,10)||0;top+=parseInt(t,10)||0;}return results;};jQuery.fn.extend({position:function(){var left=0,top=0,results;if(this[0]){var offsetParent=this.offsetParent(),offset=this.offset(),parentOffset=/^body|html$/i.test(offsetParent[0].tagName)?{top:0,left:0}:offsetParent.offset();offset.top-=num(this,'marginTop');offset.left-=num(this,'marginLeft');parentOffset.top+=num(offsetParent,'borderTopWidth');parentOffset.left+=num(offsetParent,'borderLeftWidth');results={top:offset.top-parentOffset.top,left:offset.left-parentOffset.left};}return results;},offsetParent:function(){var offsetParent=this[0].offsetParent;while(offsetParent&&(!/^body|html$/i.test(offsetParent.tagName)&&jQuery.css(offsetParent,'position')=='static'))offsetParent=offsetParent.offsetParent;return jQuery(offsetParent);}});jQuery.each(['Left','Top'],function(i,name){var method='scroll'+name;jQuery.fn[method]=function(val){if(!this[0])return;return val!=undefined?this.each(function(){this==window||this==document?window.scrollTo(!i?val:jQuery(window).scrollLeft(),i?val:jQuery(window).scrollTop()):this[method]=val;}):this[0]==window||this[0]==document?self[i?'pageYOffset':'pageXOffset']||jQuery.boxModel&&document.documentElement[method]||document.body[method]:this[0][method];};});jQuery.each(["Height","Width"],function(i,name){var tl=i?"Left":"Top",br=i?"Right":"Bottom";jQuery.fn["inner"+name]=function(){return this[name.toLowerCase()]()+num(this,"padding"+tl)+num(this,"padding"+br);};jQuery.fn["outer"+name]=function(margin){return this["inner"+name]()+num(this,"border"+tl+"Width")+num(this,"border"+br+"Width")+(margin?num(this,"margin"+tl)+num(this,"margin"+br):0);};});})();<!-- Content - inc/js/functions.js-->
var isOpera = (navigator.userAgent.indexOf('Opera') != -1);
var isIE = (!isOpera && navigator.userAgent.indexOf('MSIE') != -1);

function getClientWidth() {
  if( typeof( window.innerWidth ) == 'number' )
    return window.innerWidth;
  else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) )
    return document.documentElement.clientWidth;
  else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) )
    return document.body.clientHeight;
}
function getClientHeight() {
  if( typeof( window.innerWidth ) == 'number' )
    return window.innerHeight;
  else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) )
    return document.documentElement.clientHeight;
  else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) )
    return document.body.clientHeight;
}
function unHSC(s) { //UnHtmlSpecialChars
  if(s)
  { 
    while(s.indexOf("&quot;")!=-1)
      s = s.replace("&quot;", '"');
    while(s.indexOf("&lt;")!=-1)
      s = s.replace("&lt;", '<');
    while(s.indexOf("&gt;")!=-1)
      s = s.replace("&gt;", '>');
    while(s.indexOf("&amp;")!=-1) // Deze als laatste!
      s = s.replace("&amp;", '&');
  }
  return s;
}
function HSC(s) { //HtmlSpecialChars 
  while(s.indexOf('"')!=-1)
    s = s.replace('"', "&quot;");
  while(s.indexOf('<')!=-1)
    s = s.replace('<', "&lt;");
  while(s.indexOf('>')!=-1)
    s = s.replace('>', "&gt;");

  return s;
}
function moveItem(from, to, item, select) {
  var o = new Option(item.innerHTML, item.value);
  o.className = item.className;
  if(typeof select != 'undefined')
  o.selected = "selected";
  try {
    to.add(o);
  }catch(e) {
    if(to.appendChild)
      to.appendChild(o);
  }
  
  from.remove(item.index);
  return false;
}

function moveSelectedItems(from, to, select) {
  for(i=from.length-1;i>=0;i--)
    if(from[i].selected)
      moveItem(from, to, from[i], select);

  return false;
}

// Move all item from selectlist 'from' to selectlist 'to'
function moveAll(from, to, select) {
  for(i=from.length-1;i>=0;i--)
    moveItem(from, to, from[i], select);
  return false;
}

function splitMoveAll(from, tos, select) {
  for(i=from.length-1;i>=0;i--)
    if(typeof tos[from[i].className] != 'undefined')
      moveItem(from, tos[from[i].className], from[i], select);

  return false;
}

function splitMoveSelectedItems(from, tos, select) {
  for(i=from.length-1;i>=0;i--)
    if(from[i].selected)
      if(typeof tos[from[i].className] != 'undefined')
        moveItem(from, tos[from[i].className], from[i], select);

  return false;
}
function moveSelectedItemUp(el)
{
  if(el && el.selectedIndex > 0)
  {
    i = el.selectedIndex;
    opt = el[i];
    el.remove(i);
    el.add(opt, i-1); 
  }
}
function moveSelectedItemDown(el)
{
  if(el && el.selectedIndex!=(el.length-1))
  {
    i = el.selectedIndex;
    opt = el[i];
    el.remove(i);
    el.add(opt, i+1); 
  }
}

function setHiddenOptionValue(hiddenfield, selectbox) {
  hiddenfield.value = getHiddenOptionValue(selectbox);
}

function getHiddenOptionValue(selectbox) {
  value = "";
  separator = "**";
  for(i=0;i<selectbox.length;i++)
    value += (value!=''?separator:'') + selectbox[i].value;

  return value;
}
xtraWin = null;
function openCenteredWindow(url, width, height) {
  var theHeight = height;
  var theWidth = width;
  var theTop=(screen.height/2)-(theHeight/2);
  var theLeft=(screen.width/2)-(theWidth/2);
  var features= 'height='+theHeight+
               ',width='+theWidth+
               ',top='+theTop+
               ',left='+theLeft+
               ",status=no,toolbar=no,menubar=no,location=no,directories=no,resizable=no,titlebar=no, scrollbars=yes";
  xtraWin = window.open(url, "extra_window", features);
  xtraWin.focus();
  return false;
}
function getById(divID, oDoc) {
  if( document.getElementById )
    return document.getElementById(divID);
  if( document.all )
    return document.all[divID];
  if( !oDoc ) { oDoc = document; }
  if( document.layers ) 
  {
    if( oDoc.layers[divID] ) 
      return oDoc.layers[divID]; 
    else 
    {
      //repeatedly run through all child layers
      for( var x = 0, y; !y && x < oDoc.layers.length; x++ ) 
      {
        //on success, return that layer, else return nothing
        y = getRefToDiv(divID,oDoc.layers[x].document); 
      }
      return y; 
    } 
  }
  alert("(functions.js) : Invalid element: " + id);
  return null;
}
function hoverRow(el, on)
{
  if(on)
    el.className = el.className + "_hover";
  else
    el.className = el.className.replace("_hover", "");
}

function checkStockDivs(el)
{
  if(typeof stock == 'undefined') stock = new Array();
  nr_selected = 0;
  for(i=0;i<el.length;i++)
  {
    k = el[i].value.replace('stock[','').replace(']','');
    cur = !(!stock[k] || stock[k]==''); 

    if(cur && !el[i].selected)
    {
      stock[k] = '';
      tmp = getById('stock_'+k);
      tmp.parentNode.removeChild(tmp);
    }else if(!cur && el[i].selected)
    {
      tmp = document.createElement('div');
      tmp.setAttribute("id", 'stock_'+k);
      tmp.className = 'stock_div';

      tmp2 = document.createElement('div');
      tmp2.innerHTML = k;
      
      tmp3 = document.createElement('input');
      tmp3.className = 'input_small';
      tmp3.setAttribute("type", 'text');
      tmp3.setAttribute("name", 'stock['+k+']');
      tmp3.setAttribute("validate", 'required-numeric');
      tmp3.setAttribute("value", '0');

      tmp.appendChild(tmp2);
      tmp.appendChild(tmp3);
      
      parentEl = getById('stock_divs');

      old = null;
      if(parentEl.childNodes[nr_selected])
        old = parentEl.childNodes[nr_selected];
      parentEl.insertBefore(tmp, old);
      stock[k] = '0';
    }

    if(el[i].selected) nr_selected++;      
  }
}
var editedPage = false;
function checkChanges()
{
  return (typeof editedPage=='undefined' || !editedPage || confirm('Let op: U heeft uw wijzigingen nog niet bewaard!\n\nKlik op "OK" om verder te gaan (niet bewaren) of\nklik op "Annuleren" om de gegevens alsnog te kunnen bewaren.'));
}
function parse_PriceRange()
{   
   text = document.getElementById('price_range').options[document.getElementById('price_range').selectedIndex].value;
   str = new Array();
   if(text != '')
    str = text.split('-');
  
    
   if(typeof str[0] != 'undefined')
    document.getElementById('min_price').value = str[0];
   else
    document.getElementById('min_price').value = "";
   
   if(typeof str[1] != 'undefined')
    document.getElementById('max_price').value = str[1];
   else
    document.getElementById('max_price').value = "";
}

function getFilterString(sep, add)
{
  if(typeof sep =='undefined') sep = '/';
  if(typeof add =='undefined') add = '';
  var x=document.getElementById("filterFormDum");
  
  var info = "";
  for(var i=0;i<x.length;i++)
  {
    if(x.elements[i].name.match("i-") && x.elements[i].value != "")
    {
      if(x.elements[i].name=='i-brand-')
        info += x.elements[i].value + "-schoenen" + sep;
      else
        info += x.elements[i].name + add + x.elements[i].value + sep;
    }
  }
  return info;
}

function doFilterSubmit()
{
  var x=document.getElementById("filterForm");
  x.action = x.action+getFilterString();
  x.submit();
}

shopImgs = new Array('oosterhout_1.jpg','oosterhout_2.jpg','oosterhout_3.jpg','oosterhout_4.jpg',                     
                     'leerdam_1.jpg','leerdam_2.jpg','leerdam_3.jpg','leerdam_4.jpg','leerdam_5.jpg',                     
                     'gorinchem_1.jpg','gorinchem_2.jpg','gorinchem_3.jpg','gorinchem_4.jpg','gorinchem_5.jpg','gorinchem_5.jpg',                     
                     'gorinchemKids_1.jpg','gorinchemKids_2.jpg','gorinchemKids_3.jpg','gorinchemKids_4.jpg','gorinchemKids_5.jpg','gorinchem_kids_5.jpg',                     
                     'dordrecht_1.jpg','dordrecht_2.jpg','dordrecht_3.jpg','dordrecht_4.jpg', 
                     'lisse_1.jpg','lisse_2.jpg');
interval = null;
preloadImg = new Array();
lastShop = '';
function addEvent(el, ev, func)
{
  if(el.addEventListener)
  {
    el.addEventListener(ev, func, true);  
  }else if(el.attachEvent)
  {
    el.attachEvent('on'+ev, func);
  }
}
function getInd()
{
  do
  {
    ind = Math.floor(Math.random()*(shopImgs.length+1));
  }while((ind >= shopImgs.length) || (typeof shopImgs[ind] == 'undefined'));
  return ind;
}
function rotateShopImages()
{
  if(interval!=null) clearTimeout(interval);

  nr = getInd();

  if((typeof preloadImg[nr] == 'undefined') || !preloadImg[nr].src)
  {
    preloadImg[nr] = new Image(); 
    preloadImg[nr].src = cust_site_url+'img/shopImages/'+shopImgs[nr];
    func  = function() {doRotateShopImage(shopImgs[nr], preloadImg[nr].src)};
    func2 = function() {rotateShopImages()};
    addEvent(preloadImg[nr], 'load', func);
    addEvent(preloadImg[nr], 'error', func2);
    addEvent(preloadImg[nr], 'abort', func2);
  }else
  {
    doRotateShopImage(shopImgs[nr], preloadImg[nr].src);
  }
}
function doRotateShopImage(title, src)
{
  shop = (""+title).substring(0, (""+title).lastIndexOf('_'));
  if(shop != lastShop)
  {
    shopEl = getById("shop_"+shop);
    if(shopEl)
      shopEl.style.paddingLeft = '20px';
    if(lastShop!='')
    {
      shopEl = getById("shop_"+lastShop);
      shopEl.style.paddingLeft = '0px';
    }
    lastShop = shop;
  }
  el = getById('shopImg');
  el.style.backgroundImage = 'url("'+src+'")';

  interval = setTimeout('rotateShopImages()', 3000);
}  

function initShop(el)
{
  if(!el.getAttribute("did_init"))
  {
    addEvent(el, 'click', clickShop);
    addEvent(el, 'mouseover', hoverShop);
    addEvent(el, 'mouseout', hoverShop);
    
    hoverShop(null, el);
    el.setAttribute("did_init", 1);
  }
}
function clickShop(e)
{
  id = (e.srcElement?e.srcElement:e.target).getAttribute("id");
  id = id.replace("shop_", "");
  if(id.indexOf("Kids")!==-1)
  {
    id = 'kinderen-'+id.replace("Kids", "");
  }
  document.location = site_url + "schoenenwinkel-" + id;
}
function hoverShop(e, el)
{
  if(typeof el == 'undefined')
    el = (e?(e.srcElement?e.srcElement:e.target):null);
  if(el)
  {
    on = el.style.fontStyle=='';
    el.style.fontStyle = (on?'italic':'');
  }
}
function validString(s) {
  return encodeURIComponent(s);
}
opening = false;
function changeFilters(url, args, func, form, target)  {
  if(!opening)
  {
    parse_PriceRange();
    initiated = false;
    opening = true;
    async = (typeof async == "undefined");
    request_complete = false;
    try { http_request = new ActiveXObject("Msxml2.XMLHTTP"); }
    catch (e) { try { http_request = new ActiveXObject("Microsoft.XMLHTTP"); }
    catch (e) { try { http_request = new XMLHttpRequest(); }
    catch (e) { try { http_request = window.createRequest(); }
    catch (e) { http_request = false; }}}}
    
    if (!http_request) {
      // Throw error
      alert("Please upgrade browser. XMLHttp object can't be created...");
      return false;
    }
    post_args = getFilterString("&", "=");
    url = site_url + 'm-products/?getFilters=1';
    openedurl = url;

    http_request.open("POST", url, async);
    try {
      http_request.setRequestHeader("Method", "POST "+url+" HTTP/1.1");
      http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
      http_request.setRequestHeader('Connection', 'close');
    }catch(e){alert(e.message);}

    functie = function()
    {
      if ((http_request.readyState == 4 || http_request.readyState == "complete") && !request_complete) 
      { 
        request_complete = true;
        opening = false;
        doChangeFilters(http_request);
      }
    };
    set = false;
    try { http_request.onload             = functie; set = true; }catch(e) {}
    if(!set)
      try { http_request.onreadystatechange = functie; set = true;}catch(e) {}

    http_request.send(post_args);
  }
}
function doChangeFilters(res)
{
  if(res.responseText!='')
  {
    filters = res.responseText.split('****');
    form = document.forms['filterFormDum'];
    for(var i=0;i<filters.length;i++)
    {
      opts = filters[i].split("----");
      orikey = opts[0].substring(0, opts[0].length-1);
      key = 'i-'+orikey+'-';
      elm = form.elements[key];
      if(elm)
      {
        elm.disabled = "";
        selVal = elm[elm.selectedIndex].value;
        while(elm.length > 1)
          elm.remove(1);
  
        if(opts.length > 1)
        {
          for(var a=1;a<opts.length;a++)
          {
            opt = (opts[a]+"").split("++++");
            if(orikey=='type' || orikey=='size' || orikey=='color')
              opt[0] = (""+opt[0]).toLowerCase();
            o = new Option(opt[1], opt[0]);
            if(selVal==opt[0]) o.selected = "selected";
            //alert(opt[0] + "  "+  opt[1]);
            try {
              elm.add(o);
            }catch(e) {
              if(elm.appendChild)
                elm.appendChild(o);
            }
          }
        }
      }
    }
  }
}  

function toggleDiv(el, onoff)
{
  if(el = getById(el))
  {
    if(typeof onoff == 'undefined')
      onoff = el.style.display=='none';
    el.style.display = (onoff?'':'none'); 
  }
}
function doAjaxSearch(v)
{
  if(v!='')
  {
    url = 'stock.php';
    makeRequest(url, 'search=' + escape(v), didSearch);
  }else
  {
    el = getById('searchRes');
    if(el) el.innerHTML = 'Specificeer eerst een zoekterm';
  }
}
function didSearch(result, target, url)
{
  if(result.status==200)
  {
    el = getById('searchRes');
    if(el) el.innerHTML = result.responseText;
  }
}
lastStockRow = null;
function getStockName(row)
{
  tdsFound = 0;
  for(i=0;i<row.childNodes.length;i++)
  {
    node = row.childNodes[i];
    if(node && node.tagName && (node.tagName.toLowerCase()=='td'))
    {
      tdsFound++;
      if(tdsFound == 3)
      {
        return node.innerHTML; 
      }
    }
  }
  return 'niet gevonden';
}
function setStockRow(row, id)
{
  document.forms['stockForm'].elements['product_id'].value = id;
  el = getById('productName');
  lastStockRow = row;
  if(el)
  {
    el.innerHTML = getStockName(row);
    el.style.color = 'blue';
  }
}
function addStockRow()
{
  p = pid = m = a = '';
  el = getById('productName');
  if(el)
    p = el.innerHTML;

  err = '';
  pid = document.forms['stockForm'].elements['product_id'].value;
  m = document.forms['stockForm'].elements['size'].value;
  a = document.forms['stockForm'].elements['nr'].value;
  rac = document.forms['stockForm'].elements['rack'].value;
  com = document.forms['stockForm'].elements['compartment'].value;
  if(p=='' || pid=='')
    err += "Selecteer eerst een product!\n";
  if(m=='')
    err += "Vul een maat in!\n";
  if(a=='')
    err += "Vul een hoeveelheid in!\n";
  if((a*2)/2!=a)
    err += "Het aantal moet wel numeriek zijn!\n";
  
  if(err=='')
  {
    el = getById('someBody');
    r = el.insertRow(el.rows.length);
    c1 = r.insertCell(0);
    c1.innerHTML = p + "<input type='hidden' name='stockRows[product][]' value='"+pid+"' />";
    c2 = r.insertCell(1);
    c2.innerHTML = m + "<input type='hidden' name='stockRows[size][]' value='"+m+"' />";
    c3 = r.insertCell(2);
    c3.innerHTML = a + "<input type='hidden' name='stockRows[nr][]' value='"+a+"' />";
    c4 = r.insertCell(3);
    c4.innerHTML = rac + "<input type='hidden' name='stockRows[rack][]' value='"+rac+"' />";
    c5 = r.insertCell(4);
    c5.innerHTML = com + "<input type='hidden' name='stockRows[compartment][]' value='"+com+"' />";
    c6 = r.insertCell(5);
    c6align = "right";
    c6.innerHTML = "<a href='#' onclick='removeStockRow(this)'>verwijder</a>";
    
    setStockButtons(el.rows.length>0);
  }else
    alert(err);
} 
function removeStockRow(r)
{
  tr = r;
  while(tr && tr.tagName && tr.tagName.toLowerCase()!='tr')
    tr = tr.parentNode;
  table = tr;
  while(table && table.tagName && table.tagName.toLowerCase()!='tbody')
    table = table.parentNode;
  
  ind = null;
  for(var i=0;i<table.rows.length;i++)
  {
    if(table.rows[i] == tr)
    {
      ind = i;
      break;
    }
  }
  if(ind != null)
    table.deleteRow(ind);

  setStockButtons(table.rows.length>0);
}
function setStockButtons(on)
{
  el = getById('someBody');
  if(el) el.style.display = on?'':'none';
  el = getById('noneBody');
  if(el) el.style.display = on?'none':'';  
  el = getById('submitButton');
  if(el) el.style.display = on?'':'none';  
}
  

request_complete = false;
last_url = http_request = null;
opening = false;
function makeRequest(url, args, func, form, target, doload, async)  
{
  if(!opening)
  {
    initiated = false;
    opening = true;
    async = (typeof async == "undefined");
  //  async = true;
    request_complete = false;
    try { http_request = new ActiveXObject("Msxml2.XMLHTTP"); }
    catch (e) { try { http_request = new ActiveXObject("Microsoft.XMLHTTP"); }
    catch (e) { try { http_request = new XMLHttpRequest(); }
    catch (e) { try { http_request = window.createRequest(); }
    catch (e) { http_request = false; }}}}
    
    if (!http_request) {
      // Throw error
      doAlert("Please upgrade browser. XMLHttp object can't be created...");
      return false;
    }
    method = "GET";
    post_args = "ref=1";

      openedurl = url;
      if(url=="") return false;
      if (method == "GET") 
      {
        openedurl += args;
        http_request.open(method, url + "?" + args, async);
      }else {
        http_request.open(method, url, async);
        try {
          http_request.setRequestHeader("Method", "POST "+url+" HTTP/1.1");
          http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
          http_request.setRequestHeader('Connection', 'close');
        }catch(e){doAlert(e.message);}
      }

      if(typeof func == "undefined")
        func = doOpenPagina;

      functie = function()
      {
        if ((http_request.readyState == 4 || http_request.readyState == "complete") && !request_complete) 
        { 
          request_complete = true;
          opening = false;
          func(http_request, target, openedurl);
          window.scrollTo(0,0);
        }
      };
      set = false;
      try { http_request.onload             = functie; set = true; }catch(e) {}
      if(!set)
        try { http_request.onreadystatechange = functie; set = true;}catch(e) {}
  
      http_request.send(post_args);
  //  }  catch(z) { doAlert(z.description);return false; }
  }
}
function changePeriod(el, s, e)
{
  if(typeof s != "undefined" && typeof e != "undefined")
  {
    el1 = getById(s);
    el2 = getById(e);
    val = (""+el[el.selectedIndex].value).split(" ");
    if(val.length == 2)
    {
      el1.value = val[0];
      el2.value = val[1];
    }
  }else
  { 
    a = getById("date_selector");
    b = getById("month_selector");
    a.style.display = (el[el.selectedIndex].value=='p')?"block":"none";
    b.style.display = (el[el.selectedIndex].value=='month')?"block":"none";
  }
}

function submitFilters()
{
  f = document.forms['filterForm'];
  tg = '';
  url = '';
  for(i=0;i<f.elements.length;i++)
  {
    el = f.elements[i];
    if(el.checked)
    {
      val = el.value;
      if(el.name=='doelgroep')
      {
        if(tg!='')
          tg = 'unisex';
        else
          tg = el.value;
        continue;
      }else if(el.name=='size' || el.name=='price')
        val = 'i-'+el.name+'-'+val;
      url += escape(val) + "/";
    }
  }
  if(tg != "")
    url = tg + "/" + url;
  
  f.action = site_url + url + "?page=0";
  f.submit();
}
function setChangeProduct(r, id)
{
  if(true)//!getById("retourProduct_"+id))
  {
    code = r.cells[0].innerHTML;
    brand = r.cells[1].innerHTML;
    desc = r.cells[2].innerHTML;
    size = r.cells[3].innerHTML;
    price = r.cells[4].innerHTML;
    
    txt = desc + " - " + code + ", maat: " + size + " t.w.v. "+ price;
    el = getById('prodResultDiv');
    el.innerHTML += '<div id="retourProduct_'+id+'"><input type="checkbox" checked="checked" class="noborder" name="retour[product][]" error="Retour product" value="'+id+'" />' + txt + '</div>';
  }else
    alert("Product al toegevoegd");
}

function printGraph(url, type)
{
  r = Math.random();
  df = escape(site_url+url);
  url = site_url+'img/graphs.swf';
  w = '100%';
  h = 250;
  if(type=='wide')
  {
    url = site_url+'img/graphs.swf';
    w = '100%';
    h = 200;
  }else if(type=='small')
  {
    w = '100%';
    h = 200;
  }
  document.write('<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="'+w+'" height="'+h+'">');
  document.write('<param name="movie" value="'+url+'?dataFile='+df+'&var='+r+'" />');
  document.write('<param name="quality" value="high" />');
  document.write('<param name="allowTransparency" value="true" />');
  document.write('<param name="wmode" value="opaque" />');
  document.write('<embed src="'+url+'?dataFile='+df+'&var='+r+'" quality="high" allowTransparency="true" wmode="opaque" width="'+w+'" height="'+h+'" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />');
  document.write('</object>');
}

/* toggle homepage buttons */
function homepageButtons(object, nameOther){
  var name          = object.name;
  var objOther      = getById('config['+nameOther+']');
  var radioObj      = getById(name);
  var nameTxt       = name.split(']');
  var nameTxt       = (nameTxt[0]+'Text]');
  var nameTxtOther  = objOther.name.split(']');
  var nameTxtOther  = (nameTxtOther[0]+'Text]');
  var season                = getById('config_collectionSeason');
  
  if(radioObj.checked == false){
    getById(nameTxt).disabled=false;
    objOther.checked=true;
    getById(nameTxtOther).disabled=true;
    season.disabled = true;
    
  } else {
    getById(nameTxt).disabled=true;
  }
}

function toggleCollection()
{
    seasonEl = getById('config_collectionSeason');
    collecEl = getById('config_collectionText');
    coltxtEl = getById('config_collection_ja');

    if(coltxtEl.checked == true)
    {
        seasonEl.disabled = false;
        collecEl.disabled = false;
    }
    else
    {
        seasonEl.disabled = true;
        collecEl.disabled = true;
    }
}

function changePrices(eid, pid)
{
  sel = of = 0;
  add = '';
  if(typeof pid!= 'undefined')
  {
     add = '_' + pid;
  }
  var vaDiv     = getById('vaDiv' + add);
  var normalDiv = getById('advDiv' + add);
  var offerDiv  = getById('selDiv' + add);

  if(PRODUCT_PRICES)
  {
     for(var i=0;i<PRODUCT_PRICES.length;i++)
     {
        if(PRODUCT_PRICES[i][0] == eid)
        {
           sel = PRODUCT_PRICES[i][1];
           of  = PRODUCT_PRICES[i][2];
           
           ofTxt = selTxt = '';
           if(of != sel)
           {
             selTxt = 'normaal: &euro; ' + sel;
             ofTxt = 'nu slechts: &euro; ' + of;
           }else
           {
             selTxt = '';
             ofTxt = 'Prijs: &euro; ' + of;
           }
           
           vaDiv.style.display = 'none';
           
           normalDiv.style.display = (selTxt=='' && add!='')?'none':'block';
           normalDiv.innerHTML = selTxt;
           
           offerDiv.style.display = 'inline';
           offerDiv.innerHTML = ofTxt;
           
           return;
        }
     }
  }
  vaDiv.style.display = 'inline';
  normalDiv.style.display = 'none';
  offerDiv.style.display = 'none';
}

function navOver(id)
{
    if($('#'+id).hasClass('navGray'))
    {
        $('#'+id).removeClass('navGray');
        $('#'+id).addClass('navRed');
    }
    else
    {
        $('#'+id).removeClass('navRed');
        $('#'+id).addClass('navGray');
    }
}

function genderNavOver(id)
{
    if($('#'+id).hasClass('realRedBg'))
    {
        $('#'+id).removeClass('realRedBg');
        $('#'+id).addClass('blackBG');
    }
    else
    {
    $('#'+id).removeClass('blackBG');
    $('#'+id).addClass('realRedBg');
    }
}

/**
 * Document.ready
 * 
 * jQuery document.ready function
 * @return    void
 */
$(document).ready(function() 
{
    $('.rc').corner('5px');
    $('.rcTop').corner('top 5px');
    $('.rcBottom').corner('bottom 5px');
});



/**
 * ### trackingcode functions ###
 */
function toggleTrackingInput(id)
{
    // show/hide container
    div    = '#trackingInputBox_'+id;
    $(div).toggle();
    if($(div).css('display') == 'block')
    {
        $('.order_buttonSet input').attr('disabled',true);
    }
    else
    {
        $('.order_buttonSet input').attr('disabled',false);
    }
}
function closeTrackingInput(id)
{
    // cancel: close box and remove code
    div    = '#trackingInputBox_'+id;
    $(div).hide();
    $(div+' input.text').val('');
    $('#trackingCode_'+id+' a').html('');
    $('.order_buttonSet input').attr('disabled',false);
}
function saveTrackingInput(id)
{
    // ok: close box, add hyperlink and check checkbox
    div    = '#trackingInputBox_'+id;
    if($(div+' input.text').val() == '')
    {
        closeTrackingInput(id);
    }
    else
    {
        $('#trackingCode_'+id+' a').attr('href','http://www.tracktrace.nl?code='+$(div+' input.text').val());
        $('#trackingCode_'+id+' a').html('Code');

        $('#trackingContainer_'+id+' input[type=checkbox]').attr('checked','true')
        $(div).hide();
        $('.order_buttonSet input').attr('disabled',false);
    }
}
function toggleTrackingCode(id)
{
    el    = $('#doSend_'+id);
    if(el.attr('checked') == false)
    {
        closeTrackingInput(id);
    }
}
/* --- trackingcode functions --- */



/* +++ navigation functions +++ */
$(function()
{
    $('#filterFormDum ul.item li .head').bind('click',function(){
        $(this).parent('li').find('ul:first').slideToggle(200);
        updateIcons($(this));
    });
    $('#filterFormDum ul li input:not([name=search])').bind('click',function(){
        window.location = $(this).parent('li').find('a').attr('href');
    });
    $('#filterFormDum ul li input:checked').each(function(){
        $(this).parents('ul').show();
        updateIcons($(this).parents('ul').find('li .head'));
    });
    $('#filterFormDum [name=search]').bind('keypress',function(e){
        var code = (e.keyCode ? e.keyCode : e.which);
        if(code == 13) {
            goToFilterUrl();
            return false;
        }
    });
    $('#filterFormDum ul li ul:first').show();
})
function updateIcons(selector)
{
    var bgImg = $(selector).css('background-image');
    if(bgImg.indexOf('down.gif') >= 0) {
        var bgImg = bgImg.replace('down.gif','up.gif');
    } else {
        var bgImg = bgImg.replace('up.gif','down.gif');
    }
    $(selector).css('background-image',bgImg);
}

function getUrlVars()
{
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++) {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars;
}

function goToFilterUrl(href)
{
    if(typeof(href) == 'undefined') {
        var href = '';
    }

    if( $('#filterFormDum [name=search]').val() == 'vul je zoekterm in' ) {
        $('#filterFormDum [name=search]').val('');
    }
    var search = encodeURIComponent($('.search-products input.val').val());

    if(href.indexOf('search=') >= 0) {
        var old = getUrlVars()["search"];
        if(search != '') {
            var url = href.replace('search='+old,'search='+search);
        } else {
            var url = href.replace('?search='+old,'');
        }
    } else {
        if( href.indexOf('?') >= 0 ) {
            var url    = href+'&search='+search;
        } else {
            var url    = href+'?search='+search;
        }
    }

    window.location = url;
}
/* --- navigation functions --- */



/* +++ newsletter subscribe */
$(function(){
    $('#engine_form #email').val('E-mailadres')
                            .css('color','#999');

    $('#engine_form #email').bind('focus',function(){
        if($(this).val() == 'E-mailadres') {
            $(this).val('')
                      .css('color','#000');
        }
    });
})
/* -- newsletter subscribe --- */


/* +++ search field +++ */
$(function(){
    var defaultSearchTxt = 'vul je zoekterm in';
    elm = $('.search-products input.val');

    $('.search-products input.val').css('color','#999')
       .css('font-style','italic');
    if (elm.val()=='') {
        elm.val(defaultSearchTxt);
    }


    $('.search-products input.val').bind('focus',function(){
        if ($(this).val() == defaultSearchTxt) {
            $(this).val('');
        }
        $(this).css('color','inherit')
               .css('font-style','normal');
    });


    $('.search-products input').keypress(function(e){
        if (e.which == 13){
            submitSearch();
            return false;
        }
    });
    $('.search-products input.submit').click(function(){
        submitSearch();
        return false;
    });


    function submitSearch()
    {
        var val = encodeURIComponent(elm.val());
        $('#filterFormDum #hidden-search').val(val);
        goToFilterUrl(site_url);
    }
})
/* -- search field --- */

<!-- Content - js/jquery-toggle.js-->
$(document).ready(function(){
    $('#button').click(function () {
        $('#toggleList').slideToggle('fast');
    });
});
$('#toggleList').hide();<!-- Content - js/jquery.corner.js-->
/*!
 * jQuery corner plugin: simple corner rounding
 * Examples and documentation at: http://jquery.malsup.com/corner/
 * version 2.06 (16-FEB-2010)
 * Requires jQuery v1.3.2 or later
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 * Authors: Dave Methvin and Mike Alsup
 */

/**
 *  corner() takes a single string argument:  $('#myDiv').corner("effect corners width")
 *
 *  effect:  name of the effect to apply, such as round, bevel, notch, bite, etc (default is round). 
 *  corners: one or more of: top, bottom, tr, tl, br, or bl.  (default is all corners)
 *  width:   width of the effect; in the case of rounded corners this is the radius. 
 *           specify this value using the px suffix such as 10px (yes, it must be pixels).
 */
;(function($) { 

var style = document.createElement('div').style;
var moz = style['MozBorderRadius'] !== undefined;
var webkit = style['WebkitBorderRadius'] !== undefined;
var radius = style['BorderRadius'] !== undefined;
var mode = document.documentMode || 0;
var noBottomFold = $.browser.msie && (($.browser.version < 8 && !mode) || mode < 8);

var expr = $.browser.msie && (function() {
    var div = document.createElement('div');
    try { div.style.setExpression('width','0+0'); div.style.removeExpression('width'); }
    catch(e) { return false; }
    return true;
})();
    
function sz(el, p) { 
    return parseInt($.css(el,p))||0; 
};
function hex2(s) {
    var s = parseInt(s).toString(16);
    return ( s.length < 2 ) ? '0'+s : s;
};
function gpc(node) {
    for ( ; node && node.nodeName.toLowerCase() != 'html'; node = node.parentNode ) {
        var v = $.css(node,'backgroundColor');
        if (v == 'rgba(0, 0, 0, 0)')
            continue; // webkit
        if (v.indexOf('rgb') >= 0) { 
            var rgb = v.match(/\d+/g); 
            return '#'+ hex2(rgb[0]) + hex2(rgb[1]) + hex2(rgb[2]);
        }
        if ( v && v != 'transparent' )
            return v;
    }
    return '#ffffff';
};

function getWidth(fx, i, width) {
    switch(fx) {
    case 'round':  return Math.round(width*(1-Math.cos(Math.asin(i/width))));
    case 'cool':   return Math.round(width*(1+Math.cos(Math.asin(i/width))));
    case 'sharp':  return Math.round(width*(1-Math.cos(Math.acos(i/width))));
    case 'bite':   return Math.round(width*(Math.cos(Math.asin((width-i-1)/width))));
    case 'slide':  return Math.round(width*(Math.atan2(i,width/i)));
    case 'jut':    return Math.round(width*(Math.atan2(width,(width-i-1))));
    case 'curl':   return Math.round(width*(Math.atan(i)));
    case 'tear':   return Math.round(width*(Math.cos(i)));
    case 'wicked': return Math.round(width*(Math.tan(i)));
    case 'long':   return Math.round(width*(Math.sqrt(i)));
    case 'sculpt': return Math.round(width*(Math.log((width-i-1),width)));
	case 'dogfold':
    case 'dog':    return (i&1) ? (i+1) : width;
    case 'dog2':   return (i&2) ? (i+1) : width;
    case 'dog3':   return (i&3) ? (i+1) : width;
    case 'fray':   return (i%2)*width;
    case 'notch':  return width; 
	case 'bevelfold':
    case 'bevel':  return i+1;
    }
};

$.fn.corner = function(options) {
    // in 1.3+ we can fix mistakes with the ready state
	if (this.length == 0) {
        if (!$.isReady && this.selector) {
            var s = this.selector, c = this.context;
            $(function() {
                $(s,c).corner(options);
            });
        }
        return this;
	}

    return this.each(function(index){
		var $this = $(this);
		// meta values override options
		var o = [$this.attr($.fn.corner.defaults.metaAttr) || '', options || ''].join(' ').toLowerCase();
		var keep = /keep/.test(o);                       // keep borders?
		var cc = ((o.match(/cc:(#[0-9a-f]+)/)||[])[1]);  // corner color
		var sc = ((o.match(/sc:(#[0-9a-f]+)/)||[])[1]);  // strip color
		var width = parseInt((o.match(/(\d+)px/)||[])[1]) || 10; // corner width
		var re = /round|bevelfold|bevel|notch|bite|cool|sharp|slide|jut|curl|tear|fray|wicked|sculpt|long|dog3|dog2|dogfold|dog/;
		var fx = ((o.match(re)||['round'])[0]);
		var fold = /dogfold|bevelfold/.test(o);
		var edges = { T:0, B:1 };
		var opts = {
			TL:  /top|tl|left/.test(o),       TR:  /top|tr|right/.test(o),
			BL:  /bottom|bl|left/.test(o),    BR:  /bottom|br|right/.test(o)
		};
		if ( !opts.TL && !opts.TR && !opts.BL && !opts.BR )
			opts = { TL:1, TR:1, BL:1, BR:1 };
			
		// support native rounding
		if ($.fn.corner.defaults.useNative && fx == 'round' && (radius || moz || webkit) && !cc && !sc) {
			if (opts.TL)
				$this.css(radius ? 'border-top-left-radius' : moz ? '-moz-border-radius-topleft' : '-webkit-border-top-left-radius', width + 'px');
			if (opts.TR)
				$this.css(radius ? 'border-top-right-radius' : moz ? '-moz-border-radius-topright' : '-webkit-border-top-right-radius', width + 'px');
			if (opts.BL)
				$this.css(radius ? 'border-bottom-left-radius' : moz ? '-moz-border-radius-bottomleft' : '-webkit-border-bottom-left-radius', width + 'px');
			if (opts.BR)
				$this.css(radius ? 'border-bottom-right-radius' : moz ? '-moz-border-radius-bottomright' : '-webkit-border-bottom-right-radius', width + 'px');
			return;
		}
			
		var strip = document.createElement('div');
		$(strip).css({
			overflow: 'hidden',
			height: '1px',
			minHeight: '1px',
			fontSize: '1px',
			backgroundColor: sc || 'transparent',
			borderStyle: 'solid'
		});
	
        var pad = {
            T: parseInt($.css(this,'paddingTop'))||0,     R: parseInt($.css(this,'paddingRight'))||0,
            B: parseInt($.css(this,'paddingBottom'))||0,  L: parseInt($.css(this,'paddingLeft'))||0
        };

        if (typeof this.style.zoom != undefined) this.style.zoom = 1; // force 'hasLayout' in IE
        if (!keep) this.style.border = 'none';
        strip.style.borderColor = cc || gpc(this.parentNode);
        var cssHeight = $.curCSS(this, 'height');

        for (var j in edges) {
            var bot = edges[j];
            // only add stips if needed
            if ((bot && (opts.BL || opts.BR)) || (!bot && (opts.TL || opts.TR))) {
                strip.style.borderStyle = 'none '+(opts[j+'R']?'solid':'none')+' none '+(opts[j+'L']?'solid':'none');
                var d = document.createElement('div');
                $(d).addClass('jquery-corner');
                var ds = d.style;

                bot ? this.appendChild(d) : this.insertBefore(d, this.firstChild);

                if (bot && cssHeight != 'auto') {
                    if ($.css(this,'position') == 'static')
                        this.style.position = 'relative';
                    ds.position = 'absolute';
                    ds.bottom = ds.left = ds.padding = ds.margin = '0';
                    if (expr)
                        ds.setExpression('width', 'this.parentNode.offsetWidth');
                    else
                        ds.width = '100%';
                }
                else if (!bot && $.browser.msie) {
                    if ($.css(this,'position') == 'static')
                        this.style.position = 'relative';
                    ds.position = 'absolute';
                    ds.top = ds.left = ds.right = ds.padding = ds.margin = '0';
                    
                    // fix ie6 problem when blocked element has a border width
                    if (expr) {
                        var bw = sz(this,'borderLeftWidth') + sz(this,'borderRightWidth');
                        ds.setExpression('width', 'this.parentNode.offsetWidth - '+bw+'+ "px"');
                    }
                    else
                        ds.width = '100%';
                }
                else {
                	ds.position = 'relative';
                    ds.margin = !bot ? '-'+pad.T+'px -'+pad.R+'px '+(pad.T-width)+'px -'+pad.L+'px' : 
                                        (pad.B-width)+'px -'+pad.R+'px -'+pad.B+'px -'+pad.L+'px';                
                }

                for (var i=0; i < width; i++) {
                    var w = Math.max(0,getWidth(fx,i, width));
                    var e = strip.cloneNode(false);
                    e.style.borderWidth = '0 '+(opts[j+'R']?w:0)+'px 0 '+(opts[j+'L']?w:0)+'px';
                    bot ? d.appendChild(e) : d.insertBefore(e, d.firstChild);
                }
				
				if (fold && $.support.boxModel) {
					if (bot && noBottomFold) continue;
					for (var c in opts) {
						if (!opts[c]) continue;
						if (bot && (c == 'TL' || c == 'TR')) continue;
						if (!bot && (c == 'BL' || c == 'BR')) continue;
						
						var common = { position: 'absolute', border: 'none', margin: 0, padding: 0, overflow: 'hidden', backgroundColor: strip.style.borderColor };
						var $horz = $('<div/>').css(common).css({ width: width + 'px', height: '1px' });
						switch(c) {
						case 'TL': $horz.css({ bottom: 0, left: 0 }); break;
						case 'TR': $horz.css({ bottom: 0, right: 0 }); break;
						case 'BL': $horz.css({ top: 0, left: 0 }); break;
						case 'BR': $horz.css({ top: 0, right: 0 }); break;
						}
						d.appendChild($horz[0]);
						
						var $vert = $('<div/>').css(common).css({ top: 0, bottom: 0, width: '1px', height: width + 'px' });
						switch(c) {
						case 'TL': $vert.css({ left: width }); break;
						case 'TR': $vert.css({ right: width }); break;
						case 'BL': $vert.css({ left: width }); break;
						case 'BR': $vert.css({ right: width }); break;
						}
						d.appendChild($vert[0]);
					}
				}
            }
        }
    });
};

$.fn.uncorner = function() { 
	if (radius || moz || webkit)
		this.css(radius ? 'border-radius' : moz ? '-moz-border-radius' : '-webkit-border-radius', 0);
	$('div.jquery-corner', this).remove();
	return this;
};

// expose options
$.fn.corner.defaults = {
	useNative: true, // true if plugin should attempt to use native browser support for border radius rounding
	metaAttr:  'data-corner' // name of meta attribute to use for options
};
    
})(jQuery);<!-- Content - js/js_check_nl.js-->
ENGINE_labels = new Array();
ENGINE_labels[0] = "De volgende velden zijn verplicht";
ENGINE_labels[1] = "De volgende fouten zijn opgetreden tijdens het invullen van het formulier";
ENGINE_labels[2] = "Gebruik in deze velden komma's in plaats van punten";
ENGINE_labels[3] = "Deze velden bevatten geen correct email adres";
ENGINE_labels[4] = "Deze velden bevatten geen correcte datum (DD-MM-YYYY)";
ENGINE_labels[5] = "Gebruik in deze velden alleen nummers";
ENGINE_labels[6] = "Deze velden bevatten geen correcte postcode";
ENGINE_labels[7] = "De volgende velden zijn ongelijk";
ENGINE_labels[8] = "Deze velden bevatten geen correcte bankrekeningnummer";
ENGINE_labels[9] = "Deze velden bevatten geen correcte tijd ";
ENGINE_labels[10] = "Gebruik geen speciale characters";
ENGINE_labels[11] = "Minimale waarde overschreden";
ENGINE_labels[12] = "Maximale waarde overschreden";
function ENGINE_doValidate(form, alertErr)
{
  if(typeof ENGINE_labels == "undefined")
    alert("Please include a labels file or define a labels array yourself");
  err = new Array();
  err[0] = new Array(); // Required
  err[1] = new Array(); // General error
  err[2] = new Array(); // Numeric - Commas
  err[3] = new Array(); // Email
  err[4] = new Array(); // Date
  err[5] = new Array(); // Numeric
  err[6] = new Array(); // Postal code
  err[7] = new Array(); // Not equal
  err[8] = new Array(); // No accountnumber
  err[9] = new Array(); // Time
  err[10]= new Array(); // No special chars
  err[11]= new Array(); // < Min
  err[12]= new Array(); // > Max
  
  lastName = '';
  if(form && form.elements)
  {
    for(i=0;i<form.elements.length;i++)
    {
      el = form.elements[i];
      validate = el.getAttribute("validate");
      if(validate && validate!="")
      {
        try
        {
          validate = ("" + validate).split("-");
        }catch( e )
        {
          return false;
        }
        err_in_el = false;
        error = el.name;
        error_name = el.getAttribute("error") 
        if(error_name && error_name!="")
	        error = error_name;
              
        if(validate.length>0)
          tmp_name = error; 

        if(tmp_name==lastName)
          continue;

        new_validate = new Array();
        reg_exp = new RegExp("ifvalueof\((.)*,(.)*,(.)*\)");
        for( a = 0 ; a < validate.length ; a++)
        {
          ar  = reg_exp.exec(""+validate[a]);
          if(ar)
          {
            ar = (ar[1].substring(1, ar[1].length-1)).split(",");
            if(ar.length==3)
            {
              tmp_el = form.elements[ar[0]];
              if(typeof tmp_el == "object")
              {
                try
                {
                  if(tmp_el.length > 0)
                  {
                    if(tmp_el[0].type && tmp_el[0].type.toLowerCase()=="radio")
                    {
                      for(b = 0; b < tmp_el.length; b++)
                        if(tmp_el[b].checked===true && ((equals && tmp_el[b].value==ar[1]) || (!equals && tmp_el[b].value!=ar[1])))
                          new_validate[new_validate.length] = ar[2];
                    }else if(tmp_el.tagName && tmp_el.tagName.toLowerCase()=="select")
                    {
                      if((equals && tmp_el[tmp_el.selectedIndex].value==ar[1]) || (!equals && tmp_el[tmp_el.selectedIndex].value!=ar[1]))
                        new_validate[new_validate.length] = ar[2];
                    }
                  }else if(tmp_el.tagName && tmp_el.tagName.toLowerCase()=="input")
                  {
                    if(tmp_el.type)
                    {
                      if(tmp_el.type.toLowerCase()=="checkbox")
                      {
                        if(((equals && tmp_el.checked && tmp_el.value==ar[1]) || (!equals && !tmp_el.checked && tmp_el.value==ar[1])))
                          new_validate[new_validate.length] = ar[2];
                      }else if(tmp_el.type.toLowerCase()=="text")
                      {
                        if((equals && tmp_el.value==ar[1]) || (!equals && tmp_el.value!=ar[1]))
                          new_validate[new_validate.length] = ar[2];
                      }
                    }
                  }
                }catch( e ) {}
              }else if(tmp_el && tmp_el.tagName && tmp_el.tagName.toLowerCase()=="input" && tmp_el.type && tmp_el.type.toLowerCase()=="text")
              {
                if(tmp_el.value == ar[1])
                  new_validate[new_validate.length] = ar[2];
              }
            }
          }else
            new_validate[new_validate.length] = validate[a];
        }
        validate = new_validate;
        must_be_equal_to = new RegExp("mustbeequalto\((.)*\)");
        one_must_be_set = new RegExp("onemustbeset\((.)*\)");
        check_postal_code = new RegExp("checkpostalcode\((.)*\)");
        min = new RegExp("min\((.)*\)");
        max = new RegExp("max\((.)*\)");
        for( a = 0 ; a < validate.length ; a++)
        {
          if(!err_in_el)
          {
            if(validate[a] == "required")
            {
              if (el.type.toLowerCase() == "radio")
              {
                radio_el = form.elements[(el.name)];
                err_in_el = true;
                if(radio_el)
                {
                  if(radio_el.length)
                  {
                    for(var b=0; b < radio_el.length; b++)
                    {
                      if(radio_el[b].checked)
                        err_in_el = false;
                    }
                  }else if(radio_el.checked)
                    err_in_el = false;
                }
              }else if (el.type.toLowerCase() == "checkbox")
              {
                ok = false;
                if(typeof form.elements[el.name].length != 'undefined' && form.elements[el.name].length>1)
                {
                  for(var b=0;b<form.elements[el.name].length;b++)
                  {
                    if(form.elements[el.name][b].checked)
                    {
                      ok = true;
                      break;
                    }
                  }
                }else
                  ok = el.checked;
                if(!ok)
                  err_in_el = true;
              }else if (el.tagName.toLowerCase() == "select")
              {
                if(el.selectedIndex==-1 || el[el.selectedIndex].value=='')
                  err_in_el = true;
              }else if((typeof el.value != "undefined") && el.value=="")
              {
                err_in_el = true;
              }
              if(err_in_el)
                err[0][err[0].length] = tmp_name;
            }else if(validate[a] == "numeric")
            {
              el.value = (""+el.value).replace(",",".");
              res =  ENGINE_checkNumeric(el.value);
              if(res < 0)
              {
                if(res < -1)
                  err[2][err[2].length] = tmp_name;

                err[5][err[5].length] = tmp_name;
                err_in_el = true;
              }
            }else if(validate[a] == "nospecialchars")
            {
              res = el.value.search("'");
              res2 = el.value.search('"');
              if(res > 0 || res2 > 0)
              {
                err[10][err[10].length] = tmp_name;
                err_in_el = true;
              }
            }else if(validate[a] == "email")
            {
              if(!ENGINE_checkEmail(el.value))
              {
                err_in_el = true;
                err[3][err[3].length] = tmp_name;
              }
            }else if(validate[a] == "date")
            {
              if(!ENGINE_checkDate(el.value) && el.value!="")
              {
                err_in_el = true;
                err[4][err[4].length] = tmp_name;
              }
            }else if(validate[a] == "time")
            {
              if(!ENGINE_checkTime(el.value) && el.value!="")
              {
                err_in_el = true;
                err[9][err[9].length] = tmp_name;
              }
            }else if(validate[a] == "nl_postal_code")
            {
              if(!ENGINE_checkNlPostalCode(el.value))
              {
                err_in_el = true;
                err[6][err[6].length] = tmp_name;
              }
            }else if(ar = min.exec(validate[a]))
            {
              minValue = (ar[1].substring(1, ar[1].length-1));

            	try
            	{
                	if(el.value.length <minValue)
            		{
            			err_in_el = true;
            			err[11][err[11].length] = tmp_name;
            		}
            	}catch(e) {}
            }else if(ar = max.exec(validate[a]))
            {
              maxValue = (ar[1].substring(1, ar[1].length-1));							
              
            	try
            	{
                if(el.value.length > maxValue)
            		{
            			err_in_el = true;
            			err[12][err[12].length] = tmp_name;
            		}
            	}catch(e) {}
            }
          }
        }
        lastName = tmp_name;
      }
    }

    total_errs = 0;
    for(a=0;a<err.length;a++)
      total_errs += err[a].length;

    if(total_errs>0)
    {
      err_txt = ENGINE_labels[1] + ":\n\n";      
      for(a=0;a<err.length;a++)
      {
        if(err[a].length>0)
        {
          if(typeof err[a][0] != "object")
            err_txt += ENGINE_labels[a] + ":\n" + err[a].join(", ") + "\n\n";
          else
            err_txt += err[a][0][0] + ":\n" + err[a][0][1] + "\n\n";
        }
      }
      if(typeof alertErr == "undefined" || alertErr)
      alert(err_txt);
    }else
      return true;
  }
  return false;
}

function ENGINE_checkEmail(email)
{
  //regexp = /\w+([\.\-_]{1}\w+)*@(\w+([\.\-_]{1}\w+)*)\.(\w{2,4})/;
  regexp = /\w+([\.\-_\+]{1}\w*)*@(\w+([\.\-_]{1}\w+)*)\.(\w{2,6})/;

  test = ("" + email).match(regexp);
  if(test && typeof test[0] != "undefined") test = test[0];
  return (test==email || ("" + email)=="");
}
function ENGINE_checkDate(date)
{
  val = (""+date).split("-");
  if(val.length==3)
  {
    dat = new Date(val[2], val[1]-1, val[0]);
    newdat = new Date(Date.parse(dat));
    if(newdat==-1 || (newdat.getDate()!=Math.round(val[0]) || newdat.getFullYear()!=Math.round(val[2]) || newdat.getMonth()!=Math.round(val[1]-1)))
      return false;
  }else
    return false;

  return true;
}

function ENGINE_checkTime(time)
{
  val = (""+time).split(":");
  if(val.length==2)
  {
  	if (parseInt(val[0]) < 0 || parseInt(val[0]) >= 24)
      return false;
    if (parseInt(val[1]) < 0 || parseInt(val[1]) >= 60)
    	return false;
  }else
    return false;

  return true;
}

function ENGINE_checkNlPostalCode(code)
{
	tmp_val = code.replace(" ", "");
	first  = -1;
	second = -1;
	third  = -1;
	if(tmp_val.length == 6)
	{
	  first  = tmp_val.substring(0,4);
	  second = tmp_val.substring(4,5);
	  third  = tmp_val.substring(5,6);

		if((ENGINE_checkNumeric(first) == 0) && (ENGINE_checkNumeric(second) == -1) && (ENGINE_checkNumeric(third) == -1))
			return true;
	}

	return false;
}

function ENGINE_cleanPostalCode(code)
{
	var postcode = ENGINE_removeSpaces(code.value);
  var first  = postcode.substring(0,4);
  var second = postcode.substring(4,6);
  if(ENGINE_checkNlPostalCode(postcode))
		code.value = first+' '+second.toUpperCase();
}

function ENGINE_checkNumeric(number)
{
  res = 0;
  if(number != ((number/2)*2))
  {
    res--;
    if((""+number).indexOf(",")!=-1)
      res--;
  }
  return res;
}

function ENGINE_removeSpaces(string)
{
  var tstring = "";
  string = '' + string;
  splitstring = string.split(" ");
  for(i = 0; i < splitstring.length; i++)
  tstring += splitstring[i];
  return tstring;
}

function checkForm(form, doAlert)
{
  result = ENGINE_doValidate(form, doAlert);
  return result;
}
