if (pageObjects) {
    pageObjects.addingitem = false;
} else {
    var pageObjects = {};
    pageObjects.addingitem = false;
}
var recheck = false;
function setFromButtonDelete(cn) {
    return '<input title="Click here if you need to discontinue this booking session and remove all associted items. You can STOP this booking anytime before you Commit the Final Stage" type="submit" name="bookingdelete" id="bookingdelete" class="submit delete" style="width: 223px; margin-top: 5px;" value="CANCEL BOOKING AND DELETE" onclick="delete_booking( event, \''+ cn +'\');" />';
}

function ajaxMessage(text, div, size) {
	if (size === "1line") {
	    if (div) {
		$(div).innerHTML = '<span class="ajtext">&nbsp;'+ text +'</span>&nbsp;&nbsp;&nbsp;<img alt="One moment please, loading your request" title="One moment please, loading your request" src="/images/loading.gif" />';
	    }
	} else {
	    if (div) {
		$(div).innerHTML = '<div style="text-align: center; min-height: 100px; padding-top: 20px;"><span class="ajtext"><br />'+ text +'</span><br /><br /><img alt="One moment please, loading your request" title="One moment please, loading your request" src="/images/loading.gif" /></div>';
	    }
	}	    
}

function clearFormFields(fid) {
	var form_elem, form = document.getElementById(fid), i, fldtype;
	form_elem = form.elements;
	for (i=0; i<form_elem.length; i++) {
	    fldtype = form_elem[i].type.toLowerCase();
	    switch (fldtype) {
		case "text":
		case "password":
		case "textarea":
		case "hidden":
		    form_elem[i].value = '';
		    break;
		case "radio":
		case "checkbox":
		    if (form_elem[i].checked) {
			form_elem[i].checked = false;
		    }
		    break;
		case "select-one":
		case "select-multi":
		 //   form_elem[i].selectedIndex = -1;
		    break;
		default:
		    break;
	    }
	}
}

function addFromAddress() {
//	var req, cnarr, sdata, purl = "index.php?option=com_bookings&ajax="+pageObjects.sessId+"&action=beginbooking&sid="+Math.random();
	ajaxMessage('Please wait, adding new From / Sender Address...', 'addfrommessage', '1line');
	var req, cnarr, sdata, purl = "index.php?option=com_bookings&ajax="+pageObjects.sessId+"&action=addfromaddress&sid="+Math.random();
	sdata = $('bookingfromform').serialize();
	req = new Request({ url: purl, method: 'post', data: sdata , onSuccess: function(html) {
		if (html == "error") {
		    alert("An unknown error has occured whilst adding the FROM Address, please try submitting again");
		} else {
		    if (isFinite(html)) {
			// looks like a number /
//			cnarr = $$('span[class=connum]');   // alert(cnarr);
//			cnarr.each(function() { this.innerHTML = html; });
//			for (key in cnarr) {
//			    cnarr[key].innerHTML = html;
//			}
//			$(fid).setStyle( 'background-color', '#90EE90' );
			$('sender_id').value		= html;
			$('bookingfromselected').value	= 1;
			$('addfrommessage').innerHTML	= 'New Sender Added Succesfully';
			$('savefrom').setStyle('visibility', 'hidden');
//			$('cancelbutton').innerHTML	= setFromButtonDelete(html);
//			$('bookingfromdone').value	= html;
//			$('consignmentnumber').value	= html;
		    }
		}
	    }
	}).send();
}

function SPCallback() {
	var cn, sid;
	cn = $('consignmentnumber').value;
	sid = $('final_sender_id').value;
	if (cn && sid && pageObjects.fromdone == true) {	    
	    if ( isFinite(cn) && cn > 0 ) {
//		alert("actioning RECEIVER details!");
		pageObjects.connumber = cn;
		err = validate_sec('insert');
		if (err === false) {
		    return false;
		}
	    } else {
		alert("OPPS! cn = "+cn);
	    }
	} else {
	    alert("OPPS! cn = "+ cn +" and sid = "+ sid +" and PObj.fd ="+pageObjects.fromdone);
	}
}

function startProcess() {
	var senderid = false, insert = false;
	// process FROM first /
	ajaxMessage('Please wait, inserting FROM details...', 'addfrommessage', '1line');
	var req, cnarr, sdata, purl = "index.php?option=com_bookings&ajax="+pageObjects.sessId+"&action=beginbooking&sid="+Math.random();
	sdata = $('bookingfromform').serialize();
	req = new Request({ url: purl, method: 'post', data: sdata , onSuccess: function(html) {
		if (html == "error") {
			alert("An unknown error has occured whilst beginning the process, please try submitting again");
			alert(html);
			return false;
		} else {
		    if (isFinite(html)) {
			// looks like a number /
			cnarr = $$('span[class=connum]');   // alert(cnarr);
			cnarr.each(function() { this.innerHTML = html; });
			for (key in cnarr) {
			    cnarr[key].innerHTML = html;
			}
//			pageObjects.connum = html;
			$('bookingfromform').setStyle( 'background-color', '#90EE90' );
			$('addfrommessage').innerHTML	= '';
//			$('savefrom').setStyle('visibility', 'hidden');
//			$('cancelbutton').innerHTML	= setFromButtonDelete(html);
			$('bookingfromdone').value	= html;
			$('consignmentnumber').value	= html;
			pageObjects.fromdone = true;
			SPCallback();
//			alert("so far so good: pageObjects.fromdone ="+pageObjects.fromdone)
		    }
		}
	    }
	}).send();
	return;
}

