var searchTerm; 
var relnames = new Object();
var picker_picked_items = new Object();
function pick_category( target_div, item_type, item_id, childtype, childrel, property, folderrel, targettype, parent_url, parent_type, relation, property, generation) {
	url = baseurl + item_type + '/' + item_id + '/inlinepicker?childtype=' + childtype + '&childrel=' + childrel + '&target_div=' + property + '_field_picker&folderrel=' + folderrel +'&targettype=' + targettype + '&parent_url=' + parent_url + '&parent_type=' + parent_type + '&relation=' + relation + '&property=' + property + '&generation=' + generation;
	myOpen(target_div, 'secondlevel_picker', url); // put the stuff in the div with the callback



	var basediv = document.getElementById(property + '_category_picker');
	var children = basediv.childNodes;
	var t;
	for (t in children) {
		var nid = children[t].id;
		if (nid) {
			var dnid = document.getElementById(nid);
			dnid.className = 'picker_deselected';
		}
	}
	// highlight the category
	var divname = property + '_' + item_id + '_picker_category';
	var cat = document.getElementById(divname);
	if (cat) {
		cat.className = 'picker_selected';
	} else {
		// oops, are we sure this is bronson?
	}

	// 
	var folder_adder_name = property + '_folder_adder';
	var folder_adder = document.getElementById(folder_adder_name);
	// ?mode=async&f_service=createchild&extras[parent]=1234910082-93123ac8d1a33389033ba9f71ef9b853&extras[parenttype]=article&extras[relation]=cityphoto
	var purl = baseurl + '?service=getasset&output_format=json&type=' + item_type + '&url=' + item_id + '&fields=guid';
	var cont = srcGet(purl);
	var parent_obj = JSON.parse(cont);
	if (folder_adder) { 
		var furl = baseurl  + childtype + "/edit?extras[parent]=" + parent_obj.guid + "&extras[parenttype]=" + item_type + "&extras[relation]=" + childrel + "&f_service=createchild&mode=async";
		folder_adder.innerHTML = "<a href='javascript:myOpen(\"inline_editor\", \"editlightbox\", \"" + furl + "\");'>[+]</a>";
	} else  {
		alert("folder_adder does not exist: " + folder_adder_name);
	}
}
	

function pick_folder (target_div, item_type, item_id, folderrel, childtype, childrel, parent_url, parent_type, relation, property, generation) {
	url = baseurl + item_type + '/' + item_id + '/folderpicker?childtype=' + childtype + '&childrel=' + childrel + '&folderrel=' + folderrel + '&parent_url=' + parent_url + '&parent_type=' + parent_type + '&relation=' + relation + '&property=' + property + '&generation=' + generation;
	var cat = document.getElementById(property + '_' + item_id + "_picker_folder");
	if (cat) {
		cat.className = 'picker_selected';
	} else {
		// alert("could not pick: " + item_id);
	}
	myOpen(target_div, 'thirdlevel_picker', url);

	// hide the folders
	var divname = property + '_folder_picker';
	var basediv = document.getElementById(divname);
	if (basediv) {
		var children = basediv.childNodes;
		var t;
		for (t in children) {
			var nid = children[t].id;
			if (nid) {
				var dnid = document.getElementById(nid);
				dnid.className = 'picker_deselected';
			}
		}

	} else {
		// alert("no folder_picker: " + divname);
	}

	// select this folder
	var selected =  property + '_' + item_id + "_picker_folder";
	var selected_div = document.getElementById(selected);
	if (selected_div) {
		selected_div.className = 'picker_selected';
	} else {
		// alert("no picker_folder: " + selected);
	}

	// show the add a thingy link to the folder
	var folder_adder_name = property + '_item_adder';
	var folder_adder = document.getElementById(folder_adder_name);
	// ?mode=async&f_service=createchild&extras[parent]=1234910082-93123ac8d1a33389033ba9f71ef9b853&extras[parenttype]=article&extras[relation]=cityphoto
	var purl = baseurl + '?service=getasset&output_format=json&type=' + item_type + '&url=' + item_id + '&fields=guid';
	var cont = srcGet(purl);
	var parent_obj = JSON.parse(cont);
	if (folder_adder) { 
		var furl = baseurl  + childtype + "/edit?extras[parent]=" + parent_obj.guid + "&extras[parenttype]=" + item_type + "&extras[relation]=" + childrel + "&f_service=createchild&smallheader=1";
		folder_adder.innerHTML = "<a href='" + furl + "' target='_new'>[+]</a>";
	} else  {
		alert("item_adder does not exist: " + folder_adder_name);
	}
}

