function get_element(element_id){
  if (document.getElementById){
    return document.getElementById(element_id);    
  }
  else if (document.all){
    return document.all[element_id];
  }
  else if (document.layers){  
    return document.layers[element_id];
  }	
  else {
  	return false;
  }
}

function innerHTML(element_id,content){
  if(get_element(element_id)){
  	get_element(element_id).innerHTML = content
  	return true;
  }
  else {
  	alert ("Can't find element id "+element_id+" to write content: "+content)
  	return false;
  }
}
function ADDinnerHTML(element_id,content){
  if(get_element(element_id)){
  	get_element(element_id).innerHTML += content;
  	return true;
  }
  else {
  	alert ("Can't find element id "+element_id+" to write content: "+content)
  	return false;
  }
}
function ADDRinnerHTML(element_id,content){
  if(get_element(element_id)){
  	get_element(element_id).innerHTML = content + get_element(element_id).innerHTML;
  	return true;
  }
  else {
  	alert ("Can't find element id "+element_id+" to write content: "+content)
  	return false;
  }
}
function hide_reveal(hide, reveal){
  var targetElement;	
  for(var i=0;i<hide.length;i++){
    if(targetElement = get_element(hide[i])){ 
      targetElement.style.display = "none";  
    }
  }   
  for(var i=0;i<reveal.length;i++){
    if(targetElement = get_element(reveal[i])){ 
      targetElement.style.display = "";  
    } 
  }
}

function textCounter(field, countfield, maxlimit) {
  if (field.value.length > maxlimit){
    field.value = field.value.substring(0, maxlimit);
  }
  countfield.value = /* maxlimit - */ field.value.length;
}
function trim(inputString) {
  if (typeof inputString != "string") { return inputString; }
  var retValue = inputString;
  var ch = retValue.substring(0, 1);
  while (ch == " " || ch.charCodeAt(0)==10) { 
    retValue = retValue.substring(1, retValue.length);
    ch = retValue.substring(0, 1);
  }
  ch = retValue.substring(retValue.length-1, retValue.length);
  while (ch == " " || ch.charCodeAt(0)==10) {
    retValue = retValue.substring(0, retValue.length-1);
    ch = retValue.substring(retValue.length-1, retValue.length);
  }
  while (retValue.indexOf("  ") != -1) { 
    retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, 
retValue.length); 
  }
  return retValue;
} 
function set_select_box_value(select_box, what){
  for (var i = 0; i < select_box.options.length;i++){	
  	select_box.options[i].selected = (select_box.options[i].value == what)?true:false;
  }
}
function validateTime(field){
  var keycode;
  if (window.event) 
    keycode = window.event.keyCode;
  else if (e) 
    keycode = e.which;
  else 
    alert("no event")
  
  if (keycode == 8){                         
    if (field.value.length == 2){
      field.value = field.value.substring(0,1);
    }
  }
               
  var valid = "0123456789:"
  var temp;
  for (var i=0; i<field.value.length; i++){
    temp = "" + field.value.substring(i, i+1);
    if (valid.indexOf(temp) == "-1") {
      field.value = field.value.substring(0, (field.value.length) -1); 
    }     
  }
  if (field.value.length == 1){
    if(isNaN(field.value)){
      field.value = "";
    }
  }
  if (field.value.length == 2){
  	if(isNaN(field.value)){
      field.value = field.value.substring(0, (field.value.length) -1); 
  	}
  }
  if (field.value.length == 1){
    if (field.value > 2){
      field.value = "0" + field.value
    }
  }
  if (field.value.length == 2){
    field.value = field.value + ":"
    if (field.value.substring(0,2) > 23){
      field.value = "";
    }
  }
  if (field.value.length == 5){
  	if (field.value.substring(3,5) > 60){
      field.value = field.value.substring(0,3);
  	}
  }
  if (field.value.length > 5){
    field.value = field.value.substring(0,5);         
  }
  if (field.value.substring((field.value.length) -1, (field.value.length)+1)== ":"){
  	temp = "" + field.value.substring(0, (field.value.length)-1);                         
    if (temp.indexOf(":") != "-1") {
      field.value = field.value.substring(0, (field.value.length) -1); 
    }
  }                    
} 
function checkTime(that){
  var time_to_check = that.value; 
  vlIsValid = /^([01]?[0-9]|[2][0-3])(:[0-5][0-9])?$/.test(time_to_check);
  if (!vlIsValid){
    alert("ERROR!\nTime MUST be between 00:00 and 23:59\n");
    that.focus();
    that.select();
    return false;
  }
  return true;
}

