/*********
* Javascript for file upload demo
* Copyright (C) Tomas Larsson 2006
* http://tomas.epineer.se/

* Licence:
* The contents of this file are subject to the Mozilla Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/MPL/
* 
* Software distributed under this License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*/
var uploads_in_progress = 0;
var sids = {};
var uploadCancelled = false;


YAHOO.util.Event.addListener(window, 'load', blinkUploading)

function beginUpload(ul,bar,button) {
	
	var sid = generateSid();
	
	button.style.display = "none";
	ul = $(ul);
	globalUl = ul;
	$('add_progress_picture').action = "http://www.pikapet.com/cgi-bin/upload.cgi?sid="+sid;
	$('add_progress_picture').submit();

	uploads_in_progress = 1;
	var pb = $(bar);
	globalBar = pb;
	Element.show(pb.parentNode);

	ul.style.display = "none";
	
	requestUploadPercent(sid, pb);
	$('statusMessage').innerHTML = "Uploading...";
	$('statusMessage').style.display = "";
	$('pictureErrors').innerHTML = "";
	
}

function generateSid(){
	var num = Math.random() + "";
	return hex_md5(num);
}

function blinkUploading(){
	
	if($('statusMessage').style.visibility == ""){
		$('statusMessage').style.visibility = "hidden";
	}
	else{
		$('statusMessage').style.visibility = "";
	}
	
	setTimeout(blinkUploading, 600);

}

function requestUploadPercent(sid, pb){
	
	if(uploadCancelled){
		return;
	}
	
	new Ajax.Request(domain + 'resources/php/fileprogress.php',
		{	method: 'post',
			parameters: 'sid=' + sid,
			onSuccess : function(request){updateProgress(pb,sid,request)},
			onFailure:function(request){updateFailure(pb,request)}
		}
	);
	
}

function updateProgress(pb,sid,req) {
	
	var percent = parseInt(req.responseText);
	if(!percent) percent = 0;
	pb.style.width = percent + "%";
	
	if(percent >= 100) {
		finishUpload(sid,pb);
	}
	else{
		setTimeout(function(){requestUploadPercent(sid, pb);}, 500);	
	}
}

function finishUpload(sid, pb){
	uploads_in_progress = 0;

	var iframe = document.getElementsByName("receiveIframe")[0];
	iframe.src = domain + "upload/receive/"+sid;
	
	$('statusMessage').innerHTML = "Generating thumbnails...";

}

function updateFailure(pb,req) {
	var mes = req.responseText;
	pb.style.width=0;
	alert(mes);
	uploads_in_progress = 0;
}

function submitUpload(frm) {
	if(uploads_in_progress > 0) {
		alert("File upload in progress. Please wait until upload finishes and try again.");
	} else {
		frm.submit();
	}
}

function receivePicture(url){
	
	Element.hide($('step1Picture'));
	Element.show($('step1Caption'));
	
	var picture = new Image();
	picture.src = url;
	picture.style.width = "300px";
	picture.className = "top10";
	
	$('picturePlace').appendChild(picture);
	
}

function receiveError(error){
	$('pictureErrors').innerHTML = "<span style='color:red'>" + error + "</span>";
	restoreUpload();	
}

function restoreUpload(){
	try{
		globalUl.style.display = "";
		globalBar.style.width = "0px";
		Element.hide(globalBar.parentNode);
	}catch(e){}
	
	$('statusMessage').style.display = "none";
	uploads_in_progress = 0;
	uploadCancelled = false;
	$('uploadButton').style.display = "";
	Element.show($('step1Picture'));
	Element.hide($('step1Caption'));
}

function cancelUpload(){

	var iframe = document.getElementsByName(iframeName)[0];
	iframe.src = "";
	restoreUpload();
	uploadCancelled = true;
	
}

function changePicture(){
	$('picturePlace').innerHTML = "";
	restoreUpload();
}

function submitMainForm(userFormId, petFormId, picFormId){
	
	if(uploads_in_progress != 0){
		alert("Please wait for the picture to upload");
		return false;
	}
	
	var userForm = $(userFormId);
	var petForm = $(petFormId);
	var picForm = $(picFormId);
	
	if(userForm && userForm["username"]){
	
		petForm['username'].value = userForm["username"].value;
		petForm['password'].value = userForm["password"].value;
		petForm['email'].value = userForm['email'].value;
		petForm['confirm'].value = userForm["confirm"].value;
		petForm['terms'].value = userForm["terms"].checked ? userForm["terms"].value : "";
		
		petForm['user_country'].value = userForm["user_country"].value;
		petForm['user_zipcode'].value = userForm["user_zipcode"].value;
		petForm['user_birth_year'].value = userForm["user_birth_year"].value;
		petForm['user_gender'].value = userForm["user_gender"].value;

	}
	
	petForm['encourage'].value = picForm['encourage'].value;
	
	petForm.submit();
	
	return true;
		
}