$(document).ready(function(){
	// Fancybox
	$('a[rel=photo-group]').fancybox({
		'transitionIn'		: 'none',
		'transitionOut'		: 'none',
		'titlePosition' 	: 'over'
	});

	// Cycle ads
	var ad1_timeout = $('#ad_timeout_1').val() + "000";
	var ad2_timeout = $('#ad_timeout_2').val() + "000";
	var ad3_timeout = $('#ad_timeout_3').val() + "000";

	$('#ad1').cycle({
		timeout: Number(ad1_timeout),
		speed: 1000,
		pause: true
	});
	$('#ad2').cycle({
		timeout: Number(ad2_timeout),
		speed: 1000,
		pause: true
	});
	$('#ad3').cycle({
		timeout: Number(ad3_timeout),
		speed: 1000,
		pause: true
	});

	// Menu
	$('#menu ul').supersubs({
		minWidth: 12,
		maxWidth: 27,
		extraWidth: 1
	}).superfish({
		autoArrows: false,
		speed: 0
	});

	// Referral form
	$('#referral_form').submit(function(){
		var my_firstname = $('#my_firstname').val();
		var my_lastname = $('#my_lastname').val();
		var my_phone = $('#my_phone').val();
		var my_email = $('#my_email').val();
		var my_address = $('#my_address').val();

		var firstname = $('#firstname').val();
		var lastname = $('#lastname').val();
		var phone = $('#phone').val();
		var email = $('#email').val();
		var address = $('#address').val();
		var known_for = $('#known_for').val();


		if ( ! my_firstname) {
			alert('Please enter your first name.');
			set_focus($('#my_firstname')); return false;
		} else if ( ! my_lastname) {
			alert('Please enter your last name.');
			set_focus($('#my_lastname')); return false;
		} else if ( ! my_phone) {
			alert('Please enter your phone number.');
			set_focus($('#my_phone')); return false;
		} else if ( ! my_email) {
			alert('Please enter your email.');
			set_focus($('#my_email')); return false;
		} else if ( ! email_filter.test(my_email)) {
			alert('The email provided is invalid, please double check.');
			set_focus($('#my_email')); return false;
		} else if ( ! my_address) {
			alert('Please enter your address.');
			set_focus($('#my_address')); return false;
		} else if ( ! firstname) {
			alert('Please enter your referral\'s first name.');
			set_focus($('#firstname')); return false;
		} else if ( ! lastname) {
			alert('Please enter your referral\'s last name.');
			set_focus($('#lastname')); return false;
		} else if ( ! phone) {
			alert('Please enter your referral\'s phone number.');
			set_focus($('#phone')); return false;
		} else if ( ! email) {
			alert('Please enter your referral\'s email.');
			set_focus($('#email')); return false;
		} else if ( ! email_filter.test(email)) {
			alert('Your referral\'s email provided is invalid, please double check.');
			set_focus($('#email')); return false;
		} else if ( ! address) {
			alert('Please enter your referral\'s address.');
			set_focus($('#address')); return false;
		} else if ( ! known_for) {
			alert('Please enter how long you\'ve known the referral.');
			set_focus($('#address')); return false;
		}
	});

	// Set focus
	function set_focus(element){
		if ($.browser.msie) {
			element.focus();
		} else {
			element.blur().focus();
		}
	}

	// Grid
	$('.img_container').hide();

});

$(window).load(function(){
	// Grid
	$('.img_container').each(function(){
		var w = $(this).find('img').width();
		var h = $(this).find('img').height();
		var mw = 111;
		var mh = 111;
		var ratio = Math.min(mw / w, mh / h);
		var nw = Math.floor(ratio * w);
		var nh = Math.floor(ratio * h);

        if (w > mw || h > mh) {
            $(this).find('img').height(nh);
        }

        var margin_top = Math.floor((140 - $(this).height()) / 2);
        $(this).css('margin-top', margin_top);
    }).show();
});

var email_filter = /^([a-zA-Z0-9_\.\-\+])+@([a-zA-Z0-9_\.\-])+\.([a-zA-Z])+([a-zA-Z])+/;

// http://www.frograte.com/includes/frcalc.js
function addSeparatorsNF(nStr, inD, outD, sep)
{
	nStr += '';
	var dpos = nStr.indexOf(inD);
	var nStrEnd = '';
	if (dpos != -1) {
		nStrEnd = outD + nStr.substring(dpos + 1, nStr.length);
		nStr = nStr.substring(0, dpos);
	}
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(nStr)) {
		nStr = nStr.replace(rgx, '$1' + sep + '$2');
	}

	return nStr + nStrEnd;
}

