var reviewstart=0;
var revcnt=0;

var jj=0;

jQuery.fn.matchColumns = function() {
	var max_bottom = 0;
	this.each(function() {
		jQuery(this).css('minHeight', '');
		var bottom = jQuery(this).position().top + jQuery(this).height();
		if (bottom > max_bottom) {max_bottom = bottom;}
	});
	this.each(function() {
		jQuery(this).css('minHeight', max_bottom - jQuery(this).position().top);
	});
	return this;
};

function isSafari() {
	if (navigator && navigator.vendor) {
		var x = navigator.vendor.toLowerCase();
		if (x.indexOf("apple") >= 0) {
			return true;
		}
	}
	return false;
}

function isiPhone() {
	if (navigator && navigator.userAgent) {
		var x = navigator.userAgent.toLowerCase();
		if (x.indexOf("iphone") >= 0) {
			return true;
		}
	}
	return false;
}

function dazEvent(target, event, action, forceOnload) {
	if (!(target||false)) {
		return false;
	}
	if (target == window && event == 'load' && typeof(forceOnload) == 'undefined') {
		$().ready(action);
		return true;
	}
	if (window.opera && window.opera.addEventListener && target && target.attachEvent) {
		target.attachEvent('on' + event, action);
		return true;
	} else if (target && target.addEventListener) {
		if (event == 'scroll') {event = 'DOMMouseScroll';}
		target.addEventListener(event, action, true);
		return true;
	} else if (target && target.attachEvent) {
		if (target == window && event != 'load') {
			document.attachEvent('on' + event, action);
			return true;
		} else {
			target.attachEvent('on' + event, action);
			return true;
		}
	}
	return false;
}

function concrtAddingZ() {
	cartAdding=0;
}

function concart_open(event) {
	var constcart = getDiv("cartslide");
	var carthdr = getDiv("carthdr");
	var pos = getPosition("carthdr");
	if (cartLoaded < 1) {
		cartLoaded = 1;
		if (!!(concart_url||false) && concart_url != '') {
			concart_fetch(concart_url);
		}
	}
	var main = getDiv("main");
	if (constcart.style.display != 'none') {
		concart_close(event);
	} else {
		$("#cartslide").fadeTo(1, 0).fadeTo(750, 1);
		//dojo.lfx.html.fade(constcart, {start: 1, end: 0},   1,  1).play();
		//dojo.lfx.html.fade(constcart, {start: 0, end: 1}, 750, 50).play();
	}
	if (event && event.stopPropagation) {event.stopPropagation();}
	if (event && event.preventDefault) {event.preventDefault();}
	hideFlash();
	setTimeout("dazSetBlockStyle('cartslide');", 3);
}

function concart_close(event) {
	var constcart = getDiv("cartslide");
	if (event && event.stopPropagation) {event.stopPropagation();}
	if (event && event.preventDefault) {event.preventDefault();}
	if (constcart.style.display == 'block') {
		$("#cardslide").fadeTo(375, 0);
		//dojo.lfx.html.fade("cartslide", {end: 0}, 375, 25).play();
	}
	setTimeout("dazSetNoneStyle('cartslide');", 376);
	setTimeout("showFlash();", 380);
}

function hideFlash() {
	var flash = document.getElementsByTagName("div");
	var i;
	var x = '';
	for (i = 0;i < flash.length;i++) {
		x += flash[i].className;
		if (flash[i].className.match(/.*flashcont.*/)) {
			flash[i].style.visibility='hidden';
		}
	}
}

function showFlash() {
	var flash = document.getElementsByTagName("div");
	var i;
	for (i = 0;i < flash.length;i++) {
		if (flash[i].className.match(/.*flashcont.*/)) {
			flash[i].style.visibility='visible';
		}
	}
}

var cartDivCount = 0;
var cartTopDiv = 1;
var cartMoving = 0;
var cartAdding = 0;
var cartLoaded = 0;
var lboxHasFocus = 0;
var colorNorm, colorDark;

