/*
 * jQuery Impromptu
 * By: Trent Richardson [http://trentrichardson.com]
 * Version 2.7
 * Last Modified: 6/7/2009
 * 
 * Copyright 2009 Trent Richardson
 * Dual licensed under the MIT and GPL licenses.
 * http://trentrichardson.com/Impromptu/GPL-LICENSE.txt
 * http://trentrichardson.com/Impromptu/MIT-LICENSE.txt
 * 
 */
(function($){$.prompt=function(message,options){options=$.extend({},$.prompt.defaults,options);$.prompt.currentPrefix=options.prefix;var ie6=($.browser.msie&&$.browser.version<7);var $body=$(document.body);var $window=$(window);var msgbox='<div class="'+options.prefix+'box" id="'+options.prefix+'box">';if(options.useiframe&&(($('object, applet').length>0)||ie6)){msgbox+='<iframe src="javascript:false;" style="display:block;position:absolute;z-index:-1;" class="'+options.prefix+'fade" id="'+options.prefix+'fade"></iframe>';}else{if(ie6){$('select').css('visibility','hidden');}msgbox+='<div class="'+options.prefix+'fade" id="'+options.prefix+'fade"></div>';}msgbox+='<div class="'+options.prefix+'" id="'+options.prefix+'"><div class="'+options.prefix+'container"><div class="';msgbox+=options.prefix+'close">X</div><div id="'+options.prefix+'states"></div>';msgbox+='</div></div></div>';var $jqib=$(msgbox).appendTo($body);var $jqi=$jqib.children('#'+options.prefix);var $jqif=$jqib.children('#'+options.prefix+'fade');if(message.constructor==String){message={state0:{html:message,buttons:options.buttons,focus:options.focus,submit:options.submit}};}var states="";$.each(message,function(statename,stateobj){stateobj=$.extend({},$.prompt.defaults.state,stateobj);message[statename]=stateobj;states+='<div id="'+options.prefix+'_state_'+statename+'" class="'+options.prefix+'_state" style="display:none;"><div class="'+options.prefix+'message">'+stateobj.html+'</div><div class="'+options.prefix+'buttons">';$.each(stateobj.buttons,function(k,v){states+='<button name="'+options.prefix+'_'+statename+'_button'+k+'" id="'+options.prefix+'_'+statename+'_button'+k+'" value="'+v+'">'+k+'</button>';});states+='</div></div>';});$jqi.find('#'+options.prefix+'states').html(states).children('.'+options.prefix+'_state:first').css('display','block');$jqi.find('.'+options.prefix+'buttons:empty').css('display','none');$.each(message,function(statename,stateobj){var $state=$jqi.find('#'+options.prefix+'_state_'+statename);$state.children('.'+options.prefix+'buttons').children('button').click(function(){var msg=$state.children('.'+options.prefix+'message');var clicked=stateobj.buttons[$(this).text()];var forminputs={};$.each($jqi.find('#'+options.prefix+'states :input').serializeArray(),function(i,obj){if(forminputs[obj.name]===undefined){forminputs[obj.name]=obj.value;}else if(typeof forminputs[obj.name]==Array){forminputs[obj.name].push(obj.value);}else{forminputs[obj.name]=[forminputs[obj.name],obj.value];}});var close=stateobj.submit(clicked,msg,forminputs);if(close===undefined||close){removePrompt(true,clicked,msg,forminputs);}});$state.find('.'+options.prefix+'buttons button:eq('+stateobj.focus+')').addClass(options.prefix+'defaultbutton');});var ie6scroll=function(){$jqib.css({top:$window.scrollTop()});};var fadeClicked=function(){if(options.persistent){var i=0;$jqib.addClass(options.prefix+'warning');var intervalid=setInterval(function(){$jqib.toggleClass(options.prefix+'warning');if(i++>1){clearInterval(intervalid);$jqib.removeClass(options.prefix+'warning');}},100);}else{removePrompt();}};var keyPressEventHandler=function(e){var key=(window.event)?event.keyCode:e.keyCode;if(key==27){removePrompt();}if(key==9){var $inputels=$(':input:enabled:visible',$jqib);var fwd=!e.shiftKey&&e.target==$inputels[$inputels.length-1];var back=e.shiftKey&&e.target==$inputels[0];if(fwd||back){setTimeout(function(){if(!$inputels)return;var el=$inputels[back===true?$inputels.length-1:0];if(el)el.focus();},10);return false;}}};var positionPrompt=function(){$jqib.css({position:(ie6)?"absolute":"fixed",height:$window.height(),width:"100%",top:(ie6)?$window.scrollTop():0,left:0,right:0,bottom:0});$jqif.css({position:"absolute",height:$window.height(),width:"100%",top:0,left:0,right:0,bottom:0});$jqi.css({position:"absolute",top:options.top,left:"50%",marginLeft:(($jqi.outerWidth()/2)*-1)});};var stylePrompt=function(){$jqif.css({zIndex:options.zIndex,display:"none",opacity:options.opacity});$jqi.css({zIndex:options.zIndex+1,display:"none"});$jqib.css({zIndex:options.zIndex});};var removePrompt=function(callCallback,clicked,msg,formvals){$jqi.remove();if(ie6){$body.unbind('scroll',ie6scroll);}$window.unbind('resize',positionPrompt);$jqif.fadeOut(options.overlayspeed,function(){$jqif.unbind('click',fadeClicked);$jqif.remove();if(callCallback){options.callback(clicked,msg,formvals);}$jqib.unbind('keypress',keyPressEventHandler);$jqib.remove();if(ie6&&!options.useiframe){$('select').css('visibility','visible');}});};positionPrompt();stylePrompt();if(ie6){$window.scroll(ie6scroll);}$jqif.click(fadeClicked);$window.resize(positionPrompt);$jqib.bind("keydown keypress",keyPressEventHandler);$jqi.find('.'+options.prefix+'close').click(removePrompt);$jqif.fadeIn(options.overlayspeed);$jqi[options.show](options.promptspeed,options.loaded);$jqi.find('#'+options.prefix+'states .'+options.prefix+'_state:first .'+options.prefix+'defaultbutton').focus();if(options.timeout>0)setTimeout($.prompt.close,options.timeout);return $jqib;};$.prompt.defaults={prefix:'jqi',buttons:{Ok:true},loaded:function(){},submit:function(){return true;},callback:function(){},opacity:0.6,zIndex:999,overlayspeed:'slow',promptspeed:'fast',show:'fadeIn',focus:0,useiframe:false,top:"15%",persistent:true,timeout:0,state:{html:'',buttons:{Ok:true},focus:0,submit:function(){return true;}}};$.prompt.currentPrefix=$.prompt.defaults.prefix;$.prompt.setDefaults=function(o){$.prompt.defaults=$.extend({},$.prompt.defaults,o);};$.prompt.setStateDefaults=function(o){$.prompt.defaults.state=$.extend({},$.prompt.defaults.state,o);};$.prompt.getStateContent=function(state){return $('#'+$.prompt.currentPrefix+'_state_'+state);};$.prompt.getCurrentState=function(){return $('.'+$.prompt.currentPrefix+'_state:visible');};$.prompt.getCurrentStateName=function(){var stateid=$.prompt.getCurrentState().attr('id');return stateid.replace($.prompt.currentPrefix+'_state_','');};$.prompt.goToState=function(state){$('.'+$.prompt.currentPrefix+'_state').slideUp('slow');$('#'+$.prompt.currentPrefix+'_state_'+state).slideDown('slow',function(){$(this).find('.'+$.prompt.currentPrefix+'defaultbutton').focus();});};$.prompt.nextState=function(){var $next=$('.'+$.prompt.currentPrefix+'_state:visible').next();$('.'+$.prompt.currentPrefix+'_state').slideUp('slow');$next.slideDown('slow',function(){$next.find('.'+$.prompt.currentPrefix+'defaultbutton').focus();});};$.prompt.prevState=function(){var $next=$('.'+$.prompt.currentPrefix+'_state:visible').prev();$('.'+$.prompt.currentPrefix+'_state').slideUp('slow');$next.slideDown('slow',function(){$next.find('.'+$.prompt.currentPrefix+'defaultbutton').focus();});};$.prompt.close=function(){$('#'+$.prompt.currentPrefix+'box').fadeOut('fast',function(){$(this).remove();});};})(jQuery);

			function openLoanCalculatorPrompt(o){
				o = jQuery.extend({},{ amount:100000, years:15, rate:5 },o);
				
				var formstr = '<p>Kalkulator KPR BTN</p>'+
					'<div class="field"><label for="intamount">Jumlah Kredit:</label>Rp. <input type="text" name="intamount" id="intamount" value="'+ o.amount +'" />&nbsp;,-</div>'+
					'<div class="field"><label for="intyears">Jangka Waktu</label><input type="text" name="intyears" id="intyears" value="'+ o.years +'" /> tahun </div>'+
					'<div class="field"><label for="intrate">Bunga </label><input type="text" name="intrate" id="intrate" value="'+ o.rate +'" /> %</div>';
					
				jqistates = {
					state0: {
						html: formstr,
						focus: 1,
						buttons: { Cancel: false, Calculate: true },
						submit: function(v, m, f){
							var e = "";
							m.find('.errorBlock').hide('fast',function(){ jQuery(this).remove(); });
							
							if (v) {
								
								if(isNaN(f.intamount))
									e += "Masukkan jumlah kredit dalam format angka (tanpa . dan , )<br />";
									
								if(isNaN(f.intyears))
									e += "Masukkan jangka waktu dalam format angka<br />";
									
								if(isNaN(f.intrate))
									e += "Masukkan bunga dalam format angka<br />";
								
								if (e == "") {
									// ppangkat = (1+pbunga/100)
									// 'hitung faktor dulu
									// pfaktor = ((pangkat(ppangkat,pwaktu,6)) / ((pangkat(ppangkat,pwaktu,6))-1)) * pbunga/100
									// 'hitung kpr
									// phasil = (pfaktor * pjumlah) / 12
	
									//var interest = f.intrate/100;
									var ppangkat = 1+f.intrate/100;
									var interest = f.intrate;
									var years = f.intyears;
									var amount = f.intamount;
									
									//var n = years * 12;
									//var i = interest / 12;
									//var i_to_n = Math.pow((i + 1), n);
									
									//var p = amount * ((i * i_to_n) / (i_to_n - 1));
									//var m = Math.round(p * 100) / 100;
									var pfaktor = Math.pow((ppangkat), years) / (Math.pow((ppangkat), years) - 1) * interest/100;
									var phasil = (pfaktor * amount) / 12;
									//jQuery.prompt.getStateContent('state1').find('#intmonthlypayment').text(m);									
									//jQuery.prompt.getStateContent('state1').find('#intmonthlypayment').text(phasil.toFixed(2));					
									jQuery.prompt.getStateContent('state1').find('#intmonthlypayment').text(phasil.toFixed(2));					
									jQuery.prompt.goToState('state1');
									
								}
								else{
									jQuery('<div class="errorBlock" style="display: none;">'+ e +'</div>').prependTo(m).show('slow');
								}
								return false;
							}
							else return true;
						}
					},
					state1: {
						html: 'Angsuran per bulan: Rp. <span id="intmonthlypayment"> ,-</span>',
						focus: 1,
						buttons: { Back: false, Done: true },
						submit: function(v,m,f){
							if(v)
								return true;
								
							jQuery.prompt.goToState('state0');
							return false;
						}
					}
				};
				
				$.prompt(jqistates);
			}
			
			function openSyariahLoanCalculatorPrompt(o){
				o = jQuery.extend({},{ amount:120000000, years:10, rate:9.5444, uangmuka:0 },o);
				
				var formstr = '<p>Simulasi Pembiayaan</p>'+
					'<div class="field"><label for="intyears">Jangka Waktu</label><input type="text" name="intyears" id="intyears" value="'+ o.years +'" /> tahun </div>'+
					'<div class="field"><label for="intamount">Harga Rumah:</label>Rp. <input type="text" name="intamount" id="intamount" value="'+ o.amount +'" />&nbsp;,-</div>'+
					'<div class="field"><label for="intrate">Margin </label><input type="text" name="intrate" id="intrate" value="'+ o.rate +'" /> %</div>'+
					'<div class="field"><label for="uangmuka">Uang Muka </label><input type="text" name="uangmuka" id="uangmuka" value="'+ o.uangmuka +'" /> %</div>';
					
				jqistates = {
					state0: {
						html: formstr,
						focus: 1,
						buttons: { Cancel: false, Calculate: true },
						submit: function(v, m, f){
							var e = "";
							m.find('.errorBlock').hide('fast',function(){ jQuery(this).remove(); });
							
							if (v) {
								
								if(isNaN(f.intamount))
									e += "Masukkan jumlah kredit dalam format angka (tanpa . dan , )<br />";
									
								if(isNaN(f.intyears))
									e += "Masukkan jangka waktu dalam format angka<br />";
									
								if(isNaN(f.intrate))
									e += "Masukkan bunga dalam format angka<br />";

								if(isNaN(f.uangmuka))
									e += "Masukkan uang muka dalam format angka<br />";
									
								if (e == "") {
									//var ppangkat = 1+f.intrate/100;
									var interest = f.intrate;
									var years = f.intyears;
									var amount = f.intamount;
									var deposit = f.uangmuka;
									
									var sisabayar = amount - deposit;
									var pfaktor = 1 + ((interest/100)*years);
									var phasil = (sisabayar*pfaktor) / ( years * 12 )

									jQuery.prompt.getStateContent('state1').find('#intmonthlypayment').text(phasil.toFixed(2));					
									jQuery.prompt.goToState('state1');
									
								}
								else{
									jQuery('<div class="errorBlock" style="display: none;">'+ e +'</div>').prependTo(m).show('slow');
								}
								return false;
							}
							else return true;
						}
					},
					state1: {
						html: 'Angsuran per bulan: Rp. <span id="intmonthlypayment"> ,-</span>',
						focus: 1,
						buttons: { Back: false, Done: true },
						submit: function(v,m,f){
							if(v)
								return true;
								
							jQuery.prompt.goToState('state0');
							return false;
						}
					}
				};
				
				$.prompt(jqistates);
			}
