/*
*   JS used to submit and validate search form
*/

var initForm = false;
function initializeForm() {
    vehicleTypeChanged('vehicleType');

    //var makes = getAllSelections('makeList');
    //if ( makes != null && makes[0] != 'ALL' ) {
    //    var preSelectedModels = getCookieValueAsArray('manheim.powersearch.model', '|');
    //    reloadAllModels(makes, preSelectedModels, '');
    //}

    var sellerTypes = getAllSelections('sellerTypeList');
    if ( sellerTypes != null && sellerTypes[0] != 'ALL' ) {
        var preSelectedSellers = getCookieValueAsArray('manheim.powersearch.seller', '|');
        reloadSellers(sellerTypes, preSelectedSellers);
    }

    initForm = true;
}

function concatArrays( array1, array2 ) {
    if ( array1 != null ){
        if (array2 != null){
            for ( var i = 0; i < array2.length; i++ ) {
                array1[array1.length] = array2[i];
            }
        }
        return array1;
    } else if ( array2 != null ) {
        return array2;
    }

     return new Array();
}

var executeTrimAjax = true;
function reloadAllTrims( makes, models, defaults, inventory ) {
    if ( executeTrimAjax ) {
        if ( makes.length == 0 || makes[0] == 'ALL' || models.length == 0 || models[0] == 'ALL' ) {
        	var trimList = document.getElementById('trimList');
            trimList.update('');
            trimList.appendChild(createTrimCheck(allLabel, 'ALL', true));
        } else {
            var ajaxUrlParams = 'inventory=' + inventory;
            for (var i = 0; i < makes.length; i++) {
                ajaxUrlParams += '&make[]=' + makes[i];
            }
            for (var i = 0; i < models.length; i++) {
                ajaxUrlParams += '&model[]=' + models[i];
            }

            var preSelectedTrims = concatArrays( defaults, getAllSelections('trimList') );
            new Ajax.Request('manheim/get_data.php?mode=trims',
            {
                method: 'post',
                evalJSON: true,
                parameters: ajaxUrlParams,
                onSuccess: function(transport) {
                    showTrims( transport.responseJSON.trims, preSelectedTrims );
                },
                onFailure: function(){},
                onException: function(request, ex){}
            });
        }
    }
}

function showTrims( trims, preSelectedTrims ) {
	var trimList = document.getElementById('trimList');
    trimList.update('');

    for ( i = 0; i < trims.length; i++ ) {
        trimList.appendChild(createTrimCheck(trims[i].label, trims[i].value, false));
    }

    setAllChecked('trimList', true, preSelectedTrims);
}

function createTrimCheck( label, value, disabled ) {
    var itemElement = document.createElement('li');
    var labelElement = document.createElement('label');
    var checkbox = document.createElement('input');
    checkbox.id = value;
    checkbox.type = 'checkbox';
    checkbox.name = 'series[]';
    checkbox.className = 'checkbox';
    checkbox.value = value;
    checkbox.disabled = disabled;

    checkbox.onclick = function() {
        toggleAllCheckbox(this, 'trimList');
    };

    labelElement.appendChild(checkbox);
    labelElement.appendChild(document.createTextNode(unescape(label)));
    itemElement.appendChild(labelElement);

    return itemElement;
}

var executeModelAjax = true;
function reloadAllModels( makes, defaults, inventory ){
    if ( executeModelAjax ) {
        if ( makes.length == 0 || makes[0] == 'ALL' ) {
        	var modelList = document.getElementById('modelList');
            modelList.update('');
            modelList.appendChild(createModelCheck(allLabel, 'Любая', true));

            reloadAllTrims( makes, {}, {}, inventory );
        } else {
            var ajaxUrlParams = 'inventory=' + inventory;
            for (var i = 0; i < makes.length; i++) {
                ajaxUrlParams += '&make=' + makes[i];
            }

            var preSelectedModels = concatArrays( defaults, getAllSelections('modelList') );
            new Ajax.Request('manheim/get_data.php?mode=models&',
            {
                method: 'post',
                evalJSON: true,
                parameters: ajaxUrlParams,
                onSuccess: function(transport) {
                    showModels( transport.responseJSON.models, preSelectedModels );
                },
                onFailure: function(){},
                onException: function(request, ex){}
            });
        }
    }
}

var modelData = null;

