/*
*************************************************

ADJACK
JavaScript Functions

Created by the wacky troop at Happy Cog
http://www.happycog.com/

*************************************************
*/

/*--------------------------------------------------------
			Global functions
--------------------------------------------------------*/
/**
 * onDOMReady
 * by Vivabit
 * http://www.vivabit.com/
 *
 * @access public
 * @params NULL 	 
 * @return NULL
 */

Object.extend(Event, {
  _domReady : function() {
    if (arguments.callee.done) return;
    arguments.callee.done = true;

    if (this._timer)  clearInterval(this._timer);
    
    this._readyCallbacks.each(function(f) { f() });
    this._readyCallbacks = null;
},
  onDOMReady : function(f) {
    if (!this._readyCallbacks) {
      var domReady = this._domReady.bind(this);
      
      if (document.addEventListener)
        document.addEventListener("DOMContentLoaded", domReady, false);
        
        /*@cc_on @*/
        /*@if (@_win32)
            document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
            document.getElementById("__ie_onload").onreadystatechange = function() {
                if (this.readyState == "complete") domReady(); 
            };
        /*@end @*/
        
        if (/WebKit/i.test(navigator.userAgent)) { 
          this._timer = setInterval(function() {
            if (/loaded|complete/.test(document.readyState)) domReady(); 
          }, 10);
        }
        
        Event.observe(window, 'load', domReady);
        Event._readyCallbacks =  [];
    }
    Event._readyCallbacks.push(f);
  }
});



/**
 * getElementsByClassName
 * by Scott Schiller
 * http://www.schillmania.com/
 *
 * @access public
 * @params NULL 	 
 * @return NULL
 */

function getElementsByClassName(className,oParent) {
  var doc = (oParent||document);
  var matches = [];
  var nodes = doc.all||doc.getElementsByTagName('*');
  for (var i=0; i<nodes.length; i++) {
    if (nodes[i].className == className || nodes[i].className.indexOf(className)+1 || nodes[i].className.indexOf(className+' ')+1 || nodes[i].className.indexOf(' '+className)+1) {
      matches[matches.length] = nodes[i];
    }
  }
  return matches; // kids, don't play with fire. ;)
}

// Created by Raj Mohan to display the graph based on the age selected from drop down in analytic page.
function showGraph(selected_age)
{
	//alert(selected_age);
	//new Ajax.Request('/lottery/show_graph/'+selected_age+'/');

	new Ajax.Request('/lottery/show_graph/'+selected_age+'/', {method:'post', onSuccess:function(req){
						//$('comment-form').innerHTML = req.responseText;
						//alert(req.responseText);
						$('age_graph').innerHTML = '<img src="/images/numberof-starts.gif"/><img src="'+req.responseText+'" /><span style="font-weight: bold; float: right;margin:0px;padding-right: 300px;text-align: right;"><img src="/images/duration.gif"/></span>';
					
					},onCreate : function startLoading()
                                {
                                    document.getElementById('age_graph').innerHTML ='<br/><img src="/images/loading.gif"/><br/>'
                                }});

/*
	new Ajax.Request('/lottery/show_graph/'+selected_age+'/', {
				onSuccess:function(req)
				{
					//alert(req.responseText);
					//document.getElementById('age_graph').innerHTML = req.responseText;
					var value = '';
					var age = selected_age.split("-");
					if(age[0]==9)
						value = 'Graph for Less then 18';
					else if(age[0]==20)
						value = 'Graph for 19-25';
					else if(age[0]==30)
						value = 'Graph for 26-35';
					else if(age[0]==40)
						value = 'Graph for 36-45';
					else if(age[0]==50)
						value = 'Graph for 46-55';
					else if(age[0]==60)
						value = 'Graph for 56-65';
					else if(age[0]==70)
						value = 'Graph for greater then 65';
					else
						value = 'Sorry no Graph Available';

					
					
				//	alert('Hey'+selected_age);
	document.getElementById('age_graph').innerHTML = '<div style="display:inline;"><img src="/images/numberof-starts.gif"/></div><div style="display:inline"><img src="'+req.responseText+'" /></div><span style="font-weight: bold; float: right;margin:0px;padding-right: 300px;text-align: right;"><img src="/images/duration.gif"/></span>';
					

				},onCreate : function startLoading()
								{
									document.getElementById('age_graph').innerHTML ='<br/><img src="/images/loading.gif"/><br/>'
								}
			});
			*/
}
// End by Raj Mohan to display the graph based on the age selected from drop down in analytic page.


