//A custom API for positionable elements
var isCSS, isW3C, isIE4, isNN, isIE6CSS;
var scrollingBodyTxt;
var selectedItem;

function initDHTML_API(){
	if(document.images){ //Sets all global variables needed for crossbrowser functioning
		isCSS = (document.body && document.body.style)? true : false;
		isW3C = (isCSS && document.getElementById)? true : false;
		isIE4 = (isCSS && document.all)? true : false;
		isNN = (window.getComputedStyle && document.getElementById)? true : false;
		isIE6CSS = (document.compatMode && document.compatMode.indexOf("CSS1") >= 0)? true : false;
	}
	if(!isW3C && !isIE4){ //Redirect user to default page for browsers that doesn't support DHTML
		top.location.href = "#";
	}	
}
function seekLayer(doc, name){
	var theObj;
	for(var i=0; i<doc.layers.length; i++){
		if(doc.layers[i].name == name){
			theObj = doc.layers[i];
			break;
		}
		if(doc.layers[i].document.layers.length > 0){
			theObj = seekLayer(doc.layers[i].document, name)
		}
	}
	return theObj;
}
function getRawObject(obj){
	var theObj;
	if(typeof obj == "string"){
		if(isW3C){
			theObj = document.getElementById(obj);
		} else if(isIE4){
		 	theObj = document.all(obj);
		} else if(isNN){
		 	theObj = seekLayer(document, obj);
		} 
	} else {
		theObj = obj;
	}
	return theObj;
}
// Returns style property as object
function getObject(obj){
	var theObj =  getRawObject(obj);
	if(theObj && isCSS){
		theObj = theObj.style;
	}
	return theObj;
}
// Position an object at a specific pixel coordinate
function shiftTo(obj, x, y){
	var theObj =  getObject(obj);
	if(theObj){
		if(isCSS){
		// Equalize incorrect numeric value type
			var units = (typeof theObj.left == "string")? "px" : 0;
			theObj.left = x + units;
			theObj.top = y + units;
		} else if(isNN){
		 	theObj.moveTo(x, y);
		} 
	}
}
// Move an object by x and/or y pixels
function shiftBy(obj, deltaX, deltaY){
	var theObj =  getObject(obj);
	if(theObj){
		if(isCSS){
		// Equalize incorrect numeric value type
			var units = (typeof theObj.left == "string")? "px" : 0;
			theObj.left = getObjectLeft(obj) + deltaX + units;
			theObj.top = getObjectTop(obj) + deltaY + units;
		} else if(isNN){
		 	theObj.moveBy(deltaX, deltaY);
		} 
	}
}
function setZIndex(obj, zOrder){
	var theObj =  getObject(obj);
	if(theObj){
		if(isCSS){
		 	theObj.zIndex = zOrder;
		} 
	}
}
function setBGColor(obj, color){
	var theObj =  getObject(obj);
	if(theObj){
		if(isNN){
			theObj.bgColor = color;
		} else if(isCSS){
		 	theObj.backgroundColor = color;
		} 
	}
}
function show(obj){
	var theObj =  getObject(obj);
	if(theObj){
	 	theObj.visibility = "visible";
	}
}
function hide(obj){
	var theObj =  getObject(obj);
	if(theObj){
	 	theObj.visibility = "hidden";
	}
}
function getObjectLeft(obj){
	var elem = getRawObject(obj);
	var result = 0;
	if(document.defaultView){
		var style = document.defaultView;
		var cssDecl = style.getComputedStyle(elem, "");
		result = cssDecl.getPropertyValue("left");
	} else if(elem.currentStyle){
	 	result = elem.currentStyle.left; 
	} else if(elem.style){
	 	result = elem.style.left; 
	} else if(isNN) {
		result = elem.left;
	}
	return parseInt(result);
}
function getObjectTop(obj){
	var elem = getRawObject(obj);
	var result = 0;
	if(document.defaultView){
		var style = document.defaultView;
		var cssDecl = style.getComputedStyle(elem, "");
		result = cssDecl.getPropertyValue("top");
	} else if(elem.currentStyle){
	 	result = elem.currentStyle.top; 
	} else if(elem.style){
	 	result = elem.style.top; 
	} else if(isNN) {
		result = elem.top;
	}
	return parseInt(result);
}
function getObjectWidth(obj){
	var elem = getRawObject(obj);
	var result = 0;
	if(elem.offsetWidth){
		if(elem.scrollWidth && (elem.offsetWidth != elem.scrollWidth)){
			result = elem.scrollWidth;
		} else {
			result = elem.offsetWidth;
		}
	} else if(elem.clip && elem.clip.width){
	 	result = elem.clip.width; 
	} else if(elem.style && elem.style.pixelWidth){
	 	result = elem.style.pixelWidth; 
	}
	return parseInt(result);
}
/*
function setObjectWidth(obj, objWidth){
	var elem = getRawObject(obj);
	if(elem.offsetWidth){
		if(elem.scrollWidth && (elem.offsetWidth != elem.scrollWidth)){
			elem.scrollWidth = objWidthl;
		} else {
			elem.offsetWidth = objWidth;
		}
	} else if(elem.clip && elem.clip.width){
	 	elem.clip.width = objWidth;
	} else if(elem.style && elem.style.pixelWidth){
	 	elem.style.pixelWidth = objWidth;
	}
}
*/
function getObjectHeight(obj){
	var elem = getRawObject(obj);
	var result = 0;
	if(elem.offsetHeight){
		result = elem.offsetHeight;
	} else if(elem.clip && elem.clip.height){
	 	result = elem.clip.height; 
	} else if(elem.style && elem.style.pixelHeight){
	 	result = elem.style.pixelHeight; 
	}
	return parseInt(result);
}
/*
function setObjectHeight(obj, objHeight){
	var elem = getRawObject(obj);
	if(elem.offsetHeight){
		elem.offsetHeight = objHeight;
	} else if(elem.clip && elem.clip.height){
	 	elem.clip.height = objHeight; 
	} else if(elem.style && elem.style.pixelHeight){
	 	elem.style.pixelHeight = objHeight; 
	}
}
*/
function getInsideWindowWidth(){
	if(window.innerWidth){
		return window.innerWidth;
	} else if(isIE6CSS){
	 	return document.body.parentElement.clientWidth; 
	} else if(document.body && document.body.clientWidth){
	 	return document.body.clientWidth;
	}
	return 0;
}

