/*/***************************************************************************************************************************
/// <name>     Artani - Common Java Script Library</name>
/// <summary>  This JavaScript provides common functions for the menu and other dynamic navigation functionality.</summary>
/// <history>
///            Konrad Kyc [2008 © Vantagesoft.ca] - 2008-08-24 - Created.
/// </history>
/// <notes>
/// </notes>
///***************************************************************************************************************************/

var floorplanImages = new Array(7);
var floorplanImagePosition = '203';
window.onload = InitializeOnLoad;

///**********************************************************************************
/// <name>    Initialize </name>
/// <summary> Initialize function that loads immediately when content is downloaded.</summary>
///**********************************************************************************
function Initialize()
{
    PageInit();
}

///**********************************************************************************
/// <name>    InitializeOnLoad </name>
/// <summary> Initialize function that loads on PageLoad.</summary>
///**********************************************************************************
function InitializeOnLoad()
{
    PageInitOnLoad();
}

function PageInitOnLoad(){} // Virtual Function
function PageInit(){} // Virtual Function

///**********************************************************************************
/// <name>    OpenNewWindow </name>
/// <summary> Opens a new window with the specified parameters.</summary>
///**********************************************************************************
function OpenNewWindow(url, width, height) 
{
    OpenNewWindow(url, width, height, false);
}

///**********************************************************************************
/// <name>    OpenNewWindow </name>
/// <summary> Opens a new window with the specified parameters.</summary>
///**********************************************************************************
function OpenNewWindow(url, width, height, scrollbars) 
{
    if(width != null && width > 0 && height != null && height > 0)
    {
        if(scrollbars)
            window.open(url,'','height=' + height + ',width=' + width + ',scrollbars=yes,status=no,menubar=no,toolbar=no,location=no');
        else
            window.open(url,'','height=' + height + ',width=' + width + ',status=no,menubar=no,toolbar=no,location=no');
    }
    else
        window.open(url,'','');      
}

///**********************************************************************************
/// <name>    MoveNext </name>
/// <summary> Changes the floorplan for a given.</summary>
///**********************************************************************************
function MoveNext(imgId)
{
    switch(floorplanImagePosition)
    {
        case '203':
            ChangeFloorplan('304', imgId);
            break;
        case '304':
            ChangeFloorplan('307', imgId);
            break;
        case '307':
            ChangeFloorplan('406', imgId); 
            break;
        case '406':
            ChangeFloorplan('505', imgId);
            break;
        case '505':
            ChangeFloorplan('604', imgId);
            break;
        case '604':
            ChangeFloorplan('803', imgId);
            break;
        case '803':
            ChangeFloorplan('203', imgId);                                                           
            break;
    }    
}

///**********************************************************************************
/// <name>    ChangeFloorplan </name>
/// <summary> Changes the floorplan for a given plan.</summary>
///**********************************************************************************
function ChangeFloorplan(floorplanId, imgId)
{
    ChangeFloorplan(floorplanId, imgId, false);
}