function getElementPosition_old(elemID) {
  var offsetTrail = get_element(elemID);//document.all(elemID);
  var offsetLeft = 0;
  var offsetTop = 0;
  while (offsetTrail) {
    offsetLeft += offsetTrail.offsetLeft;
    offsetTop += offsetTrail.offsetTop;
    offsetTrail = offsetTrail.offsetParent;
  }
  if(navigator.userAgent.indexOf("Mac") != -1 && typeof document.body.leftMargin != "undefined"){
    offsetLeft += document.body.leftMargin;
    offsetTop += document.body.topMargin;
  }
 // alert(offsetLeft+" "+offsetTop);
  return {left:offsetLeft, top:offsetTop};
} 
function getElementPosition_xywh(elemID) {
  var a = getElementPosition(elemID);
  return {x:a.left,y:a.top,w:a.width,h:a.height};
}
function getElementPosition(elemID) {
  var offsetTrail = get_element(elemID);//document.all(elemID);
  if(offsetTrail!=false){
    var tmp = getElementPosition_new(offsetTrail)
    return {left:tmp.x, top:tmp.y, width:tmp.width,height:tmp.height};
  }
  else {
  	return {left:0, top:0, width:0,height:0};
  }
} 
function getElementPosition_new(element) {
  var result = new Object();
  result.x = 0;
  result.y = 0;
  result.width = 0;
  result.height = 0;
  if(element){
    if (element.offsetParent) {
        result.x = element.offsetLeft;
        result.y = element.offsetTop;
        var parent = element.offsetParent;
      //  alert("x:"+result.x+" y:"+result.y+" parent:"+parent.id);
        while (parent) {
            result.x += parent.offsetLeft;
            result.y += parent.offsetTop;
            var parentTagName = parent.tagName.toLowerCase();
            if (parentTagName != "table" &&
                parentTagName != "body" && 
                parentTagName != "html" && 
                parentTagName != "div" && 
                parent.clientTop && 
                parent.clientLeft) {
                result.x += parent.clientLeft;
                result.y += parent.clientTop;
            }
          //  alert("x:"+result.x+" y:"+result.y+" parent:"+parent.id);
            parent = parent.offsetParent;
        }
    }
    else if (element.left && element.top) {
        result.x = element.left;
        result.y = element.top;
    }
    else {
        if (element.x) {
            result.x = element.x;
        }
        if (element.y) {
            result.y = element.y;
        }
    }
    if (element.offsetWidth && element.offsetHeight) {
        result.width = element.offsetWidth;
        result.height = element.offsetHeight;
    }
    else if (element.style && element.style.pixelWidth && element.style.pixelHeight) {
        result.width = element.style.pixelWidth;
        result.height = element.style.pixelHeight;
    }
  }
  return result;
}






function hide(srcElementId){
  var srcElement;
  if(srcElement = get_element(srcElementId)){ 
    srcElement.style.display = "none";  
  }
}
function show(srcElementId,left,top){
  var element_to_reveal;
  if(element_to_reveal = get_element(srcElementId)){ 
  	if(left){
  	  element_to_reveal.style.left = left +"px";
  	}
  	if(top){
  	  element_to_reveal.style.top = top + "px";
  	}
    element_to_reveal.style.display = "";  
  }
}

function check_radio_box(radio_box,what){
  for (var i = 0; i < radio_box.length;i++){
    if(radio_box[i].value == what){
      radio_box[i].checked = true;
      break;
    }
  }
}

// this function returns an element of content array for the fill_select_box function
function new_content(id,text,color){
  var toret = new Array();
  toret["id"]=id;
  toret["text"]=text;
  toret["color"]=color;
  return toret;
} 

function fill_select_box(select_box, content, chosen, use_color, zero_length){
  var selected = false;
  if(typeof(select_box)=="undefined"){
  	alert("Undefined select_box");
    return false;
  }
  if(zero_length==0){
    select_box.options.length=0;
    for( var i in content ){
      selected = (content[i]['id']==chosen)?true:false;      
      var option = document.createElement("OPTION");
      option.value = content[i]['id'];
      option.text = content[i]['text'];
      option.selected = selected;
      select_box.options[select_box.options.length]= option;    
      if(use_color && content[i]['color']){      	
        select_box.options[(select_box.options.length-1)].style.backgroundColor='#DE4A4C';
      }	
      else {
        select_box.options[(select_box.options.length - 1)].style.backgroundColor='';     
      }
    }

  }
  else {
    for(var i=0;i<select_box.options.length; i++){
      var n = parseInt(options[i].value);
      select_box.options[i].text=content[n]['text'];
      if(use_color && (content[n]['color']>0)){      	
        select_box.options[i].style.backgroundColor='#DE4A4C';        
      }	
      else {
        select_box.options[i].style.backgroundColor='';     
      }      	       
    }
  }
  
  for(var i = 0; i <select_box.options.length;i++){
    if(select_box.options[i].value ==chosen){
      select_box.options[i].selected = true;
      break;
    } 
  }  
}

