String.prototype.format=function()
{
	var matcher=/(%(\w+):s)|(%s)/g;
	var index=0;

	var result;
	var outText='';
	var lastMatch=0;
	
	if (arguments.length==1 && arguments[0]!==undefined && ((arguments[0] instanceof Array) || (arguments[0].constructor==Object)))
		arguments=arguments[0];

	while (result=matcher.exec(this))
	{
		outText+=this.substring(lastMatch, result.index);

		if (!result[2])
			outText+=arguments[(arguments.length-1 > index) ? index++ : index];
		else if (result[2] in arguments)
			outText+=arguments[result[2]];
		else
			outText+=result[0];

		lastMatch=result.index+result[0].length;
	}
	
	outText+=this.substr(lastMatch);
	return outText;		
};
function __show(id)
{
	document.getElementById(id).style.display = 'block';
};
function __hide(id)
{
	document.getElementById(id).style.display = 'none';
};
window.__activeRequestCount = 0;
function __ajaxCall(method, url, params, callback)
{
	var requestObject = false;
	if(window.XMLHttpRequest)
	{
		try
		{
			requestObject = new XMLHttpRequest();
		}
		catch(error){}
	}
	if (!requestObject)
		return false;
	method = method.toUpperCase();
	if (method != 'POST')
		url = url + '?' + params;
	requestObject.open(method.toUpperCase(), url, true);
	requestObject.onreadystatechange = function()
	{
		if (requestObject.readyState == 4)
		{
			if (--__activeRequestCount == 0)
				document.getElementById('gLoader').style.visibility = 'hidden';
			if (Math.floor((requestObject.status||200)/100) == 2 && (callback instanceof Function))
				callback(requestObject);
		}
	};
	if (method == 'POST')
		requestObject.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
	document.getElementById('gLoader').style.visibility = 'visible';
	__activeRequestCount++;
	requestObject.send(params);
	return requestObject;
};
// written by Dean Edwards, 2005
// http://dean.edwards.name/
function addEvent(element, type, handler) {
  // assign each event handler a unique ID
  if (!handler.$$guid) handler.$$guid = addEvent.guid++;
  // create a hash table of event types for the element
  if (!element.events) element.events = {};
  // create a hash table of event handlers for each element/event pair
  var handlers = element.events[type];
  if (!handlers) {
    handlers = element.events[type] = {};
    // store the existing event handler (if there is one)
    if (element["on" + type]) {
      handlers[0] = element["on" + type];
    }
  }
  // store the event handler in the hash table
  handlers[handler.$$guid] = handler;
  // assign a global event handler to do all the work
  element["on" + type] = handleEvent;
};
// a counter used to create unique IDs
addEvent.guid = 1;
function removeEvent(element, type, handler) {
  // delete the event handler from the hash table
  if (element.events && element.events[type]) {
    delete element.events[type][handler.$$guid];
  }
};
function fixEvent(event) {
  event.target = event.srcElement;
  // add W3C standard event methods
  event.preventDefault = fixEvent.preventDefault;
  event.stopPropagation = fixEvent.stopPropagation;
  return event;
};
fixEvent.preventDefault = function() {
  this.returnValue = false;
};
fixEvent.stopPropagation = function() {
  this.cancelBubble = true;
};
function handleEvent(event) {
  var returnValue = true;
  // grab the event object (IE uses a global event object)
  event = event || fixEvent(window.event);
  // get a reference to the hash table of event handlers
  var handlers = this.events[event.type];
  // execute each event handler
  for (var i in handlers) {
    this.$$handleEvent = handlers[i];
    if (this.$$handleEvent(event) === false) {
      returnValue = false;
    }
  }
  return returnValue;
};
//end of Dean Edwards' codes
function __keyPressValidate(event)
{
	var element = event.target,
	rule = new RegExp(element.getAttribute('rule'), 'i'),
	result = rule.test(element.value);
	
	if (element._blurEventTimer) 
	{
		window.clearTimeout(element._blurEventTimer);
		element._blurEventTimer = undefined;
	}

	element.className = (result) ? ((element.type.toLowerCase()=='password') ? 'valid' : '' ): 'invalid';
	if (result && element.onblur)
		element._blurEventTimer = window.setTimeout(function(){element.onblur({type:'blur',target:element});}, 300);
};
function ___ajaxValidateCallback(requestObject)
{
	requestObject.element.className = (requestObject.responseText == '1') ? 'valid' : 'invalid';
};
window.__ajaxValidateMapping = 
{
	'groupName': {url: '/api.php', params: 'key=54259318egjnaoeiadfa0325912&function=checkGroupName&group_name='},
	'userMail': {url: '/api.php', params: 'key=54259318egjnaoeiadfa0325912&function=checkEmail&email='}
};
function __ajaxValidate(event)
{
	if (event.target.className=='invalid')
		return;
	var validateMethod='get';
	var fieldInfo = window.__ajaxValidateMapping[event.target.id];
	if (!fieldInfo)
		return;
	var requestObject = __ajaxCall(validateMethod, fieldInfo.url, fieldInfo.params + encodeURIComponent(event.target.value), ___ajaxValidateCallback);
	if (requestObject)
		requestObject.element = event.target;
};
function __adjustOverlayHeight()
{
	document.getElementById('overlay').style.height = ((document.documentElement.clientHeight>750) ? document.documentElement.clientHeight : 750) + "px";
};
window.__ajaxFormPost = function(form, success, error)
{
	var formParams = '', currentElement,
	formPostCallback = function(requestObject)
	{
		var response;
		try
		{
			response = eval('(' + requestObject.responseText + ')');
		}
		catch(e)
		{
			error('parse', requestObject, e);
			return;
		}
		if (response[0])
			success(requestObject, response);
		else
			error('normal', requestObject, response);
	};
	for (var i=form.elements.length-1; i>=0; i--)
	{
		currentElement = form.elements[i];
		if (currentElement.disabled || ((currentElement.type == 'checkbox' || currentElement.type == 'radio') && !currentElement.checked) || currentElement.type == 'submit' || currentElement.type == 'button')
			continue;
		
		formParams += '&' + currentElement.name + '=' + encodeURIComponent(currentElement.value);
	}
	formParams = formParams.substr(1);
	__ajaxCall(form.getAttribute('method'), form.getAttribute('action'), formParams, formPostCallback);
};
window.___loginFormSuccess = function(requestObject, response)
{
	window.location='http://grou.ps';
};
window.___messageBoxes = {};
window.___showMessage = function(type, requestObject, extra, divId)
{
	var message, errorDiv = document.getElementById(divId);
	if (window.___messageBoxes[divId])
		window.clearTimeout(window.___messageBoxes[divId]);
	if (type=='normal' || type=='success')
		message = extra[1];
	else
		message = window.languageStrings.error;
	errorDiv.innerHTML = '';
	errorDiv.className = (type=='success') ? 'success' : 'error';
	errorDiv.appendChild(document.createTextNode(message));
	errorDiv.style.display = '';
	window.___messageBoxes[divId] = window.setTimeout(function(){errorDiv.style.display = 'none';}, 5000);
};
window.__ajaxFormList = 
{
	'signInForm':
	{
		success: ___loginFormSuccess,
		error: function(type, requestObject, extra) {___showMessage(type, requestObject, extra, 'signInError');}
	},
	'lostPasswordForm':
	{
		success: function(requestObject, response) {___showMessage('success', requestObject, response, 'lostPasswordMessage');},
		error: function(type, requestObject, extra) {___showMessage(type, requestObject, extra, 'lostPasswordMessage');}
	}
};
window.___formSubmitHandler = function(event)
{
	var form = event.target.form || event.target;
	__ajaxFormPost(form, __ajaxFormList[form.id].success, __ajaxFormList[form.id].error || ___formPostError);
	return false;
};
function _initpage()
{
	__adjustOverlayHeight();
	var validateFields =
	{
		'groupName':
		{
			focus: __keyPressValidate,
			keyup: __keyPressValidate,
			blur: __ajaxValidate
		},
		'userMail':
		{
			focus: __keyPressValidate,
			keyup: __keyPressValidate,
			blur: __ajaxValidate
		},
		'userPass':
		{
			focus: __keyPressValidate,
			keyup: __keyPressValidate
		}
	};
	var item;
	for (var itemId in validateFields)
		if (validateFields.hasOwnProperty(itemId))
		{
			item = document.getElementById(itemId);
			if (!item)
				continue;
			for (var eventName in validateFields[itemId]) 
			{
				addEvent(item.form, 'submit', __checkForm);
				if (validateFields[itemId].hasOwnProperty(eventName)) 
					addEvent(item, eventName, validateFields[itemId][eventName]);
			}
		}
	addEvent(window, 'resize', __adjustOverlayHeight);
	var linkElements = document.getElementsByTagName('A'), hashPart;
	for (var i = linkElements.length - 1; i >= 0; i--)
	{
		hashPart = linkElements[i].href.substr(linkElements[i].href.indexOf('#'));
		if (hashPart.charAt(1) == 'P') 
		{
			addEvent(linkElements[i], 'click', ___pageChangerClickHandler);
			if (document.location.hash == hashPart)
				___pageChangerClickHandler({type: 'click', target: linkElements[i]});
		}
	}
	var currentForm;
	for (var formId in __ajaxFormList)
		if (__ajaxFormList.hasOwnProperty(formId) && (currentForm = document.getElementById(formId)))
			addEvent(currentForm, 'submit', ___formSubmitHandler);
	if (window.FB)
		FB.init("e99549b4b96c3111b2bc85e2889de221", "http://grou.ps/xd_receiver.htm");
	window.__variantText = document.getElementById('variantText');
	window.__variantTextIndex = 0;
	if (window.__variantText)
		window.setInterval(function(){_changeWithOpacity(window.__variantText, window.languageStrings.createVariants[(++window.__variantTextIndex % window.languageStrings.createVariants.length)]);}, 3000);
};
function ___converger(start, end, steps)
{
	this.step=0;
	this.steps=steps;
	this.increment=5/this.steps;
	this.c=start;
	this.m=(end-start);
	this.next=function()
	{
		this.step++;
		return (1-Math.exp(-this.step*this.increment))*this.m + this.c;
	};
};
function __animationTicker(startVal, endVal, tickCallback, duration, interval)
{
	if (!(startVal instanceof Array))
		startVal = [startVal];
	if (!(endVal instanceof Array))
		endVal = [endVal];

	this.startVal=this.currentVal=startVal;
	this.endVal=endVal;

	if (this.startVal.length != this.endVal.length)
		return false;

	this.tickCallback=tickCallback;
	this.interval=interval || 50;
	this.duration=duration || 500;
	
	this.convergers = [];
	for (var i = 0; i < startVal.length; i++)
		this.convergers.push(new ___converger(startVal[i], endVal[i], Math.round(this.duration/this.interval)));

	var self=this;
	
	this.start=function()
	{
		return this.ticker=window.setInterval(this.tickerFunction, this.interval);
	};
	
	this.stop=function()
	{
		if (this.ticker) 
		{
			window.clearInterval(this.ticker);
			delete this.ticker;
		}
	};
	
	this.tickerFunction=function()
	{
		for (var i=self.currentVal.length - 1; i>=0; i--)
			self.currentVal[i]=self.convergers[i].next();
		if (self.convergers[0].step==self.convergers[0].steps)
		{
			for (i=self.currentVal.length - 1; i>=0; i--)
				self.currentVal[i]=self.endVal[i];
			self.done = true;
			self.stop();
		}
		self.tickCallback(self);
	};
	
	this.start();
};
function __sizeFit(element, newDimensions, callback)
{
	if (!newDimensions)
		newDimensions = {h: element.scrollHeight, w: element.scrollWidth};
	var initialDimensions = {h: element.clientHeight, w: element.clientWidth};
	
	if (element.__sizeTicker)
	{
		element.__sizeTicker.stop();
		callback(element);
		element.__sizeTicker = undefined;
	}
	
	if (!(callback instanceof Function))
		callback = function(e){};

	var tickFunction=function(ticker)
	{
		element.style.height = ticker.currentVal[0] + "px";
		element.style.width = ticker.currentVal[1] + "px";
		if (ticker.done) 
		{
			element.__sizeTicker = undefined;
			callback(element);
		}
	};
	element.__sizeTicker=new __animationTicker([initialDimensions.h, initialDimensions.w], [newDimensions.h, newDimensions.w], tickFunction);
};
window.__setOpacity = (document.all) ?
function(obj, opacity)
{
	obj.style.filter="alpha(opacity=" + opacity*100 + ")";
}
:
function(obj, opacity)
{
	obj.style.opacity=opacity;
};
window.__opacityEffect = function(element, to, from, callback)
{
	if (typeof element=='string')
		element = document.getElementById(element);
	if (!element || typeof to!='number')
		return false;
	if (typeof from!='number')
		from = (to>0.5) ? 0 : 1; //dirty but fast enough hack
		
	if (element.__opacityTicker)
	{
		element.__opacityTicker.stop();
		element.__opacityTicker = undefined;
	}

	if (!(callback instanceof Function))
		callback = function(e){};

	var tickFunction=function(ticker)
	{
		__setOpacity(element, ticker.currentVal[0]);
		if (ticker.done) 
		{
			element.__opacityTicker = undefined;
			callback(element);
		}
	};
	
	if (to>0.5)
	{
		__setOpacity(element, from);
		if (element.style.display == 'none')
			element.style.display = 'block';
	}

	element.__opacityTicker=new __animationTicker([from], [to], tickFunction);
};
function _changeWithOpacity(element, text)
{
	__opacityEffect(element, 0.05, 1, function(e)
	{
		e.innerHTML = text;
		__opacityEffect(element, 1, 0.05);
	})
}
function __checkForm(event)
{
	if (event.target.sent)
		return false;
	for (var i=event.target.elements.length - 1; i>=0; i--)
		if (event.target.elements[i].className == 'invalid' || (event.target.elements[i].className != 'valid' && event.target.elements[i].value === '' && event.target.elements[i].getAttribute('rule')))
			return false;
	event.target.sent = 1;
};
window._pageTypes = 
{
	small: {w: 450, h: 260, className: 'overlaySmall', size: 1},
	medium: {w: 790, h: 385, className: 'overlayMedium', size: 2}, //zeus icin hack eskisi 500px 300px 
	big: {w: 700, h: 420, className: 'overlayBig', size: 3}
};
window._pageList = 
{
	signUp: 'medium',
	welcomeContent: 'medium',
	signIn: 'medium',
	lostPassword: 'medium',
	LearnMore: 'big',
	Pricing: 'big',
	Cases: 'big',
	Dashboard: 'big',
	TermsService: 'big',
	AboutUs: 'big',
	Investors: 'big',
	Advertisers: 'big'
};
window.__setActivePage = function(pageName)
{
	if (!(pageName in window._pageList) || window._activePage == pageName)
		return false;
	var newPageInfo = window._pageTypes[window._pageList[pageName]],
	oldPageInfo = window._pageTypes[window._pageList[window._activePage]],
	containerElement = document.getElementById('step1');
	newElement = document.getElementById(pageName),
	oldElement = document.getElementById(window._activePage),
	afterResize = function() {};
	
	oldElement.className = 'hide';
	newElement.className = 'welcomeContent';

	if (newPageInfo.size > oldPageInfo.size)
		containerElement.className = 'welcome ' + newPageInfo.className;
	else
		afterResize = function(element) {element.className = 'welcome ' + newPageInfo.className;};

	__sizeFit(containerElement, newPageInfo, afterResize);
	window._activePage = pageName;
};
window.___pageChangerClickHandler = function(event)
{
	window.__setActivePage(event.target.href.substr(event.target.href.indexOf('#') + 2));
	return false;
};
window.__fbConnectCall = function()
{
	FB.Connect.requireSession(___fbConnectCallback);
	return false;
};
window.___fbConnectCallback = function(exception)
{
	__ajaxCall('get', '/api.php', 'key=54259318egjnaoeiadfa0325912&function=facebook&operation=control', ___fbConnectReponseHandler);
};
window.___fbConnectReponseHandler = function(requestObject)
{
	if (requestObject.responseText != '1')
	{
		alert(window.languageStrings.fbError);
		return;
	}
	if (window.__fbRedirect)
		window.location='http://grou.ps';
	else
		FB.Facebook.apiClient.users_getInfo([FB.Facebook.apiClient.get_session().uid], ['name', 'pic_square_with_logo'], ___fbProfileInfoCallback);
};
window.___fbProfileInfoCallback = function(profileInfo)
{
	profileInfo = profileInfo[0];
	document.getElementById('fbProfileName').innerHTML = window.languageStrings.salute.format(profileInfo.name);
	document.getElementById('fbProfilePhoto').src = profileInfo.pic_square_with_logo.replace(/&amp;/ig, '&');
	document.getElementById('loginInformation').className = 'hide';
	document.getElementById('signUpSignInFb').className = 'hide';
	document.getElementById('signUptoSignIn').className = 'hide';
	document.getElementById('fbProfileInfo').className = '';
	var passField = document.getElementById('userPass'), mailField = document.getElementById('userMail');
	passField.value = mailField.value = 'fbConnect';
	passField.className = mailField.className = 'valid';
};
window.onload = _initpage;