/**
* linus@typeotech.net.
*/

function getElementsByClass( searchClass, domNode, tagName) {
	if (domNode == null) domNode = document;
	if (tagName == null) tagName = '*';
	//var el = new Array();
	var el = [];
	var tags = domNode.getElementsByTagName(tagName);
	var tcl = " "+searchClass+" ";
	for(i=0,j=0; i<tags.length; i++) {
		var test = " " + tags[i].className + " ";
		if (test.indexOf(tcl) != -1)
			el[j++] = tags[i];
	}
	return el;
}

function isImageOk(img) {
    // During the onload event, IE correctly identifies any images
    // that weren't downloaded as not complete. Others should too.
    // Gecko-based browsers act like NS4 in that they report this
    // incorrectly: they always return true.
    try{
			if (!img.complete) {
					return false;
			}
			// However, they do have two very useful properties: naturalWidth
			// and naturalHeight. These give the true size of the image. If
			// it failed to load, either of these should be zero.
			if (typeof img.naturalWidth != "undefined" && img.naturalWidth == 0) {
					return false;
			}
		}catch(IE_errors_mostly_to_be_ignored){
			//alert(IE_errors_mostly_to_be_ignored);
			}
    // No other way of checking: assume it's ok.
    return true;
    //return false;
}

function bVersion() {    
	var version = 999; // we assume a sane browser    
	if (navigator.appVersion.indexOf("MSIE") != -1)      
	// bah, IE again, lets downgrade version number      
	version = parseFloat(navigator.appVersion.split("MSIE")[1]);    
	return version;  
}
	
var ie = (window.navigator.appName == "Microsoft Internet Explorer") ? true : false;

function bodyEvent(event, funk){
  if (window.attachEvent) {window.attachEvent('on'+event, funk);}
  else if (window.addEventListener) {window.addEventListener(event, funk, false);}
  else {document.addEventListener(event, funk, false);}
}

function setEventByObject(object, event, func){
  if (document.addEventListener){
    object.addEventListener(event, func, false);
  } else {
    object.attachEvent("on" + event, func);
  }
}

function removeEventByObject(object, event, func){
  if (document.removeEventListener){
    object.removeEventListener(event, func, false);
  } else {
    object.detachEvent("on" + event, func);
  }
}

function removeAllChildren(object){
  while(object.firstChild) object.removeChild(object.firstChild);
}

var link;
ie ? link = 'hand' : link = 'pointer';
function mouseCursorHandeler(event){
  if(event.type=="mouseover"){
    document.body.style.cursor = link;
  } 
  if(event.type=="mouseout"){
    document.body.style.cursor = 'default';
  }
}

function getId(event){
  var id;
  event.target ? id = event.target.id : id = window.event.srcElement.id ;
  return id;
}

function getInnerWidth(){
  if(window.innerWidth){
    return window.innerWidth;
  } else if(document.documentElement.clientWidth){
    return document.documentElement.clientWidth;
  } else if(document.body.clientWidth){
    return document.body.clientWidth;
  }else return -1;
}

function getInnerHeight(){
  if(window.innerHeight){
    return window.innerHeight;
  } else if(document.documentElement.clientHeight){
    return document.documentElement.clientHeight;
  } else if(document.body.clientHeight){
    return document.body.clientHeight;
  } else return -1;
}

function findPosX(obj){
  var cur = 0;
  if (obj.offsetParent){
    while (obj.offsetParent){
      cur += obj.offsetLeft
      obj = obj.offsetParent;
    }
  } else if (obj.x)
    cur += obj.x;
  return cur;
}

function findPosY(obj){
  var cur = 0;
  if (obj.offsetParent){
    while (obj.offsetParent){
      cur += obj.offsetTop
      obj = obj.offsetParent;
    }
  } else if (obj.y)
    cur += obj.y;
  return cur;
}


function getScrollX(){
  if(ie){
    return Math.max(document.documentElement.scrollLeft, document.body.scrollLeft);
  } else {
    return window.scrollX;
  }
}
  
function getScrollY(){
  if(ie){
    return Math.max(document.documentElement.scrollTop, document.body.scrollTop);
  } else {
    return window.scrollY;
  }
}

function getCookieValue(kaka){
  kaka = kaka+'=';
  if(document.cookie.indexOf(kaka)!=-1){
    var tempcookie = document.cookie.slice(document.cookie.indexOf(kaka), document.cookie.length);
    if(tempcookie.indexOf(';')!=-1) tempcookie = tempcookie.slice(0, tempcookie.indexOf(';'));
    tempcookie = tempcookie.slice(tempcookie.indexOf('=')+1, tempcookie.length);
    return tempcookie;
  } else return -1;
}

var mousePos={x:0,y:0};
function mouseMove(ev){ 
  ev = ev || window.event; 
  mousePos = mouseCoords(ev); 
}

function mouseCoords(ev){ 
  if(ev.pageX || ev.pageY){ 
    return {x:ev.pageX, y:ev.pageY}; 
  } 
  return { 
    x:ev.clientX + document.body.scrollLeft - document.body.clientLeft, 
    y:ev.clientY + document.body.scrollTop - document.body.clientTop 
  }; 
}

function list_properties(object){
var mess="";
  for(p in object){
    mess = mess + p + "   ";
  }alert(mess);
}



