var _MnuSelectedIdx = null;

function emulateSelectBehaviour(e, triggerObj, list) {
    if(!e) var e = window.event;
    e.cancelBubble = true;
    if(e.stopPropagation) e.stopPropagation();

	var filters = document.getElementById('filter');
	if (filters) {
		var uls = document.getElementById('filter').getElementsByTagName('ul');
		var uls_no = uls.length;
		for (c = 0; c < uls_no; c++) {
			uls[c].style.display = 'none';
					var selectId = uls[c].id.replace("options","select");
					var selectObj = document.getElementById(selectId);
					var selectClass = selectObj.className;
					selectClass = selectClass.replace(" selected","");
					selectObj.className = selectClass;
		}
	}


	var uls = triggerObj.parentNode.getElementsByTagName('ul');
	var uls_no = uls.length;
	if (uls_no == 0) return false;
	
	var actionedList = document.getElementById(list);
	
	for (c=0; c<uls_no; c++) {
		if (uls[c]!=actionedList) {
			uls[c].style.display = 'none';
				var selectId = uls[c].id.replace("options","select");
				var selectObj = document.getElementById(selectId);
				var selectClass = selectObj.className;
				selectClass = selectClass.replace(" selected","");
				selectObj.className = selectClass;
		}
	}
	
	if (actionedList.style.display == 'block') {
		actionedList.style.display = 'none';
		var selectClass = triggerObj.className;
		selectClass = selectClass.replace(" selected","");
		triggerObj.className = selectClass;
	} else {
		actionedList.style.display = 'block';
		triggerObj.className += ' selected';
	}
	
	_MnuSelectedIdx = parseInt(triggerObj.id.replace('select', ''));
}

function emulateFilterSelectBehaviour(triggerObj, list) {

	var uls = document.getElementById('search').getElementsByTagName('ul');
	var uls_no = uls.length;
	for (c = 0; c < uls_no; c++) {
		uls[c].style.display = 'none';
				var selectId = uls[c].id.replace("options","select");
				var selectObj = document.getElementById(selectId);
				var selectClass = selectObj.className;
				selectClass = selectClass.replace(" selected","");
				selectObj.className = selectClass;
	}

	var uls = document.getElementById('filter').getElementsByTagName('ul');
	var uls_no = uls.length;
	if (uls_no == 0) return false;

	var actionedList = document.getElementById(list);
	
	for (c=0; c<uls_no; c++) {
		if (uls[c]!=actionedList) {
			uls[c].style.display = 'none';
				var selectId = uls[c].id.replace("options","select");
				var selectObj = document.getElementById(selectId);
				var selectClass = selectObj.className;
				selectClass = selectClass.replace(" selected","");
				selectObj.className = selectClass;
		}
	}
	
	if (actionedList.style.display == 'block') {
		actionedList.style.display = 'none';
		var selectClass = triggerObj.className;
		selectClass = selectClass.replace(" selected","");
		triggerObj.className = selectClass;
	} else {
		actionedList.style.display = 'block';	
		triggerObj.className += ' selected';
	}
}

function fillModelsOptions(brandID) {
	
	var url = WEBSITE_URL+'Helpers/fillModelsOptions/';
	var pars = "brandid="+brandID;
	var myAjax = new Ajax.Request(
		url,
		{ 
			method: 'post',
			parameters: pars,
			onSuccess: function(transport) { document.getElementById('options2').innerHTML = transport.responseText;}
		}
	);
	
}

function fillBodyOptions(modelID) {
	
	var url = WEBSITE_URL+'Helpers/fillBodyOptions/';
	var pars = "modelid="+modelID;
	var myAjax = new Ajax.Request(
		url,
		{ 
			method: 'post',
			parameters: pars,
			onSuccess: function(transport) { document.getElementById('options3').innerHTML = transport.responseText;}
		}
	);
	
}

function emulateOptionBehaviour(opt, selectedListId, mode, optValue) {
	
	var generatedTarget = '';
	
	var selectedList = document.getElementById(selectedListId);
	selectedList.innerHTML = opt.innerHTML;

	var selectClass = selectedList.className;
	selectClass = selectClass.replace(" selected","");
	selectedList.className = selectClass;
	
	var hinput = document.getElementById("hi"+mode);
	hinput.value = optValue;
	
	if (mode == 'Brand') fillModelsOptions(optValue);
	if (mode == 'Model') fillBodyOptions(optValue);
	
	var selectedUl = opt.parentNode;
	selectedUl.style.display = 'none';
	
	_MnuSelectedIdx = null;
}

