function redirect()
{
 rec = document.getElementById("fnum");
 urls = document.getElementById("urls");
 window.open(urls.value + rec.value,"_blank","toolbar=no, location=yes, directories=no, status=no, menubar=yes, scrollbars=no, resizable=no, copyhistory=yes, width=1024, height=768")
}

function Toprint()
{
 Window.Print();
}

function AppSave()
{
	if (checktime("st1")) appform.submit();
}

function ShowEndDay()
{
 if(document.getElementById("multi").checked == true)
 { 	
 	document.getElementById("ed").style.visibility = "visible"; 	
 	//document.getElementById("st1").style.display = "none"; 
 	//document.getElementById("st1").value = "Anytime";
 }
 else
 {
 	document.getElementById("ed").style.visibility = "hidden";
 	document.getElementById("ed").value = ""; 
 	//document.getElementById("st1").style.display = "block"; 	
 }
}

/*	JG 19/4/07
	functions to enable childgrid control
*/

function cg_selectrow(rownumber)
{
	//make sure form is clear first
	if(document.getElementById("cg_selrow").value != 0) cg_clearform();
		
	var i, x, a, b;
	
	//split field list into array
	var fieldlist = document.getElementById("childgrid_fields").value.split(":");
	
	var numfields = fieldlist.length;
	
	//copy id
	document.getElementById("cgedit_hiddenid").value = document.getElementById("hiddenid" + rownumber).innerHTML;
	document.getElementById("cg_selrow").value = rownumber;
	
	//copy all fields and highlight selection by changing class
	for (i = 0; i < numfields; i ++)
	{
		a = String("cgedit_" + fieldlist[i]);
		b = String(fieldlist[i] + rownumber);
		document.getElementById(a).value = document.getElementById(fieldlist[i] + rownumber).innerHTML;
		
		document.getElementById(b).className = "childgrid_tdsel";
		
	}
	
	//set heading text and clear ajaxreturn
	document.getElementById("cg_newedit_heading").innerHTML = "Editing highlighted record - click 'Save' to save, or click 'Clear form' or select another record to cancel";
	document.getElementById("cg_ajaxreturn").innerHTML = "";
	
	//ready to edit!
}

function cg_clearform()
{
	var i, x, rownumber;
	
	//split field list into array
	var fieldlist = document.getElementById("childgrid_fields").value.split(":");
	
	var numfields = fieldlist.length;
	
	//get row number
	rownumber = document.getElementById("cg_selrow").value;
	document.getElementById("cg_selrow").value = 0;
	
	//clear id
	document.getElementById("cgedit_hiddenid").value = 0;
	
	//clear fields and reverse highlighting
	for (i = 0; i < numfields; i ++)
	{
		a = String("cgedit_" + fieldlist[i]);
		b = String(fieldlist[i] + rownumber);
		
		document.getElementById(a).value = "";
		if(rownumber != 0) document.getElementById(b).className = "childgrid_td";
		
	}
	//set heading text
	document.getElementById("cg_newedit_heading").innerHTML = "Add new record below or click an existing record to edit";
	
	//form clear!
}

function cg_save()
{
	var i, x, rownumber;
	
	//begin url string for ajax request
	var urlstring = "?action=childgridsave";
	urlstring = urlstring + "&id=" + document.getElementById("cgedit_hiddenid").value;	//if the id is zero, php script will insert new
		
	//split field list into array
	var fieldlist = document.getElementById("childgrid_fields").value.split(":");
	
	var numfields = fieldlist.length;
	
	//get row number
	rownumber = document.getElementById("cg_selrow").value;
	
	//append field list to url string
	//urlstring = urlstring + "&fieldlist=" + document.getElementById("childgrid_fields").value;
	
	//append values to urlstring and update ui
	
	for (i = 0; i < numfields; i ++)
	{
		a = String("cgedit_" + fieldlist[i]);
		b = String(fieldlist[i] + rownumber);
		
		if(rownumber != 0) document.getElementById(b).innerHTML = document.getElementById(a).value;	//not for new record
		urlstring = urlstring + "&cgfield" + i + "=" + escape(document.getElementById(a).value);
	}
	
	//fire AJAX request - this is asynchronous so will happen in the background
	//if a new record - use the main holder div as the return container so the grid is refreshed
	if(rownumber == 0)
		ajaxpage(urlstring, "childgridholder");
	else
		ajaxpage(urlstring, "cg_ajaxreturn"); 
		
	
	
	//clear form
	
	cg_clearform();
	
	//save complete!
	
}	

function cg_delete()
{
	//get row number
	var rownumber = document.getElementById("cg_selrow").value;
	
	//exit if no record highlighted
	if(rownumber != 0)
	{
	
		//get delete confirmation
		if(confirm("Are you sure you want to delete the highlighted record?")) 
		{
			//begin url string for ajax request
			var urlstring = "?action=childgridsave&delete=yes";
			urlstring = urlstring + "&id=" + document.getElementById("cgedit_hiddenid").value;	
			
			//fire AJAX request - this is asynchronous so will happen in the background
			//use the main holder div as the return container so the grid is refreshed
			
			ajaxpage(urlstring, "childgridholder")
			
			//clear form
			
			cg_clearform();
			
			//delete complete!
		}
	}
}	

/*end childgrid functions*/

