if(loadExtraScripts==undefined) { var loadExtraScripts = true };
var dataset = 'vehicledata';
var datayear = 1900;
var datacountry = 'GB';
var datauser = 0;
var type = 1; /* 1-new, 2-used */
var vehicletype = 1; /* 1-car, 2-van, 3-hcv, 4-motorcycle */
var numericids = 1;
var auctiondata = 0;
var auctiondataS = 0;
var addblankoption = 1;
var tradeauction = 0;
var _cfscriptLocation = '/javascript/lch/ajaxfunctions.cfc';
var nextelement = '';
var arp = "";

$.AjaxCFC = function( s ) {

	// polimorphic invocation
	if (s.require) { // if including files
		jQuery.AjaxCFCHelper.require( s.require );
		return;
	} // if (s.require)

	s = jQuery.extend({ // default attributes
		type: "POST",
		data: null,
		method: null,
		contentType: "application/x-www-form-urlencoded",
		processData: true,
		async: true,
		unnamedargs: false,
		serialization: jQuery.AjaxCFCHelper.getSerialization(),
		useDefaultErrorHandler: jQuery.AjaxCFCHelper.getUseDefaultErrorHandler(),
		blockUI: jQuery.AjaxCFCHelper.getBlockUI(),
		blockMessage: 'Wait.. Processing..'
	}, s); // s = jQuery.extend

	
 	jQuery.blockUI({ 
			centerX: true,
			centerY: true,
			baseZ:35000,
			message: 'Please wait.. Loading data.',
			showOverlay: true,
			fadeIn:  0,
			fadeOut:  0, 
			overlayCSS:  { backgroundColor: '#fff', opacity:0 }, 
			css: { background:'#cc0000', left:'50px', top:'50px', color:'#ffffff',  padding:'5px', width:'250px' } 
        }); 
	

	var data = s.data;
	s.data = {};
	s.data['engine'] = "jquery";
	s.data['serialization'] = s.serialization;
	s.data['c0-id'] = (Math.floor(Math.random() * 10001) + "_" + new Date().getTime()).toString(),
	s.data['method'] = "__initialize_AjaxCFC";
	s.data['c0-methodName'] = s.method;
	s.data['c0-serialization0'] = "string";
	//s.data['c0-param0'] = data;
	
	var ____success = s.success;
	s.success = function(data) {
		data = jQuery.AjaxCFCHelper.trim(data);
		if (data.substring(0,9) == '__json__:') {
			data = eval('(' + data.slice(9) + ')');
		} else if (data.substring(0,7) == '__js__:') {
			data = eval( data.slice(7) );
		} else if (data.substring(0,9) == '__wddx__:') {
			var oWddx = new WddxDeserializer();
			data = oWddx.deserialize(data.slice(9));
		} // if (data.substring(0,9) == '__json__:'
		____success(data);
	}; // s.success = function
	
	if (s.useDefaultErrorHandler) {
		s.error = function(xml) {
			var displayError = confirm('A critical error has occurred. Press OK to view it or Cancel to discard it');
			if (displayError) {
				var win = window.open(null, null, 'status=0,toolbar=0,location=0,menubar=0,directories=0,resizable=1,scrollbars=1,height=600,width=750');
				win.document.write(xml.responseText);
			} // if (displayError) {
		} // s.error = function(xml) {
	} // if (s.criticalerror) {
	
	if (jQuery.AjaxCFCHelper.getDebug())
		log.info('invoking method: ' + s.method)

	if ( data ) { // encode data
		if (s.processData && s.unnamedargs && typeof data == 'object' && data instanceof Array) { // if an array was sent as unnamed arguments -- mostly for back compatibility
			for (var i = 0; i < data.length; i++) { // loop over unnamed arguments
				if (typeof data == 'string') { // choose whether to serialize or not
					s.data['c0-serialization' + nf(i)] = "string";
					s.data['c0-param' + nf(i)] = data[i];
				} else {
					s.data['c0-serialization' + nf(i)] = s.serialization.toLowerCase();
					s.data['c0-param' + nf(i)] = jQuery.AjaxCFCHelper.serialize(data[i], s.serialization);
				} // if (typeof data == 'string')

				if (jQuery.AjaxCFCHelper.getDebug())
					log.info('unnamed argument '+ nf(i) + ': ' + s.data['c0-param' + nf(i)])

			} // for (var i = 0; i < data.length - 1; i++)
		} else { // any other case serialize
			if (s.processData && typeof data != 'string') {
				data = jQuery.AjaxCFCHelper.serialize(data, s.serialization);
				s.data['c0-serialization0'] = s.serialization.toLowerCase();
				s.data['c0-param0'] = data;
			} // s.processData && typeof data != 'string')

			if (jQuery.AjaxCFCHelper.getDebug())
				log.info('data: ' + data)

		} // if (typeof data == 'object' && data instanceof Array)
	

	} // if ( data )
	

	
	jQuery.ajax( s );	

 	jQuery.unblockUI();
}

