function formatPhone (textField) {
  textField.value = textField.value.replace(/^(?:1-)?\(?(\d{3})[\)-]?[\s]?(\d{3})[\)\s-]?(\d{4})$/, "$1-$2-$3");
}

function showShadeDiv() {
  // show shade and dialog box
  document.getElementById("shade_div").style.display = 'block';
}

function hideShadeDiv() {
  // show shade and dialog box
  document.getElementById("shade_div").style.display = 'none';
}

function showShadeDivDialog(ajaxUrl, zones) {
	showShadeDiv();
	if (zones == null) zones = "dialog";
	ajaxAnywhere.getAJAX(ajaxUrl, zones);	
}

function showYesNoDialog(actionUrl, objectId) {	
	showShadeDiv();
	document.getElementById("yes_no_div").style.display = 'block';
	length_actionUrl = actionUrl.length;
	last_char_actionUrl = actionUrl.charAt(length_actionUrl-1);
	if (last_char_actionUrl == '&') {
		document.getElementById("dialog_yes").href=actionUrl+"objectId="+objectId;
	} else {
		document.getElementById("dialog_yes").href=actionUrl+"?objectId="+objectId;
	}
	
}

function showYesNoDialogWithMsg(actionUrl, objectId, msg) {	
	showShadeDiv();
	document.getElementById("yes_no_div").style.display = 'block';
	document.getElementById("msg_yes_no_dlgs").innerHTML = msg;
	length_actionUrl = actionUrl.length;
	last_char_actionUrl = actionUrl.charAt(length_actionUrl-1);
	if (last_char_actionUrl == '&') {
		document.getElementById("dialog_yes").href=actionUrl+"objectId="+objectId;
	} else {
		document.getElementById("dialog_yes").href=actionUrl+"?objectId="+objectId;
	}
	
}

function showYesNoDialogUrl(actionUrl) {	
	showShadeDiv();
	document.getElementById("yes_no_div").style.display = 'block';	
	document.getElementById("dialog_yes").href=actionUrl;
}

function hideYesNoDialog() {
	document.getElementById("msg_yes_no_dlgs").innerHTML = 'Ви впевнені?';
	hideShadeDiv();
	document.getElementById("yes_no_div").style.display = 'none';
	document.getElementById("dialog_yes").href='';
}

function hideShadeDivDialog() {
	hideShadeDiv();
	var dialog = document.getElementById('aazone.dialog');
	if (dialog != null) dialog.innerHTML = "";
}

function hideConfirmation() {
	var dialog = document.getElementById('aazone.confirmation');
	if (dialog != null) dialog.innerHTML = "";
}

function showAlert(message, headerWidth) {	
	showShadeDiv();
	document.getElementById("alert_div").style.display = 'block';	
	document.getElementById("alert_mes").innerHTML = message;	
	if(headerWidth != undefined) {
		document.getElementById("alert_header_div").style.width = headerWidth;
	}	
}
function hideAlert() {	
	hideShadeDiv();
	document.getElementById("alert_div").style.display = 'none';	
}

function showNewAlert(message, headerWidth) {	
	showShadeDiv();
	document.getElementById("new_alert_div").style.display = 'block';	
	document.getElementById("new_alert_mes").innerHTML = message;	
}
function hideNewAlert() {	
	hideShadeDiv();
	document.getElementById("new_alert_div").style.display = 'none';	
}

function _showAlert(message, headerWidth, locationHref) {
	showShadeDiv();
	document.getElementById("_alert_div").style.display = 'block';	
	document.getElementById("_alert_mes").innerHTML = message;
	document.getElementById("_alert_button").onclick =  function() { document.location.href = locationHref };
	if(headerWidth != undefined) {
		_headerWidth = headerWidth - 10;
		document.getElementById("_alert_header_div").style.width = _headerWidth + 'px';
		document.getElementById("_alert_div").style.width = headerWidth + 'px';
	}	
}
function _hideAlert() {	
	hideShadeDiv();
	document.getElementById("_alert_div").style.display = 'none';	
}

