//contains common displays (address, distance, etc)
//common_dom.js also needs to be included

/*
 * functions to process the returnURL
 */
 
	function getArgs() {
		var args = new Object();
		var query = location.search.substring(1);
		var pairs = query.split("&");
		for (var i = 0; i < pairs.length ; i++) {
			var pos = pairs[i].indexOf('=');
			if (pos == -1) continue;
			var argname = pairs[i].substring(0,pos);
			var value = pairs[i].substring(pos+1);
			args[argname] = myunescape(value);
		}
		return args;
	}

	function myunescape (str)
	{
		str = "" + str;
		while (true)
		{
			var i = str . indexOf ('+');
			if (i < 0)
				break;
			str = str . substring (0, i) + '%20' +
				str . substring (i + 1, str . length);
		}
		return unescape (str);
	}

	function getCookies() {
		var args = new Object();
		var mycookie = document.cookie;
		var mypattern = /([^=\sx]+)\s*=\s*([^;]+)\s*/;
		var result;
		while (result = mycookie.match(mypattern)) {
			args[result[1]] = myunescape(result[2]);
			mycookie = mycookie.substr(result.index+result[0].length);
		}
		return args;
	}

	var cookies = getCookies();
	var querystring = getArgs();
	var returnURL;

	function newsubmit() {
		if (document.getElementById('record').value.length > 0) {
			document.getElementById('transaction').value='locmap';
			document.getElementById('tempset').value='copyctrlocmap';
			if (document.getElementById('record').value.length < 4) {
				for(zeros=0; document.getElementById('record').value.length < 4; zeros++) {
					document.getElementById('record').value = '0' + document.getElementById('record').value;
				}
			}
		} else {
			document.getElementById('transaction').value='search';
		}
	}


	if (querystring.returnURL) {
		returnURL = querystring.returnURL;
		document.cookie='returnURL=' + escape(returnURL) + '; path=/staples/;';
	} else if (cookies.returnURL) {
		returnURL = cookies.returnURL;
	} 

	if (!document.cookie) {
		document.location='/staples/advantage.adp?template=copyctrcookieerror&returnURL=' + escape(returnURL);	
	}


	function padStoreID(storeid) {
		storeid = storeid.toString();
		if (storeid.length < 4) {
			for(var zeros=0; storeid.length < 4; zeros++) {
				storeid = '0' + storeid;
			}
		}	
		return storeid;
	}



if (!Array.prototype.push) Array.prototype.push = function() {
    for (var i=0; i<arguments.length; i++) this[this.length] = arguments[i];
    return this.length;
}

function mq_ParamExists (varname) {
    var undef;
    return (varname !== undef);
}

