var	MIN_NAME_LENGTH = 4;
var	MAX_NAME_LENGTH = 64;
var	MAX_MAIL_LENGTH = 128;
var	MAX_PHONE_NUMBER_LENGTH = 16;
var	MIN_PASSWORD_LENGTH = 6;
var	MAX_PASSWORD_LENGTH = 64;
var	MIN_ORGNR_LENGTH = 4;
var	MAX_ORGNR_LENGTH = 20;
var	MIN_ADDRESS_LENGTH = 4;
var	MAX_ADDRESS_LENGTH = 80;
var	MIN_POSTNR_LENGTH = 2;
var	MAX_POSTNR_LENGTH = 10;
var	MIN_CITY_LENGTH = 1;
var	MAX_CITY_LENGTH = 32;
var	MIN_COUNTRY_LENGTH = 1;
var	MAX_COUNTRY_LENGTH = 32;
var	MIN_CONTACT_LENGTH = 4;
var	MAX_CONTACT_LENGTH = 64;
var	MAX_WEB_LENGTH = 128;
var	MAX_HEADLINE_LENGTH = 100;
var	MAX_TEXT_LENGTH = 5000;

var	USERTYPE_FORENING = 1;
var	USERTYPE_FORETAG = 2;
var	USERTYPE_PRIVATPERSON = 3;
var	USERTYPE_WEBBUTIK = 4;

var ADTYPE_BYTES = 1;
var ADTYPE_KOPES = 2;
var ADTYPE_UPPHITTAT = 3;
var ADTYPE_SKANKES = 4;
var ADTYPE_SALJES = 5;
var ADTYPE_SOKES = 6;
var ADTYPE_UTHYRES = 7;
var ADTYPE_ONSKAR_HYRA = 8;

var CATEGORY_FORDON = 4;
var SUBCATEGORY_BILAR = 28;

var SMS_PREFIX_PERSON_RENEW = 'moblo&nbsp;dap';
var SMS_PREFIX_PERSON_PREMIUM1 = 'moblo&nbsp;dap1';
var SMS_PREFIX_PERSON_PREMIUM2 = 'moblo&nbsp;dap2';
var SMS_PREFIX_BUSINESS_RENEW = 'moblo&nbsp;daf';
var SMS_PREFIX_BUSINESS_PREMIUM1 = 'moblo&nbsp;daf1';
var SMS_PREFIX_BUSINESS_PREMIUM2 = 'moblo&nbsp;daf2';
var SMS_PREFIX_BUSINESS_PREMIUM3 = 'moblo&nbsp;daf3';
var SMS_PHONENR = 72500;

var	loadingMyPlaceWindow = false;
var	updatingMyPlace = false;

function clearSI(iObject)
{
	if (iObject.value == 'Sökord')
	{
		iObject.value = '';
	}
}

function updateToTime(iPrefix)
{
	var	fromTime = parseInt(document.getElementById(iPrefix + 'fromt').value);
	var	toTime = parseInt(document.getElementById(iPrefix + 'tot').value);
	var	string = '<select id="' + iPrefix + 'tot" name="' + iPrefix + 'tot">';

	for (var a = fromTime + 1; a <= 24; a++)
	{
		if (a != toTime)
		{
			string += '<option value="' + a + '">' + a + '.00</option>';
		}
		else
		{
			string += '<option value="' + a + '" selected="selected">' + a + '.00</option>';
		}
	}
	string += '</select>';
	document.getElementById(iPrefix + 'stot').innerHTML = string;
}

function callbackCUC(iResponse)
{
	if (iResponse.status == RESPONSE_OK)
    {
		var	strCities = '';

		strCities += '<select id="city" name="city">';
		for (var a = 0; a < iResponse.object.city.length; a++)
		{
			strCities += '<option value="' + iResponse.object.city[a].id + '">' + iResponse.object.city[a].name + '</option>';
		}
		strCities += '</select>';
		document.getElementById('scity').innerHTML = strCities;
	}
    else
    {
		alert('Kunde inte hämta städer för angiven region.\n' + iResponse.msg);
    }
}

function updateCities()
{
	var	strCities = '<select id="city" name="city">';
	strCities += '<option value="1">Vänta, hämtar städer/länder...</option>';
	strCities += '</select>';
	document.getElementById('scity').innerHTML = strCities;
	getCities(document.getElementById('region').value, callbackCUC);
}

function closeWindow()
{
	document.getElementById('windows').innerHTML = '';
}