function handle_status(status, mesg){
  if(trim(mesg)!="" && status!=0){
    alert(status+": "+mesg);
  }
}

function is_numeric(value){
  var filter  = /^([0-9])+$/;
  return filter.test(value);
}
function is_email(value){
  var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
  return filter.test(value);
}
function is_tel(value){
  var filter  = /^([0-9\+\.\(\)\[\]\-_\ ])+$/;
  return filter.test(value);
}
function is_in_num_range(x,min,max){
  if(is_numeric(x)){
  	x = parseInt(x); 
    if(x>=min && x<=max){
      return true;
    }
  }
  return false;
}

var alphabet=new Array();
alphabet[0] = new RegExp("[áÜa]","i");
alphabet[1] = new RegExp("[âbv]","i");
alphabet[2] = new RegExp("[ãg]","i");
alphabet[3] = new RegExp("[äd]","i");
alphabet[4] = new RegExp("[åÝe]","i");
alphabet[5] = new RegExp("[æz]","i");
alphabet[6] = new RegExp("[çÞéõßÀõéàiy]","i");
alphabet[7] = new RegExp("[è]","i");
/*alphabet[] = new RegExp("[é]","i");*/
alphabet[8] = new RegExp("[êk]","i");
alphabet[9] = new RegExp("[ël]","i");
alphabet[10] = new RegExp("[ìm]","i");
alphabet[11] = new RegExp("[ín]","i");
alphabet[12] = new RegExp("[î]","i");
alphabet[13] = new RegExp("[ïüùþo]","i");
alphabet[14] = new RegExp("[ðp]","i");
alphabet[15] = new RegExp("[ñr]","i");
alphabet[16] = new RegExp("[óòs]","i");
alphabet[17] = new RegExp("[ôt]","i");
/*alphabet[] = new RegExp("[õ]","i");*/
alphabet[18] = new RegExp("[öf]","i");
alphabet[19] = new RegExp("[÷xh]","i");
alphabet[20] = new RegExp("[ø]","i");
/*alphabet[] = new RegExp("[ù]","i");*/


function  search_in_select_box(text,select_box){
  var innertext='';
  var text1='';
  for(var i=0; i<text.length;i++){
  	var in_alphabet = false;
    for(var j=0;j<alphabet.length;j++){
      if(alphabet[j].exec(text.substring(i,i+1))){
        text1 += alphabet[j].source;
        in_alphabet = true;
        break;
      }
    }
    if(!in_alphabet){
      text1 += text.substring(i,i+1);
    }
  }
  if (text.length>0){
    text = '^'+text1;
    //text = text1;
    //alert(text);
    re = new RegExp(text,'i');
    
    for(var i = 0; i <select_box.options.length;i++){
      if(re.exec(select_box.options[i].text)){
        select_box.options[i].selected = true;
        break;      	
      }
    }
  }
}


function translate_el_en(text) {//elot743
  var expressions = {
    'áõ([èêîðóòôö÷ø]|\\s|$)': 'af$1',
    'Áõ([èêîðóòôö÷ø]|\\s|$)': 'Af$1',
    'áõ'                    : 'av',
    'Áõ'                    : 'Av',
    'ïõ'                    : 'ou',
    'Ïõ'                    : 'Ou',
    'åõ([èêîðóòôö÷ø]|\\s|$)': 'ef$1',
    'Åõ([èêîðóòôö÷ø]|\\s|$)': 'Ef$1',
    'åõ'                    : 'ev',
    'Åõ'                    : 'Ev',

    '(^|\\s)ìð'             : '$1b',
    '(^|\\s)Ìð'             : '$1B',
    'ìð(\\s|$)'             : 'b$1',
    'ãã'                    : 'ng',
    'Ãã'                    : 'Ng',
    'çõ([èêîðóòôö÷ø]|\\s|$)': 'if$1',
    'Çõ([èêîðóòôö÷ø]|\\s|$)': 'If$1',
    'çõ'                    : 'iy',
    'Çõ'                    : 'Iy',

    'è'                     : 'th',
    'È'                     : 'Th',
    '÷'                     : 'ch',
    '×'                     : 'Ch',
    'ø'                     : 'ps',
    'Ø'                     : 'Ps'
  }
  var GR  = 'Á¶ÂÃÄÅ¸ÆÇ¹ÈÉºÚÊËÌÍÎÏ¼ÐÑÓÔÕÛÖ×ØÙ¿áÜâãäåÝæçÞèéßúÀêëìíîïüðñóòôõýûàö÷øùþ';
  var ENG = 'AAVGDEEZII.IIIKLMNXOOPRSTYYF..OOaavgdeezii.iiiiklmnxooprsstyyyyf..oo';
  for (var i = 0; i < GR.length; i++) {
    if (!expressions[GR.charAt(i)]) {
      expressions[GR.charAt(i)] = ENG.charAt(i)
    }
  }
  //text = text.toLowerCase()
  for (var expression in expressions) {
    text = text.replace(new RegExp(expression, 'g'), expressions[expression])
  }
  return text;
}

