$(window).load(function () {
	$.fieldJump();
	$.fieldSwitch();
	$.actionCookie('this_location', 'this_scroll', 'this_open');
	$.actionValid();
	$.actionPage();
	$.actionObject();
	//$.actionSubmit();
	    });

//SELECT
jQuery.fieldJump = function () { $('select.fieldjump').live('change', function() { var $id = $(this).parents('form').attr('id'); $('form#' + $id).submit(); }); }

jQuery.fieldSwitch = function () { 
	$.fn.action = function() {  
		var $form = $(this).parents('form');
		var $name = $(this).attr('name');
		var $option = $(this).children('option');
		var $class = ".fieldswitch-" + $name;
		var $value = $(this).val().toLowerCase();
		$form.find($class).parent('div.row').hide();
		$form.find($class + $value).parent('div.row').show();     }
	$('select.fieldswitch').each(function() { $(this).action(); });
	$('body').delegate('select.fieldswitch', 'change', function() { $(this).action(); });     }

jQuery.actionSubmit = function () { 
	$('body').append('<div id="blank"><div id="load"><span></span><span></span><span></span><span></span><span></span></div></div>');
	var $span = $('div#load').children('span');
	var $key = 0;
	$('form').submit(function() { $('div#blank').show(); action (); });
	function action() {
		var $current = $span.eq($key);
		$current.animate({height: '78px', marginTop: '0'}, 'slow')
			.animate({height: '38px', marginTop: '20px'}, 'slow');
		$key += 1;
		if ($key == 5) { $key = 0; setTimeout (action, 2000); }
		else { setTimeout (action, 500); }     }     }
	
	


//ACTION VALID
jQuery.actionValid = function ($location, $scroll, $open) { 
	$('form').submit(function() { 
		$(this).find('span.bulleterror').remove();
		$input = $(this).find('input, select, textarea');
		var $valid = true;
		$input.each(function() { 
			var $error = false;
			var $value = $(this).val();
			if ($(this).is('.fieldreq') && !$(this).fieldValid('REQUIRED')) { $error = 'Required'; }
			else if ($(this).is('.fieldemail') && !$(this).fieldValid('EMAIL')) { $error = 'Invalid email'; }
			else if ($(this).is('.fieldpassword') && !$(this).fieldValid('PASSWORD')) { $error = 'Invalid password - atleast four characters, letters &amp; numbers only'; }
			else if ($(this).is('.fieldpasswordmatch') && !$(this).fieldValid('PASSWORDMATCH')) { $error = 'Typing error'; }
			else if ($(this).is('.fieldurl') && !$(this).fieldValid('URL')) { $error = 'Invalid URL'; }
			else if ($(this).is('.fielddate') && !$(this).fieldValid('DATE')) { $error = 'Invalid date'; }
			else if ($(this).is('.fieldimg') && !$(this).fieldValid('IMG')) { $error = 'Invalid image type - jpg/jpeg files only'; }
			else if ($(this).is('.fielddoc') && !$(this).fieldValid('DOC')) { $error = 'Invalid document type - doc/docx/xls/csv/pdf/mp3/wav/avi/mov/mpeg/mpg/ram/rm files only'; }
			else if ($(this).is('.fieldmedia') && !$(this).fieldValid('MEDIA')) { $error = 'Invalid document type - bmp/gif/jpg/jpeg/png/swf files only'; }
			if ($error) { $(this).parents('div.row').append('<span class="bullet bulleterror">' + $error + '</span>'); $valid = false; }     }); //stop submit
		if ($valid && $(this).parents('div.objecttxtbox').length == 1) { $(this).winClose('this_open'); }
		return $valid;     });     }
		
