
var tErrors = new Array();
var PhoneRegExp = /^[\d]+$/;
var DateNumRegExp = /^(\d{1,2}).(\d{1,2}).(\d{2,4})$/;
var DateRegExp = /^([a-zA-Z]{3,10}) +(\d{1,2})\, *(\d{4})$/;
var em_Months = new Array('january','february','march','april','may','june','july','august','september','october','november','december');

function validatePurchase()
{
	resetValidationAlert();
	var adTotal = gEl('input-quanity');
	
//	if (IsDemoMode != 1)
//		CheckCardNumber();
	if (isNaN(adTotal.value) || adTotal.value == 0 || adTotal.value == null)
		tErrors[tErrors.length] = 'Enter Quantity';
	
	if (tErrors.length > 0)
		showValidationAlert();
	else
		gEl('adsForm').submit();
		
	return false;
}

function validateDetailsAd()
{
	resetValidationAlert();
	
	var CampaignName = gEl('campaign-name-input');
	var StartDate = gEl('fdt');
	var EndDate = gEl('tdt');
	
	var Headline = gEl('headline-input');
	var Body = gEl('body-input');
	var DisplayUrl = gEl('display-url-input');
	var ClickUrl = gEl('destination-url-input');
	var IsDoneDisplay = gEl('IsDoneDisplay');
	
	if (js_trim(CampaignName.value) == '')
		tErrors[tErrors.length] = 'Enter Campaign Name';
	if (js_trim(StartDate.value) == '')
		tErrors[tErrors.length] = 'Enter Campaign start date';
	else if (!validateDateNum(js_trim(StartDate.value)))
		tErrors[tErrors.length] = 'Campaign start date not valid';
	if (js_trim(EndDate.value) != '' && !validateDateNum(js_trim(EndDate.value)))
		tErrors[tErrors.length] = 'Campaign end date not valid';
	else if (js_trim(EndDate.value) != '' &&  !validateDatesInterval(js_trim(StartDate.value), js_trim(EndDate.value)) )
		tErrors[tErrors.length] = 'Campaign end date less than start date';
	
	if (Headline != null && js_trim(Headline.value) == '')
		tErrors[tErrors.length] = 'Headline required';
	if (js_trim(Body.value) == '')
		tErrors[tErrors.length] = 'Body required';
	if (DisplayUrl != null && js_trim(DisplayUrl.value) == '')
		tErrors[tErrors.length] = 'Display URL required';
	if (ClickUrl != null && js_trim(ClickUrl.value) == '')
		tErrors[tErrors.length] = 'Click URL required';
	
//	if (IsDoneDisplay != null && IsDoneDisplay.value != '1')
//		tErrors[tErrors.length] = 'Please Upload Your Display Advertisement';
	
	if (tErrors.length > 0)
		showValidationAlert();
	else
		gEl('adsForm').submit();
		
	return false;
	
}

