// Load from xml
function loadData(file, meth, pars, responseTo) {
	$('loader').setStyle({ display: 'block' });

	// Create request and on succes parse response to response handler
	new Ajax.Request(
			file, 
			{
				method: meth, 
				parameters: pars,
				//postData: pars,
				postBody: pars,
				onSuccess: responseTo,
				evalScripts: true
			}
		);
}

function setActivePaymentMethod(active) {
	if(active=='bank') {
		$('textAccountHolder').setStyle({ color: '#000000' });
		$('textAccountNumber').setStyle({ color: '#000000' });
		$('textBankleitzahl').setStyle({ color: '#000000' });
		$('textPaypalUserName').setStyle({ color: '#C0C0C0' });
		$('paypalUserName').value = '';
	} else {
		$('textAccountHolder').setStyle({ color: '#C0C0C0' });
		$('textAccountNumber').setStyle({ color: '#C0C0C0' });
		$('textBankleitzahl').setStyle({ color: '#C0C0C0' });
		$('textPaypalUserName').setStyle({ color: '#000000' });
		$('accountHolder').value = '';
		$('accountNumber').value = '';
		$('bankleitzahl').value = '';
	}
}

function setAddressDetails(response) {
	$('loader').setStyle({ display: 'block' });

	var error = '';

	if(typeof(response)=='object') {
		var response = response.responseXML.getElementsByTagName('response');
		error = getNodeValueByName(response[0], 'error');

		if(error.length==0) {
			if($('street')) {
				$('street').value = getNodeValueByName(response[0], 'straatnaam');
			}
			if($('city')) {
				$('city').value = getNodeValueByName(response[0], 'plaatsnaam');
			}
			if($('postcodeCheck')) {
				$('postcodeCheck') = 'ok';
			}
			if($('emailAddress2')) {
				$('emailAddress2').focus();
			}
		}
	}

	$('loader').setStyle({ display: 'none' });
}

function checkStatusPhones(phones) {
	var arrPhones = phones.split(',');
	var error = 0;

	// Check phones
	if(isArray(arrPhones)) {
		for(var i=0; i<arrPhones.length; i++) {
			if($F(arrPhones[i])=='') {
				onClickLightbox('_lb-error.php?err=phone_working', 500, 224);
				error = 1;
				break;
			}
		}
	}

	if(error==0) {
		// Check charity
		if($('cCharityPercentage') && $('cCharityID')) {
			if($F('cCharityPercentage')=='0' && $F('cCharityID')!='') {
				onClickLightbox('_lb-error.php?err=choose_percentage', 500, 224);
				error = 1;

			} else if($F('cCharityPercentage')!='0' && $F('cCharityID')=='') {
				onClickLightbox('_lb-error.php?err=choose_charity', 500, 224);
				error = 1;

			}
		}
	}

	if(error==0) {
		return true;
	} else {
		return false;
	}
}

function isArray(testObject) {
	return (testObject.constructor == Array);
}

function createAccount() {
	// Create account
	loadData('proc/createAccount.php', 'post', '', beginTransaction);
}

function beginTransaction(response) {
	var error = 0;
	var pars = '';

	if(typeof(response)=='object') {
		var result = response.responseXML.getElementsByTagName('result');
		error = getNodeValueByName(result[0], 'error');
		if(error.length!=0) {
			onClickLightbox('_lb-error.php?err=server&serv='+error, 500, 224);
			error = 1;
		}

		if(error==0) {
			var account = response.responseXML.getElementsByTagName('account');
			pars += 'accountID='+account[0].getAttribute('id');
		}
	} else if(response.length!=0) {
		pars += 'accountID='+response;
	} else {
		onClickLightbox('_lb-error.php?err=no_result', 500, 224);
		error = 1;
	}

	if(error==0) {
		// Create account
		loadData('proc/beginTransaction.php', 'post', pars, responseTransaction);
	}
}

function responseTransaction(xmlObject) {
	var error = 0;
	var pars = '';

	if(typeof(xmlObject)=='object') {
		var result = xmlObject.responseXML.getElementsByTagName('result');
		error = getNodeValueByName(result[0], 'error');
		if(error.length!=0) {
			onClickLightbox('_lb-error.php?err=server&serv='+error, 500, 224);
			error = 1;
		}
	}

	if(error==0) {
		$('loader').setStyle({ display: 'none' });

		// Normal refresh doesn't refresh PHP session vars
		window.location.href='proc/refresh.php?to=fill-in-details-ok.php';
	}
}

