function utf8_encode ( argString ) {
	// Encodes an ISO-8859-1 string to UTF-8
	//
	// version: 908.406
	// discuss at: http://phpjs.org/functions/utf8_encode
	// +   original by: Webtoolkit.info (http://www.webtoolkit.info/)
	// +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// +   improved by: sowberry
	// +    tweaked by: Jack
	// +   bugfixed by: Onno Marsman
	// +   improved by: Yves Sucaet
	// +   bugfixed by: Onno Marsman
	// *     example 1: utf8_encode('Kevin van Zonneveld');
	// *     returns 1: 'Kevin van Zonneveld'
	var string = (argString+'').replace(/\r\n/g, "\n").replace(/\r/g, "\n");

	var utftext = "";
	var start, end;
	var stringl = 0;

	start = end = 0;
	stringl = string.length;
	for (var n = 0; n < stringl; n++) {
		var c1 = string.charCodeAt(n);
		var enc = null;

		if (c1 < 128) {
			end++;
		} else if (c1 > 127 && c1 < 2048) {
			enc = String.fromCharCode((c1 >> 6) | 192) + String.fromCharCode((c1 & 63) | 128);
		} else {
			enc = String.fromCharCode((c1 >> 12) | 224) + String.fromCharCode(((c1 >> 6) & 63) | 128) + String.fromCharCode((c1 & 63) | 128);
		}
		if (enc !== null) {
			if (end > start) {
				utftext += string.substring(start, end);
			}
			utftext += enc;
			start = end = n+1;
		}
	}

	if (end > start) {
		utftext += string.substring(start, string.length);
	}

	return utftext;
}

function utf8_decode ( str_data ) {
	// Converts a UTF-8 encoded string to ISO-8859-1
	//
	// version: 905.3122
	// discuss at: http://phpjs.org/functions/utf8_decode
	// +   original by: Webtoolkit.info (http://www.webtoolkit.info/)
	// +      input by: Aman Gupta
	// +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// +   improved by: Norman "zEh" Fuchs
	// +   bugfixed by: hitwork
	// +   bugfixed by: Onno Marsman
	// +      input by: Brett Zamir (http://brett-zamir.me)
	// +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// *     example 1: utf8_decode('Kevin van Zonneveld');
	// *     returns 1: 'Kevin van Zonneveld'
	var tmp_arr = [], i = 0, ac = 0, c1 = 0, c2 = 0, c3 = 0;

	str_data += '';

	while ( i < str_data.length ) {
		c1 = str_data.charCodeAt(i);
		if (c1 < 128) {
			tmp_arr[ac++] = String.fromCharCode(c1);
			i++;
		} else if ((c1 > 191) && (c1 < 224)) {
			c2 = str_data.charCodeAt(i+1);
			tmp_arr[ac++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));
			i += 2;
		} else {
			c2 = str_data.charCodeAt(i+1);
			c3 = str_data.charCodeAt(i+2);
			tmp_arr[ac++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
			i += 3;
		}
	}

	return tmp_arr.join('');
}

function base64_encode (data) {
	// Encodes string using MIME base64 algorithm
	//
	// version: 908.406
	// discuss at: http://phpjs.org/functions/base64_encode
	// +   original by: Tyler Akins (http://rumkin.com)
	// +   improved by: Bayron Guevara
	// +   improved by: Thunder.m
	// +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// +   bugfixed by: Pellentesque Malesuada
	// +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// -    depends on: utf8_encode
	// *     example 1: base64_encode('Kevin van Zonneveld');
	// *     returns 1: 'S2V2aW4gdmFuIFpvbm5ldmVsZA=='
	// mozilla has this native
	// - but breaks in 2.0.0.12!
	//if (typeof this.window['atob'] == 'function') {
	//    return atob(data);
	//}

	var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
	var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, enc="", tmp_arr = [];

	if (!data) {
		return data;
	}

	data = this.utf8_encode(data+'');

	do { // pack three octets into four hexets
		o1 = data.charCodeAt(i++);
		o2 = data.charCodeAt(i++);
		o3 = data.charCodeAt(i++);

		bits = o1<<16 | o2<<8 | o3;

		h1 = bits>>18 & 0x3f;
		h2 = bits>>12 & 0x3f;
		h3 = bits>>6 & 0x3f;
		h4 = bits & 0x3f;

		// use hexets to index into b64, and append result to encoded string
		tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);
	} while (i < data.length);

	enc = tmp_arr.join('');

	switch (data.length % 3) {
		case 1:
		enc = enc.slice(0, -2) + '==';
		break;
		case 2:
		enc = enc.slice(0, -1) + '=';
		break;
	}

	return enc;
}