function prepareTextFieldValues(){
	var inputElemList = document.getElementsByTagName('input');  
	for (var i = 0; i < inputElemList.length; i++) {
		var inputEl = inputElemList[i]; 
		if (inputEl.getAttribute('type') != 'text' || inputEl.getAttribute('value') == null) {			
			continue;
		}
		inputEl.value = inputEl.getAttribute('value').replace(/&(lt|gt);/g, function (strMatch, p1){
		 	return (p1 == "lt")? "<" : ">";
		});
	} 
}

function  textCounter(field, countfield, maxlimit) {
 if (field.value.length > maxlimit) // if too long...this trims it!
  field.value = field.value.substring(0, maxlimit);
 // otherwise, update 'characters left' counter
 else 
  countfield.value = maxlimit - field.value.length;
}

function validateDatePickers() {	
 if(typeof(strDatePickers) == "undefined" || strDatePickers == null){
	return true;
 }
 var arr = strDatePickers.split(",");
 var isValid = true;
 var dateFormat, datePicker, date, errorContainer;
 
 /*if(document.getElementById('DPC_SUBMIT_FORMAT')){
  dateFormat = document.getElementById('DPC_SUBMIT_FORMAT').value.trim();
 }*/
 //if(dateFormat.length < 1){
  dateFormat = "dd/MM/yy";
 //} 
  
 for (var i=0; i < arr.length; i++){
	 datePicker = document.getElementById(arr[i]);
	 if(datePicker == null){
		continue;
	 }
	 
	 date = datePicker.value;
	 if(date.length < 1){
		 continue;
	 }
	 errorContainer = document.getElementById(datePicker.name+"Error");
	 if(!Date.isValid(date, dateFormat)){
		 if(errorContainer){
			 errorContainer.innerHTML = "<span class='st'>Невірний формат дати</span>";
		 } 
		 isValid = false;
	 } else {
		 if(errorContainer){
			 errorContainer.innerHTML = "";
		 } 
	 }
 }
	
 return isValid;
}

function clearForm(frm) {
 var formElement;
 for (var loop=0; loop < frm.elements.length; loop++){
  formElement = frm.elements[loop];
  if (formElement.type == 'text' || frm.elements[loop].type == 'textarea') {
   formElement.value = '';
  } else if (formElement.type == 'select-one'){
   formElement.selectedIndex = 0;
  } else if (formElement.type == 'checkbox' || formElement.type == 'radio') {
   formElement.checked = false;
  } else if (formElement.type == 'select-multiple'){
   for (var i = 0; i < formElement.options.length; i++) {
    formElement.options.selected = false;
   }
  }
 }
}

function clearFilterFormAndSubmit(aaZone){
 clearForm(document.forms['filter']);
 ajaxAnywhere.formName = 'filter'; 
 ajaxAnywhere.submitAJAX(aaZone);
}

function ImageGallery (galleryId, imgsCnt) {
  this.id = galleryId;
  this.gSize = imgsCnt;
  this.step = 0;
  this.moveForward =  function(){
	  if((this.gSize - 5) <= this.step){
	    return;
	  }  
	  this.step++;
	  document.getElementById(this.id+'_'+this.step).style.display = "none";
	  document.getElementById(this.id+'_'+(this.step+5)).style.display = "block";
  };
  this.moveBack = function(){
	  if(this.step == 0){
	     return;
	  }  
	  document.getElementById(this.id+'_'+this.step).style.display = "block";
	  document.getElementById(this.id+'_'+(this.step+5)).style.display = "none";
	  this.step--;
  };
}

