var imgUrl = "/InfomobilityWeb/Images/alert-small2.gif";

function Validate(email, name, surname, password, phonePrefixes, mobilePhone, firstRoute, firstTime, secondRoute, secondTime, acceptTerms, MaxRoutesNumber, confirmPrefix, confirmMobilePhone)
{
	// var imgUrl = "/Infomobility/Images/alert-small2.gif";
	var test = true;
	
	
	// Check for output channel
	if(document.getElementById(email) != null)
	{
		var x = RequiredFieldValidator(email, 'TextBox', "Devi inserire un indirizzo email valido", imgUrl);
		if(!x)
			test = false;
		else
		{
			var reg = /^[\w\.-]+(\+[\w-]*)?@([\w-]+\.)+[\w-]+$/;
				
			var x = FormatValidator(email, reg, "Devi inserire un indirizzo email valido", imgUrl)
			if(!x)
				test = false;
		}
	}
	
	
	// Check for name
	if(document.getElementById(name) != null)
	{
		var x = RequiredFieldValidator(name ,'TextBox', "Devi inserire un nome", imgUrl);
		if(!x)
			test = false;
	}
	
	
	// Check for surname
	if(document.getElementById(surname) != null)
	{
		var x = RequiredFieldValidator(surname ,'TextBox', "Devi inserire un cognome", imgUrl);
		if(!x)
			test = false;
	}
	
	
	// Check for password
	if(document.getElementById(password) != null)
	{
		var x = RequiredFieldValidator(password, 'TextBox', "Devi inserire una password", imgUrl);
		if(!x)
			test = false;
	}
	
	
	// Check for accept terms
	if(document.getElementById(acceptTerms) != null)
	{
		var x = RequiredFieldValidator(acceptTerms, 'CheckBoxList', "Devi accettare per procedere", imgUrl);
		if(!x)
			test = false;
	}
	
	// Check for mobile phone prefixe
	if(document.getElementById(phonePrefixes) != null)
	{
		var x = RequiredFieldValidator(phonePrefixes , 'ListBox', "Scegli un prefisso", imgUrl);
		if(!x)
			test = false;
	}
	
	// Check for mobile phone
	if(document.getElementById(mobilePhone) != null)
	{
		var x = RequiredFieldValidator(mobilePhone , 'TextBox', "Inserisci il numero di cellulare", imgUrl);
		if(!x)
			test = false;
		else
		{
			// var reg = /^3[0-9]{2}[0-9]{7}$/;
			var reg = /^[0-9]{7}$/;
			
			var x = FormatValidator(mobilePhone, reg, "Inserisci un numero di cellulare valido", imgUrl);
			if(!x)
				test = false;
		}
	}
	
	// Check for confirm mobilephone
	var prefix = document.getElementById(phonePrefixes);
	var phone = document.getElementById(mobilePhone);
	var cPrefix = document.getElementById(confirmPrefix);
	var cPhone = document.getElementById(confirmMobilePhone);
	
	if(prefix != null && phone != null && cPrefix != null && cPhone != null)
	{
		ctrl = new ControlToValidate(confirmMobilePhone, "TextBox");
		calloutID = ctrl.clientID + "_requiredVal";
		callout = new Callout(calloutID, "Numeri di telefono non corrispondenti", imgUrl);
		
		if((prefix.selectedIndex != cPrefix.selectedIndex) || (phone.value != cPhone.value))
		{
			AppendCallout(ctrl, callout);
			
			test = false;
		}
		else
		{
			RemoveCallout(callout);
		}
	}
	
	
	
	
	
	// Check for first route
	if(document.getElementById(firstRoute) != null)
	{
		var x = IsRouteSelected(firstRoute, MaxRoutesNumber);
		if(!x)
			test = false;
	}
	/*
	if(document.getElementById(firstRoute) != null)
	{
		var x = RequiredFieldValidator(firstRoute ,'ListBox', "Scegli una direttrice", imgUrl);
		if(!x)
			test = false;
	}
	*/
	
	// Check for first time range
	if(document.getElementById(firstTime) != null)
	{
		var x = RequiredFieldValidator(firstTime ,'ListBox', "Scegli una fascia oraria", imgUrl);
		if(!x)
			test = false;
	}
	
	
	
	// Check for second route and second time.
	var route = document.getElementById(secondRoute);
	var time = document.getElementById(secondTime);
	
	if(route != null && time != null)
	{
		// if(!route.options[0].selected && time.options[0].selected)
		if(route.selectedIndex != -1 && time.options[0].selected)
		{
			ctrl = new ControlToValidate(secondTime, "ListBox");
			calloutID = ctrl.clientID + "_requiredVal";
			callout = new Callout(calloutID, "Inserire una fascia oraria per la seconda direttrice", imgUrl);
			
			AppendCallout(ctrl, callout);
				
			test = false;
		}
		// else if(!time.options[0].selected && route.options[0].selected)
		else if(!time.options[0].selected && route.selectedIndex == -1)
		{
			ctrl = new ControlToValidate(secondRoute, "ListBox");
			calloutID = ctrl.clientID + "_requiredVal";
			callout = new Callout(calloutID, "Scegliere una direttrice", imgUrl);
			
			AppendCallout(ctrl, callout);
				
			test = false;
		}
		else if(route.selectedIndex != -1)
		{
			if(!IsRouteSelected(secondRoute, MaxRoutesNumber))
				test = false;
		}
		else
		{
			ctrl = new ControlToValidate(secondTime, "ListBox");
			calloutID = ctrl.clientID + "_requiredVal";
			callout = new Callout(calloutID, "Inserire una fascia oraria per la seconda direttrice", imgUrl);
			RemoveCallout(callout);
			
			ctrl = new ControlToValidate(secondRoute, "ListBox");
			calloutID = ctrl.clientID + "_requiredVal";
			callout = new Callout(calloutID, "", imgUrl);
			RemoveCallout(callout);
		}
	}	
	
	
	return test;
}


