﻿





// suorittaa elementtien tarkistuksen 
function validateList(list,data){
	this.check = check;
	this.firstErrorKey;
	var base = this;
	
	function check(){
		var value;
		var dataIndex; 					
		var message ='';
		var column ;  
		var oEl; 
		var header;
		
		base.firstErrorKey = null;
		for (var i=0;i<data.length;i++){
		
		    for (var c=0;c<list.columns.length;c++){
		        column = list.columns.getColumn(c);
		        dataIndex = column.key + 2 *1;    
		        oEl = column.element;
		        header = column.header;
		        if (oEl){
		            value = data[i][dataIndex].toString(); 
	                // tarkistetaan onko arvo validi 	
				    // tarkistetaan onko arvo pakollinen 
				    if (oEl.required == true && (oEl.elementType == 'adselect' | oEl.elementType == 'adselectmultiple') ){ 
				        if (value.toString() == oEl.children[0].Element.value.toString()){     
				            message = writeErrorMessage(header,message, lanRequiredlabel);
				        } 
				    } else if (value.length == 0 && oEl.required == true ){
					    message = writeErrorMessage(header,message, lanRequiredlabel);
				    } else if (value.length > 0 ){ 
					    // tarkistetaan vastaako arvo tietotyyppia 
					    if (oEl.elementType == 'adfloat' | oEl.elementType == 'adpercent' | oEl.elementType == 'adcurrency'  | oEl.elementType == 'admoney' | oEl.elementType == 'adnumeric'){
						    if (!IsNumeric(value.toString(),true)){
							    message = writeErrorMessage(header,message, lanNumberlabel);
						    }else {
							    if ((value  < cInt(oEl.minValue) && oEl.minValue ) | (value > cInt(oEl.maxValue) && oEl.maxValue ) ){   
								    message = writeErrorMessage(header,message, lanBetweenlabel.replace('#MinMax#' , cString(oEl.minValue) + '-' + cString(oEl.maxValue) ));
							    }
						    }
					    }else if (oEl.elementType == 'adinteger' | oEl.elementType == 'adnumeric'){
						    if (!IsNumeric(value.toString(),false)){
							    message = writeErrorMessage(header,message, lanNumberlabel);
						    }else {
							    if ((value  < cInt(oEl.minValue) && oEl.minValue ) | (value > cInt(oEl.maxValue) && oEl.maxValue ) ){   
								    message = writeErrorMessage(header,message, lanBetweenlabel.replace('#MinMax#' , cString(oEl.minValue) + '-' + cString(oEl.maxValue) ));
							    }
						    } 	
					    }else if (oEl.elementType == 'ademail'){
						    if (!isEmail(value.toString())){
							    message = writeErrorMessage(header,message, lanIncorrectlabel);
						    } 
					    }else if (oEl.elementType == 'addatecontrol' | oEl.elementType == 'addate' | oEl.elementType == 'addivdatecontrol'){
						    // tassa jenkki tarkistus koska listalla on oikeasti jenkki data 
						    var testvalue = ''
						    try{
						        var testvalue = value.toString().split(' ')[0];
						    }catch(e){}
						    var checkval = isDate(testvalue ,getDateFormat('mmddyy','/'));
						    if (!checkval){
							    message = writeErrorMessage(header,message,lanDatelabel);		
						    } else {   
							    var dat = new Date(getDateValue(value , list.dateDelimeter,list.dateType , 'm') +  '/' + getDateValue(value , list.dateDelimeter,list.dateType , 'd') + '/' + getDateValue(value , list.dateDelimeter,list.dateType , 'y') );
							    var max = new Date(); 
							    var min = new Date(); 
							    var maxMessage;
							    var minMessage;							
							    if (oEl.minValue && oEl.maxValue){
								    if (IsNumeric(oEl.maxValue,false)) max.setDate(max.getDate() + cInt(oEl.maxValue)); else max = new Date(oEl.maxValue);
								    if (IsNumeric(oEl.minValue,false)) min.setDate(min.getDate() + cInt(oEl.minValue)); else min = new Date(oEl.minValue);
								    maxMessage = cFormatDate(max,list.dateType,list.dateDelimeter);
								    max.setDate(max.getDate() - 1);
								    minMessage = cFormatDate(min,list.dateType,list.dateDelimeter);
								    if (dat < min | dat > max){message = writeErrorMessage(header,message, lanBetweenlabel.replace('#MinMax#' , minMessage + '-' + maxMessage ));} 
							    } else if (oEl.minValue){
								    if (IsNumeric(oEl.minValue,false)) min.setDate(min.getDate() + cInt(oEl.minValue)); else min = new Date(oEl.minValue);
								    minMessage = cFormatDate(min,list.dateType,list.dateDelimeter);		
								    if (dat < min ){message = writeErrorMessage(header,message, lanBetweenlabel.replace('#MinMax#' , minMessage + '-'  ));}
							    }else if (oEl.maxValue) {
								    if (IsNumeric(oEl.maxValue,false)) max.setDate(max.getDate() + cInt(oEl.maxValue)); else max = new Date(oEl.maxValue);
								    maxMessage = cFormatDate(max,list.dateType,list.dateDelimeter);
								    max.setDate(max.getDate() - 1);
								    if ( dat > max){message = writeErrorMessage(header,message, lanBetweenlabel.replace('#MinMax#' ,  '-' + maxMessage ));}
							    }
						    }
					    }else if (oEl.elementType == 'adpassword' | oEl.elementType == 'adpassword2' ){
						    if (oEl.minValue && oEl.maxValue){
							    if (value.length < cInt(oEl.minValue) ){ message = writeErrorMessage(header,message, lanPasssortlabel);} 
							    else if ( value.length > cInt(oEl.maxValue) ){ message = writeErrorMessage(header,message, lanPasslonglabel);}
						    } else if (oEl.maxValue){
							    if ( value.length > cInt(oEl.maxValue) ){ message = writeErrorMessage(header,message, lanPasslonglabel);}
						    } else if (oEl.minValue){
							    if (value.length < cInt(oEl.minValue) ){	message = writeErrorMessage(header,message, lanPasssortlabel);	}
						    }	
					    } else  if (oEl.Element.tagName.toLowerCase() == 'input' | oEl.elementType == 'adtextarea' ){	
						    if (oEl.minValue && oEl.maxValue){
							    if (value.length < cInt(oEl.minValue) ){ message = writeErrorMessage(header,message, lanSortlabel);} 
							    else if ( value.length > cInt(oEl.maxValue) ){ message = writeErrorMessage(header,message, lanLonglabel);}
						    } else if (oEl.maxValue){
							    if ( value.length > cInt(oEl.maxValue) ){ message = writeErrorMessage(header,message, lanLonglabel);}
						    } else if (oEl.minValue){
							    if (value.length < cInt(oEl.minValue) ){	message = writeErrorMessage(header,message, lanSortlabel);	}
						    }	
					    }
				    }
				    if (!base.firstErrorKey && message.length > 0){base.firstErrorKey = data[i][0].toString()} 
		        }
		    }
		}  	
		return message;
	}	
	function writeErrorMessage(header , message , error ){
		error = error.replace('#Label#',header);
		if (message.indexOf(error) == -1){	message += '<LI><SPAN Class="TextCss">' + error + '</SPAN></LI>';}
		return message;	
	}
}

