

var jsReady = false;
function isReady() {
 return jsReady;
}
function pageInit() {
 jsReady = true;

}
function thisMovie(movieName) {
 if (navigator.appName.indexOf("Microsoft") != -1) {
	 return window[movieName];
 } else {
	 return document[movieName];
 }
}

function newDone() {
	if (thisMovie('MagPreview').isMagSelected()) {
		var dat = thisMovie('MagPreview').getCropCoords();
		$('size_form_mag_data').value = dat;
		$('size_form').submit();
	} else {
		alert('Please select a magazine cover before continuing');
	}
}

function confirmSave() {
	window.location.href="/size";
}

function errorNoMagSelected() {
	alert('Please select a magazine cover before continuing');
}


function setupSizeControls() {
	if ($('size_save_med'))
	$('size_save_med').addEvent('click', (function() {
		
//		saveToSession(Json.toString({sid:0}),(function() { window.location.href='/config/account'; }));
		//saveToSession(Json.toString({sid:0}),(function() { window.location.href='/post'; }));
		$('final_form_size_data').value=0;
		$('final_form').submit();
	}).bind(this));	
	
	if ($('size_save_lg'))
	$('size_save_lg').addEvent('click', (function() {
//		saveToSession(Json.toString({sid:1}),(function() { window.location.href='/config/account'; }));
		//saveToSession(Json.toString({sid:1}),(function() { window.location.href='/post'; }));
		$('final_form_size_data').value=1;
		$('final_form').submit();
		
	}).bind(this));	
}

function updateOverlayId(id) {
	/* to be used by /magazines */
	saveToSession(Json.toString({oid:id}),(function() { window.location.href='/upload'; }));
}


function goToCreation(data) {
	$('creation_form_image_data').value = data;
	$('creation_form').submit();
}

function goToSize(data) {
	$('size_form_mag_data').value = data;
	$('size_form').submit();
}

function goToPost(data) {
	$('post_form_size_id').value = data;
	$('post_form').submit();
}

function saveToSession(data,cb) {
	new Ajax('/config/saveToSession', {
		method: 'post',
		data: {'data':data},
		onComplete: function(res) {
			//document.getElementsByTagName('body')[0].appendChild(new Element('div').setHTML(res));
			res = res.trim();
			var p = res.split(':');
			
			if (p[0] == '+') {
				if (typeof cb == "function")
					cb();
			} else {
				// todo: handle error
				alert('Sorry, there was an error. Please try again. If the problem continues, please contact us.');
				logout();
			}
		}
	}).request();
}

function doVote(mag_id,vote) {
	new Ajax('/config/doVote', {
		method: 'post',
		data: {'mag_id':mag_id,'vote':vote},
		onComplete: function(res) {
			res = res.trim();
			var p = res.split(':');
			
			if (p[0] == '+') {
				window.location.href = '/rate';
			} else {
				// todo: handle error
			}
		}
	}).request();
}

function swapToLogin() {
	$('loginHeader').setStyle('display','none');
	$('loginHeader2').setStyle('display','block');
	$('vpasswordRow').setStyle('display','none');
	$('account_create').removeClass('accountCreate');	
	$('account_create').addClass('accountLogin');
	//$('account_create').setStyle('background-position', '0px -152px');
}

function swapToSignup() {
	$('loginHeader2').setStyle('display','none');
	$('loginHeader').setStyle('display','block');
	$('vpasswordRow').setStyle('display','');
	//$('vpassword').set('name','vpassword');
	$('account_create').removeClass('accountLogin');
	$('account_create').addClass('accountCreate');	
}

function loginAndRefresh() {
	new Ajax('/user/auth', {
			method: 'post',
			data: $('authForm').toQueryString(),
			onComplete: function(res) {
				res = res.trim();
				var p = res.split(':');
				if (p[0] == '+') {
					if (window.location.href.contains('login')) {
						window.location.href='/my';
					} else {
						window.location.href=window.location.href;
					}
				} else {
					$('login_status').setText(p[1]).setStyle('border','2px solid red');
				}
			}
		}).request();	
}


function createAccountAndSave() {
	
	
		new Ajax('/user/auth', {
				method: 'post',
				data: $('authForm').toQueryString(),
				onComplete: function(res) {
					res = res.trim();
					var p = res.split(':');
					if (p[0] == '+') {
						window.location.href='/post';
					} else {
						$('login_status').setText(p[1]).setStyle('border','2px solid red');
					}
				}
			}).request();	
}

