function check_save_ad(result, xmlhttp, link) {
	
	if (result) {
		var display_message = document.getElementById("save_ad_msg");
		
		if (result.match(/Status:SAVED_AD/)) {
			display_message.className = "okey";
		}
		display_message.style.display = "block";
	} else if (xmlhttp.responseText.indexOf('<!DOCTYPE') >= 0) {
		var newbody = xmlhttp.responseText;
		
		/*
		 * Since we can't intercept 302 responses from the server
		 * indicating that something strange has happened (eg.
		 * that we need to log in again) because xmlhttp automagically
		 * follows the redirect, we try to detect that this has happened
		 * through finding a "<!DOCTYPE" in the document and replacing
		 * our body with what appears to be the body of the document
		 * we got.
		 */

		newbody = newbody.replace(/(.|\n)*\<body\>/, "");
		newbody = newbody.replace(/\<\/body\>[^<]*\<\/html\>[^<]*$/m, "");
		document.body.innerHTML = newbody;
		return;
	} 
}

function save_ad(link) {
	var get = link + "&ax=1";
	var post = '';
	
	ajax_request(get, post, check_save_ad, link, false, "GET");

	return false;
}

function aw_submit_result(result, xmlhttp, cookiedomain) {
	if (!result) {
		result = new Array();
		result['status'] = 'ERROR';
	}
	var display_message = document.getElementById("save_ad_msg");
	if (result['status'] == 'OK') {
		// Show that we saved the ad
		display_message.className = "okey nohistory";
		display_message.style.display = "block";
		
		// Check if we have a cookie. If not, set cookie with uuid in respons
		var uuid = getCookie('adw');
		if (uuid == null)
			uuid = result['watch_unique_id'];
		
		setCookie('adw', uuid, result['cookie_expire_days'], '/', cookiedomain);
		setCookie('adw_ic', 1, result['cookie_expire_days'], '/', cookiedomain);
	} else {
		if (result['error']) {
			display_message.innerHTML = result['error'];
		} else {
			display_message.innerHTML = js_info['SAVE_AD_FAIL'];
		}
		display_message.className = "error";
		display_message.style.display = "block";
	}
}

function submit_aw(id, cookiedomain) {
	var post = '';
	var uuid = getCookie('adw');
	if (adwatch.save_ads.cookie_storage == 1) {
		var save_ads_cookie = getCookie(adwatch.save_ads.cookie_name);
		if (save_ads_cookie && save_ads_cookie.length)
			save_ads_cookie += ',' + id;
		else
			save_ads_cookie = id;

		setCookie(adwatch.save_ads.cookie_name, save_ads_cookie, 180, '/', cookiedomain);
	} else {
		post += 'aid=' + id + '&';
		if (uuid != null)
			post += 'uuid=' + uuid + '&';
		ajax_request("/send_aw", post, aw_submit_result, cookiedomain);
	}
	return false;
}

function check_sendtip(result, xmlhttp, form) {
	var message = false;
	
	if (result) {
		var display_message = document.getElementById("sendtip_error");
		
		if (result.match(/Status:TRANS_OK/)) {
			document.getElementById("tip_email").value = "";
			display_message.innerHTML = js_info['TIP_SENT'];
			display_message.className = "okey";
			setFocus("tip_email");
		} else {
			var error_msg;

			if (error_msg = result.match(/Name:(.*?);/)) {
				display_message.innerHTML = error_msg[1];
				display_message.className = "error";
			} else if (error_msg = result.match(/Email:(.*?);/)) {
				display_message.innerHTML = error_msg[1];
				display_message.className = "error";
			} else {
				document.getElementById("tip_email").value = "";
				display_message.innerHTML = js_info['TIP_SENT'];
				display_message.className = "okey";
			}	
		}
		display_message.style.display = "block";
	} else if (xmlhttp.responseText.indexOf('<!DOCTYPE') >= 0) {
		var newbody = xmlhttp.responseText;
		
		/*
		 * Since we can't intercept 302 responses from the server
		 * indicating that something strange has happened (eg.
		 * that we need to log in again) because xmlhttp automagically
		 * follows the redirect, we try to detect that this has happened
		 * through finding a "<!DOCTYPE" in the document and replacing
		 * our body with what appears to be the body of the document
		 * we got.
		 */

		newbody = newbody.replace(/(.|\n)*\<body\>/, "");
		newbody = newbody.replace(/\<\/body\>[^<]*\<\/html\>[^<]*$/m, "");
		document.body.innerHTML = newbody;
		return;
	} 
}

function send_tip(form) {
	var get = '/sendtip.htm';
	var post = '';
	var button = false;

	for (var i = 0; i < form.elements.length; i++) {
		var temp = form.elements[i];

		// post += temp.name + '=' + escape(temp.value.replace(/[\u0100-\uFFFF]/g, '?')) + '&';
		post += temp.name + '=' + escape(temp.value).replace(/%u[0-9][0-9][0-9][0-9]/g, '%3F') + '&';
	}
	
	ajax_request(get, post, check_sendtip, form, false);

	return false;
}

