/**
 * coolio $(id,id,id,obj,obj,id) => array of objects!!!
 */
function $() {
	var elements = new Array();

	for(var i = 0; i < arguments.length; i++) {
		var element = arguments[i];
		if(typeof element == 'string') {
			element = document.getElementById(element);
		}

		if(arguments.length == 1) {
			return element;
		}

		elements.push(element);
	}

	return elements;
}

function flip_pic_selector(value) {
	if(value == 'summary' || value == 'imgsummary' || value == 'emailmap') {
		$('include_all_pics').disabled = true;
	}
	else {
		$('include_all_pics').disabled = false;
	}
}

/**
 *	mainFocus - focus on the main element of the page (id = FOCUS)
 */
function mainFocus() {
	var focEl = $('FOCUS');
	
	if(focEl) {
		focEl.focus();
	}
}


/**
 *	getTarget - finds the element an event happened upon
 */
function getTarget(e) {
	var targ;

	if(!e) {
		var e = window.event;
	}

	if(e.target) {
		targ = e.target;
	}
	else if(e.srcElement) {
		targ = e.srcElement;
	}

	if(targ.nodeType == 3) {// defeat Safari bug
		targ = targ.parentNode;
	}

	return targ;
}


/**
 *	getElementsByClassName - returns an array of elements of class strClassName
 */
function getElementsByClassName(oElm, strTagName, strClassName){
	var arrElements = (strTagName == "*" && document.all)? document.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	strClassName = strClassName.replace(/\-/g, "\\-");
	var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
	var oElement;
	for(var i=0; i<arrElements.length; i++){
		oElement = arrElements[i];
		if(oRegExp.test(oElement.className)){
			arrReturnElements[arrReturnElements.length] = oElement;
		}
	}
	return (arrReturnElements);
}


/**
 * addEvent with event caching - sweet - code by dustin diaz
 */
function addEvent( obj, type, fn ) {
	if(obj.addEventListener) {
		obj.addEventListener( type, fn, false );
		EventCache.add(obj, type, fn);
	}
	else if(obj.attachEvent) {
		obj["e"+type+fn] = fn;
		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
		obj.attachEvent( "on"+type, obj[type+fn] );
		EventCache.add(obj, type, fn);
	}
	else {
		obj["on"+type] = obj["e"+type+fn];
	}
}


var EventCache = function(){
	var listEvents = [];
	return {
		listEvents : listEvents,
		add : function(node, sEventName, fHandler){
			listEvents[listEvents.length] = arguments;
		},
		flush : function(){
			var i, item;
			for(i = listEvents.length - 1; i >= 0; i = i - 1){
				item = listEvents[i];
				if(item[0].removeEventListener){
					item[0].removeEventListener(item[1], item[2], item[3]);
				};
				if(item[1].substring(0, 2) != "on"){
					item[1] = "on" + item[1];
				};
				if(item[0].detachEvent){
					item[0].detachEvent(item[1], item[2]);
				};
				item[0][item[1]] = null;
			};
		}
	};
}();


/**
 *	Remove memory leaks from IE by removing leaked memory from each event handler
 */
addEvent(window,'unload',EventCache.flush);


/**
 *	Return size of viewport
 */
function getViewportSize() {
	var viewportSize = [0, 0];

	if(typeof window.innerWidth != 'undefined') {
		viewportSize = [
		window.innerWidth,
		window.innerHeight
		];
	}
	else if(typeof document.documentElement != 'undefined' && typeof document.documentElement.clientWidth != 'undefined' && document.documentElement.clientWidth != 0) {
		viewportSize = [
		document.documentElement.clientWidth,
		document.documentElement.clientHeight
		];
	}
	else {
		viewportSize = [
		document.getElementsByTagName('body')[0].clientWidth,
		document.getElementsByTagName('body')[0].clientHeight
		];
	}

	return viewportSize;
}


/**
 * XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 *
 * refreshContentTableHeight - used to resize content table if content height changes
 *
 * N.B. RUNS EVERY 400 MILLISECONDS!!!
 *
 * RUN FROM  'template.php'  IN  $ONLOAD_STR
 *
 * XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 */
