// UTILITIES FOR THIS SITE
// CREATED BY JESSE KNOWLES
// DATE : 2008.12.03

window.defaultStatus = "FreeShipping.ca";

/**************************** AUTOBLUR ****************************/
// HANDLE ONFOCUS AND ONBLUR ON AN INPUT FIELD
function autoBlur(_formId, _fieldId) {
	if(!_fieldId) var __fieldObj = document.getElementById(_formId);
	else var __fieldObj = document.getElementById(_formId)[_fieldId];
	var __initValue = (__fieldObj.value) ? __fieldObj.value : "";
	
	__fieldObj.onfocus = function() {
		if(__fieldObj.value == __initValue) __fieldObj.value = "";
	}
	__fieldObj.onblur = function() {
		if(__fieldObj.value == "") __fieldObj.value = __initValue;
	}
}

/**************************** ROLLOVER ****************************/

function imageSwap(_divId, _swapImage, _fadeOver, _fadeOverTime) {
	var t = this;
	var iex = document.all;
	t.__swapImage = _swapImage;
	var __fadeOver = _fadeOver;
	var __fadeOverTime = _fadeOverTime;
	if(!__fadeOverTime) __fadeOverTime = 0.3;


	var __divObj = document.getElementById(_divId);
	var __anchorObj = __divObj.getElementsByTagName("A")[0];	
	if(!__anchorObj) __anchorObj = __divObj;
	__anchorObj.innerHTML = "<img style='position:absolute;' src='"+t.__swapImage+"' />" + __anchorObj.innerHTML;
	var __imageObjSwap = __anchorObj.getElementsByTagName("IMG")[0];
	
	if(iex) __imageObjSwap.style.filter = 'alpha(opacity = 0)';
	else __imageObjSwap.style.opacity = 0;
	var __imageObj = __anchorObj.getElementsByTagName("IMG")[1];
	__imageObj.style.opacity = 1;
	
	if(__fadeOver) {
		var __fd = new fade (__imageObj);
		var __fdSwap = new fade (__imageObjSwap);
	}	
	
	__anchorObj.onmouseover = function() {
		if(__fadeOver) { 
			__fdSwap.fadeIn(__fadeOverTime);
			__fd.fadeOut(__fadeOverTime); 
		}
		else {
			if(iex) __imageObjSwap.style.filter = 'alpha(opacity = 100)';
			else __imageObjSwap.style.opacity = 1;
			if(iex) __imageObj.style.filter = 'alpha(opacity = 0)';
			else __imageObj.style.opacity = 0;
		}
	}	
	__anchorObj.onmouseout = function() {
		if(__fadeOver) { 
			__fdSwap.fadeOut(__fadeOverTime);
			__fd.fadeIn(__fadeOverTime); 
		}else{
			if(iex) __imageObjSwap.style.filter = 'alpha(opacity = 0)';
			else __imageObjSwap.style.opacity = 0;
			if(iex) __imageObj.style.filter = 'alpha(opacity = 100)';
			else __imageObj.style.opacity = 1;
		}
	}
}

/**************************** SHOW/HIDE MODULE ****************************/