function show_mail_form(scroll) {
	/* Allowed browsers */
	if (!BrowserDetect.isValid([
					{agent: 'Firefox', version: '1.5'},
					{agent: 'Explorer', version: '5.5'},
					{agent: 'Safari', version: '412.2'},
					{agent: 'Opera', version: '8'}
				])) return true;
	if (!ajax_check())
		return true;

	var menu = document.getElementById("adview_menu");
	var mailto = document.getElementById("Mailto");
	
	mailto.style.display = "block";
	menu.style.display = "none";

	showElement("TipBox", false);
	setFocus("yourName");

	if (scroll)
		scrollToObject(mailto);
	return false;
}

function hide_mail_form() {
	var menu = document.getElementById("adview_menu");
	var mailto = document.getElementById("Mailto");

	mailto.style.display = "none";
	menu.style.display = "block";
	return false;
}

function ar_cancel(form) {
	var reply = document.getElementById("ar_reply");

	reply.className = "";
	reply.innerHTML = "";
	//form.reset();
	errdivs = getElementsByClassName(form, 'DIV', 'error');

	showElement("TipBox", true);

	for (var idx in errdivs) {
		errdivs[idx].style.display = 'none';
	}
	return hide_mail_form();
}

function ar_submit_result(result, xmlhttp, form) {
	hideProgressBar();

	if (!result || !result['status']) {
		result = new Array();
		result['status'] = 'ERROR';
		delete form.onsubmit;
		form.action = document.getElementById("ar_link").href.replace('/ar', '/ar/send');
		form.submit();
		return;
	}
	
	if (result['status'] == 'OK') {
		var reply = document.getElementById("ar_reply");

		reply.className = "okey";
		reply.innerHTML = js_info['MAIL_SENT'];
		hide_mail_form();
		form.reset();
	} else {
		for(var key in result) {
			var err = document.getElementById('ar_err_' + key);

			if (err) {
				err.innerHTML = result[key];
				err.style.display = 'block';
			}
		}
	}
}

function ar_submit(form) {
	var post = '';

	for (var i = 0; i < form.elements.length; i++) {
		var temp = form.elements[i];

		if (temp.name && (temp.type != "checkbox" || temp.checked == true)) {
			// post += temp.name + '=' + escape(temp.value.replace(/[\u0100-\uFFFF]/g, '?')) + '&';
			post += temp.name + '=' + escape(temp.value).replace(/%u[0-9][0-9][0-9][0-9]/g, '%3F') + '&';
		}
	}
	

	errdivs = getElementsByClassName(form, 'DIV', 'error');
	for (var idx in errdivs) {
		errdivs[idx].style.display = 'none';
	}
	ajax_request("oglas.asp", post, ar_submit_result, form);
	return false;
}

function calendar_next_month() {
	if (calendar_month >= 12) {
		calendar_year++;
		calendar_month = 1;
	} else
		calendar_month++;
	calendar_update();
}

function calendar_prev_month() {
	if (calendar_month <= 1) {
		calendar_year--;
		calendar_month = 12;
	} else
		calendar_month--;
	calendar_update();
}

/**
  * Returns the week number for this date. dowOffset is the day of week the week
  * "starts" on for your locale - it can be from 0 to 6. If dowOffset is 1 (Monday),
  * the week returned is the ISO 8601 week number.
  * @param int dowOffset
  * @return int
  */
Date.prototype.getWeek = function (dowOffset) {
	/*getWeek() was developed by Nick Baicoianu at MeanFreePath: http://www.meanfreepath.com */

	var newYear = new Date(this.getFullYear(),0,1);
	var day = newYear.getDay() - dowOffset; //the day of week the year begins on
	day = (day >= 0 ? day : day + 7);
	var daynum = Math.floor((this.getTime() - newYear.getTime() -
				(this.getTimezoneOffset()-newYear.getTimezoneOffset())*60000)/86400000) + 1;
	var weeknum;
	//if the year starts before the middle of a week
	if(day < 4) {
		weeknum = Math.floor((daynum+day-1)/7) + 1;
		if(weeknum > 52) {
			nYear = new Date(this.getFullYear() + 1,0,1);
			nday = nYear.getDay() - dowOffset;
			nday = nday >= 0 ? nday : nday + 7;
			/*if the next year starts before the middle of
			  the week, it is week #1 of that year*/
			weeknum = nday < 4 ? 1 : 53;
		}
	} else {
		weeknum = Math.floor((daynum+day-1)/7);
		if (weeknum == 0) {
			var d = newYear;
			d.setDate(0);
			return d.getWeek(dowOffset);
		}
	}
	return weeknum;
};

function days_in_month(year, mon) {
	switch (mon) {
	case 1:
	case 3:
	case 5:
	case 7:
	case 8:
	case 10:
	case 12:
		dim = 31;
		break;
	case 2:
		if (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0))
			dim = 29;
		else
			dim = 28;
		break;
	default:
		dim = 30;
		break;
	}
	return dim;
}