function mq_display_locmap_info(container,loc) {
	if(!mq_ParamExists(loc))
        return;
	var htmlBlock = '<table border="0" cellspacing="0" cellpadding="0" width="100%" id="resultsTbl">';
	htmlBlock += '<tr class="a510"><td>Address</td><td>Store Hours</td><td>Store Details</td></tr>';
	htmlBlock += '<tr>';
	htmlBlock += '<td>';
		if (mq_ParamExists(loc.name) && loc.name.length) {
			htmlBlock += loc.name + '<br />';
		} else {
			loc.name = '';
		}
		if (mq_ParamExists(loc.address) && loc.address.length) {
			htmlBlock += loc.address + '<br />';
		}
		if (mq_ParamExists(loc.city) && loc.city.length) {
			htmlBlock += loc.city + ', ';
		}
		if (mq_ParamExists(loc.stateProvince) && loc.stateProvince.length) {
			htmlBlock += loc.stateProvince + ' ';
		}
		if (mq_ParamExists(loc.postalCode) && loc.postalCode.length) {
			htmlBlock += loc.postalCode + '<br />';
		} else if ((mq_ParamExists(loc.city) && loc.city.length) || (mq_ParamExists(loc.stateProvince) && loc.stateProvince.length)) {
			htmlBlock += '<br />';
		}
		
		
		if (mq_ParamExists(loc.userFields.user1) && loc.userFields.user1.length) {
			htmlBlock += loc.userFields.user1 + '<br />';
		}
		if (mq_ParamExists(loc.userFields.user2) && loc.userFields.user2.length) {
			htmlBlock += 'Fax: ' + loc.userFields.user2 + '<br />';
		}

		
		
//store number
		if (mq_ParamExists(loc.recordId) && loc.recordId.length) {
			htmlBlock +=  'Store Number: ' + loc.recordId + '<br />';
		}		
		
	htmlBlock += '</td>';
	htmlBlock += '<td>';
		if (mq_ParamExists(loc.userFields.user3) && loc.userFields.user3.length) {
			htmlBlock += 'Monday - Friday: ' + loc.userFields.user3 + '<br />';
		}
		if (mq_ParamExists(loc.userFields.user4) && loc.userFields.user4.length) {
			htmlBlock += 'Saturday: ' + loc.userFields.user4 + '<br />';
		}
		if (mq_ParamExists(loc.userFields.user5) && loc.userFields.user5.length) {
			htmlBlock += 'Sunday: ' + loc.userFields.user5 + '<br />';
		}
	htmlBlock += '</td>';
	htmlBlock += '<td>';
	htmlBlock += '<ul class="areaLinks">';
	if (mq_ParamExists(loc.recordId) && (parseInt(loc.recordId, 10) > 0) && returnURL ) {
		htmlBlock += '<li><a href="' + returnURL + '&storeref=' + padStoreID(parseInt(loc.recordId, 10)) + '" class="copyCtrIcon"><b>Select This Location</b></a></li>';
	}
	if (mq_ParamExists(loc.recordId) && (parseInt(loc.recordId, 10) > 0) ) {
		//htmlBlock += '<li><a href="advantage.adp?tempset=copyctrroute&transaction=route&destrecordId='+ loc.recordId + '" class="driveIcon">Driving Directions</a></li>';
		htmlBlock += '<li><a href="advantage.adp?tempset=copyctrroute&transaction=route&destname=' + loc.name + '&destaddress=' + loc.address + '&destcity=' + loc.city + '&deststateProvince=' + loc.stateProvince + '&destrecordId='+ loc.recordId + '" class="driveIcon">Driving Directions</a></li>';
	}
	htmlBlock += '</ul>';
	htmlBlock += '</td>';
	htmlBlock += '</tr>';
	htmlBlock += '</table>';
	document.getElementById(container).innerHTML=htmlBlock;
}

//function used to display the outputting of a location in block format
function mq_display_address_part1(container, loc, strURL) {
    var bSpace=false;

    if(!mq_ParamExists(loc))
        return;

    var div = createDiv (container, '', '');
	
	if ((typeof loc.name == 'undefined') || (loc.name == 'undefined')) {
		loc.name = '';
	} 
      
     if (mq_ParamExists(loc.name) && loc.name.length) {
         div.appendChild (document.createTextNode (loc.name));
         div.appendChild (document.createElement ('br'));
     }
     if (mq_ParamExists(loc.address) && loc.address.length) {
         div.appendChild (document.createTextNode (loc.address));
         div.appendChild (document.createElement ('br'));
     }
     if (mq_ParamExists(loc.city) && loc.city.length)
         div.appendChild (document.createTextNode (loc.city + ', '));// must have space here to seperate city and state

     if (mq_ParamExists(loc.stateProvince) && loc.stateProvince.length) {
         div.appendChild (document.createTextNode (loc.stateProvince + ' '));// must have space here to seperate state and zip/postalCode
         
     }
     if (mq_ParamExists(loc.postalCode) && loc.postalCode.length) {
         //if (bSpace) {
         //    div.appendChild (document.createTextNode (' '));
         //}
         div.appendChild (document.createTextNode (loc.postalCode));
		 div.appendChild (document.createElement ('br'));
		 //bSpace=true;
     }
    /* if (mq_ParamExists(loc.country) && loc.country.length) {
         if(bSpace) {
             div.appendChild (document.createTextNode (' '));
         }
         div.appendChild (document.createTextNode (loc.country));
     } */
	if ((loc.userFields != null) && mq_ParamExists(loc.userFields.user1) && loc.userFields.user1.length) {
         if(bSpace) {
             div.appendChild (document.createTextNode (' '));
         }
         div.appendChild (document.createTextNode (loc.userFields.user1));
     }
	
	

	 
}