var ev, parent_div;
function hideSlideDownDiv(event) {
	if (window.event) {
	  ev=event.srcElement;
	} else {
	  ev=event.target;
	}
	parent_div=ev.parentNode;
	
	if (parent_div.className!="slideDown" && parent_div.className!="slideDown") {	  
	  if (document.getElementById('slidedown_demo') != null && document.getElementById('slidedown_demo') != 'undefined') {
		var sd = document.getElementById('slidedown_demo');
		sd.style.display='none';
	  }
	  if (document.getElementById('subcategories_menu') != null && document.getElementById('subcategories_menu') != 'undefined') {
		var sd = document.getElementById('subcategories_menu');
		sd.style.display='none';
	  }
	  if (document.getElementById('other_services') != null && document.getElementById('other_services') != 'undefined') {
	    var sd = document.getElementById('other_services');
	    sd.style.display='none';
	  }
	  if (document.getElementById('calendar_tours_menu') != null && document.getElementById('calendar_tours_menu') != 'undefined') {
		  var sd = document.getElementById('calendar_tours_menu');
		  sd.style.display='none';
	  }
	  if (document.getElementById('subcategory_team_menu') != null && document.getElementById('subcategory_team_menu') != 'undefined') {
	     var sd = document.getElementById('subcategory_team_menu');
	     sd.style.display='none';
	  }
	  if (document.getElementById('subcategory_player_menu') != null && document.getElementById('subcategory_player_menu') != 'undefined') {
	     var sd = document.getElementById('subcategory_player_menu');
	     sd.style.display='none';
	  }
	}
}

Date.$VERSION = 1.02;