function stripcomma(str){
	if (str.indexOf(',') != -1)
	{
		temp = str.split(',');
		var i = temp.length;
		var j = 0;
		var tmpStr = "";

		while ( i > j)
			{tmpStr += temp[j]; j++;	}
		str = tmpStr;
	}
	return str;
}


function xdelay(value) {

	var z=document.getElementById("form1"), a=z.textA.value, b=z.textB.value, c=z.textC.value, d=z.textD.value, x=z.resultbox.value;

	if (value == 'a'){str = a;}
	if (value == 'b'){str = b;}
	if (value == 'c'){str = c;}
	if (value == 'd'){str = d;}
	if (value == 'x'){str = x;}

	str = stripcomma(str);

	if (value == 'a'){	z.textA.value = addSeparatorsNF(str, '.', '.', ',');}
	if (value == 'b'){	z.textB.value = addSeparatorsNF(str, '.', '.', ',');}
	if (value == 'c'){	z.textC.value = addSeparatorsNF(str, '.', '.', ',');}
	if (value == 'd'){	z.textD.value = addSeparatorsNF(str, '.', '.', ',');}
	if (value == 'x'){	z.resultbox.value = addSeparatorsNF(str, '.', '.', ',');}

	if(value == 'x'){		setTimeout("revcall()",200);	}
	else			{		setTimeout("call()",200);		}

	//alert("eer");
}
function call() {
	var z=document.getElementById("form1"), a=z.textA.value, b=z.textB.value, c=z.textC.value, d=z.textD.value;

	as = stripcomma(a);	z.textA.value = addSeparatorsNF(as, '.', '.', ',');
	bs = stripcomma(b);	z.textB.value = addSeparatorsNF(bs, '.', '.', ',');
	cs = stripcomma(c);	z.textC.value = addSeparatorsNF(cs, '.', '.', ',');
	ds = stripcomma(d);	z.textD.value = addSeparatorsNF(ds, '.', '.', ',');
	//alert (as +"  "+ bs+"  "+cs+"  "+ds);
	calc(as,bs,cs,ds);
}

function revcall() {
	var z=document.getElementById("form1"), a=z.textA.value, b=z.textB.value, c=z.textC.value, d=z.textD.value, x=z.resultbox.value;

	bs = stripcomma(b);	z.textB.value = addSeparatorsNF(bs, '.', '.', ',');
	cs = stripcomma(c);	z.textC.value = addSeparatorsNF(cs, '.', '.', ',');
	ds = stripcomma(d);	z.textD.value = addSeparatorsNF(ds, '.', '.', ',');
	xs = stripcomma(x);	z.resultbox.value = addSeparatorsNF(xs, '.', '.', ',');
    //alert (xs +"  "+ bs+"  "+cs+"  "+ds);
    revcalc(xs,bs,cs,ds);
}

function calc(a, b, c, d) {
//alert (a +"  "+ b+"  "+c+"  "+d);
	var loan = a;
	var i = b/(12 * 100);  //interest_rate
	var years = c;
	var down_payment = d;

	var loan = loan - down_payment;
	var n = years * 12;
	var one = ( i * Math.pow((1 + i), n) );
	var two = ( Math.pow((1 + i), n) - 1 );
	var result = (loan * one / two);
	    result = roundNumber(result, 2);

	var z=document.getElementById("form1");
		z.resultbox.value = addSeparatorsNF(result, '.', '.', ',');
	if(z.resultbox.value == "NaN"){	z.resultbox.value = "";	}
	//alert (result +"  "+ monthly);

}

function revcalc(x, b, c, d) {
//alert (x +"  "+ b+"  "+c+"  "+d);
	var monthly = x;
	var i = b/(12 * 100);  //interest_rate
	var years = c;
	var down_payment = parseFloat(d);

	var n = years * 12;
	var one = ( i * Math.pow((1 + i), n) );
	var two = ( Math.pow((1 + i), n) - 1 );
	var loan = 0;
	loan = down_payment + (monthly * two / one);
    loan = roundNumber(loan, 2);

	var z=document.getElementById("form1");
		z.textA.value = addSeparatorsNF(loan, '.', '.', ',');
	if(z.textA.value == "NaN"){	z.textA.value = "";	}
	//alert (result +"  "+ monthly);
}

function roundNumber(num, dec) {
	var result = Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);	return result;
}

