
function Listings_FieldsAddEditGet() {
	var Absolutes = document.getElementsByName(AbsoluteName + '[]');
	var AbsolutesTemp = '';
	
	AbsolutesTemp = 'l=' + Listing_ID + '&';
	
	for (counter = 0; counter < Absolutes.length; counter++) {
		AbsolutesTemp = AbsolutesTemp + '&cs[]=' + Absolutes[counter].value.replace('"', '\"');
	}
	
	$.get(Path + 'fields/', AbsolutesTemp, function(response) { Listings_FieldsAddEditSet(response); });
}

function Listings_FieldsAddEditSet(Response) {
	var Counter1 = 0;
	var Counter2 = 0;
	
	var FormElements;
	
	if (Response != '') {
		FormElements = eval('(' + Response + ')');
	}
	
	var ElementName = '';
	var ExistingElements = new Array();
	var ExistingElement = new Array();
	
	var ElementFound;
	
	var FieldsCount = document.getElementById(FieldsPrefix + '_Total').value;
	
	if (FieldsCount > 0) {
		for (Counter1 = 1; Counter1 <= FieldsCount; Counter1++) {
			ElementName = FieldsPrefix + '_' + Counter1 + '_';
			
			if (document.getElementById(ElementName + 'ID')) {
				ExistingElement = new Array();
				
				ExistingElement['id'] = document.getElementById(ElementName + 'ID').value;
				
				if (FieldsReloading) {
					if (document.getElementById(ElementName + 'Type').value == 'l') {
						ExistingElement['index'] = document.getElementById(ElementName + 'Edit').value;
					}
					else {
						ExistingElement['value'] = document.getElementById(ElementName + 'Edit').value;
					}
				}
				else {
					if (typeof document.getElementById(ElementName + 'Edit').options == 'object') {
						ExistingElement['index'] = document.getElementById(ElementName + 'Edit').options[document.getElementById(ElementName + 'Edit').selectedIndex].value;
					}
					else {
						ExistingElement['value'] = document.getElementById(ElementName + 'Edit').value;
					}
				}
				
				ExistingElements[ExistingElements.length] = ExistingElement;
			}
		}
	}
	
	if (FieldsReloading) {
		document.getElementById(FieldsPrefix + '_Total').value = 0;
		document.getElementById(FieldsPrefix + '_Wrapper').innerHTML = '';
	}
	
	for (Counter1 = 1; Counter1 <= FieldsCount; Counter1++) {
		ElementFound = false;
		
		ElementName = FieldsPrefix + '_' + Counter1 + '_';
		
		if (FormElements != null) {
			for (Counter2 = 0; Counter2 < FormElements.length; Counter2++) {
				
				if (document.getElementById(ElementName + 'Wrapper') && document.getElementById(ElementName + 'ID')) {
					if (document.getElementById(ElementName + 'ID').value == FormElements[Counter2].id || document.getElementById(ElementName + 'Child')) {
						ElementFound = true;
					}
				}
			}
		}
		
		if (ElementFound == false) {
			if (document.getElementById(ElementName + 'Wrapper')) {
				document.getElementById(ElementName + 'Wrapper').innerHTML = '';
			}
		}
	}
	
	if (FormElements != null) {
		for (Counter1 = 0; Counter1 < FormElements.length; Counter1++) {
			ElementFound = false;
			
			for (Counter2 = 1; Counter2 <= FieldsCount; Counter2++) {
				ElementName = FieldsPrefix + '_' + Counter2 + '_';
				
				if (document.getElementById(ElementName + 'Wrapper') && document.getElementById(ElementName + 'ID')) {
					if (document.getElementById(ElementName + 'ID').value == FormElements[Counter1].id) {
						ElementFound = true;
					}
				}
			}
			
			if (ElementFound == false) {
				FieldsCount++;
				document.getElementById(FieldsPrefix + '_Total').value = FieldsCount;
				
				document.getElementById(FieldsPrefix + '_Wrapper').appendChild(Listings_FieldsAddEditDrawElement(FieldsCount, FormElements[Counter1], ExistingElements, false));
				
				FieldsCount = document.getElementById(FieldsPrefix + '_Total').value;
			}
		}
	}
	
	FieldsReloading = false;
	
	ElementFound = false;
	
	for (Counter1 = 1; Counter1 <= FieldsCount; Counter1++) {
		if (document.getElementById(FieldsPrefix + '_' + Counter1 + '_' + 'Wrapper')) {
			if (document.getElementById(FieldsPrefix + '_' + Counter1 + '_' + 'Wrapper').innerHTML != '') {
				ElementFound = true;
			}
		}
	}
	
	if (!ElementFound) {
		FieldsCount = 0;
		
		document.getElementById(FieldsPrefix + '_Wrapper').innerHTML = '';
		
		toggleVisible(FieldsPrefix, 0, 1);
	}
	else {
		toggleVisible(FieldsPrefix, 1, 1);
	}
	
	document.getElementById(FieldsPrefix + '_Total').value = FieldsCount;
}

