var boundLists = new Array();
var listOptions = {};
var onFocusFunc = null;
var onChangeFunc = null;
var selectExplicitProgress = new Array();
var selectExplicitProgressCnt = new Array();
var onSelectListItemHooks = new Array();
var onSelectAjaxedHooks = new Array();
var onListChangeHooks = new Array();
var loadImg = new Image();
loadImg.src = '/images/busy.gif';

function jsCountrySelect(cdd, callback, cityajax)
{
	var parts = cdd.name.split('_');
	var prefix = (parts.length>1) ? parts[0] + '_':'';
	var srcForm = cdd.form;
	var sdd = srcForm.elements[prefix + 'State'];
	var citydd = srcForm.elements[prefix + 'City'];
	cdd.disabled = true;
	sdd.disabled = true;
	citydd.disabled = true;
	if (cityajax && cityajax.city) {
	    $('#'+cityajax.city).get(0).disabled = true;
	} else {
	    citydd.options.length = 1;

	}
	sdd.options.length = 1;

	var imgItem = document.createElement('IMG');
	imgItem.setAttribute('id', 'busy_image');
	imgItem.setAttribute('src', '/images/busy.gif');
	sdd.parentNode.appendChild(imgItem);

    $.ajax({
        url: '/act/index.php?r=ajaxCities',
        dataType: 'json',
        type: 'POST',
        data: {
            type: 'states',
            prefix: prefix,
            country: cdd.value
        },
        success:function (data)
        {
		var bgColor = data['hasPostcodes'] ? '':'#ddd';
		if (data['prefix']=='event_')
		{
			if (srcForm.event_zip)
			{
                srcForm.event_zip.value = '';
			    srcForm.event_zip.disabled = !data['hasPostcodes'];
			    srcForm.event_zip.style.backgroundColor = bgColor;
			}
		}
		else
		if (srcForm.Postcode)
		{
			srcForm.Postcode.value = '';
			srcForm.Postcode.disabled = !data['hasPostcodes'];
			srcForm.Postcode.style.backgroundColor = bgColor;
		}
	    if (data['type']=='states')
		{
			for (var stateID in data['items'])
				sdd.options[sdd.options.length] = new Option(data['items'][stateID], stateID);

			sdd.disabled = false;
		} else
		{
		    if (cityajax && cityajax.city) {
		        cityajax.country = cityajax.country?cityajax.country:'CountryID';
		        cityajax.state = cityajax.state?cityajax.state:'State';
		        $('#'+cityajax.city).get(0).disabled = true;
		        //$('#'+cityajax.city).unautocomplete();
		        $('#'+cityajax.city).val('');
		        $('#'+cityajax.city).get(0).disabled = false;
		        $('#'+cityajax.city).autocomplete("/act/index.php?r=ajaxCities", {
	                width: 260,
	                selectFirst: false,
	                url: '/act/index.php?r=ajaxCities',
	                type :'POST',
	                scroll: true,
	                extraParams: {type: 'cities', prefix: '', country: $("#"+cityajax.country).val(), state: $("#"+cityajax.state).val(), test: true}
	            });
		        $('#'+cityajax.city).result(function(){if(arguments[1] && arguments[1][1]){$('#'+cityajax.cityid).val(arguments[1][1])}});
		    } else {
    			for (var cityID in data['items'])
    				citydd.options[citydd.options.length] = new Option(data['items'][cityID], cityID);
    			citydd.disabled = false;
		    }
		}
		var busyItem = document.getElementById('busy_image');
		busyItem.parentNode.removeChild(busyItem);

		srcForm.elements[prefix + 'CountryID'].disabled = false;
		if(callback) {
            callback();
        }
	}});
}

