 var themeCss;
var tweenRunning = false;
var devicepickerOpen = false;

window.addEvent('domready', function()
{

	/* Opera spesific style */
	if(Browser.name == 'opera')
		var operaCss = new Asset.css('_css/opera.css',{});
	
	/* Add custom theme css if set by view */
	if(themeCss !== undefined)
		var themeCssAsset = new Asset.css(themeCss,{});

	/* Standard function to give mCCWrapper the remaining window height if avoidElements is defined */
	autosize_mCCWrapper();

	/* Standard function to mark all last listitems with class=last in the current document - default enabled */
	markLastLis();
	
	/* Needs to be here cause of IE gradient needs height value */
	myMinHeight($$('div.content'),100); 

	/* Correct liststyling when element is active */
	stripborder($$('ul.userinfonav li'));
	
	/* Enable devicepicker popup */
	Array.each($$('.enable_devicepicker'),function(el,i){
		var el_link = el.getElements('a');

		el.addEvent('click',function(e){
			
			if(e!==undefined)
				e.stop();
			
			var change = true;
			
			if(el.hasClass('prompt'))
			{
				change = confirm('You will lose any unsaved work if you change device now. Continue?');
			}

				if(!devicepickerOpen && change)
				{
					var link = (el.get('href') != null ? el.get('href') : el_link.get('href'));
					setRedirectUrl(link);
					
					var reqDialog = new MooDialog.Request('/device/', null, {
						'class': 'MooDialog devicepicker',
						autoOpen: false
					});
	
					reqDialog.addEvents({
							show: function(e){
								loc = '/device/devicepicker/';
								picker_getdevices(loc);
								enable_requestdevice();
							},
							beforeOpen: function(e){
								devicepickerOpen = true;
							},
							close: function(e){
								devicepickerOpen = false;
							}
					});

					reqDialog.setRequestOptions({
						onRequest: function(){
						},
						onComplete: function(){
							blurme($$('.blurme'));
						}
					}).open();
				}

			
		});
	});
	
	/* Enable devicepicker onload */
	if($(document.body).hasClass('noSelectedDevice'))
	{
		$('selected_device').getFirst('a').fireEvent('click');
	}
	
	
	/* Enable toggle on product details bar hover */
	Array.each($$('ul.details'),function(el,i){
	
		var	el_arr = new Array(el,el.getPrevious());
		var el_lis = el.getChildren('li.delimiter');
	
			$$(el_arr).addEvents({
				'mouseover' : function(e){
				Array.each(el_lis,function(el_li,i){
						if(el_li.hasClass('toggle'))
							el_li.removeClass('toggle');
						else
							el_li.addClass('toggle');			
					});
				},
				'mouseout' : function(e){
				Array.each(el_lis,function(el_li,i){
						if(el_li.hasClass('toggle'))
							el_li.removeClass('toggle');
						else
							el_li.addClass('toggle');			
					});
				}
			});

	});
	
	/* Enable clear of input field on focus */
	Array.each($$('input.clearonfocus'),function(el,i){
		el.addEvent('focus', function(e){
			el.set('value','');		
		});
	});

	/* Calc dynamic width of menu placement on designstudiopage */	
	Array.each($$('table.barthree td.autosize'),function(el,i){
		var tmpWidth = $('elm1').getSize().x + $('elm2').getSize().x + $('elm3').getSize().x;
		el.set('width',tmpWidth);
	});

	/* generic code to open all links with rel=_blank in new window, to pass validation in xhtml strict. */
	$$('a').each(function(link,i){
		if(link.get('rel')=='_blank') link.setProperty('target','_blank');
	});	
	/* end link code */
	
	/* cart checks witch radio buttons where selected */
	setShippingAdressSelection();

	$$('.btnadd').each(function(element, i){
        element.addEvent('click', function(e){
            var newelement = element.get('rel');
            $(newelement).value = parseInt($(newelement).value) + 1;

            $('displayFormCart').action = '/cart/cartQtyUpdater';
            $('displayFormCart').submit();
        });
    });

    $$('.btnsub').each(function(element, i){
        element.addEvent('click', function(e){
            var newelement = $(element.get('rel'));
            $(newelement).value = ( (parseInt($(newelement).value) - 1) >= 0 ? parseInt($(newelement).value) - 1 : 0);

            $('displayFormCart').action = '/cart/cartQtyUpdater';
            $('displayFormCart').submit();
        });
    });

	
	enableEnterSubmit();
	if($('loginform') != null)
	{
				$('loginform').addEvent('submit', function(e){
					e.stop();
					ajax_login($('loginform'));
				});		
	}

	if($('registerform') != null)
	{
				$('registerform').addEvent('submit', function(e){
					e.stop();
					ajax_register($('registerform'));
				});		
	}
	if($('checkoutform') != null)
	{
				$('checkoutform').addEvent('submit', function(e){
					e.stop();
					ajax_shipping_address($('checkoutform'));
				});		
	}
	
	Array.each($$('.autopost'),function(el,i){	
			el.submit();
	});
//	centerElement($('barthree_links'));

});