jQuery.fn.fieldValid = function ($type) {
	var $value = $(this).val();
	if ($type == 'REQUIRED' && !$value) { return false; }
	else if ($type == 'EMAIL' && $value) { var $pattern = /^[\w.+-]+@[\w.-]+\.[a-z]{2,6}$/; return $pattern.test($value); }
	else if ($type == 'PASSWORD') { var $pattern = /^[\w-]{4,10}$/; return $pattern.test($value); }
	else if ($type == 'PASSWORDMATCH') { $match = $(this).prevAll('input.fieldpassword:eq(0)').val(); if ($value == $match) { return true; } else { return false; } }
	else if ($type == 'URL' && $value) { if ($value.substr(0,4) == 'www.') { $value = 'http://' + $value; } var $pattern = /^(http|https):\/\/[\w-.]+[\w.]{2,6}/; return $pattern.test($value); } 
	else if ($type == 'DATE' && $value) {
		var $day = $(this).val(); var $month = $(this).nextAll('select:eq(0)').val() - 1; var $year = $(this).nextAll('select:eq(1)').val();
		var $date = new Date($year, $month, $day);
		if ($day != $date.getDate()) { return false; } else { return true; }      }
	else if (($type == 'IMG' || $type == 'DOC'|| $type == 'MEDIA') && $value && $value != 'Browse . . .' ) {
		var $split = $value.split('.');
		var $ext = $split[$split.length-1].toLowerCase();
		if ($type == 'IMG') { var $allow = new Array('gif','jpg','jpeg','png'); }
		else if ($type == 'DOC') { var $allow = new Array('doc','docx','xls','csv','pdf','mp3','wav','avi','mov','mpeg','mpg','ram','rm'); }
		else if ($type == 'MEDIA') { var $allow = new Array('gif','jpg','jpeg','png','swf'); }
		for (var $item in $allow) { if ($ext == $allow[$item]) { return true; } }
		return false; }
	else { return true; }    }  

//ACTION COOKIE
jQuery.actionCookie = function ($location, $scroll, $open) { 
	if ($.cookieRead($location) == $.locationPath()) { $(document).scrollTop($.cookieRead($scroll)); }
	else { $.cookieWrite($open, '', -1); }
	$.cookieWrite($location, '', -1);
	$.cookieWrite($scroll, '', -1);
	$(window).unload(function() { $.cookieWrite($location, $.locationPath(), 1); $.cookieWrite($scroll, $(window).scrollTop(), 1); });     }
	
jQuery.actionAdmin = function ($type, $name) {
	$select = $('select[name="' + $name + '"]');
	$option = $select.children('option[value=' + $type + ']');
	if ($type == 'SITE') { $('div#win-site-update').winShow('COOKIE', 'CLOSEALL'); }
	else if ($type == 'ADMIN') { $('div#win-admin-update').winShow('COOKIE', 'CLOSEALL'); }
	else if ($type == 'SHOW') { 
		if ($option.text() == 'Show CMS') { $('div.rowadmin, input.buttonadmin').slideDown('fast'); $('div.objectadmin').parent('div.block').slideDown('fast'); $('ul.menu li.dead').show('fast'); $option.text('Hide CMS'); }
		else { $('div.rowadmin, input.buttonadmin').slideUp('fast'); $('div.objectadmin').parent('div.block').slideUp('fast'); $('ul.menu li.dead').hide('fast'); $option.text('Show CMS'); }     }
	$select.children('option:first').attr('selected', 'selected');     }