function xdelay1(value) {

	var z=document.getElementById("form1"), a=z.textA.value, b=z.textB.value, c=z.textC.value, x=z.resultbox.value;

	if (value == 'a'){str = a;}
	if (value == 'b'){str = b;}
	if (value == 'c'){str = c;}
	if (value == 'x'){str = x;}

	str = stripcomma(str);

	if (value == 'a'){	z.textA.value = addSeparatorsNF(str, '.', '.', ',');}
	if (value == 'b'){	z.textB.value = addSeparatorsNF(str, '.', '.', ',');}
	if (value == 'c'){	z.textC.value = addSeparatorsNF(str, '.', '.', ',');}
	if (value == 'x'){	z.resultbox.value = addSeparatorsNF(str, '.', '.', ',');}

	if(value == 'x'){		setTimeout("revcall1()",200);	}
	else			{		setTimeout("call1()",200);		}

	//alert("eer");
}
function call1() {
	var z=document.getElementById("form1"), a=z.textA.value, b=z.textB.value, c=z.textC.value;

	as = stripcomma(a);	z.textA.value = addSeparatorsNF(as, '.', '.', ',');
	bs = stripcomma(b);	z.textB.value = addSeparatorsNF(bs, '.', '.', ',');
	cs = stripcomma(c);	z.textC.value = addSeparatorsNF(cs, '.', '.', ',');
	//alert (as +"  "+ bs+"  "+cs+"  "+ds);
	calc1(as,bs,cs);
}

function revcall1() {
	var z=document.getElementById("form1"), a=z.textA.value, b=z.textB.value, c=z.textC.value, x=z.resultbox.value;

	bs = stripcomma(b);	z.textB.value = addSeparatorsNF(bs, '.', '.', ',');
	cs = stripcomma(c);	z.textC.value = addSeparatorsNF(cs, '.', '.', ',');
	xs = stripcomma(x);	z.resultbox.value = addSeparatorsNF(xs, '.', '.', ',');
    //alert (xs +"  "+ bs+"  "+cs+"  "+ds);
    revcalc1(xs,bs,cs);
}

function calc1(a, b, c) {
//alert (a +"  "+ b+"  "+c+"  "+d);
	var loan = a;
	var i = b/(12 * 100);  //interest_rate
	var down_payment = 0;

	var loan = loan - down_payment;
	var n = c;
	var one = ( i * Math.pow((1 + i), n) );
	var two = ( Math.pow((1 + i), n) - 1 );
	var result = (loan * one / two);
	    result = roundNumber(result, 2);

	var z=document.getElementById("form1");
		z.resultbox.value = addSeparatorsNF(result, '.', '.', ',');
	if(z.resultbox.value == "NaN"){	z.resultbox.value = "";	}
	//alert (result +"  "+ monthly);

}

function revcalc1(x, b, c) {
//alert (x +"  "+ b+"  "+c+"  "+d);
	var monthly = x;
	var i = b/(12 * 100);  //interest_rate
	var down_payment = 0;

	var n = c;
	var one = ( i * Math.pow((1 + i), n) );
	var two = ( Math.pow((1 + i), n) - 1 );
	var loan = (monthly * two / one) + down_payment;
	    loan = roundNumber(loan, 2);

	var z=document.getElementById("form1");
		z.textA.value = addSeparatorsNF(loan, '.', '.', ',');
	if(z.textA.value == "NaN"){	z.textA.value = "";	}
	//alert (result +"  "+ monthly);
}
function xdelay2(value) {

	var z=document.getElementById("form1"), a=z.textA.value, b=z.textB.value, c=z.textC.value, x=z.resultbox.value;

	if (value == 'a'){str = a;}
	if (value == 'b'){str = b;}
	if (value == 'c'){str = c;}
	if (value == 'x'){str = x;}

	str = stripcomma(str);

	if (value == 'a'){	z.textA.value = addSeparatorsNF(str, '.', '.', ',');}
	if (value == 'b'){	z.textB.value = addSeparatorsNF(str, '.', '.', ',');}
	if (value == 'c'){	z.textC.value = addSeparatorsNF(str, '.', '.', ',');}
	if (value == 'x'){	z.resultbox.value = addSeparatorsNF(str, '.', '.', ',');}

	if(value == 'x'){		setTimeout("revcall2()",200);	}
	else			{		setTimeout("call2()",200);		}

	//alert("eer");
}
function call2() {
	var z=document.getElementById("form1"), a=z.textA.value, b=z.textB.value, c=z.textC.value;

	as = stripcomma(a);	z.textA.value = addSeparatorsNF(as, '.', '.', ',');
	bs = stripcomma(b);	z.textB.value = addSeparatorsNF(bs, '.', '.', ',');
	cs = stripcomma(c);	z.textC.value = addSeparatorsNF(cs, '.', '.', ',');
	//alert (as +"  "+ bs+"  "+cs+"  "+ds);
	calc2(as,bs,cs);
}