function commitTransaction(transactionID) {
	$('loader').setStyle({ display: 'block' });

	if(transactionID.length!=0) {
		// Commit transaction
		loadData('proc/commitTransaction.php', 'post', 'transactionID='+transactionID, finalizeTransaction);		
	} else {
		onClickLightbox('_lb-error.php?err=transaction_id', 500, 224);
	}
}

function finalizeTransaction(xmlObject) {
	var error = 0;
	var pars = '';
	var linkToPDF = '';

	if(typeof(xmlObject)=='object') {
		var result = xmlObject.responseXML.getElementsByTagName('result');
		error = getNodeValueByName(result[0], 'reason');
		if(error.length!=0) {
			onClickLightbox('_lb-error.php?err=transaction_id&serv='+error, 500, 224);
			error = 1;
		}

		var linkToPDF = getNodeValueByName(result[0], 'transactionform');
		$('receipt').setAttribute('href', linkToPDF);
	}

	if(linkToPDF.length==0) {
		//alert('error: no pdf file found');
		onClickLightbox('_lb-error.php?err=no_pdf', 500, 224);
	} else if(error==0) {
		$('hasCode').setStyle({ display: 'block' });
		$('hasNoCode').setStyle({ display: 'none' });
	}

	$('loader').setStyle({ display: 'none' });
}

function editAccount(gender, birthDay, birthMonth, birthYear, firstName, lastName, postcode, houseNumber, street, city, emailAddress, accountHolder, accountNumber, bankleitzahl, paypalUserName, password) {
	var pars = '';
	pars += 'gender='+escape(gender)+'&';
	pars += 'birthDay='+escape(birthDay)+'&';
	pars += 'birthMonth='+escape(birthMonth)+'&';
	pars += 'birthYear='+escape(birthYear)+'&';
	pars += 'firstName='+escape(firstName)+'&';
	pars += 'lastName='+escape(lastName)+'&';
	pars += 'postcode='+escape(postcode)+'&';
	pars += 'houseNumber='+escape(houseNumber)+'&';
	pars += 'street='+escape(street)+'&';
	pars += 'city='+escape(city)+'&';
	pars += 'emailAddress='+escape(emailAddress)+'&';
	pars += 'accountHolder='+escape(accountHolder)+'&';
	pars += 'accountNumber='+escape(accountNumber)+'&';
	pars += 'bankleitzahl='+escape(bankleitzahl)+'&';
	pars += 'paypalUserName='+escape(paypalUserName)+'&';
	pars += 'password='+escape(password);

	// Create account
	loadData('proc/editAccount.php', 'post', pars, showMessage);
}

function sendEnvelop(fullName, emailAddress, postcode, houseNumber, modelID) {
	if(emailAddress.length!=0 || modelID.length!=0) {
		var pars = '';
		pars += 'fullName='+escape(fullName)+'&';
		pars += 'postcode='+escape(postcode)+'&';
		pars += 'houseNumber='+escape(houseNumber)+'&';
		pars += 'emailAddress='+escape(emailAddress)+'&';
		pars += 'modelID='+escape(modelID);

		// Create account
		loadData('proc/sendEnvelop.php', 'post', pars, showMessage);
	} else {
		onClickLightbox('_lb-error.php?err=wrong_email_or_model_id', 500, 224);
		//alert('error: no valid e-mailaddress and/or model id');
	}
}

function result(xmlObject) {
	//alert(xmlObject.responseText);
}

