var isIE6 = b_version.search(/MSIE 6/i) != -1;
var ff2 = window.navigator.userAgent.indexOf('Firefox/2') != -1;
var codeToCopyPatten = '?m=Contact details and map&n=your business name&L=&l=&p=&a1=&e1=&C=867e58dc241ae1e1e1ffffff6f6f6f867e58324f85E7E399';
var point = {};
var schmapplet = {};
point.lat = 'L=';
point.lon = 'l=';
var colorString = '867e58dc241ae1e1e1ffffff6f6f6f867e58324f85E7E399'
schmapplet.colorset = parse_colors(colorString);
colorset_template = [
        [/.textButton/,
                ['color', 0],
                ['backgroundColor', 7]
                ],
        [/.iphoneBox/,
                ['backgroundColor', 1]
                ],
        [/.content/,
                ['backgroundColor', 2]
                ],
        [/.enheader/,
                ['color', 3]
                ], 
        [/.businessName/,
                ['color', 4]
                ],
        [/.text-color/,
                ['color', 5]
                ],
        [/.message/,
                ['color', 6]
                ]];

//showPwdDiv();
var telTypes =getcodeText.teltype;
function initTelType(wapperId,arrayIndex){
	var optionNode = null;
	var textNode = null;
	for(var i=0;i<telTypes.length;i++){
		optionNode = document.createElement("option");
		if(i == arrayIndex)
			optionNode.selected = true;
		optionNode.innerHTML = telTypes[i][0];
		optionNode.typeText = telTypes[i][1]
		$(wapperId).appendChild(optionNode);
	}
}

function getTelString(){
	var value1 = $('textTel1').value;
	var value2 = $('textTel2').value;
	var defaultValue1 = $('textTel1').defaultstring;
	var defaultValue2 = $('textTel2').defaultstring;
	var type1 = getSelectedOptionTypeText("telType1");
	var type2 = getSelectedOptionTypeText("telType2");
	var p = "";
	if(typeof(value1)!="undefined" && value1 != "" && value1 != defaultValue1 && typeof(type1)!="undefined" && type1 != "none"){
			p = value1+","+type1;
	}
	if(typeof(value2)!="undefined" && value2 != defaultValue2 && value2 != ""){
		if(typeof(value1)!="undefined" && typeof(type1)!="undefined" && value1 != defaultValue1 && value1 != "" && type1 != "none" 
			&& value1 != "" && typeof(type2)!="undefined" && type2 != "none"){
			p += "|"+value2+","+type2;
		}else if(typeof(type2)!="undefined" && type2 != "none" && value2 != ""){
			p = value2+","+type2;
		}
	}
	return p;
}

