// VPP Javascript: Main

// autosplit
var sentContent = false;
var sendingMultiple = false;
var currentItem = 0;
var maxItem = 0;
var start = 0;
var end = 0;
var splitAt = 0;
document.getElementById('ifram').onload = function() {iframeLoaded();}

function initProgress(num) {
	currentItem = 0;
	maxItem = num;
	//document.getElementById('as_progress').style.display = 'block';
	$('#as_progress').slideDown(400);
	var html = '';
	for ( var i = 0; i < num; i++) {
		html += '<td id="asp_block'+i+'" class="asp_wait" style="width: '+((num-1)*3/num)+'px;"></td>';
	}
	document.getElementById('asp_blocks').innerHTML = html;
	document.getElementById('as_text').innerHTML = 'Sending content - '+currentItem+'/'+maxItem+' done.';
	document.getElementById('asp_block0').setAttribute("class", "asp_load");
}

function increaseProgress() {
	document.getElementById('asp_block'+currentItem).setAttribute("class", "asp_done");
	if (currentItem < maxItem-1)
		document.getElementById('asp_block'+(currentItem+1)).setAttribute("class", "asp_load");
	currentItem++;
	if (currentItem != maxItem)
		document.getElementById('as_text').innerHTML = 'Sending content - '+currentItem+'/'+maxItem+' done.';
	else
		document.getElementById('as_text').innerHTML = 'Finished - '+currentItem+'/'+maxItem+' done.';
}



function iframeLoaded() {
	if (sentContent) {
		sentContent = false;
		
		if (sendingMultiple) {
			increaseProgress();
			if (currentItem < maxItem) {
				var a = setTimeout(function(){reallysubmitform();},100);
			}
			// var a = setTimeout(function(){set_iframe_src();},100);
		}
	}
}


function reallysubmitform() {
	var a = setTimeout(function(){sentContent = true;},100);
	
	var good = document.getElementById("goodform");
    var evil = document.getElementById("evilform");
    
    /* copy everything from our first form into the standard, hidden vpp form */
    for (var i=0; i<good.length; i++)
    {
        if (good.elements[i].name != null && document.getElementsByName(good.elements[i].name.substring(1))[0] != null) {
            document.getElementsByName(good.elements[i].name.substring(1))[0].setAttribute("value",good.elements[i].value);
        }
    }
    
    // destination
    var gendest = document.getElementById('gendest');
    var favdest = document.getElementById('favdest');
    if (favdest.selectedIndex != -1) {
    	document.getElementById("xdest").value = favdest.options[favdest.selectedIndex].innerHTML + 'STUD';
    } else if (gendest.selectedIndex != -1) {
    	document.getElementById("xdest").value = gendest.options[gendest.selectedIndex].innerHTML.replace(' ','');
    } else if (document.getElementById('destother').checked) {
    	document.getElementById("xdest").value = document.getElementById("destothername").value;
    }
    
    document.getElementById("notify").value = document.getElementById("user").value + "@ethz.ch";
	document.getElementById("pdfpreevil").checked = document.getElementById("pdfpre").checked;
	
	// adjust page numbers
	if (sendingMultiple) {
		document.getElementById("evilstart").value = start+currentItem*splitAt;
		var tempEnd = start+(currentItem+1)*splitAt-1;
		if (tempEnd > end) tempEnd = end;
		document.getElementById("evilend").value = tempEnd;
		//alert('Sending pages: '+(start+currentItem*splitAt)+' - '+(tempEnd)+' of '+end);
	}
    
	/* strange thing, but we need to delay the form. if we do not
	   the iframe content gets not loaded properly.. */
	var a = setTimeout(function(){evil.submit();},100);
}


function submitform() {
	sendingMultiple = false;
	$('#as_progress').slideUp(400);
	
	var autosplit = document.getElementById("endpg").value.match(/^([0-9]+)( ?[^0-9] ?)([0-9]*)$/i);
	if (autosplit != null) {
		start = parseInt(document.getElementById("startpg").value);
		if (isNaN(start)) start = 1;
		end = parseInt(autosplit[1]);
		splitAt = parseInt(autosplit[3]);
		if (isNaN(splitAt) && autosplit[2].replace(/ /gi,'') != '') {
			if (document.getElementById("pps1").checked) splitAt = 20;
			else if (document.getElementById("pps2").checked) splitAt = 40;
			else splitAt = 80;
		} else if (isNaN(splitAt)) splitAt = 100000;
		var nPages = end-start+1;
		var nJobs = Math.ceil(nPages/splitAt);
		
		// alert('pages: '+nPages+', splitAt: '+splitAt);
		if (splitAt != 100000) {
			sendingMultiple = true;
		
			initProgress(nJobs);
		}
	}
	
	// open the iframe
	$('#id_iframe').slideDown(400);
	
	sentContent = false;
	set_iframe_src();
	
	reallysubmitform();
}



function change_username() {
	//var l = location.href.lastIndexOf('#') == -1 ? location.href.length : location.href.lastIndexOf('#');
	//location = location.href.substr(0, l-1) + '#';
	document.getElementById("userdiv").style.display = "table-row";
	document.getElementById("displayusername").style.display = "none";
}

