var town = jQuery('#town option:selected').val();
var builder = jQuery('#builder option:selected').val();
var architect = jQuery('#architect option:selected').val();
var country = jQuery('#country option:selected').val();
var type = jQuery('#ptype option:selected').text();
var product = jQuery('#product option:selected').val();
var productarea = jQuery('#productarea option:selected').val();
var head_pgroup = jQuery('#head_pgroup option:selected').val();
var head_pgroup_name = jQuery('#head_pgroup_name option:selected').val();
var head_pgroup_forming = jQuery('#head_pgroup_forming option:selected').val();
var useNext = false;
var changed = false;

jQuery(document).ready(function() {

	// initialize tabs
	jQuery('ul.tabs').tabs();

	// initialize tooltips
	var config = {opacity:1, title:'', toShow:0, toHide:0};
	jQuery(['#town_tooltip', '#build_tooltip', '#arch_tooltip', '#zip_tooltip', '#office_tooltip', '#pname_tooltip', '#pnumber_tooltip', '#productarea_tooltip', '#head_pgroup_tooltip', '#head_pgroup_name_tooltip', '#head_pgroup_forming_tooltip']).each(function(c,o){
		jQuery(o).brTip(config);
	});

	// ???
	jQuery('#resultcount').change(function() {
		jQuery(this).parent('form').submit();
	});

	// form has been submitted, we need to update some fields
	var country = jQuery('#country option:selected').text();
	if (country != '-') {
		doRequest('tx_tdreference_pi1[request]=towns&tx_tdreference_pi1[cid]='+country+'&tx_tdreference_pi1[refclass]='+refclass);
	}
	var product = jQuery('#product option:selected').val();
	if (product) {
		doRequest('tx_tdreference_pi1[request]=product&tx_tdreference_pi1[baId]='+product);
	}

	// country has been changed
	jQuery('#country').change(function() {
		var country = jQuery('#country option:selected').val();

		jQuery('#architect').attr("disabled", true);
		jQuery('#architect').empty();
		jQuery('#architect').append('<option value="">-</option>');

		jQuery('#builder').attr("disabled", true);
		jQuery('#builder').empty();
		jQuery('#builder').append('<option value="">-</option>');
	
		jQuery('#town').attr("disabled", true)
		jQuery('#town').empty();
		jQuery('#town').append('<option value="">-</option>');

		jQuery('#zip').attr("disabled", true);
		jQuery('#zip').val("");

		jQuery('#region').attr("disabled", true)
		jQuery('#region').empty();
		jQuery('#region').append('<option value="">-</option>');

		jQuery('#headoffice').attr("disabled", true);
		jQuery('#headoffice').empty();
		jQuery('#headoffice').append('<option value="">-</option>');

		jQuery('#office').attr("disabled", true);
		jQuery('#office').empty();
		jQuery('#office').append('<option value="">-</option>');

		jQuery('#zoneto').attr("disabled", true);
		jQuery('#zonefrom').attr("disabled", true);

		doRequest('tx_tdreference_pi1[request]=country&tx_tdreference_pi1[cid]='+country+'&tx_tdreference_pi1[refclass]='+refclass);
	});

	// region has been changed
	jQuery('#region').change(function() {
		var region = jQuery('#region option:selected').val();

		jQuery('#headoffice').attr("disabled", true);
		jQuery('#headoffice').empty();
		jQuery('#headoffice').append('<option value="">-</option>');

		jQuery('#office').attr("disabled", true);
		jQuery('#office').empty();
		jQuery('#office').append('<option value="">-</option>');

		jQuery('#zoneto').attr("disabled", true);
		jQuery('#zonefrom').attr("disabled", true);

		jQuery('#office').attr("disabled", true);
		jQuery('#office').empty();
		jQuery('#office').append('<option value="">-</option>');

		if (!region) {
			var country = jQuery('#country option:selected').val();

			jQuery('#region').attr("disabled", true)
			jQuery('#region').empty();
			jQuery('#region').append('<option value="">-</option>');

			doRequest('tx_tdreference_pi1[request]=country&tx_tdreference_pi1[cid]='+country+'&tx_tdreference_pi1[refclass]='+refclass);
		} else {
			doRequest('tx_tdreference_pi1[request]=region&tx_tdreference_pi1[cid]='+region);
		}

		jQuery('#region').attr("disabled", false);
	});

	// headoffice has been changed
	jQuery('#headoffice').change(function() {
		var headoffice = jQuery('#headoffice option:selected').val();
		var region = jQuery('#region option:selected').val();

		jQuery('#office').attr("disabled", true);
		jQuery('#office').empty();
		jQuery('#office').append('<option value="">-</option>');

		jQuery('#zoneto').attr("disabled", true);
		jQuery('#zonefrom').attr("disabled", true);

		if (!headoffice) {
			if (!region) {
				var country = jQuery('#country option:selected').val();

				jQuery('#town').attr("disabled", true)
				jQuery('#town').empty();
				jQuery('#town').append('<option value="">-</option>');

				jQuery('#region').attr("disabled", true)
				jQuery('#region').empty();
				jQuery('#region').append('<option value="">-</option>');

				jQuery('#headoffice').attr("disabled", true);
				jQuery('#headoffice').empty();
				jQuery('#headoffice').append('<option value="">-</option>');

				doRequest('tx_tdreference_pi1[request]=country&tx_tdreference_pi1[cid]='+country+'&tx_tdreference_pi1[refclass]='+refclass);
			} else {
				jQuery('#headoffice').attr("disabled", true);
				jQuery('#headoffice').empty();
				jQuery('#headoffice').append('<option value="">-</option>');

				doRequest('tx_tdreference_pi1[request]=region&tx_tdreference_pi1[cid]='+region);
			}
		} else {
			doRequest('tx_tdreference_pi1[request]=headoffice&tx_tdreference_pi1[cid]='+headoffice+'&tx_tdreference_pi1[region]='+region);
		}

		jQuery('#region').attr("disabled", false);
		jQuery('#headoffice').attr("disabled", false);
	});

	// office has been changed
	jQuery('#office').change(function() {
		var office = jQuery('#office option:selected').val();
		var headoffice = jQuery('#headoffice option:selected').val();

		jQuery('#zoneto').attr("disabled", true);
		jQuery('#zonefrom').attr("disabled", true);

		if (!office) {
			jQuery('#office').empty();
			jQuery('#office').append('<option value="">-</option>');

			doRequest('tx_tdreference_pi1[request]=headoffice&tx_tdreference_pi1[cid]='+headoffice);
		} else {
			doRequest('tx_tdreference_pi1[request]=office&tx_tdreference_pi1[cid]='+office);
		}
	});

	jQuery('#ptype').change(function() {
		doAJAX();
	});

	jQuery('#product').change(function() {
		jQuery('#productarea').empty();
		jQuery('#head_pgroup').empty();
		jQuery('#head_pgroup_name').empty();
		jQuery('#head_pgroup_forming').empty();
		changed = true; 
		doAJAX();
	});

	jQuery('#productarea').change(function() {
		jQuery('#head_pgroup').empty();
		jQuery('#head_pgroup_name').empty();
		jQuery('#head_pgroup_forming').empty();
		changed = true; 
		doAJAX();
	});

	jQuery('#head_pgroup').change(function() {
		jQuery('#head_pgroup_name').empty();
		jQuery('#head_pgroup_forming').empty();
		changed = true; 
		doAJAX();
	});

	jQuery('#head_pgroup_name').change(function() {
		jQuery('#head_pgroup_forming').empty();
		changed = true; 
		doAJAX();
	});
	
	var savelink = jQuery('#savelink').attr('href');
	jQuery('#savelink').click(function() {
		jQuery('#savelink').attr('href', savelink+'&pdf='+jQuery('a.open').attr('href')+'&title='+jQuery('a.open').attr('title'));
	});

	// disable region selector when there are no regions
	if ((jQuery('#region option').size() <= 1) && (!jQuery('#region option:first').val())) {
		jQuery('#region').attr("disabled", true);
	}

	// disable head offices selector when there are no head offices
	if ((jQuery('#headoffice option').size() <= 1) && (!jQuery('#headoffice option:first').val())) {
		jQuery('#headoffice').attr("disabled", true);
	}

	// disable postcode zones selector when there are no zones
	if ((jQuery('#zonefrom option').size() <= 1) && (!jQuery('#zonefrom option:first').val())) {
		jQuery('#zonefrom').attr("disabled", true);
		jQuery('#zoneto').attr("disabled", true);
	}

	// toggle and restore search form details
	if (jQuery('input#formdetails').val() == 1) {
        	jQuery("#search_details_form").show();
	}
	jQuery("#search_details").click(function() {
		var act = jQuery("div.ref-detailsearch form").attr("action");

		if (jQuery("#search_details_form").is(":hidden")) {
			jQuery('input#formdetails').val('1');
                } else {
			jQuery('input#formdetails').val('0');
		}

        	jQuery("#search_details_form").toggle("slide", {direction: "up"}, 300);
	});

	// toggle list selection dialogue
	if (jQuery('#listSelection').length != 0) {
		jQuery('#listSelection').click(function() {
			var px = (window.getWidth()/2)-320;
			var py = (window.getHeight()/2)-240;

			jQuery('#listSelectionList').html('');
			jQuery('#listSelectionList').attr('class','loading');

			$('listSelectionDialogue').setStyle('position','fixed');
			$('listSelectionDialogue').setStyle('left',px+'px');
			$('listSelectionDialogue').setStyle('top',py+'px');
			$('listSelectionDialogue').setStyle('display','block');

			separator = '?';
			if (document.URL.indexOf('?') != -1) {
				separator = '&';
			}

			jQuery.ajax({ url:document.URL+separator+'no_cache=1&tx_tdreference_pi1[request]=list', success:function(r) {
				jQuery('#listSelectionList').attr('class','ready');
				jQuery('#listSelectionList').html(r);
			}});
		});

		// create PDF document
		jQuery('#listSelectionPDF').click(function() {
			var requestData = '';

			jQuery('#listSelectionList').find(':input').each(function(){
				if (this.checked) {
					if (requestData != '') {
						requestData = requestData + ',';
					}
					recid = this.getAttribute('id');
					requestData = requestData + recid.substr(4);
				}
			});

			$('listSelectionDialogue').setStyle('display','none');
			requestAllPdf(null, null, requestData);
		});

		// create CSV file
		jQuery('#listSelectionCSV').click(function() {
			var requestData = '';

			jQuery('#listSelectionList').find(':input').each(function(){
				if (this.checked) {
					if (requestData != '') {
						requestData = requestData + ',';
					}
					recid = this.getAttribute('id');
					requestData = requestData + recid.substr(4);
				}
			});

			$('listSelectionDialogue').setStyle('display','none');
			getCSV(requestData);
		});

		// close list selection
		jQuery('#listSelectionClose').click(function() {
			$('listSelectionDialogue').setStyle('display','none');
		});

		// select all items
		jQuery('#listSelectionAll').click(function() {
			jQuery('#listSelectionList').find(':input').each(function(){
				this.checked = true;
			});
		});

		// de-select all items
		jQuery('#listSelectionNone').click(function() {
			jQuery('#listSelectionList').find(':input').each(function(){
				this.checked = false;
			});
		});
	}
});

