function CheckSkype()
{
	var isSkypeInstalled = false;
	if((navigator.userAgent.indexOf('Safari')  != -1) || 
		(navigator.userAgent.indexOf('Opera')  != -1))
	{
		//Sorry for Safari and Opera
		return false;
	}
	else if((navigator.userAgent.indexOf('Win')  != -1) && 
		(navigator.userAgent.indexOf('MSIE') != -1) && (parseInt(navigator.appVersion) >= 4 )) 
	{
		//Check in IE
		try
		{
			var oSkype = new ActiveXObject("Skype.Detection");
			isSkypeInstalled = typeof(oSkype) == "object";
		}
		catch(e)
		{
			return false;
		}
		if(isSkypeInstalled)
		{
			return true;
		}
	}
	else 
	{
		//Check in FireFox
		var skypeMime = navigator.mimeTypes["application/x-skype"];
		if(typeof(skypeMime) == "object") 
		{
			return true;
		}
		else
		{
			return false;
		}
	}
	return false;
}

function FormatPhoneNumber(originalNumber)
{
	if(originalNumber.length < 11 || originalNumber.length > 12)
		return false;
	
	var formatNumber = "";
	if(originalNumber.length == 11)
	{
		var reg11 = /[0-9]{11}$/; 
		if(!reg11.test(originalNumber))
			return false;

		if(originalNumber.charAt(0) == '0')
		{
			//010XXXXXXXX
			formatNumber = originalNumber;
		}
		else if(originalNumber.charAt(0) == '1')
		{
			//13XXXXXXXXX
			formatNumber = "0" + originalNumber;
		}
		else
		{
			return false;
		}
	}
	else if(originalNumber.length == 12)
	{
		var reg12 = /0[0-9]{11}$/;
		if(!reg12.test(originalNumber))
			return false;
		formatNumber = originalNumber;
	}
	return formatNumber;
}

var defPhoneNumber = "01012345678";
function ClearPhoneNumber()
{
	var phoneNumber = document.getElementById('skype_dial_phone_input');
	if((phoneNumber.value.charAt(0) == '*') && (defPhoneNumber == phoneNumber.value.substr(1)))
	{
		phoneNumber.value = "*";
		phoneNumber.style.color = "#000000";
		
		if(window.event)
		{
			var r = window.event.srcElement.createTextRange();
			r.moveStart('character', window.event.srcElement.value.length);
			r.collapse(true);
			r.select();
		}
	}
	else if(defPhoneNumber == phoneNumber.value)
	{
		phoneNumber.value = "";
		phoneNumber.style.color = "#000000";
	}
	return true;
}

function LimitInput(evt)
{
	var inputKey = 0;
	if(window.event)
	{
		inputKey = window.event.keyCode;
	}
	else
	{
		inputKey = evt.which;
	}
	
	if((inputKey >= 32 && inputKey < 42) ||
		 (inputKey > 42 && inputKey < 48) ||
		 (inputKey >= 58 && inputKey < 127))
	{
		return false;
	}
	if(inputKey == 13)
	{
		Dial();
		return false;
	}
	return true;
}

function Dial()
{
	var phoneNumber = document.getElementById('skype_dial_phone_input');
	if("" == phoneNumber.value)
	{
		ShowPrompt('skype_prompt_phone_empty');
		return false;
	}
	
	var dialType = 0;
	var inputNumber = phoneNumber.value;
	if(phoneNumber.value.charAt(0) == '*')
	{
		dialType = 1;
		inputNumber = phoneNumber.value.substr(1);
	}
	else if(phoneNumber.value.charAt(0) == '0' && 
		phoneNumber.value.charAt(1) == '0')
	{
		dialType = 2;
	}
	
	var dialNumber = inputNumber;
	if(dialType == 0 || dialType == 1)
	{
		if(defPhoneNumber == inputNumber)
		{
			ShowPrompt('skype_prompt_phone_empty');
			return false;
		}
	
		dialNumber = FormatPhoneNumber(inputNumber);
		if(dialNumber == false)
		{
			ShowPrompt('skype_prompt_phone_invalid');
			return false;
		}
	}
	
	if(!CheckSkype())
	{
		//oops....
		//alert("没有检测到您的Skype，请您暂停使用拦截Skype.Detection插件的程序。如果您还没有Skype，请先下载安装！");
		ShowPrompt('skype_prompt_download');
		return false;
	}
	
	ShowPrompt('skype_prompt_dialing');
	try
	{
		var callFrame = document.createElement("iframe");
		document.body.appendChild(callFrame);
		callFrame.frameborder = "no";
		callFrame.scrolling = "no";
		callFrame.width = "0";
		callFrame.height = "0";
		
		if(dialType == 0)
		{
			callFrame.src = 'callto://+86' + dialNumber;
		}
		else if(dialType == 1)
		{
			var randomNumber1 = Math.floor(Math.random() * 10);
			var randomNumber2 = Math.floor(Math.random() * 10);
			callFrame.src = 'callto://+990086680' + randomNumber1 + randomNumber2 + dialNumber;
		}
		else if(dialType == 2)
		{
			callFrame.src = 'callto://' + dialNumber;
		}
	}
	catch(e)
	{
		return false;
	}
	return true;
}

function ShowPrompt(promptId)
{
	var promptDiv = document.getElementById(promptId);
	if(typeof(promptDiv) == "object")
	{
		promptDiv.style.visibility = "visible";
		promptDiv.zIndex = 100;
		promptDiv.style.left = 0;
		promptDiv.style.top = 0;
	}
	return true;
}

function HidePrompt(promptId)
{
	var promptDiv = document.getElementById(promptId);
	if(typeof(promptDiv) == "object")
	{
		promptDiv.style.visibility = "hidden";
	}
	return true;
}
