// instantiate sender XMLHttpRequest object
var senderXMLHttpObj=getXMLHttpRequestObject();
// instantiate receiver XMLHttpRequest object
var receiverXMLHttpObj=getXMLHttpRequestObject();

function set_req_fields() {
	var omraade = document.getElementById('omraade');
	document.getElementById('modtagerpostnr').value=omraade.options[omraade.selectedIndex].text.substring(0,4);
	document.getElementById('modtagerby').value=omraade.options[omraade.selectedIndex].text.substring(5,255);
}

// for 3.5_rediger
function reload_shops(product_id, orderline_id) {
	if(product_id.length == 0 || orderline_id == 0) {
		return false;
	}
	checkForPickupInfo(orderline_id);
	global_orderline_id = orderline_id;
	var date = document.getElementById('delivery_day_'+orderline_id).value+'-'+document.getElementById('delivery_month_'+orderline_id).value+'-'+document.getElementById('delivery_year_'+orderline_id).value;
	var city = document.getElementById('receiver_city_'+orderline_id).value;
	var zip = document.getElementById('receiver_zip_'+orderline_id).value;
	var shop_forhandler = document.getElementById('shop_forhandler').value;
	
	// Check om det er en firmalevering
	var is_company_delivery = check_is_company_delivery();
	

	request_shops(date, zip, city, product_id, shop_forhandler, is_company_delivery);
}

// for 3.5_rediger
function request_shops(date,zipcode,city,vareid,shop_forhandler, orderlineId, is_company_delivery) {
	try {
		senderXMLHttpObj.open('POST','/bestil/rpc_members.php',true);
		senderXMLHttpObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		senderXMLHttpObj.send('date='+escape(date)+'&zipcode='+zipcode+'&city='+escape(city)+'&vareid='+vareid+'&force_area_check=true&shop_forhandler='+shop_forhandler+'&is_company_delivery='+is_company_delivery);
		senderXMLHttpObj.onreadystatechange=function() {
						senderStatusChecker(display_shops);
					};
	} catch (e) {
		//alert(e.message);
	}
}

// for 3.5_rediger
function display_shops(reqObj) {
	var message=reqObj.responseText;
	if(message == 'no_area_available') {
		alert('Du har oppgitt et postnr som enten ikke finnes i vårt system eller som vi ikke kan levere til. Prøv å fjern postnummeret og skriv inn bare stedet slik at systemet kan lete frem et postnr som passer. Hvis du fortsatt får samme feilmelding, kan vi dessverre ikke levere til ønsket sted.');
		return false;
	} else if(message.substring(0,2)=='##') {
		alert(message.substring(2));
		return false;
	}
	var members=reqObj.responseText.split("\t\n");
	var newoption,row;
	var sel = document.getElementById("shop_select_"+global_orderline_id);
	sel.options.length = 0;
	var options_exists = false;

	if(members.length>0) {
		/*if(lev.value!='') {
			var standardlev = Array();
			for(t=0;t<members.length;t++) {
				row = members[t].split('|');
				if(row[0]==lev.value) {
					standardlev[0] = members[t];
				}
			}
			if(standardlev.length==1) {
				members = standardlev;
			}
		}*/
		var leverandoer = document.getElementById('shop_forhandler').value;
		var levoption = '';
		for(i=0;i<members.length;i++) {
			if (members[i].length>2) {
				row = members[i].split('|');
				if (row.length==4) {
					value = row[1];
					newoption = new Option(value,row[0]);
					sel.options[sel.options.length] = newoption;

					if(leverandoer > 1 && row[0]==leverandoer) {
						levoption = new Option(value, row[0]);
						levoption.selected = true;
					}

					if(levoption != '') {
						sel.options.length = 0;
						sel.options[sel.options.length] = levoption;
					}
					options_exists = true;
				}
			}
		}
		if(options_exists === true) {
			setTimeout('initAddonProducts("shop_select_"+global_orderline_id, global_orderline_id)', 100);
			document.getElementById('pickup_'+global_orderline_id).checked == true ? setTimeout('memberInfo.checkForMemberInfo()', 100) : '';
		}
		if(options_exists == false) {
			newoption = new Option('Du må velge en senere leveringsdato','null');
			sel.options[sel.options.length] = newoption;
		}
	} else {
		newoption = new Option('Du må velge en senere leveringsdato','null');
		sel.options[sel.options.length] = newoption;
	}
}

