	defaultPxInEm = 12;
pxInEm = defaultPxInEm;
isIe = false;
isFf = false;
verticalScroll = null;
itemPreview = null;


function load() {
	pxInEm = getPxInEm();
	if (navigator.appName.indexOf('Microsoft Internet Explorer') != -1)
		isIe = true; 
	if (navigator.appName.indexOf('Netscape') != -1)
		isFf = true;    
	
	document.body.onkeyup = 'onkeyup';

//	new TransparentNavi('siteNavi');
            
	setAutoHeight();
	setAutoWidth();
	setAutoWidthByParent();
    
	updateImagesSize();   
	updateObjectsSize();   
      
	if (isIe) {
		updatePngImages();
	}
   
	if (typeof ItemPreview != "undefined") {
		itemPreview = new ItemPreview('scrollItems', 'item', 'control', 'scrollPanel', 'itemText', 'alt');
		itemPreview.startAutoPreview();
	}
}

function initMaps() {
	initGoogleMap(55.729672, 37.663922, 16, "г. Москва, ул. Крутицкий Вал, д. 14", "mapMoscow");
	initGoogleMap(59.9815, 30.358207, 16, "г. Санкт - Петербург, ул. Новолитовская, д. 15", "mapPiter");	
}

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 onkeyup() {
    if (itemPreview != null) {
        itemPreview.invalidate();
    }
}

function setAutoHeight() {

    var elements = document.getElementsByClassName( 'autoHeightAttribute' );

    for ( var elementIndex = elements.length - 1; elementIndex >= 0 ; elementIndex-- ) {

        var element = elements[ elementIndex ];
        element.style.height = ( 1.0 * element.offsetHeight / pxInEm ) + 'em';    
    }
}

function setAutoWidth() {
    
    var elements = document.getElementsByClassName( 'autoWidthAttribute' );

    for ( var elementIndex = elements.length - 1; elementIndex >= 0 ; 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 = elements.length - 1; elementIndex >= 0 ; elementIndex-- ) {
		
		var element = elements[ elementIndex ];
		if ( ! /(^|\s)noUpdatePngAttribute($|\s)/i.test( element.className ) ) {

			var isElementNeedFilter = false;
			var elementFilterImageSrc = '';
			
			if ( ( element.tagName == 'IMG' ) && /\.png$/i.test( element.src ) ) {
				isElementNeedFilter = true;
				elementFilterImageSrc = element.src;
				element.src = blankSrc;      
			}
			
			var elementBackgroundImage = getStyle( element, 'backgroundImage' ).replace( /^url\((['"])|['"]\)$/gi, '' );
			if ( /\.png/.test( elementBackgroundImage.toLowerCase() ) ) {
				isElementNeedFilter = true;
				elementFilterImageSrc = elementBackgroundImage;
				element.style.backgroundImage = 'none';
			}
			
			if ( isElementNeedFilter ) {
				var isElementFilterNeedSizing = ! /(^|\s)noScalePngAttribute($|\s)/i.test( element.className );
				var elementFilterSizingMethod = 'scale';
				element.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + elementFilterImageSrc + '"' + ( isElementFilterNeedSizing ? ', sizingMethod="' + elementFilterSizingMethod + '")' : '');
			}
		}
	}
}

function updateImagesSize() {     
     
     var images = document.getElementsByTagName("img");
     
    for ( var imageIndex = images.length - 1; imageIndex >= 0 ; 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';
        image.width = '';
        image.height = '';
     }          
}

function updateObjectsSize() {     
     
    var objects = document.getElementsByTagName("object");
     
    for ( var objectIndex = objects.length - 1; objectIndex >= 0 ; 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));
	}
}