var oldAllContentHeight = 0;  // set to zero so that when page loads will start cycle
function refreshContentTableHeight() {
	var allContentEl = $('all_content_container');

	if(allContentEl && (typeof allContentEl.clientHeight != 'undefined')) {
		var newAllContentHeight = allContentEl.clientHeight;

		if(newAllContentHeight != oldAllContentHeight) {
			setContentTableHeight();
			
			oldAllContentHeight = newAllContentHeight;  // for next run
		}

		setTimeout('refreshContentTableHeight()', 400);
	}
}


/**
 * setContentTableHeight - used to resize content table
 *
 * N.B. if the header and/or the footer height are changed fix the height values below accordingly
 */
function setContentTableHeight() {
	var viewportSize = getViewportSize();
	
	var headerEl = $('header');
	var contentTableEl = $('content_table');
	var footerEl = $('footer');

	if(contentTableEl && contentTableEl.style) {
		// get header height
		headerHeight = 0;
		if(headerEl) {
			headerHeight = headerEl.clientHeight;
		}
		
		// get footer height
		footerHeight = 0;
		if(footerEl) {
			footerHeight = footerEl.clientHeight;
		}
		
		// set content table height
		contentTableEl.style.height = parseInt(viewportSize[1] - headerHeight - footerHeight) + 'px';  // height values used here
		
		// redraw footer in correct place for IE and Safari
		if(footerEl && footerEl.style) {
			// N.B. MUST BE DONE IN THIS ORDER
			footerEl.style.display = 'none';  // hide footer first for safari
			var ignored = document.body.scrollHeight;  // needed so Safari recalculates height
			footerEl.style.bottom = '0px';  // put footer at bottom of new table height - for IE and Safari
			footerEl.style.display = 'block';  // show footer
		}
	}
}


function show_wf(showId, displayStr) {
	if(!displayStr) {
		displayStr = 'block';
	}

	var el = $(showId);

	if(el && el.style) {
		var s = el.style.display;

		if(s == '' || s == 'none') {
			el.style.display = displayStr;
		}
	}
}

/**
 * show
 */
function show(showId, displayStr) {
	if(!displayStr) {
		displayStr = 'block';
	}

	var el = $(showId);

	if(el && el.style) {
		var s = el.style.display;

		if(s == '' || s == 'none') {
			el.style.display = displayStr;
		}
	}
}


/**
 * showAll
 */
function showAll(showClass, displayStr, tag) {
	if(!displayStr) {
		displayStr = 'block';
	}

	if(!tag) {
		tag = 'div';
	}

	// hide all elements starting with hideClass
	showItems = getElementsByClassName(document.body, tag, showClass);

	for(i = 0; i < showItems.length; i++){
		var elClass = showItems[i];

		if(elClass.style) {
			elClass.style.display = displayStr;
		}
	}
}

// sort map
var onload_maponce = false;
function sort_map(){

	if(!onload_maponce) {
	 onload_maponce = true;
	 lrsmap = $create(LonRes.Map, 'lonresmap', null, null, $get("mymap"));
	}
}

function change_uri(tab)
{
  parent.location.hash = '#'+tab;
}

function check_uri_shortlist()
{
  var url = location.href;
  var x = url.split('#');
  var y = url.split('&map=');

  if(x[1] == 'list'){
     hide('search_tab_2'); 
	 show('search_tab_1'); 
	 hide('map_tab_1'); 
	 show('map_tab_2'); 
	 hide('map_container'); 
	 show('search_containertwo');
  }
  else if(x[1] == 'map' || y[1] == 'Results+as+Map') {
     hide('map_tab_2'); 
	 show('map_tab_1'); 
	 hide('search_tab_1'); 
	 show('search_tab_2'); 
	 hide('search_containertwo'); 
	 show('map_container'); 
	 sort_map();
  }
  else{
     hide('search_tab_2'); 
	 show('search_tab_1'); 
	 hide('map_tab_1'); 
	 show('map_tab_2'); 
	 hide('map_container'); 
	 show('search_containertwo');
  }

}