function concart_load(data) {
	var slider = getDiv("cc_item_slide");
	var subt = getDiv("const_cart_subt");
	var display = 0;
	if (!(slider || false))
		return;
	if (arguments.length>1) {
		display = arguments[1];
	}
	if (display) {
		cartAdding = 1;
	}
	var idx, myprice, name, img, url;
	var obj;
	var newDiv;
	var lastDiv;
	oDomDoc = (new DOMParser()).parseFromString(data, "text/xml");
	var result = oDomDoc.getElementsByTagName("resultset");
	if (result.length < 1) {
		slider.innerHTML = "<div class='padAll5' style='text-align: left'><b><br />Quick Cart Temporarily Unavabile.<br /><br /><a href='https://" + _dazHst + "/i.x/account/showcart/-/'>View Cart</a></b></div>";
		return;
	}
	var res = result[0].getElementsByTagName("resmsg")[0].firstChild.nodeValue;
	var myt = result[0].getElementsByTagName("myt")[0].firstChild.nodeValue;
	if (res != '1') {
		slider.innerHTML = "<div class='padAll5' style='text-align: left'><b><br />Quick Cart Temporarily Unavabile.<br /><br /><a href='https://" + _dazHst + "/i.x/account/showcart/-/'>View Cart</a></b></div>";
		return;
	}
	var resobj = result[0].getElementsByTagName("resobj");
	if (resobj.length < 1) {
		slider.innerHTML = "<b>You have no items in your cart.</b>";
		return;
	}
	var cchdr = getDiv("carthdr");
	cchdr.style.display='block';
	if (resobj.length>3) {
		var foo = getDiv("constcart_updown");
		foo.style.display='block';
	}
	var olddivs = slider.getElementsByTagName("div");
	var x = olddivs.length;
	for (i = 0; i < x; i++) {
		slider.removeChild(olddivs[0]);
	}
	cartLoaded = 1;
	cartDivCount=0;
	for (i = 0; i < resobj.length; i++) {
		cartDivCount++;
		cartTopDiv=1;
		setTimeout(adjustBlockCC, 250);
		obj = resobj[i];
		idx = obj.getElementsByTagName("idx")[0].firstChild.nodeValue;
		myprice = obj.getElementsByTagName("myprice")[0].firstChild.nodeValue;
		name = obj.getElementsByTagName("name")[0].firstChild.nodeValue;
		img = obj.getElementsByTagName("img")[0].firstChild.nodeValue;
		url = obj.getElementsByTagName("url")[0].firstChild.nodeValue;
		newDiv = document.createElement("div");
		newDiv.setAttribute("class", "ccelem");
		newDiv.className = "ccelem";
		newDiv.setAttribute("id", "cc_elem_" + cartDivCount);
		newDiv.innerHTML = '<img class="padAll5" src="' + _dazCache + img + '" alt="' + name
			+ '" height="65" width="50" align="left" border="0" /><br />'
			+ name + '<br />' + myprice;
		dazEvent(newDiv, "click", jumpToTgt);
		newDiv.setAttribute("tgturl", url);
		newDiv.jumpToTgt = jumpToTgt;
		dazEvent(newDiv, "mouseover", concrtAddingZ);
		dazEvent(newDiv, "mouseover", ccLiveLink);
		dazEvent(newDiv, "mouseout", ccDeadLink);
		if (i>2) {
			newDiv.setAttribute("isHiding", 1);
			newDiv.style.display='none';
		}
		slider.appendChild(newDiv);
		lastDiv=newDiv;
	}
	if (cartAdding) {
//		if(!colorNorm || !colorDark){
	//		if (_dzcT=='daz_drkgry' || _dzcT=='daz_drkblue') {
	//			colorNorm = new dojo.gfx.color.Color(0,0,0);
	//			colorDark = new dojo.gfx.color.Color(51,51,51);
	//		} else {
	//			colorNorm = new dojo.gfx.color.Color(255,255,255);
	//			colorDark = new dojo.gfx.color.Color(160,160,160);
	//		}
//		}
		if (getDiv("cc_elem_1").getAttribute("midfade") < 1) {
			setTimeout(function() {
				var foo = (_dzcT=='daz_drkgry'||_dzcT=='daz_drkblue' ? "#343434" : "#A0A0A0");
				$("#cc_elem_1").animate({
					"backgroundColor": foo
				}, 1200);
			}, 500);
			setTimeout(function() {
				var foo = (_dzcT=='daz_drkgry'||_dzcT=='daz_drkblue' ? "#000000" : "#FFFFFF");
				$("#cc_elem_1").animate({
					"backgroundColor": foo
				}, 1200);
			}, 1700);
			//setTimeout("dojo.lfx.propertyAnimation('cc_elem_1', {'background-color':{start:colorNorm, end:colorDark}}, 1200, 25).play()",  500);
			//setTimeout("dojo.lfx.propertyAnimation('cc_elem_1', {'background-color':{start:colorDark, end:colorNorm}}, 1200, 25).play()", 1700);
			getDiv("cc_elem_1").setAttribute("midfade", 1);
			setTimeout("getDiv('cc_elem_1').setAttribute('midfade', 0)", 3000);
		}
		setTimeout("ccCondClose()", 5000);
	}
	var ccc = getDiv("cartTotal");
	ccc.innerHTML = cartDivCount + " items in cart";
	$("#cc_movedown").css({opacity: 0.25});
	//dojo.lfx.html.fade("cc_movedown", {end: ".25"}, 1, 1).play();
	var hTM = (getDiv('cc_item_slide').getAttribute("CurY")||0);
	if (hTM == 0 && !isSafari())
		hTM = 5;
	dazRelMoveY("cc_item_slide", (-1 * hTM), 1, 1);
	subt.innerHTML = '<b>' + myt + '</b>';
	if (display) {
		setTimeout("concart_open()", 100);
	}
}

function ccCondClose() {
	if (cartAdding) {
		concart_close();
	}
}

function ccLiveLink(e) {
	var caller = getCaller(e);
	if (caller.parentNode && caller.parentNode.className == 'ccelem')
		caller = caller.parentNode;
	if (caller.getAttribute && caller.getAttribute("isHiding") == 1)
		return;
	ccMakeLive(caller);
}

function ccMakeLive(caller) {
	caller.style.background=(_dzcT=='daz_drkgry' || _dzcT=='daz_drkblue'?'#333':'#EEE');
	caller.style.cursor='pointer';
}

function ccDeadLink(e) {
	var caller = getCaller(e);
	if (caller.parentNode && caller.parentNode.className == 'ccelem')
		caller = caller.parentNode;
	ccMakeDead(caller);
}

function ccMakeDead(caller) {
	if (!(caller||false))
		return;
	if (!(caller.style||false))
		return;
	caller.style.background=(_dzcT=='daz_drkgry' || _dzcT=='daz_drkblue'?'#000':'#FFF');
	caller.style.cursor='auto';
}

