
$(document).ready(function(){
	var $fields = {
		name1:$('#lng_name1'),
		name2:$('#lng_name2'),
		sex:$('#lng_sex'),
		bd_date:$('#lng_bd_date'),
		bd_month:$('#lng_bd_month'),
		bd_year:$('#lng_bd_year'),
		gd_date:$('#lng_gd_date'),
		gd_month:$('#lng_gd_month'),
		gd_year:$('#lng_gd_year')
	}
	
	var now = new Date();
	var currYear = now.getFullYear();
	var monthes = ['January','February','March','April','May','June','July','August','September','October','November','December'];
	$fields.gd_date.val(now.getDate());
	$fields.gd_month.val(monthes[now.getMonth()]);
	$fields.gd_month.attr('num',now.getMonth());
	$fields.gd_year.val(currYear);
	
	var days = [];
	var monthes_ = [];
	var byears = [];
	var gyears = [];
	
	for (var i=1;i<=31;i++){
		days.push('<div>'+i+'</div>');
	}
	
	for (var i=0;i<monthes.length;i++){
		monthes_.push('<div num="'+i+'">'+monthes[i]+'</div>');
	}
	
	for (var i=0; i>-121; i--){
		byears.push('<div>'+(currYear+i)+'</div>');
	}
	for (var i=0; i<=20; i++){
		gyears.push('<div>'+(currYear+i)+'</div>');
	}
	
	var $fake_options = {};
	
	var offset;
	offset = $fields.sex.offset();
	$fake_options.sex = $('<div class="lng_options" id="lng_sex_opts"></div>')
		.html('<div>male</div><div>female</div>')
		.css({top:offset.top+17, left:offset.left, width:$fields.sex.width()+16})
		.click(function(e){
			$(this).css('display','none')
			if ($(e.target).is(".lng_options div")) {
				$fields.sex.val(e.target.innerHTML)
			}
		})
		.appendTo('body');
		
	offset = $fields.bd_date.offset();
	$fake_options.bd_date = $('<div class="lng_options" id="lng_bd_date_opts"></div>')
		.html(days.join('\n'))
		.css({top:offset.top+17, left:offset.left, width:$fields.bd_date.width()+16})
		.click(function(e){
			$(this).css('display','none')
			if ($(e.target).is(".lng_options div")) {
				$fields.bd_date.val(e.target.innerHTML)
			}
		})
		.appendTo('body');
		
	offset = $fields.bd_month.offset();
	$fake_options.bd_month = $('<div class="lng_options" id="lng_bd_month_opts"></div>')
		.html(monthes_.join('\n'))
		.css({top:offset.top+17, left:offset.left, width:$fields.bd_month.width()+16})
		.click(function(e){
			$(this).css('display','none')
			if ($(e.target).is(".lng_options div")) {
				$fields.bd_month.val(e.target.innerHTML);
				$fields.bd_month.attr('num',$(e.target).attr('num'));
			}
		})
		.appendTo('body');
		
	offset = $fields.bd_year.offset();
	$fake_options.bd_year = $('<div class="lng_options" id="lng_bd_year_opts"></div>')
		.html(byears.join('\n'))
		.css({top:offset.top+17, left:offset.left, width:$fields.bd_year.width()+16})
		.click(function(e){
			$(this).css('display','none')
			if ($(e.target).is(".lng_options div")) {
				$fields.bd_year.val(e.target.innerHTML)
			}
		})
		.appendTo('body');
		
	offset = $fields.gd_date.offset();
	$fake_options.gd_date = $('<div class="lng_options" id="lng_gd_date_opts"></div>')
		.html(days.join('\n'))
		.css({top:offset.top+17, left:offset.left, width:$fields.gd_date.width()+16})
		.click(function(e){
			$(this).css('display','none')
			if ($(e.target).is(".lng_options div")) {
				$fields.gd_date.val(e.target.innerHTML)
			}
		})
		.appendTo('body');
		
	offset = $fields.gd_month.offset();
	$fake_options.gd_month = $('<div class="lng_options" id="lng_gd_month_opts"></div>')
		.html(monthes_.join('\n'))
		.css({top:offset.top+17, left:offset.left, width:$fields.gd_month.width()+16})
		.click(function(e){
			$(this).css('display','none')
			if ($(e.target).is(".lng_options div")) {
				$fields.gd_month.val(e.target.innerHTML);
				$fields.gd_month.attr('num',$(e.target).attr('num'));
			}
		})
		.appendTo('body');
		
	offset = $fields.gd_year.offset();
	$fake_options.gd_year = $('<div class="lng_options" id="lng_gd_year_opts"></div>')
		.html(gyears.join('\n'))
		.css({top:offset.top+17, left:offset.left, width:$fields.gd_year.width()+16})
		.click(function(e){
			$(this).css('display','none')
			if ($(e.target).is(".lng_options div")) {
				$fields.gd_year.val(e.target.innerHTML)
			}
		})
		.appendTo('body');
	
	
	
	
	
	$('.box_lng_fake_select')
	.click(function(e){
		
		var currElArr = e.target.id.split('_');
		var currEl = currElArr.splice(1,currElArr.length-2)
		$fake_options[currEl.join('_')].css('display','block');
		var inp = $(this).prev("input");
		if(inp.val() == 'Enter value'){inp.val('')}
		inp.css('color','#555555')
	})
	
	$('.box_lng_btn')

	.click(function(e){
		var noErrors = true;
		for (var i in $fields){
			
			var val = $fields[i].val();
			if((val.length == 0) || (val == 'Enter value')){
				noErrors = false;
				$fields[i].val('Enter value').css('color','#ff3333');
			}
		}
		if(noErrors){
			var numsArr = [];
			var vals = {
				name1:$fields.name1.val(),
				name2:$fields.name2.val(),
				sex:$fields.sex.val(),
				bd_year:parseInt($fields.bd_year.val(),10),
				bd_month:parseInt($fields.bd_month.attr('num'),10)+1,
				bd_date:parseInt($fields.bd_date.val(),10),
				gd_year:parseInt($fields.gd_year.val(),10),
				gd_month:parseInt($fields.gd_month.attr('num'),10)+1,
				gd_date:parseInt($fields.gd_date.val(),10)
			};
			var born = new Date(
				vals.bd_year,
				vals.bd_month,
				vals.bd_date
			);
			var age = Math.floor((now.getTime() - born.getTime()) / (365.25 * 24 * 60 * 60 * 1000)); 
			var ageStr = ''+age;
			var ageProd = 1;
			for (var i=0;i<ageStr.length;i++){
				
				ageProd *= parseInt(ageStr.charAt(i),10)
			}
			var yrStr = ''+vals.bd_year;
			var mnStr;
			if(vals.bd_month<10){
				mnStr = '0'+vals.bd_month;
			} else {
				mnStr = ''+vals.bd_month;
			}
			var dtStr;
			if(vals.bd_date<10){
				dtStr = '0'+vals.bd_date;
			} else {
				dtStr = ''+vals.bd_date;
			}
			
			var yrLastSum = parseInt(yrStr.charAt(2),10) + parseInt(yrStr.charAt(3),10);
			var yrFirstSum = parseInt(yrStr.charAt(0),10) + parseInt(yrStr.charAt(1),10);
			var mnSum = parseInt(mnStr.charAt(0),10) + parseInt(mnStr.charAt(1),10);
			var dtSum = parseInt(dtStr.charAt(0),10) + parseInt(dtStr.charAt(1),10);
			
			var altBase1 = yrLastSum + yrFirstSum + mnSum + dtSum;
			var altBase2 = dtSum;
			while(altBase2>9){
				var altBase2Str = ''+altBase2;
				altBase2 = parseInt(altBase2Str.charAt(0),10) + parseInt(altBase2Str.charAt(1),10);
			}
			altBase2 *= altBase2;
			var altNum = (altBase1 - altBase2) % 36;
			if(altNum<0){altNum *= -1}
			 altNum += 1;
			
			var guaBase = yrLastSum;
			while(guaBase>9){
				var guaBaseStr = ''+guaBase;
				guaBase = parseInt(guaBaseStr.charAt(0),10) + parseInt(guaBaseStr.charAt(1),10);
			}
			
			var guaNum;
			if(vals.bd_year == 2000){
				if(vals.sex == 'female'){
					guaNum = 6;
				} else {
					guaNum = 9;
				}
			} else if(vals.bd_year == 1999){
				if(vals.sex == 'female'){
					guaNum = 5;
				} else {
					guaNum = 1;
				}
			} else if(vals.bd_year > 2000){
				if(vals.sex == 'female'){
					guaNum = 9-guaBase;
				} else {
					guaNum = 4+guaBase;
				}
			} else {
				if(vals.sex == 'female'){
					guaNum = 10-guaBase;
				} else {
					guaNum = 5+guaBase;
				}
			}
			
			if (guaNum==0){guaNum=9}
			while(guaNum>9){
				var guaNumBaseStr = ''+guaNum;
				guaNum = parseInt(guaNumBaseStr.charAt(0),10) + parseInt(guaNumBaseStr.charAt(1),10);
			}
			
			numsArr.push(numberFromName(vals.name1)); //1 - name number
			numsArr.push( //2 – Birthday Number
				(vals.bd_month +
				vals.bd_date +
				vals.bd_year) % 36 + 1
			);
			numsArr.push( //3 – Life cycle Number
				(ageProd + age) % 36 + 1
			);
			numsArr.push( //4 – Game day Number
				(vals.gd_month +
				vals.gd_date +
				vals.gd_year) % 36 + 1
			);
			numsArr.push( //5 – Gua Number
				guaNum
			);
			numsArr.push(numberFromName(vals.name2)); //6 - other name number
			numsArr.push( //7 – Alternate Number
				altNum
			);
			//var nums = '13,22,32,9,6,35,1';
			var nums = numsArr.join(',');
			
			$('#lng_modal_flash').html(str1 + nums + str2 + nums + str3)
			$('#lng_modal').modal({onOpen: modalOpen});
			
		} else {return false;}
		
		
		
	})
	
	$('.box_lng_row input').focus(function(){
		var inp = $(this);
		if(inp.val() == 'Enter value'){inp.val('')}
		inp.css('color','#555555')
		
	});
	
	
	$('.lng_help_trigger')
	.hover(function(e){
		$('.lng_help_pad').css({display:'block', left:248})
	},function(e){
		$('.lng_help_pad').css('display','none')
	})
	
});