function countClicks(tag_id)
{
	new Ajax.Request('/site/tag_counts/'+tag_id+'/');
}
/**
 * greyInitialValues
 *
 * @access public
 * @params NULL 	 
 * @return NULL
 */

function greyInitialValues(){
    var filled = $$(".filled");

    if(filled.length > 0){
        for(var i = 0; i < filled.length; i++){
            filled[i].className = "empty";
            filled[i].initialValue = filled[i].value;

            filled[i].onclick = filled[i].onfocus = function(){
                this.className = "filled";
                if(this.value == this.initialValue){
                    this.value= "";
                }
            }

            filled[i].onblur = function(){
                if(this.value == this.initialValue || this.value == ""){
                    this.className = "empty";
                    this.value = this.initialValue;
                }else{
                    this.className = "filled";
                }
            }
        }
    }else{ 
        return; 
    }
}
function fn_enable()
	{
		if(document.getElementById('show_all_comments').style.display == "none")
		{
			document.getElementById('show_all_comments').style.display='block';
		//	document.getElementById('show_hide_comments').innerHTML='Hide All Comments';
			document.getElementById('first_few_comment').style.display='none';
		}
		else
		{
			document.getElementById('show_all_comments').style.display='none';
			document.getElementById('show_hide_comments').innerHTML='View All Comments';

			
		}
	}

function view_comment(entry_id)
{
	new Ajax.Request('/advertisers/show_comments/'+entry_id+'/');
}

/**
 * instantiateNumbers
 *
 * @access public
 * @params NULL
 * @return NULL
 */

function instantiateNumbers(){
	
	var generated = "";
	
	$$('#generated li').each(function(li, i){
		/* strip() spaces off IE's innerHTML */
		if(i == 5){
			generated += li.innerHTML.strip();
		}else{
			generated = generated + li.innerHTML.strip() + ",";
		}
	});
	
	
	//create the swf
	if(document.getElementById('numbers'))
	{
		document.getElementById('numbers').style.display = 'block';
		
		// var numbers = new SWFObject("/s/numbers.20080220135244.swf", "numbers", "460", "109", "7", "#d3d9d9");
		// numbers.addParam("wmode", "transparent");
		// numbers.addParam("menu", "false");
		// numbers.addVariable("generated", generated);
		// numbers.write("numbers");
		
		var flashvars = {
			generated:generated,
			locked:$('generated').hasClassName('locked')?'true':'false',
			ballRange: $('generated').getAttribute('ballRange'),
			lastBallRange: $('generated').getAttribute('lastBallRange')
		};
		var params = {
			 wmode:'transparent'
			,menu:'false'
			,bgcolor:'#d3d9d9'
			,allowscriptaccess:'always'
			,swliveconnect:'true'
		};
		var attributes = {
			 id:'numbersFlash'
			,name:'numbersFlash'
		};
		
		swfobject.embedSWF("/s/numbers.20080220135244.swf", "generated", "460", "109", "8.0.0", false, flashvars, params, attributes);
	}
}

function inlineLogin()
{
	var login = $('login-inline');
	if(!login) return false;
	
	login.observe('submit', function(event){
		var form = event.element();
		
		new Ajax.Request('/', {
			parameters: {
				 XID:form['XID'].value
				,ACT:form['ACT'].value
				,RET:form['RET'].value
				,site_id:form['site_id'].value
				,username:form['username'].value
				,password:form['password'].value
			},
			onSuccess: function(url_title, req)
			{
				if(req.responseText.match(/<title>Error<\/title>/))
				{
					alert('There was a problem logging you in, please check your username and password.');
				}
				else
				{
					new Ajax.Request('/news/comment-form/'+url_title+'/', {method:'get', onSuccess:function(req){
						$('comment-form').innerHTML = req.responseText;
					}});
				}
			}.bind(this, form['url_title'].value)
		});
		
		event.stop();
	});
}

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

page = 1;
function getMoreAds()
{
	new Ajax.Request('/more-ads/page/'+(++page)+"/",
	{
		method: 'get',
		onSuccess: function(req)
		{
			$('more-ads').replace(req.responseText);
		}.bind(this)
	});
}

function saveNumbers(num1, num2, num3, num4, num5, num6)
{
	new Ajax.Request('/lottery/save/',
	{
		method: 'post',
		parameters: {
			num_1: num1,
			num_2: num2,
			num_3: num3,
			num_4: num4,
			num_5: num5,
			num_6: num6
		}
	});
}

