﻿function getElementsByClassName(className, tag, elm){
	var testClass = new RegExp("(^|\\\\s)" + className + "(\\\\s|$)");
	var tag = tag || "*";
	var elm = elm || document;
	var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
	var returnElements = [];
	var current;
	var length = elements.length;
	for(var i=0; i<length; i++){
		current = elements[i];
		if(testClass.test(current.className)){
			returnElements.push(current);
		}
	}
	return returnElements;
}

function GetUrlParam(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];
}

function addslashes(str) {
    str=str.replace(/\'/g,'\\\'');
    str=str.replace(/\"/g,'\\"');
    str=str.replace(/\\/g,'\\\\');
    str=str.replace(/\0/g,'\\0');
    
    return str;
}
function stripslashes(str) {
    str=str.replace(/\\'/g,'\'');
    str=str.replace(/\\"/g,'"');
    str=str.replace(/\\\\/g,'\\');
    str=str.replace(/\\0/g,'\0');
    
    return str;
}

function hasClass(obj,cName) {
        return new RegExp('\\b'+cName+'\\b').test(obj.className); 
 } 

 function hasClasses(obj,classes) { 
        for (f=0; f<classes.length; f++) { 
                if (!hasClass(obj,classes[i])) return false; 
        } return true; 
 } 

 function addClass(obj,cName) { 
        if (!hasClass(obj,cName)) { 
                obj.className+=obj.className?' '+cName:cName; 
        } 
        return true; 
 } 

 function removeClass(obj,cName) { 
        if (!hasClass(obj,cName)) return false; 
        var rep=obj.className.match(' '+cName)?' '+cName:cName;
        obj.className=obj.className.replace(rep,'');
        return true; 
 } 

 function swapClasses(obj,class1,class2) { 
        if (hasClass(obj,class1)) { 
                removeClass(obj,class1); 
                addClass(obj,class2); return true; 
        } 
        if (hasClass(obj,class2)) { 
                removeClass(obj,class2); 
                addClass(obj,class1); return true; 
        } return false; 
 } 

 function switchClass(obj,to,from) { 
        if (hasClass(obj,from)) removeClass(obj,from);
        addClass(obj,to); 
        return true; 
 } 

function strzero(num,dec){
	if (isNaN(num)){return "";};

	var p=Math.pow(10,dec);
	num = (Math.round(num * p))/p;        
	if(num==0)return 0;
	st = num.toString(10);

	poz_kr = st.lastIndexOf('.');
	if(poz_kr == -1) {st+='.';qqq = dec;}
	else qqq=dec - st.length +poz_kr+1;

	for (p = 0; p < qqq; p++)st+='0';
	return st
}  

function trim(str, chars) {
    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

// ============================= EVENTS ================================ //

function getEventTarget(e) {
   var targ;
   
   if (!e) var e = window.event;
   
   if (e.target) targ = e.target;
       else if (e.srcElement) targ = e.srcElement;
   
   if (targ.nodeType == 3) // defeat Safari bug
       targ = targ.parentNode;
		
   return targ;
}

function getEventKeyCode(e) {
    var code;
    
    if (!e) var e = window.event;
    
	if (e.keyCode) code = e.keyCode;
	    else if (e.which) code = e.which;
	
	return code;
}

function IsRightClick(e) {
    var rightclick;
    
	if (!e) var e = window.event;
	
	if (e.which) rightclick = (e.which == 3);
	    else if (e.button) rightclick = (e.button == 2);
	
	return rightclick;
}

function MousePosition(e) {
    var posx = 0;
	var posy = 0;
	
	if (!e) var e = window.event;
	
	if (e.pageX || e.pageY) {
		posx = e.pageX;
		posy = e.pageY;
	} else if (e.clientX || e.clientY) {
		posx = e.clientX + document.body.scrollLeft
			+ document.documentElement.scrollLeft;
		posy = e.clientY + document.body.scrollTop
			+ document.documentElement.scrollTop;
	}
	// posx and posy contain the mouse position relative to the document
	// Do something with this information
}

function RegisterEvent(target, event_name, func) {
    if (target.addEventListener) {
        target.addEventListener (event_name, func, false);
    } else if (target.attachEvent) {
        target.attachEvent ("on"+event_name, func);
    } else {
        target.event_name = func;
    }
}

// ============================= EVENTS ================================ //

function getSelectedValue(sel) {
    var selectedValue = -1;
    
    $$('#'+sel+' option').each(function(elem){
        if (elem.selected) selectedValue = elem.value;
    });
    
    return selectedValue;
}

//	caretPos.firstChild.nodeValue = s
//	maxLength.firstChild.nodeValue = o.getAttribute('maxLength')
//	textLength.firstChild.nodeValue = t.length
//	availLength.firstChild.nodeValue = o.getAttribute('maxLength') - t.length
//	afterCaret.firstChild.nodeValue = t.substring(s).replace(/ /g, '\xa0') || '\xa0'
//	beforeCaret.firstChild.nodeValue = t.substring(0, s).replace(/ /g, '\xa0') || '\xa0'
//	selectedText.firstChild.nodeValue = t.substring(s, e).replace(/ /g, '\xa0') || '\xa0'
//	rightbox.value = scrollRight.firstChild.nodeValue = t.substring(s).replace(/ /g, '\xa0') || '\xa0'
//	leftbox.value = scrollLeft.firstChild.nodeValue = t.substring(0, s).replace(/ /g, '\xa0') || '\xa0'

function getSelectionStart(o) {
	if (o.createTextRange) {
		var r = document.selection.createRange().duplicate()
		r.moveEnd('character', o.value.length)
		if (r.text == '') return o.value.length
		return o.value.lastIndexOf(r.text)
	} else return o.selectionStart
}

function getSelectionEnd(o) {
	if (o.createTextRange) {
		var r = document.selection.createRange().duplicate()
		r.moveStart('character', -o.value.length)
		return r.text.length
	} else return o.selectionEnd
}

function WaitLoaded(scr) {
    Event.observe(window, 'load', function() { eval(scr); });
}


function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

function RemoveElement(elementid) {
    $(elementid).remove();
}

function getViewPortSizeX() {
     var viewportwidth;
     
     // the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight
     
     if (typeof window.innerWidth != 'undefined')
     {
          viewportwidth = window.innerWidth
     }
     
    // 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
     }
     
     // older versions of IE
     
     else
     {
           viewportwidth = document.getElementsByTagName('body')[0].clientWidth
     }

    return viewportwidth;
}

function getViewPortSizeY() {
     var viewportheight;
     
     // the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight
     
     if (typeof window.innerWidth != 'undefined')
     {
          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)
     {
           viewportheight = document.documentElement.clientHeight
     }
     
     // older versions of IE
     
     else
     {
           viewportheight = document.getElementsByTagName('body')[0].clientHeight
     }

    return viewportheight;
}