 function WebForm_CallbackComplete_SyncFixed() {
  // SyncFix: the original version uses "i" as global thereby resulting in javascript errors when "i" is used elsewhere in consuming pages
  for (var i = 0; i < __pendingCallbacks.length; i++) {
		callbackObject = __pendingCallbacks[ i ];
		if (callbackObject && callbackObject.xmlRequest && (callbackObject.xmlRequest.readyState == 4)) {
			// FIX: This statement has been moved below
			//WebForm_ExecuteCallback(callbackObject);
			if (!__pendingCallbacks[ i ].async) {
				 __synchronousCallBackIndex = -1;
			 }
			 __pendingCallbacks[i] = null;

			 var callbackFrameID = "__CALLBACKFRAME" + i;
			 var xmlRequestFrame = document.getElementById(callbackFrameID);
			 if (xmlRequestFrame) {
				 xmlRequestFrame.parentNode.removeChild(xmlRequestFrame);
			 }

			// SyncFix: the following statement has been moved down from above;
			WebForm_ExecuteCallback(callbackObject);
		}
	}
}

/*------------------------------------
	Open new window
------------------------------------*/
var newWindow = '';

function openWin (url_js, name_js, winWidth, winHeight, scrollbar, toolbar, menubar, resizable) {
	var winl = 0, wint = 0;
	if(typeof scrollbar == 'undefined'){scrollbar = 0;}
	if(typeof toolbar == 'undefined'){toolbar = 0;}
	if(typeof menubar == 'undefined'){menubar = 0;}
	if(typeof resizable == 'undefined'){resizable = 1;}
	if(typeof winWidth == 'undefined' || winWidth == -1) winl = 0; else winl = (screen.width - winWidth) / 2;
	if(typeof winHeight == 'undefined' || winHeight == -1) wint = 0; else wint = (screen.height - winHeight) / 2;
	if(name_js == '') name_js = 'newwin';
    
	newWindow=window.open(url_js,name_js,'width=' +winWidth+',height=' +winHeight+',top='+wint+',left='+winl+',toolbar='+toolbar+',location=0,directories=0,status=0,menuBar='+menubar+',scrollBars='+scrollbar+',resizable='+resizable)
}	

/*------------------------------------
	dynamically show / hide HTML elements
------------------------------------*/
function showHideElement(id)
{
	if(document.getElementById(id) != null)
  {
	  if (document.getElementById(id).style.visibility == "hidden")
	  {
		  document.getElementById(id).style.visibility = "visible"; 
		  document.getElementById(id).style.display = "inline";
	  }
	  else
	  {
		  document.getElementById(id).style.visibility = "hidden";		
		  document.getElementById(id).style.display = "none";	
    }
	}	
}

function showHideElementDefined(id,show)
{
	if(document.getElementById(id) != null)
  {
	  if (show)
	  {
		  document.getElementById(id).style.visibility = "visible"; 
		  document.getElementById(id).style.display = "block";
	  }
	  else
	  {
		  document.getElementById(id).style.visibility = "hidden";		
		  document.getElementById(id).style.display = "none";	
    }
	}	
}

function showHideElementBlock(id)
{
	if(document.getElementById(id) != null)
  {
	  if (document.getElementById(id).style.visibility == "hidden")
	  {
		  document.getElementById(id).style.visibility = "visible"; 
		  document.getElementById(id).style.display = "inline-block";
	  }
	  else
	  {
		  document.getElementById(id).style.visibility = "hidden";		
		  document.getElementById(id).style.display = "none";	
    }
	}
}

function ShowHideElementByClass(className) {
  var elements = (document.all) ? document.all : document.getElementsByTagName('*');
  for (i = 0; i < elements.length; i++) {
    if (elements[i].className == className) {
      if (elements[i].style.display == "none") { elements[i].style.display = "block"; }
      else { elements[i].style.display = "none"; }
    }
  }
}

function ShowHideElementByClassDefined(className, show) {
  var elements = (document.all) ? document.all : document.getElementsByTagName('*');
  for (i = 0; i < elements.length; i++) {
    if (elements[i].className == className) {
      if (show) { elements[i].style.display = "block"; }
      else { elements[i].style.display = "none"; }
    }
  }
}