function hoverObject(obj) {
	if (obj.className.indexOf('hovered') == -1) obj.className += ' hovered';
	else obj.className = obj.className.replace("hovered", "");
}

function parseLinks() {

	var as = document.getElementsByTagName('a');
	as_no = as.length;
	if (as_no == 0) return false;

	for (var i = 0; i < as_no; i++) {
		if (as[i].rel == 'external') as[i].target = "_blank";
	}

}

function openMailAddress(obj) {
	
	var url = WEBSITE_URL+'Helpers/openMailAddress/';
	var pars = "addr="+obj.innerHTML;
	var myAjax = new Ajax.Request(
		url,
		{ 
			method: 'post',
			parameters: pars,
			onSuccess: function(transport) {
				obj.href = 'mailto:'+transport.responseText;
				document.location.href = 'mailto:'+transport.responseText;
			}
		}
	);
	
}


function hideFilters(obj) {
	obj.parentNode.style.display = 'none';
}

function contextActions(bodyObj) {

	parseLinks();	
}

AjaxSearch = {};

AjaxSearch.setPerPageItems = function(perPage, sub, type, brand, section) {
	new Ajax.Request(WEBSITE_URL + 'Cars/SetPerPageItems/value/' + perPage + '/for/' + sub + (type != '' ? '/c_type/' + type.toUpperCase() : '') + (brand != '' ? '/b_id/' + brand : '') + (section != '' ? '/section/' + section : '') + '/ajax/true/', {
		evalJSON: true,
		onComplete: function(transport) {
			$('searchResults').innerHTML = transport.responseJSON.listingTemplate;
			$('paginationContainer').innerHTML = transport.responseJSON.paginationHTML;
		}
	});
}

AjaxSearch.setPageNumber = function(pageNo, sub, type, brand, section) {
	new Ajax.Request(WEBSITE_URL + 'Cars/SetPageNumber/Page/' + pageNo + '/for/' + sub + (type != '' ? '/c_type/' + type.toUpperCase() : '') + (brand != '' ? '/b_id/' + brand : '') + (section != '' ? '/section/' + section : '') + '/ajax/true/', {
		evalJSON: true,
		onComplete: function(transport) {
			$('searchResults').innerHTML = transport.responseJSON.listingTemplate;
			$('paginationContainer').innerHTML = transport.responseJSON.paginationHTML;
		}
	});
}

var foldCarDetailBlock = function(element) {
	var isFolded = (element.className.match(/folded/) != null);
	var targetElement = element.next();
	
	if(isFolded == true) {
		Effect.BlindDown(targetElement);
		element.removeClassName('folded');
	}
	else {
		Effect.BlindUp(targetElement);
		element.addClassName('folded');
	}
}

var openSendCarLinkBox = function(carId) {
	$('overlayer').show();
	$('carId').value = carId;
	$('yourName').value = "";
	$('friendEmail').value = "";
	$('yourName').removeClassName('highlighted');
	$('friendEmail').removeClassName('highlighted');
}

var closeSendCarLinkBox = function() {
	$('overlayer').hide();
	$('yourName').value = "";
	$('friendEmail').value = "";
	$('yourName').removeClassName('highlighted');
	$('friendEmail').removeClassName('highlighted');
}

var sendCarLink = function() {
	var yourName = trim($('yourName').value);
	var friendEmail = trim($('friendEmail').value);
	var _hasErrors = false;
	
	if(yourName == "") {
		$('yourName').addClassName('highlighted');
		_hasErrors = true;
	}
	else {
		$('yourName').removeClassName('highlighted');
	}
	
	if(friendEmail == "" || isValidEmail(friendEmail) == false) {
		$('friendEmail').addClassName('highlighted');
		_hasErrors = true;
	}
	else {
		$('friendEmail').removeClassName('highlighted');
	}
	
	if(_hasErrors == false) {
		new Ajax.Request(WEBSITE_URL + 'Helpers/SendCarLinkToFriend/', {
			method:'post',
			parameters: {
				id:$('carId').value,
				name:yourName,
				email:friendEmail
			},
			onComplete:function(transport) {
				var _response = transport.responseJSON;
				
				if(_response.okMessage) {
					closeSendCarLinkBox();
					alert(_response.okMessage);
				} else if(_response.errors) {
					var errors = '';
					
					if(_response.errors.name) {
						errors += _response.errors.name;
						$('yourName').value = '';
						$('yourName').addClassName('highlighted');
					}
					
					if(_response.errors.email) {
						errors += _response.errors.email;
						$('friendEmail').value = '';
						$('friendEmail').addClassName('highlighted');
					}
					
					alert('Va rugam corectati erorile de mai jos si incercati din nou:' + "\n\n" + errors);
				}
				else if(_response.other) {
					alert(_response.other);
				}
			}
		});
	}
}

