function ClassFormRowList(){
	this.rows=new Collection();

	this.initialize=function _initialize(rowCount){
		for(kk=0;kk<rowCount;kk++){
			var row=new ClassFormRow();
					
			for(var ii=0;ii<formFieldList.fieldList.size();ii++){
				var element=formFieldList.fieldList[ii];
				var uniqeID=kk+"#"+element.elementID+"_"+(element.index-1);
				var column=new ClassFormColumn();
				column.colIndex=ii;	
				
				switch (parseInt(element.elementType,10)){
					case CONST_FIELD_TEXT:
						switch(element.validationType){
							case "phone_number":
								column.validObj=new Spry.Widget.ValidationTextField("spry#"+uniqeID, "custom", {validateOn:["blur"],pattern:"000-000 00 00", hint:"000-000 00 00", maxChars:13,isRequired:element.required,useCharacterMasking:true});
								break;
							
							case "integer":
								column.validObj=new Spry.Widget.ValidationTextField("spry#"+uniqeID, "integer", {validateOn:["blur"],maxChars:10,hint:"0",isRequired:element.required,useCharacterMasking:true});
								break;
							
							case "currency":
								column.validObj=new Spry.Widget.ValidationTextField("spry#"+uniqeID, "currency", {validateOn:["blur"],maxChars:15,useCharacterMasking:true,isRequired:element.required,format:"dot_comma"});
								break;
							
							case "currency_with_symbol":
								column.validObj=new Spry.Widget.ValidationTextField("spry#"+uniqeID, "currency", {validateOn:["blur"],maxChars:15,useCharacterMasking:true,isRequired:element.required,format:"dot_comma"});
								break;
							
							case "none":
								column.validObj=new Spry.Widget.ValidationTextField("spry#"+uniqeID, "none", {validateOn:["blur"],isRequired:element.required});
								break;
								
							case "date":
								var date=new Date();
								m="0"+(date.getMonth()+1);
								y=date.getYear();
								d="0"+date.getDate()
								var today=d.substr(d.length-2,2)+"/"+m.substr(m.length-2,2)+"/"+y;
								column.validObj=new Spry.Widget.ValidationTextField("spry#"+uniqeID, "date", {validateOn:["blur"], format:"dd/mm/yyyy",maxChars:11,isRequired:element.required});
								break;
							
							case "time":
								var today=new Date();
								var h=today.getHours();
								var m=today.getMinutes();
								var s=today.getSeconds();
								
								if (h.toString().length==1) h="0"+h.toString();
								if (m.toString().length==1) m="0"+m.toString();
								if (s.toString().length==1) s="0"+s.toString();
								var time=h+":"+m+":"+s;		
							
								column.validObj=new Spry.Widget.ValidationTextField("spry#"+uniqeID, "time", {validateOn:["blur"], format:"HH:MM:SS", pattern:"'+time+'",maxChars:8,isRequired:element.required});
								break;
			
							default: 
								column.validObj=new Spry.Widget.ValidationTextField("spry#"+uniqeID, element.validationType, {validateOn:["blur"],maxChars:50,useCharacterMasking:true,isRequired:element.required});
							
						}			
						break;
					
					case CONST_FIELD_CHECKBOX:
						column.validObj=new Spry.Widget.ValidationCheckbox("spry#"+uniqeID,{validateOn:["blur"],isRequired:element.required});
						break;
									
					case CONST_FIELD_RADIO:
						column.validObj=new Spry.Widget.ValidationCheckbox("spry#"+uniqeID,{validateOn:["blur"],isRequired:element.required});
						break;
					
					case CONST_FIELD_SELECT:
						if (element.required){
							column.validObj = new Spry.Widget.ValidationSelect("spry#"+uniqeID, {validateOn:["change"], invalidValue:"0"});
						}
						break;
				}
				row.columnList.add(column);
			}
			formRowList.rows.add(row);
		}
		
	}

}

function ClassFormFieldList(){
	this.fieldList=new Collection();

	this.calculateFormula=function _calculateFormula(index){
		
		for(var ii=0;ii<this.fieldList.size();ii++){
			var element=this.fieldList[ii];
			var formula=element.formula;
				
			if (element.formula!=""){
				var arrFormulaField=element.formula.split("#");
				
				for (var kk=0;kk<arrFormulaField.length;kk++){
					//Alan isimler kuralına -formul kuralına uygun biçimde yazılmış ise- tek sayılı array indexlerinde oluyor.
					if ((kk%2)==1){ //eğer tek sayı ise formul alanı hangi elemente ait bul.
						for (var jj=0;jj<this.fieldList.size();jj++){
							if (this.fieldList[jj].formulaName==arrFormulaField[kk]){
								var uniqeID = "$('field#"+index+'#' + this.fieldList[jj].elementID+"_"+(this.fieldList[jj].index-1)+"').value";
								var value="0";

								var formElement;
								formElement=$("field#"+index+"#"+this.fieldList[jj].elementID+"_"+(this.fieldList[jj].index-1));
								if (formElement!=null){
									value=formElement.value;
								}
								
								if (value!=null){
									value=value.replace(".",""); //Binlik ayıraçlarını at ve float olarak çevir
									value=value.replace(",","."); // virgul olan noktalık ayıracanı nokta yap.çünkü js standartı bu.
								}
								
								value=parseFloat("0"+value,10);
								var valueStr="parseFloat("+value+")"; 
								formula=formula.replace("#"+arrFormulaField[kk]+"#",valueStr);
							}
						}
					}
				}

				formula="$('field#"+index+'#'+element.elementID+"_"+(element.index-1)+"').value=formatFloatNumber((Math.round(("+formula+")*100))/100);";
				try{
					eval(formula);
					//Eğer div ise görünen kısmıda güncelle.
					if (element.elementType==CONST_FIELD_DIV){
						$('div_field#'+index+'#'+element.elementID+'_'+(element.index-1)).innerHTML=$('field#'+index+'#'+element.elementID+'_'+(element.index-1)).value;
					}
				}
				catch(err){alert("Formül hesaplama hatası:  "+err.description)}				
			}
		}
	}
}

function ClassFormField(){
	this.elementType=0;
	this.formulaName="";
	this.fieldName="";
	this.required=false;
	this.index=-1;
	this.elementID=0;
	this.formula="";
	this.validationType="none"; //Yapılacak doğrulamanın tipi, tam sayı, para, telefon vbg...
}

function ClassFormRow(){
	this.columnList=new Collection();
}

function ClassFormColumn(){
	this.colIndex=null;
	this.validObj=null; //Element ile ilgili validate kontrolunu tutacak obje
}


