var MAX_NAME_LENGTH = 64;
var	MAX_MAIL_LENGTH = 128;
var	MAX_MAIL_MESSAGE_LENGTH = 2000;
var	sendMailProgress = false;
var	tipMyFriendsProgress = false;
var	reportAdProgress = false;

function init(iUserTypeId, iFromLong, iFromLat, iCityLong, iCityLat)
{
	var	tnImages = document.getElementById('tnimgs');

	if (tnImages != null)
	{
		var	tnImage = tnImages.getElementsByTagName('img')[0];
		tnImage.style.borderColor = '#D0D010';
	}

	if(iUserTypeId != USERTYPE_WEBBUTIK)
	{
		showMap(iFromLong, iFromLat, iCityLong, iCityLat);
	}
}

function destroy()
{
	GUnload();
}

function createMarker(point,html)
{
	var marker = new GMarker(point);
	return marker;
}

function showMap(iXFrom, iYFrom, iXCity, iYCity)
{
	if (GBrowserIsCompatible())
	{
		var	xFrom = (iXFrom * 180.0) / Math.PI;
		var	yFrom = (iYFrom * 180.0) / Math.PI;
		var	xCity = (iXCity * 180.0) / Math.PI;
		var	yCity = (iYCity * 180.0) / Math.PI;
		var map = new GMap2(document.getElementById('map'));
		map.setCenter(new GLatLng(yCity, xCity), 8);
		map.addControl(new GSmallZoomControl());
		var	bounds = new GLatLngBounds();
		var	from = new GLatLng(yFrom, xFrom, true);
		var	city = new GLatLng(yCity, xCity, true);
		var	zoom;

		bounds.extend(from);
		bounds.extend(city);

		zoom = map.getBoundsZoomLevel(bounds) - 1;
		if (zoom >= 10 )
		{
			map.setZoom(10);
		}
		else
		{
			map.setZoom(zoom);
		}
		map.setCenter(bounds.getCenter());
		var baseIcon = new GIcon();
		baseIcon.iconSize=new GSize(24,24);
		baseIcon.shadowSize=new GSize(42,24);
		baseIcon.iconAnchor=new GPoint(12,24);
          
		var from = new GIcon(baseIcon, 'http://maps.google.com/mapfiles/kml/pal4/icon15.png', null, 'http://maps.google.com/mapfiles/kml/pal4/icon15s.png');
		var city = new GIcon(baseIcon, 'http://maps.google.com/mapfiles/kml/pal3/icon56.png', null, 'http://maps.google.com/mapfiles/kml/pal3/icon56s.png');

		map.addOverlay(new GMarker(new GLatLng(yFrom, xFrom, true), from));
		map.addOverlay(new GMarker(new GLatLng(yCity, xCity, true), city));
	}
}

function callbackGetAOST(iResponse, iAdId, iFromCity, iPage)
{
	document.body.style.cursor = 'default';
	if (iResponse.status == RESPONSE_OK)
	{
		var		text = '';
		var		page = '';

		if (iResponse.object.ad.length == 0)
		{
			text += 'Inga fler liknande annonser hittade.';
		}
		else
		{
			for (var a = 0; a < iResponse.object.ad.length; a++)
			{
				text += '<a href="/annons' + iResponse.object.ad[a].path + '?paost=' + iPage +
					'">' + iResponse.object.ad[a].headline + '</a> (' + iResponse.object.ad[a].distance + '&nbsp;km)<br />';
			}
		}

		if (iResponse.object.hasPrevious)
		{
			page += '<a style="float:left" onclick="getAOST(' + iAdId + ',' + iFromCity + ',' + (iPage - 1) + ')">Föregående</a>';
		}
		if (iResponse.object.hasNext)
		{
			page += '<a style="float:right" onclick="getAOST(' + iAdId + ',' + iFromCity + ',' + (iPage + 1) + ')">Nästa</a>';
		}

		document.getElementById('aostinfo').innerHTML = text;
		document.getElementById('aostpage').innerHTML = page + '&nbsp;';
	}
	else
	{
		document.getElementById('aostinfo').innerHTML = iResponse.msg;
		document.getElementById('aostpage').innerHTML = '';
	}
}

function getAOST(iAdId, iFromCity, iPage)
{
	getAdsOfSameType(iAdId, iFromCity, iPage, callbackGetAOST);
	document.body.style.cursor = 'wait';
}

