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() {
	jQuery('ul.tabs').tabs();
	
	doAJAX();
	
	var config = {opacity:1, title:'', toShow:0, toHide:0};
	
	jQuery('#town_tooltip').brTip(config);
	jQuery('#build_tooltip').brTip(config);
	jQuery('#arch_tooltip').brTip(config);
	jQuery('#zip_tooltip').brTip(config);
	jQuery('#pname_tooltip').brTip(config);
	jQuery('#pnumber_tooltip').brTip(config);
	jQuery('#productarea_tooltip').brTip(config);
	jQuery('#head_pgroup_tooltip').brTip(config);
	jQuery('#head_pgroup_name_tooltip').brTip(config);
	jQuery('#head_pgroup_forming_tooltip').brTip(config);
	
	jQuery('#resultcount').change(function() {
		jQuery(this).parent('form').submit();
	});

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

	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'));
	});

	// 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');

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

		// 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) {		
		ssubmit = false;
		
		town = stown;
		architect = sarchitect;
		builder = sbuilder;
		
		productarea = sproductarea;
		head_pgroup = shead_pgroup;
		head_pgroup_name = shead_pgroup_name;
		head_pgroup_forming = shead_pgroup_forming;
	} 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('#builder').empty();
	jQuery('#architect').empty();
	jQuery('#town').empty();
	
	jQuery('#builder').append('<option value="">-</option>');
	jQuery('#architect').append('<option value="">-</option>');
	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(url.search(/\?/) == -1) {
		url = url+'?1=1';
	}
	
	if (product) {
		var request = 'product';
		var requestUrl = url + '&tx_tdreference_pi1[request]=' + request + '&tx_tdreference_pi1[baId]='+product;

		useNext = true;

		doRequest(requestUrl);
	} else {
		useNext = false;
	}

	if (productarea) {
		var request = 'productarea';
		var requestUrl = url + '&tx_tdreference_pi1[request]=' + request + '&tx_tdreference_pi1[productarea]='+productarea;
		
		useNext = true;
		
		requestUrl = requestUrl + '&tx_tdreference_pi1[baId]='+product;
		
		doRequest(requestUrl);
	} else {
		useNext = false;
	}
	
	if (head_pgroup) {
		var request = 'head_pgroup';
		var requestUrl = url + '&tx_tdreference_pi1[request]=' + request + '&tx_tdreference_pi1[head_pgroup]='+head_pgroup;
		
		requestUrl = requestUrl + '&tx_tdreference_pi1[baId]='+product;
		requestUrl = requestUrl + '&tx_tdreference_pi1[productarea]='+productarea;
		
		doRequest(requestUrl);
	}
	
	if(head_pgroup_name) {
		var request = 'head_pgroup_name';
		var requestUrl = url + '&tx_tdreference_pi1[request]=' + request + '&tx_tdreference_pi1[head_pgroup_name]='+head_pgroup_name;
		
		useNext = true;
		
		requestUrl = requestUrl + '&tx_tdreference_pi1[baId]='+product;
		requestUrl = requestUrl + '&tx_tdreference_pi1[productarea]='+productarea;
		requestUrl = requestUrl + '&tx_tdreference_pi1[head_pgroup]='+head_pgroup;
		
		doRequest(requestUrl);
	
	} else {
		useNext = false;
	}
	
	if (head_pgroup_forming && useNext) {
		var request = 'head_pgroup_forming';
		var requestUrl = url + '&tx_tdreference_pi1[request]=' + request + '&tx_tdreference_pi1[head_pgroup_forming]='+head_pgroup_forming;
		
		useNext = true;
		
		requestUrl = requestUrl + '&tx_tdreference_pi1[baId]='+product;
		requestUrl = requestUrl + '&tx_tdreference_pi1[productarea]='+productarea;
		requestUrl = requestUrl + '&tx_tdreference_pi1[head_pgroup]='+head_pgroup;
		requestUrl = requestUrl + '&tx_tdreference_pi1[head_pgroup_name]='+head_pgroup_name;
	}
	
	if (country != '' && type == '') {
		
		var request = 'country';
		var requestUrl = url + '&tx_tdreference_pi1[request]=' + request + '&tx_tdreference_pi1[cid]='+country + '&tx_tdreference_pi1[refclass]='+refclass;
		
		doRequest(requestUrl);
		
	} else {
		
		if(country != '' && type != '') {
			
			var request = 'both';
			var requestUrl = url + '&tx_tdreference_pi1[request]=' + request + '&tx_tdreference_pi1[cid]='+country+ '&tx_tdreference_pi1[pid]='+type+ '&tx_tdreference_pi1[refclass]='+refclass;
			
			doRequest(requestUrl);
			
		}		
	}

	
}

function doRequest(requestUrl) {
	
	jQuery('#town').attr("disabled", true);
	jQuery('#architect').attr("disabled", true);
	jQuery('#builder').attr("disabled", true);
	jQuery('#zip').attr("disabled", true);
	
	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) {
		
		jQuery.getJSON(requestUrl, function(data) {	
			
			if(data.towns) {
				
				jQuery('#zip').attr("disabled", false);
				jQuery('#town').attr("disabled", false);
				
				//jQuery('#architect').attr("disabled", false);
				//jQuery('#builder').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 requestUrl = url + '&tx_tdreference_pi1[request]=get_csv';
	
  	jQuery.post(requestUrl, 'records='+requestData, function(data){
		if(data.filename != '') {
			top.document.location.href = url + '&no_cache=1&tx_tdreference_pi1[finished]=1&tx_tdreference_pi1[ftype]=csv&tx_tdreference_pi1[docurl]=' + data.filename;
		}
  	}, "json");
}