var doAJAX = function () {
	country = jQuery('#country option:selected').val();
	product = jQuery('#product option:selected').val();
	
	if (ssubmit) {		
		town = stown;
		architect = sarchitect;
		builder = sbuilder;
		
		productarea = sproductarea;
		head_pgroup = shead_pgroup;
		head_pgroup_name = shead_pgroup_name;
		head_pgroup_forming = shead_pgroup_forming;

		ssubmit = false;
	} else {
		town = jQuery('#town option:selected').val();
		builder = jQuery('#builder option:selected').val();
		architect = jQuery('#architect option:selected').val();

		productarea = jQuery('#productarea option:selected').val();
		head_pgroup = jQuery('#head_pgroup option:selected').val();
		head_pgroup_name = jQuery('#head_pgroup_name option:selected').val();
		head_pgroup_forming = jQuery('#head_pgroup_forming option:selected').val();
	}

	jQuery('#town').empty();
	jQuery('#town').append('<option value="">-</option>');

	jQuery('#productarea').append('<option value="">-</option>');
	jQuery('#head_pgroup').append('<option value="">-</option>');
	jQuery('#head_pgroup_name').append('<option value="">-</option>');
	jQuery('#head_pgroup_forming').append('<option value="">-</option>');	

	if (product) {
		useNext = true;
		doRequest('tx_tdreference_pi1[request]=product&tx_tdreference_pi1[baId]='+product);
	} else {
		useNext = false;
	}

	if (productarea) {
		useNext = true;
		doRequest('tx_tdreference_pi1[request]=productarea&tx_tdreference_pi1[productarea]='+productarea+'&tx_tdreference_pi1[baId]='+product);
	} else {
		useNext = false;
	}
	
	if (head_pgroup) {
		doRequest('tx_tdreference_pi1[request]=head_pgroup&tx_tdreference_pi1[head_pgroup]='+head_pgroup+'&tx_tdreference_pi1[baId]='+product+'&tx_tdreference_pi1[productarea]='+productarea);
	}
	
	if (head_pgroup_name) {
		useNext = true;
		doRequest('tx_tdreference_pi1[request]=head_pgroup_name&tx_tdreference_pi1[head_pgroup_name]='+head_pgroup_name+'&tx_tdreference_pi1[baId]='+product+'&tx_tdreference_pi1[productarea]='+productarea+'&tx_tdreference_pi1[head_pgroup]='+head_pgroup);
	
	} else {
		useNext = false;
	}
	
	if (head_pgroup_forming && useNext) {
		useNext = true;
		doRequest('tx_tdreference_pi1[request]=head_pgroup_forming&tx_tdreference_pi1[head_pgroup_forming]='+head_pgroup_forming+'&tx_tdreference_pi1[baId]='+product+'&tx_tdreference_pi1[productarea]='+productarea+'&tx_tdreference_pi1[head_pgroup]='+head_pgroup+'&tx_tdreference_pi1[head_pgroup_name]='+head_pgroup_name);
	}
}

