var swfu;

function removeOrdersize(element) {
	var e = $(element);
	e.prev().remove();
	e.remove();
}

function removeCategory(e) {
	var params = {};
	params.type = 'deletecategory';
	params.requestid = $('input[name=requestid]').val();
	
	e.src = '/images/uploader/save-competence.gif';
	
	var elements = $(e).parent().parent().find('td').not('.action').each(function() {
		var c = $(this).attr('class').split('-');
		
		if (c[0] == 'category') {
			params.jobtypedataid = c[1];
		}
		
		else if (c[0] == 'subcategory') {
			params.subcategory = c[1];
		}
	});
	
	$.post(
		'/rfq/rfqWizard/newRequest2Handler.asp', 
		params,
		function(data) { 
			if (data == '1') {
				$(e).parent().parent().remove();
			}
		}
	);
}


$(document).ready(function() {
	var fieldset = $('#rfq-user-block fieldset.edit-user-info');
	if (fieldset.find('.error').length > 0 && fieldset.hasClass('hide')) {
		$('#rfq-user-block fieldset.divider').toggleClass('hide');
	}
	
	$('#new-user').click(function() {
		$('#rfq-user-block fieldset input[type!=submit][type!=radio]').each(function() {
			$(this).val('');
		});
		$('#rfq-user-block fieldset input[type=radio]').attr('checked', null);
		
		$('#rfq-user-block fieldset.divider').toggleClass('hide');
		return false;
	});

	$('#save-user').click(function() {
		var f = $('#rfq-user-block fieldset.divider:not(.hide)')
		var d = $('#rfq-user-block fieldset.divider.hide');
		
		d.find('.firstname').html(f.find('input[name=firstname]').val());
		d.find('.surname').html(f.find('input[name=surname]').val());
		d.find('.email').html(f.find('input[name=email]').val());
		d.find('.phone').html(f.find('input[name=phonenumber]').val());
		
		var t = f.find('.contactperson input:checked').parent().find('label').html();
		
		if (t && t.length > 0) {
			d.find('.title').html(t);
		} 
		
		else {
			d.find('.title').html('');
		}
		
		$('#rfq-user-block fieldset.divider').toggleClass('hide');
		
		var s = $('#rfq-user-block fieldset.divider').find('select');
		
		if (s.length > 0) {
			s.val(-1);
		}
		
		return false;
	});
	
	$('#cancel-user').click(function() {
		$('#rfq-user-block fieldset.divider').toggleClass('hide');
		return false;
	});
	
	$('p.staffel a').click(function() {
		var element = $(this).parent().parent().find('.ordersize');
		var amount = element.find('input').length == 1 ? 2 : 1;
		
		for (var i = 0; i < amount; ++i) {
			element.append('<input type="text" name="ordersize" class="removable">');
			element.append('<img src="/images/uploader/delete.gif" onclick="removeOrdersize(this)">');
		}
		
		return false;
	});
	
	$('.datefield select[name=month]').change(function() { changeDate($(this)); });
	$('.datefield select[name=year]').change(function() { changeDate($(this)); });
	
	$('.datefield .add-week').click(addWeek);
	$('.datefield .sub-week').click(addWeek);
	
	$('#categories').change(function() {
		updateCategoryList($(this));
	});
	
	$('#addcategory').click(function() {
		var params = {};
		params.requestid = $('input[name=requestid]').val();
		params.type = 'addcategory';
		params.category = $('#categories').val();
		params.subcategory = $('#subcategories').val();
		$('#saving-competence').removeClass('hide');
		
		$.post(
			'/rfq/rfqWizard/newRequest2Handler.asp', 
			params, 
			function(data) { 
				$('table.jobtypecategories tbody').append(data).find('img:last').click(function() {
					removeCategory(this);
				});
				
				$('#saving-competence').addClass('hide');
			}
		);
		
		return false;
	});
	
	$('.jobtypecategories img').click(function() {
		removeCategory(this);
	});
	
	$('#contactpersons').change(function() {
		var id = parseInt($(this).val());
		
		if (id == -1) {
			$('#new-user').click();
		}
		
		else if (id == 0) {
			$('#rfq-user-block fieldset.divider span[class]').html('');
		}
		
		else {
			$(this).parent().find('.loading-image').removeClass('hide');
			
			var params = {};
			params.requestid = $('input[name=requestid]').val();
			params.type = 'getuserinfo';
			params.userid = id;
			
			$.get(
				'/rfq/rfqWizard/newRequest2Handler.asp',
				params,
				function(data) {
					var root = $($('#rfq-user-block fieldset.divider').not('.hide').get(0));
					
					var handler = function(e, v) {
						e[0].nodeName == 'SPAN' ? e.html(v) : e.val(v);
					}
					
					root.find('span').html('');
					
					if (data.firstname) {
						handler(root.find('.firstname'), data.firstname);
					}
					
					if (data.surname) {
						handler(root.find('.surname'), data.surname);
					}
					
					if (data.email) {
						handler(root.find('.email'), data.email);
					}
					
					if (data.phone) {
						handler(root.find('.phone'), data.phone);
					}
					
					if (data.title) {
						var t = root.find('.title');
						
						if (t.length > 0) {
							t.html(data.titlename);
						}
					}
					
					$('#rfq-user-block .loading-image').addClass('hide');
				},
				'json'
			);
		}
	});
	
	updateCategoryList($('#categories'));
	
	var date = new Date();
	var nextdate = new Date();
	nextdate.setMonth(date.getMonth() + 1);

	var settings_object = {
		// https seems to be malfunctioning, so just upload to http://
		upload_url : 'http://' + window.location.host + '/rfq/rfqWizard/newRequest2Handler.asp?requestid=' + 
							$('input[name=requestid]').val() + '&type=uploadfile',
							
		flash_url : "/javascript/swfupload.swf",
		file_size_limit : "20 MB",
		button_width: "250",
		button_height: "29",

		button_image_url: "",
		button_placeholder_id: "uploadbutton",
		button_text: '<span class="uploadbutton">' + $('#uploadbutton').html() + ' </span>',
		button_text_style: ".uploadbutton { font-family: verdana, sans-serif; color: #00A2E2 }",
		button_text_left_padding: 5,
		button_text_top_padding: 3,
		button_cursor : SWFUpload.CURSOR.HAND,
		button_window_mode : SWFUpload.WINDOW_MODE.TRANSPARENT,
		preserve_relative_urls: true,
		
		debug: false,
		
		file_queued_handler : fileQueued,
		file_dialog_complete_handler : fileDialogComplete,
		upload_success_handler : uploadSuccess,
		upload_start_handler : uploadStart,
		upload_progress_handler : uploadProgress,
		upload_error_handler : uploadError
	};
	
	swfu = new SWFUpload(settings_object);

	zebrastripes($('#filelist'));
	
	$('#filelist img').click(removeFile);
});