function getInsideWindowHeight(){
	if(window.innerHeight){
		return window.innerHeight;
	} else if(isIE6CSS){
	 	return document.body.parentElement.clientHeight; 
	} else if(document.body && document.body.clientHeight){
	 	return document.body.clientHeight;
	}
	return 0;
}

// Script for custom designed dinamic scrollers
var sRepeat=null;
var hRepeat=null;
var containerY=0;
var containerX=0;
var moveobj=null;
var srcObj=null;
var rawMoveObj=null;
var textValue;


// Scrolling with scroll pad
function mouseDown(evt) {
	if (isNN) {
	 if(evt.target.parentNode){
		rawMoveObj = getRawObject(evt.target.parentNode);
		if(!rawMoveObj.getAttribute("scrollElement")) return false;
		coefficentPad = new claculateRelationship(rawMoveObj.getAttribute("scrollElement"), rawMoveObj.id);

		moveobj = getObject(rawMoveObj);
		srcObj = getObject(rawMoveObj.getAttribute("scrollElement"));
		containerY=evt.clientY - getObjectTop(rawMoveObj);
	  }
	} else if(isIE4){
	 if(event.srcElement.parentElement){
		rawMoveObj = getRawObject(event.srcElement.parentElement);
		if(!rawMoveObj.getAttribute("scrollElement")) return false;
		coefficentPad = new claculateRelationship(rawMoveObj.getAttribute("scrollElement"), rawMoveObj.id);
		
		moveobj = getObject(rawMoveObj);
		srcObj = getObject(rawMoveObj.getAttribute("scrollElement"));
		containerY=event.clientY - getObjectTop(rawMoveObj);
   	  }
 	}
}