function showModels( models, preSelectedModels ) {
	var modelList = document.getElementById('modelList');
    modelList.update('');

    for ( i = 0; i < models.length; i++ ) {
        modelList.appendChild(createModelCheck(models[i].label, models[i].value, false));
    }

//        setAllChecked('modelList', true, preSelectedModels, false);
//
//        var trimDefaults = null;
//        if ( initForm ) {
//            trimDefaults = getCookieValueAsArray('manheim.powersearch.trim', '|');
//            initForm = false;
//        }

   // reloadAllTrims(getAllSelections('makeList'), getAllSelections('modelList'), trimDefaults, '');
}

function createModelCheck( label, value, disabled ) {
	

var obj = document.getElementById('modelSelector');
obj.options[obj.options.length] = new Option(label,value, false);

return;
var itemElement = document.createElement('li');
    var labelElement = document.createElement('label');
    var checkbox = document.createElement('input');
    checkbox.id = value;
    checkbox.type = 'checkbox';
    checkbox.name = 'model[]';
    checkbox.className = 'checkbox';
    checkbox.value = value;
    checkbox.disabled = disabled;

    checkbox.onclick = function() {
        if ( this.value == 'ALL' ) {
            executeTrimAjax=false;
        }
        toggleAllCheckbox(this, 'modelList');
        if ( this.value == 'ALL' ) {
            executeTrimAjax=true;
        }
        reloadAllTrims(getAllSelections('makeList'), getAllSelections('modelList'), null, '');
        //toggleModels(this);
    };

    labelElement.appendChild(checkbox);
    labelElement.appendChild(document.createTextNode(unescape(label)));
    itemElement.appendChild(labelElement);

    return itemElement;
}

function toggleModels( checkbox ) {
    if ( modelData != null ) {
        for ( i = 0; i < modelData.length; i++ ) {
            if ( modelData[i].value == checkbox.value ) {
                if ( modelData[i].parentId > 0 ) {
                	var parentCheck = document.getElementById(modelData[i].parentId);
                    if ( parentCheck != null ) {
                        parentCheck.checked = false;
                    }
                }
                if ( modelData[i].childIds != null && modelData[i].childIds.length > 0 ) {
                    for ( var j = 0 ; j < modelData[i].childIds.length; j++ ) {
                    	var childCheck = document.getElementById(modelData[i].childIds[j]);
                        if ( childCheck != null ) {
                            childCheck.checked = checkbox.checked;
                        }
                    }
                }
                break;
            }
        }
    }
}

function writeMakeCookie() {
    document.cookie = 'manheim.powersearch.make=' + getAllSelections('makeList').join('|') + ';';
}

function writeModelCookie() {
    document.cookie = 'manheim.powersearch.model=' + getAllSelections('modelList').join('|') + ';';
}

function writeTrimCookie() {
    document.cookie = 'manheim.powersearch.trim=' + getAllSelections('trimList').join('|') + ';';
}

function writeSellerTypeCookie() {
    document.cookie = 'manheim.powersearch.seller=' + getAllSelections('sellerList').join('|') + ';';
}

function getCookieValue( cookieName ) {
    var cookieValue = '';
    if (document.cookie.length > 0) {
        var startIndex = document.cookie.indexOf(cookieName + '=');
        if (startIndex != -1) {
            startIndex = startIndex + cookieName.length + 1;
            var endIndex = document.cookie.indexOf(';', startIndex);
            if (endIndex == -1) {
                endIndex = document.cookie.length;
            }
            cookieValue = document.cookie.substring(startIndex, endIndex);
        }
    }

    return cookieValue;
}

function getCookieValueAsArray( cookieName, delim ) {
    var valueArray = new Array();
    var cookieValue = getCookieValue( cookieName );
    if ( cookieValue != null && cookieValue.length > 0 ) {
        valueArray = cookieValue.split(delim);
    }

    return valueArray;
}

function submitSearch( newSearch ) {
	var formElement = document.getElementById('searchForm');
    formElement.submittedQstr.value = '';
    if ( validateForm() ) {
        if ( newSearch ) {
            //clearRefinementCookies(document.cookie);
            writeMakeCookie();
            writeModelCookie();
            writeTrimCookie();
            writeSellerTypeCookie();
        }

        formElement.newSort.value = false;
        formElement.searchOperation.value = 'Search';
        formElement.action = 'searchSubmit.do';
        formElement.submit();
    }
}

function validateForm() {
    var valid = validateZipCode();
    valid = valid && validateSaleDate();
    return valid;
}