function setUserData(xmlObject) {
	// Check type
	if(typeof(xmlObject)=='object') {
		var userdata = xmlObject.responseXML.getElementsByTagName('account');

		var gender = getNodeValueByName(userdata[0], 'gender');
		var firstName = getNodeValueByName(userdata[0], 'firstname');
		var lastName = getNodeValueByName(userdata[0], 'lastname');
		var postcode = getNodeValueByName(userdata[0], 'zipcode');
		var houseNumber = getNodeValueByName(userdata[0], 'housenumber');
		var street = getNodeValueByName(userdata[0], 'street');
		var city = getNodeValueByName(userdata[0], 'city');
		var emailAddress = getNodeValueByName(userdata[0], 'email');
		var dateOfBirth =  getNodeValueByName(userdata[0], 'dateofbirth');
		var birthYear = dateOfBirth.substring(0, 4);
		var birthMonth = dateOfBirth.substring(5, 7);
		var birthDay = dateOfBirth.substring(8, 10);
		var accountHolder = getNodeValueByName(userdata[0], 'bankaccountholder');
		var accountNumber = getNodeValueByName(userdata[0], 'bankaccount');
		var bankleitzahl = getNodeValueByName(userdata[0], 'bankcode');
		var paypalUserName = getNodeValueByName(userdata[0], 'paypalaccountname');

		if($('gender')) { 
			$('gender').value = gender;
		}
		if(gender=='m') {
			if($('genderMale')) { 
				$('genderMale').setAttribute('src', 'public/media/images/form_radiobutton_on.gif');
			}
			if($('genderFemale')) { 
				$('genderFemale').setAttribute('src', 'public/media/images/form_radiobutton_off.gif');
			}
			if($('dGenderMale')) { 
				$('dGenderMale').setStyle({ display: 'block' }); 
			}
			if($('dGenderFemale')) { 
				$('dGenderFemale').setStyle({ display: 'none' }); 
			}
		} else {
			if($('genderMale')) { 
				$('genderMale').setAttribute('src', 'public/media/images/form_radiobutton_off.gif');
			}
			if($('genderFemale')) { 
				$('genderFemale').setAttribute('src', 'public/media/images/form_radiobutton_on.gif');
			}
			if($('dGenderMale')) { 
				$('dGenderMale').setStyle({ display: 'none' }); 
			}
			if($('dGenderFemale')) { 
				$('dGenderFemale').setStyle({ display: 'block' }); 
			}
		}

		if($('firstName')) {
			$('firstName').value = firstName;
		}
		if($('dFirstName')) {
			$('dFirstName').update(firstName);
		}
		if($('lastName')) {
			$('lastName').value = lastName;
		}
		if($('dLastName')) {
			$('dLastName').update(lastName);
		}
		if($('postcode')) {
			$('postcode').value = postcode;
		}
		if($('dPostcode')) {
			$('dPostcode').update(postcode);
		}
		if($('houseNumber')) {
			$('houseNumber').value = houseNumber;
		}
		if($('dHouseNumber')) {
			$('dHouseNumber').update(houseNumber);
		}
		if($('street')) {
			$('street').value = street;
		}
		if($('dStreet')) {
			$('dStreet').update(street);
		}
		if($('city')) {
			$('city').value = city;
		}
		if($('dCity')) {
			$('dCity').update(city);
		}
		if($('emailAddress2')) {
			$('emailAddress2').value = emailAddress;
		}
		if($('dEmailAddress')) {
			$('dEmailAddress').update(emailAddress);
		}
		if($('selectedDay')) {
			$('selectedDay').update(birthDay);
		}
		if($('selectedMonth')) {
			$('selectedMonth').update(birthMonth);
		}
		if($('selectedYear')) {
			$('selectedYear').update(birthYear);
		}
		if($('bdDay')) {
			$('bdDay').value = birthDay;
		}
		if($('bdMonth')) {
			$('bdMonth').value = birthMonth;
		}
		if($('bdYear')) {
			$('bdYear').value = birthYear;
		}
		if($('dBirthDate')) {
			$('dBirthDate').update(birthDay+'-'+birthMonth+'-'+birthYear);
		}
		if($('accountHolder')) {
			$('accountHolder').value = accountHolder;
		}
		if($('dAccountHolder')) {
			$('dAccountHolder').update(accountHolder);
		}
		if($('accountNumber')) {
			$('accountNumber').value = accountNumber;
		}
		if($('dAccountNumber')) {
			$('dAccountNumber').update(accountNumber);
		}
		if($('bankleitzahl')) {
			$('bankleitzahl').value = bankleitzahl;
		}
		if($('dBankleitzahl')) {
			$('dBankleitzahl').update(bankleitzahl);
		}
		if($('paypalUserName')) {
			$('paypalUserName').value = paypalUserName;
		}
		if($('dPaypalUserName')) {
			$('dPaypalUserName').update(paypalUserName);
		}

		if(paypalUserName.length==0) {
			if($('paymentBank')) {
				$('paymentBank').setStyle({ display: 'block' }); 
			}
			if($('paymentPaypal')) {
				$('paymentPaypal').setStyle({ display: 'none' }); 
			}
		} else {
			if($('paymentBank')) {
				$('paymentBank').setStyle({ display: 'none' }); 
			}
			if($('paymentPaypal')) {
				$('paymentPaypal').setStyle({ display: 'block' }); 
			}
		}
	}

	$('loader').setStyle({ display: 'none' });
}