function hijackSave()
{
	$$('.save.logged-in').each(function(anchor)
	{
		anchor.observe('click', function(event)
		{
			new Ajax.Request(anchor.getAttribute('href'), {
				onSuccess:function(event, req)
				{
					event.element().replace("<span class='saved'>Saved</span>");
				}.bind(this, event)
			});
			event.stop();
			return false;
		});
	});

	if($('tellafriend_form'))
	{
		var form = $('tellafriend_form');
		
		form.observe('submit', function(event)
		{
			event.element().setStyle({opacity:0.5});
			
			var message = '';
			for(var i=0;len=form['message'].length,i<len;i++)
			{
				message += (form['message'][i].value+"\r\n");
			}
			
			new Ajax.Request(form.getAttribute('action'), {
				parameters: {
					XID: form['XID'].value,
					ACT: form['ACT'].value, 
					RET: form['RET'].value, 
					URI: form['URI'].value, 
					recipients: form['recipients'].value, 
					user_recipients: form['user_recipients'].value, 
					charset: form['charset'].value, 
					allow_html: form['allow_html'].value, 
					redirect: form['redirect'].value, 
					replyto: form['replyto'].value, 
					site_id: form['site_id'].value, 
					from: form['from'].value, 
					subject: form['subject'].value, 
					message: message, 
					to: form['to'].value, 
					name: form['name'].value
				},
				onSuccess:function(event, req)
				{
					alert('Your message was successfully sent.');
					event.element().setStyle({opacity:1});
				}.bind(this, event)
			});
			
			event.stop();
		});
	}
}

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else
	{
		var date = new Date();
		date.setTime(date.getTime()+(30*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();;
	}
	document.cookie = name+"="+value+expires+"; path=/; domain=.adjack.tv";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

function setVolume(val)
{
	createCookie('tv-adjack-vol', val, 2);
}

function getVolume()
{
	val = readCookie('tv-adjack-vol');
	if(val != null)
	{
		return val;
	}
	return 1;
}


//----------------------------------------------
function date_validation()
{
	if(document.getElementById('start_date') &&
		document.getElementById('end_date') && 
		document.getElementById('price_view') &&
		document.getElementById('daily_limit') &&
		document.getElementById('amount'))
	{
		var price_view = document.getElementById('price_view');
		var daily_limit = document.getElementById('daily_limit');

		var daily_limit_english = document.getElementById('daily_limit_english');
		var amount = document.getElementById('amount');
		var success = true;

		// Created by Rajmohan to calculate based on the start date and end date.
		var start_date = document.getElementById('start_date').value;
		var end_date = document.getElementById('end_date').value;

		var date_sep = start_date.split("-");
		var startDate=new Date();
		//startDate.setFullYear(date_sep[0],(parseInt(date_sep[1])-1),date_sep[2]);
		startDate.setDate(date_sep[2]);
		startDate.setMonth(parseInt(date_sep[1])-1);
		startDate.setYear(date_sep[0]);

		var date_end = end_date.split("-");
		var endDate=new Date();
		endDate.setDate(date_end[2]);
		endDate.setMonth(parseInt(date_end[1])-1);
		endDate.setYear(date_end[0]);

		var one_day=1000*60*60*24;

		/*
		alert(endDate);
		alert(startDate);
		alert(endDate.getTime());
		alert(startDate.getTime());
		*/

		var datediff = Math.ceil((endDate.getTime()-startDate.getTime())/(one_day));

		if(datediff < 1)
		{
			alert(' End Date should be greater then Start Date');
			document.getElementById('end_date').value = "";
			return false;

		}
		//alert(datediff);
		//  Used to show how many dates will the event active
		document.getElementById('dates_viewable').innerHTML = datediff;

		// End Calculation by Rajmohan

		amount.value = (daily_limit.value * datediff).toFixed(2);
		document.getElementById('price_view_err').innerHTML="";
		if(price_view.value/0.05 != parseInt(price_view.value/0.05))
		{
			document.getElementById('price_view_err').innerHTML = "The charge/view must be a $0.05 increment.";
			success = false;
		}
		
		if(daily_limit.value != parseInt(daily_limit.value))
		{
			if(!document.getElementById('daily_limit_error'))
			{
				var daily_limit_error = document.createElement('p');
				    daily_limit_error.id = 'daily_limit_error';
				    daily_limit_error.className = 'notice bad';
				    daily_limit_error.innerHTML = 'The max charge/day must be a whole number.';
				daily_limit.parentNode.parentNode.insertBefore(daily_limit_error, daily_limit_english);
			}
			
			success = false;
		}
		
		if(price_view.value <= 0)
		{
			daily_limit_english.innerHTML = '(Charge/view must be more than $0.00)';
			
			success = false;
		}
		
		if(success)
		{
			if(document.getElementById('price_view_error'))
			{
				document.getElementById('price_view_error').parentNode.removeChild(document.getElementById('price_view_error'));
			}
			if(document.getElementById('daily_limit_error'))
			{
				document.getElementById('daily_limit_error').parentNode.removeChild(document.getElementById('daily_limit_error'));
			}
			
			daily_limit_english.innerHTML = '('+Math.floor(daily_limit.value / price_view.value)+' views per day)';
			
			new Ajax.Request('/advertisers/rank/?rating='+(price_view.value*5), {
				onSuccess:function(req)
				{
					if(req.responseText < 10)
					{
						daily_limit_english.innerHTML = '('+Math.floor(daily_limit.value / price_view.value)+' views per day, with homepage placement)';
					}
				}
			});
		}
	}
	
}


function advertiserJS()
{
	if(document.getElementById('price_view') &&
	   document.getElementById('daily_limit_english') &&
	   document.getElementById('daily_limit') &&
	   document.getElementById('amount'))
	{
		var price_view = document.getElementById('price_view');
		var daily_limit = document.getElementById('daily_limit');
		var daily_limit_english = document.getElementById('daily_limit_english');
		var amount = document.getElementById('amount');
		
		price_view.onkeyup = 
		daily_limit.onkeyup = function()
		{
			var success = true;
			
			// amount.value = (daily_limit.value * 7).toFixed(2);

			// Created by Rajmohan to calculate based on the start date and end date.
			var start_date = document.getElementById('start_date').value;
			var end_date = document.getElementById('end_date').value;

			if(daily_limit.value != "")
			{
				if(start_date.value == "" || end_date.value == "")
				{
					alert("Start Date or End Date is missing");
					return false;
				}
			}

			var date_sep = start_date.split("-");
			var startDate=new Date();
			//startDate.setFullYear(date_sep[0],(parseInt(date_sep[1])-1),date_sep[2]);
			startDate.setDate(date_sep[2]);
			startDate.setMonth(parseInt(date_sep[1])-1);
			startDate.setYear(date_sep[0]);

			var date_end = end_date.split("-");
			var endDate=new Date();
			endDate.setDate(date_end[2]);
			endDate.setMonth(parseInt(date_end[1])-1);
			endDate.setYear(date_end[0]);
	
			var one_day=1000*60*60*24;

			/*
			alert(endDate);
			alert(startDate);
			alert(endDate.getTime());
			alert(startDate.getTime());
			*/

			var datediff = Math.ceil((endDate.getTime()-startDate.getTime())/(one_day));
			//alert(datediff);
			//  Used to show how many dates will the event active
			document.getElementById('dates_viewable').innerHTML = datediff;

			// End Calculation by Rajmohan

			amount.value = (daily_limit.value * datediff).toFixed(2);
			document.getElementById('price_view_err').innerHTML="";


			if(price_view.value/0.05 != parseInt(price_view.value/0.05))
			{
				document.getElementById('price_view_err').innerHTML = "The charge/view must be a $0.05 increment.";

				/*
				if(!document.getElementById('price_view_error'))
				{
					var price_view_error = document.createElement('p');
					    price_view_error.id = 'price_view_error';
					    price_view_error.className = 'notice bad';
					    price_view_error.innerHTML = 'The charge/view must be a $0.05 increment.';
					price_view.parentNode.parentNode.insertBefore(price_view_error, daily_limit.parentNode);
				}
				*/
				
				success = false;
			}
			
			if(daily_limit.value != parseInt(daily_limit.value))
			{
				if(!document.getElementById('daily_limit_error'))
				{
					var daily_limit_error = document.createElement('p');
					    daily_limit_error.id = 'daily_limit_error';
					    daily_limit_error.className = 'notice bad';
					    daily_limit_error.innerHTML = 'The max charge/day must be a whole number.';
					daily_limit.parentNode.parentNode.insertBefore(daily_limit_error, daily_limit_english);
				}
				
				success = false;
			}
			
			if(price_view.value <= 0)
			{
				daily_limit_english.innerHTML = '(Charge/view must be more than $0.00)';
				
				success = false;
			}
			
			if(success)
			{
				if(document.getElementById('price_view_error'))
				{
					document.getElementById('price_view_error').parentNode.removeChild(document.getElementById('price_view_error'));
				}
				if(document.getElementById('daily_limit_error'))
				{
					document.getElementById('daily_limit_error').parentNode.removeChild(document.getElementById('daily_limit_error'));
				}
				
				daily_limit_english.innerHTML = '('+Math.floor(daily_limit.value / price_view.value)+' views per day)';
				
				new Ajax.Request('/advertisers/rank/?rating='+(price_view.value*5), {
					onSuccess:function(req)
					{
						if(req.responseText < 10)
						{
							daily_limit_english.innerHTML = '('+Math.floor(daily_limit.value / price_view.value)+' views per day, with homepage placement)';
						}
					}
				});
			}
		}
	}
	// Created by Rajmohan Purpose: While editing the updated ad it should show views per day based on start date and end date day diff.
	if(document.getElementById('price_view') && document.getElementById('daily_limit'))
	{
		var price_view = document.getElementById('price_view');
		var daily_limit = document.getElementById('daily_limit');
		daily_limit_english.innerHTML = '('+Math.floor(daily_limit.value / price_view.value)+' views per day)';
	}
}

function registerJS()
{
	var password = document.getElementById('password');
	var password_confirm = document.getElementById('password_confirm');
	
	if(password && password_confirm)
	{
		password_confirm.onkeyup = function()
		{
			if(password_confirm.value != password.value && !document.getElementById('unmatched-password'))
			{
				var p = document.createElement('p');
				    p.id = 'unmatched-password';
				    p.className = 'notice bad';
				    p.innerHTML = 'The passwords you entered do not match.';
				password_confirm.parentNode.parentNode.insertBefore(p, password_confirm.parentNode.nextSibling);
			}
			else if(password_confirm.value == password.value && document.getElementById('unmatched-password'))
			{
				document.getElementById('unmatched-password').parentNode.removeChild(document.getElementById('unmatched-password'));
			}
		}
	}
	
	var email = document.getElementById('email');
	var email_confirm = document.getElementById('email_confirm');
	
	if(email && email_confirm)
	{
		email_confirm.onkeyup = function()
		{
			if(email_confirm.value != email.value && !document.getElementById('unmatched-email'))
			{
				var p = document.createElement('p');
				    p.id = 'unmatched-email';
				    p.className = 'notice bad';
				    p.innerHTML = 'The emails you entered do not match.';
				email_confirm.parentNode.parentNode.insertBefore(p, email_confirm.parentNode.nextSibling);
			}
			else if(email_confirm.value == email.value && document.getElementById('unmatched-email'))
			{
				document.getElementById('unmatched-email').parentNode.removeChild(document.getElementById('unmatched-email'));
			}
		}
	}
	
	var member_form = document.getElementById('member_form');
	if(member_form)
	{
		var username = member_form.select('#username').first();
		if(username)
		{
			username.onkeyup = checkUsername;
		}
	}
}

function checkUsername()
{
	var member_form = document.getElementById('member_form');
	if(member_form)
	{
		var username = member_form.select('#username').first();
		if(username)
		{
			if(username.value == username.pastValue) return;
			username.pastValue = username.value;
			
			new Ajax.Request('/advertisers/username/?username='+(username.value), {
				onSuccess:function(req)
				{
					if(req.responseText == 'FALSE' && !document.getElementById('taken-username'))
					{
						var p = document.createElement('p');
						    p.id = 'taken-username';
						    p.className = 'notice bad';
						    p.innerHTML = 'The username you entered is not available.';
						username.parentNode.parentNode.insertBefore(p, username.parentNode.nextSibling);
					}
					else if(document.getElementById('taken-username'))
					{
						document.getElementById('taken-username').parentNode.removeChild(document.getElementById('taken-username'));
					}
				}
			});
		}
	}
}

/*--------------------------------------------------------
			Actions
--------------------------------------------------------*/

Event.onDOMReady(function(){
	greyInitialValues();
	instantiateNumbers();
	advertiserJS();
	registerJS();
	inlineLogin();
	hijackSave();
});

if(
	document.location.hash
	&& !document.location.hash.toString().match(/#comment/)
)
{
	window.location = '/ad/'+document.location.hash.toString().replace(/^\#/, '');
}