function validateZipCode() {
	var distance = document.getElementById('distanceList');
	var zipField = document.getElementById('zipcode');
    if ( distance != null && zipField != null ) {
        zipField.value = zipField.value.strip();
        if ( distance.options[0].selected == false ) {
            if ( zipField.value == defaultZipText || isNaN(zipField.value) ) {
                zipField.select();
                alert(zipErrMsg);
                return false;
            }
        }
    }
    return true;
}

function validateSaleDate() {
	var saleDateField = document.getElementById('saleDate');
    if ( saleDateField != null ) {
        saleDateField.value = saleDateField.value.strip();
        if ( saleDateField.value == '' || saleDateField.value == defaultSaleDateText ) {
            saleDateField.value = '';
        } else if ( saleDateField.value.length != 10 || isNaN(saleDateField.value.substring(0, 2)) || isNaN(saleDateField.value.substring(3, 5)) || isNaN(saleDateField.value.substring(6)) ) {
            // Format = MM/DD/YYYY
            saleDateField.select();
            alert(saleDateErrMsg);
            return false;
        } else {
            var oldestDate = new Date();
            oldestDate.setDate(oldestDate.getDate() - 1);

            var day = saleDateField.value.substring(3, 5);
            var month = saleDateField.value.substring(0, 2);
            var year = saleDateField.value.substring(6);

            var selectedDate = new Date();
            selectedDate.setFullYear(year, month - 1, day);

            if ( selectedDate < oldestDate ) {
                saleDateField.select();
                alert(saleDateErrMsg);
                return false;
            }
        }
    }
    return true;
}

function validateSaveSearchForm() {
    var valid = validateSearchName();
    valid = valid && validatePhoneNumber();
    valid = valid && validateNotification();
    return valid;
}

function validateSearchName() {
	var nameField = document.getElementById('searchName');
    if ( nameField != null ) {
        nameField.value = nameField.value.strip();
        if (nameField.value == '') {
            nameField.focus();
            alert(nameRequiredMsg);
            return false;
        }
    }
    return true;
}

function validateNotification() {
	var format = document.getElementById('searchForm').emailFormat;
    if ( format != null ) {
       for ( var i = 0; i < format.length; i++ ) {
          if ( format[i].checked ) {
             if ( format[i].value == 'T' ) {
             	var emailAddress = document.getElementById('emailAddress');
                 var emailFilter = new RegExp('^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$');
                 if ( emailAddress == null || emailFilter.test(emailAddress.value) == false ) {
                     emailAddress.focus();
                     alert(emailRequiredMsg);
                     return false;
                 }
             } else if ( format[i].value == 'S' ) {
             var phoneNumber = document.getElementById('phone');
                 if ( phoneNumber != null && phoneNumber.value == '' ) {
                     phoneNumber.focus();
                     alert(phoneRequiredMsg);
                     return false;
                 }
                 var provider = document.getElementById('sms');
                 if ( provider != null && provider.value == '' ) {
                     provider.focus();
                     alert(providerRequiredMsg);
                     return false;
                 }
             }
          }
       }
    }
    return true;
}

function validatePhoneNumber() {
	var phoneField = document.getElementById('phone');
    if ( phoneField != null ) {
        phoneField.value = phoneField.value.strip();
        if ( phoneField.value == '' || phoneField.value == defaultPhoneText ) {
            phoneField.value = '';
        } else {
            phoneField.value = phoneField.value.replace( /-/g, '' );
            if ( phoneField.value.length != 10 || isNaN(phoneField.value) ) {
                phoneField.select();
                alert(phoneErrMsg);
                return false;
            }
        }
    }
    return true;
}

// enable/disable form elements as user selects different
// notification types on the saved search form
function changeNotify( notifyType ) {
    // email
    if (notifyType == 'T') {
    	document.getElementById('notificationEnabled').value = 'true';
    	document.getElementById('emailAddress').removeClassName('disabledText').disabled = false;
    	document.getElementById('phone').addClassName('disabledText').disabled = true;
    	document.getElementById('sms').addClassName('disabledText').disabled = true;
    	document.getElementById('emailAddress').select();
    // sms
    } else if (notifyType == 'S') {
    document.getElementById('notificationEnabled').value = 'true';
    document.getElementById('emailAddress').addClassName('disabledText').disabled = true;
    document.getElementById('phone').removeClassName('disabledText').disabled = false;
    document.getElementById('sms').removeClassName('disabledText').disabled = false;
    document.getElementById('phone').select();
    // none
    } else {
    document.getElementById('alertTo').checked = true;
    document.getElementById('notificationEnabled').value = 'false';
    document.getElementById('emailAddress').addClassName('disabledText').disabled = true;
    document.getElementById('phone').addClassName('disabledText').disabled = true;
    document.getElementById('sms').addClassName('disabledText').disabled = true;
    }
}