function pick_child(field_name, child_type, child_url, parent_type, parent_url, relation, property, child_guid, parent_guid, generation) {
	// if I have a guid, do it immediately via ajax?
	var prop = field_name + '_' + child_url + '_picked_child';
	var thingy = document.getElementById(prop);
	var selecting = false;
	if (thingy) { 
		if (thingy.className == 'picker_selected') {
			selecting = 0;
		} else {
			selecting = 1;
		}
	} else {
		// alert("no " + child_url);
	}

	var master_url; 

	if (parent_url) {
		if (selecting) { 
			if (generation == 'children') { 
				master_url = baseurl + '?service=addrelationship&childtype=' + child_type + '&child=' + child_guid + '&parenttype=' + parent_type + '&parent=' + parent_guid + '&relation=' + relation + '&output_format=json';
			} else {
				master_url = baseurl + '?service=addrelationship&childtype=' + parent_type + '&child=' + parent_guid + '&parenttype=' + child_type + '&parent=' + child_guid + '&relation=' + relation + '&output_format=json';
			}
		} else {
			if (generation == 'children') { 
				master_url = baseurl + '?service=deleterelationship&childtype=' + child_type + '&child=' + child_guid + '&parenttype=' + parent_type + '&parent=' + parent_guid + '&relation=' + relation + '&output_format=json';
			} else {
				master_url = baseurl + '?service=deleterelationship&childtype=' + parent_type + '&child=' + parent_guid + '&parenttype=' + child_type + '&parent=' + child_guid + '&relation=' + relation + '&output_format=json';
			}
		}
		// gotta do this later I guess
		// myOpen('debug', 'debug', master_url); // just call the url into the debugger just in case we want to see what happened
		// now show the user what's been picked
		var divname = field_name + '_edit_relations';
		var reldiv = document.getElementById(divname);	
		if (reldiv) {
			// yay
		} else {
			// alert("making new " + divname);
	        var reldiv=document.createElement("div")
			var newtext=document.createTextNode("")
			reldiv.innerHTML = '';
			reldiv.appendChild(newtext) //append text to new div
			reldiv.id = divname;
			document.body.appendChild(reldiv);
			reldiv = document.getElementById(divname);
			reldiv.innerHTML = ''; // make sure it's clear
		}
		var contents = reldiv.innerHTML;
		var relations;
		var overall_relations;
		if (contents) {
			relations = JSON.parse(contents);
			// relations = overall_relations[field_name];
			if (relations) {
				var str;
				var myn = 0;
                // get the real name

				for (var t in relations) { 
                	var ttype = typeof(relations[t]);
					if (ttype == 'function') { 
					} else {
						str = t + ' ' + relations[t].toString() + "\n";
						myn = myn + 1;

					}
				}
				if (myn < 1) {
					relations = new Object();
					overall_relations = new Object();
				}
				
			} else {
				relations = new Object();
			}
		} else {
			overall_relations = new Object();
			overall_relations[field_name] = new Object();
			relations = new Object();
		}

		// okay how many relations are allowed?

		var allowed_div_name = field_name + "_maximum";
		var allowed_div = document.getElementById(allowed_div_name);
		var maximum = allowed_div.innerHTML;
		var rel_count = 0;
		for (var t in relations) {
			var ttype = typeof(t);
			if (ttype == 'function') {

			} else if (relations[t] == 1)  {
				rel_count = rel_count + 1;
			}
			if (rel_count >= maximum && selecting) {
				alert("Sorry, you've reached the maximum allowed number (" + maximum + ")of items to add, please remove some and try again.");
				return;
			}
		}
		// okay, now can really add/remove the child
		myOpen('debug', 'debug', master_url); // just call the url into the debugger just in case we want to see what happened

		var relation_string = field_name + '_00_' + child_type + '_00_' + child_url + '_00_' + parent_type + '_00_' + relation + '_00_' + property + '_00_' + generation;
		var astr = child_url + ' ' + relation + ' added';
		// get the real name and 
		var turl = baseurl + '?service=getasset&type=' + child_type + '&url=' + child_url + '&output_format=json&fields=title,pubtitle,url,guid'; // need the guid for the image
		// var tobj = JSON.parse(srcGet(turl));
		if (selecting) {
			var str = 'picker_picked_items.' + relation_string + '=1;'; 
			eval(str);
			relations[relation_string] = 1;
			relnames[relation_string] = JSON.parse(srcGet(turl));
		} else {
			var str = 'picker_picked_items.' + relation_string + '=0;'; 
			eval(str);
			relations[relation_string] = 0;
			relnames[relation_string] = '';
		}
		var newcontent = JSON.stringify(relations);
		reldiv.innerHTML = newcontent;
		// HURRAY, we did it, awesome

		// now show the user in the picked items area?

		var picked_items_divname = field_name + '_' + 'picker_status';
		var picked_items = document.getElementById(picked_items_divname);
		// picked_items.style.background = '#223322';
		var ttype;
		if (picked_items) { 
			picked_items.innerHTML = '<ul>';
			for (var rel_string in relations) { 
				ttype = typeof(relations[rel_string]);
				// get the real name
				if (ttype != 'function') {
					var tracer = ' setting ';
					var tobj = null;
					if (relnames[rel_string]) {
						tracer = tracer + " using existing object ";
						tobj = relnames[rel_string]; 
					} else { 
						tracer = tracer + "getting new object ";
						var sp = rel_string.split('_00_');
						var brurl = sp[2];
						var brtype = sp[1];
						var anturl = baseurl + '?service=getasset&type=' + brtype + '&url=' + brurl + '&output_format=json&fields=title,pubtitle,url,guid'; // need the guid for the image
						var new_string = field_name + '_00_' + brtype + '_00_' + brurl + '_00_' + parent_type + '_00_' + relation + '_00_' + property + '_00_' + generation;
						tracer = tracer + '"url: "' + anturl + '"<br/>';
						if (selecting) { 
							var mycontent = srcGet(anturl);
							tracer = tracer + '<br/>"' + mycontent + '"<br/>';
							relnames[rel_string] = JSON.parse(mycontent);
							tracer = tracer + " selecting and getting new data: '" + new_string + relnames[new_string].title + "'<br/>";
						} else {
							if (new_string == relation_string) {
								// if it's the object I'm GETTINGNOW don't go and refill it dodo-head!
								relnames[new_string] = null;
							} else {
								var mycontent = srcGet(anturl);
								tracer = tracer + '<br/>"' + mycontent + '"<br/>';
								relnames[rel_string] = JSON.parse(mycontent);
								tracer = tracer + "deleting and getting new data for something else! '" + new_string + relnames[new_string].title + "'<br/>";
							}
						}
						tobj = relnames[new_string];
					}

					if (tobj && relations[rel_string] == 1) { 
						var pick_script = 'javascript:pick_child("' + property + '","' + child_type + '","' + tobj['url'] + '","' + parent_type + '","' + parent_url + '","' + relation + '","' + property + '","' + tobj['guid'] + '","' + parent_guid + '","' + generation + '");';
						if (child_type == 'photo') { 
							var img = '/uploads/image/mediafile/' + tobj['guid'] + '/42x.jpg';
							picked_items.innerHTML = picked_items.innerHTML + "<li><img align='center' src='" + img + "'><a href='" + pick_script + "'>[x]</a>&nbsp;"  + tobj['title'] + '</a></li>';
						} else if (child_type == 'video') { 
							var img = '/uploads/image/video/' + tobj['guid'] + '/42x.jpg';
							picked_items.innerHTML = picked_items.innerHTML + "<li><img align='center' src='" + img + "'><a href='" + pick_script + "'>[x]</a>&nbsp;"  + tobj['title'] + '</a></li>';
						} else { 
							picked_items.innerHTML = picked_items.innerHTML + "<li><a href='" + pick_script + "'>[x]</a>&nbsp;" +  tobj['title'] + '</a></li>';
						}
						// picked_items.innerHTML = picked_items.innerHTML + '<br/>' + rel_string + tracer + "<br/>" + tobj['title'] + relnames[rel_string].title;
					}
				}
			}
			picked_items.innerHTML = picked_items.innerHTML + '</ul>';
		} 	 else {
			// alert(picked_items_divname + " does not exist");
		}
	} else {
		// I'm INSERTING
		var divname = 'insert_relations';
		var reldiv = document.getElementById(divname);
		if (reldiv) { 
	// 		alert("already have a div: " + divname);
		} else {
	        var reldiv=document.createElement("div")
			var newtext=document.createTextNode("")
			reldiv.innerHTML = '';
			reldiv.appendChild(newtext) //append text to new div
			reldiv.id = divname;
			document.body.appendChild(reldiv);
			reldiv = document.getElementById(divname);
			reldiv.innerHTML = ''; // make sure it's clear
		}
		var contents = reldiv.innerHTML; // there should be json in there!
		var relations; 
		var overall_relations;
		if (contents) { 
			overall_relations = JSON.parse(contents); // now I have an array of relations I'm gonna insert in native FORMAT - wooohooo
			relations = overall_relations[field_name];
			if (relations) {
				// great, already there
			} else {
				relations = new Object();
				// not so good
			}
			
		} else {
			overall_relations = new Object();
			overall_relations[field_name] = new Object();
			relations = overall_relations[field_name];
		}

		// javascript doesn't like the DASHES would be awesome if we had non-dashed guids, no?!!!!

		var relation_string = field_name + '_00_' + child_type + '_00_' + child_url + '_00_' + parent_type + '_00_' + relation + '_00_' + property + '_00_' + generation;
		var astr = child_url + ' ' + relation + ' added';
		// get the real name and 
		var turl = baseurl + '?service=getasset&type=' + child_type + '&url=' + child_url + '&output_format=json&fields=title,pubtitle,url,guid'; // need the guid for the image
		// var tobj = JSON.parse(srcGet(turl));
		if (selecting) {
			var str = 'picker_picked_items.' + relation_string + '=1;'; 
			eval(str);
			relations[relation_string] = 1;
			relnames[relation_string] = JSON.parse(srcGet(turl));
		} else {
			var str = 'picker_picked_items.' + relation_string + '=0;'; 
			eval(str);
			relations[relation_string] = 0;
			relnames[relation_string] = '';
		}
		overall_relations[property] = relations;
		var newcontent = JSON.stringify(overall_relations);
		reldiv.innerHTML = newcontent;
		// HURRAY, we did it, awesome

		// now show the user in the picked items area?

		var picked_items_divname = field_name + '_' + 'picker_status';
		var picked_items = document.getElementById(picked_items_divname);
		var ttype;
		if (picked_items) { 
			picked_items.innerHTML = '<ul>';
			for (var rel_string in relations) { 
				ttype = typeof(relations[rel_string]);
				// get the real name
				if (ttype != 'function') {
					var tobj = null;
					var tobj = relnames[rel_string];
					if (tobj['title']) { 
						var pick_script = 'javascript:pick_child("' + property + '","' + child_type + '","' + tobj['url'] + '","' + parent_type + '","' + parent_url + '","' + relation + '","' + property + '","' + tobj['guid'] + '","' + parent_guid + '","' + generation + '");';
						if (child_type == 'photo') { 
							var img = '/uploads/image/mediafile/' + tobj['guid'] + '/42x.jpg';
							picked_items.innerHTML = picked_items.innerHTML + "<li><img align='center' src='" + img + "'><a href='" + pick_script + "'>[x]</a>&nbsp;"  + tobj['title'] + '</a></li>';
						} else if (child_type == 'video') { 
							var img = '/uploads/image/video/' + tobj['guid'] + '/42x.jpg';
							picked_items.innerHTML = picked_items.innerHTML + "<li><img align='center' src='" + img + "'><a href='" + pick_script + "'>[x]</a>&nbsp;"  + tobj['title'] + '</a></li>';
						} else { 
							picked_items.innerHTML = picked_items.innerHTML + "<li><a href='" + pick_script + "'>[x]</a>&nbsp;" +  tobj['title'] + '</a></li>';
						}
					}
				}
			}
			picked_items.innerHTML = picked_items.innerHTML + '</ul>';
		} 	 else {
			// alert(picked_items_divname + " does not exist");
		}
	} // done with inserting case 

	// highlight it
	var prop = field_name + '_' + child_url + '_picked_child';
	var thingy = document.getElementById(prop);
	if (thingy) {
		if (thingy.className == 'picker_selected') { // I'm DESELECTING
			thingy.className = 'picker_deselected';
		} else {
			thingy.className = 'picker_selected';
		}
	} else {
		// not a problem we probably switched folders 
	}
}

function finish_pick ( formname, fieldname, value) {
	theform = document.getElementById(formname);
	theform.fieldname = value;
}


function doSearch(property, search_term, objtype, parent_url, parent_type, relation, generation, child_type) {
	var myurl = baseurl + objtype + '/folderpicker?search_term=' + search_term + '&parent_url=' + parent_url + '&parent_type=' + parent_type + '&property=' + property + '&relation=' + relation + '&generation=' + generation + '&childtype=' + child_type;
	var divname = property + '_field_picker';
	var div = document.getElementById(divname);
	if (div) { 
		myOpen(property + '_field_picker', 'thirdlevel_picker', myurl);
	} else {
	}
}