//Utility function to append a 0 to single-digit numbers
Date.LZ = function(x) {return(x<0||x>9?"":"0")+x};
//Full month names. Change this for local month names
Date.monthNames = new Array('January','February','March','April','May','June','July','August','September','October','November','December');
//Month abbreviations. Change this for local month names
Date.monthAbbreviations = new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
//Full day names. Change this for local month names
Date.dayNames = new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
//Day abbreviations. Change this for local month names
Date.dayAbbreviations = new Array('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
//Used for parsing ambiguous dates like 1/2/2000 - default to preferring 'American' format meaning Jan 2.
//Set to false to prefer 'European' format meaning Feb 1
Date.preferAmericanFormat = true;

//If the getFullYear() method is not defined, create it
if (!Date.prototype.getFullYear) { 
	Date.prototype.getFullYear = function() { var yy=this.getYear(); return (yy<1900?yy+1900:yy); } ;
} 

//Parse a string and convert it to a Date object.
//If no format is passed, try a list of common formats.
//If string cannot be parsed, return null.
//Avoids regular expressions to be more portable.
Date.parseString = function(val, format) {
	// If no format is specified, try a few common formats
	if (typeof(format)=="undefined" || format==null || format=="") {
		var generalFormats=new Array('y-M-d','MMM d, y','MMM d,y','y-MMM-d','d-MMM-y','MMM d','MMM-d','d-MMM');
		var monthFirst=new Array('M/d/y','M-d-y','M.d.y','M/d','M-d');
		var dateFirst =new Array('d/M/y','d-M-y','d.M.y','d/M','d-M');
		var checkList=new Array(generalFormats,Date.preferAmericanFormat?monthFirst:dateFirst,Date.preferAmericanFormat?dateFirst:monthFirst);
		for (var i=0; i<checkList.length; i++) {
			var l=checkList[i];
			for (var j=0; j<l.length; j++) {
				var d=Date.parseString(val,l[j]);
				if (d!=null) { 
					return d; 
				}
			}
		}
		return null;
	};

	this.isInteger = function(val) {
		for (var i=0; i < val.length; i++) {
			if ("1234567890".indexOf(val.charAt(i))==-1) { 
				return false; 
			}
		}
		return true;
	};
	this.getInt = function(str,i,minlength,maxlength) {
		for (var x=maxlength; x>=minlength; x--) {
			var token=str.substring(i,i+x);
			if (token.length < minlength) { 
				return null; 
			}
			if (this.isInteger(token)) { 
				return token; 
			}
		}
	return null;
	};
	val=val+"";
	format=format+"";
	var i_val=0;
	var i_format=0;
	var c="";
	var token="";
	var token2="";
	var x,y;
	var year=new Date().getFullYear();
	var month=1;
	var date=1;
	var hh=0;
	var mm=0;
	var ss=0;
	var ampm="";
	while (i_format < format.length) {
		// Get next token from format string
		c=format.charAt(i_format);
		token="";
		while ((format.charAt(i_format)==c) && (i_format < format.length)) {
			token += format.charAt(i_format++);
		}
		// Extract contents of value based on format token
		if (token=="yyyy" || token=="yy" || token=="y") {
			if (token=="yyyy") { 
				x=4;y=4; 
			}
			if (token=="yy") { 
				x=2;y=2; 
			}
			if (token=="y") { 
				x=2;y=4; 
			}
			year=this.getInt(val,i_val,x,y);
			if (year==null) { 
				return null; 
			}
			i_val += year.length;
			if (year.length==2) {
				if (year > 70) { 
					year=1900+(year-0); 
				}
				else { 
					year=2000+(year-0); 
				}
			}
		}
		else if (token=="MMM" || token=="NNN"){
			month=0;
			var names = (token=="MMM"?(Date.monthNames.concat(Date.monthAbbreviations)):Date.monthAbbreviations);
			for (var i=0; i<names.length; i++) {
				var month_name=names[i];
				if (val.substring(i_val,i_val+month_name.length).toLowerCase()==month_name.toLowerCase()) {
					month=(i%12)+1;
					i_val += month_name.length;
					break;
				}
			}
			if ((month < 1)||(month>12)){
				return null;
			}
		}
		else if (token=="EE"||token=="E"){
			var names = (token=="EE"?Date.dayNames:Date.dayAbbreviations);
			for (var i=0; i<names.length; i++) {
				var day_name=names[i];
				if (val.substring(i_val,i_val+day_name.length).toLowerCase()==day_name.toLowerCase()) {
					i_val += day_name.length;
					break;
				}
			}
		}
		else if (token=="MM"||token=="M") {
			month=this.getInt(val,i_val,token.length,2);
			if(month==null||(month<1)||(month>12)){
				return null;
			}
			i_val+=month.length;
		}
		else if (token=="dd"||token=="d") {
			date=this.getInt(val,i_val,token.length,2);
			if(date==null||(date<1)||(date>31)){
				return null;
			}
			i_val+=date.length;
		}
		else if (token=="hh"||token=="h") {
			hh=this.getInt(val,i_val,token.length,2);
			if(hh==null||(hh<1)||(hh>12)){
				return null;
			}
			i_val+=hh.length;
		}
		else if (token=="HH"||token=="H") {
			hh=this.getInt(val,i_val,token.length,2);
			if(hh==null||(hh<0)||(hh>23)){
				return null;
			}
			i_val+=hh.length;
		}
		else if (token=="KK"||token=="K") {
			hh=this.getInt(val,i_val,token.length,2);
			if(hh==null||(hh<0)||(hh>11)){
				return null;
			}
			i_val+=hh.length;
			hh++;
		}
		else if (token=="kk"||token=="k") {
			hh=this.getInt(val,i_val,token.length,2);
			if(hh==null||(hh<1)||(hh>24)){
				return null;
			}
			i_val+=hh.length;
			hh--;
		}
		else if (token=="mm"||token=="m") {
			mm=this.getInt(val,i_val,token.length,2);
			if(mm==null||(mm<0)||(mm>59)){
				return null;
			}
			i_val+=mm.length;
		}
		else if (token=="ss"||token=="s") {
			ss=this.getInt(val,i_val,token.length,2);
			if(ss==null||(ss<0)||(ss>59)){
				return null;
			}
			i_val+=ss.length;
		}
		else if (token=="a") {
			if (val.substring(i_val,i_val+2).toLowerCase()=="am") {
				ampm="AM";
			}
			else if (val.substring(i_val,i_val+2).toLowerCase()=="pm") {
				ampm="PM";
			}
			else {
				return null;
			}
			i_val+=2;
		}
		else {
			if (val.substring(i_val,i_val+token.length)!=token) {
				return null;
			}
			else {
				i_val+=token.length;
			}
		}
	}
	// If there are any trailing characters left in the value, it doesn't match
	if (i_val != val.length) { 
		return null; 
	}
	// Is date valid for month?
	if (month==2) {
		// Check for leap year
		if ( ( (year%4==0)&&(year%100 != 0) ) || (year%400==0) ) { // leap year
			if (date > 29){ 
				return null; 
			}
		}
		else { 
			if (date > 28) { 
				return null; 
			} 
		}
	}
	if ((month==4)||(month==6)||(month==9)||(month==11)) {
		if (date > 30) { 
			return null; 
		}
	}
	// Correct hours value
	if (hh<12 && ampm=="PM") {
		hh=hh-0+12; 
	}
	else if (hh>11 && ampm=="AM") { 
		hh-=12; 
	}
	return new Date(year,month-1,date,hh,mm,ss);
};

//Check if a date string is valid
Date.isValid = function(val,format) {
	return (Date.parseString(val,format) != null);
};

//Check if a date object is before another date object
Date.prototype.isBefore = function(date2) {
	if (date2==null) { 
		return false; 
	}
	return (this.getTime()<date2.getTime());
};

//Check if a date object is after another date object
Date.prototype.isAfter = function(date2) {
	if (date2==null) { 
		return false; 
	}
	return (this.getTime()>date2.getTime());
};

//Check if two date objects have equal dates and times
Date.prototype.equals = function(date2) {
	if (date2==null) { 
		return false; 
	}
	return (this.getTime()==date2.getTime());
};

//Check if two date objects have equal dates, disregarding times
Date.prototype.equalsIgnoreTime = function(date2) {
	if (date2==null) { 
		return false; 
	}
	var d1 = new Date(this.getTime()).clearTime();
	var d2 = new Date(date2.getTime()).clearTime();
	return (d1.getTime()==d2.getTime());
};

//Format a date into a string using a given format string
Date.prototype.format = function(format) {
	format=format+"";
	var result="";
	var i_format=0;
	var c="";
	var token="";
	var y=this.getYear()+"";
	var M=this.getMonth()+1;
	var d=this.getDate();
	var E=this.getDay();
	var H=this.getHours();
	var m=this.getMinutes();
	var s=this.getSeconds();
	var yyyy,yy,MMM,MM,dd,hh,h,mm,ss,ampm,HH,H,KK,K,kk,k;
	// Convert real date parts into formatted versions
	var value=new Object();
	if (y.length < 4) {
		y=""+(+y+1900);
	}
	value["y"]=""+y;
	value["yyyy"]=y;
	value["yy"]=y.substring(2,4);
	value["M"]=M;
	value["MM"]=Date.LZ(M);
	value["MMM"]=Date.monthNames[M-1];
	value["NNN"]=Date.monthAbbreviations[M-1];
	value["d"]=d;
	value["dd"]=Date.LZ(d);
	value["E"]=Date.dayAbbreviations[E];
	value["EE"]=Date.dayNames[E];
	value["H"]=H;
	value["HH"]=Date.LZ(H);
	if (H==0){
		value["h"]=12;
	}
	else if (H>12){
		value["h"]=H-12;
	}
	else {
		value["h"]=H;
	}
	value["hh"]=Date.LZ(value["h"]);
	value["K"]=value["h"]-1;
	value["k"]=value["H"]+1;
	value["KK"]=Date.LZ(value["K"]);
	value["kk"]=Date.LZ(value["k"]);
	if (H > 11) { 
		value["a"]="PM"; 
	}
	else { 
		value["a"]="AM"; 
	}
	value["m"]=m;
	value["mm"]=Date.LZ(m);
	value["s"]=s;
	value["ss"]=Date.LZ(s);
	while (i_format < format.length) {
		c=format.charAt(i_format);
		token="";
		while ((format.charAt(i_format)==c) && (i_format < format.length)) {
			token += format.charAt(i_format++);
		}
		if (typeof(value[token])!="undefined") { 
			result=result + value[token]; 
		}
		else { 
			result=result + token; 
		}
	}
	return result;
};

//Get the full name of the day for a date
Date.prototype.getDayName = function() { 
	return Date.dayNames[this.getDay()];
};

//Get the abbreviation of the day for a date
Date.prototype.getDayAbbreviation = function() { 
	return Date.dayAbbreviations[this.getDay()];
};

//Get the full name of the month for a date
Date.prototype.getMonthName = function() {
	return Date.monthNames[this.getMonth()];
};

//Get the abbreviation of the month for a date
Date.prototype.getMonthAbbreviation = function() { 
	return Date.monthAbbreviations[this.getMonth()];
};

//Clear all time information in a date object
Date.prototype.clearTime = function() {
 this.setHours(0); 
 this.setMinutes(0);
 this.setSeconds(0); 
 this.setMilliseconds(0);
 return this;
};

//Add an amount of time to a date. Negative numbers can be passed to subtract time.
Date.prototype.add = function(interval, number) {
	if (typeof(interval)=="undefined" || interval==null || typeof(number)=="undefined" || number==null) { 
		return this; 
	}
	number = +number;
	if (interval=='y') { // year
		this.setFullYear(this.getFullYear()+number);
	}
	else if (interval=='M') { // Month
		this.setMonth(this.getMonth()+number);
	}
	else if (interval=='d') { // Day
		this.setDate(this.getDate()+number);
	}
	else if (interval=='w') { // Weekday
		var step = (number>0)?1:-1;
		while (number!=0) {
			this.add('d',step);
			while(this.getDay()==0 || this.getDay()==6) { 
				this.add('d',step);
			}
			number -= step;
		}
	}
	else if (interval=='h') { // Hour
		this.setHours(this.getHours() + number);
	}
	else if (interval=='m') { // Minute
		this.setMinutes(this.getMinutes() + number);
	}
	else if (interval=='s') { // Second
		this.setSeconds(this.getSeconds() + number);
	}
	return this;
};

function getCookie(c_name) {
	var i,x,y,ARRcookies=document.cookie.split(";");
	for (i=0;i<ARRcookies.length;i++) {
			x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
		y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
		x=x.replace(/^\s+|\s+$/g,"");
		if (x==c_name) {
			return unescape(y);
		}
	}
}

function setCookie(c_name,value,exdays) {
	var exdate=new Date();
	exdate.setDate(exdate.getDate() + exdays);
	var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString()) + "; path=/";
	document.cookie=c_name + "=" + c_value;
}