///**********************************************************************************
/// <name>    ChangeFloorplan </name>
/// <summary> Changes the floorplan for a given plan.</summary>
///**********************************************************************************
function ChangeFloorplan(floorplanId, imgId, isInitialLoad)
{   
    if (!BrowserSupportsJQuery())
    {
        document.getElementById(imgId).src = 'Images/Floorplans/Floorplan-' + floorplanId + '.gif';
        document.getElementById("divFloorplanPDFLink").className = "FloorPlanPDFLink" + floorplanId + " PrintHidden";
    }
    else
    {
        if(isInitialLoad)
        {
            // Fade-in the content
            document.getElementById(imgId).src = 'Images/Floorplans/Floorplan-' + floorplanId + '.gif';
            document.getElementById("divFloorplanPDFLink").className = "FloorPlanPDFLink" + floorplanId + " PrintHidden";
            setTimeout(function() {$("#divFloorplanPDFLink").fadeIn(1500);}, 0);
            setTimeout(function() {$("#divFloorplanDisplay").fadeIn(1500);}, 0);
        }
        else
        {
            // Change the floorplan image (by fading-out previous and fading-in next)
            $("#imgFloorplan").fadeTo("slow", 0.0, function (){
                document.getElementById(imgId).src = 'Images/Floorplans/Floorplan-' + floorplanId + '.gif';
                setTimeout(function() {$("#imgFloorplan").fadeTo("slow", 1.0);}, 0);
            });
            $("#divFloorplanPDFLink").fadeTo("slow", 0.0, function (){
                document.getElementById("divFloorplanPDFLink").className = "FloorPlanPDFLink" + floorplanId + " PrintHidden";
                setTimeout(function() {$("#divFloorplanPDFLink").fadeTo("slow", 1.0);}, 0);
            });
        }
    }
    
    document.getElementById(imgId).alt = "Floor Plan " + floorplanId;
    
    switch(floorplanId)
    {
        case '203':
            document.title = 'Artani | San Francisco - Floor Plans - Plan 203 - 1 Bedroom, 1 Bath';
            document.getElementById(imgId).alt = "Plan 203 - 1 Bedroom, 1 Bath";
            break;            
        case '304':
            document.title = 'Artani | San Francisco - Floor Plans - Plan 304 - 1 Bedroom + Study, 2 Bath';
            document.getElementById(imgId).alt = "Plan 304 - 1 Bedroom + Study, 2 Bath";
            break;
        case '307':
            document.title = 'Artani | San Francisco - Floor Plans - Plan 307 - 2 Bedroom, 2 Bath';
            document.getElementById(imgId).alt = "Plan 307 - 2 Bedroom, 2 Bath";
            break;
        case '406':
            document.title = 'Artani | San Francisco - Floor Plans - Plan 406 - 2 Bedroom, 2 Bath';
            document.getElementById(imgId).alt = "Plan 406 - 2 Bedroom, 2 Bath";
            break;
        case '505':
            document.title = 'Artani | San Francisco - Floor Plans - Plan 505 - 1 Bedroom, 1 Bath';
            document.getElementById(imgId).alt = "Plan 505 - 1 Bedroom, 1 Bath";
            break;
        case '604':
            document.title = 'Artani | San Francisco - Floor Plans - Plan 604 - 2 Bedroom, 2 Bath';
            document.getElementById(imgId).alt = "Plan 604 - 2 Bedroom, 2 Bath";
            break;
        case '803':
            document.title = 'Artani | San Francisco - Floor Plans - Plan 803 - 2 Bedroom, 2 Bath';
            document.getElementById(imgId).alt = "Plan 803 - 2 Bedroom, 2 Bath";
            break;           
    }
    
    // Clear all styles for the links
    document.getElementById("liFloorplan203").className = "Floorplan203 PrintHidden";
    document.getElementById("liFloorplan304").className = "Floorplan304 PrintHidden";
    document.getElementById("liFloorplan307").className = "Floorplan307 PrintHidden";
    document.getElementById("liFloorplan406").className = "Floorplan406 PrintHidden";
    document.getElementById("liFloorplan505").className = "Floorplan505 PrintHidden";
    document.getElementById("liFloorplan604").className = "Floorplan604 PrintHidden";
    document.getElementById("liFloorplan803").className = "Floorplan803 PrintHidden";

    // Change the style of the corresponding floorplan link
    document.getElementById("liFloorplan" + floorplanId).className = "Floorplan" + floorplanId + " PrintHidden Floorplan" + floorplanId + "-on";
    document.getElementById("hrefFloorplanPDF").setAttribute("href", "PDF/Floorplan" + floorplanId + ".pdf")
    
    // Change the hash so that floorplan can be bookmarked and restored properly (by javascript)
    window.location.hash = "Floorplan" + floorplanId;    
    floorplanImagePosition = floorplanId;
}

function PreloadFloorplanImages()
{
    floorplanImages[0] = new Image(623, 360); 
    floorplanImages[1] = new Image(623, 360);
    floorplanImages[2] = new Image(623, 360);
    floorplanImages[3] = new Image(623, 360);
    floorplanImages[4] = new Image(623, 360);
    floorplanImages[5] = new Image(623, 360);
    floorplanImages[6] = new Image(623, 360);
    
    floorplanImages[0].src = "Images/Floorplans/Floorplan-203.gif"; 
    floorplanImages[1].src = "Images/Floorplans/Floorplan-304.gif"; 
    floorplanImages[2].src = "Images/Floorplans/Floorplan-307.gif"; 
    floorplanImages[3].src = "Images/Floorplans/Floorplan-406.gif"; 
    floorplanImages[4].src = "Images/Floorplans/Floorplan-505.gif";
    floorplanImages[5].src = "Images/Floorplans/Floorplan-604.gif";
    floorplanImages[6].src = "Images/Floorplans/Floorplan-803.gif";
}

