/*
 * Construct HTML from JSON parse
**/

if(!cba)var cba = {};


/* Info Window Page
 *
 * This is the page which is contained in an info window
 * this page has a children variable which you can add in multiple children etc to be inserted into the content of the page
 * 
 */
cba.InfoWindowPage = function(a_parentId, a_pageLabel, a_pageIndex) {
    var m_pageLabel = a_pageLabel;
    var m_pageIndex = a_pageIndex;
    var m_parentId = a_parentId;
    var m_pageId = a_parentId + "_" + m_pageIndex;
    var m_tabId = a_parentId + "_button" + m_pageIndex;
    var m_img;
    var m_extraContent;
    var m_lat;
    var m_lng;

    var getPageId = this.getPageId = function() { return m_pageId; }

    var m_children = [];

    var addChild = this.addChild = function(a_child) {
        m_children.push(a_child);
    }

    var getChildAt = this.getChildAt = function(a_index) {
        return m_children[a_index];
    }

    var setImage = this.setImage = function(a_img) {
        m_img = a_img;
    }

    var setExtraContent = this.setExtraContent = function(a_extraContent) {
        m_extraContent = a_extraContent;
    }

    var setLat = this.setLat = function(a_lat) {
        m_lat = a_lat;
    }

    var setLng = this.setLng = function(a_lng) {
        m_lng = a_lng;
    }

    var toTabHtmlString = this.toTabHtmlString = function() {
        var l_class = m_pageIndex == 0 ? "active" : "";
        var l_returnStr = "<li id='" + m_tabId + "' class='" + l_class + "'>" +
								"<a href='javascript:void(0);' onclick='cba.InfoWindow.showWindowContent(\"" + m_pageId + "\");'>" + m_pageLabel + "</a></li>";

        return l_returnStr;
    }

    var showContent = this.showContent = function(a_showContent) {
        var l_display = a_showContent == true ? "block" : "none";
        $(m_pageId).setStyle("display", l_display);

        // this is temp to set style of heading
        var l_class = a_showContent ? "active" : "";
        $(m_tabId).set("class", l_class);
    }

    var toContentHtmlString = this.toContentHtmlString = function() {
        var l_returnStr = "";

        // this is the content holder div
        var l_display = m_pageIndex == 0 ? "block" : "none";


        l_returnStr += "<div id='" + m_pageId + "' style='display:" + l_display + ";'>";
        l_returnStr += "<div class='infoWinCopy clearfix'>";

        for (var b = 0; b < m_children.length; b++) {
            var l_child = m_children[b];
            l_returnStr += l_child.toHtmlString();
        }

        if (m_img != null) {
            l_returnStr += '<div class="thumb"><img src="' + m_img + '"><a href="javascript:void(0);" onclick="ShowStreetView(' + m_lat + ',' + m_lng + ')">Street view*</a></div>';
        }

        if (m_extraContent != null) {
            l_returnStr += '<span style="padding:7px 0 0 0; display:block;">' + m_extraContent + '</span>';
        }

        // close content div
        l_returnStr += "</div>";


        // close page div
        l_returnStr += "</div>";


        return l_returnStr;
    }
}

/* WindowTitle Content */
cba.WindowTitle = function()
{
		var m_title;
		var m_hasBranch = false;
		var m_hasATM = false;
		var m_ATMType = "CBA";
		
		var setTitle = this.setTitle = function(a_title)
		{
			m_title = a_title;
		}
		
		var hasBranch = this.hasBranch = function(a_branchBoolean)
		{
			m_hasBranch = (a_branchBoolean=="true" || a_branchBoolean==true);
		}
		
		var getHasBranch = this.getHasBranch = function(){return m_hasBranch;}
		
		
		var hasATM = this.hasATM = function(a_atmBoolean)
		{
			m_hasATM = (a_atmBoolean=="true" || a_atmBoolean==true);
		}
		
		var ATMType = this.ATMType = function(a_atmType)
		{
			m_ATMType = a_atmType;
		}
		
		var toHtmlString = this.toHtmlString = function()
		{
			var l_returnStr = "";
			
			l_returnStr += "<div class='infoWinHeader'>";
			l_returnStr += "<ul>";
			
			if(m_hasBranch)
			{
				l_returnStr += "<li><img src='"+"App_Themes/Default/Images/TLBranch.gif"+"' alt='' title='' /></li>";
			}
			
			if(m_hasATM)
			{
			
			    var l_atmImage = "";
			    if(m_ATMType == "CBA")
			    {
			       l_atmImage  ="App_Themes/Default/Images/TLCBA.gif";
			       l_returnStr += "<li><img src='"+l_atmImage+"' alt='' title='' /></li>";
			    }
			    
			    if(m_ATMType == "BW")
			    {
			       l_atmImage  ="App_Themes/Default/Images/TLBankWest.gif";
			       l_returnStr += "<li><img src='"+l_atmImage+"' alt='' title='' /></li>";
			    }
			    //var l_atmImage = m_ATMType == "CBA" ? "App_Themes/Default/Images/TLCBA.gif" : "App_Themes/Default/Images/TLBankWest.gif";
				
			}
			l_returnStr += "</ul>";
			l_returnStr += "<h2>"+m_title+"</h2>";
			l_returnStr += "<a class='closeBtn' id='closetBtn' onclick='closeCurrentInfoWindow(true);' ></a>";

			l_returnStr += "</div>";
			
			return l_returnStr;
		}
}