function makePrivate(el) {
	new Ajax('/config/makePrivate', {
				method: 'post',
				data: 'id='+$('mag_id').value,
				onComplete: function(res) {
					res = res.trim();
					var p = res.split(':');
					if (p[0] == '+') {
						alert('Thank you');
					} else {
						alert('Thank you');
					}
					$(el).setStyle('display','none');
				}
			}).request();	
}

function setupLoginForm() {
	
}	

function logout() {
	new Ajax('/user/logout', {
		method: 'get',
		onComplete: function(res) {
			PHPSESSID = '';
			UID = -1;
			window.location.href='/';
		}
	}).request();
}

function loggedIn() {

	if (UID != -1) {
	
		return true;
	} else {
		return false;
	}
}


try {
var MagBrowser = new Class({
		magOverlays : {},
		loadedNames : [],
		scrollPos:0,
        scrollPix:592,
		maxScrollPos:0,
		readyScroll:false,
		prefix:'',
		startHidden:false,
		initialize: function(pref,startHide) {
			var arVersion = navigator.appVersion.split("MSIE")
			var version = parseFloat(arVersion[1])
			
			this.prefix = pref;
				
			if (version && (version >= 5.5) && document.body && document.body.filters) {
				
				this.doPngFix = true;
			}
			this.scroll = new Fx.Scroll(this.prefix+'icont', {
/*								wait: true, */
								link: 'ignore',
								duration: 0,
								offset: {'x': 0, 'y': 0},
								transition: Fx.Transitions.Quad.easeOut,
								start: (function() { this.readyScroll = false; }).bind(this),
								complete: (function() { this.readyScroll = true; }).bind(this)
					        });
			this.preloadOverlays();
			this.initControls();
			this.readyScroll = true;
			this.startHidden = startHide;
			
		},
		setMagProps: function(cx1,cy1,cx2,cy2) {
			if (!$defined(this.tehMagProps)) 
				this.tehMagProps = new Object();
			
			this.tehMagProps.cx1 = cx1;
			this.tehMagProps.cy1 = cy1;
			this.tehMagProps.cx2 = cx2;
			this.tehMagProps.cy2 = cy2;
		
		},
		setImageId: function(id) {
			if (!$defined(this.tehMagProps)) 
				this.tehMagProps = new Object();
			this.tehMagProps.iid = id;
		},
		setMagId: function(id) {
			if (!$defined(this.tehMagProps)) 
				this.tehMagProps = new Object();
			this.tehMagProps.mid = id;
		},
		setMagName: function(name) {
			if (!$defined(this.tehMagProps)) 
				this.tehMagProps = new Object();
			this.tehMagProps.name = name;
		},
		hasLoaded: function(some) {
			
			return this.loadedNames.contains(some);
		},
		addPreloadedOverlay : function(img) {
			k = img.src.substring(img.src.lastIndexOf("/")+1,img.src.length).replace(/\.png/i,'');
			
			if (this.doPngFix)
				this.magOverlays[k] = mooFixPng(img);
			else 
				this.magOverlays[k] = img;
				
			this.loadedNames.push(k);
		},
		preloadOverlays : function () {
			
			this.images = new Asset.images( magOverlays, {
							onProgress: (function(i) {
								this.addPreloadedOverlay(new Element('img',{'src':this.images[i].src}));

							}).bind(this),
							onComplete: function() {
								//console.log(mag_overlays);
							}
						});
					
		},
	
		tryScrollTo: function(pos) {
			//console.log('tryscrollto: '+pos+' current: '+this.scrollPos+'  max: '+this.maxScrollPos);
			if (!this.readyScroll || pos == this.scrollPos || pos < 0 || pos > this.maxScrollPos) 
				return false;
			
			$(this.prefix+'scroll_to_'+this.scrollPos).removeClass('magpages_inactive');
			
			if (pos == this.maxScrollPos) {
				$(this.prefix+'create_right').removeClass('create_right_active').addClass('create_right_inactive');
			} else {
				if (this.scrollPos == this.maxScrollPos) {
					$(this.prefix+'create_right').removeClass('create_right_inactive').addClass('create_right_active');
					
				}
			}
			
			if (pos == 0) {
				$(this.prefix+'create_left').removeClass('create_left_active').addClass('create_left_inactive');
			} else {
				if (this.scrollPos == 0) {
					$(this.prefix+'create_left').removeClass('create_left_inactive').addClass('create_left_active');
					
				}
			}
			
			$(this.prefix+'scroll_to_'+pos).addClass('magpages_inactive');
			
			this.scrollPos = pos;
			this.scroll.scrollTo(this.scrollPos*this.scrollPix,0);
		
		},
		tryScrollRight: function() {
			this.tryScrollTo(this.scrollPos+1);
		},
		tryScrollLeft: function() {
			this.tryScrollTo(this.scrollPos-1);
		},
		doneCreating: function() {
			//thisMovie('MagPreview').saveCropCoords();
			newDone();
		},
		
		initControls: function() {
			if (typeof reassignButton == 'function') {
				if ($('cropbtn'))
				$('cropbtn').removeEvents('click').addEvent('click', reassignButton);
			} else {

				if ($('cropbtn'))
				$('cropbtn').addEvent('click', (function() {
					/* saveToSession(Json.toString(this.tehMagProps),(function() { window.location.href='/size'; })); */
                    $('cropbtn').removeEvents('click');
                    $('cropbtn').toggleClass('disabledPost');
					this.doneCreating();
				}).bind(this));
			}	
			
			if ($(this.prefix+'create_right') && $(this.prefix+'create_left')) {
				$(this.prefix+'create_right').addEvent('click', this.tryScrollRight.bind(this));
				$(this.prefix+'create_left').addEvent('click', this.tryScrollLeft.bind(this));
				
				if (!this.startHidden)
				$(this.prefix+'create_right').removeClass('create_right_inactive').addClass('create_right_active');
			}
		},

		initPageLinks: function() {
			for(var i=0;i<=this.maxScrollPos;i++) {
				var a = new Element('a');
				a.id = this.prefix+'scroll_to_'+i;
				a.set('text','Page '+(i+1));
				
				if (i!=0) {
					$(this.prefix+'magpages').appendText(' - ');
					
				} else {
					a.addClass('magpages_inactive');
				}
				
				a.addEvent('click', (function(el) {
						var pos = el.id.replace(this.prefix+'scroll_to_','').toInt();
						this.tryScrollTo(pos);
					}).bind(this,a));
					
				a.inject($(this.prefix+'magpages'));
			}
		},
		
		updateSel: function(el) {
			// updateSel: function(some,id,el) {
			
			if (this.lastSel && $(this.lastSel))
				this.lastSel.removeClass('magSel');
				
			el.addClass('magSel');
			this.lastSel = el;
//			k = el.src.substring(el.src.lastIndexOf("/")+1,el.src.length).replace(/_SIL\.png/gi,'');
//			k = k.replace(/CS_/gi,'CL_');
			
			var oid = el.id.substring(el.id.lastIndexOf("_")+1,el.id.length);
			//console.log(this.tehMagProps.oid);
			thisMovie("MagPreview").loadMagById(oid);
		}

		
	});
} catch(e){}