function Listings_FieldsCheckChildrenGet(Element_ID, Field_ID, Match_ID, ExistingElements) {
	if (document.getElementById(Element_ID)) {
		document.getElementById(Element_ID).innerHTML = '';
	}
	
	var Query = 'l=' + Listing_ID + '&f=' + Field_ID + '&m=' + Match_ID;
	
	$.get(Path + 'fields/', Query, function(response) { Listings_FieldsCheckChildrenSet(Element_ID, response, ExistingElements); });
}

function Listings_FieldsCheckChildrenSet(Element_ID, Response, ExistingElements) {
	var FormHTML = '';
	
	if (Response != '' && Response != 'null') {
		var FormElements = eval('(' + Response + ')');
		
		document.getElementById(FieldsPrefix + '_Total').value = parseInt(document.getElementById(FieldsPrefix + '_Total').value) + 1;
		var FieldsCount = document.getElementById(FieldsPrefix + '_Total').value;
		
		document.getElementById(Element_ID).appendChild(Listings_FieldsAddEditDrawElement(FieldsCount, FormElements, ExistingElements, true));
	}
}

function Listings_FieldsAddEditDrawElement(FieldsCount, FormElement, ExistingElements, ChildElement) {
	var Counter1 = 0;
	
	var FormHTML = '';
	var ElementName = FieldsPrefix + '_' + FieldsCount + '_';
	var ExistingElementID = 0;
	
	if (ExistingElements != null) {
		for (Counter1 = 1; Counter1 <= ExistingElements.length; Counter1++) {
			if (ExistingElements[Counter1 - 1]['id'] == FormElement.id) {
				ExistingElementID = Counter1;
			}
		}
	}
	
	FormHTML = FormHTML + '<table width="100%" border="0" cellspacing="0" cellpadding="3" class="Site_Form">';
	FormHTML = FormHTML + '<tr>';
	FormHTML = FormHTML + '<td class="Site_FormCaption">' + FormElement.title + (FormElement.required == 1 ? ' <span class="Site_FormRequired">*</span>' : '') + '</td>';
	FormHTML = FormHTML + '<td>';
	
	if (FormElement.field_type == 0 || FormElement.field_type == 1 || FormElement.field_type == 2) {
		// 0 - Linked Text List : 1 - Checkbox List : 2 - Numerical Single List
		
		if (ExistingElementID > 0) {
			FormElement.field_value_id = ExistingElements[ExistingElementID - 1].index;
		}
		else if (FieldsReloading) {
			FormElement.field_value_id = 0;
		}
		
		FormHTML = FormHTML + '<select name="' + ElementName + 'Edit" id="' + ElementName + 'Edit" onChange="Listings_FieldsCheckChildrenGet(\'' + ElementName + 'Children\', ' + FormElement.id + ', document.getElementById(\'' + ElementName + 'Edit\').options[document.getElementById(\'' + ElementName + 'Edit\').selectedIndex].value, null);">';
		
		FormHTML = FormHTML + '<option value="">Please select...</option>';
		for (Counter1 = 0; Counter1 < FormElement.values.length; Counter1++) {
			FormHTML = FormHTML + '<option value="' + FormElement.values[Counter1].id + '"' + ((FormElement.field_value_id != null && FormElement.field_value_id == FormElement.values[Counter1].id) ? ' selected' : '') + '>' + FormElement.values[Counter1].title + '</option>';
		}
		
		FormHTML = FormHTML + '</select>';
	}
	else if (FormElement.field_type == 3 || FormElement.field_type == 4) {
		// 3 - Numerical From/To List : 4 - Textbox Editable
		
		if (ExistingElementID > 0) {
			FormElement.field_value = ExistingElements[ExistingElementID - 1].value;
		}
		
		FormHTML = FormHTML + FormElement.prefix + '<input name="' + ElementName + 'Edit" id="' + ElementName + 'Edit" type="text" value="' + ((FormElement.field_value != '' && FormElement.field_value != null) ? FormElement.field_value : '') + '" maxlength="75" />' + FormElement.postfix;
	}
	
	FormHTML = FormHTML + '<input name="' + ElementName + 'ID" id="' + ElementName + 'ID" type="hidden" value="' + FormElement.id + '" />';
	
	if (ChildElement) {
		FormHTML = FormHTML + '<input name="' + ElementName + 'Child" id="' + ElementName + 'Child" type="hidden" value="1" />';
	}
	
	FormHTML = FormHTML + '</td>';
	FormHTML = FormHTML + '</tr>';
	FormHTML = FormHTML + '</table>';
	FormHTML = FormHTML + '<div id="' + ElementName + 'Children">';
	
	if (FormElement.field_value_id > 0) {
		if (FormElement.children != null && !FieldsReloading) {
			FieldsCount++;
			document.getElementById(FieldsPrefix + '_Total').value = FieldsCount;
			
			FormHTML = FormHTML + '<div id="' + FieldsPrefix + '_' + FieldsCount + '_' + 'Wrapper">' + Listings_FieldsAddEditDrawElement(FieldsCount, FormElement.children, null, true).innerHTML + '</div>';
			
			FieldsCount = document.getElementById(FieldsPrefix + '_Total').value;
		}
		else {
			Listings_FieldsCheckChildrenGet(ElementName + 'Children', FormElement.id, FormElement.field_value_id, ExistingElements);
		}
	}
	
	FormHTML = FormHTML + '</div>';
	
	var NewDiv = document.createElement('div');
	NewDiv.id = ElementName + 'Wrapper';
	NewDiv.innerHTML = FormHTML;
	
	return NewDiv;
}