function jumpToTgt(e) {
	var caller = getCaller(e);
	if (caller.getAttribute("tgturl") == null && caller.parentNode && caller.parentNode.getAttribute("tgturl") != null) {
		caller = caller.parentNode;
	}
	if (caller.getAttribute("isHiding")==1)
		return;
	window.location = caller.getAttribute("tgturl");
}

// http://adomas.org/javascript-mouse-wheel/
function concrtScrl(e) {
	if (e.detail) {
		if (e.detail > 0) {
			concrtMoveUp(e);
		} else if (e.detail < 0) {
			concrtMoveDown(e);
		}
	}
}

function concrtMoveUp(e) {
	if (e.stopPropagation) {e.stopPropagation();}
	if (e.preventDefault) {e.preventDefault();}
	e.returnValue=false;
	if (cartDivCount < 3)
		return;
	if (cartTopDiv+3 > cartDivCount)
		return;
	dazRelMoveY("cc_item_slide", -90, 500, 25);
	//dojo.lfx.html.fade("cc_movedown", {end: 1}, 200, 10).play();
	$("#cc_movedown").fadeTo(200, 1);
	cartTopDiv++;
	if (cartTopDiv+3 > cartDivCount) {
		//dojo.lfx.html.fade("cc_moveup", {end: ".25"}, 200, 10).play();
		$("#cc_moveup").fadeTo(200, 0.25);
	}
	setTimeout(adjustBlockCC, 10);
}

function concrtMoveDown(e) {
	if (e.stopPropagation) {e.stopPropagation();}
	if (e.preventDefault) {e.preventDefault();}
	e.returnValue=false;
	if (cartDivCount < 3)
		return;
	if (cartTopDiv == 1)
		return;
	dazRelMoveY("cc_item_slide", 90, 500, 25);
	cartTopDiv--;
	if (cartTopDiv == 1) {
		//dojo.lfx.html.fade("cc_movedown", {end: ".25"}, 200, 10).play();
		$("#cc_movedown").fadeTo(200, 0.25);
	}
	//dojo.lfx.html.fade("cc_moveup", {end: 1}, 200, 10).play();
	$("#cc_moveup").fadeTo(200, 1);
	setTimeout(adjustBlockCC, 400);
}

function adjustBlockCC() {
	var slide = getDiv("cc_item_slide");
	if (!(slide||false))
		return;
	var items = slide.getElementsByTagName("div");
	var item;
	for (i = 0; i<items.length; i++) {
		if ((cartTopDiv-1)>i) {
			items[i].setAttribute("isHiding", 1);
			ccMakeDead(items[i]);
		} else if (i>(cartTopDiv+1)) {
			items[i].setAttribute("isHiding", 1);
			ccMakeDead(items[i]);
			items[i].style.display='none';
		} else {
			items[i].setAttribute("isHiding", 0);
			items[i].style.display='block';
		}
	}
}

function concart_fetch(url) {
	var itemdiv = getDiv("cc_items");
	var slider = getDiv("cc_item_slide");
	var display;
	if (!(itemdiv || false))
		return;
	if (arguments.length>1) {
		display = arguments[1];
	} else {
		display = 0;
	}
	
	$.ajax({
		url: url,
		dataType: "text",
		type: "POST",
		cache: false,
		success: function(data) {
			concart_load(data,display);
		},
		error: function(XMLHttpRequest, textStatus, errorThrown) {
			slider.innerHTML = "<div class='padAll5' style='text-align: left'><b><br />Quick Cart Temporarily Unavabile.<br /><br /><a href='https://" + _dazHst + "/i.x/account/showcart/-/'>View Cart</a></b></div>";
		},
		timeout: 4000
	});
}

function dazAddCart(e) {
	var img = getCaller(e);
	var caller = img;
	if (typeof(caller) != "object")
		return;
	if (e.stopPropagation) {e.stopPropagation();}
	if (e.preventDefault) {e.preventDefault();}
	e.returnValue=false;
	if (caller.nodeName.toLowerCase() == "img")
		caller = caller.parentNode;
	if (caller.form)
		caller = caller.form;
	if (!caller.href && caller.parentNode.href)
		caller = caller.parentNode;

	var itemnum;
	if (caller.href || caller.parentElement.href) {
		var s = (caller.parentElement && caller.parentElement.href)?caller.parentElement.href:caller.href;
		var i;
		i = s.indexOf("item=");
		i+=5;
		if (i<0) {
			if (!!caller.href) {
				window.location = caller.href;
				return;
			} else if (!!caller.parentElement.href) {
				window.location = caller.parentElement.href;
				return;
			} else {
				caller.submit();
				return;
			}
		}
		itemnum = s.substr(i,(s.length-i));
		if (itemnum.indexOf("&") > 0) {
			itemnum = itemnum.substr(0,itemnum.indexOf("&"));
		}
	} else if (caller.action||false) {
		var i;
		itemnum=0;
		for (i = 0; i<caller.length;i++) {
			if (caller.elements[i].name == 'item') {
				itemnum=caller.elements[i].value;
			}
		}
	} else {
		if (!!caller.href) {
			window.location = caller.href;
			return;
		} else {
			caller.submit();
			return;
		}
	}

	var commercial = (_dazIsCm||0);
	if (commercial) {
		var url = _dazHP + '://' + _dazHst + '/i.x/shop/dxptitle/-/?item=' + itemnum;
		stdpop(url, 0, 0, getPosition(this)[0], getPosition(this)[1], 'no');
		return;
	}

	var x = img;
	var y = caller;

	$.ajax({
		url: "http://"+(_dazHst||"www.daz3d.com")+"/i.x/dxdata/dxaddcart/" + (_dazSid||"-") + "/",
		dataType: "text",
		type: "POST",
		data: {
			item: itemnum
		},
		cache: false,
		success: function(data) {
			if (!dazAddCartGo(x,data)) {
				if (y.href) {window.location = y.href;}
				else if (y.submit) {y.submit();}
			}
		},
		error: function(XMLHttpRequest, textStatus, errorThrown) {
			if (y.href) {window.location = y.href;}
			else if (y.submit) {y.submit();}
		},
		timeout: 4000
	});

	return false;
}