function uploadError(file, errorCode, message) {
	alert(file + ': ' + errorCode + ' (' + message + ')');

}


function setDate(element, date) {
	var elements = element.find('select');
	
	for (var i = 0; i < elements.length; ++i) {
		switch (elements[i].name.split('-')[1]) {
			case 'day':
				elements[i].value = date.getDate();
			break;
			
			case 'month':
				elements[i].value = date.getMonth() + 1;
			break;
			
			case 'year':
				elements[i].value = date.getFullYear();
			break;
		}
	}
	
	changeDate($(elements[0]));
}

function getDate(elements) {
	var date = new Date();
	var day, month, year;
	
	for (var i = 0; i < elements.length; ++i) {
		var value = parseInt(elements[i].value);
		
		switch (elements[i].name.split('-')[1]) {
			case 'day':
				day = value;
			break;
			
			case 'month':
				month = value - 1
			break;
			
			case 'year':
				year = value;
			break;
		}
	}
	
	date.setYear(year);
	date.setMonth(month);
	date.setDate(day);
	
	return date;
}

function addWeek() {
	var elements = $(this).parent().find('select');
	var date = getDate(elements);
	
	if ($(this).hasClass('add-week')) {
		date.setDate(date.getDate() + 7);
	} 
	
	else {
		date.setDate(date.getDate() - 7);
	}

	setDate($(this).parent(), date);
	
	if ($(this).parent().find('[name=expiration-day]').length > 0) {
		var delivery = $('[name=delivery-day]').parent();
		var deliverydate = getDate(delivery.find('select'));
		
		if (date.getTime() > deliverydate.getTime()) {
			deliverydate.setDate(date.getDate() + 28);
		}
		
		else {
			if ($(this).hasClass('add-week')) {
				deliverydate.setDate(deliverydate.getDate() + 7);
			} 
			
			else {
				deliverydate.setDate(deliverydate.getDate() - 7);
			}
		}
		
		setDate(delivery, deliverydate);
	}
	
	return false;
}