function Listings_FieldsSubAddEditGet() {
}

function Listings_FieldsSubAddEditSet(NewForm) {
}

function Listings_FieldListMatch(Name, Parent_ID) {
	document.getElementById(Name + 'Wrapper').innerHTML = '<img src="' + ImagePath + 'gui/images/ajax-loader.gif" alt="Loading..." title="Loading..." class="iconLink" /> Loading...';
	
	$('#' + Name + 'Wrapper').load(Path + 'fields/get/' + Name + 'ID/' + Parent_ID);
}

function Listings_FieldAdd(Prefix) {
	var FieldHTML = '';
	
	TotalFields = parseInt(document.getElementById(Prefix + '_Total').value) + 1;
	document.getElementById(Prefix + '_Total').value = TotalFields;
	
	Field = Prefix + document.getElementById(Prefix + '_Total').value;
	
	FieldHTML = FieldHTML + '<input name="' + Field + '_Value" id="' + Field + '_Value" type="text" value="" /> <span class="Admin_Actions"><a href="#" onclick="Listings_FieldRemove(\'' + Field + '_Wrapper\'); return false;"><img src="' + ImagePath + 'gui/images/cross.png" alt="Delete" title="Delete" class="iconLink" /> Delete</a></span>';
	FieldHTML = FieldHTML + '<input name="' + Field + '_ID" type="hidden" value="" />';
	
	var NewDiv = document.createElement('div');
	NewDiv.id = Field + '_Wrapper';
	NewDiv.innerHTML = FieldHTML;
	
	document.getElementById(Prefix + '_Wrapper').appendChild(NewDiv);
	
	document.getElementById(Field + '_Value').focus();
}

function Listings_FieldRemove(Field) {
	document.getElementById(Field).innerHTML = '';
}

function Listings_FieldsInCategorySetAll(Prefix, OnOff) {
	Total = document.getElementById(Prefix + 'Total').value;
	
	for (Counter1 = 1; Counter1 <= Total; Counter1++) {
		document.getElementById(Prefix + Counter1 + '_Value').checked = OnOff;
	}
}