function check_uri()
{
  var url = location.href;
  var x = url.split('#');
  var y = url.split('&map=');

  if(x[1] == 'list'){
     hide('search_tab_2'); 
	 show('search_tab_1'); 
	 hide('map_tab_1'); 
	 show('map_tab_2'); 
	 hide('map_container'); 
	 show('search_containertwo');
	 show('hide_dropdown'); 
	 show('bottom_prev_next2'); 
	 show('top_prev_next2'); 
	 hide('map_num_results');
  }
  else if(x[1] == 'map' || y[1] == 'Results+as+Map') {
     hide('map_tab_2'); 
	 show('map_tab_1'); 
	 hide('search_tab_1'); 
	 show('search_tab_2'); 
	 hide('search_containertwo'); 
	 show('map_container'); 
	 sort_map();
	 hide('hide_dropdown'); 
	 hide('bottom_prev_next2'); 
	 hide('top_prev_next2'); 
	 show('map_num_results');
  }
  else{
     hide('search_tab_2'); 
	 show('search_tab_1'); 
	 hide('map_tab_1'); 
	 show('map_tab_2'); 
	 hide('map_container'); 
	 show('search_containertwo');
	 show('hide_dropdown'); 
	 show('bottom_prev_next2'); 
	 show('top_prev_next2'); 
	 hide('map_num_results');
  }

}

/**
 * hide
 */
function hide(hideId) {	
	var el = $(hideId);

	if(el && el.style) {
		var s = el.style.display;

		if(s == '' || s == 'none') {
			// do nothing
		}
		else {
			el.style.display = 'none';
		}
	}
}

/**
 * hide due to the duplication of the function name
 */
function hide_wf(hideId) {
	var el = $(hideId);

	if(el && el.style) {
		var s = el.style.display;

		if(s == '' || s == 'none') {
			// do nothing
		}
		else {
			el.style.display = 'none';
		}
	}
}


/**
 * hideAll
 */
function hideAll(hideClass, tag) {
	if(!tag) {
		tag = 'div';
	}

	// hide all elements starting with hideClass
	hideItems = getElementsByClassName(document.body, tag, hideClass);

	for(i = 0; i < hideItems.length; i++){
		var elClass = hideItems[i];

		if(elClass.style) {
			elClass.style.display = 'none';
		}
	}
}


/**
 * toggle - assumes element is display:block when not display:none
 *          DO NOT USE WITH ELEMENTS THAT NEED TO BE display:inline;
 */
function toggle(toggleId, displayStr) {
	if(!displayStr) {
		displayStr = 'block';
	}

	var el = $(toggleId);

	toggle_el(el, displayStr);
}

function toggle_wf(toggleId, displayStr) {
	if(!displayStr) {
		displayStr = 'block';
	}

	var el = $(toggleId);

	toggle_el(el, displayStr);
}

function toggle_el(el, displayStr) {
	if(!displayStr) {
		displayStr = 'block';
	}

	if(el && el.style) {
		var s = el.style.display;
		if(s == '' || s == 'none') {
			el.style.display = displayStr;
		}
		else {
			el.style.display = 'none';
		}
	}
}


/**
 * toggleHideAllShowOne - hide all elements with class hideClass and show elements with id showId
 */
function toggleHideAllShowOne(hideClass, showId) {
	hideAll(hideClass);

	show(showId);
}


var timer = null;
var lastElem = null;
function delayed_toggle(elem,millis) {
	if(timer) {
		window.clearInterval(timer);
		lastElem.style.display = 'block';
	}
	if(elem) {
		var callback = function() {
			toggle_el(elem);
		}
		timer = window.setInterval(callback,millis);
	}
	lastElem = elem;
}


/**
 * clearHiddenFormInputs - clear all values for form inputs that are display:none;
 */