function replaceAll(txt, replace, with_this) {
 return txt.replace(new RegExp(replace, 'g'),with_this);
}

function getPositionX(obj){
   var leftValue = 0;      
   while(obj){       
    leftValue+= obj.offsetLeft;
    obj= obj.offsetParent;   
   }								      
   return leftValue;
  }

  function getPositionY(obj){
   var topValue = 0;      
   while(obj){
    topValue+= obj.offsetTop;
    obj= obj.offsetParent;   
   }								   
   return topValue;
  }
  
  function stripXmlSpecialChars(inputText) {
	  var outputText = inputText.replace(/amp/g, "&")
	  	.replace(/quote]/g, "qote]").replace(/quot/g, "\"").replace(/qote]/g, "quote]")
		.replace(/apos/g, "\'")
		.replace(/lt/g, "<")
		.replace(/gt/g, ">");
	  
	  return outputText;
  }
  
  _trim = function(str, chars) {
	return _ltrim(_rtrim(str, chars), chars); 
  }
	 
  _ltrim = function(str, chars) { 
	chars = chars || "\\s"; 
	return str.replace(new RegExp("^[" + chars + "]+", "g"), ""); 
  } 
	 
  _rtrim = function(str, chars) {
	chars = chars || "\\s"; 
	return str.replace(new RegExp("[" + chars + "]+$", "g"), ""); 
  }