function mouseMoved(evt) {
	if (moveobj && coefficentPad.D > coefficentPad.B){
		if (isNN) {
			topCorner = evt.clientY - containerY + document.body.scrollTop;
			if(topCorner >= 2 && topCorner <= coefficentPad.maxPixelBottom_pad){
				moveobj.top = topCorner + 'px';
				scrollerPercent = (getObjectTop(rawMoveObj) - 2)/coefficentPad.maxPixelBottom_pad;
				srcObj.top = Math.ceil(scrollerPercent * coefficentPad.maxPixelTop_area) + 'px';
			}
		}
		else {
			topCorner = event.clientY - containerY + document.body.scrollTop;
			if(topCorner >= 2 && topCorner <= coefficentPad.maxPixelBottom_pad){
				moveobj.pixelTop = topCorner;

				scrollerPercent = (moveobj.pixelTop - 2)/coefficentPad.maxPixelBottom_pad;
				srcObj.pixelTop = Math.ceil(scrollerPercent * coefficentPad.maxPixelTop_area);
			}
		}
	}
}

function stopScrolling() {
	moveobj = null;
	srcObj = null;
    clearInterval(sRepeat);
    sRepeat=null;
	clearInterval(hRepeat);
    hRepeat=null;
}

function claculateRelationship(src, pad){
// calculation based on proportions: D/A=N/H
// where:
//      A - Full lenth of the scroller
//      D - Full lenth of the scrolled div
//      C - Length of the scrolling pad
//      B - Length of the vievable area of the scrolled div
//      H - Length of a available scrolling area for pad => H = A-C-padObj.pixelTop; or H = AN/D
//      N - Length of a available scrolling area for scrolled div => N=DH/A
	this.A = getObjectHeight(getRawObject(pad).parentNode) - 4;
	this.B = getObjectHeight(getRawObject(src).parentNode) - 10;
	this.C = getObjectHeight(pad);
	this.D = getObjectHeight(src);
	
	this.padCoefficient = (this.A - this.C)/(this.D-this.B);
	this.maxPixelTop_area=-this.D+this.B;
	this.maxPixelBottom_area=0;
	this.maxPixelTop_pad=2;
	this.maxPixelBottom_pad = this.A - this.C;
/*
	this.T = currentFrame + sliderDistance;
	this.B= frame / fps;
	this.Y = totalSliderDistance * ((-1 * Math.cos(this.B) + 1) / 2);;
	this.easeInOutQuad = function{if(((this.T/this.D)/2)<1) return parseInt(this.C/2*this.T*this.T + this.B); else return parseInt(-this.C/2*((--this.T)*(this.T-2) - 1)+this.B);}
	
*/
}

// Scrolling with Down/Up arrows

function doScroller(dir, src, pad, amount) {
	// 4 arguments, dir: scroll "up" or "down",
	// src is the string id of positioned element
	// pad is the string id of scroll indicator element
	// amount is number of pixels to scroll

	coefficent = new claculateRelationship(src, pad);
 if(coefficent.D > coefficent.B){
	padAmount = Math.ceil(amount * coefficent.padCoefficient);
	thisRawSrc = getRawObject(src);
	thisRawPad = getRawObject(pad);
	thisSrc = getObject(src);
	thisPad = getObject(pad);
	scrollerPercent = (getObjectTop(pad) - 2)/coefficent.maxPixelBottom_pad;

	
	if (isNN){
		if (dir=="down") {
			topCorner = padAmount + getObjectTop(pad);
			if(topCorner <= coefficent.maxPixelBottom_pad){
				thisPad.top = topCorner + 'px';
				thisSrc.top = Math.ceil(scrollerPercent * coefficent.maxPixelTop_area) + 'px';
			}else{
				thisSrc.top=-thisRawSrc.offsetHeight+thisRawSrc.offsetParent.offsetHeight + 'px';
				thisPad.top=thisRawPad.offsetParent.offsetHeight - thisRawPad.offsetHeight - 4 + 'px';
				clearInterval(sRepeat);
			}
		}
		else if(dir == "up"){
			topCorner = getObjectTop(pad) - padAmount;
			if(topCorner >= 2){
				thisPad.top = topCorner + 'px';
				thisSrc.top = Math.ceil(scrollerPercent * coefficent.maxPixelTop_area) + 'px';
			}else{
				thisSrc.top='0px';
				thisPad.top="2px";
				clearInterval(sRepeat);
			}
		}
	}else if(isIE4){
		if (dir=="down") {
			topCorner = padAmount + getObjectTop(pad);
			if(topCorner <= coefficent.maxPixelBottom_pad){
				thisPad.pixelTop = topCorner;
				thisSrc.pixelTop = Math.ceil(scrollerPercent * coefficent.maxPixelTop_area);
			}else{
				thisSrc.pixelTop=-thisRawSrc.offsetHeight+thisRawSrc.offsetParent.offsetHeight;
				thisPad.pixelTop=thisRawPad.offsetParent.offsetHeight - thisRawPad.offsetHeight - 4;
				clearInterval(sRepeat);
			}
		}
		else if(dir == "up"){
			topCorner = getObjectTop(pad) - padAmount;
			if(topCorner >= 2){
				thisPad.pixelTop = topCorner;
				thisSrc.pixelTop = Math.ceil(scrollerPercent * coefficent.maxPixelTop_area);
			}else{
				thisSrc.pixelTop=0
				thisPad.pixelTop=2;
				clearInterval(sRepeat);
			}
		}
	}
	if (sRepeat==null)
		sRepeat = setInterval("doScroller('" + dir + "','" + src + "','" + pad + "'," + amount + ")",100)
	return false;
 }
}