jQuery.AjaxCFCHelper = {
	__debug: false,
	__blockUI: false,
	__useDefaultErrorHandler: true,
	__serialization: 'json',
	
	include: function (script_filename) {
	    document.write('<' + 'script');
	    document.write(' language="javascript"');
	    document.write(' type="text/javascript"');
	    document.write(' src="' + script_filename + '">');
	    document.write('</' + 'script' + '>');
	}, // include: function
	
	findPath: function () {
		var path;
		jQuery('script', document).each(function() {
			if (this.src.match(/jquery\.AjaxCFC\.js(\?.*)?$/)) {
				path = this.src.replace(/jquery\.AjaxCFC\.js(\?.*)?$/,'');
			} // if (this.src.match
		}); // jQuery('script', document).each
		return path;
	}, // findPath: function
	
	require: function (files) {
		var filesArray = files.split(',');
		var JSpath = '/javascript/lch/';
		for (var i = 0; i < filesArray.length; i++) {
			switch (filesArray[i]) {
				case 'DWRSyntax':
					//this.include(JSpath + 'jquery.AjaxCFC.DWRSyntaxCompatibility.js');
					this.include(JSpath + 'util.js');
					break;
				case 'wddx':
					this.include(JSpath + 'wddx.js');
					this.include(JSpath + 'wddxDes.js');
					break;
				case 'log4j':
					this.include(JSpath + 'log4javascript.js');
					this.include(JSpath + 'log4javascriptSetup.js');
					break;
				case 'blockUI':
					this.include(JSpath + 'jquery.block.js');
					break;
				default:
					this.include(filesArray[i]);
					break;
			}
		} // for (var i
	}, // require: function
	
	trim: function (str) {
	   return str.replace(/^\s*|\s*$/g,"");
	}, // trim: function 

	serialize: function (data, type) {

		if ( type.toLowerCase() == 'json' ) {
			return JSON.stringify(data);
		} else if ( type.toLowerCase() == 'wddx' ) {
			var oWddx = new WddxSerializer();
			return oWddx.serialize(data);
		} else {
			return data;
		} // if ( type.toLowerCase() == 'json' )
	}, // serialize: function
	
	setDebug: function ( v ) {
		this.__debug = v;
		if (v && typeof window.log == "undefined") this.require('log4j');
	}, // setDebug: function
	
	getDebug: function () {
		return this.__debug;
	}, // getDebug: function

	setBlockUI: function ( v ) {
		this.__blockUI = v;
		if (v && typeof jQuery().blockUI == "undefined") this.require('blockUI');
	}, // setBlockUI: function
	
	getBlockUI: function () {
		return this.__blockUI;
	}, // getBlockUI: function

	setUseDefaultErrorHandler: function ( v ) {
		this.__useDefaultErrorHandler = v;
	}, // setUseDefaultErrorHandler: function
	
	getUseDefaultErrorHandler: function () {
		return this.__useDefaultErrorHandler;
	}, // getUseDefaultErrorHandler: function

	setSerialization: function ( v ) {
		this.__serialization = v;
		if (v == 'json' && typeof window.JSON == "undefined") this.require('json');
		if (v == 'wddx' && typeof window.WddxSerializer == "undefined") this.require('wddx');
	}, // setUseDefaultErrorHandler: function
	
	getSerialization: function () {
		return this.__serialization;
	} // getUseDefaultErrorHandler: function
}

var is = '';
is += '/javascript/jquery/pi/swapimage/jquery.swapimage.min.js,';
is += '/javascript/jquery/pi/swapimage/jquery.metadata.min.js,';
is += '/javascript/jquery/pi/hint/jquery.hoverIntent.js,';
is += '/javascript/jquery/pi/jquery-validate/jquery.validate.pack.js,';
is += '/javascript/jquery/pi/jquery-validate/additional-methods.js,';
is += '/javascript/jquery/pi/cluetip/jquery.cluetip.js,';
if(loadExtraScripts)
{
is += '/javascript/jquery/pi/lightbox/lightbox.js,';
is += '/javascript/jquery/ui/js/jquery-ui-1.7.2.custom.min.js,';
is += '/javascript/jquery/jquery.field.min.js,';
}
is += '/javascript/jquery/pi/blockui/blockui.js,';
is += '/javascript/lch/json.js';
//is += ',';


$.AjaxCFC({require:is});

function nf(num)
{
	var nm = "0000"+num.toString();
	return nm.substring(nm.length-2);
}
function swapImage(imgNum)
{
var listingID = document.getElementById("listingID").value;
DWREngine._execute(_cfscriptLocation, null, 'getMediaItem', listingID, imgNum, populateImage);	
}

function switchUploader(which)
{
	document.getElementById('ulswitch').value = which;
	document.getElementById('reloader').click();
}

function zeroBuyRetail(obj)
{
	if(obj.checked) { document.getElementById('decbuyprice').value = '0.00' } else { document.getElementById('decbuyprice').value = '' }
}
function zeroBuyTrade(obj)
{
	if(obj.checked) { document.getElementById('decbuypricetrade').value = '0.00' } else { document.getElementById('decbuypricetrade').value = '' }
}

function populateImage(data)
{
	if(data.IMAGESUPER.length > 0)
	{
		document.getElementById('nyroImage').href = data.IMAGESUPER; 
		document.getElementById('bigphoto').src = data.IMAGENORMAL;
		}
	else
	{ document.getElementById('bigphoto').src = data.IMAGENORMAL; }	
}