function checkEmail(emailAddress) {
	var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (!filter.test(emailAddress)) {
		return false;
	} else {
		return true;
	}
}

function forgotPassword(emailAddress) {
	if(checkEmail(emailAddress)) {
		var pars = '';
		pars += 'emailAddress='+escape(emailAddress);

		// Request password
		loadData('proc/forgotPassword.php', 'post', pars, showMessage);
	}
}

function showMessage() {
	if($('goTo')) {
		// Redirect if necessary
		window.location.href = 'proc/refresh.php?to='+$F('goTo');
	} else {
		if($('pageStart')) {
			$('pageStart').setStyle({ display: 'none' });
		}
		if($('pageMessage')) {
			$('pageMessage').setStyle({ display: 'block' });
		}
		if($('lbStart')) {
			$('lbStart').setStyle({ display: 'none' });
		}
		if($('lbMessage')) {
			$('lbMessage').setStyle({ display: 'block' });
		}
	}

	$('loader').setStyle({ display: 'none' });
}

function reloadPage() {
	// Check if we are in Firefox
	if(Prototype.Browser.Gecko==true) {
		window.location.href = window.location.href;
	} else {
		window.location.reload();
	}		
}

function formatCurrency(num) {
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num)) num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	if(cents<10) cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
	num = num.substring(0,num.length-(4*i+3))+'.'+
	num.substring(num.length-(4*i+3));

	return (((sign)?'':'-') + num + ',' + cents);
}

// Get text in element
function getNodeValue(el) {
	var text = "";
	
	if (el != null) {
		if (el.childNodes) {
			for (var i = 0; i < el.childNodes.length; i++) {
				var childNode = el.childNodes[i];
				
				if (typeof childNode.textContent != 'undefined' && childNode.textContent != null) {
					text = text + childNode.textContent;
				} else if (typeof childNode.text != 'undefined' && childNode.text != null) {
					text = text + childNode.text;
				} else if (typeof childNode.innerText != 'undefined' && childNode.innerText != null) {
					text = text + childNode.innerText;
				} else if (typeof childNode.nodeValue != 'undefined' && childNode.nodeValue != null) {
					text = text + childNode.nodeValue;
				} else if (typeof childNode.firstChild.nodeValue == 'string') {
					text = text + childNode.firstChild.nodeValue;
				}
			}
		}
	}

	//text.normalize();

	return text;
}

function moveContent(el, pxX, pxY, elClick) {
	// Get real dimensions.width and dimensions.height
	var dimensions = $(el).getDimensions();
	// Get positionedOffset.top and positionedOffset.left
	var posOffset = $(el).positionedOffset();

	if((pxY<0 && ((0-dimensions.height)<(posOffset.top+pxY))) || (pxY>0 && ((posOffset.top+pxY)<=0))) {
		// Move the element
		new Effect.Move(el, { 
			x: pxX, 
			y: pxY, 
			beforeStart: function() { 
				if($('arrowBlocker')) {
					// Show to make arrows inactive
					$('arrowBlocker').setStyle({ display: 'block' }); 
				}
			}, 
			afterFinish: function() { 
				if($('arrowBlocker')) {
					// Hide again to make arrows active
					$('arrowBlocker').setStyle({ display: 'none' }); 
				}
			} 
		});
	}
}