//function used to display the outputting of a location in block format
function mq_display_address_part2(container, loc, strURL) {
    var bSpace=false;

    if(!mq_ParamExists(loc))
        return;

    var div = createDiv (container, '', '');

	if (mq_ParamExists(loc.recordId) && (parseInt(loc.recordId, 10) > 0) && returnURL) {
	var a = createA (div, returnURL + '&storeref='+ padStoreID(parseInt(loc.recordId, 10)));
            var em = a.appendChild (document.createElement ('em'));
                em.appendChild (document.createTextNode ('<b>Select This Location</b>'));
	}
	
	div.appendChild (document.createElement ('br'));
	
	  if(strURL != "") {
            var a = createA (div, strURL + '&iconId=30689001', '');
			createImg (a, '/images/ic016-driving.gif', '', '', '', '', '');
            var em = a.appendChild (document.createElement ('em'));
				
                em.appendChild (document.createTextNode ('Store Information'));
            
        } else {
           // var span = createSpan (div, '', '');
           //     var em = span.appendChild (document.createElement ('em'));
           //     em.appendChild (document.createTextNode (loc.name));
           // div.appendChild (document.createElement ('br'));
        }
	
	
	if (mq_ParamExists(loc.recordId) && (parseInt(loc.recordId, 10) > 0) ) {
		div.appendChild (document.createElement ('br'));
		var a = createA (div, '/advantage.adp?tempset=copyctrroute&transaction=route&destrecordId='+ loc.recordId);
		var em = a.appendChild (document.createElement ('em'));
		em.appendChild (document.createTextNode ('Driving Directions'));
	}
	
	
	div.appendChild (document.createElement ('br'));

     
	 
}

//function used to display the outputting of a location in block format
function mq_display_address_part3(container, loc, strURL) {
    var bSpace=false;

    if(!mq_ParamExists(loc))
        return;

    var div = createDiv (container, '', '');
	

      
     if (mq_ParamExists(loc.name) && loc.name.length) {
         div.appendChild (document.createTextNode (loc.name));
         div.appendChild (document.createElement ('br'));
     }
     if (mq_ParamExists(loc.address) && loc.address.length) {
         div.appendChild (document.createTextNode (loc.address));
         div.appendChild (document.createElement ('br'));
     }
     if (mq_ParamExists(loc.city) && loc.city.length)
         div.appendChild (document.createTextNode (loc.city + ','));

     if (mq_ParamExists(loc.stateProvince) && loc.stateProvince.length) {
         div.appendChild (document.createTextNode (loc.stateProvince));
         bSpace=true;
     }
     if (mq_ParamExists(loc.postalCode) && loc.postalCode.length) {
         if (bSpace) {
             div.appendChild (document.createTextNode (' '));
         }
         div.appendChild (document.createTextNode (loc.postalCode));//not it
     }
     if (mq_ParamExists(loc.country) && loc.country.length) {
         if(bSpace) {
             div.appendChild (document.createTextNode (' '));
         }
         div.appendChild (document.createTextNode (loc.country));
     }
	
	//example of how to output location parameters from the userfields
     //if (mq_ParamExists(loc.userFields) && mq_ParamExists(loc.userFields.user1) && loc.userFields.user1.length) {
     //if (mq_ParamExists(loc.userFields) && mq_ParamExists(loc.userFields.user1) && loc.userFields.user1.length) {
         //div.appendChild (document.createElement ('br'));
         //div.appendChild (document.createTextNode (loc.userFields.user1));
     //}
	

	 
}