$(document).ready(function() { 


	try
	{
		jQuery.swapImage(".swapImage", true, true, "mouseenter", "mouseleave");
	} catch(e) {}
	
	try {
		jQuery("a[rel^='prettyPhoto']").prettyPhoto({
			animationSpeed: 'normal', /* fast/slow/normal */
			opacity: 0.80, /* Value between 0 and 1 */
			showTitle: true, /* true/false */
			allowresize: true, /* true/false */
			default_width: 500,
			default_height: 344,			
			counter_separator_label: '/', /* The separator for the gallery counter 1 "of" 2 */
			theme: 'light_rounded', /* light_rounded / dark_rounded / light_square / dark_square / facebook */
			hideflash: false, /* Hides all the flash object on a page, set to TRUE if flash appears over prettyPhoto */
			wmode: 'opaque', /* Set the flash wmode attribute */
			autoplay: true, /* Automatically start videos: True/False */
			modal: false, /* If set to true, only the close button will close the window */
			changepicturecallback: function(){}, /* Called everytime an item is shown/changed */
			callback: function(){} /* Called when prettyPhoto is closed */			
			
		});

	} catch(e) {}

	try{	
		jQuery(".datepicker").datepicker({
			showOn: 'both',
			buttonImage: '/javascript/images/calendar_16.gif', 
			buttonImageOnly: true,
			dateFormat: 'dd M yy',
			numberOfMonths: 2,
			showButtonPanel: true,
			changeMonth: true,
			changeYear: true
		});

	
		jQuery(".datefield").datepicker({ 
		showOn: "both", 
		buttonImage: "/javascript/jquery/images/calendar.gif", 
		buttonImageOnly: true,
		dateFormat: "dd M yy",
		firstDay: 1
		});
	} catch(e) {}

	
		jQuery('.loader').click(function() { 
			jQuery.blockUI({ message: jQuery('#loadingmessage') }); 
		}); 
	
	try {
		jQuery('#tabs').tabs();
	} catch(e) {}
	
	try {
		jQuery.validator.messages.required = "Required field";
		jQuery('#formvalidator').validate({
			errorClass: "missingfield",
			rules: {
			},
			invalidHandler: function(e, validator) {
				var errors = validator.numberOfInvalids();
				if (errors) {
					jQuery.unblockUI();
					var message = errors == 1
						? 'You missed 1 field. It has been highlighted for you.'
						: 'You missed ' + errors + ' fields.  They have been highlighted for you.';
						alert(message);
					jQuery("#warning span").html(message);
					jQuery("#warning").show();
				} else {
					jQuery("#warning").hide();
				}
			},
		errorPlacement: function(error, element) { 
           
	        }, 
			
			highlight: function(element, errorClass, validClass) {
     $(element).addClass(errorClass).removeClass(validClass);
     $(element.form).find("label[for=" + element.id + "]")
                    .addClass(errorClass);
  },
  unhighlight: function(element, errorClass, validClass) {
     $(element).removeClass(errorClass).addClass(validClass);
     $(element.form).find("label[for=" + element.id + "]")
                    .removeClass(errorClass);
  }



		})
	} catch(e) {}

	try	{
		jQuery('.blockbutton').click(function() { bui('1'); }); 
		jQuery('.blockbutton1').click(function() { bui('1'); }); 
		jQuery('.blockbutton2').click(function() { bui('2'); }); 
		jQuery('.blockbutton3').click(function() { bui('3'); }); 
		jQuery('.blockbutton4').click(function() { bui('4'); }); 
	} catch (e) { alert(e); x= 1}

	try
	{
	jQuery('.lightBox').lightBox({
					fixedNavigation:true,
					imageBtnNext:'/javascript/jquery/pi/lightbox/lightbox-btn-next.gif',
					imageBtnPrev:'/javascript/jquery/pi/lightbox/lightbox-btn-prev.gif',
					imageBtnClose:'/javascript/jquery/pi/lightbox/lightbox-btn-close.gif',
					imageBtnClose:'/javascript/jquery/pi/lightbox/lightbox-btn-close.gif',
					imageLoading:'/javascript/jquery/pi/lightbox/loading.gif',
					imageBlank:'/javascript/jquery/pi/lightbox/blank.gif'
					});
	} catch (e) { x= 1}
	
	try
	{
	jQuery('.clue').cluetip({
	splitTitle: '|',
	tracking:true,
	sticky: false,
	closePosition: 'bottom',
	width: 320,
	dropShadow: false,
	positionBy: 'mouse'
	});
	} catch (e) { x= 1}
	
	if(document.getElementById('_arp'))
   {
	   arp = window.setTimeout(arploader, parseInt(document.getElementById('_arp').value)*1000);
   }
	
	
}
)

function arploader()
{
	// Stop processing arp
	arp = window.clearInterval(arp);
	if(parseInt(document.getElementById("_arp").value) > 0)
	{ execute('getAuctionARPStatus', document.getElementById("_arpid").value, populateARPData); }
}

function populateARPData(data)
{
	document.getElementById("_arpstatus").innerHTML = data;
	// Start it again with current page value
	if(parseInt(document.getElementById("_arp").value) > 0)
	{ window.setTimeout(arploader, parseInt(document.getElementById('_arp').value)*1000); }

}

function updateBreadCrumbs()
{
var bc = '';
for(i=1; i<=5; i++)
{
var myObj = document.getElementById("catbase"+i);

try
	{ 
	if( myObj[myObj.selectedIndex].innerText ) { bc += myObj[myObj.selectedIndex].innerText; } else { bc += myObj[myObj.selectedIndex].text }
	} catch(e) { }
}
document.getElementById("breadCrumbs").innerHTML = "<strong>Insertion Category: </strong>" + bc;
}

function goToPage(showprompt, page)
{
	if(showprompt) { var mx = confirm("Do you really want to leave this page?"); } else { var mx = 1; }
	if(mx)
	{
		document.location = page;
	}
}

function bui(append)
{
	if (!append) { append = '1'; }
	var theDiv = 'processing'+append;
	try{
		var theMessage = document.getElementById(theDiv).innerHTML;
		jQuery.blockUI({ 
            message:theMessage, 
            css: {  border: 'none', 
            padding: '10px', 
            backgroundColor: '#fff', 
            '-webkit-border-radius': '10px', 
            '-moz-border-radius': '10px', 
            opacity: .95, 
            color: '#fff' } 
        }); 
	}
	catch(e)
	{ alert('Message div '+append+' could not be found!') }
}

function makePayment()
{
	document.getElementById("paymentbutton").style.display = "none";
	document.getElementById("paymenttext").style.display = "block";
	document.getElementById("paymentquotes").style.display = "none";
	
}


function getTollQuote()
{
	var ds = document.getElementById("from").value;
	var dd = document.getElementById("postcode").value;
	var dt = document.getElementById("vt").value;
	document.getElementById("getquote").disabled = true;
	document.getElementById("accept").disabled = true;
	DWREngine._execute(_cfscriptLocation, null, 'getTollQuote', ds, dd, dt, getTollQuoteGo);
}
function getTollQuoteGo(response)
{
	document.getElementById("qp").innerHTML = response.data.quoteprice[0];
	document.getElementById("qd").innerHTML = response.data.days[0];
	document.getElementById("qz").innerHTML = response.data.zonedestination[0];
	if(response.data.days[0]>0)
	{
		document.getElementById("getquote").disabled = false;
		document.getElementById("accept").disabled = false;
	}
	else
	{
		alert('Sorry, we can not deliver between the postcodes you have selected');
	}
}

function goPage(page)
{
	mx=confirm("Any changes on this page will be lost. Do you want to proceed?\n\nTo register any changes made, use the normal navigation buttons at the bottom of the page");
	if(mx)
		{ 
		if(document.getElementById("gp")) { document.getElementById("gp").value = page; document.getElementById("hs").click(); }
		else
		{ document.location = page }
		
	} 
}


function hr(obj)
{
	obj.className = 'uchover';
}
function ur(obj)
{
	obj.className = 'uchoverOff';
}

