	var domain_ids = [];
	var batch_id = '';
	var usb_type = '';
	$(function() {
		$('#loading').css('display', 'none');
		$('#step2-2').css('display', 'none');

		$('#dlg').dialog({
			bgiframe:true,
			autoOpen: false,
			width: 450,
			height: 250, 
			modal: true,
			buttons: {
				Ok: function() {
					$('#dlg').dialog('close');
				}
			}
		});
		
		//if ($('#dlg-confirm-usb').length > 0) {
			$('#dlg-confirm-usb').dialog({
				bgiframe:true,
				autoOpen: false,
				width: 450,
				height: 280, 
				modal: true,
				buttons: {
					'Cancel': function() {
						$(this).dialog('close');
					},
					'Ok': function() {
						//var usb_type = document.forms[0].usb_type.value;
						var id = batch_id;
						var usb = usb_type;
						var url = '/redemption/admin';
						var qty2 = $('#godaddy_asia_usb_count').val();
						//alert('batch id: '+batch_id+" usb_type: "+usb_type);
						$.post(url, {submit: 'UPDATE', id:id, s:'COMPLETE', usb:usb, qty2:qty2}, 
						function(data) {
							if (data.status == 'OK') {
								$('#batch_row_'+id).remove();
								$('#dlg-confirm-usb').dialog('close');
							} else {
								alert(data.message);
							}
						}, "json");
						
					}
				}			
			});
		//}
		
		$('#status-def-dlg').dialog({
			bgiframe: true,
			autoOpen: false,
			top: 50,
			width: 600,
			height: 300,
			modal: true,
			buttons: {
				Ok: function() {
					$('#status-def-dlg').dialog('close');
				}
			}
		});
		
		$('#pop-status-explain').click(function() {
			$('#status-def-dlg').dialog('open');
		});
		
		//alert("jQuery working...");
		$('#menu li').hover(function() {
			$(this).css('background', 'Silver');
		},
		function() {
			$(this).css('background', '#FCFCFC');
		});	
		
		$('#login-button').click(function() {
			$('#step2-1').css('display', 'inline');
			$('#step2-2').css('display', 'none');
			var domain = $('#domain').val();
			var code = $('#code').val();
			if ((domain != '') && (code != null)) {
				// send JSON request
				var url = "/redemption";
				//alert(url);
				$.post(url, {submit: 'CHECK', code: code, domain: domain}, 
					function(data) {
						// if failed, display dialog box with error msg					
					if (!data.validate) {
							if (data.message == 'invalid') {
								$('#not-found-msg').css('display', 'inline');
								$('#custom-msg').css('display', 'none');							
							} else {
								$('#not-found-msg').css('display', 'none');
								$('#custom-msg').text(data.message);
								$('#custom-msg').css('display', 'inline');
							}
							$('#dlg').dialog('open');
							return;
					}
					if (data.object != null) {
						// if success, fadeout form, display step2 layer
						$('#name').val(data.object.name);
						$('#organisation').val(data.object.organisation);
						$('#address1').val(data.object.address1);
						$('#address2').val(data.object.address2);
						$('#address3').val(data.object.address3);
						$('#city').val(data.object.city);
						$('#state').val(data.object.state);
						$('#postal').val(data.object.postal);
						$('#country').val(data.object.country);
						//$('#country').selectOptions(data.object.country);
						
						if (data.object.cobrand.logo != '') {
							//var div = document.getElementById('cobrand-logo');
							var html = '<p><img class="img-logo" src="'+data.object.cobrand.logo+'" alt=""/></p>';
							$('#cobrand-logo').html(html);
						}
					}
					if (data.domains != null) {
						for(var i=0;i<data.domains.length;i++) {
							var o = data.domains[i];
							var tr = '<tr>';
							tr += '<td class="table-cell">'+o.domain+'</td>';
							tr += '<td class="table-cell">'+o.creation_date+'</td>';
							tr += '<td class="table-cell">'+o.term+'</td>';
							tr += '<td class="table-cell">'+o.status+'</td>';
							if (o.status == 'Available') {
								tr += '<td class="table-cell"><input type="checkbox" id="'+o.domain_id+'" onclick="updateDomainId(this.id, this.checked)"/></td>';
							} else {
								tr += '<td>&nbsp;</td>';
							}
							tr += '</tr>';
							$('#domain-creation').children('tbody').append(tr);
						}
					}
					
					$('#step1').fadeOut(function() {
						$('#step2').fadeIn();
					});							
				}, "json");

			} else {
				alert('Missing input.');
			}
		});
		
		$('#submit-button').click(function() {
			$('#domain_ids').val(getDomainIds());
			//console.log($('#domain_ids').val());
			
			if (domain_ids.length == 0) {
				alert('No domain selected.');
				return;
			}
			
			$('#usb-redeemed').text(domain_ids.length);
			
			$('#step2-1').fadeOut(function() {
				$('#step2-2').fadeIn();
			});
						
			$('.field-input').fadeOut(function() {
				$('.field-readonly').fadeIn(function() {
					$('#name_ro').text($('#name').val());			
					$('#organisation_ro').text($('#organisation').val());
					$('#address1_ro').text($('#address1').val());
					$('#address2_ro').text($('#address2').val());
					$('#address3_ro').text($('#address3').val());
					$('#city_ro').text($('#city').val());
					$('#state_ro').text($('#state').val());
					$('#postal_ro').text($('#postal').val());		
					$('#country_ro').text($('#country option:selected').text());
		
				});
				$('#domain-table').fadeOut();
				
				$('#submit-button-panel').fadeOut(function() {
					$('#confirm-button-panel').fadeIn();
				});
			});
					
			//$('#name').attr('readonly', true);
		});
		
		$('#change-button').click(function() {
			/*$('#step2-1').css('display', 'inline');
			$('#step2-2').css('display', 'none');
			*/
			$('#step2-2').fadeOut(function() {
				$('#step2-1').fadeIn();	
			});
			
			$('.field-readonly').fadeOut(function() {
				$('.field-input').fadeIn(function() {

				});
				$('#domain-table').fadeIn();
				
				$('#confirm-button-panel').fadeOut(function() {
					$('#submit-button-panel').fadeIn();
				});
			});

			/*
			$('.field-input').css('display', 'inline');
			$('#submit-button-panel').css('display', 'inline');
			
			$('.field-readonly').css('display', 'none');
			$('#confirm-button-panel').css('display', 'none');
			*/
		});
		
		$('#confirm-button').click(function() {
			var domain = $('#domain').val();
			var code = $('#code').val();
			var name = $('#name').val();
			var organisation = $('#organisation').val();
			var address1 = $('#address1').val();
			var address2 = $('#address2').val();
			var address3 = $('#address3').val();
			var city = $('#city').val();
			var state = $('#state').val();
			var postal = $('#postal').val();
			var country = $('#country').val();
			var countryStr = '('+$('#country').val()+')'+$('#country option:selected').text()
			var dotasia_info = ($('#dotasia_info').attr('checked') == true) ? 1 : 0;
			var ids = $('#domain_ids').val();
			// send post request to server
			var url = '/redemption';
			$.post(url, {submit: 'CONFIRM', code: code, domain: domain, 
				name: name, organisation: organisation, address1: address1,
				address2: address2, address3: address3, city: city,
				state: state, postal: postal, country: country, domain_ids: ids, country_str:countryStr,
				dotasia_info: dotasia_info},
				function(data) {
					if (!data.validate) {
						alert(data.message);
						//printValidationErr(data.message);
						return;
					}
					//$('#confirm-message').text(data.message);
					$('#confirm-message').css('display', 'inline');
					$('#cancel-message').css('display', 'none');
					// if success
					$('#step2').fadeOut(function() {
						$('#step3').fadeIn();
					});
				}, "json");
			fx_selectRandomFact();
		});
		
		$('#cancel-button').click(function() {
			$('#confirm-message').css('display', 'none');
			$('#cancel-message').css('display', 'inline');
			$('#step2').fadeOut(function() {
				$('#step3').fadeIn();
			});
			fx_selectRandomFact();
		});
		
		fx_selectRandomFact = function() {
			var n = $('#random-facts').children().length;
			var r = Math.floor(Math.random()*n);
			/*
			for(var i=0; i<n; i++) {
				var display = 'none';
				if (r == i) {
					display = 'inline';
				} 
				$('#random-facts').children(i).css('display', display);
			}*/
			$('#random-facts').children('div').css('display', 'none');
			$('#random-facts').children('div:eq('+r+')').css('display', 'inline');
		}

		var fx_getShippingRecord = function(sts) {
			//$('#shipping-batch-table').css('display', 'inline');
			//$('#pending-redemption-table').css('display', 'none');
			$('#loading').css('display', 'inline');		
			fx_showAdminTable('shipping-batch-table');
			var url = '/redemption/admin';
			$.post(url, {submit: 'GET', s: sts}, 
					function(data) {
						while ($('#shipping-batch-table tbody').children().length > 0) {
							$('#shipping-batch-table tbody tr:last').remove();
						}
						if (data.status == "OK") {
							for(var i=0;i<data.object.length;i++) {
								var o = data.object[i];
								var row = "<tr id=\"batch_row_"+o.id+"\">";
								row += "<td><a href=\"#\" onclick=\"fx_callBatch("+o.id+")\">"+o.id+"</a></td>";
								row += "<td>"+o.redemption_date+"</td>";
								row += "<td>"+o.name+"</td>";
								row += "<td>"+o.registrar_name+"</td>";
								row += "<td>"+o.usb_count+"</td>";
								row += "<td id=\"handle_by_"+o.id+"\">"+o.handle_by+"</td>";
								row += "<td id=\"status_"+o.id+"\">"+o.status+"</td>";
								if (sts == 'PENDING') {
									//alert(o.usb_type);
									row += "<td><a href=\"#\" onclick=\"fx_updateShippingRecord('"+o.id+"','"+o.registrar_id+"','"+o.registrar_name+"', '"+o.usb_type+"', '"+o.usb_count+"')\">Update</a></td>";
								} else {
									row += "<td></td>";
								}
								row += "</tr>";
								$('#shipping-batch-table').children('tbody').append(row);
							}
						} else {
							alert(data.message);
						}
						$('#loading').css('display', 'none');
					}, "json");
		};
		
		$('#shipping-pending').click(function() {
			fx_getShippingRecord('PENDING');
		});
		
		$('#shipping-processed').click(function() {
			fx_getShippingRecord('COMPLETE');
		});
		
		$('#redemption-pending').click(function() {
			//$('#shipping-batch-table').css('display', 'none');
			//$('#pending-redemption-table').css('display', 'inline');
			$('#loading').css('display', 'inline');
			fx_showAdminTable('pending-redemption-table');
			var url = '/redemption/admin';
			while ($('#pending-redemption-table tbody').children().length > 0) {
				$('#pending-redemption-table tbody tr:last').remove();
			}
			$.post(url, {submit: 'GETUATDOMAINS'}, 
					function(data) {
				
						if (data.status == 'OK') {
							//var handle_by = data.object.handle_by;
							// update row
							//$('#handle_by_'+batch_id).text(data.object.handle_by);
							//$('#status_'+batch_id).text(data.object.status);
							for(var i=0;i<data.domains.length;i++) {
								var o = data.domains[i];
								var row = "<tr>";
								row += "<td>"+o.domain_create_date+"</td>";
								row += "<td>"+o.domain_name+"</td>";
								row += "<td>"+o.trid+"</td>";
								//row += "<td>"+o.registrant_id+"</td>";
								row += "<td><b>"+o.registrar_id+"</b> "+o.registrar_name+"</td>";
								row += "</tr>";
								$('#pending-redemption-table').children('tbody').append(row);
							}
						} else {
							alert(data.message);
						}
						$('#loading').css('display', 'none');
					}, 'json');
		});
		
		$('#redemption-redeemed').click(function() {
			$('#loading').css('display', 'inline');
			fx_showAdminTable('redeemed-redemption-table');
			$('#redeemed-redemption-table tbody').children().remove();
			var url = '/redemption/admin';
			$.post(url, {submit: 'GETREDEEMED'},
				function(data) {
					if (data.status == 'OK') {
						for(var i=0;i<data.domains.length;i++) {
							var o = data.domains[i];
							var row = "<tr>";
							//row += "<td>"+o.domain_id+"</td>";
							row += "<td>"+o.redemption_date+"</td>";
							row += "<td>"+o.domain_name+"</td>";
							//row += "<td>"+o.registrar_id+"</td>";
							row += "<td>"+o.registrar_name+"</td>";
							//row += "<td>"+o.registrant_id+"</td>";
							row += "<td>"+o.registrant_name+"</td>";
							row += "<td>"+o.registrant_email+"</td>";
							row += "</tr>";
							$('#redeemed-redemption-table').children('tbody').append(row);
						}
					} else {
						alert(data.message);
					}
					$('#loading').css('display', 'none');
				}, 'json');
		});
		
		$('#info-participant').click(function() {
			fx_showAdminTable('info-agent-table');
			$('#info-agent-table tbody').children().remove();
			var url = '/redemption/admin';
			$.post(url, {submit: 'GETAGENTLIST'},
				function(data) {
					if (data.status == 'OK') {
						for(var i=0;i<data.agents.length;i++) {
							var o = data.agents[i];
							var row = "<tr>";
							row += "<td>"+o.registrar_id+"</td>";
							row += "<td>"+o.registrar_name+"</td>";
							var s = (o.notification == "0") ? "No" : "Yes";
							row += "<td>"+s+"</td>";
							row += "<td>"+o.notification_email+"</td>";
							row += "</tr>";
							$('#info-agent-table').children('tbody').append(row);
						}
					} else {
						alert(data.message);
					}
				}, 'json');
		});
		
		fx_updateShippingRecord = function(id, registrar_id, registrar_name, default_usb_type, usb_count) {
			batch_id = id;
			usb_type = default_usb_type;

			var v = 'none';
			if (registrar_id == '9173-GO') {
				v = 'inline';
			}
			$('#confirm_usb_batch_id').text(id);
			$('#usb_type2_container').css('display', v);
			
			$('#usb_total').text(usb_count);
			$('#dlg-confirm-usb-type1').text(usb_type);
			$('#usb_type1').val(usb_type);
			$('#usb_type1_text').text(usb_type);
			
			//$('#usb_type').attr("checked", "checked");
			$('#godaddy_asia_usb_count').val('0');
			$('#dlg-confirm-usb').dialog('open');
		};
		
		fx_showAdminTable = function(tblName) {
			$('#shipping-table-container table[id!='+tblName+']').css('display', 'none');
			$('#shipping-table-container table[id='+tblName+']').css('display', 'inline');
		}
		fx_showAdminTable('');
		//$('.update-batch-status-link').click(function(batch_id) {
		//	fx_updateShippingRecord(batch_id);
		//});
		
		fx_clearShippingDetail = function() {
			$('#shipping-batch-detail-id').text('');
			$('#shipping-batch-detail-redemptiondate').text('');
			$('#shipping-batch-detail-status').text('');
			$('#shipping-batch-detail-handleby').text('');
			$('#shipping-batch-detail-registrantname').text('');
			$('#shipping-batch-detail-registrantemail').text('');
			$('#shipping-batch-detail-organisation').text('');
			$('#shipping-batch-detail-address1').text('');
			$('#shipping-batch-detail-address2').text('');
			$('#shipping-batch-detail-address3').text('');
			$('#shipping-batch-detail-city').text('');
			$('#shipping-batch-detail-state').text('');
			$('#shipping-batch-detail-postal').text('');
			$('#shipping-batch-detail-country').text('');
			$('#shipping-batch-detail-usb').text('');
			$('#shipping-batch-domain-table tbody').children().remove();
		}
		
		fx_callBatch = function(batch_id) {
			fx_showAdminTable('shipping-batch-detail-table');
			fx_clearShippingDetail();
			$('#shipping-batch-domain-table tbody').children().remove();
			fx_showLoadingIcon(true);
			var url = '/redemption/admin';
			$.post(url, {submit: 'GETBATCH', id: batch_id}, 
				function(data) {
					if (data.status == 'OK') {
						$('#shipping-batch-detail-id').text(data.object.id);
						$('#shipping-batch-detail-redemptiondate').text(data.object.redemption_date);
						$('#shipping-batch-detail-status').text(data.object.status);
						$('#shipping-batch-detail-handleby').text(data.object.handle_by);
						$('#shipping-batch-detail-registrantname').text(data.object.registrant_name);
						$('#shipping-batch-detail-registrantemail').text(data.object.registrant_email);
						$('#shipping-batch-detail-organisation').text(data.object.organisation);
						$('#shipping-batch-detail-address1').text(data.object.address1);
						$('#shipping-batch-detail-address2').text(data.object.address2);
						$('#shipping-batch-detail-address3').text(data.object.address3);
						$('#shipping-batch-detail-city').text(data.object.city);
						$('#shipping-batch-detail-state').text(data.object.state);
						$('#shipping-batch-detail-postal').text(data.object.postal);
						$('#shipping-batch-detail-country').text(data.object.country);
						$('#shipping-batch-detail-usb').text(data.object.usb);
						
						//alert(data.domains.length);
						$('#shipping-batch-domain-table').css('display', 'inline');
						for(var i=0;i<data.domains.length;i++) {
							var o = data.domains[i];
							var row = "<tr>";
							row += "<td>"+o.domain_name+"</td>";
							row += "<td>("+o.registrar_id+")"+o.registrar_name+"</td>";
							row += "<td>"+o.registrant_email+"</td>";
							row += "<td>"+o.term+"</td>";
							row += "<td>"+o.domain_create_date+"</td>";
							row += "</tr>";
							$('#shipping-batch-domain-table').children('tbody').append(row);
						}
						
					} else {
						alert(data.message);
					}
				}, 'json');
			fx_showLoadingIcon(false);
		}
		
		fx_showLoadingIcon = function(b) {
			var display = (b) ? 'inline' : 'none';
			$('#loading').css('display', display);
		}
		
		fx_showTooltip = function(p) {
			var html = '';
			if (p == 'login') {
				html = '<p>恭喜您成功注册.ASIA域名﹐进驻亚洲网络世界﹗</p><p>要索取您的免费U盘﹐请输入赠品索取编号和域名(请只输入"domain.asia"部份﹐不包括"www")。如想取得免费2GB U盘但没有有效的登入资料﹐请点击<a href="http://www.freeb.asia/redemption/page?p=participate">这里</a>参看换领细则。</p>';
			} else if (p == 'participate') {
				html = '<p>换领细则</p><p>如欲获得由DotAsia免费赠送的U盘﹐请参照以下细则﹕</p><ul><li>经任何参与此推广计划的注册商注册新的.Asia域名(例如www.Your-domain.asia)﹐注册年期需要是2年或以上。请点击这里观看参与此推广计划的注册商列表。</li><li>域名成功注册後一星期﹐您将收到我们的电邮﹐通知您赠品索取编号(Redemption Code)。</li><li>进入www.FreeB.Asia网页﹐用赠品索取编号(Redemption Code)和有关域名登入。</li>	<li>登入後﹐请确认邮寄地址。U盘会用邮递方式寄给阁下。</li><li>U盘赠送计划推广期为2009年7月至10月﹐或送完即止。处理和邮寄时间约需6至8星期。如有遗失﹑延误﹑被盗﹑地址错误或地址无法辨认等情况﹐DotAsia Organisation概不负责。在受法例禁止或限制的情况下此推广条款将无效。</li></ul>';
			} else if (p == 'redemption') {
				html = '请点选可换领免费U盘的.ASIA域名("Available"域名)。U盘会寄到以下地址。您亦可更改邮寄地址﹐新填上的地址只会用於此次的邮寄。';
			} else if (p == 'cancel') {
				html = '<p>这次的登入您并没有成功索取免费U盘﹐请再登入以索取您的.Asia U盘。</p><p>U盘赠送计划推广期为2009年7月至10月﹐或送完即止。处理和邮寄时间约需6至8星期。如有遗失﹑延误﹑被盗﹑地址错误或地址无法辨认等情况﹐DotAsia Organisation概不负责。在受法例禁止或限制的情况下此推广条款将无效。</p>';
			} else if (p == 'confirm') {
				html = '<p>恭喜﹗您已成功登记索取免费U盘。再次感谢您注册.ASIA域名﹗</p><p>U盘赠送计划推广期为2009年7月至10月﹐或送完即止。处理和邮寄时间约需6至8星期。如有遗失﹑延误﹑被盗﹑地址错误或地址无法辨认等情况﹐DotAsia Organisation概不负责。在受法例禁止或限制的情况下此推广条款将无效。</p>';
			}
			
			if (p != '') {
				$('#not-found-msg').css('display', 'none');
				$('#custom-msg').html(html);
				$('#custom-msg').css('display', 'inline');
				$('#dlg').dialog('open');
			}
		}
		
		fx_setUSBType = function(t) {
			usb_type = t;
		}
		
	});
	var fx_updateShippingRecord = null;
	var fx_selectRandomFact = null;
	var fx_showAdminTable = null;
	var fx_callBatch = null;
	var fx_showTooltip = null;
	var fx_setUSBType = null;
	
	function getDomainIds() {
		return domain_ids.join(',', domain_ids);
	}
	
	function updateDomainId(id, checked) {
		if (checked) {
			//if (domain_ids.indexOf(id) == -1)
			if (getIndex(domain_ids, id) == -1)
				domain_ids.push(id);
		} else {
			//domain_ids.splice(domain_ids.indexOf(id), 1);
			domain_ids.splice(getIndex(domain_ids, id), 1);
		}
	}
	
	function getIndex(ary, o) {
		for(var i=0;i<ary.length;i++) {
			if (ary[i] == o) {
				return i;
			}
		}
		return -1;
	}
	
	