
/////////////////////////////////////////[Globals]/////////////////////////////////////////
var maxFrameWidth=800;
var minFrameWidth=595;
var maxFrameHeight=600;
var minFrameHeight=355;

/////////////////////////////////////////[Functions]////////////////////////////////////////

/**
 * Detect browser versions 
 * @return object conteins browser detection results  
 */
function detectBrowser() {
    var BO = new Object();
    BO["ie"]        = false /*@cc_on || true @*/;
    BO["ie4"]       = BO["ie"] && (document.getElementById == null);
    BO["ie5"]       = BO["ie"] && (document.namespaces == null) && (!BO["ie4"]);
    BO["ie6"]       = BO["ie"] && (document.implementation != null) && (document.implementation.hasFeature != null);
    BO["ie55"]      = BO["ie"] && (document.namespaces != null) && (!BO["ie6"]);
    /*@cc_on
    BO["ie7"]       = @_jscript_version == '5.7';
    @*/
    BO["ns4"]       = !BO["ie"] &&  (document.layers != null) &&  (window.confirm != null) && (document.createElement == null);
    BO["opera"]     = (self.opera != null);
    BO["gecko"]     = (document.getBoxObjectFor != null);
    BO["khtml"]     = (navigator.vendor == "KDE");
    BO["konq"]      = ((navigator.vendor == 'KDE') || (document.childNodes) && (!document.all) && (!navigator.taintEnabled));
    BO["safari"]    = (document.childNodes) && (!document.all) && (!navigator.taintEnabled) && (!navigator.accentColorName);
    BO["safari1.2"] = (parseInt(0).toFixed == null) && (BO["safari"] && (window.XMLHttpRequest != null));
    BO["safari2.0"] = (parseInt(0).toFixed != null) && BO["safari"] && !BO["safari1.2"];
    BO["safari1.1"] = BO["safari"] && !BO["safari1.2"] && !BO["safari2.0"];
    BO["chrome"] 	= navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
    return BO;
} 
var BO = new detectBrowser();

/**
 * Function searching for elements of the document by class name 
 * @param className class name
 * @param tag tag name (nulleble)
 * @param elmspecific element (nulleble)
 * @return array of allocated elements
 */