function setPhoneInfo(rowID, phoneInfo) {
	$('holderYourSelection').setStyle({ visibility: 'visible' })

	var phoneDetails = phoneInfo.split('|')[0];
	var phoneImage = phoneInfo.split('|')[1];

	$('selectedPhoneDetails').update(phoneDetails);
	$('selectedModelImage').update('');
	var imgModel = new Element('img');
	imgModel.setAttribute('src', phoneImage);
	$('selectedModelImage').appendChild(imgModel);
	$('selectedModelValue').update('€'+($F(rowID+'Price').split('|')[1]));
	if($F(rowID+'Price').split('|')[0]=='w') {
		$('mobileOK').setStyle({ display: 'block' });
		$('mobileNotOK').setStyle({ display: 'none' });
	} else if($F(rowID+'Price').split('|')[0]=='b') {
		$('mobileOK').setStyle({ display: 'none' });
		$('mobileNotOK').setStyle({ display: 'block' });
	}

	$('loader').setStyle({ display: 'none' });
}

function setModelBrandInfo(xmlObject) {
	// Check type
	if(typeof(xmlObject)=='object') {
		var brand = xmlObject.responseXML.getElementsByTagName('brand');

		var brandID = getNodeValueByName(brand[0], 'id');
		var brandName = getNodeValueByName(brand[0], 'name');

		if($('selectedBrandID')) {
			$('selectedBrandID').update('');
			$('selectedBrandID').update(brandID);
		}
		if($('selectedBrandName')) {
			$('selectedBrandName').update('');
			$('selectedBrandName').update(brandName);
		}
	}

	$('loader').setStyle({ display: 'none' });
}

function setBrandsOnPage(xmlObject) {
	// Check type
	if(typeof(xmlObject)=='object') {
		var brands = xmlObject.responseXML.getElementsByTagName('brand');
		var elTarget = $('overviewBrands');

		// First clear target
		elTarget.update('');

		if($('totalBrands')) {
			$('totalBrands').update('&nbsp;('+brands.length+')');
		}

		for(var i=0; i<brands.length; i++) {
			var brandID = getNodeValueByName(brands[i], 'id');
			var brandName = getNodeValueByName(brands[i], 'name');
			var brandImage = getNodeValueByName(brands[i], 'image');
			var brandImageGrey = getNodeValueByName(brands[i], 'greyimage');
			
			var elBrand = new Element('div', { id: 'brand-'+brandID, title: brandName });
			elBrand.className='brand';
			elBrand.onclick = function() { 
				window.location.href='select-your-model.php?brand='+escape(this.title)+'&brandID='+(this.id.replace('brand-', ''));
			}
			var divBrand = new Element('div');
			// Use id for mouseover / mouseout src changes
			if(brandImageGrey.length>0) {
				var imgBrand = new Element('img', { id: 'img-'+brandID, src: brandImageGrey, image: brandImage, imagegrey: brandImageGrey });
				if(brandImage.length>0) {
					imgBrand.onmouseover = function() {
						this.setAttribute('src', $(this.id).getAttribute('image'));
					}
				}
				imgBrand.onmouseout = function() {
					this.setAttribute('src', $(this.id).getAttribute('imagegrey'));
				}
				elBrand.appendChild(imgBrand);
			} else {
				var divNoImage = new Element('div');
				divNoImage.className='noImage';
				divNoImage.update(brandName);
				divBrand.appendChild(divNoImage);
			}	
			// Append
			elBrand.appendChild(divBrand);
			elTarget.appendChild(elBrand);
		}
	}
}