function gv(ele)
{
	var obj = document.getElementById(ele);
	if(obj)
	   {
		   if(obj.value=='-- Choose --')
		   { return 0; }
		rv=obj.value;
		return rv
		}
		else { return 0 };
}

function detailedTypeOf(x)
{
    var reply = typeof x;

    if (reply == "object")
    {
        reply = Object.prototype.toString.apply(x);  // Returns "[object class]"
        reply = reply.substring(8, reply.length-1);  // Just get the class bit
    }

    return reply;
};

function isArray(data)
{
    return (data && data.join) ? true : false;
};

function isHTMLElement(ele, nodeName)
{
    if (ele == null || typeof ele != "object" || ele.nodeName == null)
    {
        return false;
    }

    if (nodeName != null)
    {
        var test = ele.nodeName.toLowerCase();

        if (typeof nodeName == "string")
        {
            return test == nodeName.toLowerCase();
        }

        if (isArray(nodeName))
        {
            var match = false;
            for (var i = 0; i < nodeName.length && !match; i++)
            {
                if (test == nodeName[i].toLowerCase())
                {
                    match =  true;
                }
            }

            return match;
        }

        alert("??? was passed test node name that is neither a string or array of strings");
    }
}
function execute(methodName, vararg_params)
{
	var args = [];
	var callback = null;
	for (var i = 0; i < arguments.length - 1; i++) {
		args[i] = arguments[i + 1];
	}
	var lastArg = args[args.length - 1];
	if (typeof lastArg == "function") {
		callback = args.pop();
	}
	
	jQuery.AjaxCFC({
			  url: _cfscriptLocation,
			  method: methodName,
			  data: args,
			  unnamedargs: true,
			  success: callback
			});
}

function addOptions(ele, inbound, valuerev, textprop)
{
    var orig = ele;
    ele = document.getElementById(ele);
    if (ele == null)
    {
        alert("addOptions() can't find an element with id: " + orig + ".");
        return;
    }

    var useOptions = isHTMLElement(ele, "select");
    var useLi = isHTMLElement(ele, ["ul", "ol"]);
	
    if (!useOptions && !useLi)
    {
        alert("fillList() can only be used with select elements. Attempt to use: "+detailedTypeOf(ele)) ;
        return;
    }
    // Bail if we have no data
    if (inbound == null)
    {
        return;
    }

    var text;
    var value;
	try
	{ var rc = inbound.recordcount; }  catch(e) { var rc = -1 }
	
	if(rc != -1)
	{
		// Query
		for (var i = 0; i < rc; i++)
		{
			text = inbound['data'][textprop][i];
			value = inbound['data'][valuerev][i];
			var opt = new Option(text, value);
			ele.options[ele.options.length] = opt;
		}
		
		if (rc == -1) { ele.disabled = true }
	}
	else
	{
		if (isArray(inbound))
		{
			// Loop through the data that we do have
			for (var i = 0; i < inbound.length; i++)
			{
				if (useOptions)
				{
					if (valuerev != null)
					{
						if (textprop != null)
						{
							text = inbound[i][textprop];
							value = inbound[i][valuerev];
						}
						else
						{
							value = inbound[i][valuerev];
							text = value;
						}
					}
					else
					{
						if (textprop != null)
						{
							text = inbound[i][textprop];
							value = text;
						}
						else
						{
							text = "" + inbound[i];
							value = text;
						}
					}
	
					var opt = new Option(text, value);
					ele.options[ele.options.length] = opt;
				}
				else
				{
					li = document.createElement("li");
					li.innerHTML = "" + inbound[i];
					ele.appendChild(li);
				}
			}
		}
		else
		{
			for (var prop in inbound)
			{
				if (!useOptions)
				{
					alert("addOptions can only create select lists from objects.");
					return;
				}
	
				if (valuerev)
				{
					text = prop;
					value = inbound[prop];
				}
				else
				{
					text = inbound[prop];
					value = prop;
				}
	
				var opt = new Option(text, value);
				ele.options[ele.options.length] = opt;
			}
		}
	}
}

function addRows(ele, inbound, cellFuncs)
{
    var orig = ele;
    ele = document.getElementById(ele);
	
    if (ele == null)
    {
        alert("addRows() can't find an element with id: " + orig + ".");
        return;
    }

    if (!isHTMLElement(ele, ["table", "tbody", "thead", "tfoot"]))
    {
        alert("addRows() can only be used with table, tbody, thead and tfoot elements. Attempt to use: "+detailedTypeOf(ele) );
        return;
    }

    // assure bug-free redraw in Gecko engine by
    // letting window show cleared table
    if (navigator.product && navigator.product == "Gecko")
    {
        setTimeout(function() { addRowsInner(ele, inbound['data'], cellFuncs); }, 0);
    }
    else
    {
        addRowsInner(ele, inbound['data'], cellFuncs);
    }
}

/**
 * Internal function to help rendering tables.
 * @see DWRUtil.addRows(ele, data, cellFuncs)
 * @private
 */
function addRowsInner(ele, data, cellFuncs)
{
    var frag = document.createDocumentFragment();
    if (isArray(data))
    {
        // loop through data source
        for (var i = 0; i < data.length; i++)
        {
            addRowInner(frag, data[i], cellFuncs);
        }
    }
    else if (typeof data == "object")
    {
        for (var row in data)
        {
            addRowInner(frag, row, cellFuncs);
        }
    }

    ele.appendChild(frag);
};

/**
 * Iternal function to draw a single row of a table.
 * @private
 */
function addRowInner(frag, row, cellFuncs)
{
    var tr = document.createElement("tr");

    for (var j = 0; j < cellFuncs.length; j++)
    {
        var func = cellFuncs[j];
        var td;

        if (typeof func == "string")
        {
            td = document.createElement("td");
            var text = document.createTextNode(func);
            td.appendChild(text);
            tr.appendChild(td);
        }
        else
        {
            var reply = func(row);

            if (isHTMLElement(reply, "td"))
            {
                td = reply;
            }
            else if (isHTMLElement(reply))
            {
                td = document.createElement("td");
                td.appendChild(reply);
            }
            else
            {
                td = document.createElement("td");
                td.innerHTML = reply;
                //var text = document.createTextNode(reply);
                //td.appendChild(text);
            }

            tr.appendChild(td);
        }
    }

    frag.appendChild(tr);
};