function save_username() {
	var username = document.getElementById("user").value;
	var l = location.href.lastIndexOf('#') == -1 ? location.href.length : location.href.lastIndexOf('#')+1;
	location = location.href.substr(0, l-1) + '#' + username;
	
	document.getElementById("user").setAttribute("value", username);
	document.getElementById("userdiv").style.display = "none";
	document.getElementById("displayusername").style.display = "block";
	document.getElementById("displayusernameval").innerHTML = username;
}

function handle_bookmark() {
	var username = document.getElementById("user").value;
	var bookmark = document.getElementById("bookmark");
	if(username != "") {
		$('#bookmark').animate({ opacity: 1 }, 500);
		//bookmark.href = "#" + username;
		var l = location.href.lastIndexOf('#') == -1 ? location.href.length : location.href.lastIndexOf('#')+1;
		location = location.href.substr(0, l-1) + '#' + username;
	}
	else {
		$('#bookmark').animate({ opacity: 0 }, 500);
		var l = location.href.lastIndexOf('#') == -1 ? location.href.length : location.href.lastIndexOf('#')+1;
		location = location.href.substr(0, l-1) + '#';
	}
}




function changeDestination(newdest) {
	if (newdest == 'favdest') {
		document.getElementById('gendest').selectedIndex = -1;
		document.getElementById('gendest').setAttribute("class", "selectsleep"); 
		document.getElementById('favdest').setAttribute("class", "selectactive");
		document.getElementById('destother').checked = false;
		document.getElementById('dest-radio1').checked = true;
		document.getElementById('dest-radio2').checked = false;
	} else if (newdest == 'gendest') {
		document.getElementById('favdest').selectedIndex = -1;
		document.getElementById('gendest').setAttribute("class", "selectactive");
		document.getElementById('favdest').setAttribute("class", "selectsleep"); 
		document.getElementById('destother').checked = false;
		document.getElementById('dest-radio1').checked = false;
		document.getElementById('dest-radio2').checked = true;
	} else if (newdest == 'destother') {
		document.getElementById('favdest').setAttribute("class", "selectsleep"); 
		document.getElementById('favdest').selectedIndex = -1;
		document.getElementById('gendest').setAttribute("class", "selectsleep"); 
		document.getElementById('gendest').selectedIndex = -1;
		document.getElementById('destother').checked = true;
		document.getElementById('dest-radio1').checked = false;
		document.getElementById('dest-radio2').checked = false;
	}
}

function changeDestinationOther() {
	if(document.getElementById("destothername").value!="") {
		document.getElementById('favdest').setAttribute("class", "selectsleep"); 
		document.getElementById('favdest').selectedIndex = -1;
		document.getElementById('gendest').setAttribute("class", "selectsleep"); 
		document.getElementById('gendest').selectedIndex = -1;
		document.getElementById('destother').checked = true;
		document.getElementById('dest-radio1').checked = false;
		document.getElementById('dest-radio2').checked = false;
	}
}


if(document.getElementById("user").value != "")
	document.getElementById("bookmark").style.opacity = 1;

if(document.getElementById("xcopies").value != "" || document.getElementById("xsortcopies").checked == 1)
	document.getElementById("copy_warning").style.opacity = 1;

function set_pages_per_page(new_id) {
	
    // correct image
    document.getElementById("xpps1").style.background = 'url("inc/img/1d.png")';
    document.getElementById("xpps2").style.background = 'url("inc/img/2d.png")';
    document.getElementById("xpps4").style.background = 'url("inc/img/3d.png")';
    document.getElementById("xpps41").style.background = 'url("inc/img/4d.png")';
    
    if (new_id == "pps1") {
        document.getElementById("xpps1").style.background = 'url("inc/img/1s.png")';
    } else if (new_id == "pps2") {
        document.getElementById("xpps2").style.background = 'url("inc/img/2s.png")';
    } else if (new_id == "pps4") {
        document.getElementById("xpps4").style.background = 'url("inc/img/3s.png")';
    } else if (new_id == "pps41") {
        document.getElementById("xpps41").style.background = 'url("inc/img/4s.png")';
    }
    
    // mirror the chances in the evil form
    document.getElementById("pps1").checked = 0;
    document.getElementById("pps2").checked = 0;
    document.getElementById("pps4").checked = 0;
    document.getElementById("pps41").checked = 0;
    document.getElementById(new_id).checked = 1;
}


//------------------------------------------------------------------------------------

//handle_bookmark();

/* the very nasty hack for our german users... */
/*if (window.navigator.language != "en-US" && window.navigator.language != "en-GB" && window.navigator.language != "en") {
	document.getElementById("xfile1").size = 44;
}*/


//------------------------------------------------------------------------------------


$(document).ready(function(){
	// toggle advanced options
	$("#id_adv_button").click(function () {
		$("#adv").slideToggle(400);
		/*$("#id_basic_txt").toggle();
		$("#id_adv_txt").toggle();*/
		$("#id_basic_txt").toggle("blind", { direction: "horizontal" }, 400);
		$("#id_adv_txt").toggle("blind", { direction: "horizontal" }, 400);
	});
	
	$("#close_iframe").click(function () {
		$("#id_iframe").slideUp(400);
	});
});