function ResizeElementHeight(id, height) {
	if (document.getElementById(id) != null) {
		if (document.getElementById(id).style.overflow == "hidden") {
			document.getElementById(id).style.overflow = "visible";
			document.getElementById(id).style.height = "auto";
		}
		else {
			document.getElementById(id).style.overflow = "hidden";
			document.getElementById(id).style.height = height;
		}
	}
}

/*------------------------------------
	switch tabbed radio button list
------------------------------------*/
function RadioTabList(id, i, className)
{
	j = 0;
	do {
		inp=document.getElementById(id+'_'+j);
		div=document.getElementById(id+'_d'+j);
		if ((inp != null) && (div != null)) {
			if (inp.checked) {
				inp.checked = false;
				div.className=className;
			} else if (i == j) {
				inp.checked = true;
				div.className=className+' active';
			}
		}
		j++;
	} while ((inp != null) && (div != null))
}
/*------------------------------------
disable inpossible values
------------------------------------*/
function DDLCheckPossibility(id, val, orientation) {
	var item = document.getElementById(id);
	if (orientation == 0) {
		// disable smaller values
		for (i = 0; i < item.length; i++) {
			if (parseInt(item[i].value) < parseInt(val)) {
				item[i].disabled = true;
				item[i].style.color = '#CCC';
			}
			else {
				item[i].disabled = false;
				item[i].style.color = '';
			}
		}
	}
	else {
		// disable greater values
		for (i = 0; i < item.length; i++) {
			if (parseInt(item[i].value) > parseInt(val)) {
				item[i].disabled = true;
				item[i].style.color = '#CCC';
			}
			else {
				item[i].disabled = false;
				item[i].style.color = '';
			}
		}
	}
}

/*------------------------------------
highlight controls
------------------------------------*/
function HighlightOn(id) {
    if (navigator.userAgent.indexOf("MSIE 6") == -1) {
      var item = document.getElementById(id);
        if (item != null) {
            i = item.className.indexOf(' Highlight');
            if (i < 0) {
                item.className += ' Highlight';
            }
        }
    }
}
function HighlightOff(id) {
    if (navigator.userAgent.indexOf("MSIE 6") == -1) {
        var item = document.getElementById(id);
        if (item != null) {
            i = item.className.indexOf(' Highlight');
            if (i >= 0) {
                item.className = item.className.substring(0, i) + item.className.substr(i + 10);
            }
        }
    }
}

function HighlightAdd(id)
{
	var item = document.getElementById(id);
	if (item != null) {
		i = item.className.indexOf('Highlight');
		if (i < 0) {
			item.className = item.className + 'Highlight';
		}
	}
}
function HighlightDel(id)
{
	var item = document.getElementById(id);
	if (item != null) {
		i = item.className.indexOf('Highlight');
		if (i >= 0) {
		  item.className = item.className.substring(0, i) + item.className.substr(i + 9);
		}
	}
}

function DisableItem(id) {
  var item = document.getElementById(id);
  if (item != null) {
    i = item.className.indexOf(' disabled');
    if (i < 0) {
      item.className += ' disabled';
    }
  }
}
function EnableItem(id) {
  var item = document.getElementById(id);
  if (item != null) {
    i = item.className.indexOf(' disabled');
    if (i >= 0) {
      item.className = item.className.substring(0, i) + item.className.substr(i + 10);
    }
  }
}

/*------------------------------------
	trim a string
------------------------------------*/
function trim(s) {
  while (s.substring(0,1) == ' ') {
    s = s.substring(1,s.length);
  }
  while (s.substring(s.length-1,s.length) == ' ') {
    s = s.substring(0,s.length-1);
  }
  return s;
}

/*------------------------------------
	check lenght of textarea
------------------------------------*/

function CheckLength(item,max)
{
	if (item.value.length > max) {
		item.value=item.value.substring(0,max-1);
		item.focus();
	}
}

/*------------------------------------
	focus on enter
------------------------------------*/
function FocusOnEnter(event, focusToName)
{
	if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13)) {document.getElementsByName[focusToName].focus();return false;} else return true;
}

/*------------------------------------
	click on enter
------------------------------------*/
function ClickOnEnter(event, doClickOnID)
{

	if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13)) {
		document.getElementById(doClickOnID).click();
		return false;
	} 
	return true;
}