/**
 * Remove all the children of a given node.
 * Most useful for dynamic tables where you clearChildNodes() on the tbody
 * element.
 * @see http://www.getahead.ltd.uk/dwr/util-table.html
 * @param ele The id of the element or the HTML element itself
 */
function removeAllRows(ele)
{
    var orig = ele;
	ele = document.getElementById(ele);
    if (ele == null)
    {
        alert("removeAllRows() can't find an element with id: " + orig + ".");
        return;
    }

    if (!isHTMLElement(ele, ["table", "tbody", "thead", "tfoot"]))
    {
        alert("removeAllRows() can only be used with table, tbody, thead and tfoot elements. Attempt to use: " + detailedTypeOf(ele));
        return;
    }

    while (ele.childNodes.length > 0)
    {
        ele.removeChild(ele.firstChild);
    }
};

function removeAllOptions(ele)
{
    var orig = ele;
    ele = document.getElementById(ele);
    if (ele == null)
    {
        alert("removeAllOptions() can't find an element with id: " + orig + ".");
        return;
    }

    var useOptions = isHTMLElement(ele, "select");
    var useLi = isHTMLElement(ele, ["ul", "ol"]);

    if (!useOptions && !useLi)
    {
        alert("removeAllOptions() can only be used with select, ol and ul elements. Attempt to use: "+detailedTypeOf(ele));
        return;
    }

    if (useOptions)
    {
        // Empty the list
        ele.options.length = 0;
    }
    else
    {
        while (ele.childNodes.length > 0)
        {
            ele.removeChild(ele.firstChild);
        }
    }
};

function disable(fields)
{
	var valueArray = fields.split(",");
	for(var i=0; i<valueArray.length; i++){
	if(document.getElementById(valueArray[i]))
		{
			ele=valueArray[i];
			document.getElementById(ele).disabled = true;
			removeAllOptions(ele);
			addOptions(ele, ["-- Choose --"]);
		}
	}
}

function checkCAC()
{
	doDataSet();

	if (!document.getElementById('type_1') )
	{ 
	// There is no vehicle type field
	document.getElementById('year').disabled = false;
	getNewCarListerYears();
	}
	else
	{
		if( ( document.getElementById('type_1').checked || document.getElementById('type_2').checked ) && ( document.getElementById('vehicletype_1').checked || document.getElementById('vehicletype_2').checked ) )
		{
			document.getElementById('year').disabled = false;
			getNewCarListerYears();
		}
	}	
}

function init()
{
	

	//DWRUtil.useLoadingMessage();
	//DWREngine.setVerb("GET"); 
	//DWREngine._errorHandler =  errorHandler;
	//doSearch();
}

function populateNewRanges()
{
	document.getElementById("range").value = 0;
	execute('getNewCarRanges', document.getElementById("make").value, populateRangeData);
	doSearch();
}


function doSearch()
{
	if(document.getElementById("page"))
	{
		mp = 0;
		pg = 0;
		if(document.getElementById("maxprice")) { mp = jQuery("maxprice").value }
		if(document.getElementById("page")) { pg = getValue("page").value }
		execute('doNewCarSearch', jQuery("make").value, jQuery("range").value, 0, mp, pg, populateNewVehicles);
	}
}

function populateRangeData(data)
{
	removeAllOptions("range");
	addOptions("range", data, "id", "title");
}

function populateNewVehicles(html)
{
	document.getElementById("vehiclesNew").innerHTML = html;
}

/* ----------------------------- NEW CARS ---------------------------------*/

function doDataSet()
{
	if (document.getElementById("dataset")) { dataset = document.getElementById("dataset").value }
	if (document.getElementById("strdataset")) { dataset = document.getElementById("strdataset").value }
	if (document.getElementById("type")) { type = parseInt(document.getElementById("type").value) }
	if (document.getElementById("auctiondata"))
	{
		var tObj = document.getElementsByName("auctiondata");
		if(tObj.length > 1)
		{
			for(i=0; i<tObj.length; i++)
			{ if (tObj[i].checked) { auctiondata = tObj[i].value } }
		}
		else
		{
		auctiondata = parseInt(document.getElementById("auctiondata").value)
		}
		}
	if (document.getElementById("auctiondataS")) { auctiondataS = parseInt(document.getElementById("auctiondataS").value) }
	if (document.getElementById("vehicletype")) { vehicletype = parseInt(document.getElementById("vehicletype").value) }
	if (document.getElementById("vehicletype_1") && document.getElementById("vehicletype_1").checked) { vehicletype = 1 }
	if (document.getElementById("vehicletype_2") && document.getElementById("vehicletype_2").checked) { vehicletype = 2 }
	if (document.getElementById("type_1") && document.getElementById("type_1").checked) { type = 1 }
	if (document.getElementById("type_2") && document.getElementById("type_2").checked) { type = 2 }
	if (document.getElementById("year")) { datayear = parseInt(document.getElementById("year").value) }
	if (document.getElementById("userid")) { datauser = parseInt(document.getElementById("userid").value) }
	if(document.getElementById("country")) { datacountry = document.getElementById("country").value }
	if(document.getElementById("numericids")) { numericids = document.getElementById("numericids").value }
	if(document.getElementById("addblankoption")) { numericids = document.getElementById("addblankoption").value }
	if(document.getElementsByName("inttradeauction")) {
			var tObj = document.getElementsByName("inttradeauction");
			for(i=0; i<tObj.length; i++)
			{ if (tObj[i].checked) { tradeauction = tObj[i].value } }
		}
	
}

function getNewCarListerYears(ds)
{
	doDataSet();
	alert(type);
	if (document.getElementById("year")) 
	{
		if(vehicletype!=0)
		{
		execute('getNewCarListerYears', vehicletype, type, datacountry, addblankoption, populateNewCarListerYears);	
		}
		else
		{
		disable('year,make,range,model,derivitive');
		}
	}
	else
	{
		// Year doesn't exist! Should we skip straight to getting makes?
		if (document.getElementById("make")) 
		{
			disable('year,make,range,model,derivitive');
			getNewCarListerMakes();
		}
	}
}
function populateNewCarListerYears(data)
{
	removeAllOptions("year");
	addOptions("year", data, "id", "title");
	document.getElementById("year").disabled = false;
	document.getElementById("year").selectedIndex = 0;
	disable('make,range,model,derivitive');
}