function showHideModule(_modId, _hide, _topName, _hideText) {
	var t = this;
	var __cookieId = _modId;
	// GET COOKIE
	var ck = getCookie(__cookieId);
	var __isHidden
	if(ck != null) { __isHidden = (ck == "true") ? true : false; }
	else __isHidden = (_hide) ? true : false;
	var __module = document.getElementById(_modId);
	var __top = (_topName) ? document.getElementById(_topName) : __module.getElementsByTagName("DIV")[0];
	var __hideBtnDiv = __top.getElementsByTagName("DIV")[0];
	var __hideBtn = __top.getElementsByTagName("A")[0];
	var __totalHeight = __module.offsetHeight;
	var __topHeight = __top.offsetHeight;
	var __hideTxt = (_hideText) ? _hideText : 'Hide';
	var __tw;
	
	t.doToggle = function() {
		toggleHiddenSetting();
		setText();
		setSize();
	}
	
	var init = function() {
		setText();
		if(__isHidden) __module.style.height = __topHeight+"px";
		__hideBtn.href = "javascript:free();";
		// SET COOKIE
		setCookie(__cookieId, __isHidden, 1, "/");
	}
	
	__hideBtn.onmousedown = function() {
		t.doToggle();
	}
	
	var toggleHiddenSetting = function() {
		if(__isHidden) __isHidden = false;
		else __isHidden = true;
		// SET COOKIE
		setCookie(__cookieId, __isHidden, 1, "/");
	}
	
	var setText = function() {
		if(__isHidden) {
			__hideBtn.innerHTML = "Show";
		}else{
			__hideBtn.innerHTML = __hideTxt;
		}
	}
	
	var setSize = function() {
		if(__isHidden) {
			__tw = new Tween(__module.style,'height',Tween.regularEaseOut,__totalHeight,__topHeight,0.5,'px'); __tw.start();
			//__module.style.height = __topHeight+"px";
		}else{
			__tw = new Tween(__module.style,'height',Tween.regularEaseOut,__topHeight,__totalHeight,0.5,'px'); __tw.start();
			//__module.style.height = __totalHeight+"px";
		}
	}
	init();
}

/**************************** BLUR ANCHORS ****************************/

function blurAnchors(){
	if(document.getElementsByTagName){
		var a = document.getElementsByTagName("a");
		for(var i = 0; i < a.length; i++){
		  	a[i].onfocus = function(){this.blur()};
		}
	}
}
window.onload = blurAnchors;


/**************************** DATA CLEANUP ****************************/
// avoid data containing illegal characters
function escape(_data) {
	return encodeURIComponent(_data);
}



/**************************** SET MERCHANT CODE ****************************/

function setmerch(urlx){
    neww = window.open(urlx,'newwin','menubar,resizable,height=480,width=640,left=400,top=0,scrollbars=yes,location=no,toolbar=yes');		
    neww.blur();
    window.focus(); 
    if(neww.closed){
    	neww = window.open(urlx,'newwin','menubar,resizable,height=480,width=640,left=400,top=0,scrollbars=yes,location=no,toolbar=yes');
    	neww.blur();
    	window.focus();
    }else{
    	neww.location.href = urlx;
    	neww.blur();
    	window.focus();
    }
    return true;
}

/**************************** SHOWS A FORM ERROR ****************************/

function showFormError(_msgDiv, _btnDiv, _msg) {
 	var t = this;
	// display message
	_msgDiv.innerHTML = _msg;
	var fdInfo = new fade(_msgDiv);
	if(_btnDiv) {
		var fdBtn = new fade(_btnDiv);
		fdBtn.fadeOut(0.5);
	}
	
	// remove message from form
    fdInfo.onComplete = function() {
    	fdInfo.stop();
    	fdInfo.fadeOut(1);
    	if(_btnDiv) fdBtn.fadeIn(1.5);
    	if(_btnDiv) _btnDiv.style.visibility = "visible";
    	fdInfo.onComplete = t.onComplete();
    }	
		
	fdInfo.fadeIn(3);
	_msgDiv.style.visibility = "visible";
}

// possible types [ error , warning , notice ]
function setFeedback(_type, _msg) {
	var obj = document.getElementById('feedback');
	
	// CHANGE INNERHTML
	obj.innerHTML = '<p class="alert '+_type+'" id="feedbackDisplay">'+_msg+'</p>';
	
	// TWEEN IT IN
	opacityTween = new OpacityTween(obj,Tween.regularEaseOut, 0, 100, 1);
	opacityTween.start();
}

function getCheckboxCSV(_formName, _fieldName) {
	if(!document.forms[_formName]) return;
	var objCheckBoxes = document.forms[_formName].elements[_fieldName];
	if(!objCheckBoxes) return;
	if(objCheckBoxes.length == undefined) objCheckBoxes = new Array(objCheckBoxes);
	var count = objCheckBoxes.length;
	if(!count)
		return;
	else
		// create the csv string
		var csvString = "";
		var checkedCount = 0;
		for(var i = 0; i < count; i++) {
			if(objCheckBoxes[i].checked) {
				if(checkedCount != 0) csvString += ",";
				csvString += objCheckBoxes[i].value;
				checkedCount++;
			}
		}
		return csvString;
}

