/**
 * @desc    kMagic JavaScript Library
 * @author  kubus media
 * @package kMagic
 */



// === WINDOW =====================================================================================

/**
 * @desc   Opens new window and set focus to it
 * @param  url to open, name of window, options of windows
 * @return void
 */
function openWindow( url, name, options){
	var f = window.open( url, name, options);
	f.focus();
}



/**
 * @desc   Opens addtional window for picture preview
 * @param  url to open
 * @return void
 */
function openPicture( url){
	openWindow( 
		url, 'picture', 
		'scrollbars=0,resizable=1,menubar=0,toolbar=0,location=0,status=0'
	);
}

/**
 * @desc   Opens addtional window for picture preview
 * @param  url to open
 * @return void
 */
function openPrint( url){
	openWindow( 
		url, 'print', 
		'scrollbars=1,resizable=1,menubar=0,toolbar=0,location=0,status=0'
	);
}


// === CONFIRM ====================================================================================

/**
 * @desc   Displays confirm screen before deleting element
 * @param  element name
 * @return true on confirm, otherwise false
 */
function deleteElement( element){
	return confirm( "Do you really want to delete '" + element + "\'?");
}



// === UPDATE =====================================================================================

/**
 * @desc   Updates form, image and div in picture list
 * @param  form key, form value, image key, image value, div key, div value
 * @return void
 */
function updateFormImageDiv( form_key, form_value, img_key, img_value, div_key, div_value){
	document.forms['edit_form'].elements[form_key].value = form_value;

	document.images[img_key].src = img_value;

	var image_name = document.getElementById( div_key);
	image_name.innerHTML = div_value;
}



/**
 * @desc   Updates element
 * @param  select menu pointer, element key
 * @return void
 */
function updateElement( select_menu, elem_key){
	if( select_menu.selectedIndex > -1){
		select_value = select_menu.options[select_menu.selectedIndex].value;

		document.forms['edit_form'].elements[elem_key].value = select_value;
	}
}



/**
 * @desc   Updates image in picture list
 * @param  select menu pointer, image key
 * @return void
 */
function updateImage( select_menu, img_key){
	if( select_menu.selectedIndex > -1){
		select_value = select_menu.options[select_menu.selectedIndex].value;

		document.images[img_key].src = select_value;
	}
}



// === MANAGE USER ================================================================================

// suffixes of fields to copy and empty - prefix is either 'shipping_' or 'billing_'
// to each element name, 'useredit[' and ']' are added
var field_suffixes = new Array( 
	'company', 'name', 'phone', 'fax', 'cell_phone', 'address', 
	'location', 'zip_code', 'state', 'country'
);



/**
 * @desc   Copies all form elements defined by field_suffixes
 * @param  void
 * @return void
 */
function copyList(){
	addressForm = document.forms['address_form'];

	for( var i = 0; i < field_suffixes.length; i++) {
		target_name = 'useredit[shipping_' + field_suffixes[i] + ']';
		source_name = 'useredit[billing_' + field_suffixes[i] + ']';

		addressForm.elements[target_name].value = addressForm.elements[source_name].value;
		addressForm.elements[target_name].readOnly = true;
	}
}



/**
 * @desc   Empties all form elements defined by field_suffixes
 * @param  void
 * @return void
 */
function emptyList(){
	addressForm = document.forms['address_form'];

	for( var i = 0; i < field_suffixes.length; i++) {
		element_name = 'useredit[shipping_' + field_suffixes[i] + ']';

		addressForm.elements[element_name].value = "";
		addressForm.elements[element_name].readOnly = false;
	}
}



/**
 * @desc   Checks form elementsa
 * @param  void
 * @return void
 */
function checkContent(){
	element_name = 'useredit[use_different_shipping]';

	if( radioValue( document.forms['address_form'].elements[element_name]) == 0){
		copyList();
	}
}



// === RADIO ======================================================================================

/**
 * @desc   Gets value of given radio object
 * @param  radio object to get value of
 * @return value of radio object
 */
function radioValue( radioObject){
	for ( var i = 0; i < radioObject.length; i++){
		if ( radioObject[i].checked){
			return radioObject[i].value;
		}
	}

	return false;
}



// === SELECT =====================================================================================

/**
 * @desc   Set entry of given select menu
 * @param  selectMenu, selectValue
 * @return void
 */
function setSelectMenu( selectMenu, selectValue){
	for( var i = 0; i < selectMenu.length; i++){
		if( selectMenu.options[i].value == selectValue){
			selectMenu.selectedIndex = i;
			return;
		}
	}
}