window.addEvent('resize', function()
{
	/* Standard function to give mCCWrapper the remaining window height if avoidElements is defined */
	autosize_mCCWrapper();
});

function myMinHeight(elements,minheight)
{
	try
	{
		Array.each(elements,function(el,i){
			if(el.getSize().y < minheight)
				el.setStyle('height',minheight+'px');
			else
				el.setStyle('height',el.getSize().y+'px');
		});
	} catch (e){}
}

function stripborder(lis)
{
	try
	{
		Array.each(lis,function(el,i){
			if(el.hasClass('active')){
				prev = el.getPrevious('li');
				if(typeOf(prev) != 'null')
					prev.setStyle('background-image','none');
			}
		});
	} catch(e){}
}

function setShippingAdressSelection()
{
	var cartform = $('cartform');

	if(cartform != null)
	{
		Array.each(cartform.getElements('input[type=radio]'), function(el, i)
		{
			if(el.checked)
			{
				if(el.value == 1)
				{
					toggeShippingAdressSelection(true);
				}
				else
				{
					Array.each(cartform.getElements('input[type=text]'), function(el, i){
						el.readOnly = '';
					});

					cartform.getElement('select').disabled = false;
				}
			}
		});
	}
}

function toggeShippingAdressSelection(profile)
{
	var cartform = $('checkoutform');

	if(cartform != null)
	{
		Array.each(cartform.getElements('input[type=text]'), function(el, i){
			if(profile)
			{
				el.value = el.get('alt');
				el.readOnly = 'readonly';
			}
			else
			{
				el.value = '';
				el.readOnly = '';

			}
		});
		
		if(profile)
		{
			cartform.getElement('select').disabled = true;
			cartform.getElement('select').value = cartform.H_IDCOUNTRY.value;	
		}
		else
		{
			cartform.getElement('select').disabled = false;
			cartform.getElement('select').value = 0;
		}
	}
}

function setDone()
{
	var cartform = $('cartform');

	if(cartform != null)
	{
		cartform.getElement('select').disabled = false;
		
		cartform.submit();
	}
}


function filterdevice()
{
	var brand = $('brandselector').value;
	var gadget = $('gadgetselector').value;
	var loc = '/device/devicepicker/' + brand + '/' + gadget;
	picker_getdevices(loc);
}

function picker_getdevices(loc)
{
	if(loc != 'false')
	{
		var req = new Request({
		    url: loc,
		
		   	onComplete: function(result) {
		   		try{
		   			$('pickerC').set('html', result);
		   		}catch(e){
		   			$('pickerC').set('html', result);
		   		}
		    }
		}).send();
	}
}

function update_devicepicker_height()
{
	
}

function enableSlider()
{
}

function moredesigns(loc)
{
	if(loc != 'false')
	{
		var req = new Request({
		    url: loc,
		
		   	onComplete: function(result) {
		   		$('moredesignsC').set('html', result);
		    }
		}).send();
	}	
}

function ds_startover(){
	try
	{
		var flashObj = document.getElementById('designstudio');
		flashObj.callStartOver();
	}
	catch(e)
	{
		return null;
	}
}
function ds_changedevice(){
	try
	{
		var flashObj = document.getElementById('designstudio');
		flashObj.callDeviceSelector();
	}
	catch(e)
	{
		return null;
	}

}
function ds_help(){
	try
	{
		var flashObj = document.getElementById('designstudio');
		flashObj.callHelp();
	}
	catch(e)
	{
		return null;
	}
}

function setRedirectUrl(_url)
{
	var req = new Request({
	    url: '/select/redirect',
	    method : 'post',
        data: {
        	redir_url: _url
        },
	   	onComplete: function(result) {
	    },
			async: false
	}).send();
}

function selectDeviceFromFlash(idmanufactor, idgadgettype, iddevice)
{
	var req = new Request({
	    url: '/device/selectDeviceFromFlash/' + idmanufactor + '/' + idgadgettype + '/' + iddevice,
	    method : 'post',

        onComplete: function(result) {
            $('selected_device').innerHTML = result;
	    }
	}).send();
}