function clearSearchForm() {
    resetSearchForm(true);

    setChecked('vehicleTypeList', true, vehicleTypeIdCar);
    setChecked('vehicleTypeList', true, vehicleTypeIdTruck);
    setChecked('vehicleTypeList', true, vehicleTypeIdSUV);
    setChecked('vehicleTypeList', true, vehicleTypeIdVan);
}

function resetSearchForm( refreshAll ) {
	document.getElementById('searchForm').reset();

    if ( refreshAll ) {
    	var sortElement = document.getElementById('sort');
        if ( sortElement != null ) {
            sortElement.value = '';
        }

        setOptions('vehicleType', 0);
        setChecks('vehicleTypeList', false);

        reloadToYears(document.getElementById('searchForm'));
        setOptions('year_begin', defaultFromYearIndex);
        setOptions('year_end', 0);
        setChecks('makeList', false);
        setChecks('modelList', false);
        setChecks('trimList', false);

        setChecks('odometerList', false);

        setChecks('onlyWithPhoto', false);
        setChecks('onlyWithECR', false);

        clearAdvancedOptions();

        // Location section
        setChecks('regionList', false);
        setChecks('stateList', false);
        setChecks('locationList', false);
        setChecks('distanceList', false);
        document.getElementById('zipcode').value = '';

        setChecks('sellerTypeList', false);
        setChecks('inventoryList', false);
        setChecks('saleTypeCheck', false);
        document.getElementById('saleDate').value = '';
    }

    vehicleTypeChanged('vehicleType');

    if (document.getElementById('makeList') != null) {
        reloadAllModels(getAllSelections('makeList'), null, '');

        if (document.getElementById('modelList') != null) {
            reloadAllTrims(getAllSelections('makeList'), getAllSelections('modelList'), null, '');
        }
    }

    if (document.getElementById('zipcode').value == '') {
        if ( defaultZipcode != null && defaultZipcode.length > 0 ) {
        	document.getElementById('zipcode').value = defaultZipcode;
        } else {
        document.getElementById('zipcode').value = defaultZipText;
        }
    }

    if (document.getElementById('saleDate').value == '') {
    	document.getElementById('saleDate').value = defaultSaleDateText;
    }
}

function clearAdvancedOptions() {
    setChecks('mmrList', false);
    setChecks('conditionList', false);
    setChecks('driveTrainList', false);
    setChecks('transList', false);
    setChecks('engineList', false);
    setChecks('extColorList', false);
    setChecks('intColorList', false);
    setChecks('topList', false);
    setChecks('intTypeList', false);
    setChecks('doorsList', false);
}

function toggleAllCheckbox( checkbox, containerId ) {
    if ( checkbox.value == 'ALL' ) {
        // check or uncheck all checkboxes
        setChecks(containerId, checkbox.checked)
    } else if ( !checkbox.checked ) {
        // uncheck 'ALL' option if checked
        setChecked(containerId, false, 'ALL', false);
    }

    return false;
}

// ##################################################
// Begin BY LOCATION functions
// ##################################################

function getChildLocations( parentId, relations ) {
    for ( var i = 0; i < relations.length; i++ ) {
        // Find the object with the correct parentId
        if ( parentId == relations[i].id ) {
            return relations[i].children;
        } else {
            var children = getChildLocations( parentId, relations[i].children )
            if ( children != null ) {
                return children;
            }
        }
    }

    return null;
}

// relations is an array of objects that
// contain a parent ID and an array of child objects
function toggleChildLocations( parentId, isChecked, relations ) {
    var children = getChildLocations( parentId, relations );

    if ( children != null && children.length > 0 ) {
        for (var i = 0; i < children.length; i++) {
        	var childElement = document.getElementById('location' + '-' + children[i].id);
            if ( childElement != null && isChecked != childElement.checked ) {
                childElement.click();
            }
        }
    }

    return false;
}

function getParentLocationId( childId, relations ) {
    for ( var i = 0; i < relations.length; i++ ) {
        var childList = relations[i].children;
        for (var j = 0; j < childList.length; j++) {
            if ( childId == childList[j].id ) {
                return relations[i].id;
            } else {
                var parentId = getParentLocationId( childId, childList );
                if ( parentId != null ) {
                    return parentId;
                }
            }
        }
    }

    return null;
}

