/**
* Copyright (c) 2007, Impact Proximity
* All rights reserved.
* @author Jerome Conde <j.conde@impactbbdo.ae>
* @version 1.0.1
*/

$(function(){

	//global vars
	var locale = "en_gb";
	if(window.location.href.indexOf("ar_ae") > 0)
	locale = "ar_ae";
	
	var isIE6 = $.browser.msie && ($.browser.version == 6.0);
	
	//sucker fish solution for ie6
	var sfhover = function(){
		$(".MainNav > li").hover(
			function(){$(this).addClass('sfhover')},
			function(){$(this).removeClass('sfhover')}
		)
		.each(function(){
			if($(this).hasClass("Selected")){
				var $img = $(this).find("a:first img");
				var src = $img.attr("src");
				$img.attr("src",src.replace("Active.gif",".gif"));
				src = $img.attr("src");
				$img.attr("src",src.replace(".gif","Active.gif"));
			}
		});
	}
	
	//add 'FirstChild' and sfhover class for ie6 */
	var firstChild = function(){
		$("li:first-child").addClass("FirstChild");
	}
	var lastChild = function(){
		$("li:last-child").addClass("LastChild");
	}
	if($.browser.msie && $.browser.version == "6.0") {
		firstChild();
		sfhover();
	}
	// add LastChild class to IE
	if($.browser.msie){
		lastChild();
	}
	
	//auto text handler
	var autoText = "";
	var defaultText = $("div.Header input.Textbox").val();
	$("div.Header input.Textbox")
	.bind('focus',function(){
		autoText = $(this).val();
		if(autoText == defaultText) $(this).val("");
	})
	.bind('blur',function(){
		if($(this).val() == "")
		$(this).val(defaultText);
	})
	;
	
	//image caption hover effect
	$(".MainNav > li")
	.each(function(){
		if($(this).hasClass("Selected")){
			var src = $(this).find("a img").attr('src');
			if(src.indexOf("Active") > -1) return;
			$(this).find("a img:eq(0)").attr('src',src.replace('.gif','Active.gif'));
		}
	})
	.hover(
		function(){
			var src = $(this).find("a img").attr('src');
			if(src.indexOf("Active") > -1) return;
			$(this).find("a img:eq(0)").attr('src',src.replace('.gif','Active.gif'));
		},
		function(){
			if($(this).hasClass('Selected')) return;
			var src = $(this).find("a img").attr('src');
			$(this).find("a img:eq(0)").attr('src',src.replace('Active.gif','.gif'));
		}
	);
	
		// open link in a new window
	var externalLinks = function(){
 $('a[rel=external],a[rel=External]').bind('click',function(){$(this).attr('target','_blank')});
 }
 externalLinks();

	
	
	//CopyHeader handler , double line tagline
	$(".CopyHeader").each(function(){
		if($(this).find("h2 br").length) {
			$(this).find("h3 strong").css({bottom:-20});
		}
	});
	
	//i would like to... handler
	$("li.PullUp > a").toggle(
		function(){
			$(this).parent().find("ul").slideDown(200);
			return false;
		},
		function(){
			$(this).parent().find("ul").slideUp(200);
			return false;
		}
	);
	$("div.WhatToDo h3").toggle(
		function(){
			$(this).parent().find("ul").slideDown(200);
			return false;
		},
		function(){
			$(this).parent().find("ul").slideUp(200);
			return false;
		}
	);
	
	//accordion1 handler
	$("ul.Accordion1 li h3").bind('click',function(){
		var $li = $(this).parent();
		var $pane = $li.find(".AccordPane");
		var exp = $li.hasClass("Collapse");
		var collapse = function($x){
			$x.find(".AccordPane").slideUp(200,function(){
				$x.find("h3").animate({height:16,paddingTop:2,paddingBottom:0},200);
				$x.animate({height:18,paddingBottom:0},100,function(){
				$x.addClass("Collapse");
				});
			});
		}
		var expand = function($x){
			collapseExpanded();
			$x.find(".AccordPane").css({display:'none'});
			$x.removeClass("Collapse").css({height:'auto',paddingBottom:15})
			.find("h3").css({height:'auto',paddingTop:10,paddingBottom:6});
			$x.find(".AccordPane").slideDown(200);
		}
		var collapseExpanded = function(){
			$("ul.Accordion1 li:not(.Collapse)").each(function(){
				collapse($(this));
			});
		}
		//expand-collapse logic
		if(!exp){
			collapse($li);
		}
		else{
			expand($li);
		}
	});
	
	//Scroller1 handler
	$("div.Scroller1").each(function(){
		var $btnUp = $(this).find(".Up");
		var $btnDown = $(this).find(".Down");
		var $car = $(this).find(".Mask ul");
		var ctr = $car.find("li").length;
		var pos = ctr;
		var liH = 250;
		var speed = 400;
		var monBtns = function(){
			if(pos >= ctr) $btnUp.css({opacity:.4});
			else $btnUp.css({opacity:1});
			if(pos <= 1) $btnDown.css({opacity:.4});
			else $btnDown.css({opacity:1});
		}
		monBtns();
		$btnDown.bind('click',function(){
			if(pos <= 1) return;
			pos--;
			var topPos = (pos-ctr)*liH;
			$car.animate({top:topPos},speed);
			monBtns();
		});
		$btnUp.bind('click',function(){
			if(pos >= ctr) return;
			pos++;
			var topPos = (pos-ctr)*liH;
			$car.animate({top:topPos},speed);
			monBtns();
		});
	});
	
	//accordion2 handler
	$("ul.Accordion2 li h4").bind('click',function(){
		var $li = $(this).parent();
		var $pane = $li.find(".AccordPane");
		var exp = $li.hasClass("Collapse");
		var collapse = function($x){
			//$x.find(".AccordPane").slideUp(1000);
			$x.find(".AccordPane").css({display:'none'});
			$x.addClass("Collapse");
		}
		var expand = function($x){
			collapseExpanded();
			//$x.find(".AccordPane").slideDown(1000);
			$x.find(".AccordPane").css({display:'block'});
			$x.removeClass("Collapse");
		}
		var collapseExpanded = function(){
			$("ul.Accordion2 li:not(.Collapse)").each(function(){
				collapse($(this));
			});
		}
		//expand-collapse logic
		if(!exp){
			collapse($li);
		}
		else{
			expand($li);
		}
	});
	
	//board of directors handler
	$("ul.DirectorList li .Tab")
	.bind('click',function(){
		$(this).parent().toggleClass("Expand");
		return false;
	});
	
	//FAQs handler
	$("ul.Questions > li")
	.find("strong:first").css({cursor:'pointer'}).end()
	.toggle(
		function(e){
			if(e.target.tagName.toLowerCase() == "a"){
				window.location.href =  e.target.href;
				return;
			}
			$(this).toggleClass("Expanded");
		},
		function(e){
			if(e.target.tagName.toLowerCase() == "a") {
				window.location.href =  e.target.href;
				return;
			}
			$(this).toggleClass("Expanded");
		}
	);
	
	//News detail handler
	$("div.NewsDetail img.KeyImage").each(
		function(){
			var alt = $(this).attr("alt");
			var spanW = $(this).width() + 10;
			if(alt != ""){
				$(this).after("<span class='Caption'>"+alt+"</span>")
				.next().css({width:spanW});
			}
		}
	);
	
	//Sitemap handler
	$("ul.Sitemap").each(function(){
		var len = $(this).find(">li").length;
		var grpA = Math.floor(len/2)-1;
		var $copy = $(this).clone();
		$copy.insertAfter(this);
		$(this).find(">li:gt("+ grpA +")").remove();
		$copy.find(">li:lt("+ (grpA+1) +")").remove();
	});
	
	//Side navigation, Pascal case handler
	$("ul.SideNav li li a").each(function(){
		var str = $(this).html().toLowerCase();
		var pascalize = function(x){
			var _str;
			_str = x.replace(/^(.)|\s(.)/g,function(match){return match.toUpperCase();});
			//exceptions
			_str = _str.replace(/Aaa|Sms|Atm|Vip|Nrl|Ibq/g,function(match){return match.toUpperCase();});
			_str = _str.replace("Ibank","iBank");
			return _str;
		};
		$(this).html(pascalize(str));
	});
	
	//body click handler
	$("body").bind('click',function(e){
		if($("li.PullUp ul:visible,div.WhatToDo ul:visible").length){
			$("li.PullUp > a,div.WhatToDo h3").trigger('click');
		}
	});
	
	
	//utility icons handler
	$("ul.UtilityIcons li a:eq(0)").bind('click',function(){
		window.print();
		return false;
	});
	$("ul.UtilityIcons li a:eq(1)").attr("href","mailto:info@ibq.qa.com");
	
/**
* Homepage Offer panel handler
*/
	var attachOfferHander = function($li){
		$li.hover(
			function(){
				$(this).find(".Desc").slideDown(200);
			},
			function(){
				$(this).find(".Desc").slideUp(200);
			}
		);
	}

	$("div.OfferPanel ul > li").each(function(){
		attachOfferHander($(this));
	});
	
	//$("div.OfferPanel").each(function(){
	//	var $curr = $(this).find("ul:first");
	//	var xhrURL = "OffersPanel.xml";
	//	var strHtml = "";
	//	var imgPrefix = "/$DataSet/OffersPanel/";
	//	var sets;
	//	var ptr = 0;
	//	$.get(xhrURL,function(data){
	//		//enable nextline if xml file is served not as text/xml
	//		//var xml_doc = XMLObjectifier.textToXML(data); //Converts xml string to xml dom
	//		var root = XMLObjectifier.xmlToJSON(data); //Converts xml dom object to JSON
	//		var getItemValue = function(i,itemName){
	//			return root.OffersPanel[i][itemName] ? root.OffersPanel[i][itemName][0].Text : "";
	//		}
	//		//if items are less than or equal to 3
	//		if(root.OffersPanel.length <= 3) {
	//			attachOfferHander($("div.OfferPanel li"));
	//			return;
	//		}
	//		for(var i=3;i < root.OffersPanel.length;i++){
	//			strHtml += "<li class=\"" + getItemValue(i,"OfferColorLabel") + "\">"
	//			strHtml += "<h2>"+getItemValue(i,"OfferName")+"</h2>";
	//			strHtml += "<h3>"+getItemValue(i,"OfferTitle")+"</h3>";
	//			strHtml += "<img class='KeyImage' src='"+imgPrefix + getItemValue(i,"Id") + "/OfferImage/" + getItemValue(i,"OfferImage") + "' />";
	//			strHtml += "<div class='Desc'>";
	//			strHtml += "<p>"+getItemValue(i,"OfferDescription")+"</p>";
	//			strHtml += "<a href='"+getItemValue(i,"OfferLink")+"'>"+getItemValue(i,"OfferLinkLabel")+"</a>";
	//			strHtml += "</div>";
	//			strHtml += "</li>";
	//		}
	//		$(strHtml).css({display:'none'}).appendTo($curr);
	//		attachOfferHander($("div.OfferPanel li"));
	//		
	//		sets = Math.ceil(($curr.find("li").length)/3)
	//	});
		
		
		var showSet = function(start){
			var end = start + 2;
				$curr.find("li").css({display:'block'});
				$curr.find("li:gt("+end+")").css({display:'none'});
				if(start > 0){
					$curr.find("li:lt("+start+")").css({display:'none'});
				}
				if(isIE6) {
					$curr.find("li:visible:first").css({marginLeft:'4px',paddingLeft:'1px'});
				}
		}
		
		var disableButton = function($btn){
			$btn.css({opacity:.3});
		}
		var enableButton = function($btn){
			$btn.css({opacity:1});
		}
		
		var $down = $(".Scroll .Down");
		var $up = $(".Scroll .Up");
		
		disableButton($up);
		disableButton($down);

		$down.bind('click',function(){
			if(++ptr >= sets || !sets) {ptr=sets-1;return false;}
			if(ptr >= sets-1) disableButton($(this));
			showSet(ptr*3);
			enableButton($up);
		});
		
		$up.bind('click',function(){
			if(--ptr < 0 || !sets) {ptr=0;return false;}
			if(ptr <= 0) disableButton($(this));
			showSet(ptr*3);
			enableButton($down);
		});
		
		//News ticker
	
	$(window).load(function(){
  setTimeout(function(){$('.Ticker').liScroll();},2000);
 });
		
/**
* Homepage Offer Spotlight handler
*/
	//$("div.OfferSpotlight").each(function(){
	//	var $curr = $(this).find("ul:first");
	//	var xhrURL = "OffersSpotLight.xml";
	//	var strHtml = "";
	//	var imgPrefix = "/$DataSet/OffersSpotLight/";
	//	var sets;
	//	var ptr = 0;
	//	
	//	$curr.parent().css({overflow:'hidden'});
	//	
	//	$.get(xhrURL,function(data){
	//		var root = XMLObjectifier.xmlToJSON(data); //Converts xml dom object to JSON
	//		
	//		var getItemValue = function(i,itemName){
	//			return root.OffersSpotLight[i][itemName] ? root.OffersSpotLight[i][itemName][0].Text : "";
	//		}
	//		
	//		for(var i=1;i<root.OffersSpotLight.length;i++){
	//			strHtml += "<li>"
	//			strHtml += "<a href='"+getItemValue(i,"OfferLink")+"'>";
	//			strHtml += "<img src='"+imgPrefix + getItemValue(i,"Id") + "/OfferImage/" + getItemValue(i,"OfferImage") + "' />";
	//			strHtml += "</a>";
	//			strHtml += "</li>";
	//		}
	//		$(strHtml).appendTo($curr);
	//		$curr.find("li:first").clone().appendTo($curr);
	//		
	//		$curr.find("li img").css({paddingBottom:'30px'});
	//		
	//		animateSpotlight();
	//		
	//		sets = $curr.find("li").length;
	//	});
	//	
	//	var animateSpotlight = function(){
	//		setTimeout(function(){
	//			$curr.animate({marginTop:550*ptr*-1},2000,"easeOutCirc",function(){
	//				ptr++;
	//				if(ptr < sets) animateSpotlight();
	//				else{
	//					ptr = 0;
	//					$curr.css({marginTop:0});
	//					animateSpotlight();
	//				}
	//			});
	//		},5000);
	//	}
	//});

});