// Display time range for route
function PrintRange(list, lbl, route,  span)
{
	var ctrl = document.getElementById(list);
	
	for (var i = 0; i < ctrl.options.length; i++)
	{
		if(ctrl.options[i].selected && ctrl.options[i].value != null && ctrl.options[i].value != "")
		{
			var selected = new String();
			selected = ctrl.options[i].value
			var dt = new Date();
			var ar = selected.split(':');
			dt.setHours(ar[0], ar[1], 0);
			
			var start = new Date();
			start.setTime(dt.getTime() - span);
			
			var end = new Date();
			
			
			end.setTime(dt.getTime()  -(-span));
			
			document.getElementById(lbl).innerHTML = "(" + start.getHours() + ":" + start.getMinutes() + " - " + end.getHours() + ":" + end.getMinutes() + ")";
			// document.getElementById(lbl).innerHTML = "(" + (selected - 1) + ":30 - " + selected + ":30)";
			break;
		}
		else
		{
			document.getElementById(lbl).innerHTML = "";	
		}	
	}
	
	
	OnChangeTime(route, list);
	// OnChangeRoute(list, route);
}



// Check for second route and time raneg when select index change
function OnChangeRoute(routeID, timeID, max, lblroute)
{
	//
	DisplaySelectedRoutes(routeID, lblroute)
	//

	var route = document.getElementById(routeID);
	var time = document.getElementById(timeID);
	
	if(route != null && time != null)
	{
		ctrl = new ControlToValidate(routeID, "ListBox");
		calloutID = ctrl.clientID + "_requiredVal";
		callout = new Callout(calloutID, "Inserire sia direttrice che fascia o nessuno dei due", imgUrl);
		
		
		// if(!route.options[0].selected && time.options[0].selected)
		if(route.selectedIndex == -1 && !time.options[0].selected)
		{
			AppendCallout(ctrl, callout);
			
			return false;
		}
		else
		if(route.selectedIndex != -1)
		{
			return IsRouteSelected(routeID, max);
		}
		else
		{
			RemoveCallout(callout);
			
			ctrl = new ControlToValidate(routeID, "ListBox");
			calloutID = ctrl.clientID + "_requiredVal";
			callout = new Callout(calloutID, "", imgUrl);
			
			RemoveCallout(callout);
		}
	}
	
	
	
	return true;
}