function getNewCarListerMakes(ds)
{
	doDataSet();
	if(!datayear) { disable('make,range,model,derivitive'); }
	else
	{
		if(datayear!=0)
		{
		execute('getNewCarListerMakes', vehicletype, type, 0, datayear, datauser, datacountry, '', numericids, addblankoption, 0, auctiondata, auctiondataS, populateNewCarListerMakes);	
		}
		else
		{
			disable('make,range,model,derivitive');
		}
		if(gv("make")!=0)
		{
			// Already have a make - get ranges
			getNewCarListerRanges();
		}
	}
}
function populateNewCarListerMakes(data)
{
	removeAllOptions("make");
	addOptions("make", data, "id", "strmake");
	document.getElementById("make").disabled = false;
	disable('range,model,derivitive');
}

/* --------------- */

function getNewCarListerRanges()
{
	doDataSet();
	if(document.getElementById("range")) { removeAllOptions("range") }
	var make = gv('make');
	if (make!=0)
	{
		try { document.getElementById('strMakeName').value = document.getElementById('make').options[document.getElementById('make').selectedIndex].text } catch(e) { }
		if(document.getElementById("model")) { document.getElementById("model").disabled = true; }
		if(document.getElementById("derivitive")) { document.getElementById("derivitive").disabled = true; }
		if(document.getElementById("range")) { execute('getNewCarListerRanges', vehicletype, type, make, 0, datayear, datauser, datacountry, '', addblankoption, auctiondata, auctiondataS, populateNewCarListerRanges); }
	}
	else
	{
		disable('range,model,derivitive');
	}
}
function populateNewCarListerRanges(data)
{
	addOptions("range", data, "id", "strrange");
	if(document.getElementById("range").options.length!=0) { document.getElementById("range").disabled = false; }
	if(document.getElementById("hid_range")) { if(document.getElementById("hid_range").value != 0) { document.getElementById("range").value = document.getElementById("hid_range").value; document.getElementById("hid_range").value = 0} }
	disable('model,derivitive');
}

/* --------------- */

function getNewCarListerModels()
{
	doDataSet();
	if(document.getElementById("model"))
	{
		removeAllOptions("model");
		var range = gv("range");
		try { document.getElementById('strRangeName').value = document.getElementById('range').options[document.getElementById('range').selectedIndex].text } catch(e) { }
	
		if(range!=0)
		{
		execute('getNewCarListerModels', vehicletype, type, range, 0, datayear, datauser, datacountry, '', addblankoption, auctiondata, auctiondataS, populateNewCarListerModels);	
		}
		else
		{
			disable('model,derivitive');
		}

		if(document.getElementById("photoFloating") )
		{
			//execute('getPhoto', range, populatePhotos);
		//doHTTP('/clients/index.cfm', 'photoBoxed', 'fnc=imageBoxed&range='+range, false);
		//doHTTP('/clients/index.cfm', 'photoFloating', 'fnc=imageFloating&range='+range, false);
		}
	}
	else
	{
		if(document.getElementById('lookup_mrmd'))
		{
			if ( document.getElementById('range').value != 0)
				{ document.getElementById('lookup_mrmd').disabled = false; }
				else
				{ document.getElementById('lookup_mrmd').disabled = true; }
		}
	}
}
function populatePhotos(data)
{
	alert(data);
}

function populateNewCarListerModels(data)
{
	if(document.getElementById("model")) { removeAllOptions("model") }
	if(document.getElementById("derivitive")) { removeAllOptions("derivitive") }
	try { document.getElementById('strMakeName').value = document.getElementById('make').options[document.getElementById('make').selectedIndex].text } catch(e) { }
	addOptions("model", data, "id", "strmodel");
	if(document.getElementById("model").options.length!=0) { document.getElementById("model").disabled = false; }
	if(document.getElementById("hid_model").value != 0)
		{
			document.getElementById("model").value = document.getElementById("hid_model").value; document.getElementById("hid_model").value = 0
		}
	disable('derivitive');
	//getNewCarListerDerivitives();
}

/* --------------- */

function getNewCarListerDerivitives()
{
	doDataSet();
	if(document.getElementById("derivitive")) { removeAllOptions("derivitive") }
	try { document.getElementById('strModelName').value = document.getElementById('model').options[document.getElementById('model').selectedIndex].text } catch(e) { }
	var model = gv("model");
	if(!document.getElementById('derivitive'))
	{
		// No derivitive field - do a best guess data code lookup
		datacode();
	}
	else
	{
		if(model!=0)
		{
		execute('getNewCarListerDerivitives', vehicletype, type, model, 0, datayear, datauser, datacountry, '', addblankoption, auctiondata, auctiondataS, populateNewCarListerDerivitives);	
		}
		else
		{
			disable('derivitive');
		}
	}
}
function populateNewCarListerDerivitives(data)
{
	if(!document.getElementById("derivitive")) { return true }
	removeAllOptions("derivitive");
	addOptions("derivitive", data, "id", "strderivitive");
	if(document.getElementById("derivitive").options.length!=0) { document.getElementById("derivitive").disabled = false; }
	if(document.getElementById("hid_derivitive").value != 0)
		{ 
		document.getElementById("derivitive").value = document.getElementById("hid_derivitive").value; document.getElementById("hid_derivitive").value = 0
		}
		else
		{
		if(document.getElementById("capcode")) document.getElementById("capcode").value = "";
		if(document.getElementById("bodytype")) document.getElementById("bodytype").value = "0";
		if(document.getElementById("transmission")) document.getElementById("transmission").value = "0";
		if(document.getElementById("fueltype")) document.getElementById("fueltype").value = "0";
		if(document.getElementById("doors")) document.getElementById("doors").value = "";
		if(document.getElementById("sector")) document.getElementById("sector").value = "0";
		}

}

/* --------------- */