function get_date(set_date) {
	if (set_date == true) {
		sector_area_first_available_delivery($("#modtagerpostnr").val());
	}
	var date;
	date = document.getElementById('datodag').value+'-'+document.getElementById('datomd').value+'-'+document.getElementById('datoaar').value;
	if(document.getElementById('full_date')) {
		document.getElementById('full_date').value = date;
	}
	if(document.getElementById('funeral_hour')) {
		f = document.getElementById('funeral_hour');
		m = document.getElementById('funeral_minutes');
		date = date+' '+f[f.selectedIndex].value+m[m.selectedIndex].value;
	}
	return date;
}

function reset_forhandler() {
	var s = document.getElementById('udfoerer');
	s.length = 0;
	//newoption = new Option('Vælg et område i boksen ovenover','null');
	//s.options[s.options.length] = newoption;
}

function check_date() {
	today = new Date();
	delivery_date = new Date(20+document.getElementById('datoaar').value,document.getElementById('datomd').value-1,document.getElementById('datodag').value,23,59,59);
	if(delivery_date<today) {
		alert("Datoen du har valgt har passert");
		return (false);
	}
	/*oneyearfromnow = new Date(today.getFullYear(),today.getMonth(),today.getDate()+365);
	if(oneyearfromnow<delivery_date) {
		alert("Leveringsdatoen du har angivet ligger mere 365 dage ude i fremtiden. Vølg venligst en anden leveringsdato");
		return (false);
	}*/
	return (true);
}

function reload_udfoerer() {
	var s = document.getElementById('modtagerland');
	var modtagerland = s./*options[s.selectedIndex].*/value;
	var udfoerer = document.getElementById('udfoerer');
	modtagerland = modtagerland!='' ? modtagerland : 1;
	if(modtagerland == 1) {
		// Hvis det ikke er en editering saa force standard_leverandor saa leverandor ikke skiftes af random naar der vaelges anden dato.
		if ($('#isedit').val() == '') {
			$('#standard_leverandor').val(udfoerer.options[udfoerer.selectedIndex].value);
		}
		//alert($('#standard_leverandor').val());
		reset_forhandler();
		if(document.getElementById('modtagerpostnr').value!='' &&
			document.getElementById('modtagerby').value!='') {
			var date = get_date();
			
			// Check om det er en firmalevering
			var is_company_delivery = check_is_company_delivery();

			request_members(date,
							document.getElementById('modtagerpostnr').value,
							document.getElementById('modtagerby').value, product_id, document.getElementById('shop_forhandler').value, is_company_delivery);
			return true;
		}
		return false;
	} else {
		var delivery_date = new Date(20+document.getElementById('datoaar').value,document.getElementById('datomd').value-1,document.getElementById('datodag').value);
		var today = new Date();
		if(delivery_date.getFullYear()==today.getFullYear() && delivery_date.getMonth() == today.getMonth() && delivery_date.getDate() == today.getDate()) {
			// delivery today
			alert('Blomster som skal leveres i utlandet må bestilles senest kl 15 dagen før levering');
			return false;
		} else if (delivery_date.getFullYear()==today.getFullYear() && delivery_date.getMonth == today.getMonth && delivery_date.getDate == today.getDate+1) {
			// delivery tomorrow
			if(today.getHours >= 15) {
				alert('Blomster som skal leveres i utlandet må bestilles senest kl 15 dagen før levering');
			} else {
				return true;
			}
		} else {
			return true;
		}
	}
}

// getXMLHttpRequest object
function getXMLHttpRequestObject() {
	var xmlobj;
	// check for existing requests
	if(xmlobj!=null&&xmlobj.readyState!=0&&xmlobj.readyState!=4){
		xmlobj.abort();
	}
	try {
		// instantiate object for Mozilla, Nestcape, etc.
		xmlobj = new XMLHttpRequest();
	} catch(e) {
		try {
			// instantiate object for Internet Explorer
			xmlobj = new ActiveXObject('Microsoft.XMLHTTP');
		}
		catch(e) {
			// Ajax is not supported by the browser
			xmlobj = null;
			return false;
		}
	}
	return xmlobj;
}