function doRequest(requestUrl) {
	jQuery('#productarea').attr("disabled", true);
	jQuery('#head_pgroup').attr("disabled", true);
	jQuery('#head_pgroup_name').attr("disabled", true);
	jQuery('#head_pgroup_forming').attr("disabled", true);

	if (requestUrl) {
		separator = '?';
		if (url.indexOf('?') != -1) {
			separator = '&';
		}

		jQuery.getJSON(url + separator + requestUrl, function(data) {	

			if (data.regions) {
				jQuery.each(data.regions, function(i, item) {
					jQuery('#region').append('<option value="'+i+'">'+item+'</option>');
				});
				jQuery('#region').attr("disabled", false);
			}

			if (data.headoffices) {
				jQuery.each(data.headoffices, function(i, item) {
					jQuery('#headoffice').append('<option value="'+i+'">'+item+'</option>');
				});
				jQuery('#headoffice').attr("disabled", false);
			}

			if (data.offices) {
				jQuery.each(data.offices, function(i, item) {
					jQuery('#office').append('<option value="'+i+'">'+item+'</option>');
				});
				jQuery('#office').attr("disabled", false);
			}

			if (data.postcodezones) {
				jQuery('#zonefrom').empty();
				jQuery('#zoneto').empty();

				jQuery.each(data.postcodezones, function(id, zone) {
						jQuery('#zonefrom').append('<option value="'+id+'">'+zone['from']+'</option>');
						jQuery('#zoneto').append('<option value="'+id+'">'+zone['to']+'</option>');
				});

				if ((jQuery('#zonefrom option').size() > 1) || (jQuery('#zonefrom option:first').val())) {
					jQuery('#zonefrom').attr("disabled", false);
					jQuery('#zoneto').attr("disabled", false);

					if (jQuery('#zoneto option:first').val()) {
						jQuery('#zoneto option:last').attr('selected','selected');
					}
				}
			}

			if(data.towns) {
				jQuery('#zip').attr("disabled", false);
				jQuery('#town').attr("disabled", false);
				
				jQuery.each(data.towns, function(i, item) {
					if(item == stown) {
						jQuery('#town').append('<option value="'+item+'" selected="selected">'+item+'</option>');
					} else {
						jQuery('#town').append('<option value="'+item+'">'+item+'</option>');
					}
				});
			}

			if(data.architect) {
				jQuery('#architect').attr("disabled", false);
				
				jQuery.each(data.architect, function(i, item) {
					if(i == architect) {
						jQuery('#architect').append('<option value="'+i+'" selected="selected">'+item+'</option>');
					} else {
						jQuery('#architect').append('<option value="'+i+'">'+item+'</option>');
					}
				});
			}

			if(data.builder) {
				jQuery('#builder').attr("disabled", false);
				
				jQuery.each(data.builder, function(i, item) {
					if(i == builder) {
						jQuery('#builder').append('<option value="'+i+'" selected="selected">'+item+'</option>');
					} else {
						jQuery('#builder').append('<option value="'+i+'">'+item+'</option>');
					}
				});
			}

			if(data.productarea) {
				if(jQuery('#productarea > option').size() > 1){
					jQuery('#productarea').empty();
					jQuery('#productarea').append('<option value="">-</option>');
				}
				jQuery('#productarea').attr("disabled", false); 
			
				jQuery.each(data.productarea, function(i, item) { 
					
					if(i == productarea) {
						jQuery('#productarea').append('<option value="'+i+'" selected="selected">'+item+'</option>');
					} else if(i == sproductarea && !changed){
						jQuery('#productarea').append('<option value="'+i+'" selected="selected">'+item+'</option>');
					}else {
						jQuery('#productarea').append('<option value="'+i+'">'+item+'</option>');
					}					

				});
			} 

			if(data.head_pgroup) {				
				if(jQuery('#head_pgroup > option').size() > 1){
					jQuery('#head_pgroup').empty();
					jQuery('#head_pgroup').append('<option value="">-</option>');
				}
				jQuery('#head_pgroup').attr("disabled", false); 
			
				jQuery.each(data.head_pgroup, function(i, item) {
					
					if(i == head_pgroup) {
						jQuery('#head_pgroup').append('<option value="'+i+'" selected="selected">'+item+'</option>');
					} else if(i == shead_pgroup && jQuery('#productarea').val() > 0 && !changed){
						jQuery('#head_pgroup').append('<option value="'+i+'" selected="selected">'+item+'</option>');
					} else {
						jQuery('#head_pgroup').append('<option value="'+i+'">'+item+'</option>');
					}
				});

			}

			if (data.head_pgroup_name) {
				if(jQuery('#head_pgroup_name > option').size() > 1){
					jQuery('#head_pgroup_name').empty();
					jQuery('#head_pgroup_name').append('<option value="">-</option>');
				}
				jQuery('#head_pgroup_name').attr("disabled", false); 
				
				jQuery.each(data.head_pgroup_name, function(i, item) {
					
					if(i == head_pgroup_name) {
						jQuery('#head_pgroup_name').append('<option value="'+i+'" selected="selected">'+item+'</option>');
					}else if(i == shead_pgroup_name && shead_pgroup > 0 && !changed){
						jQuery('#head_pgroup_name').append('<option value="'+i+'" selected="selected">'+item+'</option>');
					} else {
						jQuery('#head_pgroup_name').append('<option value="'+i+'">'+item+'</option>');
					}
				});
			}

			if (data.head_pgroup_forming) {
				if(jQuery('#head_pgroup_forming > option').size() > 1){
					jQuery('#head_pgroup_forming').empty();
					jQuery('#head_pgroup_forming').append('<option value="">-</option>');
				}
				jQuery('#head_pgroup_forming').attr("disabled", false); 
			
				jQuery.each(data.head_pgroup_forming, function(i, item) {
					
					if(i == head_pgroup_forming) {
						jQuery('#head_pgroup_forming').append('<option value="'+i+'" selected="selected">'+item+'</option>');
					}else if(i == shead_pgroup_forming && shead_pgroup_name > 0 && !changed){
						jQuery('#head_pgroup_forming').append('<option value="'+i+'" selected="selected">'+item+'</option>');
					} else {
						jQuery('#head_pgroup_forming').append('<option value="'+i+'">'+item+'</option>');
					}
				});
			}
		});
	}
	
}