/* Location Content */
cba.LocationContent = function(a_title, a_buildingLevelAddress, a_address, a_phone, a_bsb, a_agEmail,a_suburb, a_postcode, a_state) {
    var m_title = a_title;
    var m_buildingLevelAddress = a_buildingLevelAddress;
    var m_address = a_address;
    var m_phone = a_phone;
    var m_bsb = a_bsb;
    var m_agEmail = a_agEmail
    var details = a_suburb+', '+a_state + a_postcode

    var toHtmlString = this.toHtmlString = function() {
        var l_returnStr = "";

        l_returnStr += "<span><strong>" + m_title + "</strong></span>";
        if (m_buildingLevelAddress) l_returnStr += m_buildingLevelAddress + "<br/>";
        l_returnStr += m_address + "<br/>";
        l_returnStr +=  a_suburb + ", " + a_state + " " + a_postcode + "<br/><br/>";
        l_returnStr += "<strong>Phone: </strong>" + m_phone;
        
        //l_returnStr +=  "<span><strong>Email: </strong>" + "<a href='javascript:void(0);' onclick='window.open(\"mailto:" + m_agEmail + "\",\"EmailWindow\");'>" + 'agline@cba.com.au' + "</a></span>";
        if (m_bsb != "") {
            l_returnStr += "<span><strong>BSB: </strong>06" + m_bsb+"</span>";
        }
        //l_returnStr += "</span>";


        return l_returnStr;
    }
}

cba.LocationIconsContent = function(a_imagePath, a_altTag) {
    var m_facilities = [];
    var m_accessibilities = [];

    var addFacility = this.addFacility = function(a_imagePath, a_altTag) {
        m_facilities.push({ img: a_imagePath, alt: a_altTag });
    }

    var addAccessibility = this.addAccessibility = function(a_imagePath, a_altTag) {
        m_accessibilities.push({ img: a_imagePath, alt: a_altTag });
    }

    var toHtmlString = this.toHtmlString = function() {
        var l_returnStr = "";
        var l_imgObject;

        // add facilities
        if (m_facilities.length > 0) {
            l_returnStr += "<div class='iconsType'><p><span>Branch</span></p><ul>";
            for (var b = 0; b < m_facilities.length; b++) {
                l_imgObject = m_facilities[b];
                l_returnStr += "<li><img src='" + l_imgObject.img + "' alt='" + l_imgObject.alt + "' title='" + l_imgObject.alt + "' /></li>";
            }
            l_returnStr += "</ul></div>";
        }

        // add accessibilities
        if (m_accessibilities.length > 0) {
            l_returnStr += "<div class='iconsType'><p><span>ATM</span></p><ul>";
            for (var b = 0; b < m_accessibilities.length; b++) {
                l_imgObject = m_accessibilities[b];
                l_returnStr += "<li><img src='" + l_imgObject.img + "' alt='" + l_imgObject.alt + "' title='" + l_imgObject.alt + "' /></li>";
            }
            l_returnStr += "</ul></div>";
        }
        return l_returnStr;
    }
}


/* Hours Content */
cba.HoursContent = function()
{
		//var m_parentId = a_parentId;
		var m_timeSegments = [];
		var m_image = null;
		
		var addDayTime = this.addDayTime = function(a_day, a_time)
		{
			var l_str = "<li><span>"+a_day+":</span>"+a_time+"</li>";
			m_timeSegments.push(l_str);
		}
		
		
		var toHtmlString = this.toHtmlString = function()
		{
			var l_returnStr = "<ul class='ulHoursList'>";	//"<strong>Hours List:</strong><ul>";
			
			for(var b=0;b<m_timeSegments.length;b++)
			{
				var l_timeStr = m_timeSegments[b];
				l_returnStr += l_timeStr;
			}
			
			l_returnStr += "</ul>";
			
			if(m_image!=null)l_returnStr += m_image;
			
			return l_returnStr;
		}
}

