var 
operators = {
	SP:{prefix:"SP",icon:"sp.png",title:"Simpati"},
	AS:{prefix:"AS",icon:"as.png",title:"Kartu As"},
	SN:{prefix:"SN",icon:"sn.png",title:"Simpati Nasional"},
	AN:{prefix:"AN",icon:"an.png",title:"As Nasional"},
	IM:{prefix:"IM",icon:"im.png",title:"IM3"},
	IT:{prefix:"IT",icon:"it.png",title:"IM2"},
	IS:{prefix:"IS",icon:"is.png",title:"IM3 SMS"},
	MT:{prefix:"MT",icon:"mt.png",title:"Mentari"},
	XL:{prefix:"XL",icon:"xl.png",title:"XL"},
	FL:{prefix:"FL",icon:"fl.png",title:"Flexi"},
	FR:{prefix:"FR",icon:"fr.png",title:"Fren"},
	ES:{prefix:"ES",icon:"es.png",title:"Esia"},
	AX:{prefix:"AX",icon:"ax.png",title:"Axis"},
	TR:{prefix:"TR",icon:"tr.png",title:"Three"},
	SM:{prefix:"SM",icon:"sm.png",title:"Smart"},
	SO:{prefix:"SO",icon:"so.png",title:"Starone"},
	CR:{prefix:"CR",icon:"cr.png",title:"Ceria"},
	HP:{prefix:"HP",icon:"hp.png",title:"Hepi"}
	},
	denom = [5,10,20,25,50,15,100],
	scheme = {
	setting:{label: "Settings", id:"general_setting",disableItems:{Membership:true}, choices: { PIN:{str:'Alphanumeric',num:"Numeric Only"} }, 
	titles: {Dealer:"Nama Dealer. Ditampilkan di aplikasi Java.", "Kota":"Lokasi Anda", "Membership":"jenis keanggotaan", "Format SMS": "Variable ditulis dengan awalan tanda dollar (<code>$</code>)<ul><li>$code</li><li>$phone: (format no. telp, bisa mengambil dari phonebook.)</li><li>$string</li><li>$pin</li><li>$num: numerik (hanya boleh memasukkan angka)</li></ul>$code akan diisikan secara otomatis berdasarkan menu yang dipilih.<br /> Pemisah dapat berupa: spasi, titik, koma, atau titik koma.", 
	"Form Label":"<p>Tuliskan label-label yang mewakili setiap field pada format SMS di atas, dipisah dengan koma.</p> <p>Untuk field yang tidak ditampilkan (hidden) pada form isi ulang, tuliskan dengan huruf: <strong>x</strong></p>", 
	PIN:"Untuk PIN yang hanya berupa angka, pilih opsi Numeric. <br /><br />secara otomatis, aplikasi akan memfilter angka saja sebagai masukan.","YM-ENGINE-1":"Isi dengan nama YM Engine supplier Anda untuk transaksi"} },
	menu:{label: "VoucherQ Menu", display:['format'], editFields: ['title','format','labels'] },
	topup:{label: "Top Up", disableItems:{},iconField:'id', icons : operators
	}},
	wizard = ['home','settings','topup','menu','download'],

	userdata = {user:{id:"0",email:"member@voucherq.com"},
	version:"190",
	setting:{Dealer:"VoucherQ Reload","Kota":"Indonesia",Membership:"free",'Format SMS':"$code $phone $pin",'Form Label':'Kode,MSISDN,PIN',PIN:"str",'YM-ENGINE-1': 'ymengine','SMSC-1': '+6281','SMSC-2': '+6285','SMSC-3': '+6288','SMSC-4': '+6282','SMSC-5': '+6289'},
	menu:[{title:"Cek Saldo",format:"SALDO $pin",labels:"x,PIN"},
		{title:"Ganti PIN",format:"GPIN $pin $pin",labels:"x,PIN Lama,PIN Baru"},
		{title:"Transfer Saldo",format:"TRANSFER $phone $num $pin",labels:"x,Tujuan,Jumlah,PIN"},
		{title:"Komplain",format:"COM $pin $string",labels:"x,PIN,Komplain"},
		{title:"Cek Transaksi",format:"CEK $num $pin",labels:"x,No Ref,PIN"}],
	topup:[]},
	templateData = userdata;

