function check_date(date) {

  var m;
  var d;
  var y;


  var found;

  // pp.kk.vvvv[.]
  found = date.match(/^(\d+)\.(\d+)\.(\d+)\.?$/);
  if(found != null) {
    return check_date_2(found[1], found[2]-1,found[3]);
  }

  // kk/pp/vvvv
  found = date.match(/^(\d+)\/(\d+)\/(\d+)$/);
  if(found != null) {
    return check_date_2(found[2],found[1]-1,found[3]);
  }

  // Aug 15, 2000
  found = date.match(/^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) +(\d+), *(\d+)$/);
  if(found != null) {
    return check_date_2(found[2], found[1], found[3]);
  }

  return null;

}


function check_date_2(d,m,y) {
  var Months = new Array('Jan', 'Feb', 'Mar', 'Apr',
                         'May', 'Jun', 'Jul', 'Aug',
                         'Sep', 'Oct', 'Nov', 'Dec');

  var D = new Date;

  if(isNaN(m)) {
    D = new Date(Date.parse(m + " " + d + ", " + y));

    if(D==null) {
      return null;
    }
    if(Months[D.getMonth()] != m || D.getDate() != d || D.getYear() != y) {
      return null;
    }
    
  } else {
    D = new Date(y,m,d);
    if(D==null) {
      return null;
    }

    if(D.getMonth() != m || D.getDate() != d || (D.getYear() != y && D.getYear()+1900 != y)) {
      return null;
    }
  }
  var yy = D.getYear();
  if(yy<1900) {
    yy+=1900;
  }

  
  return D.getDate() + "." + (D.getMonth()+1) + "." + yy;
}

	function set_dd() {
		
		var args = set_dd.arguments;
		
		var f = args[0]; // the form object
		 
		for(i=1;i<args.length;i+=2) {
			var dd = f.elements[args[i]];
			var val= unescape(args[i+1]);
		
			if(dd == null) {
				alert("Invalid set_dd call (" + args[i] + ")");
				return;
			}
		
			var j;
			for(j=0;j<dd.options.length;j++) {
				if(dd.options[j].value == val) {
					dd.selectedIndex=j;
					j=dd.options.length; // jump out
				}
			}
		}
	}


  // set_radio
    function set_radio() {
		var args = set_radio.arguments;
		var f = args[0]; // the form object
		 
		for(i=1;i<args.length;i+=2) {
			var elem_arr = f.elements[args[i]];
			var val= unescape(args[i+1]);
		
			if(elem_arr == null) {
				alert("Invalid set_radio call (" + args[i] + ")");
				return;
			}
		
			var j;
			for(j=0;j<elem_arr.length;j++) {
				if(elem_arr[j].value == val) {
					elem_arr[j].checked = true;
					j=elem_arr.length; // jump out
				}
			}
		}
	}


	function winstd(uri,winname) {
		return win(uri,winname,620,440,'resizable,scrollbars');
	}

	function win(uri,winname,wid,hei,moreparams) {

		if(moreparams && moreparams.length>0)
			moreparams += ',';
		
		var w;
		eval("w=top.SUBWINDOW"+winname);
		if(w != null) {
			if(w.closed==false) {
				w.close();
			}
		}
		
		/*
		IE:n hitausbugin vuoksi ei anneta IE:lla enaa ikkunoille nimia
		*/
		var openwinname;
		if(navigator.userAgent.indexOf("MSIE") != -1) {
		    openwinname='';
		} else {
		    openwinname=winname;
		}
		
		w=window.open(uri,openwinname,moreparams+'width='+wid+',height='+hei);
		
		if (!w.opener) w.opener = self;
		eval("top.SUBWINDOW"+winname+"=w");
		w.focus();
		
		return false;
	}



	function open_image_window(uri,wid,hei) {
		var Wid=wid+16;
		var Hei=hei+16;
		if(window.showimgWindow!=null && window.showimgWindow.closed==false) {
			window.showimgWindow.close();
		}
		var n = window.open('','','resizable=yes,width='+Wid+',height='+Hei);
		window.showimgWindow = n;
		
		showimgWindow.document.open();
		showimgWindow.document.write('<html><head><title>-</title></head><body topmargin=0 leftmargin=0 bgcolor="#000000">'+
											'<div align="center"><center><table border=0 cellspacing=0 cellpadding=0 height=100%>'+
											'<tr height=100%><td valign="middle"><a href="javascript:window.close();">'+
											'<img src="'+uri+'" width='+wid+' height='+hei+' border=0></a></td></tr></table></center></div></body></html>');
		showimgWindow.document.close();
		
		showimgWindow.focus();
		
		return false;
	}