/* Services Content */
cba.ServicesContent = function(a_parentId)
{
		var m_parentId = a_parentId;
		var m_products = [];
		var m_productTitleScreenId = m_parentId+"_titlescreen";
		var m_productPageIdPrefix = m_parentId+"_contentPage_";
		var m_img;
		var m_lat;
		var m_lng;
		
		var getProductTitleScreenId = this.getProductTitleScreenId = function(){return m_productTitleScreenId;}
		
		/**
		 * This adds product object into list
		 * 
		 * @see cba.ServicesContent;
		 */
		var addProduct = this.addProduct = function(a_product)
		{
			m_products.push(a_product);
		}
		
		var setImage = this.setImage = function(a_img)
		{
			m_img = a_img;

        }
		
		var setLat = this.setLat = function(a_lat) {
		    m_lat = a_lat;
		}

		var setLng = this.setLng = function(a_lng) {
		    m_lng = a_lng;
		}
		
		var toServicesPageString = function(a_pageId, a_pageContent, a_showContent)
		{
			var l_display = a_showContent ? "block" : "none";
			
			var l_returnStr = "";	
			l_returnStr += "<div id='"+a_pageId+"' style='display:"+l_display+";' >";
			l_returnStr += a_pageContent;
			
			if(m_img!=null && a_showContent)
			{
			    l_returnStr += '<div class="thumb"><img src="' + m_img + '"><a href="javascript:void(0);" onclick="ShowStreetView(' + m_lat + ',' + m_lng + ')">Street view*</a></div>';
			}
			
			l_returnStr += "</div>";
			
			return l_returnStr;
		}
		
		var showPageById = this.showPageById = function(a_pageId)
		{
			var l_product;
			var l_productPageId;
			var l_pageDivObject;
			var l_display;
			
			// check if we want to show title page
			l_pageDivObject = $(m_productTitleScreenId);
			l_display = (a_pageId == m_productTitleScreenId) ? "block" : "none";
			l_pageDivObject.setStyle("display", l_display);
			
			for(var b=0;b<m_products.length;b++)
			{
				l_product = m_products[b];
				//l_productPageId = m_productPageIdPrefix+String(b);
				l_productPageId = m_productPageIdPrefix + l_product.getPageTitle();
				l_pageDivObject = $(l_productPageId);
				l_display = (l_productPageId.toLowerCase() == a_pageId.toLowerCase()) ? "block" : "none";
				l_pageDivObject.setStyle("display", l_display);
			}
		}
		
		var toHtmlString = this.toHtmlString = function()
		{
			var l_returnStr = "";	//"<strong>Products list:</strong><ul>";
			
			// this is the services container for title screen and inner pages
			//l_returnStr += "<div>";
			
			
			// add title screen page
			var l_titleScreenContent = "<ul>";
			var l_product;
			var l_productPageId;
			
			for(var b=0;b<m_products.length;b++)
			{
				l_product = m_products[b];
				//l_productPageId = m_productPageIdPrefix+String(b);
				l_productPageId = m_productPageIdPrefix + l_product.getPageTitle();
				l_titleScreenContent += "<li><a href='javascript:void(0);' onclick='cba.ServicesContent.showContentPageById(\"" + l_productPageId + "\");SendServiceKPI(\"" + l_product.getButtonTitle() + "\");' >" + l_product.getButtonTitle() + "</a></li>";
			}
			
			l_titleScreenContent += "</ul>";
			
			
			
			var l_titleScreenPage = toServicesPageString(m_productTitleScreenId, l_titleScreenContent, true);
			
			
			
			// add title screen div to main container
			l_returnStr += l_titleScreenPage;
			
			// now add product pages 
			var l_contentPageStr;
			
			for(var b=0;b<m_products.length;b++)
			{
			    l_product = m_products[b];
			    l_productPageId = m_productPageIdPrefix + l_product.getPageTitle();
			    //l_returnStr += toServicesPageString(m_productPageIdPrefix+String(b), l_product.toHtmlString(), false);
			    l_returnStr += toServicesPageString(l_productPageId, l_product.toHtmlString(), false);
			}
			
			
			// end services container div
			//l_returnStr += "</div>";			
			
			
			//l_returnStr += "</ul>";
			
			return l_returnStr;
		}
}
cba.ServicesContent.showContentPageById = function(a_contentPageId)
{
	var l_idsArray = a_contentPageId.split("_");
	var l_windowId = l_idsArray[0];
	var l_pageIndex = parseFloat(l_idsArray[1]);
	//var l_servicesContentid = parseFloat(l_idsArray[1]);
	
	var l_infoWindow = cba.InfoWindow.getInfoWindowById(l_windowId);
	var l_servicesPage;
	var l_servicesContent;
	if(l_infoWindow!=null)
	{
		// we now want to get the page id of the services page
		l_servicesPage = l_infoWindow.getPageByIndex(l_pageIndex);
		l_servicesContent = l_servicesPage.getChildAt(0);
		
		l_servicesContent.showPageById(a_contentPageId);
	}
}


