/*line 19 it has been supposed that content part of gradient division has 698 in width*/
/*line 20 it has been supposed that content part of gradient division has 6px margin left*/
/*line 41 it has been supposed that every created gredientDiv has 698 in width*/
window.addEventListener?window.addEventListener("load",createGradient,false):window.attachEvent("onload",createGradient);
window.addEventListener?window.addEventListener("load",leftMenuGradient,false):window.attachEvent("onload",leftMenuGradient);

function createGradient() {
    var browser=navigator.appName;
    var arVersion = navigator.appVersion.split("MSIE");
    var version = parseFloat(arVersion[1]);
	if(!document.getElementById)return;
	if(!document.all || window.opera) {
    	elem = document.getElementsByClassName("gradientDiv");
   	
    	for(i=0;i<elem.length;i++) {
    		elem[i].style.display = 'none';		
    	}
	}
	objArray = getGradientObjects();
	if(!objArray.length) return;

	for(i=0;i<objArray.length;i++) {	   
		params = objArray[i].className.split(" ");		
		if(document.all && !window.opera) {
		    gradient = document.getElementById("gradient_above");
		    if (browser=="Microsoft Internet Explorer" && version ==6){	
			    makeGrandParent(objArray[i]);
			    tmpDOM = document.createDocumentFragment();
			    gradientHeight = gradient.offsetHeight + 3;
			    for(j=0;j<=gradientHeight;j++) {
			        k=j-3;
				    g = document.createElement("div");		
				    g.setAttribute("class","gradientIE6Div");
			        g.style.cssText="position:absolute;z-index:0;top:" + k + "px;left:3px;height:1px;width:710px;margin-left: -6px;background: none;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/UI/images/middle_transp.png', sizingMethod='image');";
				   
				    tmpDOM.appendChild(g);					   
			    }
			    objArray[i].appendChild(tmpDOM);
			    tmpDOM = null;
			    objArray[i].style.width =  702 + "px";  			   
			    objArray[i].style.marginLeft =  3 + "px";
			    params[3] == "horizontal"?gType = 1:gType = 0;
			    objArray[i].style.filter = "progid:DXImageTransform.Microsoft.Gradient(GradientType="+gType+",StartColorStr=\"#" + params[1] + "\",EndColorStr=\"#" + params[2] + "\")";
			    
			} else {
			    objArray[i].style.width =  698 + "px";  
			    objArray[i].style.marginLeft =  6 + "px";
			    params[3] == "horizontal"?gType = 1:gType = 0;
			    objArray[i].style.filter = "progid:DXImageTransform.Microsoft.Gradient(GradientType="+gType+",StartColorStr=\"#" + params[1] + "\",EndColorStr=\"#" + params[2] + "\")";
			}
	} else {
			colorArray = createColorPath(params[1],params[2]);
			x=0;y=0;
			if(params[3] == "horizontal") {
				w=Math.round(objArray[i].offsetWidth/colorArray.length);
				if(!w)w=1;
				h = objArray[i].offsetHeight;
			} else {
				h = objArray[i].offsetHeight/colorArray.length;
				if(!h) h =1;
				w = objArray[i].offsetWidth;
			}		    
			makeGrandParent(objArray[i]);
			tmpDOM = document.createDocumentFragment();
			for(p=0;p<colorArray.length;p++) {
				g = document.createElement("div");		
				g.setAttribute("class","gradientDiv");
				g.setAttribute("style","position:absolute;z-index:0;top:" + y + "px;left:" + x + "px;height:" + Math.ceil(h) + "px;width:698px;background-color:rgb(" + colorArray[p][0] + "," + colorArray[p][1] + "," + colorArray[p][2] + ");");
				params[3] == "horizontal"?x+=w:y+=h;
				tmpDOM.appendChild(g);	
				if(y>=objArray[i].offsetHeight) break;
			}
			objArray[i].appendChild(tmpDOM);
			tmpDOM = null;
		}	
	}
	
	var refreshMapHolder = document.getElementById('refreshMapIdHolder');
	if(refreshMapHolder){
	 var refreshMap = document.getElementById(refreshMapHolder.value);
	  if (refreshMap.value == '1')
	  {
	    initMapAndSetMarkers(true);
	  }
	  else
	  {
	    /* this is a hack don't remove*/
	    var a = 1;
	  }
   }
}

function getGradientObjects() {
	a = document.getElementsByTagName("*");
	objs = new Array();
	for(i=0;i<a.length;i++) {
		c = a[i].className;
		if(c != "") if(c.indexOf("gradient") == 0) objs[objs.length] = a[i];
	} 
	return objs;
}
	
function createColorPath(color1,color2) {
	colorPath = new Array();
	colorPercent = 1.0;
	do {
		colorPath[colorPath.length]=setColorHue(longHexToDec(color1),colorPercent,longHexToDec(color2));
		colorPercent-=.01;
	} while(colorPercent>0);
	return colorPath;
}
		
function setColorHue(originColor,opacityPercent,maskRGB) {
	returnColor=new Array();
	for(w=0;w<originColor.length;w++) returnColor[w] = Math.round(originColor[w]*opacityPercent) + Math.round(maskRGB[w]*(1.0-opacityPercent));
	return returnColor;
}