function toggleParentLocation( childId, isChecked, relations ) {
    var parentId = getParentLocationId(childId, relations);

    if ( !isChecked ) {
        while ( parentId != null ){
        	var parentElement = document.getElementById('location' + '-' + parentId);
            if ( parentElement != null ) {
                parentElement.checked = false;
            }
            parentId = getParentLocationId( parentId, relations );
        }
    } else {
        // if all parent's children are checked, check parent
        var children = getChildLocations(parentId, relations);
        if ( children != null && children.length > 0 ) {
            var allChildrenChecked = true;
            for (var i = 0; i < children.length; i++) {
            	var childElement = document.getElementById('location' + '-' + children[i].id);
                if ( childElement != null && !childElement.checked ) {
                    allChildrenChecked = false;
                    break;
                }
            }

            if ( allChildrenChecked ) {
            	var parentElement = document.getElementById('location' + '-' + parentId);
                if ( parentElement != null && !parentElement.checked ) {
                    parentElement.click();
                }
            }
        }
    }
}

function toggleLocations( checkbox, relations ) {
    var locationId = checkbox.value;
    var isChecked = checkbox.checked;

    toggleChildLocations(locationId, isChecked, relations);
    toggleParentLocation(locationId, isChecked, relations);
}

// ##################################################
// End BY LOCATION functions
// ##################################################

function setOptions(elementId, optionIndex) {
	var container = document.getElementById(elementId);
    if ( container != null && optionIndex >= 0 ) {
        if ( container.nodeName.toUpperCase() == 'SELECT' && container.options.length > optionIndex ) {
            container.options[optionIndex].selected = true;
        }

        var elements = container.getElementsByTagName('select');
        for (var i = 0; i < elements.length; i++) {
            if ( elements[i].options.length > optionIndex ) {
                elements[i].options[optionIndex].selected = true;
            }
        }
    }
}

// Finds all SELECT or INPUT tags within the specified element
// and returns the values of all that are currently selected
function getAllSelections(elementId) {
    var selectedValues = new Array();

    var container = document.getElementById(elementId);
    if ( container != null ) {
        if ( container.nodeName.toUpperCase() == 'SELECT' ) {
            for (var i = 0; i < container.options.length; i++) {
                if ( container.options[i].selected ) {
                    selectedValues[selectedValues.length] = container.options[i].value;
                }
            }
        }

        if ( container.nodeName.toUpperCase() == 'INPUT' ) {
            if ( container.checked ) {
                selectedValues[selectedValues.length] = container.value;
            }
        }

        var elements = container.getElementsByTagName('input');
        for (var i = 0; i < elements.length; i++) {
            if ( elements[i].checked ) {
                selectedValues[selectedValues.length] = elements[i].value;
            }
        }
    }

    return selectedValues;
}

// Finds a SELECT or INPUT tag with the specified values
// and makes sure it is selected or unselected depending
// on the isChecked parameter
function setAllChecked(elementId, isChecked, itemValues, executeClick) {
    if ( itemValues != null ) {
        for (var i = 0; i < itemValues.length; i++) {
            setChecked(elementId, isChecked, itemValues[i], executeClick)
        }
    }
}

// Finds a SELECT or INPUT tag with the specified value
// and makes sure it is selected or unselected depending
// on the isChecked parameter
function setChecked(elementId, isChecked, itemValue, executeClick) {
	var container = document.getElementById(elementId);
    if ( container != null ) {
        if ( container.nodeName.toUpperCase() == 'SELECT' ) {
            if ( isChecked ) {
                for (var i = 0; i < container.options.length; i++) {
                    if ( container.options[i].value == itemValue ) {
                        container.options[i].selected = isChecked;
                    }
                }
            } else {
                container.options[0].selected = true;
            }
        }

        if ( container.nodeName.toUpperCase() == 'INPUT' ) {
            if ( container.checked != isChecked && container.value == itemValue ) {
                if ( typeof executeClick == 'undefined' || executeClick == true ) {
                    container.click();
                } else {
                    container.checked = isChecked;
                }
            }
        }

        var elements = container.getElementsByTagName('input');
        for (var i = 0; i < elements.length; i++) {
            if ( elements[i].checked != isChecked && elements[i].value == itemValue ) {
                if ( typeof executeClick == 'undefined' || executeClick == true ) {
                    elements[i].click();
                } else {
                    elements[i].checked = isChecked;
                }
            }
        }
    }
}

