/*
max by ProgramMax is licensed under a Creative Commons Attribution 3.0 Unported License:
http://creativecommons.org/licenses/by/3.0/

To learn more visit http://www.programmax.net/projects/max
*/

if( typeof max == "undefined" ) {
	var max = { };
}

if( typeof max.design == "undefined" ) {
	max.design = function( ){

		var returning = { };

		returning.addClass = function( parameters ) {
			max.common.checkParameters({
				"parameters.element": {
							value: parameters.element,
							type: Object
				},
				"parameters.className": {
							value: parameters.className,
							type: String
				}
			});

			max.design.removeClass( parameters );
			if( parameters.element.className.length > 0 ) {
				parameters.element.className += " ";
			}
			parameters.element.className += parameters.className;
		};

		returning.removeClass =  function( parameters ) {
			max.common.checkParameters({
				"parameters.element": {
							value: parameters.element,
							type: Object
				},
				"parameters.className": {
							value: parameters.className,
							type: String
				}
			});

			var newClassName = "";
			for( var classes = parameters.element.className.split( /\s+/ ), i = classes.length; i--; ) {
				if( classes[ i ] != parameters.className ) {
					newClassName += classes[ i ];
				}
			}
			parameters.element.className = newClassName;
		};

		returning.hasClass =  function( parameters ) {
			max.common.checkParameters({
				"parameters.element": {
							value: parameters.element,
							type: Object
				},
				"parameters.className": {
							value: parameters.className,
							type: String
				}
			});

			for( var classes = parameters.element.className.split( /\s+/ ), i = classes.length; i--; ) {
				if( classes[ i ] == parameters.className ) {
					return true;
				}
			}

			return false;
		};

		returning.setClass = function( parameters ) {
			max.common.checkParameters({
				"parameters.element": {
							value: parameters.element,
							type: Object
				},
				"parameters.className": {
							value: parameters.className,
							type: String
				},
				"parameters.shouldAdd": {
							value: parameters.shouldAdd,
							type: Boolean
				}
			});

			if( parameters.shouldAdd ) {
				addClass( parameters );
			} else {
				removeClass( parameters );
			}
		};

		returning.toggleClass =  function( parameters ) {
			max.common.checkParameters({
				"parameters.element": {
							value: parameters.element,
							type: Object
				},
				"parameters.className": {
							value: parameters.className,
							type: String
				}
			});

			return setClass({ element: parameters.element, className: parameters.className, shouldAdd: ! hasClass( parameters ) });
		};

		returning.setOpacity = function( parameters ) {
			max.common.checkParameters({
				"parameters.element": {
							value: parameters.element,
							type: Object
				},
				"parameters.opacityPercent": {
							value: parameters.opacityPercent,
							type: Number
				}
			});

			parameters.element.style.filter = "alpha(opacity=" + parameters.opacityPercent + ")"; // IE
			parameters.element.style.MozOpacity = parameters.opacityPercent / 100; // Old-school Mozilla like Netscape Navigator
			parameters.element.style.KhtmlOpacity = parameters.opacityPercent / 100; // Old Safari (1.x)
			parameters.element.style.opacity = parameters.opacityPercent / 100; // Standards-compliant version
		};

		return returning;
	}();
}