function countCheckedVals(_formName, _fieldName) {
	if(!document.forms[_formName]) return;
	var objCheckBoxes = document.forms[_formName].elements[_fieldName];
	if(!objCheckBoxes) return;
	if(objCheckBoxes.length == undefined) objCheckBoxes = new Array(objCheckBoxes);
	var count = objCheckBoxes.length;
	if(!count)
		return;
	else
		// create the csv string
		var checkedCount = 0;
		for(var i = 0; i < count; i++) {
			if(objCheckBoxes[i].checked) checkedCount++;
		}
		return checkedCount;
}


// FILTER LISTS
function filter() {

	// ********************
	// LOCAL VARIABLES
	var t = this;
	var __valuesAry = new Array();

	// ***************************************
	// PUBLIC FUNCTIONS	
	t.addValue = function(_name, _val) {
		for(var i in __valuesAry) {
			if(__valuesAry[i].name == _name) {
				if(__valuesAry[i].val == _val && _name == "o") swapDir(); break;
			}
		}
		for(var i in __valuesAry) {
			if(__valuesAry[i].name == _name) {
				__valuesAry.splice(i,1); break;
			}
		}
		__valuesAry.push({name:_name,val:_val});
	}
	
	t.doFilter = function() {
		var stg = "?";
		for(var i in __valuesAry) {
			stg += __valuesAry[i].name + "=" + __valuesAry[i].val;
			if(i < __valuesAry.length-1) stg += "&";
		}
		redirect(stg);
	}
	
	t.addDoFilter = function(_name, _val) {
		t.addValue(_name, _val);
		t.doFilter();
	}

	// ***************************************
	// PRIVATE FUNCTIONS
	function init() {
		var query = window.location.search.substring(1);
		var vars = query.split("&");
		for (var i=0;i<vars.length;i++) {
			var pair = vars[i].split("=");
			__valuesAry.push({name:pair[0],val:pair[1]});
		}
	}
	
	function swapDir() {
		var dir = "DESC";
		for(var i in __valuesAry) {
			if(__valuesAry[i].name == 'dir') {
				dir = (__valuesAry[i].val == "DESC") ? "ASC" : "DESC";
				break;
			}
		}
		t.addValue('dir', dir);
	}
	
	init();
}

function doFilterVals(_frm) {
	var stg = "";
	var els = new Array();
	for(var i in _frm.elements) {
		if(_frm.elements[i].value && _frm.elements[i].name != 'keyword' && _frm.elements[i].name != 'submit' && _frm.elements[i].value != 'none') 
			els.push(_frm.elements[i]);
	}
	var len = els.length;
	for(var i=0;i<len;i++) {
		var el = els[i];
		stg += els[i].name + "," + els[i].value;
		if(i < len-1) stg += "|";
	}
	//alert(stg);
	filter.addValue('k',_frm.keyword.value);
	filter.addDoFilter('f',stg);
	return false;
}
function setAllCheckBoxes(selectBox, FormName, FieldName) {
	var CheckValue = selectBox.checked;
	if(!document.forms[FormName])
		return;
	var objCheckBoxes = document.forms[FormName].elements[FieldName];
	if(!objCheckBoxes)
		return;
	var countCheckBoxes = objCheckBoxes.length;
	if(!countCheckBoxes)
		objCheckBoxes.checked = CheckValue;
	else
		// set the check value for all check boxes
		for(var i = 0; i < countCheckBoxes; i++)
			objCheckBoxes[i].checked = CheckValue;
}

function redirect(_url) {
	location.href=_url;
}
function setEditability(_webroot, _val) {
	var req = ajaxCall(_webroot, "ajax.setEditable.php", 'editable='+_val);
	req.callback = function(_resp) { alert('Editability on the front-end has been changed'); };
}

function free() {
}