function getNewCarListerFeatures()
{
	doDataSet();
	//try { document.getElementById('strDerivitiveName').value = document.getElementById('derivitive').options[document.getElementById('derivitive').selectedIndex].text } catch(e) { }
	var derivitive = gv("derivitive");
	execute('getNewCarListerFeatures', vehicletype, type, derivitive, 0, datayear, datauser, datacountry, '', auctiondata, auctiondataS, populateNewCarListerFeatures);	
}
function populateNewCarListerFeatures(data)
{
	if(document.getElementById("capcode")) document.getElementById("capcode").value = data[0];
	if(document.getElementById("bodytype")) document.getElementById("bodytype").value = data[1];
	if(document.getElementById("transmission")) document.getElementById("transmission").value = data[2];
	if(document.getElementById("fueltype")) document.getElementById("fueltype").value = data[3];
	if(document.getElementById("doors")) document.getElementById("doors").value = data[4];
	if(document.getElementById("sector")) document.getElementById("sector").value = data[5];
	if(document.getElementById("co2")) document.getElementById("co2").value = data[6];
	if(document.getElementById("mpg")) document.getElementById("mpg").value = data[7];
	if(document.getElementById("insurancegroup")) document.getElementById("insurancegroup").value = data[8];
}

function datacode()
{
	if (document.getElementById('strmotordatacode'))
	{
	var yr = gv("year");
	var mk = gv("make");
	var rn = gv("range");
	var mo = gv("model");
	var de = gv("derivitive");
	doDataSet();
	execute('getMotorDataCode', vehicletype, type, datacountry, yr, mk, rn, mo, de, populateDataCode);
	}
}
function populateDataCode(data)
{
	document.getElementById("strmotordatacode").value = data;
	document.getElementById('lookup_mrmd').disabled = true;
	aa = document.getElementById('model');
	if(data.length > 3 || document.getElementById('model').length==1)
	{
		document.getElementById('lookup_mrmd').disabled = false;
	}
}

function populateAUCities()
{
	doDataSet();
	var pc = document.getElementById("strpostalcode").value;
	document.getElementById("inttown").disabled = true;
	document.getElementById("strstate").value = '';
	if(pc.length==4)
	{
	execute('getAUSuburbs', pc, populateAUCitiesGo);
	}
}
function populateAUCitiesGo(response)
{
	if(response.recordcount > 0)
	{
		//document.getElementById("inttown").disabled = false;
		removeAllOptions("inttown");
		document.getElementById("bpc").style.visibility = "hidden";
		addOptions("inttown", ["-- Choose --"]);
		addOptions("inttown", response, "id", "town");
		document.getElementById("inttown").disabled = false;
		if(document.getElementById("intstate")) { document.getElementById("intstate").value = response.data.intcountygroup[0]; }
		if(document.getElementById("strstate")) { document.getElementById("strstate").value = response.data.strcountygroup[0]; }
		if(document.getElementById("intcapitalcity")) { document.getElementById("intcapitalcity").value = response.data.intcapitalcity[0]; }
		if(document.getElementById("strcapitalcity")) { document.getElementById("strcapitalcity").value = response.data.strcapitalcity[0]; }
	}
	else
	{
		addOptions("inttown", ["Enter a valid postal code"]);
		//document.getElementById("inttown").disabled = true;
		document.getElementById("bpc").style.visibility = "visible";
		if (document.getElementById("intcounty")) { document.getElementById("intcounty").value = ''; }
	}
	document.getElementById("inttown").value = '';
}

function populateAUStates()
{
	var pc = document.getElementById("inttown").value; // Really town is city
	execute('getAUStateForCity', pc, populateAUStatesGo);
}
function populateAUStatesGo(data)
{
	document.getElementById("intcounty").value = data;
}

function allowVRMcheck()
{
	if ( gv('strmotorvrm').length >= 4 )
	{ document.getElementById('lookup_vrm').disabled = false }
	else
	{ document.getElementById('lookup_vrm').disabled = true }
	
}

function doVRMlookup()
{

	doDataSet();

	var d = new Date();
	execute('VRMLookup', gv('strmotorvrm'), datacountry, d.getMilliseconds(), populateVRMData);
	return true;

	if(document.getElementById("vrmlookup1")) { document.getElementById("vrmlookup1").disabled = false; }
	if(document.getElementById("vrmlookup2")) { document.getElementById("vrmlookup2").disabled = false; }

}

function populateVRMData(response)
{

	if(response.FOUND)
	{
		document.getElementById("strmotordatacode").value = 'nzvrmok';
		document.getElementById("confirmdetails").click();
	}
	else
	{
		if(document.getElementById("vrmlookup1")) { document.getElementById("vrmlookup1").disabled = false; }
		if(document.getElementById("vrmlookup2")) { document.getElementById("vrmlookup2").disabled = false; }
		// Hide message
		jQuery.unblockUI();
		alert("Sorry, but that vehicle could not be found.\n\n" + response.ERRORCODE);
		}
}

function populateVehicleData(response)
{
	debugData = response;

	// Hide message
	jQuery.unblockUI();

	if(response.found)
	{
		document.getElementById("strmotordatacode").value = response.datacode;
		document.getElementById("confirmdetails").click();
	}
	else
	{
		if(document.getElementById("vrmlookup1")) { document.getElementById("vrmlookup1").disabled = false; }
		if(document.getElementById("vrmlookup2")) { document.getElementById("vrmlookup2").disabled = false; }
		alert("Sorry, but that vehicle could not be found.\n\n" + response.errorcode); }
	
}
function dummyClick(page)
{
document.getElementById("gp").value = page; document.getElementById("hs").click();
}

function pickCategory(category)
{
document.getElementById("pickcategory").value = category;
document.listingform.submit();
}

function removeCategory(category)
{
document.getElementById("removecategory").value = category;
document.listingform.submit();
}