function revcall2() {
	var z=document.getElementById("form1"), a=z.textA.value, b=z.textB.value, c=z.textC.value, x=z.resultbox.value;

	bs = stripcomma(b);	z.textB.value = addSeparatorsNF(bs, '.', '.', ',');
	cs = stripcomma(c);	z.textC.value = addSeparatorsNF(cs, '.', '.', ',');
	xs = stripcomma(x);	z.resultbox.value = addSeparatorsNF(xs, '.', '.', ',');
    //alert (xs +"  "+ bs+"  "+cs+"  "+ds);
    revcalc2(xs,bs,cs);
}

function calc2(a, b, c) {
//alert (a +"  "+ b+"  "+c+"  "+d);
	var loan = a;
	var i = b/(12 * 100);  //interest_rate
	var years = c;
	var down_payment = 0;

	var loan = loan - down_payment;
	var n = years * 12;
	var one = ( i * Math.pow((1 + i), n) );
	var two = ( Math.pow((1 + i), n) - 1 );
	var result = (loan * one / two);
	    result = roundNumber(result, 2);

	var z=document.getElementById("form1");
		z.resultbox.value = addSeparatorsNF(result, '.', '.', ',');
	if(z.resultbox.value == "NaN"){	z.resultbox.value = "";	}
	//alert (result +"  "+ monthly);

}

function revcalc2(x, b, c) {
//alert (x +"  "+ b+"  "+c+"  "+d);
	var monthly = x;
	var i = b/(12 * 100);  //interest_rate
	var years = c;
	var down_payment = 0;

	var n = years * 12;
	var one = ( i * Math.pow((1 + i), n) );
	var two = ( Math.pow((1 + i), n) - 1 );
	var loan = (monthly * two / one) + down_payment;
	    loan = roundNumber(loan, 2);

	var z=document.getElementById("form1");
		z.textA.value = addSeparatorsNF(loan, '.', '.', ',');
	if(z.textA.value == "NaN"){	z.textA.value = "";	}
	//alert (result +"  "+ monthly);
}
function xdelay3(value) {

	var z=document.getElementById("form1"), a=z.textA.value, b=z.textB.value, c=z.textC.value, d=z.textD.value, x=z.resultbox.value;

	if (value == 'a'){str = a;}
	if (value == 'b'){str = b;}
	if (value == 'c'){str = c;}
	if (value == 'd'){str = d;}
	if (value == 'x'){str = x;}

	str = stripcomma(str);

	if (value == 'a'){	z.textA.value = addSeparatorsNF(str, '.', '.', ',');}
	if (value == 'b'){	z.textB.value = addSeparatorsNF(str, '.', '.', ',');}
	if (value == 'c'){	z.textC.value = addSeparatorsNF(str, '.', '.', ',');}
	if (value == 'd'){	z.textD.value = addSeparatorsNF(str, '.', '.', ',');}
	if (value == 'x'){	z.resultbox.value = addSeparatorsNF(str, '.', '.', ',');}

	if(value != 'a'){		setTimeout("revcall3()",200);	}
}


function revcall3() {
	var z=document.getElementById("form1"), a=z.textA.value, b=z.textB.value, c=z.textC.value, d=z.textD.value, x=z.resultbox.value;

	bs = stripcomma(b);	z.textB.value = addSeparatorsNF(bs, '.', '.', ',');
	cs = stripcomma(c);	z.textC.value = addSeparatorsNF(cs, '.', '.', ',');
	ds = stripcomma(d);	z.textD.value = addSeparatorsNF(ds, '.', '.', ',');
	xs = stripcomma(x);	z.resultbox.value = addSeparatorsNF(xs, '.', '.', ',');
    //alert (xs +"  "+ bs+"  "+cs);
    revcalc3(xs,bs,cs,ds);
}

function revcalc3(x, b, c, d) {
//alert (x +"  "+ b+"  "+c+"  "+d);
	var monthly = x;
	var i = b/1200;  //interest_rate
	var years = c;
	var down_payment = parseFloat(d);
	var n = years * 12;

    //var loan = monthly*((Math.pow((1+i),n)-1)/i);
    var PV = 0;
    PV = down_payment + monthly*((1-(1/Math.pow((1+i),n)))/i);
    //alert (down_payment + " " + PV);
    var loan = PV*Math.pow((1+i),n);
    loan = roundNumber(loan, 2);

	var z=document.getElementById("form1");
		z.textA.value = addSeparatorsNF(loan, '.', '.', ',');
	if(z.textA.value == "NaN"){	z.textA.value = "";	}
}