function errorLayout(){
    
    this.writeError = writeError;
    this.writeMessage = writeMessage;
    var errorLabel;
    var errorIframe;
    var opera = false;
	
	// valitaan selain 
	if (navigator.userAgent.indexOf('Opera') != -1)opera = true;
	else if (navigator.userAgent.indexOf('Netscape6') != -1) opera = true;
	function writeMessage(list,message , object ){
	    writeError(list,message , object , null,true);
	}
	function writeError(list,message , object ,afterClose , messageType){		
		var absTop; 
		var absLeft;
		var width;
		var oImage;
		
		if (message){
			closeErrorLabel();
			if (!messageType){message = '<table width="100%" cellpadding=0 cellspacing=0 border=0><tr><td Class="TextCss"><B>' + lanErrortitle + '</B></td><td align=right><img style="cursor:pointer" src="' + list.virtualDirectory + 'jdm/WebControls/Images/close.gif" height="16" width="16"></td></tr></table><UL>' + message + '</SPAN></UL>';} 
			else {message = '<table width="100%" cellpadding=0 cellspacing=0 border=0><tr><td align=right><img style="cursor:pointer" src="' + list.virtualDirectory + 'jdm/WebControls/Images/close.gif" height="16" width="16"></td></tr></table><UL>' + message + '</UL>';}
			
			errorLabel = document.createElement('div');
			errorLabel.style.position = 'absolute';
			//absTop = getAbsoluteTop(list.Grid) + 5; 
			absTop = getAbsoluteTop(object) + 5;
			absLeft = getAbsoluteLeft(list.Grid) + 5; 
			width = list.Grid.offsetWidth - 10;
			errorLabel.style.width = width; 
			errorLabel.style.top =  absTop;
			errorLabel.style.left = absLeft ;
			errorLabel.className = "TabErrorLabel"; 
			errorLabel.innerHTML = message;
			errorLabel.style.zIndex = 2; 
			if (!opera){ 
				errorIframe = document.createElement('iframe');
				errorIframe.src = list.virtualDirectory + 'jdm/webcontrols/dummy.htm';
				object.appendChild(errorIframe);
				object.appendChild(errorLabel);
				errorIframe.style.position = 'absolute';
				errorIframe.style.height = errorLabel.offsetHeight - 2;
				errorIframe.style.top = absTop;
				errorIframe.style.left = absLeft;
				errorIframe.style.width = width; 
				errorIframe.style.borderWidth = 0;
				errorIframe.style.zIndex = 1; 
				
			}else {
				object.appendChild(errorLabel);
			}	
		    oImage = errorLabel.getElementsByTagName('img')[0];
		    oImage.onclick = buttClose;
		    //list.oToolTip.initialize('sulje',oImage, true);
		} else {
			closeErrorLabel();
		}
		function buttClose(){closeErrorLabel(); try{afterClose.execute();}catch(e){}}
		function closeErrorLabel(){
			if (errorLabel){
				object.removeChild(errorLabel);
				if (!opera) object.removeChild(errorIframe);
			} 
			errorLabel = null;
			errorIframe = null;
			return true; 
		} 
	}	
}