// this is the services product page data
cba.ServicesContentProduct = function(a_productID, a_titleScreenId, a_buttonTitle, a_pageTitle, a_productNotes, a_image, a_fullName, a_managerJobTitle, a_managerPrimaryEmail, a_managerSecondaryEmail, a_productPrimaryPhone, a_managerPrimaryPhone, a_managerSecondaryPhone, a_managerPrimaryMobile, a_managerSecondaryMobile, a_managerNotes, a_phoneDescription, a_managerEmail) {
    var m_titleScreenId = a_titleScreenId;
    var m_buttonTitle = a_buttonTitle;
    var m_pageTitle = a_pageTitle;
    var m_productNotes = a_productNotes;
    var m_image = a_image;
    var m_productID = a_productID;


    var m_fullName = a_fullName;
    var m_managerJobTitle = a_managerJobTitle;
    var m_managerPrimaryEmail = a_managerPrimaryEmail;
    var m_managerSecondaryEmail = a_managerSecondaryEmail;
    var m_managerPrimaryPhone = a_managerPrimaryPhone;
    var m_managerSecondaryPhone = a_managerSecondaryPhone;
    var m_managerPrimaryMobile = a_managerPrimaryMobile;
    var m_managerSecondaryMobile = a_managerSecondaryMobile;
    var m_managerNotes = a_managerNotes;
    var m_phoneDescription = a_phoneDescription;
    var m_productPrimaryPhone = a_productPrimaryPhone;
    var m_managerEmail = a_managerEmail;


    var getButtonTitle = this.getButtonTitle = function() { return m_buttonTitle; }
    var getPageTitle = this.getPageTitle = function() { return m_productID; }

    var toHtmlString = this.toHtmlString = function() {
        var l_returnStr = "<div>";


        if (m_productID!="4") l_returnStr += "<span><a href='javascript:void(0);' onclick='cba.ServicesContent.showContentPageById(\"" + m_titleScreenId + "\");' class='ctaBack' >More services</a></span>";

        l_returnStr += "<span><strong>" + m_pageTitle + "</strong></span>";
        if (m_fullName) l_returnStr += "<span>" + m_fullName + "</span>";
        l_returnStr += "<span>" + m_productNotes + "</span>";
        if (m_productID == "3") l_returnStr += "<a href='javascript:void(0);' onclick='cba.InfoWindow.showWindowContent(\"InfoWindow_1\");'>Check opening hours</a><br/>";
        if (m_managerPrimaryPhone) l_returnStr += "<strong>Phone:</strong> " + m_managerPrimaryPhone + "<br/>";
        if (m_managerPrimaryEmail) l_returnStr += "<strong>Email: </strong><a href='javascript:void(0);' onclick='window.open(\"mailto:" + m_managerPrimaryEmail + "\",\"EmailWindow\");'>" + m_managerPrimaryEmail + "</a><br/>";

        if (m_managerNotes) l_returnStr += "<span>" + m_managerNotes + "</span>";
        
        if (m_phoneDescription) l_returnStr +=  m_phoneDescription + "<br/>";

        if (m_productPrimaryPhone) l_returnStr += "<strong>Phone:</strong> " + m_productPrimaryPhone + "<br/>";
        if (m_managerSecondaryPhone) l_returnStr += "<strong>Phone:</strong> " + m_managerSecondaryPhone + "<br/>";
        
        if (m_managerEmail) l_returnStr +=  "<a href='javascript:void(0);' onclick='window.open(\"mailto:" + m_managerEmail + "\",\"EmailWindow\");'>" + m_managerEmail + "</a><br/>";

        if (m_managerSecondaryEmail) l_returnStr += "<strong>Alternative Email: </strong>" + m_managerSecondaryEmail + "<br/>";

        if (m_managerPrimaryMobile) l_returnStr += "<strong>Mobile:</strong> " + m_managerPrimaryMobile + "<br/>";
        if (m_managerSecondaryMobile) l_returnStr += "<strong>Alternative mobile:</strong> " + m_managerSecondaryMobile + "</strong><br/>";

        /* extras, if required */
        //if (m_managerJobTitle) l_returnStr += "<span>" + m_managerJobTitle + "<br>";
                                                  
        if (m_productID == "1"){ l_returnStr += "<span><strong>Email: </strong><a href='javascript:void(0);' onclick='window.open(\"mailto:" + 'localbusinessbanking@cba.com.au' + "\", \"Localbusinessbanking\")' >localbusinessbanking@cba.com.au</a></span>";}
        
        l_returnStr += "</div>";

        if (m_image != null) {
            l_returnStr += '<div class="thumb"><img src="' + m_image + '"></div>';
        }

        return l_returnStr;
    }
}