function setModelsOnPage(xmlObject) {
	// Check type
	if(typeof(xmlObject)=='object') {
		var models = xmlObject.responseXML.getElementsByTagName('model');
		var elTarget = $('overviewModels');

		// First clear target
		elTarget.update('');
		// Reset to start
		elTarget.setStyle({ top: '0px' });

		if($('totalModels')) {
			$('totalModels').update('&nbsp;('+models.length+')');
		}

		// Remove arrows if length <=8 
		if(models.length<=8) {
			$('arrowUp').setStyle({ visibility: 'hidden' });
			$('arrowDown').setStyle({ visibility: 'hidden' });
		} else {
			$('arrowUp').setStyle({ visibility: 'visible' });
			$('arrowDown').setStyle({ visibility: 'visible' });
		}

		if(models.length==0) {
			$('textSelectModel').setStyle({ display: 'none' });
			$('noModelsFound').setStyle({ display: 'block' });
		} else {
			for(var i=0; i<models.length; i++) {
				var modelID = getNodeValueByName(models[i], 'id');
				var modelName = getNodeValueByName(models[i], 'name');
				var modelImage = getNodeValueByName(models[i], 'image');
				var modelThumb = getNodeValueByName(models[i], 'thumbnail');
				var modelPrice = getNodeValueByName(models[i], 'goodprice');
				var modelPriceBroken = getNodeValueByName(models[i], 'brokenprice');

				var elModel = new Element('div', { id: 'model-'+modelID, image: modelImage, price: modelPrice, pricebroken: modelPriceBroken, title: modelName });
				elModel.className='model';
				elModel.onclick = function() { 
					$('holderYourSelection').setStyle({ visibility: 'visible' });
					
					loadData('proc/getBrandOfModel.php?modelID='+this.id.replace('model-', ''), 'get', '', setModelBrandInfo);

					$('selectedModel2Model').update($(this.id).readAttribute('title'));
					$('selectedModelImage').update('');
					var imgModel = new Element('img');
					imgModel.setAttribute('src', $(this.id).readAttribute('image'));
					$('selectedModelImage').appendChild(imgModel);

					var cModelID = this.id.replace('model-','');
					$('selectedModelID').update(cModelID);
					var cModelTitle = $(this.id).readAttribute('title');
					var cModelImage = $(this.id).readAttribute('image');
					// If price ends with ,00, remove the ,00 from the price
					var cPrice = $(this.id).readAttribute('price').replace('.', ',');
					var cPriceBroken = $(this.id).readAttribute('pricebroken').replace('.', ',');

					if(cPrice=='0' || cPrice=='0,00') {
						// Activate recycle option
						$('textValue').setStyle({ display: 'none' });
						$('textEuro').setStyle({ display: 'none' });
						$('selectedModelValue').setStyle({ display: 'none' });
						$('textRecycle').setStyle({ display: 'block' });
						$('holderYourSelection').className='hasNoPriceBackground';
                                                $('phoneNoValue').setStyle({ display: 'block' });
						$('buttonRecycleMobile').setStyle({ display: 'block' });
						$('buttonSellMobile').setStyle({ display: 'none' });
					} else {
						// Activate sell option
						$('textValue').setStyle({ display: 'block' });
						$('textEuro').setStyle({ display: 'block' });
						$('selectedModelValue').setStyle({ display: 'block' }).update('');
						$('textRecycle').setStyle({ display: 'none' });
						$('selectedModelValue').update('€'+cPrice);
						$('holderYourSelection').className='hasPriceBackground';
                                                $('phoneNoValue').setStyle({ display: 'none' });
						$('buttonSellMobile').setStyle({ display: 'block' });
						$('buttonRecycleMobile').setStyle({ display: 'none' });
						$('buttonSellMobile').onclick = function() {
							this.onclick = null;
							addToShoppingCart(cModelID, cModelTitle, cModelImage, cPrice, cPriceBroken, ($('selectedBrandID')?$('selectedBrandID').innerHTML:''), ($('selectedBrandName')?$('selectedBrandName').innerHTML:''));
						};
					}
				}
				var divModel = new Element('div');
				divModel.className='modelText';
				// Use id for mouseover / mouseout src changes
				if(modelThumb.length>0) {
					var imgThumb = new Element('img', { src: modelThumb });
					elModel.appendChild(imgThumb);
				} else {
					var divNoImage = new Element('div');
					divNoImage.className='noImage';
					divNoImage.update(modelName);
					divModel.appendChild(divNoImage);
				}
				divModel.update(modelName);
				elModel.appendChild(divModel);
				elTarget.appendChild(elModel);
			}
		}
	}

	$('loader').setStyle({ display: 'none' });
}

function ddCharities(xmlObject) {
	if(typeof(xmlObject)=='object') {
		var charities = xmlObject.responseXML.getElementsByTagName('charity');
		var ddTarget = $('dropdownCharities');

		// First clear target
		ddTarget.update('');
		ddTarget.setStyle({overflowY: 'hidden', height: 'auto'});

		for(var j=0; j<charities.length; j++) {
			var charityID = getNodeValueByName(charities[j], 'id');
			var charityName = getNodeValueByName(charities[j], 'name');

			var charity = new Element('li');
			var linkCharity = new Element('a', { id: charityID }).update(charityName);
			linkCharity.onclick = function() { 
				$('cCharity').value = this.innerHTML;
				$('cCharityID').value = this.id;
				$('selectedCharity').update(this.innerHTML); 

				updateWithCharity('', this.innerHTML);
				// Hide dropdown
				hideDropDowns();
			}
			linkCharity.onmouseover = function() {
				this.setStyle({ backgroundColor: '#78C255', color: '#FFFFFF' });
			}
			linkCharity.onmouseout = function() {
				this.setStyle({ backgroundColor: '#FFFFFF', color: '#727878' });
			}
			// Append
			charity.appendChild(linkCharity);
			ddTarget.appendChild(charity);
		}

		// Set max height of dropdown
		ddSetMaxHeight('dropdownCharities', '198');
	}

	$('loader').setStyle({ display: 'none' });
}