function jsCountrySelect_photos(cdd)
{
	var parts = cdd.name.split('_');
	var prefix = (parts.length>1) ? parts[0] + '_':'';
	var srcForm = cdd.form;
	var sdd = srcForm.elements[prefix + 'State'];
	var citydd = srcForm.elements[prefix + 'City'];
	cdd.disabled = true;
	sdd.disabled = true;
	citydd.disabled = true;
	sdd.options.length = 1;
	citydd.options.length = 1;

	var imgItem = document.createElement('IMG');
	imgItem.setAttribute('id', 'busy_image');
	imgItem.setAttribute('src', '/images/busy.gif');
	sdd.parentNode.appendChild(imgItem);
    $.ajax({
        url: '/act/index.php?r=ajaxCities',
        dataType: 'json',
        type: 'POST',
        data: {
            type: 'states',
            prefix: prefix,
            country: cdd.value
        },
        success:function (data) {

		var srcForm = document.campaignEvent;
		var sdd = srcForm.elements[data['prefix'] + 'State'];
		var citydd = srcForm.elements[data['prefix'] + 'City'];

		if (data['type']=='states')
		{
			for (var stateID in data['items'])
				sdd.options[sdd.options.length] = new Option(data['items'][stateID], stateID);

			sdd.disabled = false;
		} else
		{
			for (var cityID in data['items'])
				citydd.options[citydd.options.length] = new Option(data['items'][cityID], cityID);
			citydd.disabled = false;
		}
		var busyItem = document.getElementById('busy_image');
		busyItem.parentNode.removeChild(busyItem);

		srcForm.elements[data['prefix'] + 'CountryID'].disabled = false;

	}});
}
function jsStateSelect(sdd, callback, cityajax)
{
    var parts = sdd.name.split('_');
	var prefix = (parts.length>1) ? parts[0] + '_':'';
	var srcForm = sdd.form;
	var cdd = srcForm.elements[prefix + 'CountryID'];
	var citydd = srcForm.elements[prefix + 'City'];

	cdd.disabled = true;
	sdd.disabled = true;
	citydd.disabled = true;
	if (cityajax && cityajax.city) {

	} else {
	    citydd.options.length = 1;
	}
	var imgItem = document.createElement('IMG');
	imgItem.setAttribute('id', 'busy_image');
	imgItem.setAttribute('src', '/Develop/images/busy.gif');
	citydd.parentNode.appendChild(imgItem);
	if (cityajax && cityajax.city) {
	    cityajax.country = cityajax.country?cityajax.country:'CountryID';
        cityajax.state = cityajax.state?cityajax.state:'State';
        $('#'+cityajax.city).get(0).disabled = true;
        //$('#'+cityajax.city).unautocomplete();
        $('#'+cityajax.city).val('');
        $('#'+cityajax.city).get(0).disabled = false;
        $('#'+cityajax.city).autocomplete("/act/index.php?r=ajaxCities", {
            width: 260,
            selectFirst: false,
            url: '/act/index.php?r=ajaxCities',
            type :'POST',
            scroll: true,
            extraParams: {type: 'cities', prefix: '', country: $("#"+cityajax.country).val(), state: $("#"+cityajax.state).val(), test: true}
        });
        $('#'+cityajax.city).result(function(){if(arguments[1] && arguments[1][1]){$('#'+cityajax.cityid).val(arguments[1][1])}});
        var busyItem = document.getElementById('busy_image');
        busyItem.parentNode.removeChild(busyItem);
        srcForm.elements[prefix + 'CountryID'].disabled = false;
        srcForm.elements[prefix + 'State'].disabled = false;
        citydd.disabled = false;
    } else {
	$.ajax({
        url: '/act/index.php?r=ajaxCities',
        dataType: 'json',
        type: 'POST',
        data: {
            type: 'cities',
            prefix: prefix,
            state: sdd.value,
            country: cdd.value
        },
        success:function (data) {


    		for (var cityID in data['items'])
    			citydd.options[citydd.options.length] = new Option(data['items'][cityID], cityID);


        var busyItem = document.getElementById('busy_image');
        busyItem.parentNode.removeChild(busyItem);
		srcForm.elements[prefix + 'CountryID'].disabled = false;
		srcForm.elements[prefix + 'State'].disabled = false;
		citydd.disabled = false;
		if(callback) {
		    callback();
		}
	}});}
}
function load_auto_complite(cityajax) {
    if (cityajax && cityajax.city) {
        cityajax.country = cityajax.country?cityajax.country:'CountryID';
        cityajax.state = cityajax.state?cityajax.state:'State';
        $('#'+cityajax.city).unautocomplete();
        $('#'+cityajax.city).autocomplete("/act/index.php?r=ajaxCities", {
            width: 260,
            selectFirst: false,
            url: '/act/index.php?r=ajaxCities',
            type :'POST',
            scroll: true,
            extraParams: {type: 'cities', prefix: '', country: $("#"+cityajax.country).val(), state: $("#"+cityajax.state).val(), test: ''}
        });
        $('#'+cityajax.city).result(function(){if(arguments[1] && arguments[1][1]){$('#'+cityajax.cityid).val(arguments[1][1])}});
    }
}
//function jsStateSelect(sdd)
//{
//    var parts = sdd.name.split('_');
//	var prefix = (parts.length>1) ? parts[0] + '_':'';
//	var srcForm = sdd.form;
//	var cdd = srcForm.elements[prefix + 'CountryID'];
//	var citydd = srcForm.elements[prefix + 'City'];
//
//	cdd.disabled = true;
//	sdd.disabled = true;
//	citydd.disabled = true;
//
//	citydd.options.length = 1;
//	var imgItem = document.createElement('IMG');
//	imgItem.setAttribute('id', 'busy_image');
//	imgItem.setAttribute('src', '/images/busy.gif');
//	citydd.parentNode.appendChild(imgItem);
////	$.ajax({
////		url: '/act/index.php?r=ajaxCities',
////		dataType: 'html',
////		type: 'POST',
////		data: {type: 'cities', prefix: prefix, country: cdd.value, state: sdd.value, test: true},
////		success: function(data){
////			$(citydd).html('');
//////			$('body').append(data.replace('/\0/g', '0').replace('/\(.)/g', '$1'));
////			var ddlObj1=$("#replaceddl").finalselect({id:"test",selectText: 'Select...', zIndex:1,viewWidth:'260px',viewHeight:'150px',selectImage:'http://finalevillee.googlepages.com/select.png'});
////			ddlObj1.addHTML(data.replace('/\0/g', '0').replace('/\(.)/g', '$1'));
////			checkScrollStartDown('test',ddlObj1, sdd, 20, 20);
////			var busyItem = document.getElementById('busy_image');
////			busyItem.parentNode.removeChild(busyItem);
////			$('#CityInput').val('Enter city...');
////			srcForm.elements[prefix + 'CountryID'].disabled = false;
////			srcForm.elements[prefix + 'State'].disabled = false;
////			citydd.disabled = false;
////		}
////	});
//	makeRequest('/act/index.php?r=ajaxCities', function (rawData)
//	{
//
//		var data = rawData;
//		for (var cityID in data['items'])
//			citydd.options[citydd.options.length] = new Option(data['items'][cityID], cityID);
//		var busyItem = document.getElementById('busy_image');
//		busyItem.parentNode.removeChild(busyItem);
//
//		srcForm.elements[prefix + 'CountryID'].disabled = false;
//		srcForm.elements[prefix + 'State'].disabled = false;
//		citydd.disabled = false;
//	}, 'type=cities&prefix=' + prefix + '&country=' + cdd.value + '&state=' + sdd.value +'');
//}
var last;
function loadStateData(){
	if(typeof arguments[2] != 'undefined'){
		clearInterval(arguments[2]);
	}
	var obj  = arguments[3];
	var sdd = arguments[4];
	var id = arguments[5];
	var limit1 = arguments[0];
	var limit2 = arguments[1];
	var parts = sdd.name.split('_');
	var prefix = (parts.length>1) ? parts[0] + '_':'';
	var srcForm = sdd.form;
	var cdd = srcForm.elements[prefix + 'CountryID'];
	var citydd = srcForm.elements[prefix + 'City'];
	var text_element = $(".textshow",$("#"+id+"-Text"));
	var text = text_element.html();
	var selects = $(".selectitem", $("#" + id + "-selectshow"));
	text_element.html('Wait Loading...');
	if(!StateCach[cdd.value]){
		StateCach[cdd.value] = {};
	}
	if (!StateCach[cdd.value][limit1 + "-" + limit2]) {
		$.ajax({
			url: '/act/index.php?r=ajaxCities',
			dataType: 'html',
			type: 'POST',
			data: {
				type: 'cities',
				prefix: prefix,
				country: cdd.value,
				state: sdd.value,
				test: true,
				limit1: limit1,
				limit2: limit2
			},
			success: function(data){
				text_element.html(text);
				last = selects.eq(selects.length - 2);
				StateCach[cdd.value][limit1 + "-" + limit2] = data.replace('/\0/g', '0').replace('/\(.)/g', '$1');
				obj.addHTML(StateCach[cdd.value][limit1 + "-" + limit2]);
				selects = $(".selectitem", $("#" + id + "-selectshow"));
				if (selects.length > 40) {
					for (var i = 0; i < 20; i++) {
						selects.get(i).parentNode.removeChild(selects.get(i));
					}
					last.get(0).scrollIntoView(true);
					if (data != '' && limit1 - 40 >= 0) {
						clearInterval(scrolltimeUp);
						checkScrollStartUp(id, obj, sdd, limit1 - 40, limit2);
					}
				}
				if (data != '') {
					clearInterval(scrolltimeDown);
					checkScrollStartDown(id, obj, sdd, limit1 + 20, limit2);
				}

			}
		});
	}else{
		text_element.html('Wait Loading...');
		last = selects.eq(selects.length - 2);
		obj.addHTML(StateCach[cdd.value][limit1 + "-" + limit2]);
		text_element.html(text);

		if (selects.length > 40) {
			for (var i = 0; i < 20; i++) {
				selects.get(i).parentNode.removeChild(selects.get(i));
			}
			last.get(0).scrollIntoView(true);
			if (StateCach[cdd.value][limit1 + "-" + limit2] != '' && limit1 - 40 >= 0) {
				clearInterval(scrolltimeUp);
				checkScrollStartUp(id, obj, sdd, limit1 - 40, limit2);
			}
		}
		if (StateCach[cdd.value][limit1 + "-" + limit2] != '') {
			clearInterval(scrolltimeDown);
			checkScrollStartDown(id, obj, sdd, limit1 + 20, limit2);
		}
	}
}
var first;
function loadStateDataUp(){
	if(typeof arguments[2] != 'undefined'){
		clearInterval(arguments[2]);
	}
	var obj  = arguments[3];
	var sdd = arguments[4];
	var id = arguments[5];
	var limit1 = arguments[0];
	var limit2 = arguments[1];
	var parts = sdd.name.split('_');
	var prefix = (parts.length>1) ? parts[0] + '_':'';
	var srcForm = sdd.form;
	var cdd = srcForm.elements[prefix + 'CountryID'];
	var citydd = srcForm.elements[prefix + 'City'];
	var text_element = $(".textshow",$("#"+id+"-Text"));
	var text = text_element.html();
	var selects = {};
	text_element.html('Wait Loading...');
	if(!StateCach[cdd.value]){
		StateCach[cdd.value] = {};
	}
	if (!StateCach[cdd.value][limit1 + "-" + limit2]) {
		$.ajax({
			url: '/act/index.php?r=ajaxCities',
			dataType: 'html',
			type: 'POST',
			data: {
				type: 'cities',
				prefix: prefix,
				country: cdd.value,
				state: sdd.value,
				test: true,
				limit1: limit1,
				limit2: limit2
			},
			success: function(data){
				text_element.html(text);
				StateCach[cdd.value][limit1 + "-" + limit2] = data.replace('/\0/g', '0').replace('/\(.)/g', '$1');
				obj.addHTMLUp(StateCach[cdd.value][limit1 + "-" + limit2]);
				selects = $(".selectitem", $("#" + id + "-selectshow"));
				if (selects.length > 40) {
					for (var i = 0; i < 20; i++) {
						selects.get(selects.length - (i+1)).parentNode.removeChild(selects.get(selects.length - (i+1)));
					}
					selects.get(22).scrollIntoView(true);
					clearInterval(scrolltimeDown);
					checkScrollStartDown(id, obj, sdd, limit1 + 40, limit2);
				}
				if (data != '' && limit1 - 20 >= 0) {
					clearInterval(scrolltimeUp);
					checkScrollStartUp(id, obj, sdd, limit1 - 20, limit2);
				}

			}
		});
	}else{
		text_element.html('Wait Loading...');
		obj.addHTMLUp(StateCach[cdd.value][limit1 + "-" + limit2]);
		text_element.html(text);
		selects = $(".selectitem", $("#" + id + "-selectshow"));
		if (selects.length > 40) {
			for (var i = 1; i <= 20; i++) {
				if(selects.get(selects.length - (i)).parentNode){
					selects.get(selects.length - (i)).parentNode.removeChild(selects.get(selects.length - (i)));
				}
			}
			selects.get(22).scrollIntoView(true);
			clearInterval(scrolltimeDown);
			checkScrollStartDown(id, obj, sdd, limit1 + 40, limit2);
		}
		if (StateCach[cdd.value][limit1 + "-" + limit2] != '' && limit1 - 20 >= 0) {
			clearInterval(scrolltimeUp);
			checkScrollStartUp(id, obj, sdd, limit1 - 20, limit2);
		}
	}
}
var StateCach ={};
var scrolltimeDown;
function checkScrollStartDown(id, obj, sdd, limit1, limit2){
	var scrolltime;
	 var checkScroll = function(){
	 	 if(document.getElementById(id+"-selectshow").scrollTop + document.getElementById(id+"-selectshow").clientHeight + 5 > document.getElementById(id+"-selectshow").scrollHeight && document.getElementById(id+"-selectshow").style.display != "none"){
		 	loadStateData(limit1 , limit2, scrolltime, obj, sdd, id);
		 }
	 }
	 scrolltime = setInterval(checkScroll, 500);
	 scrolltimeDown = scrolltime;
}
var scrolltimeUp;
function checkScrollStartUp(id, obj, sdd, limit1, limit2){
	var scrolltime;
	 var checkScroll = function(){
	 	 if(document.getElementById(id+"-selectshow").scrollTop == 0 && document.getElementById(id+"-selectshow").clientHeight < document.getElementById(id+"-selectshow").scrollHeight && document.getElementById(id+"-selectshow").style.display != "none"){
		 	loadStateDataUp(limit1 , limit2, scrolltime, obj, sdd, id);
		 }
	 }
	 scrolltime = setInterval(checkScroll, 500);
	 scrolltimeUp = scrolltime;
}
