/*
* Convert request from tinymce lb into shortcodes
*/

	var layerUrl  = jQuery('#pluginPath').val()  + '/utilities/get-layer-objects.php';


	// Handle shortcode insertions
	jQuery('#listingInsert').click(function() {
			
			var tagtext = '';
			var type = jQuery('#searchType').val();
			
			switch(type) {
				// Comma separated ids
				case 'listingids' :
					var listingIds = jQuery.trim(jQuery('#listingIds').val());

					tagtext = '[listingsearch';

					if(listingIds) {
						listingArr = listingIds.split(',');
						for(var i=0; i < listingArr.length; i++) {
							if(isNaN(parseInt(listingArr[i]))) {
								jQuery('#errorBox').html('Invalid listing id(s)').show();
								return false;
							}
						}

						tagtext += ' type="' + type + '"';
						tagtext += ' listingids="' + listingIds + '"';
						tagtext += ']';
					} else {
						jQuery('#errorBox').html('Invalid listing id(s)').show();
						return false;
					}

					break;
				
				// Search by layer and multiple objects within that layer
				case 'map' : 
				case 'layers' : 
					var layerId = jQuery('.hq_idx_layerSelect').val();
					var objIds = [];
					var objs = jQuery('input[name="layerObject[]"]:checked');	
					var orderby = jQuery('#selectOrderBy').val();
					var order = jQuery('#selectOrder').val();
					var lp = parseInt(jQuery('input[name="lowPrice"]').val());
					var hp = parseInt(jQuery('input[name="highPrice"]').val());
					var pType = jQuery('select[name="type"]').val();

					tagtext = (type=='map') ? '[hqidxmap' : '[listingsearch'		

					if(objs && objs.length>0) {
						for(var i=0; i < objs.length; i++) {
							objIds.push(jQuery(objs[i]).val());
						}
					} else {
                                            if(type=='layers')
                                                 return false;
                                        }

					// Layer and object(s)
					tagtext += ' type="' + type + '"';
					tagtext += ' layerid="' + layerId + '"';
					tagtext += ' hqid="' + objIds.join(',') + '"';
			
					// Ordering
					if(orderby) 
						tagtext += ' orderby="' + orderby + '"';
					
					if(order)
						tagtext += ' order="' + order + '"';

					// Filters
					if(!isNaN(lp))
						tagtext += ' lp="' + lp + '"';

					if(!isNaN(hp))
						tagtext += ' hp="' + hp + '"';
					
					if(pType && pType.length) {
						tagtext += ' ptype="' + pType.join(',') + '"';
					}

					tagtext += ']';
			
					break;

				// Saved search or clipboard
				case 'sscb' :
					var searchSelect = jQuery('input[name="searchSelect"]:checked').val();
					var orderby = jQuery('#selectOrderBy').val();
					var order = jQuery('#selectOrder').val();
					var limit = parseInt(jQuery('#listingLimit').val());

					tagtext = '[listingsearch';

					if(!searchSelect) return false;					
					

					if(searchSelect=='cb') {
						var cbid = jQuery('#agentClipboards').val();
						tagtext += ' type="cb"';
						tagtext += ' cbid="' + cbid + '"';
						
					} else if(searchSelect=='ss') {
						var ssid = jQuery('#agentSavedSearches').val();
						tagtext += ' type="ss"';
						tagtext += ' ssid="' + ssid + '"';
					} else {
						return false;
					}

					// Ordering
					if(orderby) 
						tagtext += ' orderby="' + orderby + '"';
					
					if(order)
						tagtext += ' order="' + order + '"';
		
					// Limit
					if(!isNaN(limit)) 
						tagtext += ' limit="' + limit + '"';
					

					tagtext += ']';

					break;

				default: 
					tinyMCEPopup.close();
					return false;
					
			}	

			window.tinyMCE.execInstanceCommand('content', 'mceInsertContent', false, tagtext);
	
			tinyMCEPopup.editor.execCommand('mceRepaint');
			tinyMCEPopup.close();

			return false;
	});

	// Close the lightbox
	jQuery('#listingCancel').click(function() {
			tinyMCEPopup.close();
	});

	// Generate object select table
        jQuery('.hq_idx_layerSelect').change(function() {
				var parent = jQuery(this).parents(".hq_idx_filtersWidget");
				parent.find('.hq_idx_imgLoadingWidget').show();
				var postLayer = parent.find("input[name='postLayer']").val();
				var postObject = parent.find("input[name='postObject']").val();
				var selected = '';


				var layerName = jQuery(this+':selected').html();
				var layerId = jQuery(this).val();

				if(postLayer==layerId) {
						selected = postObject;
				}

				if(layerId) {
						jQuery.ajax({
								url : layerUrl,
								dataType: 'json',
								data : {
										layerId: layerId,
										selectedObjs: selected
								},

								success : function(res) {
										var html = [];
										html[html.length] = '<label>' + layerName + '</label>';
										html[html.length] = res;
					
										jQuery('.objectSelect').html(html.join(''));
										jQuery('.objectSelect').show();
										jQuery('.hq_idx_imgLoadingWidget').hide();
								}
						});

				} else {
						parent.find('.objectSelect').hide();
						parent.find('.hq_idx_imgLoadingWidget').hide();
				}
        });

        jQuery('.hq_idx_layerSelect').trigger('change');