// Finds all SELECT or INPUT tags within the specified element
// and makes sure they are selected or unselected depending
// on the isChecked parameter
function setChecks(elementId, isChecked) {
	var container = document.getElementById(elementId);
    if ( container != null ) {
        if ( container.nodeName.toUpperCase() == 'SELECT' && !isChecked ) {
            container.options[0].selected = true;
        }

        if ( container.nodeName.toUpperCase() == 'INPUT' ) {
            if ( container.checked != isChecked ) {
                container.click();
            }
        }

        var elements = container.getElementsByTagName('input');
        for (var i = 0; i < elements.length; i++) {
            if ( elements[i].checked != isChecked ) {
                elements[i].click();
            }
        }
    }
}

// Was used to enable/disable form elements within a specified element
function toggleElements(elementId, enabled) {
	var element = document.getElementById(elementId);

    if (element != null) {
        if (enabled) {
            element.removeClassName('disabledText');
        } else {
            element.addClassName('disabledText');
        }

        // disable input fields
        setTagUsablility(element, 'input', enabled);

        // disable select fields
        setTagUsablility(element, 'select', enabled);

        // disable links
        setTagUsablility(element, 'a', enabled);
    }
}

function setTagUsablility( parentElement, tagType, enabled ) {
	var container = document.getElementById(parentElement);

    var elements = container.getElementsByTagName(tagType);
    for (var i = 0; i < elements.length; i++) {
        elements[i].disabled = !enabled;
    }
}


var inajax = false;
function sendAJAXRequest(url, data) {
	while (inajax);
	inajax = true;

	var ar = null;
	try {
		ar = new XMLHttpRequest();
	}
	catch (e) {
		try {
			ar = new ActiveXObject('Microsoft.XMLHTTP');
		}
		catch (e) {
		}
	}

	if (ar) {
		try {
			ar.open('POST', url, false);
			ar.send(data);
			inajax = false;
			return ar.responseText;
		}
		catch (e) {
		}
	}

	inajax = false;
	return null;
}

function makeModelsList(make_id, modelObjId, modelObjVal)
{
	if (make_id != '')
	{
		var ajaxUrl = '/manheim/get_data.php?mode=models&inventory=&make=' + make_id;
		var r = sendAJAXRequest(ajaxUrl, '');
		buildSelectParams(r, modelObjId, modelObjVal);
	}
	else
	{
		if (document.getElementById('modelSelector'))
			document.getElementById('modelSelector').innerHTML = '<img src="i/loader.gif" alt="" border="0" width="24" height="24" />';
		setTimeout('makeModelList2()', 1);
	}
}

function makeModelList2()
{
	var makes = getAllSelections('makeList');
	var ajaxUrlParams = 'mode=models&inventory=&make=';
	for (var i = 0; i < makes.length; i++) {
		ajaxUrlParams += '' + makes[i] + ',';
	}
	
	var ajaxUrl = '/manheim/get_data.php?'+ajaxUrlParams;
	var r = sendAJAXRequest(ajaxUrl, '');
	var s = buildSelectParamsCheckbox(r);
	
	if (document.getElementById('modelSelector'))
		document.getElementById('modelSelector').innerHTML = s;
}

function buildSelectParams(a, modelObjId, modelObjVal)
{
	try {
		eval('var a=' + a);
	}
	catch (e) {
		return;
	}
	
	var i;
	var c;
	var obj = document.getElementById( ((modelObjId!=null)?(modelObjId):('modelSelector')) );
	c  = obj.options.length;
	for (i = 0; i < c; i++)
	{
		obj.options[0] = null;
	}
	c = a['models'].length;
	for (i = 0; i < c; i++)
	{
	if (a['models'][i]['label'] == 'ALL')
		a['models'][i]['label'] = 'Любая';
		var tmpObj = new Option(a['models'][i]['label'], a['models'][i]['value'], false);
		if (modelObjVal == a['models'][i]['value'])
			tmpObj.selected = true;
		obj.options[obj.options.length] = tmpObj;
	}
}

function buildSelectParamsCheckbox(a)
{
	try {
		eval('var a=' + a);
	}
	catch (e) {
		return;
	}
	
	var r = '';
	var c = a['models'].length;
	for (var i = 0; i < c; i++)
	{
		if (a['models'][i]['label'] == 'ALL')
			a['models'][i]['label'] = 'Любая';
		r += '<input type="checkbox" name="model[]" id="modelSelector'+a['models'][i]['value']+'" value="'+a['models'][i]['value']+'"> <label for="modelSelector'+a['models'][i]['value']+'">'+a['models'][i]['label']+'</label><br/>';
	}
	
	return r;
}