function runFromAddress(val) {
    var conf, vals, v1, v2, cn = jQuery('#companyname').val(), req, purl;
    if (val === "createnew") {	
	if (cn) {
//	    conf = confirm("Please confirm your request to clear the form so new values can be entered");
//	    if (conf) {
		clearFormFields('bookingfromform');
		$('bookingfromselected').value='';
		$('savefrom').setStyle('visibility', 'visible');
//	    }
	}
    } else if (val !== '') {
	ajaxMessage('Please wait, fetching selected FROM Address...', 'fromresult');
//	alert("val = "+ val);
	vals = val.split(',');
//	alert(vals);
	v1 = vals[0];
	v2 = vals[1];
//	alert("v1 = "+v1);
//	alert("v2 = "+v2);
	purl = "index.php?option=com_bookings&ajax="+pageObjects.sessId+"&action=getfromaddress&aid="+v1+"&table="+v2+"&sid="+Math.random();
	req = new Request({ url: purl, method: 'get', onSuccess: function(responseText) { document.getElementById('fromresult').innerHTML = responseText; $('bookingfromselected').value=1; } }).send();
	    // Ajax( purl, { method: 'get', update: 'fromresult'}).request();
    }
}

function testFromDone(val) {
    return true;
    var firstcon, warn;
//    if (val && val !== '') {
	firstcon = $('bookingfromselected').value; // $('firstcon').innerHTML;
	if (firstcon == 1) { // !== '' && val == firstcon) {
	    /* Good to go, no warning required! */
	} else {
	    warn = true;
	}
//    } else {
//	warn = true;
//    }
    if (warn) {
	alert('Please select or enter a FROM / SENDER Address first. Thankyou');
	$('fromaddress').focus();
    }

}

function testToDone(val) {
    var recid, warn;
    if (val && val !== '') {
	recid = $('final_receiver_id').value;
	if (recid !== '' && val == recid) {
	    /* Good to go, no warning required! */
	} else {
	    /* secondary check! */
	    recid = $('receiverdone').value;
	    if (recid !== '' && val == recid) {
		/* No warning required! */
	    } else {
		warn = true;
	    }
	}
    } else {
	warn = true;
    }

    if (warn) {
	alert('Please complete and SAVE the TO/RECEIVER section first');
	$('toaddress').focus();
    } else {
	pageObjects.addingitem = true;
    }
}

function runToAddress(val) {
    var conf, cn = jQuery('#tocompanyname').val(), req, purl, text;
//  alert(val);
    if (val == "createnew") {
//	if (cn) {
//	    conf = confirm("Please confirm your request to clear the form so new values can be entered");
//	    if (conf) {
		clearFormFields('bookingtoform');
		text = $('bookingto').get('value');
		if (text === "Use Receiver & Continue" || text == "Select or Save Receiver") {
		    $('bookingto').set('value', 'Save Receiver & Continue');
		}
//	    }
//	}

    } else if (val !== '') {
//	text = $('bookingto').get('value');
//	if (text === "Save Receiver & Continue") {
//	    $('bookingto').set('value', 'Use Receiver & Continue');
//	}
	ajaxMessage('Please wait, fetching selected TO Address...', 'toresult');
//	alert(val);
	purl = "index.php?option=com_bookings&ajax="+pageObjects.sessId+"&action=gettoaddress&rid="+val+"&sid="+Math.random();
	req = new Request({ url: purl, method: 'get', onSuccess: function(responseText) { document.getElementById('toresult').innerHTML = responseText; } }).send();
	    // Ajax( purl, { method: 'get', update: 'fromresult'}).request();
    }
}

function addToAddress(cn) {
	ajaxMessage('Please wait, inserting Receiver Address...', 'addtomessage', '1line');
	var req, sdata, purl = "index.php?option=com_bookings&ajax="+pageObjects.sessId+"&action=addtoaddress&sid="+Math.random();
	sdata = $('bookingtoform').serialize();
	req = new Request({ url: purl, method: 'post', data: sdata, onSuccess: function(html) {
	    if ( html.search("error") > 0 ) {
		// deal with error /
		alert("An error has occured adding the To / RECEIVER, please try submitting again.");	
	    } else {
		if ( isFinite(html) && html > 0 ) {
		    // looks like a number /
		    $('bookingtoform').setStyle( 'background-color', '#90EE90' );
		    $('bookingto').setStyle( 'display', 'none' );
		    $('grid_first').removeClass( 'activesection' );
		    $('grid_second').addClass( 'activesection' );
		    $('addtomessage').innerHTML = '';
		    $('receiverdone').value = html;
		    $('receiver_id').value  = html;
		    $('final_receiver_id').value  = html;
		    $('cancelbutton').innerHTML = setFromButtonDelete(pageObjects.connumber); //setStyle('visibility', 'visible');
		    $('cancelbutton').setStyle('visibility', 'visible');
		}
	    }

	}}).send();
}