/* show hide divs */
function PopupDiv(srcObj, divID) 
{
  var el = document.getElementById(divID);
  el.style.visibility = 'visible';
}
function HideDiv(srcObj, divID) 
{
  var el = document.getElementById(divID);
  el.style.visibility = 'hidden';
}
/* show hide divs compatibility with old version */
function displayDiv(divID) 
{
  var el = document.getElementById(divID);
  el.style.visibility = 'visible';
}
function hideDiv(divID) 
{
  var el = document.getElementById(divID);
  el.style.visibility = 'hidden';
}
/* secure version for IE */
function HideDivSecure(e, mainID, controlID) {
  var element;

  // ie on window.event, mozilla on e
  if (window.event) {
    element = window.event.srcElement;
  } else if (e) {
    element = e.originalTarget;
  }

  if (element.id == mainID) {
    var el = document.getElementById(controlID);
    el.style.visibility = 'hidden';
  }
}

function RegionChangedCallback(returnValue, context)
{
  if (returnValue.indexOf('<TargetID>') >= 0)
  {
    var TargetID = returnValue.substring(10, returnValue.indexOf('</TargetID>'));
    var TargetInnerHtml = returnValue.substring(returnValue.indexOf('</TargetID>')+11);
    document.getElementById(TargetID).innerHTML = TargetInnerHtml;
  }
}

/* daily specials slider */
var DSTimer = 0;
var DSSTimer = 0;
var DSSIncr;
var DSSDiv;
var DSPicspace = 174;
var DSPicHeight = 168;
var DSFrameWidth = 870;
var DSSliderWidth = 20;
var DSScrollPos = DSSliderWidth;
var DSArray = new Array();
var DSPause = 0;
var DSFinalPos = 0;
var DSFramePos = 0;
var DSStep = 0;
var DSCols = 5;
var DSPics = 1;

function StartScroll(i) {
  if ((DSPause == 1) && (DSSTimer == 0)) {
      DSSTimer = window.setInterval(DoScroll, 25);
    DSSIncr = 1;
    DSFramePos = 0;
    ScrollDSFrameWidth = DSFrameWidth;
    DSPause = 0;
    DSFinalPos = DSSliderWidth - (((DSStep * DSCols) % (DSPics - DSCols)) * DSPicspace);
  }
}

function StopScroll() {
	if (DSSTimer != 0) window.clearInterval(DSSTimer);
	DSSTimer = 0;
	DSPause = 1;
}


function DSStartScroll() {
	if ((DSPause == 0) && (DSSTimer == 0)) {
		DSSTimer = window.setInterval(DoScroll, 25);
		DSSIncr = 1;
		DSFramePos = 0;
		ScrollDSFrameWidth = DSFrameWidth;
		DSStep++;
		DSFinalPos = DSSliderWidth - (((DSStep * DSCols) % (DSPics - DSCols)) * DSPicspace);
	}
}

function MoveNextBlock(i) {
  StopScroll();
  DSStep += i;
  if (DSStep < 0) DSStep = parseInt(DSPics / DSCols) - 1; // go backwards
  DSScrollPos = DSSliderWidth - (((DSStep * DSCols) % (DSPics - DSCols)) * DSPicspace);
  DSSDiv.style.left = '' + Math.round(DSScrollPos) + 'px';
  DSSDiv.style.clip = 'rect(0px ' + (Math.round(-DSScrollPos) + DSFrameWidth + DSSliderWidth) + 'px ' + DSPicHeight + 'px ' + (Math.round(-DSScrollPos) + DSSliderWidth) + 'px)';
  if (ImagesLoaded == 0) LoadNextImages();
}