function clearHiddenFormInput(parentId, inputId) {
	var parentEl = $(parentId);  // id of element to look at so see if it is display:none
	var inputEl = $(inputId);  // id of input element

	if((parentEl.style.display == 'none') && (inputEl)) {
		inputEl.value = '';
	}
}


/**
 * setInputValue
 */
function setInputValue(inputId, newValue) {
	var inputEl = $(inputId);  // id of input element

	if(inputEl) {
		inputEl.value = newValue;
	}
}


/**
 * setCheckboxChecked
 */
function setCheckboxChecked(inputId, inputChecked) {
	var inputEl = $(inputId);  // id of input element

	if(inputEl) {
		inputEl.checked = inputChecked;
	}
}


/**
 * setRadioValue
 */
function setRadioValue(radioName, newValue) {
	var radioObj = document.getElementsByName(radioName);
	
	if(radioObj) {		
		for(var i = 0; i < radioObj.length; i++) {
			radioObj[i].checked = false;
			
			if(radioObj[i].value == newValue.toString()) {
				radioObj[i].checked = true;
			}
		}
	}
}


/**
 * getRadioValue
 */
function getRadioValue(radioName) {
	var radioObj = document.getElementsByName(radioName);
	
	if(radioObj) {		
		for(var i = 0; i < radioObj.length; i++) {
			if(radioObj[i].checked) {
				return radioObj[i].value;
			}
		}
	}
	
	return false;
}


/**
 * setSelectValue
 */
function setSelectValue(selectId, newValue) {
	var selectEl = $(selectId);
	var selectedInd;
	
	if(selectEl){
		for(var i=0; i<selectEl.length; i++){
			if(selectEl.options[i].value == newValue.toString()){
				selectedInd = i;
			}
			else if(parseFloat(selectEl.options[i].value) == parseFloat(newValue)) {
				selectedInd = i;
			}
		}
		
		selectEl.selectedIndex = selectedInd;
	}
}


/**
 * getSelectLabel
 */
function getSelectLabel(selectId) {
	var selectEl = $(selectId);
	var selectedInd;
	
	if(selectEl){
		for(var i=0; i<selectEl.length; i++){
			if(selectEl.options[i].index == selectEl.selectedIndex){
				return selectEl.options[i].innerHTML;
			}
		}
	}
	
	return false;
}


/**
 * setSelectIndex
 */
function setSelectIndex(selectId, newIndex) {
	var selectEl = $(selectId);  // id of input element

	if(selectEl) {
		selectEl.options[newIndex].selected = true;
	}
}


/**
 * simulate a click using Dom methods
 * found here: http://developer.mozilla.org/en/docs/DOM:document.createEvent
 */
function simulateClick(cb) {
	// Mozilla and all PROPER browsers
	if(document.createEvent) {
		var evt = document.createEvent("MouseEvents");

		evt.initEvent("click", false, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);

		cb.dispatchEvent(evt);
	}
	// IE
	else {
		cb.click();
	}
}


/**
 *	Check/Uncheck Magic Checkbox
 */
function magicCheckbox(boxId, setChecked) {
	// check/uncheck checkbox
	var checkboxElm = $(boxId);
	if(checkboxElm) {
		if((setChecked === 0) || (setChecked === 1)) {
			checkboxElm.value = (setChecked) ? 1 : 0;
			checkboxElm.checked = setChecked;
		}
		else {
			checkboxElm.value = (checkboxElm.value > 0) ? 0 : 1;
			checkboxElm.checked = (checkboxElm.value > 0) ? true : false;
		}

		// get image path
		var imgPath = (checkboxElm.value > 0) ? '_img1' : '_img0';
		var imgElm = $(boxId + imgPath);
		var imgSrc = imgElm.value;

		// change image
		var imgCheckboxElm = $(boxId + '_magic_checkbox_img');
		imgCheckboxElm.src = imgSrc;
	}
}


/**
 * Cookie manipulation functions
 */