function modalOpen (dialog) {
	dialog.overlay.fadeIn('fast', function () {
		dialog.container.fadeIn('fast', function () {
			dialog.data.hide().slideDown('fast');	 
		});
	});
	
	$('#lng_modal_back, #simplemodal-overlay').click(function(){
		$.modal.close();
	});
}

function numberFromName(val){
	var sum = 0;
	for(var i=0; i<val.length; i++){
		sum += val.charCodeAt(i);
	}
	return (sum % 36 + 1);
}

var str1 = '<object\
		classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"\
		codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0"\
		width="494" height="526"\
		id="lng" align="middle"\
	>\
		<param name="allowScriptAccess" value="sameDomain" />\
		<param name="allowFullScreen" value="false" />\
		<param name="movie" value="flash/lng.swf" />\
		<param name="quality" value="high" />\
		<param name="wmode" value="gpu" />\
		<param name="bgcolor" value="#000000" />\
		<param name="FlashVars" value="nums='
		
var str2 = '"\
		<embed\
			src="flash/lng.swf"\
			quality="high"\
			wmode="gpu"\
			bgcolor="#000000"\
			width="494"\
			height="526"\
			name="lng"\
			align="middle"\
			allowScriptAccess="sameDomain"\
			allowFullScreen="false"\
			type="application/x-shockwave-flash"\
			pluginspage="http://www.adobe.com/go/getflashplayer"\
			FlashVars="nums='	
			
var str3 = '"\
		/>\
	</object>'			