// working horse
function DoScroll() {
    if (DSFramePos < 0.00 * ScrollDSFrameWidth) 
        DSSIncr = 1;
    else if (DSFramePos < 0.5 * ScrollDSFrameWidth) 
        DSSIncr += 4;
    else if (DSFramePos < 0.98 * ScrollDSFrameWidth) 
        DSSIncr -= 4;
    else 
        DSSIncr = 1;
    if (DSSIncr < 1) DSSIncr = 1;
	
    DSScrollPos -= DSSIncr;
	DSFramePos += DSSIncr;
	if ((DSScrollPos <= DSFinalPos) && ((DSScrollPos + DSCols * DSPicspace) > DSFinalPos)) {
		window.clearInterval(DSSTimer);
		DSSTimer = 0;
		DSScrollPos = DSFinalPos;
	}
  else if (DSScrollPos < (DSFrameWidth + DSSliderWidth) - (DSPics * DSPicspace)) {
		DSScrollPos = (DSScrollPos - ((DSFrameWidth + DSSliderWidth) - (DSPics * DSPicspace))); // DSSliderWidth; 
}
    try {
	DSSDiv.style.left = '' + Math.round(DSScrollPos) + 'px';
	DSSDiv.style.clip = 'rect(0px ' + (Math.round(-DSScrollPos) + DSFrameWidth + DSSliderWidth) + 'px ' + DSPicHeight + 'px ' + (Math.round(-DSScrollPos) + DSSliderWidth) + 'px)';
    }
    catch(e)
    { }

	if ((DSScrollPos == DSFinalPos) && (ImagesLoaded == 0)) LoadNextImages();
}

var ImagesLoaded = 0;
function LoadNextImages() {
  ImagesLoaded = 1;
  try {
      var nodeList = DSSDiv.getElementsByTagName('img');
      c = 2 * DSCols;
      for (i = 0; (i < nodeList.length) && (c > 0); i++) {
          if (nodeList[i].src == '') {
              LoadImage(i, nodeList);
              c--;
          }
      }
      c = 2 * DSCols;
      for (i = nodeList.length - 1; (i >= 0) && (c > 0); i--) {
          if (nodeList[i].src == '') {
              LoadImage(i, nodeList);
              c--;
          }
      }
  }
  catch (e)
  { }
}

function LoadImage(i, nodeList) {
  index = nodeList[i].id.indexOf('DailyLogoP');
  if (index > 0) {
    nodeList[i].src = DSArray[nodeList[i].id.substring(index + 10)]['LPath'];
    ImagesLoaded = 0;
  }
  index = nodeList[i].id.indexOf('DailyVehicleP');
  if (index > 0) {
   nodeList[i].src = DSArray[nodeList[i].id.substring(index + 13)]['VPath'];
   ImagesLoaded = 0;
  }
}

/* Ajax */
var AjaxPending, AjaxSel, AjaxPendingImg, AjaxTimeoutText, AjaxTimeoutTime;
var AjaxTimeoutTimeDefault = 15000,
	AjaxTimerID = 0;
	
function AjaxInit(ControlID, ChangedParamName, ChangedValue, AjaxTarget)
{
	if (AjaxPending) return;
	AjaxSel = '<ChangedParam ControlID="' + ControlID + '" Name="' + ChangedParamName + '" Value="' + ChangedValue + '" />';
	AjaxPendingImg = document.getElementById('AjaxPendingImg'+AjaxTarget);
	if (AjaxPendingImg != undefined) AjaxPendingImg.style.visibility='visible';
	AjaxTimeoutText = document.getElementById('AjaxTimeoutText'+AjaxTarget);
  if (AjaxTimeoutText != undefined) {
		AjaxTimeoutTime = AjaxTimeoutTimeDefault;
		AjaxTimeoutText.style.visibility = 'hidden';
		AjaxTimeoutText.className = 'SkipLink';
		AjaxTimerID = window.setTimeout("AjaxTimeoutReceived('timeout')", AjaxTimeoutTime);
	}
	AjaxPending = true;
}