function getCookie(NameOfCookie) {
	if(document.cookie.length > 0) {
		begin = document.cookie.indexOf(NameOfCookie+"=");
		if(begin != -1) {
			begin += NameOfCookie.length+1;
			end = document.cookie.indexOf(";", begin);
			if(end == -1) {
				end = document.cookie.length;
			}
			return unescape(document.cookie.substring(begin, end));
		}
	}

	return null;
}


function setCookie(NameOfCookie, value, expiredays) {
	var argumentNames = Array(null, null, null, 'path', 'domain');
	valueString = escape(value);
	
	if(expiredays != null) {
		var ExpireDate = new Date ();
		ExpireDate.setTime(ExpireDate.getTime() + (expiredays * 24 * 3600 * 1000));
		valueString += "; expires=" + ExpireDate.toGMTString();
	}
	
	for(var i = 3; i < arguments.length; i++) {
		valueString += '; ' + argumentNames[i] + '=' + arguments[i];
	}
	
	document.cookie = NameOfCookie + "=" + valueString;
}


function delCookie(NameOfCookie) {
	if(getCookie(NameOfCookie)) {
		document.cookie = NameOfCookie + "=" + "; expires=Thu, 01-Jan-70 00:00:01 GMT";
	}
}


function sleep(millis) {
	var date = new Date();
	var curDate = null;

	do {
		curDate = new Date();
	} while(curDate-date < millis);
}







//-----------------------------------------------------------------------------------------------------------
// FOLLOWING USED TO BE IN global.js
//-----------------------------------------------------------------------------------------------------------







var opshow = false;
var showing_1 = false;
var showing_2 = false;
var slist_changes = new Array();
var slist_include_changes = new Array();
var formz = new Array();


function dropdown_onchange(fieldname, hiddenfield) {
	var sel = $(fieldname);

	if(!sel) {
		return;
	}

	var hid = $(hiddenfield);
	if(!hid) {
		return;
	}

	if(sel.value == 'between') {
		hid.style.visibility = 'visible';
	}
	else {
		hid.style.visibility = 'hidden';
	}
}


function email_dropdown_onChange(elm, sales_not_lettings) {
	tmp_to_field = $('temporary_to_field');
	to_field = $('to_field');

	if(elm.value == 'other') {
		if(sales_not_lettings>0) {
			sales_select_customer(false,false,'customer_name','to_field','selected_shortlist');
		}
		else {
			lettings_select_customer(false,false,'customer_name','to_field','selected_shortlist');
		}
		elm.value = '';
	}

	if(tmp_to_field.value) {
		to_field.value = tmp_to.value;
		tmp_to_field.value = false;
		to_field.value = tmp_to.value;
	}

	if(elm.selectedIndex) {
		to_field.value = elm.value;
		elm.selectedIndex=0;
	}

	if(($('customer_id')) && ($('to_field'))) {
		email_dropdown_setCustomerId($('customer_id'), $('to_field'));
	}
}


function sms_dropdown_onChange(elm, sales_not_lettings) {
	tmp_to_field = $('temporary_msisdn');
	to_field = $('msisdn');

	if(elm.value == 'other') {
		if(sales_not_lettings>0) {
			sales_select_customer(false,false,'customer_name','msisdn','selected_shortlist');
		}
		else {
			lettings_select_customer(false,false,'customer_name','msisdn','selected_shortlist');
		}
		elm.value = '';
	}

	if(tmp_to_field.value) {
		to_field.value = tmp_to.value;
		tmp_to_field.value = false;
		to_field.value = tmp_to.value;
	}

	if(elm.selectedIndex) {
		to_field.value = elm.value;
		elm.selectedIndex = 0;
	}

	if(($('customer_id')) && ($('to_field'))) {
		email_dropdown_setCustomerId($('customer_id'), $('to_field'));
	}
}


function email_dropdown_setCustomerId(customer_id_field, to_field) {
	alert(to_field.value);
	
	var splitted_elm = to_field.value.split(';');
	if(splitted_elm.length == 2) {
		customer_id_field.value = splitted_elm[0];
		to_field.value = splitted_elm[1];
	}
	else {
		if(customer_id_field) {
			customer_id_field.value = 0;
		}
	}
}