/* Contact content */
cba.ContactContent = function(a_phone, a_primaryEmail, a_secondaryEmail, a_agMail) {
    var m_phone = a_phone;
    var m_primaryEmail = a_primaryEmail;
    var m_secondaryEmail = a_secondaryEmail;

    var m_extraContact = "";
    var setExtraContact = this.setExtraContact = function(a_extraContact) {
        m_extraContact = a_extraContact;
    }

    var toHtmlString = this.toHtmlString = function() {
        var l_returnStr = "";

        if (m_extraContact != "") {
            l_returnStr += "<span>" + m_extraContact + "</span>";
        }

        l_returnStr += "<span><strong>Phone:</strong> " + m_phone + "</span>";
        if(a_agMail == '')
        {
        l_returnStr += "<span><a href='javascript:void(0);' onclick='window.open(\"http://www.commbank.com.au/contact-us/email-enquiries/default.aspx\", \"EmailUs\")' >Email Us</a></span>";
        }
        else{
        if (a_agMail) l_returnStr += "<span><strong>Email: </strong><a href='javascript:void(0);' onclick='window.open(\"mailto:" + a_agMail + "\", \"EmailAGLine\")' >" + a_agMail + "</a></span>";
        }
        l_returnStr += "<span><strong>Existing customer?</strong><br/>Login to <a href='javascript:void(0);' onclick='window.open(\"http://www.commbank.com.au/netbank\", \"NetBank\")'>NetBank</a> or <a href='javascript:void(0);' onclick='window.open(\"http://www.commbank.com.au/commbiz\", \"CommBiz\")'>CommBiz</a> and send us a message</span>";

        return l_returnStr;
    }
}

/* ATM Content */
cba.ATMContent = function(a_title, a_atmType, a_buildingName, a_buildingLevelAddress, a_address, a_suburb, a_postcode, a_state, a_image) {
    var m_title = a_title;
    var m_atmType = a_atmType;
    var m_buildingName = a_buildingName;
    var m_buildingLevelAddress = a_buildingLevelAddress;
    var m_address = a_address;
    var m_suburb = a_suburb;
    var m_postcode = a_postcode;
    var m_state = a_state;
    var m_image = a_image;


    var setLat = this.setLat = function(a_lat) {
        m_lat = a_lat;
    }

    var setLng = this.setLng = function(a_lng) {
        m_lng = a_lng;
    }


    var setLocationIcons = this.setLocationIcons = function(a_locationIcons) {
        m_locationIcons = a_locationIcons;
    }


    var toHtmlString = this.toHtmlString = function() {
        var l_returnStr = "";
        l_returnStr = "<div class='infoWinCopy'>";
        l_returnStr += "<strong>" + m_buildingName + "</strong><br/><br/>";
        if (m_buildingLevelAddress) l_returnStr += m_buildingLevelAddress + "<br/>";
        l_returnStr += m_address + "<br/>";
        l_returnStr += m_suburb + ", " + m_state + " " + m_postcode + "<br/><br/>";

        if (m_image != null) {
            l_returnStr += '<div class="thumb"><img src="' + m_image + '"><a href="javascript:void(0);" onclick="ShowStreetView(' + m_lat + ',' + m_lng + ')">Street view*</a></div>';
        }
        l_returnStr += m_locationIcons.toHtmlString();
        l_returnStr += "</div>";
        return l_returnStr;
    }
}