function calendar_update() {
	var d = new Date();

	d.setFullYear(calendar_year, calendar_month - 1, 1);
	var week = d.getWeek(1);
	var wday = d.getDay();
	var dim = days_in_month(calendar_year, calendar_month);

	document.getElementById('awc_month_name').innerHTML = month_short_names[d.getMonth()].substr(0, 3) + " -" + String(d.getFullYear()).slice(2);

	if (wday == 0)
		d.setDate(d.getDate() - 6);
	else
		d.setDate(d.getDate() - (wday - 1));

	var weekstoshow;
	if (d.getMonth() + 1 == 2 && d.getDate() == 1 && (d.getFullYear() % 4 != 0 || (d.getFullYear() % 100 == 0 && d.getFullYear() % 400 != 0)))
		weekstoshow = 4;
	else if ((wday == 0 && d.getMonth() + 1 != 1) || (wday == 6 && dim == 31))
		weekstoshow = 6;
	else
		weekstoshow = 5;

	var tbody = document.createElement('tbody');
	for (var i = 0; i < weekstoshow; i++) {
		var matchre;
		var season;

		if (d.getMonth() + 1 == 12 && week == 1)
			matchre = new RegExp("(^|,)" + (d.getFullYear() + 1) + ":" + week + "(,|$)");
		else
			matchre = new RegExp("(^|,)" + d.getFullYear() + ":" + week + "(,|$)");

		if (matchre.test(available_weeks_peakseason))
			season = "awc_peak_season";
		else if (matchre.test(available_weeks_offseason) || matchre.test(available_weeks))
			season = "awc_off_season";
		else
			season = "awc_none";
		var tr = document.createElement('tr');
		var th = document.createElement('th');
		th.className = 'awc_week';
		th.innerHTML = 'v.' + week;
		tr.appendChild(th);
		
		var td = document.createElement('td');
		td.className = season;
		td.innerHTML = d.getDate();
		tr.appendChild(td);
		
		d.setDate(d.getDate() + 1);
		td = document.createElement('td');
		td.className = season;
		td.innerHTML = d.getDate();
		tr.appendChild(td);

		d.setDate(d.getDate() + 1);
		td = document.createElement('td');
		td.className = season;
		td.innerHTML = d.getDate();
		tr.appendChild(td);

		d.setDate(d.getDate() + 1);
		td = document.createElement('td');
		td.className = season;
		td.innerHTML = d.getDate();
		tr.appendChild(td);

		d.setDate(d.getDate() + 1);
		td = document.createElement('td');
		td.className = season;
		td.innerHTML = d.getDate();
		tr.appendChild(td);

		d.setDate(d.getDate() + 1);
		td = document.createElement('td');
		td.className = season;
		td.innerHTML = d.getDate();
		tr.appendChild(td);

		d.setDate(d.getDate() + 1);
		td = document.createElement('td');
		td.className = season;
		td.innerHTML = d.getDate();
		tr.appendChild(td);

		d.setDate(d.getDate() + 1);
		if (d.getMonth() + 1 == 1 && d.getDate() <= 4 || (d.getMonth() + 1 == 12 && d.getDate() >= 29))
			week = 1;
		else
			week++;
		tbody.appendChild(tr);
	}
	
	while ( document.getElementById("awc_table").childNodes.length != 0)
		document.getElementById("awc_table").removeChild(document.getElementById("awc_table").childNodes[0]);

	if (calendar_year == min_year && calendar_month == min_month)
		document.getElementById("awc_prev_arrow").style.display = 'none';
	else
		document.getElementById("awc_prev_arrow").style.display = 'block';
	
	if (calendar_year == min_year + 1 && calendar_month == min_month)
		document.getElementById("awc_next_arrow").style.display = 'none';
	else
		document.getElementById("awc_next_arrow").style.display = 'block';
	
	document.getElementById('awc_table').appendChild(tbody);
}

function show_destination_lastminute(self) {
	// Hide button
	var td = self.parentNode;
	td.innerHTML = '&nbsp;';

	// Show links
	var i = 5;
	var elem = false;
	while (elem = document.getElementById('destination_lastminute_' + i++)) {
		elem.className = elem.className.replace("Info", "");
	}
}

function toggle_experian(self) {
	if (getCookie('experian_all') == '1') {
		hide_experian(self);
	} else {
		show_experian(self);
	}
}

function show_experian(self) {
	// Hide button
	self.innerHTML = 'Visa mindre';

	// Show links
	var i = 3;
	var elem = false;
	while (elem = document.getElementById('experian_line_' + i++)) {
		elem.style.display = "list-item";
	}

	setCookie('experian_all', '1');
}

function hide_experian(self) {
	self.innerHTML = 'Visa mer';

	var i = 3;
	var elem = false;
	while (elem = document.getElementById('experian_line_' + i++)) {
		elem.style.display = "none";
	}

	setCookie('experian_all', '0');
}

function print_ajax_redir_count() {
	ajax_request("/redir?s=inkclub_ad_printed&nc=1", null, print_callback, null, true, "GET");
}	

/* Dummy callback */
function print_callback(result, xmlhttp, link) {
}