function testDangerLevelValue(val, index, sel) {
    if (isFinite(val) && val >=1 && val <=8) {
//	alert("you have entered "+val);
	$('dangerlevel_'+index).value = val;
    } else {
	getDangerLevel(sel, index);
    }
}

function getDangerLevel(sel, index) {
    if (sel === "No" || sel === '') {
       return;
    } else {
	$('dangerlevel_'+index).set('disabled', false);
	$('dangerlevel_'+index).addClass('required');
	$('dgtext').toggleClass('btext');
    }
}

function typeCheck(fid, elm) {    
    if (fid) {
	var form = $(fid); // $('additem_'+index);
	if (form.itemtype.value == "" || form.itemtype.value == undefined) {
	    alert("Please select an Item Type first");	    
	    form.itemtype.focus();
	    form.elm.value = '';
//	    alert("elm = "+elm);
	    return false;
	} else {
	    return true;
	}
    }
    return false;
}

function itemtypeCheck(index) {    
    if (index) {
	var form = $("additem_"+index); // $('additem_'+index);
	if (form.itemtype.value == "" || form.itemtype.value == undefined) {
	    alert("Please select an Item Type first");	    
	    form.itemtype.focus();
//	    form.elm.value = '';
//	    alert("elm = "+elm);
	    return false;
	} else {
	    return true;
	}
    }
    return false;
}

function getFormID(input) {
    var val, output, form, iid;
//  val = input.replace("additem_", ""); alert("val stage 1 = "+val);
    output = input.replace("_response", "");
    
//  alert("output stage 1 = "+output);
//    form = $(output);
//    iid = form.insertid.value;
//    alert("insert id = "+iid);

    return output;
}

function getIndexValue(input) {
    var val, output, form, iid;
    val = input.replace("additem_", "");
    output = val.replace("_response", "");
//  alert("output stage 1 = "+output);
//    form = $(output);
//    iid = form.insertid.value;
//    alert("insert id = "+iid);

    return output;
}

/* Delete only 1 item from the consihnment - does NOI delete the whoil;e booking */
function deleteBookingItem(pid, index) {
	
	ajaxMessage('One moment please, deleting Item...', 'additemresponse', '1line');
	var req, sdata, err, formid, index, form, rid, purl;
	formid = getFormID(pid);
//	index  = getIndexValue(pid);
	form = $(formid);
	rid  = form.insertid.value;
	purl = "index.php?option=com_bookings&ajax="+pageObjects.sessId+"&action=deletebookingitem&rid="+rid+"&idx="+index+"&sid="+Math.random();
	req  = new Request({ url: purl, method: 'get', onSuccess: function(html) {
	    if ( html.search("error") > 0 ) {
		// deal with error /
		err = html.explode(',');
		err = err[1];
		alert("An error has occured, '" + err +"', please try submitting again.");	
	    } else {
//		alert("delete form id = "+form);
		$(formid).innerHTML = html;
		$("additem_"+ index +"_response").innerHTML = '';
		$('additemresponse').innerHTML = '';
		$j(form).parent().css( 'background-color', '#E6E6FA' );
	    }

	}}).send();

}

/* DELETES The WHOLE Booking and Consignment Data for the current booking session */
function delete_booking(e, cn) {
//	e.stop();
	if (cn === "N/A") {
	    alert("Consignment Number is not set. Please refresh the Webpage before attempting this action again. Thank you");
	    return false;
	}
	var req, purl, conf;

	conf = confirm("This will CANCEL your current booking consignment number and removes all Items. Are you sure you want to do this? If you select Yes, the current Booking will be deleted and you will automatically be redirected to this page where you can begin another booking.");
	if (conf === false) { return false; }

	ajaxMessage('One moment please, deleting Item...', 'fromresult', 'all');
	purl = "index.php?option=com_bookings&ajax="+pageObjects.sessId+"&action=deletewholebooking&cn="+cn+"&sid="+Math.random();	
	req = new Request({ url: purl, method: 'get', onSuccess: function(html) {
	    if ( html.search("error") > 0 ) {
		// deal with error /
		err = html.explode(',');
		err = err[1];
		alert("An error has occured, '" + err +"', please try submitting again.");	
	    } else {
	       // blah blah /
	       window.location='index.php?Itemid=617';
	       /*
	       $('fromresult').innerHTML = '<br /><div><h3 style="color: red;">Your booking has been cancelled and deleted.</h3><br />To remove any Sender/From addresses or To/Receiver addresses please use the &#39;My Data&#39; area.<br /><br />Please refresh the page (or <a title="Reload Boooking Page" href="/freight-booking">Click Here</a>) to start a new booking session or choose a link to view another page.</div>';
	       $('cancelbutton').setStyle('visibility', 'hidden');
	       window.scrollTo(0,100); */
	    }
	}}).send();
}