function AjaxReceiver(returnValue, context) {
	if (!AjaxPending) return;
	if (AjaxTimerID != 0) {
		window.clearTimeout(AjaxTimerID);
		AjaxTimerID = 0;
	}

	var p = returnValue.indexOf('<Target');
	while (p >= 0){
		i = returnValue.indexOf('ID="', p + 8);
		j = returnValue.indexOf('"', i + 5);
		var TargetID = returnValue.substring(i + 4, j);
		b = returnValue.indexOf('>', j + 1);
		e = returnValue.indexOf('</Target>', b);
		var TargetInnerHtml = returnValue.substring(b + 1, e);
    var item = document.getElementById(TargetID);
    if (item != null) {
    	if ((item.nodeName.toLowerCase()) == 'select') {
        // ie option bug
        if (item.outerHTML) {
          var begin = item.outerHTML.match(/(<select .*?>)/i);
          var end   = item.outerHTML.match(/(<\/select>)/i);
          if (begin && end) {
            var s = begin[1] + TargetInnerHtml + end[1];
            item.outerHTML = s;
          }
        }	else {
          item.innerHTML = TargetInnerHtml;
        }
      } else {
        item.innerHTML = TargetInnerHtml;
      }
    }
    // check if a JavaScript should be called
    p = returnValue.indexOf('<CallJavaScript', e + 8);
    if (p >= 0) {
    	x = returnValue.indexOf('<', e + 8);
    	if (x == p) // it is true
    	{
    		b = returnValue.indexOf('>', e + 8 + 15);
    		e = returnValue.indexOf('</CallJavaScript>', b);
    		var CallScript = eval(returnValue.substring(b + 1, e));
    		if (typeof CallScript == "function") CallScript();
    		p = returnValue.indexOf('<Target', e + 15);
    	}
    	else {
    		p = returnValue.indexOf('<Target', e + 8);
    	}
    }
    else {
  		p = returnValue.indexOf('<Target', e + 8);
		}
	}
  AjaxPending = false;
  if (AjaxPendingImg != undefined) AjaxPendingImg.style.visibility = 'hidden';
  if (typeof StatsTrackManual != "undefined") StatsTrackManual();
}

function AjaxTimeoutReceived(context)
{
	if (context == 'timeout') {
		if (AjaxPending) {
			// do as if received an empty result
			AjaxReceiver('', 'context');
//			if (AjaxTimeoutText != undefined) {
//				AjaxTimeoutText.style.visibility = 'visible';
//				AjaxTimeoutText.className = '';
//			}
		} else {
			AjaxTimeoutTime = AjaxDefaultTimeout;
		}
	}
}

function AjaxRetry()
{
	AjaxTimeoutTime = 2 * AjaxTimeoutTime;
	AjaxCallback(null, null, null);
}


/* Dynamically loads a javascript- or css-include (after ajax post back) */
function LoadJsCssFile(filename, filetype) {
    if (filetype == "js") { //if filename is a external JavaScript file
        var fileref = document.createElement('script')
        fileref.setAttribute("type", "text/javascript")
        fileref.setAttribute("src", filename)
    }
    else if (filetype == "css") { //if filename is an external CSS file
        var fileref = document.createElement("link")
        fileref.setAttribute("rel", "stylesheet")
        fileref.setAttribute("type", "text/css")
        fileref.setAttribute("href", filename)
    }
    if (typeof fileref != "undefined")
        document.getElementsByTagName("head")[0].appendChild(fileref)
}


/* Functions for scrolling an element into view if it's upper border is not in view */
function ScrollIntoView(elementId) {
    if (!IsElementIntoView(document.getElementById(elementId)))
        ScrollToElement(document.getElementById(elementId));
}

function IsElementIntoView(element) {
    var docViewTop = GetPageRect()[1];
    var docViewBottom = GetPageRect()[3];
    var elemTop = GetElementRect(element)[1];
    var elemBottom = GetElementRect(element)[3];
    return ((elemTop <= docViewBottom) && (elemTop >= docViewTop));
}

function ScrollToElement(element) {
    var selectedPosX = 0;
    var selectedPosY = 0;
    while (element != null) {
        selectedPosX += element.offsetLeft;
        selectedPosY += element.offsetTop;
        element = element.offsetParent;
    }
    window.scrollTo(GetPageRect()[0], selectedPosY);
}

function GetPageRect() {
    var isquirks = document.compatMode !== 'BackCompat';
    var page = isquirks ? document.documentElement : document.body;
    var x = page.scrollLeft;
    var y = page.scrollTop;
    var w = 'innerWidth' in window ? window.innerWidth : page.clientWidth;
    var h = 'innerHeight' in window ? window.innerHeight : page.clientHeight;
    return [x, y, x + w, y + h];
}

function GetElementRect(element) {
    var x = 0, y = 0;
    var w = element.offsetWidth, h = element.offsetHeight;
    while (element.offsetParent !== null) {
        x += element.offsetLeft;
        y += element.offsetTop;
        element = element.offsetParent;
    }
    return [x, y, x + w, y + h];
}
