/*
This score_validate function is used to validate the values in the 
dropdown box on the contest_main.asp, for judge voting.
*/

function score_selected()
{
	var frm = document.vote_form;
	var stat=1;
	for (x = 0;x<frm.elements.length;x++)
	{	
		if ((frm.elements[x].value==''||frm.elements[x].value=='Score') && (frm.elements[x].type == 'select-one'))
		{
			alert ('Please select your scores for all the Contestants in this Match before clicking on the CAST ALL VOTES button.');
			frm.elements[x].focus() ;	
			stat=0;
			return false;		
		}//if		
	}//for
	if(stat==1)
		frm.submit();
}


function score_validate(sSubCriteriaCnt, sNoCont, sLastJudge)
{
	
	//alert("sSubCriteriaCnt=" + sSubCriteriaCnt + " sNoCont= " + sNoCont + " sLastJudge= " + sLastJudge)	;
	var frm = document.vote_form;
	var leng,temp;	
	var x,i,j,no_elem,k=0, tot=0,val=0,t,sNoWinner;
	var dd_name,dd_name_len,uscont_id;
	var cnt; // counter for enabling the drop downs.
	
	var tie_arr= new Array();	
	var arr = new Array();
	var sPastAvg = new Array();
	var div_ref = document.all['div_Alljudge'];
	

	no_elem = frm.elements.length;
	for (x = 0;x<frm.elements.length;x++)
	{	
		if ((frm.elements[x].value=='' || frm.elements[x].value=='Score') && (frm.elements[x].type == 'select-one'))
		{
			alert ('Please select your scores for all the Contestants in this Match before clicking on the CAST ALL VOTES button.');
			frm.elements[x].focus() ;	
			return false;		
		}//if		
	}//for
	
			//************check ties************** 13 April 05
			
		
		if (sLastJudge=='True')
		{				
				//put the hidden text box values in array.
				no_panels = parseInt((frm.elements.length)/(sSubCriteriaCnt + 2));				
				j= sSubCriteriaCnt + 1;				
				for (i=j+1;i<=no_elem;i=i+j+1)
				{
					//alert ('type = '+ frm.elements[i].type + 'name = '+ frm.elements[i].name +' ' + frm.elements[i].value);
					//alert ('hidden variable val = ' + frm.elements[i].value);
					arr[k] = parseFloat(frm.elements[i].value); 
					k++;
				}//for
				
				//**********************
				//get the total of the values in drop down panel and find its average. 
				//Then add it to the value in the hidden text box.and now store this value in the text box.
				//This is done for each contestant.
				
				//**********************
				//note: loop is starting from 1, because, already there 
				//is a hidden object-to store no of judges in a match.and it 
				//is declared before the drop downs, 
				//so this object is form.elements[0].
								//***************************
				x=1;
				
				for (i=1,k=0;i<=no_panels;i++,k++)
				{		
					tot = 0;
					
					for (j=x;j<(x+sSubCriteriaCnt);j++)
					{
						//alert (parseFloat(frm.elements[j].value));
							
							val = parseFloat(frm.elements[j].value);
							//alert(" val " + frm.elements[j].value);
							tot = tot+ val;		
							//alert("tot "+ tot);
					}//for
					savg = tot/sSubCriteriaCnt;
					//alert ('tot = '+ tot + 'sSubCriteriaCnt ='+ sSubCriteriaCnt);
					//alert (savg);
					
					frm.elements[j].value =savg;
					//alert("savg " + savg + " tot " + tot + " sSubCriteriaCnt " + sSubCriteriaCnt);
					//alert(frm.elements[j].value);
					
					sPastAvg[k] = arr[k];
						
					//store the original vlues in sPastAvg	
					//because arr gets sorted in later part.
										
						arr[k] = arr[k]+ savg;
					
					//alert (arr[k] +''+ savg);
										
						frm.elements[j+1].value = arr[k]; // store the value in the text box.
					
					//alert ('average' + arr[k]);
					x = j+2;
				}//for
				
				
				//**********sort the array************
				
				leng = arr.length
				for (i=0;i<leng-1;i++)
				{
					for (j=i+1 ; j<leng;j++)
					{
						if (arr[i]<arr[j])
						{
							temp = arr[i];
							arr[i] = arr[j];
							arr[j] = temp;
						}//if
					}//for J		
				}//for I
				
				/*for (k=0;k<arr.length;k++)
				{
					alert ('sort arr ' +arr[k]);
				}*/
				if(sNoCont==1)
					{sNoWinner=sNoCont;}
				else
					{sNoWinner=parseInt(sNoCont)/2;}	// No of winners from each match. If match is Final then winner =1
				
				
				/*this, IF statement is for the following.
				 snoWinner gives the value of no of contestants going in the next round.
				 Arr array consists of sorted order of total judge votes.In descending order.
				 To check if there is a tie, jump to (sNoWinner) location in Arr array and
				 compare the value with (sNoWinner+1) location.
				 */
				
				if (arr[sNoWinner-1]== arr[sNoWinner])
				{
					tie_arr[0] = arr[sNoWinner-1];					
				}//if
				
			
				/*for (k=0;k<tie_arr.length;k++)
				{
					alert ('tie break array' +tie_arr[k]);
				}*/
				
				//alert ('no_elem = ' + no_elem + 'i=  '+i);
				
				
				//***** first disable the drop downs and wherever there is
				// tie break enable those drop downs.
				//********************
				
				if (tie_arr.length!=0)
				{
					for (i=0;i<=no_elem-1;i++)
					{
						//alert (frm.elements[i].type);
						if (frm.elements[i].type == 'select-one')
						{		
							frm.elements[i].disabled = true;
							//alert ('disabled dd - ' +frm.elements[i].value );
						}//if
					}//for
				}//if
				
				//************************
				//i=i+sSubCriteriaCnt+1 --- with this statement you jump to 
				//all text boxes where average value is stored.
				//************************
				
			//	alert ( 'i='+i+' no_elem= '+no_elem );

				cnt = 1;
				
					for (k=0;k<parseInt(tie_arr.length);k++)
					{
							for (i= 1+parseInt(sSubCriteriaCnt)+1,j=0; parseInt(i)< parseInt(no_elem);i=i+parseInt(sSubCriteriaCnt)+2,j++)
							{					
								//alert ( 'i='+i+' no_elem= '+no_elem );
								//alert ('i< no_elem =' +parseInt(i)< parseInt(no_elem));
								//alert ('compare hidden var & tie value' +frm.elements[i].value +'  '+ tie_arr[k]);
								
								if (frm.elements[i].value == tie_arr[k])
								{
									//alert ('in if');
									//*********once the (average) text box is reached, 
									//go back as many no of sub-criteria are there, 
									//and enable the drop downs one by one.
									//**********
									// If Max judge is > 1 then add the previouse average to the current judge's average.
									if (frm.elements[i].value!="")
									{
										frm.elements[i].value=(parseFloat(frm.elements[i].value) + sPastAvg[j] ) / 2;
									}
									else
										frm.elements[i].value = sPastAvg[j];	
									//since there is a tie, set original avg to the text boxes.
									
									for (t=i-2;t>=1 && (frm.elements[t].type == 'select-one') ;t--)
									{
										//alert ('Enabled t = ' + t);
										//if (frm.elements[i].type == 'select-one')
										//{
											frm.elements[t].disabled = false;
											//t--;
										//}//if
									}//for
								}//if
							//alert ('out side if');
							
								else
								if (frm.elements[i].value != tie_arr[k])
								{
									if (frm.elements[i].value!="")
									{
										frm.elements[i].value=(parseFloat(frm.elements[i].value) + sPastAvg[j] ) / 2;
									}
									else
										frm.elements[i].value = sPastAvg[j];
								}//else
											
							// whenever a tie occurs the enable 
							//loop must execute twice, since tie is between 
							//2 contestants. for that CNT is used.
							//alert ('cnt = '+ cnt);
							cnt = cnt+1; 
						}//for I
					}//for K
				
					
				if (tie_arr.length ==0)
				{
					//before the form gets submitted.
					//enable the drop downs that are disabled.
					
							for (i=0;i<=no_elem-1;i++)
							{
								//alert (frm.elements[i].type);
								if (frm.elements[i].type == 'select-one')
								{			
									frm.elements[i].disabled = false;
									//alert ('enable dd - ' +frm.elements[i].value );
								}//if
							}//for	
							//alert("In submit tie_arr.length ==0");
							frm.submit();
				}//if
				else
				{
					alert ('Oops! there is a Tie.You need to resolve it');
					for(x=1;x<=parseInt(no_panels);x++)
					{
						xx=eval('document.getElementById("div_Alljudge' + x + '").style.visibility="visible"');
					}

					//alert(document.getElementById("div_Alljudge").style.visibility);
					//document.getElementById("div_Alljudge").style.visibility = 'visible';
					
				}//else
	}//IF
	else
	if (sLastJudge=='False')
	{
			
			//******************** IF NOT LASTJUDGE**************							
			//put the hidden text box values in array.
			
			no_panels = parseInt((frm.elements.length)/(sSubCriteriaCnt + 1));
			
			j= sSubCriteriaCnt;
			
			for (i=j+1; i<=no_elem;i=i+j+1)
			{
				//alert ('type = '+ frm.elements[i].type + 'name = '+ frm.elements[i].name +' ' + frm.elements[i].value);
				
				arr[k] = parseFloat(frm.elements[i].value); 
				k++;
			}//for
			
			//**********************
			//get the total of the values in drop down panel and find its average. 
			//Then add it to the value in the hidden text box.and now store this value in the text box.
			//This is done for each contestant.
			
			//**********************
			//note: loop is starting from 1, because, already there 
			//is a hidden object-to store no of judges in a match.and it 
			//is declared before the drop downs, 
			//so this object is form.elements[0].
			//***************************
			x=1;
			for (i=1,k=0;i<=no_panels;i++,k++)
			{		
				tot = 0;
				for (j=x;j<(x+sSubCriteriaCnt);j++)
				{
					val = parseFloat(frm.elements[j].value);
					tot = tot+ val;
				}//for
				savg = tot/sSubCriteriaCnt;	
				sPastAvg[k] = arr[k];					//store the original vlues in sPastAvg	
				//because arr gets sorted in later part.
				
				arr[k] = arr[k]+ savg;
				//alert (arr[k] +'  '+ savg);
				frm.elements[j].value =arr[k]; // store the value in the text box.
				
				//alert ('average' + arr[k]);
				x = j+1;
			}//for
			
			
			//**********sort the array************
			
			leng = arr.length;
			for (i=0;i<=leng-1;i++)
			{
				for (j=i+1 ; j <leng;j++)
				{
					if (arr[i]<arr[j])
					{
						temp = arr[i];
						arr[i] = arr[j];
						arr[j] = temp;
					}//if
				}//for J		
			}//for I
			
			tie_arr.length = 0;
			
			for (i=0,k=0;i<parseInt(sNoCont/2);i++)
			{
				if (arr[i]== arr[i+1])
				{
					tie_arr[k] = arr[i];
					k = k+ 1;
				}//if
			}//for I
			
			/*
			for (k=0;k<tie_arr.length;k++)
			{
				alert ('tie break ' +tie_arr[k]);
			}
			*/
			
			//alert ('no_elem = ' + no_elem + 'i=  '+i);
			
			//***** first disable the drop downs and wherever there is
			// tie break enable those drop downs.
			//********************
			if (tie_arr.length!=0)
			{
				for (i=0;i<=no_elem-1;i++)
				{
					//alert (frm.elements[i].type);
					if (frm.elements[i].type == 'select-one')
					{			
						frm.elements[i].disabled = true;
						//alert ('disabled dd - ' +frm.elements[i].value );
					}//if
				}//for
			}//if
			
			//************************
			//i=i+sSubCriteriaCnt+1 --- with this tatement you jump to 
			//all text boxes where average value is stored.
			//************************
			
		//	alert ( 'i='+i+' no_elem= '+no_elem );


			cnt = 1;
			
				for (k=0;k<parseInt(tie_arr.length);k++)
				{
						for (i= 1+parseInt(sSubCriteriaCnt),j=0; parseInt(i)< parseInt(no_elem);i=i+parseInt(sSubCriteriaCnt)+1,j++)
						{
							//alert ( 'i='+i+' no_elem= '+no_elem );
							//alert ('i< no_elem =' +parseInt(i)< parseInt(no_elem));
							
							//alert (frm.elements[i].value +'  '+ tie_arr[k]);
							if (frm.elements[i].value == tie_arr[k])
							{
								//alert ('in if');
								//*********once the (average) text box is reached, 
								//go back as many no of sub-criteria are there, 
								//and enable the drop downs one by one.
								//**********										
									if (frm.elements[i].value!="")
									{
										frm.elements[i].value=(parseFloat(frm.elements[i].value) + sPastAvg[j] ) / 2;
									}
									else
										frm.elements[i].value = sPastAvg[j];
								//since there is a tie, set original avg to the text boxes.
								
								for (t=i-1;t>=1 && (frm.elements[t].type == 'select-one') ;t--)
								{
									//alert ('Enabled t = ' + t);
									//if (frm.elements[i].type == 'select-one')
									//{
										frm.elements[t].disabled = false;
										//t--;
									//}//if
								}//for
							}//if
							//alert ('out side if');
							
							else
								if (frm.elements[i].value != tie_arr[k])
								{
									if (frm.elements[i].value!="")
									{
										frm.elements[i].value=(parseFloat(frm.elements[i].value) + sPastAvg[j] ) / 2;
									}
									else
										frm.elements[i].value = sPastAvg[j];
								}//else
										
							// whenever a tie occurs the enable 
							//loop must execute twice, since tie is between 
							//2 contestants. for that CNT is used.
							
							//alert ('cnt = '+ cnt);
							cnt = cnt+1; 
							
						}//for I
				}//for K
				
			if (tie_arr.length ==0)
			{
				//before the form gets submitted.
				//enable the drop downs that are disabled.
				
						for (i=0;i<=no_elem-1;i++)
						{
							//alert (frm.elements[i].type);
							if (frm.elements[i].type == 'select-one')
							{			
								frm.elements[i].disabled = false;
								//alert ('enable dd - ' +frm.elements[i].value );
							}//if
						}//for		
		
				frm.submit();
			}//if
			else
			{
				alert ('Oops! there is a Tie.You need to resolve it');
			}//else
		}//ELSE
	
}//func

function Terminate()
{
	sOpener = window.opener;
	sLoc = sOpener.location.href;
	if (sOpener != null)
	{
		sOpener.location.href = sLoc;
	}
	
	window.close();
	return true;
}