function addBookingItem(fid, index) {
	pageObjects.addingitem = true;
	recheck = 0;
    	ajaxMessage('One moment please, adding Item...', 'additemresponse', '1line');
	var req, sdata, err, ccnt, rowid, purl = "index.php?option=com_bookings&ajax="+pageObjects.sessId+"&action=addbookingitem&index="+index+"&sid="+Math.random();
	sdata = $(fid).serialize();
	rowid = "formrow_"+(index+1);	//   alert(rowid);
	if ( $(rowid) ) { $(rowid).style.visibility = 'visible'; }
	req = new Request({ url: purl, method: 'post', data: sdata, onSuccess: function(html) {
	    if ( html.search("error") > 0 ) {
		// deal with error /
		err = html.explode(',');
		err = err[1];
		alert("An error has occured, '" + err +"', please try submitting again.");	
	    } else {
		$(fid).innerHTML = html;
		$("additem_"+ index +"_response").innerHTML = '&nbsp;<img style="cursor: pointer;" alt="Click to Delete / Remove item from Booking data" src="/images/delete.gif" title="Click to Delete / Remove item from Booking data" onclick="var conf = confirm(\'This will remove this item / row from the current booking data. Are you sure you want to continue?\'); if (conf === true ) { var thisid = $j(this).parent().attr(\'id\'); deleteBookingItem(thisid, '+index+'); }" />';
		if (index == 3) $('addRowButt').style.visibility= 'visible';

		$('additemresponse').innerHTML = '';
//		alert("add form id = "+fid);
		$j(fid).parent().css( 'background-color', '#90EE90' );
		ccnt = $('bookingitemsadded').value;
		ccnt = ccnt +1;
		$('bookingitemsadded').value = ccnt;
	    }

	}}).send();
	pageObjects.addingitem = false;

}


function isnumberkey(evt, fid, elm) {  
//    if (typeCheck(fid, elm)) {
//	typeCheck(form)
	var charCode = (evt.which) ? evt.which : evt.keyCode;
        if (charCode > 31 && (charCode < 46 ||(charCode==47) || charCode > 57)) { 
		alert("Only Numbers Allowed");
//		$(fid).elm.value='';
		return false;
	}
        return true;
//    } else {
//	alert("it has elsed!");
//	$(fid).elm.value = '';
//	return false;
//    }
}

function calM3(value, form) {
    // Important!! Make sure 'itemtype' is set first!! /
//    if (typeCheck(form)) {
//	alert(value);
	var formObj = $j('#'+form), M3, v1 = 1, v2 = 1,v3 = 1, data = [], M3Value;

	v1 = formObj.formParams().width;
	if (v1 < 1) v1 = 1;
	v2 = formObj.formParams().debth;
	if (v2 < 1) v2 = 1;
	v3 = formObj.formParams().height;
	if (v3 < 1) v3 = 1;

	M3Value = formObj.formParams().M3Value;
   
	M3 = M3Value * v1 * v2 * v3;

	data['itemtype'] = formObj.formParams().itemtype;

	if (data['itemtype'] == 'Carton' || data['itemtype'] == 'Skid') {
	    document.forms[form].volume.value = M3;
	} else {
//	    alert("else is the word!");
	    document.forms[form].volume.value = "-Not Need-";
	}
//    }
}

function validate_new_data(fid) {
    var chk1, form, conf;
    
    form = $(fid);
    document.formvalidator.isValid(form);

    if (form.companyname.value=='') {
	alert("Please Enter a Company name");
	form.companyname.focus();  
	chk1=false;
    }
    else if(form.contactname.value=='') {
	alert("Please Enter a Contact Name");
	form.contactname.focus();  
	chk1=false;
    }
    else if(form.contactnumber.value=='') {
	alert("Please Enter a Contact Number");
	form.contactnumber.focus();  
	chk1=false;
    }
    else if(form.streetnumber.value=='') {
	alert("Please Enter a Street Number");
	form.streetnumber.focus();  
	chk1=false; 
    }
    else if(form.streetname.value=='') {
	alert("Please Enter a Street Name");
	form.streename.focus();  
	chk1=false; 
    }
    else if(form.suburb.value=='') {
	alert("Please Enter a Suburb");
	form.suburb.focus();  
	chk1=false; 
    }
    else if(form.state.value=='') {
	alert("Please Select a State");
	form.state.focus();  
	chk1=false; 
    }
    else if(form.postcode.value=='') {
	alert("Please Enter a Post Code");
	form.postcode.focus();  
	chk1=false; 
    }
    else {
	chk1=true;
    }
    if (chk1 === true) {	
	return true;	
    } else {
	return false;
    }
}