function callbackGetAFSU(iResponse, iUserId, iAdId, iFromCity, iPage)
{
	document.body.style.cursor = 'default';
	if (iResponse.status == RESPONSE_OK)
	{
		var		text = '';
		var		page = '';

		if (iResponse.object.ad.length == 0)
		{
			text += 'Inga fler annonser från annonsägaren hittade.';
		}
		else
		{
			for (var a = 0; a < iResponse.object.ad.length; a++)
			{
				text += '<a href="/annons' + iResponse.object.ad[a].path + '?pafsu=' + iPage +
					'">' + iResponse.object.ad[a].headline + '</a> (' + iResponse.object.ad[a].distance + '&nbsp;km)<br />';
			}
		}

		if (iResponse.object.hasPrevious)
		{
			page += '<a style="float:left" onclick="getAFSU(' + iUserId + ',' + iAdId + ',' + iFromCity + ',' + (iPage - 1) + ')">Föregående</a>';
		}
		if (iResponse.object.hasNext)
		{
			page += '<a style="float:right" onclick="getAFSU(' + iUserId + ',' + iAdId + ',' + iFromCity + ',' + (iPage + 1) + ')">Nästa</a>';
		}

		document.getElementById('afsuinfo').innerHTML = text;
		document.getElementById('afsupage').innerHTML = page + '&nbsp;';
	}
	else
	{
		document.getElementById('afsuinfo').innerHTML = iResponse.msg;
		document.getElementById('afsupage').innerHTML = '';
	}
}

function getAFSU(iUserId, iAdId, iFromCity, iPage)
{
	getAdsFromSameUser(iUserId, iAdId, iFromCity, iPage, callbackGetAFSU);
	document.body.style.cursor = 'wait';
}

function showSendMailWindow(iAdId, iEvent)
{
	closeWindow();
	var	windows = document.getElementById('windows');
	var	params = new WindowParams();
	var	text = '<div style="position:absolute;overflow:hidden;left:' + (params.scrollLeft + iEvent.clientX) + 'px;top:' + (params.scrollTop + iEvent.clientY) + 'px">';
	text += '<div class="top515">Skicka ett meddelande</div>';
	text += '<div class="body515"><div class="text515">';
	text += '<p>Skicka ett meddelande till annonsägaren genom att fylla i nedanstående uppgifter och klicka därefter på <em>Skicka</em>.</p>';
	text += '<table>';
	text += '<tr><th>Ditt namn:</th>';
	text += '<td><input type="text" id="smname" size="40" /></td></tr>';
	text += '<tr><th>Din e-postadress:</th>';
	text += '<td><input type="text" id="smmail" size="40" /></td></tr>';
	text += '<tr><th>Kontrollnummer:</th>';
	text += '<td><img src="/servletMkNum?id=2" alt="Kontrollnummer" /></td></tr>';
	text += '<tr><th>Ange kontrollnumret:</th>';
	text += '<td><input type="text" id="smctrlnum" size="40" maxlength="6" /></td></tr>';
	text += '</table>';
	text += '<p><b>Skriv ditt meddelande:</b><br />';
	text += '<textarea id="smmsg" rows="5" cols="55"></textarea></p>';
	text += '<div style="text-align:right"><input type="button" onclick="closeWindow()" value="Avbryt" />';
	text += '<input type="button" onclick="sendMail(' + iAdId + ')" value="Skicka" /></div>';
	text += '</div></div><div class="bottom515"></div></div>';
	windows.innerHTML += text;
	setFocus('smname');
}

function validateMailFields()
{
	var	text = '';
	var	name = document.getElementById('smname').value;
	var	mail = document.getElementById('smmail').value;
	var	msg = document.getElementById('smmsg').value;
	var	ctrlNum = document.getElementById('smctrlnum').value;

	if (name.length == 0)
	{
		text += 'Namnet kan inte vara tomt.\n';
	}

	if (name.length > MAX_NAME_LENGTH)
	{
		text += 'Namnet är för långt. Namnet kan innehålla ' + MAX_NAME_LENGTH + ' tecken som mest.\n';
	}

	if (mail.length > MAX_MAIL_LENGTH)
	{
		text += 'E-postadressen är för lång. E-postadressen kan innehålla ' + MAX_MAIL_LENGTH + ' tecken som mest.\n';
	}

	if (!isValidEMail(mail))
	{
		text += 'Ogiltig e-postadress.\n';
	}

	if (!isHTMLSafe(mail))
	{
		text += 'Ogiltig e-postadress. E-postadressen kan inte innehålla tecknen <, >, &, \' och ".\n';
	}

	if (msg.length == 0)
	{
		text += 'Meddelandet kan inte vara tomt.\n';
	}

	if (msg.length > MAX_MAIL_MESSAGE_LENGTH)
	{
		text += 'Meddelandet är för långt. Meddelandet kan innehålla ' + MAX_MAIL_MESSAGE_LENGTH + ' tecken som mest.\n';
	}

	if (!new RegExp('^\\d{6}$').test(ctrlNum))
	{
		text += 'Du måste ange ett giltigt kontrollnummer (kontrollnumret är de siffror som visas).\n';
	}

	if (text.length != 0)
	{
		alert(text);
		return false;
	}
	return true;
}