//function used to display the outputting of a location in block format
function mq_display_address_location(container, loc, strURL) {
    var bSpace=false;

    if(!mq_ParamExists(loc))
        return;

    var div = createDiv (container, '', '');
	
	/*
	
	var theAddress = '';
	if (mq_ParamExists(loc.address) && loc.address.length) {
         theAddress = loc.address + '<br />';
     }
	if (mq_ParamExists(loc.city) && loc.city.length)
         theAddress += loc.city + ',';

     if (mq_ParamExists(loc.stateProvince) && loc.stateProvince.length) {
         theAddress += loc.stateProvince;
         bSpace=true;
     }
     if (mq_ParamExists(loc.postalCode) && loc.postalCode.length) {
         if (bSpace) {
             theAddress += ' ';
         }
         theAddress += loc.postalCode;
     }
     if (mq_ParamExists(loc.country) && loc.country.length) {
         if(bSpace) {
             theAddress += ' ';
         }
         theAddress += loc.country;
     }
	theAddress += '<br />';

	if (mq_ParamExists(loc.name) && loc.name.length && returnURL ) {
		theAddress += '<a href="' + returnURL + '&storeref='+ padStoreID(parseInt(loc.name)) + '"><b>Check Copy &amp; Print<br />Online Availability</b></a> ';
	}

	if(strURL != "") {
		theAddress += '<a href="' + strURL + '">Store Information</a> ';
	}

	
	div.innerHTML = theAddress;
   */
      
     if (mq_ParamExists(loc.name) && loc.name.length) {
         div.appendChild (document.createTextNode (loc.name));
         div.appendChild (document.createElement ('br'));
     }
     if (mq_ParamExists(loc.address) && loc.address.length) {
         div.appendChild (document.createTextNode (loc.address));
         div.appendChild (document.createElement ('br'));
     }
     if (mq_ParamExists(loc.city) && loc.city.length)
         div.appendChild (document.createTextNode (loc.city + ','));

     if (mq_ParamExists(loc.stateProvince) && loc.stateProvince.length) {
         div.appendChild (document.createTextNode (loc.stateProvince));
         bSpace=true;
     }
     if (mq_ParamExists(loc.postalCode) && loc.postalCode.length) {
         if (bSpace) {
             div.appendChild (document.createTextNode (' '));
         }
         div.appendChild (document.createTextNode (loc.postalCode));
     }
     if (mq_ParamExists(loc.country) && loc.country.length) {
         if(bSpace) {
             div.appendChild (document.createTextNode (' '));
         }
         div.appendChild (document.createTextNode (loc.country));
     }
	div.appendChild (document.createElement ('br'));
	
	if (mq_ParamExists(loc.recordId) && (parseInt(loc.recordId, 10) > 0) && returnURL ) {
	var a = createA (div, returnURL + '&storeref='+ padStoreID(parseInt(loc.recordId, 10)));
	    var em = a.appendChild (document.createElement ('em'));
		em.appendChild (document.createTextNode ('<b>Select This Location</b>'));
	}
	
	  if(strURL != "") {
            var a = createA (div, strURL + '&iconId=30689001', '');
            var em = a.appendChild (document.createElement ('em'));
                em.appendChild (document.createTextNode ('Store Information'));
            
        } else {
           // var span = createSpan (div, '', '');
           //     var em = span.appendChild (document.createElement ('em'));
           //     em.appendChild (document.createTextNode (loc.name));
           // div.appendChild (document.createElement ('br'));
        }
	
	
	if (mq_ParamExists(loc.recordId) && (parseInt(loc.recordId, 10) > 0) ) {
		var yo = div.appendChild (document.createElement ('span'));
		yo.appendChild (document.createTextNode (' | '));
		var a = createA (div, '/advantage.adp?tempset=copyctrroute&transaction=route&destrecordId='+ loc.recordId);
		var em = a.appendChild (document.createElement ('em'));
		em.appendChild (document.createTextNode ('Driving Directions'));
	}
	
	
	var yo = div.appendChild (document.createElement ('span'));
	yo.appendChild (document.createTextNode (' | '));

	
	div.appendChild (document.createElement ('br'));
     //example of how to output location parameters from the userfields
     //if (mq_ParamExists(loc.userFields) && mq_ParamExists(loc.userFields.user1) && loc.userFields.user1.length) {
     //if (mq_ParamExists(loc.userFields) && mq_ParamExists(loc.userFields.user1) && loc.userFields.user1.length) {
         //div.appendChild (document.createElement ('br'));
         //div.appendChild (document.createTextNode (loc.userFields.user1));
     //}
	 
}