///**********************************************************************************
/// <name>    ClosePopUp </name>
/// <summary> Closes the Modal (pop-up).</summary>
///**********************************************************************************
function ClosePopUp()
{
        // Close the Modal
        tb_remove();
}

///**********************************************************************************
/// <name>    SwitchImage </name>
/// <summary> Switches the image for a given object.</summary>
///**********************************************************************************
function SwitchImage(img, imagePath)
{
    img.src = imagePath;
}

///**********************************************************************************
/// <name>    UseGoogleAnalytics </name>
/// <summary> Based on the current host, it determines whether to log statistics.
///           This is to ignore staging environments.</summary>
///**********************************************************************************
function UseGoogleAnalytics()
{
    return (!(document.location.hostname.toLowerCase() == 'localhost' || document.location.hostname.toLowerCase() == 'www.hutnergroup.com' || document.location.hostname.toLowerCase() == 'hutnergroup.com' || document.location.hostname.toLowerCase() == 'www.konradkyc.com' || document.location.hostname.toLowerCase() == 'konradkyc.com' || document.location.hostname.toLowerCase() == 'www.lab415.com' || document.location.hostname.toLowerCase() == 'lab415.com'));
}

///**********************************************************************************
/// <name>    BrowserSupportsModals </name>
/// <summary> Determines whether the broswer can support the imitated modal overlays.
///           if the browser does not support modals, then a regular pop-up will be
///           open.</summary>
///**********************************************************************************
function BrowserSupportsModals()
{
    try
    {
        if(BrowserDetect.browser == "Explorer" && BrowserDetect.majorVersion < 6)
            return false;
        else if(BrowserDetect.browser == "Firefox" && BrowserDetect.majorVersion < 1)
            return false; 
        else if(BrowserDetect.browser == "Netscape" && BrowserDetect.majorVersion < 6)
            return false;
        else if(BrowserDetect.browser == "Mozilla" && BrowserDetect.majorVersion < 2)
            return false;        
        else if(BrowserDetect.browser == "Safari" && BrowserDetect.majorVersion < 3)
            return false;
        else if(BrowserDetect.browser == "Opera" && BrowserDetect.majorVersion < 8)
            return false;                               
        else
        {
            // For anything else, return true by default.
            return true;
        }
    }
    catch(e)
    {
        // return false when error occurs
        return false;
    }
}

///**********************************************************************************
/// <name>    BrowserSupportsJQuery </name>
/// <summary> Determines whether the broswer can support the JQuery functionality.
///           if the browser does not support JQuery, then features such as animtaion
///           will not be initiated.</summary>
///**********************************************************************************
function BrowserSupportsJQuery()
{
    try
    {
        if(BrowserDetect.browser == "Explorer" && BrowserDetect.majorVersion < 6)
            return false;
        else if(BrowserDetect.browser == "Firefox" && BrowserDetect.majorVersion < 1)
            return false; 
        else if(BrowserDetect.browser == "Netscape" && BrowserDetect.majorVersion < 6)
            return false;
        else if(BrowserDetect.browser == "Mozilla" && BrowserDetect.majorVersion < 2)
            return false;        
        else if(BrowserDetect.browser == "Safari" && BrowserDetect.majorVersion < 3)
            return false;
        else if(BrowserDetect.browser == "Opera" && BrowserDetect.majorVersion < 8)
            return false;                               
        else
        {
            // For anything else, return true by default.
            return true;
        }
    }
    catch(e)
    {
        // return false when error occurs
        return false;
    }
}

///**********************************************************************************
/// <name>    Browser Detection </name>
/// <summary> Detects which browser the user is using.</summary>
/// <credit>  http://www.quirksmode.org/js/detect.html</credit>
///**********************************************************************************
var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.majorVersion = (this.version.toString()).split(".")[0];
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		
		var extractedVersion = dataString.substring(index+this.versionSearchString.length+1);
		
		try 
		{
		    var cleansedVersion = extractedVersion.match(/^\d*(\.\d+)?/)[0];		    
		    return parseFloat(cleansedVersion);
        }
		catch(e) {return parseFloat(extractedVersion);}
		
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{ 	string: navigator.userAgent,
			subString: "Chrome",
			versionSearch: "Chrome",
			identity: "Chrome"
		},		
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari",
			versionSearch: "Version"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();