/* function for devicepicker up and down arrows */
function upanddown(trigger,frame)
{

	var rowheight = 261;
	var scroll = frame.getScroll();
	var frameheight = frame.getSize().y;
	var up = $(trigger).getParent().getFirst('a.up');
	var down = $(trigger).getParent().getFirst('a.down');
	var scrollFx = new Fx.Scroll(frame,{
		onComplete: function(){
			tweenRunning = false;
		}
	});
	if(!tweenRunning)
	{
		tweenRunning = true;
	
		if($(trigger).hasClass('up'))
		{
			if(scroll.y >= rowheight)
			{
				scrollFx.start(0,(scroll.y-rowheight));
			}
			else
			{
				scrollFx.toTop();
				up.addClass('disabled');
			}
			down.removeClass('disabled');
		}
		else
		{
			if(scroll.y < (frameheight-rowheight))
			{
				scrollFx.start(0,(scroll.y+rowheight)).chain(function(){
					// check if is last row
					if((frame.getScroll().y+rowheight) > frameheight)
						down.addClass('disabled');
				});
				up.removeClass('disabled');
			}
		}
		

	}
	return false;
}


function blurme(els)
{
	Array.each(els,function(el,i){
		el.set('unselectable','on');
	});
}

function enable_requestdevice()
{
	Array.each($$('#requestdeviceC a'),function(el,i){
		el.addEvent('click',function(e){
			e.stop();
			loc = '/device/requestdevice/';
			picker_getdevices(loc);
		});
	});
}

function do_requestdevice(textarea)
{
	
	var req = new Request({
	    url: '/device/sendrequestdevice/',
			method: 'POST',
			data: {
				'request_text': textarea.value
			},
			
	   	onComplete: function(result) {
	   		try{
	   			$('pickerC').set('html', result);
	   		}catch(e){
	   			$('pickerC').set('html', result);
	   		}
	    }
	
	}).send();
	
	
	return false;
}


function enableEnterSubmit()
{
	Array.each($$('input[type=text],input[type=password]'),function(el,i){
//		if(!el.form.hasClass('disable_submit'))
		if(el.form.name != 'registerform' && el.form.name != 'loginform' && el.form.name != 'checkoutform')
		{
			el.addEvent('keyup',function(e){
				if(e.code==13) // Enter key
				{
					el.form.submit();
				}
			});
		}
	});
}

function ajax_login(form)
{
	//set data vars
	var data = {};
	data.username = form.username.value;
	data.password = form.password.value;
	
	// send request
	new Request({
		url : form.get('action'),
		method : 'post',
		data : data,
		onComplete : function(response){
			if(response.substr(0, 7) == 'http://')
			{
				window.location = response;
			}
			else
			{
				$(form.get('name') + 'CC').innerHTML = response;
			}
		}
	}).send();
	
}

function ajax_register(form)
{
	//set data vars
	var data = {};
	data.firstname = form.firstname.value;
	data.lastname  = form.lastname.value;
	data.address   = form.address.value;
	data.address2  = form.address2.value;
	data.zipcode   = form.zipcode.value;
	data.town      = form.town.value;
	data.state     = form.state.value;
	data.country   = form.country.value;
	data.email     = form.email.value;
	data.agreed		 = form.agreed.checked;
	
	// send request
	new Request({
		url : form.get('action'),
		method : 'post',
		data : data,
		onComplete : function(response){
			if(response.substr(0, 7) == 'http://')
			{
				window.location = response;
			}
			else
			{
				$(form.get('name') + 'CC').innerHTML = response;			
			}
		}
	}).send();	
}

function ajax_shipping_address(form, sum)
{
	//set data vars
	var data = {};
	data.address1   = form.shipping_address1.value;
	data.address2  = form.shipping_address2.value;
	data.zip       = form.shipping_zip.value;
	data.city      = form.shipping_city.value;
	data.state     = form.shipping_state.value;
	data.country   = form.shipping_country.value;
	// data.invoice   = form.invoice.value;
	data.sum_total = sum;
	
	Array.each(form.getElements('input[type=radio]'), function(el, i)
	{
		if(el.name == 'payment_method' && el.checked)
		{	
			data.payment_method = el.value;
		}
	});
	
	// if(sum == 0)
	// {
	// 	// form.set('action', window.location.href + 'cart/complete_checkout');
	// 	form.set('action', '/cart/complete_checkout');		
	// }
	
	// send request
	new Request({
		url : form.get('action'),
		method : 'post',
		data : data,
		onComplete : function(response){

			if(response.substr(0, 4) == 'http')
			{
				form.removeEvent('submit');
				form.set('action', response);
				form.submit();
			}
			else
			{
				$(form.get('name') + 'CC').innerHTML = response;			
			}
		}
	}).send();
}