function OnChangeTime(routeID, timeID, max)
{
	var route = document.getElementById(routeID);
	var time = document.getElementById(timeID);
	
	if(route != null && time != null)
	{
		ctrl = new ControlToValidate(timeID, "ListBox");
		calloutID = ctrl.clientID + "_requiredVal";
		callout = new Callout(calloutID, "Inserire sia direttrice che fascia o nessuno dei due", imgUrl);
		
		
		// if(!route.options[0].selected && time.options[0].selected)
		if(route.selectedIndex != -1 && time.options[0].selected)
		{
			AppendCallout(ctrl, callout);
				
			return false;
		}
		else
		{
			RemoveCallout(callout);
			
			ctrl = new ControlToValidate(routeID, "ListBox");
			calloutID = ctrl.clientID + "_requiredVal";
			callout = new Callout(calloutID, "", imgUrl);
			
			RemoveCallout(callout);
		}
	}
	
	return true;
}


function IsRouteSelected(lb, max)
{
	var ctrl = document.getElementById(lb);
	
	if(ctrl != null)
	{
		var counter = 0;
		for (var i = 0; i < ctrl.options.length; i++)
		{
			// ctrl.options[i].selected = list[i];
			
			if(ctrl.options[i].selected && ctrl.options[i].value != null && ctrl.options[i].value != "")
			{
				counter++;
			}
		}
		
		ctrl = new ControlToValidate(lb, "ListBox");
		calloutID = ctrl.clientID + "_requiredVal";
		callout = new Callout(calloutID, "Selezionare al massimo " + max + " elementi", imgUrl);
		
		if(counter > max || counter == 0)
		{
			AppendCallout(ctrl, callout);
			return false;
		}
		else
		{
			RemoveCallout(callout);
			return true;
		}
	}
}


function CheckRouteSelection(route, max, routelbl)
{
	/*
	var ctrl = document.getElementById(lb);
	
	list[ctrl.selectedIndex] = !list[ctrl.selectedIndex];
	document.getElementById(id).value = "";
	
	for (var i = 0; i < ctrl.options.length; i++)
	{
		ctrl.options[i].selected = list[i];
		document.getElementById(id).value += list[i] + ";";
	}
	*/
	
		
			
			
	DisplaySelectedRoutes(route, routelbl);
			
	
	return IsRouteSelected(route, max);
	
}

function DisplaySelectedRoutes(route, label)
{
	var ctrl = document.getElementById(route);
	
	if(ctrl != null)
	{
		var IsSelected = false;
		
		var str = new String();
		str = "(";
			
		
		for (var i = 0; i < ctrl.options.length; i++)
		{
			
			if(ctrl.options[i].selected && ctrl.options[i].value != null && ctrl.options[i].value != "")
			{
				IsSelected = true;
				
				str += ctrl.options[i].text + "<br>";
			}
		}
		
		str = str.substring(0, str.lastIndexOf("<br>"));
		str += ")";
		
		if(IsSelected)
			document.getElementById(label).innerHTML = str;
		else
			document.getElementById(label).innerHTML = "";
	}
}


/*

<tra:customvalidator id="CheckTermsValidator" TextKey="ACCEPT_TERMS" runat="server" ErrorMessage="Devi accettare per procedere"></tra:customvalidator>

<tra:regularexpressionvalidator id="ValidEmail" runat="server" TextKey="VALID_EMAIL" Display="Dynamic" ValidationExpression="[\w\.-]+(\+[\w-]*)?@([\w-]+\.)+[\w-]+" ErrorMessage="Devi usare un indirizzo valido" ControlToValidate="EmailField"></tra:regularexpressionvalidator>
<tra:requiredfieldvalidator id="RequiredEmail" runat="server" TextKey="INSERT_EMAIL" ErrorMessage="Il campo 'Email' non puņ essere lasciato vuoto" ControlToValidate="EmailField"></tra:requiredfieldvalidator>

<tra:requiredfieldvalidator id="RequiredName" runat="server" Text="" TextKey="INSERT_NAME" Display="Dynamic" ErrorMessage="'Name' must not be left blank" ControlToValidate="NameField"></tra:requiredfieldvalidator>

<tra:requiredfieldvalidator id="RequiredSurname" runat="server" Text="Il campo 'Cognome' non puņ essere lasciato vuoto" TextKey="INSERT_SURNAME" Display="Dynamic" ErrorMessage="" ControlToValidate="SurnameField"></tra:requiredfieldvalidator>

<tra:requiredfieldvalidator id="RequiredPassword" runat="server" Text="" TextKey="INSERT_PASSWORD" ErrorMessage="Il campo 'Password' non puņ essere lasciato vuoto" ControlToValidate="PasswordField"></tra:requiredfieldvalidator>
*/