// check status asgof sender object
function senderStatusChecker(func) {
	// check if request is completed
	try {
		if(senderXMLHttpObj.readyState==4) {
			if(senderXMLHttpObj.status==200) {
				func(senderXMLHttpObj);
			} else {
				//console.log('Failed to get response :'+ senderXMLHttpObj.status);
			}
		} else {
			//console.log('ReadyState: '+senderXMLHttpObj.readyState);
		}
	} catch (e) {
		//console.log(e.message);
	}
}

function request_cities(zipcode,city,mode) {
	switch(mode){
		case 'city':
			if(city.length>0) {
				try {
					senderXMLHttpObj.open('POST','/bestil/rpc_cities.php',true);
					senderXMLHttpObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
					senderXMLHttpObj.send('zipcode='+zipcode+'&city='+escape(city)+'&mode='+mode);
					senderXMLHttpObj.onreadystatechange=function() {
						senderStatusChecker(display_cities);
					}
				} catch (e) {
					//request_cities(document.getElementById('modtagerby').value,'city');
				}
			} else {
				//document.getElementById('omraade').options.length=0;
			}
		break;
		case 'zip':
			if(zipcode.length>3) {
				senderXMLHttpObj.open('POST','/bestil/rpc_cities.php',true);
				senderXMLHttpObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
				senderXMLHttpObj.send('zipcode='+zipcode+'&mode='+mode);
				senderXMLHttpObj.onreadystatechange=function() {
						senderStatusChecker(display_cities);
				};
			}
		break;
	}
	return true;
}

function display_cities(reqObj) {
	var message=reqObj.responseText;

	var messages=message.split("\t\n")
	var newoption,row;
	var s = document.getElementById("omraade");
	var a = document.getElementById('area_not_available');
	s.options.length = 0;
	if(messages.length>1) {
		for(i=0;i<messages.length;i++) {
			if (messages[i].length>3) {
				row = messages[i].split('|');
				if (row.length==3) {
					a.value='2';
					value = row[1]+' '+row[2];
					newoption = new Option(value,row[0]);
					s.options[s.options.length] = newoption;
				}
			}
		}
		check_count();
	} else {
		if(a.value=='0') {
			//alert(message);
		}
		a.value='1';
	}
}

function check_count() {
	var s = document.getElementById("omraade");
	if(s.options.length==1) {
		var date = get_date();
		var zipcode = s.options[0].text.substring(0,4);
		var city = s.options[0].text.substring(5,255);
		var vareid = document.getElementById("vareid").value;
		var shop_forhandler = document.getElementById("shop_forhandler").value;
		
		// Check om det er en firmalevering
		var is_company_delivery = check_is_company_delivery();
		
		s.options[0].selected = true;
		set_req_fields();
		setTimeout('request_members("'+date+'","'+zipcode+'","'+city+'","'+vareid+'","'+shop_forhandler+'","'+is_company_delivery+'")',50);
	}
}

function request_members(date,zipcode,city,vareid,shop_forhandler, is_company_delivery) {
	try {
		PickupAvailable.send('modtagerpostnr', 'pickup');
		var pickup = document.getElementById('pickup').checked == true ? 1 : 0;
		senderXMLHttpObj.open('POST','/bestil/rpc_members.php',true);
		senderXMLHttpObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		senderXMLHttpObj.send('date='+escape(date)+'&zipcode='+zipcode+'&city='+escape(city)+'&vareid='+vareid+'&shop_forhandler='+shop_forhandler+'&pickup='+pickup+'&is_company_delivery='+is_company_delivery);
		senderXMLHttpObj.onreadystatechange=function() {
						senderStatusChecker(display_members);
					};
	} catch (e) {
		//alert(e.message);
	}
}