function esc(text){
//	var regex = /[^0-9a-zA-Z@\[\]{-}'\" \-_\/,.;:=\n!@#$^&*()|<>]/g;
//	var regex = /[() -]+/g;
//    return text.replace(regex, "");
    return text;
    
}

function make_name(name){
  var regex = /[.\[\]]+/g;
  return name.replace(regex,"_");
}
function nl2br(text){
  var regex = /[\n\r]/g;
  return text.replace(regex,"<br />");  
}

var e = window.encodeURIComponent ? encodeURIComponent : escape;  
var d = window.decodeURIComponent ? decodeURIComponent : unescape;  

var my_objects = new Array();

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
  };
}


document.onmousemove = mouseMove;
//document.onmouseup   = mouseUp;
window.popupWindowOldEventListener1 = document.onmouseup;
if (window.popupWindowOldEventListener1 != null) {
  document.onmouseup = function(e){
    window.popupWindowOldEventListener1(e); 
    mouseUp(e);
  }
}
else {
  document.onmouseup = mouseUp;
}


var dragObject  = null;
var mouseOffset = null;

function getMouseOffset(target, ev){
	ev = ev || window.event;
	var docPos    = getPosition(target);
	var mousePos  = mouseCoords(ev);
	return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
}

function getPosition(e){
	var left = 0;
	var top  = 0;
	while (e.offsetParent){
		left += e.offsetLeft;
		top  += e.offsetTop;
		e     = e.offsetParent;
	}
	left += e.offsetLeft;
	top  += e.offsetTop;
	return {x:left, y:top};
}

function mouseMove(ev){
  if(dragObject){
    ev           = ev || window.event;
	var mousePos = mouseCoords(ev);
	
	dragObject.style.position = 'absolute';
	dragObject.style.top      = mousePos.y - mouseOffset.y;
	dragObject.style.left     = mousePos.x - mouseOffset.x;
	
    if(dragObject && dragObject.otec){
      dragObject.otec.mouse_move(mousePos,mouseOffset);	
	}
	return false;
  }
}
function mouseUp(ev){
  if(dragObject && dragObject.otec){
    ev           = ev || window.event;
	var mousePos = mouseCoords(ev);  	
	dragObject.otec.mouse_release(mousePos, mouseOffset);
  }
  dragObject = null;
  mouseOffset = null;
}

function makeDraggable(item,parent){
  if(!item) return;
  if(typeof(parent)=="object"){
    item.otec = parent;
  }
  item.onmousedown = function(ev){
    dragObject  = this;
    if(typeof(this.otec)=="object"){
      dragObject.otec = this.otec;
      dragObject.otec.original_position = getPosition(this);
    }
    mouseOffset = getMouseOffset(this, ev);
    return false;
  }
}



function getWindowSize() {
  var myWidth = 0, myHeight = 0;
  if( typeof( window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = window.innerWidth;
    myHeight = window.innerHeight;
  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    myWidth = document.documentElement.clientWidth;
    myHeight = document.documentElement.clientHeight;
  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth = document.body.clientWidth;
    myHeight = document.body.clientHeight;
  }
  return {x: myWidth, y: myHeight};
}
function getScrollXY() {
  var scrOfX = 0, scrOfY = 0;
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    scrOfY = window.pageYOffset;
    scrOfX = window.pageXOffset;
  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
    //DOM compliant
    scrOfY = document.body.scrollTop;
    scrOfX = document.body.scrollLeft;
  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
    //IE6 standards compliant mode
    scrOfY = document.documentElement.scrollTop;
    scrOfX = document.documentElement.scrollLeft;
  }
  return {x: scrOfX, y:  scrOfY};
}