function dynsel(controlname, childid, parentid, clearfields)
/*fires ajaxselect to change contents of option list*/
/*	controlname refers to definitions in inc_dynamicselect.php
	childid is the DOM id of the child select control to receive the updated option list
	parentid is the DOM id of the initiating control, which should contain the parent id as a value
*/
{
	var i;
	var linksel = document.getElementById(parentid).selectedIndex;
	var linkval = document.getElementById(parentid).options[linksel].value;
	
	if(clearfields != undefined)		//clear any fields passed to the function
	{
		clearfields = clearfields.split(",");
		for(i = 0; i < clearfields.length; i ++)
		{
			if(undefined != document.getElementById(clearfields[i])) document.getElementById(clearfields[i]).value = "";
		}
	}
	
	var urlstring = "index.php?action=dynsel";
	urlstring = urlstring + "&control=" + controlname + "&id=" + linkval;
	
	ajaxselect(urlstring, childid);
}

function new_existing_client()
/*	only used on app detail
	swaps between client dropdown and new client box
*/
{
	var i;
	var newmode = document.getElementById("clilink").innerHTML;		//link next to client label
	
	if(newmode == "add new")		//switch to add new - need to clear everything
	{
		document.getElementById("clilink").innerHTML = "existing";		//switch link text
		document.getElementById("client").style.display = "none";		//hide client dropdown
		document.getElementById("newcl").style.display = "inline";		//show new client text box
		
		document.getElementById("clicont").options.length = 0;			//clear contacts list
		document.getElementById("clicont").options[0] = new Option("Please add new...", 0);		//insert null option
		document.getElementById("conname").value = "";					//clear new contact box
		document.getElementById("cont_tel").value = "";					//clear cont tel
		document.getElementById("cont_email").value = "";				//clear cont email
	
	}
	else	//switch to existing
	{
		document.getElementById("clilink").innerHTML = "add new";		//switch link text
		document.getElementById("client").style.display = "inline";		//show client dropdown
		document.getElementById("newcl").style.display = "none";		//hide new client text box
		document.getElementById("newcl").value = "";					//clear new client box
		
		//execute Ajax call to populate contact dropdown again
		dynsel('appointment.contact', 'clicont', 'client', 'cont_tel,cont_email');
		
	}
}

function checktime(el)
/*checks that value of element `el` is of time format hh:mm*/
{
	var ti = document.getElementById(el).value
	if(ti.match(/[0-2][0-9]:[0-5][0-9]/) && ti.length == 5 || ti == "Anytime" || ti == "Anytime PM" || ti == "Anytime AM")
	{
		return true;
	}
	else
	{
		alert(ti + " is not a valid time. Please enter a time in the format hh:mm or 'Anytime'");
		return false;
	}
}

function apptHol()
/*hides fields when day off or holiday is selected, shows them if a different value is chosen*/
{
	var prod = document.getElementById('pro').options[document.getElementById('pro').selectedIndex].text;
	
	if(prod == "Holiday" || prod == "Day off")
	{
		document.getElementById('clilink').style.visibility = "hidden";
		document.getElementById('client').style.visibility = "hidden";
		document.getElementById('newcl').style.visibility = "hidden";
		document.getElementById('clicont').style.visibility = "hidden";
		document.getElementById('conname').style.visibility = "hidden";
		document.getElementById('cont_tel').style.visibility = "hidden";
		document.getElementById('cont_email').style.visibility = "hidden";
		document.getElementById('access').style.visibility = "hidden";
		document.getElementById('inventory').style.visibility = "hidden";
		document.getElementById('meet_at_prop').style.visibility = "hidden";
		document.getElementById('prop_type').style.visibility = "hidden";
		document.getElementById('bedrooms').style.visibility = "hidden";
		document.getElementById('furnished').style.visibility = "hidden";
		document.getElementById('condition').style.visibility = "hidden";
		document.getElementById('name_on_invoice').style.visibility = "hidden";
		document.getElementById('ddate').style.visibility = "hidden";
		document.getElementById('sadd').style.visibility = "hidden";
		
		document.getElementById('st1').value = "Anytime";
		document.getElementById('sadd').value = prod;
	}
	else
	{
		document.getElementById('clilink').style.visibility = "visible";
		document.getElementById('client').style.visibility = "visible";
		document.getElementById('newcl').style.visibility = "visible";
		document.getElementById('clicont').style.visibility = "visible";
		document.getElementById('conname').style.visibility = "visible";
		document.getElementById('cont_tel').style.visibility = "visible";
		document.getElementById('cont_email').style.visibility = "visible";
		document.getElementById('access').style.visibility = "visible";
		document.getElementById('inventory').style.visibility = "visible";
		document.getElementById('meet_at_prop').style.visibility = "visible";
		document.getElementById('prop_type').style.visibility = "visible";
		document.getElementById('bedrooms').style.visibility = "visible";
		document.getElementById('furnished').style.visibility = "visible";
		document.getElementById('condition').style.visibility = "visible";
		document.getElementById('name_on_invoice').style.visibility = "visible";
		document.getElementById('ddate').style.visibility = "visible";
		document.getElementById('sadd').style.visibility = "visible";
		
		if(document.getElementById('sadd').value == "Holiday" || document.getElementById('sadd').value == "Day off") document.getElementById('sadd').value = "";
	}
}
	
		
		