function shortlist_onChange(obj, sl ,sl_id) {
	if(!sl_id) {
		sl_id = 0;
	}

	if(!slist_changes[sl_id]) {
		slist_changes[sl_id]=new Array();
	}

	slist_changes[sl_id][obj.id]= obj.checked ? 1 : 0;
	var str = "slistchanges=";
	for(var shortlist_id in slist_changes) {
		var this_shortlist = slist_changes[shortlist_id];
					
		for(var checkbox_id in this_shortlist) {
			var parts_str = checkbox_id.substring(2);
									// Checks if the string is a minimum of 40 chars which SHA1 sums are...
			if(parts_str.length < 40) {
				continue;
			}
			// if parts_str DOES NOT already contain the shortlist id - append it
			if(parts_str.indexOf('_') == -1) {
				str += parts_str + '_' + shortlist_id + '_' + sl + this_shortlist[checkbox_id] + ',';
			}
			else {
				str += parts_str + '_' + sl + this_shortlist[checkbox_id] + ',';
			}
		}
	}
	document.cookie = str;
}


function landregistry_shortlist_onChange(obj) {
	var change = obj.checked ? 1 : 0;
	var destination = "/landregistry_shortlist_update.php?update=" + obj.id.substr(3) + "&change=" + change;
	frames['shortlist_helper'].location.href=destination;
}


function shortlist_include_onChange(obj, sl, sl_id) {
	slist_include_changes[obj.id] = obj.checked?1:0;
	var str = "slist_include_changes=";

	for(var i in slist_include_changes) {
		str += i.substring(6) + '_' + sl_id + '_'+ sl + slist_include_changes[i] + ',';
	}

	document.cookie = str;
}


function shortlist_redirect(slistVal, redirect) {
	document.cookie = "slistchanges=" + slistVal;

	window.location = redirect;
}


function open_and_submit(frm,id) {
	newwindow = window.open('', id, 'width=680,height=500,resizable=yes,scrollbars=yes,titlebar=yes');
	frm.target = id;
	formz[id] = frm;
	setTimeout("formz['"+id+"'].submit()", 250);

	if(window.focus) {
		newwindow.focus();
	}

	return false;
}


function popup_minibox(minibox, name, options_hash) {
	var url_str = '/popup.php/' + minibox;

	var option_array = new Array();
	for(opt in options_hash) {
		if(options_hash[opt] == true) {
			option_array.push(opt)
		}
		else {
			option_array.push(opt + '=' + options_hash[opt]);
		}
	}

	var win = window.open(url_str, name || 'popup_' + minibox, option_array.join(','));
}


function set_today(date_prefix) {
	var now = new Date();
	//
	//setup current date to tomorrow's date if the
	//new instruction is created after 4pm. 
	//
	var hours = now.getHours();
	var four_oclock = 16;

	if(hours >= four_oclock){
		now = new Date(now.getTime() + 86400000+1);
		var day = now.getDate();
	} 

	var sel, opt;

	if(sel = $(date_prefix+'_d')) {
		if(opt = $(date_prefix+'_d'+now.getDate())) {
			sel.selectedIndex = opt.index;
		}
	}

	if(sel = $(date_prefix+'_m')) {
		if(opt = $(date_prefix+'_m'+(now.getMonth()+1))) {
			sel.selectedIndex = opt.index;
		}
	}

	if(sel = $(date_prefix+'_y')) {
		if(opt = $(date_prefix+'_y'+now.getFullYear())) {
			sel.selectedIndex = opt.index;
		}
	}

	if(sel = $(date_prefix+'_h')) {
		if(opt = $(date_prefix+'_h'+now.getHours())) {
			sel.selectedIndex = opt.index;
		}
	}

	if(sel = $(date_prefix+'_n')) {
		min = now.getMinutes();
		min = min - (min % 5) + 5;

		if(opt = $(date_prefix+'_n'+ min)) {
			sel.selectedIndex = opt.index;
		}
	}
}