function callbackCUMPC(iResponse)
{
	if (iResponse.status == RESPONSE_OK)
    {
		var	strCities = '';

		strCities += '<select id="CSMPW_92489548_CITY">';
		for (var a = 0; a < iResponse.object.city.length; a++)
		{
			strCities += '<option value="' + iResponse.object.city[a].id + '">' + iResponse.object.city[a].name + '</option>';
		}
		strCities += '</select>';
		document.getElementById('CSMPW_92489548_CITIES').innerHTML = strCities;
	}
    else
    {
		alert('Kunde inte hämta städer för angiven region.\n' + iResponse.msg);
    }
}

function updateMyPlaceCities(iRegionId)
{
	var	strCities = '<select id="CSMPW_92489548_CITY">';
	strCities += '<option value="1">Vänta, hämtar städer/länder...</option>';
	strCities += '</select>';
	document.getElementById('CSMPW_92489548_CITIES').innerHTML = strCities;
	getCities(iRegionId, callbackCUMPC);
}

function callbackCUMP(iResponse)
{
	document.getElementsByTagName('body')[0].style.cursor = 'default';
	if(iResponse.status == RESPONSE_OK)
	{
		window.location.reload();
	}
	else
	{
		alert(iResponse.msg);
	}
	updatingMyPlace = false;
}

function updateMyPlace()
{
	if(!updatingMyPlace)
	{
		updatingMyPlace = true;
		document.getElementsByTagName('body')[0].style.cursor = 'progress';

		updateUserPlace(document.getElementById('CSMPW_92489548_CITY').value, callbackCUMP);
	}
}

function callbackGRAC(iRegionId, iCityId, iResponse)
{
	document.getElementsByTagName('body')[0].style.cursor = 'default';
	if(iResponse.status == RESPONSE_OK)
	{
		var	regionsCities = iResponse.object;
		var	text = '<select id="CSMPW_92489548_REGION" onchange="updateMyPlaceCities(this.value)">';

		for(var a = 0; a < regionsCities.region.length; a++)
		{
			var	region = regionsCities.region[a];
			if(region.id != iRegionId)
			{
				text += '<option value="' + region.id + '">' + region.name + '</option>';
			}
			else
			{
				text += '<option value="' + region.id + '" selected="selected">' + region.name + '</option>';
			}
		}
		text += '</select>';
		document.getElementById('CSMPW_92489548_REGIONS').innerHTML = text;

		text = '<select id="CSMPW_92489548_CITY">';
		for(var a = 0; a < regionsCities.city.length; a++)
		{
			var	city = regionsCities.city[a];
			if(city.id != iCityId)
			{
				text += '<option value="' + city.id + '">' + city.name + '</option>';
			}
			else
			{
				text += '<option value="' + city.id + '" selected="selected">' + city.name + '</option>';
			}
		}
		text += '</select>';
		document.getElementById('CSMPW_92489548_CITIES').innerHTML = text;
		document.getElementById('CSMPW_92489548').style.display = 'inline';
	}
	else
	{
		alert(iResponse.msg);
	}
	loadingMyPlaceWindow = false;
}

function showMyPlaceWindow(iRegionId, iCityId, iEvent)
{
	if(!loadingMyPlaceWindow)
	{
		loadingMyPlaceWindow = true;
		document.getElementsByTagName('body')[0].style.cursor = 'progress';

		closeWindow();
	
		var	windows = document.getElementById('windows');
		var params = new WindowParams();

		var	text = '<div id="CSMPW_92489548" style="display:none;position:absolute;overflow:hidden;left:' + (params.scrollLeft + iEvent.clientX - 400) + 'px;top:' + iEvent.clientY + 'px">';
		text += '<div class="top515">Ändra din plats</div>';
		text += '<div class="body515"><div class="text515">';
		text += '<p>Välj din plats nedanför och klicka på <em>Ändra</em> för att ändra din plats.<br />';
		text += '<b>OBS:</b> Sidan kommer att laddas om efter att du har tryckt på <em>Ändra</em>.</p>';
		text += '<table>';
		text += '<tr><th>Län:</th><td id="CSMPW_92489548_REGIONS"></td></tr>';
		text += '<tr><th>Stad:</th><td id="CSMPW_92489548_CITIES"></td></tr>';
		text += '</table>';
		text += '<div style="text-align:right"><input type="button" onclick="closeWindow()" value="Avbryt" />';
		text += '<input type="button" onclick="updateMyPlace()" value="Ändra" /></div>';
		text += '</div></div><div class="bottom515"></div></div>';
		windows.innerHTML += text;
	
		getRegionsAndCities(iRegionId, iCityId, callbackGRAC);
	}
}

