var Agent = navigator.userAgent.toLowerCase();
var is_IE6 = ( ( Agent.indexOf('msie 6.0') != -1) && ( Agent.indexOf('opera') == -1) && ( Agent.indexOf('msie 7.0') == -1) );

function Init() {
	imgObj1 = new Image(); imgObj2 = new Image(); imgObj3 = new Image(); imgObj4 = new Image();
	imgObj5 = new Image(); imgObj6 = new Image(); imgObj7 = new Image(); imgObj8 = new Image();
	imgObj1.src = '/img/design/calendarika-button-next-step3-sel.png';
	imgObj2.src = '/img/design/calendarika-upload-back-err.gif';
	imgObj3.src = '/img/design/calendarika-upload-text-mouse-over.gif';
	imgObj4.src = '/img/design/calendarika-upload-textfield-long-only.gif';
	imgObj5.src = '/img/design/calendarika-remove-calendar.png';
	imgObj6.src = '/img/design/calendarika-advanced-options.gif';
	imgObj7.src = '/img/design/calendarika-upload-text-mouse-over-err.gif';
	imgObj8.src = '/img/design/calendarika-upload-text-err.gif';
	Event.observe( "upload_file_form_target", "load", formUploaded );
	Event.observe( "pic_caption", "focus", clearCaptionError );
	Event.observe( "upload_file_1", "mouseover", function() { changeImgSrc('browse_button_1','/img/design/calendarika-upload-text-mouse-over.gif') } );
	Event.observe( "upload_file_1", "mouseout", function() { changeImgSrc('browse_button_1','/img/design/calendarika-upload-text.gif') } );
	Event.observe( "upload_file_2", "mouseover", function() { changeImgSrc('browse_button_2','/img/design/calendarika-upload-text-mouse-over.gif') } );
	Event.observe( "upload_file_2", "mouseout", function() { changeImgSrc('browse_button_2','/img/design/calendarika-upload-text.gif') } );
	isWideScreen();
}

function checkFileFormat( fileFormat ) {
	if( fileFormat.match(/jpg/i) ){ return true; }
	if( fileFormat.match(/jpeg/i) ){ return true; }
	if( fileFormat.match(/gif/i) ){ return true; }
	if( fileFormat.match(/png/i) ){ return true; }
	return false;
}

function selectFile( fileObj, fileNameID ) {
	fileObj.value.match( /(.+\\)?(.+)$/ );
	var fileName = RegExp.$2;
	document.getElementById( fileNameID ).value = fileName;
}

function selectTab( tab, ID ) {
	if( tab == 'file') {
		showTag( 'url_zone' + ID ); showTag( 'tab_url' + ID );
		hideTag( 'file_zone' + ID ); hideTag( 'tab_file' + ID );
	} else {
		showTag( 'file_zone' + ID ); showTag( 'tab_file' + ID );
		hideTag( 'url_zone' + ID ); hideTag( 'tab_url' + ID );
	}
	clearUploadError( ID );
	return false;
}

function clearError() {
	clearCaptionError();
	var uploadFileNum = document.getElementById( 'file_amount' ).value;
	for(var i = 1; i <= uploadFileNum;  i++) {
		clearUploadError( i );
	}
}

function clearCaptionError() {
	hideTag( 'caption_length_error' );
	$('pic_caption').className = 'input-field';
}

function clearUploadError( errID ) {
	$('upload-zone' + errID).className = 'input-field';	
	$('browse_button_' + errID).src = '/img/design/calendarika-upload-text.gif';
	hideTag( 'upload_file_format_error_' + errID );
	hideTag( 'upload_file_amount_error_' + errID );
	hideTag( 'upload_file_unknown_error_' + errID );
	hideTag( 'upload_file_content_type_error_' + errID );
	hideTag( 'upload_file_large_size_error_' + errID );
	hideTag( 'upload_file_wrong_url_error_' + errID );
	hideTag( 'upload_file_small_size_error_' + errID );

	Event.stopObserving( 'upload_file_' + errID, 'mouseover' );
	Event.observe( 'upload_file_' + errID, 'mouseover', 
		function() { changeImgSrc('browse_button_' + errID, '/img/design/calendarika-upload-text-mouse-over.gif') } );

	Event.stopObserving( 'upload_file_' + errID, 'mouseout' );
	Event.observe( 'upload_file_' + errID, 'mouseout', 
		function() { changeImgSrc('browse_button_' + errID, '/img/design/calendarika-upload-text.gif') } );
}  

function setUploadError( errID, errMsgID ) {
	document.getElementById( 'upload-zone' + errID ).className = 'input-field-err';
	$('browse_button_' + errID).src = '/img/design/calendarika-upload-text-err.gif';

	Event.stopObserving( 'upload_file_' + errID, 'mouseover' );
	Event.observe( 'upload_file_' + errID, 'mouseover', 
		function(){ changeImgSrc('browse_button_' + errID, '/img/design/calendarika-upload-text-mouse-over-err.gif') } );

	Event.stopObserving( 'upload_file_' + errID, 'mouseout' );
	Event.observe( 'upload_file_' + errID, 'mouseout', 
		function(){ changeImgSrc('browse_button_' + errID, '/img/design/calendarika-upload-text-err.gif') } );

	showTag( errMsgID );
}