function setup(){
    var arrow = PNG({src: '/images/iSchmap/arrow.png', width: 7, height: 11});
    $('textButton').parentNode.appendChild(arrow);
	$('textForButton').value = getcodeText.contactDetails;	
	$('textBusinessName').value = getcodeText.businessName;
	$('textAddress').value = getcodeText.address;
	$('textTel1').value = getcodeText.tel_1;
	$('textTel2').value = getcodeText.tel_2;
	$('textEmail').value = getcodeText.email;
	$('textBusinessName').defaultstring = getcodeText.businessName;
	$('textAddress').defaultstring = getcodeText.address;
	$('textTel1').defaultstring = getcodeText.tel_1;	
	$('textTel2').defaultstring = getcodeText.tel_2;
	initTelType("telType1",0);
	initTelType("telType2",1);
	$('textEmail').defaultstring = getcodeText.email;	
	$('textForButton').patten = '?m=Contact details and map';	
	$('textBusinessName').patten = '&n=your business name';
	$('textAddress').patten = '&a1=';
	$('textTel1').patten = '&p=';
	$('textTel2').patten = '&p=';
	$('telType1').patten = '&p=';
	$('telType2').patten = '&p=';
	$('textEmail').patten = '&e1=';
    var queryString =  getSearchParams();
	if(queryString.s){
	schmapplet.source = queryString.s;
	} else {
	schmapplet.source = 'STA';
	}
	$('codeToCopy').value = escapeString(codeToCopyPatten);
	var color = colorString.substr(0,6);
	$("colorDisplay").style.backgroundColor = "#" + color;
	$("colorcode").value = color;
	connect('tab_tc','onclick',swichTab);
    connect('tab_cc','onclick',swichTab);
	connect('textForButton','onkeyup',partial(changeText,'textButton'));
	connect('textBusinessName','onkeyup',partial(changeText,'businessName'));
	connect('textAddress','onkeyup',partial(changeText,'addressText'));
	connect('textAddress','onchange',addrPosition);
	connect('textTel1','onkeyup',partial(changeTextForOnKeyup,'phoneText1'));
	connect('textTel2','onkeyup',partial(changeTextForOnKeyup,'phoneText2'));
	connect('textEmail','onkeyup',partial(changeText,'emailText'));
	connect('colorlist','onchange',changeColroIndex);
	
	connect('textForButton','onchange',partial(changeText,'textButton'));
	connect('textBusinessName','onchange',partial(changeText,'businessName'));
	connect('textAddress','onchange',partial(changeText,'addressText'));
 	connect('textTel1','onchange',partial(changeTextForOnchange,'phoneText1'));
	connect('textTel2','onchange',partial(changeTextForOnchange,'phoneText2'));	
	connect('textEmail','onchange',partial(changeText,'emailText'));

	connect('telType1','onchange',changeText);
	connect('telType2','onchange',changeText);

	window.frames['placeposition'].locallocate.setup(getcodeText.addrNotFound);
 }

function swichTab(){
    var tab = this.id.replace('tab_','');
    hideElement('tc'); hideElement('cc');
    showElement(tab);
	addElementClass('tab_cc','unselect-tab');
	addElementClass('tab_tc','unselect-tab');
	removeElementClass(this,'unselect-tab');
}
 
function changeColroIndex(){
	var colorindex = this.value;
	var color = colorString.substr(colorindex*6,6);
	$("colorDisplay").style.backgroundColor = "#" + color;
	$("colorcode").value = color;

}

function passGeoCode(geo){
    var lat = 'L=' + geo.lat(); 
	var lon = 'l=' + geo.lng();
	codeToCopyPatten = codeToCopyPatten.replace(point.lat,lat);
	codeToCopyPatten = codeToCopyPatten.replace(point.lon,lon)
	point.lat = lat;
	point.lon = lon;
	$('codeToCopy').value = escapeString(codeToCopyPatten);
}

function addrPosition(ctx) { 
    window.frames['placeposition'].addrLocate(this.value,16); 
} 

function beforebuildpage(){   

	var lat = 'L=' + window.frames['placeposition'].ipLat; 
	var lon = 'l=' + window.frames['placeposition'].ipLong;
	codeToCopyPatten = codeToCopyPatten.replace(point.lat,lat);
	codeToCopyPatten = codeToCopyPatten.replace(point.lon,lon);
	point.lat = lat;
	point.lon = lon;
	$('codeToCopy').value = escapeString(codeToCopyPatten);
}

function startType(ctx){
	if(ctx.value !== '' && ctx.value !== ctx.defaultstring){
	    return;
	}
	ctx.value = '';
	ctx.style.color = '#797978';

}

function endType(ctx) {
	if(ctx.value == ''){
	    ctx.value = ctx.defaultstring;
		ctx.style.color = '#bfbfbf';
	}	
}

function getSelectedOptionTypeText(pId){
	var op = getSelectedOption(pId);
	if(op != null){
		if(op.typeText)
			return op.typeText;
	}
	return "none";
}

function getSelectedOptionText(pId){
	var op = getSelectedOption(pId);
	if(op != null){
		if(typeof(op.innerHTML)!="undefined" && op.innerHTML != "")
			return op.innerHTML;
	}
	return "none";
}

function getSelectedOption(pId){
	var root = $(pId);
	if(root.options){
		var opts = root.options;
		for(var i=0;i<opts.length;i++){
			if(opts[i].selected == true){
					return opts[i];
			}
		}
	}else{
		return null;
	}
}