function loanCalculator(){
	this.nationality = function() {
		return $('input[name=nationalRadio]:checked').attr('id');
	};
	this.annualInterestRate = function(val) {
		var amount = (eval($('#loanInterest').val())*eval(val))/100;
		return amount;
	}
	this.loanAmount = function() {
		return $('#loanAmount').val();
	}
	this.interestRate = function() {
		return 	$('#loanInterest').val();
	}
	this.managementFees = function(val){
		var amount = (1.50*eval(val))/100;
		return amount;
	}
	this.insuranceCharges = function(val) {
		var amount = (1.25*eval(val))/100;
		return amount;
	}
	this.tenure = function() {
		return $('#loanTenure').val();
	}
	this.loanDate = function() {
		return $('#loanStartDate').val();
	}
	
 }



function getMaxLoanAmount() {
	
	var maxAmountStr = null;
	
	this.maximumLoanAmount = function() {
	
	var radioButton = $('input[name=nationalRadio]:checked').attr('id');
	if(radioButton=='rbQatari')
		 {
			maximumLoanAmount = 2500000;
			//maxAmountStr = "Qatari nationals are allowed maximum of 2,500,000 QAR. Please enter lower amount.";
			maxAmountStr = $('#span1').html();
		 
		 }else if(radioButton =='rbExpatriats'){
			maximumLoanAmount = 500000;
			//maxAmountStr = "Expatriates are allowed maximum of 500,000 QAR. Please enter lower amount.";
			maxAmountStr = $('#span2').html();
	}

	return maximumLoanAmount;
	}
	
	this.maxAmountMessage = function() {
		return maxAmountStr;
	}
}