function setCaptionError() {
	showTag( 'caption_length_error' );
	$('pic_caption').className = 'ao-type-input-err';
}

function checkUploadForm( uploadFormID ) {
	var uploadFormObj = document.getElementById( uploadFormID );
	var uploadFileNum = document.getElementById( 'file_amount' ).value;

	var filesCount = 0; var what = true;
	if( uploadFormObj.name != 'upload_file_form' ) return false;

	clearError();
	for(var i = 1; i <= uploadFileNum;  i++) {
		var uploadImageObj;
		var visability = document.getElementById( 'tab_file' + i ).style.display;
		if( visability.length == 0 || visability == 'block' ){
			uploadImageObj = document.getElementById( 'upload_file_' + i );
		} else {
			uploadImageObj = document.getElementById( 'upload_url_' + i );			
		}
		if( !uploadImageObj || uploadImageObj.value.length == 0 ) { 
			setUploadError( i, 'upload_file_amount_error_' + i );
			continue; 
		}
		filesCount = filesCount + 1;
		if( ! checkFileFormat( uploadImageObj.value ) ) {
			setUploadError( i, 'upload_file_format_error_' + i );
			what = false;
		}
	}
	if( !what ){ return false; }
	if( filesCount < uploadFileNum ) { return false; }
	
	var CaptionObj = document.getElementById('pic_caption');
	var CaptionObjMax = document.getElementById( 'caption_max_chars' );
	if( CaptionObj && CaptionObjMax && CaptionObj.value.length > CaptionObjMax.value ) {
		setCaptionError();
		return false;
	}

//	var SaveButtonObj = document.getElementById('save');
//	SaveButtonObj.style.display = "none";

	var uuid =  Math.floor(Math.random()*10001);
	uploadFormObj.action = "/upload_image.fcgi?X-Progress-ID=" + uuid;

	display( 'progress-bar_', 0 );
	setFullWindowSize( 'progress-bar-wrapper' );
	setFullWindowSize( 'progress-back' );
	showTag( 'progress-bar-wrapper' );
	ajaxObj = new Ajax.PeriodicalUpdater('progress_bar', '/progress', { method: 'get', frequency: 1, decay: 3, parameters: { 'X-Progress-ID': uuid },
		onSuccess: function(transport){
			var json = transport.responseText.evalJSON();
			switch( json.state ) {
				case 'uploading':
					setProgress( 'progress-bar_', Math.round( json.received * 100 / json.size ) + '' );
					break;
				case 'done' :
					transport.responseText = '100%';
					break;
				case 'starting': 
					transport.responseText = json.state;
					break;
				case 'error':
					finishUploadForm();
					break;
			}
		},
		onFailure: function() {
		}
	});
	return true;
}

progressStatus = 0; progressDirection = 'right';
function finishUploadForm() {
	ajaxObj.stop();
	var fFormObj = document.getElementById('upload_file_form');
	fFormObj.action = '/result'; fFormObj.target = '';
	$('progress-bar_-text').innerHTML = 'Generating ...';
	emptyProgress( 'progress-bar_' );
	setInterval( "playProgress()", 100 );
//	document.getElementById('upload_file_form').submit();
	document.getElementById('upload_data_form').submit();	
}

function playProgress() {
	if( progressDirection == 'right' ) {
		progressStatus = progressStatus + 10;
		plus( 'progress-bar_', '10' );
		if( progressStatus >= 100 ){
			progressDirection = 'left';
		}
	} else {
		progressStatus = progressStatus - 10;
		minus( 'progress-bar_', '10' );
		if( progressStatus <= 0 ){
			progressDirection = 'right';
		}
	}
}

function formUploaded() {
	var response = frames['upload_file_form_target'].document.getElementsByTagName("body")[0].innerHTML;
	if( /success/.test( response ) ) {
		finishUploadForm();
	} else {
		response.match(/image:(\d+)\scode:(.+)/);
		var imageNumber = RegExp.$1; var errorCode = RegExp.$2;
		if( ! errorCode ){ errorCode = 'unknown'; } 
		setUploadError( imageNumber, 'upload_file_' + errorCode + '_error_' + imageNumber );
		hideTag( 'progress-bar-wrapper' );
	}
}

function setFullWindowSize( ObjId ) {
	var Obj = document.getElementById( ObjId );
	var scroll_top = document.documentElement.scrollTop || document.body.scrollTop;
	var scroll_height = document.documentElement.scrollHeight;
	var client_height = window.innerHeight || document.documentElement.clientHeight;
	Obj.style.height = scroll_height+"px";
}

function isWideScreen() {
	if( screen.width ) {	
		if( screen.height / screen.width == 0.75 ) {
			$('not_widescreen_notice').style.display = "block";
			return false;
		}
		$('is_widescreen').value = '1';
		$('not_widescreen').style.display = 'inline';
		$('widescreen_notice').style.display = "block";
	}

	return false;
}

Event.observe( window, 'load', Init );
