
function createXMLHttp()
{
    if (typeof XMLHttpRequest != 'undefined')
        return new XMLHttpRequest();
    else if (window.ActiveXObject)
    {
        var aVersions = [ 'MSXML2.XMLHttp.5.0', 'MSXML2.XMLHttp.4.0','MSXML2.XMLHttp.3.0', 'MSXML2.XMLHttp','Microsoft.XMLHttp'];

        for (i=0; i<aVersions.length; i++)
        {
            try
            {
                return new ActiveXObject(aVersions[i]);
            }
            catch (oError)
            {
                //Do nothing
            }
        }
    }
    else if(window.createRequest)
        xmlHttpReq = window.createRequest();
    throw new Error("XMLHttp object could be created.");
}

function ajaxRequest(container,params)
{
    var xmlHttpReq = createXMLHttp();

	if(xmlHttpReq)
	{
	    xmlHttpReq.abort();
		xmlHttpReq.open('POST', 'ajaxProcessor.ashx?' + params, true);
		
		var c = getObj(container);
		if(c)
	    	c.innerHTML = '<img src="images/indicator.gif" alt="" width="16" height="16" />&nbsp;Processing';
		
		xmlHttpReq.onreadystatechange = function()
		{ 
			if(xmlHttpReq.readyState == 4)
			{
			    if(xmlHttpReq.status == 200)
				{
					if(c)
			        	c.innerHTML = xmlHttpReq.responseText;
					else
						return xmlHttpReq.responseText;
				}
			}
		}
		xmlHttpReq.send('');
	}
	else
		return true;
}

function getObj(obj)
{
	var o;
	
	if(document.getElementById)
		o = document.getElementById(obj);
	else if(document.all)
		o = document.all.item(obj);
	else
		o = null;
		
	return o;
}

function isIE6()
{
    var browser = navigator.appVersion;
    var is6 = false;
    if(browser.indexOf('MSIE 6') != -1)
        is6 = true;
        
    return is6;
}

function windowSize()
{
	var winW, winH;
	
	if (navigator.appName.indexOf('Microsoft')!= -1)
	{
		winW = document.body.offsetWidth;
		winH = document.body.offsetHeight;
	}
	else
	{
		winW = window.innerWidth;
	  	winH = window.innerHeight;
	}
	
	return [winW,winH];
}

function showHide(obj, focusObj)
{
	var o = getObj(obj);
	if(o.className == 'hide')
	{
		o.className = 'show';
	
		if(focusObj != null)
			getObj(focusObj).focus();
	}
	else
		o.className = 'hide';
}

function toggleCollection(container,className,showElementID)
{
    var c = getObj(container);
    var divs = c.getElementsByTagName('div');
    var arrDivs = new Array();
    
    for(i=0;i<divs.length;i++)
    {
        if(divs[i].className == 'hide ' + className || divs[i].className == 'show ' + className)
            arrDivs[arrDivs.length] = divs[i].id;
    }
    
    for(j=0;j<arrDivs.length;j++)
    {
        if(arrDivs[j].toString() != showElementID)
            getObj(arrDivs[j].toString()).className = 'hide ' + className;
    }
    
    getObj(showElementID).className = 'show ' + className;
}

function createCookie(name,value,days)
{
	if (days)
	{
		var date = new Date();
		date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name + "=" + value + expires + "; path=/";
}

function readCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function deleteCookie(name)
{
	createCookie(name, "", -1);
}

function checkCookie(cookieName)
{
	var c = readCookie(cookieName);
	if(c)
		return true;
	else
		return false;
}

function parseCookie(cookieName, delimiter)
{
	if(checkCookie(cookieName))
	{
		var c = readCookie(cookieName);
		return c.split('|');
	}
	else
		return null;
}

function pause(seconds)
{
	var date = new Date();
	var curDate = null;
	
	do { curDate = new Date(); }
	while(curDate-date < (seconds * 1000));
}

function getURLParam(param)
{
	var regexP = "[\\?&]" + param + "=([^&#]*)";
	var regex = new RegExp( regexP );
	var tmpURL = window.location.href;
	var results = regex.exec( tmpURL );
	if( results == null )
		return "";
	else
		return results[1];
}

function openWindow(theURL,winName,features)
{
	window.open(theURL,winName,features);
}

function moveElement(element, finalX, finalY, interval)
{
	var elem = getObj(element);
	
	if (elem.movement)
		clearTimeout(elem.movement);
	
	if (!elem.style.left)
		elem.style.left = "0px";
	
	if (!elem.style.top)
		elem.style.top = "0px";
	
	var xPos = parseInt(elem.style.left);
	var yPos = parseInt(elem.style.top);
	
	if (xPos == finalX && yPos == finalY)
		return true;
	
	if (xPos < finalX)
		xPos ++;
	
	if (xPos > finalX)
		xPos --;
	
	if (yPos < finalY)
		yPos ++;
	
	if (yPos > finalY)
		yPos --;
	
	elem.style.left = xPos + "px";
	elem.style.top = yPos + "px";
	var repeat = "moveElement('" + element + "'," + finalX + "," + finalY + "," + interval + ")";
	elem.movement = setTimeout(repeat,interval);
}

function createElement(element)
{
	var e = document.createElement(element);
	return e;
}

function createTextNode(text)
{
	var t = document.createTextNode(text);
	return t;
}

function insertAfter(newElement,targetElement)
{
    var target = getObj(targetElement);
    var parent = target.parentNode;
    if(parent.lastChild == targetElement)
        parent.appendChild(newElement);
    else
        parent.insertBefore(newElement,targetElement.nextSibling);
}

function removeChild(child)
{
    var b = document.getElementsByTagName('body')[0];
    var c = getObj(child);
    if(c)
        b.removeChild(c)
        
    //show size selector for productdetail page for IE6
    if(isIE6())
    {
        var ddl = getObj('ddlSize');
        if(ddl)
            showHide('ddlSize');
    }
}

function addListener(element, type, expression, bubbling)
{
    bubbling = bubbling || false;
    var elem = getObj(element);
	
	if(window.addEventListener)
	{ 
		elem.addEventListener(type, expression, bubbling);
		return true;
	}
	else if(window.attachEvent)
	{ 
		elem.attachEvent('on' + type, expression);
		return true;
	}
	else
	    return false;
}


//emulate namespace mechanism
//AARF pseudo-namespace
var AARF =
{
  //MattFirm pseudo-namespace
  MattFirm:
  {
  }
}

AARF.TrimString = function (sInString) 
{  
  sInString = sInString.replace( /^\s+/g, '' );// strip leading
  return sInString.replace( /\s+$/g, '' );// strip trailing
}