function doCalculation(){
	var lastDateMonth;
	var lastDateYear;
	var lastDateday = null;
	var totalMonths;
	
	var obj = new loanCalculator();		 
		 
	var dateArray = new Array();
		dateArray = obj.loanDate().split('/');
	var day = eval(dateArray[0]);
	var month = eval(dateArray[1]);
	var year = eval(dateArray[2]);
	var temp = eval(obj.tenure())+month;
	
	if(temp>12){
		totalMonths = temp/12;
		
		if(temp%12==0){
			totalMonths = totalMonths+".0";
		}
		
	}else{
			totalMonths = "0."+eval(obj.tenure());
			
		}
		
	var lastDateArray = new Array();
		lastDateArray = totalMonths.toString().split('.');
		
		if(lastDateArray.length>1) {
			lastDateYear = eval(lastDateArray[0])+year;
			lastDateMonth = eval(lastDateArray[1]) + month;
			
			if(temp>12){
				
				var a = lastDateArray[1];
				var b = lastDateArray[1];
					a = a.substr(0,1);
					b = b.substr(1,2);
				lastDateMonth = Math.ceil(eval(a+"."+b));
			}
		}
		

	/*for last payment month */
	var loanLastMonthObject = new Date(lastDateYear, lastDateMonth, 0);
	var lastPaymentMonth = loanLastMonthObject.getMonth()+1;
	var lastPaymentDay = loanLastMonthObject.getDate();
	if(lastPaymentMonth.toString().length < 2){lastPaymentMonth = "0"+lastPaymentMonth;}
	if(lastPaymentDay.toString().length < 2){lastPaymentDay = "0"+lastPaymentDay;}
	
	var loanLastDate = lastPaymentDay+"/"+lastPaymentMonth+"/"+lastDateYear;
		
	
	/* for next payment month */
	var loanNextMonthObject = new Date(year, (month+1), 0);
	var nextPaymentMonth = loanNextMonthObject.getMonth()+1;
	var nextPaymentDay = loanNextMonthObject.getDate();
	if(nextPaymentMonth.toString().length < 2){nextPaymentMonth = "0"+nextPaymentMonth;}
	if(nextPaymentDay.toString().length < 2){nextPaymentDay = "0"+nextPaymentDay;}
	
	
	if(loanNextMonthObject.getMonth()==0){
		year = year+1;
	}
	
	
	var loanNextDate = nextPaymentDay+"/"+nextPaymentMonth+"/"+year;
		 
	 
	 var P = eval(obj.loanAmount());
	 var grossTotalAmount = P+obj.managementFees(P)+obj.insuranceCharges(P);
	 	 grossTotalAmount = eval(grossTotalAmount);
	 
	 var Y = eval(obj.tenure());

	 var R = (eval(obj.interestRate())/100)/12;
	
	 var stepOne = grossTotalAmount*(Math.pow((1 + R), Y))*R;
	 
	 var stepTwo = Math.pow((1 + R),Y)-1;
	 
	 var totalAmount = stepOne / stepTwo;

	 
	 
	 $('#divCaculatedAmount').show();
	 $('#managmentFees').html(roundNumber(obj.managementFees(P),2));
	 $('#insuranceCharges').html(roundNumber(obj.insuranceCharges(P),2));
	 $('#totalLoanAmount').html(roundNumber(grossTotalAmount,2));
	 //$('#monthlyInstallment').html(roundNumber(grossTotalAmount/Y,2));
	 $('#monthlyInstallment').html(roundNumber(totalAmount,2));
	 $('#loanDate').html(obj.loanDate());
	 $('#firstPaymentDate').html(loanNextDate);
	 $('#loanCompletionDate').html(loanLastDate);

}