var nfiles=1;

function switch_url_file(new_id,old_id) {
	
    button = document.getElementById(new_id + "_button");
    otherbutton = document.getElementById(old_id + "_button");
    
    button.style.background = "#94B0D3";
    otherbutton.style.background = "#EEE";
    
	/*document.getElementById(new_id).style.display="block";
	document.getElementById(old_id).style.display="none";*/
	
    if (new_id == "id_file") {
        document.getElementById("xifurl").checked = 0;
		//document.getElementById("plusminus").style.display="block";
		if (document.getElementById("id_more").style.display == 'none' && nfiles < 20) $("#id_more").show("blind", { direction: "horizontal" }, 540);
		if (document.getElementById("id_less").style.display == 'none' && nfiles > 1) $("#id_less").show("blind", { direction: "horizontal" }, 540);
		$("#id_url").slideUp(270);
		setTimeout(function(){$("#id_file").slideDown(270);},270);
		
		is_file_act = true;
	}
    else {
        document.getElementById("xifurl").checked = 1;
		//document.getElementById("plusminus").style.display="none";
		if (document.getElementById("id_more").style.display != 'none') $("#id_more").hide("blind", { direction: "horizontal" }, 540);
		if (document.getElementById("id_less").style.display != 'none') $("#id_less").hide("blind", { direction: "horizontal" }, 540);
		$("#id_file").slideUp(270);
		setTimeout(function(){$("#id_url").slideDown(270);},270);
		
		is_file_act = false;
	}
}

function hide_copy_warning(){
	if(document.getElementById("xcopies").value=="" && document.getElementById("xsortcopies").checked==0)
		$('#copy_warning').animate({ opacity: 0 }, 500);
	else
		$('#copy_warning').animate({ opacity: 1 }, 500);
}

function formelementclicked(elementid) {
    element = document.getElementById(elementid);
    if (element.checked) {
        si=document.getElementById("layoutform").value.indexOf(elementid);
        if  (si==-1) {
            if (document.getElementById("layoutform").value=="")
                document.getElementById("layoutform").value=elementid;
            else
                document.getElementById("layoutform").value=document.getElementById("layoutform").value+"."+elementid;
        }
        if  (elementid=="DUPLEX" && document.getElementById("SHORTBIND").checked)
            document.getElementById("SHORTBIND").click();
        if  (elementid=="SHORTBIND" && document.getElementById("DUPLEX").checked)
            document.getElementById("DUPLEX").click();
    }
    else    {
        si=document.getElementById("layoutform").value.indexOf("."+elementid);
        if (si!=-1)
            document.getElementById("layoutform").value=document.getElementById("layoutform").value.substring(0,si)+document.getElementById("layoutform").value.substring(si+elementid.length+1,999);
        if (document.getElementById("layoutform").value.substring(0,elementid.length)==elementid)
            document.getElementById("layoutform").value=document.getElementById("layoutform").value.substring(elementid.length,999);
        if (document.getElementById("layoutform").value.substring(0,1)==".")
            document.getElementById("layoutform").value=document.getElementById("layoutform").value.substring(1,999);
    }
}

function morefiles() {
	if (document.getElementById("id_less").style.display == 'none') $("#id_less").show("blind", { direction: "horizontal" }, 540);
	
	//if (nfiles == 20) return;
	
    nfiles++;
    var newFile=document.createElement("inputx");
    //var newBr=document.createElement("br");
    var para1=document.getElementById("para1");
    para1.appendChild(newFile);
    newFile.setAttribute("type","file");
    newFile.innerHTML="<div class=\"h\" id=\"more_file"+nfiles+"\"><INPUT size=32 TYPE=file ID=file"+nfiles+" NAME=file"+nfiles+"></div>";
    newFile.setAttribute("id","file"+nfiles);
    newFile.setAttribute("name","file"+nfiles);
    //para1.appendChild(newBr);
    //newBr.setAttribute("id","br"+nfiles);
	$("#more_file"+nfiles).slideToggle(400);
	
	//if (nfiles >= 20 && document.getElementById("id_more").style.display != 'none') $("#id_more").hide("blind", { direction: "horizontal" }, 540);
}

function lessfiles() {
    if (nfiles>1) {
		$("#more_file"+nfiles).slideToggle(400);
		if (nfiles == 2 && document.getElementById("id_less").style.display != 'none') $("#id_less").hide("blind", { direction: "horizontal" }, 540);
		
		if (document.getElementById("id_more").style.display == 'none') $("#id_more").show("blind", { direction: "horizontal" }, 540);
		
		setTimeout(function(){
							var fileel=document.getElementById("file"+nfiles);
							//var brel=document.getElementById("br"+nfiles);
							var para1=document.getElementById("para1");
							para1.removeChild(fileel);
							//para1.removeChild(brel);
							nfiles--;
							},401);
        
    }
}

function set_iframe_src() {
	document.getElementById("ifram").src = 'inc/htm/send.htm';
}

