
/////////////////////////////////////////////////////////
/// SO Specific

function getQueryVariable() {
  var query = window.location.search.substring(1);
  var usrImgIndex = query.indexOf("usrImg");
  var usrQuestionIndex = query.indexOf("&usrQuestion=");
  var vars = query.substring(usrImgIndex+7, usrQuestionIndex)
  if (vars.length > 0) {
		return(unescape(vars));
	} else {
		return(0);
    }
}

function getQueryQuestion() {
  var query = window.location.search.substring(1);
  var usrQuestionIndex = query.indexOf("&usrQuestion=");
  var question = unescape(query.substring(usrQuestionIndex+13, query.length));
  return(question.replace(/\+/g, " "));
}

function IsImageOk(img) {
// During the onload event, IE correctly identifies any images that
// weren’t downloaded as not complete. Others should too. Gecko-based
// browsers act like NS4 in that they report this incorrectly.
if (!img.complete) {
return false;
}
// However, they do have two very useful properties: naturalWidth and
// naturalHeight. These give the true size of the image. If it failed
// to load, either of these should be zero.
if (typeof img.naturalWidth != "undefined" && img.naturalWidth == 0) {
  return false;
}
// No other way of checking: assume it’s ok.
return true;
}

function finishAnimation() {
	var scalePercent = 35.9;
	new Effect.Fade('apDivText', {duration: 0.25, queue: {position: 'end', scope: 'fb'}});
	new Effect.Scale('iPhone', scalePercent, { originalHeight: 730, originalWidth: 385, queue: {position: 'end', scope: 'fb'}});
	new Effect.Scale('iPhoneBg', scalePercent, { queue: {position: 'with-last', scope: 'fb'}});
	new Effect.Scale('apDivImage', scalePercent, { queue: {position: 'with-last', scope: 'fb'} });
	new Effect.Scale('userImage', scalePercent, { queue: {position: 'with-last', scope: 'fb'} });
	new Effect.Scale('apDivButtons', scalePercent, { queue: {position: 'with-last', scope: 'fb'} });
	new Effect.Scale('apDivButtonsBg', scalePercent, { queue: {position: 'with-last', scope: 'fb'} });
	var featureOffset = $("so-feature-image").cumulativeOffset();
	new Effect.Move('iPhone', { x: (featureOffset.left + 13), y: 142, mode: 'absolute', queue: {position: 'with-last', scope: 'fb'}, duration: 1});
}

function completeImageAnimation() {
	MM_swapImage('userImage','', heavyImage.src,1);
	new Effect.Opacity('iPhone', {duration:1, from:0, to:1.0});
	setTimeout("finishAnimation()", 2000);
}

function checkImageReady() {
	if (IsImageOk(heavyImage)) {
		clearInterval(checkInterval);
		completeImageAnimation();
	}
}

var checkInterval;
heavyImage = new Image(); 
function getUserImg() {		
	var usrImg = getQueryVariable();
	if ((usrImg != 0) && (usrImg.indexOf("facebookdefault.jpg")==-1)) {
		heavyImage.src = usrImg;
		checkInterval = setInterval("checkImageReady();", 50)
		window.onresize = function() {
			var featureOffset = $("so-feature-image").cumulativeOffset();
			$("iPhone").style.left = (featureOffset.left + 13) + "px";	
	    };
	} else {
		$("iPhone").style.visibility = 'hidden';
	}
}
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