function display_members(reqObj) {
	var message=reqObj.responseText;
	if(message.substring(0,2)=='##') {
		alert(message.substring(2));
		return false;
	}
	var members=reqObj.responseText.split("\t\n");
	var newoption,row;
	var sel = document.getElementById("udfoerer");
	sel.options.length = 0;
	var options_exists = false;

	if(members.length>0) {
		var leverandoer = document.getElementById('shop_forhandler').value;
		var preselected_udfoerer = document.getElementById('standard_leverandor').value;
		var isedit = document.getElementById('isedit').value;
		var levoption = '';
		for(i=0;i<members.length;i++) {
			if (members[i].length>2) {
				row = members[i].split('|');
				if (row.length==4) {
					value = row[1];
					newoption = new Option(value,row[0]);

					if (row[0]==preselected_udfoerer) {
						newoption.selected = true;
					}
					sel.options[sel.options.length] = newoption;
					
					if(leverandoer > 1 && row[0]==leverandoer) {
						levoption = new Option(value, row[0]);
						levoption.selected = true;
					}

					if(levoption != '') {
						sel.options.length = 0;
						sel.options[sel.options.length] = levoption;
					}
					options_exists = true;
				}
			}
		}
		var funeral = document.getElementById('funeral').value;
		if(options_exists == false) {
			newoption = new Option('Du må velge en senere leveringsdato','null');
			sel.options[sel.options.length] = newoption;
		} else {
			senderXMLHttpObj=getXMLHttpRequestObject();
			setTimeout('checkForPickupInfo()', 10);
			setTimeout('memberInfo.requestMemberInfo()', 10);
			setTimeout('initAddonProducts("udfoerer", "", product_id)', 100);
		}
	} else {
		newoption = new Option('Du må velge en senere leveringsdato','null');
		sel.options[sel.options.length] = newoption;
	}
	if(PickupAvailable.pickupFailed == true) {
		sel.options.length = 0;
		PickupAvailable.pickupFailed = false;
	}
}

function sector_area_first_available_delivery(zipcode) {
	$.ajaxSetup({async: false});

	// Check om det er en firmalevering
	var is_company_delivery = check_is_company_delivery();

	$.get('/rpc/sector_area_first_available_delivery.php', {zip_code: zipcode, company_delivery: is_company_delivery}, function(dateData){
  								adjust_dates(dateData);
							});
}

function adjust_dates(dateData) {
	//var obj = $.json.decode(dateData);
	var dateData = eval('(' + dateData + ')');
	var firstDeliveryDate = dateData.date_hit;
	firstDeliveryDate = firstDeliveryDate.split('-');
	
	// fjern evt. 0 fra 02, saa det bliver 2
	
	// preselect maaned + aar for first available delivery
	$("#datomd").selectOptions(firstDeliveryDate[1]);
	$("#datoaar").selectOptions(firstDeliveryDate[2]);
	
	// Gendan leveringsdage udfra data og saet default dato
	$("#datodag").removeOption(/./);
	
	$.each(dateData.deliverdates, function(name, value){
		$("#datodag").addOption(value, value);
	});
	
	$("#datodag").selectOptions(firstDeliveryDate[0]);
}




function request_deadlines(date,zipcode,city,vareid) {
	try {
		senderXMLHttpObj.open('POST','/bestil/rpc_deadlines.php',true);
		senderXMLHttpObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		senderXMLHttpObj.send('date='+escape(date)+'&zipcode='+zipcode+'&city='+escape(city)+'&vareid='+vareid);
		senderXMLHttpObj.onreadystatechange=function() {
						senderStatusChecker(display_deadlines);
					};
	} catch (e) {
		//alert(e.message);
	}
}

function set_treeview(menu_id) {
	/*try {
		senderXMLHttpObj.open('POST','/shop_pages/set_treeview.php',true);
		senderXMLHttpObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		senderXMLHttpObj.send('menu_id='+menu_id);
		senderXMLHttpObj.onreadystatechange=function() {
						senderStatusChecker(treeview_output);
					};
	} catch (e) {
		//alert(e.message);
	}*/
}

function treeview_output(reqObj) {
	var message=reqObj.responseText;
}


function display_deadlines(reqObj) {
	var message=reqObj.responseText;
	write_result(message);
}

function check_delivery() {
	alert('test7');
}

function check_is_company_delivery() {
	// Check om det er en firmalevering
	return ($("#modtagerfirma").val().length > 2) ? 1 : 0;	
}