function get_sortable_date(_date) {
	var yr = _date.getFullYear();
	var mn = _date.getMonth() + 1;
	var dy = _date.getDate();

	if(mn < 10) {
		mn = '0' + mn;
	}
	if(dy < 10) {
		dy = '0' + dy;
	}

	return '' + yr + mn + dy;
}


function set_tomorrow(date_prefix, date) {
	var now = null;

	if(!date) {
		now = new Date();
	}
	else {
		now = new Date(date);
	}

	var wd = now.getDay();

	var hours = now.getHours();
	var mins = now.getMinutes();
	var secs = now.getSeconds();
	var time_exact = hours + (mins/60) + (secs/3600);
	var twenty_four_hrs = 3600000 * 24;
	var time_tomorrow = twenty_four_hrs - (time_exact*3600000);

	if(wd==5) {
		//now = new Date(now.getTime() + 86400000*3);
    now = new Date(now.getTime() + 86400000*2 + time_tomorrow);
		if(isBankHoliday(get_sortable_date(now))) {
			set_tomorrow(date_prefix,now.getTime());
			return;
		}
	}
	else if(wd==6) {
		//now = new Date(now.getTime() + 86400000*2);
    now = new Date(now.getTime() + 86400000 + time_tomorrow);
    if(isBankHoliday(get_sortable_date(now))) {
			set_tomorrow(date_prefix,now.getTime());
			return;
		}
	}
	else {
		//now = new Date(now.getTime() + 86400000);
		now = new Date(now.getTime() + time_tomorrow);
		if(isBankHoliday(get_sortable_date(now))) {
			set_tomorrow(date_prefix,now.getTime());
			return;
		}
	}

	var sel, opt;

	if(sel = $(date_prefix+'_d')) {
		if(opt = $(date_prefix+'_d'+now.getDate())) {
			sel.selectedIndex = opt.index;
		}
	}

	if(sel = $(date_prefix+'_m')) {
		if(opt = $(date_prefix+'_m'+(now.getMonth()+1))) {
			sel.selectedIndex = opt.index;
		}
	}

	if(sel = $(date_prefix+'_y')) {
		if(opt = $(date_prefix+'_y'+now.getFullYear())) {
			sel.selectedIndex = opt.index;
		}
	}

	if(sel = $(date_prefix+'_h')) {
		if(opt = $(date_prefix+'_h'+now.getHours())) {
			sel.selectedIndex = opt.index;
		}
	}

	if(sel = $(date_prefix+'_n')) {
		if(opt = $(date_prefix+'_n'+now.getMinutes())) {
			sel.selectedIndex = opt.index;
		}
	}
}


function isBankHoliday(inp) {

				// The same list is maintained in includes/functions/time.php
	var bankHolidays = {
	 "20070101" : "New Year's Day",
				 "20080101" : "New Year's Day",
				 "20090101" : "New Year's Day",
				 "20100101" : "New Year's Day",
				 "20070406" : "Good Friday",
				 "20080321" : "Good Friday",
				 "20090410" : "Good Friday",
				 "20100402" : "Good Friday",
				 "20070409" : "Easter Monday",
				 "20080324" : "Easter Monday",
				 "20090413" : "Easter Monday",
				 "20100405" : "Easter Monday",
				 "20070507" : "Early May Bank Holiday",
				 "20080505" : "Early May Bank Holiday",
				 "20090504" : "Early May Bank Holiday",
				 "20100503" : "Early May Bank Holiday",
				 "20070528" : "Spring Bank Holiday",
				 "20080526" : "Spring Bank Holiday",
				 "20090525" : "Spring Bank Holiday",
				 "20100503" : "Spring Bank Holiday",
				 "20070827" : "Summer Bank Holiday",
				 "20080825" : "Summer Bank Holiday",
				 "20090831" : "Summer Bank Holiday",
				 "20100830" : "Summer Bank Holiday",
				 "20071225" : "Christmas Day",
				 "20081225" : "Christmas Day",
				 "20091225" : "Christmas Day",
				 "20101225" : "Christmas Day",
				 "20071226" : "Boxing Day",
				 "20081226" : "Boxing Day",
				 "20091226" : "Boxing Day",
				 "20101226" : "Boxing Day",
				 "20101227" : "Substitute Bank Holiday in lieu of 26th",
				 "20101228" : "Substitute Bank Holiday in lieu of 25th"
	};

	return !!(bankHolidays[inp]);
}