function focus_mshtml_or_first() {
	if(document.all && document.all['tbContentElement']) {
		document.all['tbContentElement'].focus();
		return;
	}
	return focusfirst();
}

function focusfirst() {
	var f = document.forms[0];
	if(f) {
		var elem;
		for(elem=0;elem<20;elem++) {
			if(f.elements[elem] != null && !f.elements[elem].disabled && (f.elements[elem].type == 'text' || f.elements[elem].type == 'textarea') && f.elements[elem].style.display!='none' && f.elements[elem].style.visibility!='hidden') {
				try {
					f.elements[elem].focus();
				} catch(e) {
				}
				return;
			}
		}
	}
}

//--tpl tyylillä aihion vaihto siten, että parametrit jää mukaan (toimii myös risuurleilla)
function changeTpl(tpl){
	if( document.location.href.indexOf("?")==-1 ){
		if( document.location.href.indexOf("/=")==-1 ){
			document.location.href = '--' + tpl;
		} else {
			document.location.href += '--' + tpl;
		}
	} else { 
		var urli = document.location.href.split('?');
		document.location.href = urli[0] + '--' + tpl + '?' + urli[1]; 
	}
	return false;
}
//käyttää edellistä, menee oletustulostusaihioon
function goPrint(){
	changeTpl('print');
	return false;
}
//tallentaa keksin
function saveCookie2(name,val){
	expireDate = new Date;
	expireDate.setTime(expireDate.getTime()+40000000000);
	document.cookie = name + "="+ val + "; expires="+expireDate.toGMTString()+"; path=/";
	return false;
}
//etsii keksin arvon
function getCookie(cookieName) {
	var thisCookie = document.cookie.split("; ");
	for (i=0; i<thisCookie.length; i++) {
		if (cookieName == thisCookie[i].split("=")[0]) {
			return thisCookie[i].split("=")[1];
		}
	}
	return null;
}
//Fonttien pienentämiseen ja suurentamiseen --tuomo
function setFontsize(dir, currSize){
	var newSize = 0;
	//-1 on pienin, tyhjä on oletus, 1 on suurempi
	if( parseInt(currSize)!='Nan' ){
		newSize = parseInt(currSize) + dir;
	} 
	saveCookie2('fsize',newSize);
	window.location.reload();
	return false;
}
//Muokkauksen näyttäminen
function goEdit(e){
	var tHref= document.location.href;
	if( tHref.indexOf("#")!=-1 ){ //stripataan risu pois
		var tempHref = tHref.split('#');
		tHref = tempHref[0];
	}
	document.cookie = 'ADMIN_EDIT=' + (e.checked ? '1' : '') + '; path=/;'; 
	document.location.href = tHref;
	return false;
}
//emailin muoto
function sanityEmail(str) {
	re1 = /^\w[\w\.\-\+]*\@\w[\w\-\.]+[a-z][a-z]$/i;
	re2 = /\.[\.\@]/;
	re3 = /\@.*\./;
	if( str.search(re1)==-1 || str.search(re2)!=-1 || str.search(re3)==-1 || 70 < str.length) {
		return false;
	}
	return true;
}
//emailin tarkastus kentälle
function checkEmail(e) {
	if( !sanityEmail(e.value) ) {
		e.value = '';
		alert('Epäkelpo sähköpostiosoite!');
	}
}
//Pakolliset kentät
function checkFormData2(f){
	var errorMsgs = ''; //Virheitä sisältäneiden kenttien sisällöt tänne
	var errorsExists = false;
	var niceError = true;

	for(i=0; i<f.elements.length; i++){
		if( f.elements[i].getAttribute('MANDATORY') ){
			//Ruksikentät
			if( f.elements[i].type=='checkbox' ){
				if( f.elements[i].checked==false ){
					if( f.elements[i].getAttribute('NICENAME') ){
						errorMsgs += ' - ' + f.elements[i].getAttribute('NICENAME') + '\n';
					} else {
						niceError = false;
					}
					errorsExists = true;
				}
			//Pitkät ja lyhyet tekstikentät
			}else{	
				if( f.elements[i].value.length < f.elements[i].getAttribute('MANDATORY') ){
					if( f.elements[i].getAttribute('NICENAME') ){
						errorMsgs += ' - ' + f.elements[i].getAttribute('NICENAME') + '\n';
					} else {
						niceError = false;
					}
					errorsExists = true;
				} 
			}
		}
	}
	//Palautetaan tosi jos ei ollut virheitä
	if( errorsExists ){
		if( niceError ){
			alert('Seuraavat kentät ovat pakollisia:' + '\n' + errorMsgs);
		} else {
			alert('Täytä pakolliset kentät!');
		}
		return false;
	} else {
		return true;
	}
}
//hakee elementin
function gElem(eName){
	if( document.all ){
		var r = document.all[eName];
	} else {
		var r = document.getElementById(eName);
	}
	return r;
}
	function prepare_layers() {
		var args = prepare_layers.arguments;
		var i;
		
		for(i=0;i<args.length;i++) {
			var ns_id = "NS" + args[i].replace(/[^a-z]/g, "F");
			var ie_id = "IE" + args[i].replace(/[^a-z]/g, "F");
			
			if(document.layers) {
				// netscape layer id (the layer that moves)
				document.layers[ns_id].pageX = document.layers[ie_id].pageX;
		    document.layers[ns_id].pageY = document.layers[ie_id].pageY;
			  document.layers[ns_id].document.open();
		  	document.layers[ns_id].document.write('<html><head><style><link rel="stylesheet" type="text/css" href="/mp/static/tyylit.css"></style></head><body>');
		  	document.layers[ns_id].document.write(document.forms[0].elements[args[i]].value);
	  		document.layers[ns_id].document.write('</body></html>');
		  	document.layers[ns_id].document.close();

			} else {
				// ie layer id
		    document.all[ie_id].innerHTML = document.forms[0].elements[args[i]].value;
			}
		}
		
	}

	function update_parent_fields() {
		// field1, val1, field2, val2, ...
		
		var args = update_parent_fields.arguments;
		var i;
		
		var lrs = opener.document.layers;
		
		for(i=0;i<args.length; i+=2) {

			
			var field = args[i];
			var val   = args[i+1];
		
			// inner layer id
			var id = (document.layers ? "NS" : "IE") + field.replace(/[^a-z]/g, "F");

			if(opener.document.forms[0] != null &&
				 opener.document.forms[0].elements[field] != null) {
	
				opener.document.forms[0].elements[field].value = val;
			}
			
			if(opener.document.all != null) {
				if(opener.document.all[id] != null) {
				  opener.document.all[id].innerHTML = val;
				}
			} else {
				if(opener.document.layers[id] != null) {
				  opener.document.layers[id].document.open();
			  	opener.document.layers[id].document.write('<html><head><style><link rel="stylesheet" type="text/css" href="/mp/static/tyylit.css"></style></head><body>');
			  	opener.document.layers[id].document.write(val);
		  		opener.document.layers[id].document.write('</body></html>');
			  	opener.document.layers[id].document.close();
				}
			}
		}
		window.close();
		return false;
	}
		
	function open_row_edit2(uri,wid,hei) {
		var wname = 'row_edit_1';
		if(window.name.substring(0,9) == 'row_edit_') {
			var num = window.name.substring(9) + 1;
			wname = 'row_edit_' + num;
		}
		
		var n = window.open(uri,
				'',
				'width='+wid+',height='+hei+',scrollbars=yes,resizable=yes');
		n.focus();
		
		return false;
	}

	function open_row_edit(uri) {
		return open_row_edit2(uri,600,500);
	}