function longHexToDec(longHex) {
	return new Array(toDec(longHex.substring(0,2)),toDec(longHex.substring(2,4)),toDec(longHex.substring(4,6)));	
}

function toDec(hex) {	
	return parseInt(hex,16);
}
	
function makeGrandParent(obj) {
        var browser=navigator.appName;
        var arVersion = navigator.appVersion.split("MSIE");
        var version = parseFloat(arVersion[1]);
        if (browser=="Microsoft Internet Explorer" && version < 7){	
             disp = obj.currentStyle.display;
        } else {
            disp = document.defaultView.getComputedStyle(obj,'').display;
        } 
        gradientDivAbove = document.getElementsByClassName("gradientDivAbove");
        if(gradientDivAbove.length == 0){          
	        disp == "block"?nSpan = document.createElement("div"):	nSpan = document.createElement("span");
	        mHTML = obj.innerHTML;
	        obj.innerHTML = "";
	        nSpan.innerHTML = mHTML;
	        nSpan.setAttribute("style","position:relative;z-index:10;");
	        nSpan.setAttribute("class","gradientDivAbove");	
	        obj.appendChild(nSpan);
	    }	
}

function makeGrandParentLeft(obj) { 
        var browser=navigator.appName;
        var arVersion = navigator.appVersion.split("MSIE");
        var version = parseFloat(arVersion[1]);
        if (browser=="Microsoft Internet Explorer" && version < 7){	
             disp = obj.currentStyle.display;
        } else {
            disp = document.defaultView.getComputedStyle(obj,'').display;
        }          
        disp == "block"?nSpan = document.createElement("div"):	nSpan = document.createElement("span");
        mHTML = obj.innerHTML;
        obj.innerHTML = "";
        nSpan.innerHTML = mHTML;
        nSpan.setAttribute("style","position:relative;z-index:10;");
        nSpan.setAttribute("class","gDivAboveLeft");	
        obj.appendChild(nSpan);	  
}

function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && document.all)? document.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];
        if(oRegExp.test(oElement.getAttribute("class"))){
            arrReturnElements.push(oElement);
        }
    }
    return (arrReturnElements)
}

function leftMenuGradient() {
    var browser=navigator.appName;

	if(!document.getElementById)return;
	if(!document.all || window.opera) {
    	elem = document.getElementsByClassName("gradientLDiv");	
    	
    	for(i=0;i<elem.length;i++) {
    		elem[i].style.display = 'none';		
    	}
	}
	objArray = getGradientObjectsLeftMenu();
	if(!objArray.length) return;
	
	for(i=0;i<objArray.length;i++) {
		params = objArray[i].className.split(" ");
		if(document.all && !window.opera) {
            if (browser=="Microsoft Internet Explorer")
            {
			    objArray[i].style.width =  220 + "px";
			}
			else
			{
			    objArray[i].style.width =  218 + "px";
			}
			objArray[i].style.marginLeft =  0 + "px";
			params[3] == "horizontal"?gType = 1:gType = 0;
			objArray[i].style.filter = "progid:DXImageTransform.Microsoft.Gradient(GradientType="+gType+",StartColorStr=\"#" + params[1] + "\",EndColorStr=\"#" + params[2] + "\")";						
	} else {
			colorArray = createColorPath(params[1],params[2]);
			x=0;y=0;
			if(params[3] == "horizontal") {
				w=Math.round(objArray[i].offsetWidth/colorArray.length);
				if(!w)w=1;
				h = objArray[i].offsetHeight;
			} else {
				h = objArray[i].offsetHeight/colorArray.length;
				if(!h) h =1;
				w = objArray[i].offsetWidth;
			}			    
			makeGrandParentLeft(objArray[i]);
			tmpDOM = document.createDocumentFragment();
			for(p=0;p<colorArray.length;p++) {
				g = document.createElement("div");		
				g.setAttribute("class","gradientLDiv");		
				g.setAttribute("style","position:absolute;z-index:0;top:" + y + "px;left:" + x + "px;height:" + Math.ceil(h) + "px;width:218px; border-left:1px solid #d5d5d5;border-right:1px solid #d5d5d5;background-color:rgb(" + colorArray[p][0] + "," + colorArray[p][1] + "," + colorArray[p][2] + ");");
				params[3] == "horizontal"?x+=w:y+=h;
				tmpDOM.appendChild(g);	
				if(y>=objArray[i].offsetHeight) break;
			}
			objArray[i].appendChild(tmpDOM);
			tmpDOM = null;
		}
	}
}

function getGradientObjectsLeftMenu() {
	a = document.getElementsByTagName("*");
	objs = new Array();
	for(i=0;i<a.length;i++) {
		c = a[i].className;
		if(c != "") if(c.indexOf("leftMenuGradient") == 0) objs[objs.length] = a[i];
	} 
	return objs;
}


function changeStyle(item){
     var elem = document.getElementById("gradientId");
     if(item == 'map'){
        elem.style.height = 640 + 'px';
     } else {     
         pnlResult_elem = document.getElementById("divPanel");         
         elem.style.height = pnlResult_elem.offsetHeight + 270 + 'px';
     }
}