///////////
// event.js

function attachEventListener(target, eventType, functionRef, capture) {
	if (typeof target.addEventListener != 'undefined') {
	   target.addEventListener(eventType, functionRef, capture);
	} else
	if (typeof target.attachEvent != 'undefined') {
	   target.attachEvent('on'+eventType, functionRef);
	} else {
	   return false;
	}
	return true;
}

function removeEventListener(target, eventType, functionRef, capture){
	if (target.removeEventListener){
	   target.removeEventListener(eventType, functionRef, capture);
	   return true;
	} else if (target.detachEvent){
	   var r = target.detachEvent('on'+eventType, functionRef);
	   return r;
	} else {
	   return false;
	}
}


///////////////////
// externallinks.js

function ExternalLinks() {
  if (!document.getElementsByTagName) return;
  var anchors = document.getElementsByTagName("a");
  for (var i=0;i<anchors.length;i++) {
    var anchor = anchors[i];
    if (anchor.getAttribute("href")&&anchor.getAttribute("rel") == "external") anchor.target = "_blank";
  }
}


///////////////
// textlimit.js

/**
 * TextLimit class v1.0
 * (c) 2007-02-13 Dominik Raœ
 */

if (typeof TextLimit == "undefined") var TextLimit = new Object();

TextLimit = function(id, maxChars) {

	if (!document.getElementById) { return; }

	this.timer = new Timer(this);

	this.CheckingInterval = 50;

	this.Interval = null;

	this.Listeners = new Array();

	this.TextID = id;
	this.maxChars = maxChars;

}

TextLimit.prototype = {

	SetCheckingInterval: function(time) {
          if (time>0) this.CheckingInterval=time;
	},

	SetMaxChars: function(maxChars) {
          if (time>maxChars) this.maxChars=maxChars;
	},

	getNew: function(){
	  var i = 0;
	  while (this.Listeners[i]) i++;
	  return i;
	},

	AddListener: function(id, text) {
          if (typeof id!='object') return;
          var i = this.getNew();
          this.Listeners[i]=new Array(id, text);
	},

	ClearListeners: function() {
          this.Listeners=new Array();
	},

        CheckListeners: function() {
	  var i = 0;
          while (this.Listeners[i]) {
            if (typeof this.Listeners[i][0]=='object') {

               var text=this.Listeners[i][1];

               // text length
               var regEx = new RegExp('%1', 'gi') ;
               text = text.replace(regEx, this.TextID.value.length);

               // free chars
               var regEx = new RegExp('%2', 'gi') ;
               text = text.replace(regEx, this.maxChars-this.TextID.value.length);

               // max chars
               var regEx = new RegExp('%3', 'gi') ;
               text = text.replace(regEx, this.maxChars);

               this.Listeners[i][0].value=text;

            }
            i++;
          }
        },

        CheckText: function() {
          if (this.TextID.value.length>this.maxChars) {
             this.TextID.value=this.TextID.value.substring(0, this.maxChars);
          }
          this.CheckListeners();
        },

	Start: function() {
          if (!document.getElementById) { return; }
          if (typeof this.TextID=='object') {
             if (this.Interval==null) this.Interval=this.timer.setInterval("CheckText", this.CheckingInterval);
          }
	},

	Stop: function() {
          if (!document.getElementById) { return; }
          if (this.Interval) this.timer.clearInterval(this.Interval);
	}

}


///////////////////
// timer.js

// The constructor should be called with
// the parent object (optional, defaults to window).

function Timer(){
    this.obj = (arguments.length)?arguments[0]:window;
    return this;
}

// The set functions should be called with:
// - The name of the object method (as a string) (required)
// - The millisecond delay (required)
// - Any number of extra arguments, which will all be
//   passed to the method when it is evaluated.

Timer.prototype.setInterval = function(func, msec){
    var i = Timer.getNew();
    var t = Timer.buildCall(this.obj, i, arguments);
    Timer.set[i].timer = window.setInterval(t,msec);
    return i;
}
Timer.prototype.setTimeout = function(func, msec){
    var i = Timer.getNew();
    Timer.buildCall(this.obj, i, arguments);
    Timer.set[i].timer = window.setTimeout("Timer.callOnce("+i+");",msec);
    return i;
}

// The clear functions should be called with
// the return value from the equivalent set function.

Timer.prototype.clearInterval = function(i){
    if(!Timer.set[i]) return;
    window.clearInterval(Timer.set[i].timer);
    Timer.set[i] = null;
}
Timer.prototype.clearTimeout = function(i){
    if(!Timer.set[i]) return;
    window.clearTimeout(Timer.set[i].timer);
    Timer.set[i] = null;
}

// Private data

Timer.set = new Array();
Timer.buildCall = function(obj, i, args){
    var t = "";
    Timer.set[i] = new Array();
    if(obj != window){
        Timer.set[i].obj = obj;
        t = "Timer.set["+i+"].obj.";
    }
    t += args[0]+"(";
    if(args.length > 2){
        Timer.set[i][0] = args[2];
        t += "Timer.set["+i+"][0]";
        for(var j=1; (j+2)<args.length; j++){
            Timer.set[i][j] = args[j+2];
            t += ", Timer.set["+i+"]["+j+"]";
    }}
    t += ");";
    Timer.set[i].call = t;
    return t;
}
Timer.callOnce = function(i){
    if(!Timer.set[i]) return;
    eval(Timer.set[i].call);
    Timer.set[i] = null;
}
Timer.getNew = function(){
    var i = 0;
    while(Timer.set[i]) i++;
    return i;
}