/* Validate the FROM form part */
function validate_first(type) {
    var chk1, form, conf;
//    conf = confirm("This action will Lock-In the selected From-Address, will generate a Consignment-Number for this booking and will begin this booking session. Are you ready to start?");
    
//    if (conf === false) { return false; }
    
    form = $('bookingfromform');
    document.formvalidator.isValid(form);

    if (form.companyname.value=='') {
	alert("Please Enter Company name");
	form.companyname.focus();  
	chk1=false;
    }
    else if(document.getElementById('contactname').value=='') {
	alert("Please Enter Contact Name");
	document.getElementById('contactname').focus();  
	chk1=false;
    }
    else if(document.getElementById('contactnumber').value=='') {
	alert("Please Enter Contact Number");
	document.getElementById('contactnumber').focus();  
	chk1=false;
    }
    else if(document.getElementById('streetnumber').value=='') {
	alert("Please Enter Street Number");
	document.getElementById('streetnumber').focus();  
	chk1=false; 
    }
    else if(document.getElementById('streetname').value=='') {
	alert("Please Enter Street Name");
	document.getElementById('streename').focus();  
	chk1=false; 
    }
    else if(document.getElementById('suburb').value=='') {
	alert("Please Enter Suburb");
	document.getElementById('suburb').focus();  
	chk1=false; 
    }
    else if(document.getElementById('state').value=='') {
	alert("Please Enter State");
	document.getElementById('state').focus();  
	chk1=false; 
    }
    else if(document.getElementById('postcode').value=='') {
	alert("Please Enter Post Code");
	document.getElementById('ff_elem190').focus();  
	chk1=false; 
    }
    else {
	chk1=true;
    }
    if (chk1 === true) { // && document.formvalidator.isValid(formid)) {
	if (type === "new") {
//	    alert("adding new from address!");
	    addFromAddress();
	} else {
//	    alert("type = "+type);
//	    alert("NOT!! adding new from address!");
	    return true;
	}
    } else {
//	alert("From / Sender Validation has Failed!");
	return false;
    }
}

function validate_sec(type) {
    var chk2, form;
    form = $('bookingtoform');

    document.formvalidator.isValid(form);

    if (form.tocompanyname.value=='') {
      	alert("Please Enter a Company name");
	form.tocompanyname.focus();  
	chk2=false;
    }
    else if (form.tocontactname.value=='') {
	alert("Please Enter a Contact Name");
	form.tocontactname.focus();  
	chk2=false;
    }
    else if (form.tocontactnumber.value=='') {
	alert("Please Enter a Contact Number");
	form.tocontactnumber.focus();  
	chk2=false;
    }
    else if (form.tostreetnumber.value=='') {
	alert("Please Enter a Street Number");
	form.tostreetnumber.focus();  
	chk2=false; 
    }
     else if (form.tostreetname.value=='') {
	alert("Please Enter a Street Name");
	form.tostreetname.focus();  
	chk2=false; 
    }
    else if (form.tosuburb.value=='') {
	alert("Please Enter a Suburb");
	form.tosuburb.focus();  
	chk2=false; 
    }
    else if (form.tostate.value=='') {
	alert("Please Enter a State");
	form.tostate.focus();  
	chk2=false; 
    }
    else if (form.topostcode.value=='') {
	alert("Please Enter a Post Code");
	form.topostcode.focus();  
	chk2=false; 
    } else {
	chk2=true;
    }
    if (chk2 === true) { // && document.formvalidator.isValid(formid)) {
	if (type == "insert") {
	    addToAddress();
	} else {
	    return true;
	}
    } else {
//	alert("opps! try again!");
	return false;
    }
}

function begin_booking() {
    var cn;
    if (validate_sec(false) && validate_first(false)) {
	// Validation of FROM section complete, begin saving sequence /
	startProcess();
/*
	cn = $('consignmentnumber').value;
	if (cn && pageObjects.fromdone == true) {	    
	    if ( isFinite(cn) && cn > 0 ) {
		alert("actioning RECEIVER details!");
		err = validate_sec('insert');
		if (err === false) {
		    return false;
		}
	    } else {
		alert("OPPS! cn = "+cn);
	    }
	} else {
	    alert("OPPS! cn = "+ cn +" and PObj.fd ="+pageObjects.fromdone);
	}
*/
    } else {
	return false;
    }
}