function isValidEMail(iMail)
{
	return new RegExp('^\\S+@\\S+\\.[a-z]+$', 'i').test(trim(iMail));
}

function isHTMLSafe(iString)
{
	return !new RegExp('[<>&"\']').test(iString);
}

function trim(iString)
{
	return iString.replace(/^\s+|\s+$/g, '');
}

function xhtmlEncode(iString)
{
	var	retString = '';

	for(var a = 0; a < iString.length; a++)
	{
		var	char = iString.charAt(a);

		switch(char)
		{
			case '<':
				retString += '&lt;';
				break;
	
			case '>':
				retString += '&gt;';
				break;
	
			case '&':
				retString += '&amp;';
				break;
	
			case '"':
				retString += '&quot;';
				break;
	
			case '\'':
				retString += '&#39;';
				break;
	
			case '\r':
				if(iString.charAt(a + 1) == '\n')
				{
					a++;
				}
				retString += '<br />';
				break;
	
			case '\n':
				retString += '<br />';
				break;
	
			default:
				retString += char;
				break;
		}
	}
	return retString;
}

function xhtmlDecode(iString)
{
	var	retString = '';

	for(var a = 0; a < iString.length; a++)
	{
		var	char = iString.charAt(a);

		switch(char)
		{
			case '&':
				if(iString.indexOf('&lt;', a) != -1)
				{
					retString += '<';
					a += 3;
				}
				else if(iString.indexOf('&gt;', a) != -1)
				{
					retString += '>';
					a += 3;
				}
				else if(iString.indexOf('&amp;', a) != -1)
				{
					retString += '&';
					a += 4;
				}
				else if(iString.indexOf('&quot;', a) != -1)
				{
					retString += '"';
					a += 5;
				}
				else if(iString.indexOf('&#39;', a) != -1)
				{
					retString += '\'';
					a += 4;
				}
				break;

			case '<':
				if(iString.indexOf('<br />', a) != -1)
				{
					retString += '\r\n';
					a += 5;
				}
				break;

			default:
				retString += char;
				break;
		}
	}
	return retString;
}

function setFocus(iObjectId)
{
	document.getElementById(iObjectId).focus();
}

function select(iObjectId)
{
	document.getElementById(iObjectId).select();
}

function callbackDO(iObjectId, iFadeValue, iFadeStep)
{
	var	object = document.getElementById(iObjectId);

	if(iFadeValue <= 0)
	{
		object.parentNode.removeChild(object);
	}
	else
	{
		iFadeValue -= iFadeStep;
		object.style.opacity = iFadeValue;
		object.style.filter = 'alpha(opacity=' + (iFadeValue * 100.0) + ')';
		setTimeout("callbackDO('" + iObjectId + "'," + iFadeValue + "," + iFadeStep + ")",100);
	}
}

function deleteObject(iObjectId, iStartMS, iLengthMS)
{
	var	fadeValue = 1.0;
	var	fadeStep = 100.0 / iLengthMS;

	setTimeout("callbackDO('" + iObjectId + "'," + fadeValue + "," + fadeStep + ")",iStartMS);
}

function WindowParams()
{
	this.absoluteCenterX;
	this.absoluteCenterY;
	this.centerX;
	this.centerY;
	this.scrollLeft = 0;
	this.scrollTop = 0;
	this.width = 0;
	this.height = 0;

	// Scrolling
	if(typeof(window.pageYOffset) == 'number')
	{
		// Netscape compliant
		this.scrollLeft = window.pageXOffset;
		this.scrollTop = window.pageYOffset;
	}
	else if(document.body && (document.body.scrollLeft || document.body.scrollTop))
	{
		// DOM compliant
		this.scrollLeft = document.body.scrollLeft;
		this.scrollTop = document.body.scrollTop;
	}
	else if(document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop))
	{
		// IE6 standards compliant mode
		this.scrollLeft = document.documentElement.scrollLeft;
		this.scrollTop = document.documentElement.scrollTop;
	}

	// Size of window
	if(typeof(window.innerWidth) == 'number')
	{
		// Non-IE
		this.width = window.innerWidth;
		this.height = window.innerHeight;
	}
	else if(document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight))
	{
		// IE 6+ in 'standards compliant mode'
		this.width = document.documentElement.clientWidth;
		this.height = document.documentElement.clientHeight;
	}

	this.absoluteCenterX = this.width / 2;
	this.absoluteCenterY = this.height / 2;
	this.centerX = this.scrollLeft + (this.width / 2);
	this.centerY = this.scrollTop + (this.height / 2);
}

function Point(iX, iY)
{
	this.x = iX;
	this.y = iY;
}