function dazAddCartGo(img,data) {
	var oDomDoc = (new DOMParser()).parseFromString(data, "text/xml");
	var result = oDomDoc.getElementsByTagName("resultset");
	var resmsg = result[0].getElementsByTagName("resmsg")[0].firstChild.nodeValue;
	if (resmsg == 0) {
		return 0;
	}
	if (img.src) {
		img.src = _dazCSS + "/images/buttons/incart_lt_gry.png";
		if (img.parentNode && typeof(img.parentNode) == "a") {
			img.parentNode.href="#";
		}
	}
	if (concart_url && concart_url != '') {
		concart_fetch(concart_url, 1);
	}
	return true;
}

function closeLogin() {
	var lbox = getDiv("login_box_popup");
	if (typeof(lbox) != 'undefined') {
		if (!!(lbox||false)) {
			lbox.style.display='none';
			showFlash();
		}
	}
}

var lboxes = new Array();
function popupLogin(e) {
	var lbox = getDiv("login_box_popup");

	if (lboxes.length <= 0) {
		var tmp = document.getElementsByTagName("div");
		for (var i = 0; i < tmp.length; i++) {
			if (tmp[i].id == "login")
				lboxes.push(tmp[i]);
		}
	}
	if (lboxes.length > 1)
		return;
	else
		var x = lboxes[0];

//	var x = document.getElementsByClassName("TDsignin");
//	if (x.length > 1)
//		return;

	if (typeof(lbox) != 'undefined') {
		if (!!(lbox||false)) {
			if (e && e.preventDefault) {e.preventDefault();}
			if (e && e.stopPropagation) {e.stopPropagation();}
			if (e) {e.returnValue=false;}
			lbox.style.display='block';
			lbox.style.visibility='visible';
			hideFlash();
			lbox.style.zindex='121';
			lbox.style.top = "80px";
			//lbox.style.left = "300px";
			var x = getDiv("lbcl1");
			if (x && x.style) {
				x.style.display='block';
			}
			x = getDiv("lbcl2");
			if (x && x.style) {
				x.style.display='block';
			}
			lbox.style.marginLeft= ((document.body.offsetWidth - lbox.offsetWidth) / 2) + 'px';
			lbox.style.marginRight= ((document.body.offsetWidth - lbox.offsetWidth) / 2) + 'px';
			//lbox.style.marginLeft='auto';
			correctPNG();
			return;
		}
	}

	if (e && e.preventDefault) {e.preventDefault();}
	if (e && e.stopPropagation) {e.stopPropagation();}
	if (e) {e.returnValue=false;}
	lbox = document.createElement("div");
	lbox.setAttribute("id", "login_box_popup");
	document.body.appendChild(lbox);
	lbox.style.display='block';
	lbox.style.visibility='visible';
	//lbox.style.position='absolute';
	lbox.style.zindex='121';
	lbox.style.top = "80px";
	//lbox.style.left = "300px";
	lbox.style.display='none';
	lbox.style.visibility='hidden';

	$.ajax({
		url: _dazHP+"://"+(_dazHst||"www.daz3d.com")+"/i.x/login/dxloginbox/" + (_dazSid||"-") + "/?tgtop="+_dazOp+"&tgtfr="+_dazFr+"&tgtsec="+_dazSec+"&tgtarg="+_dazArgs,
		type: "GET",
		cache: false,
		success: function(data) {
			writeDiv("login_box_popup", data);
			setTimeout('popupLogin();',1);
		},
		error: function(XMLHttpRequest, textStatus, errorThrown) {
			window.location = "http://"+(_dazHst||"www.daz3d.com")+"/i.x/login/0/" + (_dazSid||"-") + "/";
		},
		timeout: 4000
	});

}

//Handle (pre)caching of images (most commonly used in mouseovers)
var cacheImgs = new Array();
function cacheImg(src) {
	var i = cacheImgs.length;
	cacheImgs[i] = new Image();
	cacheImgs[i].src = src;
}

function hdrImgSwap(id, act) {
	var div = getDiv(id);
	if (!(div||false)) return;
	if (!(div.getElementsByTagName||false)) return;
	var imgs = div.getElementsByTagName("img");
	for (i = 0; i < imgs.length; i++) {
		if (!imgs[i].getAttribute("origimg")) imgs[i].setAttribute("origimg", imgs[i].src);
		if (!imgs[i].getAttribute("overimg")) imgs[i].setAttribute("overimg", imgs[i].src.replace(/(.*)_[1-3]\.(png|gif)/, "$1_2.$2"));
		imgs[i].src = (act == 1) ? imgs[i].getAttribute("overimg") : imgs[i].getAttribute("origimg");
	}
}