function validateUpload()
{
	resetValidationAlert();
	
	var Upload = gEl('PresentationFile');
	if (js_trim(Upload.value) == '')
		tErrors[tErrors.length] = 'Select file for Upload';
	else
	{
		var parts = new Array();
		parts = Upload.value.split('.');
		var ext = parts[(parts.length-1)].toLowerCase();
		
		if (parts.length == 1)
			tErrors[tErrors.length] = 'Wrong filename';
	}
	if (tErrors.length > 0)
	{
		showValidationAlert();
		return false;
	}
	
	gEl('IsUpload').value='1';
	gEl('adsForm').submit();
	return false;
}
function validateAccount()
{
	resetValidationAlert();
	
	var Email = gEl('Email');
	var EmailRetype = gEl('EmailRetype');
	var Password = gEl('Password');
	var PasswordRetype = gEl('PasswordRetype');
	
	var QuestionId = gEl('QuestionId');
	var Answer = gEl('Answer');
	var AnswerRetype = gEl('AnswerRetype');
	
	
	var Company = gEl('Company');
	var FirstName = gEl('FirstName');
	var LastName = gEl('LastName');
	var Address1 = gEl('Address1');
	var Address2 = gEl('Address2');
	var City = gEl('City');
	var State = gEl('State');
	var PostalCode = gEl('PostalCode');
	var CountryId = gEl('CountryId');
	var Phone = gEl('Phone');
	
	if (js_trim(Email.value) == '')
		tErrors[tErrors.length] = "Enter Email Address";
	else if (!validateEmail(js_trim(Email.value)))
		tErrors[tErrors.length] = "Enter valid Email";
	else if (js_trim(EmailRetype.value) != '' && js_trim(Email.value) != js_trim(EmailRetype.value))
		tErrors[tErrors.length] = "The Emails you entered do not match";
	
	if (js_trim(Password.value) == '')
		tErrors[tErrors.length] = "Enter Password";
	else if (js_trim(PasswordRetype.value) != '' && js_trim(Password.value) != js_trim(PasswordRetype.value))
		tErrors[tErrors.length] = "The Passwords you entered do not match";
	
	if (js_trim(QuestionId.value) == '')
		tErrors[tErrors.length] = "Select Security Question";
	if (js_trim(Answer.value) == '')
		tErrors[tErrors.length] = "Enter Answer";
	else if (js_trim(AnswerRetype.value) != '' && js_trim(Answer.value) != js_trim(AnswerRetype.value))
		tErrors[tErrors.length] = "Answers you entered do not match";
	
	if (js_trim(FirstName.value) == '')
		tErrors[tErrors.length] = "Enter First Name";
	if (js_trim(LastName.value) == '')
		tErrors[tErrors.length] = "Enter Last Name";
	
	if (js_trim(Company.value) == '')
		tErrors[tErrors.length] = "Enter Company";
	
	if (js_trim(Address1.value) == '' && js_trim(Address2.value) == '')
		tErrors[tErrors.length] = "Enter Address";
	if (js_trim(City.value) == '')
		tErrors[tErrors.length] = "Enter City";
	if (js_trim(State.value) == '')
		tErrors[tErrors.length] = "Enter State";
	if (js_trim(PostalCode.value) == '')
		tErrors[tErrors.length] = "Enter Postal Code";
	if (js_trim(CountryId.value) * 1 < 1)
		tErrors[tErrors.length] = "Select Country";
	if (js_trim(Phone.value) == '')
		tErrors[tErrors.length] = "Phone Number required";
		
	if (tErrors.length > 0)
		showValidationAlert();
	else if (validateBill())
		gEl('accountForm').submit();
	
	return false;
}
function validateBill()
{
	var Company = gEl('BillCompany');
	var FirstName = gEl('BillFirstName');
	var LastName = gEl('BillLastName');
	var Address1 = gEl('BillAddress1');
	var Address2 = gEl('BillAddress2');
	var City = gEl('BillCity');
	var State = gEl('BillState');
	var PostalCode = gEl('BillPostalCode');
	var CountryId = gEl('BillCountryId');
	var Phone = gEl('BillPhone');
	
	if (js_trim(Company.value) == '')
		tErrors[tErrors.length] = "Enter Billing Company";
	if (js_trim(FirstName.value) == '')
		tErrors[tErrors.length] = "Enter Billing First Name";
	if (js_trim(LastName.value) == '')
		tErrors[tErrors.length] = "Enter Billing Last Name";
	
	if (js_trim(Address1.value) == '' && js_trim(Address2.value) == '')
		tErrors[tErrors.length] = "Enter Billing Address";
	if (js_trim(City.value) == '')
		tErrors[tErrors.length] = "Enter Billing City";
	if (js_trim(State.value) == '')
		tErrors[tErrors.length] = "Enter Billing State";
	if (js_trim(PostalCode.value) == '')
		tErrors[tErrors.length] = "Enter Billing Postal Code";
	if (js_trim(CountryId.value) * 1 < 1)
		tErrors[tErrors.length] = "Select Billing Country";
	
	if (js_trim(Phone.value) == '')
		tErrors[tErrors.length] = "Billing Phone Number required";
	
	if (tErrors.length > 0)
	{
		showValidationAlert();
		return false;
	}
	return true;
}