var tabIdx = 0;
var hasInit = false;

function editJudul(event) {
	var id = $(this).parent().parent().attr('id'),
	num = id.replace(event.data.name+"_", "");
	var items = $("#topupcontainer").data("items");
	
	var title=prompt("Ganti nama group", userdata.topup[num].title);
	if (title!=null && title!="") {
		userdata.topup[num].title = title;
		$("#topupcontainer").menuItem('refresh');
	}
	
	return false;
}

function initWizard() {
	if (hasInit) return;
	tabIdx = 0;	
	$('#settingcontainer').editableJSON( {option: scheme.setting, data: userdata.setting} ) ;
	
	$("#menucontainer").menuItem( {option: scheme.menu, data: userdata.menu} );
	$("#topupcontainer").menuItem( {option: scheme.topup, data: userdata.topup, edit:editJudul} );
	
	
	for (var op in operators) {
		//$('#operator').addOption(operators[op].prefix, operators[op].title);
		$('#operator').append('<option value="'+op+'">' +operators[op].title+ '</option>');
	}
	
	$('#operators').submit(function() {
		
		var item = new Object;
		item.id = $('#operator option:selected')[0].value;
		item.title = $('#operator option:selected')[0].text;
		var denomCount = $('#denom option:selected')[0].text;
		//generate default denominations
		item.items = []
		for (var i = 0; i < denomCount; i++) {
			var subItem = new Object;
			subItem.prefix = operators[item.id].prefix + denom[i]
			subItem.title = operators[item.id].title + " " + denom[i] + "rb"
			subItem.order = i
			item.items.push(subItem);
		}
		userdata.topup.push(item);
		$("#topupcontainer").menuItem('refresh');
		return false;
	})
	
	for(var item in wizard) {
		$('#'+wizard[item]).append('<hr class="breaker" />');
		if (item < wizard.length-1)
			$('#'+wizard[item]).append('<button class="ui-button ui-state-default ui-corner-all nextbutton">Next &raquo;</button>');
		if (item > 0)
			$('#'+wizard[item]).append('<button class="ui-button ui-state-error ui-corner-all restart">Re-start</button>');
	}
	
	$('.restart').click(function () {
		//initWizard();
		window.location.reload();
		return false;
	});
	
	$('.nextbutton').click(function() {
		var id = $(this).parent().attr('id'),
		idx = $.inArray(id, wizard) + 1;
		if (idx >= 0) $("#tabs").tabs("enable", idx).tabs("select", idx);
		return false;
	});
	
	$('.ui-button')
		.hover(
			function(){ 
				$(this).addClass("ui-state-hover"); 
			},
			function(){ 
				$(this).removeClass("ui-state-hover"); 
			}
		).mousedown(function(){
			$(this).addClass("ui-state-active"); 
		})
		.mouseup(function(){
				$(this).removeClass("ui-state-active");
		});
		
	$('#add-menu').click(function() {
		$('#formpreview .formcontent').html('');
		$('#formpreview .formtitle').html('Simulasi Form SMS');
		$('#add-menu-dialog').dialog('open');
		return false;
	})

	$('#download-progress').hide();
	$('#go-download').click(function() {
		$('#download-progress').show();
		$('#download-result').hide();
		userdata.version = $('#mversion').val();
		$.post("generate.php", { data:JSONstring.make(userdata) } ,
			function(data, textStatus) {
				$('#download-progress').hide();
				if (textStatus == 'success') {
					$('#download-result').html(data).show();
				} else $('#download-result').html("<span style='color:red'>Generate Java: failed</span>");
			});
			
		//$(this).attr('disabled','disabled');
	});
	
	hasInit = true;

}