function changeDate(element) {
	var month = parseInt(element.parent().find('select[name$=month]')[0].value) - 1;
	var year = parseInt(element.parent().find('select[name$=year]')[0].value);
	
	var daysinmonth = (32 - new Date(year, month, 32).getDate());
	var dayfield = element.parent().find('select[name$=day]');
	
	dayfield.find('option[value]').each(function() {
		if (parseInt(this.value) > daysinmonth) {
			$(this).addClass('day-not-in-month');
		}
		
		else if ($(this).hasClass('day-not-in-month')) {
			$(this).removeClass('day-not-in-month');
		}
	});
	
	if (parseInt(dayfield.val()) > daysinmonth) {
		dayfield.val(daysinmonth);
	}
}

// asdjlkasjd laksjd

function removeFile() {
	var id = $(this).parent().parent().get(0).id.split('_')[1];
	
	if (id) {
		$.post(
			'/rfq/rfqWizard/newRequest2handler.asp?' + Math.random(), 
			{
				fileid: id, 
				type: 'deletefile',
				requestid: $('input[name=requestid]').val()
			}, 
			function(data) {
				if (data.id) {
					var del = $('#file_' + id);
						
					if (del) {
						del.remove();
					}
				}
				
				else if (data.error) {
					var e = $('#file_' + id).find('div').get(0);
					var p = $(e).find('p.error');
					
					if (p.length == 0) {
						p = document.createElement('p');
						p.className = 'error';
						
						$(e).append(p);
					}
					
					$(p).html(data.error);
				}
			}, 
			'json'
		);
	}
}


function fileDialogComplete(numFilesSelected, numFilesQueued) {

	zebrastripes($('#filelist'));
	
	try {
		this.startUpload();
	} catch (e) {
		alert(e);
	}
}

function fileQueued(file) {	

	var element = document.createElement('li');
	element.id = file.id;
	
	var link = document.createElement('a');
	link.appendChild(document.createTextNode(file.name));
	link.target = '_blank';
	
	var del = document.createElement('img');
	del.src = '/images/uploader/connect.gif';
	
	var wrapper = document.createElement('div');
	wrapper.appendChild(link);
	wrapper.appendChild(del);
	element.appendChild(wrapper);
	
	$('#filelist').append(element);
}


function uploadSuccess(file, serverdata) {
	var data = eval('(' + serverdata + ')');
	var element = $('#' + file.id);
	
	element.find('a').get(0).href = data.url;
	
	var img = element.find('img').get(0);
	img.src = '/images/uploader/delete.gif';
	img.onclick = removeFile;
	
	if (progressholder) {
		element.find('.progress').remove()
	}
	
	element.get(0).id = 'file_' + data.id;
	
	if (this.getStats().files_queued > 0) {
		this.startUpload();
	}
}

var progressholder = null
var progress = null;

function uploadStart(file) {

	var element = $('#' + file.id);

	progressholder = document.createElement('div');
	progressholder.className = 'progress';
	progress = document.createElement('span');
	progressholder.appendChild(progress);
	
	element.append(progressholder);
	element.find('img').get(0).src = '/images/uploader/ajax-loader.gif';
	
	return true;
}

function uploadProgress(file, bytesLoaded, bytesTotal) {
	try {
		var percent = Math.ceil((bytesLoaded / bytesTotal) * 100);
		
		if (progress) {
			progress.style.width = (percent) + '%';
		}
	} catch (ex) {
		this.debug(ex);
	}
}

function zebrastripes(element) {
	element.find('li').each(function(i) {
		$(this).removeClass('odd').removeClass('even');
		
		if (i % 2 == 0) {
			$(this).addClass('odd');
		}
		
		else {
			$(this).addClass('even');
		}
	});
}

function updateCategoryList(element) {
	$('#subcategories').attr('disabled', 'disabled').parent().addClass('loading');
	
	$.get(
		'/rfq/rfqWizard/newRequest2handler.asp', 
		{type: 'subcategory', category: element.val()}, 
		function(data) {
			$('#subcategories').html(data).attr('disabled', null).parent().removeClass('loading');
		}
	);
}
function fncShowMatchedCompanies(id,bIsRFI){
		
		strPopUrl = '/rfq/ppShowMatchedCompanies.asp?id='+id+'&';
		if(bIsRFI){
			strPopUrl+='bIsRFI=true&OrderBy=<%=Server.urlEncode("cmName")%>&SortDirection=asc';		
		}else{
			strPopUrl+='bIsRFI=false&OrderBy=<%=Server.urlEncode("rsExpectedIssueDate")%>&SortDirection=desc';		
		}
		strPopStyle = PopUpCenter(750,450)+',scrollbars=yes';
		PopWin=window.open(strPopUrl, 'MatchedCompanies', strPopStyle);
		PopWin.focus();			
	}