function mooFixPng(img) {
	
	var styles = 'width:'+img.width+'px'+';height:'+img.height+'px';
	styles += ';display:inline-block;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+img.src+'\', sizingMethod=\'scale\');'
//	var id = img.id;				
//	img.dispose();
	
	return new Element('span').setStyles(styles);
	
}





function validate(reason) {
	
	$('msg_div').removeClass('err');
	
	$('ea_div').removeClass('err');

	$('ea_lbl').setText('Email Address:');
	
	
	
	$('msg_lbl').setText('Message:');
	
	var err = 0;
	if ($('ea').value == "" || $('ea').value.indexOf('@') < 1 || $('ea').value.indexOf('.') < 3 ) {
		//alert('Please provide your email address'); err = 1;
		$('ea_lbl').setText('Error: Please provide a valid email address');
		$('ea_div').addClass('err'); err = 1;
	}
	
	if (reason) {
		$('reason_div').removeClass('err');
		$('reason_lbl').setText('Reason for Contacting Us:');
	
		if ($('reason').selectedIndex == 0) {
			$('reason_lbl').setText('Error: Please select a reason for contacting us');
			$('reason_div').addClass('err'); err = 1;
		}
	}
	if ($('msg').value.length < 15) {
		$('msg_lbl').setText('Error: Please enter a message with more than 15 characters');
		$('msg_div').addClass('err'); err = 1;
	} 

	if (!err) {
		$('contact_form').submit();
	}

}

function errorHandler(message, url, line)
{
	// message == text-based error description
	// url     == url which exhibited the script error
	// line    == the line number being executed when the error occurred

	// handle the error here

	// stop the event from bubbling up to the default window.onerror handler
	// (see the "For More Info" section for an article on event bubbling)
   return true;
}

try {
	// install the global error-handler
	window.onerror = errorHandler;
} catch (err) {

}