//ACTION PAGE	
jQuery.actionPage = function () { 
	$('input.button[name="link_insert"]').live('click', function() { 
		var $form = $(this).parents('form');
		$("div#win-child-insert").clone().attr('id','win-child-insert-FIRST').insertAfter("div#win-page-insert");
		var $win = $('div#win-child-insert-FIRST');
		$win.find('input.button[value="cancel"], input.button[value="close"]').live('click', function() { $win.empty().remove(); });
		$parent = parseInt($form.find('input[name="link_parent"]').val());
		$win.find('input[name="page_relative"]').val($parent);
		$win.find('input[name="page_parent"]').val($parent);
		$win.find('input[name="page_path"]').val($parent);
		$win.winShow('', '');     });
	
	$('select.fieldlink').live('change', function() { 
		var $form = $(this).parents('form');
		var $value = $(this).val();
		var $id = $form.attr('id');
		var $function = $form.find('input[name="link_function"]').val();
		var $location = $form.find('input[name="link_location"]').val() + '?path=' + $form.find('input[name="link_path"]').val();
		if ($function == 'EXPORT' || $function == 'IMPORT') { $form.submit(); }
		else if ($value == 'EDIT') { $.cookieUpdate('this_open', '', 'edit_link'); location.href = $location; }
		else if ($value == 'DELETE') { 
			var $hidden = '<input name="link_delete" type="hidden" value="delete" />';
			$.winDelete($id, $hidden); 
			$('div#win-delete-' + $id).winShow();     }
		else if ($value == 'INSERTBEFORE' || $value == 'INSERTAFTER' || $value == 'INSERTCHILD') { 
			$("div#win-page-insert").clone().attr('id','win-page-insert-' + $id).insertAfter("div#win-page-insert");
			var $win = $('div#win-page-insert-' + $id);
			$win.find('input.button[value="cancel"], input.button[value="close"]').live('click', function() { $win.empty().remove(); });
			$win.find('input[name="page_insert"]').val($value);
			$win.find('input[name="page_relative"]').val(parseInt($form.find('input[name="link_id"]').val()));
			$win.find('input[name="page_parent"]').val(parseInt($form.find('input[name="link_parent"]').val()));
			$win.find('input[name="page_path"]').val(parseInt($form.find('input[name="link_path"]').val()));
			$win.find('input[name="page_ancestor"]').val($form.find('input[name="link_ancestor"]').val());
			var $title = $form.find('input[name="link_title"]').val();
			var $type = $form.find('input[name="link_type"]').val();
			$win.find('select[name="page_insert"] option').each(function() { $label = $(this).text() + " " + $title; $(this).text($label); });
			$win.winShow();    }
		
		$(this).find('option:first').attr('selected', 'selected');     });     }

//ACTION OBJECT
jQuery.actionObject = function () { 
	$('select[name="object_type"]').live('change', function() { 
		var $form = $(this).parents('form');
		var $value = $(this).val();
		if ($value == "TXTPLUS") { $value = "TXT"; var $extra = true; } else { var $extra = false; }
		var $win = $('div#win-object-insert-' + $value);
		$(this).find('option:first').attr('selected', 'selected');
		$('div#win-object-type').winHide();
		$win.winShow('', '');
		if ($extra) { $win.find('input[name="object_extra"]').val(1); }
		$win.find('input[name="object_type"]').val($value);
		$win.find('input[name="object_seq"]').val($form.find('input[name="object_seq"]').val());     });	
	
	$('input[name="object_insert"]').live('click', function() { $('div#win-object-type').winShow('', ''); });
	$('input[name="object_marker"]').live('click', function() { 
		var $id = $(this).parents('form').attr('id');
		var $win = $('div#' + $id.replace('form-object-list', 'win-object-update'));
		$win.winShow('COOKIE', '');     });
	$('select.fieldobject').change(function() { 
		var $form = $(this).parents('form');
		var $value = $(this).val();
		var $id = $form.attr('id');
		if ($value == 'UPDATE') { 
			var $win = $('div#' + $id.replace('form-object-list', 'win-object-update'));
			$win.winShow('COOKIE', '');     }
		else if ($value == 'INSERTBEFORE' || $value == 'INSERTAFTER') { 
			var $win = $('div#win-object-type');
			$win.winShow('', '');
			$seq = parseInt($form.find('select[name="object_seq"]').val()); if ($value == 'INSERTAFTER') { $seq ++; }
			$win.find('input[name="object_seq"]').val($seq);     }
		else if ($value == 'DELETE') { 
			var $hidden = '<input name="object_delete" type="hidden" value="delete" />';
			$.winDelete($id, $hidden); 
			$('div#win-delete-' + $id).winShow('', '');     }
		$(this).find('option:first').attr('selected', 'selected');     });     }