function ddBrands(xmlObject) {
	ddBrandsCreate(xmlObject, 'dropdownSelectMakeOptions');

	if($('dropdownSelectMakeOptions2')) {
		ddBrandsCreate(xmlObject, 'dropdownSelectMakeOptions2');
	}
}

// Handle xmlObject for dropdown models
function ddBrandsCreate(xmlObject, target) {
	// Check type
	if(typeof(xmlObject)=='object') {
		// Also set brands on page
		if($('overviewBrands')) {
			setBrandsOnPage(xmlObject);
		}
		
		var brands = xmlObject.responseXML.getElementsByTagName('brand');
		var ddTarget = $(target);

		// First clear target
		ddTarget.update('');
		
		for(var i=0; i<brands.length; i++) {
			var brandID = getNodeValueByName(brands[i], 'id');
			var brandName = getNodeValueByName(brands[i], 'name');
			
			var brand = new Element('li');
			var linkBrand = new Element('a', { id: brandID }).update(brandName);
			linkBrand.onclick = function() { 
				$('selectedMake').update(this.innerHTML);
				$('selectedMake').className='selected';
				loadData('proc/getAllModels.php?brandID='+this.id, 'get', '', ddModels);

				if($('dropdownSelectMakeOptions2')) {
					$('selectedMake2').update(this.innerHTML);
					$('selectedMake2').className='selected';
					loadData('proc/getAllModels.php?brandID='+this.id, 'get', '', setModelsOnPage);
				}
				// Hide dropdown
				hideDropDowns();
			}
			linkBrand.onmouseover = function() {
				this.setStyle({ backgroundColor: '#78C255', color: '#FFFFFF' });
			}
			linkBrand.onmouseout = function() {
				this.setStyle({ backgroundColor: '#FFFFFF', color: '#727878' });
			}
			// Append
			brand.appendChild(linkBrand);
			ddTarget.appendChild(brand);
		}

		// Set max height of dropdown
		ddSetMaxHeight(target, '198');
	}

	$('loader').setStyle({ display: 'none' });
}

function ddModels(xmlObject) {
	if(typeof(xmlObject)=='object') {
		var models = xmlObject.responseXML.getElementsByTagName('model');
		var ddTarget = $('dropdownSelectModelOptions');

		// First clear target
		ddTarget.update('');
		ddTarget.setStyle({overflowY: 'hidden', height: 'auto'});

		for(var j=0; j<models.length; j++) {
			var modelID = getNodeValueByName(models[j], 'id');
			var modelName = getNodeValueByName(models[j], 'name');

			var model = new Element('li');
			var linkModel = new Element('a', { id: modelID }).update(modelName);
			linkModel.onclick = function() { 
				$('selectedModel').update(this.innerHTML); 
				$('selectedModel').className='selected';
				// Hide dropdown
				hideDropDowns();
				
				// Redirect
				window.location.href = 'select-your-model.php?search='+escape(this.innerHTML);
			}
			linkModel.onmouseover = function() {
				this.setStyle({ backgroundColor: '#78C255', color: '#FFFFFF' });
			}
			linkModel.onmouseout = function() {
				this.setStyle({ backgroundColor: '#FFFFFF', color: '#727878' });
			}
			// Append
			model.appendChild(linkModel);
			ddTarget.appendChild(model);
		}

		// Set max height of dropdown
		ddSetMaxHeight('dropdownSelectModelOptions', '198');
	}

	$('loader').setStyle({ display: 'none' });
}

// Set dropdown height
function ddSetMaxHeight(dd, ddHeight) {
	if($(dd).getHeight()>ddHeight) {
		Element.extend($(dd)).setStyle({overflowY: 'scroll', overflowX: 'hidden', height: ddHeight+'px'});
	}
}