function callbackSSM(iResponse)
{
	document.body.style.cursor = 'default';
	if (iResponse.status == RESPONSE_OK)
	{
		closeWindow();
		alert('Ett e-postmeddelande har nu skickats till ägaren av annonsen.');
	}
	else
	{
		alert(iResponse.msg);
	}
	sendMailProgress = false;
}

function sendMail(iAdId)
{
	if (!sendMailProgress)
	{
		if (validateMailFields())
		{
			var	name = document.getElementById('smname').value;
			var	mail = document.getElementById('smmail').value;
			var	ctrlNum = document.getElementById('smctrlnum').value;
			var	msg = document.getElementById('smmsg').value;

			sendMailProgress = true;
			sendMailToOwner(iAdId,
								encodeURIComponent(name),
								encodeURIComponent(mail),
								ctrlNum,
								encodeURIComponent(msg),
								callbackSSM);

			document.body.style.cursor = 'progress';
		}
	}
}

function showTipMyFriendsWindow(iAdId, iEvent)
{
	closeWindow();
	var	windows = document.getElementById('windows');
	var	params = new WindowParams();
	var	text = '<div style="position:absolute;overflow:hidden;left:' + (params.scrollLeft + iEvent.clientX - 400) + 'px;top:' + (params.scrollTop + iEvent.clientY) + 'px">';
	text += '<div class="top515">Tipsa dina vänner</div>';
	text += '<div class="body515"><div class="text515">';
	text += '<p>Tipsa dina vänner om denna annons genom att ange din e-postadress och dina vänners e-postadresser på varje ny rad i e-postfältet nedan och klicka därefter på <em>Tipsa</em>.</p>';
	text += '<table>';
	text += '<tr><th>Ditt namn:</th>';
	text += '<td><input type="text" id="tfname" size="40" /></td></tr>';
	text += '<tr><th>Din e-postadress:</th>';
	text += '<td><input type="text" id="tfmail" size="40" /></td></tr>';
	text += '</table>';
	text += '<p><b>Dina vänners e-postadresser:</b><br />';
	text += '<textarea id="tfmails" rows="5" cols="55"></textarea></p>';
	text += '<div style="text-align:right"><input type="button" onclick="closeWindow()" value="Avbryt" />';
	text += '<input type="button" onclick="tipMyFriends(' + iAdId + ')" value="Tipsa" /></div>';
	text += '</div></div><div class="bottom515"></div></div>';
	windows.innerHTML += text;
	setFocus('tfname');
}

function validateTMFFields()
{
	var	name = document.getElementById('tfname').value;
	var	mail = document.getElementById('tfmail').value;
	var	mailFriends = trim(document.getElementById('tfmails').value).split(/[\s:;]+/g);
	var	numMailFriends = 0;
	var	text = '';

	if (name.length == 0)
	{
		text += 'Namnet kan inte vara tomt.\n';
	}

	if (name.length > MAX_NAME_LENGTH)
	{
		text += 'Namnet är för långt. Namnet kan innehålla ' + MAX_NAME_LENGTH + ' tecken som mest.\n';
	}

	if (mail.length > MAX_MAIL_LENGTH)
	{
		text += 'E-postadressen är för lång. E-postadressen kan innehålla ' + MAX_MAIL_LENGTH + ' tecken som mest.\n';
	}

	if (!isValidEMail(mail))
	{
		text += 'Ogiltig e-postadress.\n';
	}

	if (!isHTMLSafe(mail))
	{
		text += 'Ogiltig e-postadress. E-postadressen kan inte innehålla tecknen <, >, &, \' och ".\n';
	}

	if (mailFriends.length > 1000)
	{
		text += 'För många vänners e-postadresser angivna.\n';
	}

	for (var a = 0; a < mailFriends.length; a++)
	{
		var	friendsMail = trim(mailFriends[a]);

		if (friendsMail.length != 0)
		{
			if (friendsMail.length > MAX_MAIL_LENGTH)
			{
				text += 'Din väns e-postadress (' + friendsMail + ') är för lång. E-postadressen kan innehålla ' + MAX_MAIL_LENGTH + ' tecken som mest.\n';
			}

			if (!isValidEMail(friendsMail))
			{
				text += 'Ogiltig väns e-postadress (' + friendsMail + '). Ta bort ogiltiga tecken såsom t ex mellanslag.\n';
			}

			if (!isHTMLSafe(friendsMail))
			{
				text += 'Ogiltig väns e-postadress (' + friendsMail + '). E-postadressen kan inte innehålla tecknen <, >, & och ".\n';
			}
			numMailFriends++;
		}
	}

	if (numMailFriends == 0)
	{
		text += "Du måste ange minst en utav dina vänners e-postadresser.\n";
	}

	if (text.length != 0)
	{
		alert(text);
		return false;
	}
	return true;
}