function checkChangeDef() {
	var box = getDiv("mdefbox");
	var realmakedef = getDiv("realmakedef");
	if (typeof(realmakedef) == 'object') {
		realmakedef.value = 'on';
	}
	if (!(_dazUid||false) || _dazUid <= 0) {
		var m = getDiv("ccDefM");
		m.className = "bodyRed10";
		m.innerHTML = "You must be logged in to save your settings.";
		box.checked = false;
	} else {
		var df = getDiv("dprefFrm");
		if (!!(df||false)) {
			var m = getDiv("ccDefM");
			m.className="bodyRed10";
			m.innerHTML = "Saving...";
			box.disabled = true;
			var qs = $('#dprefFrm').formSerialize();
			$.ajax({
				url: '/i.x/shop/dxbrowse_prefs',
				data: qs,
				type: 'POST',
				success: function(data) {
					box.checked = false;
					box.disabled = false;
					m.className = "bodyGry10";
					m.innerHTML = "Saved.";
					var origColor = m.style.color;
					m.style.color = '#ff6';
					setTimeout(function() {
						m.style.color = origColor;
						m.innerHTML = "Save settings";
					}, 3000);
				},
				error: function(XMLHttpRequest, textStatus, errorThrown) {
					alert('Could not save settings.');
				},
				timeout: 4000
			});
		}
	}
}

function reviewReplace(item, dir) {
	if (!(reviewstart||false)) {
		reviewstart=0;
	}
	if (revcnt==0) {
		var revc = getDiv("revcnt");
		revcnt = revc.innerHTML;
	}
	reviewstart=(dir?reviewstart+2:(reviewstart>2?reviewstart-2:0));
	if (reviewstart>=revcnt-1) {
		reviewstart=revcnt-2;
	}
	$.ajax({
		url: _dazHP+"://"+_dazHst+"/shop/reviews/"+_dazSid+"/?dx=1&item="+item+"&reviewstart="+reviewstart,
		dataType: "text/plain",
		type: "POST",
		cache: false,
		success: function(data) {
			//dojo.lfx.html.fade("reviewbox", {end: "0.0"}, 1, 1).play();
			//setTimeout(function () {dojo.lfx.html.fade("reviewbox", {end: "1.0"}, 300, 20).play();},5);
			//clearDiv('reviewbox');
			//writeDiv('reviewbox', data);
			$("#reviewbox").fadeOut("slow", function() { $("#reviewbox").html(data).fadeIn("slow") });
		},
		error: function(XMLHttpRequest, textStatus, errorThrown) {
		},
		timeout: 10000
	});
	if (reviewstart>0) {
		//dojo.lfx.html.fade("reviewleftlink", {end: "1.0"}, 300, 20).play();
		$("#reviewleftlink").fadeTo(300, 1.0);
	} else {
		//dojo.lfx.html.fade("reviewleftlink", {end: "0.3"}, 300, 20).play();
		$("#reviewleftlink").fadeTo(300, 0.3);
	}
	if (reviewstart+2<revcnt) {
		//dojo.lfx.html.fade("reviewrightlink", {end: "1.0"}, 300, 20).play();
		$("#reviewrightlink").fadeTo(300, 1.0);
	} else {
		//dojo.lfx.html.fade("reviewrightlink", {end: "0.3"}, 300, 20).play();
		$("#reviewrightlink").fadeTo(300, 0.3);
	}
	getDiv("reviewbox").focus();
}

function software_popUp(file, width, height) {
	if (file.match(".mov$")) {
		url = _dazHP + "://" + _dazHst + "/i.x/" + _dazSec + "/vids/" + _dazSid + "/?f=" + file + "&vop=" + _dazOp + "&vfr=" + _dazFr + "&w=" + width + "&h=" + height;
		width  += 30;
		height += 40;
	} else if (file.match(".php$")) {
		url = _dazHP + "://" + _dazHst + "/i.x/" + _dazSec + "/" + _dazOp + "/" + _dazSid + "/popup?s=" + _dazFr + "&p=" + file;
		width  = (width||800);
		height = (height||600);
	} else {
		url = _dazCache + "/sections/" + _dazSec + "/" + _dazOp + "/images/" + _dazFr + "/popup/" + file;
		width  += 30;
		height += 10;
	}
	window.open(url, "popUp", "scrollbars=yes,resizable=yes,width=" + width + ",height=" + height + ",status=no,location=no,toolbar=no");
}

function setCookie(name,value,days) {
	if (days) {
		var dt = new Date();
		dt.setTime(dt.getTime()+(days*24*60*60*1000));
		var expiry = " expires="+dt.toGMTString()+";";
	} else {
		var expiry = "";
	}
	document.cookie = name + "=" + value + ";" + expiry + " domain=.daz3d.com; path=/";
}

function getCookie(name) {
	var cookies = document.cookie.split(';');
	for (var i = 0; i<cookies.length; i++) {
		var cookie = cookies[i];
		while (cookie.charAt(0)==' ') cookie = cookie.substring(1,cookie.length);
		if (cookie.indexOf(name)==0) {
			return cookie.substring(name.length+1);
		}
	}
}