function changeText(ctx) {
    var v = this.value;
    v = replaceall(v,'\n','<br>');
    v = replaceall(v,'&','$amp;');
    var html = replaceall(v,'$amp;','&amp;'); 
	$(ctx).innerHTML = html;
	if(this.patten){
        var patten = this.patten;
        if(this.id == 'textAddress'){
            v = splitAddr(v);
            var p = patten.substr(0,4) + v;
        }else if(this.id == 'textEmail'){
            v = v.replace('@','&e2=');
            var p = patten.substr(0,4) + v;
        }else if(this.id == "textTel1" || this.id == "textTel2" || this.id == "telType1" || this.id == "telType2"){
			if(this.id == "telType1"){
				changePhoneTypeForPreView("telType1");
			}
			if(this.id == "telType2"){
				changePhoneTypeForPreView("telType2");
			}
			var p = patten.substr(0,3) + getTelString();
		}else {
            var p = patten.substr(0,3) + v;
        }
        codeToCopyPatten = codeToCopyPatten.replace(patten,p);
    	$('codeToCopy').value = escapeString(codeToCopyPatten);
    	this.patten = p;
		if(this.id == "textTel1" || this.id == "textTel2" || this.id == "telType1" || this.id == "telType2"){
			$("textTel1").patten = p;
			$("textTel2").patten = p;
			$("telType1").patten = p;
			$("telType2").patten = p;
		}
	}
}

function changeTextForOnchange(ctx){
    var v = this.value;
    v = replaceall(v,'\n','<br>');
    v = replaceall(v,'&','$amp;');
    var html = replaceall(v,'$amp;','&amp;'); 
	$(ctx).innerHTML = html;
	if(this.patten){
        var patten = this.patten;
        if(this.id == 'textAddress'){
            v = splitAddr(v);
            var p = patten.substr(0,4) + v;
        }else if(this.id == 'textEmail'){
            v = v.replace('@','&e2=');
            var p = patten.substr(0,4) + v;
        }else if(this.id == "textTel1" || this.id == "textTel2" || this.id == "telType1" || this.id == "telType2"){
			if(this.id == "telType1"){
				changePhoneTypeForPreView("telType1");
			}
			if(this.id == "telType2"){
				changePhoneTypeForPreView("telType2");
			}
			if(this.id == "textTel1" || this.id == "textTel2"){
				checkTelText(this.id);
			}
			var p = patten.substr(0,3) + getTelString();
		}else {
            var p = patten.substr(0,3) + v;
        }
        codeToCopyPatten = codeToCopyPatten.replace(patten,p);
    	$('codeToCopy').value = escapeString(codeToCopyPatten);
    	this.patten = p;
		if(this.id == "textTel1" || this.id == "textTel2" || this.id == "telType1" || this.id == "telType2"){
			$("textTel1").patten = p;
			$("textTel2").patten = p;
			$("telType1").patten = p;
			$("telType2").patten = p;
		}
	}
}

function changeTextForOnKeyup(ctx){
    var v = this.value;
    v = replaceall(v,'\n','<br>');
    v = replaceall(v,'&','$amp;');
    var html = replaceall(v,'$amp;','&amp;'); 
	$(ctx).innerHTML = html;
	if(this.patten){
        var patten = this.patten;
        if(this.id == 'textAddress'){
            v = splitAddr(v);
            var p = patten.substr(0,4) + v;
        }else if(this.id == 'textEmail'){
            v = v.replace('@','&e2=');
            var p = patten.substr(0,4) + v;
        }else if(this.id == "textTel1" || this.id == "textTel2" || this.id == "telType1" || this.id == "telType2"){
			if(this.id == "telType1"){
				changePhoneTypeForPreView("telType1");
			}
			if(this.id == "telType2"){
				changePhoneTypeForPreView("telType2");
			}
			var p = patten.substr(0,3) + getTelString();
		}else {
            var p = patten.substr(0,3) + v;
        }
        codeToCopyPatten = codeToCopyPatten.replace(patten,p);
    	$('codeToCopy').value = escapeString(codeToCopyPatten);
    	this.patten = p;
		if(this.id == "textTel1" || this.id == "textTel2" || this.id == "telType1" || this.id == "telType2"){
			$("textTel1").patten = p;
			$("textTel2").patten = p;
			$("telType1").patten = p;
			$("telType2").patten = p;
		}
	}
}