function checkItemRow(index) { /* AKA validate_third() */
    var chk3, form, dlselect;

    form = $("additem_"+index);

//  alert(form.itemtype.value);
//  alert(form.dangerous.value);
    if (form.itemtype.value=='') {
	alert("Row has errors. Please Select an Item Type");
	form.itemtype.focus();  
	chk3=false;
    }
    else if (form.dangerous.value=='') {
	recheck = 1;
	alert("Row has errors. Please Select a Dangerous Goods Value");
	form.dangerous.className = 'isdanger invalid required';
//	form.dangerous.focus();
	chk3=false;
    }
    else if (form.dangerous.value == 'Yes' && ( $('dangerlevel_'+index).get('value') == '' || $('dangerlevel_'+index).get('value') == undefined )) { // (form.dangerlevel.value == '' || form.dangerlevel.value == undefined)) {
	recheck = 1;
	alert("Row has errors. Please select a Danger Level value");
	form.dangerlevel.className = 'dangerlevel invalid required';
	form.dangerlevel.focus();
	chk3=false;
    }
    else if (form.width.value=='' || !isFinite(form.width.value)) {
	alert("Row has errors. Please Enter a valid Width");
	form.width.focus();  
	chk3=false;
    }
    else if (form.debth.value=='' || !isFinite(form.debth.value)) {
      	alert("Row has errors. Please Enter a valid Depth");
	form.debth.focus();  
	chk3=false;
    } 
    else if (form.height.value=='' || !isFinite(form.debth.value)) {
	alert("Row has errors. Please Enter a valid Height");
	form.heighth.focus();  
	chk3=false;
    }
    else if (form.weight.value=='') {
	alert("Row has errors. Please Enter a Dead Weight");
	form.weight.focus();  
	chk3=false; 
    }
    else if (form.numberof.value=='') {
	alert("Row has errors. Please Enter a Number Of Items");
	form.numberof.focus();  
	chk3=false; 
    }
    else {
     	chk3=true;
    }
    if (chk3 == true) {
	addBookingItem(form, index);
    }
   /* else {
	alert("Row has errors. Please fix them before completing this field. Thank you...");
    } */
}

function stage3Check() {
//    alert("stage 3 check running!");
    if (pageObjects.addingitem === true) {
//	alert(" we are adding items yes?");
//	setTimeout(function() { stage3Check(); }, 200);
	alert("Please finish adding items first. Thankyou...");
	return;
    }
//    else {
//	alert(pageObjects.addingitem);
//  }
    var cn, booknum;
    cn	    = document.getElementById('consignmentnumber').value;
    booknum = document.getElementById('bookingitemsadded').value;

//    alert(cn);
//    alert(booknum);
//    alert("recheck = "+recheck);
    if (cn && booknum && recheck != 1) {
	$('grid_second').removeClass( 'activesection' );
	$('grid_third').addClass( 'activesection' );
    } else {
	alert("Please add some booking items first, before completing this section...cn = "+cn+"....booknum = "+booknum+".. recheck = "+recheck);
	$('fromaddress').focus();
    }
}

function validate_final() {
//    alert("validating!!");
    var pickup = false, tailgate, a, year, month, day, val, currdate, today;
    pickup	= document.getElementById('pickupdate').value;
    if (length.pickup < 1 || pickup === false) {
	alert("Pickup date is empty. Please make an entry.");
	$('pickupdate').addClass( 'invalid' );
	return false;
    }
    form	= $('bookingstage3');
    tailgate	= form.tailgate.value;

    a	    = pickup.split("/"); 
    year    = ((a[2]));
    month   = ((a[0]));
    day	    = ((a[1]));

    val = parseInt(month-1);
    currdate = new Date();
    currdate.setFullYear(year,val,day,0,0,0);

    today = new Date();
    today.setHours(0,0,0,0);

//    alert("current date = "+currdate);
//    alert("today date = "+today);

    if (tailgate && tailgate !== '') { 

	if (currdate < today) {

	    alert('Date of Pick up cannot be in the past'); 
	    $('pickupdate').addClass( 'invalid' );	
	    return false;

	} else {

//	    alert("returning TRUE!!");
	    return true;

	}

    }	else {
	alert("Tailgate option must be selected to continue!");
	return false;
    }
}

function addItemRows() {
	var currcnt, currdata, newdata, req, purl, div = 'additems', cn, itemsin;
	cn	= $('consignmentnumber').value;	//	alert(cn);
	itemsin	= $('bookingitemsadded').value;
	if ((cn === '' || cn === 'N/A') || itemsin === '') {
	    alert("Please begin the Booking session and add least three items first. Thank you");
	    return false;
	}
	currcnt = $('currentcount').value;
	if (currcnt) {
	    purl = "index.php?option=com_bookings&ajax="+pageObjects.sessId+"&action=additemrows&currcnt="+currcnt+"&sid="+Math.random();
	    req = new Request({ url: purl, method: 'get', onSuccess: function(html) {
//		alert(html);
		currdata = $('additems').innerHTML;
		newdata = currdata + html;
		$(div).innerHTML = newdata;
	    }}).send();
	} else {
	    alert("current count not found!!");
	}
}