function doHorScroller(direction, srcObj, step) {
 thisRawSrcObj = getRawObject(srcObj);
 thisSrcObj = getObject(srcObj);
 
 thisContainer = thisSrcObj.parentNode;
 thisSrcWidth = getObjectWidth(srcObj);
 thisContainerWidth = getObjectWidth(thisContainer);

 if(thisSrcWidth > thisContainerWidth){
	
	if (isNN){
		if (dir=="left") {
			topCorner = padAmount + getObjectTop(pad);
			if(topCorner <= coefficent.maxPixelBottom_pad){
				thisPad.top = topCorner + 'px';
				thisSrc.top = Math.ceil(scrollerPercent * coefficent.maxPixelTop_area) + 'px';
			}else{
				thisSrc.top=-thisRawSrc.offsetHeight+thisRawSrc.offsetParent.offsetHeight + 'px';
				thisPad.top=thisRawPad.offsetParent.offsetHeight - thisRawPad.offsetHeight - 4 + 'px';
				clearInterval(sRepeat);
			}
		}
		else if(dir == "up"){
			topCorner = getObjectTop(pad) - padAmount;
			if(topCorner >= 2){
				thisPad.top = topCorner + 'px';
				thisSrc.top = Math.ceil(scrollerPercent * coefficent.maxPixelTop_area) + 'px';
			}else{
				thisSrc.top='0px';
				thisPad.top="2px";
				clearInterval(sRepeat);
			}
		}
	}else if(isIE4){
		if (dir=="down") {
			topCorner = padAmount + getObjectTop(pad);
			if(topCorner <= coefficent.maxPixelBottom_pad){
				thisPad.pixelTop = topCorner;
				thisSrc.pixelTop = Math.ceil(scrollerPercent * coefficent.maxPixelTop_area);
			}else{
				thisSrc.pixelTop=-thisRawSrc.offsetHeight+thisRawSrc.offsetParent.offsetHeight;
				thisPad.pixelTop=thisRawPad.offsetParent.offsetHeight - thisRawPad.offsetHeight - 4;
				clearInterval(sRepeat);
			}
		}
		else if(dir == "up"){
			topCorner = getObjectTop(pad) - padAmount;
			if(topCorner >= 2){
				thisPad.pixelTop = topCorner;
				thisSrc.pixelTop = Math.ceil(scrollerPercent * coefficent.maxPixelTop_area);
			}else{
				thisSrc.pixelTop=0
				thisPad.pixelTop=2;
				clearInterval(sRepeat);
			}
		}
	}
	if (sRepeat==null)
		sRepeat = setInterval("doHorScroller('" + dir + "','" + src + "','" + amount + ")",100)
	return false;
 }
}

function selectItem(callingObj){
callingObj.className = "strip_list_item_selected";
	if(selectedItem)selectedItem.className = "strip_list_item";
	selectedItem = callingObj;
}

function clearFormElement(thisFormElement){
//   var tempObj = getRawObject(elementId);
   textValue = thisFormElement.value;
   if(thisFormElement && textValue){
       thisFormElement.value = "";
       thisFormElement.onblur = populateFormElement;
   }
}

function populateFormElement(){
   if(this.value.length==0){
       this.value = textValue;
       textValue=null;
   }
}

function openNews(pageNumber){
    newsUrl = "news/news"+pageNumber+".html";
    window.open(newsUrl, "myNews", "location=0,status=1,scrollbars=1,width=600,height=800");
}