function base64_decode (data) {
	// Decodes string using MIME base64 algorithm
	//
	// version: 908.406
	// discuss at: http://phpjs.org/functions/base64_decode
	// +   original by: Tyler Akins (http://rumkin.com)
	// +   improved by: Thunder.m
	// +      input by: Aman Gupta
	// +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// +   bugfixed by: Onno Marsman
	// +   bugfixed by: Pellentesque Malesuada
	// +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// +      input by: Brett Zamir (http://brett-zamir.me)
	// +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// -    depends on: utf8_decode
	// *     example 1: base64_decode('S2V2aW4gdmFuIFpvbm5ldmVsZA==');
	// *     returns 1: 'Kevin van Zonneveld'
	// mozilla has this native
	// - but breaks in 2.0.0.12!
	//if (typeof this.window['btoa'] == 'function') {
	//    return btoa(data);
	//}

	var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
	var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, dec = "", tmp_arr = [];

	if (!data) {
		return data;
	}

	data += '';

	do {  // unpack four hexets into three octets using index points in b64
		h1 = b64.indexOf(data.charAt(i++));
		h2 = b64.indexOf(data.charAt(i++));
		h3 = b64.indexOf(data.charAt(i++));
		h4 = b64.indexOf(data.charAt(i++));

		bits = h1<<18 | h2<<12 | h3<<6 | h4;

		o1 = bits>>16 & 0xff;
		o2 = bits>>8 & 0xff;
		o3 = bits & 0xff;

		if (h3 == 64) {
			tmp_arr[ac++] = String.fromCharCode(o1);
		} else if (h4 == 64) {
			tmp_arr[ac++] = String.fromCharCode(o1, o2);
		} else {
			tmp_arr[ac++] = String.fromCharCode(o1, o2, o3);
		}
	} while (i < data.length);

	dec = tmp_arr.join('');
	dec = this.utf8_decode(dec);

	return dec;
}

function onblurQuickSearchClassified(o){
	//alert('onblurQuickSearchClassified');
	if (o.value == ""){
		o.value = "Ref No / Address / Location / Price / Contact";
	}
}

function onclickQuickSearchClassified(o){
	//alert('onclickQuickSearchClassified');
	if (o.value == "Ref No / Address / Location / Price / Contact"){
		o.value = "";
	}
}

function getTabClassifiedInner(){
	var classified = '';

	switch (tabInnerClassifiedInnerClick){
		case 1:
		classified = 'R';
		break;

		case 2:
		classified = 'C';
		break;

		case 3:
		classified = 'L';
		break;

		case 4:
		classified = 'S';
		break;

		case 5:
		classified = 'N';
		break;
	}
	return classified;
}

function submitSaleQuickSearchClassified(o){
	//var TabbedPanelsClassified = new Spry.Widget.TabbedPanels("TabbedPanelsClassified");
	//var curIndex = TabbedPanelsClassified.getCurrentTabIndex();

	//var category = eval('o.form.tabclassified'+curIndex+'.value');
	var category = getTabClassifiedInner();

	if (o.form.quick_search.value == 'Ref No / Address / Location / Price / Contact'){
		o.form.quick_search.value = '';
	}

	o.form.quick_search_filter.value = '1';
	o.form.quick_search_list_type.value = 'Sale';

	submitSearchClassified(o, category);
}

function submitRentQuickSearchClassified(o){
	//var TabbedPanelsClassified = new Spry.Widget.TabbedPanels("TabbedPanelsClassified");
	//var curIndex = TabbedPanelsClassified.getCurrentTabIndex();

	//var category = eval('o.form.tabclassified'+curIndex+'.value');
	var category = getTabClassifiedInner();

	if (o.form.quick_search.value == 'Ref No / Address / Location / Price / Contact'){
		o.form.quick_search.value = '';
	}

	o.form.quick_search_filter.value = '1';
	o.form.quick_search_list_type.value = 'Rent';

	submitSearchClassified(o, category);
}