function populateLevel(myObj,level,pickcategory)
{
	// Clear out current selection
	document.getElementById("useCategory").disabled = true;
	try { document.getElementById("intcategory"+pickcategory).value = ''; } catch(e) { }
	try { document.getElementById("intcategory"+pickcategory+"_ro").value = '';	 } catch(e) { }
	
	var parentValue = myObj[myObj.selectedIndex].value;
	if( myObj[myObj.selectedIndex].innerText ) { var parentText = myObj[myObj.selectedIndex].innerText; } else { var parentText = myObj[myObj.selectedIndex].text }
	
	if(level < 6)
	{
	// Clear out other lists
	//for (var i = level+1; i < 6; i++) { doHTTP("/listings/index.cfm", "catbase"+i, "fnc=populateLevel&level="+i+"&parent=0", true); }
	//doHTTP("/listings/index.cfm", "catbase"+level, "fnc=populateLevel&level="+level+"&parent="+parentValue+"&pickCategory="+pickcategory, true);
	}
	
	if(parentText.substring(parentText.length, parentText.length-1) != '>')
	{
	// We have selected a correct leaf.. Enable buttons
	try { document.getElementById("intcategory"+pickcategory).value = parentValue; } catch(e) { }
	try { document.getElementById("intcategory"+pickcategory+"_ro").value = parentValue; } catch(e) { }
	document.getElementById("useCategory").disabled = false;
	}
	
	updateBreadCrumbs();

}

function uploadgo()
{
document.getElementById("previouspage").disabled = true;
document.getElementById("nextpage").disabled = true;
document.getElementById("uploaddummy").disabled = true;
document.getElementById("uploadmedia").click();
document.getElementById("uploadmessage").style.display = "block";
}

function placeListing()
{
document.getElementById("nextpageD").style.display = "inline";
document.getElementById("nextpage").style.display = "none";
document.getElementById("previouspage").disabled = true;

}

function allowVINcheck()
{
	document.getElementById('lookup_mrmd').disabled = true;
	document.getElementById("intmotoryearofmanufacture").value=0;
	DWRUtil.removeAllOptions("intmotormake");
	DWRUtil.removeAllOptions("intmotorrange");
	DWRUtil.removeAllOptions("intmotormodel");
	DWRUtil.removeAllOptions("intmotorderivitive");

	if(document.getElementById("strmotorvrm"))
	{
		if( document.getElementById('strmotorvrmlookupvin').value.length > 14 && document.getElementById('intvinlookupyear').value != 0)
		{ document.getElementById('vrmlookup1').disabled = false }
		else
		{ document.getElementById('vrmlookup1').disabled = true }
	}

	if(document.getElementById("strmotorvrmlookuprego"))
	{
		if( document.getElementById('strmotorvrmlookuprego').value.length > 3 )
		{ document.getElementById('lookup_vrm').disabled = false }
		else
		{ document.getElementById('lookup_vrm').disabled = true }
	}

	if(document.getElementById("strmotorvrmlookupnvic"))
	{
		if( document.getElementById('strmotorvrmlookupnvic').value.length > 3)
		{ document.getElementById('vrmlookup2').disabled = false }
		else
		{ document.getElementById('vrmlookup2').disabled = true }
	}
}

function clr(field)
{
	document.getElementById(fld).value = '';
}
/*
function getMotorYears(country, ds)
{
	if(ds) { if (document.getElementById("dataset")) { document.getElementById("dataset").value = ds } }
	doDataSet();
	
	if(document.getElementById("intmotormake")) { document.getElementById("intmotormake").disabled = true; removeAllOptions("intmotormake"); }
	if(document.getElementById("intmotorrange")) { document.getElementById("intmotorrange").disabled = true; removeAllOptions("intmotorrange");}
	if(document.getElementById("intmotormodel")) { document.getElementById("intmotormodel").disabled = true; removeAllOptions("intmotormodel");}
	if(document.getElementById("intmotorderivitive")) { document.getElementById("intmotorderivitive").disabled = true; removeAllOptions("intmotorderivitive");}
	document.getElementById('lookup_mrmd').disabled = true;
	
	glbCountry=country;
	execute('getMotorYears', country, dataset, type, populateYears);
}

function populateYears(response)
{
	if(response.recordcount > 0)
	{
	removeAllOptions("intmotoryearofmanufacture");
	addOptions("intmotoryearofmanufacture", ["-- Choose --"]);
	addOptions("intmotoryearofmanufacture", response, "year", "title");
	document.getElementById("intmotoryearofmanufacture").disabled = false;
	}
}
*/


function chooseAT(sid,did)
{
	if(document.getElementById('auctiontypes'))
	{
	var atype = parseInt(document.getElementById('auctiontypes').value);
	}
	else
	{
	var atype = parseInt(document.getElementById('dist_'+did).value);
	}
	if(document.getElementById('dur_'+did))
		{
		document.getElementById('dur_'+did).disabled = true;
		removeAllOptions('dur_'+did)
		if(atype)
		{
			nextelement=did;
			execute('getAuctionDurations', sid, atype, true, populateAuctionDurationsGo);
		}
	}
}
function populateAuctionDurationsGo(data)
{
	addOptions("dur_"+nextelement, data, "id", "strduration");
	if(data.recordcount!=0) { document.getElementById('dur_'+nextelement).disabled = false; }
}


function getAuctionTypesForSite()
{
	doDataSet();
	execute('getAuctionTypesForSite', auctiondata, true,  populateAuctionTypesForSite);
	disable('dur_1,auctiontypes')
	removeAllOptions('auctiontypes')
	removeAllOptions('dur_1')
}
function populateAuctionTypesForSite(data)
{
	addOptions('auctiontypes', data, "id", "strtype");
	$("#auctiontypes").removeAttr("disabled");
}

function nzat(obj,mbsite,dadsite)
{
	mbobj = document.getElementById('dist_'+mbsite);
	ddobj = document.getElementById('dist_'+dadsite);
	if(obj.id == 'dist_'+mbsite)
	{
		// MB
		if(mbobj.selectedIndex>0 && ddobj.selectedIndex>0) 
		{
		ddobj.selectedIndex = mbobj.selectedIndex;
		ddobj.value = mbobj.value;
		}
	}
	else
	{
		// DAD
		if(ddobj.selectedIndex>0 && mbobj.selectedIndex>0) 
		{
		mbobj.selectedIndex = ddobj.selectedIndex;
		mbobj.value = ddobj.value;
		}
	}
}
function modeltosubtitle(obj)
{
	if(document.getElementById('strsubtitle').value == document.getElementById('strmotormodellast').value)
	{
	document.getElementById('strsubtitle').value = obj.value;
	document.getElementById('strmotormodellast').value = obj.value;
	}
}