function getMouseX(e) {
	var x = 0;
	e = getCaller(e);
	if (e.pageX) {
		x = e.pageX;
	} else if (e.clientX)	{
		x = e.clientX + document.body.scrollLeft
			+ document.documentElement.scrollLeft;
	}
	return x;
}

function getMouseY(e) {
	var y = 0;
	e = getCaller(e);
	if (e.pageY) {
		y = e.pageY;
	} else if (e.clientY)	{
		y = e.clientY + document.body.scrollLeft
			+ document.documentElement.scrollLeft;
	}
	return y;
}

function dazAddCartGo(img,type,data,evt) {
  var oDomDoc = (new DOMParser()).parseFromString(data, "text/xml");
  var result = oDomDoc.getElementsByTagName("resultset");
  var resmsg = result[0].getElementsByTagName("resmsg")[0].firstChild.nodeValue;
  if (resmsg == 0) {
    return 0;
  }
  if (img.src) {
    img.src = _dazCSS + "/images/buttons/incart_lt_gry.png";
    if (img.parentNode && typeof(img.parentNode) == "a") {
      img.parentNode.href="#";
    }
  }
  if (concart_url && concart_url != '') {
    concart_fetch(concart_url, 1);
  }
  return true;
}


function getDiv(divid) {
	if (document.all) {
		layer = document.all[divid];
	} else if (document.getElementById) {
		layer = document.getElementById(divid);
	} else {
		return undefined;
	}
	return layer;
}

function stdpop(content, width, height, x, y) {
	var body = document.getElementsByTagName("body")[0];
	var pup = document.createElement('div');
	var pupparent = document.createElement('div');
	pupparent.setAttribute('class', 'padAll10 pupparent');
	pupparent.className = 'padAll10 pupparent';
	pupparent.appendChild(pup);
	var myid = Math.random()*100;
	myid = Math.floor(myid);
	myid = 'pup' + myid.toString();
	pupparent.style.zIndex = 200;
	pup.style.zIndex = 201;
	pupparent.style.display = 'block';
	pupparent.setAttribute('id', myid);
	pupparent.style.opacity = 0;
	pup.setAttribute('id', myid+'c');
	pup.setAttribute('class', 'stdpop');
	pup.className = 'stdpop';
	pup.style.overflow='hidden';
	body.appendChild(pupparent);
	if (width>0) {
		pup.style.width = width + "px";
	} else {
		width = pup.clientWidth;
	}
	if (height>0) {
		pup.style.height = height + "px";
	} else {
		height = pup.clientHeight;
	}
	var t = (y - (height/2) > 0 ? (y - (height/2)) : 0);
	var l = (x - (width/2) > 0 ? (x - (width/2)) : 0);
	$('#'+myid).css({position: 'absolute', top: t, left: l});
	pup.innerHTML = 'Loading...';
	var tgt;
	if (content.match("^http")) {
		tgt = content;
	} else {
		tgt = _dazHP+"://"+_dazHst+"/dxstatic/"+content+".php";
	}
	var toparg = arguments;
	$.ajax({
		url: tgt,
		dataType: "text",
		type: "POST",
		cache: false,
		success: function(data) {
			$(".stdpop>#projectselector").parent().remove();
			clearDiv(myid+'c');
			writeDiv(myid+'c', data);
			centerDivAt(myid, x, y);
			if (toparg.length < 6) {
				$(pup).bind("mouseout", function (e) {
					killEvent(e);
					return false;
				});
				$(pupparent).bind("mouseout", function (e) {
					$(this).fadeOut("normal", function() { $(this).remove() } );
					return false;
				});
			} else {
				$(pup).find(".closelink").show();
				$(pup).find(".close").bind("click", function (e) {
					$(pupparent).fadeOut("normal", function() { $(pupparent).remove() } );
					return killEvent(e);
				});
			}
			// sadly, focus events do not bubble.
			$("input.newtitle").unbind("focus.ccartp");
			$("select.projectselect").unbind("change.ccartp");
			$(".projectboxtitle a.whatsThis").bind("click", function (e) {
				$("#projectselector>.projectinfo").slideDown(function (e) {
					//alert($(pupparent).css("padding"));
					var pjx = getPosition(pupparent)[0];
					var pjy = getPosition(pupparent)[1];
					var bw = $(pupparent).height();
					var bh = $(pupparent).height();
					var sx = $(window)[0].scrollX;
					var sy = $(window)[0].scrollY;
					var wh = $(window).height();
					if (bh+pjy > sy+wh) {
						var x = getPosition(pup)[1];
						x = x + (sy+wh-bh-pjy);
						if (x>20) x=x-20;
						$(pupparent).animate({"top": x+"px"});
					}
				});
				killEvent(e);
			});
			$("input.newtitle").bind("focus.ccartp", function (e) {
     		$(".projectselect").children().attr("selected", false);
     		if ($(".newtitle").attr("value") == 'Enter Project Title') {
       		$(".newtitle").attr("value", "");
     		}
			});
			$("select.projectselect").bind("change.ccartp", function(e) {
				$(".newtitle").attr("value", "Enter Project Title");
    	});
		},
		error: function(XHRObj, textStatus, errorThrown) {
		},
		timeout: 10000
	});
	var t = (y - (pup.clientHeight/2) > 0 ? (y - (pup.clientHeight/2)) : 0);
	var l = (x - (pup.clientWidth/2) > 0 ? (x - (pup.clientWidth/2)) : 0);
	$('#'+myid).css({position: 'absolute', top: t, left: l});
	$('#'+myid).fadeTo("normal", 1);
	$('#'+myid).fadeIn();
}

