﻿defaultPxInEm = 12;
pxInEm = defaultPxInEm;
isIe = false;
isFf = false;
verticalScroll = null;

function load() {
	pxInEm = getPxInEm();
	if (navigator.appName.indexOf('Microsoft Internet Explorer') != -1)
		isIe = true; 
	if (navigator.appName.indexOf('Netscape') != -1)
		isFf = true;    	
	
	if (isIe) {
		updatePngImages();
	}	
	
	new TransparentNavi('siteNavi');
            
	setAutoHeight();
	setAutoWidth();
	setAutoWidthByParent();
    
	updateImagesSize();   
	updateObjectsSize();      
	
	if (typeof ItemPreview != "undefined") {
		itemPreview = new ItemPreview('scrollItems', 'item', 'control', 'scrollPanel', 'itemText', 'alt');
		itemPreview.startAutoPreview();
	}
		
	$('container').style.width = (document.width / pxInEm) + 'em';
}

function initMaps() {
	initGoogleMap(55.711662, 37.68365, 16, "г. Москва, м. Кожуховская, ул. Угрешская, д. 2", "map");
}

function getStyle(element, property)
{
	property = (property == 'float' ? 'cssFloat' : property.camelize());
	var value = element.style[property];
	if (!value) {
		if (element.currentStyle) {
			value = element.currentStyle[property];
		}
		else if (window.getComputedStyle) {
			value = window.getComputedStyle(element, null).getPropertyValue(styleProp);
		}
		else
			value = null;
	}
	if (property == 'opacity') {
		value = (value ? parseFloat(value) : 1.0);
	}
	if (value == 'auto') {
		value == null;
	}
	return value;
}

function getPxInEm()
{
    var pxInEm = 0;
    var div = document.createElement("div");     
    div.style.width = "1em";
    div.style.height = "1em";     
    document.body.appendChild(div);
    pxInEm = div.offsetWidth;
    document.body.removeChild(div);
    
    return pxInEm;
}

function setAutoHeight() {

    var elements = document.getElementsByClassName( 'autoHeightAttribute' );

    for ( var elementIndex = 0; elementIndex < elements.length; elementIndex++ ) {

        var element = elements[ elementIndex ];
        element.style.height = ( 1.0 * element.offsetHeight / pxInEm ) + 'em';    
    }
}

function setAutoWidth() {
    
    var elements = document.getElementsByClassName( 'autoWidthAttribute' );

    for ( var elementIndex = 0; elementIndex < elements.length; elementIndex++ ) {

        var element = elements[ elementIndex ];
        element.style.width = ( 1.0 * element.offsetWidth / pxInEm ) + 'em';    
    }
}

function setAutoWidthByParent() {
    
    var elements = document.getElementsByClassName( 'autoWidthByParentAttribute' );

    for ( var elementIndex = elements.length - 1; elementIndex >= 0 ; elementIndex-- ) {

        var element = elements[ elementIndex ];
        element.style.width = ( 1.0 * element.parentNode.offsetWidth / pxInEm ) + 'em';    
    }
}

function updatePngImages() {       
     
	var blankSrc = '/themes/main/images/pixel.gif';
	var elements = document.body.getElementsByTagName('*');
	for ( var elementIndex = 0; elementIndex < elements.length; ++elementIndex ) {
		
		var element = elements[ elementIndex ];
		if ( ! /(^|\s)noUpdatePngAttribute($|\s)/i.test( element.className ) ) {

			if ( ( element.tagName == 'IMG' ) && /\.png$/i.test( element.src ) ) {
				element.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + element.src + '", sizingMethod="scale")';
				element.src = blankSrc;      
			}
			
			var elementBackgroundImage = getStyle( element, 'backgroundImage' ).replace( /^url\((['"])|['"]\)$/gi, '' );
			if ( /\.png/.test( elementBackgroundImage.toLowerCase() ) ) {
				element.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + elementBackgroundImage + '", sizingMethod="scale")';
				element.style.backgroundImage = 'none';
			}
		}
	}
}

function updateImagesSize() {     
     
     var images = document.getElementsByTagName("img");
     
     for (var imageIndex = 0; imageIndex < images.length; imageIndex++) {
        var image = images[imageIndex];       
        imageWidth = image.offsetWidth;
        imageHeight = image.offsetHeight;
        image.style.width = (1.0 * imageWidth / defaultPxInEm) + 'em';        
        image.style.height = (1.0 * imageHeight / defaultPxInEm) + 'em';
     }          
}

function updateObjectsSize() {     
     
     var objects = document.getElementsByTagName("object");
     
     for (var objectIndex = 0; objectIndex < objects.length; objectIndex++) {     
        var object = objects[objectIndex];               
        objectWidth = object.offsetWidth;
        objectHeight = object.offsetHeight;
        object.style.width = (1.0 * objectWidth / defaultPxInEm) + 'em';        
        object.style.height = (1.0 * objectHeight / defaultPxInEm) + 'em';
        object.width = '';
        object.height = '';
     }          
}

function initGoogleMap(latitude, longitude, scale, infoWindowHtml, mapId) {
	if (GBrowserIsCompatible()) {
		var map = new GMap2(document.getElementById(mapId));

		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());
		map.setCenter(new GLatLng(latitude, longitude), scale);

		// Creates a marker at the given point with the given number label
		function createMarker(point, number) {
			var marker = new GMarker(point);
			GEvent.addListener(marker, "click",
				function() {
					marker.openInfoWindowHtml(infoWindowHtml);
				}
			);
			return marker;
		}

		var point = new GLatLng(latitude, longitude);
		map.addOverlay(createMarker(point, 1));
	}
}