$(function(){

$('#btnCalculate').bind('click',function(){
	var formArray = ['#loanAmount','#loanTenure','#loanInterest','#loanStartDate'];
	var messageArray = [$('#span3').html(),$('#span4').html(),$('#span5').html(),$('#span6').html()];
	
	var maxObj = new getMaxLoanAmount();
	if(formValidation(formArray, messageArray)) {			
			if($('#loanAmount').val() <= eval(maxObj.maximumLoanAmount())){
				doCalculation();
			}else{
				$('.message').eq(0).html(maxObj.maxAmountMessage());
				$('#divCaculatedAmount').hide();
			}
	}
		});

$('#btnReset').bind('click',function(){
	$('#divCaculatedAmount').hide();
	
	
	var date = new Date();
		date.setDate(date.getDate()+7);
	var today = date.getDate();
	var cMonth = date.getMonth()+1;
	var cYear = date.getYear();
		if(today.toString().length < 2){today = "0"+today;}
		if(cMonth.toString().length < 2){cMonth = "0"+cMonth;}
		cYear = date.getFullYear();
	$('#loanStartDate').val(today+'/'+cMonth+'/'+cYear);
	
	
	
	$('#loanAmount').val('250000');
	$('#loanTenure').val('84');
	$('#loanInterest').val('10');

	
		});

})