function validateAdvertiserRegister()
{
	resetValidationAlert();
	
	var Email = gEl('Email');
	var EmailRetype = gEl('EmailRetype');
	var Password = gEl('Password');
	var PasswordRetype = gEl('PasswordRetype');
	
	var QuestionId = gEl('QuestionId');
	var Answer = gEl('Answer');
	var AnswerRetype = gEl('AnswerRetype');
	
	
	var Company = gEl('Company');
	var FirstName = gEl('FirstName');
	var LastName = gEl('LastName');
	var Address1 = gEl('Address1');
	var Address2 = gEl('Address2');
	var City = gEl('City');
	var State = gEl('State');
	var PostalCode = gEl('PostalCode');
	var CountryId = gEl('CountryId');
	var Phone = gEl('Phone');
	
	if (js_trim(Email.value) == '')
		tErrors[tErrors.length] = "Enter Email Address";
	else if (!validateEmail(js_trim(Email.value)))
		tErrors[tErrors.length] = "Enter valid Email";
	else if (Email.value != EmailRetype.value)
		tErrors[tErrors.length] = "The Emails you entered do not match";
	
	if (js_trim(Password.value) == '')
		tErrors[tErrors.length] = "Enter Password";
	else if (Password.value != PasswordRetype.value)
		tErrors[tErrors.length] = "The Passwords you entered do not match";
	
	if (js_trim(QuestionId.value) == '')
		tErrors[tErrors.length] = "Select Security Question";
	if (js_trim(Answer.value) == '')
		tErrors[tErrors.length] = "Enter Answer";
	else if (js_trim(Answer.value) != js_trim(AnswerRetype.value))
		tErrors[tErrors.length] = "Answers you entered do not match";
	
	if (js_trim(FirstName.value) == '')
		tErrors[tErrors.length] = "Enter First Name";
	if (js_trim(LastName.value) == '')
		tErrors[tErrors.length] = "Enter Last Name";
	
	if (js_trim(Company.value) == '')
		tErrors[tErrors.length] = "Enter Company";
	
	if (js_trim(Address1.value) == '' && js_trim(Address2.value) == '')
		tErrors[tErrors.length] = "Enter Address";
	if (js_trim(City.value) == '')
		tErrors[tErrors.length] = "Enter City";
	if (js_trim(State.value) == '')
		tErrors[tErrors.length] = "Enter State";
	if (js_trim(PostalCode.value) == '')
		tErrors[tErrors.length] = "Enter Postal Code";
	if (js_trim(CountryId.value) * 1 < 1)
		tErrors[tErrors.length] = "Select Country";
	
	if (js_trim(Phone.value) == '')
		tErrors[tErrors.length] = "Phone Number required";
		
	if (tErrors.length > 0)
		showValidationAlert();
	else
		gEl('registerForm').submit();
		
	return false;
	
}

function validateAdvertiserRegisterAccess(formId)
{
	resetValidationAlert();
	var Login = gEl('Login');
	var LoginStatus = gEl('LoginStatus');
	var Password = gEl('Password');
	var Captcha = gEl('Captcha');
	
	if (js_trim(Login.value) == '')
		tErrors[tErrors.length] = "Enter User Name";
	else if (LoginStatus.value == 'unavaliable')
		tErrors[tErrors.length] = "User Name already exists";
	if (js_trim(Password.value) == '')
		tErrors[tErrors.length] = "Enter Password";
	if (js_trim(Captcha.value) == '')
		tErrors[tErrors.length] = "Enter Security Code";
	
	if (tErrors.length > 0)
		showValidationAlert();
	else
		gEl(formId).submit();
		
	return false;
}
function validateLogin()
{
	var Login = gEl('Login').value;
	var url = '/ajax/check_login/?login=' + Login;
	axLoadContent(url, 'LoginStatus');
	
	return true;
}
function resetValidationAlert()
{
	gEl("errorDivContainer").style.visibility = "hidden";
	gEl("errorDiv").innerHTML = '';
	tErrors = new Array();
	
}