//////////////
// showhide.js

function ShowHideDiv(div_id, span) {
  var _style=(span===true) ? 'inline' : 'block';
  var obj=document.getElementById(div_id);
  obj.style.display=(obj.style.display=='none') ? _style : 'none';
  return ((obj.style.display=='none') ? false : true);
}

function ShowDiv(div_id, span) {
  var _style=(span===true) ? 'inline' : 'block';
  document.getElementById(div_id).style.display=_style;
}

function HideDiv(div_id) {
  document.getElementById(div_id).style.display='none';
}


/////////////
// cookie.js

function SetCookie(name,value,minutes) {
  if (minutes) {
    var date = new Date();
    date.setTime(date.getTime()+(minutes*60*1000));
    var expires = "; expires="+date.toGMTString();
  } else expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}


//////////////
// bookmark.js

function SetBookmark(title,url) {
  // firefox
  if (window.sidebar) window.sidebar.addPanel(title, url, ""); else
  // opera
  if (window.opera && window.print) {
     var elem = document.createElement('a');
     elem.setAttribute('href',url);
     elem.setAttribute('title',title);
     elem.setAttribute('rel','sidebar');
     elem.click();
  } else
  // msie, wie
  if (document.all) window.external.AddFavorite(url, title);
}


////////////
// check NIP

function CheckNIP(nip) {
  var regEx=new RegExp('-', 'gi');
  nip=nip.replace(regEx,'');

  var regEx=new RegExp('^[A-Z]{0,2}', 'gi');
  nip=nip.replace(regEx,'');

  var regEx=new RegExp(' ', 'gi');
  nip=nip.replace(regEx,'');

  if (nip.length!=10) return false;
  var steps=new Array(6, 5, 7, 2, 3, 4, 5, 6, 7);
  var sum_nb=0;
  for (i=0;i<9;i++) {
  tmp=nip.substr(i,1);
  tmp=parseInt(tmp);
  sum_nb=sum_nb+(steps[i]*tmp);
  }
  sum_m=(sum_nb%11);
  if (sum_m==10) sum_m=0;
  if (sum_m==parseInt(nip.substr(9,1))) return true;
  return false;
}

//////////////
// check REGON

function CheckREGON(regon) {
  if (regon.length!=7&&regon.length!=9) return false;
  if (regon.length==7) var steps=new Array(2, 3, 4, 5, 6, 7); else var steps=new Array(8, 9, 2, 3, 4, 5, 6, 7);
  var sum_nb=0;
  for (i=0;i<regon.length-1;i++) {
  tmp=regon.substr(i,1);
  tmp=parseInt(tmp);
  sum_nb=sum_nb+(steps[i]*tmp);
  }
  sum_m=(sum_nb%11);
  if (sum_m==10) sum_m=0;
  if (sum_m==parseInt(regon.substr((regon.length-1),1))) return true;
  return false;
}


////////////////
// checkemail.js

function CheckEmail(email) {
  var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
  if (email.match(filter)) return true; else return false;
}


/////////////////////
// replaceformtips.js

function handleInputFocus(e) {
	var event = e ? e : window.event;
	var target = event.target ? event.target : event.srcElement;

	if (target.value == target.title) {
		target.value = "";
	}
}

function handleInputBlur(e) {
	var event = e ? e : window.event;
	var target = event.target ? event.target : event.srcElement;
	if (target.value == "") {
		target.value = target.title;
	}
}

function replaceFormTips() {
	var inputFields = document.getElementsByTagName("input");
	for (i = 0; i < inputFields.length; i++) {
		var field = inputFields[i];
		if (field.type == "text")
		if (field.className == "InsertTitle")
		if (field.title) {
			if (!field.value) {
				field.value = field.title;
			}
			field.onfocus = handleInputFocus;
			field.onblur = handleInputBlur;
		}
	}
}


//////////////////
// other functions

function CountCheckboxes(form_field) {
  var _count=0;
  for (i=0;i<form_field.length;i++) {
      if (form_field[i].checked) _count++
  }
  return (_count);
}

function OpenLinkInNewWindow(newURL) {
  newWindow=window.open(newURL,'','');
  newWindow.focus();
}

function CheckURL(url) {
  if (url!=''&&!url.match(/^(.+?)(?:\?(?:(.*?)@)?(.+))?$/)) {
     return false;
  }
  return true;
}

function GetParamValue(url,name) {
  name=name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS="[\\?&]"+name+"=([^&#]*)";
  var regex=new RegExp(regexS);
  var results=regex.exec(url);
  if (results==null) return ""; else return results[1];
}

function OpenLocalizationInGoogleMaps(url, locality, address) {
  if (locality==''||address=='') return false;
  var newURL=url+', '+locality+', '+address;
  OpenLinkInNewWindow(newURL);
}

// site init
function SiteInit() {
  ExternalLinks();
  replaceFormTips();
}
////