function transfer_shortlist_form_onChange(action, sales_not_lettings) {
	thisform = document.shortlist_form;

	pseudo_customer_id = thisform.pseudo_transfer_to_customer_id;
	customer_id = thisform.transfer_to_customer_id;

	old_action  = thisform.action;
	old_onClick = thisform.onClick;

	thisform.action = action;
	thisform.target = '_self';
	thisform.onClick = function(){};

	is_true = 0;

	if(pseudo_customer_id.value == 'other') {
		if(sales_not_lettings>0) {
			sales_select_customer(thisform, "transfer_to_customer_id");
		}
		else {
			lettings_select_customer(thisform, "transfer_to_customer_id");
		}
	}
	else if(!pseudo_customer_id.value) {
		// Do nada.
	}
	else if(pseudo_customer_id.value > -1) {
		customer_id.value = pseudo_customer_id.value;

		thisform.submit();
	}
	else if(pseudo_customer_id.value == 'new') {
		customer_id.value = pseudo_customer_id.value;
		thisform.submit();
	}

	return false;
}


function not_auth(site, section, contact) {
	msg = "Your organisation does not currently have access to this feature.\n\nPlease contact "+contact+" on 020 7924 6622 for more details.";

	switch (site) {
		case 'SALES':
			switch (section) {
				case 'welcome':
					msg = "Your organisation is not currently subscribed to Sales.\n\nPlease contact "+contact+" on 020 7924 6622 for more details.";
					break;
				case 'sales':
					msg = "Your organisation is not currently subscribed to the For Sale feature.\n\nPlease contact "+contact+" on 020 7924 6622 for more details.";
					break;
				case 'archive':
					msg = "Your organisation is not currently subscribed to the Sales Archive feature.\n\nPlease contact "+contact+" on 020 7924 6622 for more details.";
					break;
				case 'analysis':
					msg = "The Sales Analysis feature is due for release in 2005.\n\nPlease contact "+contact+" on 020 7924 6622 for more details.";
					break;
			}
			break;

		case 'LETTINGS':
			switch (section) {
				case 'welcome':
					msg = "Your organisation is not currently subscribed to Lettings.\n\nPlease contact "+contact+" on 020 7924 7979 for more details.";
					break;
				case 'lettings':
					msg = "Your organisation is not currently subscribed to the To Let feature.\n\nPlease contact "+contact+" on 020 7924 7979 for more details.";
					break;
				case 'letarchive':
					msg = "Your organisation is not currently subscribed to the Lettings Archive feature.\n\nPlease contact "+contact+" on 020 7924 7979 for more details.";
					break;
				case 'letanalysis':
					msg = "The Lettings Analysis feature is due for release in 2005.\n\nPlease contact "+contact+" on 020 7924 7979 for more details.";
					break;
			}
			break;
	}

	alert(msg);

	return false;
}


// note for term in sales search
function search_lease_notice() {
	var sl30  = $('search_lease_30').value;
	var sl64  = $('search_lease_64').value;
	var sl99  = $('search_lease_99').value;
	var sl100 = $('search_lease_100').value;

	var sum = parseInt(sl30) + parseInt(sl64) + parseInt(sl99) + parseInt(sl100);

	var note = $('search_lease_note');
	if(sum == 4 || sum == 0 || sl30 == 1) {
		note.innerHTML = '';
	}
	else {
		note.innerHTML = '<b>NOTE:</b> Leaseholds without a specified length will not<br>appear in the search results of this search.';
	}
}


function customer_remove_all(redirect) {

	if(confirm("Are you sure you want to delete all your applicants?")){
		document.cookie = "rem_apps=1";
		window.location = redirect;
	}
	
}