var getElementsByClassName = function (className, tag, elm){
	if (document.getElementsByClassName) {
		getElementsByClassName = function (className, tag, elm) {
			elm = elm || document;
			var elements = elm.getElementsByClassName(className),
				nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
				returnElements = [],
				current;
			for(var i=0, il=elements.length; i<il; i+=1){
				current = elements[i];
				if(!nodeName || nodeName.test(current.nodeName)) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	else if (document.evaluate) {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = "",
				xhtmlNamespace = "http://www.w3.org/1999/xhtml",
				namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
				returnElements = [],
				elements,
				node;
			for(var j=0, jl=classes.length; j<jl; j+=1){
				classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
			}
			try	{
				elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
			}
			catch (e) {
				elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
			}
			while ((node = elements.iterateNext())) {
				returnElements.push(node);
			}
			return returnElements;
		};
	}
	else {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = [],
				elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
				current,
				returnElements = [],
				match;
			for(var k=0, kl=classes.length; k<kl; k+=1){
				classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
			}
			for(var l=0, ll=elements.length; l<ll; l+=1){
				current = elements[l];
				match = false;
				for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
					match = classesToCheck[m].test(current.className);
					if (!match) {
						break;
					}
				}
				if (match) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	return getElementsByClassName(className, tag, elm);
};
/**
 * Function fits screen elements according to clients dimentions
 */
function fit(){
	var dims = getClientDimensions();
	var swidth = dims[0]*0.65;
	var sheight = dims[1]*0.7;
	if(swidth>maxFrameWidth){
		swidth = maxFrameWidth;
	}else if(swidth<minFrameWidth){
		swidth = minFrameWidth;
	}
	var elements = getElementsByClassName('dummy-w');
	for (i=0;i<elements.length;i++) {
		elements[i].style.width = swidth + "px";
	} 
	elements = getElementsByClassName('dummy-h');
	for (i=0;i<elements.length;i++) {
		elements[i].style.height = sheight + "px";
	} 
	var sidebar = document.getElementById("sidebar");
	if(sidebar!=null){
		sidebar.style.width = (swidth)+"px";
		if(BO["safari"]){
			sidebar.style.marginTop = "-4px";
		}else if (BO["chrome"]){	
			sidebar.style.marginTop="-6px";
		}
	}
	
	/*var footer = document.getElementById("footer");
	footer.style.width = (swidth)+"px";
	footer.style.marginLeft = Math.round((dims[0]/2)-(swidth/2)) +"px";
	if(BO["ie7"]){
		footer.style.marginLeft = "-"+Math.round((dims[0]/2)-(swidth/2)) +"px";
	}*/
	var rightnav = document.getElementById("rightnav");
	if(rightnav!=null){
		var offset=50;
		if(BO["chrome"]||BO["safari"]){
			var os = navigator.platform.search(/mac/i);
			if(os>=0){
				rightnav.style.marginLeft = (swidth-offset/2-10)+"px";
			}else{
				rightnav.style.marginLeft = (swidth-offset/2+10)+"px";
			}
			rightnav.style.marginTop="-19px";
		}else
			rightnav.style.marginLeft = (swidth-offset+15)+"px";
		
		
	}
	/*var menu_pos = (findAbsolutePosition(document.getElementById("jsddm")));
	var decoration = document.getElementById("aboutdecoration");
	if(decoration!=null){
		decoration.style.left = (menu_pos[0]-90) + "px";
	}
	decoration = document.getElementById("menudecoration");
	if(decoration!=null){
		decoration.style.left = (menu_pos[0]+50) + "px";
	}*/
	if(BO["chrome"]){
		document.styleSheets[1].insertRule("#jsddm li ul{margin: 0;	margin-top:16px;padding: 0;	position: absolute;	visibility: hidden;}", 0);
	}
	/*var decoration = document.getElementById('menudecoration');
	if(decoration!="undefined" && decoration!=null){
		decoration.style.marginTop="-160px";
	}

	decoration = document.getElementById('aboutdecoration');
	if(decoration!="undefined" && decoration!=null){
		decoration.style.marginTop="-170px";
	}*/
};
/**
 * Function fits posts content according to frame dimentions
 */
function fit_posts(){
	var categoryId = gup('cat');
	if(categoryId!=""){
		var dims = getClientDimensions();
		var frameWidth = dims[0]*0.65;
		var frameHeight = dims[1]*0.7;
		
		if(frameWidth>maxFrameWidth){
			frameWidth = maxFrameWidth;
		}else if(frameWidth<minFrameWidth){
			frameWidth = minFrameWidth;
		}

		if(frameHeight>maxFrameHeight){
			frameHeight = maxFrameHeight;
		}else if(frameHeight<minFrameHeight){
			frameHeight = minFrameHeight;
		}
		var offset = 50;
				
		if(BO["ie7"]){
			document.body.width = dims[0];
			var nav = document.getElementById("paginatediv");
			if(nav!=null){
				nav.style.marginLeft = "-"+(frameWidth/2)+"px";
			}
		}
		var content = document.getElementById('content');
		if(content!=null){
			var elements = content.getElementsByTagName('img');
			var newDimentions;
			var originalWidth;
			var originalHeight;
			var ewidth;
			var eheight;
			if(elements!=null){
				for (i=0;i<elements.length;i++) {
					ewidth=elements[i].originalWidth;
					eheight=elements[i].originalHeight;
					if(ewidth==null || eheight==null){
						if(BO["ie"]){
							var img = new Image();
							img.src = elements[i].src;
							ewidth=img.width;
							eheight=img.height;
						}else{
							ewidth = elements[i].width;
							eheight = elements[i].height;
						}
						elements[i].originalWidth=ewidth;
						elements[i].originalHeight=eheight;
					}
					
					newDimentions = scaleSize(frameWidth,frameHeight-offset,ewidth,eheight);
					elements[i].width = newDimentions[0];
			    	elements[i].height = newDimentions[1];
			    	
				}
			}
		}
		show_images();
	}
};
function preload_posts(){
	var content = document.getElementById('content');
	if(content!=null){
		var elements = content.getElementsByTagName('img');
		if(elements!=null){
			for (i=0;i<elements.length;i++) {
				elements[i].style.display="none";
				var localImage= new Image();
				localImage.src = elements[i].src;
			}
		}
	}
}
function show_images(){
	var content = document.getElementById('content');
	if(content!=null){
		var preloader = document.getElementById('preloader');
		preloader.style.display="none";
		content.className  ="show"; 
	}
}

function scaleSize(maxWidth, maxHeight, srcWidth, srcHeight){
	var factor = Math.min(maxWidth/srcWidth,maxHeight/srcHeight);
	return [Math.round(srcWidth*factor),Math.round(srcHeight*factor)];
}

function getClientDimensions(){
	var viewportwidth;
	var viewportheight;
	
	 // the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight
	 
	 if (typeof window.innerWidth != 'undefined') {
	      viewportwidth = window.innerWidth,
	      viewportheight = window.innerHeight
	 }
	 
	 // IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document)
	 else if (typeof document.documentElement != 'undefined'   && typeof document.documentElement.clientWidth !=  'undefined' && document.documentElement.clientWidth != 0) {
	       viewportwidth = document.documentElement.clientWidth,
	       viewportheight = document.documentElement.clientHeight
	 }	 
	 // older versions of IE
	 else {
	       viewportwidth = document.getElementsByTagName('body')[0].clientWidth
	       viewportheight = document.getElementsByTagName('body')[0].clientHeight
	 }
	 return [viewportwidth,viewportheight]
}
/**
 * Get parameter value from Url
 * @param name parameter name
 * @return  value of parameter or empty string if parameter not exist 
 */
function gup( name ){
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}
/**
 * Finds object absolute position on th page
 * @param obj some element on the page
 * @return array contain curent left and top offsets
 */
function findAbsolutePosition(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		do {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop
		} while (obj = obj.offsetParent);
		return [curleft,curtop];
	}
}

function MM_preloadImages() { 
	  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
	    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
	    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function makePreview(){
	var wrapper = document.getElementById("wrapper");
	wrapper.style.visibility="visible";
}