var trim = function(string) {
	return string.replace(/^[ ]+/, "").replace(/[ ]+$/, "");
}

var isValidEmail = function(addr) {
	if(addr == '') {
		return false;
	}
	else {
		if(!addr.match(/^(((?:[a-zA-Z0-9]+)(?:[\.\-_])?(?:[a-zA-Z0-9]+))@((?:[a-zA-Z0-9\-]+)(?:(?:\.(?:[a-zA-Z0-9\-]+)+)?\.(?:[a-zA-Z0-9]{2,4}\.)?(?:[a-zA-Z0-9]{2,4}))))$/i)) {
			return false;
		}
	}
	
	return true;
}

/**
 * Embeds a SWF into a page using the given options
 *
 * @param {Object} options
 */
var embedSWF = function(options)
{
	var defaults = {
		url: '',
		container: 'elementID',
		width: 500,
		height: 350,
		flashVars: {},
		parameters: {
			quality: 'high',
			menu: false,
			wmode: 'transparent'
		},
		attributes: {}
	};

	if(options == undefined || options == null)
	{
		options = defaults;
	}
	else
	{
		// Allow skipping certain options to be set to the default values
		// You can pass in only the options you want to override
		for(var x in defaults)
		{
			eval('if(!options.' + x + ') options.' + x + ' = defaults.' + x + ';');
		}
	}

	swfobject.embedSWF(options.url, options.container, options.width, options.height, '9.0.0', '', options.flashVars, options.parameters, options.attributes);
}

var elementInfo = {
    position: function (element) {
        var p = {x: element.offsetLeft || 0, y:element.offsetTop || 0};
        while (element = element.offsetParent) {
            p.x += element.offsetLeft;
            p.y += element.offsetTop;
        }
        return p;
    }
}

function initMenu(currentElementId, menuId) {
	var _pos = elementInfo.position($(currentElementId));
	
	$('menuActionItem').value = menuId;
	$('menuAction').style.left = _pos.x + "px";
	$('menuAction').style.top = (_pos.y + parseInt($(currentElementId).getHeight())) + "px";
	$('menuAction').style.width = (parseInt($(currentElementId).getWidth())) + "px";
	$('menuAction').style.height = (parseInt($(menuId).getHeight())) + "px";
	
	$('menuAction').onmouseover = function(e) {
		if(!e) var e = window.event;
		e.cancelBubble = true;
		if(e.stopPropagation) e.stopPropagation();
	}
	
	$('menuAction').onmouseout = function(e) {
		if(!e) var e = window.event;
		e.cancelBubble = true;
		if(e.stopPropagation) e.stopPropagation();
		
		document.body.onclick = function(e) {
            $(currentElementId).removeClassName('selected');
            $(menuId).hide();
            $('actionController').style.zIndex = 33;
		}
		
		/*$('actionController').onmouseover = function() {
			$(currentElementId).removeClassName('selected');
			$(menuId).hide();
			$('actionController').style.zIndex = 34;
		}*/
	}
}

function openContactForm() {
	$('contactForm').show();
}

function attachBodyEvents() {
    document.body.onclick = function(e) {
        if(!e) var e = window.event;
        
        
        if(_MnuSelectedIdx != null) {
            $('select' + _MnuSelectedIdx).className = $('select' + _MnuSelectedIdx).className.replace(' selected', '');
            $('options' + _MnuSelectedIdx).style.display = 'none';
            _MnuSelectedIdx = null;
        }
    }
}

Event.observe(window, 'load', attachBodyEvents);