// http://remorse.nl/weblog/get_the_mousecursor_position_relative_to_an_element_with_prototype/
function getCordsInDiv(event, el){
	//get the position of the container
	var containerLeft = Position.page($(el))[0];
	var containerTop = Position.page($(el))[1];
	
	//get the mouse coordinates
	mouseX = Event.pointerX(event);
	mouseY = Event.pointerY(event);
	
	//calculate the absolute mouse position in the div
	horizontalPosition = mouseX - containerLeft;
	verticalPosition = mouseY - containerTop;
	
	//use prototypes function to get the dimension
	//this is a VERY usefull function because it also checks for borders
	containerDimensions = $(el).getDimensions();
	height = containerDimensions.height;
	width = containerDimensions.width;
	
	//check if the mouse is inside the div
	if(horizontalPosition > 0 && verticalPosition > 0 && mouseX < (width + containerLeft) && mouseY < (height + containerTop) ){
		return new Array(horizontalPosition, verticalPosition);
	}

	return null;
}

function getNodeValueByName(el, nodeName) {
	var text = "";
	
	if (el != null) {
		if (el.childNodes) {
			for (var i = 0; i < el.childNodes.length; i++) {
				if(el.childNodes[i].nodeName === nodeName) {
					var childNode = el.childNodes[i];
					
					if (typeof childNode.textContent != 'undefined' && childNode.textContent != null) {
						text = text + childNode.textContent;
					} else if (typeof childNode.text != 'undefined' && childNode.text != null) {
						text = text + childNode.text;
					} else if (typeof childNode.innerText != 'undefined' && childNode.innerText != null) {
						text = text + childNode.innerText;
					} else if (typeof childNode.nodeValue != 'undefined' && childNode.nodeValue != null) {
						text = text + childNode.nodeValue;
					} else if (typeof childNode.firstChild.nodeValue == 'string') {
						text = text + childNode.firstChild.nodeValue;
					}
				}
			}
		}
	}

	//text.normalize();

	return text;
}

// Set active box and hide inactive
function setActiveBox(activeBox, inactiveBox) {
	// Set active box
	$(activeBox).className='tab active'; 
	var tabs = $(activeBox).getElementsByTagName('img');
	for(var i=0; i<tabs.length; i++) {
		Element.extend(tabs[i]).setStyle({visibility: 'visible'});
	}
	Element.extend($(activeBox).getElementsByClassName('tabCorner')[0]).setStyle({visibility: 'hidden'});

	// Set inactive box
	$(inactiveBox).className='tab inactive';
	var tabs = $(inactiveBox).getElementsByTagName('img');
	for(var i=0; i<tabs.length; i++) {
		Element.extend(tabs[i]).setStyle({visibility: 'hidden'});
	}
	Element.extend($(inactiveBox).getElementsByClassName('tabCorner')[0]).setStyle({visibility: 'visible'});
}

// Change state of menu item
function setActiveMenu(id) {
	if($(id)) {
		// Set first found anchor class to active
		$(id).getElementsByTagName('a')[0].className = 'active';
	}
}

function checkMobileStatus() {

}

// http://monikaaleksieva.blogspot.com/2008/06/javascript-dump-object.html
function dumpObject( object, depth, max ) {
	depth = depth || 0;
	max = max || 2;

	if ( depth > max ) return false;

	var indent = '';
	for ( var i = 0; i < depth; i++ ) indent += ' ';

	var output = ''; 
	for ( var key in object ) {
		output += ' \n ' + indent + key + ': ';
		
		switch (typeof object[key]) { 
			case 'object': 
				output += dumpObject(object[key], depth + 1, max); 
				break;

			case 'function': 
				output += 'function'; 
				break;

			default: 
				output += object[key]; 
				break; 
		}
	}

	return output;
} 

function createCookie(name, value, days, domain) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/; domain="+domain;
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0; i < ca.length; i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') {
			c = c.substring(1,c.length);
		}

		if (c.indexOf(nameEQ) == 0) {
			return c.substring(nameEQ.length, c.length);
		}
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

function checkDateWithinMaxDays(date1, date2, range) {
	var d1 = date1;
	var d2 = new Date(date2.setDate(date2.getDate()+range));

	if(new Date(d1)<new Date(d2)){
		return true;
    }
}