//this function is used to display the address in the single line format
function mq_display_address_location_single_line(container, loc, image, width, height, label) {
    var bSpace=false;

    if (arguments.length < 6)
        label = '';

    if (!mq_ParamExists(loc))
        return;

    var div = createDiv (container, '', '');

    if (image != "")
        createImg (div, "/images/" + image, width, height, '', '', 'address icon');

    if (label != "")
        div.appendChild (document.createTextNode (label + ' '));

    if (mq_ParamExists(loc.address) && loc.address.length)
        div.appendChild (document.createTextNode (loc.address + " "));

    if (mq_ParamExists(loc.city) && loc.city.length)
        div.appendChild (document.createTextNode (loc.city + " "));

    if (mq_ParamExists(loc.stateProvince) && loc.stateProvince.length) {
        div.appendChild (document.createTextNode (loc.stateProvince));
        bSpace=true;
    }
    if (mq_ParamExists(loc.postalCode) && loc.postalCode.length) {
        if(bSpace)
        {
            div.appendChild (document.createTextNode (" "));
        }
        div.appendChild (document.createTextNode (loc.postalCode));
    }
    if (mq_ParamExists(loc.country) && loc.country.length) {
        if(bSpace) {
            div.appendChild (document.createTextNode (" "));
        }
        div.appendChild (document.createTextNode (loc.country));
    }
}

//function used to format a number (num) to x(dec) decimal places
function formatNumber(num,dec) {
   return Math.floor(num * Math.pow(10,dec))/Math.pow(10,dec);
}

//function displays the time in format x hours, x.xx minutes or x.xx minutes
function mq_display_time(totalTime) {
   var newTime;
   // more than a minute
   if(totalTime > 3600)
   {
      newTime = totalTime/3600;
      var result = (" " + Math.floor(newTime) + " hours,");
      newTime = (totalTime/60)%60;
      result += (" " + Math.floor(newTime) + " minutes");
      return result;
   }
   if(totalTime > 60)
   {
      newTime = totalTime/60;
      return (" " + Math.floor(newTime) + " minutes");
   }
}

//function used to display distance formated in a div with right alignment.
//outputs miles or kilometers with 2 digits of precision
function mq_display_distance(totalDistance) {
   return (" " + totalDistance.value + (totalDistance.units == "mi" ? " miles" : " kilometers"));
}

/*
 * functions to make non-dom compliant browsers behave
 */
function W3CDOM_Event(currentTarget) {
    this.currentTarget  = currentTarget;
    this.preventDefault = function() { window.event.returnValue = false }
    this.clientX = window.event.clientX;
    this.clientY = window.event.clientY;
    this.which = window.event.button;
    return this;
}

function add_listener (object, event, callback)
{
    if (object != null) {
        if (object.addEventListener) {  // w3c DOM
            object.addEventListener (event, callback, false);
        } else if (object.attachEvent) { // IE
            object.attachEvent ('on' + event, function () {callback (new W3CDOM_Event (object))});
        }
    }
}