function callbackSTMF(iResponse)
{
	document.body.style.cursor = 'default';
	if (iResponse.status == RESPONSE_OK)
	{
		document.getElementById('tipmyfriends').innerHTML = 'Tipsat';
		closeWindow();
	}
	else
	{
		alert(iResponse.msg);
	}
	tipMyFriendsProgress = false;
}

function tipMyFriends(iAdId)
{
	if (!tipMyFriendsProgress)
	{
		if (validateTMFFields())
		{
			var	name = document.getElementById('tfname').value;
			var	mail = document.getElementById('tfmail').value;
			var	friendMails = document.getElementById('tfmails').value;

			tipMyFriendsProgress = true;
			
			tipFriends(iAdId,
						encodeURIComponent(name),
						encodeURIComponent(mail),
						encodeURIComponent(friendMails),
						callbackSTMF);
			document.body.style.cursor = 'progress';
		}
	}
}

function showReportAdWindow(iAdId, iEvent)
{
	closeWindow();
	var	windows = document.getElementById('windows');
	var	params = new WindowParams();
	var	text = '<div style="position:absolute;overflow:hidden;left:' + (params.scrollLeft + iEvent.clientX - 400) + 'px;top:' + (params.scrollTop + iEvent.clientY) + 'px">';
	text += '<div class="top515">Rapportera denna annons</div>';
	text += '<div class="body515"><div class="text515">';
	text += '<p>Om du anser att denna annons bryter mot våra villkor eller är olämplig på annat sätt, fyll i nedanstående uppgifter och klicka på <em>Rapportera</em>.</p>';
	text += '<p><sup>1</sup><b>Din e-postadress:</b> <input type="text" id="ramail" size="46" /><br />';
	text += '<sup>2</sup><b>Meddelande till Dagens Annonser:</b><br />';
	text += '<textarea id="ramsg" rows="5" cols="55"></textarea><br />';
	text += '<small><sup>1</sup>Valfritt, underlättar dock för oss om vi behöver kontakta dig.<br />';
	text += '<sup>2</sup>Valfritt, underlättar dock för oss om varför du anser att annonsen bryter mot våra villkor eller är olämplig på annat sätt.';
	text += '</small></p>';
	text += '<div style="text-align:right"><input type="button" onclick="closeWindow()" value="Avbryt" />';
	text += '<input type="button" onclick="reportThisAd(' + iAdId + ')" value="Rapportera" /></div>';
	text += '</div></div><div class="bottom515"></div></div>';
	windows.innerHTML += text;
	setFocus('ramail');
}

function validateRAFields()
{
	var	text = '';
	var	mail = document.getElementById('ramail').value;
	var	msg = document.getElementById('ramsg').value;

	if (mail.length > MAX_MAIL_LENGTH)
	{
		text += 'E-postadressen är för lång. E-postadressen kan innehålla ' + MAX_MAIL_LENGTH + ' tecken som mest.\n';
	}

	if ((mail.length > 0) && !isValidEMail(mail))
	{
		text += 'Ogiltig e-postadress.\n';
	}

	if (!isHTMLSafe(mail))
	{
		text += 'Ogiltig e-postadress. E-postadressen kan inte innehålla tecknen <, >, &, \' och ".\n';
	}

	if (msg.length > MAX_MAIL_MESSAGE_LENGTH)
	{
		text += 'Meddelandet är för långt. Meddelandet kan innehålla ' + MAX_MAIL_MESSAGE_LENGTH + ' tecken som mest.\n';
	}

	if (text.length != 0)
	{
		alert(text);
		return false;
	}
	return true;
}

function callbackSRTA(iResponse)
{
	document.body.style.cursor = 'default';
	if (iResponse.status == RESPONSE_OK)
	{
		document.getElementById('reportad').innerHTML = 'Rapporterad';
		closeWindow();
		alert('Annonsen är nu anmäld och kommer att gå igenom snarast möjligt.');
	}
	else
	{
		alert(iResponse.msg);
	}
	reportAdProgress = false;
}

function reportThisAd(iAdId)
{
	if (!reportAdProgress)
	{
		if (validateRAFields())
		{
			var	mail = document.getElementById('ramail').value;
			var	msg = document.getElementById('ramsg').value;
	
			reportAdProgress = true;

			reportAd(iAdId, encodeURIComponent(mail), encodeURIComponent(msg), callbackSRTA);
			document.body.style.cursor = 'progress';
		}
	}
}

function changeImage(iObject, iImagePath)
{
	var	tnImages = document.getElementById('tnimgs').getElementsByTagName('img');

	document.getElementById('bimg').src = iImagePath;
	for(var a = 0; a < tnImages.length; a++)
	{
		tnImages[a].style.borderColor = '#5B0000';
	}
	iObject.style.borderColor = '#D0D010';
}