function submitQuickSearchClassified(o){
	//var TabbedPanelsClassified = new Spry.Widget.TabbedPanels("TabbedPanelsClassified");
	//var curIndex = TabbedPanelsClassified.getCurrentTabIndex();

	//var category = eval('o.form.tabclassified'+curIndex+'.value');
	var category = getTabClassifiedInner();

	if (o.form.quick_search.value == 'Ref No / Address / Location / Price / Contact'){
		o.form.quick_search.value = '';
	}

	o.form.quick_search_filter.value = '1';
	o.form.quick_search_list_type.value = '';

	submitSearchClassified(o, category);
}

function submitResetClassified(o, category) {
	var classified_search = new String();
	var search_encode = new String();
	var search_field = new String("sale,rent,country,state,location,classified_type,price_from,price_to,bedrooms_from,bedrooms_to,bathrooms_from,bathrooms_to,keywords");

	classified_search = '&classified_category=' + category;

	search_key = search_field.split(',');
	for (i=0; i<search_key.length; i++) {
		field = search_key[i];
		//handle checkbox
		switch (field) {
			case "sale" :
			case "rent" :
			break;

			default :
			classified_search = classified_search + '&' + search_key[i] + '=';
		}
	}
	
	o.form.quick_search.value = '';
	o.form.quick_search_list_type.value = '';

	classified_search = classified_search + '&quick_search=' + o.form.quick_search.value;
	classified_search = classified_search + '&quick_search_filter=' + o.form.quick_search_filter.value;
	classified_search = classified_search + '&quick_search_list_type=' + o.form.quick_search_list_type.value;

	search_encode = base64_encode(classified_search);

	itemid = o.form.Itemid.value;

	o.form.action='index.php?option=com_classified&task=search&view=classified&layout=search&Itemid='+itemid+'&search='+search_encode;
	o.form.classified_category.value=category;
	o.form.sort.value='reset';
	o.form.submit();
}

function submitSearchClassified(o, category) {
	var classified_search = new String();
	var search_encode = new String();
	var search_field = new String("sale,rent,country,state,location,classified_type,price_from,price_to,bedrooms_from,bedrooms_to,bathrooms_from,bathrooms_to,keywords");

	classified_search = '&classified_category=' + category;

	search_key = search_field.split(',');
	for (i=0; i<search_key.length; i++) {
		field = search_key[i];
		//handle checkbox
		switch (field) {
			case "sale" :
			if (document.getElementById(category+search_key[i]).checked) {
				classified_search = classified_search + '&' + search_key[i] + '=' + document.getElementById(category+search_key[i]).value;
			}
			break;

			case "rent" :
			if (document.getElementById(category+search_key[i]).checked) {
				classified_search = classified_search + '&' + search_key[i] + '=' + document.getElementById(category+search_key[i]).value;
			}
			break;

			default :
			classified_search = classified_search + '&' + search_key[i] + '=' + document.getElementById(category+search_key[i]).value;
		}
	}

	//quick_search
	if (o.form.quick_search.value == 'Ref No / Address / Location / Price / Contact'){
		o.form.quick_search.value = '';
	}

	if (o.form.quick_search_filter.value == 0){
		o.form.quick_search_list_type.value = '';
	}

	classified_search = classified_search + '&quick_search=' + o.form.quick_search.value;
	classified_search = classified_search + '&quick_search_filter=' + o.form.quick_search_filter.value;
	classified_search = classified_search + '&quick_search_list_type=' + o.form.quick_search_list_type.value;

	search_encode = base64_encode(classified_search);

	itemid = o.form.Itemid.value;

	o.form.action='index.php?option=com_classified&task=search&view=classified&layout=search&Itemid='+itemid+'&search='+search_encode;
	o.form.classified_category.value=category;
	o.form.submit();
}