function Listings_CategoryAdd(Prefix) {
	if (!CategoryLoading) {
		var CategoryHTML = '';
		
		TotalCategories = parseInt(document.getElementById(Prefix + '_Total').value) + 1;
		document.getElementById(Prefix + '_Total').value = TotalCategories;
		
		Category = Prefix + document.getElementById(Prefix + '_Total').value;
		
		CategoryHTML = CategoryHTML + '<table width="100%" border="0" cellspacing="0" cellpadding="3" class="Site_Form">';
		CategoryHTML = CategoryHTML + '	<tr>';
		CategoryHTML = CategoryHTML + '		<td>';
		CategoryHTML = CategoryHTML + '			<span id="' + Category + 'Internal">';
		CategoryHTML = CategoryHTML + '				<img src="' + ImagePath + 'gui/images/ajax-loader.gif" alt="Loading..." title="Loading..." class="iconLink" /> Loading...';
		CategoryHTML = CategoryHTML + '			</span>';
		CategoryHTML = CategoryHTML + '			<div class="clr"></div>';
		CategoryHTML = CategoryHTML + '			<span><a href="#" onclick="Listings_CategoryRemove(\'' + Category + '_Wrapper\'); return false;">Remove Category</a></span>';
		CategoryHTML = CategoryHTML + '		</td>';
		CategoryHTML = CategoryHTML + '	</tr>';
		CategoryHTML = CategoryHTML + '</table>';
		
		CategoryIndex = new Array();
		
		for (Counter1 = 1; Counter1 <= TotalCategories - 1; Counter1++) {
			Listings_DropDownGet(Prefix + Counter1, '', CategoryIndex);
		}
		
		var NewDiv = document.createElement('span');
		NewDiv.id = Category + '_Wrapper';
		NewDiv.innerHTML = CategoryHTML;
		
		document.getElementById(Prefix + '_Wrapper').appendChild(NewDiv);
		
		for (Counter1 = 1; Counter1 <= TotalCategories - 1; Counter1++) {
			Listings_DropDownSet(Prefix + Counter1, '', CategoryIndex);
		}
		
		CategoryLoading = true;
		$('#' + Category + 'Internal').load(Path + 'categories/' + Category + '/' + Prefix + '_Absolute/', function() { CategoryLoading = false; Listings_FieldsAddEditGet(); });
	}
}

function Listings_CategorySet(AbsoluteName, CategoryValue) {
	return '<img src="' + ImagePath + 'gui/images/ajax-loader.gif" alt="Loading..." title="Loading..." class="iconLink" /> Loading... <input name="' + AbsoluteName + '[]" type="hidden" value="' + CategoryValue + '" />';
}

function Listings_CategoryRemove(Category) {
	document.getElementById(Category).innerHTML = '';
	
	Listings_FieldsAddEditGet();
}

function Listings_CategoryChoose(DropdownName, AbsoluteName, Selected) {
	$('#' + DropdownName).html(Listings_CategorySet(AbsoluteName, Selected));
	
	$('#' + DropdownName).load(Path + 'categories/' + DropdownName + '/' + AbsoluteName + '/' + Selected);
	
	Listings_FieldsAddEditGet();
}

function Listings_DropDownGet(OriginalName, PostFix, ValueArray) {
	if (document.getElementById(OriginalName + PostFix) != null) {
		ValueArray[OriginalName + PostFix] = document.getElementById(OriginalName + PostFix).selectedIndex;
		Listings_DropDownGet(OriginalName, '_' + document.getElementById(OriginalName + PostFix).value, ValueArray);
	}
}

function Listings_DropDownSet(OriginalName, PostFix, ValueArray) {
	if (document.getElementById(OriginalName + PostFix) != null) {
		document.getElementById(OriginalName + PostFix).selectedIndex = ValueArray[OriginalName + PostFix];
		Listings_DropDownSet(OriginalName, '_' + document.getElementById(OriginalName + PostFix).value, ValueArray);
	}
}

function Listings_SetPicture(LinkID, LinkURL, ImageID, ImageURL) {
	document.getElementById(LinkID).href = LinkURL;
	document.getElementById(ImageID).src = ImageURL;
}

function Listings_SetActivePicture(ClassPrefix, ImageID, ImagesTotal) {
	for (ImageCounter = 1; ImageCounter <= ImagesTotal; ImageCounter++) {
		document.getElementById(ClassPrefix + ImageCounter).className = 'hidden';
	}
	document.getElementById(ClassPrefix + ImageID).className = '';
}