function changePhoneTypeForPreView(phone){
	if(phone == "telType1"){
		var label = getSelectedOptionText("telType1").replace(' ','');
		if(typeof(label != "undefined"))
			$("phoneTypeLabel1").innerHTML = label;
	}
	else if(phone == "telType2"){
		var label = getSelectedOptionText("telType2").replace(' ','');
		if(typeof(label != "undefined"))
			$("phoneTypeLabel2").innerHTML = label;
	}
}

function checkTelText(id){
	var v1 = $(id).value;
	if(v1.indexOf("|") >= 0){
		alert(getcodeText.alerttel1);
		$(id).value = replaceall(v1,'|',"");
	}	
	if(v1.indexOf(",") >= 0){
		alert(getcodeText.alerttel2);
		$(id).value = replaceall(v1,',',"");
	}
	$(id).focus();
}

function splitAddr(addr) {
    for(i = 2; i <=4; i++){
        addr = addr.replace('<br>','&a' + i + '=');
    }
    return addr;
}

function hover(event) {
//only if a mouse click event has not been previous performed aganist the color palette.
		var palette = $('color-palette');	
		event = event || window.event;
		if(window.scrollX !== undefined) {
			var palette_pos = elementPosition(palette);
			var x = event.clientX - palette_pos.x + window.scrollX;
			var y = event.clientY - palette_pos.y + window.scrollY;
		} else if(event.offsetX !== undefined) {
			var x = event.offsetX;
			var y = event.offsetY;
		} else return;
		var xr = x / (palette.width - 1);
		if(y >=130) return;
		if(y <= 16) {
			// grey mode; y is irrelevant now
			color = Color.fromRGB(xr, xr, xr).toHexString();
		} else {
			yr = (y - 20) / (palette.height - 21);
			if(xr == 1)
				color = '#ffffff';
			else if(x == palette.width/2)
				color = Color.fromHSV(1 - yr, 1, 1).toHexString();
			else if(xr < 0.5)
				color = Color.fromHSV(1 - yr, 1, xr*2).toHexString();
			else
				color = Color.fromHSV(1 - yr, (1-xr)*2, 1).toHexString();
		}
		$("colorDisplay").style.backgroundColor = color;
		$("colorcode").value = color.substr(1);
		var colorindex = $("colorlist").options[$("colorlist").selectedIndex].value;
		//Here changes the src of iframe according to the change on color.
      //  var colorParam;
        var curColor =colorString;
		if(colorindex == 0){
            colorParam = color.substr(1)+curColor.substr(6);
		}else if(colorindex == schmapplet.colorset.length - 1){
            colorParam = curColor.substr(0, 36)+color.substr(1);
		}else{
		    colorParam = curColor.substr(0, 6*colorindex)+color.substr(1)+curColor.substr(6*colorindex+6);
		}
   changingColor(colorParam);
	
}

function leave(event){//detect when mouse leaves the color palette.
		var colorindex = $("colorlist").options[$("colorlist").selectedIndex].value;
		var color = colorString.substr(colorindex*6,6);
		$("colorDisplay").style.backgroundColor = "#" + color;
		$("colorcode").value = color;
		changingColor(colorString);
	 
}

function getColor(set){
	var newcolor = "";
		selecting = true; //deactivate the color palette.
		newcolor = 	$("colorcode").value;
		$("colorDisplay").style.backgroundColor = "#" + newcolor;
		var colorindex = $("colorlist").options[$("colorlist").selectedIndex].value;
		schmapplet.colorset[colorindex] = newcolor;
		var newColorString = schmapplet.colorset.join('')
   changingColor(newColorString);

  codeToCopyPatten = codeToCopyPatten.replace(colorString,newColorString);

   colorString = newColorString;
   $('codeToCopy').value = escapeString(codeToCopyPatten);
   if(set) return;
	if($("colorlist").selectedIndex == $("colorlist").options.length-1){
			$("colorlist").selectedIndex = 0;
	}else{
			$("colorlist").selectedIndex++;
	}
	

}