function blockPropagation(e) {
	e = getCaller(e);
	if (e.stopPropagation) {e.stopPropagation();}
	if (e.preventDefault) {e.preventDefault();}
	e.returnValue=false;
	return false;
}

function killEvent(e) {
	if (e.stopPropagation) {e.stopPropagation();}
	if (e.preventDefault) {e.preventDefault();}
	if (e.returnValue) {e.returnValue=false;}
	return false;
}

function centerDivAt(divid, x, y) {
	var div = getDiv(divid);
	if (!(div||false)) {
		return;
	}
	var height = div.clientHeight;
	var width = div.clientWidth;
	if (!height || !width)
		return;
	var t = (y - (height/2) > 0 ? (y - (height/2)) : 0);
	var l = (x - (width/2) > 0 ? (x - (width/2)) : 0);
	$('#'+divid).css({position: 'absolute', top: t, left: l});
}

function clearCookie(name) {
	setCookie(name, "", -1);
}

function clearDiv(divid) {
	var layer;
	layer = getDiv(divid);
	layer.innerHTML = " ";
}

function writeDiv(divid, msg) {
	var target;
	var text;
	var curH;
	if (msg == '')
		return;
	target = getDiv(divid);
	target.innerHTML += msg;
}

function getPosition(id) {
	if (typeof(id) != "object") {
		var layer = getDiv(id);
		if (!layer) {
			return null;
		}
	} else {
		var layer = id;
	}
	var offsetLeft = 0;
	var offsetTop = 0;
	if (layer.offsetParent) {
		while (layer.offsetParent) {
			offsetLeft += layer.offsetLeft;
			offsetTop += layer.offsetTop;
			layer = layer.offsetParent;
		}
	} else if (layer.x && layer.y) {
		offsetLeft = layer.x;
		offsetTop = layer.y;
	}
	return Array(offsetLeft, offsetTop);
}

function getWidthAndHeight() {
	var height, width;
	if (self.innerHeight) {
		height = self.innerHeight;
		width = self.innerWidth;
	} else if (document.documentElement && document.documentElement.clientHeight) {
		height = document.documentElement.clientHeight;
		width = document.documentElement.clientWidth;
	} else if (document.body) {
		width = document.body.clientWidth;
		height = document.body.clientHeight;
	}
	return Array(width,height);
}

function dazRelMoveY(ename, px, time, steps) {
	var i,j;
	elem = getDiv(ename);
	if (!(elem||false))
		return;
	if (typeof(elem) == 'undefined')
		return;
	if (!(px||false))
		return;
	if (!(time||false))
		return;
	if (!(steps||false))
		return;
	j = time/steps;
	var curY = elem.getAttribute("curY") || 0;
	var curX = elem.getAttribute("curX") || 0;
	curY = parseInt(curY);
	curX = parseInt(curX);
	if (steps < 1) {
		getDiv(ename).style.top = (px+curY) + "px;";
	} else {
		for (i = 0; i<steps; i++) {
			setTimeout("getDiv('" + ename + "').style.top = '" + (((px/steps)*i)+curY) + "px';",j*i);
		}
	}
	elem.setAttribute("curY", (parseInt(curY)+parseInt(px)));
}

function getCaller(o) {
	return (window.event ? window.event.srcElement : o.target);
}

function dxFormSub(form, url) {
	if (!form)
		return true;

	var timebox = getDiv("timebox");
	if (!timebox) {
		var body = document.getElementsByTagName("body")[0];
		timebox = document.createElement('div');
		timebox.setAttribute("name", "timebox");
		timebox.setAttribute("id", "timebox");
		timebox.style.zIndex = 200;
		var pos = getPosition(form.id);
		timebox.style.display = 'block';
		body.appendChild(timebox);
		var t = pos[1]+100;
		var l = pos[0]+100;
		$("#timebox").css({ position: "absolute", top: t, left: l });
		timebox.innerHTML = '<div align="center" style="width:200px;"><br /><img align="center" border="0" src="/images/loading.gif" width="32" height="32" /><br /><br /><b><big>Processing...</big></b></div>';
	} else {
		var pos = getPosition(form.id);
		var t = pos[1]+100;
		var l = pos[0]+100;
		$("#timebox").css({ position: "absolute", top: t, left: l });
		timebox.innerHTML = '<div align="center" style="width:200px;"><br /><img align="center" border="0" src="/images/loading.gif" width="32" height="32" /><br /><br /><b><big>Processing...</big></b></div>';
		timebox.style.display = 'block';
	}

	var serFields = $("#"+form.id).formSerialize();
	$.ajax({
		url: url,
		dataType: "text",
		data: serFields,
		type: "POST",
		cache: false,
		success: function(data) {
			var x = getDiv("timebox");
			if (timebox && timebox.style && timebox.style.display) {
				setTimeout(function () {timebox.style.display = 'none';}, 200);
			}
			dxFormLoad(form,data);
		},
		error: function(XMLHttpRequest, textStatus, errorThrown) {
			var x = getDiv("timebox");
			if (timebox && timebox.style && timebox.style.display) {
				setTimeout(function () {timebox.style.display = 'none';}, 200);
			}
			form.submit();
		},
		timeout: 4000
	});

	return false;
}