function ff_print_pod(podname) {
    /*	window.open('/images/pods/'+podname,'Print','dependent,left=20,top=20,width=800,height=600,locatrion=0,menubar=1'); */
	window.open('/index2.php?option=com_bookings&view=print&ajax='+pageObjects.sessId+'&func=print_pod&podname='+podname,'Print','dependent,left=20,top=20,width=1000,height=600,location=0,menubar=1');
}

function ff_print_consignment(id_consign,call_from) {

//    var rasto;
//    rasto=document.getElementById('serverpath').value;
//    var call_from;	
    if(call_from=='outer') {
	window.open('/index2.php?option=com_bookings&view=print&ajax='+pageObjects.sessId+'&func=print_consignment&ff_param_print=1&ob_id='+id_consign,'Print','dependent,left=20,top=20,width=1000,height=700,location=0'); 
	
/*	window.open('http://localhost/joomla_jscc/components/com_bookings/print_consignment.php?ff_param_print=1&ob_id='+id_consign,'Print','dependent'); 
	*/
    } else {

	//+'ff_param_CustomerCode='+escape(document.getElementById('customer_code').value)
	window.open('/index2.php?option=com_bookings&view=print&view=print&func=print_consignment'
	+'&totalcartoon='+escape(document.getElementById('value_to_car').value)
	+'&totalpallet='+escape(document.getElementById('value_to_pal').value)
	+'&totalskid='+escape(document.getElementById('value_to_ski').value)
	+'&totalspace='+escape(document.getElementById('value_to_spa').value)
	+'&ff_param_PickupDates='+escape(document.getElementById('ff_elem559').value)
	+'&ff_param_Tail_Gate_1='+escape(document.getElementById('ff_elem154').value)
	+'&ff_param_Dangerous_Goods_1='+escape(document.getElementById('ff_elem152').value)
	+'&ff_param_CustomerCode='+escape(document.getElementById('customer_code').value)
	+'&ff_param_Special_Instructionss='+escape(document.getElementById('ff_elem171').value)
	+'&ff_param_sender_company='+escape(document.getElementById('ff_elem176').value)
	+'&ff_param_Sender_contact_names='+escape(document.getElementById('ff_elem177').value)
	+'&ff_param_Sender_contact_number_2='+escape(document.getElementById('ff_elem180').value)
	+'&ff_param_sender_street='+escape(document.getElementById('ff_elem182').value)
	+'&ff_param_sender_streetname='+escape(document.getElementById('ff_elem184').value)
	+'&ff_param_sender_suburb='+escape(document.getElementById('ff_elem186').value)
	+'&ff_param_sender_state='+escape(document.getElementById('ff_elem188').value)
	+'&ff_param_sender_postcode='+escape(document.getElementById('ff_elem190').value)
	+'&ff_param_reciver_company='+escape(document.getElementById('ff_elem194').value)
	+'&ff_param_Reciver_contact_name='+escape(document.getElementById('ff_elem197').value)
	+'&ff_param_Reciver_contact_number='+escape(document.getElementById('ff_elem198').value)
	+'&ff_param_reciver_street='+escape(document.getElementById('ff_elem199').value)
	+'&ff_param_reciver_streetname='+escape(document.getElementById('ff_elem202').value)
	+'&ff_param_reciver_suburb='+escape(document.getElementById('ff_elem204').value)
	+'&ff_param_reciver_state='+escape(document.getElementById('ff_elem206').value)
	+'&ff_param_reciver_postcode='+escape(document.getElementById('ff_elem208').value)
	+'&Customer_No='+escape(document.getElementById('Customer_No').value)
	+'&ff_param_print=1','Print','dependent,left=20,top=20,width=1000,height=700'
	); 
   }
}