/**
* Function : dump()
* Arguments: The data - array,hash(associative array),object
*    The level - OPTIONAL
* Returns  : The textual representation of the array.
* This function was inspired by the print_r function of PHP.
* This will accept some data as the argument and return a
* text that will be a more readable version of the
* array/hash/object that is given.
*/
function dump(arr,level) {
var dumped_text = "";
if(!level) level = 0;

//The padding given at the beginning of the line.
var level_padding = "";
for(var j=0;j<level+1;j++) level_padding += "    ";

if(typeof(arr) == 'object') { //Array/Hashes/Objects
 for(var item in arr) {
  var value = arr[item];
 
  if(typeof(value) == 'object') { //If it is an array,
   dumped_text += level_padding + "'" + item + "' ...\n";
   dumped_text += dump(value,level+1);
  } else {
   dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
  }
 }
} else { //Stings/Chars/Numbers etc.
 dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
}
return dumped_text;
} 

function toggleCB(elid) {
	var cb = document.getElementById(elid);

	cb.checked ?
		cb.checked = false 
	:
		cb.checked = true;
}

function getCSV(requestData){
  	var stamp = new Date();
	var separator = '?';

	if (url.indexOf('?') != -1) {
		separator = '&';
	}

  	jQuery.post(url + separator + 'tx_tdreference_pi1[request]=get_csv&no_cache=1', 'records='+requestData, function(data) {
		var separator = '?';

		if (url.indexOf('?') != -1) {
			separator = '&';
		}

		if (data.filename != '') {
			top.document.location.href = url + separator + 'tx_tdreference_pi1[finished]=1&tx_tdreference_pi1[ftype]=csv&tx_tdreference_pi1[docurl]=' + data.filename + '&no_cache=1';
		}
  	}, "json");
}