function Info(name){
  if (!this.listenerAttached) {
    this.listenerAttached = true;
    my_objects[my_objects.length] = this;
  }		
  this.name = name;
  this.inner = make_name(this.name)+"_inner";
  this.show = info_show;
  this.draw = info_draw;
  this.hide = info_hide; 	
}
function info_show(that_id,tekst){
  if(innerHTML(this.inner,this.draw(tekst))){		
  	var p = getElementPosition(that_id);
    var b = getWindowSize();
    var o = getScrollXY();  
    var left = p.left+p.width-5;
    left = ((b.x-(left+220))>10)?((left<0)?1:left):b.x-220;
    var top = p.top-15;
    //show(this.inner,(p.left+p.width),p.top);
    show(this.inner,left,top);
  }	
}
function info_draw(tekst){
  var t = "";
  t += "<table class='' cellspacing='0' cellpadding='2' border='0'><tr><td colspan='3' class='bg_white opac60'></td></tr><tr><td class='bg_white opac60'></td><td style='padding: 0px'><table class='' cellspacing='0' cellpadding='1' border='0'><tr><td colspan='3' class='bg_white opac80'></td></tr><tr><td class='bg_white opac80'></td><td class='bg_white noopac border_grey'>"+tekst+"</td><td class='bg_white opac80'></td></tr><tr><td colspan='3' class='bg_white opac80'></td></tr></table></td><td class='bg_white opac60'></td></tr><tr><td colspan='3' class='bg_white opac60'></td></tr></table>";
  return t;
}
function info_hide(e){
  var is_clicked_inside = false;
  var p = getElementPosition(this.inner);
  var c = mouseCoords(e);
  var offset = 10
  is_clicked_inside = ((c.x > p.left-offset) && (c.x < p.left+p.width+offset) && (c.y > p.top-offset) && (c.y < p.top+p.height+offset))?true:false; 
  if(!is_clicked_inside){
    hide(this.inner)	
  }
}

function draw_analized_object(obj){
  var toret = "";
  toret += "<table border='1'>"
  if(typeof(obj)=="object"){
    for(var property in obj){
      toret += "<tr>";
      toret += "<td class='bold'>"+property+"</td>";
      toret += "<td class='italic'>"+typeof(obj[property])+"</td>";
      if(typeof(obj[property])=="object"){
        toret += "<td class=''>"+draw_analized_object(obj[property])+"</td>";
      }
      else if(typeof(obj[property])!="function"){
        toret += "<td class='blue'>"+(obj[property])+"</td>";
      }
      else {
        toret += "<td class=''>a&nbsp;</td>";
      }
      toret += "</tr>";
    }
  }
  else {
   toret += "<tr><td>Not object</td></tr>";
  }
  toret += "</table>";
  return toret;
}


//This method will allow you to insert an element anywhere within an array bounds.
function insertAt( index, value ){
  var part1 = this.slice( 0, index );
  var part2 = this.slice( index );
  part1.push( value );
  return( part1.concat( part2 ) );
}
//Array.prototype.insertAt = insertAt;
function removeAt( index ){
  var part1 = this.slice( 0, index );
  var part2 = this.slice( index );
  part1.pop();
  return( part1.concat( part2 ) );
}
//Array.prototype.removeAt = removeAt;

function PPImg( name,normal,over,down,downover,initDown,radio ) {
  this.name = name;
  this.imgNormal = new Image(); this.imgNormal.src  = normal; 
  this.imgOver = new Image(); this.imgOver.src  = over; 
  this.imgDown = new Image(); this.imgDown.src  = down; 
  this.imgDownOver = new Image(); this.imgDownOver.src = downover; 
  this.down = initDown; this.over = false; this.radio = radio;
}

function number_format( number, decimals, dec_point, thousands_sep, show_sign ) {
    // +   original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // *     example 1: number_format(1234.5678, 2, '.', '');
    // *     returns 1: 1234.57
 
    var i, j, sign;
 
    // input sanitation & defaults
    if( isNaN(decimals = Math.abs(decimals)) ){
        decimals = 2;
    }
    if( dec_point == undefined ){
        dec_point = ",";
    }
    if( thousands_sep == undefined ){
        thousands_sep = ".";
    }
    if( show_sign == undefined ){
        show_sign = false;
    }
    
    i = parseInt(number = (+number || 0).toFixed(decimals)) + "";
    sign = (show_sign)?((number>0)?"+":((number<0)?((number>-1)?"&#8209;":""):"")):((number<0)?((number>-1)?"&#8209;":""):""); // - = &#8209;
    if( (j = i.length) > 3 ){
        j = j % 3;
    } else{
        j = 0;
    }
 
    return sign + (j ? i.substr(0, j) + thousands_sep : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thousands_sep) + (decimals ? dec_point + Math.abs(number - i).toFixed(decimals).slice(2) : "");
}