function changingColor(colorset){
    var colorset = parse_colors(colorset);
	schmapplet.colorset = colorset;
    apply_colorset(colorset, colorset_template, /enableiPhone_color.css$/);
 }
 

function parse_colors(text) {
    ctext = text.replace(/\s/g, '');
    colors = [];
    while(ctext) {
        colors.push(ctext.substring(0, 6));
        ctext = ctext.substring(6);
    }
    return colors;
}

function showTab(tab){
	
}   

function replaceall(str, s1, s2) {
    while (str.indexOf(s1) != -1) {
        str = str.replace(s1, s2);
    }
    return str;
    }

function escapeString(str){
    var i ="00-" + schmapplet.source + "-" + Math.round(Math.random() * Math.pow(10,16));
    return '<script type="text/javascript" src="http://www.schmap.com/scripts/bizbanner.txt?' +encodeUrl(str) + '&i=' + i + '" ></script>';
}

function unbreakIE() {
    var totalH = document.documentElement.scrollHeight;
	var pageH = document.documentElement.clientHeight;
	var pageW  = document.documentElement.clientWidth;
    var marginHor = (pageW - 150)/2; 
    var marginVer = (pageH - 180)/2 + document.documentElement.scrollTop;

    if(pageW < window.screen.width){
        pageW = window.screen.width;
    } 
        if(totalH < window.screen.height){
        totalH = window.screen.height;
    } 	
	setElementDimensions('overlay',{w:pageW,h:totalH});
    setElementPosition('pwdDiv',{x:marginHor,y:marginVer});
}

function showPwdDiv(){
 
    document.body.style.overflow='hidden';
	document.documentElement.style.overflow='hidden';
	$('pwdDiv').innerHTML = "<h2>Pre Launch Preview</h2><span>To use this page, please enter your Pre Launch Preview access code:</span><input type='password'  id='code' value='' onKeyDown='checkEnter(event);'/><input type='button' value='Go' onclick='checkCode();'><p id='errorMessage'></p>";
    if(isIE6){
        callLater(1.6,function (){unbreakIE();  
        showElement('overlay');
        showElement('pwdDiv');
        $('code').focus(); } );
        connect(window,'onresize',unbreakIE);
    }else{
        showElement('overlay');
        showElement('pwdDiv');
        $('code').focus(); 
        }
}

function checkCode(){
	if($('code').value == '362253'){
	    hideElement('pwdDiv');
		hideElement('overlay');
		document.body.style.overflow='auto';
		document.documentElement.style.overflow='auto';
		//window.unonload=showPwdDiv();
        disconnect(window,'onresize','unbreakIE');
	} else {
	   $('errorMessage').innerHTML = 'Incorrect code, please reenter.';
	}

}

function checkEnter(evt){
  if(evt.keyCode == 13)
      checkCode();

}

function encodeUrl(uri) {
        var decode;
        if (typeof(encodeURIComponent) != "undefined") {
            decode = encodeURIComponent;
        } else {
            decode = unescape;
        }
        var arr = urlConvert(uri, decode, true);
        return arr.join("&");
}


function urlConvert(uri, coder, useArray) {
    var qstr = (uri.charAt(0) == "?") ? uri.substring(1) : uri;
     var pairs = qstr.split(/\&/);
     if(useArray) var result = [];
    else var result = {};

    for (i = 0; i < pairs.length; i++) {
        pair = pairs[i].split("=");
        var name = pair.shift();
        var value = pair.shift();
        if (!name) {
            continue;
        }
        if(useArray) {
            result.push([coder(name), coder(value)].join("=")); 
        } else result[coder(name)] = coder(pair.shift());
    }
    return result;
}

function getSearchParams() {
    var url = document.location.search;
    var params = parseQueryString(url.substr(1));
    return params;
}