function dxFormLoad(form,data) {
	var input;
	var fieldname;
	var field;
	var result;
	var errtxt;
	var errfield, errtxtfield;
	var x;
	var errcnt=0;
	oDomDoc = (new DOMParser()).parseFromString(data, "text/xml");
	var result = oDomDoc.getElementsByTagName("formresult");
	if (result.length < 1) {
		form.submit();
		return;
	}
	var fields = result[0].getElementsByTagName("field");
	if (fields.length < 1) {
		form.submit();
		return;
	}
	for (i = 0; i < fields.length; i++) {
		x = fields[i].getElementsByTagName("fieldname");
		if (x.length > 0 && x[0].firstChild) {
			fieldname = fields[i].getElementsByTagName("fieldname")[0].firstChild.nodeValue;
		} else {
			continue;
		}
		x = fields[i].getElementsByTagName("result");
		if (x.length > 0 && x[0].firstChild) {
			result = fields[i].getElementsByTagName("result")[0].firstChild.nodeValue;
		} else {
			result = 0;
		}
		x = fields[i].getElementsByTagName("error");
		if (x.length > 0 && x[0].firstChild) {
			errtxt = fields[i].getElementsByTagName("error")[0].firstChild.nodeValue;
		} else {
			errtxt = '';
		}
		x = document.getElementById(fieldname);
		if (!x) {
			form.submit();
			return;
		}
		errfield = document.getElementById("error_" + fieldname);
		errtxtfield = document.getElementById("errortxt_" + fieldname);
		if (result != '1') {
			errcnt++;
			if (errfield && errtxtfield && errfield.style && errtxtfield.style) {
				errfield.style.display = 'block';
				errtxtfield.innerHTML = errtxt;
				errtxtfield.style.display = 'block';
			} else {
				form.submit();
				return;
			}
		} else {
			if (errfield && errtxtfield && errfield.style && errtxtfield.style) {
				errfield.style.display = 'none';
				errtxtfield.innerHTML = '';
				errtxtfield.style.display = 'none';
			}
		}
	}
	if (!errcnt) {
		form.submit();
	}

	return false;
}

function dazSetBlockStyle(id) {
	var div = getDiv(id);
	if (!(div||false))
		return;
	if (!(div.style||false))
		return;
	div.style.display = 'block';
}

function dazSetNoneStyle(id) {
	var div = getDiv(id);
	if (!(div||false))
		return;
	if (!(div.style||false))
		return;
	div.style.display = 'none';
}

// START Braden global js
/*
/ handleJSON(str)
/
/ Returns a Javascript object corresponding to a JSON string
/ which has been prefixed with "/*" for CSRF protection.
/
/ JSON validity check taken from reference implementation:
/ http://www.json.org/json.js
*/
var handleJSON = function(str) {
	var data = false;
	str = str.replace(/^while\(1\);/, '');
	// remove quoted strings, then verify that there are no characters other than
	// whitespace, (true|false|null), [Ee][+-]?, or other grammatical tokens
	// http://www.json.org
	if (!/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]+$/.test(str.
			replace(/\\./g, '@').
			replace(/"[^"\\\n\r]*"/g, ''))) {
		return false;
	}
	data = eval('(' + str + ')');
	return data;
}

var displayAjaxErr = function(err, stat, xhr, scroll) {
	var details = stat;
	// Opera doesn't supply responseText for status 500. Lame.
	if (xhr && xhr.responseText) {
		var data = handleJSON(xhr.responseText);
		if (data && data.msg) {
			details = data.msg;
		}
	}
	$('#respDiv').append('<div class="error">'+err+'<br />'+details+'</div>');
	if (typeof(scroll) == 'undefined' || scroll) {
		$.scrollTo($('#respDiv'), 800);
	}
}

var displayAjaxMsg = function(msg, scroll) {
	$('#respDiv').append('<div class="response">'+msg+'</div>');
	if (typeof(scroll) == 'undefined' || scroll) {
		$.scrollTo($('#respDiv'), 800);
	}
}

var clearAjaxMsg = function() {
	$('#respDiv').empty();
}

var spinner = document.createElement('img');
spinner.src = '/images/spinner.gif';
spinner.style.verticalAlign = 'middle';
spinner.style.marginLeft = '0.5em';

var markFormActive = function(form, name) {
	var $buttons = $(form).find('button');
	// thin race condition still present
	if (!$buttons.length || $buttons[0].disabled) {return false;}
	$buttons.attr('disabled', true);
	if (typeof(name) == 'string') {$buttons = $buttons.filter('[name='+name+']');}
	$buttons.each(function() {this.appendChild(spinner.cloneNode(false))});
	return true;
}

var unmarkFormActive = function(form) {
	$(form).find('button').attr('disabled', false)
		.find('img').remove();
}

jQuery.fn.fadeRemove = function() {
	return this.animate({opacity: 0, height: 0}, 1200, function() {$(this).remove()});
};

jQuery.fn.yellowAppend = function(elem) {
	$elem = $(elem);
	this.append($elem);
	var oldColor = $elem.css('backgroundColor');
	var toColor = oldColor == 'transparent' ? $(document.body).css('backgroundColor') : oldColor;
	$elem.css('backgroundColor', '#ff8')
		.animate({backgroundColor: toColor}, 1200, null, function() {$(this).css('backgroundColor', oldColor);});
	return this;
};
// END Braden global js