function formValidation(formArray, messageArray){
var isValid = false;	
$('.message').html('');

	for(var i=0; i<formArray.length; i++){

		if(!validateFormElement($(formArray[i]).val(), i)){	
			$('.message').eq(i).html(messageArray[i]);
			isValid = false;	
			break;		
		}

		
		isValid = true;	
	}
	
    return isValid;		
}

function roundNumber(rnum, rlength) { // Arguments: number to round, number of decimal places
  var newnumber = Math.round(rnum*Math.pow(10,rlength))/Math.pow(10,rlength);
  return newnumber;
}


function validateFormElement(val, num){

//Matches  	123 | +3.14159 | -3.14159
//Non-Matches 	abc | 3.4.5 | $99.95
		//var regEx = /^[-+]?\d*\.?\d*$/;
		var interestRE = /(^[0-9]{1,8}|(^[0-9]{1,8}\.{0,1}[0-9]{1,2}))$/;
		var dateRegEx = /((([0][1-9]|[12][\d])|[3][01])[-/]([0][13578]|[1][02])[-/][1-9]\d\d\d)|((([0][1-9]|[12][\d])|[3][0])[-/]([0][13456789]|[1][012])[-/][1-9]\d\d\d)|(([0][1-9]|[12][\d])[-/][0][2][-/][1-9]\d([02468][048]|[13579][26]))|(([0][1-9]|[12][0-8])[-/][0][2][-/][1-9]\d\d\d)/;
		var numbRegEx = /^[0-9]*$/;
		var str = val;
	if(str == '' || str == null) {	
		return false;
	}else {
		
		switch(num){
				case 0:				
				if(str.match(numbRegEx)){
						return true;
				}
				  break;    
				case 1:
				  if(str.match(numbRegEx)){
					return true;	
				}
				  break;
				case 2:
				 if(str.match(interestRE)){
					return true;	
				} 
				  break;
				case 3:
				  if(str.match(dateRegEx)){
					return true;	
					}
				  break;
				
				default:
		}
		
	}
	return false;
}