/// <reference name="MicrosoftAjax.js" />

Type.registerNamespace('iFramework');

iFramework.Dimension = function(x, y) {

  this.getX = function() {
    return x;
  };
  
  this.setX = function(newX) {
    x = newX;
  };
  
  this.getY = function() {
    return y;
  };
  
  this.setY = function(newY) {
    y = newY;
  };
}

iFramework.Dimension.prototype.toString = function() {  
  return '[x = ' + this.getX() + ', y = ' + this.getY() + ']';  
};

iFramework.Dimension.prototype.compareTo = function(objectToCompare) {
  if (objectToCompare == null) {
    return null;
  }
  if (objectToCompare.getX() == this.getX() && objectToCompare.getY() == this.getY()) {
    return 0;
  }
  if (objectToCompare.getX() < this.getX() && objectToCompare.getY() < this.getY()) {
    return 1;
  }
  else {
    return -1;
  }
};

iFramework.Dimension.registerClass('iFramework.Dimension');

iFramework.Browser = function () {};

iFramework.Browser.IE = 'MSIE';

iFramework.Browser.IE6 = 'MSIE 6.0';

iFramework.Browser.IE7 = 'MSIE 7.0';

iFramework.Browser.Opera = 'Opera';

iFramework.Browser.Firefox = 'Firefox';

iFramework.Browser.Mozilla = 'Mozilla';

iFramework.Browser.scrollEnabled = true;

iFramework.Browser.is = function(substring) { 
  return navigator.userAgent.indexOf(substring) != -1; 
}

iFramework.Browser.isIE = function() {
  return (iFramework.Browser.is(iFramework.Browser.IE) && !iFramework.Browser.is(iFramework.Browser.Opera));
};

iFramework.Browser.isIE6 = function() {
  return (iFramework.Browser.is(iFramework.Browser.IE6) && !iFramework.Browser.is(iFramework.Browser.Opera));
};

iFramework.Browser.isIE7 = function() {
  return (iFramework.Browser.is(iFramework.Browser.IE7) && !iFramework.Browser.is(iFramework.Browser.Opera));
};

iFramework.Browser.isFirefox = function() {
  return (iFramework.Browser.is(iFramework.Browser.Firefox) && !iFramework.Browser.is(iFramework.Browser.Opera));
};

iFramework.Browser.isOpera = function() {
  return iFramework.Browser.is(iFramework.Browser.Opera);
};

iFramework.Browser.isMozilla = function() {
  return (iFramework.Browser.is(iFramework.Browser.Mozilla) && !iFramework.Browser.is(iFramework.Browser.IE) && !iFramework.Browser.is(iFramework.Browser.Opera));
};

iFramework.Browser.getType = function() {
  if (iFramework.Browser.isIE6()) {
    return iFramework.Browser.IE6;
  }
  if (iFramework.Browser.isIE7()) {
    return iFramework.Browser.IE7;
  }
  if (iFramework.Browser.isIE()) {
    return iFramework.Browser.IE;
  }  
  if (iFramework.Browser.isFirefox()) {
    return iFramework.Browser.Firefox;
  }
  if (iFramework.Browser.isOpera()) {
    return iFramework.Browser.Opera;
  }
  if (iFramework.Browser.isMozilla()) {
    return iFramework.Browser.Mozilla;
  }
  return '';            
};

iFramework.Browser.getActiveWindowSize = function () {
  if( typeof( window.innerWidth ) == 'number' ) {
    return new iFramework.Dimension(window.innerWidth, window.innerHeight);
  } 
  else {
    if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
      return new iFramework.Dimension(document.documentElement.clientWidth, document.documentElement.clientHeight);
    } 
    else {
      if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
        return new iFramework.Dimension(document.body.clientWidth, document.body.clientHeight);
      } 
    }
  } 
};

iFramework.Browser.getWindowSize = function () {
  if( typeof( window.innerWidth ) == 'number' && typeof( window.scrollMaxX ) == 'number') {
    return new iFramework.Dimension(window.innerWidth + window.scrollMaxX, window.outerHeight + window.scrollMaxY);
  } 
  else {
    if( document.documentElement && ( document.documentElement.scrollWidth || document.documentElement.scrollHeight ) ) {
      return new iFramework.Dimension(document.documentElement.scrollWidth, document.documentElement.scrollHeight);
    } 
    else {
      //Not testes: Unknown browser type.
      if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
        return new iFramework.Dimension(document.body.clientWidth, document.body.clientHeight);
      } 
    }
  } 
};

iFramework.Browser.getScrollPosition = function () {
  if( typeof( window.pageYOffset ) == 'number' ) {
    //Netscape compliant
    return new iFramework.Dimension(window.pageXOffset, window.pageYOffset);
  } 
  else {
    if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
      //DOM compliant
      return new iFramework.Dimension(document.body.scrollLeft, document.body.scrollTop);
    } 
    else {
      if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
        //IE6 standards compliant mode
        return new iFramework.Dimension(document.documentElement.scrollLeft, document.documentElement.scrollTop);        
      }
    }
  }
};

iFramework.Browser.getScrollEnabled = function () {
  return iFramework.Browser.scrollEnabled;
};

iFramework.Browser.setScrollEnabled = function (enabled) {
  iFramework.Browser.scrollEnabled = enabled;
  if (iFramework.Browser.isIE()) {
    if (enabled) {
      document.childNodes[1].style.overflow = "auto";
    }
    else {
      document.childNodes[1].style.overflow = "hidden";
    }
  }
  else {
    if (enabled) {
      document.body.style.overflow = 'auto';
    }
    else {
      document.body.style.overflow = 'hidden';
    }  
  }  
};

iFramework.Browser.registerClass('iFramework.Browser');

Type.registerNamespace('iFramework.Core');

iFramework.Core.setClass = function(documentElement, cssClass) {
	if (documentElement && documentElement.className) {
	  documentElement.className = cssClass;
	}
};

iFramework.Core.addClass = function(documentElement, cssClass) {
	if (documentElement && documentElement.className) {
	  documentElement.className += ' ' + cssClass;	  
	}
};

iFramework.Core.removeClass = function(documentElement, cssClass) {
	if (documentElement && documentElement.className) {
	  documentElement.className = documentElement.className.replace(' ' + cssClass, '');
	}
};

iFramework.Core.move = function(controlID, xOffset, yOffset) {
    control = $get(controlID);
    if (control && control.style)  {
      control.style.left = control.offsetLeft + control.offsetWidth + xOffset + 'px';
      control.style.top = control.offsetTop + yOffset + 'px';
    }
};

iFramework.Core.hideElement = function(controlID) {
    control = $get(controlID);
    if (control && control.style)  {
      control.style.display = 'none';
    }
};

iFramework.Core.showElement = function(controlID) {
    control = $get(controlID);
    if (control && control.style)  {
      control.style.display = '';
    }
};


iFramework.Core.removeStringFromSequance = function(sequance, value, delimiter) {
    result = '';
    valuesSet = sequance.split(delimiter);
    for (i = 0; i < valuesSet.length; i++) {
        if (valuesSet[i] != value) {
            result = addStringToSequance(result, valuesSet[i], delimiter);
        }
    }
    return result;
};

iFramework.Core.addStringToSequance = function(sequance, value, delimiter) {
    if (sequance == null || sequance == '') {
        sequance = value;
    }
    else {
        sequance += delimiter + value;        
    }
    return sequance;
};
if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();