function showValidationAlert(errorText) 
{
	var error = "";
	
	if (errorText)
		error = errorText;
	else if (tErrors.length < 1)
		return;
		
	for (var i = 0; i < tErrors.length; i++)
		error =  error + "<li>" + tErrors[i] + "</li>";
		
	error = "Please correct the following:<ul>" + error + "</ul>";
	
	gEl("errorDiv").innerHTML = error;
	gEl("errorDivContainer").style.visibility = "visible";
	window.scrollTo(0,0);
}


function js_trim(_v) 
{
	_v = _v.replace(/^\s+/, '');
	return _v.replace(/\s+$/, '');
}
function validateEmail(str)
{
	var emailRegEx = /\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
	if(str.match(emailRegEx))
		return true;
	return false;
}
function validateUrl(str)
{
	var UrlRegEx = /^http(s)?\:\/\//;
	str = js_trim(str);
	if(str.match(UrlRegEx))
		return true;
	return false;
}

function validateDate(s_date) 
{
	// check format
	if (!DateRegExp.test(s_date))
		return false;

	// check allowed ranges	
	if (RegExp.$2 > 31 || RegExp.$3 < 2000 )
		return false;
	var mNum = -1;
	var _c = RegExp.$1;
	for (var i in em_Months)
	{
		if (_c.toLowerCase() == em_Months[i])
		{
			mNum = i;
			break;
		}
	}

	if (mNum < 0)
		return false;

	// check number of day in month
	var dt_test = new Date(Number(RegExp.$3), mNum, Number(RegExp.$2));
	if (dt_test.getMonth() != mNum)
		return false;
	return true;
}

function validateDateNum(s_date)
{
	// check format
	if (!DateNumRegExp.test(s_date))
		return false;

	// check allowed ranges	
	if (RegExp.$1 > 12 || RegExp.$2 > 31 )
		return false;
	
	// check number of day in month
	var dt_test = new Date(RegExp.$3, Number(RegExp.$1-1), RegExp.$2);
	if (dt_test.getMonth() != Number(RegExp.$1-1))
		return false;
	return true;
}
function validateDates()
{
	var _mnA = parseInt(gEl("dtMonthA").value);
	var _dyA = parseInt(gEl("dtDayA").value);
	var _yrA = parseInt(gEl("dtYearA").value);

	var _mnB = parseInt(gEl("dtMonthB").value);
	var _dyB = parseInt(gEl("dtDayB").value);
	var _yrB = parseInt(gEl("dtYearB").value);

	if ((_mnA != 0 && _dyA != 0 && _yrA !=0) && validateDateNum(_mnA + "/" + _dyA + "/" + _yrA) == false)
	{
		alert('Not valid From Date');
		return false;
	}
	if ((_mnB != 0 && _dyB != 0 && _yrB !=0) && validateDateNum(_mnB + "/" + _dyB + "/" + _yrB) == false)
	{
		alert('Not valid To Date');
		return false;
	}
	return true;
}
function validateDatesInterval(startDate, endDate)
{
	
	if (!endDate || endDate == '')
		return true;
	var s_date_exp = DateNumRegExp.test(startDate);
	var s_date = new Date(RegExp.$3, Number(RegExp.$1-1), RegExp.$2);
	
	var e_date_exp = DateNumRegExp.test(endDate);
	var e_date = new Date(RegExp.$3, Number(RegExp.$1-1), RegExp.$2);
	
	if (((s_date.getTime()) * 1) > ((e_date.getTime()) * 1))
		return false;

	return true;
}

function axLoadContent(url, containerid)
{
	var page_request = false;
	if (window.XMLHttpRequest)
		page_request = new XMLHttpRequest()
	else if (window.ActiveXObject){ 
		try { page_request = new ActiveXObject('Msxml2.XMLHTTP') } 
		catch (e){
			try { page_request = new ActiveXObject('Microsoft.XMLHTTP') }
			catch (e){}
		}
	}
	else
		return false;

	page_request.onreadystatechange = function() { axUpdateContent(page_request, containerid); }
	page_request.open('GET', url, true);
	page_request.send(null);
}


function axUpdateContent(page_request, containerid)
{
	var toRemove = gEl(containerid);
	if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf('http')==-1))
	{
		if (toRemove.value)
			toRemove.value = page_request.responseText;
		else
			toRemove.innerHTML = '++' + page_request.responseText;
	}
}