function ff_print_consignment_new(id_consign,call_from) {

//    var rasto;
//    rasto=document.getElementById('serverpath').value;
//  var call_from;	
    if(call_from=='outer') {
	window.open('/index2.php?option=com_bookings&view=print&ajax='+pageObjects.sessId+'&func=print_newconsignment&ff_param_print=1&ob_id='+id_consign,'Print','location=0,dependent,left=20,top=20,width=1000,height=700'); 
	
	/*	window.open('http://localhost/joomla_jscc/components/com_bookings/print_consignment.php?ff_param_print=1&ob_id='+id_consign,'Print','dependent'); 
	*/
    } else {

	//+'ff_param_CustomerCode='+escape(document.getElementById('customer_code').value)
	window.open('/index2.php?option=com_bookings&view=print&func=print_consignment'
	+'&totalcartoon='+escape(document.getElementById('value_to_car').value)
	+'&totalpallet='+escape(document.getElementById('value_to_pal').value)
	+'&totalskid='+escape(document.getElementById('value_to_ski').value)
	+'&totalspace='+escape(document.getElementById('value_to_spa').value)
	+'&ff_param_PickupDates='+escape(document.getElementById('ff_elem559').value)
	+'&ff_param_Tail_Gate_1='+escape(document.getElementById('ff_elem154').value)
	+'&ff_param_Dangerous_Goods_1='+escape(document.getElementById('ff_elem152').value)
	+'&ff_param_CustomerCode='+escape(document.getElementById('customer_code').value)
	+'&ff_param_Special_Instructionss='+escape(document.getElementById('ff_elem171').value)
	+'&ff_param_sender_company='+escape(document.getElementById('ff_elem176').value)
	+'&ff_param_Sender_contact_names='+escape(document.getElementById('ff_elem177').value)
	+'&ff_param_Sender_contact_number_2='+escape(document.getElementById('ff_elem180').value)
	+'&ff_param_sender_street='+escape(document.getElementById('ff_elem182').value)
	+'&ff_param_sender_streetname='+escape(document.getElementById('ff_elem184').value)
	+'&ff_param_sender_suburb='+escape(document.getElementById('ff_elem186').value)
	+'&ff_param_sender_state='+escape(document.getElementById('ff_elem188').value)
	+'&ff_param_sender_postcode='+escape(document.getElementById('ff_elem190').value)
	+'&ff_param_reciver_company='+escape(document.getElementById('ff_elem194').value)
	+'&ff_param_Reciver_contact_name='+escape(document.getElementById('ff_elem197').value)
	+'&ff_param_Reciver_contact_number='+escape(document.getElementById('ff_elem198').value)
	+'&ff_param_reciver_street='+escape(document.getElementById('ff_elem199').value)
	+'&ff_param_reciver_streetname='+escape(document.getElementById('ff_elem202').value)
	+'&ff_param_reciver_suburb='+escape(document.getElementById('ff_elem204').value)
	+'&ff_param_reciver_state='+escape(document.getElementById('ff_elem206').value)
	+'&ff_param_reciver_postcode='+escape(document.getElementById('ff_elem208').value)
	+'&Customer_No='+escape(document.getElementById('Customer_No').value)
	+'&ff_param_print=1','Print','location=no,dependent,left=20,top=20,width=1000,height=700'
	);
   }
}

function ff_print_confirmation_front(userid, ob_id, goods_id, level)
{
    var date=document.getElementById('pickupdate').value;

    if (level === 'grid') {
	window.open('/index2.php?option=com_bookings&view=print&ajax='+pageObjects.sessId+'&func=print_conformation&UserID='+userid+'&Date='+date+'&OB_ID='+ob_id+'&goods_id='+goods_id,'Print','dependent,left=20,top=20,width=1000,height=700');
    } else {
	window.open('/index2.php?option=com_bookings&view=print&ajax='+pageObjects.sessId+'&func=print_conformation&UserID='+userid+'&Date='+date+'&OB_ID='+escape(document.getElementById('OB_ID').value),'Print','dependent,left=20,top=20,width=1000,height=700');
    }
}

function bookingUpdater() {
	var ofv, obv, committed = {}, unset = [], currfld, currtbl, rid;
}
bookingUpdater.prototype.set = function(val, id) {
	this.ofv = val;
	this.currfld = id;
}
bookingUpdater.prototype.check = function(val, fld, iid, table) {
	var c;
	if(val && this.ofv == val) {
		return;
	} else {
		c = confirm("Commit the change to this field value?");
		if(c) {
			this.fld     = fld;
			this.iid     = iid;
			this.table   = table;
			this.commit(val);
		}
		else {
			$(this.currfld).value = this.ofv;
		//	$(this.currfld).addClass('invalid');
			return;
		}
	}
}
bookingUpdater.prototype.commit = function(val) {
	var purl, req, divid;
	divid = "res_"+this.currfld;

	$(divid).innerHTML = '<span class="nmres"> One moment please, sending update...</span>';

/*	rowid = "rowid_"+this.currtbl;
       	alert(rowid);
	rid = $(rowid).getValue(); */

	purl = "index.php?option=com_bookings&view=administer&ajax="+pageObjects.sessId+"&action=updateBookingItem&tbl="+this.table+"&fld="+this.fld+"&iid="+this.iid+"&v="+val+"&sid="+Math.random();

//	alert(purl);
//	return false;

	req = new Request({ url: purl, method: 'get', onSuccess: function(html) { $(divid).innerHTML = html; } }).send();
}
bookingUpdater.prototype.setrecid = function(val, cn) {
	var purl, req, divid;
	divid = "res_receiver";

	$(divid).innerHTML = '<span class="nmres"> One moment please, sending update...</span>';

/*	rowid = "rowid_"+this.currtbl;
       	alert(rowid);
	rid = $(rowid).getValue(); */

	purl = "index.php?option=com_bookings&view=administer&ajax="+pageObjects.sessId+"&action=updateBookingItemReceiver&cn="+cn+"&v="+val+"&sid="+Math.random();

//	alert(purl);
//	return false;

	req = new Request({ url: purl, method: 'get', onSuccess: function(html) { $(divid).innerHTML = html; } }).send();
}