function submitSearchClassified_v2(o, category) {
	var classified_search = new String();
	var search_encode = new String();
	var search_field = new String("sale,rent,state,location,classified_type,price_from,price_to,tenure,bedrooms_from,bedrooms_to,bathrooms_from,bathrooms_to");


	search_key = search_field.split(',');

	classified_search = '&classified_category=' + category;
	for (i=0; i<search_key.length; i++) {
		field = search_key[i];
		//handle checkbox
		switch (field) {
			case "sale" :
			if (document.getElementById(category+search_key[i]).checked) {
				classified_search = classified_search + '&' + search_key[i] + '=' + document.getElementById(category+search_key[i]).value;
			}
			break;

			case "rent" :
			if (document.getElementById(category+search_key[i]).checked) {
				classified_search = classified_search + '&' + search_key[i] + '=' + document.getElementById(category+search_key[i]).value;
			}
			break;

			case "classified_type" :
			var count=0;
			var classified_type_multiple = document.getElementById(category+search_key[i]);
			for(var n=0;n<classified_type_multiple.options.length;n++){
				if(classified_type_multiple.options[n].selected){
					count++;
					classified_search = classified_search + '&' + search_key[i] + count + '=' + classified_type_multiple.options[n].value;
				}
			}
			break;

			default :
			classified_search = classified_search + '&' + search_key[i] + '=' + document.getElementById(category+search_key[i]).value;
		}
	}

	//quick_search
	if (o.form.quick_search.value == 'Ref No / Address / Location / Price / Contact'){
		o.form.quick_search.value = '';
	}

	if (o.form.quick_search_filter.value == 0){
		o.form.quick_search_list_type.value = '';
	}

	classified_search = classified_search + '&quick_search=' + o.form.quick_search.value;
	classified_search = classified_search + '&quick_search_filter=' + o.form.quick_search_filter.value;
	classified_search = classified_search + '&quick_search_list_type=' + o.form.quick_search_list_type.value;

	search_encode = base64_encode(classified_search);

	itemid = o.form.Itemid.value;

	o.form.action='index.php?option=com_classified&task=search&view=classified&layout=search&Itemid='+itemid+'&search='+search_encode;
	o.form.classified_category.value=category;
	o.form.submit();
}

/*
var tabActive = new Array();;
var tabInActive  = new Array();
var tabClassifiedClick = "";
//var tabImagePath = '<?=$mainframe->getBasePath()."templates/".$mainframe->getTemplate();?>/';
var tabImagePath = '';

tabActive[1] = tabImagePath+'images/ResidentialInner_2.gif';
tabActive[2] = tabImagePath+'images/CommercialInner_2.gif';
tabActive[3] = tabImagePath+'images/LandInner_2.gif';
tabActive[4] = tabImagePath+'images/ShortTermLeaseInner_2.gif';
tabActive[5] = tabImagePath+'images/NewDevelopmentInner_2.gif';

tabInActive[1] = tabImagePath+'images/ResidentialInner_1.gif';
tabInActive[2] = tabImagePath+'images/CommercialInner_1.gif';
tabInActive[3] = tabImagePath+'images/LandInner_1.gif';
tabInActive[4] = tabImagePath+'images/ShortTermLeaseInner_1.gif';
tabInActive[5] = tabImagePath+'images/NewDevelopmentInner_1.gif';

switchClassifiedTab = function(id){
for(i=1;i<=5;i++){
if(i==id){
tabClassifiedClick = i;
eval("document.getElementById('classifiedtab"+i+"').style.display='';");
eval("document.getElementById('Image"+i+"').src='"+tabActive[i]+"';");
}else{
eval("document.getElementById('classifiedtab"+i+"').style.display='none';");
eval("document.getElementById('Image"+i+"').src='"+tabInActive[i]+"';");
}
}
}

overClassifiedTab = function(id){
for(i=1;i<=5;i++){
if(i==id){
eval("document.getElementById('Image"+i+"').src='"+tabActive[i]+"';");
}
}
}

outClassifiedTab = function(id){
for(i=1;i<=5;i++){
if(i==id){
if(tabClassifiedClick==i)
eval("document.getElementById('Image"+i+"').src='"+tabActive[i]+"';");
else
eval("document.getElementById('Image"+i+"').src='"+tabInActive[i]+"';");
}
}
}
*/
